@chayns-components/navigation 5.0.65 → 5.1.1

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 (186) hide show
  1. package/lib/cjs/components/navigation-layout/NavigationLayout.constants.js +14 -0
  2. package/lib/cjs/components/navigation-layout/NavigationLayout.constants.js.map +1 -0
  3. package/lib/cjs/components/navigation-layout/NavigationLayout.context.js +26 -0
  4. package/lib/cjs/components/navigation-layout/NavigationLayout.context.js.map +1 -0
  5. package/lib/cjs/components/navigation-layout/NavigationLayout.js +105 -0
  6. package/lib/cjs/components/navigation-layout/NavigationLayout.js.map +1 -0
  7. package/lib/cjs/components/navigation-layout/NavigationLayout.styles.js +74 -0
  8. package/lib/cjs/components/navigation-layout/NavigationLayout.styles.js.map +1 -0
  9. package/lib/cjs/components/navigation-layout/NavigationLayout.types.js +6 -0
  10. package/lib/cjs/components/navigation-layout/NavigationLayout.types.js.map +1 -0
  11. package/lib/cjs/components/navigation-layout/NavigationLayout.utils.js +261 -0
  12. package/lib/cjs/components/navigation-layout/NavigationLayout.utils.js.map +1 -0
  13. package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.js +31 -0
  14. package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.js.map +1 -0
  15. package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.styles.js +30 -0
  16. package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.styles.js.map +1 -0
  17. package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.types.js +6 -0
  18. package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.types.js.map +1 -0
  19. package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js +71 -0
  20. package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js.map +1 -0
  21. package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js +19 -0
  22. package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js.map +1 -0
  23. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js +26 -0
  24. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js.map +1 -0
  25. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.js +140 -0
  26. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.js.map +1 -0
  27. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js +89 -0
  28. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js.map +1 -0
  29. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js +6 -0
  30. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js.map +1 -0
  31. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js +83 -0
  32. package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js.map +1 -0
  33. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js +17 -0
  34. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js.map +1 -0
  35. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js +19 -0
  36. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js.map +1 -0
  37. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js +26 -0
  38. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js.map +1 -0
  39. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js +129 -0
  40. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js.map +1 -0
  41. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js +79 -0
  42. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js.map +1 -0
  43. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js +69 -0
  44. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js.map +1 -0
  45. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js +265 -0
  46. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js.map +1 -0
  47. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js +193 -0
  48. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js.map +1 -0
  49. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js +132 -0
  50. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js.map +1 -0
  51. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js +78 -0
  52. package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js.map +1 -0
  53. package/lib/cjs/components/split-layout/SplitLayout.js +90 -0
  54. package/lib/cjs/components/split-layout/SplitLayout.js.map +1 -0
  55. package/lib/cjs/components/split-layout/SplitLayout.styles.js +44 -0
  56. package/lib/cjs/components/split-layout/SplitLayout.styles.js.map +1 -0
  57. package/lib/cjs/components/split-layout/SplitLayout.types.js +12 -0
  58. package/lib/cjs/components/split-layout/SplitLayout.types.js.map +1 -0
  59. package/lib/cjs/components/split-layout/SplitLayout.utils.js +25 -0
  60. package/lib/cjs/components/split-layout/SplitLayout.utils.js.map +1 -0
  61. package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.hooks.js +63 -0
  62. package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.hooks.js.map +1 -0
  63. package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.js +34 -0
  64. package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.js.map +1 -0
  65. package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.styles.js +58 -0
  66. package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.styles.js.map +1 -0
  67. package/lib/cjs/components/user-image/UserImage.js +38 -0
  68. package/lib/cjs/components/user-image/UserImage.js.map +1 -0
  69. package/lib/cjs/components/user-image/UserImage.types.js +6 -0
  70. package/lib/cjs/components/user-image/UserImage.types.js.map +1 -0
  71. package/lib/cjs/components/user-image/userImage.styles.js +27 -0
  72. package/lib/cjs/components/user-image/userImage.styles.js.map +1 -0
  73. package/lib/cjs/index.js +49 -1
  74. package/lib/cjs/index.js.map +1 -1
  75. package/lib/esm/components/navigation-layout/NavigationLayout.constants.js +8 -0
  76. package/lib/esm/components/navigation-layout/NavigationLayout.constants.js.map +1 -0
  77. package/lib/esm/components/navigation-layout/NavigationLayout.context.js +17 -0
  78. package/lib/esm/components/navigation-layout/NavigationLayout.context.js.map +1 -0
  79. package/lib/esm/components/navigation-layout/NavigationLayout.js +97 -0
  80. package/lib/esm/components/navigation-layout/NavigationLayout.js.map +1 -0
  81. package/lib/esm/components/navigation-layout/NavigationLayout.styles.js +67 -0
  82. package/lib/esm/components/navigation-layout/NavigationLayout.styles.js.map +1 -0
  83. package/lib/esm/components/navigation-layout/NavigationLayout.types.js +2 -0
  84. package/lib/esm/components/navigation-layout/NavigationLayout.types.js.map +1 -0
  85. package/lib/esm/components/navigation-layout/NavigationLayout.utils.js +251 -0
  86. package/lib/esm/components/navigation-layout/NavigationLayout.utils.js.map +1 -0
  87. package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.js +24 -0
  88. package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.js.map +1 -0
  89. package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.styles.js +23 -0
  90. package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.styles.js.map +1 -0
  91. package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.types.js +2 -0
  92. package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.types.js.map +1 -0
  93. package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js +64 -0
  94. package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js.map +1 -0
  95. package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js +12 -0
  96. package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js.map +1 -0
  97. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js +17 -0
  98. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js.map +1 -0
  99. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.js +132 -0
  100. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.js.map +1 -0
  101. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js +82 -0
  102. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js.map +1 -0
  103. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js +2 -0
  104. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js.map +1 -0
  105. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js +73 -0
  106. package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js.map +1 -0
  107. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js +10 -0
  108. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js.map +1 -0
  109. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js +12 -0
  110. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js.map +1 -0
  111. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js +17 -0
  112. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js.map +1 -0
  113. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js +119 -0
  114. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js.map +1 -0
  115. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js +71 -0
  116. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js.map +1 -0
  117. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js +62 -0
  118. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js.map +1 -0
  119. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js +257 -0
  120. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js.map +1 -0
  121. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js +186 -0
  122. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js.map +1 -0
  123. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js +126 -0
  124. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js.map +1 -0
  125. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js +67 -0
  126. package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js.map +1 -0
  127. package/lib/esm/components/split-layout/SplitLayout.js +80 -0
  128. package/lib/esm/components/split-layout/SplitLayout.js.map +1 -0
  129. package/lib/esm/components/split-layout/SplitLayout.styles.js +37 -0
  130. package/lib/esm/components/split-layout/SplitLayout.styles.js.map +1 -0
  131. package/lib/esm/components/split-layout/SplitLayout.types.js +6 -0
  132. package/lib/esm/components/split-layout/SplitLayout.types.js.map +1 -0
  133. package/lib/esm/components/split-layout/SplitLayout.utils.js +17 -0
  134. package/lib/esm/components/split-layout/SplitLayout.utils.js.map +1 -0
  135. package/lib/esm/components/split-layout/resize-handle/ResizeHandle.hooks.js +54 -0
  136. package/lib/esm/components/split-layout/resize-handle/ResizeHandle.hooks.js.map +1 -0
  137. package/lib/esm/components/split-layout/resize-handle/ResizeHandle.js +27 -0
  138. package/lib/esm/components/split-layout/resize-handle/ResizeHandle.js.map +1 -0
  139. package/lib/esm/components/split-layout/resize-handle/ResizeHandle.styles.js +52 -0
  140. package/lib/esm/components/split-layout/resize-handle/ResizeHandle.styles.js.map +1 -0
  141. package/lib/esm/components/user-image/UserImage.js +31 -0
  142. package/lib/esm/components/user-image/UserImage.js.map +1 -0
  143. package/lib/esm/components/user-image/UserImage.types.js +2 -0
  144. package/lib/esm/components/user-image/UserImage.types.js.map +1 -0
  145. package/lib/esm/components/user-image/userImage.styles.js +20 -0
  146. package/lib/esm/components/user-image/userImage.styles.js.map +1 -0
  147. package/lib/esm/index.js +15 -1
  148. package/lib/esm/index.js.map +1 -1
  149. package/lib/types/components/navigation-layout/NavigationLayout.constants.d.ts +7 -0
  150. package/lib/types/components/navigation-layout/NavigationLayout.context.d.ts +15 -0
  151. package/lib/types/components/navigation-layout/NavigationLayout.d.ts +4 -0
  152. package/lib/types/components/navigation-layout/NavigationLayout.styles.d.ts +19 -0
  153. package/lib/types/components/navigation-layout/NavigationLayout.types.d.ts +125 -0
  154. package/lib/types/components/navigation-layout/NavigationLayout.utils.d.ts +22 -0
  155. package/lib/types/components/navigation-layout/navigation-header/NavigationHeader.d.ts +4 -0
  156. package/lib/types/components/navigation-layout/navigation-header/NavigationHeader.styles.d.ts +9 -0
  157. package/lib/types/components/navigation-layout/navigation-header/NavigationHeader.types.d.ts +10 -0
  158. package/lib/types/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.d.ts +8 -0
  159. package/lib/types/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.d.ts +3 -0
  160. package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.d.ts +19 -0
  161. package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.d.ts +4 -0
  162. package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.d.ts +27 -0
  163. package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.d.ts +54 -0
  164. package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.d.ts +22 -0
  165. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.d.ts +6 -0
  166. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.d.ts +6 -0
  167. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.d.ts +22 -0
  168. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.d.ts +9 -0
  169. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.d.ts +26 -0
  170. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.d.ts +9 -0
  171. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.d.ts +10 -0
  172. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.d.ts +51 -0
  173. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.d.ts +24 -0
  174. package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.d.ts +23 -0
  175. package/lib/types/components/split-layout/SplitLayout.d.ts +4 -0
  176. package/lib/types/components/split-layout/SplitLayout.styles.d.ts +12 -0
  177. package/lib/types/components/split-layout/SplitLayout.types.d.ts +19 -0
  178. package/lib/types/components/split-layout/SplitLayout.utils.d.ts +8 -0
  179. package/lib/types/components/split-layout/resize-handle/ResizeHandle.d.ts +11 -0
  180. package/lib/types/components/split-layout/resize-handle/ResizeHandle.hooks.d.ts +9 -0
  181. package/lib/types/components/split-layout/resize-handle/ResizeHandle.styles.d.ts +15 -0
  182. package/lib/types/components/user-image/UserImage.d.ts +4 -0
  183. package/lib/types/components/user-image/UserImage.types.d.ts +8 -0
  184. package/lib/types/components/user-image/userImage.styles.d.ts +10 -0
  185. package/lib/types/index.d.ts +10 -2
  186. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarGroup.js","names":["React","memo","useMemo","StyledSidebarDropZone","StyledSidebarGroup","SidebarItem","SidebarGroupReorderProvider","useSidebarGroupReorder","useNavigationSidebarContext","useNavigationLayoutContext","SidebarGroup","groupId","items","isReorderable","isCompact","onItemReorder","draggedItemId","dropTarget","isDragging","isGroupEndTargetActive","isReorderEnabled","handleDragEnd","handleDragStart","handleDrop","handleDropTargetChange","handleGroupDragOver","handleGroupDrop","handleGroupEndDragOver","handleGroupEndDrop","contextValue","onDragEnd","onDragStart","onDrop","onDropTargetChange","content","map","item","index","createElement","key","id","parentIds","value","onDragOver","$isActive","$isDragging","$placement","displayName"],"sources":["../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.tsx"],"sourcesContent":["import React, { FC, memo, useMemo } from 'react';\nimport { StyledSidebarDropZone, StyledSidebarGroup } from './SidebarGroup.styles';\nimport { NavigationLayoutGroup, NavigationLayoutItem } from '../../NavigationLayout.types';\nimport SidebarItem from './sidebar-item/SidebarItem';\nimport { SidebarGroupReorderProvider } from './SidebarGroup.context';\nimport { useSidebarGroupReorder } from './SidebarGroup.hooks';\nimport { useNavigationSidebarContext } from '../NavigationSidebar.context';\nimport { useNavigationLayoutContext } from '../../NavigationLayout.context';\n\ninterface SidebarGroupProps {\n groupId: NavigationLayoutGroup['id'];\n items: NavigationLayoutItem[];\n isReorderable?: NavigationLayoutGroup['isReorderable'];\n}\n\nconst SidebarGroup: FC<SidebarGroupProps> = ({ groupId, items, isReorderable }) => {\n const { isCompact } = useNavigationSidebarContext();\n const { onItemReorder } = useNavigationLayoutContext();\n const {\n draggedItemId,\n dropTarget,\n isDragging,\n isGroupEndTargetActive,\n isReorderEnabled,\n handleDragEnd,\n handleDragStart,\n handleDrop,\n handleDropTargetChange,\n handleGroupDragOver,\n handleGroupDrop,\n handleGroupEndDragOver,\n handleGroupEndDrop,\n } = useSidebarGroupReorder({\n groupId,\n isCompact,\n isReorderable,\n items,\n onItemReorder,\n });\n\n const contextValue = useMemo(\n () => ({\n draggedItemId,\n dropTarget,\n isDragging,\n isReorderEnabled,\n onDragEnd: handleDragEnd,\n onDragStart: handleDragStart,\n onDrop: handleDrop,\n onDropTargetChange: handleDropTargetChange,\n }),\n [\n draggedItemId,\n dropTarget,\n handleDragEnd,\n handleDragStart,\n handleDrop,\n handleDropTargetChange,\n isDragging,\n isReorderEnabled,\n ],\n );\n\n const content = useMemo(\n () =>\n items.map((item, index) => (\n <SidebarItem key={item.id} item={item} index={index} parentIds={[]} />\n )),\n [items],\n );\n\n return (\n <SidebarGroupReorderProvider value={contextValue}>\n <StyledSidebarGroup onDragOver={handleGroupDragOver} onDrop={handleGroupDrop}>\n {content}\n {isReorderEnabled && (\n <StyledSidebarDropZone\n $isActive={isGroupEndTargetActive}\n $isDragging={isDragging}\n $placement=\"after\"\n onDragOver={handleGroupEndDragOver}\n onDrop={handleGroupEndDrop}\n />\n )}\n </StyledSidebarGroup>\n </SidebarGroupReorderProvider>\n );\n};\n\nSidebarGroup.displayName = 'SidebarGroup';\n\nexport default memo(SidebarGroup);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAQC,IAAI,EAAEC,OAAO,QAAQ,OAAO;AAChD,SAASC,qBAAqB,EAAEC,kBAAkB,QAAQ,uBAAuB;AAEjF,OAAOC,WAAW,MAAM,4BAA4B;AACpD,SAASC,2BAA2B,QAAQ,wBAAwB;AACpE,SAASC,sBAAsB,QAAQ,sBAAsB;AAC7D,SAASC,2BAA2B,QAAQ,8BAA8B;AAC1E,SAASC,0BAA0B,QAAQ,gCAAgC;AAQ3E,MAAMC,YAAmC,GAAGA,CAAC;EAAEC,OAAO;EAAEC,KAAK;EAAEC;AAAc,CAAC,KAAK;EAC/E,MAAM;IAAEC;EAAU,CAAC,GAAGN,2BAA2B,CAAC,CAAC;EACnD,MAAM;IAAEO;EAAc,CAAC,GAAGN,0BAA0B,CAAC,CAAC;EACtD,MAAM;IACFO,aAAa;IACbC,UAAU;IACVC,UAAU;IACVC,sBAAsB;IACtBC,gBAAgB;IAChBC,aAAa;IACbC,eAAe;IACfC,UAAU;IACVC,sBAAsB;IACtBC,mBAAmB;IACnBC,eAAe;IACfC,sBAAsB;IACtBC;EACJ,CAAC,GAAGrB,sBAAsB,CAAC;IACvBI,OAAO;IACPG,SAAS;IACTD,aAAa;IACbD,KAAK;IACLG;EACJ,CAAC,CAAC;EAEF,MAAMc,YAAY,GAAG3B,OAAO,CACxB,OAAO;IACHc,aAAa;IACbC,UAAU;IACVC,UAAU;IACVE,gBAAgB;IAChBU,SAAS,EAAET,aAAa;IACxBU,WAAW,EAAET,eAAe;IAC5BU,MAAM,EAAET,UAAU;IAClBU,kBAAkB,EAAET;EACxB,CAAC,CAAC,EACF,CACIR,aAAa,EACbC,UAAU,EACVI,aAAa,EACbC,eAAe,EACfC,UAAU,EACVC,sBAAsB,EACtBN,UAAU,EACVE,gBAAgB,CAExB,CAAC;EAED,MAAMc,OAAO,GAAGhC,OAAO,CACnB,MACIU,KAAK,CAACuB,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBAClBrC,KAAA,CAAAsC,aAAA,CAACjC,WAAW;IAACkC,GAAG,EAAEH,IAAI,CAACI,EAAG;IAACJ,IAAI,EAAEA,IAAK;IAACC,KAAK,EAAEA,KAAM;IAACI,SAAS,EAAE;EAAG,CAAE,CACxE,CAAC,EACN,CAAC7B,KAAK,CACV,CAAC;EAED,oBACIZ,KAAA,CAAAsC,aAAA,CAAChC,2BAA2B;IAACoC,KAAK,EAAEb;EAAa,gBAC7C7B,KAAA,CAAAsC,aAAA,CAAClC,kBAAkB;IAACuC,UAAU,EAAElB,mBAAoB;IAACO,MAAM,EAAEN;EAAgB,GACxEQ,OAAO,EACPd,gBAAgB,iBACbpB,KAAA,CAAAsC,aAAA,CAACnC,qBAAqB;IAClByC,SAAS,EAAEzB,sBAAuB;IAClC0B,WAAW,EAAE3B,UAAW;IACxB4B,UAAU,EAAC,OAAO;IAClBH,UAAU,EAAEhB,sBAAuB;IACnCK,MAAM,EAAEJ;EAAmB,CAC9B,CAEW,CACK,CAAC;AAEtC,CAAC;AAEDlB,YAAY,CAACqC,WAAW,GAAG,cAAc;AAEzC,4BAAe9C,IAAI,CAACS,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ import styled from 'styled-components';
2
+ export const StyledSidebarGroup = styled.div`
3
+ position: relative;
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: 2px;
7
+ `;
8
+ export const StyledSidebarDropZone = styled.div`
9
+ position: absolute;
10
+ left: ${({
11
+ $depth = 0
12
+ }) => $depth * 8}px;
13
+ right: 0;
14
+ height: 24px;
15
+ z-index: 1;
16
+ pointer-events: ${({
17
+ $isDragging
18
+ }) => $isDragging ? 'auto' : 'none'};
19
+
20
+ ${({
21
+ $placement = 'before'
22
+ }) => {
23
+ if ($placement === 'after') {
24
+ return `
25
+ top: 100%;
26
+ transform: translateY(-50%);
27
+ `;
28
+ }
29
+ if ($placement === 'inside') {
30
+ return `
31
+ top: 42px;
32
+ transform: translateY(-50%);
33
+ `;
34
+ }
35
+ return `
36
+ top: 0;
37
+ transform: translateY(-50%);
38
+ `;
39
+ }}
40
+
41
+ &::after {
42
+ content: '';
43
+ position: absolute;
44
+ left: 0;
45
+ right: 0;
46
+ top: 50%;
47
+ height: 2px;
48
+ transform: translateY(-50%);
49
+ border-radius: 999px;
50
+ background-color: ${({
51
+ $isActive
52
+ }) => $isActive ? 'rgba(255, 255, 255, 0.9)' : 'transparent'};
53
+ box-shadow: ${({
54
+ $isActive
55
+ }) => $isActive ? '0 0 0 1px rgba(255, 255, 255, 0.25)' : 'none'};
56
+ opacity: ${({
57
+ $isActive
58
+ }) => $isActive ? 1 : 0};
59
+ transition: opacity 0.15s ease;
60
+ }
61
+ `;
62
+ //# sourceMappingURL=SidebarGroup.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarGroup.styles.js","names":["styled","StyledSidebarGroup","div","StyledSidebarDropZone","$depth","$isDragging","$placement","$isActive"],"sources":["../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledSidebarGroup = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 2px;\n`;\n\ninterface StyledSidebarDropZoneProps {\n $depth?: number;\n $isActive: boolean;\n $isDragging: boolean;\n $placement?: 'before' | 'after' | 'inside';\n}\n\nexport const StyledSidebarDropZone = styled.div<StyledSidebarDropZoneProps>`\n position: absolute;\n left: ${({ $depth = 0 }) => $depth * 8}px;\n right: 0;\n height: 24px;\n z-index: 1;\n pointer-events: ${({ $isDragging }) => ($isDragging ? 'auto' : 'none')};\n\n ${({ $placement = 'before' }) => {\n if ($placement === 'after') {\n return `\n top: 100%;\n transform: translateY(-50%);\n `;\n }\n\n if ($placement === 'inside') {\n return `\n top: 42px;\n transform: translateY(-50%);\n `;\n }\n\n return `\n top: 0;\n transform: translateY(-50%);\n `;\n }}\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 2px;\n transform: translateY(-50%);\n border-radius: 999px;\n background-color: ${({ $isActive }) =>\n $isActive ? 'rgba(255, 255, 255, 0.9)' : 'transparent'};\n box-shadow: ${({ $isActive }) =>\n $isActive ? '0 0 0 1px rgba(255, 255, 255, 0.25)' : 'none'};\n opacity: ${({ $isActive }) => ($isActive ? 1 : 0)};\n transition: opacity 0.15s ease;\n }\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAAG;AAC5C;AACA;AACA;AACA;AACA,CAAC;AASD,OAAO,MAAMC,qBAAqB,GAAGH,MAAM,CAACE,GAA+B;AAC3E;AACA,YAAY,CAAC;EAAEE,MAAM,GAAG;AAAE,CAAC,KAAKA,MAAM,GAAG,CAAC;AAC1C;AACA;AACA;AACA,sBAAsB,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,MAAM,GAAG,MAAO;AAC1E;AACA,MAAM,CAAC;EAAEC,UAAU,GAAG;AAAS,CAAC,KAAK;EAC7B,IAAIA,UAAU,KAAK,OAAO,EAAE;IACxB,OAAO;AACnB;AACA;AACA,aAAa;EACL;EAEA,IAAIA,UAAU,KAAK,QAAQ,EAAE;IACzB,OAAO;AACnB;AACA;AACA,aAAa;EACL;EAEA,OAAO;AACf;AACA;AACA,SAAS;AACL,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,CAAC;EAAEC;AAAU,CAAC,KAC9BA,SAAS,GAAG,0BAA0B,GAAG,aAAa;AAClE,sBAAsB,CAAC;EAAEA;AAAU,CAAC,KACxBA,SAAS,GAAG,qCAAqC,GAAG,MAAM;AACtE,mBAAmB,CAAC;EAAEA;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACzD;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,257 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { areCoordinatesEqual, getScrollableAncestorElements, getSidebarItemPopupCoordinates } from './SidebarItem.utils';
3
+ import { isNavigationLayoutReorderTargetEqual } from '../../../NavigationLayout.utils';
4
+ const setDragMoveEffect = event => {
5
+ const {
6
+ dataTransfer
7
+ } = event;
8
+ dataTransfer.dropEffect = 'move';
9
+ };
10
+ const resolveSidebarContainer = item => {
11
+ if (!item) {
12
+ return null;
13
+ }
14
+ return item.closest('[data-navigation-sidebar-root="true"]') ?? document.getElementById('sidebar');
15
+ };
16
+ export const useSidebarItemPopup = ({
17
+ isDisabled,
18
+ shouldShowCollapsedLabel
19
+ }) => {
20
+ const [coordinates, setCoordinates] = useState(null);
21
+ const [isHovered, setIsHovered] = useState(false);
22
+ const [popupContainer, setPopupContainer] = useState(null);
23
+ const animationFrameIdRef = useRef(null);
24
+ const lastCoordinatesRef = useRef(null);
25
+ const itemRef = useRef(null);
26
+ const resetCoordinates = useCallback(() => {
27
+ lastCoordinatesRef.current = null;
28
+ setCoordinates(null);
29
+ }, []);
30
+ const resolvePopupContainer = useCallback(() => {
31
+ const nextContainer = resolveSidebarContainer(itemRef.current);
32
+ setPopupContainer(previousContainer => previousContainer === nextContainer ? previousContainer : nextContainer);
33
+ return nextContainer;
34
+ }, []);
35
+ const updateCoordinates = useCallback(() => {
36
+ const nextContainer = popupContainer ?? resolvePopupContainer();
37
+ const itemElement = itemRef.current;
38
+ if (!nextContainer || !itemElement) {
39
+ resetCoordinates();
40
+ return;
41
+ }
42
+ const nextCoordinates = getSidebarItemPopupCoordinates({
43
+ container: nextContainer,
44
+ item: itemElement
45
+ });
46
+ if (areCoordinatesEqual({
47
+ coordinatesA: lastCoordinatesRef.current,
48
+ coordinatesB: nextCoordinates
49
+ })) {
50
+ return;
51
+ }
52
+ lastCoordinatesRef.current = nextCoordinates;
53
+ setCoordinates(nextCoordinates);
54
+ }, [popupContainer, resetCoordinates, resolvePopupContainer]);
55
+ const scheduleCoordinatesUpdate = useCallback(() => {
56
+ if (animationFrameIdRef.current !== null) {
57
+ return;
58
+ }
59
+ animationFrameIdRef.current = requestAnimationFrame(() => {
60
+ animationFrameIdRef.current = null;
61
+ updateCoordinates();
62
+ });
63
+ }, [updateCoordinates]);
64
+ const handleMouseEnter = useCallback(() => {
65
+ resolvePopupContainer();
66
+ setIsHovered(true);
67
+ scheduleCoordinatesUpdate();
68
+ }, [resolvePopupContainer, scheduleCoordinatesUpdate]);
69
+ const handleMouseLeave = useCallback(() => {
70
+ setIsHovered(false);
71
+ resetCoordinates();
72
+ }, [resetCoordinates]);
73
+ useEffect(() => {
74
+ resolvePopupContainer();
75
+ }, [resolvePopupContainer]);
76
+ useEffect(() => {
77
+ if (!isHovered || isDisabled || !shouldShowCollapsedLabel) {
78
+ resetCoordinates();
79
+ return undefined;
80
+ }
81
+ const nextContainer = popupContainer ?? resolvePopupContainer();
82
+ const itemElement = itemRef.current;
83
+ if (!nextContainer || !itemElement) {
84
+ return undefined;
85
+ }
86
+ scheduleCoordinatesUpdate();
87
+ const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => {
88
+ scheduleCoordinatesUpdate();
89
+ });
90
+ resizeObserver?.observe(nextContainer);
91
+ resizeObserver?.observe(itemElement);
92
+ const scrollableElements = getScrollableAncestorElements({
93
+ element: itemElement,
94
+ boundaryElement: nextContainer
95
+ });
96
+ scrollableElements.forEach(element => {
97
+ element.addEventListener('scroll', scheduleCoordinatesUpdate, {
98
+ passive: true
99
+ });
100
+ });
101
+ window.addEventListener('resize', scheduleCoordinatesUpdate);
102
+ return () => {
103
+ scrollableElements.forEach(element => {
104
+ element.removeEventListener('scroll', scheduleCoordinatesUpdate);
105
+ });
106
+ window.removeEventListener('resize', scheduleCoordinatesUpdate);
107
+ resizeObserver?.disconnect();
108
+ if (animationFrameIdRef.current !== null) {
109
+ cancelAnimationFrame(animationFrameIdRef.current);
110
+ animationFrameIdRef.current = null;
111
+ }
112
+ };
113
+ }, [isDisabled, isHovered, popupContainer, resetCoordinates, resolvePopupContainer, scheduleCoordinatesUpdate, shouldShowCollapsedLabel]);
114
+ return {
115
+ coordinates,
116
+ handleMouseEnter,
117
+ handleMouseLeave,
118
+ isHovered,
119
+ itemRef,
120
+ popupContainer,
121
+ shouldRenderPopup: !isDisabled && !!shouldShowCollapsedLabel && isHovered && !!coordinates
122
+ };
123
+ };
124
+ export const useSidebarItemReorder = ({
125
+ childItems,
126
+ draggedItemId,
127
+ dropTarget,
128
+ id,
129
+ index,
130
+ isDisabled,
131
+ isReorderEnabled,
132
+ onDragEnd,
133
+ onDragStart,
134
+ onDrop,
135
+ onDropInside,
136
+ onDropTargetChange,
137
+ parentIds
138
+ }) => {
139
+ const childParentIds = useMemo(() => [...parentIds, id], [id, parentIds]);
140
+ const canDragItem = isReorderEnabled && !isDisabled;
141
+ const canDropInsideItem = isReorderEnabled && !isDisabled;
142
+ const currentItem = useMemo(() => ({
143
+ itemId: id,
144
+ parentIds,
145
+ index
146
+ }), [id, index, parentIds]);
147
+ const beforeTarget = useMemo(() => ({
148
+ itemId: id,
149
+ parentIds,
150
+ index,
151
+ placement: 'before'
152
+ }), [id, index, parentIds]);
153
+ const insideTarget = useMemo(() => ({
154
+ itemId: id,
155
+ parentIds: childParentIds,
156
+ index: childItems?.length ?? 0,
157
+ placement: 'inside'
158
+ }), [childItems, childParentIds, id]);
159
+ const childListEndTarget = useMemo(() => {
160
+ const lastChild = childItems?.[childItems.length - 1];
161
+ if (!lastChild) {
162
+ return null;
163
+ }
164
+ return {
165
+ itemId: lastChild.id,
166
+ parentIds: childParentIds,
167
+ index: childItems.length,
168
+ placement: 'after'
169
+ };
170
+ }, [childItems, childParentIds]);
171
+ const isBeforeDropTargetActive = useMemo(() => isNavigationLayoutReorderTargetEqual({
172
+ targetA: dropTarget,
173
+ targetB: beforeTarget
174
+ }), [beforeTarget, dropTarget]);
175
+ const isInsideDropTargetActive = useMemo(() => isNavigationLayoutReorderTargetEqual({
176
+ targetA: dropTarget,
177
+ targetB: insideTarget
178
+ }), [dropTarget, insideTarget]);
179
+ const isChildListEndTargetActive = useMemo(() => isNavigationLayoutReorderTargetEqual({
180
+ targetA: dropTarget,
181
+ targetB: childListEndTarget
182
+ }), [childListEndTarget, dropTarget]);
183
+ const handleDragStart = useCallback(event => {
184
+ if (!canDragItem) {
185
+ return;
186
+ }
187
+ onDragStart(event, currentItem);
188
+ }, [canDragItem, currentItem, onDragStart]);
189
+ const handleResolvedDragEnd = useCallback(() => {
190
+ if (!canDragItem) {
191
+ return;
192
+ }
193
+ onDragEnd();
194
+ }, [canDragItem, onDragEnd]);
195
+ const handleBeforeDragOver = useCallback(event => {
196
+ event.preventDefault();
197
+ setDragMoveEffect(event);
198
+ onDropTargetChange(beforeTarget);
199
+ }, [beforeTarget, onDropTargetChange]);
200
+ const handleBeforeDrop = useCallback(event => {
201
+ event.preventDefault();
202
+ event.stopPropagation();
203
+ onDrop(beforeTarget);
204
+ }, [beforeTarget, onDrop]);
205
+ const handleInsideDragOver = useCallback(event => {
206
+ if (!canDropInsideItem) {
207
+ return;
208
+ }
209
+ event.preventDefault();
210
+ setDragMoveEffect(event);
211
+ onDropTargetChange(insideTarget);
212
+ }, [canDropInsideItem, insideTarget, onDropTargetChange]);
213
+ const handleInsideDrop = useCallback(event => {
214
+ if (!canDropInsideItem) {
215
+ return;
216
+ }
217
+ event.preventDefault();
218
+ event.stopPropagation();
219
+ onDropInside?.();
220
+ onDrop(insideTarget);
221
+ }, [canDropInsideItem, insideTarget, onDrop, onDropInside]);
222
+ const handleChildListEndDragOver = useCallback(event => {
223
+ if (!childListEndTarget) {
224
+ return;
225
+ }
226
+ event.preventDefault();
227
+ setDragMoveEffect(event);
228
+ onDropTargetChange(childListEndTarget);
229
+ }, [childListEndTarget, onDropTargetChange]);
230
+ const handleChildListEndDrop = useCallback(event => {
231
+ if (!childListEndTarget) {
232
+ return;
233
+ }
234
+ event.preventDefault();
235
+ event.stopPropagation();
236
+ onDrop(childListEndTarget);
237
+ }, [childListEndTarget, onDrop]);
238
+ return {
239
+ canDragItem,
240
+ canDropInsideItem,
241
+ childParentIds,
242
+ childListEndTarget,
243
+ handleBeforeDragOver,
244
+ handleBeforeDrop,
245
+ handleChildListEndDragOver,
246
+ handleChildListEndDrop,
247
+ handleDragEnd: handleResolvedDragEnd,
248
+ handleDragStart,
249
+ handleInsideDragOver,
250
+ handleInsideDrop,
251
+ isBeforeDropTargetActive,
252
+ isChildListEndTargetActive,
253
+ isDragging: draggedItemId === id,
254
+ isInsideDropTargetActive
255
+ };
256
+ };
257
+ //# sourceMappingURL=SidebarItem.hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItem.hooks.js","names":["useCallback","useEffect","useMemo","useRef","useState","areCoordinatesEqual","getScrollableAncestorElements","getSidebarItemPopupCoordinates","isNavigationLayoutReorderTargetEqual","setDragMoveEffect","event","dataTransfer","dropEffect","resolveSidebarContainer","item","closest","document","getElementById","useSidebarItemPopup","isDisabled","shouldShowCollapsedLabel","coordinates","setCoordinates","isHovered","setIsHovered","popupContainer","setPopupContainer","animationFrameIdRef","lastCoordinatesRef","itemRef","resetCoordinates","current","resolvePopupContainer","nextContainer","previousContainer","updateCoordinates","itemElement","nextCoordinates","container","coordinatesA","coordinatesB","scheduleCoordinatesUpdate","requestAnimationFrame","handleMouseEnter","handleMouseLeave","undefined","resizeObserver","ResizeObserver","observe","scrollableElements","element","boundaryElement","forEach","addEventListener","passive","window","removeEventListener","disconnect","cancelAnimationFrame","shouldRenderPopup","useSidebarItemReorder","childItems","draggedItemId","dropTarget","id","index","isReorderEnabled","onDragEnd","onDragStart","onDrop","onDropInside","onDropTargetChange","parentIds","childParentIds","canDragItem","canDropInsideItem","currentItem","itemId","beforeTarget","placement","insideTarget","length","childListEndTarget","lastChild","isBeforeDropTargetActive","targetA","targetB","isInsideDropTargetActive","isChildListEndTargetActive","handleDragStart","handleResolvedDragEnd","handleBeforeDragOver","preventDefault","handleBeforeDrop","stopPropagation","handleInsideDragOver","handleInsideDrop","handleChildListEndDragOver","handleChildListEndDrop","handleDragEnd","isDragging"],"sources":["../../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n areCoordinatesEqual,\n Coordinates,\n getScrollableAncestorElements,\n getSidebarItemPopupCoordinates,\n} from './SidebarItem.utils';\nimport {\n NavigationLayoutItem,\n NavigationLayoutItemReorderSource,\n NavigationLayoutItemReorderTarget,\n} from '../../../NavigationLayout.types';\nimport { isNavigationLayoutReorderTargetEqual } from '../../../NavigationLayout.utils';\n\nexport interface UseSidebarItemPopupOptions {\n isDisabled: boolean;\n shouldShowCollapsedLabel?: boolean;\n}\n\nexport interface UseSidebarItemPopupResult {\n coordinates: Coordinates | null;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n isHovered: boolean;\n itemRef: RefObject<HTMLDivElement>;\n popupContainer: HTMLElement | null;\n shouldRenderPopup: boolean;\n}\n\nexport interface UseSidebarItemReorderOptions {\n childItems: NavigationLayoutItem['children'];\n draggedItemId?: NavigationLayoutItem['id'];\n dropTarget: NavigationLayoutItemReorderTarget | null;\n id: NavigationLayoutItem['id'];\n index: number;\n isDisabled?: NavigationLayoutItem['isDisabled'];\n isReorderEnabled: boolean;\n onDragEnd: VoidFunction;\n onDragStart: (\n event: React.DragEvent<HTMLDivElement>,\n item: NavigationLayoutItemReorderSource,\n ) => void;\n onDrop: (target: NavigationLayoutItemReorderTarget) => void;\n onDropInside?: VoidFunction;\n onDropTargetChange: (target: NavigationLayoutItemReorderTarget) => void;\n parentIds: NavigationLayoutItem['id'][];\n}\n\nexport interface UseSidebarItemReorderResult {\n canDragItem: boolean;\n canDropInsideItem: boolean;\n childParentIds: NavigationLayoutItem['id'][];\n childListEndTarget: NavigationLayoutItemReorderTarget | null;\n handleBeforeDragOver: (event: React.DragEvent<HTMLDivElement>) => void;\n handleBeforeDrop: (event: React.DragEvent<HTMLDivElement>) => void;\n handleChildListEndDragOver: (event: React.DragEvent<HTMLDivElement>) => void;\n handleChildListEndDrop: (event: React.DragEvent<HTMLDivElement>) => void;\n handleDragEnd: VoidFunction;\n handleDragStart: (event: React.DragEvent<HTMLDivElement>) => void;\n handleInsideDragOver: (event: React.DragEvent<HTMLDivElement>) => void;\n handleInsideDrop: (event: React.DragEvent<HTMLDivElement>) => void;\n isBeforeDropTargetActive: boolean;\n isChildListEndTargetActive: boolean;\n isDragging: boolean;\n isInsideDropTargetActive: boolean;\n}\n\nconst setDragMoveEffect = (event: React.DragEvent<HTMLDivElement>): void => {\n const { dataTransfer } = event;\n\n dataTransfer.dropEffect = 'move';\n};\n\nconst resolveSidebarContainer = (item: HTMLDivElement | null): HTMLElement | null => {\n if (!item) {\n return null;\n }\n\n return (\n item.closest<HTMLElement>('[data-navigation-sidebar-root=\"true\"]') ??\n document.getElementById('sidebar')\n );\n};\n\nexport const useSidebarItemPopup = ({\n isDisabled,\n shouldShowCollapsedLabel,\n}: UseSidebarItemPopupOptions): UseSidebarItemPopupResult => {\n const [coordinates, setCoordinates] = useState<Coordinates | null>(null);\n const [isHovered, setIsHovered] = useState(false);\n const [popupContainer, setPopupContainer] = useState<HTMLElement | null>(null);\n\n const animationFrameIdRef = useRef<number | null>(null);\n const lastCoordinatesRef = useRef<Coordinates | null>(null);\n const itemRef = useRef<HTMLDivElement>(null);\n\n const resetCoordinates = useCallback(() => {\n lastCoordinatesRef.current = null;\n setCoordinates(null);\n }, []);\n\n const resolvePopupContainer = useCallback(() => {\n const nextContainer = resolveSidebarContainer(itemRef.current);\n\n setPopupContainer((previousContainer) =>\n previousContainer === nextContainer ? previousContainer : nextContainer,\n );\n\n return nextContainer;\n }, []);\n\n const updateCoordinates = useCallback(() => {\n const nextContainer = popupContainer ?? resolvePopupContainer();\n const itemElement = itemRef.current;\n\n if (!nextContainer || !itemElement) {\n resetCoordinates();\n\n return;\n }\n\n const nextCoordinates = getSidebarItemPopupCoordinates({\n container: nextContainer,\n item: itemElement,\n });\n\n if (\n areCoordinatesEqual({\n coordinatesA: lastCoordinatesRef.current,\n coordinatesB: nextCoordinates,\n })\n ) {\n return;\n }\n\n lastCoordinatesRef.current = nextCoordinates;\n setCoordinates(nextCoordinates);\n }, [popupContainer, resetCoordinates, resolvePopupContainer]);\n\n const scheduleCoordinatesUpdate = useCallback(() => {\n if (animationFrameIdRef.current !== null) {\n return;\n }\n\n animationFrameIdRef.current = requestAnimationFrame(() => {\n animationFrameIdRef.current = null;\n updateCoordinates();\n });\n }, [updateCoordinates]);\n\n const handleMouseEnter = useCallback(() => {\n resolvePopupContainer();\n setIsHovered(true);\n scheduleCoordinatesUpdate();\n }, [resolvePopupContainer, scheduleCoordinatesUpdate]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n resetCoordinates();\n }, [resetCoordinates]);\n\n useEffect(() => {\n resolvePopupContainer();\n }, [resolvePopupContainer]);\n\n useEffect(() => {\n if (!isHovered || isDisabled || !shouldShowCollapsedLabel) {\n resetCoordinates();\n\n return undefined;\n }\n\n const nextContainer = popupContainer ?? resolvePopupContainer();\n const itemElement = itemRef.current;\n\n if (!nextContainer || !itemElement) {\n return undefined;\n }\n\n scheduleCoordinatesUpdate();\n\n const resizeObserver =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => {\n scheduleCoordinatesUpdate();\n });\n\n resizeObserver?.observe(nextContainer);\n resizeObserver?.observe(itemElement);\n\n const scrollableElements = getScrollableAncestorElements({\n element: itemElement,\n boundaryElement: nextContainer,\n });\n\n scrollableElements.forEach((element) => {\n element.addEventListener('scroll', scheduleCoordinatesUpdate, { passive: true });\n });\n\n window.addEventListener('resize', scheduleCoordinatesUpdate);\n\n return () => {\n scrollableElements.forEach((element) => {\n element.removeEventListener('scroll', scheduleCoordinatesUpdate);\n });\n\n window.removeEventListener('resize', scheduleCoordinatesUpdate);\n resizeObserver?.disconnect();\n\n if (animationFrameIdRef.current !== null) {\n cancelAnimationFrame(animationFrameIdRef.current);\n animationFrameIdRef.current = null;\n }\n };\n }, [\n isDisabled,\n isHovered,\n popupContainer,\n resetCoordinates,\n resolvePopupContainer,\n scheduleCoordinatesUpdate,\n shouldShowCollapsedLabel,\n ]);\n\n return {\n coordinates,\n handleMouseEnter,\n handleMouseLeave,\n isHovered,\n itemRef,\n popupContainer,\n shouldRenderPopup: !isDisabled && !!shouldShowCollapsedLabel && isHovered && !!coordinates,\n };\n};\n\nexport const useSidebarItemReorder = ({\n childItems,\n draggedItemId,\n dropTarget,\n id,\n index,\n isDisabled,\n isReorderEnabled,\n onDragEnd,\n onDragStart,\n onDrop,\n onDropInside,\n onDropTargetChange,\n parentIds,\n}: UseSidebarItemReorderOptions): UseSidebarItemReorderResult => {\n const childParentIds = useMemo(() => [...parentIds, id], [id, parentIds]);\n const canDragItem = isReorderEnabled && !isDisabled;\n const canDropInsideItem = isReorderEnabled && !isDisabled;\n\n const currentItem = useMemo<NavigationLayoutItemReorderSource>(\n () => ({\n itemId: id,\n parentIds,\n index,\n }),\n [id, index, parentIds],\n );\n\n const beforeTarget = useMemo<NavigationLayoutItemReorderTarget>(\n () => ({\n itemId: id,\n parentIds,\n index,\n placement: 'before',\n }),\n [id, index, parentIds],\n );\n\n const insideTarget = useMemo<NavigationLayoutItemReorderTarget>(\n () => ({\n itemId: id,\n parentIds: childParentIds,\n index: childItems?.length ?? 0,\n placement: 'inside',\n }),\n [childItems, childParentIds, id],\n );\n\n const childListEndTarget = useMemo<NavigationLayoutItemReorderTarget | null>(() => {\n const lastChild = childItems?.[childItems.length - 1];\n\n if (!lastChild) {\n return null;\n }\n\n return {\n itemId: lastChild.id,\n parentIds: childParentIds,\n index: childItems.length,\n placement: 'after',\n };\n }, [childItems, childParentIds]);\n\n const isBeforeDropTargetActive = useMemo(\n () =>\n isNavigationLayoutReorderTargetEqual({\n targetA: dropTarget,\n targetB: beforeTarget,\n }),\n [beforeTarget, dropTarget],\n );\n\n const isInsideDropTargetActive = useMemo(\n () =>\n isNavigationLayoutReorderTargetEqual({\n targetA: dropTarget,\n targetB: insideTarget,\n }),\n [dropTarget, insideTarget],\n );\n\n const isChildListEndTargetActive = useMemo(\n () =>\n isNavigationLayoutReorderTargetEqual({\n targetA: dropTarget,\n targetB: childListEndTarget,\n }),\n [childListEndTarget, dropTarget],\n );\n\n const handleDragStart = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!canDragItem) {\n return;\n }\n\n onDragStart(event, currentItem);\n },\n [canDragItem, currentItem, onDragStart],\n );\n\n const handleResolvedDragEnd = useCallback((): void => {\n if (!canDragItem) {\n return;\n }\n\n onDragEnd();\n }, [canDragItem, onDragEnd]);\n\n const handleBeforeDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n event.preventDefault();\n setDragMoveEffect(event);\n onDropTargetChange(beforeTarget);\n },\n [beforeTarget, onDropTargetChange],\n );\n\n const handleBeforeDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n event.preventDefault();\n event.stopPropagation();\n onDrop(beforeTarget);\n },\n [beforeTarget, onDrop],\n );\n\n const handleInsideDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!canDropInsideItem) {\n return;\n }\n\n event.preventDefault();\n setDragMoveEffect(event);\n onDropTargetChange(insideTarget);\n },\n [canDropInsideItem, insideTarget, onDropTargetChange],\n );\n\n const handleInsideDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!canDropInsideItem) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n onDropInside?.();\n onDrop(insideTarget);\n },\n [canDropInsideItem, insideTarget, onDrop, onDropInside],\n );\n\n const handleChildListEndDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!childListEndTarget) {\n return;\n }\n\n event.preventDefault();\n setDragMoveEffect(event);\n onDropTargetChange(childListEndTarget);\n },\n [childListEndTarget, onDropTargetChange],\n );\n\n const handleChildListEndDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!childListEndTarget) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n onDrop(childListEndTarget);\n },\n [childListEndTarget, onDrop],\n );\n\n return {\n canDragItem,\n canDropInsideItem,\n childParentIds,\n childListEndTarget,\n handleBeforeDragOver,\n handleBeforeDrop,\n handleChildListEndDragOver,\n handleChildListEndDrop,\n handleDragEnd: handleResolvedDragEnd,\n handleDragStart,\n handleInsideDragOver,\n handleInsideDrop,\n isBeforeDropTargetActive,\n isChildListEndTargetActive,\n isDragging: draggedItemId === id,\n isInsideDropTargetActive,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,186 @@
1
+ import React, { memo, useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { ExpandableContent, Icon, Tooltip } from '@chayns-components/core';
3
+ import { StyledSidebarItem, StyledSidebarItemChildren, StyledSidebarItemHead, StyledSidebarItemHeadContent, StyledSidebarItemIcon, StyledSidebarItemIconImage, StyledSidebarItemLabel, StyledMotionSidebarOpenIcon, StyledSidebarItemPopup } from './SidebarItem.styles';
4
+ import { isItemOrChildSelected } from './SidebarItem.utils';
5
+ import { createPortal } from 'react-dom';
6
+ import { AnimatePresence } from 'motion/react';
7
+ import { useSidebarItemPopup, useSidebarItemReorder } from './SidebarItem.hooks';
8
+ import { StyledSidebarDropZone } from '../SidebarGroup.styles';
9
+ import { useNavigationSidebarContext } from '../../NavigationSidebar.context';
10
+ import { useSidebarGroupReorderContext } from '../SidebarGroup.context';
11
+ const SidebarItem = ({
12
+ item,
13
+ index,
14
+ parentIds,
15
+ shouldShowCollapsedLabel: shouldShowCollapsedLabelProp
16
+ }) => {
17
+ const {
18
+ children: childItems,
19
+ disabledReason,
20
+ icons,
21
+ id,
22
+ imageElement,
23
+ imageUrl,
24
+ isDisabled,
25
+ label
26
+ } = item;
27
+ const [shouldShowChildren, setShouldShowChildren] = useState(false);
28
+ const {
29
+ color,
30
+ isCompact,
31
+ onItemClick,
32
+ selectedItemId,
33
+ shouldShowCollapsedLabel
34
+ } = useNavigationSidebarContext();
35
+ const {
36
+ draggedItemId,
37
+ dropTarget,
38
+ isReorderEnabled,
39
+ onDragEnd,
40
+ onDragStart,
41
+ onDrop,
42
+ onDropTargetChange
43
+ } = useSidebarGroupReorderContext();
44
+ const resolvedShouldShowCollapsedLabel = shouldShowCollapsedLabelProp ?? shouldShowCollapsedLabel;
45
+ const {
46
+ coordinates,
47
+ handleMouseEnter,
48
+ handleMouseLeave,
49
+ isHovered,
50
+ itemRef,
51
+ popupContainer,
52
+ shouldRenderPopup
53
+ } = useSidebarItemPopup({
54
+ isDisabled: Boolean(isDisabled),
55
+ shouldShowCollapsedLabel: resolvedShouldShowCollapsedLabel
56
+ });
57
+ const {
58
+ canDragItem,
59
+ canDropInsideItem,
60
+ childParentIds,
61
+ childListEndTarget,
62
+ handleBeforeDragOver,
63
+ handleBeforeDrop,
64
+ handleChildListEndDragOver,
65
+ handleChildListEndDrop,
66
+ handleDragEnd,
67
+ handleDragStart,
68
+ handleInsideDragOver,
69
+ handleInsideDrop,
70
+ isBeforeDropTargetActive,
71
+ isChildListEndTargetActive,
72
+ isDragging,
73
+ isInsideDropTargetActive
74
+ } = useSidebarItemReorder({
75
+ childItems,
76
+ draggedItemId,
77
+ dropTarget,
78
+ id,
79
+ index,
80
+ isDisabled,
81
+ isReorderEnabled,
82
+ onDragEnd,
83
+ onDragStart,
84
+ onDrop,
85
+ onDropInside: () => setShouldShowChildren(true),
86
+ onDropTargetChange,
87
+ parentIds
88
+ });
89
+ const isSelected = useMemo(() => isItemOrChildSelected(item, selectedItemId), [item, selectedItemId]);
90
+ useEffect(() => {
91
+ if (isCompact) {
92
+ setShouldShowChildren(false);
93
+ }
94
+ }, [isCompact]);
95
+ const handleClick = useCallback(() => {
96
+ if (isDisabled || typeof onItemClick !== 'function') {
97
+ return;
98
+ }
99
+ onItemClick(id, parentIds);
100
+ }, [id, isDisabled, onItemClick, parentIds]);
101
+ const handleOpenIconClick = useCallback(event => {
102
+ event.stopPropagation();
103
+ setShouldShowChildren(previousValue => !previousValue);
104
+ }, []);
105
+ const renderChildItem = useCallback((childItem, childIndex) => /*#__PURE__*/React.createElement(SidebarItem, {
106
+ key: childItem.id,
107
+ item: childItem,
108
+ index: childIndex,
109
+ parentIds: childParentIds,
110
+ shouldShowCollapsedLabel: false
111
+ }), [childParentIds]);
112
+ const children = useMemo(() => {
113
+ if (!childItems?.length) {
114
+ return null;
115
+ }
116
+ return childItems.map(renderChildItem);
117
+ }, [childItems, renderChildItem]);
118
+ return /*#__PURE__*/React.createElement(StyledSidebarItem, null, isReorderEnabled && /*#__PURE__*/React.createElement(StyledSidebarDropZone, {
119
+ $depth: parentIds.length,
120
+ $isActive: isBeforeDropTargetActive,
121
+ $isDragging: !!draggedItemId,
122
+ $placement: "before",
123
+ onDragOver: handleBeforeDragOver,
124
+ onDrop: handleBeforeDrop
125
+ }), /*#__PURE__*/React.createElement(Tooltip, {
126
+ item: {
127
+ text: disabledReason ?? ''
128
+ },
129
+ isDisabled: !disabledReason,
130
+ shouldUseFullWidth: true
131
+ }, /*#__PURE__*/React.createElement(StyledSidebarItemHead, {
132
+ ref: itemRef,
133
+ $shouldHighlight: !isDisabled && (isHovered || isSelected),
134
+ $isDisabled: isDisabled,
135
+ $hasDisabledReason: !!disabledReason,
136
+ $isDragging: isDragging,
137
+ $isReorderable: canDragItem,
138
+ draggable: canDragItem,
139
+ onDragEnd: handleDragEnd,
140
+ onDragStart: handleDragStart,
141
+ onMouseEnter: handleMouseEnter,
142
+ onMouseLeave: handleMouseLeave,
143
+ onClick: handleClick
144
+ }, /*#__PURE__*/React.createElement(StyledSidebarItemHeadContent, null, /*#__PURE__*/React.createElement(StyledSidebarItemIcon, null, imageUrl && /*#__PURE__*/React.createElement(StyledSidebarItemIconImage, {
145
+ src: imageUrl
146
+ }), imageElement, icons && /*#__PURE__*/React.createElement(Icon, {
147
+ icons: icons,
148
+ size: 21,
149
+ color: color
150
+ })), /*#__PURE__*/React.createElement(StyledSidebarItemLabel, null, label)), !!children && !isCompact && !isDisabled && /*#__PURE__*/React.createElement(StyledMotionSidebarOpenIcon, {
151
+ initial: false,
152
+ animate: {
153
+ rotate: shouldShowChildren ? 180 : 0
154
+ },
155
+ transition: {
156
+ type: 'tween'
157
+ },
158
+ onClick: handleOpenIconClick
159
+ }, /*#__PURE__*/React.createElement(Icon, {
160
+ icons: ['fa fa-chevron-down'],
161
+ color: color
162
+ })))), canDropInsideItem && /*#__PURE__*/React.createElement(StyledSidebarDropZone, {
163
+ $depth: childParentIds.length,
164
+ $isActive: isInsideDropTargetActive,
165
+ $isDragging: !!draggedItemId,
166
+ $placement: "inside",
167
+ onDragOver: handleInsideDragOver,
168
+ onDrop: handleInsideDrop
169
+ }), !!children && /*#__PURE__*/React.createElement(ExpandableContent, {
170
+ isOpen: shouldShowChildren
171
+ }, /*#__PURE__*/React.createElement(StyledSidebarItemChildren, null, children, isReorderEnabled && childListEndTarget && /*#__PURE__*/React.createElement(StyledSidebarDropZone, {
172
+ $depth: childParentIds.length,
173
+ $isActive: isChildListEndTargetActive,
174
+ $isDragging: !!draggedItemId,
175
+ $placement: "after",
176
+ onDragOver: handleChildListEndDragOver,
177
+ onDrop: handleChildListEndDrop
178
+ }))), popupContainer && /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(AnimatePresence, {
179
+ initial: false
180
+ }, shouldRenderPopup && coordinates && /*#__PURE__*/React.createElement(StyledSidebarItemPopup, {
181
+ $coordinates: coordinates
182
+ }, label)), popupContainer));
183
+ };
184
+ SidebarItem.displayName = 'SidebarItem';
185
+ export default /*#__PURE__*/memo(SidebarItem);
186
+ //# sourceMappingURL=SidebarItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItem.js","names":["React","memo","useCallback","useEffect","useMemo","useState","ExpandableContent","Icon","Tooltip","StyledSidebarItem","StyledSidebarItemChildren","StyledSidebarItemHead","StyledSidebarItemHeadContent","StyledSidebarItemIcon","StyledSidebarItemIconImage","StyledSidebarItemLabel","StyledMotionSidebarOpenIcon","StyledSidebarItemPopup","isItemOrChildSelected","createPortal","AnimatePresence","useSidebarItemPopup","useSidebarItemReorder","StyledSidebarDropZone","useNavigationSidebarContext","useSidebarGroupReorderContext","SidebarItem","item","index","parentIds","shouldShowCollapsedLabel","shouldShowCollapsedLabelProp","children","childItems","disabledReason","icons","id","imageElement","imageUrl","isDisabled","label","shouldShowChildren","setShouldShowChildren","color","isCompact","onItemClick","selectedItemId","draggedItemId","dropTarget","isReorderEnabled","onDragEnd","onDragStart","onDrop","onDropTargetChange","resolvedShouldShowCollapsedLabel","coordinates","handleMouseEnter","handleMouseLeave","isHovered","itemRef","popupContainer","shouldRenderPopup","Boolean","canDragItem","canDropInsideItem","childParentIds","childListEndTarget","handleBeforeDragOver","handleBeforeDrop","handleChildListEndDragOver","handleChildListEndDrop","handleDragEnd","handleDragStart","handleInsideDragOver","handleInsideDrop","isBeforeDropTargetActive","isChildListEndTargetActive","isDragging","isInsideDropTargetActive","onDropInside","isSelected","handleClick","handleOpenIconClick","event","stopPropagation","previousValue","renderChildItem","childItem","childIndex","createElement","key","length","map","$depth","$isActive","$isDragging","$placement","onDragOver","text","shouldUseFullWidth","ref","$shouldHighlight","$isDisabled","$hasDisabledReason","$isReorderable","draggable","onMouseEnter","onMouseLeave","onClick","src","size","initial","animate","rotate","transition","type","isOpen","$coordinates","displayName"],"sources":["../../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.tsx"],"sourcesContent":["import React, { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ExpandableContent, Icon, Tooltip } from '@chayns-components/core';\nimport {\n StyledSidebarItem,\n StyledSidebarItemChildren,\n StyledSidebarItemHead,\n StyledSidebarItemHeadContent,\n StyledSidebarItemIcon,\n StyledSidebarItemIconImage,\n StyledSidebarItemLabel,\n StyledMotionSidebarOpenIcon,\n StyledSidebarItemPopup,\n} from './SidebarItem.styles';\nimport { NavigationLayoutItem } from '../../../NavigationLayout.types';\nimport { isItemOrChildSelected } from './SidebarItem.utils';\nimport { createPortal } from 'react-dom';\nimport { AnimatePresence } from 'motion/react';\nimport { useSidebarItemPopup, useSidebarItemReorder } from './SidebarItem.hooks';\nimport { StyledSidebarDropZone } from '../SidebarGroup.styles';\nimport { useNavigationSidebarContext } from '../../NavigationSidebar.context';\nimport { useSidebarGroupReorderContext } from '../SidebarGroup.context';\n\ninterface SidebarItemProps {\n item: NavigationLayoutItem;\n index: number;\n parentIds: NavigationLayoutItem['id'][];\n shouldShowCollapsedLabel?: boolean;\n}\n\nconst SidebarItem: FC<SidebarItemProps> = ({\n item,\n index,\n parentIds,\n shouldShowCollapsedLabel: shouldShowCollapsedLabelProp,\n}) => {\n const {\n children: childItems,\n disabledReason,\n icons,\n id,\n imageElement,\n imageUrl,\n isDisabled,\n label,\n } = item;\n const [shouldShowChildren, setShouldShowChildren] = useState(false);\n const { color, isCompact, onItemClick, selectedItemId, shouldShowCollapsedLabel } =\n useNavigationSidebarContext();\n const {\n draggedItemId,\n dropTarget,\n isReorderEnabled,\n onDragEnd,\n onDragStart,\n onDrop,\n onDropTargetChange,\n } = useSidebarGroupReorderContext();\n const resolvedShouldShowCollapsedLabel =\n shouldShowCollapsedLabelProp ?? shouldShowCollapsedLabel;\n const {\n coordinates,\n handleMouseEnter,\n handleMouseLeave,\n isHovered,\n itemRef,\n popupContainer,\n shouldRenderPopup,\n } = useSidebarItemPopup({\n isDisabled: Boolean(isDisabled),\n shouldShowCollapsedLabel: resolvedShouldShowCollapsedLabel,\n });\n const {\n canDragItem,\n canDropInsideItem,\n childParentIds,\n childListEndTarget,\n handleBeforeDragOver,\n handleBeforeDrop,\n handleChildListEndDragOver,\n handleChildListEndDrop,\n handleDragEnd,\n handleDragStart,\n handleInsideDragOver,\n handleInsideDrop,\n isBeforeDropTargetActive,\n isChildListEndTargetActive,\n isDragging,\n isInsideDropTargetActive,\n } = useSidebarItemReorder({\n childItems,\n draggedItemId,\n dropTarget,\n id,\n index,\n isDisabled,\n isReorderEnabled,\n onDragEnd,\n onDragStart,\n onDrop,\n onDropInside: () => setShouldShowChildren(true),\n onDropTargetChange,\n parentIds,\n });\n\n const isSelected = useMemo(\n () => isItemOrChildSelected(item, selectedItemId),\n [item, selectedItemId],\n );\n\n useEffect(() => {\n if (isCompact) {\n setShouldShowChildren(false);\n }\n }, [isCompact]);\n\n const handleClick = useCallback(() => {\n if (isDisabled || typeof onItemClick !== 'function') {\n return;\n }\n\n onItemClick(id, parentIds);\n }, [id, isDisabled, onItemClick, parentIds]);\n\n const handleOpenIconClick = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n setShouldShowChildren((previousValue) => !previousValue);\n }, []);\n\n const renderChildItem = useCallback(\n (childItem: NavigationLayoutItem, childIndex: number) => (\n <SidebarItem\n key={childItem.id}\n item={childItem}\n index={childIndex}\n parentIds={childParentIds}\n shouldShowCollapsedLabel={false}\n />\n ),\n [childParentIds],\n );\n\n const children = useMemo(() => {\n if (!childItems?.length) {\n return null;\n }\n\n return childItems.map(renderChildItem);\n }, [childItems, renderChildItem]);\n\n return (\n <StyledSidebarItem>\n {isReorderEnabled && (\n <StyledSidebarDropZone\n $depth={parentIds.length}\n $isActive={isBeforeDropTargetActive}\n $isDragging={!!draggedItemId}\n $placement=\"before\"\n onDragOver={handleBeforeDragOver}\n onDrop={handleBeforeDrop}\n />\n )}\n <Tooltip\n item={{ text: disabledReason ?? '' }}\n isDisabled={!disabledReason}\n shouldUseFullWidth\n >\n <StyledSidebarItemHead\n ref={itemRef}\n $shouldHighlight={!isDisabled && (isHovered || isSelected)}\n $isDisabled={isDisabled}\n $hasDisabledReason={!!disabledReason}\n $isDragging={isDragging}\n $isReorderable={canDragItem}\n draggable={canDragItem}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n >\n <StyledSidebarItemHeadContent>\n <StyledSidebarItemIcon>\n {imageUrl && <StyledSidebarItemIconImage src={imageUrl} />}\n {imageElement}\n {icons && <Icon icons={icons} size={21} color={color} />}\n </StyledSidebarItemIcon>\n <StyledSidebarItemLabel>{label}</StyledSidebarItemLabel>\n </StyledSidebarItemHeadContent>\n {!!children && !isCompact && !isDisabled && (\n <StyledMotionSidebarOpenIcon\n initial={false}\n animate={{ rotate: shouldShowChildren ? 180 : 0 }}\n transition={{ type: 'tween' }}\n onClick={handleOpenIconClick}\n >\n <Icon icons={['fa fa-chevron-down']} color={color} />\n </StyledMotionSidebarOpenIcon>\n )}\n </StyledSidebarItemHead>\n </Tooltip>\n {canDropInsideItem && (\n <StyledSidebarDropZone\n $depth={childParentIds.length}\n $isActive={isInsideDropTargetActive}\n $isDragging={!!draggedItemId}\n $placement=\"inside\"\n onDragOver={handleInsideDragOver}\n onDrop={handleInsideDrop}\n />\n )}\n {!!children && (\n <ExpandableContent isOpen={shouldShowChildren}>\n <StyledSidebarItemChildren>\n {children}\n {isReorderEnabled && childListEndTarget && (\n <StyledSidebarDropZone\n $depth={childParentIds.length}\n $isActive={isChildListEndTargetActive}\n $isDragging={!!draggedItemId}\n $placement=\"after\"\n onDragOver={handleChildListEndDragOver}\n onDrop={handleChildListEndDrop}\n />\n )}\n </StyledSidebarItemChildren>\n </ExpandableContent>\n )}\n {popupContainer &&\n createPortal(\n <AnimatePresence initial={false}>\n {shouldRenderPopup && coordinates && (\n <StyledSidebarItemPopup $coordinates={coordinates}>\n {label}\n </StyledSidebarItemPopup>\n )}\n </AnimatePresence>,\n popupContainer,\n )}\n </StyledSidebarItem>\n );\n};\n\nSidebarItem.displayName = 'SidebarItem';\n\nexport default memo(SidebarItem);\n"],"mappings":"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","ignoreList":[]}