UNPKG

tldraw

Version:

A tiny little drawing editor.

8 lines (7 loc) 4.5 kB
{ "version": 3, "sources": ["../../../../src/lib/tools/SelectTool/SelectTool.ts"], "sourcesContent": ["import { StateNode, TLStateNodeConstructor, react } from '@tldraw/editor'\nimport { Brushing } from './childStates/Brushing'\nimport { Crop } from './childStates/Crop/Crop'\nimport { Cropping } from './childStates/Crop/children/Cropping'\nimport { PointingCropHandle } from './childStates/Crop/children/PointingCropHandle'\nimport { DraggingHandle } from './childStates/DraggingHandle'\nimport { EditingShape } from './childStates/EditingShape'\nimport { Idle } from './childStates/Idle'\nimport { PointingArrowLabel } from './childStates/PointingArrowLabel'\nimport { PointingCanvas } from './childStates/PointingCanvas'\nimport { PointingHandle } from './childStates/PointingHandle'\nimport { PointingResizeHandle } from './childStates/PointingResizeHandle'\nimport { PointingRotateHandle } from './childStates/PointingRotateHandle'\nimport { PointingSelection } from './childStates/PointingSelection'\nimport { PointingShape } from './childStates/PointingShape'\nimport { Resizing } from './childStates/Resizing'\nimport { Rotating } from './childStates/Rotating'\nimport { ScribbleBrushing } from './childStates/ScribbleBrushing'\nimport { Translating } from './childStates/Translating'\n\n/** @public */\nexport class SelectTool extends StateNode {\n\tstatic override id = 'select'\n\tstatic override initial = 'idle'\n\tstatic override isLockable = false\n\treactor: undefined | (() => void) = undefined\n\n\tstatic override children(): TLStateNodeConstructor[] {\n\t\treturn [\n\t\t\tCrop,\n\t\t\tCropping,\n\t\t\tIdle,\n\t\t\tPointingCanvas,\n\t\t\tPointingShape,\n\t\t\tTranslating,\n\t\t\tBrushing,\n\t\t\tScribbleBrushing,\n\t\t\tPointingCropHandle,\n\t\t\tPointingSelection,\n\t\t\tPointingResizeHandle,\n\t\t\tEditingShape,\n\t\t\tResizing,\n\t\t\tRotating,\n\t\t\tPointingRotateHandle,\n\t\t\tPointingArrowLabel,\n\t\t\tPointingHandle,\n\t\t\tDraggingHandle,\n\t\t]\n\t}\n\n\t// We want to clean up the duplicate props when the selection changes\n\tcleanUpDuplicateProps() {\n\t\tconst selectedShapeIds = this.editor.getSelectedShapeIds()\n\t\tconst instance = this.editor.getInstanceState()\n\t\tif (!instance.duplicateProps) return\n\t\tconst duplicatedShapes = new Set(instance.duplicateProps.shapeIds)\n\t\tif (\n\t\t\tselectedShapeIds.length === duplicatedShapes.size &&\n\t\t\tselectedShapeIds.every((shapeId) => duplicatedShapes.has(shapeId))\n\t\t) {\n\t\t\treturn\n\t\t}\n\t\tthis.editor.updateInstanceState({\n\t\t\tduplicateProps: null,\n\t\t})\n\t}\n\n\toverride onEnter() {\n\t\tthis.reactor = react('clean duplicate props', () => {\n\t\t\ttry {\n\t\t\t\tthis.cleanUpDuplicateProps()\n\t\t\t} catch (e) {\n\t\t\t\tif (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {\n\t\t\t\t\t// ignore errors at test time\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\toverride onExit() {\n\t\tthis.reactor?.()\n\t\tif (this.editor.getCurrentPageState().editingShapeId) {\n\t\t\tthis.editor.setEditingShape(null)\n\t\t}\n\t}\n}\n"], "mappings": "AAAA,SAAS,WAAmC,aAAa;AACzD,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAC/B,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAGrB,MAAM,mBAAmB,UAAU;AAAA,EACzC,OAAgB,KAAK;AAAA,EACrB,OAAgB,UAAU;AAAA,EAC1B,OAAgB,aAAa;AAAA,EAC7B,UAAoC;AAAA,EAEpC,OAAgB,WAAqC;AACpD,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA;AAAA,EAGA,wBAAwB;AACvB,UAAM,mBAAmB,KAAK,OAAO,oBAAoB;AACzD,UAAM,WAAW,KAAK,OAAO,iBAAiB;AAC9C,QAAI,CAAC,SAAS,eAAgB;AAC9B,UAAM,mBAAmB,IAAI,IAAI,SAAS,eAAe,QAAQ;AACjE,QACC,iBAAiB,WAAW,iBAAiB,QAC7C,iBAAiB,MAAM,CAAC,YAAY,iBAAiB,IAAI,OAAO,CAAC,GAChE;AACD;AAAA,IACD;AACA,SAAK,OAAO,oBAAoB;AAAA,MAC/B,gBAAgB;AAAA,IACjB,CAAC;AAAA,EACF;AAAA,EAES,UAAU;AAClB,SAAK,UAAU,MAAM,yBAAyB,MAAM;AACnD,UAAI;AACH,aAAK,sBAAsB;AAAA,MAC5B,SAAS,GAAG;AACX,YAAI,OAAO,YAAY,eAAe,QAAQ,IAAI,aAAa,QAAQ;AAAA,QAEvE,OAAO;AACN,kBAAQ,MAAM,CAAC;AAAA,QAChB;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAES,SAAS;AACjB,SAAK,UAAU;AACf,QAAI,KAAK,OAAO,oBAAoB,EAAE,gBAAgB;AACrD,WAAK,OAAO,gBAAgB,IAAI;AAAA,IACjC;AAAA,EACD;AACD;", "names": [] }