{"version":3,"file":"index.jsx","sourceRoot":"lib/","sources":["widgets/DroppableWidget/index.tsx"],"names":[],"mappings":";;;AACA,sDAAgD;AAChD,qCAAyD;AACzD,sDAAoD;AACpD,0DAAuF;AACvF,yBAAsB;AAEtB,qCAA0C;AAE1C,6CAAiD;AAWpC,QAAA,eAAe,GAAG,IAAA,uBAAQ,EACrC,IAAA,0BAAe,EAAC;IACd,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,MAA4B,EAAE;QAC5C,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,KAAuD,EAAE;QAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,OAA4B,EAAE,OAAO,EAAE,IAAI,EAAE;QAClE,WAAW,EAAE,EAAE,IAAI,EAAE,OAA4B,EAAE,OAAO,EAAE,SAAS,EAAE;KACxE;IACD,YAAY,EAAE,KAAK;IACnB,KAAK,YAAC,KAAK,EAAE,EAAgB;YAAd,KAAK,WAAA,EAAE,KAAK,WAAA;QACzB,IAAM,OAAO,GAAG,IAAA,mBAAW,GAAE,CAAA;QAC7B,IAAM,SAAS,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE5C,OAAO;;YACL,IAAM,MAAM,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,OAAO,CAAC,KAAK,CAAA;YAC1C,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnB,IAAM,QAAQ,GAAG,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAA;YAClC,IAAM,WAAW,GAAG,MAAA,KAAK,CAAC,WAAW,mCAAI,CAAC,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,IAAI,QAAQ,CAAC,CAAA;YAClF,OAAO,CACL,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CACtD;YAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,QAAQ,CACT,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACtB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAChH;gBAAA,CAAC,iCAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAChC;cAAA,EAAE,GAAG,CAAC,CACP,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,CACD;YAAA,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,EAAC,CAAC,CAAC,CACvB,CAAC,qCAAiB,CAChB;gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,GAAG,IAAK,OAAA,CAClC,CAAC,qCAAiB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAG,CACnD,EAFmC,CAEnC,CAAC,CACJ;cAAA,EAAE,qCAAiB,CAAC,CACrB,CAAC,CAAC,CAAC,IAAI,CACV;UAAA,EAAE,GAAG,CAAC,CACP,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CACH,CAAA","sourcesContent":["import { TreeNode } from '@designable/core'\nimport { observer } from '@formily/reactive-vue'\nimport { useTreeNode, useNodeIdProps } from '../../hooks'\nimport { NodeTitleWidget } from '../NodeTitleWidget'\nimport { INodeActionsWidgetActionProps, NodeActionsWidget } from '../NodeActionsWidget'\nimport './styles.less'\nimport { CSSProperties } from '@vue/runtime-dom'\nimport { defineComponent } from 'vue-demi'\nimport { PropType } from 'vue'\nimport { isNum, isStr } from '@designable/shared'\n\nexport interface IDroppableWidgetProps {\n  node?: TreeNode\n  actions?: INodeActionsWidgetActionProps[]\n  placeholder?: boolean\n  height?: number\n  style?: CSSProperties\n  hasChildren?: boolean\n}\n\nexport const DroppableWidget = observer(\n  defineComponent({\n    name: 'DnDroppableWidget',\n    props: {\n      node: { type: Object as PropType<TreeNode> },\n      height: {},\n      actions: { type: Array as PropType<Array<INodeActionsWidgetActionProps>> },\n      placeholder: { type: Boolean as PropType<boolean>, default: true },\n      hasChildren: { type: Boolean as PropType<boolean>, default: undefined }\n    },\n    inheritAttrs: false,\n    setup(props, { attrs, slots }) {\n      const nodeRef = useTreeNode()\n      const nodeIdRef = useNodeIdProps(props.node)\n\n      return () => {\n        const target = props.node ?? nodeRef.value\n        if (!target) return\n        const children = slots.default?.()\n        const hasChildren = props.hasChildren ?? (target.children?.length > 0 && children)\n        return (\n          <div {...nodeIdRef.value} {...attrs} class={attrs.class}>\n            {hasChildren ? (\n              children\n            ) : props.placeholder ? (\n              <div style={{ height: isStr(props.height) ? props.height : props.height + 'px' }} class=\"dn-droppable-placeholder\">\n                <NodeTitleWidget node={target} />\n              </div>\n            ) : (\n              children\n            )}\n            {props.actions?.length ? (\n              <NodeActionsWidget>\n                {props.actions.map((action, key) => (\n                  <NodeActionsWidget.Action {...action} key={key} />\n                ))}\n              </NodeActionsWidget>\n            ) : null}\n          </div>\n        )\n      }\n    }\n  })\n)\n"]}