{"version":3,"file":"FreeSelection.jsx","sourceRoot":"lib/","sources":["widgets/AuxToolWidget/FreeSelection.tsx"],"names":[],"mappings":";;;;;;AAAA,qCAA+D;AAC/D,sDAAgD;AAChD,yCAA2D;AAC3D,6CAAmE;AACnE,0DAA4B;AAC5B,qCAA0C;AAE7B,QAAA,aAAa,GAAG,IAAA,uBAAQ,EACnC,IAAA,0BAAe,EAAC;IACd,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,EAAE;IACT,KAAK,EAAL;QACE,IAAM,SAAS,GAAG,IAAA,iBAAS,GAAE,CAAA;QAC7B,IAAM,WAAW,GAAG,IAAA,mBAAW,GAAE,CAAA;QACjC,IAAM,SAAS,GAAG,IAAA,iBAAS,EAAC,oBAAoB,CAAC,CAAA;QAEjD,OAAO;YACL,IAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAA;YAC9B,IAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAA;YAClC,IAAM,oBAAoB,GAAG;gBAC3B,IAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;oBAC7C,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU;oBACtC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU;iBACvC,CAAC,CAAA;gBACF,IAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC;oBAC3C,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;oBAC7B,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;iBAC9B,CAAC,CAAA;gBACF,IAAM,IAAI,GAAG,IAAA,gCAAuB,EAClC,cAAc,EACd,YAAY,EACZ,QAAQ,CAAC,OAAO;oBAChB,MAAM,CAAC,qBAAqB,CAAC,OAAO,EACpC,QAAQ,CAAC,OAAO;oBAChB,MAAM,CAAC,qBAAqB,CAAC,OAAO,CACrC,CAAA;gBAED,IAAM,SAAS,GAAQ;oBACrB,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,CAAC;oBACd,WAAW,EAAE,OAAO;oBACpB,SAAS,EAAE,uCAAgC,IAAI,CAAC,CAAC,gBAAM,IAAI,CAAC,CAAC,UAAO;oBACpE,MAAM,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;oBAC7D,KAAK,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;oBACzD,aAAa,EAAE,MAAM;oBACrB,SAAS,EAAE,YAAY;oBACvB,MAAM,EAAE,CAAC;iBACV,CAAA;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAA;YAED,IACE,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,mBAAY,CAAC,QAAQ;gBAChD,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAU,CAAC,SAAS;gBAE7C,OAAO,IAAI,CAAA;YACb,OAAO,CACL,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,IAAA,oBAAG,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC5B,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAC/B,EAAE,GAAG,CAAC,CACR,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CACH,CAAA","sourcesContent":["import { useCursor, usePrefix, useViewport } from '../../hooks'\nimport { observer } from '@formily/reactive-vue'\nimport { CursorStatus, CursorType } from '@designable/core'\nimport { calcRectByStartEndPoint, isNum } from '@designable/shared'\nimport cls from 'classnames'\nimport { defineComponent } from 'vue-demi'\n\nexport const FreeSelection = observer(\n  defineComponent({\n    name: 'FreeSelection',\n    props: [],\n    setup() {\n      const cursorRef = useCursor()\n      const viewportRef = useViewport()\n      const prefixRef = usePrefix('aux-free-selection')\n\n      return () => {\n        const cursor = cursorRef.value\n        const viewport = viewportRef.value\n        const createSelectionStyle = () => {\n          const startDragPoint = viewport.getOffsetPoint({\n            x: cursor.dragStartPosition.topClientX,\n            y: cursor.dragStartPosition.topClientY,\n          })\n          const currentPoint = viewport.getOffsetPoint({\n            x: cursor.position.topClientX,\n            y: cursor.position.topClientY,\n          })\n          const rect = calcRectByStartEndPoint(\n            startDragPoint,\n            currentPoint,\n            viewport.scrollX -\n            cursor.dragStartScrollOffset.scrollX,\n            viewport.scrollY -\n            cursor.dragStartScrollOffset.scrollY\n          )\n\n          const baseStyle: any = {\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            opacity: 0.2,\n            borderWidth: 1,\n            borderStyle: 'solid',\n            transform: `perspective(1px) translate3d(${rect.x}px,${rect.y}px,0)`,\n            height: isNum(rect.height) ? rect.height + 'px' : rect.height,\n            width: isNum(rect.width) ? rect.width + 'px' : rect.width,\n            pointerEvents: 'none',\n            boxSizing: 'border-box',\n            zIndex: 1,\n          }\n          return baseStyle\n        }\n\n        if (\n          cursorRef.value.status !== CursorStatus.Dragging ||\n          cursorRef.value.type !== CursorType.Selection\n        )\n          return null\n        return (\n          <div\n            class={cls(prefixRef.value)}\n            style={createSelectionStyle()}\n          ></div>\n        )\n      }\n    },\n  })\n)\n"]}