@elliemae/ds-menu-button 3.45.0-rc.1 → 3.45.0-rc.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (282) hide show
  1. package/dist/cjs/DSMenuButton.js +16 -5
  2. package/dist/cjs/DSMenuButton.js.map +2 -2
  3. package/dist/cjs/config/useMenuButton.js +49 -18
  4. package/dist/cjs/config/useMenuButton.js.map +3 -3
  5. package/dist/cjs/config/useSplitInherithedProps.js +141 -0
  6. package/dist/cjs/config/useSplitInherithedProps.js.map +7 -0
  7. package/dist/cjs/config/useValidateProps.js.map +2 -2
  8. package/dist/cjs/constants/index.js +17 -4
  9. package/dist/cjs/constants/index.js.map +2 -2
  10. package/dist/cjs/index.js +7 -3
  11. package/dist/cjs/index.js.map +3 -3
  12. package/dist/cjs/parts/DSFlyoutMenu/DSFlyoutMenu.js +96 -0
  13. package/dist/cjs/parts/DSFlyoutMenu/DSFlyoutMenu.js.map +7 -0
  14. package/dist/cjs/parts/DSFlyoutMenu/config/useFlyoutMenu.js +54 -0
  15. package/dist/cjs/parts/DSFlyoutMenu/config/useFlyoutMenu.js.map +7 -0
  16. package/dist/cjs/parts/{ItemFactory.js → DSFlyoutMenu/config/useValidateProps.js} +9 -35
  17. package/dist/cjs/parts/DSFlyoutMenu/config/useValidateProps.js.map +7 -0
  18. package/dist/cjs/parts/DSFlyoutMenu/constants/index.js +46 -0
  19. package/dist/cjs/parts/DSFlyoutMenu/constants/index.js.map +7 -0
  20. package/dist/cjs/{DSMenuButtonCTX.js → parts/DSFlyoutMenu/index.js} +7 -8
  21. package/dist/cjs/parts/DSFlyoutMenu/index.js.map +7 -0
  22. package/dist/cjs/parts/DSFlyoutMenu/react-desc-prop-types.js +62 -0
  23. package/dist/cjs/parts/DSFlyoutMenu/react-desc-prop-types.js.map +7 -0
  24. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/DSMenuBehaviouralContextProvider.js +70 -0
  25. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/DSMenuBehaviouralContextProvider.js.map +7 -0
  26. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js +40 -0
  27. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js.map +7 -0
  28. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js +186 -0
  29. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js.map +7 -0
  30. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useGlobalEvents.js +89 -0
  31. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useGlobalEvents.js.map +7 -0
  32. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js +92 -0
  33. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js.map +7 -0
  34. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js +315 -0
  35. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js.map +7 -0
  36. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuOpenStatus.js +66 -0
  37. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuOpenStatus.js.map +7 -0
  38. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useValidateProps.js +40 -0
  39. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useValidateProps.js.map +7 -0
  40. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/constants/Errors.js +58 -0
  41. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/constants/Errors.js.map +7 -0
  42. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/constants/index.js +44 -0
  43. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/constants/index.js.map +7 -0
  44. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/index.js +37 -0
  45. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/index.js.map +7 -0
  46. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js +53 -0
  47. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js.map +7 -0
  48. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js +139 -0
  49. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js.map +7 -0
  50. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/nodeGettersByCriterias.js +144 -0
  51. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/nodeGettersByCriterias.js.map +7 -0
  52. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js +44 -0
  53. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js.map +7 -0
  54. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableMenuItem.js +116 -0
  55. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableMenuItem.js.map +7 -0
  56. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js +159 -0
  57. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js.map +7 -0
  58. package/dist/cjs/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js +97 -0
  59. package/dist/cjs/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js.map +7 -0
  60. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js +122 -0
  61. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js.map +7 -0
  62. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js +173 -0
  63. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js.map +7 -0
  64. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js +130 -0
  65. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js.map +7 -0
  66. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js +176 -0
  67. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js.map +7 -0
  68. package/dist/cjs/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js +162 -0
  69. package/dist/cjs/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js.map +7 -0
  70. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js +57 -0
  71. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js.map +7 -0
  72. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useValidateProps.js +40 -0
  73. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useValidateProps.js.map +7 -0
  74. package/dist/cjs/parts/DSMenuItemRendererFactory/constants/index.js +48 -0
  75. package/dist/cjs/parts/DSMenuItemRendererFactory/constants/index.js.map +7 -0
  76. package/dist/cjs/parts/DSMenuItemRendererFactory/index.js +37 -0
  77. package/dist/cjs/parts/DSMenuItemRendererFactory/index.js.map +7 -0
  78. package/dist/cjs/parts/DSMenuItemRendererFactory/react-desc-prop-types.js +51 -0
  79. package/dist/cjs/parts/DSMenuItemRendererFactory/react-desc-prop-types.js.map +7 -0
  80. package/dist/cjs/parts/DSMenuItemRendererFactory/useMenuItemHighlightState.js +62 -0
  81. package/dist/cjs/parts/DSMenuItemRendererFactory/useMenuItemHighlightState.js.map +7 -0
  82. package/dist/cjs/parts/DSOpinionatedButton/DSOpinionatedButton.js +100 -0
  83. package/dist/cjs/parts/DSOpinionatedButton/DSOpinionatedButton.js.map +7 -0
  84. package/dist/cjs/parts/DSOpinionatedButton/config/useOpinionatedButton.js +80 -0
  85. package/dist/cjs/parts/DSOpinionatedButton/config/useOpinionatedButton.js.map +7 -0
  86. package/dist/cjs/parts/DSOpinionatedButton/config/useTriggerEventsHandlers.js +98 -0
  87. package/dist/cjs/parts/DSOpinionatedButton/config/useTriggerEventsHandlers.js.map +7 -0
  88. package/dist/cjs/parts/DSOpinionatedButton/config/useValidateProps.js +40 -0
  89. package/dist/cjs/parts/DSOpinionatedButton/config/useValidateProps.js.map +7 -0
  90. package/dist/cjs/parts/DSOpinionatedButton/constants/index.js +48 -0
  91. package/dist/cjs/parts/DSOpinionatedButton/constants/index.js.map +7 -0
  92. package/dist/cjs/parts/DSOpinionatedButton/index.js +37 -0
  93. package/dist/cjs/parts/DSOpinionatedButton/index.js.map +7 -0
  94. package/dist/cjs/parts/DSOpinionatedButton/react-desc-prop-types.js +53 -0
  95. package/dist/cjs/parts/DSOpinionatedButton/react-desc-prop-types.js.map +7 -0
  96. package/dist/cjs/react-desc-prop-types.js +61 -25
  97. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  98. package/dist/cjs/utils/nodesTypeguardsAndGetters.js +123 -0
  99. package/dist/cjs/utils/nodesTypeguardsAndGetters.js.map +7 -0
  100. package/dist/cjs/utils/useOptionsArrayToDsTree.js +55 -0
  101. package/dist/cjs/utils/useOptionsArrayToDsTree.js.map +7 -0
  102. package/dist/esm/DSMenuButton.js +19 -8
  103. package/dist/esm/DSMenuButton.js.map +2 -2
  104. package/dist/esm/config/useMenuButton.js +51 -20
  105. package/dist/esm/config/useMenuButton.js.map +3 -3
  106. package/dist/esm/config/useSplitInherithedProps.js +111 -0
  107. package/dist/esm/config/useSplitInherithedProps.js.map +7 -0
  108. package/dist/esm/config/useValidateProps.js.map +2 -2
  109. package/dist/esm/constants/index.js +17 -4
  110. package/dist/esm/constants/index.js.map +2 -2
  111. package/dist/esm/index.js +8 -4
  112. package/dist/esm/index.js.map +3 -3
  113. package/dist/esm/parts/DSFlyoutMenu/DSFlyoutMenu.js +66 -0
  114. package/dist/esm/parts/DSFlyoutMenu/DSFlyoutMenu.js.map +7 -0
  115. package/dist/esm/parts/DSFlyoutMenu/config/useFlyoutMenu.js +24 -0
  116. package/dist/esm/parts/DSFlyoutMenu/config/useFlyoutMenu.js.map +7 -0
  117. package/dist/esm/parts/DSFlyoutMenu/config/useValidateProps.js +10 -0
  118. package/dist/esm/parts/DSFlyoutMenu/config/useValidateProps.js.map +7 -0
  119. package/dist/esm/parts/DSFlyoutMenu/constants/index.js +16 -0
  120. package/dist/esm/parts/DSFlyoutMenu/constants/index.js.map +7 -0
  121. package/dist/esm/parts/DSFlyoutMenu/index.js +7 -0
  122. package/dist/esm/parts/DSFlyoutMenu/index.js.map +7 -0
  123. package/dist/esm/parts/DSFlyoutMenu/react-desc-prop-types.js +40 -0
  124. package/dist/esm/parts/DSFlyoutMenu/react-desc-prop-types.js.map +7 -0
  125. package/dist/esm/parts/DSMenuBehaviouralContextProvider/DSMenuBehaviouralContextProvider.js +42 -0
  126. package/dist/esm/parts/DSMenuBehaviouralContextProvider/DSMenuBehaviouralContextProvider.js.map +7 -0
  127. package/dist/esm/parts/DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js +10 -0
  128. package/dist/esm/parts/DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js.map +7 -0
  129. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js +161 -0
  130. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js.map +7 -0
  131. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useGlobalEvents.js +59 -0
  132. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useGlobalEvents.js.map +7 -0
  133. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js +65 -0
  134. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js.map +7 -0
  135. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js +292 -0
  136. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js.map +7 -0
  137. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuOpenStatus.js +36 -0
  138. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuOpenStatus.js.map +7 -0
  139. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useValidateProps.js +10 -0
  140. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useValidateProps.js.map +7 -0
  141. package/dist/esm/parts/DSMenuBehaviouralContextProvider/constants/Errors.js +28 -0
  142. package/dist/esm/parts/DSMenuBehaviouralContextProvider/constants/Errors.js.map +7 -0
  143. package/dist/esm/parts/DSMenuBehaviouralContextProvider/constants/index.js +14 -0
  144. package/dist/esm/parts/DSMenuBehaviouralContextProvider/constants/index.js.map +7 -0
  145. package/dist/esm/parts/DSMenuBehaviouralContextProvider/index.js +10 -0
  146. package/dist/esm/parts/DSMenuBehaviouralContextProvider/index.js.map +7 -0
  147. package/dist/esm/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js +23 -0
  148. package/dist/esm/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js.map +7 -0
  149. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js +113 -0
  150. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js.map +7 -0
  151. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/nodeGettersByCriterias.js +123 -0
  152. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/nodeGettersByCriterias.js.map +7 -0
  153. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js +14 -0
  154. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js.map +7 -0
  155. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableMenuItem.js +91 -0
  156. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableMenuItem.js.map +7 -0
  157. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js +134 -0
  158. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js.map +7 -0
  159. package/dist/esm/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js +78 -0
  160. package/dist/esm/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js.map +7 -0
  161. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js +97 -0
  162. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js.map +7 -0
  163. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js +148 -0
  164. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js.map +7 -0
  165. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js +105 -0
  166. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js.map +7 -0
  167. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js +151 -0
  168. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js.map +7 -0
  169. package/dist/esm/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js +137 -0
  170. package/dist/esm/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js.map +7 -0
  171. package/dist/esm/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js +30 -0
  172. package/dist/esm/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js.map +7 -0
  173. package/dist/esm/parts/DSMenuItemRendererFactory/config/useValidateProps.js +10 -0
  174. package/dist/esm/parts/DSMenuItemRendererFactory/config/useValidateProps.js.map +7 -0
  175. package/dist/esm/parts/DSMenuItemRendererFactory/constants/index.js +18 -0
  176. package/dist/esm/parts/DSMenuItemRendererFactory/constants/index.js.map +7 -0
  177. package/dist/esm/parts/DSMenuItemRendererFactory/index.js +7 -0
  178. package/dist/esm/parts/DSMenuItemRendererFactory/index.js.map +7 -0
  179. package/dist/esm/parts/DSMenuItemRendererFactory/react-desc-prop-types.js +26 -0
  180. package/dist/esm/parts/DSMenuItemRendererFactory/react-desc-prop-types.js.map +7 -0
  181. package/dist/esm/parts/DSMenuItemRendererFactory/useMenuItemHighlightState.js +32 -0
  182. package/dist/esm/parts/DSMenuItemRendererFactory/useMenuItemHighlightState.js.map +7 -0
  183. package/dist/esm/parts/DSOpinionatedButton/DSOpinionatedButton.js +70 -0
  184. package/dist/esm/parts/DSOpinionatedButton/DSOpinionatedButton.js.map +7 -0
  185. package/dist/esm/parts/DSOpinionatedButton/config/useOpinionatedButton.js +53 -0
  186. package/dist/esm/parts/DSOpinionatedButton/config/useOpinionatedButton.js.map +7 -0
  187. package/dist/esm/parts/DSOpinionatedButton/config/useTriggerEventsHandlers.js +68 -0
  188. package/dist/esm/parts/DSOpinionatedButton/config/useTriggerEventsHandlers.js.map +7 -0
  189. package/dist/esm/parts/DSOpinionatedButton/config/useValidateProps.js +10 -0
  190. package/dist/esm/parts/DSOpinionatedButton/config/useValidateProps.js.map +7 -0
  191. package/dist/esm/parts/DSOpinionatedButton/constants/index.js +18 -0
  192. package/dist/esm/parts/DSOpinionatedButton/constants/index.js.map +7 -0
  193. package/dist/esm/parts/DSOpinionatedButton/index.js +10 -0
  194. package/dist/esm/parts/DSOpinionatedButton/index.js.map +7 -0
  195. package/dist/esm/parts/DSOpinionatedButton/react-desc-prop-types.js +23 -0
  196. package/dist/esm/parts/DSOpinionatedButton/react-desc-prop-types.js.map +7 -0
  197. package/dist/esm/react-desc-prop-types.js +62 -26
  198. package/dist/esm/react-desc-prop-types.js.map +2 -2
  199. package/dist/esm/utils/nodesTypeguardsAndGetters.js +93 -0
  200. package/dist/esm/utils/nodesTypeguardsAndGetters.js.map +7 -0
  201. package/dist/esm/utils/useOptionsArrayToDsTree.js +25 -0
  202. package/dist/esm/utils/useOptionsArrayToDsTree.js.map +7 -0
  203. package/dist/types/DSMenuButton.d.ts +4 -6
  204. package/dist/types/config/useMenuButton.d.ts +9 -13
  205. package/dist/types/config/useSplitInherithedProps.d.ts +495 -0
  206. package/dist/types/config/useValidateProps.d.ts +3 -3
  207. package/dist/types/constants/index.d.ts +14 -2
  208. package/dist/types/index.d.ts +4 -2
  209. package/dist/types/parts/DSFlyoutMenu/DSFlyoutMenu.d.ts +5 -0
  210. package/dist/types/parts/DSFlyoutMenu/config/useFlyoutMenu.d.ts +8 -0
  211. package/dist/types/parts/DSFlyoutMenu/config/useValidateProps.d.ts +3 -0
  212. package/dist/types/parts/DSFlyoutMenu/constants/index.d.ts +7 -0
  213. package/dist/types/parts/DSFlyoutMenu/index.d.ts +1 -0
  214. package/dist/types/parts/DSFlyoutMenu/react-desc-prop-types.d.ts +25 -0
  215. package/dist/types/parts/DSMenuBehaviouralContextProvider/DSMenuBehaviouralContextProvider.d.ts +5 -0
  216. package/dist/types/parts/DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.d.ts +5 -0
  217. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.d.ts +15 -0
  218. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useGlobalEvents.d.ts +15 -0
  219. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.d.ts +15 -0
  220. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.d.ts +18 -0
  221. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useMenuOpenStatus.d.ts +17 -0
  222. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useValidateProps.d.ts +3 -0
  223. package/dist/types/parts/DSMenuBehaviouralContextProvider/constants/Errors.d.ts +15 -0
  224. package/dist/types/parts/DSMenuBehaviouralContextProvider/constants/index.d.ts +7 -0
  225. package/dist/types/parts/DSMenuBehaviouralContextProvider/index.d.ts +1 -0
  226. package/dist/types/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.d.ts +24 -0
  227. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.d.ts +6 -0
  228. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/nodeGettersByCriterias.d.ts +35 -0
  229. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.d.ts +13 -0
  230. package/dist/types/parts/DSMenuItemRendererFactory/ActivableMenuItem.d.ts +5 -0
  231. package/dist/types/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.d.ts +7 -0
  232. package/dist/types/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.d.ts +5 -0
  233. package/dist/types/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.d.ts +5 -0
  234. package/dist/types/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.d.ts +7 -0
  235. package/dist/types/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.d.ts +5 -0
  236. package/dist/types/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.d.ts +7 -0
  237. package/dist/types/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.d.ts +7 -0
  238. package/dist/types/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.d.ts +6 -0
  239. package/dist/types/parts/DSMenuItemRendererFactory/config/useValidateProps.d.ts +3 -0
  240. package/dist/types/parts/DSMenuItemRendererFactory/constants/index.d.ts +6 -0
  241. package/dist/types/parts/DSMenuItemRendererFactory/index.d.ts +1 -0
  242. package/dist/types/parts/DSMenuItemRendererFactory/react-desc-prop-types.d.ts +24 -0
  243. package/dist/types/parts/DSMenuItemRendererFactory/useMenuItemHighlightState.d.ts +12 -0
  244. package/dist/types/parts/DSOpinionatedButton/DSOpinionatedButton.d.ts +5 -0
  245. package/dist/types/parts/DSOpinionatedButton/config/useOpinionatedButton.d.ts +38 -0
  246. package/dist/types/parts/DSOpinionatedButton/config/useTriggerEventsHandlers.d.ts +14 -0
  247. package/dist/types/parts/DSOpinionatedButton/config/useValidateProps.d.ts +3 -0
  248. package/dist/types/parts/DSOpinionatedButton/constants/index.d.ts +6 -0
  249. package/dist/types/parts/DSOpinionatedButton/index.d.ts +1 -0
  250. package/dist/types/parts/DSOpinionatedButton/react-desc-prop-types.d.ts +23 -0
  251. package/dist/types/react-desc-prop-types.d.ts +206 -41
  252. package/dist/types/utils/nodesTypeguardsAndGetters.d.ts +22 -0
  253. package/dist/types/utils/useOptionsArrayToDsTree.d.ts +8 -0
  254. package/package.json +18 -16
  255. package/dist/cjs/DSMenuButtonCTX.js.map +0 -7
  256. package/dist/cjs/parts/ItemFactory.js.map +0 -7
  257. package/dist/cjs/parts/Menu.js +0 -125
  258. package/dist/cjs/parts/Menu.js.map +0 -7
  259. package/dist/cjs/parts/MenuButtonContent.js +0 -156
  260. package/dist/cjs/parts/MenuButtonContent.js.map +0 -7
  261. package/dist/cjs/parts/MenuItem.js +0 -252
  262. package/dist/cjs/parts/MenuItem.js.map +0 -7
  263. package/dist/cjs/styled.js +0 -132
  264. package/dist/cjs/styled.js.map +0 -7
  265. package/dist/esm/DSMenuButtonCTX.js +0 -8
  266. package/dist/esm/DSMenuButtonCTX.js.map +0 -7
  267. package/dist/esm/parts/ItemFactory.js +0 -36
  268. package/dist/esm/parts/ItemFactory.js.map +0 -7
  269. package/dist/esm/parts/Menu.js +0 -95
  270. package/dist/esm/parts/Menu.js.map +0 -7
  271. package/dist/esm/parts/MenuButtonContent.js +0 -126
  272. package/dist/esm/parts/MenuButtonContent.js.map +0 -7
  273. package/dist/esm/parts/MenuItem.js +0 -229
  274. package/dist/esm/parts/MenuItem.js.map +0 -7
  275. package/dist/esm/styled.js +0 -102
  276. package/dist/esm/styled.js.map +0 -7
  277. package/dist/types/DSMenuButtonCTX.d.ts +0 -15
  278. package/dist/types/parts/ItemFactory.d.ts +0 -14
  279. package/dist/types/parts/Menu.d.ts +0 -14
  280. package/dist/types/parts/MenuButtonContent.d.ts +0 -1
  281. package/dist/types/parts/MenuItem.d.ts +0 -21
  282. package/dist/types/styled.d.ts +0 -16
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var SingleSelectWithSubmenuMenuItem_exports = {};
30
+ __export(SingleSelectWithSubmenuMenuItem_exports, {
31
+ SingleSelectWithSubmenuMenuItem: () => SingleSelectWithSubmenuMenuItem
32
+ });
33
+ module.exports = __toCommonJS(SingleSelectWithSubmenuMenuItem_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_ds_grid = require("@elliemae/ds-grid");
37
+ var import_ds_icons = require("@elliemae/ds-icons");
38
+ var import_ds_floating_context = require("@elliemae/ds-floating-context");
39
+ var import_ds_menu_items_commons = require("@elliemae/ds-menu-items-commons");
40
+ var import_ds_system = require("@elliemae/ds-system");
41
+ var import_react = __toESM(require("react"));
42
+ var import_MenuBehaviouralContextProviderCTX = require("../DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js");
43
+ var import_constants = require("../DSMenuBehaviouralContextProvider/constants/index.js");
44
+ const placementOrderPreference = [
45
+ "right-start",
46
+ "right-start",
47
+ "right",
48
+ "left-start",
49
+ "left-end",
50
+ "left"
51
+ ];
52
+ const StyledRadioDotIndicator = (0, import_ds_system.styled)("div")`
53
+ width: 8px;
54
+ height: 8px;
55
+ border-radius: 50%;
56
+ background-color: #005ea2;
57
+ `;
58
+ const LeftBoxlessRadio = import_react.default.memo(({ isSelected }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_grid.Grid, { width: "16px", children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledRadioDotIndicator, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {}) }));
59
+ const SingleSelectWithSubmenuMenuItem = ({ itemNode, FlyoutMenuCircularDepInject }) => {
60
+ const { dsId, plainItem } = itemNode;
61
+ const { label, secondaryLabel, leftDecoration: LeftDecComponent, minWidth, disabled } = plainItem;
62
+ const floatingContext = (0, import_ds_floating_context.useFloatingContext)({
63
+ placement: placementOrderPreference[0],
64
+ placementOrderPreference,
65
+ animationDuration: 100,
66
+ customOffset: [0, 0]
67
+ });
68
+ const {
69
+ refs: { setReference }
70
+ } = floatingContext;
71
+ const {
72
+ focusRegion,
73
+ propsWithDefault,
74
+ openedSubItems,
75
+ menuItemEventsHandlers: {
76
+ handleFocusableMenuItemKeyDown,
77
+ handleFocusableMenuItemClick,
78
+ handleFocusableMenuItemOnMouseEnter,
79
+ handleMenuItemFocusReconciliation
80
+ }
81
+ } = import_react.default.useContext(import_MenuBehaviouralContextProviderCTX.MenuBehaviouralContextProviderContext);
82
+ const { selectedItems } = propsWithDefault;
83
+ const gridLayout = import_react.default.useMemo(() => {
84
+ const cols = LeftDecComponent ? ["min-content", "min-content", "auto"] : ["min-content", "auto"];
85
+ if (secondaryLabel) cols.push("auto");
86
+ cols.push("min-content");
87
+ return cols;
88
+ }, [LeftDecComponent, secondaryLabel]);
89
+ const focusedRegionPerformanceHelper = import_react.default.useRef(focusRegion);
90
+ focusedRegionPerformanceHelper.current = focusRegion;
91
+ const isExpanded = openedSubItems.some((itemWithOpenSubmenu) => itemWithOpenSubmenu.dsId === dsId);
92
+ const isFocused = focusRegion === import_constants.MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId);
93
+ const isSelected = selectedItems.some((itemMarkesAsSelected) => itemMarkesAsSelected.dsId === dsId);
94
+ const handleFocusOnRender = import_react.default.useCallback(
95
+ (node) => {
96
+ setReference(node);
97
+ if (node && focusRegion === import_constants.MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId)) {
98
+ node.focus();
99
+ }
100
+ },
101
+ // we need to change the callback reference every time the focusRegion changes or else the focus will not be set
102
+ [dsId, focusRegion, setReference]
103
+ // we are using the "as='div'", typescript is not able to infer the correct type
104
+ // the logic here actually receives a ref to a HTMLDivElement,
105
+ // but the component must think this is a HTMLLIElement ref callback
106
+ );
107
+ const handleOnMouseEnter = import_react.default.useCallback(
108
+ (e) => {
109
+ handleFocusableMenuItemOnMouseEnter(itemNode, e);
110
+ },
111
+ [handleFocusableMenuItemOnMouseEnter, itemNode]
112
+ );
113
+ const handleOnFocusReconciliation = import_react.default.useCallback(() => {
114
+ handleMenuItemFocusReconciliation(itemNode);
115
+ }, [handleMenuItemFocusReconciliation, itemNode]);
116
+ const spacelessDsIdForDom = `ds-menu-item-${`${dsId}`.replace(/\s/g, "")}`;
117
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
118
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
119
+ import_ds_menu_items_commons.StyledGlobalMenuItemWrapper,
120
+ {
121
+ innerRef: handleFocusOnRender,
122
+ onKeyDown: handleFocusableMenuItemKeyDown,
123
+ onClick: handleFocusableMenuItemClick,
124
+ onMouseEnter: handleOnMouseEnter,
125
+ onFocus: handleOnFocusReconciliation,
126
+ as: "div",
127
+ id: `${spacelessDsIdForDom}`,
128
+ tabIndex: isFocused ? 0 : -1,
129
+ role: "menuitemradio",
130
+ "aria-checked": isSelected,
131
+ "aria-controls": (
132
+ /* ********************************************************************************************************************
133
+ * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls
134
+ * The aria-controls only needs to be set when the popup is visible, but it is valid and easier to program to reference an element that is not visible.
135
+ * ********************************************************************************************************************
136
+ * ^^^ some automated tools will mark an error if the aria-controls references an element that does (yet) exist in the DOM
137
+ * so, while technically valid to not check if expanded, we are doing it to avoid automated tools marking an error
138
+ * ******************************************************************************************************************** */
139
+ isExpanded ? itemNode.plainChildren.map((child) => `ds-menu-item-${`${child.dsId}`.replace(/\s/g, "")}`).join(" ") : void 0
140
+ ),
141
+ "aria-haspopup": "menu",
142
+ "aria-expanded": isExpanded,
143
+ "aria-disabled": disabled,
144
+ applyAriaDisabled: disabled,
145
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
146
+ import_ds_menu_items_commons.StyledContentWrapper,
147
+ {
148
+ cols: gridLayout,
149
+ minHeight: "16px",
150
+ gutter: "xxs",
151
+ alignItems: "center",
152
+ minWidth: minWidth ?? void 0,
153
+ children: [
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LeftBoxlessRadio, { isSelected }),
155
+ LeftDecComponent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LeftDecComponent, {}) : null,
156
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemLabel, { children: label }),
157
+ secondaryLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemSecondaryLabel, { children: secondaryLabel }),
158
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronSmallRight, {})
159
+ ]
160
+ }
161
+ )
162
+ }
163
+ ),
164
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
165
+ FlyoutMenuCircularDepInject,
166
+ {
167
+ isMenuOpen: isExpanded,
168
+ floatingContext: floatingContext.context,
169
+ floatingStyles: floatingContext.floatingStyles,
170
+ setFloatingRef: floatingContext.refs.setFloating,
171
+ itemNode
172
+ }
173
+ )
174
+ ] });
175
+ };
176
+ //# sourceMappingURL=SingleSelectWithSubmenuMenuItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-lines */\nimport { Grid } from '@elliemae/ds-grid';\nimport { ChevronSmallRight } from '@elliemae/ds-icons';\nimport { useFloatingContext, type DSHookFloatingContextT } from '@elliemae/ds-floating-context';\nimport {\n StyleMenuItemLabel,\n StyleMenuItemSecondaryLabel,\n StyledContentWrapper,\n StyledGlobalMenuItemWrapper,\n} from '@elliemae/ds-menu-items-commons';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\nimport type { DSMenuButtonT } from '../../react-desc-prop-types.js';\nimport { MenuBehaviouralContextProviderContext } from '../DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js';\nimport { MENU_FOCUS_REGIONS } from '../DSMenuBehaviouralContextProvider/constants/index.js';\nimport { type DSMenuItemRendererFactoryT } from './react-desc-prop-types.js';\n\nconst placementOrderPreference: Required<DSHookFloatingContextT.Props>['placementOrderPreference'] = [\n 'right-start',\n 'right-start',\n 'right',\n 'left-start',\n 'left-end',\n 'left',\n];\nconst StyledRadioDotIndicator = styled('div')`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #005ea2;\n`;\n\nconst LeftBoxlessRadio = React.memo(({ isSelected }: { isSelected: boolean }) => (\n <Grid width=\"16px\">{isSelected ? <StyledRadioDotIndicator /> : <div />}</Grid>\n));\nexport const SingleSelectWithSubmenuMenuItem: React.ComponentType<{\n itemNode: DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem;\n FlyoutMenuCircularDepInject: DSMenuItemRendererFactoryT.RequiredProps['FlyoutMenuCircularDepInject'];\n}> = ({ itemNode, FlyoutMenuCircularDepInject }) => {\n const { dsId, plainItem } = itemNode;\n const { label, secondaryLabel, leftDecoration: LeftDecComponent, minWidth, disabled } = plainItem;\n const floatingContext = useFloatingContext({\n placement: placementOrderPreference[0],\n placementOrderPreference,\n animationDuration: 100,\n customOffset: [0, 0],\n });\n const {\n refs: { setReference },\n } = floatingContext;\n\n const {\n focusRegion,\n propsWithDefault,\n openedSubItems,\n menuItemEventsHandlers: {\n handleFocusableMenuItemKeyDown,\n handleFocusableMenuItemClick,\n handleFocusableMenuItemOnMouseEnter,\n handleMenuItemFocusReconciliation,\n },\n } = React.useContext(MenuBehaviouralContextProviderContext);\n const { selectedItems } = propsWithDefault;\n\n const gridLayout = React.useMemo(() => {\n const cols = LeftDecComponent ? ['min-content', 'min-content', 'auto'] : ['min-content', 'auto'];\n if (secondaryLabel) cols.push('auto');\n cols.push('min-content');\n return cols;\n }, [LeftDecComponent, secondaryLabel]);\n\n const focusedRegionPerformanceHelper = React.useRef(focusRegion);\n focusedRegionPerformanceHelper.current = focusRegion;\n\n const isExpanded = openedSubItems.some((itemWithOpenSubmenu) => itemWithOpenSubmenu.dsId === dsId);\n const isFocused = focusRegion === MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId);\n const isSelected = selectedItems.some((itemMarkesAsSelected) => itemMarkesAsSelected.dsId === dsId);\n\n const handleFocusOnRender = React.useCallback(\n (node: HTMLDivElement) => {\n setReference(node);\n if (node && focusRegion === MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId)) {\n node.focus();\n }\n },\n // we need to change the callback reference every time the focusRegion changes or else the focus will not be set\n [dsId, focusRegion, setReference],\n // we are using the \"as='div'\", typescript is not able to infer the correct type\n // the logic here actually receives a ref to a HTMLDivElement,\n // but the component must think this is a HTMLLIElement ref callback\n ) as unknown as React.RefCallback<HTMLLIElement>;\n\n const handleOnMouseEnter = React.useCallback<React.MouseEventHandler<HTMLDivElement>>(\n (e) => {\n handleFocusableMenuItemOnMouseEnter(itemNode, e);\n },\n [handleFocusableMenuItemOnMouseEnter, itemNode],\n );\n const handleOnFocusReconciliation = React.useCallback(() => {\n handleMenuItemFocusReconciliation(itemNode);\n }, [handleMenuItemFocusReconciliation, itemNode]);\n\n const spacelessDsIdForDom = `ds-menu-item-${`${dsId}`.replace(/\\s/g, '')}`;\n return (\n <>\n <StyledGlobalMenuItemWrapper\n innerRef={handleFocusOnRender}\n onKeyDown={handleFocusableMenuItemKeyDown}\n onClick={handleFocusableMenuItemClick}\n onMouseEnter={handleOnMouseEnter}\n onFocus={handleOnFocusReconciliation}\n as=\"div\"\n id={`${spacelessDsIdForDom}`}\n tabIndex={isFocused ? 0 : -1}\n role=\"menuitemradio\"\n aria-checked={isSelected}\n aria-controls={\n /* ********************************************************************************************************************\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls\n * The aria-controls only needs to be set when the popup is visible, but it is valid and easier to program to reference an element that is not visible.\n * ********************************************************************************************************************\n * ^^^ some automated tools will mark an error if the aria-controls references an element that does (yet) exist in the DOM\n * so, while technically valid to not check if expanded, we are doing it to avoid automated tools marking an error\n * ******************************************************************************************************************** */\n isExpanded\n ? itemNode.plainChildren.map((child) => `ds-menu-item-${`${child.dsId}`.replace(/\\s/g, '')}`).join(' ')\n : undefined\n }\n aria-haspopup=\"menu\"\n aria-expanded={isExpanded}\n aria-disabled={disabled}\n applyAriaDisabled={disabled}\n >\n <StyledContentWrapper\n cols={gridLayout}\n minHeight=\"16px\"\n gutter=\"xxs\"\n alignItems=\"center\"\n minWidth={minWidth ?? undefined}\n >\n <LeftBoxlessRadio isSelected={isSelected} />\n {LeftDecComponent ? <LeftDecComponent /> : null}\n <StyleMenuItemLabel>{label}</StyleMenuItemLabel>\n {secondaryLabel !== undefined && <StyleMenuItemSecondaryLabel>{secondaryLabel}</StyleMenuItemSecondaryLabel>}\n <ChevronSmallRight />\n </StyledContentWrapper>\n </StyledGlobalMenuItemWrapper>\n <FlyoutMenuCircularDepInject\n isMenuOpen={isExpanded}\n floatingContext={floatingContext.context}\n floatingStyles={floatingContext.floatingStyles}\n setFloatingRef={floatingContext.refs.setFloating}\n itemNode={itemNode}\n />\n </>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var WithSubmenuMenuItem_exports = {};
30
+ __export(WithSubmenuMenuItem_exports, {
31
+ WithSubmenuMenuItem: () => WithSubmenuMenuItem
32
+ });
33
+ module.exports = __toCommonJS(WithSubmenuMenuItem_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_ds_icons = require("@elliemae/ds-icons");
37
+ var import_ds_menu_items_commons = require("@elliemae/ds-menu-items-commons");
38
+ var import_ds_floating_context = require("@elliemae/ds-floating-context");
39
+ var import_react = __toESM(require("react"));
40
+ var import_MenuBehaviouralContextProviderCTX = require("../DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js");
41
+ var import_constants = require("../DSMenuBehaviouralContextProvider/constants/index.js");
42
+ const placementOrderPreference = [
43
+ "right-start",
44
+ "right-start",
45
+ "right",
46
+ "left-start",
47
+ "left-end",
48
+ "left"
49
+ ];
50
+ const WithSubmenuMenuItem = ({ itemNode, FlyoutMenuCircularDepInject }) => {
51
+ const { dsId, plainItem } = itemNode;
52
+ const { label, secondaryLabel, leftDecoration: LeftDecComponent, minWidth, disabled } = plainItem;
53
+ const floatingContext = (0, import_ds_floating_context.useFloatingContext)({
54
+ placement: placementOrderPreference[0],
55
+ placementOrderPreference,
56
+ animationDuration: 100,
57
+ customOffset: [0, 0]
58
+ });
59
+ const {
60
+ refs: { setReference }
61
+ } = floatingContext;
62
+ const {
63
+ focusRegion,
64
+ openedSubItems,
65
+ menuItemEventsHandlers: {
66
+ handleFocusableMenuItemKeyDown,
67
+ handleFocusableMenuItemClick,
68
+ handleFocusableMenuItemOnMouseEnter,
69
+ handleMenuItemFocusReconciliation
70
+ }
71
+ } = import_react.default.useContext(import_MenuBehaviouralContextProviderCTX.MenuBehaviouralContextProviderContext);
72
+ const gridLayout = import_react.default.useMemo(() => {
73
+ const cols = LeftDecComponent ? ["min-content", "auto"] : ["auto"];
74
+ if (secondaryLabel) cols.push("auto");
75
+ cols.push("min-content");
76
+ return cols;
77
+ }, [LeftDecComponent, secondaryLabel]);
78
+ const focusedRegionPerformanceHelper = import_react.default.useRef(focusRegion);
79
+ focusedRegionPerformanceHelper.current = focusRegion;
80
+ const isFocused = focusRegion === import_constants.MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId);
81
+ const isExpanded = openedSubItems.some((itemWithOpenSubmenu) => itemWithOpenSubmenu.dsId === dsId);
82
+ const handleFocusOnRender = import_react.default.useCallback(
83
+ (node) => {
84
+ setReference(node);
85
+ if (node && focusRegion === import_constants.MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId)) {
86
+ node.focus();
87
+ }
88
+ },
89
+ // we need to change the callback reference every time the focusRegion changes or else the focus will not be set
90
+ [dsId, focusRegion, setReference]
91
+ // we are using the "as='div'", typescript is not able to infer the correct type
92
+ // the logic here actually receives a ref to a HTMLDivElement,
93
+ // but the component must think this is a HTMLLIElement ref callback
94
+ );
95
+ const handleOnMouseEnter = import_react.default.useCallback(
96
+ (e) => {
97
+ handleFocusableMenuItemOnMouseEnter(itemNode, e);
98
+ },
99
+ [handleFocusableMenuItemOnMouseEnter, itemNode]
100
+ );
101
+ const handleOnFocusReconciliation = import_react.default.useCallback(() => {
102
+ handleMenuItemFocusReconciliation(itemNode);
103
+ }, [handleMenuItemFocusReconciliation, itemNode]);
104
+ const spacelessDsIdForDom = `ds-menu-item-${`${dsId}`.replace(/\s/g, "")}`;
105
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
106
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
107
+ import_ds_menu_items_commons.StyledGlobalMenuItemWrapper,
108
+ {
109
+ innerRef: handleFocusOnRender,
110
+ onKeyDown: handleFocusableMenuItemKeyDown,
111
+ onClick: handleFocusableMenuItemClick,
112
+ onMouseEnter: handleOnMouseEnter,
113
+ onFocus: handleOnFocusReconciliation,
114
+ as: "div",
115
+ id: `${spacelessDsIdForDom}`,
116
+ tabIndex: isFocused ? 0 : -1,
117
+ role: "menuitem",
118
+ "aria-haspopup": "menu",
119
+ "aria-expanded": isExpanded,
120
+ "aria-controls": (
121
+ /* ********************************************************************************************************************
122
+ * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls
123
+ * The aria-controls only needs to be set when the popup is visible, but it is valid and easier to program to reference an element that is not visible.
124
+ * ********************************************************************************************************************
125
+ * ^^^ some automated tools will mark an error if the aria-controls references an element that does (yet) exist in the DOM
126
+ * so, while technically valid to not check if expanded, we are doing it to avoid automated tools marking an error
127
+ * ******************************************************************************************************************** */
128
+ isExpanded ? itemNode.plainChildren.map((child) => `ds-menu-item-${`${child.dsId}`.replace(/\s/g, "")}`).join(" ") : void 0
129
+ ),
130
+ "aria-disabled": disabled,
131
+ applyAriaDisabled: disabled,
132
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
133
+ import_ds_menu_items_commons.StyledContentWrapper,
134
+ {
135
+ cols: gridLayout,
136
+ minHeight: "16px",
137
+ gutter: "xxs",
138
+ alignItems: "center",
139
+ minWidth: minWidth ?? void 0,
140
+ children: [
141
+ LeftDecComponent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LeftDecComponent, {}) : null,
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemLabel, { children: label }),
143
+ secondaryLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemSecondaryLabel, { children: secondaryLabel }),
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronSmallRight, {})
145
+ ]
146
+ }
147
+ )
148
+ }
149
+ ),
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
151
+ FlyoutMenuCircularDepInject,
152
+ {
153
+ isMenuOpen: isExpanded,
154
+ floatingContext: floatingContext.context,
155
+ floatingStyles: floatingContext.floatingStyles,
156
+ setFloatingRef: floatingContext.refs.setFloating,
157
+ itemNode
158
+ }
159
+ )
160
+ ] });
161
+ };
162
+ //# sourceMappingURL=WithSubmenuMenuItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { ChevronSmallRight } from '@elliemae/ds-icons';\nimport {\n StyleMenuItemLabel,\n StyleMenuItemSecondaryLabel,\n StyledContentWrapper,\n StyledGlobalMenuItemWrapper,\n} from '@elliemae/ds-menu-items-commons';\nimport { useFloatingContext, type DSHookFloatingContextT } from '@elliemae/ds-floating-context';\nimport React from 'react';\nimport type { DSMenuButtonT } from '../../react-desc-prop-types.js';\nimport { MenuBehaviouralContextProviderContext } from '../DSMenuBehaviouralContextProvider/MenuBehaviouralContextProviderCTX.js';\nimport { MENU_FOCUS_REGIONS } from '../DSMenuBehaviouralContextProvider/constants/index.js';\nimport { type DSMenuItemRendererFactoryT } from './react-desc-prop-types.js';\n\nconst placementOrderPreference: Required<DSHookFloatingContextT.Props>['placementOrderPreference'] = [\n 'right-start',\n 'right-start',\n 'right',\n 'left-start',\n 'left-end',\n 'left',\n];\nexport const WithSubmenuMenuItem: React.ComponentType<{\n itemNode: DSMenuButtonT.MenuNodeWithSubmenuItem;\n FlyoutMenuCircularDepInject: DSMenuItemRendererFactoryT.RequiredProps['FlyoutMenuCircularDepInject'];\n}> = ({ itemNode, FlyoutMenuCircularDepInject }) => {\n const { dsId, plainItem } = itemNode;\n const { label, secondaryLabel, leftDecoration: LeftDecComponent, minWidth, disabled } = plainItem;\n const floatingContext = useFloatingContext({\n placement: placementOrderPreference[0],\n placementOrderPreference,\n animationDuration: 100,\n customOffset: [0, 0],\n });\n const {\n refs: { setReference },\n } = floatingContext;\n\n const {\n focusRegion,\n openedSubItems,\n menuItemEventsHandlers: {\n handleFocusableMenuItemKeyDown,\n handleFocusableMenuItemClick,\n handleFocusableMenuItemOnMouseEnter,\n handleMenuItemFocusReconciliation,\n },\n } = React.useContext(MenuBehaviouralContextProviderContext);\n\n const gridLayout = React.useMemo(() => {\n const cols = LeftDecComponent ? ['min-content', 'auto'] : ['auto'];\n if (secondaryLabel) cols.push('auto');\n cols.push('min-content');\n return cols;\n }, [LeftDecComponent, secondaryLabel]);\n\n const focusedRegionPerformanceHelper = React.useRef(focusRegion);\n focusedRegionPerformanceHelper.current = focusRegion;\n\n const isFocused = focusRegion === MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId);\n const isExpanded = openedSubItems.some((itemWithOpenSubmenu) => itemWithOpenSubmenu.dsId === dsId);\n\n const handleFocusOnRender = React.useCallback(\n (node: HTMLDivElement) => {\n setReference(node);\n if (node && focusRegion === MENU_FOCUS_REGIONS.ITEM_BY_DSID(dsId)) {\n node.focus();\n }\n },\n // we need to change the callback reference every time the focusRegion changes or else the focus will not be set\n [dsId, focusRegion, setReference],\n // we are using the \"as='div'\", typescript is not able to infer the correct type\n // the logic here actually receives a ref to a HTMLDivElement,\n // but the component must think this is a HTMLLIElement ref callback\n ) as unknown as React.RefCallback<HTMLLIElement>;\n\n const handleOnMouseEnter = React.useCallback<React.MouseEventHandler<HTMLDivElement>>(\n (e) => {\n handleFocusableMenuItemOnMouseEnter(itemNode, e);\n },\n [handleFocusableMenuItemOnMouseEnter, itemNode],\n );\n const handleOnFocusReconciliation = React.useCallback(() => {\n handleMenuItemFocusReconciliation(itemNode);\n }, [handleMenuItemFocusReconciliation, itemNode]);\n\n const spacelessDsIdForDom = `ds-menu-item-${`${dsId}`.replace(/\\s/g, '')}`;\n return (\n <>\n <StyledGlobalMenuItemWrapper\n innerRef={handleFocusOnRender}\n onKeyDown={handleFocusableMenuItemKeyDown}\n onClick={handleFocusableMenuItemClick}\n onMouseEnter={handleOnMouseEnter}\n onFocus={handleOnFocusReconciliation}\n as=\"div\"\n id={`${spacelessDsIdForDom}`}\n tabIndex={isFocused ? 0 : -1}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={isExpanded}\n aria-controls={\n /* ********************************************************************************************************************\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls\n * The aria-controls only needs to be set when the popup is visible, but it is valid and easier to program to reference an element that is not visible.\n * ********************************************************************************************************************\n * ^^^ some automated tools will mark an error if the aria-controls references an element that does (yet) exist in the DOM\n * so, while technically valid to not check if expanded, we are doing it to avoid automated tools marking an error\n * ******************************************************************************************************************** */\n isExpanded\n ? itemNode.plainChildren.map((child) => `ds-menu-item-${`${child.dsId}`.replace(/\\s/g, '')}`).join(' ')\n : undefined\n }\n aria-disabled={disabled}\n applyAriaDisabled={disabled}\n >\n <StyledContentWrapper\n cols={gridLayout}\n minHeight=\"16px\"\n gutter=\"xxs\"\n alignItems=\"center\"\n minWidth={minWidth ?? undefined}\n >\n {LeftDecComponent ? <LeftDecComponent /> : null}\n <StyleMenuItemLabel>{label}</StyleMenuItemLabel>\n {secondaryLabel !== undefined && <StyleMenuItemSecondaryLabel>{secondaryLabel}</StyleMenuItemSecondaryLabel>}\n <ChevronSmallRight />\n </StyledContentWrapper>\n </StyledGlobalMenuItemWrapper>\n <FlyoutMenuCircularDepInject\n isMenuOpen={isExpanded}\n floatingContext={floatingContext.context}\n floatingStyles={floatingContext.floatingStyles}\n setFloatingRef={floatingContext.refs.setFloating}\n itemNode={itemNode}\n />\n </>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var useMenuItemRendererFactory_exports = {};
30
+ __export(useMenuItemRendererFactory_exports, {
31
+ useMenuItemRendererFactory: () => useMenuItemRendererFactory
32
+ });
33
+ module.exports = __toCommonJS(useMenuItemRendererFactory_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_react = __toESM(require("react"));
36
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
37
+ var import_uid = require("uid");
38
+ var import_react_desc_prop_types = require("../react-desc-prop-types.js");
39
+ var import_useValidateProps = require("./useValidateProps.js");
40
+ const useMenuItemRendererFactory = (propsFromUser) => {
41
+ const propsWithDefault = (0, import_ds_props_helpers.useMemoMergePropsWithDefault)(
42
+ propsFromUser,
43
+ import_react_desc_prop_types.defaultProps
44
+ );
45
+ (0, import_useValidateProps.useValidateProps)(propsWithDefault, import_react_desc_prop_types.DSMenuItemRendererFactoryPropTypesSchema);
46
+ const xstyledProps = (0, import_ds_props_helpers.useGetXstyledProps)(propsWithDefault);
47
+ const instanceUid = import_react.default.useMemo(() => `ds-menu-item-renderer-factory-${(0, import_uid.uid)(5)}`, []);
48
+ return import_react.default.useMemo(
49
+ () => ({
50
+ propsWithDefault,
51
+ xstyledProps,
52
+ instanceUid
53
+ }),
54
+ [propsWithDefault, xstyledProps, instanceUid]
55
+ );
56
+ };
57
+ //# sourceMappingURL=useMenuItemRendererFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React from 'react';\nimport { useGetXstyledProps, useMemoMergePropsWithDefault } from '@elliemae/ds-props-helpers';\nimport { uid } from 'uid';\nimport {\n type DSMenuItemRendererFactoryT,\n DSMenuItemRendererFactoryPropTypesSchema,\n defaultProps,\n} from '../react-desc-prop-types.js';\nimport { useValidateProps } from './useValidateProps.js';\n\nexport const useMenuItemRendererFactory = (propsFromUser: DSMenuItemRendererFactoryT.Props) => {\n // =============================================================================\n // MERGE WITH DEFAULT AND VALIDATE PROPS\n // =============================================================================\n const propsWithDefault = useMemoMergePropsWithDefault<DSMenuItemRendererFactoryT.InternalProps>(\n propsFromUser,\n defaultProps,\n );\n useValidateProps(propsWithDefault, DSMenuItemRendererFactoryPropTypesSchema);\n // =============================================================================\n // XSTYLED PROPS\n // =============================================================================\n const xstyledProps = useGetXstyledProps(propsWithDefault);\n // =============================================================================\n // AD HOC PER COMPONENT LOGIC\n // =============================================================================\n // custom code goes here, this is an example\n const instanceUid = React.useMemo(() => `ds-menu-item-renderer-factory-${uid(5)}`, []);\n\n return React.useMemo(\n () => ({\n propsWithDefault,\n xstyledProps,\n instanceUid,\n }),\n [propsWithDefault, xstyledProps, instanceUid],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAClB,8BAAiE;AACjE,iBAAoB;AACpB,mCAIO;AACP,8BAAiC;AAE1B,MAAM,6BAA6B,CAAC,kBAAoD;AAI7F,QAAM,uBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,EACF;AACA,gDAAiB,kBAAkB,qEAAwC;AAI3E,QAAM,mBAAe,4CAAmB,gBAAgB;AAKxD,QAAM,cAAc,aAAAA,QAAM,QAAQ,MAAM,qCAAiC,gBAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAErF,SAAO,aAAAA,QAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,cAAc,WAAW;AAAA,EAC9C;AACF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var useValidateProps_exports = {};
30
+ __export(useValidateProps_exports, {
31
+ useValidateProps: () => useValidateProps
32
+ });
33
+ module.exports = __toCommonJS(useValidateProps_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
36
+ var import_constants = require("../constants/index.js");
37
+ const useValidateProps = (props, propTypes) => {
38
+ (0, import_ds_props_helpers.useValidateTypescriptPropTypes)(props, propTypes, import_constants.DSMenuItemRendererFactoryName);
39
+ };
40
+ //# sourceMappingURL=useValidateProps.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSMenuItemRendererFactory/config/useValidateProps.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport type { ValidationMap } from '@elliemae/ds-props-helpers';\nimport { type DSMenuItemRendererFactoryT } from '../react-desc-prop-types.js';\nimport { DSMenuItemRendererFactoryName } from '../constants/index.js';\n\nexport const useValidateProps = (\n props: DSMenuItemRendererFactoryT.InternalProps,\n propTypes: ValidationMap<DSMenuItemRendererFactoryT.Props>,\n): void => {\n // we validate the \"required if\" via 'isRequiredIf from our custom PropTypes\n useValidateTypescriptPropTypes(props, propTypes, DSMenuItemRendererFactoryName);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,8BAA+C;AAG/C,uBAA8C;AAEvC,MAAM,mBAAmB,CAC9B,OACA,cACS;AAET,8DAA+B,OAAO,WAAW,8CAA6B;AAChF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var constants_exports = {};
30
+ __export(constants_exports, {
31
+ DSMenuItemRendererFactoryName: () => DSMenuItemRendererFactoryName,
32
+ EXAMPLE_CONSTANTS: () => EXAMPLE_CONSTANTS,
33
+ MENU_ITEM_RENDERER_FACTORY_DATA_TESTID: () => MENU_ITEM_RENDERER_FACTORY_DATA_TESTID,
34
+ MENU_ITEM_RENDERER_FACTORY_SLOTS: () => MENU_ITEM_RENDERER_FACTORY_SLOTS
35
+ });
36
+ module.exports = __toCommonJS(constants_exports);
37
+ var React = __toESM(require("react"));
38
+ var import_ds_system = require("@elliemae/ds-system");
39
+ const DSMenuItemRendererFactoryName = "DSMenuItemRendererFactory";
40
+ const EXAMPLE_CONSTANTS = {};
41
+ const MENU_ITEM_RENDERER_FACTORY_SLOTS = {
42
+ ROOT: "root"
43
+ };
44
+ const MENU_ITEM_RENDERER_FACTORY_DATA_TESTID = (0, import_ds_system.slotObjectToDataTestIds)(
45
+ DSMenuItemRendererFactoryName,
46
+ MENU_ITEM_RENDERER_FACTORY_SLOTS
47
+ );
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSMenuItemRendererFactory/constants/index.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { slotObjectToDataTestIds } from '@elliemae/ds-system';\n\nexport const DSMenuItemRendererFactoryName = 'DSMenuItemRendererFactory';\n\nexport const EXAMPLE_CONSTANTS = {} as const;\n\n// we are naming this with the ${component_name}_slots convention to namespace & avoid errors on duplicate exports variables in aggregators\nexport const MENU_ITEM_RENDERER_FACTORY_SLOTS = {\n ROOT: 'root',\n} as const;\n\n// we are naming this with the ${component_name}_data_testid convention to namespace & avoid errors on duplicate exports variables in aggregators\nexport const MENU_ITEM_RENDERER_FACTORY_DATA_TESTID = slotObjectToDataTestIds(\n DSMenuItemRendererFactoryName,\n MENU_ITEM_RENDERER_FACTORY_SLOTS,\n);\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAwC;AAEjC,MAAM,gCAAgC;AAEtC,MAAM,oBAAoB,CAAC;AAG3B,MAAM,mCAAmC;AAAA,EAC9C,MAAM;AACR;AAGO,MAAM,6CAAyC;AAAA,EACpD;AAAA,EACA;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DSMenuItemRendererFactory_exports = {};
30
+ __export(DSMenuItemRendererFactory_exports, {
31
+ DSMenuItemRendererFactory: () => import_DSMenuItemRendererFactory.DSMenuItemRendererFactory,
32
+ DSMenuItemRendererFactoryWithSchema: () => import_DSMenuItemRendererFactory.DSMenuItemRendererFactoryWithSchema
33
+ });
34
+ module.exports = __toCommonJS(DSMenuItemRendererFactory_exports);
35
+ var React = __toESM(require("react"));
36
+ var import_DSMenuItemRendererFactory = require("./DSMenuItemRendererFactory.js");
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/DSMenuItemRendererFactory/index.ts", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["export { DSMenuItemRendererFactory, DSMenuItemRendererFactoryWithSchema } from './DSMenuItemRendererFactory.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uCAA+E;",
6
+ "names": []
7
+ }