@frontify/fondue 13.7.2 → 13.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/components/Flyout/helpers/getVerticalPositioning.es.js.map +1 -1
  2. package/dist/components/InputLabel/InputLabel.es.js.map +1 -1
  3. package/dist/components/Tree/Tree.es.js.map +1 -1
  4. package/dist/components/Tree/TreeContext.es.js.map +1 -1
  5. package/dist/components/Tree/TreeItem/DragHandle.es.js.map +1 -1
  6. package/dist/components/Tree/TreeItem/ExpandButton.es.js.map +1 -1
  7. package/dist/components/Tree/TreeItem/TreeItem.es.js.map +1 -1
  8. package/dist/components/Tree/TreeItem/TreeItemMultiselect.es.js.map +1 -1
  9. package/dist/components/Tree/TreeItem/TreeItemOverlay.es.js.map +1 -1
  10. package/dist/components/Tree/TreeItem/useMultiselectTreeItem.es.js.map +1 -1
  11. package/dist/components/Tree/TreeItem/useTreeItem.es.js.map +1 -1
  12. package/dist/components/Tree/helpers/constants.es.js.map +1 -1
  13. package/dist/components/Tree/helpers/getMovementAnnouncements.es.js.map +1 -1
  14. package/dist/components/Tree/helpers/multiselect.es.js.map +1 -1
  15. package/dist/components/Tree/helpers/multiselectTreeItemstyling.es.js.map +1 -1
  16. package/dist/components/Tree/helpers/nodes.es.js.map +1 -1
  17. package/dist/components/Tree/helpers/projection.es.js.map +1 -1
  18. package/dist/components/Tree/helpers/reducer.es.js.map +1 -1
  19. package/dist/components/Tree/helpers/sensorsActivationConstraint.es.js.map +1 -1
  20. package/dist/components/Tree/helpers/treeHandleKeyDown.es.js.map +1 -1
  21. package/dist/components/Tree/types.es.js.map +1 -1
  22. package/dist/components/Tree/utils/keyboardCoordinates.es.js.map +1 -1
  23. package/dist/components/Tree/utils/removeFragmentsAndEnrichChildren.es.js.map +1 -1
  24. package/dist/components/Tree/utils/useDeepCompareEffect.es.js.map +1 -1
  25. package/dist/index.cjs.js.map +1 -1
  26. package/dist/index.d.ts +261 -3
  27. package/dist/index.umd.js.map +1 -1
  28. package/dist/packages/components/style.css +1 -1
  29. package/dist/packages/rte/style.css +1 -1
  30. package/dist/tools/codemod/index.js +87 -1
  31. package/dist/tools/internal/index.js +30 -36
  32. package/package.json +5 -6
  33. package/dist/tools/sdk-cli/adapters/claude-skill/skill/SKILL.md +0 -207
  34. package/dist/tools/sdk-cli/adapters/claude-skill/skill/reference.md +0 -235
  35. package/dist/tools/sdk-cli/index.js +0 -224
@@ -1 +1 @@
1
- {"version":3,"file":"getVerticalPositioning.es.js","sources":["../../../../src/components/Flyout/helpers/getVerticalPositioning.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\ntype VerticalPosition = 'top' | 'bottom';\n\nexport const getVerticalPositioning = <T extends HTMLElement>(\n triggerRef: T | null,\n overlayHeight: number,\n offset: number,\n bottomMargin: number,\n): { position: VerticalPosition; maxHeight: number } => {\n let position: VerticalPosition = 'bottom';\n let maxHeight = Infinity;\n\n if (!triggerRef || !overlayHeight) {\n return { position, maxHeight };\n }\n\n const { top: triggerTop, bottom: triggerBottom } = triggerRef.getBoundingClientRect();\n const viewportHeight = window.visualViewport?.height ?? 0;\n const spaceBelow = viewportHeight - triggerBottom - offset - bottomMargin;\n const spaceAbove = triggerTop - offset;\n\n if (spaceBelow < overlayHeight) {\n position = spaceBelow < spaceAbove ? 'top' : 'bottom';\n }\n\n maxHeight = position === 'top' ? spaceAbove : spaceBelow;\n\n return { position, maxHeight };\n};\n"],"names":["getVerticalPositioning","triggerRef","overlayHeight","offset","bottomMargin","_a","position","maxHeight","triggerTop","triggerBottom","spaceBelow","spaceAbove"],"mappings":"AAIO,MAAMA,IAAyB,CAClCC,GACAC,GACAC,GACAC,MACoD;AALjD,MAAAC;AAMH,MAAIC,IAA6B,UAC7BC,IAAY;AAEhB,MAAI,CAACN,KAAc,CAACC;AAChB,WAAO,EAAE,UAAAI,GAAU,WAAAC,EAAA;AAGvB,QAAM,EAAE,KAAKC,GAAY,QAAQC,EAAA,IAAkBR,EAAW,sBAAA,GAExDS,OADiBL,IAAA,OAAO,mBAAP,gBAAAA,EAAuB,WAAU,KACpBI,IAAgBN,IAASC,GACvDO,IAAaH,IAAaL;AAEhC,SAAIO,IAAaR,MACbI,IAAWI,IAAaC,IAAa,QAAQ,WAGjDJ,IAAYD,MAAa,QAAQK,IAAaD,GAEvC,EAAE,UAAAJ,GAAU,WAAAC,EAAA;AACvB;"}
1
+ {"version":3,"file":"getVerticalPositioning.es.js","sources":["../../../../src/components/Flyout/helpers/getVerticalPositioning.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\ntype VerticalPosition = 'top' | 'bottom';\n\n/**\n * @deprecated Please use updated Flyout component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#flyout-old-inlinedialog the migration guide}.\n */\nexport const getVerticalPositioning = <T extends HTMLElement>(\n triggerRef: T | null,\n overlayHeight: number,\n offset: number,\n bottomMargin: number,\n): { position: VerticalPosition; maxHeight: number } => {\n let position: VerticalPosition = 'bottom';\n let maxHeight = Infinity;\n\n if (!triggerRef || !overlayHeight) {\n return { position, maxHeight };\n }\n\n const { top: triggerTop, bottom: triggerBottom } = triggerRef.getBoundingClientRect();\n const viewportHeight = window.visualViewport?.height ?? 0;\n const spaceBelow = viewportHeight - triggerBottom - offset - bottomMargin;\n const spaceAbove = triggerTop - offset;\n\n if (spaceBelow < overlayHeight) {\n position = spaceBelow < spaceAbove ? 'top' : 'bottom';\n }\n\n maxHeight = position === 'top' ? spaceAbove : spaceBelow;\n\n return { position, maxHeight };\n};\n"],"names":["getVerticalPositioning","triggerRef","overlayHeight","offset","bottomMargin","_a","position","maxHeight","triggerTop","triggerBottom","spaceBelow","spaceAbove"],"mappings":"AAOO,MAAMA,IAAyB,CAClCC,GACAC,GACAC,GACAC,MACoD;AALjD,MAAAC;AAMH,MAAIC,IAA6B,UAC7BC,IAAY;AAEhB,MAAI,CAACN,KAAc,CAACC;AAChB,WAAO,EAAE,UAAAI,GAAU,WAAAC,EAAA;AAGvB,QAAM,EAAE,KAAKC,GAAY,QAAQC,EAAA,IAAkBR,EAAW,sBAAA,GAExDS,OADiBL,IAAA,OAAO,mBAAP,gBAAAA,EAAuB,WAAU,KACpBI,IAAgBN,IAASC,GACvDO,IAAaH,IAAaL;AAEhC,SAAIO,IAAaR,MACbI,IAAWI,IAAaC,IAAa,QAAQ,WAGjDJ,IAAYD,MAAa,QAAQK,IAAaD,GAEvC,EAAE,UAAAJ,GAAU,WAAAC,EAAA;AACvB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputLabel.es.js","sources":["../../../src/components/InputLabel/InputLabel.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type ReactElement, type ReactNode } from 'react';\n\nimport { type LegacyTooltipProps } from '@components/LegacyTooltip/LegacyTooltip';\nimport { TooltipIcon, type TooltipIconProps } from '@components/TooltipIcon/TooltipIcon';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Use `Label` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#label-old-inputlabel the migration guide}.\n */\nexport type InputLabelTooltipProps =\n | (LegacyTooltipProps & Pick<TooltipIconProps, 'triggerStyle' | 'triggerIcon'>)\n | (LegacyTooltipProps & Pick<TooltipIconProps, 'triggerStyle' | 'triggerIcon'>)[];\n\n/**\n * @legacy Use `Label` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#label-old-inputlabel the migration guide}.\n */\nexport type InputLabelProps = {\n id?: string;\n htmlFor: string;\n required?: boolean;\n disabled?: boolean;\n clickable?: boolean;\n tooltip?: InputLabelTooltipProps;\n bold?: boolean;\n children?: ReactNode;\n 'data-test-id'?: string;\n};\n\n/**\n * @deprecated Use `Label` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#label-old-inputlabel the migration guide}.\n */\nexport const InputLabel = ({\n id,\n children,\n htmlFor,\n required = false,\n disabled = false,\n clickable = false,\n tooltip = [],\n bold,\n 'data-test-id': dataTestId = 'input-label',\n}: InputLabelProps): ReactElement => {\n const tooltips = Array.isArray(tooltip) ? tooltip : [tooltip];\n\n const tooltipsWithKeys = tooltips.map((tooltip, index) => ({\n key: index,\n ...tooltip,\n }));\n\n return (\n <div\n className={merge([\n 'tw-inline-flex tw-leading-4 tw-items-center tw-gap-1 tw-font-sans tw-text-s tw-max-w-full tw-min-w-0 tw-flex-initial',\n disabled ? 'tw-text-text-disabled' : 'tw-text-text-weak',\n ])}\n data-test-id={`${dataTestId}-container`}\n >\n <div className=\"tw-flex-1 tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap\">\n <label\n id={id}\n htmlFor={htmlFor}\n className={merge([\n 'tw-select-none tw-max-w-full',\n bold && 'tw-font-medium',\n disabled || !clickable\n ? 'hover:tw-cursor-not-allowed tw-pointer-events-none'\n : 'hover:tw-cursor-pointer hover:tw-text-text group-hover:tw-text-text',\n ])}\n data-test-id={dataTestId}\n title={typeof children === 'string' ? children : ''}\n >\n {children}\n </label>\n </div>\n\n {required && (\n <span data-test-id={`${dataTestId}-required`} className=\"tw-h-4 tw-text-m tw-text-text-negative\">\n *\n </span>\n )}\n {tooltipsWithKeys.map(({ key, triggerIcon, triggerStyle, hoverDelay = 100, ...tooltipProps }) => (\n <div key={key} className=\"tw-leading-3\">\n <TooltipIcon\n tooltip={{ ...tooltipProps, hoverDelay }}\n iconSize={16}\n triggerIcon={triggerIcon}\n triggerStyle={triggerStyle}\n />\n </div>\n ))}\n </div>\n );\n};\nInputLabel.displayName = 'FondueInputLabel';\n"],"names":["InputLabel","id","children","htmlFor","required","disabled","clickable","tooltip","bold","dataTestId","tooltipsWithKeys","index","jsxs","merge","jsx","key","triggerIcon","triggerStyle","hoverDelay","tooltipProps","TooltipIcon"],"mappings":";;;AAiCO,MAAMA,IAAa,CAAC;AAAA,EACvB,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU,CAAA;AAAA,EACV,MAAAC;AAAA,EACA,gBAAgBC,IAAa;AACjC,MAAqC;AAGjC,QAAMC,KAFW,MAAM,QAAQH,CAAO,IAAIA,IAAU,CAACA,CAAO,GAE1B,IAAI,CAACA,GAASI,OAAW;AAAA,IACvD,KAAKA;AAAA,IACL,GAAGJ;AAAAA,EAAA,EACL;AAEF,SACI,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWC,EAAM;AAAA,QACb;AAAA,QACAR,IAAW,0BAA0B;AAAA,MAAA,CACxC;AAAA,MACD,gBAAc,GAAGI,CAAU;AAAA,MAE3B,UAAA;AAAA,QAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,sEACX,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,IAAAb;AAAA,YACA,SAAAE;AAAA,YACA,WAAWU,EAAM;AAAA,cACb;AAAA,cACAL,KAAQ;AAAA,cACRH,KAAY,CAACC,IACP,uDACA;AAAA,YAAA,CACT;AAAA,YACD,gBAAcG;AAAA,YACd,OAAO,OAAOP,KAAa,WAAWA,IAAW;AAAA,YAEhD,UAAAA;AAAA,UAAA;AAAA,QAAA,GAET;AAAA,QAECE,uBACI,QAAA,EAAK,gBAAc,GAAGK,CAAU,aAAa,WAAU,0CAAyC,UAAA,IAAA,CAEjG;AAAA,QAEHC,EAAiB,IAAI,CAAC,EAAE,KAAAK,GAAK,aAAAC,GAAa,cAAAC,GAAc,YAAAC,IAAa,KAAK,GAAGC,EAAA,MAC1E,gBAAAL,EAAC,OAAA,EAAc,WAAU,gBACrB,UAAA,gBAAAA;AAAA,UAACM;AAAA,UAAA;AAAA,YACG,SAAS,EAAE,GAAGD,GAAc,YAAAD,EAAA;AAAA,YAC5B,UAAU;AAAA,YACV,aAAAF;AAAA,YACA,cAAAC;AAAA,UAAA;AAAA,QAAA,EACJ,GANMF,CAOV,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb;AACAf,EAAW,cAAc;"}
1
+ {"version":3,"file":"InputLabel.es.js","sources":["../../../src/components/InputLabel/InputLabel.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type ReactElement, type ReactNode } from 'react';\n\nimport { type LegacyTooltipProps } from '@components/LegacyTooltip/LegacyTooltip';\nimport { TooltipIcon, type TooltipIconProps } from '@components/TooltipIcon/TooltipIcon';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Use `Label` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#label-old-inputlabel the migration guide}.\n */\nexport type InputLabelTooltipProps =\n | (LegacyTooltipProps & Pick<TooltipIconProps, 'triggerStyle' | 'triggerIcon'>)\n | (LegacyTooltipProps & Pick<TooltipIconProps, 'triggerStyle' | 'triggerIcon'>)[];\n\n/**\n * @deprecated Use `Label` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#label-old-inputlabel the migration guide}.\n */\nexport type InputLabelProps = {\n id?: string;\n htmlFor: string;\n required?: boolean;\n disabled?: boolean;\n clickable?: boolean;\n tooltip?: InputLabelTooltipProps;\n bold?: boolean;\n children?: ReactNode;\n 'data-test-id'?: string;\n};\n\n/**\n * @deprecated Use `Label` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#label-old-inputlabel the migration guide}.\n */\nexport const InputLabel = ({\n id,\n children,\n htmlFor,\n required = false,\n disabled = false,\n clickable = false,\n tooltip = [],\n bold,\n 'data-test-id': dataTestId = 'input-label',\n}: InputLabelProps): ReactElement => {\n const tooltips = Array.isArray(tooltip) ? tooltip : [tooltip];\n\n const tooltipsWithKeys = tooltips.map((tooltip, index) => ({\n key: index,\n ...tooltip,\n }));\n\n return (\n <div\n className={merge([\n 'tw-inline-flex tw-leading-4 tw-items-center tw-gap-1 tw-font-sans tw-text-s tw-max-w-full tw-min-w-0 tw-flex-initial',\n disabled ? 'tw-text-text-disabled' : 'tw-text-text-weak',\n ])}\n data-test-id={`${dataTestId}-container`}\n >\n <div className=\"tw-flex-1 tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap\">\n <label\n id={id}\n htmlFor={htmlFor}\n className={merge([\n 'tw-select-none tw-max-w-full',\n bold && 'tw-font-medium',\n disabled || !clickable\n ? 'hover:tw-cursor-not-allowed tw-pointer-events-none'\n : 'hover:tw-cursor-pointer hover:tw-text-text group-hover:tw-text-text',\n ])}\n data-test-id={dataTestId}\n title={typeof children === 'string' ? children : ''}\n >\n {children}\n </label>\n </div>\n\n {required && (\n <span data-test-id={`${dataTestId}-required`} className=\"tw-h-4 tw-text-m tw-text-text-negative\">\n *\n </span>\n )}\n {tooltipsWithKeys.map(({ key, triggerIcon, triggerStyle, hoverDelay = 100, ...tooltipProps }) => (\n <div key={key} className=\"tw-leading-3\">\n <TooltipIcon\n tooltip={{ ...tooltipProps, hoverDelay }}\n iconSize={16}\n triggerIcon={triggerIcon}\n triggerStyle={triggerStyle}\n />\n </div>\n ))}\n </div>\n );\n};\nInputLabel.displayName = 'FondueInputLabel';\n"],"names":["InputLabel","id","children","htmlFor","required","disabled","clickable","tooltip","bold","dataTestId","tooltipsWithKeys","index","jsxs","merge","jsx","key","triggerIcon","triggerStyle","hoverDelay","tooltipProps","TooltipIcon"],"mappings":";;;AAiCO,MAAMA,IAAa,CAAC;AAAA,EACvB,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU,CAAA;AAAA,EACV,MAAAC;AAAA,EACA,gBAAgBC,IAAa;AACjC,MAAqC;AAGjC,QAAMC,KAFW,MAAM,QAAQH,CAAO,IAAIA,IAAU,CAACA,CAAO,GAE1B,IAAI,CAACA,GAASI,OAAW;AAAA,IACvD,KAAKA;AAAA,IACL,GAAGJ;AAAAA,EAAA,EACL;AAEF,SACI,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWC,EAAM;AAAA,QACb;AAAA,QACAR,IAAW,0BAA0B;AAAA,MAAA,CACxC;AAAA,MACD,gBAAc,GAAGI,CAAU;AAAA,MAE3B,UAAA;AAAA,QAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,sEACX,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,IAAAb;AAAA,YACA,SAAAE;AAAA,YACA,WAAWU,EAAM;AAAA,cACb;AAAA,cACAL,KAAQ;AAAA,cACRH,KAAY,CAACC,IACP,uDACA;AAAA,YAAA,CACT;AAAA,YACD,gBAAcG;AAAA,YACd,OAAO,OAAOP,KAAa,WAAWA,IAAW;AAAA,YAEhD,UAAAA;AAAA,UAAA;AAAA,QAAA,GAET;AAAA,QAECE,uBACI,QAAA,EAAK,gBAAc,GAAGK,CAAU,aAAa,WAAU,0CAAyC,UAAA,IAAA,CAEjG;AAAA,QAEHC,EAAiB,IAAI,CAAC,EAAE,KAAAK,GAAK,aAAAC,GAAa,cAAAC,GAAc,YAAAC,IAAa,KAAK,GAAGC,EAAA,MAC1E,gBAAAL,EAAC,OAAA,EAAc,WAAU,gBACrB,UAAA,gBAAAA;AAAA,UAACM;AAAA,UAAA;AAAA,YACG,SAAS,EAAE,GAAGD,GAAc,YAAAD,EAAA;AAAA,YAC5B,UAAU;AAAA,YACV,aAAAF;AAAA,YACA,cAAAC;AAAA,UAAA;AAAA,QAAA,EACJ,GANMF,CAOV,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb;AACAf,EAAW,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.es.js","sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n DndContext,\n type DragEndEvent,\n type DragMoveEvent,\n DragOverlay,\n KeyboardSensor,\n type MeasuringConfiguration,\n MeasuringStrategy,\n PointerSensor,\n closestCorners,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { restrictToWindowEdges } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { enableMapSet, produce } from 'immer';\nimport { isEqual } from 'lodash-es';\nimport {\n type KeyboardEvent,\n cloneElement,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n useTransition,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n type DragHandlerPosition,\n type RegisterNodeChildrenPayload,\n type SensorContext,\n type TreeAnnouncements,\n type TreeDragOverEvent,\n type TreeDragStartEvent,\n type TreeItemProps,\n type TreeItemStyling,\n type TreeProps,\n type TreeState,\n type TreeStateAction,\n} from '@components/Tree/types';\n\nimport {\n ROOT_ID,\n currentNodesChanged,\n findIndexById,\n getAnnouncements,\n getCurrentChildrenForNewNodesIfExpanded,\n getNodeChildrenIds,\n getNodesToRender,\n getProjection,\n getReactNodeIdsInFlatArray,\n getTreeNodesWithoutElements,\n handleKeyDownEvent,\n removeReactNodesFromFlatArray,\n sensorsActivationConstraint,\n shouldUpdateTreeState,\n updateNodeWithNewChildren,\n} from './helpers';\nimport { TreeContext, type TreeContextProps } from './TreeContext';\nimport { type InternalTreeItemProps, TreeItemOverlay } from './TreeItem';\nimport { type InternalTreeItemMultiSelectProps } from './TreeItem/TreeItemMultiselect';\nimport { type Overlay } from './TreeItem/TreeItemOverlay';\nimport {\n recursivelyRemoveFragmentsAndEnrichChildren,\n sortableTreeKeyboardCoordinates,\n useDeepCompareEffect,\n} from './utils';\n\nconst measuring: MeasuringConfiguration = {\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n};\n\nenableMapSet();\n\nconst reducer = produce((draft: TreeState, action: TreeStateAction) => {\n switch (action.type) {\n case 'EXPAND_NODE': {\n draft.expandedIds = new Set(draft.expandedIds).add(action.payload);\n return;\n }\n\n case 'SHRINK_NODE': {\n const newExpanded = new Set(draft.expandedIds);\n newExpanded.delete(action.payload);\n\n draft.expandedIds = newExpanded;\n return;\n }\n\n case 'SET_SELECTION_MODE':\n draft.selectionMode = action.payload.selectionMode;\n return;\n\n case 'SET_PROJECTION': {\n if (!isEqual(draft.projection, action.payload)) {\n draft.projection = action.payload;\n }\n return;\n }\n\n case 'REGISTER_OVERLAY_ITEM': {\n draft.overlay = action.payload;\n return;\n }\n\n case 'REGISTER_ROOT_NODES': {\n // reset rootNodes keeping any children when expanded\n draft.rootNodes = getCurrentChildrenForNewNodesIfExpanded(\n draft.rootNodes,\n draft.expandedIds,\n action.payload,\n );\n return;\n }\n\n case 'REGISTER_NODE_CHILDREN': {\n const { id: parentId, children } = action.payload;\n\n if (findIndexById(draft.rootNodes, parentId) === -1) {\n // This can happen when this action is triggered before the rootNodes array is updated\n // It happens if using static data will all nodes and handling expandedIds outside the Tree component\n // Most of the cases, it will register the children properly afterwards\n // See Scrollable Tree With Label story\n console.warn(`Parent element with ID \"${parentId}\" not found when registering children.`);\n return;\n }\n\n const currentChildrenIds = getNodeChildrenIds(draft.rootNodes, parentId);\n const newChildrenIds = children.map((node) => node.props.id);\n\n if (\n !isEqual(currentChildrenIds, newChildrenIds) ||\n currentNodesChanged(currentChildrenIds, draft.rootNodes, children)\n ) {\n // keep any children when parent expanded\n const newChildren = getCurrentChildrenForNewNodesIfExpanded(\n draft.rootNodes,\n draft.expandedIds,\n children,\n );\n draft.rootNodes = updateNodeWithNewChildren(draft.rootNodes, parentId, newChildren);\n }\n\n return;\n }\n\n case 'UNREGISTER_NODE_CHILDREN': {\n const nodeIds = getReactNodeIdsInFlatArray(draft.rootNodes, action.payload);\n if (nodeIds.length > 0) {\n draft.rootNodes = removeReactNodesFromFlatArray(draft.rootNodes, nodeIds);\n }\n return;\n }\n\n case 'REGISTER_NODES': {\n draft.nodes = action.payload;\n return;\n }\n\n case 'REPLACE_EXPANDED': {\n draft.expandedIds = new Set(action.payload);\n return;\n }\n\n case 'REPLACE_SELECTED': {\n draft.selectedIds = new Set(action.payload);\n return;\n }\n\n case 'REPLACE_STATE': {\n draft.rootNodes = action.payload.rootNodes;\n draft.overlay = action.payload.overlay;\n draft.projection = action.payload.projection;\n draft.selectedIds = action.payload.selectedIds;\n draft.expandedIds = action.payload.expandedIds;\n draft.selectionMode = action.payload.selectionMode;\n return;\n }\n\n default: {\n console.warn(`Updated tree with action \"${action.type}\" but it has not effect.`);\n return;\n }\n }\n});\n\nexport const Tree = memo(\n ({\n id,\n onDrop,\n onSelect = () => {},\n onExpand,\n onShrink,\n children,\n selectedIds,\n expandedIds,\n draggable = false,\n multiselect = false,\n dragHandlerPosition = 'left',\n enableDragDelay = true,\n showDragHandlerOnHoverOnly = true,\n showContentWhileDragging = false,\n itemStyle,\n 'data-test-id': dataTestId = 'fondue-tree',\n }: TreeProps) => {\n const initialState: TreeState = useMemo(\n () => ({\n selectionMode: multiselect ? 'multiselect' : 'single',\n selectedIds: new Set(selectedIds ?? []),\n expandedIds: new Set(expandedIds ?? []),\n rootNodes: [],\n expandedNodes: [],\n nodes: [],\n nodesReady: false,\n projection: null,\n }),\n [expandedIds, multiselect, selectedIds],\n );\n\n const [treeState, updateTreeState] = useReducer(reducer, initialState);\n const [, startTransition] = useTransition();\n\n const [offset, setOffset] = useState<Nullable<number>>(null);\n const [overId, setOverId] = useState<Nullable<string>>(null);\n const [activeId, setActiveId] = useState<Nullable<string>>(null);\n const [currentPosition, setCurrentPosition] =\n useState<Nullable<{ overId: string; parentId: Nullable<string> }>>(null);\n\n useEffect(() => {\n const keyDownHandler = (event: globalThis.KeyboardEvent) => {\n if (shouldUpdateTreeState(event, multiselect)) {\n updateTreeState({\n type: 'SET_SELECTION_MODE',\n payload: { selectionMode: 'multiselect' },\n });\n }\n };\n\n const keyUpHandler = (event: globalThis.KeyboardEvent) => {\n if (shouldUpdateTreeState(event, multiselect)) {\n updateTreeState({\n type: 'SET_SELECTION_MODE',\n payload: { selectionMode: 'single' },\n });\n }\n };\n\n if (multiselect) {\n window.addEventListener('keydown', keyDownHandler);\n window.addEventListener('keyup', keyUpHandler);\n }\n\n return () => {\n window.removeEventListener('keydown', keyDownHandler);\n window.removeEventListener('keyup', keyUpHandler);\n };\n }, [multiselect]);\n\n const registerOverlay = useCallback((overlay: Overlay) => {\n updateTreeState({ type: 'REGISTER_OVERLAY_ITEM', payload: overlay });\n }, []);\n\n const registerNodeChildren = useCallback((payload: RegisterNodeChildrenPayload) => {\n updateTreeState({ type: 'REGISTER_NODE_CHILDREN', payload });\n }, []);\n\n const unregisterNodeChildren = useCallback((payload: string) => {\n updateTreeState({ type: 'UNREGISTER_NODE_CHILDREN', payload });\n }, []);\n\n const handleSelect = useCallback(\n (id: string, ignoreRemoveSelected = false) => {\n onSelect(id, ignoreRemoveSelected, getTreeNodesWithoutElements(treeState.nodes));\n },\n [onSelect, treeState.nodes],\n );\n\n const handleExpand = useCallback(\n (id: string) => {\n if (onExpand) {\n return onExpand(id);\n }\n\n updateTreeState({\n type: 'EXPAND_NODE',\n payload: id,\n });\n },\n [onExpand],\n );\n\n const handleShrink = useCallback(\n (id: string) => {\n if (onShrink) {\n return onShrink(id);\n }\n\n updateTreeState({\n type: 'SHRINK_NODE',\n payload: id,\n });\n },\n [onShrink],\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n resetState();\n\n const { over, active } = event;\n\n if (!over?.id || !active?.id || !treeState.projection?.parentId) {\n return;\n }\n\n const activeNode = treeState.nodes.find((node) => node.props.id === active.id);\n const contentComponent = activeNode?.props?.contentComponent;\n\n onDrop?.({\n id: active.id.toString(),\n parentId: treeState.projection.parentId,\n sort: treeState.projection.position,\n contentComponent,\n });\n };\n\n const handleDragStart = ({ active: { id: activeId, data } }: TreeDragStartEvent) => {\n setActiveId(activeId);\n setOverId(activeId);\n\n if (activeId && data.current) {\n setCurrentPosition({\n parentId: data.current.parentId,\n overId: activeId,\n });\n }\n\n document.body.style.setProperty('cursor', 'grabbing');\n };\n\n const handleDragOver = ({ over }: TreeDragOverEvent) => {\n setOverId(over?.id ?? null);\n };\n\n const handleDragMove = ({ delta }: DragMoveEvent) => {\n setOffset(delta.x);\n };\n\n const handleDragCancel = () => {\n resetState();\n };\n\n const resetState = () => {\n setOverId(null);\n setActiveId(null);\n setOffset(0);\n setCurrentPosition(null);\n\n document.body.style.setProperty('cursor', 'default');\n };\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLUListElement>) => {\n return handleKeyDownEvent(\n event,\n treeState.expandedIds,\n treeState.nodes,\n handleSelect,\n handleShrink,\n handleExpand,\n );\n },\n [handleExpand, handleShrink, handleSelect, treeState.expandedIds, treeState.nodes],\n );\n\n const sensorContext: SensorContext = useRef({\n nodes: treeState.nodes,\n offset: offset ?? 0,\n });\n\n // eslint-disable-next-line @eslint-react/refs\n const coordinateGetter = useMemo(() => sortableTreeKeyboardCoordinates(sensorContext), [sensorContext]);\n const activationConstraint = sensorsActivationConstraint({ dragHandlerPosition, enableDragDelay });\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint }),\n useSensor(KeyboardSensor, { coordinateGetter }),\n );\n\n const announcements: TreeAnnouncements = useMemo(() => {\n return getAnnouncements(treeState, currentPosition, setCurrentPosition);\n }, [currentPosition, treeState]);\n\n useDeepCompareEffect(() => {\n if (!children) {\n return;\n }\n\n updateTreeState({\n type: 'REGISTER_ROOT_NODES',\n payload: recursivelyRemoveFragmentsAndEnrichChildren(children, { parentId: ROOT_ID, level: 0 }),\n });\n }, [children]);\n\n useDeepCompareEffect(() => {\n if (treeState.rootNodes.length === 0) {\n return;\n }\n\n startTransition(() => {\n const nodesToRender = getNodesToRender(treeState.rootNodes, treeState.expandedIds);\n\n updateTreeState({\n type: 'REGISTER_NODES',\n payload: nodesToRender,\n });\n });\n }, [treeState.rootNodes, treeState.expandedIds]);\n\n useEffect(() => {\n updateTreeState({\n type: 'REPLACE_EXPANDED',\n payload: expandedIds ?? [],\n });\n }, [expandedIds]);\n\n useEffect(() => {\n updateTreeState({\n type: 'REPLACE_SELECTED',\n payload: selectedIds ?? [],\n });\n }, [selectedIds]);\n\n useDeepCompareEffect(() => {\n sensorContext.current = {\n nodes: treeState.nodes,\n offset: offset ?? 0,\n };\n }, [offset, treeState.nodes]);\n\n useEffect(() => {\n const projection =\n activeId && overId\n ? getProjection({\n nodes: treeState.nodes,\n activeId,\n overId,\n dragOffset: offset ?? 0,\n })\n : null;\n\n updateTreeState({\n type: 'SET_PROJECTION',\n payload: projection,\n });\n }, [activeId, offset, overId, treeState.nodes]);\n\n const getPropToUse = (\n nodeProp: TreeItemProps['dragHandlerPosition' | 'showContentWhileDragging' | 'showDragHandlerOnHoverOnly'],\n treeProp: TreeProps['dragHandlerPosition' | 'showContentWhileDragging' | 'showDragHandlerOnHoverOnly'],\n ) => nodeProp || treeProp;\n\n const { nodes, items } = useMemo(() => {\n const treeItemStyle = {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n } as TreeItemStyling;\n\n const getTreeItemProps = (nodeProps: InternalTreeItemProps | InternalTreeItemMultiSelectProps) => {\n return multiselect\n ? {\n checkBoxPosition: getPropToUse(\n (nodeProps as InternalTreeItemMultiSelectProps).checkBoxPosition,\n dragHandlerPosition,\n ) as DragHandlerPosition,\n }\n : {\n draggable: (nodeProps as InternalTreeItemProps).draggable ? true : draggable,\n dragHandlerPosition: getPropToUse(\n (nodeProps as InternalTreeItemProps).dragHandlerPosition,\n dragHandlerPosition,\n ) as TreeProps['dragHandlerPosition'],\n showDragHandlerOnHoverOnly: getPropToUse(\n (nodeProps as InternalTreeItemProps).showDragHandlerOnHoverOnly,\n showDragHandlerOnHoverOnly,\n ) as TreeProps['showDragHandlerOnHoverOnly'],\n showContentWhileDragging: getPropToUse(\n (nodeProps as InternalTreeItemProps).showContentWhileDragging,\n showContentWhileDragging,\n ) as TreeProps['showContentWhileDragging'],\n };\n };\n\n return {\n items: treeState.nodes.map((node) => node.props.id),\n nodes: treeState.nodes.map((node) =>\n cloneElement(node, {\n ...getTreeItemProps(node.props),\n itemStyle: { ...treeItemStyle, ...node.props.itemStyle },\n registerOverlay,\n onExpand: handleExpand,\n onShrink: handleShrink,\n onSelect: handleSelect,\n registerNodeChildren,\n unregisterNodeChildren,\n }),\n ),\n };\n }, [\n itemStyle,\n treeState.nodes,\n draggable,\n multiselect,\n dragHandlerPosition,\n showDragHandlerOnHoverOnly,\n showContentWhileDragging,\n registerOverlay,\n handleExpand,\n handleShrink,\n handleSelect,\n registerNodeChildren,\n unregisterNodeChildren,\n ]);\n\n const contextValue: TreeContextProps = useMemo(\n () => ({\n treeState,\n onSelect: handleSelect,\n onExpand: handleExpand,\n onShrink: handleShrink,\n }),\n [treeState, handleSelect, handleExpand, handleShrink],\n );\n\n return (\n <TreeContext.Provider value={contextValue}>\n <ul\n id={id}\n role=\"tree\"\n data-test-id={dataTestId}\n onKeyDown={handleKeyDown}\n aria-multiselectable={treeState.selectionMode === 'multiselect'}\n className=\"tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left tw-text-sm tw-select-none\"\n >\n <DndContext\n sensors={sensors}\n measuring={measuring}\n onDragEnd={handleDragEnd}\n onDragOver={handleDragOver}\n onDragMove={handleDragMove}\n onDragStart={handleDragStart}\n onDragCancel={handleDragCancel}\n accessibility={{\n announcements,\n container: document.getElementById(id)?.parentElement ?? document.body,\n }}\n collisionDetection={closestCorners}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {nodes}\n </SortableContext>\n\n {createPortal(\n <DragOverlay\n zIndex={1500}\n wrapperElement=\"ul\"\n dropAnimation={null}\n modifiers={[restrictToWindowEdges]}\n >\n {treeState.overlay && (\n <TreeItemOverlay\n {...treeState.overlay}\n isSelected={treeState.selectedIds.has(treeState.overlay.id)}\n />\n )}\n </DragOverlay>,\n document.body,\n )}\n </DndContext>\n </ul>\n </TreeContext.Provider>\n );\n },\n);\n\nTree.displayName = 'FondueTree';\n"],"names":["measuring","MeasuringStrategy","enableMapSet","reducer","produce","draft","action","newExpanded","isEqual","getCurrentChildrenForNewNodesIfExpanded","parentId","children","findIndexById","currentChildrenIds","getNodeChildrenIds","newChildrenIds","node","currentNodesChanged","newChildren","updateNodeWithNewChildren","nodeIds","getReactNodeIdsInFlatArray","removeReactNodesFromFlatArray","Tree","memo","id","onDrop","onSelect","onExpand","onShrink","selectedIds","expandedIds","draggable","multiselect","dragHandlerPosition","enableDragDelay","showDragHandlerOnHoverOnly","showContentWhileDragging","itemStyle","dataTestId","initialState","useMemo","treeState","updateTreeState","useReducer","startTransition","useTransition","offset","setOffset","useState","overId","setOverId","activeId","setActiveId","currentPosition","setCurrentPosition","useEffect","keyDownHandler","event","shouldUpdateTreeState","keyUpHandler","registerOverlay","useCallback","overlay","registerNodeChildren","payload","unregisterNodeChildren","handleSelect","ignoreRemoveSelected","getTreeNodesWithoutElements","handleExpand","handleShrink","handleDragEnd","resetState","over","active","_a","activeNode","contentComponent","_b","handleDragStart","data","handleDragOver","handleDragMove","delta","handleDragCancel","handleKeyDown","handleKeyDownEvent","sensorContext","useRef","coordinateGetter","sortableTreeKeyboardCoordinates","activationConstraint","sensorsActivationConstraint","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","announcements","getAnnouncements","useDeepCompareEffect","recursivelyRemoveFragmentsAndEnrichChildren","ROOT_ID","nodesToRender","getNodesToRender","projection","getProjection","getPropToUse","nodeProp","treeProp","nodes","items","treeItemStyle","getTreeItemProps","nodeProps","cloneElement","contextValue","jsx","TreeContext","jsxs","DndContext","closestCorners","SortableContext","verticalListSortingStrategy","createPortal","DragOverlay","restrictToWindowEdges","TreeItemOverlay"],"mappings":"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"}
1
+ {"version":3,"file":"Tree.es.js","sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n DndContext,\n type DragEndEvent,\n type DragMoveEvent,\n DragOverlay,\n KeyboardSensor,\n type MeasuringConfiguration,\n MeasuringStrategy,\n PointerSensor,\n closestCorners,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { restrictToWindowEdges } from '@dnd-kit/modifiers';\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { enableMapSet, produce } from 'immer';\nimport { isEqual } from 'lodash-es';\nimport {\n type KeyboardEvent,\n cloneElement,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n useTransition,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n type DragHandlerPosition,\n type RegisterNodeChildrenPayload,\n type SensorContext,\n type TreeAnnouncements,\n type TreeDragOverEvent,\n type TreeDragStartEvent,\n type TreeItemProps,\n type TreeItemStyling,\n type TreeProps,\n type TreeState,\n type TreeStateAction,\n} from '@components/Tree/types';\n\nimport {\n ROOT_ID,\n currentNodesChanged,\n findIndexById,\n getAnnouncements,\n getCurrentChildrenForNewNodesIfExpanded,\n getNodeChildrenIds,\n getNodesToRender,\n getProjection,\n getReactNodeIdsInFlatArray,\n getTreeNodesWithoutElements,\n handleKeyDownEvent,\n removeReactNodesFromFlatArray,\n sensorsActivationConstraint,\n shouldUpdateTreeState,\n updateNodeWithNewChildren,\n} from './helpers';\nimport { TreeContext, type TreeContextProps } from './TreeContext';\nimport { type InternalTreeItemProps, TreeItemOverlay } from './TreeItem';\nimport { type InternalTreeItemMultiSelectProps } from './TreeItem/TreeItemMultiselect';\nimport { type Overlay } from './TreeItem/TreeItemOverlay';\nimport {\n recursivelyRemoveFragmentsAndEnrichChildren,\n sortableTreeKeyboardCoordinates,\n useDeepCompareEffect,\n} from './utils';\n\nconst measuring: MeasuringConfiguration = {\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n};\n\nenableMapSet();\n\nconst reducer = produce((draft: TreeState, action: TreeStateAction) => {\n switch (action.type) {\n case 'EXPAND_NODE': {\n draft.expandedIds = new Set(draft.expandedIds).add(action.payload);\n return;\n }\n\n case 'SHRINK_NODE': {\n const newExpanded = new Set(draft.expandedIds);\n newExpanded.delete(action.payload);\n\n draft.expandedIds = newExpanded;\n return;\n }\n\n case 'SET_SELECTION_MODE':\n draft.selectionMode = action.payload.selectionMode;\n return;\n\n case 'SET_PROJECTION': {\n if (!isEqual(draft.projection, action.payload)) {\n draft.projection = action.payload;\n }\n return;\n }\n\n case 'REGISTER_OVERLAY_ITEM': {\n draft.overlay = action.payload;\n return;\n }\n\n case 'REGISTER_ROOT_NODES': {\n // reset rootNodes keeping any children when expanded\n draft.rootNodes = getCurrentChildrenForNewNodesIfExpanded(\n draft.rootNodes,\n draft.expandedIds,\n action.payload,\n );\n return;\n }\n\n case 'REGISTER_NODE_CHILDREN': {\n const { id: parentId, children } = action.payload;\n\n if (findIndexById(draft.rootNodes, parentId) === -1) {\n // This can happen when this action is triggered before the rootNodes array is updated\n // It happens if using static data will all nodes and handling expandedIds outside the Tree component\n // Most of the cases, it will register the children properly afterwards\n // See Scrollable Tree With Label story\n console.warn(`Parent element with ID \"${parentId}\" not found when registering children.`);\n return;\n }\n\n const currentChildrenIds = getNodeChildrenIds(draft.rootNodes, parentId);\n const newChildrenIds = children.map((node) => node.props.id);\n\n if (\n !isEqual(currentChildrenIds, newChildrenIds) ||\n currentNodesChanged(currentChildrenIds, draft.rootNodes, children)\n ) {\n // keep any children when parent expanded\n const newChildren = getCurrentChildrenForNewNodesIfExpanded(\n draft.rootNodes,\n draft.expandedIds,\n children,\n );\n draft.rootNodes = updateNodeWithNewChildren(draft.rootNodes, parentId, newChildren);\n }\n\n return;\n }\n\n case 'UNREGISTER_NODE_CHILDREN': {\n const nodeIds = getReactNodeIdsInFlatArray(draft.rootNodes, action.payload);\n if (nodeIds.length > 0) {\n draft.rootNodes = removeReactNodesFromFlatArray(draft.rootNodes, nodeIds);\n }\n return;\n }\n\n case 'REGISTER_NODES': {\n draft.nodes = action.payload;\n return;\n }\n\n case 'REPLACE_EXPANDED': {\n draft.expandedIds = new Set(action.payload);\n return;\n }\n\n case 'REPLACE_SELECTED': {\n draft.selectedIds = new Set(action.payload);\n return;\n }\n\n case 'REPLACE_STATE': {\n draft.rootNodes = action.payload.rootNodes;\n draft.overlay = action.payload.overlay;\n draft.projection = action.payload.projection;\n draft.selectedIds = action.payload.selectedIds;\n draft.expandedIds = action.payload.expandedIds;\n draft.selectionMode = action.payload.selectionMode;\n return;\n }\n\n default: {\n console.warn(`Updated tree with action \"${action.type}\" but it has not effect.`);\n return;\n }\n }\n});\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const Tree = memo(\n ({\n id,\n onDrop,\n onSelect = () => {},\n onExpand,\n onShrink,\n children,\n selectedIds,\n expandedIds,\n draggable = false,\n multiselect = false,\n dragHandlerPosition = 'left',\n enableDragDelay = true,\n showDragHandlerOnHoverOnly = true,\n showContentWhileDragging = false,\n itemStyle,\n 'data-test-id': dataTestId = 'fondue-tree',\n }: TreeProps) => {\n const initialState: TreeState = useMemo(\n () => ({\n selectionMode: multiselect ? 'multiselect' : 'single',\n selectedIds: new Set(selectedIds ?? []),\n expandedIds: new Set(expandedIds ?? []),\n rootNodes: [],\n expandedNodes: [],\n nodes: [],\n nodesReady: false,\n projection: null,\n }),\n [expandedIds, multiselect, selectedIds],\n );\n\n const [treeState, updateTreeState] = useReducer(reducer, initialState);\n const [, startTransition] = useTransition();\n\n const [offset, setOffset] = useState<Nullable<number>>(null);\n const [overId, setOverId] = useState<Nullable<string>>(null);\n const [activeId, setActiveId] = useState<Nullable<string>>(null);\n const [currentPosition, setCurrentPosition] =\n useState<Nullable<{ overId: string; parentId: Nullable<string> }>>(null);\n\n useEffect(() => {\n const keyDownHandler = (event: globalThis.KeyboardEvent) => {\n if (shouldUpdateTreeState(event, multiselect)) {\n updateTreeState({\n type: 'SET_SELECTION_MODE',\n payload: { selectionMode: 'multiselect' },\n });\n }\n };\n\n const keyUpHandler = (event: globalThis.KeyboardEvent) => {\n if (shouldUpdateTreeState(event, multiselect)) {\n updateTreeState({\n type: 'SET_SELECTION_MODE',\n payload: { selectionMode: 'single' },\n });\n }\n };\n\n if (multiselect) {\n window.addEventListener('keydown', keyDownHandler);\n window.addEventListener('keyup', keyUpHandler);\n }\n\n return () => {\n window.removeEventListener('keydown', keyDownHandler);\n window.removeEventListener('keyup', keyUpHandler);\n };\n }, [multiselect]);\n\n const registerOverlay = useCallback((overlay: Overlay) => {\n updateTreeState({ type: 'REGISTER_OVERLAY_ITEM', payload: overlay });\n }, []);\n\n const registerNodeChildren = useCallback((payload: RegisterNodeChildrenPayload) => {\n updateTreeState({ type: 'REGISTER_NODE_CHILDREN', payload });\n }, []);\n\n const unregisterNodeChildren = useCallback((payload: string) => {\n updateTreeState({ type: 'UNREGISTER_NODE_CHILDREN', payload });\n }, []);\n\n const handleSelect = useCallback(\n (id: string, ignoreRemoveSelected = false) => {\n onSelect(id, ignoreRemoveSelected, getTreeNodesWithoutElements(treeState.nodes));\n },\n [onSelect, treeState.nodes],\n );\n\n const handleExpand = useCallback(\n (id: string) => {\n if (onExpand) {\n return onExpand(id);\n }\n\n updateTreeState({\n type: 'EXPAND_NODE',\n payload: id,\n });\n },\n [onExpand],\n );\n\n const handleShrink = useCallback(\n (id: string) => {\n if (onShrink) {\n return onShrink(id);\n }\n\n updateTreeState({\n type: 'SHRINK_NODE',\n payload: id,\n });\n },\n [onShrink],\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n resetState();\n\n const { over, active } = event;\n\n if (!over?.id || !active?.id || !treeState.projection?.parentId) {\n return;\n }\n\n const activeNode = treeState.nodes.find((node) => node.props.id === active.id);\n const contentComponent = activeNode?.props?.contentComponent;\n\n onDrop?.({\n id: active.id.toString(),\n parentId: treeState.projection.parentId,\n sort: treeState.projection.position,\n contentComponent,\n });\n };\n\n const handleDragStart = ({ active: { id: activeId, data } }: TreeDragStartEvent) => {\n setActiveId(activeId);\n setOverId(activeId);\n\n if (activeId && data.current) {\n setCurrentPosition({\n parentId: data.current.parentId,\n overId: activeId,\n });\n }\n\n document.body.style.setProperty('cursor', 'grabbing');\n };\n\n const handleDragOver = ({ over }: TreeDragOverEvent) => {\n setOverId(over?.id ?? null);\n };\n\n const handleDragMove = ({ delta }: DragMoveEvent) => {\n setOffset(delta.x);\n };\n\n const handleDragCancel = () => {\n resetState();\n };\n\n const resetState = () => {\n setOverId(null);\n setActiveId(null);\n setOffset(0);\n setCurrentPosition(null);\n\n document.body.style.setProperty('cursor', 'default');\n };\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLUListElement>) => {\n return handleKeyDownEvent(\n event,\n treeState.expandedIds,\n treeState.nodes,\n handleSelect,\n handleShrink,\n handleExpand,\n );\n },\n [handleExpand, handleShrink, handleSelect, treeState.expandedIds, treeState.nodes],\n );\n\n const sensorContext: SensorContext = useRef({\n nodes: treeState.nodes,\n offset: offset ?? 0,\n });\n\n // eslint-disable-next-line @eslint-react/refs\n const coordinateGetter = useMemo(() => sortableTreeKeyboardCoordinates(sensorContext), [sensorContext]);\n const activationConstraint = sensorsActivationConstraint({ dragHandlerPosition, enableDragDelay });\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint }),\n useSensor(KeyboardSensor, { coordinateGetter }),\n );\n\n const announcements: TreeAnnouncements = useMemo(() => {\n return getAnnouncements(treeState, currentPosition, setCurrentPosition);\n }, [currentPosition, treeState]);\n\n useDeepCompareEffect(() => {\n if (!children) {\n return;\n }\n\n updateTreeState({\n type: 'REGISTER_ROOT_NODES',\n payload: recursivelyRemoveFragmentsAndEnrichChildren(children, { parentId: ROOT_ID, level: 0 }),\n });\n }, [children]);\n\n useDeepCompareEffect(() => {\n if (treeState.rootNodes.length === 0) {\n return;\n }\n\n startTransition(() => {\n const nodesToRender = getNodesToRender(treeState.rootNodes, treeState.expandedIds);\n\n updateTreeState({\n type: 'REGISTER_NODES',\n payload: nodesToRender,\n });\n });\n }, [treeState.rootNodes, treeState.expandedIds]);\n\n useEffect(() => {\n updateTreeState({\n type: 'REPLACE_EXPANDED',\n payload: expandedIds ?? [],\n });\n }, [expandedIds]);\n\n useEffect(() => {\n updateTreeState({\n type: 'REPLACE_SELECTED',\n payload: selectedIds ?? [],\n });\n }, [selectedIds]);\n\n useDeepCompareEffect(() => {\n sensorContext.current = {\n nodes: treeState.nodes,\n offset: offset ?? 0,\n };\n }, [offset, treeState.nodes]);\n\n useEffect(() => {\n const projection =\n activeId && overId\n ? getProjection({\n nodes: treeState.nodes,\n activeId,\n overId,\n dragOffset: offset ?? 0,\n })\n : null;\n\n updateTreeState({\n type: 'SET_PROJECTION',\n payload: projection,\n });\n }, [activeId, offset, overId, treeState.nodes]);\n\n const getPropToUse = (\n nodeProp: TreeItemProps['dragHandlerPosition' | 'showContentWhileDragging' | 'showDragHandlerOnHoverOnly'],\n treeProp: TreeProps['dragHandlerPosition' | 'showContentWhileDragging' | 'showDragHandlerOnHoverOnly'],\n ) => nodeProp || treeProp;\n\n const { nodes, items } = useMemo(() => {\n const treeItemStyle = {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n } as TreeItemStyling;\n\n const getTreeItemProps = (nodeProps: InternalTreeItemProps | InternalTreeItemMultiSelectProps) => {\n return multiselect\n ? {\n checkBoxPosition: getPropToUse(\n (nodeProps as InternalTreeItemMultiSelectProps).checkBoxPosition,\n dragHandlerPosition,\n ) as DragHandlerPosition,\n }\n : {\n draggable: (nodeProps as InternalTreeItemProps).draggable ? true : draggable,\n dragHandlerPosition: getPropToUse(\n (nodeProps as InternalTreeItemProps).dragHandlerPosition,\n dragHandlerPosition,\n ) as TreeProps['dragHandlerPosition'],\n showDragHandlerOnHoverOnly: getPropToUse(\n (nodeProps as InternalTreeItemProps).showDragHandlerOnHoverOnly,\n showDragHandlerOnHoverOnly,\n ) as TreeProps['showDragHandlerOnHoverOnly'],\n showContentWhileDragging: getPropToUse(\n (nodeProps as InternalTreeItemProps).showContentWhileDragging,\n showContentWhileDragging,\n ) as TreeProps['showContentWhileDragging'],\n };\n };\n\n return {\n items: treeState.nodes.map((node) => node.props.id),\n nodes: treeState.nodes.map((node) =>\n cloneElement(node, {\n ...getTreeItemProps(node.props),\n itemStyle: { ...treeItemStyle, ...node.props.itemStyle },\n registerOverlay,\n onExpand: handleExpand,\n onShrink: handleShrink,\n onSelect: handleSelect,\n registerNodeChildren,\n unregisterNodeChildren,\n }),\n ),\n };\n }, [\n itemStyle,\n treeState.nodes,\n draggable,\n multiselect,\n dragHandlerPosition,\n showDragHandlerOnHoverOnly,\n showContentWhileDragging,\n registerOverlay,\n handleExpand,\n handleShrink,\n handleSelect,\n registerNodeChildren,\n unregisterNodeChildren,\n ]);\n\n const contextValue: TreeContextProps = useMemo(\n () => ({\n treeState,\n onSelect: handleSelect,\n onExpand: handleExpand,\n onShrink: handleShrink,\n }),\n [treeState, handleSelect, handleExpand, handleShrink],\n );\n\n return (\n <TreeContext.Provider value={contextValue}>\n <ul\n id={id}\n role=\"tree\"\n data-test-id={dataTestId}\n onKeyDown={handleKeyDown}\n aria-multiselectable={treeState.selectionMode === 'multiselect'}\n className=\"tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left tw-text-sm tw-select-none\"\n >\n <DndContext\n sensors={sensors}\n measuring={measuring}\n onDragEnd={handleDragEnd}\n onDragOver={handleDragOver}\n onDragMove={handleDragMove}\n onDragStart={handleDragStart}\n onDragCancel={handleDragCancel}\n accessibility={{\n announcements,\n container: document.getElementById(id)?.parentElement ?? document.body,\n }}\n collisionDetection={closestCorners}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {nodes}\n </SortableContext>\n\n {createPortal(\n <DragOverlay\n zIndex={1500}\n wrapperElement=\"ul\"\n dropAnimation={null}\n modifiers={[restrictToWindowEdges]}\n >\n {treeState.overlay && (\n <TreeItemOverlay\n {...treeState.overlay}\n isSelected={treeState.selectedIds.has(treeState.overlay.id)}\n />\n )}\n </DragOverlay>,\n document.body,\n )}\n </DndContext>\n </ul>\n </TreeContext.Provider>\n );\n },\n);\n\nTree.displayName = 'FondueTree';\n"],"names":["measuring","MeasuringStrategy","enableMapSet","reducer","produce","draft","action","newExpanded","isEqual","getCurrentChildrenForNewNodesIfExpanded","parentId","children","findIndexById","currentChildrenIds","getNodeChildrenIds","newChildrenIds","node","currentNodesChanged","newChildren","updateNodeWithNewChildren","nodeIds","getReactNodeIdsInFlatArray","removeReactNodesFromFlatArray","Tree","memo","id","onDrop","onSelect","onExpand","onShrink","selectedIds","expandedIds","draggable","multiselect","dragHandlerPosition","enableDragDelay","showDragHandlerOnHoverOnly","showContentWhileDragging","itemStyle","dataTestId","initialState","useMemo","treeState","updateTreeState","useReducer","startTransition","useTransition","offset","setOffset","useState","overId","setOverId","activeId","setActiveId","currentPosition","setCurrentPosition","useEffect","keyDownHandler","event","shouldUpdateTreeState","keyUpHandler","registerOverlay","useCallback","overlay","registerNodeChildren","payload","unregisterNodeChildren","handleSelect","ignoreRemoveSelected","getTreeNodesWithoutElements","handleExpand","handleShrink","handleDragEnd","resetState","over","active","_a","activeNode","contentComponent","_b","handleDragStart","data","handleDragOver","handleDragMove","delta","handleDragCancel","handleKeyDown","handleKeyDownEvent","sensorContext","useRef","coordinateGetter","sortableTreeKeyboardCoordinates","activationConstraint","sensorsActivationConstraint","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","announcements","getAnnouncements","useDeepCompareEffect","recursivelyRemoveFragmentsAndEnrichChildren","ROOT_ID","nodesToRender","getNodesToRender","projection","getProjection","getPropToUse","nodeProp","treeProp","nodes","items","treeItemStyle","getTreeItemProps","nodeProps","cloneElement","contextValue","jsx","TreeContext","jsxs","DndContext","closestCorners","SortableContext","verticalListSortingStrategy","createPortal","DragOverlay","restrictToWindowEdges","TreeItemOverlay"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeContext.es.js","sources":["../../../src/components/Tree/TreeContext.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { createContext } from 'react';\n\nimport { type OnExpandCallback, type OnSelectInternalCallback, type OnShrinkCallback, type TreeState } from './types';\n\nexport type TreeContextProps = {\n treeState: TreeState;\n onSelect: OnSelectInternalCallback;\n onExpand: OnExpandCallback;\n onShrink: OnShrinkCallback;\n};\n\nexport const TreeContext = createContext<TreeContextProps>({} as TreeContextProps);\nTreeContext.displayName = 'TreeContext';\n"],"names":["TreeContext","createContext"],"mappings":";AAaO,MAAMA,IAAcC,EAAgC,CAAA,CAAsB;AACjFD,EAAY,cAAc;"}
1
+ {"version":3,"file":"TreeContext.es.js","sources":["../../../src/components/Tree/TreeContext.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { createContext } from 'react';\n\nimport { type OnExpandCallback, type OnSelectInternalCallback, type OnShrinkCallback, type TreeState } from './types';\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport type TreeContextProps = {\n treeState: TreeState;\n onSelect: OnSelectInternalCallback;\n onExpand: OnExpandCallback;\n onShrink: OnShrinkCallback;\n};\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const TreeContext = createContext<TreeContextProps>({} as TreeContextProps);\nTreeContext.displayName = 'TreeContext';\n"],"names":["TreeContext","createContext"],"mappings":";AAmBO,MAAMA,IAAcC,EAAgC,CAAA,CAAsB;AACjFD,EAAY,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DragHandle.es.js","sources":["../../../../src/components/Tree/TreeItem/DragHandle.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconGrabHandle } from '@frontify/fondue-icons';\nimport { type ButtonHTMLAttributes, type DetailedHTMLProps, forwardRef } from 'react';\n\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { type TreeItemColors, TreeItemColorsClassMap } from '../types';\n\nexport type DragHandleProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {\n active?: boolean;\n showDragHandlerOnHoverOnly?: boolean;\n activeColorStyle?: TreeItemColors;\n};\n\nexport const DragHandle = forwardRef<HTMLButtonElement, DragHandleProps>(\n ({ active, showDragHandlerOnHoverOnly, activeColorStyle, ...props }, ref) => {\n const { selectedDragHanlderTextColor, dragHanlderTextColor } =\n TreeItemColorsClassMap[activeColorStyle ?? 'neutral'];\n\n return (\n <button\n type=\"button\"\n aria-label=\"Draggable item\"\n {...props}\n ref={ref}\n className={merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-p-1 first:tw-ml-2 tw-rounded-sm hover:tw-cursor-grab group-hover:tw-opacity-100 group-focus-within:tw-opacity-100',\n props.disabled ? 'tw-invisible tw-pointer-events-none' : 'tw-visible',\n showDragHandlerOnHoverOnly ? !active && 'tw-opacity-0' : 'tw-opacity-100',\n active ? selectedDragHanlderTextColor : dragHanlderTextColor,\n ])}\n data-test-id=\"fondue-tree-item-drag-handle\"\n >\n <IconGrabHandle size={12} />\n </button>\n );\n },\n);\n\nDragHandle.displayName = 'FondueDragHandle';\n"],"names":["DragHandle","forwardRef","active","showDragHandlerOnHoverOnly","activeColorStyle","props","ref","selectedDragHanlderTextColor","dragHanlderTextColor","TreeItemColorsClassMap","jsx","merge","FOCUS_VISIBLE_STYLE","IconGrabHandle"],"mappings":";;;;;;AAgBO,MAAMA,IAAaC;AAAA,EACtB,CAAC,EAAE,QAAAC,GAAQ,4BAAAC,GAA4B,kBAAAC,GAAkB,GAAGC,EAAA,GAASC,MAAQ;AACzE,UAAM,EAAE,8BAAAC,GAA8B,sBAAAC,EAAA,IAClCC,EAAuBL,KAAoB,SAAS;AAExD,WACI,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAK;AAAA,QACL,cAAW;AAAA,QACV,GAAGL;AAAA,QACJ,KAAAC;AAAA,QACA,WAAWK,EAAM;AAAA,UACbC;AAAA,UACA;AAAA,UACAP,EAAM,WAAW,wCAAwC;AAAA,UACzDF,IAA6B,CAACD,KAAU,iBAAiB;AAAA,UACzDA,IAASK,IAA+BC;AAAA,QAAA,CAC3C;AAAA,QACD,gBAAa;AAAA,QAEb,UAAA,gBAAAE,EAACG,GAAA,EAAe,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAGtC;AACJ;AAEAb,EAAW,cAAc;"}
1
+ {"version":3,"file":"DragHandle.es.js","sources":["../../../../src/components/Tree/TreeItem/DragHandle.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconGrabHandle } from '@frontify/fondue-icons';\nimport { type ButtonHTMLAttributes, type DetailedHTMLProps, forwardRef } from 'react';\n\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { type TreeItemColors, TreeItemColorsClassMap } from '../types';\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport type DragHandleProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {\n active?: boolean;\n showDragHandlerOnHoverOnly?: boolean;\n activeColorStyle?: TreeItemColors;\n};\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const DragHandle = forwardRef<HTMLButtonElement, DragHandleProps>(\n ({ active, showDragHandlerOnHoverOnly, activeColorStyle, ...props }, ref) => {\n const { selectedDragHanlderTextColor, dragHanlderTextColor } =\n TreeItemColorsClassMap[activeColorStyle ?? 'neutral'];\n\n return (\n <button\n type=\"button\"\n aria-label=\"Draggable item\"\n {...props}\n ref={ref}\n className={merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-p-1 first:tw-ml-2 tw-rounded-sm hover:tw-cursor-grab group-hover:tw-opacity-100 group-focus-within:tw-opacity-100',\n props.disabled ? 'tw-invisible tw-pointer-events-none' : 'tw-visible',\n showDragHandlerOnHoverOnly ? !active && 'tw-opacity-0' : 'tw-opacity-100',\n active ? selectedDragHanlderTextColor : dragHanlderTextColor,\n ])}\n data-test-id=\"fondue-tree-item-drag-handle\"\n >\n <IconGrabHandle size={12} />\n </button>\n );\n },\n);\n\nDragHandle.displayName = 'FondueDragHandle';\n"],"names":["DragHandle","forwardRef","active","showDragHandlerOnHoverOnly","activeColorStyle","props","ref","selectedDragHanlderTextColor","dragHanlderTextColor","TreeItemColorsClassMap","jsx","merge","FOCUS_VISIBLE_STYLE","IconGrabHandle"],"mappings":";;;;;;AAsBO,MAAMA,IAAaC;AAAA,EACtB,CAAC,EAAE,QAAAC,GAAQ,4BAAAC,GAA4B,kBAAAC,GAAkB,GAAGC,EAAA,GAASC,MAAQ;AACzE,UAAM,EAAE,8BAAAC,GAA8B,sBAAAC,EAAA,IAClCC,EAAuBL,KAAoB,SAAS;AAExD,WACI,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAK;AAAA,QACL,cAAW;AAAA,QACV,GAAGL;AAAA,QACJ,KAAAC;AAAA,QACA,WAAWK,EAAM;AAAA,UACbC;AAAA,UACA;AAAA,UACAP,EAAM,WAAW,wCAAwC;AAAA,UACzDF,IAA6B,CAACD,KAAU,iBAAiB;AAAA,UACzDA,IAASK,IAA+BC;AAAA,QAAA,CAC3C;AAAA,QACD,gBAAa;AAAA,QAEb,UAAA,gBAAAE,EAACG,GAAA,EAAe,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAGtC;AACJ;AAEAb,EAAW,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandButton.es.js","sources":["../../../../src/components/Tree/TreeItem/ExpandButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type ButtonHTMLAttributes, type DetailedHTMLProps } from 'react';\n\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nexport type ExpandButtonProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {\n expanded?: boolean;\n active?: boolean;\n};\n\nexport const ExpandButton = ({ active, onClick, expanded, disabled, className, ...otherProps }: ExpandButtonProps) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label=\"expand item\"\n tabIndex={disabled ? -1 : 0}\n data-test-id=\"tree-item-toggle\"\n className={merge([\n 'tw-p-1.5 first:tw-ml-2 tw-min-h-[20px] tw-min-w-[20px] tw-h-5 tw-w-5 tw-flex tw-justify-center tw-rounded-sm disabled:tw-invisible',\n active ? 'tw-text-white tw-text-opacity-50' : 'tw-text-line-strong',\n FOCUS_VISIBLE_STYLE,\n className,\n ])}\n {...otherProps}\n >\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-line-mid',\n expanded && 'tw-rotate-90',\n ])}\n />\n </button>\n );\n};\n\nExpandButton.displayName = 'FondueExpandButton';\n"],"names":["ExpandButton","active","onClick","expanded","disabled","className","otherProps","jsx","merge","FOCUS_VISIBLE_STYLE"],"mappings":";;;AAYO,MAAMA,IAAe,CAAC,EAAE,QAAAC,GAAQ,SAAAC,GAAS,UAAAC,GAAU,UAAAC,GAAU,WAAAC,GAAW,GAAGC,QAE1E,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,MAAK;AAAA,IACL,SAAAL;AAAA,IACA,UAAAE;AAAA,IACA,cAAW;AAAA,IACX,UAAUA,IAAW,KAAK;AAAA,IAC1B,gBAAa;AAAA,IACb,WAAWI,EAAM;AAAA,MACb;AAAA,MACAP,IAAS,qCAAqC;AAAA,MAC9CQ;AAAA,MACAJ;AAAA,IAAA,CACH;AAAA,IACA,GAAGC;AAAA,IAEJ,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAWC,EAAM;AAAA,UACb;AAAA,UACAL,KAAY;AAAA,QAAA,CACf;AAAA,MAAA;AAAA,IAAA;AAAA,EACL;AAAA;AAKZH,EAAa,cAAc;"}
1
+ {"version":3,"file":"ExpandButton.es.js","sources":["../../../../src/components/Tree/TreeItem/ExpandButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type ButtonHTMLAttributes, type DetailedHTMLProps } from 'react';\n\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport type ExpandButtonProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & {\n expanded?: boolean;\n active?: boolean;\n};\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const ExpandButton = ({ active, onClick, expanded, disabled, className, ...otherProps }: ExpandButtonProps) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label=\"expand item\"\n tabIndex={disabled ? -1 : 0}\n data-test-id=\"tree-item-toggle\"\n className={merge([\n 'tw-p-1.5 first:tw-ml-2 tw-min-h-[20px] tw-min-w-[20px] tw-h-5 tw-w-5 tw-flex tw-justify-center tw-rounded-sm disabled:tw-invisible',\n active ? 'tw-text-white tw-text-opacity-50' : 'tw-text-line-strong',\n FOCUS_VISIBLE_STYLE,\n className,\n ])}\n {...otherProps}\n >\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-line-mid',\n expanded && 'tw-rotate-90',\n ])}\n />\n </button>\n );\n};\n\nExpandButton.displayName = 'FondueExpandButton';\n"],"names":["ExpandButton","active","onClick","expanded","disabled","className","otherProps","jsx","merge","FOCUS_VISIBLE_STYLE"],"mappings":";;;AAkBO,MAAMA,IAAe,CAAC,EAAE,QAAAC,GAAQ,SAAAC,GAAS,UAAAC,GAAU,UAAAC,GAAU,WAAAC,GAAW,GAAGC,QAE1E,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,MAAK;AAAA,IACL,SAAAL;AAAA,IACA,UAAAE;AAAA,IACA,cAAW;AAAA,IACX,UAAUA,IAAW,KAAK;AAAA,IAC1B,gBAAa;AAAA,IACb,WAAWI,EAAM;AAAA,MACb;AAAA,MACAP,IAAS,qCAAqC;AAAA,MAC9CQ;AAAA,MACAJ;AAAA,IAAA,CACH;AAAA,IACA,GAAGC;AAAA,IAEJ,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAWC,EAAM;AAAA,UACb;AAAA,UACAL,KAAY;AAAA,QAAA,CACf;AAAA,MAAA;AAAA,IAAA;AAAA,EACL;AAAA;AAKZH,EAAa,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useDndContext, useDndMonitor } from '@dnd-kit/core';\nimport { type AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef, forwardRef } from 'react';\n\nimport {\n type RegisterNodeChildrenPayload,\n type TreeDragEndEvent,\n type TreeDragMoveEvent,\n type TreeDragStartEvent,\n TreeItemBorderClassMap,\n TreeItemBorderRadiusClassMap,\n TreeItemBorderStyleClassMap,\n TreeItemColorsClassMap,\n type TreeItemProps,\n TreeItemShadowClassMap,\n TreeItemSpacingClassMap,\n type TreeItemStyling,\n} from '@components/Tree/types';\nimport { useDebounce } from '@hooks/useDebounce';\nimport { FOCUS_VISIBLE_STYLE, PARENT_FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { EXPAND_ONHOVER_DELAY, INDENTATION_WIDTH } from '../helpers';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { DragHandle } from './DragHandle';\nimport { ExpandButton } from './ExpandButton';\nimport { type Overlay } from './TreeItemOverlay';\nimport { useTreeItem } from './useTreeItem';\n\nconst animateLayoutChanges: AnimateLayoutChanges = ({ isSorting, wasDragging }) =>\n isSorting || wasDragging ? false : true;\n\n/** @private */\ntype TreeItemPrivateProps = {\n level?: number;\n levelConstraint?: Nullable<number>;\n parentId?: string;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string) => void;\n /** onClick is the user defined callback to run after the onSelect */\n onClick?: (id: string) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n registerOverlay?: (overlay: Overlay) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/** @private */\nexport type InternalTreeItemProps = TreeItemProps & TreeItemPrivateProps;\n\nexport const TreeItem = memo(\n forwardRef(\n (\n {\n id,\n type,\n label,\n onDrop,\n accepts,\n showCaret,\n children,\n parentId,\n level = 0,\n contentComponent,\n onClick,\n onSelect,\n onExpand,\n onShrink,\n registerOverlay,\n registerNodeChildren,\n unregisterNodeChildren,\n draggable = true,\n expandable = true,\n showDragHandlerOnHoverOnly = true,\n dragHandlerPosition = 'left',\n showContentWhileDragging = true,\n itemStyle,\n ignoreItemDoubleClick = false,\n expandOnSelect = false,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemProps,\n treeItemRef,\n ) => {\n const { active, over } = useDndContext();\n const { isSelected, isExpanded, projection } = useTreeItem(id);\n const expandDebounced = useRef<Nullable<string> | undefined>();\n\n const isActive = active?.id === id;\n const activeProjection = isActive && projection !== null && projection !== undefined ? projection : null;\n\n const overAccepts =\n typeof over?.data?.current?.accepts === 'string' ? over.data.current.accepts?.split(', ') : [];\n\n const parentAccepts =\n typeof activeProjection?.accepts === 'string' ? activeProjection.accepts?.split(', ') : [];\n\n const currentType = active?.data.current?.type || '';\n\n const isWithin =\n projection?.previousNode?.depth !== undefined && projection?.depth > projection?.previousNode?.depth;\n const isWithinOneLevel = isWithin && projection && projection.depth - 1 === projection?.previousNode?.depth;\n\n const canDropWithinAndDeeper =\n isWithin &&\n projection?.previousNode?.accepts !== undefined &&\n (projection?.previousNode?.accepts.includes(`${currentType}-deeper`) ||\n projection?.previousNode?.accepts.includes(`${currentType}-within`));\n\n const canDropWithin =\n (isActive &&\n isWithinOneLevel &&\n activeProjection?.previousNode?.accepts !== undefined &&\n activeProjection?.previousNode?.accepts.includes(`${currentType}-within`)) ||\n (activeProjection?.isWithinParent && parentAccepts.includes(`${currentType}-within`));\n\n const canDrop =\n isActive && active?.data.current && ((overAccepts.includes(currentType) && !isWithin) || canDropWithin);\n\n const expandProjectionParent = useDebounce((toExpandId: string) => {\n if (expandDebounced.current === toExpandId) {\n onExpand?.(toExpandId);\n }\n }, EXPAND_ONHOVER_DELAY);\n\n useEffect(() => {\n if (isActive) {\n expandDebounced.current = isWithin ? activeProjection?.previousNode?.id : null;\n }\n\n if (\n isActive &&\n canDropWithinAndDeeper &&\n activeProjection?.parentId &&\n activeProjection.previousNode &&\n activeProjection.parentId === activeProjection.previousNode.id &&\n activeProjection.parentId !== active?.data?.current?.parentId\n ) {\n expandProjectionParent(activeProjection?.parentId);\n }\n }, [\n active?.data,\n activeProjection?.parentId,\n activeProjection?.previousNode,\n expandProjectionParent,\n isActive,\n canDropWithinAndDeeper,\n isWithin,\n ]);\n\n const handleItemDragEnd = useCallback(\n (event: TreeDragEndEvent) => {\n const { over, active } = event;\n\n if (\n !isActive ||\n !activeProjection ||\n (active.id === over?.id && activeProjection?.depth === active.data.current?.level)\n ) {\n return;\n }\n\n if (isActive && over && canDrop && onDrop) {\n onDrop({\n id: active.id,\n parentId: activeProjection.parentId,\n sort: activeProjection.position,\n contentComponent,\n parentType: activeProjection.type,\n });\n }\n },\n [isActive, activeProjection, canDrop, onDrop, contentComponent],\n );\n\n const handleItemDragStart = useCallback(\n (event: TreeDragStartEvent) => {\n if (event.active.id !== id) {\n return;\n }\n\n registerOverlay?.({\n contentComponent,\n children,\n id,\n label,\n level,\n dragHandlerPosition,\n showContentWhileDragging,\n });\n },\n [\n children,\n contentComponent,\n dragHandlerPosition,\n id,\n label,\n level,\n registerOverlay,\n showContentWhileDragging,\n ],\n );\n\n const handleItemDragMove = useCallback(\n (event: TreeDragMoveEvent) => {\n if (event.active.id === id) {\n document.body.style.setProperty('cursor', canDrop ? 'grabbing' : 'no-drop');\n }\n },\n [canDrop, id],\n );\n\n useDndMonitor({\n onDragEnd: handleItemDragEnd,\n onDragStart: handleItemDragStart,\n onDragMove: handleItemDragMove,\n });\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n const handleItemClick = useDebounce(\n (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n if (ignoreItemDoubleClick && event.detail >= 2) {\n return;\n }\n\n if (expandOnSelect) {\n toggleExpand();\n }\n\n onSelect?.(id);\n onClick?.(id);\n },\n ignoreItemDoubleClick ? 300 : 0,\n );\n\n const isParentActive = parentId ? active?.id === parentId : false;\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, { parentId: id, level: level + 1 });\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n const {\n attributes,\n listeners,\n transform,\n transition,\n setDraggableNodeRef,\n setDroppableNodeRef,\n setActivatorNodeRef,\n } = useSortable({\n id,\n disabled: !draggable,\n data: { type, accepts, parentId, level },\n animateLayoutChanges,\n transition: null,\n });\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isActive || isParentActive) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isExpanded) {\n registerNodeChildren?.({ id, children: enrichedChildren });\n } else {\n unregisterNodeChildren?.(id);\n }\n }, [isActive, isExpanded, isParentActive, enrichedChildren, id]);\n\n const itemStyleProps = useMemo<Required<TreeItemStyling>>(() => {\n return {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n };\n }, [itemStyle]);\n\n const styling = TreeItemColorsClassMap[itemStyleProps.activeColorStyle ?? 'neutral'];\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-box-content tw-relative tw-cursor-default tw-transition-colors tw-outline-none tw-ring-inset tw-group tw-no-underline tw-leading-5',\n !isActive && isSelected ? styling.selectedTextColor : styling.textColor,\n TreeItemSpacingClassMap[itemStyleProps.spacingY ?? 'none'],\n ]),\n backgroundClassName: merge([\n 'tw-block tw-absolute tw-inset-0 tw-transition-colors -tw-z-10',\n itemStyleProps.borderWidth !== 'none'\n ? TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small']\n : '',\n !isActive &&\n (!isSelected || itemStyleProps.activeColorStyle !== 'neutral') &&\n styling.pressedBackgroundColor,\n !isActive && isSelected ? styling.selectedBackgroundColor : styling.backgroundColor,\n isSelected && PARENT_FOCUS_VISIBLE_STYLE,\n ]),\n };\n }, [isActive, isSelected, itemStyleProps, styling]);\n\n const showContent = showContentWhileDragging ? true : !isActive;\n const wrapperContentClassName = merge([\n 'tw-max-w-full tw-grow tw-overflow-hidden',\n isActive && showContentWhileDragging ? 'tw-opacity-75 tw-blur-sm tw-grayscale' : '',\n ]);\n const showChildren = isExpanded && !isActive;\n const showDragHandle = draggable && !isActive;\n const showLabel = label !== undefined && !isActive;\n const showExpandButton = !isActive && expandable && (showCaret === undefined ? hasChildren : showCaret);\n\n let previousItemToBeExpandedFeedback = '';\n if (\n !isActive &&\n !isExpanded &&\n showExpandButton &&\n canDropWithinAndDeeper &&\n projection?.previousNode?.id === id &&\n projection?.depth > projection?.previousNode?.depth\n ) {\n previousItemToBeExpandedFeedback = merge([\n 'tw-border-solid tw-border-box-selected-strong',\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderClassMap.small,\n ]);\n }\n\n const containerBorder =\n itemStyleProps.borderWidth !== 'none' && previousItemToBeExpandedFeedback === ''\n ? merge([\n TreeItemBorderClassMap[itemStyleProps.borderWidth ?? 'none'],\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderStyleClassMap[itemStyleProps.borderStyle ?? 'none'],\n ])\n : '';\n const containerHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-10' : 'tw-h-fit';\n const containerActiveHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-12' : 'tw-h-fit';\n\n const containerClassName = merge([\n 'tw-relative tw-z-0 tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-fit tw-justify-between tw-group',\n TreeItemShadowClassMap[itemStyleProps.shadow ?? 'none'],\n isActive ? 'tw-border-dashed tw-border-2 tw-pr-0' : containerBorder,\n isActive && TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n isActive ? containerActiveHeight : containerHeight,\n isActive &&\n (canDrop\n ? 'tw-border-box-selected-strong tw-bg-box-selected-hover'\n : 'tw-bg-box-negative-hover tw-border-box-negative-strong-hover'),\n previousItemToBeExpandedFeedback,\n ]);\n\n const depthPadding = activeProjection?.depth ? activeProjection.depth * INDENTATION_WIDTH : undefined;\n const levelPadding = isActive ? 0 : level * INDENTATION_WIDTH;\n\n const liStyle = { paddingLeft: depthPadding ?? levelPadding };\n const backgroundStyle =\n itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * (depthPadding ?? levelPadding) };\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const handlerProps = { ...listeners, ...attributes };\n const dragHandlerProps = dragHandlerPosition !== 'none' ? handlerProps : {};\n const dragHandler =\n dragHandlerPosition !== 'none' ? (\n <DragHandle\n {...dragHandlerProps}\n active={isSelected}\n ref={setActivatorNodeRef}\n disabled={!showDragHandle}\n aria-hidden={!showDragHandle}\n showDragHandlerOnHoverOnly={showDragHandlerOnHoverOnly}\n activeColorStyle={itemStyleProps.activeColorStyle ?? 'neutral'}\n />\n ) : null;\n\n const itemHandlerProps = dragHandlerPosition === 'none' ? { ...handlerProps } : {};\n\n return (\n <li\n key={id}\n {...itemHandlerProps}\n id={id}\n tabIndex={0}\n role=\"treeitem\"\n style={liStyle}\n onKeyDown={noop}\n aria-label={label}\n aria-level={level + 1}\n onClick={handleItemClick}\n className={liClassName}\n ref={(node) => {\n setDroppableNodeRef(node);\n if (typeof treeItemRef === 'function') {\n treeItemRef(node);\n } else if (treeItemRef?.current) {\n treeItemRef.current = node;\n }\n }}\n data-test-id={dataTestId}\n aria-selected={isSelected}\n aria-expanded={isExpanded}\n data-has-children={hasChildren}\n aria-owns={childrenIds.join(' ')}\n >\n <div ref={setDraggableNodeRef} className={containerClassName} style={style}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden />\n {dragHandlerPosition === 'left' && dragHandler}\n {expandable && (\n <ExpandButton\n active={transform?.y ? false : isSelected}\n onClick={toggleExpand}\n expanded={showChildren}\n disabled={!showExpandButton}\n aria-hidden={!showExpandButton}\n className={showExpandButton ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n )}\n {showLabel && (\n <span className=\"first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center\">{label}</span>\n )}\n {showContent && <div className={wrapperContentClassName}>{contentComponent}</div>}\n {dragHandlerPosition === 'right' && dragHandler}\n </div>\n </li>\n );\n },\n ),\n);\n\nTreeItem.displayName = 'FondueTreeItem';\n"],"names":["animateLayoutChanges","isSorting","wasDragging","TreeItem","memo","forwardRef","id","type","label","onDrop","accepts","showCaret","children","parentId","level","contentComponent","onClick","onSelect","onExpand","onShrink","registerOverlay","registerNodeChildren","unregisterNodeChildren","draggable","expandable","showDragHandlerOnHoverOnly","dragHandlerPosition","showContentWhileDragging","itemStyle","ignoreItemDoubleClick","expandOnSelect","dataTestId","treeItemRef","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","expandDebounced","useRef","isActive","activeProjection","overAccepts","_b","_a","_c","parentAccepts","_d","currentType","_e","isWithin","_f","_g","isWithinOneLevel","_h","canDropWithinAndDeeper","_i","_j","_k","canDropWithin","_l","_m","canDrop","expandProjectionParent","useDebounce","toExpandId","EXPAND_ONHOVER_DELAY","useEffect","handleItemDragEnd","useCallback","event","handleItemDragStart","handleItemDragMove","useDndMonitor","toggleExpand","handleItemClick","isParentActive","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","attributes","listeners","transform","transition","setDraggableNodeRef","setDroppableNodeRef","setActivatorNodeRef","useSortable","useDeepCompareEffect","itemStyleProps","styling","TreeItemColorsClassMap","liClassName","backgroundClassName","merge","FOCUS_VISIBLE_STYLE","TreeItemSpacingClassMap","TreeItemBorderRadiusClassMap","PARENT_FOCUS_VISIBLE_STYLE","showContent","wrapperContentClassName","showChildren","showDragHandle","showLabel","showExpandButton","previousItemToBeExpandedFeedback","_n","_o","TreeItemBorderClassMap","containerBorder","TreeItemBorderStyleClassMap","containerHeight","containerActiveHeight","containerClassName","TreeItemShadowClassMap","depthPadding","INDENTATION_WIDTH","levelPadding","liStyle","backgroundStyle","style","CSS","handlerProps","dragHandler","jsx","DragHandle","itemHandlerProps","noop","node","ExpandButton"],"mappings":"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"}
1
+ {"version":3,"file":"TreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useDndContext, useDndMonitor } from '@dnd-kit/core';\nimport { type AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef, forwardRef } from 'react';\n\nimport {\n type RegisterNodeChildrenPayload,\n type TreeDragEndEvent,\n type TreeDragMoveEvent,\n type TreeDragStartEvent,\n TreeItemBorderClassMap,\n TreeItemBorderRadiusClassMap,\n TreeItemBorderStyleClassMap,\n TreeItemColorsClassMap,\n type TreeItemProps,\n TreeItemShadowClassMap,\n TreeItemSpacingClassMap,\n type TreeItemStyling,\n} from '@components/Tree/types';\nimport { useDebounce } from '@hooks/useDebounce';\nimport { FOCUS_VISIBLE_STYLE, PARENT_FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { EXPAND_ONHOVER_DELAY, INDENTATION_WIDTH } from '../helpers';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { DragHandle } from './DragHandle';\nimport { ExpandButton } from './ExpandButton';\nimport { type Overlay } from './TreeItemOverlay';\nimport { useTreeItem } from './useTreeItem';\n\nconst animateLayoutChanges: AnimateLayoutChanges = ({ isSorting, wasDragging }) =>\n isSorting || wasDragging ? false : true;\n\n/** @private */\ntype TreeItemPrivateProps = {\n level?: number;\n levelConstraint?: Nullable<number>;\n parentId?: string;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string) => void;\n /** onClick is the user defined callback to run after the onSelect */\n onClick?: (id: string) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n registerOverlay?: (overlay: Overlay) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/**\n * @private\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport type InternalTreeItemProps = TreeItemProps & TreeItemPrivateProps;\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const TreeItem = memo(\n forwardRef(\n (\n {\n id,\n type,\n label,\n onDrop,\n accepts,\n showCaret,\n children,\n parentId,\n level = 0,\n contentComponent,\n onClick,\n onSelect,\n onExpand,\n onShrink,\n registerOverlay,\n registerNodeChildren,\n unregisterNodeChildren,\n draggable = true,\n expandable = true,\n showDragHandlerOnHoverOnly = true,\n dragHandlerPosition = 'left',\n showContentWhileDragging = true,\n itemStyle,\n ignoreItemDoubleClick = false,\n expandOnSelect = false,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemProps,\n treeItemRef,\n ) => {\n const { active, over } = useDndContext();\n const { isSelected, isExpanded, projection } = useTreeItem(id);\n const expandDebounced = useRef<Nullable<string> | undefined>();\n\n const isActive = active?.id === id;\n const activeProjection = isActive && projection !== null && projection !== undefined ? projection : null;\n\n const overAccepts =\n typeof over?.data?.current?.accepts === 'string' ? over.data.current.accepts?.split(', ') : [];\n\n const parentAccepts =\n typeof activeProjection?.accepts === 'string' ? activeProjection.accepts?.split(', ') : [];\n\n const currentType = active?.data.current?.type || '';\n\n const isWithin =\n projection?.previousNode?.depth !== undefined && projection?.depth > projection?.previousNode?.depth;\n const isWithinOneLevel = isWithin && projection && projection.depth - 1 === projection?.previousNode?.depth;\n\n const canDropWithinAndDeeper =\n isWithin &&\n projection?.previousNode?.accepts !== undefined &&\n (projection?.previousNode?.accepts.includes(`${currentType}-deeper`) ||\n projection?.previousNode?.accepts.includes(`${currentType}-within`));\n\n const canDropWithin =\n (isActive &&\n isWithinOneLevel &&\n activeProjection?.previousNode?.accepts !== undefined &&\n activeProjection?.previousNode?.accepts.includes(`${currentType}-within`)) ||\n (activeProjection?.isWithinParent && parentAccepts.includes(`${currentType}-within`));\n\n const canDrop =\n isActive && active?.data.current && ((overAccepts.includes(currentType) && !isWithin) || canDropWithin);\n\n const expandProjectionParent = useDebounce((toExpandId: string) => {\n if (expandDebounced.current === toExpandId) {\n onExpand?.(toExpandId);\n }\n }, EXPAND_ONHOVER_DELAY);\n\n useEffect(() => {\n if (isActive) {\n expandDebounced.current = isWithin ? activeProjection?.previousNode?.id : null;\n }\n\n if (\n isActive &&\n canDropWithinAndDeeper &&\n activeProjection?.parentId &&\n activeProjection.previousNode &&\n activeProjection.parentId === activeProjection.previousNode.id &&\n activeProjection.parentId !== active?.data?.current?.parentId\n ) {\n expandProjectionParent(activeProjection?.parentId);\n }\n }, [\n active?.data,\n activeProjection?.parentId,\n activeProjection?.previousNode,\n expandProjectionParent,\n isActive,\n canDropWithinAndDeeper,\n isWithin,\n ]);\n\n const handleItemDragEnd = useCallback(\n (event: TreeDragEndEvent) => {\n const { over, active } = event;\n\n if (\n !isActive ||\n !activeProjection ||\n (active.id === over?.id && activeProjection?.depth === active.data.current?.level)\n ) {\n return;\n }\n\n if (isActive && over && canDrop && onDrop) {\n onDrop({\n id: active.id,\n parentId: activeProjection.parentId,\n sort: activeProjection.position,\n contentComponent,\n parentType: activeProjection.type,\n });\n }\n },\n [isActive, activeProjection, canDrop, onDrop, contentComponent],\n );\n\n const handleItemDragStart = useCallback(\n (event: TreeDragStartEvent) => {\n if (event.active.id !== id) {\n return;\n }\n\n registerOverlay?.({\n contentComponent,\n children,\n id,\n label,\n level,\n dragHandlerPosition,\n showContentWhileDragging,\n });\n },\n [\n children,\n contentComponent,\n dragHandlerPosition,\n id,\n label,\n level,\n registerOverlay,\n showContentWhileDragging,\n ],\n );\n\n const handleItemDragMove = useCallback(\n (event: TreeDragMoveEvent) => {\n if (event.active.id === id) {\n document.body.style.setProperty('cursor', canDrop ? 'grabbing' : 'no-drop');\n }\n },\n [canDrop, id],\n );\n\n useDndMonitor({\n onDragEnd: handleItemDragEnd,\n onDragStart: handleItemDragStart,\n onDragMove: handleItemDragMove,\n });\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n const handleItemClick = useDebounce(\n (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n if (ignoreItemDoubleClick && event.detail >= 2) {\n return;\n }\n\n if (expandOnSelect) {\n toggleExpand();\n }\n\n onSelect?.(id);\n onClick?.(id);\n },\n ignoreItemDoubleClick ? 300 : 0,\n );\n\n const isParentActive = parentId ? active?.id === parentId : false;\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, { parentId: id, level: level + 1 });\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n const {\n attributes,\n listeners,\n transform,\n transition,\n setDraggableNodeRef,\n setDroppableNodeRef,\n setActivatorNodeRef,\n } = useSortable({\n id,\n disabled: !draggable,\n data: { type, accepts, parentId, level },\n animateLayoutChanges,\n transition: null,\n });\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isActive || isParentActive) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isExpanded) {\n registerNodeChildren?.({ id, children: enrichedChildren });\n } else {\n unregisterNodeChildren?.(id);\n }\n }, [isActive, isExpanded, isParentActive, enrichedChildren, id]);\n\n const itemStyleProps = useMemo<Required<TreeItemStyling>>(() => {\n return {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n };\n }, [itemStyle]);\n\n const styling = TreeItemColorsClassMap[itemStyleProps.activeColorStyle ?? 'neutral'];\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-box-content tw-relative tw-cursor-default tw-transition-colors tw-outline-none tw-ring-inset tw-group tw-no-underline tw-leading-5',\n !isActive && isSelected ? styling.selectedTextColor : styling.textColor,\n TreeItemSpacingClassMap[itemStyleProps.spacingY ?? 'none'],\n ]),\n backgroundClassName: merge([\n 'tw-block tw-absolute tw-inset-0 tw-transition-colors -tw-z-10',\n itemStyleProps.borderWidth !== 'none'\n ? TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small']\n : '',\n !isActive &&\n (!isSelected || itemStyleProps.activeColorStyle !== 'neutral') &&\n styling.pressedBackgroundColor,\n !isActive && isSelected ? styling.selectedBackgroundColor : styling.backgroundColor,\n isSelected && PARENT_FOCUS_VISIBLE_STYLE,\n ]),\n };\n }, [isActive, isSelected, itemStyleProps, styling]);\n\n const showContent = showContentWhileDragging ? true : !isActive;\n const wrapperContentClassName = merge([\n 'tw-max-w-full tw-grow tw-overflow-hidden',\n isActive && showContentWhileDragging ? 'tw-opacity-75 tw-blur-sm tw-grayscale' : '',\n ]);\n const showChildren = isExpanded && !isActive;\n const showDragHandle = draggable && !isActive;\n const showLabel = label !== undefined && !isActive;\n const showExpandButton = !isActive && expandable && (showCaret === undefined ? hasChildren : showCaret);\n\n let previousItemToBeExpandedFeedback = '';\n if (\n !isActive &&\n !isExpanded &&\n showExpandButton &&\n canDropWithinAndDeeper &&\n projection?.previousNode?.id === id &&\n projection?.depth > projection?.previousNode?.depth\n ) {\n previousItemToBeExpandedFeedback = merge([\n 'tw-border-solid tw-border-box-selected-strong',\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderClassMap.small,\n ]);\n }\n\n const containerBorder =\n itemStyleProps.borderWidth !== 'none' && previousItemToBeExpandedFeedback === ''\n ? merge([\n TreeItemBorderClassMap[itemStyleProps.borderWidth ?? 'none'],\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderStyleClassMap[itemStyleProps.borderStyle ?? 'none'],\n ])\n : '';\n const containerHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-10' : 'tw-h-fit';\n const containerActiveHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-12' : 'tw-h-fit';\n\n const containerClassName = merge([\n 'tw-relative tw-z-0 tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-fit tw-justify-between tw-group',\n TreeItemShadowClassMap[itemStyleProps.shadow ?? 'none'],\n isActive ? 'tw-border-dashed tw-border-2 tw-pr-0' : containerBorder,\n isActive && TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n isActive ? containerActiveHeight : containerHeight,\n isActive &&\n (canDrop\n ? 'tw-border-box-selected-strong tw-bg-box-selected-hover'\n : 'tw-bg-box-negative-hover tw-border-box-negative-strong-hover'),\n previousItemToBeExpandedFeedback,\n ]);\n\n const depthPadding = activeProjection?.depth ? activeProjection.depth * INDENTATION_WIDTH : undefined;\n const levelPadding = isActive ? 0 : level * INDENTATION_WIDTH;\n\n const liStyle = { paddingLeft: depthPadding ?? levelPadding };\n const backgroundStyle =\n itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * (depthPadding ?? levelPadding) };\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const handlerProps = { ...listeners, ...attributes };\n const dragHandlerProps = dragHandlerPosition !== 'none' ? handlerProps : {};\n const dragHandler =\n dragHandlerPosition !== 'none' ? (\n <DragHandle\n {...dragHandlerProps}\n active={isSelected}\n ref={setActivatorNodeRef}\n disabled={!showDragHandle}\n aria-hidden={!showDragHandle}\n showDragHandlerOnHoverOnly={showDragHandlerOnHoverOnly}\n activeColorStyle={itemStyleProps.activeColorStyle ?? 'neutral'}\n />\n ) : null;\n\n const itemHandlerProps = dragHandlerPosition === 'none' ? { ...handlerProps } : {};\n\n return (\n <li\n key={id}\n {...itemHandlerProps}\n id={id}\n tabIndex={0}\n role=\"treeitem\"\n style={liStyle}\n onKeyDown={noop}\n aria-label={label}\n aria-level={level + 1}\n onClick={handleItemClick}\n className={liClassName}\n ref={(node) => {\n setDroppableNodeRef(node);\n if (typeof treeItemRef === 'function') {\n treeItemRef(node);\n } else if (treeItemRef?.current) {\n treeItemRef.current = node;\n }\n }}\n data-test-id={dataTestId}\n aria-selected={isSelected}\n aria-expanded={isExpanded}\n data-has-children={hasChildren}\n aria-owns={childrenIds.join(' ')}\n >\n <div ref={setDraggableNodeRef} className={containerClassName} style={style}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden />\n {dragHandlerPosition === 'left' && dragHandler}\n {expandable && (\n <ExpandButton\n active={transform?.y ? false : isSelected}\n onClick={toggleExpand}\n expanded={showChildren}\n disabled={!showExpandButton}\n aria-hidden={!showExpandButton}\n className={showExpandButton ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n )}\n {showLabel && (\n <span className=\"first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center\">{label}</span>\n )}\n {showContent && <div className={wrapperContentClassName}>{contentComponent}</div>}\n {dragHandlerPosition === 'right' && dragHandler}\n </div>\n </li>\n );\n },\n ),\n);\n\nTreeItem.displayName = 'FondueTreeItem';\n"],"names":["animateLayoutChanges","isSorting","wasDragging","TreeItem","memo","forwardRef","id","type","label","onDrop","accepts","showCaret","children","parentId","level","contentComponent","onClick","onSelect","onExpand","onShrink","registerOverlay","registerNodeChildren","unregisterNodeChildren","draggable","expandable","showDragHandlerOnHoverOnly","dragHandlerPosition","showContentWhileDragging","itemStyle","ignoreItemDoubleClick","expandOnSelect","dataTestId","treeItemRef","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","expandDebounced","useRef","isActive","activeProjection","overAccepts","_b","_a","_c","parentAccepts","_d","currentType","_e","isWithin","_f","_g","isWithinOneLevel","_h","canDropWithinAndDeeper","_i","_j","_k","canDropWithin","_l","_m","canDrop","expandProjectionParent","useDebounce","toExpandId","EXPAND_ONHOVER_DELAY","useEffect","handleItemDragEnd","useCallback","event","handleItemDragStart","handleItemDragMove","useDndMonitor","toggleExpand","handleItemClick","isParentActive","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","attributes","listeners","transform","transition","setDraggableNodeRef","setDroppableNodeRef","setActivatorNodeRef","useSortable","useDeepCompareEffect","itemStyleProps","styling","TreeItemColorsClassMap","liClassName","backgroundClassName","merge","FOCUS_VISIBLE_STYLE","TreeItemSpacingClassMap","TreeItemBorderRadiusClassMap","PARENT_FOCUS_VISIBLE_STYLE","showContent","wrapperContentClassName","showChildren","showDragHandle","showLabel","showExpandButton","previousItemToBeExpandedFeedback","_n","_o","TreeItemBorderClassMap","containerBorder","TreeItemBorderStyleClassMap","containerHeight","containerActiveHeight","containerClassName","TreeItemShadowClassMap","depthPadding","INDENTATION_WIDTH","levelPadding","liStyle","backgroundStyle","style","CSS","handlerProps","dragHandler","jsx","DragHandle","itemHandlerProps","noop","node","ExpandButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemMultiselect.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItemMultiselect.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Checkbox, CheckboxEmphasis, CheckboxSize, CheckboxState } from '@components/Checkbox/Checkbox';\nimport { Container } from '@components/Container/Container';\nimport {\n type RegisterNodeChildrenPayload,\n type TreeItemMultiselectProps,\n type TreeItemStyling,\n} from '@components/Tree/types';\n\nimport { INDENTATION_WIDTH, getMultiselectCheckBoxState } from '../helpers';\nimport {\n getMultiselectBackgroundClassName,\n getMultiselectContainerClassName,\n getMultiselectLiClassName,\n} from '../helpers/multiselectTreeItemstyling';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { ExpandButton } from './ExpandButton';\nimport { useMultiselectTreeItem } from './useMultiselectTreeItem';\n\n/** @private */\ntype TreeItemPrivateProps = {\n parentId?: string;\n level?: number;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string, ignoreRemoveSelected: boolean) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/** @private */\nexport type InternalTreeItemMultiSelectProps = TreeItemMultiselectProps & TreeItemPrivateProps;\n\nexport const TreeItemMultiselect = memo(\n ({\n id,\n label,\n showCaret,\n children,\n level = 0,\n contentComponent,\n parentId: _parentId,\n onSelect,\n onExpand,\n onShrink,\n registerNodeChildren,\n unregisterNodeChildren,\n isDisabled = false,\n expandable = true,\n checkBoxPosition = 'left',\n itemStyle,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemMultiSelectProps) => {\n const setActiveNodeRef = useRef<HTMLInputElement | null>(null);\n const { isSelected, isExpanded, isPartialSelected, isParentSelected } = useMultiselectTreeItem(id);\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n useEffect(() => {\n if (isParentSelected && !isSelected && onSelect) {\n onSelect(id, true);\n }\n }, [id, onSelect, isParentSelected, isSelected]);\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, {\n parentId: id,\n level: level + 1,\n });\n\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0 || !isExpanded) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n registerNodeChildren?.({ id, children: enrichedChildren });\n }, [isExpanded, enrichedChildren, id]);\n\n const itemStyleProps = useMemo<Required<TreeItemStyling>>(() => {\n return {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n };\n }, [itemStyle]);\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: getMultiselectLiClassName(itemStyleProps, isDisabled),\n backgroundClassName: getMultiselectBackgroundClassName(itemStyleProps, isSelected, isDisabled),\n };\n }, [itemStyleProps, isDisabled, isSelected]);\n\n const wrapperContentClassName = 'tw-max-w-full\ttw-grow';\n const showChildren = isExpanded;\n const showLabel = label !== undefined;\n const showExpandButton = expandable && (showCaret ?? hasChildren);\n\n const containerClassName = getMultiselectContainerClassName(itemStyleProps);\n\n const levelPadding = level * INDENTATION_WIDTH;\n const liStyle = { paddingLeft: levelPadding };\n const backgroundStyle = itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * levelPadding };\n\n const checkBoxOnSelect = () => {\n if (!isDisabled && onSelect) {\n onSelect(id, false);\n }\n };\n const checkBox =\n checkBoxPosition !== 'none' ? (\n <Container maxWidth=\"16px\" maxHeight=\"16px\">\n <Checkbox\n id={`checkbox-${id}`}\n ref={setActiveNodeRef}\n disabled={isDisabled}\n aria-label={label ?? ''}\n emphasis={CheckboxEmphasis.Weak}\n helperText=\"\"\n hideLabel\n label=\"\"\n onChange={checkBoxOnSelect}\n size={CheckboxSize.Default}\n state={\n isDisabled\n ? CheckboxState.Unchecked\n : getMultiselectCheckBoxState(isSelected, isPartialSelected)\n }\n tooltip={[]}\n value={id}\n />\n </Container>\n ) : null;\n\n return (\n <li\n id={id}\n key={id}\n tabIndex={0}\n role=\"treeitem\"\n style={liStyle}\n onKeyDown={noop}\n aria-label={label}\n aria-level={level + 1}\n className={liClassName}\n data-test-id={dataTestId}\n aria-selected={isSelected}\n aria-expanded={isExpanded}\n data-has-children={hasChildren}\n aria-owns={childrenIds.join(' ')}\n >\n <div className={containerClassName}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden />\n {checkBoxPosition === 'left' && checkBox}\n\n {expandable && (\n <ExpandButton\n onClick={toggleExpand}\n expanded={showChildren}\n disabled={!showExpandButton}\n aria-hidden={!showExpandButton}\n className={showExpandButton ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n )}\n\n {showLabel && <span className=\"first:tw-ml-3.5 tw-h-full tw-flex tw-items-center\">{label}</span>}\n\n <div className={wrapperContentClassName}>{contentComponent}</div>\n\n {checkBoxPosition === 'right' && checkBox}\n </div>\n </li>\n );\n },\n);\n\nTreeItemMultiselect.displayName = 'FondueTreeItemMultiselect';\n"],"names":["TreeItemMultiselect","memo","id","label","showCaret","children","level","contentComponent","_parentId","onSelect","onExpand","onShrink","registerNodeChildren","unregisterNodeChildren","isDisabled","expandable","checkBoxPosition","itemStyle","dataTestId","setActiveNodeRef","useRef","isSelected","isExpanded","isPartialSelected","isParentSelected","useMultiselectTreeItem","toggleExpand","useCallback","event","useEffect","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","useDeepCompareEffect","itemStyleProps","liClassName","backgroundClassName","getMultiselectLiClassName","getMultiselectBackgroundClassName","wrapperContentClassName","showChildren","showLabel","showExpandButton","containerClassName","getMultiselectContainerClassName","levelPadding","INDENTATION_WIDTH","liStyle","backgroundStyle","checkBoxOnSelect","checkBox","jsx","Container","Checkbox","CheckboxEmphasis","CheckboxSize","CheckboxState","getMultiselectCheckBoxState","noop","jsxs","ExpandButton"],"mappings":"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"}
1
+ {"version":3,"file":"TreeItemMultiselect.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItemMultiselect.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Checkbox, CheckboxEmphasis, CheckboxSize, CheckboxState } from '@components/Checkbox/Checkbox';\nimport { Container } from '@components/Container/Container';\nimport {\n type RegisterNodeChildrenPayload,\n type TreeItemMultiselectProps,\n type TreeItemStyling,\n} from '@components/Tree/types';\n\nimport { INDENTATION_WIDTH, getMultiselectCheckBoxState } from '../helpers';\nimport {\n getMultiselectBackgroundClassName,\n getMultiselectContainerClassName,\n getMultiselectLiClassName,\n} from '../helpers/multiselectTreeItemstyling';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { ExpandButton } from './ExpandButton';\nimport { useMultiselectTreeItem } from './useMultiselectTreeItem';\n\n/** @private */\ntype TreeItemPrivateProps = {\n parentId?: string;\n level?: number;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string, ignoreRemoveSelected: boolean) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/**\n * @private\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport type InternalTreeItemMultiSelectProps = TreeItemMultiselectProps & TreeItemPrivateProps;\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const TreeItemMultiselect = memo(\n ({\n id,\n label,\n showCaret,\n children,\n level = 0,\n contentComponent,\n parentId: _parentId,\n onSelect,\n onExpand,\n onShrink,\n registerNodeChildren,\n unregisterNodeChildren,\n isDisabled = false,\n expandable = true,\n checkBoxPosition = 'left',\n itemStyle,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemMultiSelectProps) => {\n const setActiveNodeRef = useRef<HTMLInputElement | null>(null);\n const { isSelected, isExpanded, isPartialSelected, isParentSelected } = useMultiselectTreeItem(id);\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n useEffect(() => {\n if (isParentSelected && !isSelected && onSelect) {\n onSelect(id, true);\n }\n }, [id, onSelect, isParentSelected, isSelected]);\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, {\n parentId: id,\n level: level + 1,\n });\n\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0 || !isExpanded) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n registerNodeChildren?.({ id, children: enrichedChildren });\n }, [isExpanded, enrichedChildren, id]);\n\n const itemStyleProps = useMemo<Required<TreeItemStyling>>(() => {\n return {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n };\n }, [itemStyle]);\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: getMultiselectLiClassName(itemStyleProps, isDisabled),\n backgroundClassName: getMultiselectBackgroundClassName(itemStyleProps, isSelected, isDisabled),\n };\n }, [itemStyleProps, isDisabled, isSelected]);\n\n const wrapperContentClassName = 'tw-max-w-full\ttw-grow';\n const showChildren = isExpanded;\n const showLabel = label !== undefined;\n const showExpandButton = expandable && (showCaret ?? hasChildren);\n\n const containerClassName = getMultiselectContainerClassName(itemStyleProps);\n\n const levelPadding = level * INDENTATION_WIDTH;\n const liStyle = { paddingLeft: levelPadding };\n const backgroundStyle = itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * levelPadding };\n\n const checkBoxOnSelect = () => {\n if (!isDisabled && onSelect) {\n onSelect(id, false);\n }\n };\n const checkBox =\n checkBoxPosition !== 'none' ? (\n <Container maxWidth=\"16px\" maxHeight=\"16px\">\n <Checkbox\n id={`checkbox-${id}`}\n ref={setActiveNodeRef}\n disabled={isDisabled}\n aria-label={label ?? ''}\n emphasis={CheckboxEmphasis.Weak}\n helperText=\"\"\n hideLabel\n label=\"\"\n onChange={checkBoxOnSelect}\n size={CheckboxSize.Default}\n state={\n isDisabled\n ? CheckboxState.Unchecked\n : getMultiselectCheckBoxState(isSelected, isPartialSelected)\n }\n tooltip={[]}\n value={id}\n />\n </Container>\n ) : null;\n\n return (\n <li\n id={id}\n key={id}\n tabIndex={0}\n role=\"treeitem\"\n style={liStyle}\n onKeyDown={noop}\n aria-label={label}\n aria-level={level + 1}\n className={liClassName}\n data-test-id={dataTestId}\n aria-selected={isSelected}\n aria-expanded={isExpanded}\n data-has-children={hasChildren}\n aria-owns={childrenIds.join(' ')}\n >\n <div className={containerClassName}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden />\n {checkBoxPosition === 'left' && checkBox}\n\n {expandable && (\n <ExpandButton\n onClick={toggleExpand}\n expanded={showChildren}\n disabled={!showExpandButton}\n aria-hidden={!showExpandButton}\n className={showExpandButton ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n )}\n\n {showLabel && <span className=\"first:tw-ml-3.5 tw-h-full tw-flex tw-items-center\">{label}</span>}\n\n <div className={wrapperContentClassName}>{contentComponent}</div>\n\n {checkBoxPosition === 'right' && checkBox}\n </div>\n </li>\n );\n },\n);\n\nTreeItemMultiselect.displayName = 'FondueTreeItemMultiselect';\n"],"names":["TreeItemMultiselect","memo","id","label","showCaret","children","level","contentComponent","_parentId","onSelect","onExpand","onShrink","registerNodeChildren","unregisterNodeChildren","isDisabled","expandable","checkBoxPosition","itemStyle","dataTestId","setActiveNodeRef","useRef","isSelected","isExpanded","isPartialSelected","isParentSelected","useMultiselectTreeItem","toggleExpand","useCallback","event","useEffect","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","useDeepCompareEffect","itemStyleProps","liClassName","backgroundClassName","getMultiselectLiClassName","getMultiselectBackgroundClassName","wrapperContentClassName","showChildren","showLabel","showExpandButton","containerClassName","getMultiselectContainerClassName","levelPadding","INDENTATION_WIDTH","liStyle","backgroundStyle","checkBoxOnSelect","checkBox","jsx","Container","Checkbox","CheckboxEmphasis","CheckboxSize","CheckboxState","getMultiselectCheckBoxState","noop","jsxs","ExpandButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemOverlay.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItemOverlay.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconGrabHandle } from '@frontify/fondue-icons';\nimport { Children, type ReactNode } from 'react';\n\nimport { merge } from '@utilities/merge';\n\nimport { INDENTATION_WIDTH } from '../helpers';\nimport { type DragHandlerPosition } from '../types';\n\nexport type Overlay = {\n id: string;\n label?: string;\n level?: number;\n children: ReactNode;\n contentComponent?: ReactNode;\n isSelected?: boolean;\n dragHandlerPosition?: DragHandlerPosition;\n showContentWhileDragging: boolean;\n};\n\nexport const TreeItemOverlay = ({\n id,\n label,\n level = 0,\n children,\n contentComponent,\n isSelected,\n dragHandlerPosition = 'left',\n showContentWhileDragging = false,\n}: Overlay) => {\n const hasChildren = Children.count(children) > 0;\n\n const indentation = level * INDENTATION_WIDTH;\n\n const liStyle = { marginLeft: indentation };\n\n const dragHandler = (\n <button type=\"button\" tabIndex={-1} className=\"tw-p-1 tw-touch-none\">\n <IconGrabHandle size={12} />\n </button>\n );\n\n return (\n <li\n role=\"treeitem\"\n style={liStyle}\n id={id.toString()}\n aria-label={label}\n aria-level={level + 1}\n aria-selected={isSelected}\n data-test-id=\"fondue-tree-item-overlay\"\n className={merge([\n 'tw-pointer-events-none tw-bg-white tw-flex tw-items-center tw-gap-x-1 tw-p-2 tw-no-underline tw-leading-5 tw-box-border tw-w-fit tw-drop-shadow-xl tw-rounded',\n showContentWhileDragging ? 'tw-opacity-90' : '',\n ])}\n >\n {dragHandlerPosition === 'left' && dragHandler}\n\n {hasChildren && (\n <button type=\"button\" tabIndex={-1} data-test-id=\"tree-item-toggle\" className=\"tw-p-1\">\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-text-black-100 tw-text-opacity-40 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong',\n isSelected && 'tw-text-box-selected-strong-inverse',\n ])}\n />\n </button>\n )}\n\n {label !== undefined && <span>{label}</span>}\n\n {contentComponent}\n\n {dragHandlerPosition === 'right' && dragHandler}\n </li>\n );\n};\n\nTreeItemOverlay.displayName = 'FondueTreeItemOverlay';\n"],"names":["TreeItemOverlay","id","label","level","children","contentComponent","isSelected","dragHandlerPosition","showContentWhileDragging","hasChildren","Children","liStyle","INDENTATION_WIDTH","dragHandler","jsx","IconGrabHandle","jsxs","merge"],"mappings":";;;;;AAqBO,MAAMA,IAAkB,CAAC;AAAA,EAC5B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,0BAAAC,IAA2B;AAC/B,MAAe;AACX,QAAMC,IAAcC,EAAS,MAAMN,CAAQ,IAAI,GAIzCO,IAAU,EAAE,YAFER,IAAQS,EAEE,GAExBC,IACF,gBAAAC,EAAC,UAAA,EAAO,MAAK,UAAS,UAAU,IAAI,WAAU,wBAC1C,UAAA,gBAAAA,EAACC,GAAA,EAAe,MAAM,IAAI,GAC9B;AAGJ,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,OAAOL;AAAA,MACP,IAAIV,EAAG,SAAA;AAAA,MACP,cAAYC;AAAA,MACZ,cAAYC,IAAQ;AAAA,MACpB,iBAAeG;AAAA,MACf,gBAAa;AAAA,MACb,WAAWW,EAAM;AAAA,QACb;AAAA,QACAT,IAA2B,kBAAkB;AAAA,MAAA,CAChD;AAAA,MAEA,UAAA;AAAA,QAAAD,MAAwB,UAAUM;AAAA,QAElCJ,KACG,gBAAAK,EAAC,UAAA,EAAO,MAAK,UAAS,UAAU,IAAI,gBAAa,oBAAmB,WAAU,UAC1E,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAWG,EAAM;AAAA,cACb;AAAA,cACAX,KAAc;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,QAAA,GAET;AAAA,QAGHJ,MAAU,UAAa,gBAAAY,EAAC,QAAA,EAAM,UAAAZ,GAAM;AAAA,QAEpCG;AAAA,QAEAE,MAAwB,WAAWM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhD;AAEAb,EAAgB,cAAc;"}
1
+ {"version":3,"file":"TreeItemOverlay.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItemOverlay.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconGrabHandle } from '@frontify/fondue-icons';\nimport { Children, type ReactNode } from 'react';\n\nimport { merge } from '@utilities/merge';\n\nimport { INDENTATION_WIDTH } from '../helpers';\nimport { type DragHandlerPosition } from '../types';\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport type Overlay = {\n id: string;\n label?: string;\n level?: number;\n children: ReactNode;\n contentComponent?: ReactNode;\n isSelected?: boolean;\n dragHandlerPosition?: DragHandlerPosition;\n showContentWhileDragging: boolean;\n};\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const TreeItemOverlay = ({\n id,\n label,\n level = 0,\n children,\n contentComponent,\n isSelected,\n dragHandlerPosition = 'left',\n showContentWhileDragging = false,\n}: Overlay) => {\n const hasChildren = Children.count(children) > 0;\n\n const indentation = level * INDENTATION_WIDTH;\n\n const liStyle = { marginLeft: indentation };\n\n const dragHandler = (\n <button type=\"button\" tabIndex={-1} className=\"tw-p-1 tw-touch-none\">\n <IconGrabHandle size={12} />\n </button>\n );\n\n return (\n <li\n role=\"treeitem\"\n style={liStyle}\n id={id.toString()}\n aria-label={label}\n aria-level={level + 1}\n aria-selected={isSelected}\n data-test-id=\"fondue-tree-item-overlay\"\n className={merge([\n 'tw-pointer-events-none tw-bg-white tw-flex tw-items-center tw-gap-x-1 tw-p-2 tw-no-underline tw-leading-5 tw-box-border tw-w-fit tw-drop-shadow-xl tw-rounded',\n showContentWhileDragging ? 'tw-opacity-90' : '',\n ])}\n >\n {dragHandlerPosition === 'left' && dragHandler}\n\n {hasChildren && (\n <button type=\"button\" tabIndex={-1} data-test-id=\"tree-item-toggle\" className=\"tw-p-1\">\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-text-black-100 tw-text-opacity-40 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong',\n isSelected && 'tw-text-box-selected-strong-inverse',\n ])}\n />\n </button>\n )}\n\n {label !== undefined && <span>{label}</span>}\n\n {contentComponent}\n\n {dragHandlerPosition === 'right' && dragHandler}\n </li>\n );\n};\n\nTreeItemOverlay.displayName = 'FondueTreeItemOverlay';\n"],"names":["TreeItemOverlay","id","label","level","children","contentComponent","isSelected","dragHandlerPosition","showContentWhileDragging","hasChildren","Children","liStyle","INDENTATION_WIDTH","dragHandler","jsx","IconGrabHandle","jsxs","merge"],"mappings":";;;;;AA2BO,MAAMA,IAAkB,CAAC;AAAA,EAC5B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,0BAAAC,IAA2B;AAC/B,MAAe;AACX,QAAMC,IAAcC,EAAS,MAAMN,CAAQ,IAAI,GAIzCO,IAAU,EAAE,YAFER,IAAQS,EAEE,GAExBC,IACF,gBAAAC,EAAC,UAAA,EAAO,MAAK,UAAS,UAAU,IAAI,WAAU,wBAC1C,UAAA,gBAAAA,EAACC,GAAA,EAAe,MAAM,IAAI,GAC9B;AAGJ,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,OAAOL;AAAA,MACP,IAAIV,EAAG,SAAA;AAAA,MACP,cAAYC;AAAA,MACZ,cAAYC,IAAQ;AAAA,MACpB,iBAAeG;AAAA,MACf,gBAAa;AAAA,MACb,WAAWW,EAAM;AAAA,QACb;AAAA,QACAT,IAA2B,kBAAkB;AAAA,MAAA,CAChD;AAAA,MAEA,UAAA;AAAA,QAAAD,MAAwB,UAAUM;AAAA,QAElCJ,KACG,gBAAAK,EAAC,UAAA,EAAO,MAAK,UAAS,UAAU,IAAI,gBAAa,oBAAmB,WAAU,UAC1E,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,WAAWG,EAAM;AAAA,cACb;AAAA,cACAX,KAAc;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,QAAA,GAET;AAAA,QAGHJ,MAAU,UAAa,gBAAAY,EAAC,QAAA,EAAM,UAAAZ,GAAM;AAAA,QAEpCG;AAAA,QAEAE,MAAwB,WAAWM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhD;AAEAb,EAAgB,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiselectTreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/useMultiselectTreeItem.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useContext } from 'react';\n\nimport { convertToPartialSelectedId } from '../helpers';\nimport { TreeContext } from '../TreeContext';\n\nexport const useMultiselectTreeItem = (id: string) => {\n const { treeState } = useContext(TreeContext);\n\n const node = treeState.nodes.find((n) => n.props.id === id);\n const parentId = node ? node.props.parentId : '';\n const parent = treeState.nodes.find((n) => n.props.id === parentId);\n\n const extendedId = node ? `${parentId}/${node.props.id}` : null;\n const parentExtendId = parent ? `${parent.props.parentId}/${parent.props.id}` : null;\n\n const isSelected = extendedId ? treeState.selectedIds.has(extendedId) : false;\n const isParentSelected = parentExtendId ? treeState.selectedIds.has(parentExtendId) : false;\n const isPartialSelected = extendedId\n ? treeState.selectedIds.has(convertToPartialSelectedId([extendedId])[0])\n : false;\n const isExpanded = treeState.expandedIds.has(id);\n\n return {\n isSelected,\n isParentSelected,\n isPartialSelected,\n isExpanded,\n };\n};\n"],"names":["useMultiselectTreeItem","id","treeState","useContext","TreeContext","node","parentId","parent","extendedId","parentExtendId","isSelected","isParentSelected","isPartialSelected","convertToPartialSelectedId","isExpanded"],"mappings":";;;AAOO,MAAMA,IAAyB,CAACC,MAAe;AAClD,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAWC,CAAW,GAEtCC,IAAOH,EAAU,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,OAAOD,CAAE,GACpDK,IAAWD,IAAOA,EAAK,MAAM,WAAW,IACxCE,IAASL,EAAU,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,OAAOI,CAAQ,GAE5DE,IAAaH,IAAO,GAAGC,CAAQ,IAAID,EAAK,MAAM,EAAE,KAAK,MACrDI,IAAiBF,IAAS,GAAGA,EAAO,MAAM,QAAQ,IAAIA,EAAO,MAAM,EAAE,KAAK,MAE1EG,IAAaF,IAAaN,EAAU,YAAY,IAAIM,CAAU,IAAI,IAClEG,IAAmBF,IAAiBP,EAAU,YAAY,IAAIO,CAAc,IAAI,IAChFG,IAAoBJ,IACpBN,EAAU,YAAY,IAAIW,EAA2B,CAACL,CAAU,CAAC,EAAE,CAAC,CAAC,IACrE,IACAM,IAAaZ,EAAU,YAAY,IAAID,CAAE;AAE/C,SAAO;AAAA,IACH,YAAAS;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,YAAAE;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"useMultiselectTreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/useMultiselectTreeItem.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useContext } from 'react';\n\nimport { convertToPartialSelectedId } from '../helpers';\nimport { TreeContext } from '../TreeContext';\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const useMultiselectTreeItem = (id: string) => {\n const { treeState } = useContext(TreeContext);\n\n const node = treeState.nodes.find((n) => n.props.id === id);\n const parentId = node ? node.props.parentId : '';\n const parent = treeState.nodes.find((n) => n.props.id === parentId);\n\n const extendedId = node ? `${parentId}/${node.props.id}` : null;\n const parentExtendId = parent ? `${parent.props.parentId}/${parent.props.id}` : null;\n\n const isSelected = extendedId ? treeState.selectedIds.has(extendedId) : false;\n const isParentSelected = parentExtendId ? treeState.selectedIds.has(parentExtendId) : false;\n const isPartialSelected = extendedId\n ? treeState.selectedIds.has(convertToPartialSelectedId([extendedId])[0])\n : false;\n const isExpanded = treeState.expandedIds.has(id);\n\n return {\n isSelected,\n isParentSelected,\n isPartialSelected,\n isExpanded,\n };\n};\n"],"names":["useMultiselectTreeItem","id","treeState","useContext","TreeContext","node","parentId","parent","extendedId","parentExtendId","isSelected","isParentSelected","isPartialSelected","convertToPartialSelectedId","isExpanded"],"mappings":";;;AAUO,MAAMA,IAAyB,CAACC,MAAe;AAClD,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAWC,CAAW,GAEtCC,IAAOH,EAAU,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,OAAOD,CAAE,GACpDK,IAAWD,IAAOA,EAAK,MAAM,WAAW,IACxCE,IAASL,EAAU,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,OAAOI,CAAQ,GAE5DE,IAAaH,IAAO,GAAGC,CAAQ,IAAID,EAAK,MAAM,EAAE,KAAK,MACrDI,IAAiBF,IAAS,GAAGA,EAAO,MAAM,QAAQ,IAAIA,EAAO,MAAM,EAAE,KAAK,MAE1EG,IAAaF,IAAaN,EAAU,YAAY,IAAIM,CAAU,IAAI,IAClEG,IAAmBF,IAAiBP,EAAU,YAAY,IAAIO,CAAc,IAAI,IAChFG,IAAoBJ,IACpBN,EAAU,YAAY,IAAIW,EAA2B,CAACL,CAAU,CAAC,EAAE,CAAC,CAAC,IACrE,IACAM,IAAaZ,EAAU,YAAY,IAAID,CAAE;AAE/C,SAAO;AAAA,IACH,YAAAS;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,YAAAE;AAAA,EAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/useTreeItem.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useContext } from 'react';\n\nimport { TreeContext } from '../TreeContext';\n\nexport const useTreeItem = (id: string) => {\n const { treeState } = useContext(TreeContext);\n\n const isSelected = treeState.selectedIds.has(id);\n const isExpanded = treeState.expandedIds.has(id);\n const projection = treeState.projection;\n\n return {\n isSelected,\n isExpanded,\n projection,\n };\n};\n"],"names":["useTreeItem","id","treeState","useContext","TreeContext","isSelected","isExpanded","projection"],"mappings":";;AAMO,MAAMA,IAAc,CAACC,MAAe;AACvC,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAWC,CAAW,GAEtCC,IAAaH,EAAU,YAAY,IAAID,CAAE,GACzCK,IAAaJ,EAAU,YAAY,IAAID,CAAE,GACzCM,IAAaL,EAAU;AAE7B,SAAO;AAAA,IACH,YAAAG;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"useTreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/useTreeItem.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useContext } from 'react';\n\nimport { TreeContext } from '../TreeContext';\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const useTreeItem = (id: string) => {\n const { treeState } = useContext(TreeContext);\n\n const isSelected = treeState.selectedIds.has(id);\n const isExpanded = treeState.expandedIds.has(id);\n const projection = treeState.projection;\n\n return {\n isSelected,\n isExpanded,\n projection,\n };\n};\n"],"names":["useTreeItem","id","treeState","useContext","TreeContext","isSelected","isExpanded","projection"],"mappings":";;AASO,MAAMA,IAAc,CAACC,MAAe;AACvC,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAWC,CAAW,GAEtCC,IAAaH,EAAU,YAAY,IAAID,CAAE,GACzCK,IAAaJ,EAAU,YAAY,IAAID,CAAE,GACzCM,IAAaL,EAAU;AAE7B,SAAO;AAAA,IACH,YAAAG;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,EAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.es.js","sources":["../../../../src/components/Tree/helpers/constants.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport const ROOT_ID = '__ROOT__';\nexport const INDENTATION_WIDTH = 20;\nexport const EXPAND_ONHOVER_DELAY = 350; // ms\n"],"names":["ROOT_ID","INDENTATION_WIDTH","EXPAND_ONHOVER_DELAY"],"mappings":"AAEO,MAAMA,IAAU,YACVC,IAAoB,IACpBC,IAAuB;"}
1
+ {"version":3,"file":"constants.es.js","sources":["../../../../src/components/Tree/helpers/constants.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const ROOT_ID = '__ROOT__';\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const INDENTATION_WIDTH = 20;\n/**\n * @deprecated Please use updated Tree component from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#tree the migration guide}.\n */\nexport const EXPAND_ONHOVER_DELAY = 350; // ms\n"],"names":["ROOT_ID","INDENTATION_WIDTH","EXPAND_ONHOVER_DELAY"],"mappings":"AAKO,MAAMA,IAAU,YAIVC,IAAoB,IAIpBC,IAAuB;"}