@deephaven/iris-grid 1.1.1 → 1.1.2-beta.3

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 (117) hide show
  1. package/dist/AdvancedFilterCreator.js.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  4. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  5. package/dist/ColumnHeaderGroup.js.map +1 -1
  6. package/dist/ColumnStatistics.js.map +1 -1
  7. package/dist/CommonTypes.js.map +1 -1
  8. package/dist/CrossColumnSearch.js.map +1 -1
  9. package/dist/EmptyIrisGridModel.js.map +1 -1
  10. package/dist/FilterInputField.js.map +1 -1
  11. package/dist/GotoRow.js.map +1 -1
  12. package/dist/IrisGrid.js.map +1 -1
  13. package/dist/IrisGridBottomBar.js.map +1 -1
  14. package/dist/IrisGridCacheUtils.js.map +1 -1
  15. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  16. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  17. package/dist/IrisGridCopyHandler.js.map +1 -1
  18. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  19. package/dist/IrisGridIcons.js.map +1 -1
  20. package/dist/IrisGridMetricCalculator.js.map +1 -1
  21. package/dist/IrisGridModel.js.map +1 -1
  22. package/dist/IrisGridModelFactory.js.map +1 -1
  23. package/dist/IrisGridModelUpdater.js.map +1 -1
  24. package/dist/IrisGridPartitionSelector.js.map +1 -1
  25. package/dist/IrisGridPartitionedTableModel.js.map +1 -1
  26. package/dist/IrisGridProxyModel.js.map +1 -1
  27. package/dist/IrisGridRenderer.js.map +1 -1
  28. package/dist/IrisGridShortcuts.js.map +1 -1
  29. package/dist/IrisGridTableModel.js.map +1 -1
  30. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  31. package/dist/IrisGridTestUtils.js.map +1 -1
  32. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  33. package/dist/IrisGridTheme.js.map +1 -1
  34. package/dist/IrisGridThemeProvider.js.map +1 -1
  35. package/dist/IrisGridTreeTableModel.js.map +1 -1
  36. package/dist/IrisGridUtils.js.map +1 -1
  37. package/dist/LazyIrisGrid.js.map +1 -1
  38. package/dist/MissingKeyError.js.map +1 -1
  39. package/dist/MissingPartitionError.js.map +1 -1
  40. package/dist/NoPastePermissionModal.js.map +1 -1
  41. package/dist/PartitionedGridModel.js.map +1 -1
  42. package/dist/PendingDataBottomBar.js.map +1 -1
  43. package/dist/ToastBottomBar.js.map +1 -1
  44. package/dist/declaration.d.js.map +1 -1
  45. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  46. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  47. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  48. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  49. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  50. package/dist/format-context-menus/index.js.map +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  53. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  54. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  55. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  56. package/dist/key-handlers/index.js.map +1 -1
  57. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  58. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  59. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  60. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  61. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
  62. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  63. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  64. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  65. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  66. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  67. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  68. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  69. package/dist/mousehandlers/index.js.map +1 -1
  70. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  71. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  72. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  73. package/dist/sidebar/ChartBuilder.js.map +1 -1
  74. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  75. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  76. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  77. package/dist/sidebar/InputEditor.js.map +1 -1
  78. package/dist/sidebar/OptionType.js.map +1 -1
  79. package/dist/sidebar/RollupRows.js.map +1 -1
  80. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  81. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  82. package/dist/sidebar/TableSaver.js.map +1 -1
  83. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  84. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  85. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  86. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  87. package/dist/sidebar/aggregations/index.js.map +1 -1
  88. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  89. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  90. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  91. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  92. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  93. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  94. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  95. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  96. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  97. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  98. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  99. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  100. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  101. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  102. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  103. package/dist/sidebar/icons/index.js.map +1 -1
  104. package/dist/sidebar/index.js.map +1 -1
  105. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  106. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  107. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  108. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  109. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  110. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  111. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  112. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  113. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  114. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  115. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  116. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  117. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { type ColumnName } from './CommonTypes';\nimport { type DisplayColumn } from './IrisGridModel';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n data-testid=\"cross-column-search\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => {\n if (column.isProxy === true) return null;\n\n return (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { type ColumnName } from './CommonTypes';\nimport { type DisplayColumn } from './IrisGridModel';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n data-testid=\"cross-column-search\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => {\n if (column.isProxy === true) return null;\n\n return (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyIrisGridModel.js","names":["Formatter","EMPTY_ARRAY","EMPTY_MAP","IrisGridModel","EmptyIrisGridModel","constructor","dh","formatter","arguments","length","undefined","_defineProperty","modelFormatter","rowCount","columnCount","textForCell","column","row","textForColumnHeader","depth","columns","getColumnIndexByName","name","initialMovedColumns","initialMovedRows","initialColumnHeaderGroups","groupedColumns","formatForCell","valueForCell","filter","partition","partitionColumns","displayString","value","columnType","columnName","sort","customColumns","formatColumns","updateFrozenColumns","rollupConfig","totalsConfig","export","Error","columnStatistics","selectDistinctColumns","pendingDataMap","map","pendingRowCount","count","pendingDataErrors","commitPending","Promise","resolve","setViewport","top","bottom","snapshot","ranges","textSnapshot","includeHeaders","formatValue","valuesTable","delete","seekRow","startRow","valueType","insensitive","contains","isBackwards","columnHeaderGroups","groups","columnHeaderGroupMap","getColumnHeaderParentGroup","modelIndex"],"sources":["../src/EmptyIrisGridModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type GridRange,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport { type ColumnName, Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PendingDataErrorMap,\n type PendingDataMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\n\nclass EmptyIrisGridModel extends IrisGridModel {\n constructor(dh: typeof DhType, formatter = new Formatter(dh)) {\n super(dh);\n\n this.modelFormatter = formatter;\n }\n\n modelFormatter: Formatter;\n\n get rowCount(): number {\n return 0;\n }\n\n get columnCount(): number {\n return 0;\n }\n\n textForCell(column: number, row: number): string {\n return '';\n }\n\n textForColumnHeader(column: ModelIndex, depth?: number): string | undefined {\n return undefined;\n }\n\n get columns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n getColumnIndexByName(name: string): ModelIndex | undefined {\n return undefined;\n }\n\n get initialMovedColumns(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialMovedRows(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n get groupedColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n formatForCell(\n column: ModelIndex,\n row: ModelIndex\n ): DhType.Format | undefined {\n return undefined;\n }\n\n valueForCell(column: ModelIndex, row: ModelIndex): unknown {\n return undefined;\n }\n\n get filter(): readonly DhType.FilterCondition[] {\n return EMPTY_ARRAY;\n }\n\n set filter(filter: readonly DhType.FilterCondition[]) {\n // No-op\n }\n\n get partition(): readonly unknown[] {\n return EMPTY_ARRAY;\n }\n\n set partition(partition: readonly unknown[]) {\n // No-op\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n get formatter(): Formatter {\n return this.modelFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.modelFormatter = formatter;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n get sort(): readonly DhType.Sort[] {\n return EMPTY_ARRAY;\n }\n\n set sort(sort: readonly DhType.Sort[]) {\n // No-op\n }\n\n get customColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set customColumns(customColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get formatColumns(): readonly DhType.CustomColumn[] {\n return EMPTY_ARRAY;\n }\n\n updateFrozenColumns(columns: readonly ColumnName[]): void {\n // Do nothing\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return null;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n // No-op\n }\n\n get totalsConfig(): UITotalsTableConfig | null {\n return null;\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n // No-op\n }\n\n export(): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: DhType.Column): Promise<DhType.ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set selectDistinctColumns(selectDistinctColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get pendingDataMap(): PendingDataMap {\n return EMPTY_MAP;\n }\n\n set pendingDataMap(map: PendingDataMap) {\n // No-op\n }\n\n get pendingRowCount(): number {\n return 0;\n }\n\n set pendingRowCount(count: number) {\n // No-op\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\n return EMPTY_MAP;\n }\n\n commitPending(): Promise<void> {\n return Promise.resolve();\n }\n\n setViewport(\n top: VisibleIndex,\n bottom: VisibleIndex,\n columns?: DhType.Column[]\n ): void {\n // No-op\n }\n\n snapshot(ranges: readonly GridRange[]): Promise<readonly unknown[][]> {\n return Promise.resolve([]);\n }\n\n textSnapshot(\n ranges: readonly GridRange[],\n includeHeaders?: boolean,\n formatValue?: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string\n ): Promise<string> {\n return Promise.resolve('');\n }\n\n valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n delete(ranges: readonly GridRange[]): Promise<void> {\n return Promise.resolve();\n }\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: unknown,\n value: unknown,\n insensitive?: boolean,\n contains?: boolean,\n isBackwards?: boolean\n ): Promise<number> {\n return Promise.resolve(0);\n }\n\n get columnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]) {\n // No-op\n }\n\n get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup> {\n return EMPTY_MAP;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return undefined;\n }\n}\n\nexport default EmptyIrisGridModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"EmptyIrisGridModel.js","names":["Formatter","EMPTY_ARRAY","EMPTY_MAP","IrisGridModel","EmptyIrisGridModel","constructor","dh","formatter","arguments","length","undefined","_defineProperty","modelFormatter","rowCount","columnCount","textForCell","column","row","textForColumnHeader","depth","columns","getColumnIndexByName","name","initialMovedColumns","initialMovedRows","initialColumnHeaderGroups","groupedColumns","formatForCell","valueForCell","filter","partition","partitionColumns","displayString","value","columnType","columnName","sort","customColumns","formatColumns","updateFrozenColumns","rollupConfig","totalsConfig","export","Error","columnStatistics","selectDistinctColumns","pendingDataMap","map","pendingRowCount","count","pendingDataErrors","commitPending","Promise","resolve","setViewport","top","bottom","snapshot","ranges","textSnapshot","includeHeaders","formatValue","valuesTable","delete","seekRow","startRow","valueType","insensitive","contains","isBackwards","columnHeaderGroups","groups","columnHeaderGroupMap","getColumnHeaderParentGroup","modelIndex"],"sources":["../src/EmptyIrisGridModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type GridRange,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport { type ColumnName, Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PendingDataErrorMap,\n type PendingDataMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\n\nclass EmptyIrisGridModel extends IrisGridModel {\n constructor(dh: typeof DhType, formatter = new Formatter(dh)) {\n super(dh);\n\n this.modelFormatter = formatter;\n }\n\n modelFormatter: Formatter;\n\n get rowCount(): number {\n return 0;\n }\n\n get columnCount(): number {\n return 0;\n }\n\n textForCell(column: number, row: number): string {\n return '';\n }\n\n textForColumnHeader(column: ModelIndex, depth?: number): string | undefined {\n return undefined;\n }\n\n get columns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n getColumnIndexByName(name: string): ModelIndex | undefined {\n return undefined;\n }\n\n get initialMovedColumns(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialMovedRows(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n get groupedColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n formatForCell(\n column: ModelIndex,\n row: ModelIndex\n ): DhType.Format | undefined {\n return undefined;\n }\n\n valueForCell(column: ModelIndex, row: ModelIndex): unknown {\n return undefined;\n }\n\n get filter(): readonly DhType.FilterCondition[] {\n return EMPTY_ARRAY;\n }\n\n set filter(filter: readonly DhType.FilterCondition[]) {\n // No-op\n }\n\n get partition(): readonly unknown[] {\n return EMPTY_ARRAY;\n }\n\n set partition(partition: readonly unknown[]) {\n // No-op\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n get formatter(): Formatter {\n return this.modelFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.modelFormatter = formatter;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n get sort(): readonly DhType.Sort[] {\n return EMPTY_ARRAY;\n }\n\n set sort(sort: readonly DhType.Sort[]) {\n // No-op\n }\n\n get customColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set customColumns(customColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get formatColumns(): readonly DhType.CustomColumn[] {\n return EMPTY_ARRAY;\n }\n\n updateFrozenColumns(columns: readonly ColumnName[]): void {\n // Do nothing\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return null;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n // No-op\n }\n\n get totalsConfig(): UITotalsTableConfig | null {\n return null;\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n // No-op\n }\n\n export(): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: DhType.Column): Promise<DhType.ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n set selectDistinctColumns(selectDistinctColumns: readonly ColumnName[]) {\n // No-op\n }\n\n get pendingDataMap(): PendingDataMap {\n return EMPTY_MAP;\n }\n\n set pendingDataMap(map: PendingDataMap) {\n // No-op\n }\n\n get pendingRowCount(): number {\n return 0;\n }\n\n set pendingRowCount(count: number) {\n // No-op\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\n return EMPTY_MAP;\n }\n\n commitPending(): Promise<void> {\n return Promise.resolve();\n }\n\n setViewport(\n top: VisibleIndex,\n bottom: VisibleIndex,\n columns?: DhType.Column[]\n ): void {\n // No-op\n }\n\n snapshot(ranges: readonly GridRange[]): Promise<readonly unknown[][]> {\n return Promise.resolve([]);\n }\n\n textSnapshot(\n ranges: readonly GridRange[],\n includeHeaders?: boolean,\n formatValue?: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string\n ): Promise<string> {\n return Promise.resolve('');\n }\n\n valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n delete(ranges: readonly GridRange[]): Promise<void> {\n return Promise.resolve();\n }\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: unknown,\n value: unknown,\n insensitive?: boolean,\n contains?: boolean,\n isBackwards?: boolean\n ): Promise<number> {\n return Promise.resolve(0);\n }\n\n get columnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]) {\n // No-op\n }\n\n get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup> {\n return EMPTY_MAP;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return undefined;\n }\n}\n\nexport default EmptyIrisGridModel;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","jsx","_jsx","jsxs","_jsxs","FilterInputField","constructor","props","_defineProperty","debounceMs","debouncedSendUpdate","sendUpdate","bind","handleCancel","handleChange","handleCommit","handleFocus","handleBlur","handleKeyDown","handleContextMenu","inputField","value","initialValue","state","isChanged","componentDidMount","_this$inputField","focus","componentDidUpdate","prevProps","flush","componentWillUnmount","cancel","setValue","setState","_this$inputField2","event","target","onDone","setGridFocus","arguments","length","undefined","defocusInput","_this$inputField3","select","relatedTarget","classList","contains","handleTab","backward","onTab","key","stopPropagation","preventDefault","shiftKey","onContextMenu","onChange","render","className","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","children","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n PureComponent,\n type ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport './FilterInputField.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { DebouncedFunc } from 'lodash';\nimport { Button } from '@deephaven/components';\n\ninterface FilterInputFieldProps {\n className: string;\n style: React.CSSProperties;\n value: string;\n isAdvancedFilterSet: boolean;\n onAdvancedFiltersTriggered: React.MouseEventHandler<HTMLButtonElement>;\n onChange: (value: string) => void;\n onDone: (setGridFocus?: boolean, defocusInput?: boolean) => void;\n onTab: (backward: boolean) => void;\n onContextMenu: React.MouseEventHandler<HTMLInputElement | HTMLButtonElement>;\n debounceMs: number;\n}\ninterface FilterInputFieldState {\n isChanged: boolean;\n value: string;\n}\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent<\n FilterInputFieldProps,\n FilterInputFieldState\n> {\n static defaultProps = {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: (): void => undefined,\n onChange: (): void => undefined,\n onDone: (): void => undefined,\n onTab: (): void => undefined,\n onContextMenu: (): void => undefined,\n debounceMs: 150,\n };\n\n constructor(props: FilterInputFieldProps) {\n super(props);\n\n const { debounceMs } = props;\n\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n\n this.inputField = null;\n\n const { value } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value,\n };\n }\n\n componentDidMount(): void {\n this.inputField?.focus();\n }\n\n componentDidUpdate(prevProps: FilterInputFieldProps): void {\n const { debounceMs } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(\n this.sendUpdate.bind(this),\n debounceMs\n );\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSendUpdate.cancel();\n }\n\n inputField: HTMLInputElement | null;\n\n initialValue: string;\n\n debouncedSendUpdate: DebouncedFunc<(value: string) => void>;\n\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value: string): void {\n this.initialValue = value;\n this.setState({ value });\n }\n\n focus(): void {\n this.inputField?.focus();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value, isChanged: true });\n\n this.debouncedSendUpdate(value);\n }\n\n handleCancel(): void {\n this.debouncedSendUpdate.cancel();\n const { initialValue } = this;\n const { isChanged } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n\n const { onDone } = this.props;\n onDone();\n }\n\n handleCommit(setGridFocus = true, defocusInput = true): void {\n this.debouncedSendUpdate.flush();\n\n const { onDone } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n\n handleFocus(): void {\n this.inputField?.select();\n }\n\n handleBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { relatedTarget } = event;\n // handleCommit results in a call that steals focus\n if (\n relatedTarget != null &&\n relatedTarget.classList.contains('context-menu-container')\n ) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (\n relatedTarget != null &&\n relatedTarget.classList.contains('advanced-filter-button')\n ) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n\n handleTab(backward = false): void {\n this.debouncedSendUpdate.flush();\n\n const { onTab } = this.props;\n onTab(backward);\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n\n handleContextMenu(\n event: React.MouseEvent<HTMLInputElement | HTMLButtonElement>\n ): void {\n const { onContextMenu } = this.props;\n onContextMenu(event);\n }\n\n sendUpdate(value: string): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n render(): ReactElement {\n const {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered,\n } = this.props;\n const { value } = this.state;\n return (\n <div\n style={style}\n className=\"iris-grid-input-autosized-wrapper\"\n data-value={value} // used by css based autosizer\n >\n <input\n ref={inputField => {\n this.inputField = inputField;\n }}\n className={classNames('iris-grid-input-field', className)}\n type=\"text\"\n value={value}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n <div className=\"advanced-filter-button-container\">\n <Button\n kind=\"ghost\"\n className={classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet,\n })}\n onClick={onAdvancedFiltersTriggered}\n onContextMenu={this.handleContextMenu}\n >\n <div className=\"fa-layers \">\n <FontAwesomeIcon icon={dhFilterFilled} className=\"filter-solid\" />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","jsx","_jsx","jsxs","_jsxs","FilterInputField","constructor","props","_defineProperty","debounceMs","debouncedSendUpdate","sendUpdate","bind","handleCancel","handleChange","handleCommit","handleFocus","handleBlur","handleKeyDown","handleContextMenu","inputField","value","initialValue","state","isChanged","componentDidMount","_this$inputField","focus","componentDidUpdate","prevProps","flush","componentWillUnmount","cancel","setValue","setState","_this$inputField2","event","target","onDone","setGridFocus","arguments","length","undefined","defocusInput","_this$inputField3","select","relatedTarget","classList","contains","handleTab","backward","onTab","key","stopPropagation","preventDefault","shiftKey","onContextMenu","onChange","render","className","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","children","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n PureComponent,\n type ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport './FilterInputField.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { DebouncedFunc } from 'lodash';\nimport { Button } from '@deephaven/components';\n\ninterface FilterInputFieldProps {\n className: string;\n style: React.CSSProperties;\n value: string;\n isAdvancedFilterSet: boolean;\n onAdvancedFiltersTriggered: React.MouseEventHandler<HTMLButtonElement>;\n onChange: (value: string) => void;\n onDone: (setGridFocus?: boolean, defocusInput?: boolean) => void;\n onTab: (backward: boolean) => void;\n onContextMenu: React.MouseEventHandler<HTMLInputElement | HTMLButtonElement>;\n debounceMs: number;\n}\ninterface FilterInputFieldState {\n isChanged: boolean;\n value: string;\n}\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent<\n FilterInputFieldProps,\n FilterInputFieldState\n> {\n static defaultProps = {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: (): void => undefined,\n onChange: (): void => undefined,\n onDone: (): void => undefined,\n onTab: (): void => undefined,\n onContextMenu: (): void => undefined,\n debounceMs: 150,\n };\n\n constructor(props: FilterInputFieldProps) {\n super(props);\n\n const { debounceMs } = props;\n\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n\n this.inputField = null;\n\n const { value } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value,\n };\n }\n\n componentDidMount(): void {\n this.inputField?.focus();\n }\n\n componentDidUpdate(prevProps: FilterInputFieldProps): void {\n const { debounceMs } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(\n this.sendUpdate.bind(this),\n debounceMs\n );\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSendUpdate.cancel();\n }\n\n inputField: HTMLInputElement | null;\n\n initialValue: string;\n\n debouncedSendUpdate: DebouncedFunc<(value: string) => void>;\n\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value: string): void {\n this.initialValue = value;\n this.setState({ value });\n }\n\n focus(): void {\n this.inputField?.focus();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value, isChanged: true });\n\n this.debouncedSendUpdate(value);\n }\n\n handleCancel(): void {\n this.debouncedSendUpdate.cancel();\n const { initialValue } = this;\n const { isChanged } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n\n const { onDone } = this.props;\n onDone();\n }\n\n handleCommit(setGridFocus = true, defocusInput = true): void {\n this.debouncedSendUpdate.flush();\n\n const { onDone } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n\n handleFocus(): void {\n this.inputField?.select();\n }\n\n handleBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { relatedTarget } = event;\n // handleCommit results in a call that steals focus\n if (\n relatedTarget != null &&\n relatedTarget.classList.contains('context-menu-container')\n ) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (\n relatedTarget != null &&\n relatedTarget.classList.contains('advanced-filter-button')\n ) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n\n handleTab(backward = false): void {\n this.debouncedSendUpdate.flush();\n\n const { onTab } = this.props;\n onTab(backward);\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n\n handleContextMenu(\n event: React.MouseEvent<HTMLInputElement | HTMLButtonElement>\n ): void {\n const { onContextMenu } = this.props;\n onContextMenu(event);\n }\n\n sendUpdate(value: string): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n render(): ReactElement {\n const {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered,\n } = this.props;\n const { value } = this.state;\n return (\n <div\n style={style}\n className=\"iris-grid-input-autosized-wrapper\"\n data-value={value} // used by css based autosizer\n >\n <input\n ref={inputField => {\n this.inputField = inputField;\n }}\n className={classNames('iris-grid-input-field', className)}\n type=\"text\"\n value={value}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n <div className=\"advanced-filter-button-container\">\n <Button\n kind=\"ghost\"\n className={classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet,\n })}\n onClick={onAdvancedFiltersTriggered}\n onContextMenu={this.handleContextMenu}\n >\n <div className=\"fa-layers \">\n <FontAwesomeIcon icon={dhFilterFilled} className=\"filter-solid\" />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","Type","FilterType","Button","DateTimeInput","Select","TableUtils","classNames","nanoid","IrisGridBottomBar","isIrisGridTableModelTemplate","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_FORMAT_STRING","GotoRow","_ref","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","model","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","dh","rowCount","gotoRowInputId","concat","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","focus","_gotoRowInputRef$curr","current","select","selectInput","document","activeElement","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","dataType","DECIMAL","INT","className","children","onKeyDown","placeholder","onChange","target","toLowerCase","test","DATETIME","defaultValue","onSubmit","STRING","eventTargetValue","eqIgnoreCase","containsIgnoreCase","eq","contains","BOOLEAN","onClick","onFocus","role","htmlFor","event","id","i18n","NumberFormat","format","kind","icon","style","marginRight","isSeekRowAvailable","columnName","map","column","name","tooltip","disabled","displayName"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n type ChangeEvent,\n type KeyboardEvent,\n type ReactElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n Type as FilterType,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport { nanoid } from 'nanoid';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { type ColumnName } from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nexport type GotoRowElement = { focus: () => void };\n\nconst GotoRow = forwardRef<GotoRowElement, GotoRowProps>(\n (\n {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n }: GotoRowProps,\n ref\n ): ReactElement => {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: dh.Column[] = [];\n\n if (isIrisGridTableModelTemplate(model)) {\n ({ columns } = model.table);\n }\n\n const { dh, rowCount } = model;\n\n const gotoRowInputId = useMemo(() => `goto-row-input-${nanoid()}`, []);\n\n const handleGotoValueNumberKeyDown = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string): void => {\n onGotoValueChanged(value ?? '');\n };\n useImperativeHandle(ref, () => ({\n focus(): void {\n setIsGotoRowActive(true);\n gotoRowInputRef.current?.select();\n },\n }));\n const selectInput = (): void => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (\n isGotoRowActive &&\n document.activeElement !== gotoRowInputRef.current\n ) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n\n const renderValueInput = (): JSX.Element => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n onGotoValueSelectedFilterChanged(\n eventTargetValue as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n aria-label=\"filter-type-select\"\n >\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n Equals (case-insensitive)\n </option>\n <option\n key={FilterType.containsIgnoreCase}\n value={FilterType.containsIgnoreCase}\n >\n Contains (case-insensitive)\n </option>\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n </Select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </Select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <label className=\"goto-row-text\" htmlFor={gotoRowInputId}>\n Go to row\n </label>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n data-testid=\"goto-row-input\"\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder=\"Row number\"\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n id={gotoRowInputId}\n />\n </div>\n <div className=\"goto-row-text\">\n of{' '}\n {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && (\n <div className=\"text-danger\">{gotoRowError}</div>\n )}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n const columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n aria-label=\"column-name-select\"\n id=\"column-name-select\"\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n tooltip=\"Previous match\"\n icon={vsArrowUp}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n />\n <Button\n tooltip=\"Next match\"\n icon={vsArrowDown}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n />\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n }\n);\nGotoRow.displayName = 'GotoRow';\n\nexport default GotoRow;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","Type","FilterType","Button","DateTimeInput","Select","TableUtils","classNames","nanoid","IrisGridBottomBar","isIrisGridTableModelTemplate","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_FORMAT_STRING","GotoRow","_ref","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","model","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","dh","rowCount","gotoRowInputId","concat","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","focus","_gotoRowInputRef$curr","current","select","selectInput","document","activeElement","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","dataType","DECIMAL","INT","className","children","onKeyDown","placeholder","onChange","target","toLowerCase","test","DATETIME","defaultValue","onSubmit","STRING","eventTargetValue","eqIgnoreCase","containsIgnoreCase","eq","contains","BOOLEAN","onClick","onFocus","role","htmlFor","event","id","i18n","NumberFormat","format","kind","icon","style","marginRight","isSeekRowAvailable","columnName","map","column","name","tooltip","disabled","displayName"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n type ChangeEvent,\n type KeyboardEvent,\n type ReactElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n Type as FilterType,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport { nanoid } from 'nanoid';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { type ColumnName } from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nexport type GotoRowElement = { focus: () => void };\n\nconst GotoRow = forwardRef<GotoRowElement, GotoRowProps>(\n (\n {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n }: GotoRowProps,\n ref\n ): ReactElement => {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: dh.Column[] = [];\n\n if (isIrisGridTableModelTemplate(model)) {\n ({ columns } = model.table);\n }\n\n const { dh, rowCount } = model;\n\n const gotoRowInputId = useMemo(() => `goto-row-input-${nanoid()}`, []);\n\n const handleGotoValueNumberKeyDown = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string): void => {\n onGotoValueChanged(value ?? '');\n };\n useImperativeHandle(ref, () => ({\n focus(): void {\n setIsGotoRowActive(true);\n gotoRowInputRef.current?.select();\n },\n }));\n const selectInput = (): void => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (\n isGotoRowActive &&\n document.activeElement !== gotoRowInputRef.current\n ) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n\n const renderValueInput = (): JSX.Element => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n onGotoValueSelectedFilterChanged(\n eventTargetValue as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n aria-label=\"filter-type-select\"\n >\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n Equals (case-insensitive)\n </option>\n <option\n key={FilterType.containsIgnoreCase}\n value={FilterType.containsIgnoreCase}\n >\n Contains (case-insensitive)\n </option>\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n </Select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </Select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <label className=\"goto-row-text\" htmlFor={gotoRowInputId}>\n Go to row\n </label>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n data-testid=\"goto-row-input\"\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder=\"Row number\"\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n id={gotoRowInputId}\n />\n </div>\n <div className=\"goto-row-text\">\n of{' '}\n {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && (\n <div className=\"text-danger\">{gotoRowError}</div>\n )}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n const columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n aria-label=\"column-name-select\"\n id=\"column-name-select\"\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n tooltip=\"Previous match\"\n icon={vsArrowUp}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n />\n <Button\n tooltip=\"Next match\"\n icon={vsArrowDown}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n />\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n }\n);\nGotoRow.displayName = 'GotoRow';\n\nexport default GotoRow;\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,gCAAgC;AAChE,SAASC,OAAO,EAAEC,SAAS,EAAEC,WAAW,QAAQ,kBAAkB;AAClE,OAAOC,KAAK,IAIVC,UAAU,EACVC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AAEd,SACEC,IAAI,IAAIC,UAAU,QAEb,oBAAoB;AAC3B,SAASC,MAAM,EAAEC,aAAa,EAAEC,MAAM,QAAQ,uBAAuB;AACrE,SAASC,UAAU,QAAQ,wBAAwB;AACnD,OAAOC,UAAU,MAAM,YAAY;AAAC;AAEpC,SAASC,MAAM,QAAQ,QAAQ;AAAC,OAEzBC,iBAAiB;AAAA,SAEfC,4BAA4B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAErC,IAAMC,qBAAqB,GAAG,SAAS;AA2BvC,IAAMC,OAAO,gBAAGvB,UAAU,CACxB,CAAAwB,IAAA,EAsBEC,GAAG,KACc;EAAA,IAtBjB;IACEC,OAAO;IACPC,YAAY;IACZC,cAAc;IACdC,eAAe;IACfC,OAAO;IACPC,UAAU;IACVC,SAAS,EAATA,UAAS;IACTC,SAAS;IACTC,QAAQ;IACRC,KAAK;IACLC,sBAAsB;IACtBC,OAAO;IACPC,2BAA2B;IAC3BC,SAAS;IACTC,eAAe;IACfC,oCAAoC;IACpCC,gCAAgC;IAChCC,kBAAkB;IAClBC;EACY,CAAC,GAAApB,IAAA;EAGf,IAAMqB,eAAe,GAAGzC,MAAM,CAAmB,IAAI,CAAC;EACtD,IAAM0C,iBAAiB,GAAG1C,MAAM,CAAmB,IAAI,CAAC;EAExD,IAAM,CAAC2C,eAAe,EAAEC,kBAAkB,CAAC,GAAG3C,QAAQ,CAAC,KAAK,CAAC;EAC7D,IAAI4C,OAAoB,GAAG,EAAE;EAE7B,IAAIlC,4BAA4B,CAACoB,KAAK,CAAC,EAAE;IACvC,CAAC;MAAEc;IAAQ,CAAC,GAAGd,KAAK,CAACe,KAAK;EAC5B;EAEA,IAAM;IAAEC,EAAE;IAAEC;EAAS,CAAC,GAAGjB,KAAK;EAE9B,IAAMkB,cAAc,GAAGlD,OAAO,CAAC,wBAAAmD,MAAA,CAAwBzC,MAAM,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC;EAEtE,IAAM0C,4BAA4B,GAChCC,CAAkC,IACzB;IACT,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MACrBD,CAAC,CAACE,eAAe,CAAC,CAAC;MACnBF,CAAC,CAACG,cAAc,CAAC,CAAC;MAClBf,iBAAiB,CAAC,CAAC;IACrB,CAAC,MAAM,IACL,CAACY,CAAC,CAACC,GAAG,KAAK,WAAW,IAAID,CAAC,CAACC,GAAG,KAAK,QAAQ,MAC3ClB,SAAS,QAAAe,MAAA,CAAQM,MAAM,CAACC,iBAAiB,CAAE,IAC1CtB,SAAS,QAAAe,MAAA,CAAQM,MAAM,CAACE,iBAAiB,CAAE,CAAC,EAC9C;MACAC,uBAAuB,CAAC,EAAE,CAAC;IAC7B;EACF,CAAC;EAED,IAAMC,wBAAwB,GAC5BR,CAAkC,IACzB;IACT,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MACrBD,CAAC,CAACE,eAAe,CAAC,CAAC;MACnBF,CAAC,CAACG,cAAc,CAAC,CAAC;MAClBf,iBAAiB,CAACY,CAAC,CAACS,QAAQ,CAAC;IAC/B;EACF,CAAC;EAED,IAAMC,KAAK,GAAG/B,KAAK,CAACgC,oBAAoB,CAAC7B,2BAA2B,CAAC;EAErE,IAAM8B,cAAc,GAAGnB,OAAO,CAACiB,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC;EAE1C,IAAMG,UAAU,GAAGD,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEE,IAAI;EAEvC,IAAMC,cAAc,GAAG5D,UAAU,CAAC6D,iBAAiB,CAACH,UAAU,CAAC;EAC/D,IAAMN,uBAAuB,GAAIU,KAAc,IAAW;IACxD9B,kBAAkB,CAAC8B,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,CAAC;EACjC,CAAC;EACDvE,mBAAmB,CAACuB,GAAG,EAAE,OAAO;IAC9BiD,KAAKA,CAAA,EAAS;MAAA,IAAAC,qBAAA;MACZ3B,kBAAkB,CAAC,IAAI,CAAC;MACxB,CAAA2B,qBAAA,GAAA9B,eAAe,CAAC+B,OAAO,cAAAD,qBAAA,uBAAvBA,qBAAA,CAAyBE,MAAM,CAAC,CAAC;IACnC;EACF,CAAC,CAAC,CAAC;EACH,IAAMC,WAAW,GAAGA,CAAA,KAAY;IAC9B;IACA,IACE/B,eAAe,IACfgC,QAAQ,CAACC,aAAa,KAAKnC,eAAe,CAAC+B,OAAO,EAClD;MAAA,IAAAK,sBAAA;MACA,CAAAA,sBAAA,GAAApC,eAAe,CAAC+B,OAAO,cAAAK,sBAAA,uBAAvBA,sBAAA,CAAyBJ,MAAM,CAAC,CAAC;IACnC,CAAC,MAAM,IACL,CAAC9B,eAAe,IAChBgC,QAAQ,CAACC,aAAa,KAAKlC,iBAAiB,CAAC8B,OAAO,EACpD;MAAA,IAAAM,qBAAA;MACA,CAAAA,qBAAA,GAAApC,iBAAiB,CAAC8B,OAAO,cAAAM,qBAAA,uBAAzBA,qBAAA,CAA2BL,MAAM,CAAC,CAAC;IACrC;EACF,CAAC;EACD5E,SAAS,CAAC6E,WAAW,EAAE,CAAC/B,eAAe,CAAC,CAAC;EAEzC,IAAMoC,gBAAgB,GAAGA,CAAA,KAAmB;IAC1C,QAAQZ,cAAc;MACpB,KAAK5D,UAAU,CAACyE,QAAQ,CAACC,OAAO;MAChC,KAAK1E,UAAU,CAACyE,QAAQ,CAACE,GAAG;QAC1B,oBACErE,IAAA;UAAKsE,SAAS,EAAC,gBAAgB;UAAAC,QAAA,eAC7BvE,IAAA;YACEQ,GAAG,EAAEqB,iBAAkB;YACvByC,SAAS,EAAE3E,UAAU,CAAC,cAAc,EAAE;cACpC,YAAY,EAAEgB,cAAc,KAAK;YACnC,CAAC,CAAE;YACH6D,SAAS,EAAElC,4BAA6B;YACxCmC,WAAW,EAAC,OAAO;YACnBC,QAAQ,EAAEnC,CAAC,IAAI;cACb,IAAMiB,KAAK,GAAGjB,CAAC,CAACoC,MAAM,CAACnB,KAAK,CAACoB,WAAW,CAAC,CAAC;cAC1C;cACA,IAAI,qBAAqB,CAACC,IAAI,CAACtC,CAAC,CAACoC,MAAM,CAACnB,KAAK,CAAC,EAAE;gBAC9CV,uBAAuB,CAACP,CAAC,CAACoC,MAAM,CAACnB,KAAK,CAAC;cACzC,CAAC,MAAM,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,WAAW,EAAE;gBAClDV,uBAAuB,IAAAT,MAAA,CAAIM,MAAM,CAACE,iBAAiB,CAAE,CAAC;cACxD,CAAC,MAAM,IAAIW,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,UAAU,EAAE;gBAChDV,uBAAuB,IAAAT,MAAA,CAAIM,MAAM,CAACC,iBAAiB,CAAE,CAAC;cACxD;YACF,CAAE;YACFY,KAAK,EAAElC,SAAU;YACjB,cAAW;UAAa,CACzB;QAAC,CACC,CAAC;MAEV,KAAK5B,UAAU,CAACyE,QAAQ,CAACW,QAAQ;QAC/B,oBACE9E,IAAA;UAAKsE,SAAS,EAAC,4BAA4B;UAAAC,QAAA,eACzCvE,IAAA,CAACR,aAAa;YACZgB,GAAG,EAAEqB,iBAAkB;YACvByC,SAAS,EAAE3E,UAAU,CACnB,cAAc,EACd,4BAA4B,EAC5B;cACE,YAAY,EAAEgB,cAAc,KAAK;YACnC,CACF,CAAE;YACFoE,YAAY,EAAEzD,SAAU;YACxBoD,QAAQ,EAAE5B,uBAAwB;YAClCkC,QAAQ,EAAEjC,wBAAyB;YACnC,cAAW;UAAa,CACzB;QAAC,CACC,CAAC;MAEV,KAAKrD,UAAU,CAACyE,QAAQ,CAACc,MAAM;QAC7B,oBACE/E,KAAA,CAAAE,SAAA;UAAAmE,QAAA,gBACEvE,IAAA;YAAKsE,SAAS,EAAC,gBAAgB;YAAAC,QAAA,eAC7BrE,KAAA,CAACT,MAAM;cACL6E,SAAS,EAAC,eAAe;cACzBI,QAAQ,EAAEQ,gBAAgB,IAAI;gBAC5BzD,gCAAgC,CAC9ByD,gBACF,CAAC;cACH,CAAE;cACF1B,KAAK,EAAEjC,eAAgB;cACvB,cAAW,oBAAoB;cAAAgD,QAAA,gBAE/BvE,IAAA;gBAEEwD,KAAK,EAAElE,UAAU,CAAC6F,YAAa;gBAAAZ,QAAA,EAChC;cAED,GAJOjF,UAAU,CAAC6F,YAIV,CAAC,eACTnF,IAAA;gBAEEwD,KAAK,EAAElE,UAAU,CAAC8F,kBAAmB;gBAAAb,QAAA,EACtC;cAED,GAJOjF,UAAU,CAAC8F,kBAIV,CAAC,eACTpF,IAAA;gBAA4BwD,KAAK,EAAElE,UAAU,CAAC+F,EAAG;gBAAAd,QAAA,EAAC;cAElD,GAFajF,UAAU,CAAC+F,EAEhB,CAAC,eACTrF,IAAA;gBAAkCwD,KAAK,EAAElE,UAAU,CAACgG,QAAS;gBAAAf,QAAA,EAAC;cAE9D,GAFajF,UAAU,CAACgG,QAEhB,CAAC;YAAA,CACH;UAAC,CACN,CAAC,eACNtF,IAAA;YAAKsE,SAAS,EAAC,gBAAgB;YAAAC,QAAA,eAC7BvE,IAAA;cACEQ,GAAG,EAAEqB,iBAAkB;cACvByC,SAAS,EAAE3E,UAAU,CAAC,cAAc,EAAE;gBACpC,YAAY,EAAEgB,cAAc,KAAK;cACnC,CAAC,CAAE;cACH6D,SAAS,EAAEzB,wBAAyB;cACpC0B,WAAW,EAAC,OAAO;cACnBC,QAAQ,EAAEnC,CAAC,IAAIO,uBAAuB,CAACP,CAAC,CAACoC,MAAM,CAACnB,KAAK,CAAE;cACvDA,KAAK,EAAElC,SAAU;cACjB,cAAW;YAAa,CACzB;UAAC,CACC,CAAC;QAAA,CACN,CAAC;MAEP,KAAK5B,UAAU,CAACyE,QAAQ,CAACoB,OAAO;QAC9B,oBACEvF,IAAA;UAAKsE,SAAS,EAAC,gBAAgB;UAAAC,QAAA,eAC7BrE,KAAA,CAACT,MAAM;YACL6E,SAAS,EAAC,eAAe;YACzBI,QAAQ,EAAEQ,gBAAgB,IAAI;cAC5BpC,uBAAuB,CAACoC,gBAAgB,CAAC;YAC3C,CAAE;YACF1B,KAAK,EAAElC,SAAU;YACjB,cAAW,aAAa;YAAAiD,QAAA,gBAExBvE,IAAA;cAAQ,cAAW,YAAY;cAAYwD,KAAK,EAAC;YAAE,GAAf,MAAiB,CAAC,eACtDxD,IAAA;cAAmBwD,KAAK,EAAC,MAAM;cAAAe,QAAA,EAAC;YAEhC,GAFY,MAEJ,CAAC,eACTvE,IAAA;cAAoBwD,KAAK,EAAC,OAAO;cAAAe,QAAA,EAAC;YAElC,GAFY,OAEJ,CAAC;UAAA,CACH;QAAC,CACN,CAAC;MAEV;QACE,oBACEvE,IAAA;UAAKsE,SAAS,EAAC,gBAAgB;UAAAC,QAAA,eAC7BvE,IAAA;YACEQ,GAAG,EAAEqB,iBAAkB;YACvByC,SAAS,EAAC,cAAc;YACxBE,SAAS,EAAEzB,wBAAyB;YACpC0B,WAAW,EAAC,OAAO;YACnBC,QAAQ,EAAEnC,CAAC,IAAIO,uBAAuB,CAACP,CAAC,CAACoC,MAAM,CAACnB,KAAK,CAAE;YACvDA,KAAK,EAAElC,SAAU;YACjB,cAAW;UAAa,CACzB;QAAC,CACC,CAAC;IAEZ;EACF,CAAC;EACD,oBACEtB,IAAA,CAACH,iBAAiB;IAChBgB,OAAO,EAAEA,OAAQ;IACjByD,SAAS,EAAE3E,UAAU,CAAC,UAAU,CAAE;IAClCmB,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,CAAA,KAAM;MACfA,UAAS,CAAC,CAAC;MACX8C,WAAW,CAAC,CAAC;IACf,CAAE;IACF7C,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IAAAsD,QAAA,eAEnBrE,KAAA,CAAAE,SAAA;MAAAmE,QAAA,gBACErE,KAAA;QAAKoE,SAAS,EAAC,cAAc;QAAAC,QAAA,gBAC3BrE,KAAA;UACEoE,SAAS,EAAE3E,UAAU,CAAC,kBAAkB,EAAE;YACxC,aAAa,EAAE,CAACmC;UAClB,CAAC,CAAE;UACH0D,OAAO,EAAEA,CAAA,KAAMzD,kBAAkB,CAAC,IAAI,CAAE;UACxC0D,OAAO,EAAEA,CAAA,KAAM1D,kBAAkB,CAAC,IAAI,CAAE;UACxC2D,IAAI,EAAC,OAAO;UAAAnB,QAAA,gBAEZvE,IAAA;YAAOsE,SAAS,EAAC,eAAe;YAACqB,OAAO,EAAEvD,cAAe;YAAAmC,QAAA,EAAC;UAE1D,CAAO,CAAC,eACRvE,IAAA;YAAKsE,SAAS,EAAC,gBAAgB;YAAAC,QAAA,eAC7BvE,IAAA;cACEQ,GAAG,EAAEoB,eAAgB;cACrB,eAAY,gBAAgB;cAC5ByB,IAAI,EAAC,QAAQ;cACbmB,SAAS,EAAEjC,CAAC,IAAI;gBACd,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;kBACrBD,CAAC,CAACE,eAAe,CAAC,CAAC;kBACnBF,CAAC,CAACG,cAAc,CAAC,CAAC;kBAClB9B,eAAe,CAAC,CAAC;gBACnB;cACF,CAAE;cACF0D,SAAS,EAAE3E,UAAU,CAAC,cAAc,EAAE;gBACpC,YAAY,EAAEe,YAAY,KAAK;cACjC,CAAC,CAAE;cACH+D,WAAW,EAAC,YAAY;cACxBC,QAAQ,EAAEkB,KAAK,IAAI;gBACjBzE,sBAAsB,CAACyE,KAAK,CAAC;cAC/B,CAAE;cACFpC,KAAK,EAAE/C,OAAQ;cACfoF,EAAE,EAAEzD;YAAe,CACpB;UAAC,CACC,CAAC,eACNlC,KAAA;YAAKoE,SAAS,EAAC,eAAe;YAAAC,QAAA,GAAC,IAC3B,EAAC,GAAG,EACLrC,EAAE,CAAC4D,IAAI,CAACC,YAAY,CAACC,MAAM,CAAC3F,qBAAqB,EAAE8B,QAAQ,CAAC;UAAA,CAC1D,CAAC,EACLzB,YAAY,iBACXV,IAAA;YAAKsE,SAAS,EAAC,aAAa;YAAAC,QAAA,EAAE7D;UAAY,CAAM,CACjD;QAAA,CACE,CAAC,eACNV,IAAA;UAAKsE,SAAS,EAAC,gBAAgB;UAAAC,QAAA,eAC7BvE,IAAA,CAACT,MAAM;YAAC0G,IAAI,EAAC,OAAO;YAACT,OAAO,EAAEpE,OAAQ;YAAAmD,QAAA,eACpCvE,IAAA,CAACtB,eAAe;cAACwH,IAAI,EAAEvH,OAAQ;cAACwH,KAAK,EAAE;gBAAEC,WAAW,EAAE;cAAI;YAAE,CAAE;UAAC,CACzD;QAAC,CACN,CAAC;MAAA,CACH,CAAC,EACLlF,KAAK,CAACmF,kBAAkB,iBACvBrG,IAAA;QAAKsE,SAAS,EAAC,cAAc;QAAAC,QAAA,eAC3BrE,KAAA;UACEoE,SAAS,EAAE3E,UAAU,CAAC,kBAAkB,EAAE;YACxC,aAAa,EAAEmC;UACjB,CAAC,CAAE;UACH0D,OAAO,EAAEA,CAAA,KAAMzD,kBAAkB,CAAC,KAAK,CAAE;UACzC0D,OAAO,EAAEA,CAAA,KAAM1D,kBAAkB,CAAC,KAAK,CAAE;UACzC2D,IAAI,EAAC,OAAO;UAAAnB,QAAA,gBAEZvE,IAAA;YAAKsE,SAAS,EAAC,eAAe;YAAAC,QAAA,EAAC;UAAW,CAAK,CAAC,eAChDvE,IAAA;YAAKsE,SAAS,EAAC,gBAAgB;YAAAC,QAAA,eAC7BvE,IAAA,CAACP,MAAM;cACL6E,SAAS,EAAC,eAAe;cACzBI,QAAQ,EAAEQ,gBAAgB,IAAI;gBAC5B,IAAMoB,UAAU,GAAGpB,gBAAgB;gBACnC1D,oCAAoC,CAAC8E,UAAU,CAAC;cAClD,CAAE;cACF9C,KAAK,EAAEnC,2BAA4B;cACnC,cAAW,oBAAoB;cAC/BwE,EAAE,EAAC,oBAAoB;cAAAtB,QAAA,EAEtBvC,OAAO,CAACuE,GAAG,CAACC,MAAM,iBACjBxG,IAAA;gBAA0BwD,KAAK,EAAEgD,MAAM,CAACC,IAAK;gBAAAlC,QAAA,EAC1CiC,MAAM,CAACC;cAAI,GADDD,MAAM,CAACC,IAEZ,CACT;YAAC,CACI;UAAC,CACN,CAAC,EAELvC,gBAAgB,CAAC,CAAC,eAEnBhE,KAAA;YAAAqE,QAAA,gBACEvE,IAAA,CAACT,MAAM;cACLmH,OAAO,EAAC,gBAAgB;cACxBR,IAAI,EAAEtH,SAAU;cAChBqH,IAAI,EAAC,OAAO;cACZU,QAAQ,EAAErF,SAAS,KAAK,EAAG;cAC3BkE,OAAO,EAAEA,CAAA,KAAM;gBACb7D,iBAAiB,CAAC,IAAI,CAAC;cACzB;YAAE,CACH,CAAC,eACF3B,IAAA,CAACT,MAAM;cACLmH,OAAO,EAAC,YAAY;cACpBR,IAAI,EAAErH,WAAY;cAClBoH,IAAI,EAAC,OAAO;cACZU,QAAQ,EAAErF,SAAS,KAAK,EAAG;cAC3BkE,OAAO,EAAEA,CAAA,KAAM;gBACb7D,iBAAiB,CAAC,KAAK,CAAC;cAC1B;YAAE,CACH,CAAC;UAAA,CACC,CAAC,EACLhB,cAAc,iBACbX,IAAA;YAAKsE,SAAS,EAAC,aAAa;YAAAC,QAAA,EAAE5D;UAAc,CAAM,CACnD;QAAA,CACE;MAAC,CACH,CACN;IAAA,CACD;EAAC,CACc,CAAC;AAExB,CACF,CAAC;AACDL,OAAO,CAACsG,WAAW,GAAG,SAAS;AAE/B,eAAetG,OAAO","ignoreList":[]}