{"version":3,"file":"Selection.jsx","sourceRoot":"lib/","sources":["widgets/AuxToolWidget/Selection.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Helpers } from './Helpers'\nimport {\n  useSelection,\n  useValidNodeOffsetRect,\n  useTree,\n  useCursor,\n  useDragon,\n  usePrefix,\n  useDesigner\n} from '../../hooks'\nimport { ResizeHandler } from './ResizeHandler'\nimport { observer } from '@formily/reactive-vue'\nimport { TreeNode } from '@designable/core'\nimport { defineComponent } from 'vue-demi'\nimport { composeExport } from '@jeamn/formily-components/src/__builtins__'\nimport { CSSProperties, toRef } from '@vue/runtime-dom'\nimport { isNum } from '@designable/shared'\nimport { TranslateHandler } from './TranslateHandler'\nexport interface ISelectionBoxProps {\n  node: TreeNode\n  showHelpers: boolean\n}\n\nexport const SelectionBox = defineComponent({\n  name: 'SelectionBox',\n  inheritAttrs: false,\n  props: ['node', 'showHelpers'],\n  setup(props, { attrs }) {\n    const designerRef = useDesigner()\n    const prefixRef = usePrefix('aux-selection-box')\n    const innerPrefixRef = usePrefix('aux-selection-box-inner')\n    const nodeRectRef = useValidNodeOffsetRect(toRef(props, 'node'))\n\n    return () => {\n      const innerPrefix = innerPrefixRef.value\n      const designer = designerRef.value\n      const nodeRect = nodeRectRef.value\n      const createSelectionStyle = () => {\n        const baseStyle: CSSProperties = {\n          position: 'absolute',\n          top: 0,\n          left: 0,\n          boxSizing: 'border-box',\n          zIndex: 4,\n        }\n        if (nodeRect) {\n          baseStyle.transform = `perspective(1px) translate3d(${nodeRect.x}px,${nodeRect.y}px,0)`\n          baseStyle.height = isNum(nodeRect.height)\n            ? nodeRect.height + 'px'\n            : nodeRect.height\n          baseStyle.width = isNum(nodeRect.width)\n            ? nodeRect.width + 'px'\n            : nodeRect.width\n        }\n        return baseStyle\n      }\n      if (!nodeRect) return null\n\n      if (!nodeRect.width || !nodeRect.height) return null\n      const selectionId = {\n        [designer.props?.nodeSelectionIdAttrName!]: props.node.id,\n      }\n      return (\n        <div {...selectionId} class={prefixRef.value} style={createSelectionStyle()}>\n          <div class={innerPrefix}></div>\n          <ResizeHandler node={props.node} />\n          <TranslateHandler node={props.node} />\n          {props.showHelpers && (\n            <Helpers\n              {...attrs}\n              key={JSON.stringify(nodeRect.toJSON())}\n              node={props.node}\n              nodeRect={nodeRect}\n            />\n          )}\n        </div>\n      )\n    }\n  },\n})\n\nconst SelectionComponent = observer(\n  defineComponent({\n    name: 'Selection',\n    setup() {\n      const selectionRef = useSelection()\n      const treeRef = useTree()\n      const cursorRef = useCursor()\n      const viewportDragonRef = useDragon()\n      return () => {\n        if (\n          cursorRef.value.status !== 'NORMAL' &&\n          viewportDragonRef.value.touchNode\n        )\n          return null\n        return (\n          <>\n            {selectionRef.value.selected.map((id) => {\n              const node = treeRef.value.findById(id)\n              if (!node) return\n              if (node.hidden) return\n              return (\n                <SelectionBox\n                  {...{\n                    key: id,\n                    node: node,\n                    showHelpers: selectionRef.value.selected.length === 1,\n                  }}\n                  key={id}\n                />\n              )\n            })}\n          </>\n        )\n      }\n    },\n  })\n)\n\nexport const Selection = composeExport(SelectionComponent, {\n  displayName: 'Selection',\n})\n"]}