@deephaven/components 0.94.1-beta.0 → 0.95.0

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 (211) hide show
  1. package/dist/AutoCompleteInput.d.ts +1 -1
  2. package/dist/AutoCompleteInput.d.ts.map +1 -1
  3. package/dist/AutoCompleteInput.js.map +1 -1
  4. package/dist/Button.d.ts +1 -1
  5. package/dist/Button.d.ts.map +1 -1
  6. package/dist/Button.js.map +1 -1
  7. package/dist/CardFlip.d.ts.map +1 -1
  8. package/dist/CardFlip.js.map +1 -1
  9. package/dist/ComponentUtils.d.ts +2 -1
  10. package/dist/ComponentUtils.d.ts.map +1 -1
  11. package/dist/ComponentUtils.js.map +1 -1
  12. package/dist/CopyButton.d.ts +1 -1
  13. package/dist/CopyButton.d.ts.map +1 -1
  14. package/dist/CopyButton.js.map +1 -1
  15. package/dist/CustomTimeSelect.d.ts +3 -3
  16. package/dist/CustomTimeSelect.d.ts.map +1 -1
  17. package/dist/CustomTimeSelect.js.map +1 -1
  18. package/dist/DateInput.js.map +1 -1
  19. package/dist/DateInputUtils.d.ts +1 -1
  20. package/dist/DateInputUtils.d.ts.map +1 -1
  21. package/dist/DateInputUtils.js.map +1 -1
  22. package/dist/DateTimeInput.d.ts +1 -1
  23. package/dist/DateTimeInput.d.ts.map +1 -1
  24. package/dist/DateTimeInput.js.map +1 -1
  25. package/dist/DraggableItemList.d.ts +3 -3
  26. package/dist/DraggableItemList.d.ts.map +1 -1
  27. package/dist/DraggableItemList.js.map +1 -1
  28. package/dist/EditableItemList.js.map +1 -1
  29. package/dist/ErrorBoundary.d.ts +1 -1
  30. package/dist/ErrorBoundary.d.ts.map +1 -1
  31. package/dist/ErrorBoundary.js.map +1 -1
  32. package/dist/HierarchicalCheckboxMenu.d.ts +1 -1
  33. package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
  34. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  35. package/dist/ItemList.d.ts +3 -3
  36. package/dist/ItemList.d.ts.map +1 -1
  37. package/dist/ItemList.js.map +1 -1
  38. package/dist/MaskedInput.d.ts +1 -1
  39. package/dist/MaskedInput.d.ts.map +1 -1
  40. package/dist/MaskedInput.js.map +1 -1
  41. package/dist/Option.d.ts +1 -1
  42. package/dist/Option.d.ts.map +1 -1
  43. package/dist/Option.js.map +1 -1
  44. package/dist/SearchableCombobox.d.ts +2 -2
  45. package/dist/SearchableCombobox.d.ts.map +1 -1
  46. package/dist/SearchableCombobox.js.map +1 -1
  47. package/dist/TextWithTooltip.d.ts +1 -1
  48. package/dist/TextWithTooltip.d.ts.map +1 -1
  49. package/dist/TextWithTooltip.js.map +1 -1
  50. package/dist/TimeInput.d.ts +1 -1
  51. package/dist/TimeInput.d.ts.map +1 -1
  52. package/dist/TimeInput.js.map +1 -1
  53. package/dist/TimeSlider.d.ts.map +1 -1
  54. package/dist/TimeSlider.js.map +1 -1
  55. package/dist/XComponent.d.ts +1 -1
  56. package/dist/XComponent.d.ts.map +1 -1
  57. package/dist/XComponent.js.map +1 -1
  58. package/dist/actions/ConfirmActionButton.d.ts +1 -1
  59. package/dist/actions/ConfirmActionButton.d.ts.map +1 -1
  60. package/dist/actions/ConfirmActionButton.js.map +1 -1
  61. package/dist/actions/IconActionButton.d.ts +1 -1
  62. package/dist/actions/IconActionButton.d.ts.map +1 -1
  63. package/dist/actions/IconActionButton.js.map +1 -1
  64. package/dist/context-actions/ContextActionUtils.d.ts +3 -3
  65. package/dist/context-actions/ContextActionUtils.d.ts.map +1 -1
  66. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  67. package/dist/context-actions/ContextActions.d.ts +1 -1
  68. package/dist/context-actions/ContextActions.d.ts.map +1 -1
  69. package/dist/context-actions/ContextActions.js.map +1 -1
  70. package/dist/context-actions/ContextMenu.d.ts +2 -2
  71. package/dist/context-actions/ContextMenu.d.ts.map +1 -1
  72. package/dist/context-actions/ContextMenu.js.map +1 -1
  73. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  74. package/dist/context-actions/ContextMenuRoot.d.ts +1 -1
  75. package/dist/context-actions/ContextMenuRoot.d.ts.map +1 -1
  76. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  77. package/dist/dialogs/ActionButtonDialogTrigger.d.ts +1 -1
  78. package/dist/dialogs/ActionButtonDialogTrigger.d.ts.map +1 -1
  79. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  80. package/dist/dialogs/ConfirmationDialog.d.ts +1 -1
  81. package/dist/dialogs/ConfirmationDialog.d.ts.map +1 -1
  82. package/dist/dialogs/ConfirmationDialog.js.map +1 -1
  83. package/dist/menu-actions/DropdownMenu.d.ts +3 -3
  84. package/dist/menu-actions/DropdownMenu.d.ts.map +1 -1
  85. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  86. package/dist/menu-actions/Menu.d.ts +1 -1
  87. package/dist/menu-actions/Menu.d.ts.map +1 -1
  88. package/dist/menu-actions/Menu.js.map +1 -1
  89. package/dist/modal/InfoModal.d.ts +1 -1
  90. package/dist/modal/InfoModal.d.ts.map +1 -1
  91. package/dist/modal/InfoModal.js.map +1 -1
  92. package/dist/modal/Modal.d.ts +1 -1
  93. package/dist/modal/Modal.d.ts.map +1 -1
  94. package/dist/modal/Modal.js.map +1 -1
  95. package/dist/modal/ModalBody.d.ts +1 -1
  96. package/dist/modal/ModalBody.d.ts.map +1 -1
  97. package/dist/modal/ModalBody.js.map +1 -1
  98. package/dist/modal/ModalFooter.d.ts +1 -1
  99. package/dist/modal/ModalFooter.d.ts.map +1 -1
  100. package/dist/modal/ModalFooter.js.map +1 -1
  101. package/dist/modal/ModalHeader.d.ts +1 -1
  102. package/dist/modal/ModalHeader.d.ts.map +1 -1
  103. package/dist/modal/ModalHeader.js.map +1 -1
  104. package/dist/navigation/Menu.d.ts +1 -1
  105. package/dist/navigation/Menu.d.ts.map +1 -1
  106. package/dist/navigation/Menu.js.map +1 -1
  107. package/dist/navigation/MenuItem.d.ts +1 -1
  108. package/dist/navigation/MenuItem.d.ts.map +1 -1
  109. package/dist/navigation/MenuItem.js.map +1 -1
  110. package/dist/navigation/NavTab.d.ts +1 -1
  111. package/dist/navigation/NavTab.d.ts.map +1 -1
  112. package/dist/navigation/NavTab.js.map +1 -1
  113. package/dist/navigation/NavTabList.d.ts +2 -2
  114. package/dist/navigation/NavTabList.d.ts.map +1 -1
  115. package/dist/navigation/NavTabList.js.map +1 -1
  116. package/dist/popper/Popper.d.ts +1 -1
  117. package/dist/popper/Popper.d.ts.map +1 -1
  118. package/dist/popper/Popper.js.map +1 -1
  119. package/dist/popper/Tooltip.d.ts +1 -1
  120. package/dist/popper/Tooltip.d.ts.map +1 -1
  121. package/dist/popper/Tooltip.js.map +1 -1
  122. package/dist/shortcuts/Shortcut.d.ts +2 -2
  123. package/dist/shortcuts/Shortcut.d.ts.map +1 -1
  124. package/dist/shortcuts/Shortcut.js.map +1 -1
  125. package/dist/shortcuts/ShortcutRegistry.d.ts +2 -2
  126. package/dist/shortcuts/ShortcutRegistry.d.ts.map +1 -1
  127. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  128. package/dist/spectrum/ActionGroup.d.ts +3 -3
  129. package/dist/spectrum/ActionGroup.d.ts.map +1 -1
  130. package/dist/spectrum/ActionGroup.js.map +1 -1
  131. package/dist/spectrum/ActionMenu.d.ts +3 -3
  132. package/dist/spectrum/ActionMenu.d.ts.map +1 -1
  133. package/dist/spectrum/ActionMenu.js.map +1 -1
  134. package/dist/spectrum/ItemContent.d.ts +2 -2
  135. package/dist/spectrum/ItemContent.d.ts.map +1 -1
  136. package/dist/spectrum/ItemContent.js.map +1 -1
  137. package/dist/spectrum/ItemTooltip.d.ts +2 -2
  138. package/dist/spectrum/ItemTooltip.d.ts.map +1 -1
  139. package/dist/spectrum/ItemTooltip.js.map +1 -1
  140. package/dist/spectrum/ListActionGroup.d.ts +2 -2
  141. package/dist/spectrum/ListActionGroup.d.ts.map +1 -1
  142. package/dist/spectrum/ListActionGroup.js.map +1 -1
  143. package/dist/spectrum/ListActionMenu.d.ts +2 -2
  144. package/dist/spectrum/ListActionMenu.d.ts.map +1 -1
  145. package/dist/spectrum/ListActionMenu.js.map +1 -1
  146. package/dist/spectrum/View.js.map +1 -1
  147. package/dist/spectrum/comboBox/ComboBox.d.ts +2 -2
  148. package/dist/spectrum/comboBox/ComboBox.d.ts.map +1 -1
  149. package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
  150. package/dist/spectrum/comboBox/ComboBoxNormalized.d.ts +2 -2
  151. package/dist/spectrum/comboBox/ComboBoxNormalized.d.ts.map +1 -1
  152. package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
  153. package/dist/spectrum/dateAndTime.d.ts +1 -1
  154. package/dist/spectrum/dateAndTime.d.ts.map +1 -1
  155. package/dist/spectrum/dateAndTime.js.map +1 -1
  156. package/dist/spectrum/listView/ListView.d.ts +3 -3
  157. package/dist/spectrum/listView/ListView.d.ts.map +1 -1
  158. package/dist/spectrum/listView/ListView.js.map +1 -1
  159. package/dist/spectrum/listView/ListViewNormalized.d.ts +1 -1
  160. package/dist/spectrum/listView/ListViewNormalized.d.ts.map +1 -1
  161. package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
  162. package/dist/spectrum/listView/ListViewWrapper.d.ts +1 -1
  163. package/dist/spectrum/listView/ListViewWrapper.d.ts.map +1 -1
  164. package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
  165. package/dist/spectrum/picker/Picker.d.ts +1 -1
  166. package/dist/spectrum/picker/Picker.d.ts.map +1 -1
  167. package/dist/spectrum/picker/Picker.js.map +1 -1
  168. package/dist/spectrum/picker/usePickerNormalizedProps.d.ts +3 -3
  169. package/dist/spectrum/picker/usePickerNormalizedProps.d.ts.map +1 -1
  170. package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
  171. package/dist/spectrum/picker/usePickerProps.d.ts +2 -2
  172. package/dist/spectrum/picker/usePickerProps.d.ts.map +1 -1
  173. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  174. package/dist/spectrum/utils/itemUtils.d.ts +4 -4
  175. package/dist/spectrum/utils/itemUtils.d.ts.map +1 -1
  176. package/dist/spectrum/utils/itemUtils.js.map +1 -1
  177. package/dist/spectrum/utils/itemWrapperUtils.d.ts +2 -2
  178. package/dist/spectrum/utils/itemWrapperUtils.d.ts.map +1 -1
  179. package/dist/spectrum/utils/itemWrapperUtils.js.map +1 -1
  180. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.d.ts +1 -1
  181. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.d.ts.map +1 -1
  182. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
  183. package/dist/spectrum/utils/useRenderNormalizedItem.d.ts +4 -4
  184. package/dist/spectrum/utils/useRenderNormalizedItem.d.ts.map +1 -1
  185. package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
  186. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.d.ts +1 -1
  187. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.d.ts.map +1 -1
  188. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
  189. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts +2 -2
  190. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts.map +1 -1
  191. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  192. package/dist/spectrum/utils/useStringifiedSelection.d.ts +2 -2
  193. package/dist/spectrum/utils/useStringifiedSelection.d.ts.map +1 -1
  194. package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
  195. package/dist/theme/SpectrumThemeProvider.d.ts +1 -1
  196. package/dist/theme/SpectrumThemeProvider.d.ts.map +1 -1
  197. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  198. package/dist/theme/ThemePicker.js.map +1 -1
  199. package/dist/theme/ThemeProvider.d.ts +2 -2
  200. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  201. package/dist/theme/ThemeProvider.js.map +1 -1
  202. package/dist/theme/ThemeUtils.d.ts +1 -1
  203. package/dist/theme/ThemeUtils.d.ts.map +1 -1
  204. package/dist/theme/ThemeUtils.js.map +1 -1
  205. package/dist/theme/colorUtils.d.ts +1 -1
  206. package/dist/theme/colorUtils.d.ts.map +1 -1
  207. package/dist/theme/colorUtils.js.map +1 -1
  208. package/dist/theme/useTheme.d.ts +1 -1
  209. package/dist/theme/useTheme.d.ts.map +1 -1
  210. package/dist/theme/useTheme.js.map +1 -1
  211. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"InfoModal.js","names":["React","FontAwesomeIcon","Modal","ModalBody","jsx","_jsx","jsxs","_jsxs","InfoModal","_ref","className","icon","isOpen","subtitle","title","children"],"sources":["../../src/modal/InfoModal.tsx"],"sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport Modal from './Modal';\nimport ModalBody from './ModalBody';\nimport './InfoModal.scss';\n\ntype InfoModalProps = {\n /** Class name to give the info modal */\n className?: string;\n\n /** Icon to display in the modal */\n icon?: IconProp;\n\n /** Title to display in the modal */\n title: React.ReactNode;\n\n /** Subtitle/detail to display in the modal */\n subtitle?: React.ReactNode;\n\n /** Whether the modal is open/visible or not. */\n isOpen?: boolean;\n};\n\n/**\n * A modal that displays a message with an icon. Can be used for informational messages, warnings, or errors.\n * Does not have any buttons and cannot be dismissed.\n */\nfunction InfoModal({\n className,\n icon,\n isOpen = false,\n subtitle,\n title,\n}: InfoModalProps): JSX.Element {\n return (\n <Modal isOpen={isOpen} className={className}>\n <ModalBody>\n <div className=\"info-modal\">\n {icon != null && (\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"message-header\">{title}</div>\n {subtitle != null && (\n <div className=\"message-content\">{subtitle}</div>\n )}\n </div>\n </ModalBody>\n </Modal>\n );\n}\n\nexport default InfoModal;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAAC,OAE1DC,KAAK;AAAA,OACLC,SAAS;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAoBhB;AACA;AACA;AACA;AACA,SAASC,SAASA,CAAAC,IAAA,EAMc;EAAA,IANb;IACjBC,SAAS;IACTC,IAAI;IACJC,MAAM,GAAG,KAAK;IACdC,QAAQ;IACRC;EACc,CAAC,GAAAL,IAAA;EACf,oBACEJ,IAAA,CAACH,KAAK;IAACU,MAAM,EAAEA,MAAO;IAACF,SAAS,EAAEA,SAAU;IAAAK,QAAA,eAC1CV,IAAA,CAACF,SAAS;MAAAY,QAAA,eACRR,KAAA;QAAKG,SAAS,EAAC,YAAY;QAAAK,QAAA,GACxBJ,IAAI,IAAI,IAAI,iBACXN,IAAA;UAAKK,SAAS,EAAC,cAAc;UAAAK,QAAA,eAC3BV,IAAA,CAACJ,eAAe;YAACU,IAAI,EAAEA;UAAK,CAAE;QAAC,CAC5B,CACN,eACDN,IAAA;UAAKK,SAAS,EAAC,gBAAgB;UAAAK,QAAA,EAAED;QAAK,CAAM,CAAC,EAC5CD,QAAQ,IAAI,IAAI,iBACfR,IAAA;UAAKK,SAAS,EAAC,iBAAiB;UAAAK,QAAA,EAAEF;QAAQ,CAAM,CACjD;MAAA,CACE;IAAC,CACG;EAAC,CACP,CAAC;AAEZ;AAEA,eAAeL,SAAS"}
1
+ {"version":3,"file":"InfoModal.js","names":["React","FontAwesomeIcon","Modal","ModalBody","jsx","_jsx","jsxs","_jsxs","InfoModal","_ref","className","icon","isOpen","subtitle","title","children"],"sources":["../../src/modal/InfoModal.tsx"],"sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconProp } from '@fortawesome/fontawesome-svg-core';\nimport Modal from './Modal';\nimport ModalBody from './ModalBody';\nimport './InfoModal.scss';\n\ntype InfoModalProps = {\n /** Class name to give the info modal */\n className?: string;\n\n /** Icon to display in the modal */\n icon?: IconProp;\n\n /** Title to display in the modal */\n title: React.ReactNode;\n\n /** Subtitle/detail to display in the modal */\n subtitle?: React.ReactNode;\n\n /** Whether the modal is open/visible or not. */\n isOpen?: boolean;\n};\n\n/**\n * A modal that displays a message with an icon. Can be used for informational messages, warnings, or errors.\n * Does not have any buttons and cannot be dismissed.\n */\nfunction InfoModal({\n className,\n icon,\n isOpen = false,\n subtitle,\n title,\n}: InfoModalProps): JSX.Element {\n return (\n <Modal isOpen={isOpen} className={className}>\n <ModalBody>\n <div className=\"info-modal\">\n {icon != null && (\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"message-header\">{title}</div>\n {subtitle != null && (\n <div className=\"message-content\">{subtitle}</div>\n )}\n </div>\n </ModalBody>\n </Modal>\n );\n}\n\nexport default InfoModal;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAAC,OAE1DC,KAAK;AAAA,OACLC,SAAS;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAoBhB;AACA;AACA;AACA;AACA,SAASC,SAASA,CAAAC,IAAA,EAMc;EAAA,IANb;IACjBC,SAAS;IACTC,IAAI;IACJC,MAAM,GAAG,KAAK;IACdC,QAAQ;IACRC;EACc,CAAC,GAAAL,IAAA;EACf,oBACEJ,IAAA,CAACH,KAAK;IAACU,MAAM,EAAEA,MAAO;IAACF,SAAS,EAAEA,SAAU;IAAAK,QAAA,eAC1CV,IAAA,CAACF,SAAS;MAAAY,QAAA,eACRR,KAAA;QAAKG,SAAS,EAAC,YAAY;QAAAK,QAAA,GACxBJ,IAAI,IAAI,IAAI,iBACXN,IAAA;UAAKK,SAAS,EAAC,cAAc;UAAAK,QAAA,eAC3BV,IAAA,CAACJ,eAAe;YAACU,IAAI,EAAEA;UAAK,CAAE;QAAC,CAC5B,CACN,eACDN,IAAA;UAAKK,SAAS,EAAC,gBAAgB;UAAAK,QAAA,EAAED;QAAK,CAAM,CAAC,EAC5CD,QAAQ,IAAI,IAAI,iBACfR,IAAA;UAAKK,SAAS,EAAC,iBAAiB;UAAAK,QAAA,EAAEF;QAAQ,CAAM,CACjD;MAAA,CACE;IAAC,CACG;EAAC,CACP,CAAC;AAEZ;AAEA,eAAeL,SAAS"}
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
2
  interface ModalProps {
3
3
  className?: string;
4
4
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAMf,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,QAAQ,EACR,IAAa,EACb,QAAe,EACf,YAAmB,EACnB,MAAc,EACd,QAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8IxC;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAMf,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,QAAQ,EACR,IAAa,EACb,QAAe,EACf,YAAmB,EACnB,MAAc,EACd,QAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8IxC;AAED,eAAe,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["classNames","React","useCallback","useEffect","useRef","useState","ReactDOM","CSSTransition","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","Modal","_ref","className","children","role","keyboard","clickOutside","isOpen","centered","size","onOpened","onClosed","toggle","dataTestId","element","background","backgroundClicked","setBackgroundClicked","handleKeyDown","event","key","addKeydownEventListener","window","addEventListener","removeEventListener","open","closed","current","document","createElement","setAttribute","body","appendChild","onExited","removeChild","undefined","createPortal","isPortal","zIndex","position","appear","mountOnEnter","unmountOnExit","in","appearActive","appearDone","timeout","transitionMs","style","ref","onMouseDown","e","target","onMouseUp","display"],"sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React, {\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport ThemeExport from '../ThemeExport';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\ninterface ModalProps {\n className?: string;\n children?: ReactNode;\n role?: string;\n keyboard?: boolean;\n clickOutside?: boolean;\n isOpen?: boolean;\n centered?: boolean;\n size?: 'sm' | 'lg' | 'xl' | undefined;\n onOpened?: () => void;\n onClosed?: () => void;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nfunction Modal({\n className,\n children,\n role = 'role',\n keyboard = true,\n clickOutside = true,\n isOpen = false,\n centered = false,\n size,\n onOpened,\n onClosed,\n toggle,\n 'data-testid': dataTestId,\n}: ModalProps): React.ReactElement | null {\n const element = useRef<HTMLElement>();\n const background = useRef<HTMLDivElement>(null);\n const [backgroundClicked, setBackgroundClicked] = useState(false);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Escape':\n toggle?.();\n break;\n default:\n break;\n }\n },\n [toggle]\n );\n\n useEffect(\n function addKeydownEventListener() {\n if (isOpen && keyboard) {\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }\n },\n [handleKeyDown, isOpen, keyboard]\n );\n\n useEffect(\n function open() {\n if (isOpen && onOpened) {\n onOpened();\n }\n },\n [onOpened, isOpen]\n );\n\n useEffect(\n function closed() {\n if (!isOpen && onClosed) {\n onClosed();\n }\n },\n [onClosed, isOpen]\n );\n\n if (isOpen && !element.current) {\n element.current = document.createElement('div');\n element.current.setAttribute(\n 'style',\n 'padding-right: 15px; display: block'\n );\n element.current.setAttribute('role', 'presentation');\n document.body.appendChild(element.current);\n }\n\n const onExited = (): void => {\n if (element.current) {\n document.body.removeChild(element.current);\n element.current = undefined;\n }\n };\n\n return element.current\n ? ReactDOM.createPortal(\n // Without the zIndex and position props\n // the modal is rendered on top of nested DatePicker popovers\n <SpectrumThemeProvider isPortal zIndex={0} position=\"relative\">\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearActive: 'show',\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className={classNames('modal-backdrop fade')}\n style={{ zIndex: 1050 }}\n />\n </CSSTransition>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n ref={background}\n className=\"modal fade\"\n onMouseDown={e => {\n if (e.target === background.current) {\n setBackgroundClicked(true);\n } else {\n setBackgroundClicked(false);\n }\n }}\n onMouseUp={e => {\n if (\n backgroundClicked &&\n clickOutside &&\n e.target === background.current &&\n toggle !== undefined\n ) {\n toggle();\n }\n }}\n role=\"dialog\"\n style={{ display: 'block' }}\n >\n <div\n className={classNames('modal-dialog', className, {\n 'modal-lg': size === 'lg',\n 'modal-sm': size === 'sm',\n 'modal-xl': size === 'xl',\n 'modal-dialog-centered': centered,\n })}\n style={{ zIndex: 1040 }}\n >\n <div\n className=\"modal-content\"\n role=\"presentation\"\n data-testid={dataTestId}\n >\n {children}\n </div>\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>,\n element.current\n )\n : null;\n}\n\nexport default Modal;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","names":["classNames","React","useCallback","useEffect","useRef","useState","ReactDOM","CSSTransition","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","Modal","_ref","className","children","role","keyboard","clickOutside","isOpen","centered","size","onOpened","onClosed","toggle","dataTestId","element","background","backgroundClicked","setBackgroundClicked","handleKeyDown","event","key","addKeydownEventListener","window","addEventListener","removeEventListener","open","closed","current","document","createElement","setAttribute","body","appendChild","onExited","removeChild","undefined","createPortal","isPortal","zIndex","position","appear","mountOnEnter","unmountOnExit","in","appearActive","appearDone","timeout","transitionMs","style","ref","onMouseDown","e","target","onMouseUp","display"],"sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React, {\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport ThemeExport from '../ThemeExport';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\ninterface ModalProps {\n className?: string;\n children?: ReactNode;\n role?: string;\n keyboard?: boolean;\n clickOutside?: boolean;\n isOpen?: boolean;\n centered?: boolean;\n size?: 'sm' | 'lg' | 'xl' | undefined;\n onOpened?: () => void;\n onClosed?: () => void;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nfunction Modal({\n className,\n children,\n role = 'role',\n keyboard = true,\n clickOutside = true,\n isOpen = false,\n centered = false,\n size,\n onOpened,\n onClosed,\n toggle,\n 'data-testid': dataTestId,\n}: ModalProps): React.ReactElement | null {\n const element = useRef<HTMLElement>();\n const background = useRef<HTMLDivElement>(null);\n const [backgroundClicked, setBackgroundClicked] = useState(false);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Escape':\n toggle?.();\n break;\n default:\n break;\n }\n },\n [toggle]\n );\n\n useEffect(\n function addKeydownEventListener() {\n if (isOpen && keyboard) {\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }\n },\n [handleKeyDown, isOpen, keyboard]\n );\n\n useEffect(\n function open() {\n if (isOpen && onOpened) {\n onOpened();\n }\n },\n [onOpened, isOpen]\n );\n\n useEffect(\n function closed() {\n if (!isOpen && onClosed) {\n onClosed();\n }\n },\n [onClosed, isOpen]\n );\n\n if (isOpen && !element.current) {\n element.current = document.createElement('div');\n element.current.setAttribute(\n 'style',\n 'padding-right: 15px; display: block'\n );\n element.current.setAttribute('role', 'presentation');\n document.body.appendChild(element.current);\n }\n\n const onExited = (): void => {\n if (element.current) {\n document.body.removeChild(element.current);\n element.current = undefined;\n }\n };\n\n return element.current\n ? ReactDOM.createPortal(\n // Without the zIndex and position props\n // the modal is rendered on top of nested DatePicker popovers\n <SpectrumThemeProvider isPortal zIndex={0} position=\"relative\">\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearActive: 'show',\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className={classNames('modal-backdrop fade')}\n style={{ zIndex: 1050 }}\n />\n </CSSTransition>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n ref={background}\n className=\"modal fade\"\n onMouseDown={e => {\n if (e.target === background.current) {\n setBackgroundClicked(true);\n } else {\n setBackgroundClicked(false);\n }\n }}\n onMouseUp={e => {\n if (\n backgroundClicked &&\n clickOutside &&\n e.target === background.current &&\n toggle !== undefined\n ) {\n toggle();\n }\n }}\n role=\"dialog\"\n style={{ display: 'block' }}\n >\n <div\n className={classNames('modal-dialog', className, {\n 'modal-lg': size === 'lg',\n 'modal-sm': size === 'sm',\n 'modal-xl': size === 'xl',\n 'modal-dialog-centered': centered,\n })}\n style={{ zIndex: 1040 }}\n >\n <div\n className=\"modal-content\"\n role=\"presentation\"\n data-testid={dataTestId}\n >\n {children}\n </div>\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>,\n element.current\n )\n : null;\n}\n\nexport default Modal;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactElement, ReactNode } from 'react';
1
+ import { type CSSProperties, type ReactElement, type ReactNode } from 'react';
2
2
  interface ModalBodyProps {
3
3
  className?: string;
4
4
  style?: CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalBody.d.ts","sourceRoot":"","sources":["../../src/modal/ModalBody.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,cAAc,GAAG,YAAY,CAU/B;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"ModalBody.d.ts","sourceRoot":"","sources":["../../src/modal/ModalBody.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,cAAc,GAAG,YAAY,CAU/B;AAED,eAAe,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalBody.js","names":["React","classNames","jsx","_jsx","ModalBody","_ref","className","style","children","dataTestId"],"sources":["../../src/modal/ModalBody.tsx"],"sourcesContent":["import React, { CSSProperties, ReactElement, ReactNode } from 'react';\nimport classNames from 'classnames';\n\ninterface ModalBodyProps {\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nfunction ModalBody({\n className,\n style,\n children,\n 'data-testid': dataTestId,\n}: ModalBodyProps): ReactElement {\n return (\n <div\n className={classNames('modal-body', className)}\n data-testid={dataTestId}\n style={style}\n >\n {children}\n </div>\n );\n}\n\nexport default ModalBody;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAkD,OAAO;AACrE,OAAOC,UAAU,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASpC,SAASC,SAASA,CAAAC,IAAA,EAKe;EAAA,IALd;IACjBC,SAAS;IACTC,KAAK;IACLC,QAAQ;IACR,aAAa,EAAEC;EACD,CAAC,GAAAJ,IAAA;EACf,oBACEF,IAAA;IACEG,SAAS,EAAEL,UAAU,CAAC,YAAY,EAAEK,SAAS,CAAE;IAC/C,eAAaG,UAAW;IACxBF,KAAK,EAAEA,KAAM;IAAAC,QAAA,EAEZA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeJ,SAAS"}
1
+ {"version":3,"file":"ModalBody.js","names":["React","classNames","jsx","_jsx","ModalBody","_ref","className","style","children","dataTestId"],"sources":["../../src/modal/ModalBody.tsx"],"sourcesContent":["import React, {\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport classNames from 'classnames';\n\ninterface ModalBodyProps {\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nfunction ModalBody({\n className,\n style,\n children,\n 'data-testid': dataTestId,\n}: ModalBodyProps): ReactElement {\n return (\n <div\n className={classNames('modal-body', className)}\n data-testid={dataTestId}\n style={style}\n >\n {children}\n </div>\n );\n}\n\nexport default ModalBody;\n"],"mappings":"AAAA,OAAOA,KAAK,MAIL,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASpC,SAASC,SAASA,CAAAC,IAAA,EAKe;EAAA,IALd;IACjBC,SAAS;IACTC,KAAK;IACLC,QAAQ;IACR,aAAa,EAAEC;EACD,CAAC,GAAAJ,IAAA;EACf,oBACEF,IAAA;IACEG,SAAS,EAAEL,UAAU,CAAC,YAAY,EAAEK,SAAS,CAAE;IAC/C,eAAaG,UAAW;IACxBF,KAAK,EAAEA,KAAM;IAAAC,QAAA,EAEZA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeJ,SAAS"}
@@ -1,4 +1,4 @@
1
- import { ReactElement, ReactNode } from 'react';
1
+ import { type ReactElement, type ReactNode } from 'react';
2
2
  interface ModalFooterProps {
3
3
  className?: string;
4
4
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalFooter.d.ts","sourceRoot":"","sources":["../../src/modal/ModalFooter.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,gBAAgB,GAAG,YAAY,CASjC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ModalFooter.d.ts","sourceRoot":"","sources":["../../src/modal/ModalFooter.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjE,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,gBAAgB,GAAG,YAAY,CASjC;AAED,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalFooter.js","names":["React","classNames","jsx","_jsx","ModalFooter","_ref","className","children","dataTestId"],"sources":["../../src/modal/ModalFooter.tsx"],"sourcesContent":["import React, { ReactElement, ReactNode } from 'react';\nimport classNames from 'classnames';\n\ninterface ModalFooterProps {\n className?: string;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nfunction ModalFooter({\n className,\n children,\n 'data-testid': dataTestId,\n}: ModalFooterProps): ReactElement {\n return (\n <div\n className={classNames('modal-footer', className)}\n data-testid={dataTestId}\n >\n {children}\n </div>\n );\n}\n\nexport default ModalFooter;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAmC,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQpC,SAASC,WAAWA,CAAAC,IAAA,EAIe;EAAA,IAJd;IACnBC,SAAS;IACTC,QAAQ;IACR,aAAa,EAAEC;EACC,CAAC,GAAAH,IAAA;EACjB,oBACEF,IAAA;IACEG,SAAS,EAAEL,UAAU,CAAC,cAAc,EAAEK,SAAS,CAAE;IACjD,eAAaE,UAAW;IAAAD,QAAA,EAEvBA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeH,WAAW"}
1
+ {"version":3,"file":"ModalFooter.js","names":["React","classNames","jsx","_jsx","ModalFooter","_ref","className","children","dataTestId"],"sources":["../../src/modal/ModalFooter.tsx"],"sourcesContent":["import React, { type ReactElement, type ReactNode } from 'react';\nimport classNames from 'classnames';\n\ninterface ModalFooterProps {\n className?: string;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nfunction ModalFooter({\n className,\n children,\n 'data-testid': dataTestId,\n}: ModalFooterProps): ReactElement {\n return (\n <div\n className={classNames('modal-footer', className)}\n data-testid={dataTestId}\n >\n {children}\n </div>\n );\n}\n\nexport default ModalFooter;\n"],"mappings":"AAAA,OAAOA,KAAK,MAA6C,OAAO;AAChE,OAAOC,UAAU,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQpC,SAASC,WAAWA,CAAAC,IAAA,EAIe;EAAA,IAJd;IACnBC,SAAS;IACTC,QAAQ;IACR,aAAa,EAAEC;EACC,CAAC,GAAAH,IAAA;EACjB,oBACEF,IAAA;IACEG,SAAS,EAAEL,UAAU,CAAC,cAAc,EAAEK,SAAS,CAAE;IACjD,eAAaE,UAAW;IAAAD,QAAA,EAEvBA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeH,WAAW"}
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactElement, ReactNode } from 'react';
1
+ import { type CSSProperties, type ReactElement, type ReactNode } from 'react';
2
2
  interface ModalHeaderProps {
3
3
  className?: string;
4
4
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../src/modal/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,WAAkB,EAClB,KAAK,EACL,MAAM,EACN,aAAa,EAAE,UAAU,GAC1B,EAAE,gBAAgB,GAAG,YAAY,CAiBjC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../src/modal/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,WAAkB,EAClB,KAAK,EACL,MAAM,EACN,aAAa,EAAE,UAAU,GAC1B,EAAE,gBAAgB,GAAG,YAAY,CAiBjC;AAED,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalHeader.js","names":["React","classNames","jsx","_jsx","jsxs","_jsxs","ModalHeader","_ref","className","children","closeButton","style","toggle","dataTestId","type","onClick"],"sources":["../../src/modal/ModalHeader.tsx"],"sourcesContent":["import React, { CSSProperties, ReactElement, ReactNode } from 'react';\nimport classNames from 'classnames';\n\ninterface ModalHeaderProps {\n className?: string;\n children?: ReactNode;\n closeButton?: boolean;\n style?: CSSProperties;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nfunction ModalHeader({\n className,\n children,\n closeButton = true,\n style,\n toggle,\n 'data-testid': dataTestId,\n}: ModalHeaderProps): ReactElement {\n return (\n <div className={classNames('modal-header', className)} style={style}>\n <h5 className=\"modal-title\">{children}</h5>\n {closeButton && (\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n onClick={toggle}\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n )}\n </div>\n );\n}\n\nexport default ModalHeader;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAkD,OAAO;AACrE,OAAOC,UAAU,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAWpC,SAASC,WAAWA,CAAAC,IAAA,EAOe;EAAA,IAPd;IACnBC,SAAS;IACTC,QAAQ;IACRC,WAAW,GAAG,IAAI;IAClBC,KAAK;IACLC,MAAM;IACN,aAAa,EAAEC;EACC,CAAC,GAAAN,IAAA;EACjB,oBACEF,KAAA;IAAKG,SAAS,EAAEP,UAAU,CAAC,cAAc,EAAEO,SAAS,CAAE;IAACG,KAAK,EAAEA,KAAM;IAAAF,QAAA,gBAClEN,IAAA;MAAIK,SAAS,EAAC,aAAa;MAAAC,QAAA,EAAEA;IAAQ,CAAK,CAAC,EAC1CC,WAAW,iBACVP,IAAA;MACEW,IAAI,EAAC,QAAQ;MACbN,SAAS,EAAC,OAAO;MACjB,gBAAa,OAAO;MACpB,cAAW,OAAO;MAClBO,OAAO,EAAEH,MAAO;MAAAH,QAAA,eAEhBN,IAAA;QAAM,eAAY,MAAM;QAAAM,QAAA,EAAC;MAAO,CAAM;IAAC,CACjC,CACT;EAAA,CACE,CAAC;AAEV;AAEA,eAAeH,WAAW"}
1
+ {"version":3,"file":"ModalHeader.js","names":["React","classNames","jsx","_jsx","jsxs","_jsxs","ModalHeader","_ref","className","children","closeButton","style","toggle","dataTestId","type","onClick"],"sources":["../../src/modal/ModalHeader.tsx"],"sourcesContent":["import React, {\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport classNames from 'classnames';\n\ninterface ModalHeaderProps {\n className?: string;\n children?: ReactNode;\n closeButton?: boolean;\n style?: CSSProperties;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nfunction ModalHeader({\n className,\n children,\n closeButton = true,\n style,\n toggle,\n 'data-testid': dataTestId,\n}: ModalHeaderProps): ReactElement {\n return (\n <div className={classNames('modal-header', className)} style={style}>\n <h5 className=\"modal-title\">{children}</h5>\n {closeButton && (\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n onClick={toggle}\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n )}\n </div>\n );\n}\n\nexport default ModalHeader;\n"],"mappings":"AAAA,OAAOA,KAAK,MAIL,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAWpC,SAASC,WAAWA,CAAAC,IAAA,EAOe;EAAA,IAPd;IACnBC,SAAS;IACTC,QAAQ;IACRC,WAAW,GAAG,IAAI;IAClBC,KAAK;IACLC,MAAM;IACN,aAAa,EAAEC;EACC,CAAC,GAAAN,IAAA;EACjB,oBACEF,KAAA;IAAKG,SAAS,EAAEP,UAAU,CAAC,cAAc,EAAEO,SAAS,CAAE;IAACG,KAAK,EAAEA,KAAM;IAAAF,QAAA,gBAClEN,IAAA;MAAIK,SAAS,EAAC,aAAa;MAAAC,QAAA,EAAEA;IAAQ,CAAK,CAAC,EAC1CC,WAAW,iBACVP,IAAA;MACEW,IAAI,EAAC,QAAQ;MACbN,SAAS,EAAC,OAAO;MACjB,gBAAa,OAAO;MACpB,cAAW,OAAO;MAClBO,OAAO,EAAEH,MAAO;MAAAH,QAAA,eAEhBN,IAAA;QAAM,eAAY,MAAM;QAAAM,QAAA,EAAC;MAAO,CAAM;IAAC,CACjC,CACT;EAAA,CACE,CAAC;AAEV;AAEA,eAAeH,WAAW"}
@@ -1,4 +1,4 @@
1
- import { MenuItemDef } from './MenuItem';
1
+ import { type MenuItemDef } from './MenuItem';
2
2
  import './Menu.scss';
3
3
  export type MenuSelectCallback = (itemIndex: number) => void;
4
4
  export type MenuProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/navigation/Menu.tsx"],"names":[],"mappings":"AACA,OAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,QAA0B,EAC1B,aAAa,EAAE,UAAU,GAC1B,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAiBzB;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/navigation/Menu.tsx"],"names":[],"mappings":"AACA,OAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,QAA0B,EAC1B,aAAa,EAAE,UAAU,GAC1B,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAiBzB;AAED,eAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["React","MenuItem","jsx","_jsx","Menu","_ref","items","onSelect","undefined","dataTestId","className","children","map","item","itemIndex","title"],"sources":["../../src/navigation/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport MenuItem, { MenuItemDef } from './MenuItem';\nimport './Menu.scss';\n\nexport type MenuSelectCallback = (itemIndex: number) => void;\n\nexport type MenuProps = {\n items: readonly MenuItemDef[];\n onSelect?: MenuSelectCallback;\n 'data-testid'?: string;\n};\n\nexport function Menu({\n items,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuProps): JSX.Element {\n return (\n <div className=\"navigation-menu-view\" data-testid={dataTestId}>\n <ul className=\"navigation-menu-list\">\n {items.map((item, itemIndex) => (\n <li key={item.title}>\n <MenuItem\n item={item}\n onSelect={() => {\n onSelect(itemIndex);\n }}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\nexport default Menu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAAC,OACnBC,QAAQ;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAWf,OAAO,SAASC,IAAIA,CAAAC,IAAA,EAIO;EAAA,IAJN;IACnBC,KAAK;IACLC,QAAQ,EAARA,SAAQ,GAAGA,CAAA,KAAMC,SAAS;IAC1B,aAAa,EAAEC;EACN,CAAC,GAAAJ,IAAA;EACV,oBACEF,IAAA;IAAKO,SAAS,EAAC,sBAAsB;IAAC,eAAaD,UAAW;IAAAE,QAAA,eAC5DR,IAAA;MAAIO,SAAS,EAAC,sBAAsB;MAAAC,QAAA,EACjCL,KAAK,CAACM,GAAG,CAAC,CAACC,IAAI,EAAEC,SAAS,kBACzBX,IAAA;QAAAQ,QAAA,eACER,IAAA,CAACF,QAAQ;UACPY,IAAI,EAAEA,IAAK;UACXN,QAAQ,EAAEA,CAAA,KAAM;YACdA,SAAQ,CAACO,SAAS,CAAC;UACrB;QAAE,CACH;MAAC,GANKD,IAAI,CAACE,KAOV,CACL;IAAC,CACA;EAAC,CACF,CAAC;AAEV;AAEA,eAAeX,IAAI"}
1
+ {"version":3,"file":"Menu.js","names":["React","MenuItem","jsx","_jsx","Menu","_ref","items","onSelect","undefined","dataTestId","className","children","map","item","itemIndex","title"],"sources":["../../src/navigation/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport MenuItem, { type MenuItemDef } from './MenuItem';\nimport './Menu.scss';\n\nexport type MenuSelectCallback = (itemIndex: number) => void;\n\nexport type MenuProps = {\n items: readonly MenuItemDef[];\n onSelect?: MenuSelectCallback;\n 'data-testid'?: string;\n};\n\nexport function Menu({\n items,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuProps): JSX.Element {\n return (\n <div className=\"navigation-menu-view\" data-testid={dataTestId}>\n <ul className=\"navigation-menu-list\">\n {items.map((item, itemIndex) => (\n <li key={item.title}>\n <MenuItem\n item={item}\n onSelect={() => {\n onSelect(itemIndex);\n }}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\nexport default Menu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAAC,OACnBC,QAAQ;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAWf,OAAO,SAASC,IAAIA,CAAAC,IAAA,EAIO;EAAA,IAJN;IACnBC,KAAK;IACLC,QAAQ,EAARA,SAAQ,GAAGA,CAAA,KAAMC,SAAS;IAC1B,aAAa,EAAEC;EACN,CAAC,GAAAJ,IAAA;EACV,oBACEF,IAAA;IAAKO,SAAS,EAAC,sBAAsB;IAAC,eAAaD,UAAW;IAAAE,QAAA,eAC5DR,IAAA;MAAIO,SAAS,EAAC,sBAAsB;MAAAC,QAAA,EACjCL,KAAK,CAACM,GAAG,CAAC,CAACC,IAAI,EAAEC,SAAS,kBACzBX,IAAA;QAAAQ,QAAA,eACER,IAAA,CAACF,QAAQ;UACPY,IAAI,EAAEA,IAAK;UACXN,QAAQ,EAAEA,CAAA,KAAM;YACdA,SAAQ,CAACO,SAAS,CAAC;UACrB;QAAE,CACH;MAAC,GANKD,IAAI,CAACE,KAOV,CACL;IAAC,CACA;EAAC,CACF,CAAC;AAEV;AAEA,eAAeX,IAAI"}
@@ -1,4 +1,4 @@
1
- import { IconProp } from '@fortawesome/fontawesome-svg-core';
1
+ import { type IconProp } from '@fortawesome/fontawesome-svg-core';
2
2
  import './MenuItem.scss';
3
3
  export type MenuItemDef = {
4
4
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../src/navigation/MenuItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7D,OAAO,iBAAiB,CAAC;AAIzB,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAMF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAA0B,EAC1B,aAAa,EAAE,UAAU,GAC1B,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA6C7B;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../src/navigation/MenuItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAGlE,OAAO,iBAAiB,CAAC;AAIzB,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAMF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAA0B,EAC1B,aAAa,EAAE,UAAU,GAC1B,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA6C7B;AAED,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","jsx","_jsx","jsxs","_jsxs","isSwitchMenuItemType","item","isOn","undefined","MenuItem","_ref","onSelect","dataTestId","icon","subtitle","title","handleSelect","onChange","className","concat","onClick","onKeyDown","event","key","tabIndex","role","children","on","stopPropagation"],"sources":["../../src/navigation/MenuItem.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport './MenuItem.scss';\n\nimport UISwitch from '../UISwitch';\n\nexport type MenuItemDef = {\n title: string;\n subtitle?: string;\n icon?: IconProp;\n};\n\nexport type SwitchMenuItemDef = MenuItemDef & {\n isOn: boolean;\n onChange: (isOn: boolean) => void;\n};\n\nfunction isSwitchMenuItemType(item: MenuItemDef): item is SwitchMenuItemDef {\n return (item as SwitchMenuItemDef).isOn !== undefined;\n}\n\nexport type MenuItemProps = {\n item: MenuItemDef;\n onSelect?: () => void;\n 'data-testid'?: string;\n};\n\n/**\n * @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.\n * @param props.onSelect Called when the menu item is selected\n */\nexport function MenuItem({\n item,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuItemProps): JSX.Element {\n const { icon, subtitle, title } = item;\n const handleSelect = useMemo(() => {\n if (isSwitchMenuItemType(item)) {\n return () => {\n item.onChange(!item.isOn);\n };\n }\n return onSelect;\n }, [item, onSelect]);\n return (\n <div\n className=\"btn btn-navigation-menu-item\"\n data-testid={`menu-item-${title}`}\n onClick={handleSelect}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelect();\n }\n }}\n tabIndex={0}\n role=\"menuitem\"\n >\n {icon !== undefined && (\n <div className=\"icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"title\">{title}</div>\n {subtitle !== undefined && <div className=\"shortcut\">{subtitle}</div>}\n <div className=\"accessory\" data-testid={dataTestId}>\n {isSwitchMenuItemType(item) ? (\n <UISwitch\n on={item.isOn}\n onClick={event => {\n event.stopPropagation();\n handleSelect();\n }}\n />\n ) : (\n <FontAwesomeIcon icon={vsChevronRight} />\n )}\n </div>\n </div>\n );\n}\n\nexport default MenuItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAEtC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,cAAc,QAAQ,kBAAkB;AAAC;AAAA,OAG3CC,QAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAaf,SAASC,oBAAoBA,CAACC,IAAiB,EAA6B;EAC1E,OAAQA,IAAI,CAAuBC,IAAI,KAAKC,SAAS;AACvD;AAQA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAAC,IAAA,EAIO;EAAA,IAJN;IACvBJ,IAAI;IACJK,QAAQ,GAAGA,CAAA,KAAMH,SAAS;IAC1B,aAAa,EAAEI;EACF,CAAC,GAAAF,IAAA;EACd,IAAM;IAAEG,IAAI;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGT,IAAI;EACtC,IAAMU,YAAY,GAAGnB,OAAO,CAAC,MAAM;IACjC,IAAIQ,oBAAoB,CAACC,IAAI,CAAC,EAAE;MAC9B,OAAO,MAAM;QACXA,IAAI,CAACW,QAAQ,CAAC,CAACX,IAAI,CAACC,IAAI,CAAC;MAC3B,CAAC;IACH;IACA,OAAOI,QAAQ;EACjB,CAAC,EAAE,CAACL,IAAI,EAAEK,QAAQ,CAAC,CAAC;EACpB,oBACEP,KAAA;IACEc,SAAS,EAAC,8BAA8B;IACxC,4BAAAC,MAAA,CAA0BJ,KAAK,CAAG;IAClCK,OAAO,EAAEJ,YAAa;IACtBK,SAAS,EAAEC,KAAK,IAAI;MAClB,IAAIA,KAAK,CAACC,GAAG,KAAK,OAAO,IAAID,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;QAC9CP,YAAY,CAAC,CAAC;MAChB;IACF,CAAE;IACFQ,QAAQ,EAAE,CAAE;IACZC,IAAI,EAAC,UAAU;IAAAC,QAAA,GAEdb,IAAI,KAAKL,SAAS,iBACjBN,IAAA;MAAKgB,SAAS,EAAC,MAAM;MAAAQ,QAAA,eACnBxB,IAAA,CAACJ,eAAe;QAACe,IAAI,EAAEA;MAAK,CAAE;IAAC,CAC5B,CACN,eACDX,IAAA;MAAKgB,SAAS,EAAC,OAAO;MAAAQ,QAAA,EAAEX;IAAK,CAAM,CAAC,EACnCD,QAAQ,KAAKN,SAAS,iBAAIN,IAAA;MAAKgB,SAAS,EAAC,UAAU;MAAAQ,QAAA,EAAEZ;IAAQ,CAAM,CAAC,eACrEZ,IAAA;MAAKgB,SAAS,EAAC,WAAW;MAAC,eAAaN,UAAW;MAAAc,QAAA,EAChDrB,oBAAoB,CAACC,IAAI,CAAC,gBACzBJ,IAAA,CAACF,QAAQ;QACP2B,EAAE,EAAErB,IAAI,CAACC,IAAK;QACda,OAAO,EAAEE,KAAK,IAAI;UAChBA,KAAK,CAACM,eAAe,CAAC,CAAC;UACvBZ,YAAY,CAAC,CAAC;QAChB;MAAE,CACH,CAAC,gBAEFd,IAAA,CAACJ,eAAe;QAACe,IAAI,EAAEd;MAAe,CAAE;IACzC,CACE,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeU,QAAQ"}
1
+ {"version":3,"file":"MenuItem.js","names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","jsx","_jsx","jsxs","_jsxs","isSwitchMenuItemType","item","isOn","undefined","MenuItem","_ref","onSelect","dataTestId","icon","subtitle","title","handleSelect","onChange","className","concat","onClick","onKeyDown","event","key","tabIndex","role","children","on","stopPropagation"],"sources":["../../src/navigation/MenuItem.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { type IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport './MenuItem.scss';\n\nimport UISwitch from '../UISwitch';\n\nexport type MenuItemDef = {\n title: string;\n subtitle?: string;\n icon?: IconProp;\n};\n\nexport type SwitchMenuItemDef = MenuItemDef & {\n isOn: boolean;\n onChange: (isOn: boolean) => void;\n};\n\nfunction isSwitchMenuItemType(item: MenuItemDef): item is SwitchMenuItemDef {\n return (item as SwitchMenuItemDef).isOn !== undefined;\n}\n\nexport type MenuItemProps = {\n item: MenuItemDef;\n onSelect?: () => void;\n 'data-testid'?: string;\n};\n\n/**\n * @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.\n * @param props.onSelect Called when the menu item is selected\n */\nexport function MenuItem({\n item,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuItemProps): JSX.Element {\n const { icon, subtitle, title } = item;\n const handleSelect = useMemo(() => {\n if (isSwitchMenuItemType(item)) {\n return () => {\n item.onChange(!item.isOn);\n };\n }\n return onSelect;\n }, [item, onSelect]);\n return (\n <div\n className=\"btn btn-navigation-menu-item\"\n data-testid={`menu-item-${title}`}\n onClick={handleSelect}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelect();\n }\n }}\n tabIndex={0}\n role=\"menuitem\"\n >\n {icon !== undefined && (\n <div className=\"icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"title\">{title}</div>\n {subtitle !== undefined && <div className=\"shortcut\">{subtitle}</div>}\n <div className=\"accessory\" data-testid={dataTestId}>\n {isSwitchMenuItemType(item) ? (\n <UISwitch\n on={item.isOn}\n onClick={event => {\n event.stopPropagation();\n handleSelect();\n }}\n />\n ) : (\n <FontAwesomeIcon icon={vsChevronRight} />\n )}\n </div>\n </div>\n );\n}\n\nexport default MenuItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAEtC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,cAAc,QAAQ,kBAAkB;AAAC;AAAA,OAG3CC,QAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAaf,SAASC,oBAAoBA,CAACC,IAAiB,EAA6B;EAC1E,OAAQA,IAAI,CAAuBC,IAAI,KAAKC,SAAS;AACvD;AAQA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAAC,IAAA,EAIO;EAAA,IAJN;IACvBJ,IAAI;IACJK,QAAQ,GAAGA,CAAA,KAAMH,SAAS;IAC1B,aAAa,EAAEI;EACF,CAAC,GAAAF,IAAA;EACd,IAAM;IAAEG,IAAI;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGT,IAAI;EACtC,IAAMU,YAAY,GAAGnB,OAAO,CAAC,MAAM;IACjC,IAAIQ,oBAAoB,CAACC,IAAI,CAAC,EAAE;MAC9B,OAAO,MAAM;QACXA,IAAI,CAACW,QAAQ,CAAC,CAACX,IAAI,CAACC,IAAI,CAAC;MAC3B,CAAC;IACH;IACA,OAAOI,QAAQ;EACjB,CAAC,EAAE,CAACL,IAAI,EAAEK,QAAQ,CAAC,CAAC;EACpB,oBACEP,KAAA;IACEc,SAAS,EAAC,8BAA8B;IACxC,4BAAAC,MAAA,CAA0BJ,KAAK,CAAG;IAClCK,OAAO,EAAEJ,YAAa;IACtBK,SAAS,EAAEC,KAAK,IAAI;MAClB,IAAIA,KAAK,CAACC,GAAG,KAAK,OAAO,IAAID,KAAK,CAACC,GAAG,KAAK,GAAG,EAAE;QAC9CP,YAAY,CAAC,CAAC;MAChB;IACF,CAAE;IACFQ,QAAQ,EAAE,CAAE;IACZC,IAAI,EAAC,UAAU;IAAAC,QAAA,GAEdb,IAAI,KAAKL,SAAS,iBACjBN,IAAA;MAAKgB,SAAS,EAAC,MAAM;MAAAQ,QAAA,eACnBxB,IAAA,CAACJ,eAAe;QAACe,IAAI,EAAEA;MAAK,CAAE;IAAC,CAC5B,CACN,eACDX,IAAA;MAAKgB,SAAS,EAAC,OAAO;MAAAQ,QAAA,EAAEX;IAAK,CAAM,CAAC,EACnCD,QAAQ,KAAKN,SAAS,iBAAIN,IAAA;MAAKgB,SAAS,EAAC,UAAU;MAAAQ,QAAA,EAAEZ;IAAQ,CAAM,CAAC,eACrEZ,IAAA;MAAKgB,SAAS,EAAC,WAAW;MAAC,eAAaN,UAAW;MAAAc,QAAA,EAChDrB,oBAAoB,CAACC,IAAI,CAAC,gBACzBJ,IAAA,CAACF,QAAQ;QACP2B,EAAE,EAAErB,IAAI,CAACC,IAAK;QACda,OAAO,EAAEE,KAAK,IAAI;UAChBA,KAAK,CAACM,eAAe,CAAC,CAAC;UACvBZ,YAAY,CAAC,CAAC;QAChB;MAAE,CACH,CAAC,gBAEFd,IAAA,CAACJ,eAAe;QAACe,IAAI,EAAEd;MAAe,CAAE;IACzC,CACE,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeU,QAAQ"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { NavTabItem } from './NavTabList';
3
- import { ResolvableContextAction } from '../context-actions';
3
+ import { type ResolvableContextAction } from '../context-actions';
4
4
  interface NavTabProps {
5
5
  tab: NavTabItem;
6
6
  onSelect: (key: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"NavTab.d.ts","sourceRoot":"","sources":["../../src/navigation/NavTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,UAAU,WAAW;IACnB,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;CACtE;AAED,QAAA,MAAM,MAAM,mHAUP,WAAW,iBAqFf,CAAC;AAIF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"NavTab.d.ts","sourceRoot":"","sources":["../../src/navigation/NavTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,UAAU,WAAW;IACnB,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;CACtE;AAED,QAAA,MAAM,MAAM,mHAUP,WAAW,iBAqFf,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavTab.js","names":["React","memo","classNames","Draggable","vsClose","FontAwesomeIcon","Button","ContextActions","jsx","_jsx","jsxs","_jsxs","NavTab","_ref","tab","onClose","onSelect","isActive","activeRef","index","isDraggable","contextActions","key","isClosable","title","icon","iconElem","isValidElement","draggableId","isDragDisabled","children","provided","snapshot","className","ref","_objectSpread","innerRef","draggableProps","dragHandleProps","active","dragging","isDragging","concat","role","tabIndex","onAuxClick","e","button","buttons","onClick","target","focus","onKeyPress","event","kind","stopPropagation","preventDefault","tooltip","actions","displayName"],"sources":["../../src/navigation/NavTab.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { IconDefinition, vsClose } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { NavTabItem } from './NavTabList';\nimport Button from '../Button';\nimport ContextActions from '../context-actions/ContextActions';\nimport { ResolvableContextAction } from '../context-actions';\n\ninterface NavTabProps {\n tab: NavTabItem;\n onSelect: (key: string) => void;\n onClose?: (key: string) => void;\n isActive: boolean;\n activeRef: React.RefObject<HTMLDivElement>;\n index: number;\n isDraggable: boolean;\n contextActions?: ResolvableContextAction | ResolvableContextAction[];\n}\n\nconst NavTab = memo(\n ({\n tab,\n onClose,\n onSelect,\n isActive,\n activeRef,\n index,\n isDraggable,\n contextActions,\n }: NavTabProps) => {\n const { key, isClosable = onClose != null, title, icon } = tab;\n\n let iconElem: JSX.Element | undefined;\n if (icon != null) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n return (\n <Draggable\n draggableId={key}\n key={key}\n index={index}\n isDragDisabled={!isDraggable}\n >\n {(provided, snapshot) => (\n <div\n className=\"context-menu-wrapper\"\n ref={isActive ? activeRef : null}\n >\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n className={classNames(\n 'btn btn-link btn-nav-tab',\n { active: isActive },\n { dragging: snapshot.isDragging }\n )}\n data-testid={`btn-nav-tab-${title}`}\n role=\"tab\"\n tabIndex={0}\n onAuxClick={e => {\n // Middle mouse button was clicked, and no buttons remain pressed\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose?.(key);\n }\n }}\n onClick={e => {\n // have to have seperate check onClick for Safari not supporting AuxClick\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose?.(key);\n return;\n }\n // Left mouse button was clicked, and no buttons remain pressed\n if (e.button === 0 && e.buttons === 0) {\n // focus is normally set on mousedown, but dnd calls preventDefault for drag purposes\n // so we can call focus on the firing of the actual click event manually\n (e.target as HTMLDivElement).focus();\n\n onSelect(key);\n }\n }}\n onKeyPress={event => {\n if (event.key === 'Enter') onSelect(key);\n }}\n >\n {iconElem}\n {title}\n {isClosable && (\n <Button\n kind=\"ghost\"\n className=\"btn-nav-tab-close\"\n onClick={event => {\n onClose?.(key);\n event.stopPropagation();\n event.preventDefault();\n }}\n icon={vsClose}\n tooltip=\"Close\"\n />\n )}\n </div>\n <ContextActions actions={contextActions} />\n </div>\n )}\n </Draggable>\n );\n }\n);\n\nNavTab.displayName = 'NavTab';\n\nexport default NavTab;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NavTab.js","names":["React","memo","classNames","Draggable","vsClose","FontAwesomeIcon","Button","ContextActions","jsx","_jsx","jsxs","_jsxs","NavTab","_ref","tab","onClose","onSelect","isActive","activeRef","index","isDraggable","contextActions","key","isClosable","title","icon","iconElem","isValidElement","draggableId","isDragDisabled","children","provided","snapshot","className","ref","_objectSpread","innerRef","draggableProps","dragHandleProps","active","dragging","isDragging","concat","role","tabIndex","onAuxClick","e","button","buttons","onClick","target","focus","onKeyPress","event","kind","stopPropagation","preventDefault","tooltip","actions","displayName"],"sources":["../../src/navigation/NavTab.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { type IconDefinition, vsClose } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { NavTabItem } from './NavTabList';\nimport Button from '../Button';\nimport ContextActions from '../context-actions/ContextActions';\nimport { type ResolvableContextAction } from '../context-actions';\n\ninterface NavTabProps {\n tab: NavTabItem;\n onSelect: (key: string) => void;\n onClose?: (key: string) => void;\n isActive: boolean;\n activeRef: React.RefObject<HTMLDivElement>;\n index: number;\n isDraggable: boolean;\n contextActions?: ResolvableContextAction | ResolvableContextAction[];\n}\n\nconst NavTab = memo(\n ({\n tab,\n onClose,\n onSelect,\n isActive,\n activeRef,\n index,\n isDraggable,\n contextActions,\n }: NavTabProps) => {\n const { key, isClosable = onClose != null, title, icon } = tab;\n\n let iconElem: JSX.Element | undefined;\n if (icon != null) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n return (\n <Draggable\n draggableId={key}\n key={key}\n index={index}\n isDragDisabled={!isDraggable}\n >\n {(provided, snapshot) => (\n <div\n className=\"context-menu-wrapper\"\n ref={isActive ? activeRef : null}\n >\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n className={classNames(\n 'btn btn-link btn-nav-tab',\n { active: isActive },\n { dragging: snapshot.isDragging }\n )}\n data-testid={`btn-nav-tab-${title}`}\n role=\"tab\"\n tabIndex={0}\n onAuxClick={e => {\n // Middle mouse button was clicked, and no buttons remain pressed\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose?.(key);\n }\n }}\n onClick={e => {\n // have to have seperate check onClick for Safari not supporting AuxClick\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose?.(key);\n return;\n }\n // Left mouse button was clicked, and no buttons remain pressed\n if (e.button === 0 && e.buttons === 0) {\n // focus is normally set on mousedown, but dnd calls preventDefault for drag purposes\n // so we can call focus on the firing of the actual click event manually\n (e.target as HTMLDivElement).focus();\n\n onSelect(key);\n }\n }}\n onKeyPress={event => {\n if (event.key === 'Enter') onSelect(key);\n }}\n >\n {iconElem}\n {title}\n {isClosable && (\n <Button\n kind=\"ghost\"\n className=\"btn-nav-tab-close\"\n onClick={event => {\n onClose?.(key);\n event.stopPropagation();\n event.preventDefault();\n }}\n icon={vsClose}\n tooltip=\"Close\"\n />\n )}\n </div>\n <ContextActions actions={contextActions} />\n </div>\n )}\n </Draggable>\n );\n }\n);\n\nNavTab.displayName = 'NavTab';\n\nexport default NavTab;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,SAA8BC,OAAO,QAAQ,kBAAkB;AAC/D,SAASC,eAAe,QAAQ,gCAAgC;AAAC,OAE1DC,MAAM;AAAA,OACNC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAcrB,IAAMC,MAAM,gBAAGX,IAAI,CACjBY,IAAA,IASmB;EAAA,IATlB;IACCC,GAAG;IACHC,OAAO;IACPC,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACTC,KAAK;IACLC,WAAW;IACXC;EACW,CAAC,GAAAR,IAAA;EACZ,IAAM;IAAES,GAAG;IAAEC,UAAU,GAAGR,OAAO,IAAI,IAAI;IAAES,KAAK;IAAEC;EAAK,CAAC,GAAGX,GAAG;EAE9D,IAAIY,QAAiC;EACrC,IAAID,IAAI,IAAI,IAAI,EAAE;IAChBC,QAAQ,GAAG,aAAA1B,KAAK,CAAC2B,cAAc,CAACF,IAAI,CAAC,GACnCA,IAAI,gBAEJhB,IAAA,CAACJ,eAAe;MAACoB,IAAI,EAAEA;IAAuB,CAAE,CACjD;EACH;EAEA,oBACEhB,IAAA,CAACN,SAAS;IACRyB,WAAW,EAAEN,GAAI;IAEjBH,KAAK,EAAEA,KAAM;IACbU,cAAc,EAAE,CAACT,WAAY;IAAAU,QAAA,EAE5BA,CAACC,QAAQ,EAAEC,QAAQ,kBAClBrB,KAAA;MACEsB,SAAS,EAAC,sBAAsB;MAChCC,GAAG,EAAEjB,QAAQ,GAAGC,SAAS,GAAG,IAAK;MAAAY,QAAA,gBAEjCnB,KAAA,QAAAwB,aAAA,CAAAA,aAAA,CAAAA,aAAA;QACED,GAAG,EAAEH,QAAQ,CAACK;QACd;MAAA,GACIL,QAAQ,CAACM,cAAc,GAEvBN,QAAQ,CAACO,eAAe;QAC5BL,SAAS,EAAE/B,UAAU,CACnB,0BAA0B,EAC1B;UAAEqC,MAAM,EAAEtB;QAAS,CAAC,EACpB;UAAEuB,QAAQ,EAAER,QAAQ,CAACS;QAAW,CAClC,CAAE;QACF,8BAAAC,MAAA,CAA4BlB,KAAK,CAAG;QACpCmB,IAAI,EAAC,KAAK;QACVC,QAAQ,EAAE,CAAE;QACZC,UAAU,EAAEC,CAAC,IAAI;UACf;UACA,IAAIvB,UAAU,IAAIuB,CAAC,CAACC,MAAM,KAAK,CAAC,IAAID,CAAC,CAACE,OAAO,KAAK,CAAC,EAAE;YACnDjC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGO,GAAG,CAAC;UAChB;QACF,CAAE;QACF2B,OAAO,EAAEH,CAAC,IAAI;UACZ;UACA,IAAIvB,UAAU,IAAIuB,CAAC,CAACC,MAAM,KAAK,CAAC,IAAID,CAAC,CAACE,OAAO,KAAK,CAAC,EAAE;YACnDjC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGO,GAAG,CAAC;YACd;UACF;UACA;UACA,IAAIwB,CAAC,CAACC,MAAM,KAAK,CAAC,IAAID,CAAC,CAACE,OAAO,KAAK,CAAC,EAAE;YACrC;YACA;YACCF,CAAC,CAACI,MAAM,CAAoBC,KAAK,CAAC,CAAC;YAEpCnC,QAAQ,CAACM,GAAG,CAAC;UACf;QACF,CAAE;QACF8B,UAAU,EAAEC,KAAK,IAAI;UACnB,IAAIA,KAAK,CAAC/B,GAAG,KAAK,OAAO,EAAEN,QAAQ,CAACM,GAAG,CAAC;QAC1C,CAAE;QAAAQ,QAAA,GAEDJ,QAAQ,EACRF,KAAK,EACLD,UAAU,iBACTd,IAAA,CAACH,MAAM;UACLgD,IAAI,EAAC,OAAO;UACZrB,SAAS,EAAC,mBAAmB;UAC7BgB,OAAO,EAAEI,KAAK,IAAI;YAChBtC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGO,GAAG,CAAC;YACd+B,KAAK,CAACE,eAAe,CAAC,CAAC;YACvBF,KAAK,CAACG,cAAc,CAAC,CAAC;UACxB,CAAE;UACF/B,IAAI,EAAErB,OAAQ;UACdqD,OAAO,EAAC;QAAO,CAChB,CACF;MAAA,EACE,CAAC,eACNhD,IAAA,CAACF,cAAc;QAACmD,OAAO,EAAErC;MAAe,CAAE,CAAC;IAAA,CACxC;EACN,GAlEIC,GAmEI,CAAC;AAEhB,CACF,CAAC;AAEDV,MAAM,CAAC+C,WAAW,GAAG,QAAQ;AAE7B,eAAe/C,MAAM"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { IconDefinition } from '@fortawesome/fontawesome-svg-core';
2
+ import { type IconDefinition } from '@fortawesome/fontawesome-svg-core';
3
3
  import './NavTabList.scss';
4
- import { ContextAction } from '../context-actions';
4
+ import { type ContextAction } from '../context-actions';
5
5
  export interface NavTabItem {
6
6
  /**
7
7
  * Unique key for the tab.
@@ -1 +1 @@
1
- {"version":3,"file":"NavTabList.d.ts","sourceRoot":"","sources":["../../src/navigation/NavTabList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AASf,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMnE,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAS5E,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IAEpC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,KAAK,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;IACxD;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV;;;;OAIG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpE;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,GAAG,aAAa,EAAE,CAAC;CAClE,CAAC;AAmEF,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,kBAAkB,GACnB,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAkUtC;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"NavTabList.d.ts","sourceRoot":"","sources":["../../src/navigation/NavTabList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AASf,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMxE,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAS5B,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IAEpC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,KAAK,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;IACxD;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV;;;;OAIG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpE;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,GAAG,aAAa,EAAE,CAAC;CAClE,CAAC;AAmEF,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,kBAAkB,GACnB,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAkUtC;AAED,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavTabList.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","classNames","clamp","DragDropContext","Droppable","FontAwesomeIcon","vsChevronRight","vsChevronLeft","useResizeObserver","DragUtils","Button","NavTab","jsx","_jsx","jsxs","_jsxs","CLICK_TIMEOUT","START_SPEED","ACCELERATION","isScrolledLeft","element","scrollLeft","isScrolledRight","clientWidth","scrollWidth","makeBaseContextActions","tab","tabs","onClose","isClosable","key","contextActions","push","title","order","group","action","disabled","i","length","forEach","t","NavTabList","_ref","activeKey","onSelect","onReorder","makeContextActions","containerRef","isOverflowing","setIsOverflowing","disableScrollLeft","setDisableScrollLeft","disableScrollRight","setDisableScrollRight","handleResize","current","onDragEnd","result","stopDragging","destination","source","index","handleScroll","shouldDisableScrollLeft","shouldDisableScrollRight","continuousScrollRef","cancelClick","handleLeftClick","children","child","offsetLeft","scrollIntoView","behavior","block","inline","handleRightClick","offsetWidth","handleMouseRepeat","direction","startX","deltaX","arguments","undefined","prevTimestamp","container","rAF","requestAnimationFrame","timestamp","startTime","deltaTime","newDeltaX","Math","min","endContinuousScroll","holdTimer","clearTimeout","cancelAnimationFrame","window","removeEventListener","handleMouseDown","setTimeout","addEventListener","handleMouseDownLeft","handleMouseDownRight","handleWheel","_containerRef$current","onWheel","e","stopPropagation","preventDefault","nav","currentTarget","delta","abs","deltaY","_containerRef$current2","tabContextActionMap","tabContextActions","Map","_makeContextActions","set","activeTabRef","activeTab","find","navTabs","map","isActive","activeRef","isDraggable","get","scrollActiveTabIntoView","className","kind","icon","transform","tooltip","onClick","onMouseDown","onDragStart","startDragging","droppableId","provided","snapshot","_objectSpread","ref","r","innerRef","droppableProps","dragging","draggingFromThisWith","role","onScroll","placeholder"],"sources":["../../src/navigation/NavTabList.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport {\n DragDropContext,\n Droppable,\n OnDragEndResponder,\n} from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { vsChevronRight, vsChevronLeft } from '@deephaven/icons';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport DragUtils from '../DragUtils';\nimport Button from '../Button';\nimport NavTab from './NavTab';\nimport './NavTabList.scss';\nimport { ContextAction, ResolvableContextAction } from '../context-actions';\n\n// mouse hold timeout to act as hold instead of click\nconst CLICK_TIMEOUT = 500;\n\n// mouse hold acceleration\nconst START_SPEED = 0.01;\nconst ACCELERATION = 0.0005;\n\nexport interface NavTabItem {\n /**\n * Unique key for the tab.\n */\n key: string;\n\n /**\n * Title to display on the tab.\n */\n title: string;\n\n /**\n * Icon to display on the tab.\n */\n icon?: IconDefinition | JSX.Element;\n\n /**\n * Whether the tab is closable.\n * If omitted, the tab will be closeable if onClose exists.\n */\n isClosable?: boolean;\n}\n\ntype NavTabListProps<T extends NavTabItem = NavTabItem> = {\n /**\n * The key of the active tab.\n * If this does not match a tab key, no tab will be active.\n */\n activeKey: string;\n\n /**\n * Array of tabs to display.\n * @see {@link NavTabItem} for the minimum required properties.\n */\n tabs: T[];\n\n /**\n * Function called when a tab is selected.\n *\n * @param key The key of the tab to select\n */\n onSelect: (key: string) => void;\n\n /**\n * Function called when a tab is closed.\n * If the function is provided, all tabs will be closeable by default.\n * Tabs may set their own closeable property to override this behavior.\n *\n * @param key The key of the tab to close\n */\n onClose?: (key: string) => void;\n\n /**\n * Function called when a tab is reordered.\n * If the function is omitted, the tab list will not be reorderable.\n *\n * @param sourceIndex Index in the tab list the drag started from\n * @param destinationIndex Index in the tab list the drag ended at\n */\n onReorder?: (sourceIndex: number, destinationIndex: number) => void;\n\n /**\n * Context actions to add to the tab in addition to the default actions.\n * The default actions are Close, Close to the Right, and Close All.\n * The default actions have a group value of 20.\n *\n * @param tab The tab to make context items for\n * @returns Additional context items for the tab\n */\n makeContextActions?: (tab: T) => ContextAction | ContextAction[];\n};\n\nfunction isScrolledLeft(element: HTMLElement): boolean {\n return element.scrollLeft === 0;\n}\n\nfunction isScrolledRight(element: HTMLElement): boolean {\n return (\n element.scrollLeft + element.clientWidth === element.scrollWidth ||\n element.scrollWidth === 0\n );\n}\n\nfunction makeBaseContextActions(\n tab: NavTabItem,\n tabs: NavTabItem[],\n onClose: ((key: string) => void) | undefined\n): ContextAction[] {\n const { isClosable = false, key } = tab;\n const contextActions: ContextAction[] = [];\n if (isClosable && onClose != null) {\n contextActions.push({\n title: 'Close',\n order: 10,\n group: 20,\n action: () => {\n onClose(key);\n },\n });\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === tab.key) break;\n if (tabs[i].isClosable === true) {\n disabled = false;\n break;\n }\n }\n\n contextActions.push({\n title: 'Close to the Right',\n order: 20,\n group: 20,\n action: () => {\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === key) break;\n if (tabs[i].isClosable === true) onClose(tabs[i].key);\n }\n },\n disabled,\n });\n\n contextActions.push({\n title: 'Close All',\n order: 30,\n group: 20,\n action: () => {\n tabs.forEach(t => {\n if (t.isClosable === true) onClose(t.key);\n });\n },\n });\n }\n\n return contextActions;\n}\n\nfunction NavTabList({\n activeKey,\n tabs,\n onSelect,\n onReorder,\n onClose,\n makeContextActions,\n}: NavTabListProps): React.ReactElement {\n const containerRef = useRef<HTMLDivElement>();\n const [isOverflowing, setIsOverflowing] = useState(true);\n const [disableScrollLeft, setDisableScrollLeft] = useState(true);\n const [disableScrollRight, setDisableScrollRight] = useState(true);\n const handleResize = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n\n if (\n containerRef.current.clientWidth < containerRef.current.scrollWidth &&\n tabs.length > 0\n ) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n\n setDisableScrollLeft(isScrolledLeft(containerRef.current));\n setDisableScrollRight(isScrolledRight(containerRef.current));\n }, [tabs]);\n useResizeObserver(containerRef.current, handleResize);\n\n const onDragEnd: OnDragEndResponder = useCallback(\n result => {\n DragUtils.stopDragging();\n\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n\n onReorder?.(result.source.index, result.destination.index);\n },\n [onReorder]\n );\n\n const handleScroll = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n\n const shouldDisableScrollLeft = isScrolledLeft(containerRef.current);\n if (shouldDisableScrollLeft !== disableScrollLeft) {\n setDisableScrollLeft(shouldDisableScrollLeft);\n }\n\n const shouldDisableScrollRight = isScrolledRight(containerRef.current);\n if (shouldDisableScrollRight !== disableScrollRight) {\n setDisableScrollRight(shouldDisableScrollRight);\n }\n }, [disableScrollLeft, disableScrollRight]);\n\n const continuousScrollRef = useRef<{\n holdTimer?: number;\n rAF?: number;\n cancelClick: boolean;\n }>({ cancelClick: false });\n\n const handleLeftClick = useCallback(() => {\n if (\n containerRef.current == null ||\n continuousScrollRef.current.cancelClick\n ) {\n return;\n }\n\n const { children } = containerRef.current;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i] as HTMLElement;\n // Subtract 5px from left edge to account for rounding of offset values\n if (child.offsetLeft < containerRef.current.scrollLeft - 5) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start',\n });\n return;\n }\n }\n }, []);\n\n const handleRightClick = useCallback(() => {\n if (\n containerRef.current == null ||\n continuousScrollRef.current.cancelClick\n ) {\n return;\n }\n\n const { children } = containerRef.current;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i] as HTMLElement;\n // Add 5px to right edge to account for rounding of offset values\n if (\n child.offsetLeft + 5 >\n containerRef.current.scrollLeft + containerRef.current.offsetWidth\n ) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'end',\n });\n return;\n }\n }\n }, []);\n\n /**\n * Recurively called after initial timeout on mousedown. Continuously scroll with acceleration.\n * Cancelled by mouseup handler cancelling the animationFrame.\n * @param direction of scroll, left or right\n * @param startX starting position of scroll\n * @param deltaX delta from intial startX calculated recursively\n * @param prevTimestamp called on subsequent delta frames\n */\n const handleMouseRepeat = useCallback(\n (\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) => {\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n continuousScrollRef.current.cancelClick = true;\n\n if (direction === 'left') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX - deltaX;\n } else if (direction === 'right') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX + deltaX;\n }\n\n // eslint-disable-next-line no-param-reassign\n continuousScrollRef.current.rAF = requestAnimationFrame(timestamp => {\n const startTime = prevTimestamp ?? timestamp;\n const deltaTime = timestamp - startTime;\n let newDeltaX =\n START_SPEED * deltaTime + 0.5 * ACCELERATION * deltaTime ** 2;\n newDeltaX = Math.min(newDeltaX, container.scrollWidth);\n // scrollLeft enforces a limit but no point letting delta increment beyond scrollWidth\n\n handleMouseRepeat(direction, startX, newDeltaX, startTime);\n });\n },\n []\n );\n\n const endContinuousScroll = useCallback(() => {\n const { holdTimer, rAF } = continuousScrollRef.current;\n if (holdTimer != null) {\n clearTimeout(holdTimer);\n continuousScrollRef.current.holdTimer = undefined;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n continuousScrollRef.current.rAF = undefined;\n }\n window.removeEventListener('mouseup', endContinuousScroll);\n }, []);\n\n useEffect(\n () => () => window.removeEventListener('mouseup', endContinuousScroll),\n [endContinuousScroll]\n );\n\n const handleMouseDown = useCallback(\n (direction: 'left' | 'right') => {\n if (containerRef.current != null) {\n continuousScrollRef.current.holdTimer = window.setTimeout(\n handleMouseRepeat,\n CLICK_TIMEOUT,\n direction,\n containerRef.current.scrollLeft\n );\n }\n continuousScrollRef.current.cancelClick = false;\n window.addEventListener('mouseup', endContinuousScroll);\n },\n [endContinuousScroll, handleMouseRepeat]\n );\n\n const handleMouseDownLeft = useCallback(() => {\n handleMouseDown('left');\n }, [handleMouseDown]);\n\n const handleMouseDownRight = useCallback(() => {\n handleMouseDown('right');\n }, [handleMouseDown]);\n\n // React binds to the root as a passive listener for wheel\n // This prevents the wheel event from being canceled\n // Bypass React's event system so we can prevent the default behavior\n // https://github.com/facebook/react/issues/14856\n useEffect(function handleWheel() {\n const onWheel = (e: WheelEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const nav = e.currentTarget as HTMLDivElement;\n const delta =\n Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX;\n\n // Scrolling jumps too far sometimes, so clamp to get a smoother scroll\n nav.scrollLeft += clamp(delta, -30, 30);\n };\n\n containerRef.current?.addEventListener('wheel', onWheel);\n return () => {\n containerRef.current?.removeEventListener('wheel', onWheel);\n };\n }, []);\n\n const tabContextActionMap = useMemo(() => {\n const tabContextActions = new Map<string, ResolvableContextAction[]>();\n tabs.forEach(tab => {\n const { key } = tab;\n const contextActions = [\n () => makeBaseContextActions(tab, tabs, onClose),\n () => makeContextActions?.(tab) ?? [],\n ];\n tabContextActions.set(key, contextActions);\n });\n return tabContextActions;\n }, [makeContextActions, tabs, onClose]);\n\n const activeTabRef = useRef<HTMLDivElement>(null);\n const activeTab = tabs.find(tab => tab.key === activeKey);\n const navTabs = tabs.map((tab, index) => {\n const { key } = tab;\n const isActive = tab === activeTab;\n\n return (\n <NavTab\n tab={tab}\n key={key}\n index={index}\n isActive={isActive}\n activeRef={activeTabRef}\n onSelect={onSelect}\n onClose={onClose}\n isDraggable={onReorder != null}\n contextActions={tabContextActionMap.get(key)}\n />\n );\n });\n\n useEffect(\n // Needs to be in a useEffect so the ref is updated\n function scrollActiveTabIntoView() {\n if (activeTabRef.current != null) {\n activeTabRef.current.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n },\n [activeKey]\n );\n\n return (\n <nav className=\"nav-container\">\n {isOverflowing && (\n <Button\n kind=\"ghost\"\n icon={<FontAwesomeIcon icon={vsChevronLeft} transform=\"grow-4\" />}\n className=\"tab-controls-btn tab-controls-btn-left\"\n tooltip=\"Scroll left\"\n onClick={handleLeftClick}\n onMouseDown={handleMouseDownLeft}\n disabled={disableScrollLeft}\n />\n )}\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={onDragEnd}\n >\n <Droppable\n droppableId=\"droppable-tab-navigation\"\n direction=\"horizontal\"\n >\n {(provided, snapshot) => (\n <div\n ref={r => {\n if (r == null) {\n return;\n }\n containerRef.current = r;\n provided.innerRef(r);\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('nav nav-tabs', {\n dragging: snapshot.draggingFromThisWith,\n })}\n role=\"tablist\"\n onScroll={handleScroll}\n >\n {navTabs}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n {isOverflowing && (\n <Button\n kind=\"ghost\"\n icon={<FontAwesomeIcon icon={vsChevronRight} transform=\"grow-4\" />}\n className=\"tab-controls-btn tab-controls-btn-right\"\n tooltip=\"Scroll right\"\n onClick={handleRightClick}\n onMouseDown={handleMouseDownRight}\n disabled={disableScrollRight}\n />\n )}\n </nav>\n );\n}\n\nexport default NavTabList;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NavTabList.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","classNames","clamp","DragDropContext","Droppable","FontAwesomeIcon","vsChevronRight","vsChevronLeft","useResizeObserver","DragUtils","Button","NavTab","jsx","_jsx","jsxs","_jsxs","CLICK_TIMEOUT","START_SPEED","ACCELERATION","isScrolledLeft","element","scrollLeft","isScrolledRight","clientWidth","scrollWidth","makeBaseContextActions","tab","tabs","onClose","isClosable","key","contextActions","push","title","order","group","action","disabled","i","length","forEach","t","NavTabList","_ref","activeKey","onSelect","onReorder","makeContextActions","containerRef","isOverflowing","setIsOverflowing","disableScrollLeft","setDisableScrollLeft","disableScrollRight","setDisableScrollRight","handleResize","current","onDragEnd","result","stopDragging","destination","source","index","handleScroll","shouldDisableScrollLeft","shouldDisableScrollRight","continuousScrollRef","cancelClick","handleLeftClick","children","child","offsetLeft","scrollIntoView","behavior","block","inline","handleRightClick","offsetWidth","handleMouseRepeat","direction","startX","deltaX","arguments","undefined","prevTimestamp","container","rAF","requestAnimationFrame","timestamp","startTime","deltaTime","newDeltaX","Math","min","endContinuousScroll","holdTimer","clearTimeout","cancelAnimationFrame","window","removeEventListener","handleMouseDown","setTimeout","addEventListener","handleMouseDownLeft","handleMouseDownRight","handleWheel","_containerRef$current","onWheel","e","stopPropagation","preventDefault","nav","currentTarget","delta","abs","deltaY","_containerRef$current2","tabContextActionMap","tabContextActions","Map","_makeContextActions","set","activeTabRef","activeTab","find","navTabs","map","isActive","activeRef","isDraggable","get","scrollActiveTabIntoView","className","kind","icon","transform","tooltip","onClick","onMouseDown","onDragStart","startDragging","droppableId","provided","snapshot","_objectSpread","ref","r","innerRef","droppableProps","dragging","draggingFromThisWith","role","onScroll","placeholder"],"sources":["../../src/navigation/NavTabList.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport {\n DragDropContext,\n Droppable,\n type OnDragEndResponder,\n} from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { vsChevronRight, vsChevronLeft } from '@deephaven/icons';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport DragUtils from '../DragUtils';\nimport Button from '../Button';\nimport NavTab from './NavTab';\nimport './NavTabList.scss';\nimport {\n type ContextAction,\n type ResolvableContextAction,\n} from '../context-actions';\n\n// mouse hold timeout to act as hold instead of click\nconst CLICK_TIMEOUT = 500;\n\n// mouse hold acceleration\nconst START_SPEED = 0.01;\nconst ACCELERATION = 0.0005;\n\nexport interface NavTabItem {\n /**\n * Unique key for the tab.\n */\n key: string;\n\n /**\n * Title to display on the tab.\n */\n title: string;\n\n /**\n * Icon to display on the tab.\n */\n icon?: IconDefinition | JSX.Element;\n\n /**\n * Whether the tab is closable.\n * If omitted, the tab will be closeable if onClose exists.\n */\n isClosable?: boolean;\n}\n\ntype NavTabListProps<T extends NavTabItem = NavTabItem> = {\n /**\n * The key of the active tab.\n * If this does not match a tab key, no tab will be active.\n */\n activeKey: string;\n\n /**\n * Array of tabs to display.\n * @see {@link NavTabItem} for the minimum required properties.\n */\n tabs: T[];\n\n /**\n * Function called when a tab is selected.\n *\n * @param key The key of the tab to select\n */\n onSelect: (key: string) => void;\n\n /**\n * Function called when a tab is closed.\n * If the function is provided, all tabs will be closeable by default.\n * Tabs may set their own closeable property to override this behavior.\n *\n * @param key The key of the tab to close\n */\n onClose?: (key: string) => void;\n\n /**\n * Function called when a tab is reordered.\n * If the function is omitted, the tab list will not be reorderable.\n *\n * @param sourceIndex Index in the tab list the drag started from\n * @param destinationIndex Index in the tab list the drag ended at\n */\n onReorder?: (sourceIndex: number, destinationIndex: number) => void;\n\n /**\n * Context actions to add to the tab in addition to the default actions.\n * The default actions are Close, Close to the Right, and Close All.\n * The default actions have a group value of 20.\n *\n * @param tab The tab to make context items for\n * @returns Additional context items for the tab\n */\n makeContextActions?: (tab: T) => ContextAction | ContextAction[];\n};\n\nfunction isScrolledLeft(element: HTMLElement): boolean {\n return element.scrollLeft === 0;\n}\n\nfunction isScrolledRight(element: HTMLElement): boolean {\n return (\n element.scrollLeft + element.clientWidth === element.scrollWidth ||\n element.scrollWidth === 0\n );\n}\n\nfunction makeBaseContextActions(\n tab: NavTabItem,\n tabs: NavTabItem[],\n onClose: ((key: string) => void) | undefined\n): ContextAction[] {\n const { isClosable = false, key } = tab;\n const contextActions: ContextAction[] = [];\n if (isClosable && onClose != null) {\n contextActions.push({\n title: 'Close',\n order: 10,\n group: 20,\n action: () => {\n onClose(key);\n },\n });\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === tab.key) break;\n if (tabs[i].isClosable === true) {\n disabled = false;\n break;\n }\n }\n\n contextActions.push({\n title: 'Close to the Right',\n order: 20,\n group: 20,\n action: () => {\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === key) break;\n if (tabs[i].isClosable === true) onClose(tabs[i].key);\n }\n },\n disabled,\n });\n\n contextActions.push({\n title: 'Close All',\n order: 30,\n group: 20,\n action: () => {\n tabs.forEach(t => {\n if (t.isClosable === true) onClose(t.key);\n });\n },\n });\n }\n\n return contextActions;\n}\n\nfunction NavTabList({\n activeKey,\n tabs,\n onSelect,\n onReorder,\n onClose,\n makeContextActions,\n}: NavTabListProps): React.ReactElement {\n const containerRef = useRef<HTMLDivElement>();\n const [isOverflowing, setIsOverflowing] = useState(true);\n const [disableScrollLeft, setDisableScrollLeft] = useState(true);\n const [disableScrollRight, setDisableScrollRight] = useState(true);\n const handleResize = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n\n if (\n containerRef.current.clientWidth < containerRef.current.scrollWidth &&\n tabs.length > 0\n ) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n\n setDisableScrollLeft(isScrolledLeft(containerRef.current));\n setDisableScrollRight(isScrolledRight(containerRef.current));\n }, [tabs]);\n useResizeObserver(containerRef.current, handleResize);\n\n const onDragEnd: OnDragEndResponder = useCallback(\n result => {\n DragUtils.stopDragging();\n\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n\n onReorder?.(result.source.index, result.destination.index);\n },\n [onReorder]\n );\n\n const handleScroll = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n\n const shouldDisableScrollLeft = isScrolledLeft(containerRef.current);\n if (shouldDisableScrollLeft !== disableScrollLeft) {\n setDisableScrollLeft(shouldDisableScrollLeft);\n }\n\n const shouldDisableScrollRight = isScrolledRight(containerRef.current);\n if (shouldDisableScrollRight !== disableScrollRight) {\n setDisableScrollRight(shouldDisableScrollRight);\n }\n }, [disableScrollLeft, disableScrollRight]);\n\n const continuousScrollRef = useRef<{\n holdTimer?: number;\n rAF?: number;\n cancelClick: boolean;\n }>({ cancelClick: false });\n\n const handleLeftClick = useCallback(() => {\n if (\n containerRef.current == null ||\n continuousScrollRef.current.cancelClick\n ) {\n return;\n }\n\n const { children } = containerRef.current;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i] as HTMLElement;\n // Subtract 5px from left edge to account for rounding of offset values\n if (child.offsetLeft < containerRef.current.scrollLeft - 5) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start',\n });\n return;\n }\n }\n }, []);\n\n const handleRightClick = useCallback(() => {\n if (\n containerRef.current == null ||\n continuousScrollRef.current.cancelClick\n ) {\n return;\n }\n\n const { children } = containerRef.current;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i] as HTMLElement;\n // Add 5px to right edge to account for rounding of offset values\n if (\n child.offsetLeft + 5 >\n containerRef.current.scrollLeft + containerRef.current.offsetWidth\n ) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'end',\n });\n return;\n }\n }\n }, []);\n\n /**\n * Recurively called after initial timeout on mousedown. Continuously scroll with acceleration.\n * Cancelled by mouseup handler cancelling the animationFrame.\n * @param direction of scroll, left or right\n * @param startX starting position of scroll\n * @param deltaX delta from intial startX calculated recursively\n * @param prevTimestamp called on subsequent delta frames\n */\n const handleMouseRepeat = useCallback(\n (\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) => {\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n continuousScrollRef.current.cancelClick = true;\n\n if (direction === 'left') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX - deltaX;\n } else if (direction === 'right') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX + deltaX;\n }\n\n // eslint-disable-next-line no-param-reassign\n continuousScrollRef.current.rAF = requestAnimationFrame(timestamp => {\n const startTime = prevTimestamp ?? timestamp;\n const deltaTime = timestamp - startTime;\n let newDeltaX =\n START_SPEED * deltaTime + 0.5 * ACCELERATION * deltaTime ** 2;\n newDeltaX = Math.min(newDeltaX, container.scrollWidth);\n // scrollLeft enforces a limit but no point letting delta increment beyond scrollWidth\n\n handleMouseRepeat(direction, startX, newDeltaX, startTime);\n });\n },\n []\n );\n\n const endContinuousScroll = useCallback(() => {\n const { holdTimer, rAF } = continuousScrollRef.current;\n if (holdTimer != null) {\n clearTimeout(holdTimer);\n continuousScrollRef.current.holdTimer = undefined;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n continuousScrollRef.current.rAF = undefined;\n }\n window.removeEventListener('mouseup', endContinuousScroll);\n }, []);\n\n useEffect(\n () => () => window.removeEventListener('mouseup', endContinuousScroll),\n [endContinuousScroll]\n );\n\n const handleMouseDown = useCallback(\n (direction: 'left' | 'right') => {\n if (containerRef.current != null) {\n continuousScrollRef.current.holdTimer = window.setTimeout(\n handleMouseRepeat,\n CLICK_TIMEOUT,\n direction,\n containerRef.current.scrollLeft\n );\n }\n continuousScrollRef.current.cancelClick = false;\n window.addEventListener('mouseup', endContinuousScroll);\n },\n [endContinuousScroll, handleMouseRepeat]\n );\n\n const handleMouseDownLeft = useCallback(() => {\n handleMouseDown('left');\n }, [handleMouseDown]);\n\n const handleMouseDownRight = useCallback(() => {\n handleMouseDown('right');\n }, [handleMouseDown]);\n\n // React binds to the root as a passive listener for wheel\n // This prevents the wheel event from being canceled\n // Bypass React's event system so we can prevent the default behavior\n // https://github.com/facebook/react/issues/14856\n useEffect(function handleWheel() {\n const onWheel = (e: WheelEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const nav = e.currentTarget as HTMLDivElement;\n const delta =\n Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX;\n\n // Scrolling jumps too far sometimes, so clamp to get a smoother scroll\n nav.scrollLeft += clamp(delta, -30, 30);\n };\n\n containerRef.current?.addEventListener('wheel', onWheel);\n return () => {\n containerRef.current?.removeEventListener('wheel', onWheel);\n };\n }, []);\n\n const tabContextActionMap = useMemo(() => {\n const tabContextActions = new Map<string, ResolvableContextAction[]>();\n tabs.forEach(tab => {\n const { key } = tab;\n const contextActions = [\n () => makeBaseContextActions(tab, tabs, onClose),\n () => makeContextActions?.(tab) ?? [],\n ];\n tabContextActions.set(key, contextActions);\n });\n return tabContextActions;\n }, [makeContextActions, tabs, onClose]);\n\n const activeTabRef = useRef<HTMLDivElement>(null);\n const activeTab = tabs.find(tab => tab.key === activeKey);\n const navTabs = tabs.map((tab, index) => {\n const { key } = tab;\n const isActive = tab === activeTab;\n\n return (\n <NavTab\n tab={tab}\n key={key}\n index={index}\n isActive={isActive}\n activeRef={activeTabRef}\n onSelect={onSelect}\n onClose={onClose}\n isDraggable={onReorder != null}\n contextActions={tabContextActionMap.get(key)}\n />\n );\n });\n\n useEffect(\n // Needs to be in a useEffect so the ref is updated\n function scrollActiveTabIntoView() {\n if (activeTabRef.current != null) {\n activeTabRef.current.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n },\n [activeKey]\n );\n\n return (\n <nav className=\"nav-container\">\n {isOverflowing && (\n <Button\n kind=\"ghost\"\n icon={<FontAwesomeIcon icon={vsChevronLeft} transform=\"grow-4\" />}\n className=\"tab-controls-btn tab-controls-btn-left\"\n tooltip=\"Scroll left\"\n onClick={handleLeftClick}\n onMouseDown={handleMouseDownLeft}\n disabled={disableScrollLeft}\n />\n )}\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={onDragEnd}\n >\n <Droppable\n droppableId=\"droppable-tab-navigation\"\n direction=\"horizontal\"\n >\n {(provided, snapshot) => (\n <div\n ref={r => {\n if (r == null) {\n return;\n }\n containerRef.current = r;\n provided.innerRef(r);\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('nav nav-tabs', {\n dragging: snapshot.draggingFromThisWith,\n })}\n role=\"tablist\"\n onScroll={handleScroll}\n >\n {navTabs}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n {isOverflowing && (\n <Button\n kind=\"ghost\"\n icon={<FontAwesomeIcon icon={vsChevronRight} transform=\"grow-4\" />}\n className=\"tab-controls-btn tab-controls-btn-right\"\n tooltip=\"Scroll right\"\n onClick={handleRightClick}\n onMouseDown={handleMouseDownRight}\n disabled={disableScrollRight}\n />\n )}\n </nav>\n );\n}\n\nexport default NavTabList;\n"],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * </Popper>
16
16
  */
17
17
  import React, { Component } from 'react';
18
- import PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';
18
+ import PopperJs, { type PopperOptions, type ReferenceObject } from 'popper.js';
19
19
  import PropTypes from 'prop-types';
20
20
  import './Popper.scss';
21
21
  interface PopperProps {
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,eAAe,CAAC;AAKvB,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,SAAS;;;;;;;;;;;;MAYd;IAEF,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAG3C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IAiDlB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;IA0C5B,MAAM,IAAI,GAAG,CAAC,OAAO;CActB;AAED,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,eAAe,CAAC;AAKvB,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,SAAS;;;;;;;;;;;;MAYd;IAEF,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAG3C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IAiDlB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;IA0C5B,MAAM,IAAI,GAAG,CAAC,OAAO;CActB;AAED,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","POPPER_CLASS_NAME","Popper","constructor","props","_defineProperty","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","_objectSpread","placement","modifiers","preventOverflow","boundariesElement","body","appendChild","parent","scheduleUpdate","popperEl","querySelector","concat","HTMLElement","contains","activeElement","focus","setState","updateState","arguments","length","undefined","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","isPortal","in","onClick","stopPropagation","onKeyDown","key","onBlur","tabIndex","role","render","dataTestId","ref","style","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\nconst POPPER_CLASS_NAME = 'popper';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n const popperEl = this.element.querySelector(`.${POPPER_CLASS_NAME}`);\n\n if (\n popperEl instanceof HTMLElement &&\n !popperEl.contains(document.activeElement)\n ) {\n popperEl.focus();\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <SpectrumThemeProvider isPortal>\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames(\n POPPER_CLASS_NAME,\n { interactive },\n className\n )}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","POPPER_CLASS_NAME","Popper","constructor","props","_defineProperty","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","_objectSpread","placement","modifiers","preventOverflow","boundariesElement","body","appendChild","parent","scheduleUpdate","popperEl","querySelector","concat","HTMLElement","contains","activeElement","focus","setState","updateState","arguments","length","undefined","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","isPortal","in","onClick","stopPropagation","onKeyDown","key","onBlur","tabIndex","role","render","dataTestId","ref","style","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { type PopperOptions, type ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\nconst POPPER_CLASS_NAME = 'popper';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n const popperEl = this.element.querySelector(`.${POPPER_CLASS_NAME}`);\n\n if (\n popperEl instanceof HTMLElement &&\n !popperEl.contains(document.activeElement)\n ) {\n popperEl.focus();\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <SpectrumThemeProvider isPortal>\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames(\n POPPER_CLASS_NAME,\n { interactive },\n className\n )}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React, { Component } from 'react';
2
- import Popper, { PopperOptions, ReferenceObject } from './Popper';
2
+ import Popper, { type PopperOptions, type ReferenceObject } from './Popper';
3
3
  type TooltipProps = typeof Tooltip.defaultProps & {
4
4
  children: React.ReactNode;
5
5
  interactive?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/popper/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIlE,KAAK,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG;IAChD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,cAAM,OAAQ,SAAQ,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,MAAM,CAAC,cAAc,SAAO;IAE5B,MAAM,CAAC,oBAAoB,SAAO;IAElC,MAAM,CAAC,sBAAsB,SAAO;IAEpC,MAAM,CAAC,iBAAiB,SAAK;IAE7B,MAAM,CAAC,cAAc,SAAc;IAEnC,MAAM,CAAC,YAAY;;;;;;yBAMF,IAAI;wBACL,IAAI;;MAElB;IAEF,MAAM,CAAC,YAAY,IAAI,IAAI;IAQ3B,MAAM,CAAC,WAAW,IAAI,IAAI;gBAId,KAAK,EAAE,YAAY;IAqB/B,iBAAiB,IAAI,IAAI;IASzB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAa1E,oBAAoB,IAAI,IAAI;IAY5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAI3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,cAAc,IAAI,IAAI;IAYtB,aAAa,IAAI,IAAI;IAUrB,oBAAoB,IAAI,IAAI;IAM5B,mBAAmB,IAAI,IAAI;IAM3B,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAanB,gBAAgB,IAAI,IAAI;IAUxB,aAAa,IAAI,IAAI;IAIrB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IA+B9C,UAAU,IAAI,IAAI;IAclB,SAAS,IAAI,IAAI;IAOjB,IAAI,IAAI,IAAI;IAeZ,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;IAId,YAAY,IAAI,IAAI;IAMpB,kBAAkB,IAAI,IAAI;IAQ1B,MAAM,IAAI,GAAG,CAAC,OAAO;CAqCtB;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/popper/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAI5E,KAAK,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG;IAChD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,cAAM,OAAQ,SAAQ,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,MAAM,CAAC,cAAc,SAAO;IAE5B,MAAM,CAAC,oBAAoB,SAAO;IAElC,MAAM,CAAC,sBAAsB,SAAO;IAEpC,MAAM,CAAC,iBAAiB,SAAK;IAE7B,MAAM,CAAC,cAAc,SAAc;IAEnC,MAAM,CAAC,YAAY;;;;;;yBAMF,IAAI;wBACL,IAAI;;MAElB;IAEF,MAAM,CAAC,YAAY,IAAI,IAAI;IAQ3B,MAAM,CAAC,WAAW,IAAI,IAAI;gBAId,KAAK,EAAE,YAAY;IAqB/B,iBAAiB,IAAI,IAAI;IASzB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAa1E,oBAAoB,IAAI,IAAI;IAY5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAI3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,cAAc,IAAI,IAAI;IAYtB,aAAa,IAAI,IAAI;IAUrB,oBAAoB,IAAI,IAAI;IAM5B,mBAAmB,IAAI,IAAI;IAM3B,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAanB,gBAAgB,IAAI,IAAI;IAUxB,aAAa,IAAI,IAAI;IAIrB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IA+B9C,UAAU,IAAI,IAAI;IAclB,SAAS,IAAI,IAAI;IAOjB,IAAI,IAAI,IAAI;IAeZ,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;IAId,YAAY,IAAI,IAAI;IAMpB,kBAAkB,IAAI,IAAI;IAQ1B,MAAM,IAAI,GAAG,CAAC,OAAO;CAqCtB;AAED,eAAe,OAAO,CAAC"}