@deephaven/iris-grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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 (160) hide show
  1. package/dist/AdvancedFilterCreator.js +65 -102
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +6 -8
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +22 -28
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +20 -29
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +19 -46
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.js +32 -29
  18. package/dist/GotoRow.js.map +1 -1
  19. package/dist/IrisGrid.js +490 -822
  20. package/dist/IrisGrid.js.map +1 -1
  21. package/dist/IrisGridBottomBar.js +10 -11
  22. package/dist/IrisGridBottomBar.js.map +1 -1
  23. package/dist/IrisGridCacheUtils.js +28 -8
  24. package/dist/IrisGridCacheUtils.js.map +1 -1
  25. package/dist/IrisGridCellOverflowModal.js +30 -13
  26. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  27. package/dist/IrisGridCellRendererUtils.js +6 -12
  28. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  29. package/dist/IrisGridCopyHandler.js +28 -47
  30. package/dist/IrisGridCopyHandler.js.map +1 -1
  31. package/dist/IrisGridMetricCalculator.js +28 -51
  32. package/dist/IrisGridMetricCalculator.js.map +1 -1
  33. package/dist/IrisGridModelUpdater.js +32 -30
  34. package/dist/IrisGridModelUpdater.js.map +1 -1
  35. package/dist/IrisGridPartitionSelector.js +28 -62
  36. package/dist/IrisGridPartitionSelector.js.map +1 -1
  37. package/dist/IrisGridProxyModel.js +7 -12
  38. package/dist/IrisGridProxyModel.js.map +1 -1
  39. package/dist/IrisGridRenderer.js +162 -264
  40. package/dist/IrisGridRenderer.js.map +1 -1
  41. package/dist/IrisGridTableModel.js +23 -16
  42. package/dist/IrisGridTableModel.js.map +1 -1
  43. package/dist/IrisGridTableModelTemplate.js +49 -73
  44. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  45. package/dist/IrisGridTestUtils.js +19 -19
  46. package/dist/IrisGridTestUtils.js.map +1 -1
  47. package/dist/IrisGridTextCellRenderer.js +35 -52
  48. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  49. package/dist/IrisGridTheme.js +9 -1
  50. package/dist/IrisGridTheme.js.map +1 -1
  51. package/dist/IrisGridThemeProvider.js +5 -7
  52. package/dist/IrisGridThemeProvider.js.map +1 -1
  53. package/dist/IrisGridTreeTableModel.js +5 -9
  54. package/dist/IrisGridTreeTableModel.js.map +1 -1
  55. package/dist/IrisGridUtils.js +246 -300
  56. package/dist/IrisGridUtils.js.map +1 -1
  57. package/dist/NoPastePermissionModal.js +3 -5
  58. package/dist/NoPastePermissionModal.js.map +1 -1
  59. package/dist/PendingDataBottomBar.js +27 -16
  60. package/dist/PendingDataBottomBar.js.map +1 -1
  61. package/dist/ToastBottomBar.js +16 -8
  62. package/dist/ToastBottomBar.js.map +1 -1
  63. package/dist/format-context-menus/CustomFormatAction.js +11 -24
  64. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  65. package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
  66. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  67. package/dist/key-handlers/CopyKeyHandler.js +1 -3
  68. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  69. package/dist/key-handlers/ReverseKeyHandler.js +1 -3
  70. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  71. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
  72. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  73. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
  74. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  75. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
  76. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  77. package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
  78. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  79. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
  80. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  81. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
  82. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  83. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
  84. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  85. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
  86. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  87. package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
  88. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  89. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
  90. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  91. package/dist/mousehandlers/PendingMouseHandler.js +10 -18
  92. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  93. package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
  94. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  95. package/dist/sidebar/ChartBuilder.js +45 -102
  96. package/dist/sidebar/ChartBuilder.js.map +1 -1
  97. package/dist/sidebar/CustomColumnBuilder.js +35 -77
  98. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  99. package/dist/sidebar/CustomColumnInput.js +9 -11
  100. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  101. package/dist/sidebar/InputEditor.js +17 -24
  102. package/dist/sidebar/InputEditor.js.map +1 -1
  103. package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
  104. package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
  105. package/dist/sidebar/RollupRows.js +72 -113
  106. package/dist/sidebar/RollupRows.js.map +1 -1
  107. package/dist/sidebar/SelectDistinctBuilder.js +16 -33
  108. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  109. package/dist/sidebar/TableCsvExporter.js +50 -74
  110. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  111. package/dist/sidebar/TableSaver.js +18 -42
  112. package/dist/sidebar/TableSaver.js.map +1 -1
  113. package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
  114. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  115. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  116. package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
  117. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  118. package/dist/sidebar/aggregations/Aggregations.js +45 -34
  119. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  120. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
  121. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  122. package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
  123. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  124. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
  125. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  126. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
  127. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  128. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
  129. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  130. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
  131. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  132. package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
  133. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  134. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
  135. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  136. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
  137. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  138. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
  139. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  140. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
  141. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  142. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
  143. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  144. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
  145. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  146. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
  147. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  148. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
  149. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  150. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
  151. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  152. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
  153. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  154. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
  155. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  156. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
  157. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  158. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
  159. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  160. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"NoPastePermissionModal.js","names":["Button","GLOBAL_SHORTCUTS","Modal","ModalBody","ModalFooter","ModalHeader","jsx","_jsx","jsxs","_jsxs","NoPastePermissionModal","_ref","isOpen","onClose","errorMessage","pasteShortcutText","PASTE","getDisplayText","toggle","centered","children","closeButton","kind","onClick"],"sources":["../src/NoPastePermissionModal.tsx"],"sourcesContent":["import {\n Button,\n GLOBAL_SHORTCUTS,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\n\nexport type NoPastePermissionModalProps = {\n isOpen: boolean;\n onClose: () => void;\n errorMessage: string;\n};\n\nexport function NoPastePermissionModal({\n isOpen,\n onClose,\n errorMessage,\n}: NoPastePermissionModalProps): JSX.Element {\n const pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return (\n <Modal isOpen={isOpen} toggle={onClose} centered>\n <ModalHeader closeButton={false}>No Paste Permission</ModalHeader>\n <ModalBody>\n <p>{errorMessage}</p>\n <p>You can still use {pasteShortcutText} to paste.</p>\n </ModalBody>\n <ModalFooter>\n <Button kind=\"primary\" onClick={onClose}>\n Dismiss\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n"],"mappings":"AAAA,SACEA,MAAM,EACNC,gBAAgB,EAChBC,KAAK,EACLC,SAAS,EACTC,WAAW,EACXC,WAAW,QACN,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ/B,OAAO,SAASC,sBAAsBA,CAAAC,IAAA,EAIO;EAAA,IAJN;IACrCC,MAAM;IACNC,OAAO;IACPC;EAC2B,CAAC,GAAAH,IAAA;EAC5B,IAAMI,iBAAiB,GAAGd,gBAAgB,CAACe,KAAK,CAACC,cAAc,CAAC,CAAC;EACjE,oBACER,KAAA,CAACP,KAAK;IAACU,MAAM,EAAEA,MAAO;IAACM,MAAM,EAAEL,OAAQ;IAACM,QAAQ;IAAAC,QAAA,gBAC9Cb,IAAA,CAACF,WAAW;MAACgB,WAAW,EAAE,KAAM;MAAAD,QAAA,EAAC;IAAmB,CAAa,CAAC,eAClEX,KAAA,CAACN,SAAS;MAAAiB,QAAA,gBACRb,IAAA;QAAAa,QAAA,EAAIN;MAAY,CAAI,CAAC,eACrBL,KAAA;QAAAW,QAAA,GAAG,oBAAkB,EAACL,iBAAiB,EAAC,YAAU;MAAA,CAAG,CAAC;IAAA,CAC7C,CAAC,eACZR,IAAA,CAACH,WAAW;MAAAgB,QAAA,eACVb,IAAA,CAACP,MAAM;QAACsB,IAAI,EAAC,SAAS;QAACC,OAAO,EAAEV,OAAQ;QAAAO,QAAA,EAAC;MAEzC,CAAQ;IAAC,CACE,CAAC;EAAA,CACT,CAAC;AAEZ","ignoreList":[]}
1
+ {"version":3,"file":"NoPastePermissionModal.js","names":["Button","GLOBAL_SHORTCUTS","Modal","ModalBody","ModalFooter","ModalHeader","jsx","_jsx","jsxs","_jsxs","NoPastePermissionModal","_ref","isOpen","onClose","errorMessage","pasteShortcutText","PASTE","getDisplayText","toggle","centered","children","closeButton","kind","onClick"],"sources":["../src/NoPastePermissionModal.tsx"],"sourcesContent":["import {\n Button,\n GLOBAL_SHORTCUTS,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\n\nexport type NoPastePermissionModalProps = {\n isOpen: boolean;\n onClose: () => void;\n errorMessage: string;\n};\n\nexport function NoPastePermissionModal({\n isOpen,\n onClose,\n errorMessage,\n}: NoPastePermissionModalProps): JSX.Element {\n const pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return (\n <Modal isOpen={isOpen} toggle={onClose} centered>\n <ModalHeader closeButton={false}>No Paste Permission</ModalHeader>\n <ModalBody>\n <p>{errorMessage}</p>\n <p>You can still use {pasteShortcutText} to paste.</p>\n </ModalBody>\n <ModalFooter>\n <Button kind=\"primary\" onClick={onClose}>\n Dismiss\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n"],"mappings":"AAAA,SACEA,MAAM,EACNC,gBAAgB,EAChBC,KAAK,EACLC,SAAS,EACTC,WAAW,EACXC,WAAW,QACN,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ/B,OAAO,SAASC,sBAAsBA,CAAAC,IAAA,EAIO;EAAA,IAH3CC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IACPC,YAAY,GAAAH,IAAA,CAAZG,YAAY;EAEZ,IAAMC,iBAAiB,GAAGd,gBAAgB,CAACe,KAAK,CAACC,cAAc,CAAC,CAAC;EACjE,oBACER,KAAA,CAACP,KAAK;IAACU,MAAM,EAAEA,MAAO;IAACM,MAAM,EAAEL,OAAQ;IAACM,QAAQ;IAAAC,QAAA,gBAC9Cb,IAAA,CAACF,WAAW;MAACgB,WAAW,EAAE,KAAM;MAAAD,QAAA,EAAC;IAAmB,CAAa,CAAC,eAClEX,KAAA,CAACN,SAAS;MAAAiB,QAAA,gBACRb,IAAA;QAAAa,QAAA,EAAIN;MAAY,CAAI,CAAC,eACrBL,KAAA;QAAAW,QAAA,GAAG,oBAAkB,EAACL,iBAAiB,EAAC,YAAU;MAAA,CAAG,CAAC;IAAA,CAC7C,CAAC,eACZR,IAAA,CAACH,WAAW;MAAAgB,QAAA,eACVb,IAAA,CAACP,MAAM;QAACsB,IAAI,EAAC,SAAS;QAACC,OAAO,EAAEV,OAAQ;QAAAO,QAAA,EAAC;MAEzC,CAAQ;IAAC,CACE,CAAC;EAAA,CACT,CAAC;AAEZ","ignoreList":[]}
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import React, { useEffect, useMemo, useRef, useState } from 'react';
2
8
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
9
  import { vsPass, vsWarning } from '@deephaven/icons';
@@ -9,22 +15,27 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
15
  var HIDE_TIMEOUT = 3000;
10
16
  var MAX_NUMBER_ROWS_SHOWN = 5;
11
17
  export function PendingDataBottomBar(_ref) {
12
- var {
13
- isSaving = false,
14
- onSave,
15
- onDiscard,
16
- discardTooltip,
17
- saveTooltip,
18
- error,
19
- pendingDataErrors,
20
- pendingDataMap,
21
- onEntering,
22
- onEntered,
23
- onExiting,
24
- onExited: _onExited
25
- } = _ref;
26
- var [isSuccessShown, setIsSuccessShown] = useState(false);
27
- var [wasSuccessShown, setWasSuccessShown] = useState(false);
18
+ var _ref$isSaving = _ref.isSaving,
19
+ isSaving = _ref$isSaving === void 0 ? false : _ref$isSaving,
20
+ onSave = _ref.onSave,
21
+ onDiscard = _ref.onDiscard,
22
+ discardTooltip = _ref.discardTooltip,
23
+ saveTooltip = _ref.saveTooltip,
24
+ error = _ref.error,
25
+ pendingDataErrors = _ref.pendingDataErrors,
26
+ pendingDataMap = _ref.pendingDataMap,
27
+ onEntering = _ref.onEntering,
28
+ onEntered = _ref.onEntered,
29
+ onExiting = _ref.onExiting,
30
+ _onExited = _ref.onExited;
31
+ var _useState = useState(false),
32
+ _useState2 = _slicedToArray(_useState, 2),
33
+ isSuccessShown = _useState2[0],
34
+ setIsSuccessShown = _useState2[1];
35
+ var _useState3 = useState(false),
36
+ _useState4 = _slicedToArray(_useState3, 2),
37
+ wasSuccessShown = _useState4[0],
38
+ setWasSuccessShown = _useState4[1];
28
39
  var successTimeout = useRef();
29
40
  var prevIsSaving = usePrevious(isSaving);
30
41
  var errorMessage = useMemo(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","_ref","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","concat","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon","className","isShown","children","icon","kind","onClick","tooltip","disabled"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { type PendingDataErrorMap, type PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","_ref","_ref$isSaving","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","_useState","_useState2","_slicedToArray","isSuccessShown","setIsSuccessShown","_useState3","_useState4","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","concat","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon","className","isShown","children","icon","kind","onClick","tooltip","disabled"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { type PendingDataErrorMap, type PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import React, { useCallback, useEffect, useRef, useState } from 'react';
2
8
  import { usePrevious } from '@deephaven/react-hooks';
3
9
  import IrisGridBottomBar from "./IrisGridBottomBar.js";
@@ -5,14 +11,16 @@ import "./PendingDataBottomBar.css";
5
11
  import { jsx as _jsx } from "react/jsx-runtime";
6
12
  var HIDE_TIMEOUT = 3000;
7
13
  export function ToastBottomBar(_ref) {
8
- var {
9
- children = null,
10
- onEntering,
11
- onEntered,
12
- onExiting,
13
- onExited
14
- } = _ref;
15
- var [isShown, setIsShown] = useState(false);
14
+ var _ref$children = _ref.children,
15
+ children = _ref$children === void 0 ? null : _ref$children,
16
+ onEntering = _ref.onEntering,
17
+ onEntered = _ref.onEntered,
18
+ onExiting = _ref.onExiting,
19
+ onExited = _ref.onExited;
20
+ var _useState = useState(false),
21
+ _useState2 = _slicedToArray(_useState, 2),
22
+ isShown = _useState2[0],
23
+ setIsShown = _useState2[1];
16
24
  var timeout = useRef();
17
25
  var prevChildren = usePrevious(children);
18
26
  var startTimer = useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ToastBottomBar.js","names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","jsx","_jsx","HIDE_TIMEOUT","ToastBottomBar","_ref","children","onEntering","onEntered","onExiting","onExited","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined","className"],"sources":["../src/ToastBottomBar.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function ToastBottomBar({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n}\n\nexport default ToastBottomBar;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGxB,IAAMC,YAAY,GAAG,IAAI;AAUzB,OAAO,SAASC,cAAcA,CAAAC,IAAA,EAMO;EAAA,IANN;IAC7BC,QAAQ,GAAG,IAAI;IACfC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC;EACmB,CAAC,GAAAL,IAAA;EACpB,IAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGd,QAAQ,CAAC,KAAK,CAAC;EAC7C,IAAMe,OAAO,GAAGhB,MAAM,CAAgC,CAAC;EACvD,IAAMiB,YAAY,GAAGf,WAAW,CAACO,QAAQ,CAAC;EAE1C,IAAMS,UAAU,GAAGpB,WAAW,CAAC,MAAM;IACnCiB,UAAU,CAAC,IAAI,CAAC;IAChB,IAAIC,OAAO,CAACG,OAAO,EAAE;MACnBC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC;IAC/B;IACAH,OAAO,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;MACjCN,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,EAAET,YAAY,CAAC;EAClB,CAAC,EAAE,CAACS,UAAU,EAAEC,OAAO,CAAC,CAAC;EAEzBjB,SAAS,CAAC,MAAM;IACd,IAAIkB,YAAY,KAAKR,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACjDS,UAAU,CAAC,CAAC;IACd;EACF,CAAC,EAAE,CAACT,QAAQ,EAAEQ,YAAY,EAAEF,UAAU,EAAEG,UAAU,CAAC,CAAC;EAEpDnB,SAAS,CACP,MAAM,MAAOiB,OAAO,CAACG,OAAO,GAAGC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC,GAAGG,SAAU,EACzE,EACF,CAAC;EAED,oBACEjB,IAAA,CAACF,iBAAiB;IAChBoB,SAAS,EAAC,kBAAkB;IAC5BT,OAAO,EAAEA,OAAQ;IACjBJ,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IAAAJ,QAAA,EAElBA;EAAQ,CACQ,CAAC;AAExB;AAEA,eAAeF,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"ToastBottomBar.js","names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","jsx","_jsx","HIDE_TIMEOUT","ToastBottomBar","_ref","_ref$children","children","onEntering","onEntered","onExiting","onExited","_useState","_useState2","_slicedToArray","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined","className"],"sources":["../src/ToastBottomBar.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function ToastBottomBar({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n}\n\nexport default ToastBottomBar;\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGxB,IAAMC,YAAY,GAAG,IAAI;AAUzB,OAAO,SAASC,cAAcA,CAAAC,IAAA,EAMO;EAAA,IAAAC,aAAA,GAAAD,IAAA,CALnCE,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,IAAI,GAAAA,aAAA;IACfE,UAAU,GAAAH,IAAA,CAAVG,UAAU;IACVC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,QAAQ,GAAAN,IAAA,CAARM,QAAQ;EAER,IAAAC,SAAA,GAA8Bd,QAAQ,CAAC,KAAK,CAAC;IAAAe,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAtCG,OAAO,GAAAF,UAAA;IAAEG,UAAU,GAAAH,UAAA;EAC1B,IAAMI,OAAO,GAAGpB,MAAM,CAAgC,CAAC;EACvD,IAAMqB,YAAY,GAAGnB,WAAW,CAACQ,QAAQ,CAAC;EAE1C,IAAMY,UAAU,GAAGxB,WAAW,CAAC,MAAM;IACnCqB,UAAU,CAAC,IAAI,CAAC;IAChB,IAAIC,OAAO,CAACG,OAAO,EAAE;MACnBC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC;IAC/B;IACAH,OAAO,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;MACjCN,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,EAAEb,YAAY,CAAC;EAClB,CAAC,EAAE,CAACa,UAAU,EAAEC,OAAO,CAAC,CAAC;EAEzBrB,SAAS,CAAC,MAAM;IACd,IAAIsB,YAAY,KAAKX,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACjDY,UAAU,CAAC,CAAC;IACd;EACF,CAAC,EAAE,CAACZ,QAAQ,EAAEW,YAAY,EAAEF,UAAU,EAAEG,UAAU,CAAC,CAAC;EAEpDvB,SAAS,CACP,MAAM,MAAOqB,OAAO,CAACG,OAAO,GAAGC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC,GAAGG,SAAU,EACzE,EACF,CAAC;EAED,oBACErB,IAAA,CAACF,iBAAiB;IAChBwB,SAAS,EAAC,kBAAkB;IAC5BT,OAAO,EAAEA,OAAQ;IACjBP,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IAAAJ,QAAA,EAElBA;EAAQ,CACQ,CAAC;AAExB;AAEA,eAAeH,cAAc","ignoreList":[]}
@@ -23,26 +23,18 @@ class CustomFormatAction extends Component {
23
23
  this.inputRef = /*#__PURE__*/React.createRef();
24
24
  }
25
25
  handleInputChange() {
26
- var {
27
- onChange
28
- } = this.props;
26
+ var onChange = this.props.onChange;
29
27
  if (this.inputRef.current) {
30
28
  onChange(this.inputRef.current.value);
31
29
  }
32
30
  }
33
31
  closeContextMenu() {
34
- var {
35
- forwardedProps
36
- } = this.props;
37
- var {
38
- closeMenu
39
- } = forwardedProps;
32
+ var forwardedProps = this.props.forwardedProps;
33
+ var closeMenu = forwardedProps.closeMenu;
40
34
  closeMenu(true);
41
35
  }
42
36
  revertToDefault() {
43
- var {
44
- onChange
45
- } = this.props;
37
+ var onChange = this.props.onChange;
46
38
  onChange(null);
47
39
  }
48
40
  returnFocusToContextMenu() {
@@ -75,18 +67,13 @@ class CustomFormatAction extends Component {
75
67
  }
76
68
  }
77
69
  render() {
78
- var {
79
- formatString,
80
- forwardedProps,
81
- placeholder,
82
- title
83
- } = this.props;
84
- var {
85
- menuItem: {
86
- description
87
- },
88
- iconElement
89
- } = forwardedProps;
70
+ var _this$props = this.props,
71
+ formatString = _this$props.formatString,
72
+ forwardedProps = _this$props.forwardedProps,
73
+ placeholder = _this$props.placeholder,
74
+ title = _this$props.title;
75
+ var description = forwardedProps.menuItem.description,
76
+ iconElement = forwardedProps.iconElement;
90
77
  return /*#__PURE__*/_jsxs("div", {
91
78
  className: "form-group flex-grow mb-0",
92
79
  children: [/*#__PURE__*/_jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFormatAction.js","names":["React","Component","Tooltip","DOMUtils","jsx","_jsx","jsxs","_jsxs","CustomFormatAction","constructor","props","arguments","length","undefined","defaultProps","_defineProperty","handleInputChange","bind","handleKeyDown","inputRef","createRef","onChange","current","value","closeContextMenu","forwardedProps","closeMenu","revertToDefault","returnFocusToContextMenu","parentContextMenu","getClosestByClassName","HTMLElement","focus","event","key","stopPropagation","render","formatString","placeholder","title","menuItem","description","iconElement","className","children","htmlFor","id","type","defaultValue","ref","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","focusInput"],"sources":["../../src/format-context-menus/CustomFormatAction.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { DOMUtils } from '@deephaven/utils';\n\nimport './CustomFormatAction.scss';\n\ntype CustomFormatActionProps = typeof CustomFormatAction.defaultProps & {\n forwardedProps: {\n menuItem: {\n title?: string;\n description?: string;\n };\n };\n};\n\n/**\n * Renders menuElement option with custom format input for use in formatting context menus\n *\n * TODO:\n * - capture focus when this menu action is selected via ArrowUp/ArrowDown keys\n * - dynamically update selected menu item when clicking on the input box\n */\nclass CustomFormatAction extends Component<CustomFormatActionProps> {\n static defaultProps = {\n formatString: '',\n forwardedProps: {\n menuItem: {},\n closeMenu(focusInput: boolean): void {\n // no-op\n },\n iconElement: null,\n },\n placeholder: '',\n title: '',\n onChange(value: string | null): void {\n // no-op\n },\n };\n\n constructor(\n props: CustomFormatActionProps = CustomFormatAction.defaultProps\n ) {\n super(props);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.inputRef = React.createRef();\n }\n\n inputRef: React.RefObject<HTMLInputElement>;\n\n handleInputChange(): void {\n const { onChange } = this.props;\n if (this.inputRef.current) {\n onChange(this.inputRef.current.value);\n }\n }\n\n closeContextMenu(): void {\n const { forwardedProps } = this.props;\n const { closeMenu } = forwardedProps;\n closeMenu(true);\n }\n\n revertToDefault(): void {\n const { onChange } = this.props;\n onChange(null);\n }\n\n returnFocusToContextMenu(): void {\n const parentContextMenu = DOMUtils.getClosestByClassName(\n this.inputRef.current,\n 'context-menu-container'\n );\n if (parentContextMenu instanceof HTMLElement) {\n parentContextMenu.focus();\n }\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Enter':\n event.stopPropagation();\n this.closeContextMenu();\n break;\n case 'Escape':\n event.stopPropagation();\n this.revertToDefault();\n this.closeContextMenu();\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n event.stopPropagation();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n this.returnFocusToContextMenu();\n break;\n default:\n event.stopPropagation();\n }\n }\n\n render(): JSX.Element {\n const { formatString, forwardedProps, placeholder, title } = this.props;\n const {\n menuItem: { description },\n iconElement,\n } = forwardedProps;\n return (\n <div className=\"form-group flex-grow mb-0\">\n <div className=\"custom-format-title\">\n <span className=\"icon\">{iconElement}</span>\n <label className=\"title mb-0\" htmlFor=\"custom-format-input\">\n {title}\n {description != null && <Tooltip>{description}</Tooltip>}\n </label>\n </div>\n <div className=\"pl-2 pr-2 pb-2\">\n <input\n id=\"custom-format-input\"\n className=\"form-control text-right mb-0\"\n type=\"text\"\n defaultValue={formatString}\n ref={this.inputRef}\n placeholder={placeholder}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleInputChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomFormatAction;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CustomFormatAction.js","names":["React","Component","Tooltip","DOMUtils","jsx","_jsx","jsxs","_jsxs","CustomFormatAction","constructor","props","arguments","length","undefined","defaultProps","_defineProperty","handleInputChange","bind","handleKeyDown","inputRef","createRef","onChange","current","value","closeContextMenu","forwardedProps","closeMenu","revertToDefault","returnFocusToContextMenu","parentContextMenu","getClosestByClassName","HTMLElement","focus","event","key","stopPropagation","render","_this$props","formatString","placeholder","title","description","menuItem","iconElement","className","children","htmlFor","id","type","defaultValue","ref","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","focusInput"],"sources":["../../src/format-context-menus/CustomFormatAction.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { DOMUtils } from '@deephaven/utils';\n\nimport './CustomFormatAction.scss';\n\ntype CustomFormatActionProps = typeof CustomFormatAction.defaultProps & {\n forwardedProps: {\n menuItem: {\n title?: string;\n description?: string;\n };\n };\n};\n\n/**\n * Renders menuElement option with custom format input for use in formatting context menus\n *\n * TODO:\n * - capture focus when this menu action is selected via ArrowUp/ArrowDown keys\n * - dynamically update selected menu item when clicking on the input box\n */\nclass CustomFormatAction extends Component<CustomFormatActionProps> {\n static defaultProps = {\n formatString: '',\n forwardedProps: {\n menuItem: {},\n closeMenu(focusInput: boolean): void {\n // no-op\n },\n iconElement: null,\n },\n placeholder: '',\n title: '',\n onChange(value: string | null): void {\n // no-op\n },\n };\n\n constructor(\n props: CustomFormatActionProps = CustomFormatAction.defaultProps\n ) {\n super(props);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.inputRef = React.createRef();\n }\n\n inputRef: React.RefObject<HTMLInputElement>;\n\n handleInputChange(): void {\n const { onChange } = this.props;\n if (this.inputRef.current) {\n onChange(this.inputRef.current.value);\n }\n }\n\n closeContextMenu(): void {\n const { forwardedProps } = this.props;\n const { closeMenu } = forwardedProps;\n closeMenu(true);\n }\n\n revertToDefault(): void {\n const { onChange } = this.props;\n onChange(null);\n }\n\n returnFocusToContextMenu(): void {\n const parentContextMenu = DOMUtils.getClosestByClassName(\n this.inputRef.current,\n 'context-menu-container'\n );\n if (parentContextMenu instanceof HTMLElement) {\n parentContextMenu.focus();\n }\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Enter':\n event.stopPropagation();\n this.closeContextMenu();\n break;\n case 'Escape':\n event.stopPropagation();\n this.revertToDefault();\n this.closeContextMenu();\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n event.stopPropagation();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n this.returnFocusToContextMenu();\n break;\n default:\n event.stopPropagation();\n }\n }\n\n render(): JSX.Element {\n const { formatString, forwardedProps, placeholder, title } = this.props;\n const {\n menuItem: { description },\n iconElement,\n } = forwardedProps;\n return (\n <div className=\"form-group flex-grow mb-0\">\n <div className=\"custom-format-title\">\n <span className=\"icon\">{iconElement}</span>\n <label className=\"title mb-0\" htmlFor=\"custom-format-input\">\n {title}\n {description != null && <Tooltip>{description}</Tooltip>}\n </label>\n </div>\n <div className=\"pl-2 pr-2 pb-2\">\n <input\n id=\"custom-format-input\"\n className=\"form-control text-right mb-0\"\n type=\"text\"\n defaultValue={formatString}\n ref={this.inputRef}\n placeholder={placeholder}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleInputChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomFormatAction;\n"],"mappings":"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","ignoreList":[]}
@@ -12,10 +12,9 @@ class CopyCellKeyHandler extends KeyHandler {
12
12
  }
13
13
  onDown(event, grid) {
14
14
  if (event.altKey && !ContextActionUtils.isModifierKeyDown(event) && !event.shiftKey) {
15
- var {
16
- mouseX,
17
- mouseY
18
- } = grid.state;
15
+ var _grid$state = grid.state,
16
+ mouseX = _grid$state.mouseX,
17
+ mouseY = _grid$state.mouseY;
19
18
  if (mouseX == null || mouseY == null) {
20
19
  return false;
21
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CopyCellKeyHandler.js","names":["KeyHandler","ContextActionUtils","CopyCellKeyHandler","constructor","irisGrid","_defineProperty","cursor","onDown","event","grid","altKey","isModifierKeyDown","shiftKey","mouseX","mouseY","state","gridPoint","getGridPointFromXY","column","row","props","copyCursor","onUp"],"sources":["../../src/key-handlers/CopyCellKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nimport type { Grid } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\nclass CopyCellKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n if (\n event.altKey &&\n !ContextActionUtils.isModifierKeyDown(event) &&\n !event.shiftKey\n ) {\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n const gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n\n onUp(event: KeyboardEvent, grid: Grid): boolean {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\n\nexport default CopyCellKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,uBAAuB;AAI1D,MAAMC,kBAAkB,SAASF,UAAU,CAAC;EAG1CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,MAAM,GAAG,IAAI;EACpB;EAEAC,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,IACED,KAAK,CAACE,MAAM,IACZ,CAACT,kBAAkB,CAACU,iBAAiB,CAACH,KAAK,CAAC,IAC5C,CAACA,KAAK,CAACI,QAAQ,EACf;MACA,IAAM;QAAEC,MAAM;QAAEC;MAAO,CAAC,GAAGL,IAAI,CAACM,KAAK;MACrC,IAAIF,MAAM,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,EAAE;QACpC,OAAO,KAAK;MACd;MACA,IAAME,SAAS,GAAGP,IAAI,CAACQ,kBAAkB,CAACJ,MAAM,EAAEC,MAAM,CAAC;MACzD,IAAIE,SAAS,CAACE,MAAM,IAAI,IAAI,IAAIF,SAAS,CAACG,GAAG,IAAI,IAAI,EAAE;QACrD,IAAI,CAACb,MAAM,GAAG,IAAI,CAACF,QAAQ,CAACgB,KAAK,CAACC,UAAU;QAC5C,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,IAAIA,CAACd,KAAoB,EAAEC,IAAU,EAAW;IAC9C,IAAI,IAAI,CAACH,MAAM,KAAK,IAAI,CAACF,QAAQ,CAACgB,KAAK,CAACC,UAAU,EAAE;MAClD,IAAI,CAACf,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"CopyCellKeyHandler.js","names":["KeyHandler","ContextActionUtils","CopyCellKeyHandler","constructor","irisGrid","_defineProperty","cursor","onDown","event","grid","altKey","isModifierKeyDown","shiftKey","_grid$state","state","mouseX","mouseY","gridPoint","getGridPointFromXY","column","row","props","copyCursor","onUp"],"sources":["../../src/key-handlers/CopyCellKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nimport type { Grid } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\nclass CopyCellKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n if (\n event.altKey &&\n !ContextActionUtils.isModifierKeyDown(event) &&\n !event.shiftKey\n ) {\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n const gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n\n onUp(event: KeyboardEvent, grid: Grid): boolean {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\n\nexport default CopyCellKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,uBAAuB;AAI1D,MAAMC,kBAAkB,SAASF,UAAU,CAAC;EAG1CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,MAAM,GAAG,IAAI;EACpB;EAEAC,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,IACED,KAAK,CAACE,MAAM,IACZ,CAACT,kBAAkB,CAACU,iBAAiB,CAACH,KAAK,CAAC,IAC5C,CAACA,KAAK,CAACI,QAAQ,EACf;MACA,IAAAC,WAAA,GAA2BJ,IAAI,CAACK,KAAK;QAA7BC,MAAM,GAAAF,WAAA,CAANE,MAAM;QAAEC,MAAM,GAAAH,WAAA,CAANG,MAAM;MACtB,IAAID,MAAM,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,EAAE;QACpC,OAAO,KAAK;MACd;MACA,IAAMC,SAAS,GAAGR,IAAI,CAACS,kBAAkB,CAACH,MAAM,EAAEC,MAAM,CAAC;MACzD,IAAIC,SAAS,CAACE,MAAM,IAAI,IAAI,IAAIF,SAAS,CAACG,GAAG,IAAI,IAAI,EAAE;QACrD,IAAI,CAACd,MAAM,GAAG,IAAI,CAACF,QAAQ,CAACiB,KAAK,CAACC,UAAU;QAC5C,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,IAAIA,CAACf,KAAoB,EAAEC,IAAU,EAAW;IAC9C,IAAI,IAAI,CAACH,MAAM,KAAK,IAAI,CAACF,QAAQ,CAACiB,KAAK,CAACC,UAAU,EAAE;MAClD,IAAI,CAAChB,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
@@ -13,9 +13,7 @@ class CopyKeyHandler extends KeyHandler {
13
13
  this.irisGrid = irisGrid;
14
14
  }
15
15
  onDown(event) {
16
- var {
17
- selectedRanges
18
- } = this.irisGrid.state;
16
+ var selectedRanges = this.irisGrid.state.selectedRanges;
19
17
  if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {
20
18
  if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {
21
19
  this.irisGrid.copyRanges(selectedRanges);
@@ -1 +1 @@
1
- {"version":3,"file":"CopyKeyHandler.js","names":["ContextActionUtils","KeyHandler","IrisGridUtils","CopyKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","selectedRanges","state","key","isModifierKeyDown","isValidSnapshotRanges","copyRanges"],"sources":["../../src/key-handlers/CopyKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { type KeyboardEvent } from 'react';\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridUtils from '../IrisGridUtils';\n\nclass CopyKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n const { selectedRanges } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(\n selectedRanges,\n false,\n false,\n 'Invalid copy ranges'\n );\n }\n return true;\n }\n return false;\n }\n}\n\nexport default CopyKeyHandler;\n"],"mappings":";;;AAAA;;AAEA,SAASA,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,aAAa;AAEpB,MAAMC,cAAc,SAASF,UAAU,CAAC;EAGtCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAM;MAAEC;IAAe,CAAC,GAAG,IAAI,CAACJ,QAAQ,CAACK,KAAK;IAC9C,IAAIF,KAAK,CAACG,GAAG,KAAK,GAAG,IAAIX,kBAAkB,CAACY,iBAAiB,CAACJ,KAAK,CAAC,EAAE;MACpE,IAAIN,aAAa,CAACW,qBAAqB,CAACJ,cAAc,CAAC,EAAE;QACvD,IAAI,CAACJ,QAAQ,CAACS,UAAU,CAACL,cAAc,CAAC;MAC1C,CAAC,MAAM;QACL,IAAI,CAACJ,QAAQ,CAACS,UAAU,CACtBL,cAAc,EACd,KAAK,EACL,KAAK,EACL,qBACF,CAAC;MACH;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeN,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"CopyKeyHandler.js","names":["ContextActionUtils","KeyHandler","IrisGridUtils","CopyKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","selectedRanges","state","key","isModifierKeyDown","isValidSnapshotRanges","copyRanges"],"sources":["../../src/key-handlers/CopyKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { type KeyboardEvent } from 'react';\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridUtils from '../IrisGridUtils';\n\nclass CopyKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n const { selectedRanges } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(\n selectedRanges,\n false,\n false,\n 'Invalid copy ranges'\n );\n }\n return true;\n }\n return false;\n }\n}\n\nexport default CopyKeyHandler;\n"],"mappings":";;;AAAA;;AAEA,SAASA,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,aAAa;AAEpB,MAAMC,cAAc,SAASF,UAAU,CAAC;EAGtCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAQC,cAAc,GAAK,IAAI,CAACJ,QAAQ,CAACK,KAAK,CAAtCD,cAAc;IACtB,IAAID,KAAK,CAACG,GAAG,KAAK,GAAG,IAAIX,kBAAkB,CAACY,iBAAiB,CAACJ,KAAK,CAAC,EAAE;MACpE,IAAIN,aAAa,CAACW,qBAAqB,CAACJ,cAAc,CAAC,EAAE;QACvD,IAAI,CAACJ,QAAQ,CAACS,UAAU,CAACL,cAAc,CAAC;MAC1C,CAAC,MAAM;QACL,IAAI,CAACJ,QAAQ,CAACS,UAAU,CACtBL,cAAc,EACd,KAAK,EACL,KAAK,EACL,qBACF,CAAC;MACH;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeN,cAAc","ignoreList":[]}
@@ -14,9 +14,7 @@ class ReverseKeyHandler extends KeyHandler {
14
14
  if (!this.irisGrid.isReversible()) {
15
15
  return false;
16
16
  }
17
- var {
18
- reverse
19
- } = this.irisGrid.state;
17
+ var reverse = this.irisGrid.state.reverse;
20
18
  this.irisGrid.reverse(!reverse);
21
19
  return true;
22
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ReverseKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverse","state"],"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverse } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,iBAAiB,SAASF,UAAU,CAAC;EAGzCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,OAAO,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MACvD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACO,YAAY,CAAC,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,IAAM;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACR,QAAQ,CAACS,KAAK;MACvC,IAAI,CAACT,QAAQ,CAACQ,OAAO,CAAC,CAACA,OAAO,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeV,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"ReverseKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverse","state"],"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverse } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,iBAAiB,SAASF,UAAU,CAAC;EAGzCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,OAAO,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MACvD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACO,YAAY,CAAC,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,IAAQC,OAAO,GAAK,IAAI,CAACR,QAAQ,CAACS,KAAK,CAA/BD,OAAO;MACf,IAAI,CAACR,QAAQ,CAACQ,OAAO,CAAC,CAACA,OAAO,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeV,iBAAiB","ignoreList":[]}
@@ -30,33 +30,24 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
30
30
  return false;
31
31
  }
32
32
  getButtonPosition(_ref) {
33
- var {
34
- x,
35
- y,
36
- column,
37
- row
38
- } = _ref;
33
+ var x = _ref.x,
34
+ y = _ref.y,
35
+ column = _ref.column,
36
+ row = _ref.row;
39
37
  if (column == null || row == null) {
40
38
  return null;
41
39
  }
42
- var {
43
- renderer,
44
- grid,
45
- state,
46
- props
47
- } = this.irisGrid;
40
+ var _this$irisGrid = this.irisGrid,
41
+ renderer = _this$irisGrid.renderer,
42
+ grid = _this$irisGrid.grid,
43
+ state = _this$irisGrid.state,
44
+ props = _this$irisGrid.props;
48
45
  if (!grid) {
49
46
  return null;
50
47
  }
51
- var {
52
- metrics
53
- } = state;
54
- var {
55
- model
56
- } = props;
57
- var {
58
- canvasContext: context
59
- } = grid;
48
+ var metrics = state.metrics;
49
+ var model = props.model;
50
+ var context = grid.canvasContext;
60
51
  var theme = this.irisGrid.getTheme();
61
52
  var rendererState = {
62
53
  context,
@@ -66,12 +57,11 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
66
57
  model,
67
58
  theme
68
59
  };
69
- var {
70
- left,
71
- top,
72
- width,
73
- height
74
- } = renderer.getCellOverflowButtonPosition(rendererState);
60
+ var _renderer$getCellOver = renderer.getCellOverflowButtonPosition(rendererState),
61
+ left = _renderer$getCellOver.left,
62
+ top = _renderer$getCellOver.top,
63
+ width = _renderer$getCellOver.width,
64
+ height = _renderer$getCellOver.height;
75
65
  if (left == null || width == null || top == null || height == null) {
76
66
  return null;
77
67
  }
@@ -84,37 +74,27 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
84
74
  }
85
75
  isHoveringOverflowButton(point) {
86
76
  var _this$getButtonPositi;
87
- var {
88
- x,
89
- y
90
- } = point;
91
- var {
92
- left,
93
- top,
94
- width,
95
- height
96
- } = (_this$getButtonPositi = this.getButtonPosition(point)) !== null && _this$getButtonPositi !== void 0 ? _this$getButtonPositi : {};
77
+ var x = point.x,
78
+ y = point.y;
79
+ var _ref2 = (_this$getButtonPositi = this.getButtonPosition(point)) !== null && _this$getButtonPositi !== void 0 ? _this$getButtonPositi : {},
80
+ left = _ref2.left,
81
+ top = _ref2.top,
82
+ width = _ref2.width,
83
+ height = _ref2.height;
97
84
  if (left == null || width == null || top == null || height == null) {
98
85
  return false;
99
86
  }
100
- var {
101
- renderer,
102
- grid,
103
- state,
104
- props
105
- } = this.irisGrid;
87
+ var _this$irisGrid2 = this.irisGrid,
88
+ renderer = _this$irisGrid2.renderer,
89
+ grid = _this$irisGrid2.grid,
90
+ state = _this$irisGrid2.state,
91
+ props = _this$irisGrid2.props;
106
92
  if (!grid) {
107
93
  return false;
108
94
  }
109
- var {
110
- metrics
111
- } = state;
112
- var {
113
- model
114
- } = props;
115
- var {
116
- canvasContext: context
117
- } = grid;
95
+ var metrics = state.metrics;
96
+ var model = props.model;
97
+ var context = grid.canvasContext;
118
98
  var theme = grid.getTheme();
119
99
  var rendererState = {
120
100
  context,
@@ -128,9 +108,7 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
128
108
  }
129
109
  onMove(point) {
130
110
  if (this.isHoveringOverflowButton(point)) {
131
- var {
132
- overflowButtonTooltipProps
133
- } = this.irisGrid.state;
111
+ var overflowButtonTooltipProps = this.irisGrid.state.overflowButtonTooltipProps;
134
112
  var newProps = this.getButtonPosition(point);
135
113
  if (!deepEqual(overflowButtonTooltipProps, newProps)) {
136
114
  this.irisGrid.setState({
@@ -150,10 +128,8 @@ class IrisGridCellOverflowMouseHandler extends GridMouseHandler {
150
128
  // Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown
151
129
  onDown(point) {
152
130
  this.destroyColumnTooltip();
153
- var {
154
- column,
155
- row
156
- } = point;
131
+ var column = point.column,
132
+ row = point.row;
157
133
  if (this.isHoveringOverflowButton(point)) {
158
134
  this.irisGrid.setState({
159
135
  showOverflowModal: true,
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCellOverflowMouseHandler.js","names":["GridMouseHandler","deepEqual","IrisGridCellOverflowMouseHandler","constructor","irisGrid","_defineProperty","destroyColumnTooltip","setState","overflowButtonTooltipProps","setCursor","point","isHoveringOverflowButton","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","renderer","grid","state","props","metrics","model","canvasContext","context","theme","getTheme","rendererState","mouseX","mouseY","left","top","width","height","getCellOverflowButtonPosition","_this$getButtonPositi","shouldRenderOverflowButton","onMove","newProps","onWheel","onDown","showOverflowModal","overflowText","getValueForCell","onContextMenu","onLeave"],"sources":["../../src/mousehandlers/IrisGridCellOverflowMouseHandler.ts"],"sourcesContent":["import {\n type GridPoint,\n GridMouseHandler,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport deepEqual from 'fast-deep-equal';\nimport type IrisGrid from '../IrisGrid';\nimport { type IrisGridRenderState } from '../IrisGridRenderer';\n\n/**\n * Handles cursor and click action for cell overflow button\n * The button is rendered via IrisGridRenderer\n */\nclass IrisGridCellOverflowMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(850); // Needs to be before GridSelectionMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyColumnTooltip(): void {\n this.irisGrid.setState({ overflowButtonTooltipProps: null });\n }\n\n private setCursor(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = this.irisGrid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const { left, top, width, height } =\n renderer.getCellOverflowButtonPosition(rendererState);\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n private isHoveringOverflowButton(point: GridPoint): boolean {\n const { x, y } = point;\n const { left, top, width, height } = this.getButtonPosition(point) ?? {};\n if (left == null || width == null || top == null || height == null) {\n return false;\n }\n\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return false;\n }\n const { metrics } = state;\n const { model } = props;\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n } as IrisGridRenderState;\n\n return (\n renderer.shouldRenderOverflowButton(rendererState) &&\n x >= left &&\n x <= left + width &&\n y >= top &&\n y <= top + height\n );\n }\n\n onMove(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n const { overflowButtonTooltipProps } = this.irisGrid.state;\n const newProps = this.getButtonPosition(point);\n if (!deepEqual(overflowButtonTooltipProps, newProps)) {\n this.irisGrid.setState({ overflowButtonTooltipProps: newProps });\n }\n } else {\n this.destroyColumnTooltip();\n }\n return this.setCursor(point);\n }\n\n onWheel(point: GridPoint): EventHandlerResult {\n this.destroyColumnTooltip();\n return this.onMove(point);\n }\n\n // Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown\n onDown(point: GridPoint): boolean {\n this.destroyColumnTooltip();\n const { column, row } = point;\n\n if (this.isHoveringOverflowButton(point)) {\n this.irisGrid.setState({\n showOverflowModal: true,\n overflowText: this.irisGrid.getValueForCell(column, row) as string,\n });\n return true; // Consume the event so GridSelectionMouseHandler doesn't clear the row selection\n }\n\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n}\n\nexport default IrisGridCellOverflowMouseHandler;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"IrisGridCellOverflowMouseHandler.js","names":["GridMouseHandler","deepEqual","IrisGridCellOverflowMouseHandler","constructor","irisGrid","_defineProperty","destroyColumnTooltip","setState","overflowButtonTooltipProps","setCursor","point","isHoveringOverflowButton","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","_this$irisGrid","renderer","grid","state","props","metrics","model","context","canvasContext","theme","getTheme","rendererState","mouseX","mouseY","_renderer$getCellOver","getCellOverflowButtonPosition","left","top","width","height","_this$getButtonPositi","_ref2","_this$irisGrid2","shouldRenderOverflowButton","onMove","newProps","onWheel","onDown","showOverflowModal","overflowText","getValueForCell","onContextMenu","onLeave"],"sources":["../../src/mousehandlers/IrisGridCellOverflowMouseHandler.ts"],"sourcesContent":["import {\n type GridPoint,\n GridMouseHandler,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport deepEqual from 'fast-deep-equal';\nimport type IrisGrid from '../IrisGrid';\nimport { type IrisGridRenderState } from '../IrisGridRenderer';\n\n/**\n * Handles cursor and click action for cell overflow button\n * The button is rendered via IrisGridRenderer\n */\nclass IrisGridCellOverflowMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(850); // Needs to be before GridSelectionMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyColumnTooltip(): void {\n this.irisGrid.setState({ overflowButtonTooltipProps: null });\n }\n\n private setCursor(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = this.irisGrid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const { left, top, width, height } =\n renderer.getCellOverflowButtonPosition(rendererState);\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n private isHoveringOverflowButton(point: GridPoint): boolean {\n const { x, y } = point;\n const { left, top, width, height } = this.getButtonPosition(point) ?? {};\n if (left == null || width == null || top == null || height == null) {\n return false;\n }\n\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return false;\n }\n const { metrics } = state;\n const { model } = props;\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n } as IrisGridRenderState;\n\n return (\n renderer.shouldRenderOverflowButton(rendererState) &&\n x >= left &&\n x <= left + width &&\n y >= top &&\n y <= top + height\n );\n }\n\n onMove(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n const { overflowButtonTooltipProps } = this.irisGrid.state;\n const newProps = this.getButtonPosition(point);\n if (!deepEqual(overflowButtonTooltipProps, newProps)) {\n this.irisGrid.setState({ overflowButtonTooltipProps: newProps });\n }\n } else {\n this.destroyColumnTooltip();\n }\n return this.setCursor(point);\n }\n\n onWheel(point: GridPoint): EventHandlerResult {\n this.destroyColumnTooltip();\n return this.onMove(point);\n }\n\n // Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown\n onDown(point: GridPoint): boolean {\n this.destroyColumnTooltip();\n const { column, row } = point;\n\n if (this.isHoveringOverflowButton(point)) {\n this.irisGrid.setState({\n showOverflowModal: true,\n overflowText: this.irisGrid.getValueForCell(column, row) as string,\n });\n return true; // Consume the event so GridSelectionMouseHandler doesn't clear the row selection\n }\n\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n}\n\nexport default IrisGridCellOverflowMouseHandler;\n"],"mappings":";;;AAAA,SAEEA,gBAAgB,QAEX,iBAAiB;AACxB,OAAOC,SAAS,MAAM,iBAAiB;AAIvC;AACA;AACA;AACA;AACA,MAAMC,gCAAgC,SAASF,gBAAgB,CAAC;EAG9DG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAAAC,eAAA;IAEZ,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEQE,oBAAoBA,CAAA,EAAS;IACnC,IAAI,CAACF,QAAQ,CAACG,QAAQ,CAAC;MAAEC,0BAA0B,EAAE;IAAK,CAAC,CAAC;EAC9D;EAEQC,SAASA,CAACC,KAAgB,EAAsB;IACtD,IAAI,IAAI,CAACC,wBAAwB,CAACD,KAAK,CAAC,EAAE;MACxC,IAAI,CAACE,MAAM,GAAG,SAAS;MACvB,OAAO;QAAEC,eAAe,EAAE,KAAK;QAAEC,cAAc,EAAE;MAAM,CAAC;IAC1D;IAEA,IAAI,CAACF,MAAM,GAAG,IAAI;IAClB,OAAO,KAAK;EACd;EAEQG,iBAAiBA,CAAAC,IAAA,EAKhB;IAAA,IALmBC,CAAC,GAAAD,IAAA,CAADC,CAAC;MAAEC,CAAC,GAAAF,IAAA,CAADE,CAAC;MAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;MAAEC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;IAM3C,IAAID,MAAM,IAAI,IAAI,IAAIC,GAAG,IAAI,IAAI,EAAE;MACjC,OAAO,IAAI;IACb;IACA,IAAAC,cAAA,GAAyC,IAAI,CAACjB,QAAQ;MAA9CkB,QAAQ,GAAAD,cAAA,CAARC,QAAQ;MAAEC,IAAI,GAAAF,cAAA,CAAJE,IAAI;MAAEC,KAAK,GAAAH,cAAA,CAALG,KAAK;MAAEC,KAAK,GAAAJ,cAAA,CAALI,KAAK;IACpC,IAAI,CAACF,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IACA,IAAQG,OAAO,GAAKF,KAAK,CAAjBE,OAAO;IACf,IAAQC,KAAK,GAAKF,KAAK,CAAfE,KAAK;IAEb,IAAuBC,OAAO,GAAKL,IAAI,CAA/BM,aAAa;IACrB,IAAMC,KAAK,GAAG,IAAI,CAAC1B,QAAQ,CAAC2B,QAAQ,CAAC,CAAC;IACtC,IAAMC,aAAa,GAAG;MACpBJ,OAAO;MACPK,MAAM,EAAEhB,CAAC;MACTiB,MAAM,EAAEhB,CAAC;MACTQ,OAAO;MACPC,KAAK;MACLG;IACF,CAAC;IAED,IAAAK,qBAAA,GACEb,QAAQ,CAACc,6BAA6B,CAACJ,aAAa,CAAC;MAD/CK,IAAI,GAAAF,qBAAA,CAAJE,IAAI;MAAEC,GAAG,GAAAH,qBAAA,CAAHG,GAAG;MAAEC,KAAK,GAAAJ,qBAAA,CAALI,KAAK;MAAEC,MAAM,GAAAL,qBAAA,CAANK,MAAM;IAEhC,IAAIH,IAAI,IAAI,IAAI,IAAIE,KAAK,IAAI,IAAI,IAAID,GAAG,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClE,OAAO,IAAI;IACb;IAEA,OAAO;MAAEH,IAAI;MAAEC,GAAG;MAAEC,KAAK;MAAEC;IAAO,CAAC;EACrC;EAEQ7B,wBAAwBA,CAACD,KAAgB,EAAW;IAAA,IAAA+B,qBAAA;IAC1D,IAAQxB,CAAC,GAAQP,KAAK,CAAdO,CAAC;MAAEC,CAAC,GAAKR,KAAK,CAAXQ,CAAC;IACZ,IAAAwB,KAAA,IAAAD,qBAAA,GAAqC,IAAI,CAAC1B,iBAAiB,CAACL,KAAK,CAAC,cAAA+B,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;MAAhEJ,IAAI,GAAAK,KAAA,CAAJL,IAAI;MAAEC,GAAG,GAAAI,KAAA,CAAHJ,GAAG;MAAEC,KAAK,GAAAG,KAAA,CAALH,KAAK;MAAEC,MAAM,GAAAE,KAAA,CAANF,MAAM;IAChC,IAAIH,IAAI,IAAI,IAAI,IAAIE,KAAK,IAAI,IAAI,IAAID,GAAG,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClE,OAAO,KAAK;IACd;IAEA,IAAAG,eAAA,GAAyC,IAAI,CAACvC,QAAQ;MAA9CkB,QAAQ,GAAAqB,eAAA,CAARrB,QAAQ;MAAEC,IAAI,GAAAoB,eAAA,CAAJpB,IAAI;MAAEC,KAAK,GAAAmB,eAAA,CAALnB,KAAK;MAAEC,KAAK,GAAAkB,eAAA,CAALlB,KAAK;IACpC,IAAI,CAACF,IAAI,EAAE;MACT,OAAO,KAAK;IACd;IACA,IAAQG,OAAO,GAAKF,KAAK,CAAjBE,OAAO;IACf,IAAQC,KAAK,GAAKF,KAAK,CAAfE,KAAK;IACb,IAAuBC,OAAO,GAAKL,IAAI,CAA/BM,aAAa;IACrB,IAAMC,KAAK,GAAGP,IAAI,CAACQ,QAAQ,CAAC,CAAC;IAC7B,IAAMC,aAAa,GAAG;MACpBJ,OAAO;MACPK,MAAM,EAAEhB,CAAC;MACTiB,MAAM,EAAEhB,CAAC;MACTQ,OAAO;MACPC,KAAK;MACLG;IACF,CAAwB;IAExB,OACER,QAAQ,CAACsB,0BAA0B,CAACZ,aAAa,CAAC,IAClDf,CAAC,IAAIoB,IAAI,IACTpB,CAAC,IAAIoB,IAAI,GAAGE,KAAK,IACjBrB,CAAC,IAAIoB,GAAG,IACRpB,CAAC,IAAIoB,GAAG,GAAGE,MAAM;EAErB;EAEAK,MAAMA,CAACnC,KAAgB,EAAsB;IAC3C,IAAI,IAAI,CAACC,wBAAwB,CAACD,KAAK,CAAC,EAAE;MACxC,IAAQF,0BAA0B,GAAK,IAAI,CAACJ,QAAQ,CAACoB,KAAK,CAAlDhB,0BAA0B;MAClC,IAAMsC,QAAQ,GAAG,IAAI,CAAC/B,iBAAiB,CAACL,KAAK,CAAC;MAC9C,IAAI,CAACT,SAAS,CAACO,0BAA0B,EAAEsC,QAAQ,CAAC,EAAE;QACpD,IAAI,CAAC1C,QAAQ,CAACG,QAAQ,CAAC;UAAEC,0BAA0B,EAAEsC;QAAS,CAAC,CAAC;MAClE;IACF,CAAC,MAAM;MACL,IAAI,CAACxC,oBAAoB,CAAC,CAAC;IAC7B;IACA,OAAO,IAAI,CAACG,SAAS,CAACC,KAAK,CAAC;EAC9B;EAEAqC,OAAOA,CAACrC,KAAgB,EAAsB;IAC5C,IAAI,CAACJ,oBAAoB,CAAC,CAAC;IAC3B,OAAO,IAAI,CAACuC,MAAM,CAACnC,KAAK,CAAC;EAC3B;;EAEA;EACAsC,MAAMA,CAACtC,KAAgB,EAAW;IAChC,IAAI,CAACJ,oBAAoB,CAAC,CAAC;IAC3B,IAAQa,MAAM,GAAUT,KAAK,CAArBS,MAAM;MAAEC,GAAG,GAAKV,KAAK,CAAbU,GAAG;IAEnB,IAAI,IAAI,CAACT,wBAAwB,CAACD,KAAK,CAAC,EAAE;MACxC,IAAI,CAACN,QAAQ,CAACG,QAAQ,CAAC;QACrB0C,iBAAiB,EAAE,IAAI;QACvBC,YAAY,EAAE,IAAI,CAAC9C,QAAQ,CAAC+C,eAAe,CAAChC,MAAM,EAAEC,GAAG;MACzD,CAAC,CAAC;MACF,OAAO,IAAI,CAAC,CAAC;IACf;IAEA,OAAO,KAAK;EACd;EAEAgC,aAAaA,CAAA,EAAuB;IAClC,IAAI,CAAC9C,oBAAoB,CAAC,CAAC;IAC3B,OAAO,KAAK;EACd;EAEA+C,OAAOA,CAAA,EAAuB;IAC5B,IAAI,CAAC/C,oBAAoB,CAAC,CAAC;IAC3B,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,gCAAgC","ignoreList":[]}