{"version":3,"file":"TreeNode.cjs","sources":["../../../../../../packages/vue-components/vc-tree/src/TreeNode.tsx"],"sourcesContent":["import type { Key } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport type { DragNodeEvent } from './interface';\nimport { classNames, eagerComputed, pickAttrs, warning } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onMounted,\n  onUpdated,\n  reactive,\n  shallowRef,\n} from 'vue';\nimport { useInjectKeysState, useInjectTreeContext } from './contextTypes';\nimport Indent from './Indent';\nimport { treeNodeProps } from './props';\nimport { convertNodePropsToEventData, getTreeNodeProps } from './utils/treeUtil';\n\nconst ICON_OPEN = 'open';\nconst ICON_CLOSE = 'close';\n\nconst defaultTitle = '---';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ATreeNode',\n  inheritAttrs: false,\n  props: treeNodeProps,\n  isTreeNode: 1,\n  setup(props, { attrs, slots, expose }) {\n    warning(\n      !('slots' in props.data),\n      `treeData slots is deprecated, please use ${Object.keys(props.data.slots || {}).map(\n        key => `\\`v-slot:${key}\\` `,\n      )}instead`,\n    );\n\n    const dragNodeHighlight = shallowRef(false);\n    const context = useInjectTreeContext();\n    const {\n      expandedKeysSet,\n      selectedKeysSet,\n      loadedKeysSet,\n      loadingKeysSet,\n      checkedKeysSet,\n      halfCheckedKeysSet,\n    } = useInjectKeysState();\n    const { dragOverNodeKey, dropPosition, keyEntities } = context.value;\n    const mergedTreeNodeProps = computed(() => {\n      return getTreeNodeProps(props.eventKey, {\n        expandedKeysSet: expandedKeysSet.value,\n        selectedKeysSet: selectedKeysSet.value,\n        loadedKeysSet: loadedKeysSet.value,\n        loadingKeysSet: loadingKeysSet.value,\n        checkedKeysSet: checkedKeysSet.value,\n        halfCheckedKeysSet: halfCheckedKeysSet.value,\n        dragOverNodeKey,\n        dropPosition,\n        keyEntities,\n      });\n    });\n\n    const expanded = eagerComputed(() => mergedTreeNodeProps.value.expanded);\n    const selected = eagerComputed(() => mergedTreeNodeProps.value.selected);\n    const checked = eagerComputed(() => mergedTreeNodeProps.value.checked);\n    const loaded = eagerComputed(() => mergedTreeNodeProps.value.loaded);\n    const loading = eagerComputed(() => mergedTreeNodeProps.value.loading);\n    const halfChecked = eagerComputed(() => mergedTreeNodeProps.value.halfChecked);\n    const dragOver = eagerComputed(() => mergedTreeNodeProps.value.dragOver);\n    const dragOverGapTop = eagerComputed(() => mergedTreeNodeProps.value.dragOverGapTop);\n    const dragOverGapBottom = eagerComputed(() => mergedTreeNodeProps.value.dragOverGapBottom);\n    const pos = eagerComputed(() => mergedTreeNodeProps.value.pos);\n\n    const selectHandle = shallowRef();\n\n    const hasChildren = computed(() => {\n      const { eventKey } = props;\n      const { keyEntities } = context.value;\n      const { children } = keyEntities[eventKey] || {};\n\n      return !!(children || []).length;\n    });\n\n    const isLeaf = computed(() => {\n      const { isLeaf } = props;\n      const { loadData } = context.value;\n\n      const has = hasChildren.value;\n\n      if (isLeaf === false)\n        return false;\n\n      return isLeaf || (!loadData && !has) || (loadData && loaded.value && !has);\n    });\n    const nodeState = computed(() => {\n      if (isLeaf.value)\n        return null;\n\n      return expanded.value ? ICON_OPEN : ICON_CLOSE;\n    });\n\n    const isDisabled = computed(() => {\n      const { disabled } = props;\n      const { disabled: treeDisabled } = context.value;\n\n      return !!(treeDisabled || disabled);\n    });\n\n    const isCheckable = computed(() => {\n      const { checkable } = props;\n      const { checkable: treeCheckable } = context.value;\n\n      // Return false if tree or treeNode is not checkable\n      if (!treeCheckable || checkable === false) return false;\n      return treeCheckable;\n    });\n\n    const isSelectable = computed(() => {\n      const { selectable } = props;\n      const { selectable: treeSelectable } = context.value;\n\n      // Ignore when selectable is undefined or null\n      if (typeof selectable === 'boolean')\n        return selectable;\n\n      return treeSelectable;\n    });\n    const renderArgsData = computed(() => {\n      const { data, active, checkable, disableCheckbox, disabled, selectable } = props;\n      return {\n        active,\n        checkable,\n        disableCheckbox,\n        disabled,\n        selectable,\n        ...data,\n        dataRef: data,\n        data,\n        isLeaf: isLeaf.value,\n        checked: checked.value,\n        expanded: expanded.value,\n        loading: loading.value,\n        selected: selected.value,\n        halfChecked: halfChecked.value,\n      };\n    });\n    const instance = getCurrentInstance();\n    const eventData = computed(() => {\n      const { eventKey } = props;\n      const { keyEntities } = context.value;\n      const { parent } = keyEntities[eventKey] || {};\n      return {\n        ...convertNodePropsToEventData(Object.assign({}, props, mergedTreeNodeProps.value)),\n        parent,\n      };\n    });\n    const dragNodeEvent: DragNodeEvent = reactive({\n      eventData,\n      eventKey: computed(() => props.eventKey),\n      selectHandle,\n      pos,\n      key: instance.vnode.key as Key,\n    });\n    expose(dragNodeEvent);\n    const onSelectorDoubleClick = (e: MouseEvent) => {\n      const { onNodeDoubleClick } = context.value;\n      onNodeDoubleClick(e, eventData.value);\n    };\n\n    const onSelect = (e: MouseEvent) => {\n      if (isDisabled.value) return;\n\n      const { onNodeSelect } = context.value;\n      e.preventDefault();\n      onNodeSelect(e, eventData.value);\n    };\n\n    const onCheck = (e: MouseEvent) => {\n      if (isDisabled.value) return;\n\n      const { disableCheckbox } = props;\n      const { onNodeCheck } = context.value;\n\n      if (!isCheckable.value || disableCheckbox) return;\n\n      e.preventDefault();\n      const targetChecked = !checked.value;\n      onNodeCheck(e, eventData.value, targetChecked);\n    };\n\n    const onSelectorClick = (e: MouseEvent) => {\n      // Click trigger before select/check operation\n      const { onNodeClick } = context.value;\n      onNodeClick(e, eventData.value);\n\n      if (isSelectable.value)\n        onSelect(e);\n      else\n        onCheck(e);\n    };\n\n    const onMouseEnter = (e: MouseEvent) => {\n      const { onNodeMouseEnter } = context.value;\n      onNodeMouseEnter(e, eventData.value);\n    };\n\n    const onMouseLeave = (e: MouseEvent) => {\n      const { onNodeMouseLeave } = context.value;\n      onNodeMouseLeave(e, eventData.value);\n    };\n\n    const onContextmenu = (e: MouseEvent) => {\n      const { onNodeContextMenu } = context.value;\n      onNodeContextMenu(e, eventData.value);\n    };\n\n    const onDragStart = (e: DragEvent) => {\n      const { onNodeDragStart } = context.value;\n\n      e.stopPropagation();\n      dragNodeHighlight.value = true;\n      onNodeDragStart(e, dragNodeEvent);\n\n      try {\n        // ie throw error\n        // firefox-need-it\n        e.dataTransfer.setData('text/plain', '');\n      } catch (error) {\n        // empty\n      }\n    };\n\n    const onDragEnter = (e: DragEvent) => {\n      const { onNodeDragEnter } = context.value;\n\n      e.preventDefault();\n      e.stopPropagation();\n      onNodeDragEnter(e, dragNodeEvent);\n    };\n\n    const onDragOver = (e: DragEvent) => {\n      const { onNodeDragOver } = context.value;\n\n      e.preventDefault();\n      e.stopPropagation();\n      onNodeDragOver(e, dragNodeEvent);\n    };\n\n    const onDragLeave = (e: DragEvent) => {\n      const { onNodeDragLeave } = context.value;\n\n      e.stopPropagation();\n      onNodeDragLeave(e, dragNodeEvent);\n    };\n\n    const onDragEnd = (e: DragEvent) => {\n      const { onNodeDragEnd } = context.value;\n\n      e.stopPropagation();\n      dragNodeHighlight.value = false;\n      onNodeDragEnd(e, dragNodeEvent);\n    };\n\n    const onDrop = (e: DragEvent) => {\n      const { onNodeDrop } = context.value;\n\n      e.preventDefault();\n      e.stopPropagation();\n      dragNodeHighlight.value = false;\n      onNodeDrop(e, dragNodeEvent);\n    };\n\n    // Disabled item still can be switch\n    const onExpand = (e) => {\n      const { onNodeExpand } = context.value;\n      if (loading.value) return;\n      onNodeExpand(e, eventData.value);\n    };\n\n    const isDraggable = () => {\n      const { data } = props;\n      const { draggable } = context.value;\n      return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));\n    };\n\n    // ==================== Render: Drag Handler ====================\n    const renderDragHandler = () => {\n      const { draggable, prefixCls } = context.value;\n      return draggable && draggable?.icon\n        ? (\n            <span class={`${prefixCls}-draggable-icon`}>{draggable.icon}</span>\n          )\n        : null;\n    };\n\n    const renderSwitcherIconDom = () => {\n      const {\n        switcherIcon: switcherIconFromProps = slots.switcherIcon\n          || context.value.slots?.[props.data?.slots?.switcherIcon],\n      } = props;\n      const { switcherIcon: switcherIconFromCtx } = context.value;\n\n      const switcherIcon = switcherIconFromProps || switcherIconFromCtx;\n      // if switcherIconDom is null, no render switcher span\n      if (typeof switcherIcon === 'function')\n        return switcherIcon(renderArgsData.value);\n\n      return switcherIcon;\n    };\n\n    // Load data to avoid default expanded tree without data\n    const syncLoadData = () => {\n      // const { expanded, loading, loaded } = props;\n      const { loadData, onNodeLoad } = context.value;\n\n      if (loading.value)\n        return;\n\n      // read from state to avoid loadData at same time\n      if (loadData && expanded.value && !isLeaf.value) {\n        // We needn't reload data when has children in sync logic\n        // It's only needed in node expanded\n        if (!hasChildren.value && !loaded.value)\n          onNodeLoad(eventData.value);\n      }\n    };\n\n    onMounted(() => {\n      syncLoadData();\n    });\n    onUpdated(() => {\n      // https://github.com/vueComponent/ant-design-vue/issues/4835\n      syncLoadData();\n    });\n\n    // Switcher\n    const renderSwitcher = () => {\n      const { prefixCls } = context.value;\n      // if switcherIconDom is null, no render switcher span\n      const switcherIconDom = renderSwitcherIconDom();\n      if (isLeaf.value) {\n        return switcherIconDom !== false\n          ? (\n              <span class={classNames(`${prefixCls}-switcher`, `${prefixCls}-switcher-noop`)}>\n                {switcherIconDom}\n              </span>\n            )\n          : null;\n      }\n\n      const switcherCls = classNames(\n        `${prefixCls}-switcher`,\n        `${prefixCls}-switcher_${expanded.value ? ICON_OPEN : ICON_CLOSE}`,\n      );\n\n      return switcherIconDom !== false\n        ? (\n            <span onClick={onExpand} class={switcherCls}>\n              {switcherIconDom}\n            </span>\n          )\n        : null;\n    };\n\n    // Checkbox\n    const renderCheckbox = () => {\n      const { disableCheckbox } = props;\n      const { prefixCls } = context.value;\n\n      const disabled = isDisabled.value;\n      const checkable = isCheckable.value;\n\n      if (!checkable) return null;\n\n      return (\n        <span\n          class={classNames(\n            `${prefixCls}-checkbox`,\n            checked.value && `${prefixCls}-checkbox-checked`,\n            !checked.value && halfChecked.value && `${prefixCls}-checkbox-indeterminate`,\n            (disabled || disableCheckbox) && `${prefixCls}-checkbox-disabled`,\n          )}\n          onClick={onCheck}\n        >\n          {context.value.customCheckable?.()}\n        </span>\n      );\n    };\n\n    const renderIcon = () => {\n      const { prefixCls } = context.value;\n\n      return (\n        <span\n          class={classNames(\n            `${prefixCls}-iconEle`,\n            `${prefixCls}-icon__${nodeState.value || 'docu'}`,\n            loading.value && `${prefixCls}-icon_loading`,\n          )}\n        />\n      );\n    };\n\n    const renderDropIndicator = () => {\n      const { disabled, eventKey } = props;\n      const {\n        draggable,\n        dropLevelOffset,\n        dropPosition,\n        prefixCls,\n        indent,\n        dropIndicatorRender,\n        dragOverNodeKey,\n        direction,\n      } = context.value;\n      const rootDraggable = draggable !== false;\n      // allowDrop is calculated in Tree.tsx, there is no need for calc it here\n      const showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;\n      return showIndicator\n        ? dropIndicatorRender({ dropPosition, dropLevelOffset, indent, prefixCls, direction })\n        : null;\n    };\n\n    // Icon + Title\n    const renderSelector = () => {\n      const {\n        // title = slots.title ||\n        //   context.value.slots?.[props.data?.slots?.title] ||\n        //   context.value.slots?.title,\n        // selected,\n        icon = slots.icon,\n        // loading,\n        data,\n      } = props;\n      const title\n        = slots.title\n        || context.value.slots?.[props.data?.slots?.title]\n        || context.value.slots?.title\n        || props.title;\n      const {\n        prefixCls,\n        showIcon,\n        icon: treeIcon,\n        loadData,\n        // slots: contextSlots,\n      } = context.value;\n      const disabled = isDisabled.value;\n\n      const wrapClass = `${prefixCls}-node-content-wrapper`;\n\n      // Icon - Still show loading icon when loading without showIcon\n      let $icon;\n\n      if (showIcon) {\n        const currentIcon = icon || context.value.slots?.[data?.slots?.icon] || treeIcon;\n\n        $icon = currentIcon\n          ? (\n              <span class={classNames(`${prefixCls}-iconEle`, `${prefixCls}-icon__customize`)}>\n                {typeof currentIcon === 'function' ? currentIcon(renderArgsData.value) : currentIcon}\n              </span>\n            )\n          : (\n              renderIcon()\n            );\n      } else if (loadData && loading.value) {\n        $icon = renderIcon();\n      }\n\n      // Title\n      let titleNode: any;\n      if (typeof title === 'function')\n        titleNode = title(renderArgsData.value);\n        // } else if (contextSlots.titleRender) {\n        //   titleNode = contextSlots.titleRender(renderArgsData.value);\n      else\n        titleNode = title;\n\n      titleNode = titleNode === undefined ? defaultTitle : titleNode;\n\n      const $title = <span class={`${prefixCls}-title`}>{titleNode}</span>;\n\n      return (\n        <span\n          ref={selectHandle}\n          title={typeof title === 'string' ? title : ''}\n          class={classNames(\n            `${wrapClass}`,\n            `${wrapClass}-${nodeState.value || 'normal'}`,\n            !disabled\n              && (selected.value || dragNodeHighlight.value)\n              && `${prefixCls}-node-selected`,\n          )}\n          onMouseenter={onMouseEnter}\n          onMouseleave={onMouseLeave}\n          onContextmenu={onContextmenu}\n          onClick={onSelectorClick}\n          onDblclick={onSelectorDoubleClick}\n        >\n          {$icon}\n          {$title}\n          {renderDropIndicator()}\n        </span>\n      );\n    };\n    return () => {\n      const {\n        eventKey,\n        isLeaf,\n        isStart,\n        isEnd,\n        domRef,\n        active,\n        data,\n        onMousemove,\n        selectable,\n        ...otherProps\n      } = { ...props, ...attrs };\n      const {\n        prefixCls,\n        filterTreeNode,\n        keyEntities,\n        dropContainerKey,\n        dropTargetKey,\n        draggingNodeKey,\n      } = context.value;\n      const disabled = isDisabled.value;\n      const dataOrAriaAttributeProps = pickAttrs(otherProps, { aria: true, data: true });\n      const { level } = keyEntities[eventKey] || {};\n      const isEndNode = isEnd[isEnd.length - 1];\n\n      const mergedDraggable = isDraggable();\n      const draggableWithoutDisabled = !disabled && mergedDraggable;\n\n      const dragging = draggingNodeKey === eventKey;\n      const ariaSelected = selectable !== undefined ? { 'aria-selected': !!selectable } : undefined;\n      // console.log(1);\n      return (\n        <div\n          ref={domRef}\n          class={classNames(attrs.class, `${prefixCls}-treenode`, {\n            [`${prefixCls}-treenode-disabled`]: disabled,\n            [`${prefixCls}-treenode-switcher-${expanded.value ? 'open' : 'close'}`]: !isLeaf,\n            [`${prefixCls}-treenode-checkbox-checked`]: checked.value,\n            [`${prefixCls}-treenode-checkbox-indeterminate`]: halfChecked.value,\n            [`${prefixCls}-treenode-selected`]: selected.value,\n            [`${prefixCls}-treenode-loading`]: loading.value,\n            [`${prefixCls}-treenode-active`]: active,\n            [`${prefixCls}-treenode-leaf-last`]: isEndNode,\n            [`${prefixCls}-treenode-draggable`]: draggableWithoutDisabled,\n\n            dragging,\n            'drop-target': dropTargetKey === eventKey,\n            'drop-container': dropContainerKey === eventKey,\n            'drag-over': !disabled && dragOver.value,\n            'drag-over-gap-top': !disabled && dragOverGapTop.value,\n            'drag-over-gap-bottom': !disabled && dragOverGapBottom.value,\n            'filter-node': filterTreeNode && filterTreeNode(eventData.value),\n          })}\n          style={attrs.style as CSSProperties}\n          // Draggable config\n          draggable={draggableWithoutDisabled}\n          aria-grabbed={dragging}\n          onDragstart={draggableWithoutDisabled ? onDragStart : undefined}\n          // Drop config\n          onDragenter={mergedDraggable ? onDragEnter : undefined}\n          onDragover={mergedDraggable ? onDragOver : undefined}\n          onDragleave={mergedDraggable ? onDragLeave : undefined}\n          onDrop={mergedDraggable ? onDrop : undefined}\n          onDragend={mergedDraggable ? onDragEnd : undefined}\n          onMousemove={onMousemove}\n          {...ariaSelected}\n          {...dataOrAriaAttributeProps}\n        >\n          <Indent prefixCls={prefixCls} level={level} isStart={isStart} isEnd={isEnd} />\n          {renderDragHandler()}\n          {renderSwitcher()}\n          {renderCheckbox()}\n          {renderSelector()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["ICON_OPEN","ICON_CLOSE","defaultTitle","defineComponent","compatConfig","MODE","name","inheritAttrs","props","treeNodeProps","isTreeNode","setup","attrs","slots","expose","warning","data","Object","keys","map","key","dragNodeHighlight","shallowRef","context","useInjectTreeContext","expandedKeysSet","selectedKeysSet","loadedKeysSet","loadingKeysSet","checkedKeysSet","halfCheckedKeysSet","useInjectKeysState","dragOverNodeKey","dropPosition","keyEntities","value","mergedTreeNodeProps","computed","getTreeNodeProps","eventKey","expanded","eagerComputed","selected","checked","loaded","loading","halfChecked","dragOver","dragOverGapTop","dragOverGapBottom","pos","selectHandle","hasChildren","children","length","isLeaf","loadData","has","nodeState","isDisabled","disabled","treeDisabled","isCheckable","checkable","treeCheckable","isSelectable","selectable","treeSelectable","renderArgsData","active","disableCheckbox","dataRef","instance","getCurrentInstance","eventData","parent","convertNodePropsToEventData","assign","dragNodeEvent","reactive","vnode","onSelectorDoubleClick","e","onNodeDoubleClick","onSelect","onNodeSelect","preventDefault","onCheck","onNodeCheck","targetChecked","onSelectorClick","onNodeClick","onMouseEnter","onNodeMouseEnter","onMouseLeave","onNodeMouseLeave","onContextmenu","onNodeContextMenu","onDragStart","onNodeDragStart","stopPropagation","dataTransfer","setData","error","onDragEnter","onNodeDragEnter","onDragOver","onNodeDragOver","onDragLeave","onNodeDragLeave","onDragEnd","onNodeDragEnd","onDrop","onNodeDrop","onExpand","onNodeExpand","isDraggable","draggable","nodeDraggable","renderDragHandler","prefixCls","icon","_createVNode","renderSwitcherIconDom","switcherIcon","switcherIconFromProps","switcherIconFromCtx","syncLoadData","onNodeLoad","onMounted","onUpdated","renderSwitcher","switcherIconDom","classNames","switcherCls","renderCheckbox","customCheckable","renderIcon","renderDropIndicator","dropLevelOffset","indent","dropIndicatorRender","direction","rootDraggable","showIndicator","renderSelector","title","showIcon","treeIcon","wrapClass","$icon","currentIcon","titleNode","undefined","$title","isStart","isEnd","domRef","onMousemove","otherProps","filterTreeNode","dropContainerKey","dropTargetKey","draggingNodeKey","dataOrAriaAttributeProps","pickAttrs","aria","level","isEndNode","mergedDraggable","draggableWithoutDisabled","dragging","ariaSelected","class","style","Indent"],"mappings":"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"}