@deephaven/code-studio 1.10.2-lerna-v9.0 → 1.10.2
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.
- package/build/assets/{AppRoot-Dsp0-nx9.js → AppRoot-BY4a1UaK.js} +6 -6
- package/build/assets/{AppRoot-Dsp0-nx9.js.map → AppRoot-BY4a1UaK.js.map} +1 -1
- package/build/assets/{Chart-P_gTGGZ1.js → Chart-DmqNQtr3.js} +2 -2
- package/build/assets/{Chart-P_gTGGZ1.js.map → Chart-DmqNQtr3.js.map} +1 -1
- package/build/assets/{ControlType-lgZLQmfY.js → ControlType-RBsIk8KS.js} +4 -4
- package/build/assets/{ControlType-lgZLQmfY.js.map → ControlType-RBsIk8KS.js.map} +1 -1
- package/build/assets/{FormatterUtils-C9ixv8yB.js → FormatterUtils-C3xgIs6_.js} +2 -2
- package/build/assets/{FormatterUtils-C9ixv8yB.js.map → FormatterUtils-C3xgIs6_.js.map} +1 -1
- package/build/assets/{Grid-DQPrZJGB.js → Grid-B7dO0Sbi.js} +2 -2
- package/build/assets/{Grid-DQPrZJGB.js.map → Grid-B7dO0Sbi.js.map} +1 -1
- package/build/assets/{GridTokenMouseHandler-X2JErABm.js → GridTokenMouseHandler-Ds5xKqrO.js} +2 -2
- package/build/assets/{GridTokenMouseHandler-X2JErABm.js.map → GridTokenMouseHandler-Ds5xKqrO.js.map} +1 -1
- package/build/assets/{IrisGrid-m82zJTmT.js → IrisGrid-CFqfz-_M.js} +2 -2
- package/build/assets/{IrisGrid-m82zJTmT.js.map → IrisGrid-CFqfz-_M.js.map} +1 -1
- package/build/assets/{IrisGridModel-BWX_u8pv.js → IrisGridModel-CfNBLna8.js} +3 -3
- package/build/assets/{IrisGridModel-BWX_u8pv.js.map → IrisGridModel-CfNBLna8.js.map} +1 -1
- package/build/assets/{IrisGridShortcuts-QN2zgZUQ.js → IrisGridShortcuts-Bw5ADLgT.js} +2 -2
- package/build/assets/{IrisGridShortcuts-QN2zgZUQ.js.map → IrisGridShortcuts-Bw5ADLgT.js.map} +1 -1
- package/build/assets/{IrisGridThemeProvider-DtrPDGfJ.js → IrisGridThemeProvider-CggmgZiA.js} +2 -2
- package/build/assets/{IrisGridThemeProvider-DtrPDGfJ.js.map → IrisGridThemeProvider-CggmgZiA.js.map} +1 -1
- package/build/assets/{LocalWorkspaceStorage-C6dxwi4z.js → LocalWorkspaceStorage-DXAI74vd.js} +2 -2
- package/build/assets/{LocalWorkspaceStorage-C6dxwi4z.js.map → LocalWorkspaceStorage-DXAI74vd.js.map} +1 -1
- package/build/assets/{MarkdownEditor-B4WFJDBT.js → MarkdownEditor-CjiUT8XD.js} +2 -2
- package/build/assets/{MarkdownEditor-B4WFJDBT.js.map → MarkdownEditor-CjiUT8XD.js.map} +1 -1
- package/build/assets/{MarkdownNotebook-Bw-fDcJ8.js → MarkdownNotebook-CsCP6Muy.js} +2 -2
- package/build/assets/{MarkdownNotebook-Bw-fDcJ8.js.map → MarkdownNotebook-CsCP6Muy.js.map} +1 -1
- package/build/assets/{MissingPartitionError-Cw7iLwy0.js → MissingPartitionError-DXkc6F4C.js} +2 -2
- package/build/assets/{MissingPartitionError-Cw7iLwy0.js.map → MissingPartitionError-DXkc6F4C.js.map} +1 -1
- package/build/assets/{MockChartModel-C5m_XRVw.js → MockChartModel-B0Gv2sr1.js} +2 -2
- package/build/assets/{MockChartModel-C5m_XRVw.js.map → MockChartModel-B0Gv2sr1.js.map} +1 -1
- package/build/assets/{StyleGuideRoot-DGm-hysw.js → StyleGuideRoot-BAYFLFTM.js} +2 -2
- package/build/assets/{StyleGuideRoot-DGm-hysw.js.map → StyleGuideRoot-BAYFLFTM.js.map} +1 -1
- package/build/assets/{index-LXmN419B.js → index-Bjvh6jhx.js} +4 -4
- package/build/assets/{index-LXmN419B.js.map → index-Bjvh6jhx.js.map} +1 -1
- package/build/assets/{index-CqIl8EDR.js → index-CVle8e1T.js} +2 -2
- package/build/assets/{index-CqIl8EDR.js.map → index-CVle8e1T.js.map} +1 -1
- package/build/assets/{index-DmVB6hX1.js → index-Cwc_E41j.js} +3 -3
- package/build/assets/{index-DmVB6hX1.js.map → index-Cwc_E41j.js.map} +1 -1
- package/build/index.html +2 -2
- package/package.json +31 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StyleGuideRoot-DGm-hysw.js","sources":["../../../grid/dist/MockGridModel.js","../../../grid/dist/MockTreeGridModel.js","../../../grid/dist/StaticDataGridModel.js","../../../grid/dist/ViewportDataGridModel.js","../../../grid/dist/MockDataBarGridModel.js","../../src/styleguide/utils.ts","../../src/styleguide/SampleSection.tsx","../../src/styleguide/Buttons.tsx","../../src/styleguide/Charts.tsx","../../src/styleguide/colorUtils.ts","../../src/styleguide/hooks.ts","../../src/styleguide/Swatch.tsx","../../src/styleguide/Colors.tsx","../../src/styleguide/ContextMenus.tsx","../../src/styleguide/Dialog.tsx","../../src/styleguide/DropdownMenus.tsx","../../src/styleguide/StyleConstants.tsx","../../src/styleguide/Editors.tsx","../../src/styleguide/MockIrisGridTreeModel.ts","../../src/styleguide/grid-examples/StaticExample.tsx","../../src/styleguide/grid-examples/QuadrillionExample.tsx","../../src/styleguide/grid-examples/TreeExample.tsx","../../src/styleguide/grid-examples/AsyncExample.tsx","../../src/styleguide/grid-examples/DataBarExample.tsx","../../src/styleguide/Grids.tsx","../../src/styleguide/Icons.tsx","../../src/styleguide/Inputs.tsx","../../src/styleguide/SelectValueListInput.tsx","../../src/styleguide/ItemListInput.tsx","../../src/styleguide/ItemListInputs.tsx","../../src/styleguide/Modals.tsx","../../src/styleguide/Progress.tsx","../../src/styleguide/TimeSliderInputs.tsx","../../src/styleguide/Tooltips.tsx","../../src/styleguide/Toast.tsx","../../src/styleguide/Typography.tsx","../../src/styleguide/DraggableListInput.tsx","../../src/styleguide/DraggableLists.tsx","../../src/styleguide/Navigations.tsx","../../src/styleguide/ThemeColors.tsx","../../src/styleguide/constants.ts","../../src/styleguide/SpectrumComponents.tsx","../../src/styleguide/SamplesMenu.tsx","../../src/styleguide/GotoTopButton.tsx","../../src/styleguide/GoldenLayout.tsx","../../src/styleguide/RandomAreaPlotAnimation.tsx","../../src/styleguide/SpectrumComparison.tsx","../../src/styleguide/Pickers.tsx","../../src/styleguide/ListViews.tsx","../../src/styleguide/ErrorViews.tsx","../../src/styleguide/XComponents.tsx","../../src/styleguide/CheckboxGroups.tsx","../../src/styleguide/StyleGuide.tsx","../../src/styleguide/StyleGuideInit.tsx","../../src/styleguide/StyleGuideRoot.tsx"],"sourcesContent":["function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport GridModel from \"./GridModel.js\";\nimport GridRange from \"./GridRange.js\";\n/**\n * Mock model implementing GridModel for testing out grid functionality\n */\nclass MockGridModel extends GridModel {\n constructor() {\n var {\n rowCount = 1000000000,\n columnCount = 100,\n floatingTopRowCount = 0,\n floatingBottomRowCount = 0,\n floatingLeftColumnCount = 0,\n floatingRightColumnCount = 0,\n isEditable = false,\n editedData = []\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super();\n _defineProperty(this, \"numRows\", void 0);\n _defineProperty(this, \"numColumns\", void 0);\n _defineProperty(this, \"floatingTop\", void 0);\n _defineProperty(this, \"floatingBottom\", void 0);\n _defineProperty(this, \"floatingLeft\", void 0);\n _defineProperty(this, \"floatingRight\", void 0);\n _defineProperty(this, \"editable\", void 0);\n _defineProperty(this, \"editedData\", void 0);\n this.numRows = rowCount;\n this.numColumns = columnCount;\n this.floatingTop = floatingTopRowCount;\n this.floatingBottom = floatingBottomRowCount;\n this.floatingLeft = floatingLeftColumnCount;\n this.floatingRight = floatingRightColumnCount;\n this.editable = isEditable;\n this.editedData = editedData;\n }\n get rowCount() {\n return this.numRows;\n }\n get columnCount() {\n return this.numColumns;\n }\n get floatingTopRowCount() {\n return this.floatingTop;\n }\n get floatingBottomRowCount() {\n return this.floatingBottom;\n }\n get floatingLeftColumnCount() {\n return this.floatingLeft;\n }\n get floatingRightColumnCount() {\n return this.floatingRight;\n }\n get isEditable() {\n return this.editable;\n }\n textForCell(column, row) {\n var _this$editedData$colu, _this$editedData$colu2;\n return (_this$editedData$colu = (_this$editedData$colu2 = this.editedData[column]) === null || _this$editedData$colu2 === void 0 ? void 0 : _this$editedData$colu2[row]) !== null && _this$editedData$colu !== void 0 ? _this$editedData$colu : \"\".concat(column, \",\").concat(row);\n }\n colorForCell(column, row, theme) {\n return theme.textColor;\n }\n textForColumnHeader(column) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return \"\".concat(column);\n }\n textForRowHeader(row) {\n return \"\".concat(row);\n }\n textForRowFooter(row) {\n return \"\".concat(row);\n }\n setValueForCell(column, row, value) {\n var _this = this;\n return _asyncToGenerator(function* () {\n if (_this.editedData[column] == null) {\n _this.editedData[column] = [];\n }\n _this.editedData[column][row] = \"\".concat(value);\n })();\n }\n setValueForRanges(ranges, text) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n GridRange.forEachCell(ranges, (x, y) => {\n _this2.setValueForCell(x, y, text);\n });\n })();\n }\n setValues(edits) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n for (var i = 0; i < edits.length; i += 1) {\n var _edit$column, _edit$row;\n var edit = edits[i];\n _this3.setValueForCell((_edit$column = edit.column) !== null && _edit$column !== void 0 ? _edit$column : edit.x, (_edit$row = edit.row) !== null && _edit$row !== void 0 ? _edit$row : edit.y, edit.text);\n }\n })();\n }\n editValueForCell(column, row) {\n return this.textForCell(column, row);\n }\n isValidForCell(column, row, value) {\n return true;\n }\n isEditableRange(range) {\n return this.isEditable;\n }\n delete(ranges) {\n throw new Error('Method not implemented.');\n }\n}\nexport default MockGridModel;\n//# sourceMappingURL=MockGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport MockGridModel from \"./MockGridModel.js\";\nimport memoizeClear from \"./memoizeClear.js\";\n/**\n * A class to mock a tree model so can test out tree models.\n * Whenever a row is expanded, it creates a child model for that row, which can then make a child for those rows, etc.\n */\nclass MockTreeGridModel extends MockGridModel {\n constructor() {\n var {\n rowCount = MockTreeGridModel.DEFAULT_ROW_COUNT,\n columnCount = MockTreeGridModel.DEFAULT_COLUMN_COUNT,\n children: _children = new Map(),\n childRowCount: _childRowCount = Math.ceil(Math.max(MockTreeGridModel.MIN_CHILD_ROW_COUNT, rowCount * MockTreeGridModel.DEFAULT_CHILD_ROW_COUNT_FACTOR)),\n maxDepth: _maxDepth = MockTreeGridModel.MAX_DEPTH\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super({\n rowCount,\n columnCount\n });\n _defineProperty(this, \"children\", void 0);\n _defineProperty(this, \"childRowCount\", void 0);\n _defineProperty(this, \"maxDepth\", void 0);\n /**\n * Returns the map key and the offsetRow given the provided children and row index.\n * If the returned key is null, then this offset row is within this model.\n * Only returning the key instead of the model so that memoize doesn't cache a bunch of the children models after they've been deleted (collapsed).\n */\n _defineProperty(this, \"getCachedModelRowOffset\", memoizeClear((children, row) => {\n var key = null;\n var offsetRow = row;\n // Need to iterate through the map in order... sort it first\n var sortedEntries = [...children].sort((a, b) => a[0] - b[0]);\n for (var i = 0; i < sortedEntries.length; i += 1) {\n var [childRow, childModel] = sortedEntries[i];\n if (offsetRow <= childRow) {\n break;\n }\n var childRowCount = childModel.rowCount;\n if (offsetRow <= childRow + childRowCount) {\n key = childRow;\n offsetRow = offsetRow - childRow - 1;\n break;\n }\n offsetRow -= childRowCount;\n }\n return {\n key,\n offsetRow\n };\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedTextForRowHeader\", memoizeClear((children, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return \"\".concat(key, \".\").concat(model.textForRowHeader(offsetRow));\n }\n }\n return \"\".concat(offsetRow);\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedTextForCell\", memoizeClear((children, column, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return \"\".concat(key, \".\").concat(model.textForCell(column, offsetRow));\n }\n }\n return \"\".concat(column, \",\").concat(offsetRow);\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedIsRowExpandable\", memoizeClear((children, row, maxDepth) => {\n var depth = this.getCachedDepthForRow(children, row);\n return depth < maxDepth;\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedIsRowExpanded\", memoizeClear((children, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return model.isRowExpanded(offsetRow);\n }\n }\n return children.has(offsetRow);\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedDepthForRow\", memoizeClear((children, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return model.depthForRow(offsetRow) + 1;\n }\n }\n return 0;\n }, {\n max: 10000\n }));\n this.children = _children;\n this.childRowCount = _childRowCount;\n this.maxDepth = _maxDepth;\n }\n textForCell(column, row) {\n return this.getCachedTextForCell(this.children, column, row);\n }\n textForRowHeader(row) {\n return this.getCachedTextForRowHeader(this.children, row);\n }\n isRowMovable(row) {\n return false;\n }\n get hasExpandableRows() {\n return true;\n }\n get isExpandAllAvailable() {\n return false;\n }\n get floatingBottomRowCount() {\n return 0;\n }\n isRowExpandable(row) {\n return this.getCachedIsRowExpandable(this.children, row, this.maxDepth);\n }\n isRowExpanded(row) {\n return this.getCachedIsRowExpanded(this.children, row);\n }\n setRowExpanded(row, isExpanded) {\n var expandDescendants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(this.children, row);\n\n // We always set a new map so that our memoize functions work properly\n var children = new Map(this.children);\n if (key != null) {\n var model = this.children.get(key);\n if (model !== undefined) {\n var {\n rowCount: originalChildRowCount\n } = model;\n model.setRowExpanded(offsetRow, isExpanded, expandDescendants);\n this.numRows += model.rowCount - originalChildRowCount;\n }\n } else if (!isExpanded) {\n var childModel = children.get(offsetRow);\n if (childModel !== undefined) {\n this.numRows -= childModel.rowCount;\n children.delete(offsetRow);\n }\n } else {\n var child = new MockTreeGridModel({\n rowCount: this.childRowCount,\n columnCount: this.numColumns\n });\n children.set(offsetRow, child);\n this.numRows += child.rowCount;\n }\n this.children = children;\n }\n expandAll() {\n throw new Error('Expand all not implemented.');\n }\n collapseAll() {\n throw new Error('Collapse all not implemented.');\n }\n depthForRow(row) {\n return this.getCachedDepthForRow(this.children, row);\n }\n}\n_defineProperty(MockTreeGridModel, \"DEFAULT_ROW_COUNT\", 1000000000);\n_defineProperty(MockTreeGridModel, \"DEFAULT_COLUMN_COUNT\", 100);\n/** How many rows a child tree should have related to the parent. Eg. if parent has 10000 rows, child will have 100 */\n_defineProperty(MockTreeGridModel, \"DEFAULT_CHILD_ROW_COUNT_FACTOR\", 0.01);\n_defineProperty(MockTreeGridModel, \"MIN_CHILD_ROW_COUNT\", 10);\n_defineProperty(MockTreeGridModel, \"MAX_DEPTH\", 10);\nexport default MockTreeGridModel;\n//# sourceMappingURL=MockTreeGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport GridModel from \"./GridModel.js\";\n/**\n * A simple model that displays static data\n */\nclass StaticDataGridModel extends GridModel {\n /**\n * Create a model using the static data provided\n * @param data Row data to display. First dimension is the number of rows, second dimension is the value for each column. Row/column count is derived from the data, and it is stringified for display.\n * @param columnHeaders Optional names for the column headers\n */\n constructor(data, columnHeaders) {\n var _columnHeaders$length;\n super();\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"columnHeaders\", void 0);\n _defineProperty(this, \"numberOfColumns\", void 0);\n this.data = data;\n this.numberOfColumns = Math.max(...data.map(row => row.length), (_columnHeaders$length = columnHeaders === null || columnHeaders === void 0 ? void 0 : columnHeaders.length) !== null && _columnHeaders$length !== void 0 ? _columnHeaders$length : 0);\n this.columnHeaders = columnHeaders;\n }\n get rowCount() {\n return this.data.length;\n }\n get columnCount() {\n return this.numberOfColumns;\n }\n textForCell(column, row) {\n var _this$data$row;\n return \"\".concat((_this$data$row = this.data[row]) === null || _this$data$row === void 0 ? void 0 : _this$data$row[column]);\n }\n textForColumnHeader(column) {\n var _this$columnHeaders$c, _this$columnHeaders;\n return (_this$columnHeaders$c = (_this$columnHeaders = this.columnHeaders) === null || _this$columnHeaders === void 0 ? void 0 : _this$columnHeaders[column]) !== null && _this$columnHeaders$c !== void 0 ? _this$columnHeaders$c : '';\n }\n}\nexport default StaticDataGridModel;\n//# sourceMappingURL=StaticDataGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable class-methods-use-this */\nimport GridModel from \"./GridModel.js\";\n/**\n * A simple model that displays a viewport of data\n */\nclass ViewportDataGridModel extends GridModel {\n /**\n * Model for fetching data asynchonously. Set the viewported data when data is fetched.\n * @param columnCount Number of columns\n * @param rowCount Number of rows\n */\n constructor(columnCount, rowCount) {\n super();\n _defineProperty(this, \"numberOfColumns\", void 0);\n _defineProperty(this, \"numberOfRows\", void 0);\n _defineProperty(this, \"viewportData\", void 0);\n this.numberOfColumns = columnCount;\n this.numberOfRows = rowCount;\n }\n get columnCount() {\n return this.numberOfColumns;\n }\n get rowCount() {\n return this.numberOfRows;\n }\n textForCell(column, row) {\n var _this$viewportData$ro, _this$viewportData, _this$viewportData$co, _this$viewportData2, _this$viewportData$da, _this$viewportData3;\n var viewportRow = row - ((_this$viewportData$ro = (_this$viewportData = this.viewportData) === null || _this$viewportData === void 0 ? void 0 : _this$viewportData.rowOffset) !== null && _this$viewportData$ro !== void 0 ? _this$viewportData$ro : 0);\n var viewportColumn = column - ((_this$viewportData$co = (_this$viewportData2 = this.viewportData) === null || _this$viewportData2 === void 0 ? void 0 : _this$viewportData2.columnOffset) !== null && _this$viewportData$co !== void 0 ? _this$viewportData$co : 0);\n return \"\".concat((_this$viewportData$da = (_this$viewportData3 = this.viewportData) === null || _this$viewportData3 === void 0 || (_this$viewportData3 = _this$viewportData3.data[viewportRow]) === null || _this$viewportData3 === void 0 ? void 0 : _this$viewportData3[viewportColumn]) !== null && _this$viewportData$da !== void 0 ? _this$viewportData$da : '');\n }\n textForColumnHeader(column) {\n return \"\".concat(column);\n }\n textForRowHeader(row) {\n return \"\".concat(row);\n }\n}\nexport default ViewportDataGridModel;\n//# sourceMappingURL=ViewportDataGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport GridModel from \"./GridModel.js\";\nimport GridTheme from \"./GridTheme.js\";\nvar DEFAULT_AXIS = 'proportional';\nvar DEFAULT_POSITIVE_COLOR = GridTheme.positiveBarColor;\nvar DEFAULT_NEGATIVE_COLOR = GridTheme.negativeBarColor;\nvar DEFAULT_VALUE_PLACEMENT = 'beside';\nvar DEFAULT_DIRECTION = 'LTR';\nvar DEFAULT_TEXT_ALIGNMENT = 'right';\nfunction isArrayOfNumbers(value) {\n return Array.isArray(value) && value.every(item => typeof item === 'number');\n}\nclass MockDataBarGridModel extends GridModel {\n constructor(data) {\n var columnAxes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Map();\n var positiveColors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Map();\n var negativeColors = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();\n var valuePlacements = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : new Map();\n var opacities = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : new Map();\n var directions = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new Map();\n var textAlignments = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : new Map();\n var markers = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : new Map();\n super();\n _defineProperty(this, \"numberOfColumns\", void 0);\n _defineProperty(this, \"numberOfRows\", void 0);\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"columnMins\", void 0);\n _defineProperty(this, \"columnMaxs\", void 0);\n _defineProperty(this, \"columnAxes\", void 0);\n _defineProperty(this, \"valuePlacements\", void 0);\n _defineProperty(this, \"directions\", void 0);\n _defineProperty(this, \"positiveColors\", void 0);\n _defineProperty(this, \"negativeColors\", void 0);\n // Opacities should be between 0 and 1\n _defineProperty(this, \"opacities\", void 0);\n _defineProperty(this, \"textAlignments\", void 0);\n _defineProperty(this, \"markers\", void 0);\n this.positiveColors = positiveColors;\n this.negativeColors = negativeColors;\n this.data = data;\n this.columnAxes = columnAxes;\n this.valuePlacements = valuePlacements;\n this.opacities = opacities;\n this.directions = directions;\n this.textAlignments = textAlignments;\n this.markers = markers;\n this.numberOfRows = Math.max(...data.map(row => row.length));\n this.numberOfColumns = data.length;\n this.columnMins = new Map();\n this.columnMaxs = new Map();\n for (var i = 0; i < data.length; i += 1) {\n var column = data[i];\n if (isArrayOfNumbers(column)) {\n this.columnMins.set(i, Math.min(...column));\n this.columnMaxs.set(i, Math.max(...column));\n }\n }\n }\n get rowCount() {\n return this.numberOfRows;\n }\n get columnCount() {\n return this.numberOfColumns;\n }\n textForCell(column, row) {\n var _this$data$column;\n return \"\".concat((_this$data$column = this.data[column]) === null || _this$data$column === void 0 ? void 0 : _this$data$column[row]);\n }\n textForColumnHeader(column) {\n return \"\".concat(column);\n }\n textAlignForCell(column, row) {\n var _this$textAlignments$;\n return (_this$textAlignments$ = this.textAlignments.get(column)) !== null && _this$textAlignments$ !== void 0 ? _this$textAlignments$ : DEFAULT_TEXT_ALIGNMENT;\n }\n renderTypeForCell(column, row) {\n if (column < 20) {\n return 'dataBar';\n }\n return column % 2 === row % 2 ? 'dataBar' : 'text';\n }\n dataBarOptionsForCell(column, row) {\n var _this$columnAxes$get, _this$valuePlacements, _this$directions$get, _this$positiveColors$, _this$negativeColors$, _this$data$column2, _this$markers$get;\n var columnMin = getOrThrow(this.columnMins, column);\n var columnMax = getOrThrow(this.columnMaxs, column);\n var axis = (_this$columnAxes$get = this.columnAxes.get(column)) !== null && _this$columnAxes$get !== void 0 ? _this$columnAxes$get : DEFAULT_AXIS;\n var valuePlacement = (_this$valuePlacements = this.valuePlacements.get(column)) !== null && _this$valuePlacements !== void 0 ? _this$valuePlacements : DEFAULT_VALUE_PLACEMENT;\n var opacity = this.opacities.get(column);\n if (opacity == null || opacity > 1) {\n opacity = 1;\n } else if (opacity < 0) {\n opacity = 0;\n }\n var direction = (_this$directions$get = this.directions.get(column)) !== null && _this$directions$get !== void 0 ? _this$directions$get : DEFAULT_DIRECTION;\n var positiveColor = (_this$positiveColors$ = this.positiveColors.get(column)) !== null && _this$positiveColors$ !== void 0 ? _this$positiveColors$ : DEFAULT_POSITIVE_COLOR;\n var negativeColor = (_this$negativeColors$ = this.negativeColors.get(column)) !== null && _this$negativeColors$ !== void 0 ? _this$negativeColors$ : DEFAULT_NEGATIVE_COLOR;\n var value = Number((_this$data$column2 = this.data[column]) === null || _this$data$column2 === void 0 ? void 0 : _this$data$column2[row]);\n var color = value >= 0 ? positiveColor : negativeColor;\n var markers = (_this$markers$get = this.markers.get(column)) !== null && _this$markers$get !== void 0 ? _this$markers$get : [];\n return {\n columnMin,\n columnMax,\n axis,\n color,\n valuePlacement,\n opacity,\n markers,\n direction,\n value\n };\n }\n}\nexport default MockDataBarGridModel;\n//# sourceMappingURL=MockDataBarGridModel.js.map","import { createElement, useCallback, useEffect, useState } from 'react';\nimport cl from 'classnames';\nimport {\n Item,\n type ItemElement,\n type NormalizedItem,\n} from '@deephaven/components';\nimport { dh as dhIcons } from '@deephaven/icons';\n\nexport const ISOLATED_SECTION_QUERY_CLASS = 'isolated-section-query';\nexport const SAMPLE_SECTION_CLASS = 'sample-section';\n\n/**\n * Generate a given number of `Item` elements.\n */\nexport function* generateItemElements(\n start: number,\n end: number\n): Generator<ItemElement> {\n const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n const len = letters.length;\n\n for (let i = start; i <= end; i += 1) {\n const charI = i % len;\n let suffix = String(Math.floor(i / len));\n if (suffix === '0') {\n suffix = '';\n }\n const letter = letters[charI];\n const key = `${letter}${suffix}`;\n const content = `${letter.repeat(3)}${suffix}`;\n\n // eslint-disable-next-line react/no-children-prop\n yield createElement(Item, {\n key,\n textValue: content,\n children: content,\n });\n }\n}\n\n/**\n * Generate a given number of NormalizedItems.\n * @param count The number of items to generate\n */\nexport function* generateNormalizedItems(\n count: number,\n include: { descriptions?: boolean; icons?: boolean } = {}\n): Generator<NormalizedItem> {\n const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n const len = letters.length;\n\n const iconKeys = Object.keys(dhIcons);\n\n for (let i = 0; i < count; i += 1) {\n const charI = i % len;\n let suffix = String(Math.floor(i / len));\n if (suffix === '0') {\n suffix = '';\n }\n const letter = letters[charI];\n const key = `${letter}${suffix}`;\n\n const icon =\n include.icons === true ? iconKeys[i % iconKeys.length] : undefined;\n\n const description =\n include.descriptions === true ? `Description ${key}` : undefined;\n\n const content = icon ?? `${letter.repeat(3)}${suffix}`;\n\n yield {\n key,\n item: {\n key: (i + 1) * 100,\n content,\n textValue: content,\n description,\n icon,\n },\n };\n }\n}\n\n/**\n * Pseudo random number generator with seed so we get reproducible output.\n * This is necessary in order for e2e tests to work.\n */\nexport function* pseudoRandomWithSeed(\n seed = 1\n): Generator<number, void, never> {\n while (true) {\n // eslint-disable-next-line no-param-reassign\n seed = (seed * 16807) % 2147483647;\n yield seed / 2147483647;\n }\n}\n\n/**\n * If query string isolatedSection=true, return the current location hash.\n * Otherwise ''\n */\nfunction getIsolatedSectionHash() {\n const isolateSection = window.location.search.includes('isolateSection=true');\n return isolateSection ? window.location.hash.replace(/^#/, '') : '';\n}\n\n/**\n * If query string isolatedSection=true, return the current location hash.\n * Otherwise ''. Updates when the hash changes.\n */\nexport function useIsolateSectionHash(): string {\n const [hash, setHash] = useState(getIsolatedSectionHash);\n\n useEffect(() => {\n const hashChangeHandler = () => setHash(getIsolatedSectionHash());\n\n window.addEventListener('hashchange', hashChangeHandler);\n\n return () => window.removeEventListener('hashchange', hashChangeHandler);\n }, []);\n\n return hash;\n}\n\n/**\n * Returns a callback that will generate pseudo random numbers based on the\n * given seed.\n * @param seed\n */\nexport function useSeededRandomNumberCallback(seed = 1): () => number {\n const [randomGenerator] = useState(() => pseudoRandomWithSeed(seed));\n\n return useCallback(() => {\n const result = randomGenerator.next();\n\n if (result.done === true) {\n throw new Error('Random number generator unexpectedly finished');\n }\n\n return result.value;\n }, [randomGenerator]);\n}\n\nexport function getSectionIdFromName(name: string): string {\n return `${SAMPLE_SECTION_CLASS}-${name\n .toLocaleLowerCase()\n .replaceAll(' ', '-')}`;\n}\n\n/**\n * Return id and className props for a sample section. Class\n * names generated by this util are used by e2e tests to take snapshots of\n * styleguide sections.\n * @param name Name of the section\n * @param classNames Optional list of class names to include\n */\nexport function sampleSectionIdAndClasses(\n name: string,\n classNames: string[] = []\n): { id: string; className: string } {\n const id = getSectionIdFromName(name);\n\n const className = cl(SAMPLE_SECTION_CLASS, ...classNames);\n\n return {\n id,\n className,\n };\n}\n\n/**\n * Return id and UNSAFE_className props for a sample section. Class\n * names generated by this util are used by e2e tests to take snapshots of\n * styleguide sections.\n * @param name Name of the section\n * @param classNames Optional list of class names to include\n */\nexport function sampleSectionIdAndClassesSpectrum(\n name: string,\n classNames: string[] = []\n): { id: string; UNSAFE_className: string } {\n const { id, className } = sampleSectionIdAndClasses(name, classNames);\n\n return {\n id,\n UNSAFE_className: className,\n };\n}\n","import { type Flex, type Grid, type View } from '@deephaven/components';\nimport type { StyleProps } from '@react-types/shared';\nimport React, { type CSSProperties, type ReactNode } from 'react';\nimport {\n getSectionIdFromName,\n sampleSectionIdAndClasses,\n sampleSectionIdAndClassesSpectrum,\n useIsolateSectionHash,\n} from './utils';\n\nexport interface SampleSectionProps extends StyleProps {\n name: string;\n className?: string;\n component?: 'div' | typeof Flex | typeof Grid | typeof View;\n style?: CSSProperties;\n children: ReactNode;\n}\n\nexport function SampleSection({\n name,\n className = '',\n component: Component = 'div',\n ...styleProps\n}: SampleSectionProps): JSX.Element | null {\n const hash = useIsolateSectionHash();\n const sectionId = getSectionIdFromName(name);\n const shouldRender = hash === '' || hash === sectionId;\n\n if (!shouldRender) {\n return null;\n }\n\n const sectionIdAndClasses =\n Component === 'div'\n ? sampleSectionIdAndClasses\n : sampleSectionIdAndClassesSpectrum;\n\n return (\n <Component\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...sectionIdAndClasses(name, [className])}\n />\n );\n}\n\nexport default SampleSection;\n","import React, { Component, type ReactElement } from 'react';\nimport {\n Button,\n SocketedButton,\n Flex,\n ButtonGroup,\n} from '@deephaven/components';\n\nimport { dhTruck } from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\nfunction noOp(): void {\n return undefined;\n}\n\ninterface ButtonsState {\n toggle: boolean;\n}\nclass Buttons extends Component<Record<string, never>, ButtonsState> {\n static renderButtons(): ReactElement {\n return (\n <>\n <h5>Button Kinds</h5>\n <SampleSection name=\"buttons-regular\" style={{ padding: '1rem 0' }}>\n <ButtonGroup>\n <Button kind=\"primary\" onClick={noOp}>\n Primary\n </Button>\n <Button kind=\"secondary\" onClick={noOp}>\n Secondary\n </Button>\n <Button kind=\"tertiary\" onClick={noOp}>\n Tertiary\n </Button>\n <Button kind=\"success\" onClick={noOp}>\n Success\n </Button>\n <Button kind=\"danger\" onClick={noOp}>\n Danger\n </Button>\n <Button kind=\"inline\" onClick={noOp}>\n Inline\n </Button>\n <Button kind=\"ghost\" onClick={noOp}>\n Ghost\n </Button>\n </ButtonGroup>\n </SampleSection>\n </>\n );\n }\n\n static renderLinks(): ReactElement {\n const levelMap = {\n primary: 'accent',\n secondary: 'neutral',\n success: 'positive',\n info: 'info',\n warning: 'notice',\n danger: 'negative',\n };\n\n return (\n <SampleSection name=\"links\" style={{ paddingTop: '1rem' }}>\n <h5>Links</h5>\n <Flex gap=\"1rem\">\n {Object.entries(levelMap).map(([level, semantic]) => (\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\n <a key={level} className={`text-${level}`}>\n {level} ({semantic})\n </a>\n ))}\n </Flex>\n </SampleSection>\n );\n }\n\n static renderSocketedButtons(): ReactElement {\n return (\n <SampleSection name=\"buttons-socketed\">\n <h5>Socketed Buttons (for linker)</h5>\n <ButtonGroup marginBottom=\"1rem\">\n <SocketedButton onClick={noOp}>Unlinked</SocketedButton>\n <SocketedButton isLinked onClick={noOp}>\n Linked\n </SocketedButton>\n <SocketedButton isLinkedSource onClick={noOp}>\n Linked Source\n </SocketedButton>\n <SocketedButton isLinked isInvalid onClick={noOp}>\n Error\n </SocketedButton>\n <SocketedButton disabled onClick={noOp}>\n Disabled\n </SocketedButton>\n </ButtonGroup>\n </SampleSection>\n );\n }\n\n constructor(props: Record<string, never>) {\n super(props);\n\n this.state = {\n toggle: true,\n };\n }\n\n renderInlineButtons(): ReactElement {\n const { toggle } = this.state;\n\n return (\n <SampleSection name=\"buttons-inline\" style={{ padding: '1rem 0' }}>\n <h5>Inline Buttons</h5>\n Regular btn-inline:\n <Button\n className=\"mx-2\"\n kind=\"inline\"\n icon={dhTruck}\n tooltip=\"test\"\n onClick={noOp}\n />\n Toggle button (class active):\n <Button\n className=\"mx-2\"\n onClick={() => {\n this.setState({ toggle: !toggle });\n }}\n active={toggle}\n kind=\"inline\"\n icon={dhTruck}\n tooltip=\"test\"\n />\n Disabled:\n <Button className=\"mx-2\" kind=\"inline\" disabled onClick={noOp}>\n Disabled\n </Button>\n With Text:\n <Button className=\"mx-2\" kind=\"inline\" icon={dhTruck} onClick={noOp}>\n <span>Text Button</span>\n </Button>\n <br />\n <br />\n <span>btn-link-icon (no text):</span>\n <Button kind=\"ghost\" icon={dhTruck} tooltip=\"test\" onClick={noOp} />\n <span className=\"mx-2\">btn-link:</span>\n <Button kind=\"ghost\" onClick={noOp}>\n Text Button\n </Button>\n <span className=\"mx-2\">btn-link (text w/ optional with icon):</span>\n <Button kind=\"ghost\" icon={dhTruck} onClick={noOp}>\n Text Button\n </Button>\n </SampleSection>\n );\n }\n\n render(): React.ReactElement {\n const buttons = Buttons.renderButtons();\n const inlineButtons = this.renderInlineButtons();\n const socketedButtons = Buttons.renderSocketedButtons();\n const links = Buttons.renderLinks();\n\n return (\n <div>\n <h2 className=\"ui-title\">Buttons</h2>\n <div style={{ padding: '1rem 0' }}>\n {buttons}\n {inlineButtons}\n {socketedButtons}\n {links}\n </div>\n </div>\n );\n }\n}\n\nexport default Buttons;\n","import React, { type ReactElement, useState } from 'react';\nimport { Chart, type ChartModel, MockChartModel } from '@deephaven/chart';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useSeededRandomNumberCallback } from './utils';\nimport SampleSection from './SampleSection';\n\nfunction Charts(): ReactElement {\n const dh = useApi();\n\n MockChartModel.random = useSeededRandomNumberCallback();\n\n const [model] = useState(() => new MockChartModel(dh));\n\n return (\n <SampleSection name=\"charts\">\n <h2 className=\"ui-title\">Chart</h2>\n <div style={{ height: 500 }}>\n <Chart model={model as ChartModel} />\n </div>\n </SampleSection>\n );\n}\n\nexport default Charts;\n","import { getExpressionRanges } from '@deephaven/components';\nimport { ColorUtils } from '@deephaven/utils';\n\nexport const INVALID_COLOR_BORDER_STYLE = '2px solid var(--dh-color-notice-bg)';\n\n// Group names are extracted from var names via a regex capture group. Most of\n// them work pretty well, but some need to be remapped to a more appropriate\n// group.\nconst REASSIGN_VARIABLE_GROUPS: Record<string, string> = {\n '--dh-color-black': 'gray',\n '--dh-color-white': 'gray',\n // Semantic\n '--dh-color-border': 'General',\n '--dh-color-bg': 'General',\n '--dh-color-surface-bg': 'General',\n '--dh-color-fg': 'General',\n '--dh-color-content-bg': 'General',\n '--dh-color-subdued-content-bg': 'General',\n '--dh-color-dropshadow': 'General',\n '--dh-color-keyboard-selected-bg': 'Misc',\n '--dh-color-hover-border': 'Misc',\n '--dh-color-visual-positive': 'Visual Status',\n '--dh-color-visual-negative': 'Visual Status',\n '--dh-color-visual-notice': 'Visual Status',\n '--dh-color-visual-info': 'Visual Status',\n '--dh-color-gray-bg': 'Default Background',\n '--dh-color-red-bg': 'Default Background',\n '--dh-color-orange-bg': 'Default Background',\n '--dh-color-yellow-bg': 'Default Background',\n '--dh-color-chartreuse-bg': 'Default Background',\n '--dh-color-celery-bg': 'Default Background',\n '--dh-color-green-bg': 'Default Background',\n '--dh-color-seafoam-bg': 'Default Background',\n '--dh-color-cyan-bg': 'Default Background',\n '--dh-color-blue-bg': 'Default Background',\n '--dh-color-indigo-bg': 'Default Background',\n '--dh-color-purple-bg': 'Default Background',\n '--dh-color-fuchsia-bg': 'Default Background',\n '--dh-color-magenta-bg': 'Default Background',\n // Editor\n '--dh-color-editor-bg': 'editor',\n '--dh-color-editor-fg': 'editor',\n '--dh-color-editor-context-menu-bg': 'menus',\n '--dh-color-editor-context-menu-fg': 'menus',\n '--dh-color-editor-menu-selection-bg': 'menus',\n // Grid\n '--dh-color-grid-bg': 'grid',\n '--dh-color-grid-number-positive': 'Data Types',\n '--dh-color-grid-number-negative': 'Data Types',\n '--dh-color-grid-number-zero': 'Data Types',\n '--dh-color-grid-date': 'Data Types',\n '--dh-color-grid-string-null': 'Data Types',\n} as const;\n\nconst SWATCH_LABEL = {\n '--dh-color-black': '',\n '--dh-color-action-active-bg': 'Action.active',\n '--dh-color-action-down-bg': 'Action:active',\n '--dh-color-action-hover-bg': 'Action:hover',\n '--dh-color-action-active-hover-bg': 'Action.active:hover',\n '--dh-color-action-disabled-bg': 'Action:disabled',\n};\n\n// Mappings of variable groups to rename\nconst RENAME_VARIABLE_GROUPS = {\n palette: {\n black: 'gray',\n white: 'gray',\n },\n editor: {\n line: 'editor',\n comment: 'code',\n string: 'code',\n number: 'code',\n delimiter: 'code',\n identifier: 'code',\n keyword: 'code',\n operator: 'code',\n storage: 'code',\n predefined: 'code',\n selection: 'state',\n focus: 'state',\n },\n chart: {\n axis: 'Chart',\n bg: 'Chart',\n grid: 'Chart',\n plot: 'Chart',\n title: 'Chart',\n active: 'Data',\n trend: 'Data',\n area: 'Data',\n range: 'Data',\n line: 'Deprecated',\n },\n grid: { data: 'Data Bars', context: 'Context Menu' },\n semantic: {},\n component: {},\n} satisfies Record<string, Record<string, string>>;\n\n/**\n * Return black or white contrast color.\n *\n * Note that this should be sufficient for styleguide swatch examples, but it\n * may not completely align with how Spectrum determines contrast colors, hence\n * leaving this here instead of promoting to `ColorUtils`.\n */\nexport function contrastColor(color: string): 'black' | 'white' {\n const rgba = ColorUtils.parseRgba(ColorUtils.asRgbOrRgbaString(color) ?? '');\n if (rgba == null || rgba.a < 0.5) {\n return 'white';\n }\n\n const { r, g, b } = rgba;\n return ColorUtils.getBrightness([r, g, b]) >= 128 ? 'black' : 'white';\n}\n\n/** Extract an array of { name, value } pairs for css variables in a given string */\nexport function extractColorVars(\n styleText: string\n): { name: string; value: string }[] {\n const computedStyle = getComputedStyle(document.documentElement);\n const varNames = styleText\n .split(/[\\n;]/g)\n // Non-minified css will have leading 2 spaces in front of each css variable\n // declaration. Minified has no prefix except for the first line which will\n // have ':root{' prefix.\n .map(line => /^(?:\\s{2}|:root\\{)?(--dh-color-(?:[^:]+))/.exec(line)?.[1])\n .filter((match): match is string => Boolean(match));\n\n return varNames\n .map(varName => {\n const value = computedStyle.getPropertyValue(varName);\n\n // Chart colorway consists of multiple colors, so split into separate\n // swatches for illustration. Note that this assumes the colors are hsl\n // values. We'll need to make this more robust if we ever change the\n // default themes to use non-hsl.\n if (varName === '--dh-color-chart-colorway') {\n const colorwayColors = getExpressionRanges(value ?? '').map(\n ([start, end]) => value.substring(start, end + 1)\n );\n return colorwayColors.map((varExp, i) => ({\n name: `${varName}-${i}`,\n value: varExp,\n }));\n }\n\n return {\n name: varName,\n value,\n };\n })\n .flat();\n}\n\n/** Group color data based on capture group value */\nexport function buildColorGroups(\n groupKey: keyof typeof RENAME_VARIABLE_GROUPS,\n styleText: string,\n captureGroupI: number,\n reassignVarGroups: Record<string, string> = REASSIGN_VARIABLE_GROUPS\n): Record<\n string,\n { isLabel?: boolean; name: string; value: string; note?: string }[]\n> {\n const groupRemap: Record<string, string> = RENAME_VARIABLE_GROUPS[groupKey];\n const swatchData = extractColorVars(styleText);\n\n const groupData = swatchData.reduce(\n (acc, { name, value }) => {\n // Skip true black/white\n if (/^--dh-color-true-(.*?)$/.test(name)) {\n return acc;\n }\n\n // Skip gray light/mid/dark as they will be marked via notes on the gray\n // numbered palette\n if (/^--dh-color-gray-(light|mid|dark)$/.test(name)) {\n return acc;\n }\n\n const match = /^--dh-color-([^-]+)(?:-([^-]+))?/.exec(name);\n let group =\n reassignVarGroups[name] ??\n match?.[captureGroupI] ??\n match?.[1] ??\n '???';\n\n group = groupRemap[group] ?? group;\n\n if (acc[group] == null) {\n acc[group] = [];\n }\n\n // Add a spacer for black / white\n if (name in SWATCH_LABEL) {\n acc[group].push({\n isLabel: true,\n name: SWATCH_LABEL[name as keyof typeof SWATCH_LABEL],\n value: '',\n });\n }\n\n // Skip gray light/mid/dark as we are planning to remove them\n if (/^--dh-color-gray-(light|mid|dark)$/.test(name)) {\n return acc;\n }\n\n acc[group].push({ name, value });\n\n return acc;\n },\n {} as Record<\n string,\n { isLabel?: boolean; name: string; value: string; note?: string }[]\n >\n );\n\n return groupData;\n}\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { contrastColor } from './colorUtils';\n\n/**\n * Ref that will set the foreground color of an element to contrast with its\n * background color.\n */\nexport function useContrastFgColorRef<\n T extends HTMLElement,\n>(): React.RefObject<T> {\n const ref = useRef<T>(null);\n\n useLayoutEffect(() => {\n if (ref.current == null) {\n return;\n }\n\n const computedStyle = getComputedStyle(ref.current);\n\n const { backgroundColor } = computedStyle;\n\n ref.current.style.color = contrastColor(backgroundColor);\n }, []);\n\n return ref;\n}\n\n/**\n * Extract a --dh-color-xxxx variable from the pseudo content of an element.\n * @param elementRef Ref to the element to extract the color from.\n * @param pseudoElement The pseudo element to extract the color from.\n */\nexport function useDhColorFromPseudoContent(\n elementRef: React.RefObject<HTMLElement | null>,\n pseudoElement: ':before' | ':after'\n): string | undefined {\n const [color, setColor] = useState<string>();\n\n useEffect(() => {\n if (elementRef.current == null) {\n return;\n }\n\n const pseudoContent = getComputedStyle(\n elementRef.current,\n pseudoElement\n ).getPropertyValue('content');\n\n // Extract the var name from the content (e.g. '--dh-color-gray-900')\n const dhColorVarName = /\"(--dh-color-.*?)[,\"]/.exec(pseudoContent)?.[1];\n if (dhColorVarName == null) {\n return;\n }\n\n const dhColorValue = getComputedStyle(elementRef.current).getPropertyValue(\n dhColorVarName\n );\n\n setColor(dhColorValue);\n }, [elementRef, pseudoElement]);\n\n return color;\n}\n","import React, { type ReactNode, useMemo } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { INVALID_COLOR_BORDER_STYLE } from './colorUtils';\nimport { useContrastFgColorRef, useDhColorFromPseudoContent } from './hooks';\n\nexport interface SwatchProps {\n className: string;\n children: ReactNode;\n}\n\nexport function Swatch({ className, children }: SwatchProps): JSX.Element {\n const ref = useContrastFgColorRef<HTMLDivElement>();\n\n // The `swatch-color` mixin parses and exposes the value of css var expressions\n // via a :after { content } selector. The value will be surrounded in double\n // quotes e.g.\n // var(--dh-color-red-500) is exposed as \"--dh-color-red-500\"\n // var(--dh-color-gray-900, #fcfcfa) is exposed as \"--dh-color-gray-900, #fcfcfa\"\n const dhColor = useDhColorFromPseudoContent(ref, ':after');\n\n const tooltip = useMemo(\n () =>\n dhColor != null\n ? {\n value: dhColor,\n }\n : null,\n [dhColor]\n );\n\n const hasValue = tooltip != null && tooltip.value !== '';\n\n return (\n <div\n ref={ref}\n className={className}\n style={{\n border: hasValue ? undefined : INVALID_COLOR_BORDER_STYLE,\n }}\n >\n {hasValue && (\n <Tooltip interactive>\n <div>{tooltip.value}</div>\n </Tooltip>\n )}\n {children}\n </div>\n );\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Swatch } from './Swatch';\nimport SampleSection from './SampleSection';\n\nfunction Colors(): React.ReactElement {\n const graySwatches = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '850',\n '8XX',\n '900',\n ].map(swatch => (\n <Swatch\n key={swatch}\n className={classNames('swatch', 'gray-swatch', `gray-swatch-${swatch}`)}\n >\n {swatch === '8XX' ? 'N/A' : `Gray-${swatch}`}\n </Swatch>\n ));\n\n const baseColorPaletteSwatches = [\n 'red',\n 'orange',\n 'yellow',\n 'green',\n 'blue',\n 'purple',\n 'white',\n 'black',\n ].map(swatch => (\n <Swatch key={swatch} className={classNames('swatch', `swatch-${swatch}`)}>\n {swatch}\n </Swatch>\n ));\n\n const colorSwatches = [\n 'content-bg',\n 'background',\n 'foreground',\n 'primary',\n 'primary-dark',\n 'secondary',\n 'secondary-hover',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'danger-hover',\n ].map(swatch => (\n <Swatch key={swatch} className={classNames('swatch', `swatch-${swatch}`)}>\n {swatch}\n </Swatch>\n ));\n\n return (\n <SampleSection name=\"colors\">\n <h2 className=\"ui-title\">Colors</h2>\n <div className=\"row\">\n <div className=\"col\">\n {graySwatches}\n {baseColorPaletteSwatches}\n </div>\n\n <div className=\"col\">{colorSwatches}</div>\n\n <div className=\"col\">\n <p>\n This section is for legacy reference only. Use the css variable\n based semantic colors in the following sections. You should not be\n using colors defined in the theme color palette directly.\n </p>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Colors;\n","/* eslint no-alert: \"off\" */\n/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\nimport {\n Button,\n ContextActions,\n KEY,\n MODIFIER,\n type ResolvableContextAction,\n Shortcut,\n} from '@deephaven/components';\nimport {\n vsBell,\n dhFilePrint,\n vsQuestion,\n type IconDefinition,\n} from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\ninterface ContextMenuItem {\n title: string;\n icon?: IconDefinition;\n action?: () => void;\n shortcut?: Shortcut;\n group?: number;\n order?: number;\n disabled?: boolean;\n}\n\nclass ContextMenus extends Component {\n constructor(props: Record<string, never>) {\n super(props);\n\n this.makeContextMenuItems = this.makeContextMenuItems.bind(this);\n }\n\n makeContextMenuItems(iteration?: number): Array<ContextMenuItem> {\n const suffix = iteration !== undefined ? ` ${iteration}` : '';\n return [\n {\n title: `Show Alert${suffix}`,\n icon: vsBell,\n action: () => {\n alert(`Alert${suffix}!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_ALERT',\n name: 'Show Alert',\n shortcut: [MODIFIER.CTRL, KEY.A],\n macShortcut: [MODIFIER.CMD, KEY.A],\n }),\n },\n {\n title: `Log Message${suffix}`,\n icon: dhFilePrint,\n action: () => {\n console.log(`Logging a message${suffix}!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.LOG_MESSAGE',\n name: 'Log Message',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CMD, KEY.L],\n }),\n },\n {\n title: 'Sub-menu',\n actions: () => this.makeContextMenuItems((iteration ?? 0) + 1),\n order: 3,\n },\n ].concat(\n new Array(10).fill({\n title: `Disabled Option${suffix}`,\n disabled: true,\n order: 2,\n })\n );\n }\n\n render(): React.ReactElement {\n const contextActions = this.makeContextMenuItems();\n\n const globalActions: Array<ContextMenuItem> = [\n {\n title: 'Show Shortcuts',\n icon: vsQuestion,\n action: () => {\n alert('Show keyboard shortcuts!');\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_SHORTCUTS',\n name: 'Show Shortcuts',\n shortcut: [MODIFIER.CTRL, KEY.SLASH],\n macShortcut: [MODIFIER.CMD, KEY.SLASH],\n }),\n group: ContextActions.groups.global,\n },\n ];\n\n const actions = globalActions.concat(contextActions);\n\n const delayedActions: ResolvableContextAction = () =>\n new Promise(resolve => {\n setTimeout(() => {\n resolve(contextActions);\n }, 3000);\n });\n\n return (\n <SampleSection name=\"context-menus\">\n <h2 className=\"ui-title\">Context Menu</h2>\n <Button\n kind=\"primary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n onClick={() => undefined}\n >\n Right Click Me\n <ContextActions actions={actions} />\n </Button>\n <Button\n kind=\"tertiary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n onClick={() => undefined}\n >\n Right Click Me\n <ContextActions actions={delayedActions} />\n </Button>\n </SampleSection>\n );\n }\n}\n\nexport default ContextMenus;\n","/* eslint no-alert: \"off\" */\n/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\nimport {\n HierarchicalCheckboxMenu,\n Popper,\n type HierarchicalCheckboxValueMap,\n Button,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\ninterface DialogState {\n isShown: boolean;\n checkBoxMap: HierarchicalCheckboxValueMap;\n}\n\ninterface Dialog {\n sampleInput: React.RefObject<HTMLInputElement>;\n}\n\nclass Dialog extends Component<unknown, DialogState> {\n constructor(props: unknown) {\n super(props);\n\n this.sampleInput = React.createRef();\n\n this.handleUpdateCheckboxMap = this.handleUpdateCheckboxMap.bind(this);\n\n const parentA = [\n 'Parent A',\n new Map([\n ['Child 1', true],\n ['Child 2', false],\n ]),\n ];\n\n const parentB = [\n 'Parent B',\n new Map([\n ['Child 3', true],\n ['Child 4', false],\n ['Child 5', true],\n ['Child 6', false],\n ]),\n ];\n\n const leaf = ['Leaf Parent', true];\n\n this.state = {\n isShown: false,\n checkBoxMap: new Map([parentA, parentB, leaf] as Iterable<\n readonly [string, Map<string, boolean>]\n >),\n };\n }\n\n handleUpdateCheckboxMap(checkBoxMap: HierarchicalCheckboxValueMap): void {\n this.setState({\n checkBoxMap,\n });\n }\n\n renderChild(): React.ReactElement {\n return (\n <div className=\"p-3\">\n <h4>Sample Child</h4>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInput1\">\n Input Label\n <input\n ref={this.sampleInput}\n type=\"text\"\n className=\"form-control\"\n id=\"exampleInput1\"\n aria-describedby=\"emailHelp\"\n placeholder=\"Input Placeholder\"\n />\n </label>\n <small className=\"form-text text-muted\">\n Help text for a form input\n </small>\n </div>\n </div>\n );\n }\n\n render(): React.ReactElement {\n const { isShown, checkBoxMap } = this.state;\n\n return (\n <SampleSection name=\"dialog\">\n <h2 className=\"ui-title\">Popover Dialog</h2>\n <p>\n Popover dialog that can contain interactive elements, can be set to\n self close on blur.\n </p>\n <Button\n kind=\"primary\"\n style={{ marginBottom: '1rem', marginRight: '1rem' }}\n onClick={() => {\n if (isShown) {\n this.setState({ isShown: false });\n } else {\n this.setState({ isShown: true });\n }\n }}\n >\n Open Dialog\n <Popper\n options={{ placement: 'bottom' }}\n isShown={isShown} // controls if its shown or not\n onEntered={() => {\n // Example setting focus on entered child\n // Could also be performed within the didMount if child is a component\n if (this.sampleInput.current) {\n this.sampleInput.current.focus();\n }\n }}\n onExited={() => {\n this.setState({ isShown: false });\n }}\n closeOnBlur // if you want dialog to self close, on click outside\n interactive // if popper contents will be interactable\n >\n {this.renderChild()}\n </Popper>\n </Button>\n <p>\n The Hierarchical Checkbox Menu uses a popover dialog to display\n hierarchical groups of checkboxes.\n </p>\n\n <HierarchicalCheckboxMenu\n menuText=\"Checkbox Menu\"\n valueMap={checkBoxMap}\n onUpdateValueMap={this.handleUpdateCheckboxMap}\n />\n </SampleSection>\n );\n }\n}\n\nexport default Dialog;\n","/* eslint no-alert: \"off\" */\n/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\n\nimport {\n ContextActions,\n DropdownMenu,\n KEY,\n MODIFIER,\n Shortcut,\n type DropdownAction,\n Button,\n} from '@deephaven/components';\nimport {\n vsBell,\n dhFilePrint,\n vsKebabVertical,\n vsQuestion,\n} from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\ninterface DropdownMenus {\n button: React.RefObject<HTMLDivElement>;\n}\n\ninterface DropdownMenusState {\n isShown: boolean;\n}\n\nclass DropdownMenus extends Component<\n Record<string, never>,\n DropdownMenusState\n> {\n constructor(props: Record<string, never>) {\n super(props);\n\n this.state = {\n isShown: false,\n };\n }\n\n render(): React.ReactElement {\n const contextActions = [\n {\n title: `Show Alert`,\n icon: vsBell,\n action: () => {\n alert(`Alert!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_ALERT',\n name: 'Show Alert',\n shortcut: [MODIFIER.CTRL, KEY.A],\n macShortcut: [MODIFIER.CMD, KEY.A],\n }),\n },\n {\n title: `Log Message`,\n icon: dhFilePrint,\n action: () => {\n console.log(`Logging a message!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.LOG_MESSAGE',\n name: 'Log Message',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CMD, KEY.L],\n }),\n },\n ] as DropdownAction[];\n\n const globalActions = [\n {\n title: 'Show Shortcuts',\n icon: vsQuestion,\n action: () => {\n alert('Show keyboard shortcuts!');\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_SHORTCUTS',\n name: 'Show Shortcuts',\n shortcut: [MODIFIER.CTRL, KEY.SLASH],\n macShortcut: [MODIFIER.CMD, KEY.SLASH],\n }),\n group: ContextActions.groups.global,\n },\n ] as DropdownAction[];\n\n const actions = globalActions.concat(contextActions);\n\n const { isShown } = this.state;\n\n return (\n <SampleSection name=\"dropdown-menus\">\n <h2 className=\"ui-title\">Dropdown Menu</h2>\n <p>\n A simple dropdown menu of actions, can open on click of parent\n container, or controlled by prop.\n </p>\n <Button\n kind=\"inline\"\n className=\"mx-2\"\n icon={vsKebabVertical}\n onClick={() => undefined}\n >\n <DropdownMenu actions={actions} />\n </Button>\n <Button\n kind=\"primary\"\n style={{\n marginRight: '1rem',\n minWidth: '165px',\n }}\n onClick={() => {\n if (isShown) {\n this.setState({ isShown: false });\n } else {\n this.setState({ isShown: true });\n }\n }}\n >\n Menu Shown: {isShown.toString()}\n </Button>\n <div\n ref={this.button}\n className=\"btn btn-secondary disabled\"\n style={{ marginRight: '1rem' }}\n >\n Shown using isShown\n <DropdownMenu\n isShown={isShown}\n onMenuClosed={() => {\n this.setState({ isShown: false });\n }}\n actions={actions}\n />\n </div>\n </SampleSection>\n );\n }\n}\n\nexport default DropdownMenus;\n","const testPython = `trades = db.t(\"LearnDeephaven\", \"StockTrades\").where(\"Date=\\`2017-08-25\\`\")\\\\\n .headBy(3, \"Sym\")\\\\\n .view(\"Sym\", \"Last\")\n\nsummary = trades.view(\"Sym\", \"AvgPrice=Last\").avgBy(\"Sym\")\n\nlj = summary.leftJoin(trades, \"Sym\", \"Last\")\n\n\n\ndef rollingAvg(rows, values):\n calculations = jpy.array('double', values.size()) # create an array of integers\n\n sum = 0\n n = 0\n avg = 0\n\n for i in range(values.size()):\n sum += values.get(i) #add each value to sum\n if (i >= rows): sum -= values.get(i - rows) #subtract when needed\n\n n = i + 1 if (i < rows) else rows #n increments with i until i=rows\n avg = sum / n #get updated average every iteration\n\n calculations[i] = avg #store running average\n\n return calculations #return an array of rolling averages\n\ndef rollingStd(rows, values, averages):\n calculations = jpy.array('double', values.size()) # create an array of integers\n\n sum = 0\n n = 0\n\n for i in range(values.size()):\n sum = 0\n\n j = i\n while j >= 0 and j > i - rows:\n difference = values.get(j) - averages[i]\n squareDiff = difference ** 2\n sum += squareDiff\n j -= 1\n\n n = i + 1 if (i < rows) else rows\n variance = sum / n\n standardDev = variance ** (1/2.0)\n calculations[i] = standardDev\n\n return calculations\n\ntrades = db.t(\"LearnDeephaven\", \"StockTrades\")\\\\\n .where(\"Date=\\`2017-08-25\\`\")\\\\\n .view(\"Sym\", \"Last\", \"Size\", \"ExchangeTimestamp\")\n\ntrades30min = trades.updateView(\"TimeBin=lowerBin(ExchangeTimestamp, 30*MINUTE)\")\\\\\n .firstBy(\"Sym\", \"TimeBin\")\n\nrollingCalc = trades30min.by(\"Sym\")\\\\\n .update(\"Avg=(double[])rollingAvg.call(30, Last)\",\n \"Std=(double[])rollingStd.call(30, Last, Avg)\")\\\\\n .ungroup()\nminEdge = 0.5\nmaxPos = 3.0\nliquidity = 1e6\n\ntargetPos = rollingCalc.updateView(\"Zscore=(Avg-Last)/Std if (Std > 0) else NULL_DOUBLE\", \"AdjZscore=signum(Zscore) * min(maxPos, max(abs(Zscore)-minEdge), 0.0)\", \"TargetPosition=(int)(liquidity*AdjZscore/Last)\")\\\\\n .dropColumns(\"ExchangeTimestamp\", \"Avg\", \"Std\", \"Zscore\", \"AdjZscore\")\n\ntimeBinIndexes = targetPos.leftJoin(trades30min, \"Sym\", \"Times=ExchangeTimestamp, SharesTraded=Size\")\\\\\n .updateView(\"StartIndex=binSearchIndex(Times, TimeBin-30*MINUTE, BS_LOWEST)\", \"EndIndex=binSearchIndex(Times, TimeBin, BS_HIGHEST)\")\\\\\n .dropColumns(\"Times\")\n\nshares30min = timeBinIndexes.updateView(\"SharesTraded30Min=sum(SharesTraded.subArray(StartIndex, EndIndex))\")\\\\\n .dropColumns(\"SharesTraded\", \"StartIndex\", \"EndIndex\")\n\nfrom math import copysign\nclass SimulatorState:\n def __init__(self):\n self.hm = {}\n\n def __call__(self, sym, targetPos, shares10s):\n if sym not in self.hm:\n self.hm[sym] = [0.0] * 2\n tradedAndPosition = self.hm[sym]\n tradedAndPosition[0] = 0.0 if (targetPos == None) else copysign(1, targetPos - tradedAndPosition[1]) * min(abs(targetPos - tradedAndPosition[1]), shares10s * 0.1)\n tradedAndPosition[1] += tradedAndPosition[0]\n return jpy.array('double', list(tradedAndPosition))\n\nss = SimulatorState()\n\nsimulation = shares30min.update(\"Values=(double[])ss.call(Sym, TargetPosition, SharesTraded30Min)\", \"PositionChange=Values[0]\", \"Position=Values[1]\")\\\\\n .dropColumns(\"Values\")\n`;\nconst testGroovy = `trades = db.t(\"LearnDeephaven\", \"StockTrades\").where(\"Date=\\`2017-08-25\\`\")\n .headBy(3, \"Sym\")\n .view(\"Sym\", \"Last\")\n\nsummary = trades.view(\"Sym\", \"AvgPrice=Last\").avgBy(\"Sym\")\n\nlj = summary.leftJoin(trades, \"Sym\", \"Last\")\n\n\nrollingAvg = { rows, values ->\n \n calculations = new double[values.size()]\n \n sum = 0\n n = 0\n avg = 0\n \n for (int i = 0; i < values.size(); ++i)\n {\n sum += values.get(i) //add each value to sum\n if (i >= rows) sum -= values.get(i - rows) //subtract when needed\n \n n = (i < rows) ? i + 1 : rows //n increments with i until i=rows\n avg = sum / n //get updated average every iteration\n \n calculations[i] = avg //store running average\n }\n \n return calculations //return an array of rolling averages\n}\n\nrollingStd = { rows, values, averages ->\n calculations = new double[values.size()]\n\n sum = 0\n n = 0\n\n for (int i = 0; i < values.size(); ++i)\n {\n sum = 0\n for (int j = i; j >= 0 && j > i - rows; --j)\n {\n difference = values.get(j) - averages[i]\n squareDiff = Math.pow(difference, 2)\n sum += squareDiff\n }\n\n n = (i < rows) ? i + 1 : rows\n variance = sum / n\n standardDev = Math.sqrt(variance)\n calculations[i] = standardDev\n }\n return calculations\n}\n\ntrades = db.t(\"LearnDeephaven\", \"StockTrades\")\n .where(\"Date=\\`2017-08-25\\`\")\n .view(\"Sym\", \"Last\", \"Size\", \"ExchangeTimestamp\")\n\ntrades30min = trades.updateView(\"TimeBin=lowerBin(ExchangeTimestamp, 30*MINUTE)\")\n .firstBy(\"Sym\", \"TimeBin\")\n\nrollingCalc = trades30min.by(\"Sym\")\n .update(\"Avg=(double[])rollingAvg.call(30, Last)\",\"Std=(double[])rollingStd.call(30, Last, Avg)\")\n.ungroup()\n\nminEdge = 0.5d\nmaxPos = 3.0d\nliquidity = 1e6d\n\ntargetPos = rollingCalc.updateView(\"Zscore=(Std > 0) ? (Avg-Last)/Std : NULL_DOUBLE\", \"AdjZscore=signum(Zscore) * min(maxPos, max(abs(Zscore)-minEdge), 0.0)\", \"TargetPosition=(int)(liquidity*AdjZscore/Last)\")\n .dropColumns(\"ExchangeTimestamp\", \"Avg\", \"Std\", \"Zscore\", \"AdjZscore\")\n\ntimeBinIndexes = targetPos.leftJoin(trades30min, \"Sym\", \"Times=ExchangeTimestamp, SharesTraded=Size\")\n .updateView(\"StartIndex=binSearchIndex(Times, TimeBin-30*MINUTE, BS_LOWEST)\", \"EndIndex=binSearchIndex(Times, TimeBin, BS_HIGHEST)\")\n .dropColumns(\"Times\")\n\nshares30min = timeBinIndexes.updateView(\"SharesTraded30Min=sum(SharesTraded.subArray(StartIndex, EndIndex))\")\n .dropColumns(\"SharesTraded\", \"StartIndex\", \"EndIndex\")\n\n\nclass SimulatorState\n{\nprivate HashMap<String, double[]> hm = new HashMap<>();\n\n public double[] update(String sym, int targetPos, int shares10s)\n {\n if (!hm.containsKey(sym)) hm.put(sym, new double[2]);\n\n double[] tradedAndPosition = hm.get(sym);\n\n tradedAndPosition[0] =\n isNull(targetPos) ? 0.0 : signum(targetPos - tradedAndPosition[1]) * min(abs(targetPos - tradedAndPosition[1]), shares10s * 0.1d)\n tradedAndPosition[1] += tradedAndPosition[0];\n\n return Arrays.copyOf(tradedAndPosition, tradedAndPosition.length);\n }\n}\nss = new SimulatorState()\n\nsimulation = shares30min.update(\"Values=(double[])ss.update(Sym, TargetPosition, SharesTraded30Min)\", \"PositionChange=Values[0]\", \"Position=Values[1]\")\n .dropColumns(\"Values\")\n\n`;\n\nexport default { testPython, testGroovy };\n","import React from 'react';\nimport { Editor } from '@deephaven/console';\nimport Constants from './StyleConstants';\nimport SampleSection from './SampleSection';\n\nfunction Editors(): React.ReactElement {\n return (\n <SampleSection name=\"editors\">\n <h2 className=\"ui-title\">Editor</h2>\n <h5 className=\"sub-title\">Python</h5>\n <div style={{ height: 400, position: 'relative' }}>\n <Editor\n settings={{ language: 'python', value: Constants.testPython }}\n />\n </div>\n <h5 className=\"sub-title\">Groovy</h5>\n <div style={{ height: 400, position: 'relative' }}>\n <Editor\n settings={{ language: 'groovy', value: Constants.testGroovy }}\n />\n </div>\n </SampleSection>\n );\n}\n\nexport default Editors;\n","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-empty-function: \"off\" */\nimport { type EventTarget, type Event } from 'event-target-shim';\nimport memoize from 'memoize-one';\nimport {\n type EditableGridModel,\n type EditOperation,\n type ExpandableGridModel,\n GridRange,\n MockTreeGridModel,\n type ModelIndex,\n type MoveOperation,\n} from '@deephaven/grid';\nimport {\n IrisGridModel,\n type PendingDataMap,\n type UITreeRow,\n type ColumnHeaderGroup,\n} from '@deephaven/iris-grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\n\n// We need to cast our CustomEvent so it's happy with event-target-shim\ntype CustomEventType = EventTarget.EventData<\n Record<string, Event>,\n 'standard',\n 'CustomEvent'\n>;\n\nconst EMPTY_ARRAY: never[] = [];\n\n/**\n * A mock class that takes a GridModel and adds mock functionality for use in IrisGrid.\n * Useful for testing.\n */\nclass MockIrisGridTreeModel\n extends IrisGridModel\n implements ExpandableGridModel, EditableGridModel\n{\n protected model: MockTreeGridModel;\n\n protected editedData: string[][];\n\n constructor(dh: typeof DhType, model = new MockTreeGridModel()) {\n super(dh);\n\n this.model = model;\n this.editedData = [];\n }\n\n // Delegate to the passed in model\n get rowCount(): number {\n return this.model.rowCount;\n }\n\n get columnCount(): number {\n return this.model.columnCount;\n }\n\n get floatingTopRowCount(): number {\n return 3;\n }\n\n get floatingBottomRowCount(): number {\n return 3;\n }\n\n get isEditable(): boolean {\n return true;\n }\n\n isEditableRange(range: GridRange): boolean {\n return this.isEditable;\n }\n\n setValues(edits: readonly EditOperation[]): never {\n throw new Error('Method not implemented.');\n }\n\n delete(ranges: GridRange[]): never {\n throw new Error('Method not implemented.');\n }\n\n get pendingRowCount(): number {\n return 0;\n }\n\n set pendingRowCount(count: number) {\n // Ignore for mock\n }\n\n get pendingDataMap(): PendingDataMap<UITreeRow> {\n return new Map();\n }\n\n set pendingDataMap(value: PendingDataMap<UITreeRow>) {\n // Ignore for mock\n }\n\n updateFrozenColumns(columns: string[]): void {\n // Ignore for mock\n }\n\n getColumnIndexByName(name: string): ModelIndex {\n return Number(name);\n }\n\n textForCell(column: ModelIndex, row: ModelIndex): string {\n return (\n this.editedData[column]?.[row] ?? this.model.textForCell(column, row)\n );\n }\n\n textForRowHeader(row: ModelIndex): string {\n return this.model.textForRowHeader(row);\n }\n\n textForRowFooter(row: ModelIndex): string {\n return this.model.textForRowHeader(row);\n }\n\n textForColumnHeader(column: ModelIndex, depth: number): string {\n return this.model.textForColumnHeader(column, depth);\n }\n\n get hasExpandableRows(): boolean {\n return this.model.hasExpandableRows;\n }\n\n get isExpandAllAvailable(): boolean {\n return false;\n }\n\n isRowExpandable(row: ModelIndex): boolean {\n return this.model.isRowExpandable(row);\n }\n\n isRowExpanded(row: ModelIndex): boolean {\n return this.model.isRowExpanded(row);\n }\n\n setRowExpanded(\n row: ModelIndex,\n isExpanded: boolean,\n expandDescendants = false\n ): void {\n this.model.setRowExpanded(row, isExpanded, expandDescendants);\n }\n\n expandAll(): void {\n throw new Error('Expand all not implemented.');\n }\n\n collapseAll(): void {\n throw new Error('Collapse all not implemented.');\n }\n\n depthForRow(row: ModelIndex): number {\n return this.model.depthForRow(row);\n }\n\n // Stub out functions for IrisGridModel functionality\n get columns(): DhType.Column[] {\n return this.getCachedColumns(this.columnCount) as DhType.Column[];\n }\n\n get groupedColumns(): DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n getCachedColumns = memoize((count: number) => {\n const columns = [];\n for (let i = 0; i < count; i += 1) {\n columns.push({\n name: this.model.textForColumnHeader(i, 0),\n type: 'java.lang.String',\n description: `Mock column ${i}`,\n });\n }\n return columns;\n });\n\n get description(): string {\n return 'A mock used for testing.';\n }\n\n get customColumns(): string[] {\n return [];\n }\n\n set customColumns(customColumns: string[]) {\n // Ignore for mock\n }\n\n get formatColumns(): DhType.CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: DhType.CustomColumn[]) {\n // Ignore for mock\n }\n\n get sort(): never[] {\n return [];\n }\n\n set sort(sort: never[]) {\n // Ignore for mock\n }\n\n get filter(): never[] {\n return [];\n }\n\n set filter(filter: never[]) {\n // Ignore for mock\n }\n\n get partition(): never[] {\n return [];\n }\n\n set partition(partition: never[]) {\n // Ignore for mock\n }\n\n get partitionColumns(): never[] {\n return [];\n }\n\n set partitionColumns(partitionColumns: never[]) {\n // Ignore for mock\n }\n\n set formatter(formatter: Formatter) {\n // Ignore for mock\n }\n\n get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return new Map<string, CanvasTextAlign>();\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n // Ignore for mock\n }\n\n displayString(value: unknown): string {\n return `${value}`;\n }\n\n valueForCell(column: ModelIndex, row: ModelIndex): unknown {\n return this.textForCell(column, row);\n }\n\n formatForCell(column: ModelIndex, row: ModelIndex): undefined {\n return undefined;\n }\n\n setViewport(): void {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.UPDATED) as CustomEventType\n );\n }\n\n async setValueForCell(\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ): Promise<void> {\n if (this.editedData[column] == null) {\n this.editedData[column] = [];\n }\n this.editedData[column][row] = `${value}`;\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.UPDATED) as CustomEventType\n );\n }\n\n async setValueForRanges(\n ranges: readonly GridRange[],\n text: string\n ): Promise<void> {\n GridRange.forEachCell(ranges, (x, y) => {\n this.setValueForCell(x, y, text);\n });\n }\n\n editValueForCell(column: ModelIndex, row: ModelIndex): string {\n return this.textForCell(column, row);\n }\n\n isValidForCell(column: ModelIndex, row: ModelIndex, value: string): boolean {\n return true;\n }\n\n async columnStatistics(column: DhType.Column): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n async commitPending(): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n async export(): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n get pendingDataErrors(): never {\n throw new Error('Not defined in mock');\n }\n\n get rollupConfig(): never {\n throw new Error('Not defined in mock');\n }\n\n set rollupConfig(rollupConfig: never) {\n throw new Error('Not defined in mock');\n }\n\n get selectDistinctColumns(): never {\n throw new Error('Not defined in mock');\n }\n\n set selectDistinctColumns(names: never) {\n throw new Error('Not defined in mock');\n }\n\n async snapshot(ranges: GridRange[]): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n async textSnapshot(): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n get totalsConfig(): never {\n throw new Error('Not defined in mock');\n }\n\n set totalsConfig(totalsConfig: never) {\n throw new Error('Not defined in mock');\n }\n\n valuesTable(columns: DhType.Column | DhType.Column[]): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: DhType.ValueTypeType,\n value: unknown,\n insensitive?: boolean | undefined,\n contains?: boolean | undefined,\n isBackwards?: boolean | undefined\n ): Promise<number> {\n throw new Error('Method not implemented.');\n }\n\n get columnHeaderGroups(): ColumnHeaderGroup[] {\n return [];\n }\n\n set columnHeaderGroups(groups: ColumnHeaderGroup[]) {\n // no-op\n }\n\n get columnHeaderGroupMap(): Map<string, ColumnHeaderGroup> {\n return new Map();\n }\n\n getColumnHeaderParentGroup(): ColumnHeaderGroup | undefined {\n return undefined;\n }\n\n get initialMovedColumns(): readonly MoveOperation[] {\n return [];\n }\n\n get initialMovedRows(): readonly MoveOperation[] {\n return [];\n }\n\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return [];\n }\n}\n\nexport default MockIrisGridTreeModel;\n","import React, { useState } from 'react';\nimport { Grid, StaticDataGridModel } from '@deephaven/grid';\n\nfunction StaticExample(): JSX.Element {\n const [model] = useState(\n () =>\n new StaticDataGridModel(\n [\n ['Matthew Austins', 'Toronto', 35, 22],\n ['Doug Millgore', 'Toronto', 14, 33],\n ['Bart Marchant', 'Boston', 20, 14],\n ['Luigi Dabest', 'Pittsburgh', 66, 33],\n ],\n ['Name', 'Team', 'Goals', 'Assists']\n )\n );\n\n return <Grid model={model} />;\n}\n\nexport default StaticExample;\n","import React, { useState } from 'react';\nimport { Grid, MockGridModel } from '@deephaven/grid';\n\nfunction QuadrillionExample(): JSX.Element {\n const [model] = useState(\n () =>\n new MockGridModel({\n isEditable: true,\n rowCount: Number.MAX_SAFE_INTEGER,\n columnCount: Number.MAX_SAFE_INTEGER,\n })\n );\n\n return <Grid model={model} />;\n}\n\nexport default QuadrillionExample;\n","import React, { useState } from 'react';\nimport { Grid, MockTreeGridModel } from '@deephaven/grid';\n\nfunction TreeExample(): JSX.Element {\n const [model] = useState(() => new MockTreeGridModel());\n\n return <Grid model={model} />;\n}\n\nexport default TreeExample;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Grid, type GridMetrics, ViewportDataGridModel } from '@deephaven/grid';\n\n/**\n * An example showing data loading asnychronously for a grid.\n */\nfunction AsyncExample(): JSX.Element {\n // Use a Viewport data model that we update asynchronously to display the data\n const [model] = useState(\n () => new ViewportDataGridModel(1_000_000_000, 1_000_000)\n );\n const grid = useRef<Grid>(null);\n\n // The current viewport\n const [viewport, setViewport] = useState({\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n });\n\n const handleViewChanged = useCallback((metrics: GridMetrics) => {\n // Pull out the viewport from the metrics\n const { top, bottom, left, right } = metrics;\n setViewport({ top, bottom, left, right });\n }, []);\n\n const { top, bottom, left, right } = viewport;\n useEffect(\n function mockLoadViewportAndData() {\n let isCancelled = false;\n\n // Simulate fetching data asynchronously by using at timeout\n setTimeout(() => {\n if (isCancelled) return;\n\n // Generate the data for the viewport\n const data = [];\n for (let i = top; i <= bottom; i += 1) {\n const rowData = [];\n for (let j = left; j <= right; j += 1) {\n rowData.push(`${i},${j}`);\n }\n data.push(rowData);\n }\n model.viewportData = {\n rowOffset: top,\n columnOffset: left,\n data,\n };\n\n // Refresh the grid\n grid.current?.forceUpdate();\n }, 250);\n return () => {\n isCancelled = true;\n };\n },\n [top, bottom, left, right, model]\n );\n\n return <Grid model={model} onViewChanged={handleViewChanged} ref={grid} />;\n}\n\nexport default AsyncExample;\n","import React, { useState } from 'react';\nimport { Grid, MockDataBarGridModel } from '@deephaven/grid';\nimport type { ColorMap } from '@deephaven/grid';\n\nfunction DataBarExample(): JSX.Element {\n const columnData = [100, 50, 20, 10, -10, -20, -50, -30, 100, 0, 1];\n const data: number[][] = [];\n const columnAxes = new Map([\n [0, 'proportional'],\n [1, 'middle'],\n [2, 'directional'],\n [6, 'directional'],\n [7, 'directional'],\n [8, 'directional'],\n [9, 'directional'],\n [10, 'directional'],\n ]);\n const positiveColors: ColorMap = new Map([\n [3, '#72d7df'],\n [4, '#ac9cf4'],\n ]);\n positiveColors.set(5, ['#f3cd5b', '#9edc6f']);\n positiveColors.set(19, ['#42f54b', '#42b9f5', '#352aa8']);\n\n const negativeColors: ColorMap = new Map([\n [3, '#f3cd5b'],\n [4, '#ac9cf4'],\n ]);\n negativeColors.set(5, ['#f95d84', '#f3cd5b']);\n negativeColors.set(19, ['#e05536', '#e607de', '#e6e207']);\n\n const valuePlacements = new Map([\n [6, 'hide'],\n [7, 'overlap'],\n [8, 'overlap'],\n [9, 'overlap'],\n ]);\n const opacities = new Map([\n [7, 0.5],\n [8, 0.5],\n [9, 0.5],\n ]);\n const directions = new Map([\n [8, 'RTL'],\n [10, 'RTL'],\n [16, 'RTL'],\n [19, 'RTL'],\n ]);\n const textAlignments = new Map([\n [9, 'left'],\n [11, 'left'],\n ]);\n const markers = new Map([\n [\n 12,\n [\n { value: 13, color: 'white' },\n { value: 14, color: 'gray' },\n ],\n ],\n ]);\n for (let i = 0; i < 13; i += 1) {\n data.push(columnData.slice());\n }\n data.push([70, 60, 30, 20, -10, -30, -20, -50, 80, 50, 10]);\n data.push([50, 20, 10, 0, 0, -10, -30, 10, 90, 20, 40]);\n data.push([-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0]);\n data.push(columnData.slice());\n // Decimals\n data.push([\n 100, 10.5, 11.234, -20.5, -50, -2.5, -15.1234, 94.254, 25, 44.4444, -50.5,\n ]);\n\n // Big values\n data.push([\n 1000000, 10, 200, -20000, -2000000, -25, -900000, 800000, 100000, 450000, 1,\n ]);\n\n // RTL gradient with multiple colors\n data.push(columnData.slice());\n\n // Both data bar and text\n data.push(columnData.slice());\n data.push(columnData.slice());\n const [model] = useState(\n () =>\n new MockDataBarGridModel(\n data,\n columnAxes,\n positiveColors,\n negativeColors,\n valuePlacements,\n opacities,\n directions,\n textAlignments,\n markers\n )\n );\n\n return <Grid model={model} />;\n}\n\nexport default DataBarExample;\n","import React, { type ReactElement, useState } from 'react';\nimport {\n Grid,\n type GridThemeType,\n MockGridModel,\n MockTreeGridModel,\n ThemeContext,\n} from '@deephaven/grid';\nimport { IrisGrid } from '@deephaven/iris-grid';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Flex } from '@deephaven/components';\nimport MockIrisGridTreeModel from './MockIrisGridTreeModel';\nimport StaticExample from './grid-examples/StaticExample';\nimport QuadrillionExample from './grid-examples/QuadrillionExample';\nimport TreeExample from './grid-examples/TreeExample';\nimport AsyncExample from './grid-examples/AsyncExample';\nimport DataBarExample from './grid-examples/DataBarExample';\nimport SampleSection from './SampleSection';\n\nfunction Grids(): ReactElement {\n const dh = useApi();\n const [irisGridModel] = useState(\n new MockIrisGridTreeModel(dh, new MockTreeGridModel())\n );\n const [irisGridCompactModel] = useState(\n new MockIrisGridTreeModel(dh, new MockTreeGridModel())\n );\n const [irisGridSpaciousModel] = useState(\n new MockIrisGridTreeModel(dh, new MockTreeGridModel())\n );\n const [model] = useState(new MockGridModel());\n const [theme] = useState<Partial<GridThemeType>>({\n autoSelectRow: true,\n });\n const [contextTheme] = useState<Partial<GridThemeType>>({\n rowHeight: 40,\n });\n return (\n <div>\n <ThemeContext.Provider value={contextTheme}>\n <h2 className=\"ui-title\">Grid</h2>\n <SampleSection name=\"grids-grid\" component={Flex}>\n <Grid model={model} theme={theme} />\n </SampleSection>\n <h2 className=\"ui-title\">Static Data</h2>\n <SampleSection name=\"grids-static\" component={Flex} height={200}>\n <StaticExample />\n </SampleSection>\n <h2 className=\"ui-title\">Data Bar</h2>\n <SampleSection name=\"grids-data-bar\" component={Flex} height={500}>\n <DataBarExample />\n </SampleSection>\n <h2 className=\"ui-title\">Quadrillion rows and columns</h2>\n <SampleSection\n name=\"grids-quadrillion\"\n component={Flex}\n position=\"relative\"\n height={500}\n >\n <QuadrillionExample />\n </SampleSection>\n <h2 className=\"ui-title\">Async example</h2>\n <SampleSection\n name=\"grids-async\"\n component={Flex}\n position=\"relative\"\n height={500}\n >\n <AsyncExample />\n </SampleSection>\n <h2 className=\"ui-title\">Tree Grid</h2>\n <SampleSection name=\"grids-tree\" component={Flex} height={500}>\n <TreeExample />\n </SampleSection>\n <h2 className=\"ui-title\">Iris Grid</h2>\n <SampleSection name=\"grids-iris\" component={Flex} height={500}>\n <IrisGrid model={irisGridModel} density=\"regular\" />\n </SampleSection>\n <h2 className=\"ui-title\">Iris Grid Compact</h2>\n <SampleSection name=\"grids-iris-compact\" component={Flex} height={500}>\n <IrisGrid model={irisGridCompactModel} density=\"compact\" />\n </SampleSection>\n <h2 className=\"ui-title\">Iris Grid Spacious</h2>\n <SampleSection name=\"grids-iris-spacious\" component={Flex} height={500}>\n <IrisGrid model={irisGridSpaciousModel} density=\"spacious\" />\n </SampleSection>\n </ThemeContext.Provider>\n </div>\n );\n}\n\nexport default Grids;\n","import React, { useState, useEffect } from 'react';\nimport {\n dh,\n type IconDefinition,\n vsOrganization,\n dhSquareFilled,\n dhAddSmall,\n} from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, Icon } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nasync function copyText(text: string): Promise<void | ErrorConstructor> {\n try {\n return await navigator.clipboard.writeText(text);\n } catch (error) {\n throw new Error(`Unable to copy: ${error}`);\n }\n}\n\nconst DH_PREFIX = 'dh';\nconst VS_PREFIX = 'vs';\n// prefix, icon-name to prefixIconName\nconst getPrefixedName = (name: string, prefix: string): string =>\n prefix.toLowerCase() +\n name\n .split('-')\n .map(str => str.charAt(0).toUpperCase() + str.slice(1))\n .join('');\n\ninterface FlashProps {\n message: { text: React.ReactNode };\n}\n\nfunction Flash({ message, message: { text } }: FlashProps): JSX.Element {\n const [show, setShow] = useState(false);\n\n useEffect(\n function setFlashMessage() {\n if (text == null || text === '') return;\n setShow(true);\n const timeout = setTimeout(() => {\n setShow(false);\n }, 2000);\n // eslint-disable-next-line consistent-return\n return () => {\n clearTimeout(timeout);\n };\n },\n [message, text]\n );\n\n return <p className={show ? 'flash in' : 'flash out'}>{text}</p>;\n}\n\nfunction Icons(): React.ReactElement {\n const [dhFilter, setDhFilter] = useState<boolean>(true);\n const [vsFilter, setVsFilter] = useState<boolean>(true);\n const [search, setSearch] = useState<string>('');\n const [flashText, setFlashText] = useState<{ text: React.ReactNode }>({\n text: '',\n });\n\n const renderIcons = Object.values(dh)\n .filter((icon: IconDefinition): boolean => {\n const matchesFilter =\n getPrefixedName(icon.iconName, icon.prefix)\n .toLowerCase()\n .indexOf(\n search.replace(/\\s/g, '').replace(/-/g, '').toLowerCase()\n ) !== -1;\n const isDH = dhFilter && (icon.prefix as string) === DH_PREFIX;\n const isVS = vsFilter && (icon.prefix as string) === VS_PREFIX;\n return matchesFilter && (isDH || isVS);\n })\n .map(icon => {\n const prefixedName = getPrefixedName(icon.iconName, icon.prefix);\n return (\n <Button\n key={prefixedName}\n kind=\"inline\"\n className=\"card\"\n onClick={() => {\n // new object, so it always flashes even on same string\n copyText(prefixedName)\n .then(() => {\n setFlashText({\n text: (\n <span>\n <FontAwesomeIcon icon={dh.vsOutput} /> Copied text:{' '}\n <strong>{prefixedName}</strong>\n </span>\n ),\n });\n })\n .catch(err => {\n setFlashText({\n text: <span className=\"text-danger\">{err.message}</span>,\n });\n });\n }}\n >\n <Icon size=\"L\">\n <FontAwesomeIcon icon={icon} />\n </Icon>\n\n <label title={prefixedName}>{prefixedName}</label>\n </Button>\n );\n });\n\n const compositionExample = `\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsOrganization}\n icon={dhSquareFilled}\n transform=\"down-7 right-7\"\n />\n <FontAwesomeIcon icon={dhAddSmall} />\n </div>`;\n\n return (\n <SampleSection name=\"icons\">\n <h2 className=\"ui-title\">Icons</h2>\n\n <div className=\"row\">\n <div className=\"col\">\n <h4>Icon Composition</h4>\n <p>\n Icons can be used indivudally or composed together using\n font-awesome composition:\n </p>\n <div className=\"icons\">\n <div className=\"icon card\">\n <FontAwesomeIcon icon={vsOrganization} />\n </div>\n <div className=\"icon card\">\n <FontAwesomeIcon icon={dhSquareFilled} />\n </div>\n <div className=\"icon card\">\n <FontAwesomeIcon icon={dhAddSmall} />\n </div>\n <div className=\"icon card\">=</div>\n <Button\n kind=\"inline\"\n className=\"card\"\n onClick={() => {\n // new object, so it always flashes even on same string\n copyText(compositionExample)\n .then(() => {\n setFlashText({\n text: <span>Copied composition example</span>,\n });\n })\n .catch(err => {\n setFlashText({\n text: <span className=\"text-danger\">{err.message}</span>,\n });\n });\n }}\n >\n <div className=\"icon\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsOrganization}\n icon={dhSquareFilled}\n transform=\"down-7 right-7\"\n />\n <FontAwesomeIcon icon={dhAddSmall} />\n </div>\n </div>\n <label>Custom</label>\n </Button>\n </div>\n </div>\n </div>\n <hr />\n <div className=\"row\">\n <div className=\"col\">\n <h4>All available icons</h4>\n <p>\n If you cannot find or compose a relevant icon for your use case,\n please request a new one to be created from design.\n </p>\n <div className=\"form-inline mb-3\">\n <input\n type=\"search\"\n placeholder=\"Basic icon search...\"\n value={search}\n className=\"form-control\"\n onChange={event => {\n setSearch(event.target.value);\n }}\n />\n <span className=\"mx-2\">Show: </span>\n <Button\n kind=\"inline\"\n active={vsFilter}\n className=\"mr-2\"\n onClick={() => setVsFilter(!vsFilter)}\n icon={vsFilter ? dh.vsCheck : dh.vsClose}\n >\n VS ICONS\n </Button>\n <Button\n kind=\"inline\"\n active={dhFilter}\n className=\"mr-2\"\n onClick={() => setDhFilter(!dhFilter)}\n icon={dhFilter ? dh.vsCheck : dh.vsClose}\n >\n DH ICONS\n </Button>\n <small>\n ({renderIcons.length} icon{renderIcons.length === 1 ? '' : 's'})\n </small>\n </div>\n <div className=\"icons\">\n {renderIcons}\n {renderIcons.length === 0 && (\n <p className=\"no-result\">No icons found.</p>\n )}\n <Flash message={flashText} />\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Icons;\n","import React, { useCallback, useState } from 'react';\nimport {\n AutoCompleteInput,\n AutoResizeTextarea,\n Checkbox,\n ComboBox,\n Radio,\n RadioGroup,\n SearchInput,\n TimeInput,\n DateInput,\n DateTimeInput,\n CustomTimeSelect,\n UISwitch,\n Select,\n Option,\n Item,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nconst EXAMPLES = [\n { title: 'Title 1', value: 'Value 1' },\n { title: 'Title 2', value: 'Value 2' },\n { title: 'Title 3', value: 'Value 3' },\n { title: 'Title 4', value: 'Value 4' },\n { title: 'Title 5', value: 'Value 5' },\n { title: 'Title 6', value: 'Value 6' },\n { title: 'Title 7', value: 'Value 7' },\n { title: 'Title 8', value: 'Value 8' },\n { title: 'Title 9', value: 'Value 9' }, // intentional duplicate for testing\n { title: 'Title 9', value: 'Value 9' },\n { title: 'Title 10', value: 'Value 10' },\n { title: 'Title 11', value: 'Value 11' },\n { title: 'Title 12', value: 'Value 12' },\n];\n\nconst items = EXAMPLES.map(({ title, value }) => (\n <Item key={value}>{title}</Item>\n));\n\nconst TIMEOUTS = [\n { title: '1 minute', value: 1 * 60 * 1000 },\n { title: '5 minutes', value: 5 * 60 * 1000 },\n { title: '20 minutes', value: 20 * 60 * 1000 },\n { title: '45 minutes', value: 45 * 60 * 1000 },\n { title: '1 hour', value: 1 * 60 * 60 * 1000 },\n { title: '4 hours', value: 4 * 60 * 60 * 1000 },\n];\n\nfunction Inputs(): React.ReactElement {\n const [on, setOn] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const [check1, setCheck1] = useState(true);\n const [check2, setCheck2] = useState(false);\n const [check3, setCheck3] = useState(false);\n const [check4, setCheck4] = useState(false);\n const [check5, setCheck5] = useState<boolean | null>(null);\n const [radioValue, setRadioValue] = useState('1');\n const [customTimeValue, setCustomTimeValue] = useState<number>();\n const [autoResizeTextareaValue, setAutoResizeTextareaValue] = useState(\n '-DLiveTableMonitor.updateThreads=8 -DLiveTableMonitor.printDependencyInformation=false -Dassertion.heapDump=true -Drequire.heapDump=true -Dassertion.heapDump=true -Drequire.heapDump=true'\n );\n const handleRadioChange = useCallback((value: string) => {\n setRadioValue(value);\n }, []);\n\n const handleToggleClick = useCallback(() => {\n setOn(!on);\n }, [on]);\n\n const handleSearchInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n },\n []\n );\n\n return (\n <SampleSection name=\"inputs\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Inputs</h2>\n <div className=\"row\">\n <div className=\"col\">\n <form>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInput1\">\n Input Label\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"exampleInput1\"\n aria-describedby=\"emailHelp\"\n placeholder=\"Input Placeholder\"\n />\n </label>\n <small className=\"form-text text-muted\">\n Help text for a form imput\n </small>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInput2\">\n Input Label\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"exampleInput2\"\n aria-describedby=\"emailHelp\"\n placeholder=\"Input Disabled\"\n disabled\n />\n </label>\n <small className=\"form-text text-muted\">Disabled input</small>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInputPassword1\">\n Password\n <input\n type=\"password\"\n className=\"form-control\"\n id=\"exampleInputPassword1\"\n placeholder=\"Password\"\n defaultValue=\"123456789\"\n />\n </label>\n </div>\n <div className=\"form-group\">\n <SearchInput\n value={searchValue}\n placeholder=\"Search Input\"\n onChange={handleSearchInputChange}\n />\n </div>\n </form>\n </div>\n\n <div className=\"col\">\n <form>\n <h5> Checkboxes </h5>\n <Checkbox\n className=\"form-group\"\n checked={check1}\n onChange={() => setCheck1(!check1)}\n >\n Checked checkbox\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n checked={check2}\n onChange={() => setCheck2(!check2)}\n >\n Unchecked checkbox\n </Checkbox>\n <Checkbox className=\"form-group\" disabled checked={null}>\n Disabled checkbox\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n isInvalid\n checked={check3}\n onChange={() => setCheck3(!check3)}\n >\n Invalid checkbox\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n checked={check4}\n onChange={() => setCheck4(!check4)}\n >\n Add radio button\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n checked={check5}\n onChange={() => {\n if (check5 == null) {\n setCheck5(true);\n } else if (!check5) {\n setCheck5(null);\n } else {\n setCheck5(false);\n }\n }}\n >\n Indeterminate Cycle\n </Checkbox>\n </form>\n </div>\n\n <div className=\"col\">\n <form>\n <h5 id=\"inputs-radios-heading\">Radios</h5>\n <RadioGroup\n aria-labelledby=\"inputs-radios-heading\"\n onChange={handleRadioChange}\n value={radioValue}\n isInvalid={radioValue === '4'}\n description=\"Select a radio item\"\n errorMessage={\n radioValue === '4' ? 'Invalid radio selected' : undefined\n }\n >\n <Radio value=\"1\">Toggle this custom radio</Radio>\n <Radio value=\"2\">Or toggle this other custom radio</Radio>\n <Radio value=\"3\" isDisabled>\n Disabled radio\n </Radio>\n <Radio value=\"4\">Invalid radio</Radio>\n <Radio isHidden={!check4} value=\"5\">\n Extra radio item\n </Radio>\n </RadioGroup>\n </form>\n <div className=\"form-group\">\n <h5>Toggle Buttons</h5>\n <div className=\"form-inline justify-content-between\">\n <label>{String(on)}</label>\n <UISwitch on={on} onClick={handleToggleClick} />\n </div>\n <div className=\"form-inline justify-content-between\">\n <label>{String(!on)}</label>\n <UISwitch on={!on} onClick={handleToggleClick} />\n </div>\n <div className=\"form-inline justify-content-between\">\n <label className=\"isInvalid\">isInvalid</label>\n <UISwitch on={!on} isInvalid onClick={handleToggleClick} />\n </div>\n <div className=\"form-inline justify-content-between\">\n <label className=\"disabled\">disabled</label>\n <UISwitch on={!on} disabled onClick={handleToggleClick} />\n </div>\n </div>\n </div>\n\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Selection Menu</h5>\n <Select\n onChange={v => {\n // no-op\n }}\n defaultValue=\"0\"\n className=\"custom-select\"\n >\n <Option disabled value=\"0\">\n Custom Selection\n </Option>\n <Option value=\"1\">One</Option>\n <Option value=\"2\">Two</Option>\n <Option value=\"3\">Three</Option>\n </Select>\n </div>\n\n <div className=\"form-group\">\n <Select\n onChange={v => {\n // no-op\n }}\n defaultValue=\"0\"\n className=\"custom-select\"\n disabled\n >\n <Option disabled value=\"0\">\n Custom Selection\n </Option>\n <Option value=\"1\">One</Option>\n <Option value=\"2\">Two</Option>\n <Option value=\"3\">Three</Option>\n </Select>\n </div>\n\n <div className=\"form-group\">\n <Select\n onChange={v => {\n // no-op\n }}\n defaultValue=\"0\"\n className=\"custom-select\"\n isInvalid\n >\n <Option disabled value=\"0\">\n Custom Selection\n </Option>\n <Option value=\"1\">One</Option>\n <Option value=\"2\">Two</Option>\n <Option value=\"3\">Three</Option>\n </Select>\n </div>\n\n <div className=\"form-group\">\n <h5>Input with Select</h5>\n <div className=\"input-group\">\n <ComboBox aria-label=\"ComboBox\" width=\"100%\">\n {items}\n </ComboBox>\n </div>\n <br />\n <div className=\"input-group\">\n <ComboBox aria-label=\"Disabled ComboBox\" isDisabled width=\"100%\">\n {items}\n </ComboBox>\n </div>\n </div>\n\n <div className=\"form-group\">\n <h5>AutoCompleteInput</h5>\n <AutoCompleteInput options={EXAMPLES} noMatchText=\"No Matches.\" />\n </div>\n </div>\n\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Time Input</h5>\n <TimeInput />\n <br />\n <h5>Date Input</h5>\n <DateInput />\n <br />\n <h5>DateTime Input</h5>\n <DateTimeInput />\n <br />\n <h5>Custom Timeselect</h5>\n <CustomTimeSelect\n options={TIMEOUTS}\n value={customTimeValue ?? null}\n onChange={setCustomTimeValue}\n customText=\"Custom Timeout\"\n placeholder=\"Select a timeout\"\n timeToValue={time => time * 1000}\n />\n </div>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Auto Resize Textarea</h5>\n <AutoResizeTextarea\n value={autoResizeTextareaValue}\n delimiter=\" -\"\n onChange={setAutoResizeTextareaValue}\n />\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\nexport default Inputs;\n","import React, { PureComponent } from 'react';\nimport { SelectValueList } from '@deephaven/components';\n\ninterface SelectValueListInput {\n selectedItems: number[];\n}\n\ninterface Item {\n value: string;\n isSelected: boolean;\n}\ninterface SelectValueListInputState {\n itemCount: number;\n items: Item[];\n offset: number;\n}\n\nclass SelectValueListInput extends PureComponent<\n unknown,\n SelectValueListInputState\n> {\n constructor(props: unknown) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.selectedItems = [];\n\n this.state = {\n items: [],\n offset: 0,\n itemCount: 500000,\n };\n }\n\n handleSelect(itemIndex: number): void {\n const selectedIndex = this.selectedItems.indexOf(itemIndex);\n if (selectedIndex >= 0) {\n this.selectedItems.splice(selectedIndex, 1);\n } else {\n this.selectedItems.push(itemIndex);\n }\n\n const isSelected = selectedIndex < 0;\n const { offset } = this.state;\n let { items } = this.state;\n items = ([] as Item[]).concat(items);\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items });\n }\n\n handleViewportChange(top: number, bottom: number): void {\n const { itemCount } = this.state;\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize);\n const bottomRow = Math.min(bottom + viewportSize, itemCount);\n\n const items = [];\n for (let i = topRow; i <= bottomRow && i <= itemCount; i += 1) {\n const value = `Item ${i}`;\n const isSelected = this.selectedItems.indexOf(i) >= 0;\n items.push({ value, isSelected });\n }\n\n const offset = topRow;\n this.setState({ offset, items });\n }\n\n render(): React.ReactElement {\n const { offset, items, itemCount } = this.state;\n return (\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n );\n }\n}\n\nexport default SelectValueListInput;\n","/* eslint no-console: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { ItemList } from '@deephaven/components';\n\ninterface ItemListInput {\n selectedItems: number[];\n}\n\ninterface ItemListInputProps {\n isMultiSelect: boolean;\n}\n\ninterface ItemListInputState {\n itemCount: number;\n items: { value: string; isSelected: boolean }[];\n offset: number;\n}\n\nclass ItemListInput extends PureComponent<\n ItemListInputProps,\n ItemListInputState\n> {\n static defaultProps: { isMultiSelect: boolean };\n\n constructor(props: ItemListInputProps) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.selectedItems = [];\n\n this.state = {\n items: [],\n offset: 0,\n itemCount: 500000,\n };\n }\n\n handleSelect(itemIndex: number): void {\n const { itemCount } = this.state;\n console.log('Item selected at index', itemIndex, '/', itemCount);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n const { itemCount } = this.state;\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize);\n const bottomRow = Math.min(bottom + viewportSize, itemCount);\n\n const items = [];\n for (let i: number = topRow; i <= bottomRow; i += 1) {\n const value = `Item ${i}`;\n const isSelected = this.selectedItems.indexOf(i) >= 0;\n items.push({ value, isSelected });\n }\n\n const offset = topRow;\n this.setState({ offset, items });\n }\n\n render(): React.ReactElement {\n const { isMultiSelect } = this.props;\n const { offset, items, itemCount } = this.state;\n return (\n <ItemList\n isMultiSelect={isMultiSelect}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n );\n }\n}\n\nexport default ItemListInput;\n","/* eslint no-console: \"off\" */\nimport React from 'react';\nimport SelectValueListInput from './SelectValueListInput';\nimport ItemListInput from './ItemListInput';\nimport SampleSection from './SampleSection';\n\nfunction ItemListInputs(): React.ReactElement {\n return (\n <SampleSection name=\"item-list-inputs\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Item Lists</h2>\n\n <div className=\"row\">\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Select List</h5>\n <div style={{ height: '300px' }}>\n <SelectValueListInput />\n </div>\n </div>\n </div>\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Item List</h5>\n <div style={{ height: '300px' }}>\n <ItemListInput />\n </div>\n </div>\n </div>\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Multi Select Item List</h5>\n <div style={{ height: '300px' }}>\n <ItemListInput isMultiSelect />\n </div>\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default ItemListInputs;\n","import React, { useState } from 'react';\nimport { BasicModal, Button, Checkbox } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction Modals(): React.ReactElement {\n const [openModal, setOpenModal] = useState<number>(0);\n const [check1, setCheck1] = useState<boolean>(true);\n const closeModals = (): void => {\n setOpenModal(0);\n };\n\n function renderBasicModal(buttonCount: number): JSX.Element {\n return (\n <React.Fragment key={buttonCount}>\n <Button\n kind=\"primary\"\n style={{ marginBottom: '1rem', marginRight: '1rem' }}\n onClick={() => {\n setOpenModal(buttonCount);\n }}\n >\n {buttonCount} {buttonCount > 1 ? 'Actions' : 'Action'}\n </Button>\n <BasicModal\n isOpen={openModal === buttonCount}\n headerText=\"Header Text\"\n bodyText=\"This is where the body text goes\"\n onConfirm={closeModals}\n onCancel={buttonCount >= 2 ? closeModals : undefined}\n onDiscard={buttonCount >= 3 ? closeModals : undefined}\n />\n </React.Fragment>\n );\n }\n\n return (\n <SampleSection name=\"modals\">\n <h2 className=\"ui-title\">Basic Modals</h2>\n <div style={{ padding: '1rem' }}>\n {[1, 2, 3].map(buttonCount => renderBasicModal(buttonCount))}\n </div>\n <h2 className=\"ui-title\">Custom Modal</h2>\n <div style={{ padding: '1rem' }}>\n <div className=\"modal-dialog\" role=\"dialog\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <h5 className=\"modal-title\">Modal title</h5>\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div className=\"modal-body\">\n <p>Modal body text goes here.</p>\n\n <Checkbox checked={check1} onChange={() => setCheck1(!check1)}>\n Checked checkbox\n </Checkbox>\n </div>\n <div className=\"modal-footer\">\n <Button\n kind=\"secondary\"\n data-dismiss=\"modal\"\n onClick={() => undefined}\n >\n Close\n </Button>\n <Button kind=\"primary\" onClick={() => undefined}>\n Save changes\n </Button>\n </div>\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Modals;\n","import React from 'react';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction Progress(): React.ReactElement {\n return (\n <SampleSection name=\"progress\">\n <h2 className=\"ui-title\">Progress</h2>\n <div className=\"row\">\n <div className=\"col\">\n <h5>Determinate Progress Loader</h5>\n <br />\n <div className=\"progress\" style={{ marginBottom: '1rem' }}>\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: '25%' }}\n aria-valuenow={25}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n </div>\n\n <div className=\"col\">\n <h5>Indeterminate Progress Spinner</h5>\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n\n <div className=\"col\">\n <h5>Button Progress Spinner</h5>\n <Button\n kind=\"primary\"\n className=\"btn-spinner btn-cancelable\"\n style={{ minWidth: '10rem' }}\n onClick={() => undefined}\n >\n <span>\n <LoadingSpinner className=\"mr-2 loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Connecting</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n </Button>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Progress;\n","import React, { PureComponent } from 'react';\nimport { TimeUtils } from '@deephaven/utils';\nimport { TimeSlider } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\ninterface TimeSliderInputsState {\n initialStartTime: number;\n initialEndTime: number;\n startTime: number;\n endTime: number;\n}\n\nclass TimeSliderInputs extends PureComponent<\n Record<string, never>,\n TimeSliderInputsState\n> {\n constructor(props: Record<string, never>) {\n super(props);\n\n this.handleSliderChange = this.handleSliderChange.bind(this);\n this.state = {\n initialStartTime: 24 * 60 * 60 * 0.25,\n initialEndTime: 24 * 60 * 60 * 0.75,\n startTime: 24 * 60 * 60 * 0.25, // example start and end times\n endTime: 24 * 60 * 60 * 0.75, // example start and end times\n };\n }\n\n handleSliderChange(values: { startTime: number; endTime: number }): void {\n const { startTime, endTime } = values;\n this.setState({ startTime });\n this.setState({ endTime });\n }\n\n render(): React.ReactElement {\n const { startTime, endTime, initialStartTime, initialEndTime } = this.state;\n const isStartModified = startTime !== initialStartTime;\n const isEndModified = endTime !== initialEndTime;\n return (\n <SampleSection name=\"time-slider-inputs\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Time Slider</h2>\n <TimeSlider\n startTime={startTime}\n endTime={endTime}\n isStartModified={isStartModified}\n isEndModified={isEndModified}\n onChange={this.handleSliderChange}\n />\n <p style={isStartModified ? { color: 'var(--dh-color-modified)' } : {}}>\n StartTime: {TimeUtils.formatTime(startTime)}\n </p>\n <p style={isEndModified ? { color: 'var(--dh-color-modified)' } : {}}>\n EndTime: {TimeUtils.formatTime(endTime)}\n </p>\n </SampleSection>\n );\n }\n}\n\nexport default TimeSliderInputs;\n","/* eslint no-alert: \"off\" */\nimport React from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, LoadingSpinner, Tooltip } from '@deephaven/components';\nimport { vsBell, dhFilePrint } from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\nfunction Tooltips(): React.ReactElement {\n const icons = [dhFilePrint, vsBell];\n const iconElements = icons.map(icon => (\n <FontAwesomeIcon key={`${icon.prefix}-${icon.iconName}`} icon={icon} />\n ));\n\n return (\n <SampleSection name=\"tooltips\">\n <h2\n className=\"ui-title\"\n title=\"Make better looking tooltips than this one!\"\n >\n Tooltips\n </h2>\n <div\n className=\"btn btn-primary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n >\n Simple Tooltip\n <Tooltip>Text only content</Tooltip>\n </div>\n <div\n className=\"btn btn-secondary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n >\n Complex Tooltip\n <Tooltip>\n <div>\n Here is some <i>cool</i> <b>text</b>\n </div>\n <hr />\n <div>And some icons down here</div>\n <div>\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n {iconElements}\n </div>\n </Tooltip>\n </div>\n <div\n className=\"btn btn-success\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n >\n Interactive Tooltip\n <Tooltip interactive>\n <div>This tooltip is interactive.</div>\n <hr />\n <Button\n kind=\"primary\"\n onClick={() => {\n alert('Button clicked!');\n }}\n >\n Show Alert\n </Button>\n </Tooltip>\n </div>\n </SampleSection>\n );\n}\n\nexport default Tooltips;\n","import React from 'react';\nimport { Button, ButtonGroup, ToastQueue } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction Toast(): React.ReactElement {\n return (\n <SampleSection name=\"toast\">\n <h2 className=\"ui-title\">Toast</h2>\n <div>\n <ButtonGroup>\n <Button\n kind=\"tertiary\"\n onClick={() =>\n ToastQueue.neutral('Neutral toast', { timeout: 5000 })\n }\n >\n Show neutral toast\n </Button>\n <Button\n kind=\"success\"\n onClick={() =>\n ToastQueue.positive('Positive toast', { timeout: 5000 })\n }\n >\n Show positive toast\n </Button>\n <Button\n kind=\"danger\"\n onClick={() =>\n ToastQueue.negative('Negative toast', { timeout: 5000 })\n }\n >\n Show negative toast\n </Button>\n <Button\n kind=\"primary\"\n onClick={() => ToastQueue.info('Info toast', { timeout: 5000 })}\n >\n Show info toast\n </Button>\n </ButtonGroup>\n </div>\n </SampleSection>\n );\n}\n\nexport default Toast;\n","import React from 'react';\nimport SampleSection from './SampleSection';\n\nfunction Typography(): React.ReactElement {\n return (\n <SampleSection name=\"typography\">\n <h2 className=\"ui-title\">Typography</h2>\n <div className=\"row\">\n <div className=\"col\">\n <h1 className=\"text-muted\" data-no-menu>\n h1. Unused\n </h1>\n <h2 className=\"text-muted\" data-no-menu>\n h2. Unused\n </h2>\n <h3 className=\"text-muted\" data-no-menu>\n h3. Unused\n </h3>\n <h4 data-no-menu>h4. Standard Heading</h4>\n <h5 data-no-menu>h5. Small Heading</h5>\n <h6 className=\"text-muted\" data-no-menu>\n h6. Unused\n </h6>\n </div>\n\n <div className=\"col\">\n <h4>Fonts</h4>\n <p>UI: Fira Sans;</p>\n <p className=\"text-monospace\">Code: Fira Mono;</p>\n <p>Tables: Fira Sans; font-feature-settings: "tnum";</p>\n <p>Default font-size: 14px = 1rem</p>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Typography;\n","/* eslint no-console: \"off\" */\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport { DraggableItemList } from '@deephaven/components';\nimport { type Range } from '@deephaven/utils';\n\ninterface DraggableListInputProps {\n draggablePrefix: string;\n droppableId: string;\n isDragDisabled: boolean;\n isDropDisabled: boolean;\n isMultiSelect: boolean;\n items: Array<unknown>;\n onSelectionChange: (listSelectedRanges: readonly Range[]) => void;\n selectedRanges: Range[];\n}\ninterface DraggableListInputState {\n topRow: number | null;\n bottomRow: number | null;\n}\n\ninterface DraggableListInput {\n itemList: React.RefObject<DraggableItemList<unknown>>;\n selectedItems: Array<unknown>;\n}\nclass DraggableListInput extends PureComponent<\n DraggableListInputProps,\n DraggableListInputState\n> {\n static defaultProps: {\n items: never[];\n draggablePrefix: string;\n droppableId: string;\n isDragDisabled: boolean;\n isDropDisabled: boolean;\n isMultiSelect: boolean;\n onSelectionChange: () => void;\n selectedRanges: never[];\n };\n\n constructor(props: DraggableListInputProps) {\n super(props);\n\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = React.createRef();\n this.selectedItems = [];\n\n this.state = {\n topRow: null,\n bottomRow: null,\n };\n }\n\n focusItem(itemIndex: number): void {\n if (this.itemList.current) {\n this.itemList.current.focusItem(itemIndex);\n }\n }\n\n handleSelectionChange(selectedRanges: readonly Range[]): void {\n console.log('Selection changed', selectedRanges);\n\n const { onSelectionChange } = this.props;\n onSelectionChange(selectedRanges);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n const { items } = this.props;\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize);\n const bottomRow = Math.min(bottom + viewportSize, items.length);\n\n this.setState({ topRow, bottomRow });\n }\n\n getViewportItems = memoize(\n (\n topRow: number | null,\n bottomRow: number | null,\n items: Array<unknown>\n ): Array<unknown> => {\n if (topRow == null || bottomRow == null) {\n return [];\n }\n\n return items.slice(topRow, bottomRow);\n }\n );\n\n render(): React.ReactElement {\n const {\n draggablePrefix,\n droppableId,\n isDragDisabled,\n isDropDisabled,\n isMultiSelect,\n items,\n selectedRanges,\n } = this.props;\n\n const { topRow, bottomRow } = this.state;\n return (\n <DraggableItemList\n draggablePrefix={draggablePrefix}\n droppableId={droppableId}\n isDragDisabled={isDragDisabled}\n isDropDisabled={isDropDisabled}\n isMultiSelect={isMultiSelect}\n itemCount={items.length}\n items={this.getViewportItems(topRow, bottomRow, items)}\n offset={topRow ?? 0}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n ref={this.itemList}\n selectedRanges={selectedRanges}\n />\n );\n }\n}\n\nexport default DraggableListInput;\n","/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\nimport {\n DragDropContext,\n type DragStart,\n type DragUpdate,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport memoize from 'memoizee';\nimport {\n DragUtils,\n DraggableItemList,\n type Range,\n} from '@deephaven/components';\nimport DraggableListInput from './DraggableListInput';\nimport SampleSection from './SampleSection';\n\nconst DRAG_LIST_TITLES = ['Draggable Only', 'Drag and Drop', 'Droppable Only'];\nconst DRAG_LIST_PROPS = [\n { isDropDisabled: true },\n {},\n { isDragDisabled: true },\n];\n\nconst makeItems = (prefix = 'Item', count = 1000): string[] => {\n const items = [];\n for (let i = 0; i < count; i += 1) {\n items.push(`${prefix}-${i}`);\n }\n return items;\n};\n\ninterface DraggableLists {\n animationFrame: number | null;\n}\n\ninterface DraggableListsState {\n items: Array<unknown[]>;\n lists: Array<React.RefObject<DraggableListInput>>;\n selectedRanges: Array<Range[]>;\n}\n\nclass DraggableLists extends Component<\n Record<string, never>,\n DraggableListsState\n> {\n static handleDragStart(e: DragStart): void {\n console.log('handleDragStart', e);\n }\n\n static handleDragUpdate(e: DragUpdate): void {\n console.log('handleDragUpdate', e);\n }\n\n constructor(props: Record<string, never>) {\n super(props);\n\n this.handleDragEnd = this.handleDragEnd.bind(this);\n\n this.animationFrame = null;\n\n const items = [];\n const selectedRanges = [];\n const lists = [];\n for (let i = 0; i < DRAG_LIST_TITLES.length; i += 1) {\n items[i] = makeItems(DRAG_LIST_TITLES[i]);\n selectedRanges[i] = [];\n lists[i] = React.createRef() as React.RefObject<DraggableListInput>;\n }\n\n this.state = {\n items,\n lists,\n selectedRanges,\n };\n }\n\n componentWillUnmount(): void {\n if (this.animationFrame != null) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n handleDragEnd(\n e: DropResult\n ): { items: unknown[][]; selectedRanges: Range[][] } | undefined {\n console.log('handleDragEnd', e);\n\n const { source, destination } = e;\n if (source == null || destination == null) {\n return;\n }\n const sourceListIndex = DraggableItemList.getDraggableIndex(\n source.droppableId\n );\n const destinationListIndex = DraggableItemList.getDraggableIndex(\n destination.droppableId\n );\n const isSameList = sourceListIndex === destinationListIndex;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // @hello-pangea/dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n let insertIndex = destinationIndex;\n this.setState(\n ({ items, selectedRanges }) => {\n const sourceList = [...items[sourceListIndex]];\n const destinationList = isSameList\n ? sourceList\n : [...items[destinationListIndex]];\n\n const draggedItems = DragUtils.reorder(\n sourceList,\n selectedRanges[sourceListIndex],\n destinationList,\n destinationIndex\n );\n\n const newItems = [...items];\n newItems[sourceListIndex] = sourceList;\n newItems[destinationListIndex] = destinationList;\n\n // Select the newly dropped items\n insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges[destinationListIndex]\n )\n : destinationIndex;\n const newSelectedRanges = [...selectedRanges];\n newSelectedRanges[sourceListIndex] = [];\n newSelectedRanges[destinationListIndex] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n return { items: newItems, selectedRanges: newSelectedRanges };\n },\n () => {\n if (this.animationFrame != null) {\n cancelAnimationFrame(this.animationFrame);\n }\n this.animationFrame = requestAnimationFrame(() => {\n this.animationFrame = null;\n\n const { lists } = this.state;\n lists[destinationListIndex]?.current?.focusItem(insertIndex);\n });\n }\n );\n }\n\n handleSelectionChange(\n listIndex: number,\n listSelectedRanges: readonly Range[]\n ): void {\n this.setState(({ selectedRanges }) => {\n const newSelectedRanges = [...selectedRanges];\n newSelectedRanges[listIndex] = [...listSelectedRanges];\n return { selectedRanges: newSelectedRanges };\n });\n }\n\n getSelectionChangeHandler = memoize(\n (listIndex: number) => this.handleSelectionChange.bind(this, listIndex),\n { max: 1000 }\n );\n\n getDraggableList = memoize(\n (\n items: unknown[],\n selectedRanges: Range[],\n ref: React.RefObject<DraggableListInput>,\n listIndex: number\n ) => (\n <DraggableListInput\n items={items}\n droppableId={DraggableItemList.getDraggableId('drop-list', listIndex)}\n draggablePrefix={DraggableItemList.getDraggableId(\n 'draggable-item',\n listIndex\n )}\n onSelectionChange={this.getSelectionChangeHandler(listIndex)}\n isMultiSelect\n ref={ref}\n selectedRanges={selectedRanges}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...DRAG_LIST_PROPS[listIndex]}\n />\n ),\n { max: 1000 }\n );\n\n render(): React.ReactElement {\n const { items, lists, selectedRanges } = this.state;\n return (\n <SampleSection name=\"draggable-lists\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Drag and Drop Lists</h2>\n <div className=\"row\">\n <DragDropContext\n onDragStart={DraggableLists.handleDragStart}\n onDragUpdate={DraggableLists.handleDragUpdate}\n onDragEnd={this.handleDragEnd}\n >\n {DRAG_LIST_TITLES.map((title, i) => (\n <div className=\"col\" key={title}>\n <div className=\"form-group\">\n <h5>{title} List</h5>\n <div style={{ height: '300px' }}>\n {this.getDraggableList(\n items[i],\n selectedRanges[i],\n lists[i],\n i\n )}\n </div>\n </div>\n </div>\n ))}\n </DragDropContext>\n </div>\n </SampleSection>\n );\n }\n}\n\nexport default DraggableLists;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { vsFile, dhTruck, vsListUnordered } from '@deephaven/icons';\nimport { type IconProp } from '@fortawesome/fontawesome-svg-core';\nimport {\n Menu,\n NavTabList,\n Page,\n Stack,\n type NavTabItem,\n} from '@deephaven/components';\nimport { pseudoRandomWithSeed } from './utils';\nimport SampleSection from './SampleSection';\n\nfunction NavTabListExample({\n count = 5,\n activeKey: activeKeyProp = '',\n}: {\n count?: number;\n activeKey?: string;\n}) {\n const [activeKey, setActiveKey] = useState(activeKeyProp);\n const [tabs, setTabs] = useState(() => {\n const tabItems: NavTabItem[] = [];\n for (let i = 0; i < count; i += 1) {\n tabItems.push({ key: `${i}`, title: `Tab ${i}`, isClosable: i > 0 });\n }\n return tabItems;\n });\n\n const handleReorder = useCallback((from: number, to: number) => {\n setTabs(t => {\n const newTabs = [...t];\n const [removed] = newTabs.splice(from, 1);\n newTabs.splice(to, 0, removed);\n return newTabs;\n });\n }, []);\n\n const handleSelect = useCallback((key: string) => {\n setActiveKey(key);\n }, []);\n\n const handleClose = useCallback((key: string) => {\n setTabs(t => t.filter(tab => tab.key !== key));\n }, []);\n\n const makeContextActions = useCallback(\n (tab: NavTabItem) => [\n {\n title: 'Select Tab to the Left',\n group: 10,\n order: 10,\n disabled: tabs[0].key === tab.key,\n action: () => {\n const index = tabs.findIndex(t => t.key === tab.key);\n if (index > 0) {\n setActiveKey(tabs[index - 1].key);\n }\n },\n },\n {\n title: 'Select Tab to the Right',\n group: 30,\n order: 10,\n disabled: tabs[tabs.length - 1].key === tab.key,\n action: () => {\n const index = tabs.findIndex(t => t.key === tab.key);\n if (index < tabs.length - 1) {\n setActiveKey(tabs[index + 1].key);\n }\n },\n },\n ],\n [tabs]\n );\n\n return (\n <NavTabList\n tabs={tabs}\n activeKey={activeKey}\n onSelect={handleSelect}\n onReorder={handleReorder}\n onClose={handleClose}\n makeContextActions={makeContextActions}\n />\n );\n}\n\nenum MENU_ITEM_TYPE {\n SUBMENU = 'SUBMENU',\n PAGE = 'PAGE',\n SWITCH = 'SWITCH',\n}\n\nlet nextId = 0;\nfunction getNewId(): number {\n const newId = nextId;\n nextId += 1;\n return newId;\n}\n\n// Create a seeded random number generator\nconst random = pseudoRandomWithSeed(25);\n\nfunction getRandomCount(min = 1, max = 5): number {\n const r = Number(random.next().value);\n return Math.floor(r * max) + min;\n}\n\ntype MenuItem = {\n type: MENU_ITEM_TYPE;\n id: number;\n};\n\ntype StackItem = {\n title: string;\n items?: MenuItem[];\n};\n\nfunction makeMenuItem(\n type: MENU_ITEM_TYPE,\n id = getNewId()\n): {\n id: number;\n type: MENU_ITEM_TYPE;\n} {\n return { id, type };\n}\n\nfunction makeMenuItems(\n submenuCount: number = getRandomCount(),\n pageCount: number = getRandomCount(),\n switchCount: number = getRandomCount()\n): MenuItem[] {\n const items: MenuItem[] = [];\n\n for (let i = 0; i < submenuCount; i += 1) {\n items.push(makeMenuItem(MENU_ITEM_TYPE.SUBMENU));\n }\n\n for (let i = 0; i < pageCount; i += 1) {\n items.push(makeMenuItem(MENU_ITEM_TYPE.PAGE));\n }\n\n for (let i = 0; i < switchCount; i += 1) {\n items.push(makeMenuItem(MENU_ITEM_TYPE.SWITCH));\n }\n\n return items;\n}\n\nfunction titleForMenuItem({ type, id }: MenuItem): string {\n switch (type) {\n case MENU_ITEM_TYPE.SUBMENU:\n return `Submenu ${id}`;\n case MENU_ITEM_TYPE.PAGE:\n return `Page ${id}`;\n case MENU_ITEM_TYPE.SWITCH:\n return `Switch ${id}`;\n }\n}\n\nfunction iconForMenuItem({ type }: MenuItem): IconProp {\n switch (type) {\n case MENU_ITEM_TYPE.SUBMENU:\n return vsListUnordered;\n case MENU_ITEM_TYPE.PAGE:\n return vsFile;\n case MENU_ITEM_TYPE.SWITCH:\n return dhTruck;\n }\n}\n\nfunction Navigations(): JSX.Element {\n // The menu items on each part of the stack\n const [stackItems, setStackItems] = useState([] as StackItem[]);\n\n // Values that are set on the switched, mapped from ID to value\n const [valueMap, setValueMap] = useState(new Map<number, boolean>());\n\n const push = useCallback(\n (menuItem: StackItem) => {\n setStackItems([...stackItems, menuItem]);\n },\n [stackItems, setStackItems]\n );\n\n const pop = useCallback(() => {\n const newStackItems = [...stackItems];\n newStackItems.pop();\n setStackItems(newStackItems);\n }, [stackItems, setStackItems]);\n\n const popAll = useCallback(() => {\n const newStackItems = [stackItems[0]];\n setStackItems(newStackItems);\n }, [stackItems, setStackItems]);\n\n const toggleValue = useCallback(\n (valueIndex: number) => {\n const value = valueMap.get(valueIndex) ?? false;\n const newValueMap = new Map(valueMap);\n newValueMap.set(valueIndex, !value);\n setValueMap(newValueMap);\n },\n [valueMap, setValueMap]\n );\n\n const handleSelect = useCallback(\n (itemIndex: number) => {\n const stackItem = stackItems[stackItems.length - 1];\n const { items } = stackItem;\n\n if (!items) {\n throw new Error(\n 'Navigation handleSelect triggered without items to select'\n );\n }\n const item = items[itemIndex];\n switch (item.type) {\n case MENU_ITEM_TYPE.PAGE:\n push({ title: titleForMenuItem(item) });\n break;\n case MENU_ITEM_TYPE.SUBMENU:\n push({ title: titleForMenuItem(item), items: makeMenuItems() });\n break;\n case MENU_ITEM_TYPE.SWITCH:\n toggleValue(item.id);\n break;\n }\n },\n [stackItems, toggleValue, push]\n );\n\n useEffect(function setMenu() {\n setStackItems([\n {\n title: 'Navigation Menu',\n items: makeMenuItems(),\n },\n ]);\n }, []);\n\n const stack = useMemo(\n () =>\n stackItems.map(({ items, title }, i) => {\n if (!items) {\n return (\n <Page onBack={pop} onClose={popAll} title={title} key={title}>\n <div>Page content!</div>\n </Page>\n );\n }\n\n let content = null;\n if (items != null) {\n const navMenuItems = items.map(item => {\n const itemTitle = titleForMenuItem(item);\n const icon = iconForMenuItem(item);\n let isOn;\n let onChange;\n if (item.type === MENU_ITEM_TYPE.SWITCH) {\n isOn = valueMap.get(item.id) ?? false;\n onChange = () => {\n handleSelect(item.id);\n };\n }\n return { title: itemTitle, icon, isOn, onChange };\n });\n content = <Menu onSelect={handleSelect} items={navMenuItems} />;\n } else {\n content = <div>Page content</div>;\n }\n\n return (\n <Page\n onBack={i > 0 ? pop : undefined}\n onClose={i > 0 ? popAll : undefined}\n title={title}\n key={title}\n >\n {content}\n </Page>\n );\n }),\n [stackItems, valueMap, handleSelect, pop, popAll]\n );\n\n return (\n <SampleSection name=\"navigations\">\n <h2 className=\"ui-title\">Navigations</h2>\n <div style={{ marginBottom: '1rem' }}>\n <NavTabListExample count={100} activeKey=\"15\" />\n </div>\n <div style={{ marginBottom: '1rem' }}>\n <NavTabListExample />\n </div>\n <div className=\"navigations\">\n <Stack>{stack}</Stack>\n </div>\n </SampleSection>\n );\n}\n\nexport default Navigations;\n","import React, { Fragment, useMemo } from 'react';\nimport cl from 'classnames';\nimport { CopyButton, Tooltip, useTheme } from '@deephaven/components';\nimport { ColorUtils } from '@deephaven/utils';\nimport palette from '@deephaven/components/src/theme/theme-dark/theme-dark-palette.css?inline';\nimport semantic from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic.css?inline';\nimport chart from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic-chart.css?inline';\nimport semanticEditor from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic-editor.css?inline';\nimport semanticGrid from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic-grid.css?inline';\nimport components from '@deephaven/components/src/theme/theme-dark/theme-dark-components.css?inline';\nimport { buildColorGroups, INVALID_COLOR_BORDER_STYLE } from './colorUtils';\nimport SampleSection from './SampleSection';\nimport styles from './ThemeColors.module.scss';\n\nfunction buildSwatchDataGroups() {\n return {\n 'Theme Color Palette': buildColorGroups('palette', palette, 1),\n 'Semantic Colors': buildColorGroups('semantic', semantic, 1),\n 'Chart Colors': buildColorGroups('chart', chart, 2),\n 'Editor Colors': buildColorGroups('editor', semanticEditor, 2),\n 'Grid Colors': buildColorGroups('grid', semanticGrid, 2),\n 'Component Colors': buildColorGroups('component', components, 1),\n };\n}\n\nfunction TooltipContent({ name, value }: { name: string; value: string }) {\n return (\n <>\n <div>{name}</div>\n <div>{value}</div>\n {/* expensive call, don't normalize until popup shown */}\n <div>{ColorUtils.normalizeCssColor(value, true)}</div>\n </>\n );\n}\n\nexport function ThemeColors(): JSX.Element {\n const { selectedThemeKey } = useTheme();\n const swatchDataGroups = useMemo(buildSwatchDataGroups, [selectedThemeKey]);\n\n return (\n <>\n {Object.entries(swatchDataGroups).map(([label, data], i) => {\n if (label === 'Theme Color Palette') {\n return (\n <SampleSection key={label} name={label}>\n <h2 className=\"ui-title\">{label}</h2>\n\n <div className={styles.themeColorsPalette}>\n {Object.entries(data).map(([group, swatchData], index) => (\n <Fragment key={group}>\n {(index === 0 || index === 1) &&\n swatchData.map(({ name }, j) => (\n <div\n style={{\n gridColumnStart: j + 2,\n textAlign: 'center',\n }}\n className=\"mt-3\"\n key={name}\n >\n {name.split('-').pop()}\n </div>\n ))}\n <div className=\"text-right pr-2\">{group}</div>\n {swatchData.map(({ name, value }) => (\n <div\n key={name}\n style={{\n backgroundColor: value,\n border:\n value === '' && name.length > 0\n ? INVALID_COLOR_BORDER_STYLE\n : undefined,\n }}\n className={cl(styles.swatch, 'px-0')}\n >\n <Tooltip interactive>\n <TooltipContent name={name} value={value} />\n </Tooltip>\n {name && <CopyButton copy={name} />}\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </SampleSection>\n );\n }\n return (\n <SampleSection key={label} name={label}>\n <h2 className=\"ui-title\">{label}</h2>\n <div className={styles.themeColors}>\n {Object.entries(data).map(([group, swatchData]) => (\n <div\n key={group}\n // This is the secret sauce for filling columns. The height of\n // each swatch group spans multiple rows (the number of swatches\n // + 1 for the label). This causes the grid to create rows\n // based on the swatch height (35px), and each swatch (also the\n // group label) neatly fits in a grid cell. The grid will put a\n // group in each column and then wrap back around to the first\n // until all groups are placed.\n style={{ gridRow: `span ${swatchData.length + 1}` }}\n >\n <span className={cl(styles.label, styles.capitalize)}>\n {group}\n </span>\n {swatchData.map(({ isLabel, name, value, note }) =>\n isLabel === true ? (\n <span key={name} className={styles.label}>\n {name}\n </span>\n ) : (\n <div\n key={name}\n className={styles.swatch}\n style={{\n border:\n value === '' && name.length > 0\n ? INVALID_COLOR_BORDER_STYLE\n : undefined,\n }}\n >\n <div\n style={{\n backgroundColor: value,\n height: 'var(--swatch-height)',\n aspectRatio: '1 / 1',\n }}\n />\n <Tooltip interactive>\n <TooltipContent name={name} value={value} />\n </Tooltip>\n <span>{name.replace('--dh-color-', '')}</span>\n {name.endsWith('-hue') || note != null ? (\n <span>{note ?? value}</span>\n ) : null}\n <CopyButton copy={name} />\n </div>\n )\n )}\n </div>\n ))}\n </div>\n </SampleSection>\n );\n })}\n </>\n );\n}\n\nexport default ThemeColors;\n","export const MENU_CATEGORY_DATA_ATTRIBUTE = 'data-menu-category';\nexport const NO_MENU_DATA_ATTRIBUTE = 'data-no-menu';\nexport const SAMPLE_SECTION_E2E_IGNORE = 'sample-section-e2e-ignore';\nexport const SPECTRUM_COMPONENT_SAMPLES_ID = 'spectrum-component-samples';\nexport const SPECTRUM_COMPARISON_SAMPLES_ID = 'spectrum-comparison-samples';\n","/* eslint-disable react/style-prop-object */\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport {\n ActionButton,\n Button,\n Cell,\n Checkbox,\n Content,\n ContextualHelp,\n Column,\n ComboBox,\n Form,\n Grid,\n Icon,\n IllustratedMessage,\n Item,\n minmax,\n repeat,\n Row,\n Slider,\n Switch,\n TableBody,\n TableHeader,\n TableView,\n TextField,\n ToggleButton,\n Well,\n DialogTrigger,\n Dialog,\n Header,\n Divider,\n ButtonGroup,\n Flex,\n ListView,\n} from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhTruck, vsEmptyWindow } from '@deephaven/icons';\nimport { Heading, View, Text } from '@deephaven/components';\nimport { SPECTRUM_COMPONENT_SAMPLES_ID } from './constants';\nimport SampleSection from './SampleSection';\n\nexport function SpectrumComponents(): JSX.Element {\n return (\n <div id={SPECTRUM_COMPONENT_SAMPLES_ID}>\n <h2 className=\"ui-title\" data-no-menu>\n Spectrum Components\n </h2>\n <Grid gap={20} columns={minmax('0px', '1fr')}>\n <SampleSection name=\"spectrum-buttons\" component={View}>\n <h3>Buttons</h3>\n <ButtonsSample />\n </SampleSection>\n <SampleSection name=\"spectrum-collections\" component={View}>\n <h3>Collections</h3>\n <TableViewSample />\n </SampleSection>\n <SampleSection name=\"spectrum-content\" component={View}>\n <h3>Content</h3>\n <IllustratedMessageSample />\n </SampleSection>\n <SampleSection name=\"spectrum-forms\" component={View}>\n <h3>Forms</h3>\n <FormsSample />\n </SampleSection>\n <SampleSection name=\"spectrum-overlays\" component={View}>\n <h3>Overlays</h3>\n <Flex gap=\"size-160\">\n <ContextualHelpSample />\n <DialogTrigger>\n <ActionButton>Dialog Trigger</ActionButton>\n {close => (\n <Dialog>\n <Heading>Some Heading</Heading>\n <Header>Some Header</Header>\n <Divider />\n <Content>\n <Text>Are you sure?</Text>\n </Content>\n <ButtonGroup>\n <Button variant=\"secondary\" onPress={close}>\n Cancel\n </Button>\n <Button variant=\"accent\" onPress={close}>\n Confirm\n </Button>\n </ButtonGroup>\n </Dialog>\n )}\n </DialogTrigger>\n <DialogTrigger type=\"popover\">\n <ActionButton>Popover</ActionButton>\n <Dialog>\n <Heading>Popover</Heading>\n <Divider />\n <Content>\n <Text>This is a popover.</Text>\n </Content>\n </Dialog>\n </DialogTrigger>\n </Flex>\n </SampleSection>\n <SampleSection name=\"spectrum-well\" component={View}>\n <h3>Wells</h3>\n <Well>This is a well.</Well>\n </SampleSection>\n </Grid>\n </div>\n );\n}\n\nexport default SpectrumComponents;\n\nfunction ButtonsSample(): JSX.Element {\n return (\n <>\n <ActionButton marginBottom=\"size-200\">\n <Icon>\n <FontAwesomeIcon icon={dhTruck} />\n </Icon>\n <Text>Icon Button</Text>\n </ActionButton>\n <Grid\n autoFlow=\"column\"\n columnGap=\"size-250\"\n rowGap=\"size-150\"\n columns={repeat(4, minmax(0, 'size-2000'))}\n rows={repeat(8, 'size-400')}\n >\n <label>Button style="outline"</label>\n <Button variant=\"primary\" style=\"outline\">\n Primary\n </Button>\n <Button variant=\"secondary\" style=\"outline\">\n Secondary\n </Button>\n <Button variant=\"accent\" style=\"outline\">\n Accent\n </Button>\n <Button variant=\"negative\" style=\"outline\">\n Negative\n </Button>\n <Button variant=\"primary\" staticColor=\"black\" style=\"outline\">\n Static Black\n </Button>\n <Button variant=\"primary\" staticColor=\"white\" style=\"outline\">\n Static White\n </Button>\n <Button variant=\"primary\" isDisabled style=\"outline\">\n Disabled\n </Button>\n\n <label>Button style="fill"</label>\n <Button variant=\"primary\" style=\"fill\">\n Primary\n </Button>\n <Button variant=\"secondary\" style=\"fill\">\n Secondary\n </Button>\n <Button variant=\"accent\" style=\"fill\">\n Accent\n </Button>\n <Button variant=\"negative\" style=\"fill\">\n Negative\n </Button>\n <Button variant=\"primary\" staticColor=\"black\" style=\"fill\">\n Static Black\n </Button>\n <Button variant=\"primary\" staticColor=\"white\" style=\"fill\">\n Static White\n </Button>\n <Button variant=\"primary\" isDisabled style=\"fill\">\n Disabled\n </Button>\n\n <label>Action Button</label>\n <ActionButton>Normal</ActionButton>\n <ActionButton gridRow=\"span 3\" isQuiet>\n Quiet\n </ActionButton>\n <ActionButton staticColor=\"black\">Static Black</ActionButton>\n <ActionButton staticColor=\"white\">Static White</ActionButton>\n <ActionButton isDisabled>Disabled</ActionButton>\n\n <label>Toggle Button</label>\n <ToggleButton>Normal</ToggleButton>\n <ToggleButton isQuiet>Quiet</ToggleButton>\n <ToggleButton gridRow=\"span 2\" isEmphasized>\n Emphasized\n </ToggleButton>\n <ToggleButton staticColor=\"black\">Static Black</ToggleButton>\n <ToggleButton staticColor=\"white\">Static White</ToggleButton>\n <ToggleButton isDisabled>Disabled</ToggleButton>\n </Grid>\n </>\n );\n}\n\nfunction ContextualHelpSample(): JSX.Element {\n return (\n <>\n <Text>Contextual Help</Text>\n <ContextualHelp variant=\"info\">\n <Heading>Need help?</Heading>\n <Content>\n <Text>\n This is a helpful description of the thing you need help with.\n </Text>\n </Content>\n </ContextualHelp>\n </>\n );\n}\n\nfunction FormsSample(): JSX.Element {\n return (\n <Form>\n <Grid gap={20} columns={repeat('auto-fit', '210px')} alignItems=\"end\">\n <TextField label=\"Text Field\" />\n <ComboBox label=\"Combobox\" menuTrigger=\"focus\" defaultSelectedKey=\"two\">\n <Item key=\"one\">One</Item>\n <Item key=\"two\">Two</Item>\n <Item key=\"three\">Three</Item>\n </ComboBox>\n <Checkbox>Checkbox</Checkbox>\n <Slider label=\"Slider\" defaultValue={24} />\n <Switch>Switch</Switch>\n </Grid>\n </Form>\n );\n}\n\nfunction IllustratedMessageSample(): JSX.Element {\n return (\n <IllustratedMessage>\n <Icon size=\"XL\">\n <FontAwesomeIcon icon={vsEmptyWindow} />\n </Icon>\n <Heading>Illustrated Message</Heading>\n <Content>This is the content of the message.</Content>\n </IllustratedMessage>\n );\n}\n\nfunction TableViewSample(): JSX.Element {\n return (\n <>\n <label id=\"table-view-sample\">List View</label>\n <ListView\n aria-labelledby=\"table-view-sample\"\n selectionMode=\"multiple\"\n maxWidth=\"size-6000\"\n marginBottom=\"size-200\"\n >\n <Item>One</Item>\n <Item>Two</Item>\n <Item>Three</Item>\n <Item>Four</Item>\n </ListView>\n\n <label id=\"table-view-sample\">Table View</label>\n <TableView aria-labelledby=\"table-view-sample\" selectionMode=\"multiple\">\n <TableHeader>\n <Column title=\"Person\">\n <Column allowsResizing>Name</Column>\n <Column>Age</Column>\n </Column>\n <Column title=\"Address\">\n <Column allowsResizing>City</Column>\n <Column>State</Column>\n </Column>\n </TableHeader>\n <TableBody>\n <Row>\n <Cell>John</Cell>\n <Cell>42</Cell>\n <Cell>San Francisco</Cell>\n <Cell>CA</Cell>\n </Row>\n <Row>\n <Cell>Jane</Cell>\n <Cell>38</Cell>\n <Cell>San Francisco</Cell>\n <Cell>CA</Cell>\n </Row>\n <Row>\n <Cell>Becky</Cell>\n <Cell>12</Cell>\n <Cell>San Francisco</Cell>\n <Cell>CA</Cell>\n </Row>\n </TableBody>\n </TableView>\n </>\n );\n}\n","import React, { type Key, useCallback, useEffect, useState } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport {\n ActionButton,\n Icon,\n Item,\n Menu,\n MenuTrigger,\n Section,\n} from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsMenu } from '@deephaven/icons';\nimport {\n MENU_CATEGORY_DATA_ATTRIBUTE,\n NO_MENU_DATA_ATTRIBUTE,\n SPECTRUM_COMPARISON_SAMPLES_ID,\n SPECTRUM_COMPONENT_SAMPLES_ID,\n} from './constants';\n\ninterface Link {\n id: string;\n label: string;\n}\ntype LinkCategory = { category: string; items: Link[] };\n\n/**\n * Metadata only div that provides a MENU_CATEGORY_DATA_ATTRIBUTE defining a\n * menu category. These will be queried by the SamplesMenu component to build\n * up the menu sections.\n */\nexport function SampleMenuCategory(\n props: Record<typeof MENU_CATEGORY_DATA_ATTRIBUTE, string>\n): JSX.Element {\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <div {...props} />;\n}\n\n/**\n * Creates a menu from h2, h3 elements on the page and assigns them each an id\n * for hash navigation purposes. If the current hash matches one of the ids, it\n * will scroll to that element. This handles the initial page load scenario.\n * Menu categories are identified by divs with MENU_CATEGORY_DATA_ATTRIBUTE\n * attributes originating from the <SampleMenuCategory> component.\n */\nexport function SamplesMenu(): JSX.Element {\n const [links, setLinks] = useState<LinkCategory[]>([]);\n\n useEffect(() => {\n let currentCategory: LinkCategory = {\n category: '',\n items: [],\n };\n const categories: LinkCategory[] = [currentCategory];\n\n const spectrumComponentsSamples = document.querySelector(\n `#${SPECTRUM_COMPONENT_SAMPLES_ID}`\n );\n\n const spectrumComparisonSamples = document.querySelector(\n `#sample-section-${SPECTRUM_COMPARISON_SAMPLES_ID}`\n );\n\n document\n .querySelectorAll(`h2,h3,[${MENU_CATEGORY_DATA_ATTRIBUTE}]`)\n .forEach(headingEl => {\n if (\n headingEl.textContent == null ||\n headingEl.hasAttribute(NO_MENU_DATA_ATTRIBUTE)\n ) {\n return;\n }\n\n // Create a new category section\n if (headingEl.hasAttribute(MENU_CATEGORY_DATA_ATTRIBUTE)) {\n currentCategory = {\n category:\n headingEl.getAttribute(MENU_CATEGORY_DATA_ATTRIBUTE) ?? '',\n items: [],\n };\n categories.push(currentCategory);\n\n return;\n }\n\n const idPrefix =\n // eslint-disable-next-line no-nested-ternary\n spectrumComponentsSamples?.contains(headingEl) === true\n ? 'spectrum-'\n : spectrumComparisonSamples?.contains(headingEl) === true\n ? 'spectrum-compare-'\n : '';\n\n const id = `${idPrefix}${headingEl.textContent}`\n .toLowerCase()\n .replace(/\\s/g, '-');\n\n // eslint-disable-next-line no-param-reassign\n headingEl.id = id;\n\n currentCategory.items.push({ id, label: headingEl.textContent });\n });\n\n setLinks(categories);\n }, []);\n\n useEffect(() => {\n const el =\n window.location.hash === ''\n ? null\n : document.querySelector(window.location.hash);\n\n // Give everything a chance to render before scrolling\n setTimeout(() => {\n if (el) {\n el.scrollIntoView();\n } else {\n // NavTabList sample causes auto scrolling to middle of page, so we\n // have to explicilty scroll back to the top of the page\n window.scrollTo({\n top: 0,\n behavior: 'auto',\n });\n }\n }, 0);\n }, []);\n\n const onAction = useCallback((key: Key) => {\n const id = String(key);\n const el = document.getElementById(id);\n\n el?.scrollIntoView({\n behavior: 'smooth',\n });\n\n // Keep hash in sync for page reloads, but give some delay to allow smooth\n // scrolling above\n setTimeout(() => {\n window.location.hash = id;\n }, 1000);\n }, []);\n\n return (\n <MenuTrigger>\n <ActionButton>\n <Icon>\n <FontAwesomeIcon icon={vsMenu} />\n </Icon>\n </ActionButton>\n <Menu items={links} onAction={onAction}>\n {({ category, items }) => (\n <Section key={category} items={items} title={category}>\n {({ id, label }) => <Item key={id}>{label}</Item>}\n </Section>\n )}\n </Menu>\n </MenuTrigger>\n );\n}\n\nexport default SamplesMenu;\n","import React, { useCallback, useEffect } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { Button, Icon } from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronUp } from '@deephaven/icons';\nimport './GotoTopButton.css';\n\n/**\n * Button that scrolls to top of styleguide and clears location hash.\n */\nexport function GotoTopButton(): JSX.Element {\n const gotoTop = useCallback(() => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n\n // Small delay to give scrolling a chance to move smoothly to top\n setTimeout(() => {\n window.location.hash = '';\n }, 500);\n }, []);\n\n // Set data-scroll=\"true\" on the html element when the user scrolls down to the\n // first h2. CSS uses this to only show the button when the user has scrolled.\n useEffect(() => {\n const firstH2Top = document.querySelector('h2')?.offsetTop ?? 0;\n\n function onScroll() {\n document.documentElement.dataset.scroll = String(\n window.scrollY >= firstH2Top\n );\n }\n document.addEventListener('scroll', onScroll, { passive: true });\n return () => {\n document.removeEventListener('scroll', onScroll);\n };\n }, []);\n\n return (\n <Button\n UNSAFE_className=\"goto-top-button\"\n variant=\"accent\"\n onPress={gotoTop}\n >\n <Icon>\n <FontAwesomeIcon icon={vsChevronUp} />\n </Icon>\n </Button>\n );\n}\n\nexport default GotoTopButton;\n","import React from 'react';\nimport classnames from 'classnames';\nimport SampleSection from './SampleSection';\n\nconst tabs = ['Tab 1', 'Tab 2', 'Tab 3'];\n\nfunction Tab({\n isActive,\n title,\n}: {\n isActive: boolean;\n title: string;\n}): JSX.Element {\n return (\n <li className={classnames('lm_tab', isActive && 'lm_active')}>\n <span className=\"lm_title_before\" />\n <span className=\"lm_title\">{title}</span>\n <span className=\"lm_close_tab\" />\n </li>\n );\n}\n\nexport function GoldenLayout(): JSX.Element {\n return (\n <SampleSection name=\"golden-layout\">\n <h2 className=\"ui-title\">Golden Layout</h2>\n {[false, true].map(isMaximised => (\n <React.Fragment key={String(isMaximised)}>\n <h5>{isMaximised ? 'Minimized' : 'Maximised'}</h5>\n <div\n style={{ position: 'relative', border: 'none' }}\n className={isMaximised ? 'lm_maximised' : undefined}\n >\n <div className=\"lm_header\">\n <ul className=\"lm_tabs\">\n {tabs.map((tab, i) => (\n <Tab key={tab} isActive={i === 0} title={tab} />\n ))}\n </ul>\n <ul className=\"lm_controls\">\n <li className=\"lm_tabpreviousbutton\" />\n <li className=\"lm_tabnextbutton\" />\n <li className=\"lm_maximise\" />\n <li className=\"lm_popout\" />\n <li className=\"lm_tabdropdown\" />\n <li className=\"lm_close\" />\n </ul>\n </div>\n </div>\n </React.Fragment>\n ))}\n </SampleSection>\n );\n}\n\nexport default GoldenLayout;\n","import React from 'react';\nimport {\n View,\n RandomAreaPlotAnimation as Animation,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nexport function RandomAreaPlotAnimation(): JSX.Element {\n return (\n <SampleSection name=\"animations\" className=\"sample-section-e2e-ignore\">\n <h2 className=\"ui-title\">Animations</h2>\n <View position=\"relative\" height={400}>\n <Animation />\n </View>\n </SampleSection>\n );\n}\n\nexport default RandomAreaPlotAnimation;\n","/* eslint-disable react/style-prop-object */\nimport React, { Fragment, useState } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport {\n ActionButton,\n Button,\n Checkbox,\n Flex,\n Grid,\n Icon,\n Item,\n Picker,\n type SpectrumButtonProps,\n TextField,\n} from '@adobe/react-spectrum';\nimport {\n Button as BootstrapButtonOld,\n Checkbox as CheckboxOld,\n Select,\n View,\n Text,\n} from '@deephaven/components';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { vsPlay } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n SAMPLE_SECTION_E2E_IGNORE,\n SPECTRUM_COMPARISON_SAMPLES_ID,\n} from './constants';\nimport SampleSection from './SampleSection';\n\ntype BootstrapLevel = 'primary' | 'secondary' | 'danger';\n\nconst buttons: [BootstrapLevel, SpectrumButtonProps['variant']][] = [\n ['primary', 'accent'],\n ['secondary', 'primary'],\n ['danger', 'negative'],\n];\n\nexport function SpectrumComparison(): JSX.Element {\n const [isChecked, setIsChecked] = useState(false);\n\n return (\n <SampleSection\n name={SPECTRUM_COMPARISON_SAMPLES_ID}\n className={SAMPLE_SECTION_E2E_IGNORE}\n >\n <h2 className=\"ui-title\" data-no-menu>\n Bootstrap / Spectrum Comparison\n </h2>\n <Flex gap={20} wrap>\n <View>\n <h3>Buttons - Filled</h3>\n <Grid\n gap={20}\n columns=\"repeat(2, 120px)\"\n autoRows=\"40x\"\n justifyItems=\"start\"\n alignItems=\"start\"\n >\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n {buttons.map(([level, variant]) => (\n <Fragment key={level}>\n <BootstrapButtonOld\n onClick={EMPTY_FUNCTION}\n kind={level}\n icon={vsPlay}\n >\n Button\n </BootstrapButtonOld>\n\n <Button variant={variant} style=\"fill\">\n <Icon>\n <FontAwesomeIcon icon={vsPlay} />\n </Icon>\n <Text>Button</Text>\n </Button>\n </Fragment>\n ))}\n\n <BootstrapButtonOld\n onClick={EMPTY_FUNCTION}\n kind=\"primary\"\n disabled\n >\n Disabled\n </BootstrapButtonOld>\n <Button variant=\"accent\" style=\"fill\" isDisabled>\n Disabled\n </Button>\n </Grid>\n </View>\n\n <View>\n <h3>Buttons - Outline</h3>\n <Grid gap={20} columns=\"repeat(2, 120px)\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n {buttons.map(([level, variant]) => (\n <Fragment key={level}>\n <BootstrapButtonOld onClick={EMPTY_FUNCTION} kind={level}>\n {level}\n </BootstrapButtonOld>\n <Button variant={variant} style=\"outline\">\n {variant}\n </Button>\n </Fragment>\n ))}\n\n <BootstrapButtonOld\n onClick={EMPTY_FUNCTION}\n kind=\"secondary\"\n disabled\n >\n Disabled\n </BootstrapButtonOld>\n <Button variant=\"primary\" style=\"outline\" isDisabled>\n Disabled\n </Button>\n </Grid>\n </View>\n\n <View>\n <h3>Action Buttons</h3>\n\n <Grid gap={20} columns=\"repeat(2, 120px)\" autoRows=\"40x\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n <BootstrapButtonOld onClick={EMPTY_FUNCTION} kind=\"inline\">\n Inline\n </BootstrapButtonOld>\n <ActionButton>Action</ActionButton>\n\n <BootstrapButtonOld onClick={EMPTY_FUNCTION} kind=\"inline\" disabled>\n Disabled\n </BootstrapButtonOld>\n <ActionButton isDisabled>Disabled</ActionButton>\n </Grid>\n </View>\n\n <View>\n <h3>Pickers</h3>\n <Grid gap={20} columns=\"repeat(2, 192px)\" autoRows=\"40x\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n {[false, true].map(isDisabled => (\n <Fragment key={String(isDisabled)}>\n <div>\n <label className=\"input-label\">Select</label>\n <Select\n disabled={isDisabled}\n placeholder=\"Select\"\n onChange={_v => {\n // no-op\n }}\n className=\"custom-select\"\n >\n <option disabled value=\"0\">\n {isDisabled ? '' : 'Disabled '}Select\n </option>\n <option value=\"1\">One</option>\n <option value=\"2\">Two</option>\n <option value=\"3\">Three</option>\n </Select>\n </div>\n <Picker\n isDisabled={isDisabled}\n label={isDisabled ? 'Disabled Picker' : 'Picker'}\n placeholder=\"Picker\"\n >\n <Item key=\"1\">One</Item>\n <Item key=\"2\">Two</Item>\n <Item key=\"3\">Three</Item>\n </Picker>\n </Fragment>\n ))}\n </Grid>\n </View>\n\n <View>\n <h3>Text Field</h3>\n <Grid gap={20} columns=\"repeat(2, 192px)\" autoRows=\"40x\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n <div>\n <label className=\"input-label\">type=text</label>\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Text Input\"\n />\n </div>\n <TextField type=\"text\" label=\"TextField\" />\n\n <div>\n <label className=\"input-label\">Disabled</label>\n <input\n type=\"text\"\n className=\"form-control\"\n disabled\n value=\"Disabled\"\n />\n </div>\n <TextField\n type=\"text\"\n label=\"Disabled\"\n isDisabled\n value=\"Disabled\"\n />\n </Grid>\n </View>\n\n <View>\n <h3>Checkbox</h3>\n <Grid gap={20} columns=\"repeat(2, 120px)\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n <CheckboxOld\n className=\"form-group\"\n checked={isChecked}\n onChange={() => setIsChecked(v => !v)}\n >\n Checkbox\n </CheckboxOld>\n <Checkbox>Checkbox</Checkbox>\n\n <CheckboxOld\n className=\"form-group\"\n disabled\n checked={isChecked}\n onChange={() => setIsChecked(v => !v)}\n >\n Disabled\n </CheckboxOld>\n <Checkbox isDisabled>Disabled</Checkbox>\n </Grid>\n </View>\n </Flex>\n </SampleSection>\n );\n}\n\nexport default SpectrumComparison;\n","import React, { cloneElement, useCallback, useState } from 'react';\nimport {\n Checkbox,\n ComboBox,\n ComboBoxNormalized,\n Flex,\n Icon,\n Item,\n type ItemKey,\n PICKER_ITEM_HEIGHTS,\n PICKER_TOP_OFFSET,\n Picker,\n PickerNormalized,\n Section,\n Text,\n} from '@deephaven/components';\nimport { vsPerson } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getPositionOfSelectedItem } from '@deephaven/react-hooks';\nimport { generateItemElements, generateNormalizedItems } from './utils';\nimport SampleSection from './SampleSection';\n\n// Generate enough items to require scrolling\nconst items = [...generateNormalizedItems(52)];\nconst itemsWithIcons = [...generateNormalizedItems(52, { icons: true })];\nconst itemElementsA = [...generateItemElements(0, 51)];\nconst itemElementsB = [...generateItemElements(52, 103)];\nconst itemElementsC = [...generateItemElements(104, 155)];\nconst itemElementsD = [...generateItemElements(156, 207)];\nconst itemElementsE = [...generateItemElements(208, 259)];\n\nconst mixedItemsWithIconsNoDescriptions = [\n 'String 1',\n 'String 2',\n 'String 3',\n '',\n 'Some really long text that should get truncated',\n 444,\n 999,\n true,\n false,\n ...itemElementsA.map((itemEl, i) =>\n i % 5 > 0\n ? itemEl\n : cloneElement(itemEl, {\n ...itemEl.props,\n children: [\n <PersonIcon key={`icon-${itemEl.props.children}`} />,\n <Text key={`label-${itemEl.props.children}`}>\n {itemEl.props.children}\n </Text>,\n ],\n })\n ),\n];\n\nfunction PersonIcon(): JSX.Element {\n return (\n <Icon>\n <FontAwesomeIcon icon={vsPerson} />\n </Icon>\n );\n}\n\nexport function Pickers(): JSX.Element {\n const [selectedKey, setSelectedKey] = useState<ItemKey | null>(200);\n\n const [showIcons, setShowIcons] = useState(true);\n\n const [filteredItems, setFilteredItems] = useState(itemsWithIcons);\n\n const onSearch = useCallback(\n (searchText: string) =>\n setFilteredItems(\n searchText === ''\n ? itemsWithIcons\n : itemsWithIcons.filter(\n ({ item }) => item?.textValue?.includes(searchText)\n )\n ),\n []\n );\n\n const getInitialScrollPosition = useCallback(\n async () =>\n getPositionOfSelectedItem({\n keyedItems: items,\n itemHeight: PICKER_ITEM_HEIGHTS.medium,\n selectedKey,\n topOffset: PICKER_TOP_OFFSET,\n }),\n [selectedKey]\n );\n\n const onChange = useCallback((key: ItemKey | null): void => {\n setSelectedKey(key);\n }, []);\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <SampleSection name=\"pickers\">\n <h2 className=\"ui-title\">Pickers</h2>\n\n <Flex gap={14} direction=\"column\">\n {[Picker, ComboBox].map(Component => {\n const label = (suffix: string) =>\n `${Component === Picker ? 'Picker' : 'ComboBox'} (${suffix})`;\n\n return (\n <Flex key={Component.displayName} direction=\"row\" gap={14}>\n <Component\n label={label('Single Child')}\n tooltip={{ placement: 'bottom-end' }}\n >\n <Item textValue=\"Aaa\">Aaa</Item>\n </Component>\n <Component\n label={label('Mixed Children Types')}\n defaultSelectedKey=\"999\"\n tooltip\n >\n {mixedItemsWithIconsNoDescriptions}\n </Component>\n <Component label={label('Sections')} tooltip>\n {/* eslint-disable react/jsx-curly-brace-presence */}\n {'String 1'}\n {'String 2'}\n {'String 3'}\n <Section title=\"Section\">\n <Item textValue=\"Item Aaa\">Item Aaa</Item>\n <Item textValue=\"Item Bbb\">Item Bbb</Item>\n <Item textValue=\"Complex Ccc\">\n <PersonIcon />\n <Text>Complex Ccc</Text>\n </Item>\n </Section>\n <Section key=\"Key B\">\n <Item textValue=\"Item Ddd\">Item Ddd</Item>\n <Item textValue=\"Item Eee\">Item Eee</Item>\n <Item textValue=\"Complex Fff\">\n <PersonIcon />\n <Text>Complex Fff</Text>\n </Item>\n <Item textValue=\"Ggg\">\n <PersonIcon />\n <Text>Label</Text>\n <Text slot=\"description\">Description</Text>\n </Item>\n <Item textValue=\"Hhh\">\n <PersonIcon />\n <Text>Label that causes overflow</Text>\n <Text slot=\"description\">\n Description that causes overflow\n </Text>\n </Item>\n </Section>\n <Section title=\"Section A\">{itemElementsA}</Section>\n <Section title=\"Section B\">{itemElementsB}</Section>\n <Section key=\"Section C\">{itemElementsC}</Section>\n <Section key=\"Section D\">{itemElementsD}</Section>\n <Section title=\"Section E\">{itemElementsE}</Section>\n </Component>\n </Flex>\n );\n })}\n\n <Checkbox\n checked={showIcons}\n onChange={e => setShowIcons(e.currentTarget.checked)}\n >\n Show Ions\n </Checkbox>\n\n <Flex direction=\"row\" gap={14}>\n <PickerNormalized\n label=\"Picker (Controlled)\"\n getInitialScrollPosition={getInitialScrollPosition}\n normalizedItems={itemsWithIcons}\n selectedKey={selectedKey}\n showItemIcons={showIcons}\n onChange={onChange}\n />\n <ComboBoxNormalized\n label=\"ComboBox (Controlled)\"\n getInitialScrollPosition={getInitialScrollPosition}\n normalizedItems={filteredItems}\n selectedKey={selectedKey}\n showItemIcons={showIcons}\n onChange={onChange}\n validationState={selectedKey == null ? 'invalid' : 'valid'}\n errorMessage=\"Please select an item.\"\n onInputChange={onSearch}\n />\n </Flex>\n </Flex>\n </SampleSection>\n );\n}\n\nexport default Pickers;\n","import React, { type ReactNode, useCallback, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { BoxAlignmentStyleProps, StyleProps } from '@react-types/shared';\nimport {\n Grid,\n Icon,\n Item,\n LIST_VIEW_ROW_HEIGHTS,\n ListView,\n ListViewNormalized,\n type ItemKey,\n Text,\n Flex,\n Checkbox,\n type ListViewProps,\n RadioGroup,\n Radio,\n useSpectrumThemeProvider,\n ListActionGroup,\n} from '@deephaven/components';\nimport { vsAccount, vsEdit, vsPerson, vsTrash } from '@deephaven/icons';\nimport { generateNormalizedItems } from './utils';\nimport SampleSection from './SampleSection';\n\n// Generate enough items to require scrolling\nconst itemsWithIcons = [...generateNormalizedItems(52, { icons: true })];\n\nfunction AccountIllustration(): JSX.Element {\n return (\n // Images in ListView items require a slot of 'image' or 'illustration' to\n // be set in order to be positioned correctly:\n // https://github.com/adobe/react-spectrum/blob/784737effd44b9d5e2b1316e690da44555eafd7e/packages/%40react-spectrum/list/src/ListViewItem.tsx#L266-L267\n <Icon slot=\"illustration\">\n <FontAwesomeIcon icon={vsAccount} />\n </Icon>\n );\n}\n\ninterface LabeledProps extends BoxAlignmentStyleProps, StyleProps {\n label: string;\n direction?: 'row' | 'column';\n children: ReactNode;\n}\n\nconst LABELED_FLEX_CONTAINER_HEIGHTS = {\n gap: 10,\n label: {\n medium: 21,\n large: 25.5,\n },\n};\n\nfunction LabeledFlexContainer({\n label,\n direction = 'column',\n children,\n ...styleProps\n}: LabeledProps) {\n return (\n <Flex\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n direction={direction}\n gap={LABELED_FLEX_CONTAINER_HEIGHTS.gap}\n >\n <Text>{label}</Text>\n {children}\n </Flex>\n );\n}\n\nexport function ListViews(): JSX.Element {\n const { scale } = useSpectrumThemeProvider();\n const [selectedKeys, setSelectedKeys] = useState<'all' | Iterable<ItemKey>>(\n []\n );\n\n const [density, setDensity] = useState<ListViewProps['density']>('compact');\n\n // Calculate the height of the single child example\n const singleChildExampleHeight =\n LABELED_FLEX_CONTAINER_HEIGHTS.label[scale] +\n LABELED_FLEX_CONTAINER_HEIGHTS.gap +\n 2 + // listview border\n LIST_VIEW_ROW_HEIGHTS[density ?? 'compact'][scale];\n\n const onDensityChange = useCallback((value: string) => {\n setDensity(value as ListViewProps['density']);\n }, []);\n\n const [showIcons, setShowIcons] = useState(true);\n const [lastActionKey, setLastActionKey] = useState<ItemKey>('');\n const [lastActionItemKey, setLastActionItemKey] = useState<ItemKey>('');\n\n const onAction = useCallback((actionKey: ItemKey, itemKey: ItemKey): void => {\n setLastActionKey(actionKey);\n setLastActionItemKey(itemKey);\n }, []);\n\n const onChange = useCallback((keys: 'all' | Iterable<ItemKey>): void => {\n setSelectedKeys(keys);\n }, []);\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <SampleSection name=\"list-views\">\n <h2 className=\"ui-title\">List View</h2>\n\n <Grid\n gap={14}\n height=\"size-6000\"\n columns=\"1fr 1fr 1fr\"\n rows={`auto minmax(${singleChildExampleHeight}px, auto) 1fr auto 1fr`}\n >\n <LabeledFlexContainer\n alignItems=\"center\"\n direction=\"row\"\n label=\"Density\"\n gridColumn=\"span 3\"\n >\n <RadioGroup\n aria-label=\"Density\"\n orientation=\"horizontal\"\n value={density}\n onChange={onDensityChange}\n >\n <Radio value=\"compact\">Compact</Radio>\n <Radio value=\"regular\">Regular</Radio>\n <Radio value=\"spacious\">Spacious</Radio>\n </RadioGroup>\n </LabeledFlexContainer>\n\n <LabeledFlexContainer\n label=\"Single Child\"\n gridColumn=\"span 3\"\n height=\"100%\"\n >\n <ListView\n density={density}\n aria-label=\"Single Child\"\n selectionMode=\"multiple\"\n >\n <Item textValue=\"Aaa\">Aaa</Item>\n </ListView>\n </LabeledFlexContainer>\n\n <LabeledFlexContainer label=\"Icons\" gridColumn=\"span 2\">\n <ListView\n aria-label=\"Icon\"\n density={density}\n selectionMode=\"multiple\"\n >\n <Item textValue=\"Item with icon A\">\n <AccountIllustration />\n <Text>Item with icon A</Text>\n </Item>\n <Item textValue=\"Item with icon B\">\n <AccountIllustration />\n <Text>Item with icon B</Text>\n </Item>\n <Item textValue=\"Item with icon C\">\n <AccountIllustration />\n <Text>Item with icon C</Text>\n </Item>\n <Item textValue=\"Item with icon D\">\n <AccountIllustration />\n <Text>Item with icon D with overflowing content</Text>\n </Item>\n <Item textValue=\"Item with icon E\">\n <AccountIllustration />\n <Text>Item with icon E</Text>\n </Item>\n </ListView>\n </LabeledFlexContainer>\n\n <LabeledFlexContainer label=\"Mixed Children Types\">\n <ListView\n aria-label=\"Mixed Children Types\"\n density={density}\n maxWidth=\"size-2400\"\n selectionMode=\"multiple\"\n defaultSelectedKeys={['999', 444]}\n >\n {/* eslint-disable react/jsx-curly-brace-presence */}\n {'String 1'}\n {'String 2'}\n {'String 3'}\n {''}\n {'Some really long text that should get truncated'}\n {/* eslint-enable react/jsx-curly-brace-presence */}\n {444}\n {999}\n {true}\n {false}\n <Item textValue=\"Item Aaa\">Item Aaa</Item>\n <Item textValue=\"Item Bbb\">Item Bbb</Item>\n <Item textValue=\"Item with Description\">\n <Text>Item with Description</Text>\n <Text slot=\"description\">Description</Text>\n </Item>\n <Item textValue=\"Complex Ccc\">\n <Icon slot=\"image\">\n <FontAwesomeIcon icon={vsPerson} />\n </Icon>\n <Text>Complex Ccc with text that should be truncated</Text>\n </Item>\n <Item textValue=\"Complex Ccc with Description\">\n <Icon slot=\"image\">\n <FontAwesomeIcon icon={vsPerson} />\n </Icon>\n <Text>Complex Ccc with text that should be truncated</Text>\n <Text slot=\"description\">Description</Text>\n </Item>\n </ListView>\n </LabeledFlexContainer>\n\n <Flex gridColumn=\"span 3\" gap={14}>\n <Checkbox\n checked={showIcons}\n onChange={e => setShowIcons(e.currentTarget.checked)}\n >\n Show Ions\n </Checkbox>\n </Flex>\n\n <LabeledFlexContainer label=\"Controlled\" gridColumn=\"span 2\">\n <ListViewNormalized\n aria-label=\"Controlled\"\n density={density}\n normalizedItems={itemsWithIcons}\n selectionMode=\"multiple\"\n selectedKeys={selectedKeys}\n showItemIcons={showIcons}\n onChange={onChange}\n actions={\n <ListActionGroup\n overflowMode=\"collapse\"\n buttonLabelBehavior=\"collapse\"\n maxWidth={80}\n onAction={onAction}\n >\n <Item key=\"Edit\">\n <Icon>\n <FontAwesomeIcon icon={vsEdit} />\n </Icon>\n <Text>Edit</Text>\n </Item>\n <Item key=\"Delete\">\n <Icon>\n <FontAwesomeIcon icon={vsTrash} />\n </Icon>\n <Text>Delete</Text>\n </Item>\n </ListActionGroup>\n }\n />\n {lastActionKey} {lastActionItemKey}\n </LabeledFlexContainer>\n </Grid>\n </SampleSection>\n );\n}\n\nexport default ListViews;\n","/* eslint no-alert: \"off\" */\nimport React, { type CSSProperties } from 'react';\nimport { ErrorView } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction ErrorViews(): React.ReactElement {\n const columnStyle: CSSProperties = {\n maxHeight: 500,\n display: 'flex',\n flexDirection: 'column',\n maxWidth: 400,\n };\n\n const shortErrorMessage = 'This is a short error message';\n const midErrorMessage = 'Mid length error message\\n'.repeat(10);\n const longErrorMessage = 'Really long error message\\n'.repeat(100);\n\n const midErrorType = 'MidError';\n const longErrorType = 'SuperLongErrorMessageType';\n\n return (\n <SampleSection name=\"error-views\">\n <h2 className=\"ui-title\" title=\"Display error messages easily\">\n Error Views\n </h2>\n <h3>Expandable</h3>\n <div className=\"row\" style={{ maxHeight: 500 }}>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={shortErrorMessage} />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={midErrorMessage} type={midErrorType} />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={longErrorMessage} type={longErrorType} />\n </div>\n </div>\n <h3>Always expanded</h3>\n <div className=\"row\" style={{ maxHeight: 500 }}>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={shortErrorMessage} isExpanded />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={midErrorMessage} type={midErrorType} isExpanded />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView\n message={longErrorMessage}\n type={longErrorType}\n isExpanded\n />\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default ErrorViews;\n","import React, { useState } from 'react';\nimport {\n XComponentMapProvider,\n createXComponent,\n Button,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\ntype FooComponentProps = { value: string };\n\nfunction FooComponent({ value }: FooComponentProps) {\n return (\n <Button kind=\"primary\" onClick={() => undefined}>\n {value}\n </Button>\n );\n}\nFooComponent.displayName = 'FooComponent';\n\n// Create an XComponent from FooComponent to allow for replacement\nconst XFooComponent = createXComponent(FooComponent);\n\nfunction NestedFooComponent({ value }: FooComponentProps) {\n // We're using the XComponent version so this panel can be replaced if it is mapped from a parent context to a replacement\n return <XFooComponent value={`${value}.${value}`} />;\n}\n\nfunction MultiFooComponent({ value }: FooComponentProps) {\n // Show multiple instances getting replaced\n return (\n <div>\n <XFooComponent value={value} />\n <XFooComponent value={value} />\n </div>\n );\n}\n\n// What we're replacing the XFooComponent with.\nfunction ReverseFooComponent({ value }: FooComponentProps) {\n return (\n <Button kind=\"danger\" onClick={() => undefined}>\n {value.split('').reverse().join('')}\n </Button>\n );\n}\n\n/**\n * Some examples showing usage of XComponents.\n */\nexport function XComponents(): JSX.Element {\n const [value, setValue] = useState('hello');\n\n return (\n <SampleSection name=\"xcomponents\">\n <h2 className=\"ui-title\">XComponents</h2>\n <p>\n XComponents are a way to replace a component with another component\n without needing to pass props all the way down the component tree. This\n can be useful in cases where we have a component deep down in the\n component tree that we want to replace with a different component, but\n don't want to have to provide props at the top level just to hook\n into that.\n <br />\n Below is a component that is simply a button displaying the text\n inputted in the input field. We will replace this component with a new\n component that reverses the text, straight up, then in a nested\n scenario, and then multiple instances.\n </p>\n <div className=\"form-group\">\n <label htmlFor=\"xcomponentsInput\">\n Input Value:\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"xcomponentsInput\"\n value={value}\n onChange={e => setValue(e.target.value)}\n />\n </label>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n <small>Original Component</small>\n <div>\n <XFooComponent value={value} />\n </div>\n\n <small>Replaced with Reverse</small>\n <div>\n <XComponentMapProvider\n value={new Map([[XFooComponent, ReverseFooComponent]])}\n >\n <XFooComponent value={value} />\n </XComponentMapProvider>\n </div>\n </div>\n <div className=\"col\">\n <small>Nested component replaced</small>\n <div>\n <XComponentMapProvider\n value={new Map([[XFooComponent, ReverseFooComponent]])}\n >\n {/* The `FooComponent` that gets replaced is from within the `NestedFooComponent` */}\n <NestedFooComponent value={value} />\n </XComponentMapProvider>\n </div>\n </div>\n <div className=\"col\">\n <small>Multiple Components replaced</small>\n <div>\n <XComponentMapProvider\n value={new Map([[XFooComponent, ReverseFooComponent]])}\n >\n <MultiFooComponent value={value} />\n </XComponentMapProvider>\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default XComponents;\n","import React from 'react';\nimport { CheckboxGroup, Flex, Text } from '@deephaven/components';\n// eslint-disable-next-line no-restricted-imports\nimport { Checkbox } from '@adobe/react-spectrum';\nimport SampleSection from './SampleSection';\n\nexport function CheckboxGroups(): JSX.Element {\n return (\n <SampleSection name=\"checkbox-groups\">\n <h2 className=\"ui-title\">Checkbox Groups</h2>\n <Flex gap=\"size-100\" gridColumn=\"span 3\" height=\"100%\">\n <Flex direction=\"column\">\n <Text>Single Child</Text>\n <CheckboxGroup aria-label=\"Single Child\">\n <Checkbox value=\"Aaa\">Aaa</Checkbox>\n </CheckboxGroup>\n </Flex>\n\n <Flex direction=\"column\">\n <Text>Multiple Children</Text>\n <CheckboxGroup aria-label=\"Multiple Children\">\n <Checkbox value=\"Aaa\">Aaa</Checkbox>\n <Checkbox value=\"Bbb\">Bbb</Checkbox>\n <Checkbox value=\"Ccc\">Ccc</Checkbox>\n </CheckboxGroup>\n </Flex>\n\n <Flex direction=\"column\">\n <Text>Mixed Children Types</Text>\n <CheckboxGroup aria-label=\"Mixed Children Types\">\n {/* eslint-disable react/jsx-curly-brace-presence */}\n {'String 1'}\n {'String 2'}\n {444}\n {999}\n {true}\n {false}\n <Checkbox>Aaa</Checkbox>\n </CheckboxGroup>\n </Flex>\n </Flex>\n </SampleSection>\n );\n}\n\nexport default CheckboxGroups;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport cl from 'classnames';\n\nimport {\n ContextMenuRoot,\n ThemePicker,\n useTheme,\n Flex,\n ToastContainer,\n} from '@deephaven/components';\n\nimport Buttons from './Buttons';\nimport Charts from './Charts';\nimport Colors from './Colors';\nimport ContextMenus from './ContextMenus';\nimport Dialog from './Dialog';\nimport DropdownMenus from './DropdownMenus';\nimport Editors from './Editors';\nimport Grids from './Grids';\nimport Icons from './Icons';\nimport Inputs from './Inputs';\nimport ItemListInputs from './ItemListInputs';\nimport Modals from './Modals';\nimport Progress from './Progress';\nimport TimeSliderInputs from './TimeSliderInputs';\nimport Tooltips from './Tooltips';\nimport Toast from './Toast';\nimport Typograpy from './Typography';\nimport './StyleGuide.scss';\nimport DraggableLists from './DraggableLists';\nimport Navigations from './Navigations';\nimport ThemeColors from './ThemeColors';\nimport SpectrumComponents from './SpectrumComponents';\nimport SamplesMenu, { SampleMenuCategory } from './SamplesMenu';\nimport GotoTopButton from './GotoTopButton';\nimport { ISOLATED_SECTION_QUERY_CLASS, useIsolateSectionHash } from './utils';\nimport { GoldenLayout } from './GoldenLayout';\nimport { RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nimport SpectrumComparison from './SpectrumComparison';\nimport Pickers from './Pickers';\nimport ListViews from './ListViews';\nimport ErrorViews from './ErrorViews';\nimport XComponents from './XComponents';\nimport CheckboxGroups from './CheckboxGroups';\n\nconst stickyProps = {\n position: 'sticky',\n justifyContent: 'end',\n zIndex: 1,\n UNSAFE_style: {\n float: 'right',\n },\n} as const;\n\nfunction StyleGuide(): React.ReactElement {\n const { themes } = useTheme();\n const hasMultipleThemes = themes.length > 1;\n\n const isIsolatedSection = useIsolateSectionHash() !== '';\n\n return (\n // Needs a tabindex to capture focus on popper blur\n // AppMainContainer has a tabindex of -1 in the app itself\n <div tabIndex={-1} role=\"main\">\n <div\n className={cl(\n 'container',\n 'style-guide-container',\n isIsolatedSection && ISOLATED_SECTION_QUERY_CLASS\n )}\n >\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n marginTop=\"2rem\"\n marginBottom=\"1rem\"\n >\n <h1 style={{ paddingTop: '2rem' }}>Deephaven UI Components</h1>\n </Flex>\n <Flex\n {...stickyProps}\n UNSAFE_className={\n isIsolatedSection ? 'hide-when-isolated' : undefined\n }\n marginTop={-56}\n top={20}\n gap={10}\n alignItems=\"end\"\n >\n {hasMultipleThemes ? <ThemePicker /> : null}\n <SamplesMenu />\n </Flex>\n <Flex\n {...stickyProps}\n UNSAFE_className={\n isIsolatedSection ? 'hide-when-isolated' : undefined\n }\n top=\"calc(100vh - 40px)\"\n marginTop={-32}\n marginEnd={hasMultipleThemes ? -234 : 0}\n >\n <GotoTopButton />\n </Flex>\n\n <Typograpy />\n\n <SampleMenuCategory data-menu-category=\"Colors\" />\n <Colors />\n <ThemeColors />\n\n <SampleMenuCategory data-menu-category=\"Layout\" />\n <GoldenLayout />\n\n <SampleMenuCategory data-menu-category=\"Components\" />\n <Buttons />\n <Progress />\n <Inputs />\n <ListViews />\n <Pickers />\n <ItemListInputs />\n <DraggableLists />\n <TimeSliderInputs />\n <CheckboxGroups />\n <Dialog />\n <Modals />\n <ContextMenus />\n <DropdownMenus />\n <Navigations />\n <Toast />\n <Tooltips />\n <Icons />\n <Editors />\n <Grids />\n <Charts />\n <ContextMenuRoot />\n <RandomAreaPlotAnimation />\n <ErrorViews />\n <XComponents />\n\n <SampleMenuCategory data-menu-category=\"Spectrum Components\" />\n <SpectrumComponents />\n\n <SampleMenuCategory data-menu-category=\"Spectrum Comparison\" />\n <SpectrumComparison />\n <ToastContainer />\n </div>\n </div>\n );\n}\n\nexport default StyleGuide;\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport {\n type CustomizableWorkspace,\n getWorkspace,\n type PayloadActionCreator,\n type RootState,\n setWorkspace as setWorkspaceAction,\n} from '@deephaven/redux';\nimport {\n type ExportedLayout,\n LocalWorkspaceStorage,\n} from '@deephaven/app-utils';\nimport StyleGuide from './StyleGuide';\n\n/**\n * Initialize data needed for the styleguide\n */\nfunction StyleGuideInit(props: {\n workspace: CustomizableWorkspace;\n setWorkspace: PayloadActionCreator<CustomizableWorkspace>;\n}): JSX.Element | null {\n const { workspace, setWorkspace } = props;\n\n useEffect(() => {\n LocalWorkspaceStorage.makeDefaultWorkspace({\n getLayouts: async () => [] as string[],\n getLayout: async () => ({}) as ExportedLayout,\n }).then(setWorkspace);\n }, [setWorkspace]);\n\n return workspace != null ? <StyleGuide /> : null;\n}\n\nconst mapStateToProps = (\n state: RootState\n): {\n workspace: CustomizableWorkspace;\n} => ({\n workspace: getWorkspace(state),\n});\n\nconst ConnectedStyleGuideInit = connect(mapStateToProps, {\n setWorkspace: setWorkspaceAction,\n})(StyleGuideInit);\n\nexport default ConnectedStyleGuideInit;\n","import React, { useEffect } from 'react';\nimport { Provider } from 'react-redux';\nimport { FontBootstrap } from '@deephaven/components';\nimport '@deephaven/components/scss/BaseStyleSheet.scss';\nimport { MonacoUtils } from '@deephaven/console';\nimport { store } from '@deephaven/redux';\nimport { DownloadServiceWorkerUtils } from '@deephaven/iris-grid';\nimport MonacoWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';\nimport StyleGuideInit from './StyleGuideInit';\n\nexport function StyleGuideRoot(): JSX.Element {\n useEffect(function init() {\n DownloadServiceWorkerUtils.register(\n new URL(\n `${import.meta.env.BASE_URL ?? ''}download/serviceWorker.js`,\n window.location.href\n )\n );\n MonacoUtils.init({ getWorker: () => new MonacoWorker() });\n\n // disable annoying dnd-react warnings\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window['__@hello-pangea/dnd-disable-dev-warnings'] = true;\n }, []);\n\n return (\n <FontBootstrap>\n <Provider store={store}>\n <StyleGuideInit />\n </Provider>\n </FontBootstrap>\n );\n}\n\nexport default StyleGuideRoot;\n"],"names":["asyncGeneratorStep","n","t","e","r","o","a","c","i","u","_asyncToGenerator","_next","_throw","_defineProperty","_toPropertyKey","_toPrimitive","MockGridModel","GridModel","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","isEditable","editedData","column","row","_this$editedData$colu","_this$editedData$colu2","theme","value","_this","ranges","text","_this2","GridRange","x","y","edits","_this3","_edit$column","_edit$row","edit","range","MockTreeGridModel","_children","_childRowCount","_maxDepth","memoizeClear","children","key","offsetRow","sortedEntries","b","childRow","childModel","childRowCount","model","maxDepth","depth","isExpanded","expandDescendants","originalChildRowCount","child","StaticDataGridModel","data","columnHeaders","_columnHeaders$length","_this$data$row","_this$columnHeaders$c","_this$columnHeaders","ViewportDataGridModel","_this$viewportData$ro","_this$viewportData","_this$viewportData$co","_this$viewportData2","_this$viewportData$da","_this$viewportData3","viewportRow","viewportColumn","DEFAULT_AXIS","DEFAULT_POSITIVE_COLOR","GridTheme","DEFAULT_NEGATIVE_COLOR","DEFAULT_VALUE_PLACEMENT","DEFAULT_DIRECTION","DEFAULT_TEXT_ALIGNMENT","isArrayOfNumbers","item","MockDataBarGridModel","columnAxes","positiveColors","negativeColors","valuePlacements","opacities","directions","textAlignments","markers","_this$data$column","_this$textAlignments$","_this$columnAxes$get","_this$valuePlacements","_this$directions$get","_this$positiveColors$","_this$negativeColors$","_this$data$column2","_this$markers$get","columnMin","getOrThrow","columnMax","axis","valuePlacement","opacity","direction","positiveColor","negativeColor","color","ISOLATED_SECTION_QUERY_CLASS","SAMPLE_SECTION_CLASS","generateItemElements","start","end","letters","len","charI","suffix","letter","content","createElement","Item","generateNormalizedItems","count","include","iconKeys","dhIcons","icon","description","pseudoRandomWithSeed","seed","getIsolatedSectionHash","useIsolateSectionHash","hash","setHash","useState","useEffect","hashChangeHandler","useSeededRandomNumberCallback","randomGenerator","useCallback","result","getSectionIdFromName","name","sampleSectionIdAndClasses","classNames","id","className","cl","sampleSectionIdAndClassesSpectrum","SampleSection","Component","styleProps","sectionId","sectionIdAndClasses","jsx","noOp","Buttons","jsxs","Fragment","ButtonGroup","Button","levelMap","Flex","level","semantic","SocketedButton","props","toggle","dhTruck","buttons","inlineButtons","socketedButtons","links","Charts","dh","useApi","MockChartModel","Chart","INVALID_COLOR_BORDER_STYLE","REASSIGN_VARIABLE_GROUPS","SWATCH_LABEL","RENAME_VARIABLE_GROUPS","contrastColor","rgba","ColorUtils","g","extractColorVars","styleText","computedStyle","_a","line","match","varName","getExpressionRanges","varExp","buildColorGroups","groupKey","captureGroupI","reassignVarGroups","groupRemap","acc","group","useContrastFgColorRef","ref","useRef","useLayoutEffect","backgroundColor","useDhColorFromPseudoContent","elementRef","pseudoElement","setColor","pseudoContent","dhColorVarName","dhColorValue","Swatch","dhColor","tooltip","useMemo","hasValue","Tooltip","Colors","graySwatches","swatch","baseColorPaletteSwatches","colorSwatches","ContextMenus","iteration","vsBell","Shortcut","MODIFIER","KEY","dhFilePrint","contextActions","actions","vsQuestion","ContextActions","delayedActions","resolve","Dialog","React","parentA","parentB","leaf","checkBoxMap","isShown","Popper","HierarchicalCheckboxMenu","DropdownMenus","vsKebabVertical","DropdownMenu","testPython","testGroovy","Constants","Editors","Editor","EMPTY_ARRAY","MockIrisGridTreeModel","IrisGridModel","__publicField","memoize","columns","customColumns","formatColumns","sort","filter","partition","partitionColumns","formatter","columnAlignmentMap","rollupConfig","names","totalsConfig","startRow","valueType","insensitive","contains","isBackwards","groups","StaticExample","Grid","QuadrillionExample","TreeExample","AsyncExample","grid","viewport","setViewport","handleViewChanged","metrics","top","bottom","left","right","isCancelled","rowData","DataBarExample","columnData","Grids","irisGridModel","irisGridCompactModel","irisGridSpaciousModel","contextTheme","ThemeContext","IrisGrid","copyText","error","DH_PREFIX","VS_PREFIX","getPrefixedName","prefix","str","Flash","message","show","setShow","timeout","Icons","dhFilter","setDhFilter","vsFilter","setVsFilter","search","setSearch","flashText","setFlashText","renderIcons","matchesFilter","isDH","isVS","prefixedName","FontAwesomeIcon","err","Icon","compositionExample","vsOrganization","dhSquareFilled","dhAddSmall","event","EXAMPLES","items","title","TIMEOUTS","Inputs","on","setOn","searchValue","setSearchValue","check1","setCheck1","check2","setCheck2","check3","setCheck3","check4","setCheck4","check5","setCheck5","radioValue","setRadioValue","customTimeValue","setCustomTimeValue","autoResizeTextareaValue","setAutoResizeTextareaValue","handleRadioChange","handleToggleClick","handleSearchInputChange","SearchInput","Checkbox","RadioGroup","Radio","UISwitch","Select","v","Option","ComboBox","AutoCompleteInput","TimeInput","DateInput","DateTimeInput","CustomTimeSelect","time","AutoResizeTextarea","SelectValueListInput","PureComponent","itemIndex","selectedIndex","isSelected","offset","visibleItemIndex","itemCount","viewportSize","topRow","bottomRow","SelectValueList","ItemListInput","isMultiSelect","ItemList","ItemListInputs","Modals","openModal","setOpenModal","closeModals","renderBasicModal","buttonCount","BasicModal","Progress","LoadingSpinner","TimeSliderInputs","values","startTime","endTime","initialStartTime","initialEndTime","isStartModified","isEndModified","TimeSlider","TimeUtils","Tooltips","iconElements","Toast","ToastQueue","Typography","DraggableListInput","selectedRanges","onSelectionChange","draggablePrefix","droppableId","isDragDisabled","isDropDisabled","DraggableItemList","DRAG_LIST_TITLES","DRAG_LIST_PROPS","makeItems","DraggableLists","listIndex","lists","source","destination","sourceListIndex","destinationListIndex","isSameList","destinationIndex","insertIndex","sourceList","destinationList","draggedItems","DragUtils","newItems","newSelectedRanges","_b","listSelectedRanges","DragDropContext","NavTabListExample","activeKeyProp","activeKey","setActiveKey","tabs","setTabs","tabItems","handleReorder","from","to","newTabs","removed","handleSelect","handleClose","tab","makeContextActions","index","NavTabList","nextId","getNewId","newId","random","getRandomCount","min","max","makeMenuItem","type","makeMenuItems","submenuCount","pageCount","switchCount","titleForMenuItem","iconForMenuItem","vsListUnordered","vsFile","Navigations","stackItems","setStackItems","valueMap","setValueMap","push","menuItem","pop","newStackItems","popAll","toggleValue","valueIndex","newValueMap","stackItem","stack","Page","navMenuItems","itemTitle","isOn","onChange","Menu","Stack","buildSwatchDataGroups","palette","chart","semanticEditor","semanticGrid","components","TooltipContent","ThemeColors","selectedThemeKey","useTheme","swatchDataGroups","label","styles","swatchData","j","CopyButton","isLabel","note","MENU_CATEGORY_DATA_ATTRIBUTE","NO_MENU_DATA_ATTRIBUTE","SAMPLE_SECTION_E2E_IGNORE","SPECTRUM_COMPONENT_SAMPLES_ID","SPECTRUM_COMPARISON_SAMPLES_ID","SpectrumComponents","minmax","View","ButtonsSample","TableViewSample","IllustratedMessageSample","FormsSample","ContextualHelpSample","DialogTrigger","ActionButton","close","Heading","Header","Divider","Content","Text","Well","repeat","ToggleButton","ContextualHelp","Form","TextField","Slider","Switch","IllustratedMessage","vsEmptyWindow","ListView","TableView","TableHeader","Column","TableBody","Row","Cell","SampleMenuCategory","SamplesMenu","setLinks","currentCategory","categories","spectrumComponentsSamples","spectrumComparisonSamples","headingEl","el","onAction","MenuTrigger","vsMenu","category","Section","GotoTopButton","gotoTop","firstH2Top","onScroll","vsChevronUp","Tab","isActive","classnames","GoldenLayout","isMaximised","RandomAreaPlotAnimation","Animation","SpectrumComparison","isChecked","setIsChecked","variant","BootstrapButtonOld","EMPTY_FUNCTION","vsPlay","isDisabled","_v","Picker","CheckboxOld","itemsWithIcons","itemElementsA","itemElementsB","itemElementsC","itemElementsD","itemElementsE","mixedItemsWithIconsNoDescriptions","itemEl","cloneElement","PersonIcon","vsPerson","Pickers","selectedKey","setSelectedKey","showIcons","setShowIcons","filteredItems","setFilteredItems","onSearch","searchText","getInitialScrollPosition","getPositionOfSelectedItem","PICKER_ITEM_HEIGHTS","PICKER_TOP_OFFSET","PickerNormalized","ComboBoxNormalized","AccountIllustration","vsAccount","LABELED_FLEX_CONTAINER_HEIGHTS","LabeledFlexContainer","ListViews","scale","useSpectrumThemeProvider","selectedKeys","setSelectedKeys","density","setDensity","singleChildExampleHeight","LIST_VIEW_ROW_HEIGHTS","onDensityChange","lastActionKey","setLastActionKey","lastActionItemKey","setLastActionItemKey","actionKey","itemKey","keys","ListViewNormalized","ListActionGroup","vsEdit","vsTrash","ErrorViews","columnStyle","shortErrorMessage","midErrorMessage","longErrorMessage","midErrorType","longErrorType","ErrorView","FooComponent","XFooComponent","createXComponent","NestedFooComponent","MultiFooComponent","ReverseFooComponent","XComponents","setValue","XComponentMapProvider","CheckboxGroups","CheckboxGroup","stickyProps","StyleGuide","themes","hasMultipleThemes","isIsolatedSection","ThemePicker","Typograpy","ContextMenuRoot","ToastContainer","StyleGuideInit","workspace","setWorkspace","LocalWorkspaceStorage","mapStateToProps","state","getWorkspace","ConnectedStyleGuideInit","connect","setWorkspaceAction","StyleGuideRoot","DownloadServiceWorkerUtils","MonacoUtils","MonacoWorker","FontBootstrap","Provider","store"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StyleGuideRoot-BAYFLFTM.js","sources":["../../../grid/dist/MockGridModel.js","../../../grid/dist/MockTreeGridModel.js","../../../grid/dist/StaticDataGridModel.js","../../../grid/dist/ViewportDataGridModel.js","../../../grid/dist/MockDataBarGridModel.js","../../src/styleguide/utils.ts","../../src/styleguide/SampleSection.tsx","../../src/styleguide/Buttons.tsx","../../src/styleguide/Charts.tsx","../../src/styleguide/colorUtils.ts","../../src/styleguide/hooks.ts","../../src/styleguide/Swatch.tsx","../../src/styleguide/Colors.tsx","../../src/styleguide/ContextMenus.tsx","../../src/styleguide/Dialog.tsx","../../src/styleguide/DropdownMenus.tsx","../../src/styleguide/StyleConstants.tsx","../../src/styleguide/Editors.tsx","../../src/styleguide/MockIrisGridTreeModel.ts","../../src/styleguide/grid-examples/StaticExample.tsx","../../src/styleguide/grid-examples/QuadrillionExample.tsx","../../src/styleguide/grid-examples/TreeExample.tsx","../../src/styleguide/grid-examples/AsyncExample.tsx","../../src/styleguide/grid-examples/DataBarExample.tsx","../../src/styleguide/Grids.tsx","../../src/styleguide/Icons.tsx","../../src/styleguide/Inputs.tsx","../../src/styleguide/SelectValueListInput.tsx","../../src/styleguide/ItemListInput.tsx","../../src/styleguide/ItemListInputs.tsx","../../src/styleguide/Modals.tsx","../../src/styleguide/Progress.tsx","../../src/styleguide/TimeSliderInputs.tsx","../../src/styleguide/Tooltips.tsx","../../src/styleguide/Toast.tsx","../../src/styleguide/Typography.tsx","../../src/styleguide/DraggableListInput.tsx","../../src/styleguide/DraggableLists.tsx","../../src/styleguide/Navigations.tsx","../../src/styleguide/ThemeColors.tsx","../../src/styleguide/constants.ts","../../src/styleguide/SpectrumComponents.tsx","../../src/styleguide/SamplesMenu.tsx","../../src/styleguide/GotoTopButton.tsx","../../src/styleguide/GoldenLayout.tsx","../../src/styleguide/RandomAreaPlotAnimation.tsx","../../src/styleguide/SpectrumComparison.tsx","../../src/styleguide/Pickers.tsx","../../src/styleguide/ListViews.tsx","../../src/styleguide/ErrorViews.tsx","../../src/styleguide/XComponents.tsx","../../src/styleguide/CheckboxGroups.tsx","../../src/styleguide/StyleGuide.tsx","../../src/styleguide/StyleGuideInit.tsx","../../src/styleguide/StyleGuideRoot.tsx"],"sourcesContent":["function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport GridModel from \"./GridModel.js\";\nimport GridRange from \"./GridRange.js\";\n/**\n * Mock model implementing GridModel for testing out grid functionality\n */\nclass MockGridModel extends GridModel {\n constructor() {\n var {\n rowCount = 1000000000,\n columnCount = 100,\n floatingTopRowCount = 0,\n floatingBottomRowCount = 0,\n floatingLeftColumnCount = 0,\n floatingRightColumnCount = 0,\n isEditable = false,\n editedData = []\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super();\n _defineProperty(this, \"numRows\", void 0);\n _defineProperty(this, \"numColumns\", void 0);\n _defineProperty(this, \"floatingTop\", void 0);\n _defineProperty(this, \"floatingBottom\", void 0);\n _defineProperty(this, \"floatingLeft\", void 0);\n _defineProperty(this, \"floatingRight\", void 0);\n _defineProperty(this, \"editable\", void 0);\n _defineProperty(this, \"editedData\", void 0);\n this.numRows = rowCount;\n this.numColumns = columnCount;\n this.floatingTop = floatingTopRowCount;\n this.floatingBottom = floatingBottomRowCount;\n this.floatingLeft = floatingLeftColumnCount;\n this.floatingRight = floatingRightColumnCount;\n this.editable = isEditable;\n this.editedData = editedData;\n }\n get rowCount() {\n return this.numRows;\n }\n get columnCount() {\n return this.numColumns;\n }\n get floatingTopRowCount() {\n return this.floatingTop;\n }\n get floatingBottomRowCount() {\n return this.floatingBottom;\n }\n get floatingLeftColumnCount() {\n return this.floatingLeft;\n }\n get floatingRightColumnCount() {\n return this.floatingRight;\n }\n get isEditable() {\n return this.editable;\n }\n textForCell(column, row) {\n var _this$editedData$colu, _this$editedData$colu2;\n return (_this$editedData$colu = (_this$editedData$colu2 = this.editedData[column]) === null || _this$editedData$colu2 === void 0 ? void 0 : _this$editedData$colu2[row]) !== null && _this$editedData$colu !== void 0 ? _this$editedData$colu : \"\".concat(column, \",\").concat(row);\n }\n colorForCell(column, row, theme) {\n return theme.textColor;\n }\n textForColumnHeader(column) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return \"\".concat(column);\n }\n textForRowHeader(row) {\n return \"\".concat(row);\n }\n textForRowFooter(row) {\n return \"\".concat(row);\n }\n setValueForCell(column, row, value) {\n var _this = this;\n return _asyncToGenerator(function* () {\n if (_this.editedData[column] == null) {\n _this.editedData[column] = [];\n }\n _this.editedData[column][row] = \"\".concat(value);\n })();\n }\n setValueForRanges(ranges, text) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n GridRange.forEachCell(ranges, (x, y) => {\n _this2.setValueForCell(x, y, text);\n });\n })();\n }\n setValues(edits) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n for (var i = 0; i < edits.length; i += 1) {\n var _edit$column, _edit$row;\n var edit = edits[i];\n _this3.setValueForCell((_edit$column = edit.column) !== null && _edit$column !== void 0 ? _edit$column : edit.x, (_edit$row = edit.row) !== null && _edit$row !== void 0 ? _edit$row : edit.y, edit.text);\n }\n })();\n }\n editValueForCell(column, row) {\n return this.textForCell(column, row);\n }\n isValidForCell(column, row, value) {\n return true;\n }\n isEditableRange(range) {\n return this.isEditable;\n }\n delete(ranges) {\n throw new Error('Method not implemented.');\n }\n}\nexport default MockGridModel;\n//# sourceMappingURL=MockGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport MockGridModel from \"./MockGridModel.js\";\nimport memoizeClear from \"./memoizeClear.js\";\n/**\n * A class to mock a tree model so can test out tree models.\n * Whenever a row is expanded, it creates a child model for that row, which can then make a child for those rows, etc.\n */\nclass MockTreeGridModel extends MockGridModel {\n constructor() {\n var {\n rowCount = MockTreeGridModel.DEFAULT_ROW_COUNT,\n columnCount = MockTreeGridModel.DEFAULT_COLUMN_COUNT,\n children: _children = new Map(),\n childRowCount: _childRowCount = Math.ceil(Math.max(MockTreeGridModel.MIN_CHILD_ROW_COUNT, rowCount * MockTreeGridModel.DEFAULT_CHILD_ROW_COUNT_FACTOR)),\n maxDepth: _maxDepth = MockTreeGridModel.MAX_DEPTH\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super({\n rowCount,\n columnCount\n });\n _defineProperty(this, \"children\", void 0);\n _defineProperty(this, \"childRowCount\", void 0);\n _defineProperty(this, \"maxDepth\", void 0);\n /**\n * Returns the map key and the offsetRow given the provided children and row index.\n * If the returned key is null, then this offset row is within this model.\n * Only returning the key instead of the model so that memoize doesn't cache a bunch of the children models after they've been deleted (collapsed).\n */\n _defineProperty(this, \"getCachedModelRowOffset\", memoizeClear((children, row) => {\n var key = null;\n var offsetRow = row;\n // Need to iterate through the map in order... sort it first\n var sortedEntries = [...children].sort((a, b) => a[0] - b[0]);\n for (var i = 0; i < sortedEntries.length; i += 1) {\n var [childRow, childModel] = sortedEntries[i];\n if (offsetRow <= childRow) {\n break;\n }\n var childRowCount = childModel.rowCount;\n if (offsetRow <= childRow + childRowCount) {\n key = childRow;\n offsetRow = offsetRow - childRow - 1;\n break;\n }\n offsetRow -= childRowCount;\n }\n return {\n key,\n offsetRow\n };\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedTextForRowHeader\", memoizeClear((children, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return \"\".concat(key, \".\").concat(model.textForRowHeader(offsetRow));\n }\n }\n return \"\".concat(offsetRow);\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedTextForCell\", memoizeClear((children, column, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return \"\".concat(key, \".\").concat(model.textForCell(column, offsetRow));\n }\n }\n return \"\".concat(column, \",\").concat(offsetRow);\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedIsRowExpandable\", memoizeClear((children, row, maxDepth) => {\n var depth = this.getCachedDepthForRow(children, row);\n return depth < maxDepth;\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedIsRowExpanded\", memoizeClear((children, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return model.isRowExpanded(offsetRow);\n }\n }\n return children.has(offsetRow);\n }, {\n max: 10000\n }));\n _defineProperty(this, \"getCachedDepthForRow\", memoizeClear((children, row) => {\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(children, row);\n if (key != null) {\n var model = children.get(key);\n if (model !== undefined) {\n return model.depthForRow(offsetRow) + 1;\n }\n }\n return 0;\n }, {\n max: 10000\n }));\n this.children = _children;\n this.childRowCount = _childRowCount;\n this.maxDepth = _maxDepth;\n }\n textForCell(column, row) {\n return this.getCachedTextForCell(this.children, column, row);\n }\n textForRowHeader(row) {\n return this.getCachedTextForRowHeader(this.children, row);\n }\n isRowMovable(row) {\n return false;\n }\n get hasExpandableRows() {\n return true;\n }\n get isExpandAllAvailable() {\n return false;\n }\n get floatingBottomRowCount() {\n return 0;\n }\n isRowExpandable(row) {\n return this.getCachedIsRowExpandable(this.children, row, this.maxDepth);\n }\n isRowExpanded(row) {\n return this.getCachedIsRowExpanded(this.children, row);\n }\n setRowExpanded(row, isExpanded) {\n var expandDescendants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n key,\n offsetRow\n } = this.getCachedModelRowOffset(this.children, row);\n\n // We always set a new map so that our memoize functions work properly\n var children = new Map(this.children);\n if (key != null) {\n var model = this.children.get(key);\n if (model !== undefined) {\n var {\n rowCount: originalChildRowCount\n } = model;\n model.setRowExpanded(offsetRow, isExpanded, expandDescendants);\n this.numRows += model.rowCount - originalChildRowCount;\n }\n } else if (!isExpanded) {\n var childModel = children.get(offsetRow);\n if (childModel !== undefined) {\n this.numRows -= childModel.rowCount;\n children.delete(offsetRow);\n }\n } else {\n var child = new MockTreeGridModel({\n rowCount: this.childRowCount,\n columnCount: this.numColumns\n });\n children.set(offsetRow, child);\n this.numRows += child.rowCount;\n }\n this.children = children;\n }\n expandAll() {\n throw new Error('Expand all not implemented.');\n }\n collapseAll() {\n throw new Error('Collapse all not implemented.');\n }\n depthForRow(row) {\n return this.getCachedDepthForRow(this.children, row);\n }\n}\n_defineProperty(MockTreeGridModel, \"DEFAULT_ROW_COUNT\", 1000000000);\n_defineProperty(MockTreeGridModel, \"DEFAULT_COLUMN_COUNT\", 100);\n/** How many rows a child tree should have related to the parent. Eg. if parent has 10000 rows, child will have 100 */\n_defineProperty(MockTreeGridModel, \"DEFAULT_CHILD_ROW_COUNT_FACTOR\", 0.01);\n_defineProperty(MockTreeGridModel, \"MIN_CHILD_ROW_COUNT\", 10);\n_defineProperty(MockTreeGridModel, \"MAX_DEPTH\", 10);\nexport default MockTreeGridModel;\n//# sourceMappingURL=MockTreeGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport GridModel from \"./GridModel.js\";\n/**\n * A simple model that displays static data\n */\nclass StaticDataGridModel extends GridModel {\n /**\n * Create a model using the static data provided\n * @param data Row data to display. First dimension is the number of rows, second dimension is the value for each column. Row/column count is derived from the data, and it is stringified for display.\n * @param columnHeaders Optional names for the column headers\n */\n constructor(data, columnHeaders) {\n var _columnHeaders$length;\n super();\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"columnHeaders\", void 0);\n _defineProperty(this, \"numberOfColumns\", void 0);\n this.data = data;\n this.numberOfColumns = Math.max(...data.map(row => row.length), (_columnHeaders$length = columnHeaders === null || columnHeaders === void 0 ? void 0 : columnHeaders.length) !== null && _columnHeaders$length !== void 0 ? _columnHeaders$length : 0);\n this.columnHeaders = columnHeaders;\n }\n get rowCount() {\n return this.data.length;\n }\n get columnCount() {\n return this.numberOfColumns;\n }\n textForCell(column, row) {\n var _this$data$row;\n return \"\".concat((_this$data$row = this.data[row]) === null || _this$data$row === void 0 ? void 0 : _this$data$row[column]);\n }\n textForColumnHeader(column) {\n var _this$columnHeaders$c, _this$columnHeaders;\n return (_this$columnHeaders$c = (_this$columnHeaders = this.columnHeaders) === null || _this$columnHeaders === void 0 ? void 0 : _this$columnHeaders[column]) !== null && _this$columnHeaders$c !== void 0 ? _this$columnHeaders$c : '';\n }\n}\nexport default StaticDataGridModel;\n//# sourceMappingURL=StaticDataGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable class-methods-use-this */\nimport GridModel from \"./GridModel.js\";\n/**\n * A simple model that displays a viewport of data\n */\nclass ViewportDataGridModel extends GridModel {\n /**\n * Model for fetching data asynchonously. Set the viewported data when data is fetched.\n * @param columnCount Number of columns\n * @param rowCount Number of rows\n */\n constructor(columnCount, rowCount) {\n super();\n _defineProperty(this, \"numberOfColumns\", void 0);\n _defineProperty(this, \"numberOfRows\", void 0);\n _defineProperty(this, \"viewportData\", void 0);\n this.numberOfColumns = columnCount;\n this.numberOfRows = rowCount;\n }\n get columnCount() {\n return this.numberOfColumns;\n }\n get rowCount() {\n return this.numberOfRows;\n }\n textForCell(column, row) {\n var _this$viewportData$ro, _this$viewportData, _this$viewportData$co, _this$viewportData2, _this$viewportData$da, _this$viewportData3;\n var viewportRow = row - ((_this$viewportData$ro = (_this$viewportData = this.viewportData) === null || _this$viewportData === void 0 ? void 0 : _this$viewportData.rowOffset) !== null && _this$viewportData$ro !== void 0 ? _this$viewportData$ro : 0);\n var viewportColumn = column - ((_this$viewportData$co = (_this$viewportData2 = this.viewportData) === null || _this$viewportData2 === void 0 ? void 0 : _this$viewportData2.columnOffset) !== null && _this$viewportData$co !== void 0 ? _this$viewportData$co : 0);\n return \"\".concat((_this$viewportData$da = (_this$viewportData3 = this.viewportData) === null || _this$viewportData3 === void 0 || (_this$viewportData3 = _this$viewportData3.data[viewportRow]) === null || _this$viewportData3 === void 0 ? void 0 : _this$viewportData3[viewportColumn]) !== null && _this$viewportData$da !== void 0 ? _this$viewportData$da : '');\n }\n textForColumnHeader(column) {\n return \"\".concat(column);\n }\n textForRowHeader(row) {\n return \"\".concat(row);\n }\n}\nexport default ViewportDataGridModel;\n//# sourceMappingURL=ViewportDataGridModel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport GridModel from \"./GridModel.js\";\nimport GridTheme from \"./GridTheme.js\";\nvar DEFAULT_AXIS = 'proportional';\nvar DEFAULT_POSITIVE_COLOR = GridTheme.positiveBarColor;\nvar DEFAULT_NEGATIVE_COLOR = GridTheme.negativeBarColor;\nvar DEFAULT_VALUE_PLACEMENT = 'beside';\nvar DEFAULT_DIRECTION = 'LTR';\nvar DEFAULT_TEXT_ALIGNMENT = 'right';\nfunction isArrayOfNumbers(value) {\n return Array.isArray(value) && value.every(item => typeof item === 'number');\n}\nclass MockDataBarGridModel extends GridModel {\n constructor(data) {\n var columnAxes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Map();\n var positiveColors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Map();\n var negativeColors = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();\n var valuePlacements = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : new Map();\n var opacities = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : new Map();\n var directions = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new Map();\n var textAlignments = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : new Map();\n var markers = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : new Map();\n super();\n _defineProperty(this, \"numberOfColumns\", void 0);\n _defineProperty(this, \"numberOfRows\", void 0);\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"columnMins\", void 0);\n _defineProperty(this, \"columnMaxs\", void 0);\n _defineProperty(this, \"columnAxes\", void 0);\n _defineProperty(this, \"valuePlacements\", void 0);\n _defineProperty(this, \"directions\", void 0);\n _defineProperty(this, \"positiveColors\", void 0);\n _defineProperty(this, \"negativeColors\", void 0);\n // Opacities should be between 0 and 1\n _defineProperty(this, \"opacities\", void 0);\n _defineProperty(this, \"textAlignments\", void 0);\n _defineProperty(this, \"markers\", void 0);\n this.positiveColors = positiveColors;\n this.negativeColors = negativeColors;\n this.data = data;\n this.columnAxes = columnAxes;\n this.valuePlacements = valuePlacements;\n this.opacities = opacities;\n this.directions = directions;\n this.textAlignments = textAlignments;\n this.markers = markers;\n this.numberOfRows = Math.max(...data.map(row => row.length));\n this.numberOfColumns = data.length;\n this.columnMins = new Map();\n this.columnMaxs = new Map();\n for (var i = 0; i < data.length; i += 1) {\n var column = data[i];\n if (isArrayOfNumbers(column)) {\n this.columnMins.set(i, Math.min(...column));\n this.columnMaxs.set(i, Math.max(...column));\n }\n }\n }\n get rowCount() {\n return this.numberOfRows;\n }\n get columnCount() {\n return this.numberOfColumns;\n }\n textForCell(column, row) {\n var _this$data$column;\n return \"\".concat((_this$data$column = this.data[column]) === null || _this$data$column === void 0 ? void 0 : _this$data$column[row]);\n }\n textForColumnHeader(column) {\n return \"\".concat(column);\n }\n textAlignForCell(column, row) {\n var _this$textAlignments$;\n return (_this$textAlignments$ = this.textAlignments.get(column)) !== null && _this$textAlignments$ !== void 0 ? _this$textAlignments$ : DEFAULT_TEXT_ALIGNMENT;\n }\n renderTypeForCell(column, row) {\n if (column < 20) {\n return 'dataBar';\n }\n return column % 2 === row % 2 ? 'dataBar' : 'text';\n }\n dataBarOptionsForCell(column, row) {\n var _this$columnAxes$get, _this$valuePlacements, _this$directions$get, _this$positiveColors$, _this$negativeColors$, _this$data$column2, _this$markers$get;\n var columnMin = getOrThrow(this.columnMins, column);\n var columnMax = getOrThrow(this.columnMaxs, column);\n var axis = (_this$columnAxes$get = this.columnAxes.get(column)) !== null && _this$columnAxes$get !== void 0 ? _this$columnAxes$get : DEFAULT_AXIS;\n var valuePlacement = (_this$valuePlacements = this.valuePlacements.get(column)) !== null && _this$valuePlacements !== void 0 ? _this$valuePlacements : DEFAULT_VALUE_PLACEMENT;\n var opacity = this.opacities.get(column);\n if (opacity == null || opacity > 1) {\n opacity = 1;\n } else if (opacity < 0) {\n opacity = 0;\n }\n var direction = (_this$directions$get = this.directions.get(column)) !== null && _this$directions$get !== void 0 ? _this$directions$get : DEFAULT_DIRECTION;\n var positiveColor = (_this$positiveColors$ = this.positiveColors.get(column)) !== null && _this$positiveColors$ !== void 0 ? _this$positiveColors$ : DEFAULT_POSITIVE_COLOR;\n var negativeColor = (_this$negativeColors$ = this.negativeColors.get(column)) !== null && _this$negativeColors$ !== void 0 ? _this$negativeColors$ : DEFAULT_NEGATIVE_COLOR;\n var value = Number((_this$data$column2 = this.data[column]) === null || _this$data$column2 === void 0 ? void 0 : _this$data$column2[row]);\n var color = value >= 0 ? positiveColor : negativeColor;\n var markers = (_this$markers$get = this.markers.get(column)) !== null && _this$markers$get !== void 0 ? _this$markers$get : [];\n return {\n columnMin,\n columnMax,\n axis,\n color,\n valuePlacement,\n opacity,\n markers,\n direction,\n value\n };\n }\n}\nexport default MockDataBarGridModel;\n//# sourceMappingURL=MockDataBarGridModel.js.map","import { createElement, useCallback, useEffect, useState } from 'react';\nimport cl from 'classnames';\nimport {\n Item,\n type ItemElement,\n type NormalizedItem,\n} from '@deephaven/components';\nimport { dh as dhIcons } from '@deephaven/icons';\n\nexport const ISOLATED_SECTION_QUERY_CLASS = 'isolated-section-query';\nexport const SAMPLE_SECTION_CLASS = 'sample-section';\n\n/**\n * Generate a given number of `Item` elements.\n */\nexport function* generateItemElements(\n start: number,\n end: number\n): Generator<ItemElement> {\n const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n const len = letters.length;\n\n for (let i = start; i <= end; i += 1) {\n const charI = i % len;\n let suffix = String(Math.floor(i / len));\n if (suffix === '0') {\n suffix = '';\n }\n const letter = letters[charI];\n const key = `${letter}${suffix}`;\n const content = `${letter.repeat(3)}${suffix}`;\n\n // eslint-disable-next-line react/no-children-prop\n yield createElement(Item, {\n key,\n textValue: content,\n children: content,\n });\n }\n}\n\n/**\n * Generate a given number of NormalizedItems.\n * @param count The number of items to generate\n */\nexport function* generateNormalizedItems(\n count: number,\n include: { descriptions?: boolean; icons?: boolean } = {}\n): Generator<NormalizedItem> {\n const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n const len = letters.length;\n\n const iconKeys = Object.keys(dhIcons);\n\n for (let i = 0; i < count; i += 1) {\n const charI = i % len;\n let suffix = String(Math.floor(i / len));\n if (suffix === '0') {\n suffix = '';\n }\n const letter = letters[charI];\n const key = `${letter}${suffix}`;\n\n const icon =\n include.icons === true ? iconKeys[i % iconKeys.length] : undefined;\n\n const description =\n include.descriptions === true ? `Description ${key}` : undefined;\n\n const content = icon ?? `${letter.repeat(3)}${suffix}`;\n\n yield {\n key,\n item: {\n key: (i + 1) * 100,\n content,\n textValue: content,\n description,\n icon,\n },\n };\n }\n}\n\n/**\n * Pseudo random number generator with seed so we get reproducible output.\n * This is necessary in order for e2e tests to work.\n */\nexport function* pseudoRandomWithSeed(\n seed = 1\n): Generator<number, void, never> {\n while (true) {\n // eslint-disable-next-line no-param-reassign\n seed = (seed * 16807) % 2147483647;\n yield seed / 2147483647;\n }\n}\n\n/**\n * If query string isolatedSection=true, return the current location hash.\n * Otherwise ''\n */\nfunction getIsolatedSectionHash() {\n const isolateSection = window.location.search.includes('isolateSection=true');\n return isolateSection ? window.location.hash.replace(/^#/, '') : '';\n}\n\n/**\n * If query string isolatedSection=true, return the current location hash.\n * Otherwise ''. Updates when the hash changes.\n */\nexport function useIsolateSectionHash(): string {\n const [hash, setHash] = useState(getIsolatedSectionHash);\n\n useEffect(() => {\n const hashChangeHandler = () => setHash(getIsolatedSectionHash());\n\n window.addEventListener('hashchange', hashChangeHandler);\n\n return () => window.removeEventListener('hashchange', hashChangeHandler);\n }, []);\n\n return hash;\n}\n\n/**\n * Returns a callback that will generate pseudo random numbers based on the\n * given seed.\n * @param seed\n */\nexport function useSeededRandomNumberCallback(seed = 1): () => number {\n const [randomGenerator] = useState(() => pseudoRandomWithSeed(seed));\n\n return useCallback(() => {\n const result = randomGenerator.next();\n\n if (result.done === true) {\n throw new Error('Random number generator unexpectedly finished');\n }\n\n return result.value;\n }, [randomGenerator]);\n}\n\nexport function getSectionIdFromName(name: string): string {\n return `${SAMPLE_SECTION_CLASS}-${name\n .toLocaleLowerCase()\n .replaceAll(' ', '-')}`;\n}\n\n/**\n * Return id and className props for a sample section. Class\n * names generated by this util are used by e2e tests to take snapshots of\n * styleguide sections.\n * @param name Name of the section\n * @param classNames Optional list of class names to include\n */\nexport function sampleSectionIdAndClasses(\n name: string,\n classNames: string[] = []\n): { id: string; className: string } {\n const id = getSectionIdFromName(name);\n\n const className = cl(SAMPLE_SECTION_CLASS, ...classNames);\n\n return {\n id,\n className,\n };\n}\n\n/**\n * Return id and UNSAFE_className props for a sample section. Class\n * names generated by this util are used by e2e tests to take snapshots of\n * styleguide sections.\n * @param name Name of the section\n * @param classNames Optional list of class names to include\n */\nexport function sampleSectionIdAndClassesSpectrum(\n name: string,\n classNames: string[] = []\n): { id: string; UNSAFE_className: string } {\n const { id, className } = sampleSectionIdAndClasses(name, classNames);\n\n return {\n id,\n UNSAFE_className: className,\n };\n}\n","import { type Flex, type Grid, type View } from '@deephaven/components';\nimport type { StyleProps } from '@react-types/shared';\nimport React, { type CSSProperties, type ReactNode } from 'react';\nimport {\n getSectionIdFromName,\n sampleSectionIdAndClasses,\n sampleSectionIdAndClassesSpectrum,\n useIsolateSectionHash,\n} from './utils';\n\nexport interface SampleSectionProps extends StyleProps {\n name: string;\n className?: string;\n component?: 'div' | typeof Flex | typeof Grid | typeof View;\n style?: CSSProperties;\n children: ReactNode;\n}\n\nexport function SampleSection({\n name,\n className = '',\n component: Component = 'div',\n ...styleProps\n}: SampleSectionProps): JSX.Element | null {\n const hash = useIsolateSectionHash();\n const sectionId = getSectionIdFromName(name);\n const shouldRender = hash === '' || hash === sectionId;\n\n if (!shouldRender) {\n return null;\n }\n\n const sectionIdAndClasses =\n Component === 'div'\n ? sampleSectionIdAndClasses\n : sampleSectionIdAndClassesSpectrum;\n\n return (\n <Component\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...sectionIdAndClasses(name, [className])}\n />\n );\n}\n\nexport default SampleSection;\n","import React, { Component, type ReactElement } from 'react';\nimport {\n Button,\n SocketedButton,\n Flex,\n ButtonGroup,\n} from '@deephaven/components';\n\nimport { dhTruck } from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\nfunction noOp(): void {\n return undefined;\n}\n\ninterface ButtonsState {\n toggle: boolean;\n}\nclass Buttons extends Component<Record<string, never>, ButtonsState> {\n static renderButtons(): ReactElement {\n return (\n <>\n <h5>Button Kinds</h5>\n <SampleSection name=\"buttons-regular\" style={{ padding: '1rem 0' }}>\n <ButtonGroup>\n <Button kind=\"primary\" onClick={noOp}>\n Primary\n </Button>\n <Button kind=\"secondary\" onClick={noOp}>\n Secondary\n </Button>\n <Button kind=\"tertiary\" onClick={noOp}>\n Tertiary\n </Button>\n <Button kind=\"success\" onClick={noOp}>\n Success\n </Button>\n <Button kind=\"danger\" onClick={noOp}>\n Danger\n </Button>\n <Button kind=\"inline\" onClick={noOp}>\n Inline\n </Button>\n <Button kind=\"ghost\" onClick={noOp}>\n Ghost\n </Button>\n </ButtonGroup>\n </SampleSection>\n </>\n );\n }\n\n static renderLinks(): ReactElement {\n const levelMap = {\n primary: 'accent',\n secondary: 'neutral',\n success: 'positive',\n info: 'info',\n warning: 'notice',\n danger: 'negative',\n };\n\n return (\n <SampleSection name=\"links\" style={{ paddingTop: '1rem' }}>\n <h5>Links</h5>\n <Flex gap=\"1rem\">\n {Object.entries(levelMap).map(([level, semantic]) => (\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\n <a key={level} className={`text-${level}`}>\n {level} ({semantic})\n </a>\n ))}\n </Flex>\n </SampleSection>\n );\n }\n\n static renderSocketedButtons(): ReactElement {\n return (\n <SampleSection name=\"buttons-socketed\">\n <h5>Socketed Buttons (for linker)</h5>\n <ButtonGroup marginBottom=\"1rem\">\n <SocketedButton onClick={noOp}>Unlinked</SocketedButton>\n <SocketedButton isLinked onClick={noOp}>\n Linked\n </SocketedButton>\n <SocketedButton isLinkedSource onClick={noOp}>\n Linked Source\n </SocketedButton>\n <SocketedButton isLinked isInvalid onClick={noOp}>\n Error\n </SocketedButton>\n <SocketedButton disabled onClick={noOp}>\n Disabled\n </SocketedButton>\n </ButtonGroup>\n </SampleSection>\n );\n }\n\n constructor(props: Record<string, never>) {\n super(props);\n\n this.state = {\n toggle: true,\n };\n }\n\n renderInlineButtons(): ReactElement {\n const { toggle } = this.state;\n\n return (\n <SampleSection name=\"buttons-inline\" style={{ padding: '1rem 0' }}>\n <h5>Inline Buttons</h5>\n Regular btn-inline:\n <Button\n className=\"mx-2\"\n kind=\"inline\"\n icon={dhTruck}\n tooltip=\"test\"\n onClick={noOp}\n />\n Toggle button (class active):\n <Button\n className=\"mx-2\"\n onClick={() => {\n this.setState({ toggle: !toggle });\n }}\n active={toggle}\n kind=\"inline\"\n icon={dhTruck}\n tooltip=\"test\"\n />\n Disabled:\n <Button className=\"mx-2\" kind=\"inline\" disabled onClick={noOp}>\n Disabled\n </Button>\n With Text:\n <Button className=\"mx-2\" kind=\"inline\" icon={dhTruck} onClick={noOp}>\n <span>Text Button</span>\n </Button>\n <br />\n <br />\n <span>btn-link-icon (no text):</span>\n <Button kind=\"ghost\" icon={dhTruck} tooltip=\"test\" onClick={noOp} />\n <span className=\"mx-2\">btn-link:</span>\n <Button kind=\"ghost\" onClick={noOp}>\n Text Button\n </Button>\n <span className=\"mx-2\">btn-link (text w/ optional with icon):</span>\n <Button kind=\"ghost\" icon={dhTruck} onClick={noOp}>\n Text Button\n </Button>\n </SampleSection>\n );\n }\n\n render(): React.ReactElement {\n const buttons = Buttons.renderButtons();\n const inlineButtons = this.renderInlineButtons();\n const socketedButtons = Buttons.renderSocketedButtons();\n const links = Buttons.renderLinks();\n\n return (\n <div>\n <h2 className=\"ui-title\">Buttons</h2>\n <div style={{ padding: '1rem 0' }}>\n {buttons}\n {inlineButtons}\n {socketedButtons}\n {links}\n </div>\n </div>\n );\n }\n}\n\nexport default Buttons;\n","import React, { type ReactElement, useState } from 'react';\nimport { Chart, type ChartModel, MockChartModel } from '@deephaven/chart';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useSeededRandomNumberCallback } from './utils';\nimport SampleSection from './SampleSection';\n\nfunction Charts(): ReactElement {\n const dh = useApi();\n\n MockChartModel.random = useSeededRandomNumberCallback();\n\n const [model] = useState(() => new MockChartModel(dh));\n\n return (\n <SampleSection name=\"charts\">\n <h2 className=\"ui-title\">Chart</h2>\n <div style={{ height: 500 }}>\n <Chart model={model as ChartModel} />\n </div>\n </SampleSection>\n );\n}\n\nexport default Charts;\n","import { getExpressionRanges } from '@deephaven/components';\nimport { ColorUtils } from '@deephaven/utils';\n\nexport const INVALID_COLOR_BORDER_STYLE = '2px solid var(--dh-color-notice-bg)';\n\n// Group names are extracted from var names via a regex capture group. Most of\n// them work pretty well, but some need to be remapped to a more appropriate\n// group.\nconst REASSIGN_VARIABLE_GROUPS: Record<string, string> = {\n '--dh-color-black': 'gray',\n '--dh-color-white': 'gray',\n // Semantic\n '--dh-color-border': 'General',\n '--dh-color-bg': 'General',\n '--dh-color-surface-bg': 'General',\n '--dh-color-fg': 'General',\n '--dh-color-content-bg': 'General',\n '--dh-color-subdued-content-bg': 'General',\n '--dh-color-dropshadow': 'General',\n '--dh-color-keyboard-selected-bg': 'Misc',\n '--dh-color-hover-border': 'Misc',\n '--dh-color-visual-positive': 'Visual Status',\n '--dh-color-visual-negative': 'Visual Status',\n '--dh-color-visual-notice': 'Visual Status',\n '--dh-color-visual-info': 'Visual Status',\n '--dh-color-gray-bg': 'Default Background',\n '--dh-color-red-bg': 'Default Background',\n '--dh-color-orange-bg': 'Default Background',\n '--dh-color-yellow-bg': 'Default Background',\n '--dh-color-chartreuse-bg': 'Default Background',\n '--dh-color-celery-bg': 'Default Background',\n '--dh-color-green-bg': 'Default Background',\n '--dh-color-seafoam-bg': 'Default Background',\n '--dh-color-cyan-bg': 'Default Background',\n '--dh-color-blue-bg': 'Default Background',\n '--dh-color-indigo-bg': 'Default Background',\n '--dh-color-purple-bg': 'Default Background',\n '--dh-color-fuchsia-bg': 'Default Background',\n '--dh-color-magenta-bg': 'Default Background',\n // Editor\n '--dh-color-editor-bg': 'editor',\n '--dh-color-editor-fg': 'editor',\n '--dh-color-editor-context-menu-bg': 'menus',\n '--dh-color-editor-context-menu-fg': 'menus',\n '--dh-color-editor-menu-selection-bg': 'menus',\n // Grid\n '--dh-color-grid-bg': 'grid',\n '--dh-color-grid-number-positive': 'Data Types',\n '--dh-color-grid-number-negative': 'Data Types',\n '--dh-color-grid-number-zero': 'Data Types',\n '--dh-color-grid-date': 'Data Types',\n '--dh-color-grid-string-null': 'Data Types',\n} as const;\n\nconst SWATCH_LABEL = {\n '--dh-color-black': '',\n '--dh-color-action-active-bg': 'Action.active',\n '--dh-color-action-down-bg': 'Action:active',\n '--dh-color-action-hover-bg': 'Action:hover',\n '--dh-color-action-active-hover-bg': 'Action.active:hover',\n '--dh-color-action-disabled-bg': 'Action:disabled',\n};\n\n// Mappings of variable groups to rename\nconst RENAME_VARIABLE_GROUPS = {\n palette: {\n black: 'gray',\n white: 'gray',\n },\n editor: {\n line: 'editor',\n comment: 'code',\n string: 'code',\n number: 'code',\n delimiter: 'code',\n identifier: 'code',\n keyword: 'code',\n operator: 'code',\n storage: 'code',\n predefined: 'code',\n selection: 'state',\n focus: 'state',\n },\n chart: {\n axis: 'Chart',\n bg: 'Chart',\n grid: 'Chart',\n plot: 'Chart',\n title: 'Chart',\n active: 'Data',\n trend: 'Data',\n area: 'Data',\n range: 'Data',\n line: 'Deprecated',\n },\n grid: { data: 'Data Bars', context: 'Context Menu' },\n semantic: {},\n component: {},\n} satisfies Record<string, Record<string, string>>;\n\n/**\n * Return black or white contrast color.\n *\n * Note that this should be sufficient for styleguide swatch examples, but it\n * may not completely align with how Spectrum determines contrast colors, hence\n * leaving this here instead of promoting to `ColorUtils`.\n */\nexport function contrastColor(color: string): 'black' | 'white' {\n const rgba = ColorUtils.parseRgba(ColorUtils.asRgbOrRgbaString(color) ?? '');\n if (rgba == null || rgba.a < 0.5) {\n return 'white';\n }\n\n const { r, g, b } = rgba;\n return ColorUtils.getBrightness([r, g, b]) >= 128 ? 'black' : 'white';\n}\n\n/** Extract an array of { name, value } pairs for css variables in a given string */\nexport function extractColorVars(\n styleText: string\n): { name: string; value: string }[] {\n const computedStyle = getComputedStyle(document.documentElement);\n const varNames = styleText\n .split(/[\\n;]/g)\n // Non-minified css will have leading 2 spaces in front of each css variable\n // declaration. Minified has no prefix except for the first line which will\n // have ':root{' prefix.\n .map(line => /^(?:\\s{2}|:root\\{)?(--dh-color-(?:[^:]+))/.exec(line)?.[1])\n .filter((match): match is string => Boolean(match));\n\n return varNames\n .map(varName => {\n const value = computedStyle.getPropertyValue(varName);\n\n // Chart colorway consists of multiple colors, so split into separate\n // swatches for illustration. Note that this assumes the colors are hsl\n // values. We'll need to make this more robust if we ever change the\n // default themes to use non-hsl.\n if (varName === '--dh-color-chart-colorway') {\n const colorwayColors = getExpressionRanges(value ?? '').map(\n ([start, end]) => value.substring(start, end + 1)\n );\n return colorwayColors.map((varExp, i) => ({\n name: `${varName}-${i}`,\n value: varExp,\n }));\n }\n\n return {\n name: varName,\n value,\n };\n })\n .flat();\n}\n\n/** Group color data based on capture group value */\nexport function buildColorGroups(\n groupKey: keyof typeof RENAME_VARIABLE_GROUPS,\n styleText: string,\n captureGroupI: number,\n reassignVarGroups: Record<string, string> = REASSIGN_VARIABLE_GROUPS\n): Record<\n string,\n { isLabel?: boolean; name: string; value: string; note?: string }[]\n> {\n const groupRemap: Record<string, string> = RENAME_VARIABLE_GROUPS[groupKey];\n const swatchData = extractColorVars(styleText);\n\n const groupData = swatchData.reduce(\n (acc, { name, value }) => {\n // Skip true black/white\n if (/^--dh-color-true-(.*?)$/.test(name)) {\n return acc;\n }\n\n // Skip gray light/mid/dark as they will be marked via notes on the gray\n // numbered palette\n if (/^--dh-color-gray-(light|mid|dark)$/.test(name)) {\n return acc;\n }\n\n const match = /^--dh-color-([^-]+)(?:-([^-]+))?/.exec(name);\n let group =\n reassignVarGroups[name] ??\n match?.[captureGroupI] ??\n match?.[1] ??\n '???';\n\n group = groupRemap[group] ?? group;\n\n if (acc[group] == null) {\n acc[group] = [];\n }\n\n // Add a spacer for black / white\n if (name in SWATCH_LABEL) {\n acc[group].push({\n isLabel: true,\n name: SWATCH_LABEL[name as keyof typeof SWATCH_LABEL],\n value: '',\n });\n }\n\n // Skip gray light/mid/dark as we are planning to remove them\n if (/^--dh-color-gray-(light|mid|dark)$/.test(name)) {\n return acc;\n }\n\n acc[group].push({ name, value });\n\n return acc;\n },\n {} as Record<\n string,\n { isLabel?: boolean; name: string; value: string; note?: string }[]\n >\n );\n\n return groupData;\n}\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { contrastColor } from './colorUtils';\n\n/**\n * Ref that will set the foreground color of an element to contrast with its\n * background color.\n */\nexport function useContrastFgColorRef<\n T extends HTMLElement,\n>(): React.RefObject<T> {\n const ref = useRef<T>(null);\n\n useLayoutEffect(() => {\n if (ref.current == null) {\n return;\n }\n\n const computedStyle = getComputedStyle(ref.current);\n\n const { backgroundColor } = computedStyle;\n\n ref.current.style.color = contrastColor(backgroundColor);\n }, []);\n\n return ref;\n}\n\n/**\n * Extract a --dh-color-xxxx variable from the pseudo content of an element.\n * @param elementRef Ref to the element to extract the color from.\n * @param pseudoElement The pseudo element to extract the color from.\n */\nexport function useDhColorFromPseudoContent(\n elementRef: React.RefObject<HTMLElement | null>,\n pseudoElement: ':before' | ':after'\n): string | undefined {\n const [color, setColor] = useState<string>();\n\n useEffect(() => {\n if (elementRef.current == null) {\n return;\n }\n\n const pseudoContent = getComputedStyle(\n elementRef.current,\n pseudoElement\n ).getPropertyValue('content');\n\n // Extract the var name from the content (e.g. '--dh-color-gray-900')\n const dhColorVarName = /\"(--dh-color-.*?)[,\"]/.exec(pseudoContent)?.[1];\n if (dhColorVarName == null) {\n return;\n }\n\n const dhColorValue = getComputedStyle(elementRef.current).getPropertyValue(\n dhColorVarName\n );\n\n setColor(dhColorValue);\n }, [elementRef, pseudoElement]);\n\n return color;\n}\n","import React, { type ReactNode, useMemo } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { INVALID_COLOR_BORDER_STYLE } from './colorUtils';\nimport { useContrastFgColorRef, useDhColorFromPseudoContent } from './hooks';\n\nexport interface SwatchProps {\n className: string;\n children: ReactNode;\n}\n\nexport function Swatch({ className, children }: SwatchProps): JSX.Element {\n const ref = useContrastFgColorRef<HTMLDivElement>();\n\n // The `swatch-color` mixin parses and exposes the value of css var expressions\n // via a :after { content } selector. The value will be surrounded in double\n // quotes e.g.\n // var(--dh-color-red-500) is exposed as \"--dh-color-red-500\"\n // var(--dh-color-gray-900, #fcfcfa) is exposed as \"--dh-color-gray-900, #fcfcfa\"\n const dhColor = useDhColorFromPseudoContent(ref, ':after');\n\n const tooltip = useMemo(\n () =>\n dhColor != null\n ? {\n value: dhColor,\n }\n : null,\n [dhColor]\n );\n\n const hasValue = tooltip != null && tooltip.value !== '';\n\n return (\n <div\n ref={ref}\n className={className}\n style={{\n border: hasValue ? undefined : INVALID_COLOR_BORDER_STYLE,\n }}\n >\n {hasValue && (\n <Tooltip interactive>\n <div>{tooltip.value}</div>\n </Tooltip>\n )}\n {children}\n </div>\n );\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Swatch } from './Swatch';\nimport SampleSection from './SampleSection';\n\nfunction Colors(): React.ReactElement {\n const graySwatches = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '850',\n '8XX',\n '900',\n ].map(swatch => (\n <Swatch\n key={swatch}\n className={classNames('swatch', 'gray-swatch', `gray-swatch-${swatch}`)}\n >\n {swatch === '8XX' ? 'N/A' : `Gray-${swatch}`}\n </Swatch>\n ));\n\n const baseColorPaletteSwatches = [\n 'red',\n 'orange',\n 'yellow',\n 'green',\n 'blue',\n 'purple',\n 'white',\n 'black',\n ].map(swatch => (\n <Swatch key={swatch} className={classNames('swatch', `swatch-${swatch}`)}>\n {swatch}\n </Swatch>\n ));\n\n const colorSwatches = [\n 'content-bg',\n 'background',\n 'foreground',\n 'primary',\n 'primary-dark',\n 'secondary',\n 'secondary-hover',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'danger-hover',\n ].map(swatch => (\n <Swatch key={swatch} className={classNames('swatch', `swatch-${swatch}`)}>\n {swatch}\n </Swatch>\n ));\n\n return (\n <SampleSection name=\"colors\">\n <h2 className=\"ui-title\">Colors</h2>\n <div className=\"row\">\n <div className=\"col\">\n {graySwatches}\n {baseColorPaletteSwatches}\n </div>\n\n <div className=\"col\">{colorSwatches}</div>\n\n <div className=\"col\">\n <p>\n This section is for legacy reference only. Use the css variable\n based semantic colors in the following sections. You should not be\n using colors defined in the theme color palette directly.\n </p>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Colors;\n","/* eslint no-alert: \"off\" */\n/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\nimport {\n Button,\n ContextActions,\n KEY,\n MODIFIER,\n type ResolvableContextAction,\n Shortcut,\n} from '@deephaven/components';\nimport {\n vsBell,\n dhFilePrint,\n vsQuestion,\n type IconDefinition,\n} from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\ninterface ContextMenuItem {\n title: string;\n icon?: IconDefinition;\n action?: () => void;\n shortcut?: Shortcut;\n group?: number;\n order?: number;\n disabled?: boolean;\n}\n\nclass ContextMenus extends Component {\n constructor(props: Record<string, never>) {\n super(props);\n\n this.makeContextMenuItems = this.makeContextMenuItems.bind(this);\n }\n\n makeContextMenuItems(iteration?: number): Array<ContextMenuItem> {\n const suffix = iteration !== undefined ? ` ${iteration}` : '';\n return [\n {\n title: `Show Alert${suffix}`,\n icon: vsBell,\n action: () => {\n alert(`Alert${suffix}!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_ALERT',\n name: 'Show Alert',\n shortcut: [MODIFIER.CTRL, KEY.A],\n macShortcut: [MODIFIER.CMD, KEY.A],\n }),\n },\n {\n title: `Log Message${suffix}`,\n icon: dhFilePrint,\n action: () => {\n console.log(`Logging a message${suffix}!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.LOG_MESSAGE',\n name: 'Log Message',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CMD, KEY.L],\n }),\n },\n {\n title: 'Sub-menu',\n actions: () => this.makeContextMenuItems((iteration ?? 0) + 1),\n order: 3,\n },\n ].concat(\n new Array(10).fill({\n title: `Disabled Option${suffix}`,\n disabled: true,\n order: 2,\n })\n );\n }\n\n render(): React.ReactElement {\n const contextActions = this.makeContextMenuItems();\n\n const globalActions: Array<ContextMenuItem> = [\n {\n title: 'Show Shortcuts',\n icon: vsQuestion,\n action: () => {\n alert('Show keyboard shortcuts!');\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_SHORTCUTS',\n name: 'Show Shortcuts',\n shortcut: [MODIFIER.CTRL, KEY.SLASH],\n macShortcut: [MODIFIER.CMD, KEY.SLASH],\n }),\n group: ContextActions.groups.global,\n },\n ];\n\n const actions = globalActions.concat(contextActions);\n\n const delayedActions: ResolvableContextAction = () =>\n new Promise(resolve => {\n setTimeout(() => {\n resolve(contextActions);\n }, 3000);\n });\n\n return (\n <SampleSection name=\"context-menus\">\n <h2 className=\"ui-title\">Context Menu</h2>\n <Button\n kind=\"primary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n onClick={() => undefined}\n >\n Right Click Me\n <ContextActions actions={actions} />\n </Button>\n <Button\n kind=\"tertiary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n onClick={() => undefined}\n >\n Right Click Me\n <ContextActions actions={delayedActions} />\n </Button>\n </SampleSection>\n );\n }\n}\n\nexport default ContextMenus;\n","/* eslint no-alert: \"off\" */\n/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\nimport {\n HierarchicalCheckboxMenu,\n Popper,\n type HierarchicalCheckboxValueMap,\n Button,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\ninterface DialogState {\n isShown: boolean;\n checkBoxMap: HierarchicalCheckboxValueMap;\n}\n\ninterface Dialog {\n sampleInput: React.RefObject<HTMLInputElement>;\n}\n\nclass Dialog extends Component<unknown, DialogState> {\n constructor(props: unknown) {\n super(props);\n\n this.sampleInput = React.createRef();\n\n this.handleUpdateCheckboxMap = this.handleUpdateCheckboxMap.bind(this);\n\n const parentA = [\n 'Parent A',\n new Map([\n ['Child 1', true],\n ['Child 2', false],\n ]),\n ];\n\n const parentB = [\n 'Parent B',\n new Map([\n ['Child 3', true],\n ['Child 4', false],\n ['Child 5', true],\n ['Child 6', false],\n ]),\n ];\n\n const leaf = ['Leaf Parent', true];\n\n this.state = {\n isShown: false,\n checkBoxMap: new Map([parentA, parentB, leaf] as Iterable<\n readonly [string, Map<string, boolean>]\n >),\n };\n }\n\n handleUpdateCheckboxMap(checkBoxMap: HierarchicalCheckboxValueMap): void {\n this.setState({\n checkBoxMap,\n });\n }\n\n renderChild(): React.ReactElement {\n return (\n <div className=\"p-3\">\n <h4>Sample Child</h4>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInput1\">\n Input Label\n <input\n ref={this.sampleInput}\n type=\"text\"\n className=\"form-control\"\n id=\"exampleInput1\"\n aria-describedby=\"emailHelp\"\n placeholder=\"Input Placeholder\"\n />\n </label>\n <small className=\"form-text text-muted\">\n Help text for a form input\n </small>\n </div>\n </div>\n );\n }\n\n render(): React.ReactElement {\n const { isShown, checkBoxMap } = this.state;\n\n return (\n <SampleSection name=\"dialog\">\n <h2 className=\"ui-title\">Popover Dialog</h2>\n <p>\n Popover dialog that can contain interactive elements, can be set to\n self close on blur.\n </p>\n <Button\n kind=\"primary\"\n style={{ marginBottom: '1rem', marginRight: '1rem' }}\n onClick={() => {\n if (isShown) {\n this.setState({ isShown: false });\n } else {\n this.setState({ isShown: true });\n }\n }}\n >\n Open Dialog\n <Popper\n options={{ placement: 'bottom' }}\n isShown={isShown} // controls if its shown or not\n onEntered={() => {\n // Example setting focus on entered child\n // Could also be performed within the didMount if child is a component\n if (this.sampleInput.current) {\n this.sampleInput.current.focus();\n }\n }}\n onExited={() => {\n this.setState({ isShown: false });\n }}\n closeOnBlur // if you want dialog to self close, on click outside\n interactive // if popper contents will be interactable\n >\n {this.renderChild()}\n </Popper>\n </Button>\n <p>\n The Hierarchical Checkbox Menu uses a popover dialog to display\n hierarchical groups of checkboxes.\n </p>\n\n <HierarchicalCheckboxMenu\n menuText=\"Checkbox Menu\"\n valueMap={checkBoxMap}\n onUpdateValueMap={this.handleUpdateCheckboxMap}\n />\n </SampleSection>\n );\n }\n}\n\nexport default Dialog;\n","/* eslint no-alert: \"off\" */\n/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\n\nimport {\n ContextActions,\n DropdownMenu,\n KEY,\n MODIFIER,\n Shortcut,\n type DropdownAction,\n Button,\n} from '@deephaven/components';\nimport {\n vsBell,\n dhFilePrint,\n vsKebabVertical,\n vsQuestion,\n} from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\ninterface DropdownMenus {\n button: React.RefObject<HTMLDivElement>;\n}\n\ninterface DropdownMenusState {\n isShown: boolean;\n}\n\nclass DropdownMenus extends Component<\n Record<string, never>,\n DropdownMenusState\n> {\n constructor(props: Record<string, never>) {\n super(props);\n\n this.state = {\n isShown: false,\n };\n }\n\n render(): React.ReactElement {\n const contextActions = [\n {\n title: `Show Alert`,\n icon: vsBell,\n action: () => {\n alert(`Alert!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_ALERT',\n name: 'Show Alert',\n shortcut: [MODIFIER.CTRL, KEY.A],\n macShortcut: [MODIFIER.CMD, KEY.A],\n }),\n },\n {\n title: `Log Message`,\n icon: dhFilePrint,\n action: () => {\n console.log(`Logging a message!`);\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.LOG_MESSAGE',\n name: 'Log Message',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CMD, KEY.L],\n }),\n },\n ] as DropdownAction[];\n\n const globalActions = [\n {\n title: 'Show Shortcuts',\n icon: vsQuestion,\n action: () => {\n alert('Show keyboard shortcuts!');\n },\n shortcut: new Shortcut({\n id: 'STYLEGUIDE.SHOW_SHORTCUTS',\n name: 'Show Shortcuts',\n shortcut: [MODIFIER.CTRL, KEY.SLASH],\n macShortcut: [MODIFIER.CMD, KEY.SLASH],\n }),\n group: ContextActions.groups.global,\n },\n ] as DropdownAction[];\n\n const actions = globalActions.concat(contextActions);\n\n const { isShown } = this.state;\n\n return (\n <SampleSection name=\"dropdown-menus\">\n <h2 className=\"ui-title\">Dropdown Menu</h2>\n <p>\n A simple dropdown menu of actions, can open on click of parent\n container, or controlled by prop.\n </p>\n <Button\n kind=\"inline\"\n className=\"mx-2\"\n icon={vsKebabVertical}\n onClick={() => undefined}\n >\n <DropdownMenu actions={actions} />\n </Button>\n <Button\n kind=\"primary\"\n style={{\n marginRight: '1rem',\n minWidth: '165px',\n }}\n onClick={() => {\n if (isShown) {\n this.setState({ isShown: false });\n } else {\n this.setState({ isShown: true });\n }\n }}\n >\n Menu Shown: {isShown.toString()}\n </Button>\n <div\n ref={this.button}\n className=\"btn btn-secondary disabled\"\n style={{ marginRight: '1rem' }}\n >\n Shown using isShown\n <DropdownMenu\n isShown={isShown}\n onMenuClosed={() => {\n this.setState({ isShown: false });\n }}\n actions={actions}\n />\n </div>\n </SampleSection>\n );\n }\n}\n\nexport default DropdownMenus;\n","const testPython = `trades = db.t(\"LearnDeephaven\", \"StockTrades\").where(\"Date=\\`2017-08-25\\`\")\\\\\n .headBy(3, \"Sym\")\\\\\n .view(\"Sym\", \"Last\")\n\nsummary = trades.view(\"Sym\", \"AvgPrice=Last\").avgBy(\"Sym\")\n\nlj = summary.leftJoin(trades, \"Sym\", \"Last\")\n\n\n\ndef rollingAvg(rows, values):\n calculations = jpy.array('double', values.size()) # create an array of integers\n\n sum = 0\n n = 0\n avg = 0\n\n for i in range(values.size()):\n sum += values.get(i) #add each value to sum\n if (i >= rows): sum -= values.get(i - rows) #subtract when needed\n\n n = i + 1 if (i < rows) else rows #n increments with i until i=rows\n avg = sum / n #get updated average every iteration\n\n calculations[i] = avg #store running average\n\n return calculations #return an array of rolling averages\n\ndef rollingStd(rows, values, averages):\n calculations = jpy.array('double', values.size()) # create an array of integers\n\n sum = 0\n n = 0\n\n for i in range(values.size()):\n sum = 0\n\n j = i\n while j >= 0 and j > i - rows:\n difference = values.get(j) - averages[i]\n squareDiff = difference ** 2\n sum += squareDiff\n j -= 1\n\n n = i + 1 if (i < rows) else rows\n variance = sum / n\n standardDev = variance ** (1/2.0)\n calculations[i] = standardDev\n\n return calculations\n\ntrades = db.t(\"LearnDeephaven\", \"StockTrades\")\\\\\n .where(\"Date=\\`2017-08-25\\`\")\\\\\n .view(\"Sym\", \"Last\", \"Size\", \"ExchangeTimestamp\")\n\ntrades30min = trades.updateView(\"TimeBin=lowerBin(ExchangeTimestamp, 30*MINUTE)\")\\\\\n .firstBy(\"Sym\", \"TimeBin\")\n\nrollingCalc = trades30min.by(\"Sym\")\\\\\n .update(\"Avg=(double[])rollingAvg.call(30, Last)\",\n \"Std=(double[])rollingStd.call(30, Last, Avg)\")\\\\\n .ungroup()\nminEdge = 0.5\nmaxPos = 3.0\nliquidity = 1e6\n\ntargetPos = rollingCalc.updateView(\"Zscore=(Avg-Last)/Std if (Std > 0) else NULL_DOUBLE\", \"AdjZscore=signum(Zscore) * min(maxPos, max(abs(Zscore)-minEdge), 0.0)\", \"TargetPosition=(int)(liquidity*AdjZscore/Last)\")\\\\\n .dropColumns(\"ExchangeTimestamp\", \"Avg\", \"Std\", \"Zscore\", \"AdjZscore\")\n\ntimeBinIndexes = targetPos.leftJoin(trades30min, \"Sym\", \"Times=ExchangeTimestamp, SharesTraded=Size\")\\\\\n .updateView(\"StartIndex=binSearchIndex(Times, TimeBin-30*MINUTE, BS_LOWEST)\", \"EndIndex=binSearchIndex(Times, TimeBin, BS_HIGHEST)\")\\\\\n .dropColumns(\"Times\")\n\nshares30min = timeBinIndexes.updateView(\"SharesTraded30Min=sum(SharesTraded.subArray(StartIndex, EndIndex))\")\\\\\n .dropColumns(\"SharesTraded\", \"StartIndex\", \"EndIndex\")\n\nfrom math import copysign\nclass SimulatorState:\n def __init__(self):\n self.hm = {}\n\n def __call__(self, sym, targetPos, shares10s):\n if sym not in self.hm:\n self.hm[sym] = [0.0] * 2\n tradedAndPosition = self.hm[sym]\n tradedAndPosition[0] = 0.0 if (targetPos == None) else copysign(1, targetPos - tradedAndPosition[1]) * min(abs(targetPos - tradedAndPosition[1]), shares10s * 0.1)\n tradedAndPosition[1] += tradedAndPosition[0]\n return jpy.array('double', list(tradedAndPosition))\n\nss = SimulatorState()\n\nsimulation = shares30min.update(\"Values=(double[])ss.call(Sym, TargetPosition, SharesTraded30Min)\", \"PositionChange=Values[0]\", \"Position=Values[1]\")\\\\\n .dropColumns(\"Values\")\n`;\nconst testGroovy = `trades = db.t(\"LearnDeephaven\", \"StockTrades\").where(\"Date=\\`2017-08-25\\`\")\n .headBy(3, \"Sym\")\n .view(\"Sym\", \"Last\")\n\nsummary = trades.view(\"Sym\", \"AvgPrice=Last\").avgBy(\"Sym\")\n\nlj = summary.leftJoin(trades, \"Sym\", \"Last\")\n\n\nrollingAvg = { rows, values ->\n \n calculations = new double[values.size()]\n \n sum = 0\n n = 0\n avg = 0\n \n for (int i = 0; i < values.size(); ++i)\n {\n sum += values.get(i) //add each value to sum\n if (i >= rows) sum -= values.get(i - rows) //subtract when needed\n \n n = (i < rows) ? i + 1 : rows //n increments with i until i=rows\n avg = sum / n //get updated average every iteration\n \n calculations[i] = avg //store running average\n }\n \n return calculations //return an array of rolling averages\n}\n\nrollingStd = { rows, values, averages ->\n calculations = new double[values.size()]\n\n sum = 0\n n = 0\n\n for (int i = 0; i < values.size(); ++i)\n {\n sum = 0\n for (int j = i; j >= 0 && j > i - rows; --j)\n {\n difference = values.get(j) - averages[i]\n squareDiff = Math.pow(difference, 2)\n sum += squareDiff\n }\n\n n = (i < rows) ? i + 1 : rows\n variance = sum / n\n standardDev = Math.sqrt(variance)\n calculations[i] = standardDev\n }\n return calculations\n}\n\ntrades = db.t(\"LearnDeephaven\", \"StockTrades\")\n .where(\"Date=\\`2017-08-25\\`\")\n .view(\"Sym\", \"Last\", \"Size\", \"ExchangeTimestamp\")\n\ntrades30min = trades.updateView(\"TimeBin=lowerBin(ExchangeTimestamp, 30*MINUTE)\")\n .firstBy(\"Sym\", \"TimeBin\")\n\nrollingCalc = trades30min.by(\"Sym\")\n .update(\"Avg=(double[])rollingAvg.call(30, Last)\",\"Std=(double[])rollingStd.call(30, Last, Avg)\")\n.ungroup()\n\nminEdge = 0.5d\nmaxPos = 3.0d\nliquidity = 1e6d\n\ntargetPos = rollingCalc.updateView(\"Zscore=(Std > 0) ? (Avg-Last)/Std : NULL_DOUBLE\", \"AdjZscore=signum(Zscore) * min(maxPos, max(abs(Zscore)-minEdge), 0.0)\", \"TargetPosition=(int)(liquidity*AdjZscore/Last)\")\n .dropColumns(\"ExchangeTimestamp\", \"Avg\", \"Std\", \"Zscore\", \"AdjZscore\")\n\ntimeBinIndexes = targetPos.leftJoin(trades30min, \"Sym\", \"Times=ExchangeTimestamp, SharesTraded=Size\")\n .updateView(\"StartIndex=binSearchIndex(Times, TimeBin-30*MINUTE, BS_LOWEST)\", \"EndIndex=binSearchIndex(Times, TimeBin, BS_HIGHEST)\")\n .dropColumns(\"Times\")\n\nshares30min = timeBinIndexes.updateView(\"SharesTraded30Min=sum(SharesTraded.subArray(StartIndex, EndIndex))\")\n .dropColumns(\"SharesTraded\", \"StartIndex\", \"EndIndex\")\n\n\nclass SimulatorState\n{\nprivate HashMap<String, double[]> hm = new HashMap<>();\n\n public double[] update(String sym, int targetPos, int shares10s)\n {\n if (!hm.containsKey(sym)) hm.put(sym, new double[2]);\n\n double[] tradedAndPosition = hm.get(sym);\n\n tradedAndPosition[0] =\n isNull(targetPos) ? 0.0 : signum(targetPos - tradedAndPosition[1]) * min(abs(targetPos - tradedAndPosition[1]), shares10s * 0.1d)\n tradedAndPosition[1] += tradedAndPosition[0];\n\n return Arrays.copyOf(tradedAndPosition, tradedAndPosition.length);\n }\n}\nss = new SimulatorState()\n\nsimulation = shares30min.update(\"Values=(double[])ss.update(Sym, TargetPosition, SharesTraded30Min)\", \"PositionChange=Values[0]\", \"Position=Values[1]\")\n .dropColumns(\"Values\")\n\n`;\n\nexport default { testPython, testGroovy };\n","import React from 'react';\nimport { Editor } from '@deephaven/console';\nimport Constants from './StyleConstants';\nimport SampleSection from './SampleSection';\n\nfunction Editors(): React.ReactElement {\n return (\n <SampleSection name=\"editors\">\n <h2 className=\"ui-title\">Editor</h2>\n <h5 className=\"sub-title\">Python</h5>\n <div style={{ height: 400, position: 'relative' }}>\n <Editor\n settings={{ language: 'python', value: Constants.testPython }}\n />\n </div>\n <h5 className=\"sub-title\">Groovy</h5>\n <div style={{ height: 400, position: 'relative' }}>\n <Editor\n settings={{ language: 'groovy', value: Constants.testGroovy }}\n />\n </div>\n </SampleSection>\n );\n}\n\nexport default Editors;\n","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-empty-function: \"off\" */\nimport { type EventTarget, type Event } from 'event-target-shim';\nimport memoize from 'memoize-one';\nimport {\n type EditableGridModel,\n type EditOperation,\n type ExpandableGridModel,\n GridRange,\n MockTreeGridModel,\n type ModelIndex,\n type MoveOperation,\n} from '@deephaven/grid';\nimport {\n IrisGridModel,\n type PendingDataMap,\n type UITreeRow,\n type ColumnHeaderGroup,\n} from '@deephaven/iris-grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\n\n// We need to cast our CustomEvent so it's happy with event-target-shim\ntype CustomEventType = EventTarget.EventData<\n Record<string, Event>,\n 'standard',\n 'CustomEvent'\n>;\n\nconst EMPTY_ARRAY: never[] = [];\n\n/**\n * A mock class that takes a GridModel and adds mock functionality for use in IrisGrid.\n * Useful for testing.\n */\nclass MockIrisGridTreeModel\n extends IrisGridModel\n implements ExpandableGridModel, EditableGridModel\n{\n protected model: MockTreeGridModel;\n\n protected editedData: string[][];\n\n constructor(dh: typeof DhType, model = new MockTreeGridModel()) {\n super(dh);\n\n this.model = model;\n this.editedData = [];\n }\n\n // Delegate to the passed in model\n get rowCount(): number {\n return this.model.rowCount;\n }\n\n get columnCount(): number {\n return this.model.columnCount;\n }\n\n get floatingTopRowCount(): number {\n return 3;\n }\n\n get floatingBottomRowCount(): number {\n return 3;\n }\n\n get isEditable(): boolean {\n return true;\n }\n\n isEditableRange(range: GridRange): boolean {\n return this.isEditable;\n }\n\n setValues(edits: readonly EditOperation[]): never {\n throw new Error('Method not implemented.');\n }\n\n delete(ranges: GridRange[]): never {\n throw new Error('Method not implemented.');\n }\n\n get pendingRowCount(): number {\n return 0;\n }\n\n set pendingRowCount(count: number) {\n // Ignore for mock\n }\n\n get pendingDataMap(): PendingDataMap<UITreeRow> {\n return new Map();\n }\n\n set pendingDataMap(value: PendingDataMap<UITreeRow>) {\n // Ignore for mock\n }\n\n updateFrozenColumns(columns: string[]): void {\n // Ignore for mock\n }\n\n getColumnIndexByName(name: string): ModelIndex {\n return Number(name);\n }\n\n textForCell(column: ModelIndex, row: ModelIndex): string {\n return (\n this.editedData[column]?.[row] ?? this.model.textForCell(column, row)\n );\n }\n\n textForRowHeader(row: ModelIndex): string {\n return this.model.textForRowHeader(row);\n }\n\n textForRowFooter(row: ModelIndex): string {\n return this.model.textForRowHeader(row);\n }\n\n textForColumnHeader(column: ModelIndex, depth: number): string {\n return this.model.textForColumnHeader(column, depth);\n }\n\n get hasExpandableRows(): boolean {\n return this.model.hasExpandableRows;\n }\n\n get isExpandAllAvailable(): boolean {\n return false;\n }\n\n isRowExpandable(row: ModelIndex): boolean {\n return this.model.isRowExpandable(row);\n }\n\n isRowExpanded(row: ModelIndex): boolean {\n return this.model.isRowExpanded(row);\n }\n\n setRowExpanded(\n row: ModelIndex,\n isExpanded: boolean,\n expandDescendants = false\n ): void {\n this.model.setRowExpanded(row, isExpanded, expandDescendants);\n }\n\n expandAll(): void {\n throw new Error('Expand all not implemented.');\n }\n\n collapseAll(): void {\n throw new Error('Collapse all not implemented.');\n }\n\n depthForRow(row: ModelIndex): number {\n return this.model.depthForRow(row);\n }\n\n // Stub out functions for IrisGridModel functionality\n get columns(): DhType.Column[] {\n return this.getCachedColumns(this.columnCount) as DhType.Column[];\n }\n\n get groupedColumns(): DhType.Column[] {\n return EMPTY_ARRAY;\n }\n\n getCachedColumns = memoize((count: number) => {\n const columns = [];\n for (let i = 0; i < count; i += 1) {\n columns.push({\n name: this.model.textForColumnHeader(i, 0),\n type: 'java.lang.String',\n description: `Mock column ${i}`,\n });\n }\n return columns;\n });\n\n get description(): string {\n return 'A mock used for testing.';\n }\n\n get customColumns(): string[] {\n return [];\n }\n\n set customColumns(customColumns: string[]) {\n // Ignore for mock\n }\n\n get formatColumns(): DhType.CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: DhType.CustomColumn[]) {\n // Ignore for mock\n }\n\n get sort(): never[] {\n return [];\n }\n\n set sort(sort: never[]) {\n // Ignore for mock\n }\n\n get filter(): never[] {\n return [];\n }\n\n set filter(filter: never[]) {\n // Ignore for mock\n }\n\n get partition(): never[] {\n return [];\n }\n\n set partition(partition: never[]) {\n // Ignore for mock\n }\n\n get partitionColumns(): never[] {\n return [];\n }\n\n set partitionColumns(partitionColumns: never[]) {\n // Ignore for mock\n }\n\n set formatter(formatter: Formatter) {\n // Ignore for mock\n }\n\n get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return new Map<string, CanvasTextAlign>();\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n // Ignore for mock\n }\n\n displayString(value: unknown): string {\n return `${value}`;\n }\n\n valueForCell(column: ModelIndex, row: ModelIndex): unknown {\n return this.textForCell(column, row);\n }\n\n formatForCell(column: ModelIndex, row: ModelIndex): undefined {\n return undefined;\n }\n\n setViewport(): void {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.UPDATED) as CustomEventType\n );\n }\n\n async setValueForCell(\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ): Promise<void> {\n if (this.editedData[column] == null) {\n this.editedData[column] = [];\n }\n this.editedData[column][row] = `${value}`;\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.UPDATED) as CustomEventType\n );\n }\n\n async setValueForRanges(\n ranges: readonly GridRange[],\n text: string\n ): Promise<void> {\n GridRange.forEachCell(ranges, (x, y) => {\n this.setValueForCell(x, y, text);\n });\n }\n\n editValueForCell(column: ModelIndex, row: ModelIndex): string {\n return this.textForCell(column, row);\n }\n\n isValidForCell(column: ModelIndex, row: ModelIndex, value: string): boolean {\n return true;\n }\n\n async columnStatistics(column: DhType.Column): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n async commitPending(): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n async export(): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n get pendingDataErrors(): never {\n throw new Error('Not defined in mock');\n }\n\n get rollupConfig(): never {\n throw new Error('Not defined in mock');\n }\n\n set rollupConfig(rollupConfig: never) {\n throw new Error('Not defined in mock');\n }\n\n get selectDistinctColumns(): never {\n throw new Error('Not defined in mock');\n }\n\n set selectDistinctColumns(names: never) {\n throw new Error('Not defined in mock');\n }\n\n async snapshot(ranges: GridRange[]): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n async textSnapshot(): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n get totalsConfig(): never {\n throw new Error('Not defined in mock');\n }\n\n set totalsConfig(totalsConfig: never) {\n throw new Error('Not defined in mock');\n }\n\n valuesTable(columns: DhType.Column | DhType.Column[]): Promise<never> {\n throw new Error('Not defined in mock');\n }\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: DhType.ValueTypeType,\n value: unknown,\n insensitive?: boolean | undefined,\n contains?: boolean | undefined,\n isBackwards?: boolean | undefined\n ): Promise<number> {\n throw new Error('Method not implemented.');\n }\n\n get columnHeaderGroups(): ColumnHeaderGroup[] {\n return [];\n }\n\n set columnHeaderGroups(groups: ColumnHeaderGroup[]) {\n // no-op\n }\n\n get columnHeaderGroupMap(): Map<string, ColumnHeaderGroup> {\n return new Map();\n }\n\n getColumnHeaderParentGroup(): ColumnHeaderGroup | undefined {\n return undefined;\n }\n\n get initialMovedColumns(): readonly MoveOperation[] {\n return [];\n }\n\n get initialMovedRows(): readonly MoveOperation[] {\n return [];\n }\n\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return [];\n }\n}\n\nexport default MockIrisGridTreeModel;\n","import React, { useState } from 'react';\nimport { Grid, StaticDataGridModel } from '@deephaven/grid';\n\nfunction StaticExample(): JSX.Element {\n const [model] = useState(\n () =>\n new StaticDataGridModel(\n [\n ['Matthew Austins', 'Toronto', 35, 22],\n ['Doug Millgore', 'Toronto', 14, 33],\n ['Bart Marchant', 'Boston', 20, 14],\n ['Luigi Dabest', 'Pittsburgh', 66, 33],\n ],\n ['Name', 'Team', 'Goals', 'Assists']\n )\n );\n\n return <Grid model={model} />;\n}\n\nexport default StaticExample;\n","import React, { useState } from 'react';\nimport { Grid, MockGridModel } from '@deephaven/grid';\n\nfunction QuadrillionExample(): JSX.Element {\n const [model] = useState(\n () =>\n new MockGridModel({\n isEditable: true,\n rowCount: Number.MAX_SAFE_INTEGER,\n columnCount: Number.MAX_SAFE_INTEGER,\n })\n );\n\n return <Grid model={model} />;\n}\n\nexport default QuadrillionExample;\n","import React, { useState } from 'react';\nimport { Grid, MockTreeGridModel } from '@deephaven/grid';\n\nfunction TreeExample(): JSX.Element {\n const [model] = useState(() => new MockTreeGridModel());\n\n return <Grid model={model} />;\n}\n\nexport default TreeExample;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Grid, type GridMetrics, ViewportDataGridModel } from '@deephaven/grid';\n\n/**\n * An example showing data loading asnychronously for a grid.\n */\nfunction AsyncExample(): JSX.Element {\n // Use a Viewport data model that we update asynchronously to display the data\n const [model] = useState(\n () => new ViewportDataGridModel(1_000_000_000, 1_000_000)\n );\n const grid = useRef<Grid>(null);\n\n // The current viewport\n const [viewport, setViewport] = useState({\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n });\n\n const handleViewChanged = useCallback((metrics: GridMetrics) => {\n // Pull out the viewport from the metrics\n const { top, bottom, left, right } = metrics;\n setViewport({ top, bottom, left, right });\n }, []);\n\n const { top, bottom, left, right } = viewport;\n useEffect(\n function mockLoadViewportAndData() {\n let isCancelled = false;\n\n // Simulate fetching data asynchronously by using at timeout\n setTimeout(() => {\n if (isCancelled) return;\n\n // Generate the data for the viewport\n const data = [];\n for (let i = top; i <= bottom; i += 1) {\n const rowData = [];\n for (let j = left; j <= right; j += 1) {\n rowData.push(`${i},${j}`);\n }\n data.push(rowData);\n }\n model.viewportData = {\n rowOffset: top,\n columnOffset: left,\n data,\n };\n\n // Refresh the grid\n grid.current?.forceUpdate();\n }, 250);\n return () => {\n isCancelled = true;\n };\n },\n [top, bottom, left, right, model]\n );\n\n return <Grid model={model} onViewChanged={handleViewChanged} ref={grid} />;\n}\n\nexport default AsyncExample;\n","import React, { useState } from 'react';\nimport { Grid, MockDataBarGridModel } from '@deephaven/grid';\nimport type { ColorMap } from '@deephaven/grid';\n\nfunction DataBarExample(): JSX.Element {\n const columnData = [100, 50, 20, 10, -10, -20, -50, -30, 100, 0, 1];\n const data: number[][] = [];\n const columnAxes = new Map([\n [0, 'proportional'],\n [1, 'middle'],\n [2, 'directional'],\n [6, 'directional'],\n [7, 'directional'],\n [8, 'directional'],\n [9, 'directional'],\n [10, 'directional'],\n ]);\n const positiveColors: ColorMap = new Map([\n [3, '#72d7df'],\n [4, '#ac9cf4'],\n ]);\n positiveColors.set(5, ['#f3cd5b', '#9edc6f']);\n positiveColors.set(19, ['#42f54b', '#42b9f5', '#352aa8']);\n\n const negativeColors: ColorMap = new Map([\n [3, '#f3cd5b'],\n [4, '#ac9cf4'],\n ]);\n negativeColors.set(5, ['#f95d84', '#f3cd5b']);\n negativeColors.set(19, ['#e05536', '#e607de', '#e6e207']);\n\n const valuePlacements = new Map([\n [6, 'hide'],\n [7, 'overlap'],\n [8, 'overlap'],\n [9, 'overlap'],\n ]);\n const opacities = new Map([\n [7, 0.5],\n [8, 0.5],\n [9, 0.5],\n ]);\n const directions = new Map([\n [8, 'RTL'],\n [10, 'RTL'],\n [16, 'RTL'],\n [19, 'RTL'],\n ]);\n const textAlignments = new Map([\n [9, 'left'],\n [11, 'left'],\n ]);\n const markers = new Map([\n [\n 12,\n [\n { value: 13, color: 'white' },\n { value: 14, color: 'gray' },\n ],\n ],\n ]);\n for (let i = 0; i < 13; i += 1) {\n data.push(columnData.slice());\n }\n data.push([70, 60, 30, 20, -10, -30, -20, -50, 80, 50, 10]);\n data.push([50, 20, 10, 0, 0, -10, -30, 10, 90, 20, 40]);\n data.push([-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0]);\n data.push(columnData.slice());\n // Decimals\n data.push([\n 100, 10.5, 11.234, -20.5, -50, -2.5, -15.1234, 94.254, 25, 44.4444, -50.5,\n ]);\n\n // Big values\n data.push([\n 1000000, 10, 200, -20000, -2000000, -25, -900000, 800000, 100000, 450000, 1,\n ]);\n\n // RTL gradient with multiple colors\n data.push(columnData.slice());\n\n // Both data bar and text\n data.push(columnData.slice());\n data.push(columnData.slice());\n const [model] = useState(\n () =>\n new MockDataBarGridModel(\n data,\n columnAxes,\n positiveColors,\n negativeColors,\n valuePlacements,\n opacities,\n directions,\n textAlignments,\n markers\n )\n );\n\n return <Grid model={model} />;\n}\n\nexport default DataBarExample;\n","import React, { type ReactElement, useState } from 'react';\nimport {\n Grid,\n type GridThemeType,\n MockGridModel,\n MockTreeGridModel,\n ThemeContext,\n} from '@deephaven/grid';\nimport { IrisGrid } from '@deephaven/iris-grid';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Flex } from '@deephaven/components';\nimport MockIrisGridTreeModel from './MockIrisGridTreeModel';\nimport StaticExample from './grid-examples/StaticExample';\nimport QuadrillionExample from './grid-examples/QuadrillionExample';\nimport TreeExample from './grid-examples/TreeExample';\nimport AsyncExample from './grid-examples/AsyncExample';\nimport DataBarExample from './grid-examples/DataBarExample';\nimport SampleSection from './SampleSection';\n\nfunction Grids(): ReactElement {\n const dh = useApi();\n const [irisGridModel] = useState(\n new MockIrisGridTreeModel(dh, new MockTreeGridModel())\n );\n const [irisGridCompactModel] = useState(\n new MockIrisGridTreeModel(dh, new MockTreeGridModel())\n );\n const [irisGridSpaciousModel] = useState(\n new MockIrisGridTreeModel(dh, new MockTreeGridModel())\n );\n const [model] = useState(new MockGridModel());\n const [theme] = useState<Partial<GridThemeType>>({\n autoSelectRow: true,\n });\n const [contextTheme] = useState<Partial<GridThemeType>>({\n rowHeight: 40,\n });\n return (\n <div>\n <ThemeContext.Provider value={contextTheme}>\n <h2 className=\"ui-title\">Grid</h2>\n <SampleSection name=\"grids-grid\" component={Flex}>\n <Grid model={model} theme={theme} />\n </SampleSection>\n <h2 className=\"ui-title\">Static Data</h2>\n <SampleSection name=\"grids-static\" component={Flex} height={200}>\n <StaticExample />\n </SampleSection>\n <h2 className=\"ui-title\">Data Bar</h2>\n <SampleSection name=\"grids-data-bar\" component={Flex} height={500}>\n <DataBarExample />\n </SampleSection>\n <h2 className=\"ui-title\">Quadrillion rows and columns</h2>\n <SampleSection\n name=\"grids-quadrillion\"\n component={Flex}\n position=\"relative\"\n height={500}\n >\n <QuadrillionExample />\n </SampleSection>\n <h2 className=\"ui-title\">Async example</h2>\n <SampleSection\n name=\"grids-async\"\n component={Flex}\n position=\"relative\"\n height={500}\n >\n <AsyncExample />\n </SampleSection>\n <h2 className=\"ui-title\">Tree Grid</h2>\n <SampleSection name=\"grids-tree\" component={Flex} height={500}>\n <TreeExample />\n </SampleSection>\n <h2 className=\"ui-title\">Iris Grid</h2>\n <SampleSection name=\"grids-iris\" component={Flex} height={500}>\n <IrisGrid model={irisGridModel} density=\"regular\" />\n </SampleSection>\n <h2 className=\"ui-title\">Iris Grid Compact</h2>\n <SampleSection name=\"grids-iris-compact\" component={Flex} height={500}>\n <IrisGrid model={irisGridCompactModel} density=\"compact\" />\n </SampleSection>\n <h2 className=\"ui-title\">Iris Grid Spacious</h2>\n <SampleSection name=\"grids-iris-spacious\" component={Flex} height={500}>\n <IrisGrid model={irisGridSpaciousModel} density=\"spacious\" />\n </SampleSection>\n </ThemeContext.Provider>\n </div>\n );\n}\n\nexport default Grids;\n","import React, { useState, useEffect } from 'react';\nimport {\n dh,\n type IconDefinition,\n vsOrganization,\n dhSquareFilled,\n dhAddSmall,\n} from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, Icon } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nasync function copyText(text: string): Promise<void | ErrorConstructor> {\n try {\n return await navigator.clipboard.writeText(text);\n } catch (error) {\n throw new Error(`Unable to copy: ${error}`);\n }\n}\n\nconst DH_PREFIX = 'dh';\nconst VS_PREFIX = 'vs';\n// prefix, icon-name to prefixIconName\nconst getPrefixedName = (name: string, prefix: string): string =>\n prefix.toLowerCase() +\n name\n .split('-')\n .map(str => str.charAt(0).toUpperCase() + str.slice(1))\n .join('');\n\ninterface FlashProps {\n message: { text: React.ReactNode };\n}\n\nfunction Flash({ message, message: { text } }: FlashProps): JSX.Element {\n const [show, setShow] = useState(false);\n\n useEffect(\n function setFlashMessage() {\n if (text == null || text === '') return;\n setShow(true);\n const timeout = setTimeout(() => {\n setShow(false);\n }, 2000);\n // eslint-disable-next-line consistent-return\n return () => {\n clearTimeout(timeout);\n };\n },\n [message, text]\n );\n\n return <p className={show ? 'flash in' : 'flash out'}>{text}</p>;\n}\n\nfunction Icons(): React.ReactElement {\n const [dhFilter, setDhFilter] = useState<boolean>(true);\n const [vsFilter, setVsFilter] = useState<boolean>(true);\n const [search, setSearch] = useState<string>('');\n const [flashText, setFlashText] = useState<{ text: React.ReactNode }>({\n text: '',\n });\n\n const renderIcons = Object.values(dh)\n .filter((icon: IconDefinition): boolean => {\n const matchesFilter =\n getPrefixedName(icon.iconName, icon.prefix)\n .toLowerCase()\n .indexOf(\n search.replace(/\\s/g, '').replace(/-/g, '').toLowerCase()\n ) !== -1;\n const isDH = dhFilter && (icon.prefix as string) === DH_PREFIX;\n const isVS = vsFilter && (icon.prefix as string) === VS_PREFIX;\n return matchesFilter && (isDH || isVS);\n })\n .map(icon => {\n const prefixedName = getPrefixedName(icon.iconName, icon.prefix);\n return (\n <Button\n key={prefixedName}\n kind=\"inline\"\n className=\"card\"\n onClick={() => {\n // new object, so it always flashes even on same string\n copyText(prefixedName)\n .then(() => {\n setFlashText({\n text: (\n <span>\n <FontAwesomeIcon icon={dh.vsOutput} /> Copied text:{' '}\n <strong>{prefixedName}</strong>\n </span>\n ),\n });\n })\n .catch(err => {\n setFlashText({\n text: <span className=\"text-danger\">{err.message}</span>,\n });\n });\n }}\n >\n <Icon size=\"L\">\n <FontAwesomeIcon icon={icon} />\n </Icon>\n\n <label title={prefixedName}>{prefixedName}</label>\n </Button>\n );\n });\n\n const compositionExample = `\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsOrganization}\n icon={dhSquareFilled}\n transform=\"down-7 right-7\"\n />\n <FontAwesomeIcon icon={dhAddSmall} />\n </div>`;\n\n return (\n <SampleSection name=\"icons\">\n <h2 className=\"ui-title\">Icons</h2>\n\n <div className=\"row\">\n <div className=\"col\">\n <h4>Icon Composition</h4>\n <p>\n Icons can be used indivudally or composed together using\n font-awesome composition:\n </p>\n <div className=\"icons\">\n <div className=\"icon card\">\n <FontAwesomeIcon icon={vsOrganization} />\n </div>\n <div className=\"icon card\">\n <FontAwesomeIcon icon={dhSquareFilled} />\n </div>\n <div className=\"icon card\">\n <FontAwesomeIcon icon={dhAddSmall} />\n </div>\n <div className=\"icon card\">=</div>\n <Button\n kind=\"inline\"\n className=\"card\"\n onClick={() => {\n // new object, so it always flashes even on same string\n copyText(compositionExample)\n .then(() => {\n setFlashText({\n text: <span>Copied composition example</span>,\n });\n })\n .catch(err => {\n setFlashText({\n text: <span className=\"text-danger\">{err.message}</span>,\n });\n });\n }}\n >\n <div className=\"icon\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsOrganization}\n icon={dhSquareFilled}\n transform=\"down-7 right-7\"\n />\n <FontAwesomeIcon icon={dhAddSmall} />\n </div>\n </div>\n <label>Custom</label>\n </Button>\n </div>\n </div>\n </div>\n <hr />\n <div className=\"row\">\n <div className=\"col\">\n <h4>All available icons</h4>\n <p>\n If you cannot find or compose a relevant icon for your use case,\n please request a new one to be created from design.\n </p>\n <div className=\"form-inline mb-3\">\n <input\n type=\"search\"\n placeholder=\"Basic icon search...\"\n value={search}\n className=\"form-control\"\n onChange={event => {\n setSearch(event.target.value);\n }}\n />\n <span className=\"mx-2\">Show: </span>\n <Button\n kind=\"inline\"\n active={vsFilter}\n className=\"mr-2\"\n onClick={() => setVsFilter(!vsFilter)}\n icon={vsFilter ? dh.vsCheck : dh.vsClose}\n >\n VS ICONS\n </Button>\n <Button\n kind=\"inline\"\n active={dhFilter}\n className=\"mr-2\"\n onClick={() => setDhFilter(!dhFilter)}\n icon={dhFilter ? dh.vsCheck : dh.vsClose}\n >\n DH ICONS\n </Button>\n <small>\n ({renderIcons.length} icon{renderIcons.length === 1 ? '' : 's'})\n </small>\n </div>\n <div className=\"icons\">\n {renderIcons}\n {renderIcons.length === 0 && (\n <p className=\"no-result\">No icons found.</p>\n )}\n <Flash message={flashText} />\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Icons;\n","import React, { useCallback, useState } from 'react';\nimport {\n AutoCompleteInput,\n AutoResizeTextarea,\n Checkbox,\n ComboBox,\n Radio,\n RadioGroup,\n SearchInput,\n TimeInput,\n DateInput,\n DateTimeInput,\n CustomTimeSelect,\n UISwitch,\n Select,\n Option,\n Item,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nconst EXAMPLES = [\n { title: 'Title 1', value: 'Value 1' },\n { title: 'Title 2', value: 'Value 2' },\n { title: 'Title 3', value: 'Value 3' },\n { title: 'Title 4', value: 'Value 4' },\n { title: 'Title 5', value: 'Value 5' },\n { title: 'Title 6', value: 'Value 6' },\n { title: 'Title 7', value: 'Value 7' },\n { title: 'Title 8', value: 'Value 8' },\n { title: 'Title 9', value: 'Value 9' }, // intentional duplicate for testing\n { title: 'Title 9', value: 'Value 9' },\n { title: 'Title 10', value: 'Value 10' },\n { title: 'Title 11', value: 'Value 11' },\n { title: 'Title 12', value: 'Value 12' },\n];\n\nconst items = EXAMPLES.map(({ title, value }) => (\n <Item key={value}>{title}</Item>\n));\n\nconst TIMEOUTS = [\n { title: '1 minute', value: 1 * 60 * 1000 },\n { title: '5 minutes', value: 5 * 60 * 1000 },\n { title: '20 minutes', value: 20 * 60 * 1000 },\n { title: '45 minutes', value: 45 * 60 * 1000 },\n { title: '1 hour', value: 1 * 60 * 60 * 1000 },\n { title: '4 hours', value: 4 * 60 * 60 * 1000 },\n];\n\nfunction Inputs(): React.ReactElement {\n const [on, setOn] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const [check1, setCheck1] = useState(true);\n const [check2, setCheck2] = useState(false);\n const [check3, setCheck3] = useState(false);\n const [check4, setCheck4] = useState(false);\n const [check5, setCheck5] = useState<boolean | null>(null);\n const [radioValue, setRadioValue] = useState('1');\n const [customTimeValue, setCustomTimeValue] = useState<number>();\n const [autoResizeTextareaValue, setAutoResizeTextareaValue] = useState(\n '-DLiveTableMonitor.updateThreads=8 -DLiveTableMonitor.printDependencyInformation=false -Dassertion.heapDump=true -Drequire.heapDump=true -Dassertion.heapDump=true -Drequire.heapDump=true'\n );\n const handleRadioChange = useCallback((value: string) => {\n setRadioValue(value);\n }, []);\n\n const handleToggleClick = useCallback(() => {\n setOn(!on);\n }, [on]);\n\n const handleSearchInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n },\n []\n );\n\n return (\n <SampleSection name=\"inputs\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Inputs</h2>\n <div className=\"row\">\n <div className=\"col\">\n <form>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInput1\">\n Input Label\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"exampleInput1\"\n aria-describedby=\"emailHelp\"\n placeholder=\"Input Placeholder\"\n />\n </label>\n <small className=\"form-text text-muted\">\n Help text for a form imput\n </small>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInput2\">\n Input Label\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"exampleInput2\"\n aria-describedby=\"emailHelp\"\n placeholder=\"Input Disabled\"\n disabled\n />\n </label>\n <small className=\"form-text text-muted\">Disabled input</small>\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"exampleInputPassword1\">\n Password\n <input\n type=\"password\"\n className=\"form-control\"\n id=\"exampleInputPassword1\"\n placeholder=\"Password\"\n defaultValue=\"123456789\"\n />\n </label>\n </div>\n <div className=\"form-group\">\n <SearchInput\n value={searchValue}\n placeholder=\"Search Input\"\n onChange={handleSearchInputChange}\n />\n </div>\n </form>\n </div>\n\n <div className=\"col\">\n <form>\n <h5> Checkboxes </h5>\n <Checkbox\n className=\"form-group\"\n checked={check1}\n onChange={() => setCheck1(!check1)}\n >\n Checked checkbox\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n checked={check2}\n onChange={() => setCheck2(!check2)}\n >\n Unchecked checkbox\n </Checkbox>\n <Checkbox className=\"form-group\" disabled checked={null}>\n Disabled checkbox\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n isInvalid\n checked={check3}\n onChange={() => setCheck3(!check3)}\n >\n Invalid checkbox\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n checked={check4}\n onChange={() => setCheck4(!check4)}\n >\n Add radio button\n </Checkbox>\n <Checkbox\n className=\"form-group\"\n checked={check5}\n onChange={() => {\n if (check5 == null) {\n setCheck5(true);\n } else if (!check5) {\n setCheck5(null);\n } else {\n setCheck5(false);\n }\n }}\n >\n Indeterminate Cycle\n </Checkbox>\n </form>\n </div>\n\n <div className=\"col\">\n <form>\n <h5 id=\"inputs-radios-heading\">Radios</h5>\n <RadioGroup\n aria-labelledby=\"inputs-radios-heading\"\n onChange={handleRadioChange}\n value={radioValue}\n isInvalid={radioValue === '4'}\n description=\"Select a radio item\"\n errorMessage={\n radioValue === '4' ? 'Invalid radio selected' : undefined\n }\n >\n <Radio value=\"1\">Toggle this custom radio</Radio>\n <Radio value=\"2\">Or toggle this other custom radio</Radio>\n <Radio value=\"3\" isDisabled>\n Disabled radio\n </Radio>\n <Radio value=\"4\">Invalid radio</Radio>\n <Radio isHidden={!check4} value=\"5\">\n Extra radio item\n </Radio>\n </RadioGroup>\n </form>\n <div className=\"form-group\">\n <h5>Toggle Buttons</h5>\n <div className=\"form-inline justify-content-between\">\n <label>{String(on)}</label>\n <UISwitch on={on} onClick={handleToggleClick} />\n </div>\n <div className=\"form-inline justify-content-between\">\n <label>{String(!on)}</label>\n <UISwitch on={!on} onClick={handleToggleClick} />\n </div>\n <div className=\"form-inline justify-content-between\">\n <label className=\"isInvalid\">isInvalid</label>\n <UISwitch on={!on} isInvalid onClick={handleToggleClick} />\n </div>\n <div className=\"form-inline justify-content-between\">\n <label className=\"disabled\">disabled</label>\n <UISwitch on={!on} disabled onClick={handleToggleClick} />\n </div>\n </div>\n </div>\n\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Selection Menu</h5>\n <Select\n onChange={v => {\n // no-op\n }}\n defaultValue=\"0\"\n className=\"custom-select\"\n >\n <Option disabled value=\"0\">\n Custom Selection\n </Option>\n <Option value=\"1\">One</Option>\n <Option value=\"2\">Two</Option>\n <Option value=\"3\">Three</Option>\n </Select>\n </div>\n\n <div className=\"form-group\">\n <Select\n onChange={v => {\n // no-op\n }}\n defaultValue=\"0\"\n className=\"custom-select\"\n disabled\n >\n <Option disabled value=\"0\">\n Custom Selection\n </Option>\n <Option value=\"1\">One</Option>\n <Option value=\"2\">Two</Option>\n <Option value=\"3\">Three</Option>\n </Select>\n </div>\n\n <div className=\"form-group\">\n <Select\n onChange={v => {\n // no-op\n }}\n defaultValue=\"0\"\n className=\"custom-select\"\n isInvalid\n >\n <Option disabled value=\"0\">\n Custom Selection\n </Option>\n <Option value=\"1\">One</Option>\n <Option value=\"2\">Two</Option>\n <Option value=\"3\">Three</Option>\n </Select>\n </div>\n\n <div className=\"form-group\">\n <h5>Input with Select</h5>\n <div className=\"input-group\">\n <ComboBox aria-label=\"ComboBox\" width=\"100%\">\n {items}\n </ComboBox>\n </div>\n <br />\n <div className=\"input-group\">\n <ComboBox aria-label=\"Disabled ComboBox\" isDisabled width=\"100%\">\n {items}\n </ComboBox>\n </div>\n </div>\n\n <div className=\"form-group\">\n <h5>AutoCompleteInput</h5>\n <AutoCompleteInput options={EXAMPLES} noMatchText=\"No Matches.\" />\n </div>\n </div>\n\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Time Input</h5>\n <TimeInput />\n <br />\n <h5>Date Input</h5>\n <DateInput />\n <br />\n <h5>DateTime Input</h5>\n <DateTimeInput />\n <br />\n <h5>Custom Timeselect</h5>\n <CustomTimeSelect\n options={TIMEOUTS}\n value={customTimeValue ?? null}\n onChange={setCustomTimeValue}\n customText=\"Custom Timeout\"\n placeholder=\"Select a timeout\"\n timeToValue={time => time * 1000}\n />\n </div>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Auto Resize Textarea</h5>\n <AutoResizeTextarea\n value={autoResizeTextareaValue}\n delimiter=\" -\"\n onChange={setAutoResizeTextareaValue}\n />\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\nexport default Inputs;\n","import React, { PureComponent } from 'react';\nimport { SelectValueList } from '@deephaven/components';\n\ninterface SelectValueListInput {\n selectedItems: number[];\n}\n\ninterface Item {\n value: string;\n isSelected: boolean;\n}\ninterface SelectValueListInputState {\n itemCount: number;\n items: Item[];\n offset: number;\n}\n\nclass SelectValueListInput extends PureComponent<\n unknown,\n SelectValueListInputState\n> {\n constructor(props: unknown) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.selectedItems = [];\n\n this.state = {\n items: [],\n offset: 0,\n itemCount: 500000,\n };\n }\n\n handleSelect(itemIndex: number): void {\n const selectedIndex = this.selectedItems.indexOf(itemIndex);\n if (selectedIndex >= 0) {\n this.selectedItems.splice(selectedIndex, 1);\n } else {\n this.selectedItems.push(itemIndex);\n }\n\n const isSelected = selectedIndex < 0;\n const { offset } = this.state;\n let { items } = this.state;\n items = ([] as Item[]).concat(items);\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items });\n }\n\n handleViewportChange(top: number, bottom: number): void {\n const { itemCount } = this.state;\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize);\n const bottomRow = Math.min(bottom + viewportSize, itemCount);\n\n const items = [];\n for (let i = topRow; i <= bottomRow && i <= itemCount; i += 1) {\n const value = `Item ${i}`;\n const isSelected = this.selectedItems.indexOf(i) >= 0;\n items.push({ value, isSelected });\n }\n\n const offset = topRow;\n this.setState({ offset, items });\n }\n\n render(): React.ReactElement {\n const { offset, items, itemCount } = this.state;\n return (\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n );\n }\n}\n\nexport default SelectValueListInput;\n","/* eslint no-console: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { ItemList } from '@deephaven/components';\n\ninterface ItemListInput {\n selectedItems: number[];\n}\n\ninterface ItemListInputProps {\n isMultiSelect: boolean;\n}\n\ninterface ItemListInputState {\n itemCount: number;\n items: { value: string; isSelected: boolean }[];\n offset: number;\n}\n\nclass ItemListInput extends PureComponent<\n ItemListInputProps,\n ItemListInputState\n> {\n static defaultProps: { isMultiSelect: boolean };\n\n constructor(props: ItemListInputProps) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.selectedItems = [];\n\n this.state = {\n items: [],\n offset: 0,\n itemCount: 500000,\n };\n }\n\n handleSelect(itemIndex: number): void {\n const { itemCount } = this.state;\n console.log('Item selected at index', itemIndex, '/', itemCount);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n const { itemCount } = this.state;\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize);\n const bottomRow = Math.min(bottom + viewportSize, itemCount);\n\n const items = [];\n for (let i: number = topRow; i <= bottomRow; i += 1) {\n const value = `Item ${i}`;\n const isSelected = this.selectedItems.indexOf(i) >= 0;\n items.push({ value, isSelected });\n }\n\n const offset = topRow;\n this.setState({ offset, items });\n }\n\n render(): React.ReactElement {\n const { isMultiSelect } = this.props;\n const { offset, items, itemCount } = this.state;\n return (\n <ItemList\n isMultiSelect={isMultiSelect}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n );\n }\n}\n\nexport default ItemListInput;\n","/* eslint no-console: \"off\" */\nimport React from 'react';\nimport SelectValueListInput from './SelectValueListInput';\nimport ItemListInput from './ItemListInput';\nimport SampleSection from './SampleSection';\n\nfunction ItemListInputs(): React.ReactElement {\n return (\n <SampleSection name=\"item-list-inputs\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Item Lists</h2>\n\n <div className=\"row\">\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Select List</h5>\n <div style={{ height: '300px' }}>\n <SelectValueListInput />\n </div>\n </div>\n </div>\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Item List</h5>\n <div style={{ height: '300px' }}>\n <ItemListInput />\n </div>\n </div>\n </div>\n <div className=\"col\">\n <div className=\"form-group\">\n <h5>Multi Select Item List</h5>\n <div style={{ height: '300px' }}>\n <ItemListInput isMultiSelect />\n </div>\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default ItemListInputs;\n","import React, { useState } from 'react';\nimport { BasicModal, Button, Checkbox } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction Modals(): React.ReactElement {\n const [openModal, setOpenModal] = useState<number>(0);\n const [check1, setCheck1] = useState<boolean>(true);\n const closeModals = (): void => {\n setOpenModal(0);\n };\n\n function renderBasicModal(buttonCount: number): JSX.Element {\n return (\n <React.Fragment key={buttonCount}>\n <Button\n kind=\"primary\"\n style={{ marginBottom: '1rem', marginRight: '1rem' }}\n onClick={() => {\n setOpenModal(buttonCount);\n }}\n >\n {buttonCount} {buttonCount > 1 ? 'Actions' : 'Action'}\n </Button>\n <BasicModal\n isOpen={openModal === buttonCount}\n headerText=\"Header Text\"\n bodyText=\"This is where the body text goes\"\n onConfirm={closeModals}\n onCancel={buttonCount >= 2 ? closeModals : undefined}\n onDiscard={buttonCount >= 3 ? closeModals : undefined}\n />\n </React.Fragment>\n );\n }\n\n return (\n <SampleSection name=\"modals\">\n <h2 className=\"ui-title\">Basic Modals</h2>\n <div style={{ padding: '1rem' }}>\n {[1, 2, 3].map(buttonCount => renderBasicModal(buttonCount))}\n </div>\n <h2 className=\"ui-title\">Custom Modal</h2>\n <div style={{ padding: '1rem' }}>\n <div className=\"modal-dialog\" role=\"dialog\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <h5 className=\"modal-title\">Modal title</h5>\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div className=\"modal-body\">\n <p>Modal body text goes here.</p>\n\n <Checkbox checked={check1} onChange={() => setCheck1(!check1)}>\n Checked checkbox\n </Checkbox>\n </div>\n <div className=\"modal-footer\">\n <Button\n kind=\"secondary\"\n data-dismiss=\"modal\"\n onClick={() => undefined}\n >\n Close\n </Button>\n <Button kind=\"primary\" onClick={() => undefined}>\n Save changes\n </Button>\n </div>\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Modals;\n","import React from 'react';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction Progress(): React.ReactElement {\n return (\n <SampleSection name=\"progress\">\n <h2 className=\"ui-title\">Progress</h2>\n <div className=\"row\">\n <div className=\"col\">\n <h5>Determinate Progress Loader</h5>\n <br />\n <div className=\"progress\" style={{ marginBottom: '1rem' }}>\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: '25%' }}\n aria-valuenow={25}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n </div>\n\n <div className=\"col\">\n <h5>Indeterminate Progress Spinner</h5>\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n\n <div className=\"col\">\n <h5>Button Progress Spinner</h5>\n <Button\n kind=\"primary\"\n className=\"btn-spinner btn-cancelable\"\n style={{ minWidth: '10rem' }}\n onClick={() => undefined}\n >\n <span>\n <LoadingSpinner className=\"mr-2 loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Connecting</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n </Button>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Progress;\n","import React, { PureComponent } from 'react';\nimport { TimeUtils } from '@deephaven/utils';\nimport { TimeSlider } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\ninterface TimeSliderInputsState {\n initialStartTime: number;\n initialEndTime: number;\n startTime: number;\n endTime: number;\n}\n\nclass TimeSliderInputs extends PureComponent<\n Record<string, never>,\n TimeSliderInputsState\n> {\n constructor(props: Record<string, never>) {\n super(props);\n\n this.handleSliderChange = this.handleSliderChange.bind(this);\n this.state = {\n initialStartTime: 24 * 60 * 60 * 0.25,\n initialEndTime: 24 * 60 * 60 * 0.75,\n startTime: 24 * 60 * 60 * 0.25, // example start and end times\n endTime: 24 * 60 * 60 * 0.75, // example start and end times\n };\n }\n\n handleSliderChange(values: { startTime: number; endTime: number }): void {\n const { startTime, endTime } = values;\n this.setState({ startTime });\n this.setState({ endTime });\n }\n\n render(): React.ReactElement {\n const { startTime, endTime, initialStartTime, initialEndTime } = this.state;\n const isStartModified = startTime !== initialStartTime;\n const isEndModified = endTime !== initialEndTime;\n return (\n <SampleSection name=\"time-slider-inputs\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Time Slider</h2>\n <TimeSlider\n startTime={startTime}\n endTime={endTime}\n isStartModified={isStartModified}\n isEndModified={isEndModified}\n onChange={this.handleSliderChange}\n />\n <p style={isStartModified ? { color: 'var(--dh-color-modified)' } : {}}>\n StartTime: {TimeUtils.formatTime(startTime)}\n </p>\n <p style={isEndModified ? { color: 'var(--dh-color-modified)' } : {}}>\n EndTime: {TimeUtils.formatTime(endTime)}\n </p>\n </SampleSection>\n );\n }\n}\n\nexport default TimeSliderInputs;\n","/* eslint no-alert: \"off\" */\nimport React from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, LoadingSpinner, Tooltip } from '@deephaven/components';\nimport { vsBell, dhFilePrint } from '@deephaven/icons';\nimport SampleSection from './SampleSection';\n\nfunction Tooltips(): React.ReactElement {\n const icons = [dhFilePrint, vsBell];\n const iconElements = icons.map(icon => (\n <FontAwesomeIcon key={`${icon.prefix}-${icon.iconName}`} icon={icon} />\n ));\n\n return (\n <SampleSection name=\"tooltips\">\n <h2\n className=\"ui-title\"\n title=\"Make better looking tooltips than this one!\"\n >\n Tooltips\n </h2>\n <div\n className=\"btn btn-primary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n >\n Simple Tooltip\n <Tooltip>Text only content</Tooltip>\n </div>\n <div\n className=\"btn btn-secondary\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n >\n Complex Tooltip\n <Tooltip>\n <div>\n Here is some <i>cool</i> <b>text</b>\n </div>\n <hr />\n <div>And some icons down here</div>\n <div>\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n {iconElements}\n </div>\n </Tooltip>\n </div>\n <div\n className=\"btn btn-success\"\n style={{\n cursor: 'default',\n marginBottom: '1rem',\n marginRight: '1rem',\n }}\n >\n Interactive Tooltip\n <Tooltip interactive>\n <div>This tooltip is interactive.</div>\n <hr />\n <Button\n kind=\"primary\"\n onClick={() => {\n alert('Button clicked!');\n }}\n >\n Show Alert\n </Button>\n </Tooltip>\n </div>\n </SampleSection>\n );\n}\n\nexport default Tooltips;\n","import React from 'react';\nimport { Button, ButtonGroup, ToastQueue } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction Toast(): React.ReactElement {\n return (\n <SampleSection name=\"toast\">\n <h2 className=\"ui-title\">Toast</h2>\n <div>\n <ButtonGroup>\n <Button\n kind=\"tertiary\"\n onClick={() =>\n ToastQueue.neutral('Neutral toast', { timeout: 5000 })\n }\n >\n Show neutral toast\n </Button>\n <Button\n kind=\"success\"\n onClick={() =>\n ToastQueue.positive('Positive toast', { timeout: 5000 })\n }\n >\n Show positive toast\n </Button>\n <Button\n kind=\"danger\"\n onClick={() =>\n ToastQueue.negative('Negative toast', { timeout: 5000 })\n }\n >\n Show negative toast\n </Button>\n <Button\n kind=\"primary\"\n onClick={() => ToastQueue.info('Info toast', { timeout: 5000 })}\n >\n Show info toast\n </Button>\n </ButtonGroup>\n </div>\n </SampleSection>\n );\n}\n\nexport default Toast;\n","import React from 'react';\nimport SampleSection from './SampleSection';\n\nfunction Typography(): React.ReactElement {\n return (\n <SampleSection name=\"typography\">\n <h2 className=\"ui-title\">Typography</h2>\n <div className=\"row\">\n <div className=\"col\">\n <h1 className=\"text-muted\" data-no-menu>\n h1. Unused\n </h1>\n <h2 className=\"text-muted\" data-no-menu>\n h2. Unused\n </h2>\n <h3 className=\"text-muted\" data-no-menu>\n h3. Unused\n </h3>\n <h4 data-no-menu>h4. Standard Heading</h4>\n <h5 data-no-menu>h5. Small Heading</h5>\n <h6 className=\"text-muted\" data-no-menu>\n h6. Unused\n </h6>\n </div>\n\n <div className=\"col\">\n <h4>Fonts</h4>\n <p>UI: Fira Sans;</p>\n <p className=\"text-monospace\">Code: Fira Mono;</p>\n <p>Tables: Fira Sans; font-feature-settings: "tnum";</p>\n <p>Default font-size: 14px = 1rem</p>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default Typography;\n","/* eslint no-console: \"off\" */\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport { DraggableItemList } from '@deephaven/components';\nimport { type Range } from '@deephaven/utils';\n\ninterface DraggableListInputProps {\n draggablePrefix: string;\n droppableId: string;\n isDragDisabled: boolean;\n isDropDisabled: boolean;\n isMultiSelect: boolean;\n items: Array<unknown>;\n onSelectionChange: (listSelectedRanges: readonly Range[]) => void;\n selectedRanges: Range[];\n}\ninterface DraggableListInputState {\n topRow: number | null;\n bottomRow: number | null;\n}\n\ninterface DraggableListInput {\n itemList: React.RefObject<DraggableItemList<unknown>>;\n selectedItems: Array<unknown>;\n}\nclass DraggableListInput extends PureComponent<\n DraggableListInputProps,\n DraggableListInputState\n> {\n static defaultProps: {\n items: never[];\n draggablePrefix: string;\n droppableId: string;\n isDragDisabled: boolean;\n isDropDisabled: boolean;\n isMultiSelect: boolean;\n onSelectionChange: () => void;\n selectedRanges: never[];\n };\n\n constructor(props: DraggableListInputProps) {\n super(props);\n\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = React.createRef();\n this.selectedItems = [];\n\n this.state = {\n topRow: null,\n bottomRow: null,\n };\n }\n\n focusItem(itemIndex: number): void {\n if (this.itemList.current) {\n this.itemList.current.focusItem(itemIndex);\n }\n }\n\n handleSelectionChange(selectedRanges: readonly Range[]): void {\n console.log('Selection changed', selectedRanges);\n\n const { onSelectionChange } = this.props;\n onSelectionChange(selectedRanges);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n const { items } = this.props;\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize);\n const bottomRow = Math.min(bottom + viewportSize, items.length);\n\n this.setState({ topRow, bottomRow });\n }\n\n getViewportItems = memoize(\n (\n topRow: number | null,\n bottomRow: number | null,\n items: Array<unknown>\n ): Array<unknown> => {\n if (topRow == null || bottomRow == null) {\n return [];\n }\n\n return items.slice(topRow, bottomRow);\n }\n );\n\n render(): React.ReactElement {\n const {\n draggablePrefix,\n droppableId,\n isDragDisabled,\n isDropDisabled,\n isMultiSelect,\n items,\n selectedRanges,\n } = this.props;\n\n const { topRow, bottomRow } = this.state;\n return (\n <DraggableItemList\n draggablePrefix={draggablePrefix}\n droppableId={droppableId}\n isDragDisabled={isDragDisabled}\n isDropDisabled={isDropDisabled}\n isMultiSelect={isMultiSelect}\n itemCount={items.length}\n items={this.getViewportItems(topRow, bottomRow, items)}\n offset={topRow ?? 0}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n ref={this.itemList}\n selectedRanges={selectedRanges}\n />\n );\n }\n}\n\nexport default DraggableListInput;\n","/* eslint no-console: \"off\" */\nimport React, { Component } from 'react';\nimport {\n DragDropContext,\n type DragStart,\n type DragUpdate,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport memoize from 'memoizee';\nimport {\n DragUtils,\n DraggableItemList,\n type Range,\n} from '@deephaven/components';\nimport DraggableListInput from './DraggableListInput';\nimport SampleSection from './SampleSection';\n\nconst DRAG_LIST_TITLES = ['Draggable Only', 'Drag and Drop', 'Droppable Only'];\nconst DRAG_LIST_PROPS = [\n { isDropDisabled: true },\n {},\n { isDragDisabled: true },\n];\n\nconst makeItems = (prefix = 'Item', count = 1000): string[] => {\n const items = [];\n for (let i = 0; i < count; i += 1) {\n items.push(`${prefix}-${i}`);\n }\n return items;\n};\n\ninterface DraggableLists {\n animationFrame: number | null;\n}\n\ninterface DraggableListsState {\n items: Array<unknown[]>;\n lists: Array<React.RefObject<DraggableListInput>>;\n selectedRanges: Array<Range[]>;\n}\n\nclass DraggableLists extends Component<\n Record<string, never>,\n DraggableListsState\n> {\n static handleDragStart(e: DragStart): void {\n console.log('handleDragStart', e);\n }\n\n static handleDragUpdate(e: DragUpdate): void {\n console.log('handleDragUpdate', e);\n }\n\n constructor(props: Record<string, never>) {\n super(props);\n\n this.handleDragEnd = this.handleDragEnd.bind(this);\n\n this.animationFrame = null;\n\n const items = [];\n const selectedRanges = [];\n const lists = [];\n for (let i = 0; i < DRAG_LIST_TITLES.length; i += 1) {\n items[i] = makeItems(DRAG_LIST_TITLES[i]);\n selectedRanges[i] = [];\n lists[i] = React.createRef() as React.RefObject<DraggableListInput>;\n }\n\n this.state = {\n items,\n lists,\n selectedRanges,\n };\n }\n\n componentWillUnmount(): void {\n if (this.animationFrame != null) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n handleDragEnd(\n e: DropResult\n ): { items: unknown[][]; selectedRanges: Range[][] } | undefined {\n console.log('handleDragEnd', e);\n\n const { source, destination } = e;\n if (source == null || destination == null) {\n return;\n }\n const sourceListIndex = DraggableItemList.getDraggableIndex(\n source.droppableId\n );\n const destinationListIndex = DraggableItemList.getDraggableIndex(\n destination.droppableId\n );\n const isSameList = sourceListIndex === destinationListIndex;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // @hello-pangea/dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n let insertIndex = destinationIndex;\n this.setState(\n ({ items, selectedRanges }) => {\n const sourceList = [...items[sourceListIndex]];\n const destinationList = isSameList\n ? sourceList\n : [...items[destinationListIndex]];\n\n const draggedItems = DragUtils.reorder(\n sourceList,\n selectedRanges[sourceListIndex],\n destinationList,\n destinationIndex\n );\n\n const newItems = [...items];\n newItems[sourceListIndex] = sourceList;\n newItems[destinationListIndex] = destinationList;\n\n // Select the newly dropped items\n insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges[destinationListIndex]\n )\n : destinationIndex;\n const newSelectedRanges = [...selectedRanges];\n newSelectedRanges[sourceListIndex] = [];\n newSelectedRanges[destinationListIndex] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n return { items: newItems, selectedRanges: newSelectedRanges };\n },\n () => {\n if (this.animationFrame != null) {\n cancelAnimationFrame(this.animationFrame);\n }\n this.animationFrame = requestAnimationFrame(() => {\n this.animationFrame = null;\n\n const { lists } = this.state;\n lists[destinationListIndex]?.current?.focusItem(insertIndex);\n });\n }\n );\n }\n\n handleSelectionChange(\n listIndex: number,\n listSelectedRanges: readonly Range[]\n ): void {\n this.setState(({ selectedRanges }) => {\n const newSelectedRanges = [...selectedRanges];\n newSelectedRanges[listIndex] = [...listSelectedRanges];\n return { selectedRanges: newSelectedRanges };\n });\n }\n\n getSelectionChangeHandler = memoize(\n (listIndex: number) => this.handleSelectionChange.bind(this, listIndex),\n { max: 1000 }\n );\n\n getDraggableList = memoize(\n (\n items: unknown[],\n selectedRanges: Range[],\n ref: React.RefObject<DraggableListInput>,\n listIndex: number\n ) => (\n <DraggableListInput\n items={items}\n droppableId={DraggableItemList.getDraggableId('drop-list', listIndex)}\n draggablePrefix={DraggableItemList.getDraggableId(\n 'draggable-item',\n listIndex\n )}\n onSelectionChange={this.getSelectionChangeHandler(listIndex)}\n isMultiSelect\n ref={ref}\n selectedRanges={selectedRanges}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...DRAG_LIST_PROPS[listIndex]}\n />\n ),\n { max: 1000 }\n );\n\n render(): React.ReactElement {\n const { items, lists, selectedRanges } = this.state;\n return (\n <SampleSection name=\"draggable-lists\" className=\"style-guide-inputs\">\n <h2 className=\"ui-title\">Drag and Drop Lists</h2>\n <div className=\"row\">\n <DragDropContext\n onDragStart={DraggableLists.handleDragStart}\n onDragUpdate={DraggableLists.handleDragUpdate}\n onDragEnd={this.handleDragEnd}\n >\n {DRAG_LIST_TITLES.map((title, i) => (\n <div className=\"col\" key={title}>\n <div className=\"form-group\">\n <h5>{title} List</h5>\n <div style={{ height: '300px' }}>\n {this.getDraggableList(\n items[i],\n selectedRanges[i],\n lists[i],\n i\n )}\n </div>\n </div>\n </div>\n ))}\n </DragDropContext>\n </div>\n </SampleSection>\n );\n }\n}\n\nexport default DraggableLists;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { vsFile, dhTruck, vsListUnordered } from '@deephaven/icons';\nimport { type IconProp } from '@fortawesome/fontawesome-svg-core';\nimport {\n Menu,\n NavTabList,\n Page,\n Stack,\n type NavTabItem,\n} from '@deephaven/components';\nimport { pseudoRandomWithSeed } from './utils';\nimport SampleSection from './SampleSection';\n\nfunction NavTabListExample({\n count = 5,\n activeKey: activeKeyProp = '',\n}: {\n count?: number;\n activeKey?: string;\n}) {\n const [activeKey, setActiveKey] = useState(activeKeyProp);\n const [tabs, setTabs] = useState(() => {\n const tabItems: NavTabItem[] = [];\n for (let i = 0; i < count; i += 1) {\n tabItems.push({ key: `${i}`, title: `Tab ${i}`, isClosable: i > 0 });\n }\n return tabItems;\n });\n\n const handleReorder = useCallback((from: number, to: number) => {\n setTabs(t => {\n const newTabs = [...t];\n const [removed] = newTabs.splice(from, 1);\n newTabs.splice(to, 0, removed);\n return newTabs;\n });\n }, []);\n\n const handleSelect = useCallback((key: string) => {\n setActiveKey(key);\n }, []);\n\n const handleClose = useCallback((key: string) => {\n setTabs(t => t.filter(tab => tab.key !== key));\n }, []);\n\n const makeContextActions = useCallback(\n (tab: NavTabItem) => [\n {\n title: 'Select Tab to the Left',\n group: 10,\n order: 10,\n disabled: tabs[0].key === tab.key,\n action: () => {\n const index = tabs.findIndex(t => t.key === tab.key);\n if (index > 0) {\n setActiveKey(tabs[index - 1].key);\n }\n },\n },\n {\n title: 'Select Tab to the Right',\n group: 30,\n order: 10,\n disabled: tabs[tabs.length - 1].key === tab.key,\n action: () => {\n const index = tabs.findIndex(t => t.key === tab.key);\n if (index < tabs.length - 1) {\n setActiveKey(tabs[index + 1].key);\n }\n },\n },\n ],\n [tabs]\n );\n\n return (\n <NavTabList\n tabs={tabs}\n activeKey={activeKey}\n onSelect={handleSelect}\n onReorder={handleReorder}\n onClose={handleClose}\n makeContextActions={makeContextActions}\n />\n );\n}\n\nenum MENU_ITEM_TYPE {\n SUBMENU = 'SUBMENU',\n PAGE = 'PAGE',\n SWITCH = 'SWITCH',\n}\n\nlet nextId = 0;\nfunction getNewId(): number {\n const newId = nextId;\n nextId += 1;\n return newId;\n}\n\n// Create a seeded random number generator\nconst random = pseudoRandomWithSeed(25);\n\nfunction getRandomCount(min = 1, max = 5): number {\n const r = Number(random.next().value);\n return Math.floor(r * max) + min;\n}\n\ntype MenuItem = {\n type: MENU_ITEM_TYPE;\n id: number;\n};\n\ntype StackItem = {\n title: string;\n items?: MenuItem[];\n};\n\nfunction makeMenuItem(\n type: MENU_ITEM_TYPE,\n id = getNewId()\n): {\n id: number;\n type: MENU_ITEM_TYPE;\n} {\n return { id, type };\n}\n\nfunction makeMenuItems(\n submenuCount: number = getRandomCount(),\n pageCount: number = getRandomCount(),\n switchCount: number = getRandomCount()\n): MenuItem[] {\n const items: MenuItem[] = [];\n\n for (let i = 0; i < submenuCount; i += 1) {\n items.push(makeMenuItem(MENU_ITEM_TYPE.SUBMENU));\n }\n\n for (let i = 0; i < pageCount; i += 1) {\n items.push(makeMenuItem(MENU_ITEM_TYPE.PAGE));\n }\n\n for (let i = 0; i < switchCount; i += 1) {\n items.push(makeMenuItem(MENU_ITEM_TYPE.SWITCH));\n }\n\n return items;\n}\n\nfunction titleForMenuItem({ type, id }: MenuItem): string {\n switch (type) {\n case MENU_ITEM_TYPE.SUBMENU:\n return `Submenu ${id}`;\n case MENU_ITEM_TYPE.PAGE:\n return `Page ${id}`;\n case MENU_ITEM_TYPE.SWITCH:\n return `Switch ${id}`;\n }\n}\n\nfunction iconForMenuItem({ type }: MenuItem): IconProp {\n switch (type) {\n case MENU_ITEM_TYPE.SUBMENU:\n return vsListUnordered;\n case MENU_ITEM_TYPE.PAGE:\n return vsFile;\n case MENU_ITEM_TYPE.SWITCH:\n return dhTruck;\n }\n}\n\nfunction Navigations(): JSX.Element {\n // The menu items on each part of the stack\n const [stackItems, setStackItems] = useState([] as StackItem[]);\n\n // Values that are set on the switched, mapped from ID to value\n const [valueMap, setValueMap] = useState(new Map<number, boolean>());\n\n const push = useCallback(\n (menuItem: StackItem) => {\n setStackItems([...stackItems, menuItem]);\n },\n [stackItems, setStackItems]\n );\n\n const pop = useCallback(() => {\n const newStackItems = [...stackItems];\n newStackItems.pop();\n setStackItems(newStackItems);\n }, [stackItems, setStackItems]);\n\n const popAll = useCallback(() => {\n const newStackItems = [stackItems[0]];\n setStackItems(newStackItems);\n }, [stackItems, setStackItems]);\n\n const toggleValue = useCallback(\n (valueIndex: number) => {\n const value = valueMap.get(valueIndex) ?? false;\n const newValueMap = new Map(valueMap);\n newValueMap.set(valueIndex, !value);\n setValueMap(newValueMap);\n },\n [valueMap, setValueMap]\n );\n\n const handleSelect = useCallback(\n (itemIndex: number) => {\n const stackItem = stackItems[stackItems.length - 1];\n const { items } = stackItem;\n\n if (!items) {\n throw new Error(\n 'Navigation handleSelect triggered without items to select'\n );\n }\n const item = items[itemIndex];\n switch (item.type) {\n case MENU_ITEM_TYPE.PAGE:\n push({ title: titleForMenuItem(item) });\n break;\n case MENU_ITEM_TYPE.SUBMENU:\n push({ title: titleForMenuItem(item), items: makeMenuItems() });\n break;\n case MENU_ITEM_TYPE.SWITCH:\n toggleValue(item.id);\n break;\n }\n },\n [stackItems, toggleValue, push]\n );\n\n useEffect(function setMenu() {\n setStackItems([\n {\n title: 'Navigation Menu',\n items: makeMenuItems(),\n },\n ]);\n }, []);\n\n const stack = useMemo(\n () =>\n stackItems.map(({ items, title }, i) => {\n if (!items) {\n return (\n <Page onBack={pop} onClose={popAll} title={title} key={title}>\n <div>Page content!</div>\n </Page>\n );\n }\n\n let content = null;\n if (items != null) {\n const navMenuItems = items.map(item => {\n const itemTitle = titleForMenuItem(item);\n const icon = iconForMenuItem(item);\n let isOn;\n let onChange;\n if (item.type === MENU_ITEM_TYPE.SWITCH) {\n isOn = valueMap.get(item.id) ?? false;\n onChange = () => {\n handleSelect(item.id);\n };\n }\n return { title: itemTitle, icon, isOn, onChange };\n });\n content = <Menu onSelect={handleSelect} items={navMenuItems} />;\n } else {\n content = <div>Page content</div>;\n }\n\n return (\n <Page\n onBack={i > 0 ? pop : undefined}\n onClose={i > 0 ? popAll : undefined}\n title={title}\n key={title}\n >\n {content}\n </Page>\n );\n }),\n [stackItems, valueMap, handleSelect, pop, popAll]\n );\n\n return (\n <SampleSection name=\"navigations\">\n <h2 className=\"ui-title\">Navigations</h2>\n <div style={{ marginBottom: '1rem' }}>\n <NavTabListExample count={100} activeKey=\"15\" />\n </div>\n <div style={{ marginBottom: '1rem' }}>\n <NavTabListExample />\n </div>\n <div className=\"navigations\">\n <Stack>{stack}</Stack>\n </div>\n </SampleSection>\n );\n}\n\nexport default Navigations;\n","import React, { Fragment, useMemo } from 'react';\nimport cl from 'classnames';\nimport { CopyButton, Tooltip, useTheme } from '@deephaven/components';\nimport { ColorUtils } from '@deephaven/utils';\nimport palette from '@deephaven/components/src/theme/theme-dark/theme-dark-palette.css?inline';\nimport semantic from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic.css?inline';\nimport chart from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic-chart.css?inline';\nimport semanticEditor from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic-editor.css?inline';\nimport semanticGrid from '@deephaven/components/src/theme/theme-dark/theme-dark-semantic-grid.css?inline';\nimport components from '@deephaven/components/src/theme/theme-dark/theme-dark-components.css?inline';\nimport { buildColorGroups, INVALID_COLOR_BORDER_STYLE } from './colorUtils';\nimport SampleSection from './SampleSection';\nimport styles from './ThemeColors.module.scss';\n\nfunction buildSwatchDataGroups() {\n return {\n 'Theme Color Palette': buildColorGroups('palette', palette, 1),\n 'Semantic Colors': buildColorGroups('semantic', semantic, 1),\n 'Chart Colors': buildColorGroups('chart', chart, 2),\n 'Editor Colors': buildColorGroups('editor', semanticEditor, 2),\n 'Grid Colors': buildColorGroups('grid', semanticGrid, 2),\n 'Component Colors': buildColorGroups('component', components, 1),\n };\n}\n\nfunction TooltipContent({ name, value }: { name: string; value: string }) {\n return (\n <>\n <div>{name}</div>\n <div>{value}</div>\n {/* expensive call, don't normalize until popup shown */}\n <div>{ColorUtils.normalizeCssColor(value, true)}</div>\n </>\n );\n}\n\nexport function ThemeColors(): JSX.Element {\n const { selectedThemeKey } = useTheme();\n const swatchDataGroups = useMemo(buildSwatchDataGroups, [selectedThemeKey]);\n\n return (\n <>\n {Object.entries(swatchDataGroups).map(([label, data], i) => {\n if (label === 'Theme Color Palette') {\n return (\n <SampleSection key={label} name={label}>\n <h2 className=\"ui-title\">{label}</h2>\n\n <div className={styles.themeColorsPalette}>\n {Object.entries(data).map(([group, swatchData], index) => (\n <Fragment key={group}>\n {(index === 0 || index === 1) &&\n swatchData.map(({ name }, j) => (\n <div\n style={{\n gridColumnStart: j + 2,\n textAlign: 'center',\n }}\n className=\"mt-3\"\n key={name}\n >\n {name.split('-').pop()}\n </div>\n ))}\n <div className=\"text-right pr-2\">{group}</div>\n {swatchData.map(({ name, value }) => (\n <div\n key={name}\n style={{\n backgroundColor: value,\n border:\n value === '' && name.length > 0\n ? INVALID_COLOR_BORDER_STYLE\n : undefined,\n }}\n className={cl(styles.swatch, 'px-0')}\n >\n <Tooltip interactive>\n <TooltipContent name={name} value={value} />\n </Tooltip>\n {name && <CopyButton copy={name} />}\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </SampleSection>\n );\n }\n return (\n <SampleSection key={label} name={label}>\n <h2 className=\"ui-title\">{label}</h2>\n <div className={styles.themeColors}>\n {Object.entries(data).map(([group, swatchData]) => (\n <div\n key={group}\n // This is the secret sauce for filling columns. The height of\n // each swatch group spans multiple rows (the number of swatches\n // + 1 for the label). This causes the grid to create rows\n // based on the swatch height (35px), and each swatch (also the\n // group label) neatly fits in a grid cell. The grid will put a\n // group in each column and then wrap back around to the first\n // until all groups are placed.\n style={{ gridRow: `span ${swatchData.length + 1}` }}\n >\n <span className={cl(styles.label, styles.capitalize)}>\n {group}\n </span>\n {swatchData.map(({ isLabel, name, value, note }) =>\n isLabel === true ? (\n <span key={name} className={styles.label}>\n {name}\n </span>\n ) : (\n <div\n key={name}\n className={styles.swatch}\n style={{\n border:\n value === '' && name.length > 0\n ? INVALID_COLOR_BORDER_STYLE\n : undefined,\n }}\n >\n <div\n style={{\n backgroundColor: value,\n height: 'var(--swatch-height)',\n aspectRatio: '1 / 1',\n }}\n />\n <Tooltip interactive>\n <TooltipContent name={name} value={value} />\n </Tooltip>\n <span>{name.replace('--dh-color-', '')}</span>\n {name.endsWith('-hue') || note != null ? (\n <span>{note ?? value}</span>\n ) : null}\n <CopyButton copy={name} />\n </div>\n )\n )}\n </div>\n ))}\n </div>\n </SampleSection>\n );\n })}\n </>\n );\n}\n\nexport default ThemeColors;\n","export const MENU_CATEGORY_DATA_ATTRIBUTE = 'data-menu-category';\nexport const NO_MENU_DATA_ATTRIBUTE = 'data-no-menu';\nexport const SAMPLE_SECTION_E2E_IGNORE = 'sample-section-e2e-ignore';\nexport const SPECTRUM_COMPONENT_SAMPLES_ID = 'spectrum-component-samples';\nexport const SPECTRUM_COMPARISON_SAMPLES_ID = 'spectrum-comparison-samples';\n","/* eslint-disable react/style-prop-object */\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport {\n ActionButton,\n Button,\n Cell,\n Checkbox,\n Content,\n ContextualHelp,\n Column,\n ComboBox,\n Form,\n Grid,\n Icon,\n IllustratedMessage,\n Item,\n minmax,\n repeat,\n Row,\n Slider,\n Switch,\n TableBody,\n TableHeader,\n TableView,\n TextField,\n ToggleButton,\n Well,\n DialogTrigger,\n Dialog,\n Header,\n Divider,\n ButtonGroup,\n Flex,\n ListView,\n} from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhTruck, vsEmptyWindow } from '@deephaven/icons';\nimport { Heading, View, Text } from '@deephaven/components';\nimport { SPECTRUM_COMPONENT_SAMPLES_ID } from './constants';\nimport SampleSection from './SampleSection';\n\nexport function SpectrumComponents(): JSX.Element {\n return (\n <div id={SPECTRUM_COMPONENT_SAMPLES_ID}>\n <h2 className=\"ui-title\" data-no-menu>\n Spectrum Components\n </h2>\n <Grid gap={20} columns={minmax('0px', '1fr')}>\n <SampleSection name=\"spectrum-buttons\" component={View}>\n <h3>Buttons</h3>\n <ButtonsSample />\n </SampleSection>\n <SampleSection name=\"spectrum-collections\" component={View}>\n <h3>Collections</h3>\n <TableViewSample />\n </SampleSection>\n <SampleSection name=\"spectrum-content\" component={View}>\n <h3>Content</h3>\n <IllustratedMessageSample />\n </SampleSection>\n <SampleSection name=\"spectrum-forms\" component={View}>\n <h3>Forms</h3>\n <FormsSample />\n </SampleSection>\n <SampleSection name=\"spectrum-overlays\" component={View}>\n <h3>Overlays</h3>\n <Flex gap=\"size-160\">\n <ContextualHelpSample />\n <DialogTrigger>\n <ActionButton>Dialog Trigger</ActionButton>\n {close => (\n <Dialog>\n <Heading>Some Heading</Heading>\n <Header>Some Header</Header>\n <Divider />\n <Content>\n <Text>Are you sure?</Text>\n </Content>\n <ButtonGroup>\n <Button variant=\"secondary\" onPress={close}>\n Cancel\n </Button>\n <Button variant=\"accent\" onPress={close}>\n Confirm\n </Button>\n </ButtonGroup>\n </Dialog>\n )}\n </DialogTrigger>\n <DialogTrigger type=\"popover\">\n <ActionButton>Popover</ActionButton>\n <Dialog>\n <Heading>Popover</Heading>\n <Divider />\n <Content>\n <Text>This is a popover.</Text>\n </Content>\n </Dialog>\n </DialogTrigger>\n </Flex>\n </SampleSection>\n <SampleSection name=\"spectrum-well\" component={View}>\n <h3>Wells</h3>\n <Well>This is a well.</Well>\n </SampleSection>\n </Grid>\n </div>\n );\n}\n\nexport default SpectrumComponents;\n\nfunction ButtonsSample(): JSX.Element {\n return (\n <>\n <ActionButton marginBottom=\"size-200\">\n <Icon>\n <FontAwesomeIcon icon={dhTruck} />\n </Icon>\n <Text>Icon Button</Text>\n </ActionButton>\n <Grid\n autoFlow=\"column\"\n columnGap=\"size-250\"\n rowGap=\"size-150\"\n columns={repeat(4, minmax(0, 'size-2000'))}\n rows={repeat(8, 'size-400')}\n >\n <label>Button style="outline"</label>\n <Button variant=\"primary\" style=\"outline\">\n Primary\n </Button>\n <Button variant=\"secondary\" style=\"outline\">\n Secondary\n </Button>\n <Button variant=\"accent\" style=\"outline\">\n Accent\n </Button>\n <Button variant=\"negative\" style=\"outline\">\n Negative\n </Button>\n <Button variant=\"primary\" staticColor=\"black\" style=\"outline\">\n Static Black\n </Button>\n <Button variant=\"primary\" staticColor=\"white\" style=\"outline\">\n Static White\n </Button>\n <Button variant=\"primary\" isDisabled style=\"outline\">\n Disabled\n </Button>\n\n <label>Button style="fill"</label>\n <Button variant=\"primary\" style=\"fill\">\n Primary\n </Button>\n <Button variant=\"secondary\" style=\"fill\">\n Secondary\n </Button>\n <Button variant=\"accent\" style=\"fill\">\n Accent\n </Button>\n <Button variant=\"negative\" style=\"fill\">\n Negative\n </Button>\n <Button variant=\"primary\" staticColor=\"black\" style=\"fill\">\n Static Black\n </Button>\n <Button variant=\"primary\" staticColor=\"white\" style=\"fill\">\n Static White\n </Button>\n <Button variant=\"primary\" isDisabled style=\"fill\">\n Disabled\n </Button>\n\n <label>Action Button</label>\n <ActionButton>Normal</ActionButton>\n <ActionButton gridRow=\"span 3\" isQuiet>\n Quiet\n </ActionButton>\n <ActionButton staticColor=\"black\">Static Black</ActionButton>\n <ActionButton staticColor=\"white\">Static White</ActionButton>\n <ActionButton isDisabled>Disabled</ActionButton>\n\n <label>Toggle Button</label>\n <ToggleButton>Normal</ToggleButton>\n <ToggleButton isQuiet>Quiet</ToggleButton>\n <ToggleButton gridRow=\"span 2\" isEmphasized>\n Emphasized\n </ToggleButton>\n <ToggleButton staticColor=\"black\">Static Black</ToggleButton>\n <ToggleButton staticColor=\"white\">Static White</ToggleButton>\n <ToggleButton isDisabled>Disabled</ToggleButton>\n </Grid>\n </>\n );\n}\n\nfunction ContextualHelpSample(): JSX.Element {\n return (\n <>\n <Text>Contextual Help</Text>\n <ContextualHelp variant=\"info\">\n <Heading>Need help?</Heading>\n <Content>\n <Text>\n This is a helpful description of the thing you need help with.\n </Text>\n </Content>\n </ContextualHelp>\n </>\n );\n}\n\nfunction FormsSample(): JSX.Element {\n return (\n <Form>\n <Grid gap={20} columns={repeat('auto-fit', '210px')} alignItems=\"end\">\n <TextField label=\"Text Field\" />\n <ComboBox label=\"Combobox\" menuTrigger=\"focus\" defaultSelectedKey=\"two\">\n <Item key=\"one\">One</Item>\n <Item key=\"two\">Two</Item>\n <Item key=\"three\">Three</Item>\n </ComboBox>\n <Checkbox>Checkbox</Checkbox>\n <Slider label=\"Slider\" defaultValue={24} />\n <Switch>Switch</Switch>\n </Grid>\n </Form>\n );\n}\n\nfunction IllustratedMessageSample(): JSX.Element {\n return (\n <IllustratedMessage>\n <Icon size=\"XL\">\n <FontAwesomeIcon icon={vsEmptyWindow} />\n </Icon>\n <Heading>Illustrated Message</Heading>\n <Content>This is the content of the message.</Content>\n </IllustratedMessage>\n );\n}\n\nfunction TableViewSample(): JSX.Element {\n return (\n <>\n <label id=\"table-view-sample\">List View</label>\n <ListView\n aria-labelledby=\"table-view-sample\"\n selectionMode=\"multiple\"\n maxWidth=\"size-6000\"\n marginBottom=\"size-200\"\n >\n <Item>One</Item>\n <Item>Two</Item>\n <Item>Three</Item>\n <Item>Four</Item>\n </ListView>\n\n <label id=\"table-view-sample\">Table View</label>\n <TableView aria-labelledby=\"table-view-sample\" selectionMode=\"multiple\">\n <TableHeader>\n <Column title=\"Person\">\n <Column allowsResizing>Name</Column>\n <Column>Age</Column>\n </Column>\n <Column title=\"Address\">\n <Column allowsResizing>City</Column>\n <Column>State</Column>\n </Column>\n </TableHeader>\n <TableBody>\n <Row>\n <Cell>John</Cell>\n <Cell>42</Cell>\n <Cell>San Francisco</Cell>\n <Cell>CA</Cell>\n </Row>\n <Row>\n <Cell>Jane</Cell>\n <Cell>38</Cell>\n <Cell>San Francisco</Cell>\n <Cell>CA</Cell>\n </Row>\n <Row>\n <Cell>Becky</Cell>\n <Cell>12</Cell>\n <Cell>San Francisco</Cell>\n <Cell>CA</Cell>\n </Row>\n </TableBody>\n </TableView>\n </>\n );\n}\n","import React, { type Key, useCallback, useEffect, useState } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport {\n ActionButton,\n Icon,\n Item,\n Menu,\n MenuTrigger,\n Section,\n} from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsMenu } from '@deephaven/icons';\nimport {\n MENU_CATEGORY_DATA_ATTRIBUTE,\n NO_MENU_DATA_ATTRIBUTE,\n SPECTRUM_COMPARISON_SAMPLES_ID,\n SPECTRUM_COMPONENT_SAMPLES_ID,\n} from './constants';\n\ninterface Link {\n id: string;\n label: string;\n}\ntype LinkCategory = { category: string; items: Link[] };\n\n/**\n * Metadata only div that provides a MENU_CATEGORY_DATA_ATTRIBUTE defining a\n * menu category. These will be queried by the SamplesMenu component to build\n * up the menu sections.\n */\nexport function SampleMenuCategory(\n props: Record<typeof MENU_CATEGORY_DATA_ATTRIBUTE, string>\n): JSX.Element {\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <div {...props} />;\n}\n\n/**\n * Creates a menu from h2, h3 elements on the page and assigns them each an id\n * for hash navigation purposes. If the current hash matches one of the ids, it\n * will scroll to that element. This handles the initial page load scenario.\n * Menu categories are identified by divs with MENU_CATEGORY_DATA_ATTRIBUTE\n * attributes originating from the <SampleMenuCategory> component.\n */\nexport function SamplesMenu(): JSX.Element {\n const [links, setLinks] = useState<LinkCategory[]>([]);\n\n useEffect(() => {\n let currentCategory: LinkCategory = {\n category: '',\n items: [],\n };\n const categories: LinkCategory[] = [currentCategory];\n\n const spectrumComponentsSamples = document.querySelector(\n `#${SPECTRUM_COMPONENT_SAMPLES_ID}`\n );\n\n const spectrumComparisonSamples = document.querySelector(\n `#sample-section-${SPECTRUM_COMPARISON_SAMPLES_ID}`\n );\n\n document\n .querySelectorAll(`h2,h3,[${MENU_CATEGORY_DATA_ATTRIBUTE}]`)\n .forEach(headingEl => {\n if (\n headingEl.textContent == null ||\n headingEl.hasAttribute(NO_MENU_DATA_ATTRIBUTE)\n ) {\n return;\n }\n\n // Create a new category section\n if (headingEl.hasAttribute(MENU_CATEGORY_DATA_ATTRIBUTE)) {\n currentCategory = {\n category:\n headingEl.getAttribute(MENU_CATEGORY_DATA_ATTRIBUTE) ?? '',\n items: [],\n };\n categories.push(currentCategory);\n\n return;\n }\n\n const idPrefix =\n // eslint-disable-next-line no-nested-ternary\n spectrumComponentsSamples?.contains(headingEl) === true\n ? 'spectrum-'\n : spectrumComparisonSamples?.contains(headingEl) === true\n ? 'spectrum-compare-'\n : '';\n\n const id = `${idPrefix}${headingEl.textContent}`\n .toLowerCase()\n .replace(/\\s/g, '-');\n\n // eslint-disable-next-line no-param-reassign\n headingEl.id = id;\n\n currentCategory.items.push({ id, label: headingEl.textContent });\n });\n\n setLinks(categories);\n }, []);\n\n useEffect(() => {\n const el =\n window.location.hash === ''\n ? null\n : document.querySelector(window.location.hash);\n\n // Give everything a chance to render before scrolling\n setTimeout(() => {\n if (el) {\n el.scrollIntoView();\n } else {\n // NavTabList sample causes auto scrolling to middle of page, so we\n // have to explicilty scroll back to the top of the page\n window.scrollTo({\n top: 0,\n behavior: 'auto',\n });\n }\n }, 0);\n }, []);\n\n const onAction = useCallback((key: Key) => {\n const id = String(key);\n const el = document.getElementById(id);\n\n el?.scrollIntoView({\n behavior: 'smooth',\n });\n\n // Keep hash in sync for page reloads, but give some delay to allow smooth\n // scrolling above\n setTimeout(() => {\n window.location.hash = id;\n }, 1000);\n }, []);\n\n return (\n <MenuTrigger>\n <ActionButton>\n <Icon>\n <FontAwesomeIcon icon={vsMenu} />\n </Icon>\n </ActionButton>\n <Menu items={links} onAction={onAction}>\n {({ category, items }) => (\n <Section key={category} items={items} title={category}>\n {({ id, label }) => <Item key={id}>{label}</Item>}\n </Section>\n )}\n </Menu>\n </MenuTrigger>\n );\n}\n\nexport default SamplesMenu;\n","import React, { useCallback, useEffect } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { Button, Icon } from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronUp } from '@deephaven/icons';\nimport './GotoTopButton.css';\n\n/**\n * Button that scrolls to top of styleguide and clears location hash.\n */\nexport function GotoTopButton(): JSX.Element {\n const gotoTop = useCallback(() => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n\n // Small delay to give scrolling a chance to move smoothly to top\n setTimeout(() => {\n window.location.hash = '';\n }, 500);\n }, []);\n\n // Set data-scroll=\"true\" on the html element when the user scrolls down to the\n // first h2. CSS uses this to only show the button when the user has scrolled.\n useEffect(() => {\n const firstH2Top = document.querySelector('h2')?.offsetTop ?? 0;\n\n function onScroll() {\n document.documentElement.dataset.scroll = String(\n window.scrollY >= firstH2Top\n );\n }\n document.addEventListener('scroll', onScroll, { passive: true });\n return () => {\n document.removeEventListener('scroll', onScroll);\n };\n }, []);\n\n return (\n <Button\n UNSAFE_className=\"goto-top-button\"\n variant=\"accent\"\n onPress={gotoTop}\n >\n <Icon>\n <FontAwesomeIcon icon={vsChevronUp} />\n </Icon>\n </Button>\n );\n}\n\nexport default GotoTopButton;\n","import React from 'react';\nimport classnames from 'classnames';\nimport SampleSection from './SampleSection';\n\nconst tabs = ['Tab 1', 'Tab 2', 'Tab 3'];\n\nfunction Tab({\n isActive,\n title,\n}: {\n isActive: boolean;\n title: string;\n}): JSX.Element {\n return (\n <li className={classnames('lm_tab', isActive && 'lm_active')}>\n <span className=\"lm_title_before\" />\n <span className=\"lm_title\">{title}</span>\n <span className=\"lm_close_tab\" />\n </li>\n );\n}\n\nexport function GoldenLayout(): JSX.Element {\n return (\n <SampleSection name=\"golden-layout\">\n <h2 className=\"ui-title\">Golden Layout</h2>\n {[false, true].map(isMaximised => (\n <React.Fragment key={String(isMaximised)}>\n <h5>{isMaximised ? 'Minimized' : 'Maximised'}</h5>\n <div\n style={{ position: 'relative', border: 'none' }}\n className={isMaximised ? 'lm_maximised' : undefined}\n >\n <div className=\"lm_header\">\n <ul className=\"lm_tabs\">\n {tabs.map((tab, i) => (\n <Tab key={tab} isActive={i === 0} title={tab} />\n ))}\n </ul>\n <ul className=\"lm_controls\">\n <li className=\"lm_tabpreviousbutton\" />\n <li className=\"lm_tabnextbutton\" />\n <li className=\"lm_maximise\" />\n <li className=\"lm_popout\" />\n <li className=\"lm_tabdropdown\" />\n <li className=\"lm_close\" />\n </ul>\n </div>\n </div>\n </React.Fragment>\n ))}\n </SampleSection>\n );\n}\n\nexport default GoldenLayout;\n","import React from 'react';\nimport {\n View,\n RandomAreaPlotAnimation as Animation,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nexport function RandomAreaPlotAnimation(): JSX.Element {\n return (\n <SampleSection name=\"animations\" className=\"sample-section-e2e-ignore\">\n <h2 className=\"ui-title\">Animations</h2>\n <View position=\"relative\" height={400}>\n <Animation />\n </View>\n </SampleSection>\n );\n}\n\nexport default RandomAreaPlotAnimation;\n","/* eslint-disable react/style-prop-object */\nimport React, { Fragment, useState } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport {\n ActionButton,\n Button,\n Checkbox,\n Flex,\n Grid,\n Icon,\n Item,\n Picker,\n type SpectrumButtonProps,\n TextField,\n} from '@adobe/react-spectrum';\nimport {\n Button as BootstrapButtonOld,\n Checkbox as CheckboxOld,\n Select,\n View,\n Text,\n} from '@deephaven/components';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { vsPlay } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n SAMPLE_SECTION_E2E_IGNORE,\n SPECTRUM_COMPARISON_SAMPLES_ID,\n} from './constants';\nimport SampleSection from './SampleSection';\n\ntype BootstrapLevel = 'primary' | 'secondary' | 'danger';\n\nconst buttons: [BootstrapLevel, SpectrumButtonProps['variant']][] = [\n ['primary', 'accent'],\n ['secondary', 'primary'],\n ['danger', 'negative'],\n];\n\nexport function SpectrumComparison(): JSX.Element {\n const [isChecked, setIsChecked] = useState(false);\n\n return (\n <SampleSection\n name={SPECTRUM_COMPARISON_SAMPLES_ID}\n className={SAMPLE_SECTION_E2E_IGNORE}\n >\n <h2 className=\"ui-title\" data-no-menu>\n Bootstrap / Spectrum Comparison\n </h2>\n <Flex gap={20} wrap>\n <View>\n <h3>Buttons - Filled</h3>\n <Grid\n gap={20}\n columns=\"repeat(2, 120px)\"\n autoRows=\"40x\"\n justifyItems=\"start\"\n alignItems=\"start\"\n >\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n {buttons.map(([level, variant]) => (\n <Fragment key={level}>\n <BootstrapButtonOld\n onClick={EMPTY_FUNCTION}\n kind={level}\n icon={vsPlay}\n >\n Button\n </BootstrapButtonOld>\n\n <Button variant={variant} style=\"fill\">\n <Icon>\n <FontAwesomeIcon icon={vsPlay} />\n </Icon>\n <Text>Button</Text>\n </Button>\n </Fragment>\n ))}\n\n <BootstrapButtonOld\n onClick={EMPTY_FUNCTION}\n kind=\"primary\"\n disabled\n >\n Disabled\n </BootstrapButtonOld>\n <Button variant=\"accent\" style=\"fill\" isDisabled>\n Disabled\n </Button>\n </Grid>\n </View>\n\n <View>\n <h3>Buttons - Outline</h3>\n <Grid gap={20} columns=\"repeat(2, 120px)\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n {buttons.map(([level, variant]) => (\n <Fragment key={level}>\n <BootstrapButtonOld onClick={EMPTY_FUNCTION} kind={level}>\n {level}\n </BootstrapButtonOld>\n <Button variant={variant} style=\"outline\">\n {variant}\n </Button>\n </Fragment>\n ))}\n\n <BootstrapButtonOld\n onClick={EMPTY_FUNCTION}\n kind=\"secondary\"\n disabled\n >\n Disabled\n </BootstrapButtonOld>\n <Button variant=\"primary\" style=\"outline\" isDisabled>\n Disabled\n </Button>\n </Grid>\n </View>\n\n <View>\n <h3>Action Buttons</h3>\n\n <Grid gap={20} columns=\"repeat(2, 120px)\" autoRows=\"40x\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n <BootstrapButtonOld onClick={EMPTY_FUNCTION} kind=\"inline\">\n Inline\n </BootstrapButtonOld>\n <ActionButton>Action</ActionButton>\n\n <BootstrapButtonOld onClick={EMPTY_FUNCTION} kind=\"inline\" disabled>\n Disabled\n </BootstrapButtonOld>\n <ActionButton isDisabled>Disabled</ActionButton>\n </Grid>\n </View>\n\n <View>\n <h3>Pickers</h3>\n <Grid gap={20} columns=\"repeat(2, 192px)\" autoRows=\"40x\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n {[false, true].map(isDisabled => (\n <Fragment key={String(isDisabled)}>\n <div>\n <label className=\"input-label\">Select</label>\n <Select\n disabled={isDisabled}\n placeholder=\"Select\"\n onChange={_v => {\n // no-op\n }}\n className=\"custom-select\"\n >\n <option disabled value=\"0\">\n {isDisabled ? '' : 'Disabled '}Select\n </option>\n <option value=\"1\">One</option>\n <option value=\"2\">Two</option>\n <option value=\"3\">Three</option>\n </Select>\n </div>\n <Picker\n isDisabled={isDisabled}\n label={isDisabled ? 'Disabled Picker' : 'Picker'}\n placeholder=\"Picker\"\n >\n <Item key=\"1\">One</Item>\n <Item key=\"2\">Two</Item>\n <Item key=\"3\">Three</Item>\n </Picker>\n </Fragment>\n ))}\n </Grid>\n </View>\n\n <View>\n <h3>Text Field</h3>\n <Grid gap={20} columns=\"repeat(2, 192px)\" autoRows=\"40x\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n <div>\n <label className=\"input-label\">type=text</label>\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Text Input\"\n />\n </div>\n <TextField type=\"text\" label=\"TextField\" />\n\n <div>\n <label className=\"input-label\">Disabled</label>\n <input\n type=\"text\"\n className=\"form-control\"\n disabled\n value=\"Disabled\"\n />\n </div>\n <TextField\n type=\"text\"\n label=\"Disabled\"\n isDisabled\n value=\"Disabled\"\n />\n </Grid>\n </View>\n\n <View>\n <h3>Checkbox</h3>\n <Grid gap={20} columns=\"repeat(2, 120px)\">\n <label>Bootstrap</label>\n <label>Spectrum</label>\n\n <CheckboxOld\n className=\"form-group\"\n checked={isChecked}\n onChange={() => setIsChecked(v => !v)}\n >\n Checkbox\n </CheckboxOld>\n <Checkbox>Checkbox</Checkbox>\n\n <CheckboxOld\n className=\"form-group\"\n disabled\n checked={isChecked}\n onChange={() => setIsChecked(v => !v)}\n >\n Disabled\n </CheckboxOld>\n <Checkbox isDisabled>Disabled</Checkbox>\n </Grid>\n </View>\n </Flex>\n </SampleSection>\n );\n}\n\nexport default SpectrumComparison;\n","import React, { cloneElement, useCallback, useState } from 'react';\nimport {\n Checkbox,\n ComboBox,\n ComboBoxNormalized,\n Flex,\n Icon,\n Item,\n type ItemKey,\n PICKER_ITEM_HEIGHTS,\n PICKER_TOP_OFFSET,\n Picker,\n PickerNormalized,\n Section,\n Text,\n} from '@deephaven/components';\nimport { vsPerson } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getPositionOfSelectedItem } from '@deephaven/react-hooks';\nimport { generateItemElements, generateNormalizedItems } from './utils';\nimport SampleSection from './SampleSection';\n\n// Generate enough items to require scrolling\nconst items = [...generateNormalizedItems(52)];\nconst itemsWithIcons = [...generateNormalizedItems(52, { icons: true })];\nconst itemElementsA = [...generateItemElements(0, 51)];\nconst itemElementsB = [...generateItemElements(52, 103)];\nconst itemElementsC = [...generateItemElements(104, 155)];\nconst itemElementsD = [...generateItemElements(156, 207)];\nconst itemElementsE = [...generateItemElements(208, 259)];\n\nconst mixedItemsWithIconsNoDescriptions = [\n 'String 1',\n 'String 2',\n 'String 3',\n '',\n 'Some really long text that should get truncated',\n 444,\n 999,\n true,\n false,\n ...itemElementsA.map((itemEl, i) =>\n i % 5 > 0\n ? itemEl\n : cloneElement(itemEl, {\n ...itemEl.props,\n children: [\n <PersonIcon key={`icon-${itemEl.props.children}`} />,\n <Text key={`label-${itemEl.props.children}`}>\n {itemEl.props.children}\n </Text>,\n ],\n })\n ),\n];\n\nfunction PersonIcon(): JSX.Element {\n return (\n <Icon>\n <FontAwesomeIcon icon={vsPerson} />\n </Icon>\n );\n}\n\nexport function Pickers(): JSX.Element {\n const [selectedKey, setSelectedKey] = useState<ItemKey | null>(200);\n\n const [showIcons, setShowIcons] = useState(true);\n\n const [filteredItems, setFilteredItems] = useState(itemsWithIcons);\n\n const onSearch = useCallback(\n (searchText: string) =>\n setFilteredItems(\n searchText === ''\n ? itemsWithIcons\n : itemsWithIcons.filter(\n ({ item }) => item?.textValue?.includes(searchText)\n )\n ),\n []\n );\n\n const getInitialScrollPosition = useCallback(\n async () =>\n getPositionOfSelectedItem({\n keyedItems: items,\n itemHeight: PICKER_ITEM_HEIGHTS.medium,\n selectedKey,\n topOffset: PICKER_TOP_OFFSET,\n }),\n [selectedKey]\n );\n\n const onChange = useCallback((key: ItemKey | null): void => {\n setSelectedKey(key);\n }, []);\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <SampleSection name=\"pickers\">\n <h2 className=\"ui-title\">Pickers</h2>\n\n <Flex gap={14} direction=\"column\">\n {[Picker, ComboBox].map(Component => {\n const label = (suffix: string) =>\n `${Component === Picker ? 'Picker' : 'ComboBox'} (${suffix})`;\n\n return (\n <Flex key={Component.displayName} direction=\"row\" gap={14}>\n <Component\n label={label('Single Child')}\n tooltip={{ placement: 'bottom-end' }}\n >\n <Item textValue=\"Aaa\">Aaa</Item>\n </Component>\n <Component\n label={label('Mixed Children Types')}\n defaultSelectedKey=\"999\"\n tooltip\n >\n {mixedItemsWithIconsNoDescriptions}\n </Component>\n <Component label={label('Sections')} tooltip>\n {/* eslint-disable react/jsx-curly-brace-presence */}\n {'String 1'}\n {'String 2'}\n {'String 3'}\n <Section title=\"Section\">\n <Item textValue=\"Item Aaa\">Item Aaa</Item>\n <Item textValue=\"Item Bbb\">Item Bbb</Item>\n <Item textValue=\"Complex Ccc\">\n <PersonIcon />\n <Text>Complex Ccc</Text>\n </Item>\n </Section>\n <Section key=\"Key B\">\n <Item textValue=\"Item Ddd\">Item Ddd</Item>\n <Item textValue=\"Item Eee\">Item Eee</Item>\n <Item textValue=\"Complex Fff\">\n <PersonIcon />\n <Text>Complex Fff</Text>\n </Item>\n <Item textValue=\"Ggg\">\n <PersonIcon />\n <Text>Label</Text>\n <Text slot=\"description\">Description</Text>\n </Item>\n <Item textValue=\"Hhh\">\n <PersonIcon />\n <Text>Label that causes overflow</Text>\n <Text slot=\"description\">\n Description that causes overflow\n </Text>\n </Item>\n </Section>\n <Section title=\"Section A\">{itemElementsA}</Section>\n <Section title=\"Section B\">{itemElementsB}</Section>\n <Section key=\"Section C\">{itemElementsC}</Section>\n <Section key=\"Section D\">{itemElementsD}</Section>\n <Section title=\"Section E\">{itemElementsE}</Section>\n </Component>\n </Flex>\n );\n })}\n\n <Checkbox\n checked={showIcons}\n onChange={e => setShowIcons(e.currentTarget.checked)}\n >\n Show Ions\n </Checkbox>\n\n <Flex direction=\"row\" gap={14}>\n <PickerNormalized\n label=\"Picker (Controlled)\"\n getInitialScrollPosition={getInitialScrollPosition}\n normalizedItems={itemsWithIcons}\n selectedKey={selectedKey}\n showItemIcons={showIcons}\n onChange={onChange}\n />\n <ComboBoxNormalized\n label=\"ComboBox (Controlled)\"\n getInitialScrollPosition={getInitialScrollPosition}\n normalizedItems={filteredItems}\n selectedKey={selectedKey}\n showItemIcons={showIcons}\n onChange={onChange}\n validationState={selectedKey == null ? 'invalid' : 'valid'}\n errorMessage=\"Please select an item.\"\n onInputChange={onSearch}\n />\n </Flex>\n </Flex>\n </SampleSection>\n );\n}\n\nexport default Pickers;\n","import React, { type ReactNode, useCallback, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { BoxAlignmentStyleProps, StyleProps } from '@react-types/shared';\nimport {\n Grid,\n Icon,\n Item,\n LIST_VIEW_ROW_HEIGHTS,\n ListView,\n ListViewNormalized,\n type ItemKey,\n Text,\n Flex,\n Checkbox,\n type ListViewProps,\n RadioGroup,\n Radio,\n useSpectrumThemeProvider,\n ListActionGroup,\n} from '@deephaven/components';\nimport { vsAccount, vsEdit, vsPerson, vsTrash } from '@deephaven/icons';\nimport { generateNormalizedItems } from './utils';\nimport SampleSection from './SampleSection';\n\n// Generate enough items to require scrolling\nconst itemsWithIcons = [...generateNormalizedItems(52, { icons: true })];\n\nfunction AccountIllustration(): JSX.Element {\n return (\n // Images in ListView items require a slot of 'image' or 'illustration' to\n // be set in order to be positioned correctly:\n // https://github.com/adobe/react-spectrum/blob/784737effd44b9d5e2b1316e690da44555eafd7e/packages/%40react-spectrum/list/src/ListViewItem.tsx#L266-L267\n <Icon slot=\"illustration\">\n <FontAwesomeIcon icon={vsAccount} />\n </Icon>\n );\n}\n\ninterface LabeledProps extends BoxAlignmentStyleProps, StyleProps {\n label: string;\n direction?: 'row' | 'column';\n children: ReactNode;\n}\n\nconst LABELED_FLEX_CONTAINER_HEIGHTS = {\n gap: 10,\n label: {\n medium: 21,\n large: 25.5,\n },\n};\n\nfunction LabeledFlexContainer({\n label,\n direction = 'column',\n children,\n ...styleProps\n}: LabeledProps) {\n return (\n <Flex\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n direction={direction}\n gap={LABELED_FLEX_CONTAINER_HEIGHTS.gap}\n >\n <Text>{label}</Text>\n {children}\n </Flex>\n );\n}\n\nexport function ListViews(): JSX.Element {\n const { scale } = useSpectrumThemeProvider();\n const [selectedKeys, setSelectedKeys] = useState<'all' | Iterable<ItemKey>>(\n []\n );\n\n const [density, setDensity] = useState<ListViewProps['density']>('compact');\n\n // Calculate the height of the single child example\n const singleChildExampleHeight =\n LABELED_FLEX_CONTAINER_HEIGHTS.label[scale] +\n LABELED_FLEX_CONTAINER_HEIGHTS.gap +\n 2 + // listview border\n LIST_VIEW_ROW_HEIGHTS[density ?? 'compact'][scale];\n\n const onDensityChange = useCallback((value: string) => {\n setDensity(value as ListViewProps['density']);\n }, []);\n\n const [showIcons, setShowIcons] = useState(true);\n const [lastActionKey, setLastActionKey] = useState<ItemKey>('');\n const [lastActionItemKey, setLastActionItemKey] = useState<ItemKey>('');\n\n const onAction = useCallback((actionKey: ItemKey, itemKey: ItemKey): void => {\n setLastActionKey(actionKey);\n setLastActionItemKey(itemKey);\n }, []);\n\n const onChange = useCallback((keys: 'all' | Iterable<ItemKey>): void => {\n setSelectedKeys(keys);\n }, []);\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <SampleSection name=\"list-views\">\n <h2 className=\"ui-title\">List View</h2>\n\n <Grid\n gap={14}\n height=\"size-6000\"\n columns=\"1fr 1fr 1fr\"\n rows={`auto minmax(${singleChildExampleHeight}px, auto) 1fr auto 1fr`}\n >\n <LabeledFlexContainer\n alignItems=\"center\"\n direction=\"row\"\n label=\"Density\"\n gridColumn=\"span 3\"\n >\n <RadioGroup\n aria-label=\"Density\"\n orientation=\"horizontal\"\n value={density}\n onChange={onDensityChange}\n >\n <Radio value=\"compact\">Compact</Radio>\n <Radio value=\"regular\">Regular</Radio>\n <Radio value=\"spacious\">Spacious</Radio>\n </RadioGroup>\n </LabeledFlexContainer>\n\n <LabeledFlexContainer\n label=\"Single Child\"\n gridColumn=\"span 3\"\n height=\"100%\"\n >\n <ListView\n density={density}\n aria-label=\"Single Child\"\n selectionMode=\"multiple\"\n >\n <Item textValue=\"Aaa\">Aaa</Item>\n </ListView>\n </LabeledFlexContainer>\n\n <LabeledFlexContainer label=\"Icons\" gridColumn=\"span 2\">\n <ListView\n aria-label=\"Icon\"\n density={density}\n selectionMode=\"multiple\"\n >\n <Item textValue=\"Item with icon A\">\n <AccountIllustration />\n <Text>Item with icon A</Text>\n </Item>\n <Item textValue=\"Item with icon B\">\n <AccountIllustration />\n <Text>Item with icon B</Text>\n </Item>\n <Item textValue=\"Item with icon C\">\n <AccountIllustration />\n <Text>Item with icon C</Text>\n </Item>\n <Item textValue=\"Item with icon D\">\n <AccountIllustration />\n <Text>Item with icon D with overflowing content</Text>\n </Item>\n <Item textValue=\"Item with icon E\">\n <AccountIllustration />\n <Text>Item with icon E</Text>\n </Item>\n </ListView>\n </LabeledFlexContainer>\n\n <LabeledFlexContainer label=\"Mixed Children Types\">\n <ListView\n aria-label=\"Mixed Children Types\"\n density={density}\n maxWidth=\"size-2400\"\n selectionMode=\"multiple\"\n defaultSelectedKeys={['999', 444]}\n >\n {/* eslint-disable react/jsx-curly-brace-presence */}\n {'String 1'}\n {'String 2'}\n {'String 3'}\n {''}\n {'Some really long text that should get truncated'}\n {/* eslint-enable react/jsx-curly-brace-presence */}\n {444}\n {999}\n {true}\n {false}\n <Item textValue=\"Item Aaa\">Item Aaa</Item>\n <Item textValue=\"Item Bbb\">Item Bbb</Item>\n <Item textValue=\"Item with Description\">\n <Text>Item with Description</Text>\n <Text slot=\"description\">Description</Text>\n </Item>\n <Item textValue=\"Complex Ccc\">\n <Icon slot=\"image\">\n <FontAwesomeIcon icon={vsPerson} />\n </Icon>\n <Text>Complex Ccc with text that should be truncated</Text>\n </Item>\n <Item textValue=\"Complex Ccc with Description\">\n <Icon slot=\"image\">\n <FontAwesomeIcon icon={vsPerson} />\n </Icon>\n <Text>Complex Ccc with text that should be truncated</Text>\n <Text slot=\"description\">Description</Text>\n </Item>\n </ListView>\n </LabeledFlexContainer>\n\n <Flex gridColumn=\"span 3\" gap={14}>\n <Checkbox\n checked={showIcons}\n onChange={e => setShowIcons(e.currentTarget.checked)}\n >\n Show Ions\n </Checkbox>\n </Flex>\n\n <LabeledFlexContainer label=\"Controlled\" gridColumn=\"span 2\">\n <ListViewNormalized\n aria-label=\"Controlled\"\n density={density}\n normalizedItems={itemsWithIcons}\n selectionMode=\"multiple\"\n selectedKeys={selectedKeys}\n showItemIcons={showIcons}\n onChange={onChange}\n actions={\n <ListActionGroup\n overflowMode=\"collapse\"\n buttonLabelBehavior=\"collapse\"\n maxWidth={80}\n onAction={onAction}\n >\n <Item key=\"Edit\">\n <Icon>\n <FontAwesomeIcon icon={vsEdit} />\n </Icon>\n <Text>Edit</Text>\n </Item>\n <Item key=\"Delete\">\n <Icon>\n <FontAwesomeIcon icon={vsTrash} />\n </Icon>\n <Text>Delete</Text>\n </Item>\n </ListActionGroup>\n }\n />\n {lastActionKey} {lastActionItemKey}\n </LabeledFlexContainer>\n </Grid>\n </SampleSection>\n );\n}\n\nexport default ListViews;\n","/* eslint no-alert: \"off\" */\nimport React, { type CSSProperties } from 'react';\nimport { ErrorView } from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\nfunction ErrorViews(): React.ReactElement {\n const columnStyle: CSSProperties = {\n maxHeight: 500,\n display: 'flex',\n flexDirection: 'column',\n maxWidth: 400,\n };\n\n const shortErrorMessage = 'This is a short error message';\n const midErrorMessage = 'Mid length error message\\n'.repeat(10);\n const longErrorMessage = 'Really long error message\\n'.repeat(100);\n\n const midErrorType = 'MidError';\n const longErrorType = 'SuperLongErrorMessageType';\n\n return (\n <SampleSection name=\"error-views\">\n <h2 className=\"ui-title\" title=\"Display error messages easily\">\n Error Views\n </h2>\n <h3>Expandable</h3>\n <div className=\"row\" style={{ maxHeight: 500 }}>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={shortErrorMessage} />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={midErrorMessage} type={midErrorType} />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={longErrorMessage} type={longErrorType} />\n </div>\n </div>\n <h3>Always expanded</h3>\n <div className=\"row\" style={{ maxHeight: 500 }}>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={shortErrorMessage} isExpanded />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView message={midErrorMessage} type={midErrorType} isExpanded />\n </div>\n <div className=\"col\" style={columnStyle}>\n <ErrorView\n message={longErrorMessage}\n type={longErrorType}\n isExpanded\n />\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default ErrorViews;\n","import React, { useState } from 'react';\nimport {\n XComponentMapProvider,\n createXComponent,\n Button,\n} from '@deephaven/components';\nimport SampleSection from './SampleSection';\n\ntype FooComponentProps = { value: string };\n\nfunction FooComponent({ value }: FooComponentProps) {\n return (\n <Button kind=\"primary\" onClick={() => undefined}>\n {value}\n </Button>\n );\n}\nFooComponent.displayName = 'FooComponent';\n\n// Create an XComponent from FooComponent to allow for replacement\nconst XFooComponent = createXComponent(FooComponent);\n\nfunction NestedFooComponent({ value }: FooComponentProps) {\n // We're using the XComponent version so this panel can be replaced if it is mapped from a parent context to a replacement\n return <XFooComponent value={`${value}.${value}`} />;\n}\n\nfunction MultiFooComponent({ value }: FooComponentProps) {\n // Show multiple instances getting replaced\n return (\n <div>\n <XFooComponent value={value} />\n <XFooComponent value={value} />\n </div>\n );\n}\n\n// What we're replacing the XFooComponent with.\nfunction ReverseFooComponent({ value }: FooComponentProps) {\n return (\n <Button kind=\"danger\" onClick={() => undefined}>\n {value.split('').reverse().join('')}\n </Button>\n );\n}\n\n/**\n * Some examples showing usage of XComponents.\n */\nexport function XComponents(): JSX.Element {\n const [value, setValue] = useState('hello');\n\n return (\n <SampleSection name=\"xcomponents\">\n <h2 className=\"ui-title\">XComponents</h2>\n <p>\n XComponents are a way to replace a component with another component\n without needing to pass props all the way down the component tree. This\n can be useful in cases where we have a component deep down in the\n component tree that we want to replace with a different component, but\n don't want to have to provide props at the top level just to hook\n into that.\n <br />\n Below is a component that is simply a button displaying the text\n inputted in the input field. We will replace this component with a new\n component that reverses the text, straight up, then in a nested\n scenario, and then multiple instances.\n </p>\n <div className=\"form-group\">\n <label htmlFor=\"xcomponentsInput\">\n Input Value:\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"xcomponentsInput\"\n value={value}\n onChange={e => setValue(e.target.value)}\n />\n </label>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n <small>Original Component</small>\n <div>\n <XFooComponent value={value} />\n </div>\n\n <small>Replaced with Reverse</small>\n <div>\n <XComponentMapProvider\n value={new Map([[XFooComponent, ReverseFooComponent]])}\n >\n <XFooComponent value={value} />\n </XComponentMapProvider>\n </div>\n </div>\n <div className=\"col\">\n <small>Nested component replaced</small>\n <div>\n <XComponentMapProvider\n value={new Map([[XFooComponent, ReverseFooComponent]])}\n >\n {/* The `FooComponent` that gets replaced is from within the `NestedFooComponent` */}\n <NestedFooComponent value={value} />\n </XComponentMapProvider>\n </div>\n </div>\n <div className=\"col\">\n <small>Multiple Components replaced</small>\n <div>\n <XComponentMapProvider\n value={new Map([[XFooComponent, ReverseFooComponent]])}\n >\n <MultiFooComponent value={value} />\n </XComponentMapProvider>\n </div>\n </div>\n </div>\n </SampleSection>\n );\n}\n\nexport default XComponents;\n","import React from 'react';\nimport { CheckboxGroup, Flex, Text } from '@deephaven/components';\n// eslint-disable-next-line no-restricted-imports\nimport { Checkbox } from '@adobe/react-spectrum';\nimport SampleSection from './SampleSection';\n\nexport function CheckboxGroups(): JSX.Element {\n return (\n <SampleSection name=\"checkbox-groups\">\n <h2 className=\"ui-title\">Checkbox Groups</h2>\n <Flex gap=\"size-100\" gridColumn=\"span 3\" height=\"100%\">\n <Flex direction=\"column\">\n <Text>Single Child</Text>\n <CheckboxGroup aria-label=\"Single Child\">\n <Checkbox value=\"Aaa\">Aaa</Checkbox>\n </CheckboxGroup>\n </Flex>\n\n <Flex direction=\"column\">\n <Text>Multiple Children</Text>\n <CheckboxGroup aria-label=\"Multiple Children\">\n <Checkbox value=\"Aaa\">Aaa</Checkbox>\n <Checkbox value=\"Bbb\">Bbb</Checkbox>\n <Checkbox value=\"Ccc\">Ccc</Checkbox>\n </CheckboxGroup>\n </Flex>\n\n <Flex direction=\"column\">\n <Text>Mixed Children Types</Text>\n <CheckboxGroup aria-label=\"Mixed Children Types\">\n {/* eslint-disable react/jsx-curly-brace-presence */}\n {'String 1'}\n {'String 2'}\n {444}\n {999}\n {true}\n {false}\n <Checkbox>Aaa</Checkbox>\n </CheckboxGroup>\n </Flex>\n </Flex>\n </SampleSection>\n );\n}\n\nexport default CheckboxGroups;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport cl from 'classnames';\n\nimport {\n ContextMenuRoot,\n ThemePicker,\n useTheme,\n Flex,\n ToastContainer,\n} from '@deephaven/components';\n\nimport Buttons from './Buttons';\nimport Charts from './Charts';\nimport Colors from './Colors';\nimport ContextMenus from './ContextMenus';\nimport Dialog from './Dialog';\nimport DropdownMenus from './DropdownMenus';\nimport Editors from './Editors';\nimport Grids from './Grids';\nimport Icons from './Icons';\nimport Inputs from './Inputs';\nimport ItemListInputs from './ItemListInputs';\nimport Modals from './Modals';\nimport Progress from './Progress';\nimport TimeSliderInputs from './TimeSliderInputs';\nimport Tooltips from './Tooltips';\nimport Toast from './Toast';\nimport Typograpy from './Typography';\nimport './StyleGuide.scss';\nimport DraggableLists from './DraggableLists';\nimport Navigations from './Navigations';\nimport ThemeColors from './ThemeColors';\nimport SpectrumComponents from './SpectrumComponents';\nimport SamplesMenu, { SampleMenuCategory } from './SamplesMenu';\nimport GotoTopButton from './GotoTopButton';\nimport { ISOLATED_SECTION_QUERY_CLASS, useIsolateSectionHash } from './utils';\nimport { GoldenLayout } from './GoldenLayout';\nimport { RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nimport SpectrumComparison from './SpectrumComparison';\nimport Pickers from './Pickers';\nimport ListViews from './ListViews';\nimport ErrorViews from './ErrorViews';\nimport XComponents from './XComponents';\nimport CheckboxGroups from './CheckboxGroups';\n\nconst stickyProps = {\n position: 'sticky',\n justifyContent: 'end',\n zIndex: 1,\n UNSAFE_style: {\n float: 'right',\n },\n} as const;\n\nfunction StyleGuide(): React.ReactElement {\n const { themes } = useTheme();\n const hasMultipleThemes = themes.length > 1;\n\n const isIsolatedSection = useIsolateSectionHash() !== '';\n\n return (\n // Needs a tabindex to capture focus on popper blur\n // AppMainContainer has a tabindex of -1 in the app itself\n <div tabIndex={-1} role=\"main\">\n <div\n className={cl(\n 'container',\n 'style-guide-container',\n isIsolatedSection && ISOLATED_SECTION_QUERY_CLASS\n )}\n >\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n marginTop=\"2rem\"\n marginBottom=\"1rem\"\n >\n <h1 style={{ paddingTop: '2rem' }}>Deephaven UI Components</h1>\n </Flex>\n <Flex\n {...stickyProps}\n UNSAFE_className={\n isIsolatedSection ? 'hide-when-isolated' : undefined\n }\n marginTop={-56}\n top={20}\n gap={10}\n alignItems=\"end\"\n >\n {hasMultipleThemes ? <ThemePicker /> : null}\n <SamplesMenu />\n </Flex>\n <Flex\n {...stickyProps}\n UNSAFE_className={\n isIsolatedSection ? 'hide-when-isolated' : undefined\n }\n top=\"calc(100vh - 40px)\"\n marginTop={-32}\n marginEnd={hasMultipleThemes ? -234 : 0}\n >\n <GotoTopButton />\n </Flex>\n\n <Typograpy />\n\n <SampleMenuCategory data-menu-category=\"Colors\" />\n <Colors />\n <ThemeColors />\n\n <SampleMenuCategory data-menu-category=\"Layout\" />\n <GoldenLayout />\n\n <SampleMenuCategory data-menu-category=\"Components\" />\n <Buttons />\n <Progress />\n <Inputs />\n <ListViews />\n <Pickers />\n <ItemListInputs />\n <DraggableLists />\n <TimeSliderInputs />\n <CheckboxGroups />\n <Dialog />\n <Modals />\n <ContextMenus />\n <DropdownMenus />\n <Navigations />\n <Toast />\n <Tooltips />\n <Icons />\n <Editors />\n <Grids />\n <Charts />\n <ContextMenuRoot />\n <RandomAreaPlotAnimation />\n <ErrorViews />\n <XComponents />\n\n <SampleMenuCategory data-menu-category=\"Spectrum Components\" />\n <SpectrumComponents />\n\n <SampleMenuCategory data-menu-category=\"Spectrum Comparison\" />\n <SpectrumComparison />\n <ToastContainer />\n </div>\n </div>\n );\n}\n\nexport default StyleGuide;\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport {\n type CustomizableWorkspace,\n getWorkspace,\n type PayloadActionCreator,\n type RootState,\n setWorkspace as setWorkspaceAction,\n} from '@deephaven/redux';\nimport {\n type ExportedLayout,\n LocalWorkspaceStorage,\n} from '@deephaven/app-utils';\nimport StyleGuide from './StyleGuide';\n\n/**\n * Initialize data needed for the styleguide\n */\nfunction StyleGuideInit(props: {\n workspace: CustomizableWorkspace;\n setWorkspace: PayloadActionCreator<CustomizableWorkspace>;\n}): JSX.Element | null {\n const { workspace, setWorkspace } = props;\n\n useEffect(() => {\n LocalWorkspaceStorage.makeDefaultWorkspace({\n getLayouts: async () => [] as string[],\n getLayout: async () => ({}) as ExportedLayout,\n }).then(setWorkspace);\n }, [setWorkspace]);\n\n return workspace != null ? <StyleGuide /> : null;\n}\n\nconst mapStateToProps = (\n state: RootState\n): {\n workspace: CustomizableWorkspace;\n} => ({\n workspace: getWorkspace(state),\n});\n\nconst ConnectedStyleGuideInit = connect(mapStateToProps, {\n setWorkspace: setWorkspaceAction,\n})(StyleGuideInit);\n\nexport default ConnectedStyleGuideInit;\n","import React, { useEffect } from 'react';\nimport { Provider } from 'react-redux';\nimport { FontBootstrap } from '@deephaven/components';\nimport '@deephaven/components/scss/BaseStyleSheet.scss';\nimport { MonacoUtils } from '@deephaven/console';\nimport { store } from '@deephaven/redux';\nimport { DownloadServiceWorkerUtils } from '@deephaven/iris-grid';\nimport MonacoWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';\nimport StyleGuideInit from './StyleGuideInit';\n\nexport function StyleGuideRoot(): JSX.Element {\n useEffect(function init() {\n DownloadServiceWorkerUtils.register(\n new URL(\n `${import.meta.env.BASE_URL ?? ''}download/serviceWorker.js`,\n window.location.href\n )\n );\n MonacoUtils.init({ getWorker: () => new MonacoWorker() });\n\n // disable annoying dnd-react warnings\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window['__@hello-pangea/dnd-disable-dev-warnings'] = true;\n }, []);\n\n return (\n <FontBootstrap>\n <Provider store={store}>\n <StyleGuideInit />\n </Provider>\n </FontBootstrap>\n );\n}\n\nexport default StyleGuideRoot;\n"],"names":["asyncGeneratorStep","n","t","e","r","o","a","c","i","u","_asyncToGenerator","_next","_throw","_defineProperty","_toPropertyKey","_toPrimitive","MockGridModel","GridModel","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","isEditable","editedData","column","row","_this$editedData$colu","_this$editedData$colu2","theme","value","_this","ranges","text","_this2","GridRange","x","y","edits","_this3","_edit$column","_edit$row","edit","range","MockTreeGridModel","_children","_childRowCount","_maxDepth","memoizeClear","children","key","offsetRow","sortedEntries","b","childRow","childModel","childRowCount","model","maxDepth","depth","isExpanded","expandDescendants","originalChildRowCount","child","StaticDataGridModel","data","columnHeaders","_columnHeaders$length","_this$data$row","_this$columnHeaders$c","_this$columnHeaders","ViewportDataGridModel","_this$viewportData$ro","_this$viewportData","_this$viewportData$co","_this$viewportData2","_this$viewportData$da","_this$viewportData3","viewportRow","viewportColumn","DEFAULT_AXIS","DEFAULT_POSITIVE_COLOR","GridTheme","DEFAULT_NEGATIVE_COLOR","DEFAULT_VALUE_PLACEMENT","DEFAULT_DIRECTION","DEFAULT_TEXT_ALIGNMENT","isArrayOfNumbers","item","MockDataBarGridModel","columnAxes","positiveColors","negativeColors","valuePlacements","opacities","directions","textAlignments","markers","_this$data$column","_this$textAlignments$","_this$columnAxes$get","_this$valuePlacements","_this$directions$get","_this$positiveColors$","_this$negativeColors$","_this$data$column2","_this$markers$get","columnMin","getOrThrow","columnMax","axis","valuePlacement","opacity","direction","positiveColor","negativeColor","color","ISOLATED_SECTION_QUERY_CLASS","SAMPLE_SECTION_CLASS","generateItemElements","start","end","letters","len","charI","suffix","letter","content","createElement","Item","generateNormalizedItems","count","include","iconKeys","dhIcons","icon","description","pseudoRandomWithSeed","seed","getIsolatedSectionHash","useIsolateSectionHash","hash","setHash","useState","useEffect","hashChangeHandler","useSeededRandomNumberCallback","randomGenerator","useCallback","result","getSectionIdFromName","name","sampleSectionIdAndClasses","classNames","id","className","cl","sampleSectionIdAndClassesSpectrum","SampleSection","Component","styleProps","sectionId","sectionIdAndClasses","jsx","noOp","Buttons","jsxs","Fragment","ButtonGroup","Button","levelMap","Flex","level","semantic","SocketedButton","props","toggle","dhTruck","buttons","inlineButtons","socketedButtons","links","Charts","dh","useApi","MockChartModel","Chart","INVALID_COLOR_BORDER_STYLE","REASSIGN_VARIABLE_GROUPS","SWATCH_LABEL","RENAME_VARIABLE_GROUPS","contrastColor","rgba","ColorUtils","g","extractColorVars","styleText","computedStyle","_a","line","match","varName","getExpressionRanges","varExp","buildColorGroups","groupKey","captureGroupI","reassignVarGroups","groupRemap","acc","group","useContrastFgColorRef","ref","useRef","useLayoutEffect","backgroundColor","useDhColorFromPseudoContent","elementRef","pseudoElement","setColor","pseudoContent","dhColorVarName","dhColorValue","Swatch","dhColor","tooltip","useMemo","hasValue","Tooltip","Colors","graySwatches","swatch","baseColorPaletteSwatches","colorSwatches","ContextMenus","iteration","vsBell","Shortcut","MODIFIER","KEY","dhFilePrint","contextActions","actions","vsQuestion","ContextActions","delayedActions","resolve","Dialog","React","parentA","parentB","leaf","checkBoxMap","isShown","Popper","HierarchicalCheckboxMenu","DropdownMenus","vsKebabVertical","DropdownMenu","testPython","testGroovy","Constants","Editors","Editor","EMPTY_ARRAY","MockIrisGridTreeModel","IrisGridModel","__publicField","memoize","columns","customColumns","formatColumns","sort","filter","partition","partitionColumns","formatter","columnAlignmentMap","rollupConfig","names","totalsConfig","startRow","valueType","insensitive","contains","isBackwards","groups","StaticExample","Grid","QuadrillionExample","TreeExample","AsyncExample","grid","viewport","setViewport","handleViewChanged","metrics","top","bottom","left","right","isCancelled","rowData","DataBarExample","columnData","Grids","irisGridModel","irisGridCompactModel","irisGridSpaciousModel","contextTheme","ThemeContext","IrisGrid","copyText","error","DH_PREFIX","VS_PREFIX","getPrefixedName","prefix","str","Flash","message","show","setShow","timeout","Icons","dhFilter","setDhFilter","vsFilter","setVsFilter","search","setSearch","flashText","setFlashText","renderIcons","matchesFilter","isDH","isVS","prefixedName","FontAwesomeIcon","err","Icon","compositionExample","vsOrganization","dhSquareFilled","dhAddSmall","event","EXAMPLES","items","title","TIMEOUTS","Inputs","on","setOn","searchValue","setSearchValue","check1","setCheck1","check2","setCheck2","check3","setCheck3","check4","setCheck4","check5","setCheck5","radioValue","setRadioValue","customTimeValue","setCustomTimeValue","autoResizeTextareaValue","setAutoResizeTextareaValue","handleRadioChange","handleToggleClick","handleSearchInputChange","SearchInput","Checkbox","RadioGroup","Radio","UISwitch","Select","v","Option","ComboBox","AutoCompleteInput","TimeInput","DateInput","DateTimeInput","CustomTimeSelect","time","AutoResizeTextarea","SelectValueListInput","PureComponent","itemIndex","selectedIndex","isSelected","offset","visibleItemIndex","itemCount","viewportSize","topRow","bottomRow","SelectValueList","ItemListInput","isMultiSelect","ItemList","ItemListInputs","Modals","openModal","setOpenModal","closeModals","renderBasicModal","buttonCount","BasicModal","Progress","LoadingSpinner","TimeSliderInputs","values","startTime","endTime","initialStartTime","initialEndTime","isStartModified","isEndModified","TimeSlider","TimeUtils","Tooltips","iconElements","Toast","ToastQueue","Typography","DraggableListInput","selectedRanges","onSelectionChange","draggablePrefix","droppableId","isDragDisabled","isDropDisabled","DraggableItemList","DRAG_LIST_TITLES","DRAG_LIST_PROPS","makeItems","DraggableLists","listIndex","lists","source","destination","sourceListIndex","destinationListIndex","isSameList","destinationIndex","insertIndex","sourceList","destinationList","draggedItems","DragUtils","newItems","newSelectedRanges","_b","listSelectedRanges","DragDropContext","NavTabListExample","activeKeyProp","activeKey","setActiveKey","tabs","setTabs","tabItems","handleReorder","from","to","newTabs","removed","handleSelect","handleClose","tab","makeContextActions","index","NavTabList","nextId","getNewId","newId","random","getRandomCount","min","max","makeMenuItem","type","makeMenuItems","submenuCount","pageCount","switchCount","titleForMenuItem","iconForMenuItem","vsListUnordered","vsFile","Navigations","stackItems","setStackItems","valueMap","setValueMap","push","menuItem","pop","newStackItems","popAll","toggleValue","valueIndex","newValueMap","stackItem","stack","Page","navMenuItems","itemTitle","isOn","onChange","Menu","Stack","buildSwatchDataGroups","palette","chart","semanticEditor","semanticGrid","components","TooltipContent","ThemeColors","selectedThemeKey","useTheme","swatchDataGroups","label","styles","swatchData","j","CopyButton","isLabel","note","MENU_CATEGORY_DATA_ATTRIBUTE","NO_MENU_DATA_ATTRIBUTE","SAMPLE_SECTION_E2E_IGNORE","SPECTRUM_COMPONENT_SAMPLES_ID","SPECTRUM_COMPARISON_SAMPLES_ID","SpectrumComponents","minmax","View","ButtonsSample","TableViewSample","IllustratedMessageSample","FormsSample","ContextualHelpSample","DialogTrigger","ActionButton","close","Heading","Header","Divider","Content","Text","Well","repeat","ToggleButton","ContextualHelp","Form","TextField","Slider","Switch","IllustratedMessage","vsEmptyWindow","ListView","TableView","TableHeader","Column","TableBody","Row","Cell","SampleMenuCategory","SamplesMenu","setLinks","currentCategory","categories","spectrumComponentsSamples","spectrumComparisonSamples","headingEl","el","onAction","MenuTrigger","vsMenu","category","Section","GotoTopButton","gotoTop","firstH2Top","onScroll","vsChevronUp","Tab","isActive","classnames","GoldenLayout","isMaximised","RandomAreaPlotAnimation","Animation","SpectrumComparison","isChecked","setIsChecked","variant","BootstrapButtonOld","EMPTY_FUNCTION","vsPlay","isDisabled","_v","Picker","CheckboxOld","itemsWithIcons","itemElementsA","itemElementsB","itemElementsC","itemElementsD","itemElementsE","mixedItemsWithIconsNoDescriptions","itemEl","cloneElement","PersonIcon","vsPerson","Pickers","selectedKey","setSelectedKey","showIcons","setShowIcons","filteredItems","setFilteredItems","onSearch","searchText","getInitialScrollPosition","getPositionOfSelectedItem","PICKER_ITEM_HEIGHTS","PICKER_TOP_OFFSET","PickerNormalized","ComboBoxNormalized","AccountIllustration","vsAccount","LABELED_FLEX_CONTAINER_HEIGHTS","LabeledFlexContainer","ListViews","scale","useSpectrumThemeProvider","selectedKeys","setSelectedKeys","density","setDensity","singleChildExampleHeight","LIST_VIEW_ROW_HEIGHTS","onDensityChange","lastActionKey","setLastActionKey","lastActionItemKey","setLastActionItemKey","actionKey","itemKey","keys","ListViewNormalized","ListActionGroup","vsEdit","vsTrash","ErrorViews","columnStyle","shortErrorMessage","midErrorMessage","longErrorMessage","midErrorType","longErrorType","ErrorView","FooComponent","XFooComponent","createXComponent","NestedFooComponent","MultiFooComponent","ReverseFooComponent","XComponents","setValue","XComponentMapProvider","CheckboxGroups","CheckboxGroup","stickyProps","StyleGuide","themes","hasMultipleThemes","isIsolatedSection","ThemePicker","Typograpy","ContextMenuRoot","ToastContainer","StyleGuideInit","workspace","setWorkspace","LocalWorkspaceStorage","mapStateToProps","state","getWorkspace","ConnectedStyleGuideInit","connect","setWorkspaceAction","StyleGuideRoot","DownloadServiceWorkerUtils","MonacoUtils","MonacoWorker","FontBootstrap","Provider","store"],"mappings":"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"}
|