@deephaven/components 0.49.2-beta.5 → 0.49.2-beta.6
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/css/BaseStyleSheet.css +2 -2
- package/css/BaseStyleSheet.css.map +1 -1
- package/dist/EditableItemList.d.ts.map +1 -1
- package/dist/EditableItemList.js +2 -1
- package/dist/EditableItemList.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/theme/ThemeModel.d.ts +25 -0
- package/dist/theme/ThemeModel.d.ts.map +1 -0
- package/dist/theme/ThemeModel.js +12 -0
- package/dist/theme/ThemeModel.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +15 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +48 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/ThemeUtils.d.ts +37 -0
- package/dist/theme/ThemeUtils.d.ts.map +1 -0
- package/dist/theme/ThemeUtils.js +112 -0
- package/dist/theme/ThemeUtils.js.map +1 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +5 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme_default_dark.css +53 -0
- package/dist/theme/theme_default_dark.css.map +1 -0
- package/dist/theme/theme_default_light.css +53 -0
- package/dist/theme/theme_default_light.css.map +1 -0
- package/dist/theme/useTheme.d.ts +7 -0
- package/dist/theme/useTheme.d.ts.map +1 -0
- package/dist/theme/useTheme.js +10 -0
- package/dist/theme/useTheme.js.map +1 -0
- package/package.json +7 -7
- package/scss/BaseStyleSheet.scss +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAQf,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;CAC3C;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAmH1E;AAED,eAAe,gBAAgB,CAAC"}
|
package/dist/EditableItemList.js
CHANGED
|
@@ -3,7 +3,8 @@ import classNames from 'classnames';
|
|
|
3
3
|
import clamp from 'lodash.clamp';
|
|
4
4
|
import { vsAdd, vsTrash } from '@deephaven/icons';
|
|
5
5
|
import { RangeUtils } from '@deephaven/utils';
|
|
6
|
-
import
|
|
6
|
+
import Button from "./Button.js";
|
|
7
|
+
import ItemList from "./ItemList.js";
|
|
7
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
9
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
10
|
// Display a list of items with an input for adding new items, and Add/Delete buttons
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableItemList.js","names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","RangeUtils","Button","ItemList","EditableItemList","props","isInvalid","items","onAdd","undefined","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","value","setValue","handleSelectionChange","ranges","handleDelete","getItemsInRanges","handleAdd","validationError","handleInputChange","event","inputValue","target","handleInputFocus","handleInputKeyDown","key","containerHeight","length","DEFAULT_ROW_HEIGHT","height","map","item","index","isSelected"],"sources":["../src/EditableItemList.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { vsAdd, vsTrash } from '@deephaven/icons';\nimport { Range, RangeUtils } from '@deephaven/utils';\nimport
|
|
1
|
+
{"version":3,"file":"EditableItemList.js","names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","RangeUtils","Button","ItemList","EditableItemList","props","isInvalid","items","onAdd","undefined","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","value","setValue","handleSelectionChange","ranges","handleDelete","getItemsInRanges","handleAdd","validationError","handleInputChange","event","inputValue","target","handleInputFocus","handleInputKeyDown","key","containerHeight","length","DEFAULT_ROW_HEIGHT","height","map","item","index","isSelected"],"sources":["../src/EditableItemList.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { vsAdd, vsTrash } from '@deephaven/icons';\nimport { Range, RangeUtils } from '@deephaven/utils';\nimport Button from './Button';\nimport ItemList from './ItemList';\n\nexport interface EditableItemListProps {\n isInvalid?: boolean;\n items: string[];\n onDelete: (items: string[]) => void;\n onAdd: (item: string) => void;\n validate?: (item: string) => Error | null;\n}\n\n// Display a list of items with an input for adding new items, and Add/Delete buttons\nfunction EditableItemList(props: EditableItemListProps): React.ReactElement {\n const {\n isInvalid = false,\n items,\n onAdd = () => undefined,\n onDelete = () => undefined,\n validate = () => null,\n } = props;\n const [inputError, setInputError] = useState<Error | null>(null);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const [value, setValue] = useState('');\n\n const handleSelectionChange = useCallback((ranges: Range[]) => {\n setSelectedRanges(ranges);\n }, []);\n\n const handleDelete = useCallback(() => {\n onDelete(RangeUtils.getItemsInRanges(items, selectedRanges));\n setSelectedRanges([]);\n }, [items, selectedRanges, onDelete]);\n\n const handleAdd = useCallback(() => {\n if (value === '') {\n return;\n }\n const validationError = validate(value);\n if (validationError == null) {\n onAdd(value);\n setValue('');\n } else {\n setInputError(validationError);\n }\n }, [value, onAdd, validate]);\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { value: inputValue } = event.target;\n setValue(inputValue);\n setInputError(inputValue === '' ? null : validate(inputValue));\n },\n [validate]\n );\n\n const handleInputFocus = useCallback(() => {\n setSelectedRanges([]);\n }, []);\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleAdd();\n }\n },\n [handleAdd]\n );\n\n const containerHeight = useMemo(\n (): number => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT,\n [items.length]\n );\n\n return (\n <div\n className={classNames('editable-item-list-container', {\n 'is-invalid': isInvalid,\n })}\n >\n <div style={{ height: containerHeight }}>\n <ItemList\n itemCount={items.length}\n items={items.map((item, index) => ({\n value: item,\n isSelected: RangeUtils.isSelected(selectedRanges, index),\n }))}\n offset={0}\n selectedRanges={selectedRanges}\n onSelectionChange={handleSelectionChange}\n isMultiSelect\n />\n </div>\n <div className=\"d-flex flex-row pt-2\">\n <div className=\"d-flex flex-grow-1\">\n <input\n className={classNames('form-control', {\n 'is-invalid': inputError != null,\n })}\n placeholder=\"Enter value\"\n type=\"text\"\n value={value}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n />\n </div>\n <div className=\"d-flex align-items-start mt-1 ml-2\">\n <Button\n kind=\"ghost\"\n onClick={handleAdd}\n disabled={inputError != null || value === ''}\n icon={vsAdd}\n tooltip=\"Add new item\"\n data-testid=\"add-item-button\"\n />\n <Button\n kind=\"ghost\"\n onClick={handleDelete}\n disabled={selectedRanges.length === 0}\n icon={vsTrash}\n tooltip=\"Delete selected items\"\n data-testid=\"delete-item-button\"\n />\n </div>\n </div>\n </div>\n );\n}\n\nexport default EditableItemList;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.css?inline' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss?inline' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -50,6 +50,7 @@ export { default as SocketedButton } from './SocketedButton';
|
|
|
50
50
|
export * from './SpectrumUtils';
|
|
51
51
|
export * from './TableViewEmptyState';
|
|
52
52
|
export * from './TextWithTooltip';
|
|
53
|
+
export * from './theme';
|
|
53
54
|
export { default as ThemeExport } from './ThemeExport';
|
|
54
55
|
export { default as TimeInput } from './TimeInput';
|
|
55
56
|
export { default as TimeSlider } from './TimeSlider';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -49,6 +49,7 @@ export { default as SocketedButton } from "./SocketedButton.js";
|
|
|
49
49
|
export * from "./SpectrumUtils.js";
|
|
50
50
|
export * from "./TableViewEmptyState.js";
|
|
51
51
|
export * from "./TextWithTooltip.js";
|
|
52
|
+
export * from "./theme/index.js";
|
|
52
53
|
export { default as ThemeExport } from "./ThemeExport.js";
|
|
53
54
|
export { default as TimeInput } from "./TimeInput.js";
|
|
54
55
|
export { default as TimeSlider } from "./TimeSlider.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CopyButton","CustomTimeSelect","DateTimeInput","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","RandomAreaPlotAnimation","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch","ValidateLabelInput"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport * from './actions';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport * from './BulkActionBar';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CopyButton } from './CopyButton';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DateTimeInput } from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport * from './dialogs';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './MaskedInputUtils';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nexport * from './SearchableCombobox';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport * from './SpectrumUtils';\nexport * from './TableViewEmptyState';\nexport * from './TextWithTooltip';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\nexport { default as ValidateLabelInput } from './ValidateLabelInput';\n"],"mappings":";SAESA,OAAO,IAAIC,iBAAiB;AAAA,SAC5BD,OAAO,IAAIE,kBAAkB;AAAA,SAC7BF,OAAO,IAAIG,UAAU;AAAA,SACrBH,OAAO,IAAII,MAAM;AAAA,SACjBJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,SAAS;AAAA;AAAA,SAEpBN,OAAO,IAAIO,QAAQ;AAAA;AAAA,SAEnBP,OAAO,IAAIQ,QAAQ;AAAA,SACnBR,OAAO,IAAIS,QAAQ;AAAA,SACnBT,OAAO,IAAIU,QAAQ;AAAA,SACnBV,OAAO,IAAIW,UAAU;AAAA,SACrBX,OAAO,IAAIY,gBAAgB;AAAA,SAC3BZ,OAAO,IAAIa,aAAa;AAAA,SACxBb,OAAO,IAAIc,SAAS;AAAA,SACpBd,OAAO,IAAIe,oBAAoB;AAAA;AAAA,SAE/Bf,OAAO,IAAIgB,iBAAiB;AAAA;AAAA,SAE5BhB,OAAO,IAAIiB,SAAS;AAAA,SACpBjB,OAAO,IAAIkB,gBAAgB;AAAA,SAC3BlB,OAAO,IAAImB,wBAAwB;AAAA;AAAA;AAAA,SAGnCnB,OAAO,IAAIoB,YAAY;AAAA,SACvBpB,OAAO,IAAIqB,cAAc;AAAA,SACzBrB,OAAO,IAAIsB,cAAc;AAAA,SACzBtB,OAAO,IAAIuB,YAAY;AAAA;AAAA,SAEvBvB,OAAO,IAAIwB,WAAW;AAAA;AAAA;AAAA;AAAA,SAItBxB,OAAO,IAAIyB,MAAM;AAAA;AAAA;AAAA,SAGjBzB,OAAO,IAAI0B,UAAU;AAAA,SACrB1B,OAAO,IAAI2B,SAAS;AAAA,SACpB3B,OAAO,IAAI4B,uBAAuB;AAAA;AAAA,SAElC5B,OAAO,IAAI6B,MAAM;AAAA,SACjB7B,OAAO,IAAI8B,WAAW;AAAA,SACtB9B,OAAO,IAAI+B,eAAe;AAAA;AAAA;AAAA,SAG1B/B,OAAO,IAAIgC,cAAc;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CopyButton","CustomTimeSelect","DateTimeInput","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","RandomAreaPlotAnimation","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch","ValidateLabelInput"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport * from './actions';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport * from './BulkActionBar';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CopyButton } from './CopyButton';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DateTimeInput } from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport * from './dialogs';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './MaskedInputUtils';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nexport * from './SearchableCombobox';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport * from './SpectrumUtils';\nexport * from './TableViewEmptyState';\nexport * from './TextWithTooltip';\nexport * from './theme';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\nexport { default as ValidateLabelInput } from './ValidateLabelInput';\n"],"mappings":";SAESA,OAAO,IAAIC,iBAAiB;AAAA,SAC5BD,OAAO,IAAIE,kBAAkB;AAAA,SAC7BF,OAAO,IAAIG,UAAU;AAAA,SACrBH,OAAO,IAAII,MAAM;AAAA,SACjBJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,SAAS;AAAA;AAAA,SAEpBN,OAAO,IAAIO,QAAQ;AAAA;AAAA,SAEnBP,OAAO,IAAIQ,QAAQ;AAAA,SACnBR,OAAO,IAAIS,QAAQ;AAAA,SACnBT,OAAO,IAAIU,QAAQ;AAAA,SACnBV,OAAO,IAAIW,UAAU;AAAA,SACrBX,OAAO,IAAIY,gBAAgB;AAAA,SAC3BZ,OAAO,IAAIa,aAAa;AAAA,SACxBb,OAAO,IAAIc,SAAS;AAAA,SACpBd,OAAO,IAAIe,oBAAoB;AAAA;AAAA,SAE/Bf,OAAO,IAAIgB,iBAAiB;AAAA;AAAA,SAE5BhB,OAAO,IAAIiB,SAAS;AAAA,SACpBjB,OAAO,IAAIkB,gBAAgB;AAAA,SAC3BlB,OAAO,IAAImB,wBAAwB;AAAA;AAAA;AAAA,SAGnCnB,OAAO,IAAIoB,YAAY;AAAA,SACvBpB,OAAO,IAAIqB,cAAc;AAAA,SACzBrB,OAAO,IAAIsB,cAAc;AAAA,SACzBtB,OAAO,IAAIuB,YAAY;AAAA;AAAA,SAEvBvB,OAAO,IAAIwB,WAAW;AAAA;AAAA;AAAA;AAAA,SAItBxB,OAAO,IAAIyB,MAAM;AAAA;AAAA;AAAA,SAGjBzB,OAAO,IAAI0B,UAAU;AAAA,SACrB1B,OAAO,IAAI2B,SAAS;AAAA,SACpB3B,OAAO,IAAI4B,uBAAuB;AAAA;AAAA,SAElC5B,OAAO,IAAI6B,MAAM;AAAA,SACjB7B,OAAO,IAAI8B,WAAW;AAAA,SACtB9B,OAAO,IAAI+B,eAAe;AAAA;AAAA;AAAA,SAG1B/B,OAAO,IAAIgC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,SAKzBhC,OAAO,IAAIiC,WAAW;AAAA,SACtBjC,OAAO,IAAIkC,SAAS;AAAA,SACpBlC,OAAO,IAAImC,UAAU;AAAA,SACrBnC,OAAO,IAAIoC,iBAAiB;AAAA,SAC5BpC,OAAO,IAAIqC,QAAQ;AAAA,SACnBrC,OAAO,IAAIsC,kBAAkB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type BaseThemeType = 'dark' | 'light';
|
|
2
|
+
export type BaseThemeKey = `default-${BaseThemeType}`;
|
|
3
|
+
export type ThemePreloadStyleContent = `:root{${string}`;
|
|
4
|
+
export declare const DEFAULT_DARK_THEME_KEY = "default-dark";
|
|
5
|
+
export declare const DEFAULT_LIGHT_THEME_KEY = "default-light";
|
|
6
|
+
export declare const DEFAULT_PRELOAD_DATA_VARIABLES: {
|
|
7
|
+
'--dh-accent-color': string;
|
|
8
|
+
'--dh-background-color': string;
|
|
9
|
+
};
|
|
10
|
+
export declare const THEME_CACHE_LOCAL_STORAGE_KEY = "deephaven.themeCache";
|
|
11
|
+
export interface ThemePreloadData {
|
|
12
|
+
themeKey: string;
|
|
13
|
+
preloadStyleContent?: ThemePreloadStyleContent;
|
|
14
|
+
}
|
|
15
|
+
export interface ThemeData {
|
|
16
|
+
baseThemeKey?: BaseThemeKey;
|
|
17
|
+
themeKey: string;
|
|
18
|
+
name: string;
|
|
19
|
+
styleContent: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ThemeRegistrationData {
|
|
22
|
+
base: ThemeData[];
|
|
23
|
+
custom: ThemeData[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ThemeModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeModel.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeModel.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAC7C,MAAM,MAAM,YAAY,GAAG,WAAW,aAAa,EAAE,CAAC;AACtD,MAAM,MAAM,wBAAwB,GAAG,SAAS,MAAM,EAAE,CAAC;AAEzD,eAAO,MAAM,sBAAsB,iBAAwC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,kBAAyC,CAAC;AAG9E,eAAO,MAAM,8BAA8B;;;CAGC,CAAC;AAE7C,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;CAChD;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export var DEFAULT_DARK_THEME_KEY = 'default-dark';
|
|
2
|
+
export var DEFAULT_LIGHT_THEME_KEY = 'default-light';
|
|
3
|
+
|
|
4
|
+
// Css properties that are used in preload data with default values.
|
|
5
|
+
export var DEFAULT_PRELOAD_DATA_VARIABLES = {
|
|
6
|
+
'--dh-accent-color': '#4c7dee',
|
|
7
|
+
// dark theme --dh-color-blue-700
|
|
8
|
+
'--dh-background-color': '#1a171a' // dark theme --dh-color-gray-50
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export var THEME_CACHE_LOCAL_STORAGE_KEY = 'deephaven.themeCache';
|
|
12
|
+
//# sourceMappingURL=ThemeModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeModel.js","names":["DEFAULT_DARK_THEME_KEY","DEFAULT_LIGHT_THEME_KEY","DEFAULT_PRELOAD_DATA_VARIABLES","THEME_CACHE_LOCAL_STORAGE_KEY"],"sources":["../../src/theme/ThemeModel.ts"],"sourcesContent":["export type BaseThemeType = 'dark' | 'light';\nexport type BaseThemeKey = `default-${BaseThemeType}`;\nexport type ThemePreloadStyleContent = `:root{${string}`;\n\nexport const DEFAULT_DARK_THEME_KEY = 'default-dark' satisfies BaseThemeKey;\nexport const DEFAULT_LIGHT_THEME_KEY = 'default-light' satisfies BaseThemeKey;\n\n// Css properties that are used in preload data with default values.\nexport const DEFAULT_PRELOAD_DATA_VARIABLES = {\n '--dh-accent-color': '#4c7dee', // dark theme --dh-color-blue-700\n '--dh-background-color': '#1a171a', // dark theme --dh-color-gray-50\n} satisfies Record<`--dh-${string}`, string>;\n\nexport const THEME_CACHE_LOCAL_STORAGE_KEY = 'deephaven.themeCache';\n\nexport interface ThemePreloadData {\n themeKey: string;\n preloadStyleContent?: ThemePreloadStyleContent;\n}\n\nexport interface ThemeData {\n baseThemeKey?: BaseThemeKey;\n themeKey: string;\n name: string;\n styleContent: string;\n}\n\nexport interface ThemeRegistrationData {\n base: ThemeData[];\n custom: ThemeData[];\n}\n"],"mappings":"AAIA,OAAO,IAAMA,sBAAsB,GAAG,cAAqC;AAC3E,OAAO,IAAMC,uBAAuB,GAAG,eAAsC;;AAE7E;AACA,OAAO,IAAMC,8BAA8B,GAAG;EAC5C,mBAAmB,EAAE,SAAS;EAAE;EAChC,uBAAuB,EAAE,SAAS,CAAE;AACtC,CAA4C;;AAE5C,OAAO,IAAMC,6BAA6B,GAAG,sBAAsB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ThemeData } from './ThemeModel';
|
|
3
|
+
export interface ThemeContextValue {
|
|
4
|
+
activeThemes: ThemeData[] | null;
|
|
5
|
+
selectedThemeKey: string;
|
|
6
|
+
setSelectedThemeKey: (themeKey: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const ThemeContext: import("react").Context<ThemeContextValue | null>;
|
|
9
|
+
export interface ThemeProviderProps {
|
|
10
|
+
themes: ThemeData[] | null;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export declare function ThemeProvider({ themes, children, }: ThemeProviderProps): JSX.Element;
|
|
14
|
+
export default ThemeProvider;
|
|
15
|
+
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAgC,MAAM,OAAO,CAAC;AAE/E,OAAO,EAA0B,SAAS,EAAE,MAAM,cAAc,CAAC;AASjE,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAID,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,QAAQ,GACT,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAoDlC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createContext, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import Log from '@deephaven/log';
|
|
3
|
+
import { DEFAULT_DARK_THEME_KEY } from "./ThemeModel.js";
|
|
4
|
+
import { calculatePreloadStyleContent, getActiveThemes, getDefaultBaseThemes, getThemePreloadData, setThemePreloadData } from "./ThemeUtils.js";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
var log = Log.module('ThemeProvider');
|
|
8
|
+
export var ThemeContext = /*#__PURE__*/createContext(null);
|
|
9
|
+
export function ThemeProvider(_ref) {
|
|
10
|
+
var {
|
|
11
|
+
themes,
|
|
12
|
+
children
|
|
13
|
+
} = _ref;
|
|
14
|
+
var baseThemes = useMemo(() => getDefaultBaseThemes(), []);
|
|
15
|
+
var [selectedThemeKey, setSelectedThemeKey] = useState(() => {
|
|
16
|
+
var _getThemePreloadData$, _getThemePreloadData;
|
|
17
|
+
return (_getThemePreloadData$ = (_getThemePreloadData = getThemePreloadData()) === null || _getThemePreloadData === void 0 ? void 0 : _getThemePreloadData.themeKey) !== null && _getThemePreloadData$ !== void 0 ? _getThemePreloadData$ : DEFAULT_DARK_THEME_KEY;
|
|
18
|
+
});
|
|
19
|
+
var activeThemes = useMemo(() =>
|
|
20
|
+
// Themes remain inactive until a non-null themes value is provided. This
|
|
21
|
+
// avoids the default base theme overriding the preload if we are waiting
|
|
22
|
+
// on additional themes to be available.
|
|
23
|
+
themes == null ? null : getActiveThemes(selectedThemeKey, {
|
|
24
|
+
base: baseThemes,
|
|
25
|
+
custom: themes !== null && themes !== void 0 ? themes : []
|
|
26
|
+
}), [baseThemes, selectedThemeKey, themes]);
|
|
27
|
+
useEffect(function updateThemePreloadData() {
|
|
28
|
+
log.debug('Active themes:', activeThemes === null || activeThemes === void 0 ? void 0 : activeThemes.map(theme => theme.themeKey));
|
|
29
|
+
setThemePreloadData({
|
|
30
|
+
themeKey: selectedThemeKey,
|
|
31
|
+
preloadStyleContent: calculatePreloadStyleContent()
|
|
32
|
+
});
|
|
33
|
+
}, [activeThemes, selectedThemeKey]);
|
|
34
|
+
var value = useMemo(() => ({
|
|
35
|
+
activeThemes,
|
|
36
|
+
selectedThemeKey,
|
|
37
|
+
setSelectedThemeKey
|
|
38
|
+
}), [activeThemes, selectedThemeKey]);
|
|
39
|
+
return /*#__PURE__*/_jsxs(ThemeContext.Provider, {
|
|
40
|
+
value: value,
|
|
41
|
+
children: [activeThemes === null || activeThemes === void 0 ? void 0 : activeThemes.map(theme => /*#__PURE__*/_jsx("style", {
|
|
42
|
+
"data-theme-key": theme.themeKey,
|
|
43
|
+
children: theme.styleContent
|
|
44
|
+
}, theme.themeKey)), children]
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export default ThemeProvider;
|
|
48
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","names":["createContext","useEffect","useMemo","useState","Log","DEFAULT_DARK_THEME_KEY","calculatePreloadStyleContent","getActiveThemes","getDefaultBaseThemes","getThemePreloadData","setThemePreloadData","log","module","ThemeContext","ThemeProvider","themes","children","baseThemes","selectedThemeKey","setSelectedThemeKey","themeKey","activeThemes","base","custom","updateThemePreloadData","debug","map","theme","preloadStyleContent","value","styleContent"],"sources":["../../src/theme/ThemeProvider.tsx"],"sourcesContent":["import { createContext, ReactNode, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { DEFAULT_DARK_THEME_KEY, ThemeData } from './ThemeModel';\nimport {\n calculatePreloadStyleContent,\n getActiveThemes,\n getDefaultBaseThemes,\n getThemePreloadData,\n setThemePreloadData,\n} from './ThemeUtils';\n\nexport interface ThemeContextValue {\n activeThemes: ThemeData[] | null;\n selectedThemeKey: string;\n setSelectedThemeKey: (themeKey: string) => void;\n}\n\nconst log = Log.module('ThemeProvider');\n\nexport const ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport interface ThemeProviderProps {\n themes: ThemeData[] | null;\n children: ReactNode;\n}\n\nexport function ThemeProvider({\n themes,\n children,\n}: ThemeProviderProps): JSX.Element {\n const baseThemes = useMemo(() => getDefaultBaseThemes(), []);\n\n const [selectedThemeKey, setSelectedThemeKey] = useState<string>(\n () => getThemePreloadData()?.themeKey ?? DEFAULT_DARK_THEME_KEY\n );\n\n const activeThemes = useMemo(\n () =>\n // Themes remain inactive until a non-null themes value is provided. This\n // avoids the default base theme overriding the preload if we are waiting\n // on additional themes to be available.\n themes == null\n ? null\n : getActiveThemes(selectedThemeKey, {\n base: baseThemes,\n custom: themes ?? [],\n }),\n [baseThemes, selectedThemeKey, themes]\n );\n\n useEffect(\n function updateThemePreloadData() {\n log.debug('Active themes:', activeThemes?.map(theme => theme.themeKey));\n\n setThemePreloadData({\n themeKey: selectedThemeKey,\n preloadStyleContent: calculatePreloadStyleContent(),\n });\n },\n [activeThemes, selectedThemeKey]\n );\n\n const value = useMemo(\n () => ({\n activeThemes,\n selectedThemeKey,\n setSelectedThemeKey,\n }),\n [activeThemes, selectedThemeKey]\n );\n\n return (\n <ThemeContext.Provider value={value}>\n {activeThemes?.map(theme => (\n <style data-theme-key={theme.themeKey} key={theme.themeKey}>\n {theme.styleContent}\n </style>\n ))}\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport default ThemeProvider;\n"],"mappings":"AAAA,SAASA,aAAa,EAAaC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAC9E,OAAOC,GAAG,MAAM,gBAAgB;AAAC,SACxBC,sBAAsB;AAAA,SAE7BC,4BAA4B,EAC5BC,eAAe,EACfC,oBAAoB,EACpBC,mBAAmB,EACnBC,mBAAmB;AAAA;AAAA;AASrB,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,eAAe,CAAC;AAEvC,OAAO,IAAMC,YAAY,gBAAGb,aAAa,CAA2B,IAAI,CAAC;AAOzE,OAAO,SAASc,aAAa,OAGO;EAAA,IAHN;IAC5BC,MAAM;IACNC;EACkB,CAAC;EACnB,IAAMC,UAAU,GAAGf,OAAO,CAAC,MAAMM,oBAAoB,EAAE,EAAE,EAAE,CAAC;EAE5D,IAAM,CAACU,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGhB,QAAQ,CACtD;IAAA;IAAA,wDAAMM,mBAAmB,EAAE,yDAArB,qBAAuBW,QAAQ,yEAAIf,sBAAsB;EAAA,EAChE;EAED,IAAMgB,YAAY,GAAGnB,OAAO,CAC1B;EACE;EACA;EACA;EACAa,MAAM,IAAI,IAAI,GACV,IAAI,GACJR,eAAe,CAACW,gBAAgB,EAAE;IAChCI,IAAI,EAAEL,UAAU;IAChBM,MAAM,EAAER,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI;EACpB,CAAC,CAAC,EACR,CAACE,UAAU,EAAEC,gBAAgB,EAAEH,MAAM,CAAC,CACvC;EAEDd,SAAS,CACP,SAASuB,sBAAsB,GAAG;IAChCb,GAAG,CAACc,KAAK,CAAC,gBAAgB,EAAEJ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEK,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACP,QAAQ,CAAC,CAAC;IAEvEV,mBAAmB,CAAC;MAClBU,QAAQ,EAAEF,gBAAgB;MAC1BU,mBAAmB,EAAEtB,4BAA4B;IACnD,CAAC,CAAC;EACJ,CAAC,EACD,CAACe,YAAY,EAAEH,gBAAgB,CAAC,CACjC;EAED,IAAMW,KAAK,GAAG3B,OAAO,CACnB,OAAO;IACLmB,YAAY;IACZH,gBAAgB;IAChBC;EACF,CAAC,CAAC,EACF,CAACE,YAAY,EAAEH,gBAAgB,CAAC,CACjC;EAED,oBACE,MAAC,YAAY,CAAC,QAAQ;IAAC,KAAK,EAAEW,KAAM;IAAA,WACjCR,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEK,GAAG,CAACC,KAAK,iBACtB;MAAO,kBAAgBA,KAAK,CAACP,QAAS;MAAA,UACnCO,KAAK,CAACG;IAAY,GADuBH,KAAK,CAACP,QAAQ,CAG3D,CAAC,EACDJ,QAAQ;EAAA,EACa;AAE5B;AAEA,eAAeF,aAAa"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ThemeData, ThemePreloadData, ThemePreloadStyleContent, ThemeRegistrationData } from './ThemeModel';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a string containing preload style content for the current theme.
|
|
4
|
+
* This resolves the current values of a few CSS variables that can be used
|
|
5
|
+
* to style the page before the theme is loaded on next page load.
|
|
6
|
+
*/
|
|
7
|
+
export declare function calculatePreloadStyleContent(): ThemePreloadStyleContent;
|
|
8
|
+
/**
|
|
9
|
+
* Returns an array of the active themes. The first item will always be one
|
|
10
|
+
* of the base themes. Optionally, the second item will be a custom theme.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getActiveThemes(themeKey: string, themeRegistration: ThemeRegistrationData): [ThemeData] | [ThemeData, ThemeData];
|
|
13
|
+
/**
|
|
14
|
+
* Get default base theme data.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getDefaultBaseThemes(): ThemeData[];
|
|
17
|
+
/**
|
|
18
|
+
* Get the preload data from local storage or null if it does not exist or is
|
|
19
|
+
* invalid
|
|
20
|
+
*/
|
|
21
|
+
export declare function getThemePreloadData(): ThemePreloadData | null;
|
|
22
|
+
/**
|
|
23
|
+
* Store theme preload data in local storage.
|
|
24
|
+
* @param preloadData The preload data to set
|
|
25
|
+
*/
|
|
26
|
+
export declare function setThemePreloadData(preloadData: ThemePreloadData): void;
|
|
27
|
+
/**
|
|
28
|
+
* Derive unique theme key from plugin root path and theme name.
|
|
29
|
+
* @param pluginName The root path of the plugin
|
|
30
|
+
* @param themeName The name of the theme
|
|
31
|
+
*/
|
|
32
|
+
export declare function getThemeKey(pluginName: string, themeName: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Preload minimal theme variables from the cache.
|
|
35
|
+
*/
|
|
36
|
+
export declare function preloadTheme(): void;
|
|
37
|
+
//# sourceMappingURL=ThemeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeUtils.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeUtils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAItB;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,wBAAwB,CAWvE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,qBAAqB,GACvC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CA+BtC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,SAAS,EAAE,CAalD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAU7D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAKvE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAUnC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import Log from '@deephaven/log';
|
|
2
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
3
|
+
// Note that ?inline imports are natively supported by Vite, but consumers of
|
|
4
|
+
// @deephaven/components using Webpack will need to add a rule to their module
|
|
5
|
+
// config.
|
|
6
|
+
// e.g.
|
|
7
|
+
// module: {
|
|
8
|
+
// rules: [
|
|
9
|
+
// {
|
|
10
|
+
// resourceQuery: /inline/,
|
|
11
|
+
// type: 'asset/source',
|
|
12
|
+
// },
|
|
13
|
+
// ],
|
|
14
|
+
// },
|
|
15
|
+
import darkTheme from "./theme_default_dark.css?inline";
|
|
16
|
+
import lightTheme from "./theme_default_light.css?inline";
|
|
17
|
+
import { DEFAULT_DARK_THEME_KEY, DEFAULT_LIGHT_THEME_KEY, DEFAULT_PRELOAD_DATA_VARIABLES, THEME_CACHE_LOCAL_STORAGE_KEY } from "./ThemeModel.js";
|
|
18
|
+
var log = Log.module('ThemeUtils');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates a string containing preload style content for the current theme.
|
|
22
|
+
* This resolves the current values of a few CSS variables that can be used
|
|
23
|
+
* to style the page before the theme is loaded on next page load.
|
|
24
|
+
*/
|
|
25
|
+
export function calculatePreloadStyleContent() {
|
|
26
|
+
var bodyStyle = getComputedStyle(document.body);
|
|
27
|
+
|
|
28
|
+
// Calculate the current preload variables. If the variable is not set, use
|
|
29
|
+
// the default value.
|
|
30
|
+
var pairs = Object.entries(DEFAULT_PRELOAD_DATA_VARIABLES).map(_ref => {
|
|
31
|
+
var [key, defaultValue] = _ref;
|
|
32
|
+
return "".concat(key, ":").concat(bodyStyle.getPropertyValue(key) || defaultValue);
|
|
33
|
+
});
|
|
34
|
+
return ":root{".concat(pairs.join(';'), "}");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Returns an array of the active themes. The first item will always be one
|
|
39
|
+
* of the base themes. Optionally, the second item will be a custom theme.
|
|
40
|
+
*/
|
|
41
|
+
export function getActiveThemes(themeKey, themeRegistration) {
|
|
42
|
+
var _custom$baseThemeKey;
|
|
43
|
+
var custom = themeRegistration.custom.find(theme => theme.themeKey === themeKey);
|
|
44
|
+
var baseThemeKey = (_custom$baseThemeKey = custom === null || custom === void 0 ? void 0 : custom.baseThemeKey) !== null && _custom$baseThemeKey !== void 0 ? _custom$baseThemeKey : themeKey;
|
|
45
|
+
var base = themeRegistration.base.find(theme => theme.themeKey === baseThemeKey);
|
|
46
|
+
if (base == null) {
|
|
47
|
+
log.error("No registered base theme found for theme key: '".concat(baseThemeKey, "'"), 'Registered:', themeRegistration.base.map(theme => theme.themeKey), themeRegistration.custom.map(theme => theme.themeKey));
|
|
48
|
+
base = themeRegistration.base.find(theme => theme.themeKey === DEFAULT_DARK_THEME_KEY);
|
|
49
|
+
assertNotNull(base, "Default base theme '".concat(DEFAULT_DARK_THEME_KEY, "' is not registered"));
|
|
50
|
+
}
|
|
51
|
+
log.debug('Applied themes:', base.themeKey, custom === null || custom === void 0 ? void 0 : custom.themeKey);
|
|
52
|
+
return custom == null ? [base] : [base, custom];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get default base theme data.
|
|
57
|
+
*/
|
|
58
|
+
export function getDefaultBaseThemes() {
|
|
59
|
+
return [{
|
|
60
|
+
name: 'Default Dark',
|
|
61
|
+
themeKey: DEFAULT_DARK_THEME_KEY,
|
|
62
|
+
styleContent: darkTheme
|
|
63
|
+
}, {
|
|
64
|
+
name: 'Default Light',
|
|
65
|
+
themeKey: DEFAULT_LIGHT_THEME_KEY,
|
|
66
|
+
styleContent: lightTheme
|
|
67
|
+
}];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Get the preload data from local storage or null if it does not exist or is
|
|
72
|
+
* invalid
|
|
73
|
+
*/
|
|
74
|
+
export function getThemePreloadData() {
|
|
75
|
+
var data = localStorage.getItem(THEME_CACHE_LOCAL_STORAGE_KEY);
|
|
76
|
+
try {
|
|
77
|
+
return data == null ? null : JSON.parse(data);
|
|
78
|
+
} catch (_unused) {
|
|
79
|
+
// ignore
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Store theme preload data in local storage.
|
|
86
|
+
* @param preloadData The preload data to set
|
|
87
|
+
*/
|
|
88
|
+
export function setThemePreloadData(preloadData) {
|
|
89
|
+
localStorage.setItem(THEME_CACHE_LOCAL_STORAGE_KEY, JSON.stringify(preloadData));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Derive unique theme key from plugin root path and theme name.
|
|
94
|
+
* @param pluginName The root path of the plugin
|
|
95
|
+
* @param themeName The name of the theme
|
|
96
|
+
*/
|
|
97
|
+
export function getThemeKey(pluginName, themeName) {
|
|
98
|
+
return "".concat(pluginName, "_").concat(themeName);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Preload minimal theme variables from the cache.
|
|
103
|
+
*/
|
|
104
|
+
export function preloadTheme() {
|
|
105
|
+
var _getThemePreloadData$, _getThemePreloadData;
|
|
106
|
+
var preloadStyleContent = (_getThemePreloadData$ = (_getThemePreloadData = getThemePreloadData()) === null || _getThemePreloadData === void 0 ? void 0 : _getThemePreloadData.preloadStyleContent) !== null && _getThemePreloadData$ !== void 0 ? _getThemePreloadData$ : calculatePreloadStyleContent();
|
|
107
|
+
log.debug('Preloading theme content:', "'".concat(preloadStyleContent, "'"));
|
|
108
|
+
var style = document.createElement('style');
|
|
109
|
+
style.innerHTML = preloadStyleContent;
|
|
110
|
+
document.head.appendChild(style);
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=ThemeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeUtils.js","names":["Log","assertNotNull","darkTheme","lightTheme","DEFAULT_DARK_THEME_KEY","DEFAULT_LIGHT_THEME_KEY","DEFAULT_PRELOAD_DATA_VARIABLES","THEME_CACHE_LOCAL_STORAGE_KEY","log","module","calculatePreloadStyleContent","bodyStyle","getComputedStyle","document","body","pairs","Object","entries","map","key","defaultValue","getPropertyValue","join","getActiveThemes","themeKey","themeRegistration","custom","find","theme","baseThemeKey","base","error","debug","getDefaultBaseThemes","name","styleContent","getThemePreloadData","data","localStorage","getItem","JSON","parse","setThemePreloadData","preloadData","setItem","stringify","getThemeKey","pluginName","themeName","preloadTheme","preloadStyleContent","style","createElement","innerHTML","head","appendChild"],"sources":["../../src/theme/ThemeUtils.ts"],"sourcesContent":["import Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\n// Note that ?inline imports are natively supported by Vite, but consumers of\n// @deephaven/components using Webpack will need to add a rule to their module\n// config.\n// e.g.\n// module: {\n// rules: [\n// {\n// resourceQuery: /inline/,\n// type: 'asset/source',\n// },\n// ],\n// },\nimport darkTheme from './theme_default_dark.css?inline';\nimport lightTheme from './theme_default_light.css?inline';\nimport {\n DEFAULT_DARK_THEME_KEY,\n DEFAULT_LIGHT_THEME_KEY,\n DEFAULT_PRELOAD_DATA_VARIABLES,\n ThemeData,\n ThemePreloadData,\n ThemePreloadStyleContent,\n ThemeRegistrationData,\n THEME_CACHE_LOCAL_STORAGE_KEY,\n} from './ThemeModel';\n\nconst log = Log.module('ThemeUtils');\n\n/**\n * Creates a string containing preload style content for the current theme.\n * This resolves the current values of a few CSS variables that can be used\n * to style the page before the theme is loaded on next page load.\n */\nexport function calculatePreloadStyleContent(): ThemePreloadStyleContent {\n const bodyStyle = getComputedStyle(document.body);\n\n // Calculate the current preload variables. If the variable is not set, use\n // the default value.\n const pairs = Object.entries(DEFAULT_PRELOAD_DATA_VARIABLES).map(\n ([key, defaultValue]) =>\n `${key}:${bodyStyle.getPropertyValue(key) || defaultValue}`\n );\n\n return `:root{${pairs.join(';')}}`;\n}\n\n/**\n * Returns an array of the active themes. The first item will always be one\n * of the base themes. Optionally, the second item will be a custom theme.\n */\nexport function getActiveThemes(\n themeKey: string,\n themeRegistration: ThemeRegistrationData\n): [ThemeData] | [ThemeData, ThemeData] {\n const custom = themeRegistration.custom.find(\n theme => theme.themeKey === themeKey\n );\n\n const baseThemeKey = custom?.baseThemeKey ?? themeKey;\n\n let base = themeRegistration.base.find(\n theme => theme.themeKey === baseThemeKey\n );\n\n if (base == null) {\n log.error(\n `No registered base theme found for theme key: '${baseThemeKey}'`,\n 'Registered:',\n themeRegistration.base.map(theme => theme.themeKey),\n themeRegistration.custom.map(theme => theme.themeKey)\n );\n base = themeRegistration.base.find(\n theme => theme.themeKey === DEFAULT_DARK_THEME_KEY\n );\n\n assertNotNull(\n base,\n `Default base theme '${DEFAULT_DARK_THEME_KEY}' is not registered`\n );\n }\n\n log.debug('Applied themes:', base.themeKey, custom?.themeKey);\n\n return custom == null ? [base] : [base, custom];\n}\n\n/**\n * Get default base theme data.\n */\nexport function getDefaultBaseThemes(): ThemeData[] {\n return [\n {\n name: 'Default Dark',\n themeKey: DEFAULT_DARK_THEME_KEY,\n styleContent: darkTheme,\n },\n {\n name: 'Default Light',\n themeKey: DEFAULT_LIGHT_THEME_KEY,\n styleContent: lightTheme,\n },\n ];\n}\n\n/**\n * Get the preload data from local storage or null if it does not exist or is\n * invalid\n */\nexport function getThemePreloadData(): ThemePreloadData | null {\n const data = localStorage.getItem(THEME_CACHE_LOCAL_STORAGE_KEY);\n\n try {\n return data == null ? null : JSON.parse(data);\n } catch {\n // ignore\n }\n\n return null;\n}\n\n/**\n * Store theme preload data in local storage.\n * @param preloadData The preload data to set\n */\nexport function setThemePreloadData(preloadData: ThemePreloadData): void {\n localStorage.setItem(\n THEME_CACHE_LOCAL_STORAGE_KEY,\n JSON.stringify(preloadData)\n );\n}\n\n/**\n * Derive unique theme key from plugin root path and theme name.\n * @param pluginName The root path of the plugin\n * @param themeName The name of the theme\n */\nexport function getThemeKey(pluginName: string, themeName: string): string {\n return `${pluginName}_${themeName}`;\n}\n\n/**\n * Preload minimal theme variables from the cache.\n */\nexport function preloadTheme(): void {\n const preloadStyleContent =\n getThemePreloadData()?.preloadStyleContent ??\n calculatePreloadStyleContent();\n\n log.debug('Preloading theme content:', `'${preloadStyleContent}'`);\n\n const style = document.createElement('style');\n style.innerHTML = preloadStyleContent;\n document.head.appendChild(style);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/theme/index.ts"],"sourcesContent":["export * from './ThemeModel';\nexport * from './ThemeProvider';\nexport * from './ThemeUtils';\nexport * from './useTheme';\n"],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* Grays */
|
|
3
|
+
--dh-color-gray-900: #fcfcfa;
|
|
4
|
+
--dh-color-gray-800: #f0f0ee;
|
|
5
|
+
--dh-color-gray-700: #c0bfbf;
|
|
6
|
+
--dh-color-gray-600: #929192;
|
|
7
|
+
--dh-color-gray-500: #5b5a5c;
|
|
8
|
+
--dh-color-gray-400: #403e41;
|
|
9
|
+
--dh-color-gray-300: #373438;
|
|
10
|
+
--dh-color-gray-200: #322f33;
|
|
11
|
+
--dh-color-gray-100: #2d2a2e;
|
|
12
|
+
--dh-color-gray-75: #211f22;
|
|
13
|
+
--dh-color-gray-50: #1a171a;
|
|
14
|
+
/* Blues */
|
|
15
|
+
--dh-color-blue-100: #112451;
|
|
16
|
+
--dh-color-blue-200: #16306c;
|
|
17
|
+
--dh-color-blue-300: #1d3d88;
|
|
18
|
+
--dh-color-blue-400: #254ba4;
|
|
19
|
+
--dh-color-blue-500: #2f5bc0;
|
|
20
|
+
--dh-color-blue-600: #3b6bda;
|
|
21
|
+
--dh-color-blue-700: #4c7dee;
|
|
22
|
+
--dh-color-blue-800: #6390fa;
|
|
23
|
+
--dh-color-blue-900: #7ca4ff;
|
|
24
|
+
--dh-color-blue-1000: #97b7ff;
|
|
25
|
+
--dh-color-blue-1100: #afc9ff;
|
|
26
|
+
--dh-color-blue-1200: #c7d9ff;
|
|
27
|
+
--dh-color-blue-1300: #dbe6ff;
|
|
28
|
+
--dh-color-blue-1400: #ecf1ff;
|
|
29
|
+
/* Seafoam */
|
|
30
|
+
--dh-color-seafoam-100: #1f2925;
|
|
31
|
+
--dh-color-seafoam-200: #263630;
|
|
32
|
+
--dh-color-seafoam-300: #2f463e;
|
|
33
|
+
--dh-color-seafoam-400: #37574b;
|
|
34
|
+
--dh-color-seafoam-500: #3e6959;
|
|
35
|
+
--dh-color-seafoam-600: #447b68;
|
|
36
|
+
--dh-color-seafoam-700: #488f78;
|
|
37
|
+
--dh-color-seafoam-800: #4ca387;
|
|
38
|
+
--dh-color-seafoam-900: #4fb797;
|
|
39
|
+
--dh-color-seafoam-1000: #54cba6;
|
|
40
|
+
--dh-color-seafoam-1100: #5edeb7;
|
|
41
|
+
--dh-color-seafoam-1200: #78edc7;
|
|
42
|
+
--dh-color-seafoam-1300: #9ef8d7;
|
|
43
|
+
--dh-color-seafoam-1400: #cbfce8;
|
|
44
|
+
/* Semantic */
|
|
45
|
+
--dh-color-black: var(--dh-color-gray-50);
|
|
46
|
+
--dh-color-white: var(--dh-color-gray-800);
|
|
47
|
+
--dh-accent-color: var(--dh-color-blue-700);
|
|
48
|
+
--dh-background-color: var(--dh-color-black);
|
|
49
|
+
--dh-foreground-color: var(--dh-color-white);
|
|
50
|
+
--dh-grid-background-color: var(--dh-background-color);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*# sourceMappingURL=theme_default_dark.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../src/theme/theme_default_dark.css"],"names":[],"mappings":"AAAA;AACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA","file":"theme_default_dark.css","sourcesContent":[":root {\n /* Grays */\n --dh-color-gray-900: #fcfcfa;\n --dh-color-gray-800: #f0f0ee;\n --dh-color-gray-700: #c0bfbf;\n --dh-color-gray-600: #929192;\n --dh-color-gray-500: #5b5a5c;\n --dh-color-gray-400: #403e41;\n --dh-color-gray-300: #373438;\n --dh-color-gray-200: #322f33;\n --dh-color-gray-100: #2d2a2e;\n --dh-color-gray-75: #211f22;\n --dh-color-gray-50: #1a171a;\n\n /* Blues */\n --dh-color-blue-100: #112451;\n --dh-color-blue-200: #16306c;\n --dh-color-blue-300: #1d3d88;\n --dh-color-blue-400: #254ba4;\n --dh-color-blue-500: #2f5bc0;\n --dh-color-blue-600: #3b6bda;\n --dh-color-blue-700: #4c7dee;\n --dh-color-blue-800: #6390fa;\n --dh-color-blue-900: #7ca4ff;\n --dh-color-blue-1000: #97b7ff;\n --dh-color-blue-1100: #afc9ff;\n --dh-color-blue-1200: #c7d9ff;\n --dh-color-blue-1300: #dbe6ff;\n --dh-color-blue-1400: #ecf1ff;\n\n /* Seafoam */\n --dh-color-seafoam-100: #1f2925;\n --dh-color-seafoam-200: #263630;\n --dh-color-seafoam-300: #2f463e;\n --dh-color-seafoam-400: #37574b;\n --dh-color-seafoam-500: #3e6959;\n --dh-color-seafoam-600: #447b68;\n --dh-color-seafoam-700: #488f78;\n --dh-color-seafoam-800: #4ca387;\n --dh-color-seafoam-900: #4fb797;\n --dh-color-seafoam-1000: #54cba6;\n --dh-color-seafoam-1100: #5edeb7;\n --dh-color-seafoam-1200: #78edc7;\n --dh-color-seafoam-1300: #9ef8d7;\n --dh-color-seafoam-1400: #cbfce8;\n\n /* Semantic */\n --dh-color-black: var(--dh-color-gray-50);\n --dh-color-white: var(--dh-color-gray-800);\n --dh-accent-color: var(--dh-color-blue-700);\n --dh-background-color: var(--dh-color-black);\n --dh-foreground-color: var(--dh-color-white);\n --dh-grid-background-color: var(--dh-background-color);\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* Grays */
|
|
3
|
+
--dh-color-gray-900: #000;
|
|
4
|
+
--dh-color-gray-800: #222;
|
|
5
|
+
--dh-color-gray-700: #464646;
|
|
6
|
+
--dh-color-gray-600: #6d6d6d;
|
|
7
|
+
--dh-color-gray-500: #909090;
|
|
8
|
+
--dh-color-gray-400: #b1b1b1;
|
|
9
|
+
--dh-color-gray-300: #d5d5d5;
|
|
10
|
+
--dh-color-gray-200: #e6e6e6;
|
|
11
|
+
--dh-color-gray-100: #f8f8f8;
|
|
12
|
+
--dh-color-gray-75: #fdfdfd;
|
|
13
|
+
--dh-color-gray-50: #fff;
|
|
14
|
+
/* Blues */
|
|
15
|
+
--dh-color-blue-100: #112451;
|
|
16
|
+
--dh-color-blue-200: #16306c;
|
|
17
|
+
--dh-color-blue-300: #1d3d88;
|
|
18
|
+
--dh-color-blue-400: #254ba4;
|
|
19
|
+
--dh-color-blue-500: #2f5bc0;
|
|
20
|
+
--dh-color-blue-600: #3b6bda;
|
|
21
|
+
--dh-color-blue-700: #4c7dee;
|
|
22
|
+
--dh-color-blue-800: #6390fa;
|
|
23
|
+
--dh-color-blue-900: #7ca4ff;
|
|
24
|
+
--dh-color-blue-1000: #97b7ff;
|
|
25
|
+
--dh-color-blue-1100: #afc9ff;
|
|
26
|
+
--dh-color-blue-1200: #c7d9ff;
|
|
27
|
+
--dh-color-blue-1300: #dbe6ff;
|
|
28
|
+
--dh-color-blue-1400: #ecf1ff;
|
|
29
|
+
/* Seafoam */
|
|
30
|
+
--dh-color-seafoam-100: #1f2925;
|
|
31
|
+
--dh-color-seafoam-200: #263630;
|
|
32
|
+
--dh-color-seafoam-300: #2f463e;
|
|
33
|
+
--dh-color-seafoam-400: #37574b;
|
|
34
|
+
--dh-color-seafoam-500: #3e6959;
|
|
35
|
+
--dh-color-seafoam-600: #447b68;
|
|
36
|
+
--dh-color-seafoam-700: #488f78;
|
|
37
|
+
--dh-color-seafoam-800: #4ca387;
|
|
38
|
+
--dh-color-seafoam-900: #4fb797;
|
|
39
|
+
--dh-color-seafoam-1000: #54cba6;
|
|
40
|
+
--dh-color-seafoam-1100: #5edeb7;
|
|
41
|
+
--dh-color-seafoam-1200: #78edc7;
|
|
42
|
+
--dh-color-seafoam-1300: #9ef8d7;
|
|
43
|
+
--dh-color-seafoam-1400: #cbfce8;
|
|
44
|
+
/* Semantic */
|
|
45
|
+
--dh-color-black: var(--dh-color-gray-50);
|
|
46
|
+
--dh-color-white: var(--dh-color-gray-75);
|
|
47
|
+
--dh-accent-color: var(--dh-color-blue-700);
|
|
48
|
+
--dh-background-color: var(--dh-color-white);
|
|
49
|
+
--dh-foreground-color: var(--dh-color-black);
|
|
50
|
+
--dh-grid-background-color: var(--dh-background-color);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*# sourceMappingURL=theme_default_light.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../src/theme/theme_default_light.css"],"names":[],"mappings":"AAAA;AACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA","file":"theme_default_light.css","sourcesContent":[":root {\n /* Grays */\n --dh-color-gray-900: #000;\n --dh-color-gray-800: #222;\n --dh-color-gray-700: #464646;\n --dh-color-gray-600: #6d6d6d;\n --dh-color-gray-500: #909090;\n --dh-color-gray-400: #b1b1b1;\n --dh-color-gray-300: #d5d5d5;\n --dh-color-gray-200: #e6e6e6;\n --dh-color-gray-100: #f8f8f8;\n --dh-color-gray-75: #fdfdfd;\n --dh-color-gray-50: #fff;\n\n /* Blues */\n --dh-color-blue-100: #112451;\n --dh-color-blue-200: #16306c;\n --dh-color-blue-300: #1d3d88;\n --dh-color-blue-400: #254ba4;\n --dh-color-blue-500: #2f5bc0;\n --dh-color-blue-600: #3b6bda;\n --dh-color-blue-700: #4c7dee;\n --dh-color-blue-800: #6390fa;\n --dh-color-blue-900: #7ca4ff;\n --dh-color-blue-1000: #97b7ff;\n --dh-color-blue-1100: #afc9ff;\n --dh-color-blue-1200: #c7d9ff;\n --dh-color-blue-1300: #dbe6ff;\n --dh-color-blue-1400: #ecf1ff;\n\n /* Seafoam */\n --dh-color-seafoam-100: #1f2925;\n --dh-color-seafoam-200: #263630;\n --dh-color-seafoam-300: #2f463e;\n --dh-color-seafoam-400: #37574b;\n --dh-color-seafoam-500: #3e6959;\n --dh-color-seafoam-600: #447b68;\n --dh-color-seafoam-700: #488f78;\n --dh-color-seafoam-800: #4ca387;\n --dh-color-seafoam-900: #4fb797;\n --dh-color-seafoam-1000: #54cba6;\n --dh-color-seafoam-1100: #5edeb7;\n --dh-color-seafoam-1200: #78edc7;\n --dh-color-seafoam-1300: #9ef8d7;\n --dh-color-seafoam-1400: #cbfce8;\n\n /* Semantic */\n --dh-color-black: var(--dh-color-gray-50);\n --dh-color-white: var(--dh-color-gray-75);\n --dh-accent-color: var(--dh-color-blue-700);\n --dh-background-color: var(--dh-color-white);\n --dh-foreground-color: var(--dh-color-black);\n --dh-grid-background-color: var(--dh-background-color);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/theme/useTheme.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAElE;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAK5C;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useContextOrThrow } from '@deephaven/react-hooks';
|
|
2
|
+
import { ThemeContext } from "./ThemeProvider.js";
|
|
3
|
+
/**
|
|
4
|
+
* Hook to get the current `ThemeContextValue`.
|
|
5
|
+
*/
|
|
6
|
+
export function useTheme() {
|
|
7
|
+
return useContextOrThrow(ThemeContext, 'No ThemeContext value found. Component must be wrapped in a ThemeContext.Provider');
|
|
8
|
+
}
|
|
9
|
+
export default useTheme;
|
|
10
|
+
//# sourceMappingURL=useTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.js","names":["useContextOrThrow","ThemeContext","useTheme"],"sources":["../../src/theme/useTheme.ts"],"sourcesContent":["import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ThemeContext, ThemeContextValue } from './ThemeProvider';\n\n/**\n * Hook to get the current `ThemeContextValue`.\n */\nexport function useTheme(): ThemeContextValue {\n return useContextOrThrow(\n ThemeContext,\n 'No ThemeContext value found. Component must be wrapped in a ThemeContext.Provider'\n );\n}\n\nexport default useTheme;\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,wBAAwB;AAAC,SAClDC,YAAY;AAErB;AACA;AACA;AACA,OAAO,SAASC,QAAQ,GAAsB;EAC5C,OAAOF,iBAAiB,CACtBC,YAAY,EACZ,mFAAmF,CACpF;AACH;AAEA,eAAeC,QAAQ"}
|