{
  "version": 3,
  "sources": ["../../../src/lib/overlays/BrushOverlayUtil.ts"],
  "sourcesContent": ["import {\n\tgetOverlayDisplayValues,\n\tOverlayOptionsWithDisplayValues,\n\tOverlayUtil,\n\tTLOverlay,\n} from '@tldraw/editor'\n\n/** @public */\nexport interface TLBrushOverlay extends TLOverlay {\n\tprops: {\n\t\tx: number\n\t\ty: number\n\t\tw: number\n\t\th: number\n\t}\n}\n\n/** @public */\nexport interface BrushOverlayUtilDisplayValues {\n\tfillColor: string\n\tstrokeColor: string\n\tlineWidth: number\n}\n\n/** @public */\nexport interface BrushOverlayUtilOptions extends OverlayOptionsWithDisplayValues<\n\tTLBrushOverlay,\n\tBrushOverlayUtilDisplayValues\n> {\n\tzIndex: number\n}\n\n/**\n * Overlay util for the selection brush rectangle.\n *\n * @public\n */\nexport class BrushOverlayUtil extends OverlayUtil<TLBrushOverlay> {\n\tstatic override type = 'brush'\n\toverride options: BrushOverlayUtilOptions = {\n\t\tzIndex: 300,\n\t\tgetDefaultDisplayValues(editor, _overlay, theme, colorMode): BrushOverlayUtilDisplayValues {\n\t\t\tconst colors = theme.colors[colorMode]\n\t\t\treturn {\n\t\t\t\tfillColor: colors.brushFill,\n\t\t\t\tstrokeColor: colors.brushStroke,\n\t\t\t\tlineWidth: 1,\n\t\t\t}\n\t\t},\n\t\tgetCustomDisplayValues(): Partial<BrushOverlayUtilDisplayValues> {\n\t\t\treturn {}\n\t\t},\n\t}\n\n\toverride isActive(): boolean {\n\t\treturn this.editor.getInstanceState().brush !== null\n\t}\n\n\toverride getOverlays(): TLBrushOverlay[] {\n\t\tconst brush = this.editor.getInstanceState().brush\n\t\tif (!brush) return []\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: 'brush',\n\t\t\t\ttype: 'brush',\n\t\t\t\tprops: {\n\t\t\t\t\tx: brush.x,\n\t\t\t\t\ty: brush.y,\n\t\t\t\t\tw: Math.max(1, brush.w),\n\t\t\t\t\th: Math.max(1, brush.h),\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\t}\n\n\toverride render(ctx: CanvasRenderingContext2D, overlays: TLBrushOverlay[]): void {\n\t\tconst overlay = overlays[0]\n\t\tif (!overlay) return\n\n\t\tconst { x, y, w, h } = overlay.props\n\t\tconst zoom = this.editor.getZoomLevel()\n\t\tconst dv = getOverlayDisplayValues(this, overlay)\n\n\t\t// Use fillRect / strokeRect to avoid path construction overhead\n\t\tctx.fillStyle = dv.fillColor\n\t\tctx.fillRect(x, y, w, h)\n\n\t\tctx.lineWidth = dv.lineWidth / zoom\n\t\tctx.strokeStyle = dv.strokeColor\n\t\tctx.strokeRect(x, y, w, h)\n\t}\n\n\toverride renderMinimap(\n\t\tctx: CanvasRenderingContext2D,\n\t\toverlays: TLBrushOverlay[],\n\t\tzoom: number\n\t): void {\n\t\tconst overlay = overlays[0]\n\t\tif (!overlay) return\n\t\tconst { x, y, w, h } = overlay.props\n\t\tconst dv = getOverlayDisplayValues(this, overlay)\n\t\tctx.fillStyle = dv.fillColor\n\t\tctx.fillRect(x, y, w, h)\n\t\tctx.lineWidth = dv.lineWidth / zoom\n\t\tctx.strokeStyle = dv.strokeColor\n\t\tctx.strokeRect(x, y, w, h)\n\t}\n}\n"],
  "mappings": "AAAA;AAAA,EACC;AAAA,EAEA;AAAA,OAEM;AAgCA,MAAM,yBAAyB,YAA4B;AAAA,EACjE,OAAgB,OAAO;AAAA,EACd,UAAmC;AAAA,IAC3C,QAAQ;AAAA,IACR,wBAAwB,QAAQ,UAAU,OAAO,WAA0C;AAC1F,YAAM,SAAS,MAAM,OAAO,SAAS;AACrC,aAAO;AAAA,QACN,WAAW,OAAO;AAAA,QAClB,aAAa,OAAO;AAAA,QACpB,WAAW;AAAA,MACZ;AAAA,IACD;AAAA,IACA,yBAAiE;AAChE,aAAO,CAAC;AAAA,IACT;AAAA,EACD;AAAA,EAES,WAAoB;AAC5B,WAAO,KAAK,OAAO,iBAAiB,EAAE,UAAU;AAAA,EACjD;AAAA,EAES,cAAgC;AACxC,UAAM,QAAQ,KAAK,OAAO,iBAAiB,EAAE;AAC7C,QAAI,CAAC,MAAO,QAAO,CAAC;AACpB,WAAO;AAAA,MACN;AAAA,QACC,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,UACN,GAAG,MAAM;AAAA,UACT,GAAG,MAAM;AAAA,UACT,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC;AAAA,UACtB,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAES,OAAO,KAA+B,UAAkC;AAChF,UAAM,UAAU,SAAS,CAAC;AAC1B,QAAI,CAAC,QAAS;AAEd,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,QAAQ;AAC/B,UAAM,OAAO,KAAK,OAAO,aAAa;AACtC,UAAM,KAAK,wBAAwB,MAAM,OAAO;AAGhD,QAAI,YAAY,GAAG;AACnB,QAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AAEvB,QAAI,YAAY,GAAG,YAAY;AAC/B,QAAI,cAAc,GAAG;AACrB,QAAI,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,EAC1B;AAAA,EAES,cACR,KACA,UACA,MACO;AACP,UAAM,UAAU,SAAS,CAAC;AAC1B,QAAI,CAAC,QAAS;AACd,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,QAAQ;AAC/B,UAAM,KAAK,wBAAwB,MAAM,OAAO;AAChD,QAAI,YAAY,GAAG;AACnB,QAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,QAAI,YAAY,GAAG,YAAY;AAC/B,QAAI,cAAc,GAAG;AACrB,QAAI,WAAW,GAAG,GAAG,GAAG,CAAC;AAAA,EAC1B;AACD;",
  "names": []
}
