@deephaven/iris-grid 0.13.3-beta.2 → 0.13.5

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 (184) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +63 -69
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +73 -79
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
  6. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValue.js +36 -32
  8. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +52 -47
  10. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  11. package/dist/AdvancedFilterCreatorSelectValueList.js +39 -24
  12. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  13. package/dist/ColumnStatistics.d.ts +22 -34
  14. package/dist/ColumnStatistics.d.ts.map +1 -1
  15. package/dist/ColumnStatistics.js +12 -8
  16. package/dist/ColumnStatistics.js.map +1 -1
  17. package/dist/CrossColumnSearch.d.ts +24 -26
  18. package/dist/CrossColumnSearch.d.ts.map +1 -1
  19. package/dist/CrossColumnSearch.js +13 -9
  20. package/dist/CrossColumnSearch.js.map +1 -1
  21. package/dist/FilterInputField.d.ts +51 -48
  22. package/dist/FilterInputField.d.ts.map +1 -1
  23. package/dist/FilterInputField.js +27 -30
  24. package/dist/FilterInputField.js.map +1 -1
  25. package/dist/IrisGrid.d.ts +453 -409
  26. package/dist/IrisGrid.d.ts.map +1 -1
  27. package/dist/IrisGrid.js +449 -514
  28. package/dist/IrisGrid.js.map +1 -1
  29. package/dist/IrisGridCellOverflowModal.d.ts +1 -1
  30. package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
  31. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  32. package/dist/IrisGridCopyHandler.d.ts +46 -52
  33. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  34. package/dist/IrisGridCopyHandler.js +38 -22
  35. package/dist/IrisGridCopyHandler.js.map +1 -1
  36. package/dist/IrisGridMetricCalculator.d.ts +4 -5
  37. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  38. package/dist/IrisGridMetricCalculator.js +1 -5
  39. package/dist/IrisGridMetricCalculator.js.map +1 -1
  40. package/dist/IrisGridModel.d.ts +35 -37
  41. package/dist/IrisGridModel.d.ts.map +1 -1
  42. package/dist/IrisGridModel.js +3 -19
  43. package/dist/IrisGridModel.js.map +1 -1
  44. package/dist/IrisGridModelFactory.d.ts +5 -7
  45. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  46. package/dist/IrisGridModelFactory.js +5 -5
  47. package/dist/IrisGridModelFactory.js.map +1 -1
  48. package/dist/IrisGridModelUpdater.d.ts +11 -13
  49. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  50. package/dist/IrisGridModelUpdater.js.map +1 -1
  51. package/dist/IrisGridPartitionSelector.d.ts +39 -38
  52. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  53. package/dist/IrisGridPartitionSelector.js +24 -18
  54. package/dist/IrisGridPartitionSelector.js.map +1 -1
  55. package/dist/IrisGridProxyModel.d.ts +32 -111
  56. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  57. package/dist/IrisGridProxyModel.js +170 -212
  58. package/dist/IrisGridProxyModel.js.map +1 -1
  59. package/dist/IrisGridRenderer.d.ts +31 -59
  60. package/dist/IrisGridRenderer.d.ts.map +1 -1
  61. package/dist/IrisGridRenderer.js +46 -92
  62. package/dist/IrisGridRenderer.js.map +1 -1
  63. package/dist/IrisGridTableModel.d.ts +147 -48
  64. package/dist/IrisGridTableModel.d.ts.map +1 -1
  65. package/dist/IrisGridTableModel.js +1381 -58
  66. package/dist/IrisGridTableModel.js.map +1 -1
  67. package/dist/IrisGridTestUtils.d.ts +14 -18
  68. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  69. package/dist/IrisGridTestUtils.js +1 -29
  70. package/dist/IrisGridTestUtils.js.map +1 -1
  71. package/dist/IrisGridTheme.d.ts +3 -35
  72. package/dist/IrisGridTheme.d.ts.map +1 -1
  73. package/dist/IrisGridTheme.js.map +1 -1
  74. package/dist/IrisGridTreeTableModel.d.ts +7 -26
  75. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  76. package/dist/IrisGridTreeTableModel.js +14 -24
  77. package/dist/IrisGridTreeTableModel.js.map +1 -1
  78. package/dist/IrisGridUtils.d.ts +162 -257
  79. package/dist/IrisGridUtils.d.ts.map +1 -1
  80. package/dist/IrisGridUtils.js +95 -132
  81. package/dist/IrisGridUtils.js.map +1 -1
  82. package/dist/MissingKeyError.d.ts +3 -5
  83. package/dist/MissingKeyError.d.ts.map +1 -1
  84. package/dist/MissingKeyError.js.map +1 -1
  85. package/dist/PartitionSelectorSearch.d.ts +40 -61
  86. package/dist/PartitionSelectorSearch.d.ts.map +1 -1
  87. package/dist/PartitionSelectorSearch.js +15 -25
  88. package/dist/PartitionSelectorSearch.js.map +1 -1
  89. package/dist/PendingDataBottomBar.d.ts +6 -3
  90. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  91. package/dist/PendingDataBottomBar.js.map +1 -1
  92. package/dist/TableViewportUpdater.d.ts +55 -39
  93. package/dist/TableViewportUpdater.d.ts.map +1 -1
  94. package/dist/TableViewportUpdater.js +64 -42
  95. package/dist/TableViewportUpdater.js.map +1 -1
  96. package/dist/TreeTableViewportUpdater.d.ts +37 -29
  97. package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
  98. package/dist/TreeTableViewportUpdater.js +50 -39
  99. package/dist/TreeTableViewportUpdater.js.map +1 -1
  100. package/dist/index.d.ts +0 -9
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +0 -9
  103. package/dist/index.js.map +1 -1
  104. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
  105. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  106. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
  107. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
  108. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +0 -2
  109. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  110. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +1 -1
  111. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  112. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +130 -41
  113. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  114. package/dist/mousehandlers/IrisGridContextMenuHandler.js +317 -426
  115. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  116. package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
  117. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
  118. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  119. package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
  120. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  121. package/dist/mousehandlers/PendingMouseHandler.d.ts +4 -8
  122. package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
  123. package/dist/mousehandlers/PendingMouseHandler.js +5 -4
  124. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  125. package/dist/sidebar/ChartBuilder.d.ts +33 -48
  126. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  127. package/dist/sidebar/ChartBuilder.js +27 -28
  128. package/dist/sidebar/ChartBuilder.js.map +1 -1
  129. package/dist/sidebar/CustomColumnBuilder.d.ts +41 -51
  130. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  131. package/dist/sidebar/CustomColumnBuilder.js +18 -22
  132. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  133. package/dist/sidebar/CustomColumnInput.d.ts +36 -26
  134. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  135. package/dist/sidebar/CustomColumnInput.js +20 -11
  136. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  137. package/dist/sidebar/InputEditor.d.ts +35 -34
  138. package/dist/sidebar/InputEditor.d.ts.map +1 -1
  139. package/dist/sidebar/InputEditor.js +24 -43
  140. package/dist/sidebar/InputEditor.js.map +1 -1
  141. package/dist/sidebar/RollupRows.d.ts +52 -67
  142. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  143. package/dist/sidebar/RollupRows.js +53 -51
  144. package/dist/sidebar/RollupRows.js.map +1 -1
  145. package/dist/sidebar/SelectDistinctBuilder.d.ts +21 -27
  146. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  147. package/dist/sidebar/SelectDistinctBuilder.js +10 -6
  148. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  149. package/dist/sidebar/TableCsvExporter.d.ts +39 -42
  150. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  151. package/dist/sidebar/TableCsvExporter.js +20 -12
  152. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  153. package/dist/sidebar/TableSaver.d.ts +60 -59
  154. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  155. package/dist/sidebar/TableSaver.js +68 -154
  156. package/dist/sidebar/TableSaver.js.map +1 -1
  157. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +45 -56
  158. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  159. package/dist/sidebar/VisibilityOrderingBuilder.js +29 -34
  160. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  161. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  162. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  163. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -2
  164. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  165. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  166. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +5 -6
  167. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  168. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +0 -5
  169. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  170. package/dist/sidebar/icons/index.d.ts +7 -7
  171. package/dist/sidebar/icons/index.d.ts.map +1 -1
  172. package/dist/sidebar/icons/index.js.map +1 -1
  173. package/dist/sidebar/index.d.ts +12 -12
  174. package/dist/sidebar/index.d.ts.map +1 -1
  175. package/dist/sidebar/index.js.map +1 -1
  176. package/package.json +16 -17
  177. package/dist/CommonTypes.d.ts +0 -58
  178. package/dist/CommonTypes.d.ts.map +0 -1
  179. package/dist/CommonTypes.js +0 -2
  180. package/dist/CommonTypes.js.map +0 -1
  181. package/dist/IrisGridTableModelTemplate.d.ts +0 -219
  182. package/dist/IrisGridTableModelTemplate.d.ts.map +0 -1
  183. package/dist/IrisGridTableModelTemplate.js +0 -1623
  184. package/dist/IrisGridTableModelTemplate.js.map +0 -1
@@ -5,6 +5,6 @@ interface IrisGridCellOverflowModalProps {
5
5
  isOpen: boolean;
6
6
  onClose: () => void;
7
7
  }
8
- export default function IrisGridCellOverflowModal({ text, isOpen, onClose, }: IrisGridCellOverflowModalProps): React.ReactElement | null;
8
+ export default function IrisGridCellOverflowModal({ text, isOpen, onClose, }: IrisGridCellOverflowModalProps): React.ReactNode;
9
9
  export {};
10
10
  //# sourceMappingURL=IrisGridCellOverflowModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA0J5D"}
1
+ {"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,SAAS,CA0JlD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridCellOverflowModal.tsx"],"names":["React","useEffect","useRef","useState","Editor","Modal","ModalBody","ModalHeader","Button","vsJson","vsListOrdered","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport { Modal, ModalBody, ModalHeader } from 'reactstrap';\nimport * as monaco from 'monaco-editor';\nimport { Button } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactElement | null {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n size=\"xl\"\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader tag=\"div\" toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"file":"IrisGridCellOverflowModal.js"}
1
+ {"version":3,"sources":["../src/IrisGridCellOverflowModal.tsx"],"names":["React","useEffect","useRef","useState","Editor","Modal","ModalBody","ModalHeader","Button","vsJson","vsListOrdered","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport { Modal, ModalBody, ModalHeader } from 'reactstrap';\nimport * as monaco from 'monaco-editor';\nimport { Button } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactNode {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n size=\"xl\"\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader tag=\"div\" toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"file":"IrisGridCellOverflowModal.js"}
@@ -1,39 +1,10 @@
1
- import { Component } from 'react';
2
- import { GridRange, ModelSizeMap, MoveOperation } from '@deephaven/grid';
3
- import { CancelablePromise } from '@deephaven/utils';
4
- import './IrisGridCopyHandler.scss';
5
- import IrisGridModel from './IrisGridModel';
6
- declare type Values<T> = T[keyof T];
7
- declare type ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;
8
- export declare type CopyOperation = {
9
- ranges: GridRange[];
10
- includeHeaders: boolean;
11
- formatValues?: boolean;
12
- movedColumns: MoveOperation[];
13
- userColumnWidths: ModelSizeMap;
14
- error?: string;
15
- };
16
- interface IrisGridCopyHandlerProps {
17
- model: IrisGridModel;
18
- copyOperation: CopyOperation;
19
- onEntering: () => void;
20
- onEntered: () => void;
21
- onExiting: () => void;
22
- onExited: () => void;
23
- }
24
- interface IrisGridCopyHandlerState {
25
- error?: string;
26
- copyState: string;
27
- buttonState: string;
28
- isShown: boolean;
29
- rowCount: number;
30
- }
1
+ export default IrisGridCopyHandler;
31
2
  /**
32
3
  * Component for handling copying of data from the Iris Grid.
33
4
  * - Prompts if necessary (large amount of rows copied)
34
5
  * - Tries to async copy, falls back to showing a "Click to Copy" button if that fails
35
6
  */
36
- declare class IrisGridCopyHandler extends Component<IrisGridCopyHandlerProps, IrisGridCopyHandlerState> {
7
+ declare class IrisGridCopyHandler extends React.Component<any, any, any> {
37
8
  static NO_PROMPT_THRESHOLD: number;
38
9
  static HIDE_TIMEOUT: number;
39
10
  /**
@@ -53,34 +24,57 @@ declare class IrisGridCopyHandler extends Component<IrisGridCopyHandlerProps, Ir
53
24
  CLICK_TO_COPY: string;
54
25
  RETRY: string;
55
26
  };
56
- static defaultProps: {
57
- copyOperation: null;
58
- onEntering: () => void;
59
- onEntered: () => void;
60
- onExiting: () => void;
61
- onExited: () => void;
62
- };
63
- static getStatusMessageText(copyState: string, rowCount: number): string;
64
- static getCopyButtonText(buttonState: ButtonStateType): string;
65
- constructor(props: IrisGridCopyHandlerProps);
66
- componentDidMount(): void;
67
- componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void;
68
- componentWillUnmount(): void;
69
- textData?: string;
70
- hideTimer?: ReturnType<typeof setTimeout>;
71
- fetchPromise?: CancelablePromise<string>;
72
- startCopy(): void;
73
- stopCopy(): void;
27
+ static getStatusMessageText(copyState: any, rowCount: any): string;
28
+ static getCopyButtonText(buttonState: any): "Fetching" | "Click to Copy" | "Retry" | "Copy";
29
+ constructor(props: any);
74
30
  handleBackgroundClick(): void;
75
31
  handleCancelClick(): void;
76
32
  handleCopyClick(): void;
77
33
  handleHideTimeout(): void;
78
- copyText(text: string): void;
34
+ textData: any;
35
+ hideTimer: NodeJS.Timeout | null;
36
+ fetchPromise: import("@deephaven/utils").CancelablePromise<any> | null;
37
+ startCopy(): void;
38
+ stopCopy(): void;
39
+ copyText(text: any): void;
79
40
  startFetch(): void;
80
41
  stopFetch(): void;
81
42
  startHideTimer(): void;
82
43
  stopHideTimer(): void;
83
- render(): JSX.Element;
84
44
  }
85
- export default IrisGridCopyHandler;
45
+ declare namespace IrisGridCopyHandler {
46
+ namespace propTypes {
47
+ const model: PropTypes.Validator<any>;
48
+ const copyOperation: PropTypes.Requireable<PropTypes.InferProps<{
49
+ ranges: PropTypes.Validator<(GridRange | null | undefined)[]>;
50
+ movedColumns: PropTypes.Validator<(PropTypes.InferProps<{
51
+ to: PropTypes.Requireable<number>;
52
+ from: PropTypes.Requireable<number>;
53
+ }> | null | undefined)[]>;
54
+ userColumnWidths: PropTypes.Validator<Map<unknown, unknown>>;
55
+ formatValues: PropTypes.Requireable<boolean>;
56
+ includeHeaders: PropTypes.Requireable<boolean>;
57
+ error: PropTypes.Requireable<string>;
58
+ }>>;
59
+ const onEntering: PropTypes.Requireable<(...args: any[]) => any>;
60
+ const onEntered: PropTypes.Requireable<(...args: any[]) => any>;
61
+ const onExiting: PropTypes.Requireable<(...args: any[]) => any>;
62
+ const onExited: PropTypes.Requireable<(...args: any[]) => any>;
63
+ }
64
+ namespace defaultProps {
65
+ const copyOperation_1: null;
66
+ export { copyOperation_1 as copyOperation };
67
+ export function onEntering_1(): void;
68
+ export { onEntering_1 as onEntering };
69
+ export function onEntered_1(): void;
70
+ export { onEntered_1 as onEntered };
71
+ export function onExiting_1(): void;
72
+ export { onExiting_1 as onExiting };
73
+ export function onExited_1(): void;
74
+ export { onExited_1 as onExited };
75
+ }
76
+ }
77
+ import React from "react";
78
+ import PropTypes from "prop-types";
79
+ import { GridRange } from "packages/grid/src/GridRange";
86
80
  //# sourceMappingURL=IrisGridCopyHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,aAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;IAwDlB,SAAS,IAAI,IAAI;IAQjB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAOrB,MAAM,IAAI,GAAG,CAAC,OAAO;CAkEtB;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.jsx"],"names":[],"mappings":";AAmBA;;;;GAIG;AACH;IACE,mCAAmC;IAEnC,4BAA2B;IAE3B;;OAEG;IACH;;;;;;;MAkBE;IAEF;;;;;MAKE;IAEF,mEAeC;IAED,4FAWC;IAED,wBAmBC;IAgED,8BAOC;IAED,0BAKC;IAED,wBAQC;IAED,0BAMC;IA3GC,cAAoB;IACpB,iCAAqB;IACrB,uEAAwB;IA6B1B,kBAoCC;IAED,iBAIC;IAoCD,0BAkBC;IAED,mBAqDC;IAED,kBAMC;IAED,uBAOC;IAED,sBAKC;CAoEF;;;;;;;;;;;;;;;;;;;;;;;QAuBa,qCAAQ;;QACT,oCAAQ;;QACR,oCAAQ;;QACT,mCAAQ"}
@@ -2,21 +2,23 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
2
2
 
3
3
  import React, { Component } from 'react';
4
4
  import classNames from 'classnames';
5
+ import PropTypes from 'prop-types';
5
6
  import { CSSTransition } from 'react-transition-group';
6
7
  import { ContextActionUtils, LoadingSpinner, ThemeExport } from '@deephaven/components';
7
8
  import { GridRange, GridUtils } from '@deephaven/grid';
8
9
  import { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';
9
10
  import Log from '@deephaven/log';
11
+ import IrisGridModel from "./IrisGridModel.js";
10
12
  import IrisGridUtils from "./IrisGridUtils.js";
11
13
  import IrisGridBottomBar from "./IrisGridBottomBar.js";
12
14
  import "./IrisGridCopyHandler.css";
13
15
  var log = Log.module('IrisGridCopyHandler');
14
-
15
16
  /**
16
17
  * Component for handling copying of data from the Iris Grid.
17
18
  * - Prompts if necessary (large amount of rows copied)
18
19
  * - Tries to async copy, falls back to showing a "Click to Copy" button if that fails
19
20
  */
21
+
20
22
  class IrisGridCopyHandler extends Component {
21
23
  /**
22
24
  * Different states for the current copy operation
@@ -61,19 +63,15 @@ class IrisGridCopyHandler extends Component {
61
63
 
62
64
  constructor(props) {
63
65
  super(props);
64
-
65
- _defineProperty(this, "textData", void 0);
66
-
67
- _defineProperty(this, "hideTimer", void 0);
68
-
69
- _defineProperty(this, "fetchPromise", void 0);
70
-
71
66
  this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
72
67
  this.handleCancelClick = this.handleCancelClick.bind(this);
73
68
  this.handleCopyClick = this.handleCopyClick.bind(this);
74
69
  this.handleHideTimeout = this.handleHideTimeout.bind(this);
70
+ this.textData = null;
71
+ this.hideTimer = null;
72
+ this.fetchPromise = null;
75
73
  this.state = {
76
- error: undefined,
74
+ error: null,
77
75
  copyState: IrisGridCopyHandler.COPY_STATES.IDLE,
78
76
  buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,
79
77
  isShown: false,
@@ -140,7 +138,7 @@ class IrisGridCopyHandler extends Component {
140
138
  this.setState({
141
139
  rowCount,
142
140
  isShown: true,
143
- error: undefined
141
+ error: null
144
142
  });
145
143
 
146
144
  if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {
@@ -154,7 +152,7 @@ class IrisGridCopyHandler extends Component {
154
152
  }
155
153
 
156
154
  stopCopy() {
157
- this.textData = undefined;
155
+ this.textData = null;
158
156
  this.stopFetch();
159
157
  this.stopHideTimer();
160
158
  }
@@ -245,14 +243,14 @@ class IrisGridCopyHandler extends Component {
245
243
  var formatValue = formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => "".concat(value);
246
244
  this.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));
247
245
  this.fetchPromise.then(text => {
248
- this.fetchPromise = undefined;
246
+ this.fetchPromise = null;
249
247
  this.copyText(text);
250
248
  }).catch(error => {
251
249
  if (error instanceof CanceledPromiseError) {
252
250
  log.debug('User cancelled copy.');
253
251
  } else {
254
252
  log.error('Error fetching contents', error);
255
- this.fetchPromise = undefined;
253
+ this.fetchPromise = null;
256
254
  this.setState({
257
255
  buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,
258
256
  copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR
@@ -265,7 +263,7 @@ class IrisGridCopyHandler extends Component {
265
263
  if (this.fetchPromise) {
266
264
  log.debug2('stopFetch');
267
265
  this.fetchPromise.cancel();
268
- this.fetchPromise = undefined;
266
+ this.fetchPromise = null;
269
267
  }
270
268
  }
271
269
 
@@ -277,7 +275,7 @@ class IrisGridCopyHandler extends Component {
277
275
  stopHideTimer() {
278
276
  if (this.hideTimer != null) {
279
277
  clearTimeout(this.hideTimer);
280
- this.hideTimer = undefined;
278
+ this.hideTimer = null;
281
279
  }
282
280
  }
283
281
 
@@ -366,13 +364,31 @@ _defineProperty(IrisGridCopyHandler, "BUTTON_STATES", {
366
364
  RETRY: 'RETRY'
367
365
  });
368
366
 
369
- _defineProperty(IrisGridCopyHandler, "defaultProps", {
367
+ IrisGridCopyHandler.propTypes = {
368
+ model: PropTypes.instanceOf(IrisGridModel).isRequired,
369
+ copyOperation: PropTypes.shape({
370
+ // ranges are expected to be bounded ranges
371
+ ranges: PropTypes.arrayOf(PropTypes.instanceOf(GridRange)).isRequired,
372
+ movedColumns: PropTypes.arrayOf(PropTypes.shape({
373
+ to: PropTypes.number,
374
+ from: PropTypes.number
375
+ })).isRequired,
376
+ userColumnWidths: PropTypes.instanceOf(Map).isRequired,
377
+ formatValues: PropTypes.bool,
378
+ includeHeaders: PropTypes.bool,
379
+ error: PropTypes.string
380
+ }),
381
+ onEntering: PropTypes.func,
382
+ onEntered: PropTypes.func,
383
+ onExiting: PropTypes.func,
384
+ onExited: PropTypes.func
385
+ };
386
+ IrisGridCopyHandler.defaultProps = {
370
387
  copyOperation: null,
371
- onEntering: () => undefined,
372
- onEntered: () => undefined,
373
- onExiting: () => undefined,
374
- onExited: () => undefined
375
- });
376
-
388
+ onEntering: () => {},
389
+ onEntered: () => {},
390
+ onExiting: () => {},
391
+ onExited: () => {}
392
+ };
377
393
  export default IrisGridCopyHandler;
378
394
  //# sourceMappingURL=IrisGridCopyHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridCopyHandler.tsx"],"names":["React","Component","classNames","CSSTransition","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","state","error","undefined","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","textData","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","fetchPromise","makeCancelable","textSnapshot","catch","cancel","hideTimer","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n PromiseUtils,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\nimport IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('IrisGridCopyHandler');\n\ntype Values<T> = T[keyof T];\n\ntype ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;\n\nexport type CopyOperation = {\n ranges: GridRange[];\n includeHeaders: boolean;\n formatValues?: boolean;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n error?: string;\n};\n\ninterface IrisGridCopyHandlerProps {\n model: IrisGridModel;\n copyOperation: CopyOperation;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n}\n\ninterface IrisGridCopyHandlerState {\n error?: string;\n copyState: string;\n buttonState: string;\n isShown: boolean;\n rowCount: number;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component<\n IrisGridCopyHandlerProps,\n IrisGridCopyHandlerState\n> {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static defaultProps = {\n copyOperation: null,\n onEntering: (): void => undefined,\n onEntered: (): void => undefined,\n onExiting: (): void => undefined,\n onExited: (): void => undefined,\n };\n\n static getStatusMessageText(copyState: string, rowCount: number): string {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState: ButtonStateType): string {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props: IrisGridCopyHandlerProps) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount(): void {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount(): void {\n this.stopCopy();\n }\n\n textData?: string;\n\n hideTimer?: ReturnType<typeof setTimeout>;\n\n fetchPromise?: CancelablePromise<string>;\n\n startCopy(): void {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: undefined });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy(): void {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick(): void {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick(): void {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick(): void {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout(): void {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text: string): void {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch(): void {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue = formatValues\n ? (value: unknown, column: Column) =>\n model.displayString(value, column.type, column.name)\n : (value: unknown) => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then((text: string) => {\n this.fetchPromise = undefined;\n this.copyText(text);\n })\n .catch((error: unknown) => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = undefined;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch(): void {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n\n startHideTimer(): void {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer(): void {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n\n render(): JSX.Element {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn', 'btn-copy', {\n 'btn-primary': !isFetching,\n 'btn-secondary': isFetching,\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nexport default IrisGridCopyHandler;\n"],"file":"IrisGridCopyHandler.js"}
1
+ {"version":3,"sources":["../src/IrisGridCopyHandler.jsx"],"names":["React","Component","classNames","PropTypes","CSSTransition","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridModel","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","textData","hideTimer","fetchPromise","state","error","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","makeCancelable","textSnapshot","catch","cancel","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs","propTypes","instanceOf","isRequired","shape","arrayOf","to","number","from","Map","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport { GridRange, GridUtils } from '@deephaven/grid';\nimport { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\n\nconst log = Log.module('IrisGridCopyHandler');\n\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static getStatusMessageText(copyState, rowCount) {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState) {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.textData = null;\n this.hideTimer = null;\n this.fetchPromise = null;\n\n this.state = {\n error: null,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount() {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount() {\n this.stopCopy();\n }\n\n startCopy() {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: null });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy() {\n this.textData = null;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick() {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick() {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick() {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout() {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text) {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch() {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue = formatValues\n ? (value, column) => model.displayString(value, column.type, column.name)\n : value => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then(text => {\n this.fetchPromise = null;\n this.copyText(text);\n })\n .catch(error => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = null;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch() {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = null;\n }\n }\n\n startHideTimer() {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer() {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n\n render() {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn', 'btn-copy', {\n 'btn-primary': !isFetching,\n 'btn-secondary': isFetching,\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nIrisGridCopyHandler.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n copyOperation: PropTypes.shape({\n // ranges are expected to be bounded ranges\n ranges: PropTypes.arrayOf(PropTypes.instanceOf(GridRange)).isRequired,\n movedColumns: PropTypes.arrayOf(\n PropTypes.shape({ to: PropTypes.number, from: PropTypes.number })\n ).isRequired,\n userColumnWidths: PropTypes.instanceOf(Map).isRequired,\n formatValues: PropTypes.bool,\n includeHeaders: PropTypes.bool,\n error: PropTypes.string,\n }),\n onEntering: PropTypes.func,\n onEntered: PropTypes.func,\n onExiting: PropTypes.func,\n onExited: PropTypes.func,\n};\n\nIrisGridCopyHandler.defaultProps = {\n copyOperation: null,\n onEntering: () => {},\n onEntered: () => {},\n onExiting: () => {},\n onExited: () => {},\n};\n\nexport default IrisGridCopyHandler;\n"],"file":"IrisGridCopyHandler.js"}
@@ -1,11 +1,11 @@
1
- import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';
2
- import type { VisibleIndex, GridMetricState } from '@deephaven/grid';
1
+ import { GridMetricCalculator } from '@deephaven/grid';
2
+ import type { VisibleIndex, GridMetricState, GridTheme } from '@deephaven/grid';
3
3
  import type { FilterCondition, Sort } from '@deephaven/jsapi-shim';
4
4
  import type IrisGridModel from './IrisGridModel';
5
- import { IrisGridThemeType } from './IrisGridTheme';
5
+ import type IrisGridTheme from './IrisGridTheme';
6
6
  export interface IrisGridMetricState extends GridMetricState {
7
7
  model: IrisGridModel;
8
- theme: IrisGridThemeType;
8
+ theme: typeof IrisGridTheme & typeof GridTheme;
9
9
  isFilterBarShown: boolean;
10
10
  advancedFilters: Map<string, {
11
11
  options: unknown;
@@ -25,7 +25,6 @@ export interface IrisGridMetricState extends GridMetricState {
25
25
  declare class IrisGridMetricCalculator extends GridMetricCalculator {
26
26
  getVisibleColumnWidth(column: VisibleIndex, state: IrisGridMetricState, firstColumn?: VisibleIndex, treePaddingX?: number): number;
27
27
  getGridY(state: IrisGridMetricState): number;
28
- getUserColumnWidths(): ModelSizeMap;
29
28
  }
30
29
  export default IrisGridMetricCalculator;
31
30
  //# sourceMappingURL=IrisGridMetricCalculator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CACrD,CAAC;IACF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,cAAM,wBAAyB,SAAQ,oBAAoB;IACzD,qBAAqB,CACnB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,WAAW,GAAE,YAAyC,EACtD,YAAY,SAAoC,GAC/C,MAAM;IAsBT,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA6B5C,mBAAmB,IAAI,YAAY;CAGpC;AAED,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,OAAO,aAAa,GAAG,OAAO,SAAS,CAAC;IAC/C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CACrD,CAAC;IACF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,cAAM,wBAAyB,SAAQ,oBAAoB;IACzD,qBAAqB,CACnB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,WAAW,GAAE,YAAyC,EACtD,YAAY,SAAoC,GAC/C,MAAM;IAsBT,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;CAwB7C;AAED,eAAe,wBAAwB,CAAC"}
@@ -48,17 +48,13 @@ class IrisGridMetricCalculator extends GridMetricCalculator {
48
48
  gridY += theme.filterBarCollapsedHeight;
49
49
  }
50
50
 
51
- if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts && sorts.length > 0) {
51
+ if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts.length > 0) {
52
52
  gridY += theme.reverseHeaderBarHeight;
53
53
  }
54
54
 
55
55
  return gridY;
56
56
  }
57
57
 
58
- getUserColumnWidths() {
59
- return this.userColumnWidths;
60
- }
61
-
62
58
  }
63
59
 
64
60
  export default IrisGridMetricCalculator;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridMetricCalculator.ts"],"names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getVisibleColumnWidth","column","state","firstColumn","getFirstColumn","treePaddingX","calculateTreePaddingX","model","hiddenColumns","layoutHints","modelColumn","getModelColumn","columnWidth","hasUserSetWidth","userColumnWidths","has","includes","columns","name","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths"],"mappings":"AAAA,SAASA,oBAAT,QAAmD,iBAAnD;AAGA,SAASC,UAAT,QAA2B,wBAA3B;;AAiBA;;AACA;;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCF,oBAAvC,CAA4D;AAC1DG,EAAAA,qBAAqB,CACnBC,MADmB,EAEnBC,KAFmB,EAKX;AAAA;;AAAA,QAFRC,WAEQ,uEAFoB,KAAKC,cAAL,CAAoBF,KAApB,CAEpB;AAAA,QADRG,YACQ,uEADO,KAAKC,qBAAL,CAA2BJ,KAA3B,CACP;AACR,QAAM;AAAEK,MAAAA;AAAF,QAAYL,KAAlB;AACA,QAAMM,aAAa,kDAAGD,KAAK,CAACE,WAAT,uDAAG,mBAAmBD,aAAtB,yEAAuC,EAA1D;AACA,QAAME,WAAW,GAAG,KAAKC,cAAL,CAAoBV,MAApB,EAA4BC,KAA5B,CAApB,CAHQ,CAKR;;AACA,QAAMU,WAAW,GAAG,MAAMZ,qBAAN,CAClBC,MADkB,EAElBC,KAFkB,EAGlBC,WAHkB,EAIlBE,YAJkB,CAApB;AAMA,QAAMQ,eAAe,GAAG,KAAKC,gBAAL,CAAsBC,GAAtB,CAA0BL,WAA1B,CAAxB;;AACA,QACE,CAACG,eAAD,IACAL,aAAa,CAACQ,QAAd,CAAuBT,KAAK,CAACU,OAAN,CAAcP,WAAd,EAA2BQ,IAAlD,CAFF,EAGE;AACA,aAAO,CAAP;AACD;;AACD,WAAON,WAAP;AACD;;AAEDO,EAAAA,QAAQ,CAACjB,KAAD,EAAqC;AAC3C,QAAIkB,KAAK,GAAG,MAAMD,QAAN,CAAejB,KAAf,CAAZ;AACA,QAAM;AACJmB,MAAAA,gBADI;AAEJC,MAAAA,KAFI;AAGJC,MAAAA,eAHI;AAIJC,MAAAA,YAJI;AAKJC,MAAAA,KALI;AAMJC,MAAAA;AANI,QAOFxB,KAPJ;;AAQA,QAAImB,gBAAJ,EAAsB;AACpBD,MAAAA,KAAK,IAAIE,KAAK,CAACK,eAAf;AACD,KAFD,MAEO,IACJH,YAAY,IAAIA,YAAY,CAACI,IAAb,GAAoB,CAArC,IACCL,eAAe,IAAIA,eAAe,CAACK,IAAhB,GAAuB,CAFtC,EAGL;AACAR,MAAAA,KAAK,IAAIE,KAAK,CAACO,wBAAf;AACD;;AACD,QACEH,WAAW,KAAK5B,UAAU,CAACgC,YAAX,CAAwBC,IAAxC,IACAN,KADA,IAEAA,KAAK,CAACO,MAAN,GAAe,CAHjB,EAIE;AACAZ,MAAAA,KAAK,IAAIE,KAAK,CAACW,sBAAf;AACD;;AAED,WAAOb,KAAP;AACD;;AAEDc,EAAAA,mBAAmB,GAAiB;AAClC,WAAO,KAAKpB,gBAAZ;AACD;;AA3DyD;;AA8D5D,eAAef,wBAAf","sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { VisibleIndex, GridMetricState } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\n}\n\n/* eslint class-methods-use-this: \"off\" */\n/* eslint react/destructuring-assignment: \"off\" */\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nclass IrisGridMetricCalculator extends GridMetricCalculator {\n getVisibleColumnWidth(\n column: VisibleIndex,\n state: IrisGridMetricState,\n firstColumn: VisibleIndex = this.getFirstColumn(state),\n treePaddingX = this.calculateTreePaddingX(state)\n ): number {\n const { model } = state;\n const hiddenColumns = model.layoutHints?.hiddenColumns ?? [];\n const modelColumn = this.getModelColumn(column, state);\n\n // Need to make sure super is called so column width is always re-calculated correctly\n const columnWidth = super.getVisibleColumnWidth(\n column,\n state,\n firstColumn,\n treePaddingX\n );\n const hasUserSetWidth = this.userColumnWidths.has(modelColumn);\n if (\n !hasUserSetWidth &&\n hiddenColumns.includes(model.columns[modelColumn].name)\n ) {\n return 0;\n }\n return columnWidth;\n }\n\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverseType,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"file":"IrisGridMetricCalculator.js"}
1
+ {"version":3,"sources":["../src/IrisGridMetricCalculator.ts"],"names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getVisibleColumnWidth","column","state","firstColumn","getFirstColumn","treePaddingX","calculateTreePaddingX","model","hiddenColumns","layoutHints","modelColumn","getModelColumn","columnWidth","hasUserSetWidth","userColumnWidths","has","includes","columns","name","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,iBAArC;AAGA,SAASC,UAAT,QAA2B,wBAA3B;;AAiBA;;AACA;;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCF,oBAAvC,CAA4D;AAC1DG,EAAAA,qBAAqB,CACnBC,MADmB,EAEnBC,KAFmB,EAKX;AAAA;;AAAA,QAFRC,WAEQ,uEAFoB,KAAKC,cAAL,CAAoBF,KAApB,CAEpB;AAAA,QADRG,YACQ,uEADO,KAAKC,qBAAL,CAA2BJ,KAA3B,CACP;AACR,QAAM;AAAEK,MAAAA;AAAF,QAAYL,KAAlB;AACA,QAAMM,aAAa,kDAAGD,KAAK,CAACE,WAAT,uDAAG,mBAAmBD,aAAtB,yEAAuC,EAA1D;AACA,QAAME,WAAW,GAAG,KAAKC,cAAL,CAAoBV,MAApB,EAA4BC,KAA5B,CAApB,CAHQ,CAKR;;AACA,QAAMU,WAAW,GAAG,MAAMZ,qBAAN,CAClBC,MADkB,EAElBC,KAFkB,EAGlBC,WAHkB,EAIlBE,YAJkB,CAApB;AAMA,QAAMQ,eAAe,GAAG,KAAKC,gBAAL,CAAsBC,GAAtB,CAA0BL,WAA1B,CAAxB;;AACA,QACE,CAACG,eAAD,IACAL,aAAa,CAACQ,QAAd,CAAuBT,KAAK,CAACU,OAAN,CAAcP,WAAd,EAA2BQ,IAAlD,CAFF,EAGE;AACA,aAAO,CAAP;AACD;;AACD,WAAON,WAAP;AACD;;AAEDO,EAAAA,QAAQ,CAACjB,KAAD,EAAqC;AAC3C,QAAIkB,KAAK,GAAG,MAAMD,QAAN,CAAejB,KAAf,CAAZ;AACA,QAAM;AACJmB,MAAAA,gBADI;AAEJC,MAAAA,KAFI;AAGJC,MAAAA,eAHI;AAIJC,MAAAA,YAJI;AAKJC,MAAAA,KALI;AAMJC,MAAAA;AANI,QAOFxB,KAPJ;;AAQA,QAAImB,gBAAJ,EAAsB;AACpBD,MAAAA,KAAK,IAAIE,KAAK,CAACK,eAAf;AACD,KAFD,MAEO,IACJH,YAAY,IAAIA,YAAY,CAACI,IAAb,GAAoB,CAArC,IACCL,eAAe,IAAIA,eAAe,CAACK,IAAhB,GAAuB,CAFtC,EAGL;AACAR,MAAAA,KAAK,IAAIE,KAAK,CAACO,wBAAf;AACD;;AACD,QAAIH,WAAW,KAAK5B,UAAU,CAACgC,YAAX,CAAwBC,IAAxC,IAAgDN,KAAK,CAACO,MAAN,GAAe,CAAnE,EAAsE;AACpEZ,MAAAA,KAAK,IAAIE,KAAK,CAACW,sBAAf;AACD;;AAED,WAAOb,KAAP;AACD;;AAnDyD;;AAsD5D,eAAerB,wBAAf","sourcesContent":["import { GridMetricCalculator } from '@deephaven/grid';\nimport type { VisibleIndex, GridMetricState, GridTheme } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport type IrisGridTheme from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: typeof IrisGridTheme & typeof GridTheme;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\n}\n\n/* eslint class-methods-use-this: \"off\" */\n/* eslint react/destructuring-assignment: \"off\" */\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nclass IrisGridMetricCalculator extends GridMetricCalculator {\n getVisibleColumnWidth(\n column: VisibleIndex,\n state: IrisGridMetricState,\n firstColumn: VisibleIndex = this.getFirstColumn(state),\n treePaddingX = this.calculateTreePaddingX(state)\n ): number {\n const { model } = state;\n const hiddenColumns = model.layoutHints?.hiddenColumns ?? [];\n const modelColumn = this.getModelColumn(column, state);\n\n // Need to make sure super is called so column width is always re-calculated correctly\n const columnWidth = super.getVisibleColumnWidth(\n column,\n state,\n firstColumn,\n treePaddingX\n );\n const hasUserSetWidth = this.userColumnWidths.has(modelColumn);\n if (\n !hasUserSetWidth &&\n hiddenColumns.includes(model.columns[modelColumn].name)\n ) {\n return 0;\n }\n return columnWidth;\n }\n\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverseType,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"file":"IrisGridMetricCalculator.js"}