uiconfig-blueprint 0.1.0-dev.14 → 0.1.0-dev.16
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/LICENSE +21 -190
- package/README.md +26 -15
- package/dist/ConfigObject.d.ts +7 -7
- package/dist/UiConfigRendererBlueprint.d.ts +3 -3
- package/dist/bpComponents/BPButtonComponent.d.ts +4 -4
- package/dist/bpComponents/BPColorInputComponent.d.ts +4 -4
- package/dist/bpComponents/BPComponent.d.ts +4 -4
- package/dist/bpComponents/BPContainerComponent.d.ts +4 -4
- package/dist/bpComponents/BPDropdownInputComponent.d.ts +5 -4
- package/dist/bpComponents/BPFileComponent.d.ts +5 -5
- package/dist/bpComponents/BPFolderComponent.d.ts +6 -6
- package/dist/bpComponents/BPInputComponent.d.ts +5 -5
- package/dist/bpComponents/BPLabelledComponent.d.ts +1 -1
- package/dist/bpComponents/BPNumberInputComponent.d.ts +5 -4
- package/dist/bpComponents/BPPanelComponent.d.ts +5 -5
- package/dist/bpComponents/BPSliderInputComponent.d.ts +4 -4
- package/dist/bpComponents/BPTextInputComponent.d.ts +7 -4
- package/dist/bpComponents/BPToggleInputComponent.d.ts +4 -4
- package/dist/bpComponents/BPValueComponent.d.ts +3 -3
- package/dist/bpComponents/BPVectorInputComponent.d.ts +6 -5
- package/dist/bpComponents/InputGroup2.d.ts +2 -2
- package/dist/components/AppToaster.d.ts +2 -2
- package/dist/components/ConfigurationPanelComponent.d.ts +2 -1
- package/dist/components/DialogContext.d.ts +4 -4
- package/dist/components/DraggableIcon.d.ts +2 -2
- package/dist/components/ExtendedNumericInput.d.ts +3 -3
- package/dist/components/FileComponent.d.ts +3 -3
- package/dist/components/FormGroupComponent.d.ts +2 -2
- package/dist/components/InspectorStackComponent.d.ts +5 -4
- package/dist/components/NumericInput.d.ts +4 -3
- package/dist/components/VisualStyleContext.d.ts +3 -3
- package/dist/components/axesIcons.d.ts +7 -7
- package/dist/components/bpIconWrapper.d.ts +2 -2
- package/dist/components/iconMapping.d.ts +195 -195
- package/dist/components/shapesIcons.d.ts +100 -100
- package/dist/components/variableIcons.d.ts +40 -40
- package/dist/index.cjs +101 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +41 -41
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2500 -6
- package/dist/index.mjs.map +1 -1
- package/dist/lib.d.ts +35 -35
- package/docs/assets/icons.js +15 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +4 -4
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +40 -22
- package/docs/classes/UI.html +27 -27
- package/docs/classes/UiConfigRendererBlueprint.html +27 -27
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +22 -15
- package/docs/modules.html +3 -3
- package/lib/css/renderer.css +4 -2
- package/lib/css/renderer.css.map +1 -1
- package/lib/esm/ConfigObject.d.ts +3 -3
- package/lib/esm/UiConfigRendererBlueprint.d.ts +1 -1
- package/lib/esm/UiConfigRendererBlueprint.js +25 -23
- package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
- package/lib/esm/bpComponents/BPButtonComponent.d.ts +3 -3
- package/lib/esm/bpComponents/BPColorInputComponent.d.ts +4 -3
- package/lib/esm/bpComponents/BPColorInputComponent.js +1 -1
- package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPComponent.d.ts +2 -1
- package/lib/esm/bpComponents/BPComponent.js +15 -4
- package/lib/esm/bpComponents/BPComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPContainerComponent.d.ts +4 -4
- package/lib/esm/bpComponents/BPDropdownInputComponent.d.ts +6 -4
- package/lib/esm/bpComponents/BPDropdownInputComponent.js +2 -2
- package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPFileComponent.d.ts +6 -5
- package/lib/esm/bpComponents/BPFileComponent.js +1 -1
- package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPFolderComponent.d.ts +3 -3
- package/lib/esm/bpComponents/BPFolderComponent.js +1 -2
- package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPInputComponent.d.ts +3 -3
- package/lib/esm/bpComponents/BPLabelledComponent.d.ts +1 -1
- package/lib/esm/bpComponents/BPNumberInputComponent.d.ts +5 -4
- package/lib/esm/bpComponents/BPNumberInputComponent.js +1 -1
- package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPPanelComponent.d.ts +5 -4
- package/lib/esm/bpComponents/BPSliderInputComponent.d.ts +5 -4
- package/lib/esm/bpComponents/BPTextInputComponent.d.ts +7 -4
- package/lib/esm/bpComponents/BPTextInputComponent.js +11 -2
- package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPToggleInputComponent.d.ts +5 -4
- package/lib/esm/bpComponents/BPValueComponent.d.ts +2 -2
- package/lib/esm/bpComponents/BPValueComponent.js +4 -4
- package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +5 -4
- package/lib/esm/bpComponents/BPVectorInputComponent.js +1 -1
- package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
- package/lib/esm/components/AppToaster.d.ts +2 -1
- package/lib/esm/components/ConfigurationPanelComponent.d.ts +2 -1
- package/lib/esm/components/ConfigurationPanelComponent.js +1 -2
- package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
- package/lib/esm/components/DialogContext.d.ts +3 -3
- package/lib/esm/components/DialogContext.js +1 -2
- package/lib/esm/components/DialogContext.js.map +1 -1
- package/lib/esm/components/DraggableIcon.d.ts +1 -1
- package/lib/esm/components/ExtendedNumericInput.d.ts +1 -1
- package/lib/esm/components/FileComponent.d.ts +2 -2
- package/lib/esm/components/FormGroupComponent.d.ts +1 -1
- package/lib/esm/components/InspectorStackComponent.d.ts +3 -2
- package/lib/esm/components/NumericInput.d.ts +2 -1
- package/lib/esm/components/VisualStyleContext.d.ts +2 -2
- package/lib/esm/components/VisualStyleContext.js +1 -2
- package/lib/esm/components/VisualStyleContext.js.map +1 -1
- package/lib/esm/components/axesIcons.d.ts +8 -7
- package/lib/esm/components/bpIconWrapper.d.ts +1 -1
- package/lib/esm/components/iconMapping.d.ts +146 -146
- package/lib/esm/components/shapesIcons.d.ts +99 -99
- package/lib/esm/components/variableIcons.d.ts +41 -40
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/lib.d.ts +35 -35
- package/lib/esm/renderer.css.js +1 -1
- package/package.json +29 -26
- package/src/UiConfigRendererBlueprint.tsx +26 -23
- package/src/bpComponents/BPComponent.tsx +20 -7
- package/src/bpComponents/BPDropdownInputComponent.tsx +3 -2
- package/src/bpComponents/BPFolderComponent.tsx +2 -2
- package/src/bpComponents/BPTextInputComponent.tsx +15 -2
- package/src/components/ConfigurationPanelComponent.tsx +1 -2
- package/src/components/DialogContext.tsx +1 -2
- package/src/components/VisualStyleContext.tsx +1 -2
- package/dist/allPaths-DANRR6MZ.js +0 -23
- package/dist/allPaths-DANRR6MZ.js.map +0 -1
- package/dist/allPathsLoader-BdHGVD6B.js +0 -27
- package/dist/allPathsLoader-BdHGVD6B.js.map +0 -1
- package/dist/index-6kveHKKU.js +0 -695
- package/dist/index-6kveHKKU.js.map +0 -1
- package/dist/index-D9WNL8Mc.js +0 -695
- package/dist/index-D9WNL8Mc.js.map +0 -1
- package/dist/index-t3WzvX5M.js +0 -13501
- package/dist/index-t3WzvX5M.js.map +0 -1
- package/dist/splitPathsBySizeLoader-Bhwx_O-M.js +0 -36
- package/dist/splitPathsBySizeLoader-Bhwx_O-M.js.map +0 -1
- package/lib/esm/bpComponents/BPTreeComponent.d.ts +0 -46
- package/lib/esm/bpComponents/BPTreeComponent.js +0 -221
- package/lib/esm/bpComponents/BPTreeComponent.js.map +0 -1
- package/lib/esm/bpComponents/BPTreeFolderComponent.d.ts +0 -10
- package/lib/esm/bpComponents/BPTreeFolderComponent.js +0 -37
- package/lib/esm/bpComponents/BPTreeFolderComponent.js.map +0 -1
- package/lib/esm/components/Tree2.d.ts +0 -52
- package/lib/esm/components/Tree2.js +0 -177
- package/lib/esm/components/Tree2.js.map +0 -1
- package/lib/esm/components/TreeNode2.d.ts +0 -43
- package/lib/esm/components/TreeNode2.js +0 -113
- package/lib/esm/components/TreeNode2.js.map +0 -1
- package/lib/esm/components/treeTypes.d.ts +0 -19
- package/lib/esm/components/treeTypes.js +0 -2
- package/lib/esm/components/treeTypes.js.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/bpComponents/BPComponent.tsx","../src/utils.ts","../src/bpComponents/BPLabelledComponent.tsx","../src/bpComponents/BPContainerComponent.tsx","../../../node_modules/@blueprintjs/core/node_modules/tslib/tslib.es6.mjs","../../../node_modules/@blueprintjs/core/lib/esm/common/utils/jsUtils.js","../../../node_modules/@blueprintjs/core/lib/esm/common/intent.js","../../../node_modules/@blueprintjs/core/lib/esm/common/classes.js","../../../node_modules/@blueprintjs/core/lib/esm/common/abstractPureComponent.js","../../../node_modules/@blueprintjs/core/lib/esm/common/props.js","../../../node_modules/@blueprintjs/core/lib/esm/components/collapse/collapse.js","../src/bpComponents/BPFolderComponent.tsx","../src/bpComponents/BPValueComponent.tsx","../src/components/FormGroupComponent.tsx","../src/bpComponents/BPInputComponent.tsx","../src/bpComponents/BPTextInputComponent.tsx","../../../node_modules/@blueprintjs/core/src/common/errors.ts","../../../node_modules/@blueprintjs/core/src/common/utils/jsUtils.ts","../../../node_modules/@blueprintjs/core/src/components/forms/numericInputUtils.ts","../src/bpComponents/InputGroup2.tsx","../src/components/NumericInput.tsx","../src/utils/pointerLock.ts","../src/components/DraggableIcon.tsx","../src/components/ExtendedNumericInput.tsx","../src/bpComponents/NumberUnits.tsx","../src/bpComponents/GetNumberTransformFunctions.tsx","../src/bpComponents/BPNumberInputComponent.tsx","../src/bpComponents/BPButtonComponent.tsx","../src/bpComponents/BPToggleInputComponent.tsx","../src/bpComponents/BPSliderInputComponent.tsx","../src/bpComponents/BPDropdownInputComponent.tsx","../src/bpComponents/BPPanelComponent.tsx","../src/components/bpIconWrapper.tsx","../src/components/variableIcons.tsx","../src/components/VisualStyleContext.tsx","../src/bpComponents/BPVectorInputComponent.tsx","../src/bpComponents/BPColorInputComponent.tsx","../src/ConfigObject.tsx","../src/components/ConfigurationPanelComponent.tsx","../src/UiConfigRendererBlueprint.tsx","../src/index.ts"],"sourcesContent":["import React, {createContext} from \"react\";\nimport type {UiConfigRendererBase} from 'uiconfig.js'\nimport {UiObjectConfig} from 'uiconfig.js'\nimport {getOrCall, ValOrFunc} from 'ts-browser-helpers'\nimport {THREE} from \"../threejs\";\n\nexport type BPComponentProps<T> = {\n config: UiObjectConfig<T>,\n level?: number\n disabled?: ValOrFunc<boolean> // todo add to uiconfig-react as well\n}\nexport type BPComponentState = {\n hidden?: boolean\n disabled?: boolean\n readOnly?: boolean // same as disabled(for most inputs)\n baseWidth?: string // for flexBasis, can be a number or a string like '50%' or '100px'\n}\nexport interface UiConfigRendererBaseBp extends UiConfigRendererBase{\n // eslint-disable-next-line @typescript-eslint/naming-convention\n THREE: THREE|undefined\n}\n\nexport const UiConfigRendererContext = createContext<UiConfigRendererBaseBp>(null as any)\nexport type UiConfigRendererContextType = React.ContextType<typeof UiConfigRendererContext>\nexport abstract class BPComponent<TValue, TState extends BPComponentState, TProps extends BPComponentProps<TValue> = BPComponentProps<TValue>> extends React.Component<TProps, TState> {\n static contextType = UiConfigRendererContext\n declare context: UiConfigRendererContextType\n\n protected constructor(props: TProps, context: UiConfigRendererContextType, state: TState) {\n super(props, context);\n this.state = this.getUpdatedState(state)\n // this.state = state\n this.setState = this.setState.bind(this)\n }\n\n /**\n * Set the state(and rerender), then return a promise that resolves when the state is set\n * @param state\n */\n setStatePromise(state: TState) {\n return new Promise<void>(resolve => this.setState(state, resolve))\n }\n\n keyVersion = 0\n\n /**\n * This is called to get the updated state from the config, copy any values/properties from the config to the state here\n * @param state - the current state\n */\n getUpdatedState(state: TState): TState{\n // todo use UiConfigMethods.GetBaseProps\n const hidden = getOrCall(this.props.config.hidden) ?? false\n const disabled = getOrCall(this.props.disabled ?? this.props.config.disabled) ?? false\n const readOnly = getOrCall(this.props.config.readOnly) ?? false\n const baseWidth = getOrCall(this.props.config.baseWidth) ?? undefined\n if(hidden !== state.hidden\n || disabled !== state.disabled\n || readOnly !== state.readOnly\n ) this.keyVersion++\n return {\n ...state,\n hidden,\n disabled,\n readOnly,\n baseWidth\n }\n }\n\n private _refreshing = false;\n\n private _refreshAgain = false\n\n /**\n * Refreshes the state from the config\n *\n * This is called by the ui component when the value is changed and from uiRefresh from the config\n * @param state - optional state to refresh from, if not provided, the current state is used\n */\n async refreshConfigState(state?: TState) {\n if (!this.props.config) return;\n if (this._refreshing) {\n // a refresh asked for while one runs: run once more after it, so that the latest value shows\n this._refreshAgain = true\n return;\n }\n this._refreshing = true\n try {\n const s = this.getUpdatedState(state || this.state)\n // console.log('set state', s)\n await this.setStatePromise(s)\n } finally {\n // todo debug refresh frequency etc\n // console.log('refreshing', this.props.config.label, this.props.config.type, this.state)\n this._refreshing = false\n }\n if (this._refreshAgain) {\n this._refreshAgain = false\n await this.refreshConfigState()\n }\n }\n\n /**\n * Add reference to this to uiRef and set uiRefresh to the config to refresh this component\n *\n * also refreshes the config once which re-renders (todo: check if this is required)\n */\n componentDidMount() {\n super.componentDidMount?.();\n this.props.config.uiRef = this\n this.props.config.uiRefresh = (deep = false, mode = 'postFrame', delay = 0) => {\n this.context.addToRefreshQueue(mode, this.props.config, deep, delay)\n }\n // console.log('mount', this.props.config.label, this.props.config.type, this.props.config)\n this.props.config.uiRefresh()\n }\n\n componentWillUnmount() {\n // console.log('unmount', this.props.config.label, this.props.config.type, this.props.config)\n this.props.config.uiRef = undefined\n this.props.config.uiRefresh = undefined\n super.componentWillUnmount?.();\n }\n\n // abstract updateStateValue(state: TState): Promise<void>;\n\n}\n","// todo move to uiConfigMethods\nexport function cleanLabel(varName?: string): string|undefined {\n if (!varName || typeof varName !== 'string') {\n return varName;\n }\n\n let result = varName.trim();\n if (!result) return '';\n if(result.includes(' ')) return result; // already has spaces\n\n result = result.replace(/_/g, ' ');\n\n // Insert spaces before uppercase letters (camelCase handling)\n // First handle sequences like \"XMLHttp\" -> \"XML Http\"\n result = result.replace(/([A-Z])([A-Z][a-z])/g, '$1 $2');\n // Then handle regular camelCase like \"firstName\" -> \"first Name\"\n result = result.replace(/([a-z])([A-Z])/g, '$1 $2');\n\n // Insert spaces before numbers that follow letters\n result = result.replace(/([a-zA-Z])(\\d)/g, '$1 $2');\n\n // Insert spaces after numbers that are followed by letters\n result = result.replace(/(\\d)([a-zA-Z])/g, '$1 $2');\n\n // Split into words, capitalize first letter of each word, and join with spaces\n const words = result.split(/\\s+/).filter(word => word.length > 0);\n const capitalizedWords = words.map(word => {\n // Preserve acronyms (all uppercase words with 2+ chars)\n if (word.length >= 2 && word === word.toUpperCase()) {\n return word;\n }\n // Regular word capitalization\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n });\n\n\n return capitalizedWords.join(' ');\n}\n","import {BPComponent, BPComponentProps, BPComponentState, UiConfigRendererContextType} from \"./BPComponent\";\nimport {cleanLabel} from \"../utils\";\n\nexport type BPLabelledComponentState = BPComponentState & {\n label: string\n}\nexport abstract class BPLabelledComponent<TValue, TState, TProps extends BPComponentProps<TValue> = BPComponentProps<TValue>> extends BPComponent<TValue, TState&BPLabelledComponentState, TProps> {\n\n protected constructor(props: TProps, context: UiConfigRendererContextType, state: TState) {\n super(props, context, {label: 'Input', ...state});\n }\n\n getUpdatedState(state: TState & BPLabelledComponentState): TState & BPLabelledComponentState {\n return super.getUpdatedState({\n ...state,\n label: cleanLabel(this.context.methods.getLabel(this.props.config)) || state.label,\n })\n }\n}\n","import {BPLabelledComponent, BPLabelledComponentState} from './BPLabelledComponent'\nimport {BPComponentProps, UiConfigRendererContextType} from './BPComponent'\nimport {PanelActions} from '@blueprintjs/core/lib/esm/components/panel-stack2/panelTypes'\nimport {UiObjectConfig} from 'uiconfig.js'\nimport {getOrCall} from 'ts-browser-helpers'\n\ndeclare module '../ConfigObject' {\n interface ConfigProps {\n filter?: (child: UiObjectConfig) => boolean\n }\n}\n\nexport type BPContainerComponentState = BPLabelledComponentState & {\n children: UiObjectConfig[]\n expanded: boolean\n}\n\nexport type BPContainerComponentProps = {\n filter?: (child: UiObjectConfig) => boolean\n}\n\nexport class BPContainerComponent<TState extends BPContainerComponentState=BPContainerComponentState, TProps extends BPContainerComponentProps=BPContainerComponentProps> extends BPLabelledComponent<void, TState, BPComponentProps<void> & PanelActions & TProps> {\n\n protected _childParentOnChange: UiObjectConfig['parentOnChange'] = (ev, ...args) => {\n // console.warn('child change', ev, this.props.config)\n this.context.methods.dispatchOnChangeSync(this.props.config, {...ev}, ...args)\n }\n\n protected _registerChild(child: UiObjectConfig) {\n // if(Object.keys(child).length)\n child.parentOnChange = this._childParentOnChange\n if(child.property === undefined &&\n child.value === undefined &&\n child.getValue === undefined &&\n child.setValue === undefined &&\n child.type !== 'button' &&\n (this.props.config.property !== undefined || this.props.config.value !== undefined)\n ) child.property = this.props.config.property !== undefined ? this.props.config.property : [this.props.config, 'value']\n }\n\n protected _unregisterChild(child: UiObjectConfig) {\n if (child.parentOnChange !== this._childParentOnChange)\n delete child.parentOnChange\n if(Array.isArray(child.property) &&\n (child.property === this.props.config.property ||\n (child.property[0] === this.props.config &&\n child.property[1] === 'value')\n )\n ) delete child.property\n }\n\n constructor(props: BPComponentProps<void> & PanelActions & TProps, context: UiConfigRendererContextType, state: TState) {\n super(props, context, state);\n }\n\n getUpdatedState(state: TState) {\n const oldChildren = state.children\n let newChildren = this.context.methods.getChildren(this.props.config)\n .flatMap(c=>{\n if(c.type === 'folder' &&\n c.unwrapContents === true\n ){\n const children2 = this.context.methods.getChildren(c)\n const enabledToggle = children2[0] && this.context.methods.getBinding(children2[0])[1] === 'enabled' ? children2[0] : undefined\n enabledToggle && (enabledToggle.hidden = true)\n return children2\n }\n return c\n })\n\n // Apply filter if provided\n if (this.props.filter) {\n newChildren = newChildren.filter(this.props.filter)\n }\n\n const removed = oldChildren.filter(c => !newChildren.includes(c))\n const added = newChildren.filter(c => !oldChildren.includes(c))\n // console.warn(this, this._registerChild, this._childParentOnChange, added, removed)\n removed.forEach(c => this._unregisterChild(c))\n added.forEach(c => this._registerChild(c))\n return {\n ...super.getUpdatedState(state),\n // children: (this.props.config.children || []).map(c => getOrCall(c) || {}).flat(2),\n children: newChildren,\n expanded: getOrCall(this.props.config.expanded) ?? false,\n }\n }\n\n componentDidMount() {\n super.componentDidMount?.();\n this.state.children.forEach(c => this._registerChild(c))\n }\n\n componentWillUnmount() {\n super.componentWillUnmount?.();\n this.state.children.forEach(c => this._unregisterChild(c))\n }\n\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/*\n * Copyright 2020 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CLAMP_MIN_MAX } from \"../errors\";\n/** Returns whether bundler-injected variable `NODE_ENV` equals `env`. */\nexport function isNodeEnv(env) {\n return typeof NODE_ENV !== \"undefined\" && NODE_ENV === env;\n}\n/**\n * Returns the difference in length between two arrays. A `null` argument is\n * considered an empty list. The return value will be positive if `a` is longer\n * than `b`, negative if the opposite is true, and zero if their lengths are\n * equal.\n */\nexport function arrayLengthCompare(a, b) {\n if (a === void 0) { a = []; }\n if (b === void 0) { b = []; }\n return a.length - b.length;\n}\n/**\n * Returns true if the two numbers are within the given tolerance of each other.\n * This is useful to correct for floating point precision issues, less useful\n * for integers.\n */\nexport function approxEqual(a, b, tolerance) {\n if (tolerance === void 0) { tolerance = 0.00001; }\n return Math.abs(a - b) <= tolerance;\n}\n/**\n * Clamps the given number between min and max values. Returns value if within\n * range, or closest bound.\n */\nexport function clamp(val, min, max) {\n if (val == null) {\n return val;\n }\n if (max < min) {\n throw new Error(CLAMP_MIN_MAX);\n }\n return Math.min(Math.max(val, min), max);\n}\n/** Returns the number of decimal places in the given number. */\nexport function countDecimalPlaces(num) {\n if (!isFinite(num)) {\n return 0;\n }\n var e = 1;\n var p = 0;\n while (Math.round(num * e) / e !== num) {\n e *= 10;\n p++;\n }\n return p;\n}\nvar uniqueCountForNamespace = new Map();\n/** Generate a unique ID within a given namespace, using a simple counter-based implementation to avoid collisions. */\nexport function uniqueId(namespace) {\n var _a;\n var curCount = (_a = uniqueCountForNamespace.get(namespace)) !== null && _a !== void 0 ? _a : 0;\n uniqueCountForNamespace.set(namespace, curCount + 1);\n return \"\".concat(namespace, \"-\").concat(curCount);\n}\n/**\n * @returns `true` if the value is an empty string after trimming whitespace\n */\nexport function isEmptyString(val) {\n return typeof val === \"string\" && val.trim().length === 0;\n}\n//# sourceMappingURL=jsUtils.js.map","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable sort-keys */\n/**\n * The four basic intents.\n */\nexport var Intent = {\n NONE: \"none\",\n PRIMARY: \"primary\",\n SUCCESS: \"success\",\n WARNING: \"warning\",\n DANGER: \"danger\",\n};\n//# sourceMappingURL=intent.js.map","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Alignment } from \"./alignment\";\nimport { Elevation } from \"./elevation\";\nimport { Intent } from \"./intent\";\nimport { Position } from \"./position\";\nvar NS = \"bp5\";\nif (typeof BLUEPRINT_NAMESPACE !== \"undefined\") {\n NS = BLUEPRINT_NAMESPACE;\n}\nelse if (typeof REACT_APP_BLUEPRINT_NAMESPACE !== \"undefined\") {\n NS = REACT_APP_BLUEPRINT_NAMESPACE;\n}\n// modifiers\nexport var ACTIVE = \"\".concat(NS, \"-active\");\nexport var ALIGN_LEFT = \"\".concat(NS, \"-align-left\");\nexport var ALIGN_RIGHT = \"\".concat(NS, \"-align-right\");\nexport var COMPACT = \"\".concat(NS, \"-compact\");\nexport var DARK = \"\".concat(NS, \"-dark\");\nexport var DISABLED = \"\".concat(NS, \"-disabled\");\nexport var FILL = \"\".concat(NS, \"-fill\");\nexport var FIXED = \"\".concat(NS, \"-fixed\");\nexport var FIXED_TOP = \"\".concat(NS, \"-fixed-top\");\nexport var INLINE = \"\".concat(NS, \"-inline\");\nexport var INTERACTIVE = \"\".concat(NS, \"-interactive\");\nexport var LARGE = \"\".concat(NS, \"-large\");\nexport var LOADING = \"\".concat(NS, \"-loading\");\nexport var MINIMAL = \"\".concat(NS, \"-minimal\");\nexport var OUTLINED = \"\".concat(NS, \"-outlined\");\nexport var PADDED = \"\".concat(NS, \"-padded\");\nexport var MULTILINE = \"\".concat(NS, \"-multiline\");\nexport var READ_ONLY = \"\".concat(NS, \"-read-only\");\nexport var ROUND = \"\".concat(NS, \"-round\");\nexport var SELECTED = \"\".concat(NS, \"-selected\");\nexport var SMALL = \"\".concat(NS, \"-small\");\nexport var VERTICAL = \"\".concat(NS, \"-vertical\");\nexport var POSITION_TOP = positionClass(Position.TOP);\nexport var POSITION_BOTTOM = positionClass(Position.BOTTOM);\nexport var POSITION_LEFT = positionClass(Position.LEFT);\nexport var POSITION_RIGHT = positionClass(Position.RIGHT);\nexport var ELEVATION_0 = elevationClass(Elevation.ZERO);\nexport var ELEVATION_1 = elevationClass(Elevation.ONE);\nexport var ELEVATION_2 = elevationClass(Elevation.TWO);\nexport var ELEVATION_3 = elevationClass(Elevation.THREE);\nexport var ELEVATION_4 = elevationClass(Elevation.FOUR);\nexport var INTENT_PRIMARY = intentClass(Intent.PRIMARY);\nexport var INTENT_SUCCESS = intentClass(Intent.SUCCESS);\nexport var INTENT_WARNING = intentClass(Intent.WARNING);\nexport var INTENT_DANGER = intentClass(Intent.DANGER);\nexport var FOCUS_DISABLED = \"\".concat(NS, \"-focus-disabled\");\nexport var FOCUS_STYLE_MANAGER_IGNORE = \"\".concat(NS, \"-focus-style-manager-ignore\");\n// text utilities\nexport var UI_TEXT = \"\".concat(NS, \"-ui-text\");\nexport var RUNNING_TEXT = \"\".concat(NS, \"-running-text\");\nexport var MONOSPACE_TEXT = \"\".concat(NS, \"-monospace-text\");\nexport var TEXT_LARGE = \"\".concat(NS, \"-text-large\");\nexport var TEXT_SMALL = \"\".concat(NS, \"-text-small\");\nexport var TEXT_MUTED = \"\".concat(NS, \"-text-muted\");\nexport var TEXT_DISABLED = \"\".concat(NS, \"-text-disabled\");\nexport var TEXT_OVERFLOW_ELLIPSIS = \"\".concat(NS, \"-text-overflow-ellipsis\");\n// textual elements\nexport var BLOCKQUOTE = \"\".concat(NS, \"-blockquote\");\nexport var CODE = \"\".concat(NS, \"-code\");\nexport var CODE_BLOCK = \"\".concat(NS, \"-code-block\");\nexport var HEADING = \"\".concat(NS, \"-heading\");\nexport var LIST = \"\".concat(NS, \"-list\");\nexport var LIST_UNSTYLED = \"\".concat(NS, \"-list-unstyled\");\nexport var RTL = \"\".concat(NS, \"-rtl\");\n// components\nexport var ALERT = \"\".concat(NS, \"-alert\");\nexport var ALERT_BODY = \"\".concat(ALERT, \"-body\");\nexport var ALERT_CONTENTS = \"\".concat(ALERT, \"-contents\");\nexport var ALERT_FOOTER = \"\".concat(ALERT, \"-footer\");\nexport var BREADCRUMB = \"\".concat(NS, \"-breadcrumb\");\nexport var BREADCRUMB_CURRENT = \"\".concat(BREADCRUMB, \"-current\");\nexport var BREADCRUMBS = \"\".concat(BREADCRUMB, \"s\");\nexport var BREADCRUMBS_COLLAPSED = \"\".concat(BREADCRUMB, \"s-collapsed\");\nexport var BUTTON = \"\".concat(NS, \"-button\");\nexport var BUTTON_GROUP = \"\".concat(BUTTON, \"-group\");\nexport var BUTTON_SPINNER = \"\".concat(BUTTON, \"-spinner\");\nexport var BUTTON_TEXT = \"\".concat(BUTTON, \"-text\");\nexport var CALLOUT = \"\".concat(NS, \"-callout\");\nexport var CALLOUT_HAS_BODY_CONTENT = \"\".concat(CALLOUT, \"-has-body-content\");\nexport var CALLOUT_ICON = \"\".concat(CALLOUT, \"-icon\");\nexport var CARD = \"\".concat(NS, \"-card\");\nexport var CONTROL_CARD = \"\".concat(NS, \"-control-card\");\nexport var CONTROL_CARD_LABEL = \"\".concat(CONTROL_CARD, \"-label\");\nexport var SWITCH_CONTROL_CARD = \"\".concat(NS, \"-switch-control-card\");\nexport var CHECKBOX_CONTROL_CARD = \"\".concat(NS, \"-checkbox-control-card\");\nexport var RADIO_CONTROL_CARD = \"\".concat(NS, \"-radio-control-card\");\nexport var CARD_LIST = \"\".concat(NS, \"-card-list\");\nexport var CARD_LIST_BORDERED = \"\".concat(CARD_LIST, \"-bordered\");\nexport var COLLAPSE = \"\".concat(NS, \"-collapse\");\nexport var COLLAPSE_BODY = \"\".concat(COLLAPSE, \"-body\");\nexport var CONTEXT_MENU = \"\".concat(NS, \"-context-menu\");\nexport var CONTEXT_MENU_VIRTUAL_TARGET = \"\".concat(CONTEXT_MENU, \"-virtual-target\");\nexport var CONTEXT_MENU_POPOVER = \"\".concat(CONTEXT_MENU, \"-popover\");\nexport var CONTEXT_MENU_BACKDROP = \"\".concat(CONTEXT_MENU, \"-backdrop\");\nexport var CONTROL_GROUP = \"\".concat(NS, \"-control-group\");\nexport var DIALOG = \"\".concat(NS, \"-dialog\");\nexport var DIALOG_CONTAINER = \"\".concat(DIALOG, \"-container\");\nexport var DIALOG_HEADER = \"\".concat(DIALOG, \"-header\");\nexport var DIALOG_BODY = \"\".concat(DIALOG, \"-body\");\nexport var DIALOG_BODY_SCROLL_CONTAINER = \"\".concat(DIALOG, \"-body-scroll-container\");\nexport var DIALOG_CLOSE_BUTTON = \"\".concat(DIALOG, \"-close-button\");\nexport var DIALOG_FOOTER = \"\".concat(DIALOG, \"-footer\");\nexport var DIALOG_FOOTER_FIXED = \"\".concat(DIALOG, \"-footer-fixed\");\nexport var DIALOG_FOOTER_MAIN_SECTION = \"\".concat(DIALOG, \"-footer-main-section\");\nexport var DIALOG_FOOTER_ACTIONS = \"\".concat(DIALOG, \"-footer-actions\");\nexport var DIALOG_STEP = \"\".concat(NS, \"-dialog-step\");\nexport var DIALOG_STEP_CONTAINER = \"\".concat(DIALOG_STEP, \"-container\");\nexport var DIALOG_STEP_TITLE = \"\".concat(DIALOG_STEP, \"-title\");\nexport var DIALOG_STEP_ICON = \"\".concat(DIALOG_STEP, \"-icon\");\nexport var DIALOG_STEP_VIEWED = \"\".concat(DIALOG_STEP, \"-viewed\");\nexport var DIVIDER = \"\".concat(NS, \"-divider\");\nexport var DRAWER = \"\".concat(NS, \"-drawer\");\nexport var DRAWER_BODY = \"\".concat(DRAWER, \"-body\");\nexport var DRAWER_FOOTER = \"\".concat(DRAWER, \"-footer\");\nexport var DRAWER_HEADER = \"\".concat(DRAWER, \"-header\");\nexport var EDITABLE_TEXT = \"\".concat(NS, \"-editable-text\");\nexport var EDITABLE_TEXT_CONTENT = \"\".concat(EDITABLE_TEXT, \"-content\");\nexport var EDITABLE_TEXT_EDITING = \"\".concat(EDITABLE_TEXT, \"-editing\");\nexport var EDITABLE_TEXT_INPUT = \"\".concat(EDITABLE_TEXT, \"-input\");\nexport var EDITABLE_TEXT_PLACEHOLDER = \"\".concat(EDITABLE_TEXT, \"-placeholder\");\nexport var ENTITY_TITLE = \"\".concat(NS, \"-entity-title\");\nexport var ENTITY_TITLE_ELLIPSIZE = \"\".concat(NS, \"-entity-title-ellipsize\");\nexport var ENTITY_TITLE_HAS_SUBTITLE = \"\".concat(ENTITY_TITLE, \"-has-subtitle\");\nexport var ENTITY_TITLE_ICON_CONTAINER = \"\".concat(ENTITY_TITLE, \"-icon-container\");\nexport var ENTITY_TITLE_SUBTITLE = \"\".concat(ENTITY_TITLE, \"-subtitle\");\nexport var ENTITY_TITLE_TAGS_CONTAINER = \"\".concat(ENTITY_TITLE, \"-tags-container\");\nexport var ENTITY_TITLE_TEXT = \"\".concat(ENTITY_TITLE, \"-text\");\nexport var ENTITY_TITLE_TITLE = \"\".concat(ENTITY_TITLE, \"-title\");\nexport var ENTITY_TITLE_TITLE_AND_TAGS = \"\".concat(ENTITY_TITLE, \"-title-and-tags\");\nexport var FLEX_EXPANDER = \"\".concat(NS, \"-flex-expander\");\nexport var HTML_SELECT = \"\".concat(NS, \"-html-select\");\n/** @deprecated use `<HTMLSelect>` component or `Classes.HTML_SELECT` instead */\nexport var SELECT = \"\".concat(NS, \"-select\");\nexport var HTML_TABLE = \"\".concat(NS, \"-html-table\");\nexport var HTML_TABLE_BORDERED = \"\".concat(HTML_TABLE, \"-bordered\");\nexport var HTML_TABLE_STRIPED = \"\".concat(HTML_TABLE, \"-striped\");\nexport var INPUT = \"\".concat(NS, \"-input\");\nexport var INPUT_GHOST = \"\".concat(INPUT, \"-ghost\");\nexport var INPUT_GROUP = \"\".concat(INPUT, \"-group\");\nexport var INPUT_LEFT_CONTAINER = \"\".concat(INPUT, \"-left-container\");\nexport var INPUT_ACTION = \"\".concat(INPUT, \"-action\");\nexport var RESIZABLE_INPUT_SPAN = \"\".concat(NS, \"-resizable-input-span\");\nexport var TEXT_AREA = \"\".concat(NS, \"-text-area\");\nexport var TEXT_AREA_AUTO_RESIZE = \"\".concat(TEXT_AREA, \"-auto-resize\");\nexport var CONTROL = \"\".concat(NS, \"-control\");\nexport var CONTROL_INDICATOR = \"\".concat(CONTROL, \"-indicator\");\nexport var CONTROL_INDICATOR_CHILD = \"\".concat(CONTROL_INDICATOR, \"-child\");\nexport var CHECKBOX = \"\".concat(NS, \"-checkbox\");\nexport var RADIO = \"\".concat(NS, \"-radio\");\nexport var RADIO_GROUP = \"\".concat(NS, \"-radio-group\");\nexport var SWITCH = \"\".concat(NS, \"-switch\");\nexport var SWITCH_INNER_TEXT = \"\".concat(SWITCH, \"-inner-text\");\nexport var FILE_INPUT = \"\".concat(NS, \"-file-input\");\nexport var FILE_INPUT_HAS_SELECTION = \"\".concat(NS, \"-file-input-has-selection\");\nexport var FILE_UPLOAD_INPUT = \"\".concat(NS, \"-file-upload-input\");\nexport var FILE_UPLOAD_INPUT_CUSTOM_TEXT = \"\".concat(NS, \"-file-upload-input-custom-text\");\nexport var KEY = \"\".concat(NS, \"-key\");\nexport var KEY_COMBO = \"\".concat(KEY, \"-combo\");\nexport var MODIFIER_KEY = \"\".concat(NS, \"-modifier-key\");\nexport var HOTKEY = \"\".concat(NS, \"-hotkey\");\nexport var HOTKEY_LABEL = \"\".concat(HOTKEY, \"-label\");\nexport var HOTKEY_COLUMN = \"\".concat(HOTKEY, \"-column\");\nexport var HOTKEY_DIALOG = \"\".concat(HOTKEY, \"-dialog\");\nexport var LABEL = \"\".concat(NS, \"-label\");\nexport var FORM_GROUP = \"\".concat(NS, \"-form-group\");\nexport var FORM_CONTENT = \"\".concat(NS, \"-form-content\");\nexport var FORM_HELPER_TEXT = \"\".concat(NS, \"-form-helper-text\");\nexport var FORM_GROUP_SUB_LABEL = \"\".concat(NS, \"-form-group-sub-label\");\nexport var MENU = \"\".concat(NS, \"-menu\");\nexport var MENU_ITEM = \"\".concat(MENU, \"-item\");\nexport var MENU_ITEM_IS_SELECTABLE = \"\".concat(MENU_ITEM, \"-is-selectable\");\nexport var MENU_ITEM_SELECTED_ICON = \"\".concat(MENU_ITEM, \"-selected-icon\");\nexport var MENU_ITEM_ICON = \"\".concat(MENU_ITEM, \"-icon\");\nexport var MENU_ITEM_LABEL = \"\".concat(MENU_ITEM, \"-label\");\nexport var MENU_SUBMENU = \"\".concat(NS, \"-submenu\");\nexport var MENU_SUBMENU_ICON = \"\".concat(MENU_SUBMENU, \"-icon\");\nexport var MENU_DIVIDER = \"\".concat(MENU, \"-divider\");\nexport var MENU_HEADER = \"\".concat(MENU, \"-header\");\nexport var MULTISTEP_DIALOG = \"\".concat(NS, \"-multistep-dialog\");\nexport var MULTISTEP_DIALOG_PANELS = \"\".concat(MULTISTEP_DIALOG, \"-panels\");\nexport var MULTISTEP_DIALOG_LEFT_PANEL = \"\".concat(MULTISTEP_DIALOG, \"-left-panel\");\nexport var MULTISTEP_DIALOG_RIGHT_PANEL = \"\".concat(MULTISTEP_DIALOG, \"-right-panel\");\nexport var MULTISTEP_DIALOG_NAV_TOP = \"\".concat(MULTISTEP_DIALOG, \"-nav-top\");\nexport var MULTISTEP_DIALOG_NAV_RIGHT = \"\".concat(MULTISTEP_DIALOG, \"-nav-right\");\nexport var SECTION = \"\".concat(NS, \"-section\");\nexport var SECTION_COLLAPSED = \"\".concat(SECTION, \"-collapsed\");\nexport var SECTION_HEADER = \"\".concat(SECTION, \"-header\");\nexport var SECTION_HEADER_LEFT = \"\".concat(SECTION_HEADER, \"-left\");\nexport var SECTION_HEADER_TITLE = \"\".concat(SECTION_HEADER, \"-title\");\nexport var SECTION_HEADER_SUB_TITLE = \"\".concat(SECTION_HEADER, \"-sub-title\");\nexport var SECTION_HEADER_DIVIDER = \"\".concat(SECTION_HEADER, \"-divider\");\nexport var SECTION_HEADER_TABS = \"\".concat(SECTION_HEADER, \"-tabs\");\nexport var SECTION_HEADER_RIGHT = \"\".concat(SECTION_HEADER, \"-right\");\nexport var SECTION_HEADER_COLLAPSE_CARET = \"\".concat(SECTION_HEADER, \"-collapse-caret\");\nexport var SECTION_CARD = \"\".concat(SECTION, \"-card\");\nexport var NAVBAR = \"\".concat(NS, \"-navbar\");\nexport var NAVBAR_GROUP = \"\".concat(NAVBAR, \"-group\");\nexport var NAVBAR_HEADING = \"\".concat(NAVBAR, \"-heading\");\nexport var NAVBAR_DIVIDER = \"\".concat(NAVBAR, \"-divider\");\nexport var NON_IDEAL_STATE = \"\".concat(NS, \"-non-ideal-state\");\nexport var NON_IDEAL_STATE_VISUAL = \"\".concat(NON_IDEAL_STATE, \"-visual\");\nexport var NON_IDEAL_STATE_TEXT = \"\".concat(NON_IDEAL_STATE, \"-text\");\nexport var NUMERIC_INPUT = \"\".concat(NS, \"-numeric-input\");\nexport var OVERFLOW_LIST = \"\".concat(NS, \"-overflow-list\");\nexport var OVERFLOW_LIST_SPACER = \"\".concat(OVERFLOW_LIST, \"-spacer\");\nexport var OVERLAY = \"\".concat(NS, \"-overlay\");\nexport var OVERLAY_BACKDROP = \"\".concat(OVERLAY, \"-backdrop\");\nexport var OVERLAY_CONTAINER = \"\".concat(OVERLAY, \"-container\");\nexport var OVERLAY_CONTENT = \"\".concat(OVERLAY, \"-content\");\nexport var OVERLAY_INLINE = \"\".concat(OVERLAY, \"-inline\");\nexport var OVERLAY_OPEN = \"\".concat(OVERLAY, \"-open\");\nexport var OVERLAY_SCROLL_CONTAINER = \"\".concat(OVERLAY, \"-scroll-container\");\nexport var OVERLAY_START_FOCUS_TRAP = \"\".concat(OVERLAY, \"-start-focus-trap\");\nexport var OVERLAY_END_FOCUS_TRAP = \"\".concat(OVERLAY, \"-end-focus-trap\");\nexport var PANEL_STACK = \"\".concat(NS, \"-panel-stack\");\nexport var PANEL_STACK_HEADER = \"\".concat(PANEL_STACK, \"-header\");\nexport var PANEL_STACK_HEADER_BACK = \"\".concat(PANEL_STACK, \"-header-back\");\nexport var PANEL_STACK_VIEW = \"\".concat(PANEL_STACK, \"-view\");\nexport var PANEL_STACK2 = \"\".concat(NS, \"-panel-stack2\");\nexport var PANEL_STACK2_HEADER = \"\".concat(PANEL_STACK2, \"-header\");\nexport var PANEL_STACK2_HEADER_BACK = \"\".concat(PANEL_STACK2, \"-header-back\");\nexport var PANEL_STACK2_VIEW = \"\".concat(PANEL_STACK2, \"-view\");\nexport var POPOVER = \"\".concat(NS, \"-popover\");\nexport var POPOVER_ARROW = \"\".concat(POPOVER, \"-arrow\");\nexport var POPOVER_BACKDROP = \"\".concat(POPOVER, \"-backdrop\");\nexport var POPOVER_CAPTURING_DISMISS = \"\".concat(POPOVER, \"-capturing-dismiss\");\nexport var POPOVER_CONTENT = \"\".concat(POPOVER, \"-content\");\nexport var POPOVER_CONTENT_PLACEMENT = \"\".concat(POPOVER, \"-placement\");\nexport var POPOVER_CONTENT_SIZING = \"\".concat(POPOVER_CONTENT, \"-sizing\");\nexport var POPOVER_DISMISS = \"\".concat(POPOVER, \"-dismiss\");\nexport var POPOVER_DISMISS_OVERRIDE = \"\".concat(POPOVER_DISMISS, \"-override\");\nexport var POPOVER_MATCH_TARGET_WIDTH = \"\".concat(POPOVER, \"-match-target-width\");\nexport var POPOVER_OPEN = \"\".concat(POPOVER, \"-open\");\nexport var POPOVER_POPPER_ESCAPED = \"\".concat(POPOVER, \"-popper-escaped\");\nexport var POPOVER_REFERENCE_HIDDEN = \"\".concat(POPOVER, \"-reference-hidden\");\nexport var POPOVER_TARGET = \"\".concat(POPOVER, \"-target\");\nexport var POPOVER_TRANSITION_CONTAINER = \"\".concat(POPOVER, \"-transition-container\");\n/** @deprecated, no longer used in Blueprint v5.x */\nexport var POPOVER_WRAPPER = \"\".concat(POPOVER, \"-wrapper\");\nexport var PROGRESS_BAR = \"\".concat(NS, \"-progress-bar\");\nexport var PROGRESS_METER = \"\".concat(NS, \"-progress-meter\");\nexport var PROGRESS_NO_STRIPES = \"\".concat(NS, \"-no-stripes\");\nexport var PROGRESS_NO_ANIMATION = \"\".concat(NS, \"-no-animation\");\nexport var PORTAL = \"\".concat(NS, \"-portal\");\nexport var SKELETON = \"\".concat(NS, \"-skeleton\");\nexport var SLIDER = \"\".concat(NS, \"-slider\");\nexport var SLIDER_AXIS = \"\".concat(SLIDER, \"-axis\");\nexport var SLIDER_HANDLE = \"\".concat(SLIDER, \"-handle\");\nexport var SLIDER_LABEL = \"\".concat(SLIDER, \"-label\");\nexport var SLIDER_TRACK = \"\".concat(SLIDER, \"-track\");\nexport var SLIDER_PROGRESS = \"\".concat(SLIDER, \"-progress\");\nexport var START = \"\".concat(NS, \"-start\");\nexport var END = \"\".concat(NS, \"-end\");\nexport var SPINNER = \"\".concat(NS, \"-spinner\");\nexport var SPINNER_ANIMATION = \"\".concat(SPINNER, \"-animation\");\nexport var SPINNER_HEAD = \"\".concat(SPINNER, \"-head\");\nexport var SPINNER_NO_SPIN = \"\".concat(NS, \"-no-spin\");\nexport var SPINNER_TRACK = \"\".concat(SPINNER, \"-track\");\nexport var SEGMENTED_CONTROL = \"\".concat(NS, \"-segmented-control\");\nexport var TAB = \"\".concat(NS, \"-tab\");\nexport var TAB_ICON = \"\".concat(TAB, \"-icon\");\nexport var TAB_TAG = \"\".concat(TAB, \"-tag\");\nexport var TAB_INDICATOR = \"\".concat(TAB, \"-indicator\");\nexport var TAB_INDICATOR_WRAPPER = \"\".concat(TAB_INDICATOR, \"-wrapper\");\nexport var TAB_LIST = \"\".concat(TAB, \"-list\");\nexport var TAB_PANEL = \"\".concat(TAB, \"-panel\");\nexport var TABS = \"\".concat(TAB, \"s\");\nexport var TAG = \"\".concat(NS, \"-tag\");\nexport var TAG_REMOVE = \"\".concat(TAG, \"-remove\");\nexport var COMPOUND_TAG = \"\".concat(NS, \"-compound-tag\");\nexport var COMPOUND_TAG_LEFT = \"\".concat(COMPOUND_TAG, \"-left\");\nexport var COMPOUND_TAG_LEFT_CONTENT = \"\".concat(COMPOUND_TAG, \"-left-content\");\nexport var COMPOUND_TAG_RIGHT = \"\".concat(COMPOUND_TAG, \"-right\");\nexport var COMPOUND_TAG_RIGHT_CONTENT = \"\".concat(COMPOUND_TAG, \"-right-content\");\nexport var TAG_INPUT = \"\".concat(NS, \"-tag-input\");\nexport var TAG_INPUT_ICON = \"\".concat(TAG_INPUT, \"-icon\");\nexport var TAG_INPUT_VALUES = \"\".concat(TAG_INPUT, \"-values\");\nexport var TOAST = \"\".concat(NS, \"-toast\");\nexport var TOAST_CONTAINER = \"\".concat(TOAST, \"-container\");\nexport var TOAST_MESSAGE = \"\".concat(TOAST, \"-message\");\nexport var TOOLTIP = \"\".concat(NS, \"-tooltip\");\nexport var TOOLTIP_INDICATOR = \"\".concat(TOOLTIP, \"-indicator\");\nexport var TREE = \"\".concat(NS, \"-tree\");\nexport var TREE_NODE = \"\".concat(NS, \"-tree-node\");\nexport var TREE_NODE_CARET = \"\".concat(TREE_NODE, \"-caret\");\nexport var TREE_NODE_CARET_CLOSED = \"\".concat(TREE_NODE_CARET, \"-closed\");\nexport var TREE_NODE_CARET_NONE = \"\".concat(TREE_NODE_CARET, \"-none\");\nexport var TREE_NODE_CARET_OPEN = \"\".concat(TREE_NODE_CARET, \"-open\");\nexport var TREE_NODE_CONTENT = \"\".concat(TREE_NODE, \"-content\");\nexport var TREE_NODE_EXPANDED = \"\".concat(TREE_NODE, \"-expanded\");\nexport var TREE_NODE_ICON = \"\".concat(TREE_NODE, \"-icon\");\nexport var TREE_NODE_LABEL = \"\".concat(TREE_NODE, \"-label\");\nexport var TREE_NODE_LIST = \"\".concat(TREE_NODE, \"-list\");\nexport var TREE_NODE_SECONDARY_LABEL = \"\".concat(TREE_NODE, \"-secondary-label\");\nexport var TREE_NODE_SELECTED = \"\".concat(TREE_NODE, \"-selected\");\nexport var TREE_ROOT = \"\".concat(NS, \"-tree-root\");\nexport var ICON = \"\".concat(NS, \"-icon\");\nexport var ICON_STANDARD = \"\".concat(ICON, \"-standard\");\nexport var ICON_LARGE = \"\".concat(ICON, \"-large\");\nexport var ICON_MUTED = \"\".concat(ICON, \"-muted\");\n/**\n * Returns the namespace prefix for all Blueprint CSS classes.\n * Customize this namespace at build time by defining it with `webpack.DefinePlugin`.\n */\nexport function getClassNamespace() {\n return NS;\n}\n/** Return CSS class for alignment. */\nexport function alignmentClass(alignment) {\n switch (alignment) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n case Alignment.LEFT:\n case Alignment.START:\n return ALIGN_LEFT;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n case Alignment.RIGHT:\n case Alignment.END:\n return ALIGN_RIGHT;\n default:\n return undefined;\n }\n}\nexport function elevationClass(elevation) {\n if (elevation === undefined) {\n return undefined;\n }\n return \"\".concat(NS, \"-elevation-\").concat(elevation);\n}\nexport function iconClass(iconName) {\n if (iconName == null) {\n return undefined;\n }\n return iconName.indexOf(\"\".concat(NS, \"-icon-\")) === 0 ? iconName : \"\".concat(NS, \"-icon-\").concat(iconName);\n}\nexport function intentClass(intent) {\n if (intent == null || intent === Intent.NONE) {\n return undefined;\n }\n return \"\".concat(NS, \"-intent-\").concat(intent.toLowerCase());\n}\nexport function positionClass(position) {\n if (position === undefined) {\n return undefined;\n }\n return \"\".concat(NS, \"-position-\").concat(position);\n}\nexport function sizeClass(size, legacyProps) {\n var _a;\n if (size === \"small\") {\n return SMALL;\n }\n if (size === \"large\") {\n return LARGE;\n }\n var _b = legacyProps.large, large = _b === void 0 ? false : _b, _c = legacyProps.small, small = _c === void 0 ? false : _c;\n return _a = {},\n _a[LARGE] = large,\n _a[SMALL] = small,\n _a;\n}\nexport function variantClass(variant, legacyProps) {\n var _a;\n // variant takes precedence over minimal and outlined\n if (variant === \"outlined\") {\n return OUTLINED;\n }\n if (variant === \"minimal\") {\n return MINIMAL;\n }\n var _b = legacyProps.minimal, minimal = _b === void 0 ? false : _b, _c = legacyProps.outlined, outlined = _c === void 0 ? false : _c;\n return _a = {},\n _a[MINIMAL] = minimal,\n _a[OUTLINED] = outlined,\n _a;\n}\n//# sourceMappingURL=classes.js.map","/*\n * Copyright 2019 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __extends } from \"tslib\";\nimport * as React from \"react\";\nimport { isNodeEnv } from \"./utils\";\n/**\n * An abstract component that Blueprint components can extend\n * in order to add some common functionality like runtime props validation.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nvar AbstractPureComponent = /** @class */ (function (_super) {\n __extends(AbstractPureComponent, _super);\n function AbstractPureComponent(props) {\n var _this = _super.call(this, props) || this;\n // Not bothering to remove entries when their timeouts finish because clearing invalid ID is a no-op\n _this.timeoutIds = [];\n _this.requestIds = [];\n /**\n * Clear all known timeouts.\n */\n _this.clearTimeouts = function () {\n if (_this.timeoutIds.length > 0) {\n for (var _i = 0, _a = _this.timeoutIds; _i < _a.length; _i++) {\n var timeoutId = _a[_i];\n window.clearTimeout(timeoutId);\n }\n _this.timeoutIds = [];\n }\n };\n /**\n * Clear all known animation frame requests.\n */\n _this.cancelAnimationFrames = function () {\n if (_this.requestIds.length > 0) {\n for (var _i = 0, _a = _this.requestIds; _i < _a.length; _i++) {\n var requestId = _a[_i];\n window.cancelAnimationFrame(requestId);\n }\n _this.requestIds = [];\n }\n };\n if (!isNodeEnv(\"production\")) {\n _this.validateProps(_this.props);\n }\n return _this;\n }\n AbstractPureComponent.prototype.componentDidUpdate = function (_prevProps, _prevState, _snapshot) {\n if (!isNodeEnv(\"production\")) {\n this.validateProps(this.props);\n }\n };\n AbstractPureComponent.prototype.componentWillUnmount = function () {\n this.clearTimeouts();\n this.cancelAnimationFrames();\n };\n /**\n * Request an animation frame and remember its ID.\n * All pending requests will be canceled when component unmounts.\n *\n * @returns a \"cancel\" function that will cancel the request when invoked.\n */\n AbstractPureComponent.prototype.requestAnimationFrame = function (callback) {\n var handle = window.requestAnimationFrame(callback);\n this.requestIds.push(handle);\n return function () { return window.cancelAnimationFrame(handle); };\n };\n /**\n * Set a timeout and remember its ID.\n * All pending timeouts will be cleared when component unmounts.\n *\n * @returns a \"cancel\" function that will clear timeout when invoked.\n */\n AbstractPureComponent.prototype.setTimeout = function (callback, timeout) {\n var handle = window.setTimeout(callback, timeout);\n this.timeoutIds.push(handle);\n return function () { return window.clearTimeout(handle); };\n };\n /**\n * Ensures that the props specified for a component are valid.\n * Implementations should check that props are valid and usually throw an Error if they are not.\n * Implementations should not duplicate checks that the type system already guarantees.\n *\n * This method should be used instead of React's\n * [propTypes](https://facebook.github.io/react/docs/reusable-components.html#prop-validation) feature.\n * Like propTypes, these runtime checks run only in development mode.\n */\n AbstractPureComponent.prototype.validateProps = function (_props) {\n // implement in subclass\n };\n return AbstractPureComponent;\n}(React.PureComponent));\nexport { AbstractPureComponent };\n//# sourceMappingURL=abstractPureComponent.js.map","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __assign } from \"tslib\";\nexport var DISPLAYNAME_PREFIX = \"Blueprint5\";\n/** A collection of curated prop keys used across our Components which are not valid HTMLElement props. */\nvar INVALID_PROPS = [\n \"active\",\n \"alignText\",\n \"asyncControl\", // InputGroupProps\n \"containerRef\",\n \"current\",\n \"elementRef\", // not used anymore in Blueprint v5.x, but kept for backcompat if consumers use this naming pattern\n \"ellipsizeText\", // ButtonProps\n \"endIcon\",\n \"fill\",\n \"icon\",\n \"iconSize\",\n \"inputClassName\",\n \"inputRef\",\n \"intent\",\n \"inline\",\n \"large\",\n \"loading\",\n \"leftElement\",\n \"leftIcon\",\n \"minimal\",\n \"onRemove\", // TagProps, TagInputProps\n \"outlined\", // ButtonProps\n \"panel\", // TabProps\n \"panelClassName\", // TabProps\n \"popoverProps\",\n \"rightElement\",\n \"rightIcon\",\n \"round\",\n \"selectedValue\",\n \"size\",\n \"small\",\n \"tagName\",\n \"text\",\n \"textClassName\", // ButtonProps\n \"variant\",\n];\n/**\n * Typically applied to HTMLElements to filter out disallowed props. When applied to a Component,\n * can filter props from being passed down to the children. Can also filter by a combined list of\n * supplied prop keys and the denylist (only appropriate for HTMLElements).\n *\n * @param props The original props object to filter down.\n * @param {string[]} invalidProps If supplied, overwrites the default denylist.\n * @param {boolean} shouldMerge If true, will merge supplied invalidProps and denylist together.\n */\nexport function removeNonHTMLProps(props, invalidProps, shouldMerge) {\n if (invalidProps === void 0) { invalidProps = INVALID_PROPS; }\n if (shouldMerge === void 0) { shouldMerge = false; }\n if (shouldMerge) {\n invalidProps = invalidProps.concat(INVALID_PROPS);\n }\n return invalidProps.reduce(function (prev, curr) {\n // Props with hyphens (e.g. data-*) are always considered html props\n if (curr.indexOf(\"-\") !== -1) {\n return prev;\n }\n if (prev.hasOwnProperty(curr)) {\n delete prev[curr];\n }\n return prev;\n }, __assign({}, props));\n}\n//# sourceMappingURL=props.js.map","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __extends } from \"tslib\";\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { AbstractPureComponent, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX } from \"../../common/props\";\n/**\n * `Collapse` can be in one of six states, enumerated here.\n * When changing the `isOpen` prop, the following happens to the states:\n * isOpen={true} : CLOSED -> OPEN_START -> OPENING -> OPEN\n * isOpen={false} : OPEN -> CLOSING_START -> CLOSING -> CLOSED\n */\nexport var AnimationStates;\n(function (AnimationStates) {\n /**\n * The body is re-rendered, height is set to the measured body height and\n * the body Y is set to 0.\n */\n AnimationStates[AnimationStates[\"OPEN_START\"] = 0] = \"OPEN_START\";\n /**\n * Animation begins, height is set to auto. This is all animated, and on\n * complete, the state changes to OPEN.\n */\n AnimationStates[AnimationStates[\"OPENING\"] = 1] = \"OPENING\";\n /**\n * The collapse height is set to auto, and the body Y is set to 0 (so the\n * element can be seen as normal).\n */\n AnimationStates[AnimationStates[\"OPEN\"] = 2] = \"OPEN\";\n /**\n * Height has been changed from auto to the measured height of the body to\n * prepare for the closing animation in CLOSING.\n */\n AnimationStates[AnimationStates[\"CLOSING_START\"] = 3] = \"CLOSING_START\";\n /**\n * Height is set to 0 and the body Y is at -height. Both of these properties\n * are transformed, and then after the animation is complete, the state\n * changes to CLOSED.\n */\n AnimationStates[AnimationStates[\"CLOSING\"] = 4] = \"CLOSING\";\n /**\n * The contents of the collapse is not rendered, the collapse height is 0,\n * and the body Y is at -height (so that the bottom of the body is at Y=0).\n */\n AnimationStates[AnimationStates[\"CLOSED\"] = 5] = \"CLOSED\";\n})(AnimationStates || (AnimationStates = {}));\n/**\n * Collapse component.\n *\n * @see https://blueprintjs.com/docs/#core/components/collapse\n */\nvar Collapse = /** @class */ (function (_super) {\n __extends(Collapse, _super);\n function Collapse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n animationState: _this.props.isOpen ? AnimationStates.OPEN : AnimationStates.CLOSED,\n height: undefined,\n heightWhenOpen: undefined,\n };\n // The element containing the contents of the collapse.\n _this.contents = null;\n _this.contentsRefHandler = function (el) {\n _this.contents = el;\n if (_this.contents != null) {\n var height = _this.contents.clientHeight;\n _this.setState({\n animationState: _this.props.isOpen ? AnimationStates.OPEN : AnimationStates.CLOSED,\n height: height === 0 ? undefined : \"\".concat(height, \"px\"),\n heightWhenOpen: height === 0 ? undefined : height,\n });\n }\n };\n return _this;\n }\n Collapse.getDerivedStateFromProps = function (props, state) {\n var isOpen = props.isOpen;\n var animationState = state.animationState;\n if (isOpen) {\n switch (animationState) {\n case AnimationStates.OPEN:\n // no-op\n break;\n case AnimationStates.OPENING:\n // allow Collapse#onDelayedStateChange() to handle the transition here\n break;\n default:\n return { animationState: AnimationStates.OPEN_START };\n }\n }\n else {\n switch (animationState) {\n case AnimationStates.CLOSED:\n // no-op\n break;\n case AnimationStates.CLOSING:\n // allow Collapse#onDelayedStateChange() to handle the transition here\n break;\n default:\n // need to set an explicit height so that transition can work\n return {\n animationState: AnimationStates.CLOSING_START,\n height: \"\".concat(state.heightWhenOpen, \"px\"),\n };\n }\n }\n return null;\n };\n Collapse.prototype.render = function () {\n var isContentVisible = this.state.animationState !== AnimationStates.CLOSED;\n var shouldRenderChildren = isContentVisible || this.props.keepChildrenMounted;\n var displayWithTransform = isContentVisible && this.state.animationState !== AnimationStates.CLOSING;\n var isAutoHeight = this.state.height === \"auto\";\n var containerStyle = {\n height: isContentVisible ? this.state.height : undefined,\n overflowY: isAutoHeight ? \"visible\" : undefined,\n // transitions don't work with height: auto\n transition: isAutoHeight ? \"none\" : undefined,\n };\n var contentsStyle = {\n // only use heightWhenOpen while closing\n transform: displayWithTransform ? \"translateY(0)\" : \"translateY(-\".concat(this.state.heightWhenOpen, \"px)\"),\n // transitions don't work with height: auto\n transition: isAutoHeight ? \"none\" : undefined,\n };\n return React.createElement(this.props.component, {\n className: classNames(Classes.COLLAPSE, this.props.className),\n style: containerStyle,\n }, React.createElement(\"div\", { className: Classes.COLLAPSE_BODY, ref: this.contentsRefHandler, style: contentsStyle, \"aria-hidden\": !isContentVisible }, shouldRenderChildren ? this.props.children : null));\n };\n Collapse.prototype.componentDidMount = function () {\n this.forceUpdate();\n // HACKHACK: this should probably be done in getSnapshotBeforeUpdate\n if (this.props.isOpen) {\n this.setState({ animationState: AnimationStates.OPEN, height: \"auto\" });\n }\n else {\n this.setState({ animationState: AnimationStates.CLOSED, height: \"0px\" });\n }\n };\n Collapse.prototype.componentDidUpdate = function () {\n var _this = this;\n if (this.contents == null) {\n return;\n }\n var transitionDuration = this.props.transitionDuration;\n var animationState = this.state.animationState;\n if (animationState === AnimationStates.OPEN_START) {\n var clientHeight = this.contents.clientHeight;\n this.setState({\n animationState: AnimationStates.OPENING,\n height: \"\".concat(clientHeight, \"px\"),\n heightWhenOpen: clientHeight,\n });\n this.setTimeout(function () { return _this.onDelayedStateChange(); }, transitionDuration);\n }\n else if (animationState === AnimationStates.CLOSING_START) {\n var clientHeight_1 = this.contents.clientHeight;\n this.setTimeout(function () {\n return _this.setState({\n animationState: AnimationStates.CLOSING,\n height: \"0px\",\n heightWhenOpen: clientHeight_1,\n });\n });\n this.setTimeout(function () { return _this.onDelayedStateChange(); }, transitionDuration);\n }\n };\n Collapse.prototype.onDelayedStateChange = function () {\n switch (this.state.animationState) {\n case AnimationStates.OPENING:\n this.setState({ animationState: AnimationStates.OPEN, height: \"auto\" });\n break;\n case AnimationStates.CLOSING:\n this.setState({ animationState: AnimationStates.CLOSED });\n break;\n default:\n break;\n }\n };\n Collapse.displayName = \"\".concat(DISPLAYNAME_PREFIX, \".Collapse\");\n Collapse.defaultProps = {\n component: \"div\",\n isOpen: false,\n keepChildrenMounted: false,\n transitionDuration: 200,\n };\n return Collapse;\n}(AbstractPureComponent));\nexport { Collapse };\n//# sourceMappingURL=collapse.js.map","import React, {ChangeEventHandler, DOMAttributes} from \"react\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {\n Button,\n Checkbox,\n Collapse,\n Divider,\n Icon,\n IconName,\n Intent,\n MaybeElement, Menu, MenuItem, Popover,\n Classes,\n} from \"@blueprintjs/core\";\nimport {ConfigObject} from \"../ConfigObject\";\nimport {PanelActions} from \"@blueprintjs/core/lib/esm/components/panel-stack2/panelTypes\";\nimport {getOrCall, safeSetProperty} from 'ts-browser-helpers'\nimport {BPContainerComponent, BPContainerComponentState, BPContainerComponentProps} from './BPContainerComponent'\nimport classNames from \"classnames\";\nimport {AnimationStates} from \"@blueprintjs/core/lib/esm/components/collapse/collapse\";\n\nexport type BPFolderComponentState = BPContainerComponentState & {\n}\n\nexport type BPFolderComponentProps = BPContainerComponentProps & {\n icon?: IconName | MaybeElement\n}\n\n\nexport class BPFolderComponent extends BPContainerComponent<BPFolderComponentState, BPFolderComponentProps> {\n constructor(props: BPComponentProps<void>&PanelActions&BPFolderComponentProps, context: UiConfigRendererContextType) {\n super(props, context, {children: [], expanded: false, label: 'Folder'});\n }\n\n render() {\n const {\n icon,\n config,\n level,\n filter,\n ...props\n } = this.props\n\n const setExpanded = (e: boolean) => {\n if (e === this.state.expanded) return\n this.setState({...this.state, expanded: e})\n safeSetProperty(config, \"expanded\", e, true)\n // if (e) this.state.children.forEach(c => Array.isArray(c) ? null : c.uiRefresh?.(\"postFrame\", true, 1)) // todo: handle array and functions\n }\n let children = this.state.children\n const enabledToggle = children[0] && this.context.methods.getBinding(children[0])[1] === 'enabled' ? children[0] : undefined\n if(enabledToggle) children = children.slice(1)\n\n const ctxMenuBtns = children.filter(c=>{\n return c.type === 'button' && c.tags?.includes('context-menu')\n })\n let endIcon: MaybeElement = undefined\n if(ctxMenuBtns.length > 0){\n children = children.filter(c=>!ctxMenuBtns.includes(c))\n endIcon = (\n <Popover\n content={<ContextMenu buttons={ctxMenuBtns} context={this.context} />}\n placement=\"bottom-end\"\n >\n <Button\n icon=\"more\"\n variant={\"minimal\"}\n size={\"small\"}\n />\n </Popover>\n )\n }\n\n return !this.state.hidden ? (\n <FolderHeadCard\n key={config.uuid}\n open={this.state.expanded}\n disabled={this.state.disabled}\n level={level ?? 0}\n minimal={(level ?? 0) > 0}\n onClick={() => {\n if(this.state.readOnly) return\n setExpanded(!this.state.expanded)\n }}\n icon={icon}\n endIcon={endIcon}\n label={this.state.label}\n enabled={enabledToggle ? this.context.methods.getRawValue(enabledToggle) : undefined}\n onEnabledChange={(e) => enabledToggle && this.context.methods.setValue(enabledToggle, e.target.checked, {}).then(() => this.setState(this.state))}\n >\n <Collapse2 isOpen={this.state.expanded} keepChildrenMounted={true} transitionDuration={300}>\n <div className=\"folder-children\" style={{\n listStyleType: \"none\",\n paddingLeft: level??0 > 2 ? \"6px\" : 0}\n }> {/*todo use parameter instead of const 6*/}\n {children.map((c, i) =>\n <ConfigObject key={'c' + i} {...props} config={c}\n level={(level ?? 0) + 1}/>\n )}\n </div>\n </Collapse2>\n </FolderHeadCard>\n ) : null\n }\n}\n\nexport const FolderHeadCard: React.FC<React.PropsWithChildren<{\n open: boolean, label: string,\n minimal: boolean, level: number,\n disabled?: boolean,\n enabled?: boolean, onEnabledChange?: ChangeEventHandler<HTMLInputElement>,\n onClick: DOMAttributes<HTMLElement>['onClick']\n icon?: IconName | MaybeElement\n endIcon?: IconName | MaybeElement\n}>> = (props) => {\n const hasEnabled = (props.enabled !== undefined)\n return (\n <div\n // interactive={!props.open}\n className=\"folder-card\"\n // elevation={props.open ? 3 : undefined}\n >\n {props.level === 0 &&\n <Divider style={{margin: 0}}/>\n }\n <div className={props.minimal ? 'folder-head-card-minimal' : 'folder-head-card'} style={{\n paddingTop: props.level > 0 ? \"unset\" : undefined,\n paddingBottom: props.level > 0 ? \"unset\" : undefined,\n }}>\n {/*<H6 className=\"folder-head-label\"*/}\n {/* onClick={props.onClick}>{props.label}</H6>*/}\n {/*<Icon icon=\"chevron-right\" style={{*/}\n {/* rotate: props.open ? \"90deg\" : \"0deg\",*/}\n {/* transition: \"rotate 0.25s ease-in-out\"*/}\n {/*}} className=\"folder-head-label-icon\"/>*/}\n\n {/*<Button className=\"folder-trigger-button folder-trigger-text\" onClick={props.onClick}*/}\n {/* fill={true} variant={\"minimal\"}*/}\n {/* endIcon={(*/}\n {/* <Icon icon=\"chevron-right\" style={{*/}\n {/* rotate: props.open ? \"90deg\" : \"0deg\",*/}\n {/* transition: \"rotate 0.25s ease-in-out\"*/}\n {/* }} className=\"folder-head-label-icon\"/>*/}\n {/* )}>{props.label}*/}\n {/*</Button>*/}\n\n <Button\n className={\"folder-trigger-button folder-trigger-text \" + (props.open ? \"folder-trigger-button-expanded\" : \"\")}\n // fill={!props.minimal}\n fill={true}\n onClick={props.onClick}\n variant={\"minimal\"}\n disabled={props.disabled}\n size={props.minimal?\"small\":\"medium\"}\n style={props.level ? {marginLeft: \"6px\"} : {fontSize: \"0.95rem\", paddingTop: \"8px\", paddingBottom: \"8px\"}}\n // intent={props.open ? Intent.PRIMARY : Intent.NONE}\n intent={Intent.NONE}\n // icon={props.enabled !== undefined && <span style={{minWidth: '20px'}}></span>} // adding a span here will center the text in the button\n icon={props.icon ?? (\n <>\n <Icon icon=\"caret-right\" style={{\n rotate: props.open ? \"90deg\" : \"0deg\",\n transition: \"rotate 0.25s ease-in-out\"\n }}/>\n </>\n )}\n >{props.label}\n </Button>\n {hasEnabled && <Checkbox\n style={{margin: 0, position: 'absolute', left: '10px'}}\n inline size={\"large\"}\n defaultChecked={props.enabled}\n onChange={props.onEnabledChange}\n disabled={props.disabled}\n onClick={(e) => e.stopPropagation()}\n />}\n {props.endIcon && <div style={{position: 'absolute', right: '10px'}}>\n {props.endIcon}\n </div>}\n </div>\n {props.children}\n </div>\n )\n}\n\nexport class Collapse2 extends Collapse{\n private contentsRefHandler2 = (el: HTMLElement | null) => {\n // @ts-ignore\n this.contents = el;\n // @ts-ignore\n if (this.contents != null) {\n // @ts-ignore\n const height = this.contents.clientHeight;\n this.setState({\n animationState: this.props.isOpen ? AnimationStates.OPEN : AnimationStates.CLOSED,\n height: height === 0 ? undefined : `${height}px`,\n heightWhenOpen: height === 0 ? undefined : height,\n });\n }\n };\n\n public render() {\n const isContentVisible = this.state.animationState !== AnimationStates.CLOSED;\n const shouldRenderChildren = isContentVisible || this.props.keepChildrenMounted;\n // const displayWithTransform = isContentVisible && this.state.animationState !== AnimationStates.CLOSING;\n const isAutoHeight = this.state.height === \"auto\";\n\n const containerStyle = {\n height: isContentVisible ? this.state.height : undefined,\n overflowY: isAutoHeight ? \"visible\" : undefined,\n // transitions don't work with height: auto\n transition: isAutoHeight ? \"none\" : undefined,\n };\n\n const contentsStyle = {\n // only use heightWhenOpen while closing\n // transform: displayWithTransform ? \"translateY(0)\" : `translateY(-${this.state.heightWhenOpen}px)`,\n // transitions don't work with height: auto\n // transition: isAutoHeight ? \"none\" : undefined,\n display: \"block\", // for opacity animation\n visibility: isContentVisible ? \"visible\" : \"hidden\",\n opacity: this.state.animationState === AnimationStates.CLOSING || this.state.animationState === AnimationStates.CLOSED ? 0.1 : 1,\n } as React.CSSProperties;\n\n // if(isContentVisible && !isAutoHeight && this.state.heightWhenOpen && this.state.height){\n // const h = parseInt(this.state.height)\n // contentsStyle.opacity = h / this.state.heightWhenOpen;\n // console.log(contentsStyle.opacity)\n // }\n\n return React.createElement(\n this.props.component!,\n {\n className: classNames(Classes.COLLAPSE, this.props.className),\n style: containerStyle,\n },\n <div\n className={Classes.COLLAPSE_BODY}\n ref={this.contentsRefHandler2}\n style={contentsStyle}\n aria-hidden={!isContentVisible}\n >\n {shouldRenderChildren ? this.props.children : null}\n </div>,\n );\n }\n\n}\n\nexport const ContextMenu: React.FC<{\n buttons: any[];\n context: UiConfigRendererContextType;\n}> = ({ buttons, context }) => {\n return (\n <Menu>\n {buttons.map((btn, i) => {\n const getProps = ()=>{ // todo use UiConfigMethods.getBaseProps\n const hidden = getOrCall(btn.hidden) ?? false\n const disabled = getOrCall(btn.disabled) ?? false\n const readOnly = getOrCall(btn.readOnly) ?? false\n return { hidden, disabled, readOnly }\n }\n const props = getProps()\n return props.hidden ? null : (\n <MenuItem\n key={'ctx' + i}\n disabled={props.disabled || props.readOnly}\n text={context.methods.getLabel(btn)}\n onClick={(e) => {\n e.stopPropagation();\n const {hidden, disabled, readOnly} = getProps()\n if (hidden || disabled || readOnly) return;\n // todo loading state for promise\n context.methods.clickButton(btn, { args: [e] });\n }}\n />\n );\n })}\n </Menu>\n );\n};\n","import {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {BPLabelledComponent, BPLabelledComponentState} from \"./BPLabelledComponent\";\nimport {equalsPrimitive, PrimitiveVal} from \"uiconfig.js\";\n\nexport type BPValueComponentState<TStateValue> = BPLabelledComponentState & {\n value: TStateValue\n}\n\nexport abstract class BPValueComponent<TValue extends PrimitiveVal, TState extends BPValueComponentState<TStateValue>, TStateValue> extends BPLabelledComponent<TValue, TState> {\n\n protected constructor(props: BPComponentProps<TValue>, context: UiConfigRendererContextType, state: TState) {\n super(props, context, state);\n this.setValue = this.setValue.bind(this)\n }\n\n abstract convertValueToState(value: TValue, state: TState): TState;\n\n abstract convertStateToValue(state: TState): Promise<TValue>;\n\n // this should be state.value ideally which is initialValue in parent component\n // a separate variable is made here so that it can be undefined in the beginning.\n private _lastValRef: TValue | undefined\n\n getUpdatedState(state: TState): TState {\n const val = this.context.methods.getValue<TValue>(this.props.config, this._lastValRef, false) // this has to be false otherwise the children component will rerender everytime. like sliders\n if(this._lastValRef !== undefined && val !== undefined){\n // changed from outside, so we need to update the children\n this.keyVersion++\n }\n this._lastValRef = val\n // console.log('getUpdatedState', val);\n state = super.getUpdatedState(state)\n state = val !== undefined ? this.convertValueToState(val, state) : state\n return state\n }\n\n protected _previousLast = false\n\n // is this really required?\n doesNeedRefresh(state: TState, _last?: boolean): boolean {\n const needsRefresh = this._previousLast !== _last || !equals(this.state.value, state.value);\n this._previousLast = _last ?? true;\n // console.log('doesNeedRefresh', needsRefresh, this.state.value, state.value);\n return needsRefresh;\n }\n\n setState(state: TState, callback?: () => void) {\n // this.keyVersion++ // dont in getUpdatedState\n super.setState(state, callback);\n }\n\n async setValue(value: TStateValue, last?: boolean, refreshState = true) {\n return this.updateStateValue({...this.state, value}, last, refreshState)\n }\n\n forceOnChange: boolean = false\n\n async updateStateValue(state: TState, last?: boolean, refreshState = true) {\n if (!this.doesNeedRefresh(state, last)) {\n await this.setStatePromise(state)\n return\n }\n let val = await this.convertStateToValue(state)\n this._lastValRef = val\n await this.context.methods.setValue(this.props.config, val, {last}, this.forceOnChange)\n if(refreshState) await this.refreshConfigState(state)\n }\n\n}\n\nfunction equals(a: any, b: any){\n return equalsPrimitive(a, b)\n}\n","import {FormGroup} from \"@blueprintjs/core\";\nimport {CSSProperties, PropsWithChildren, ReactNode} from \"react\";\n\nexport function FormGroupComponent(props: PropsWithChildren<{\n label: string|ReactNode, flexBasis?: string, disabled?: boolean,\n style?: CSSProperties\n}>) {\n return (\n <FormGroup className=\"xPaddedContent folderContent\" contentClassName=\"formGroupContent\"\n style={{\n justifyContent: \"space-between\",\n marginTop: \"2px\",\n marginBottom: \"2px\",\n flexBasis: props.flexBasis ?? \"50%\",\n ...props.style,\n }}\n // helperText=\"Helper text with details...\"\n label={typeof props.label !== 'string' ? props.label : (<span title={props.label}>{props.label}</span>)}\n inline={true}\n disabled={props.disabled}\n // labelInfo=\"(required)\"\n >\n {props.children}\n </FormGroup>\n )\n}\n","import {BPValueComponent, BPValueComponentState} from \"./BPValueComponent\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {ReactNode} from \"react\";\nimport {FormGroupComponent} from \"../components/FormGroupComponent\";\nimport {PrimitiveVal} from \"uiconfig.js\";\n\nexport abstract class BPInputComponent<\n TStateValue extends PrimitiveVal, TState extends BPValueComponentState<TStateValue> = BPValueComponentState<TStateValue>>\n extends BPValueComponent<TStateValue, TState, TStateValue> {\n\n protected constructor(props: BPComponentProps<TStateValue>, context: UiConfigRendererContextType, state: TState) {\n super(props, context, state);\n }\n\n convertValueToState(value: TStateValue, state: TState): TState {\n return {...state, value}\n }\n\n async convertStateToValue(state: TState): Promise<TStateValue> {\n return state.value;\n }\n\n abstract renderInput(): ReactNode;\n\n protected flexBasis = \"100%\"\n\n render() {\n return !this.state.hidden ? (\n <FormGroupComponent disabled={this.state.disabled}\n label={this.state.label}\n flexBasis={this.state.baseWidth ?? this.flexBasis}\n key={this.props.config.uuid}\n >\n {this.renderInput()}\n </FormGroupComponent>\n ) : null\n }\n}\n","import React, {ChangeEventHandler} from \"react\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {InputGroup, TextArea} from \"@blueprintjs/core\";\nimport {BPInputComponent} from \"./BPInputComponent\";\nimport {BPValueComponentState} from \"./BPValueComponent\";\n\nexport class BPTextInputComponent extends BPInputComponent<string> {\n constructor(props: BPComponentProps<string>, context: UiConfigRendererContextType) {\n super(props, context, {value: '', label: 'Input'});\n }\n\n private _inputRef = React.createRef<HTMLInputElement|HTMLTextAreaElement>()\n\n private _iv = 0\n async refreshConfigState(state?: BPValueComponentState<string>): Promise<void> {\n const iv = this._iv\n await super.refreshConfigState(state);\n if(iv === this._iv) {\n if (this._inputRef.current && this._inputRef.current.value !== this.state.value)\n this._inputRef.current.value = this.state.value\n }\n }\n\n private _edited = false\n private _onChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n this._iv+=1\n this._edited = true\n this.setValue(e.target.value, false); // todo: set loading while this promise is happening.\n }\n\n // after an edit, blur sets the value once more with `last: true`: the change event marks the end of the edit and\n // the undo manager closes the step that merged the keystrokes\n private _onBlur = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (!this._edited) return\n this._edited = false\n this._iv+=1\n this.setValue(e.target.value, true);\n }\n\n renderInput() {\n const config = this.props.config as any;\n const isMultiline = config.multiline === true;\n\n if (isMultiline) {\n return (\n <TextArea\n defaultValue={this.state.value}\n inputRef={this._inputRef as any}\n disabled={this.state.disabled}\n readOnly={this.state.readOnly}\n key={this.props.config.uuid}\n fill={true}\n rows={config.rows}\n cols={config.cols}\n autoResize={config.autoResize}\n onChange={this._onChange as any}\n onBlur={this._onBlur}/>\n )\n }\n\n return (\n <InputGroup\n defaultValue={this.state.value}\n inputRef={this._inputRef as any}\n disabled={this.state.disabled}\n readOnly={this.state.readOnly}\n key={this.props.config.uuid}\n fill={true}\n onChange={this._onChange}\n onBlur={this._onBlur}/>\n )\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ns = \"[Blueprint]\";\n\nexport const CLAMP_MIN_MAX = ns + ` clamp: max cannot be less than min`;\n\nexport const ALERT_WARN_CANCEL_PROPS = ns + ` <Alert> cancelButtonText and onCancel should be set together.`;\nexport const ALERT_WARN_CANCEL_ESCAPE_KEY =\n ns + ` <Alert> canEscapeKeyCancel enabled without onCancel or onClose handler.`;\nexport const ALERT_WARN_CANCEL_OUTSIDE_CLICK =\n ns + ` <Alert> canOutsideClickCancel enabled without onCancel or onClose handler.`;\n\nexport const ALIGN_INDICATOR_LEFT =\n ns + ` alignIndicator=\"left\" is deprecated. Please use alignIndicator=\"start\" instead.`;\nexport const ALIGN_INDICATOR_RIGHT =\n ns + ` alignIndicator=\"right\" is deprecated. Please use alignIndicator=\"end\" instead.`;\nexport const ALIGN_INDICATOR_CENTER =\n ns + `alignIndicator=\"center\" is not supported on control components and will be ignored.`;\nexport const ALIGN_TEXT_LEFT = ns + ` alignText=\"left\" is deprecated. Please use alignText=\"start\" instead.`;\nexport const ALIGN_TEXT_RIGHT = ns + ` alignText=\"right\" is deprecated. Please use alignText=\"end\" instead.`;\n\nexport const BUTTON_WARN_MINIMAL = ns + ` <Button> minimal is deprecated. Please use variant=\"minimal\".`;\nexport const BUTTON_GROUP_WARN_MINIMAL = ns + ` <ButtonGroup> minimal is deprecated. Please use variant=\"minimal\".`;\nexport const BUTTON_WARN_OUTLINED = ns + ` <Button> outlined is deprecated. Please use variant=\"outlined\".`;\nexport const BUTTON_GROUP_WARN_OUTLINED = ns + ` <ButtonGroup> outlined is deprecated. Please use variant=\"outlined\".`;\n\nexport const HOTKEYS_HOTKEY_CHILDREN = ns + ` <Hotkeys> only accepts <Hotkey> children.`;\n\nexport const HOTKEYS_PROVIDER_NOT_FOUND =\n ns +\n ` useHotkeys() was used outside of a <HotkeysProvider> context. These hotkeys will not be shown in the hotkeys help dialog.`;\nexport const HOTKEYS_TARGET_CHILDREN_LOCAL_HOTKEYS =\n ns +\n ` <HotkeysTarget2> was configured with local hotkeys, but you did not use the generated event handlers to bind their event handlers. Try using a render function as the child of this component.`;\n\nexport const INPUT_WARN_LEFT_ELEMENT_LEFT_ICON_MUTEX =\n ns + ` <InputGroup> leftElement and leftIcon prop are mutually exclusive, with leftElement taking priority.`;\n\nexport const NAVBAR_GROUP_ALIGN_CENTER =\n ns +\n ` <NavbarGroup> does not support align=\"center\". Only \"left\" or \"right\" alignment is allowed, and align=\"center\" will be ignored.`;\n\nexport const NUMERIC_INPUT_MIN_MAX = ns + ` <NumericInput> requires min to be no greater than max if both are defined.`;\nexport const NUMERIC_INPUT_MINOR_STEP_SIZE_BOUND =\n ns + ` <NumericInput> requires minorStepSize to be no greater than stepSize.`;\nexport const NUMERIC_INPUT_MAJOR_STEP_SIZE_BOUND =\n ns + ` <NumericInput> requires stepSize to be no greater than majorStepSize.`;\nexport const NUMERIC_INPUT_MINOR_STEP_SIZE_NON_POSITIVE =\n ns + ` <NumericInput> requires minorStepSize to be strictly greater than zero.`;\nexport const NUMERIC_INPUT_MAJOR_STEP_SIZE_NON_POSITIVE =\n ns + ` <NumericInput> requires majorStepSize to be strictly greater than zero.`;\nexport const NUMERIC_INPUT_STEP_SIZE_NON_POSITIVE =\n ns + ` <NumericInput> requires stepSize to be strictly greater than zero.`;\nexport const NUMERIC_INPUT_CONTROLLED_VALUE_INVALID =\n ns + ` <NumericInput> controlled value prop does not adhere to stepSize, min, and/or max constraints.`;\n\nexport const PANEL_STACK_INITIAL_PANEL_STACK_MUTEX =\n ns + ` <PanelStack> requires exactly one of initialPanel and stack prop`;\nexport const PANEL_STACK_REQUIRES_PANEL = ns + ` <PanelStack> requires at least one panel in the stack`;\n\nexport const OVERFLOW_LIST_OBSERVE_PARENTS_CHANGED =\n ns + ` <OverflowList> does not support changing observeParents after mounting.`;\n\nexport const POPOVER_REQUIRES_TARGET = `${ns} <Popover> requires renderTarget prop or a child element.`;\nexport const POPOVER_HAS_BACKDROP_INTERACTION = `${ns} <Popover hasBackdrop={true}> requires interactionKind=\"click\".`;\nexport const POPOVER_WARN_TOO_MANY_CHILDREN = `${ns} <Popover> supports only one child which is rendered as its target; additional children are ignored.`;\nexport const POPOVER_WARN_DOUBLE_TARGET =\n ns + ` <Popover> with children ignores renderTarget prop; use either prop or children.`;\nexport const POPOVER_WARN_EMPTY_CONTENT = ns + ` Disabling <Popover> with empty/whitespace content...`;\nexport const POPOVER_WARN_HAS_BACKDROP_INLINE = ns + ` <Popover usePortal={false}> ignores hasBackdrop`;\nexport const POPOVER_WARN_PLACEMENT_AND_POSITION_MUTEX =\n ns + ` <Popover> supports either placement or position prop, not both.`;\nexport const POPOVER_WARN_UNCONTROLLED_ONINTERACTION = ns + ` <Popover> onInteraction is ignored when uncontrolled.`;\nexport const POPOVER_WARN_TARGET_PROPS_WITH_RENDER_TARGET =\n ns + ` <Popover> targetProps value is ignored when renderTarget API is used.`;\n\nexport const PORTAL_CONTEXT_CLASS_NAME_STRING = ns + ` <Portal> context blueprintPortalClassName must be string`;\nexport const PORTAL_LEGACY_CONTEXT_API =\n ns + ` setting blueprintPortalClassName via legacy React context API is deprecated, use <PortalProvider> instead.`;\n\nexport const RADIOGROUP_WARN_CHILDREN_OPTIONS_MUTEX =\n ns + ` <RadioGroup> children and options prop are mutually exclusive, with options taking priority.`;\n\nexport const SLIDER_ZERO_STEP = ns + ` <Slider> stepSize must be greater than zero.`;\nexport const SLIDER_ZERO_LABEL_STEP = ns + ` <Slider> labelStepSize must be greater than zero.`;\nexport const SLIDER_MIN = ns + ` <Slider> min prop must be a finite number.`;\nexport const SLIDER_MAX = ns + ` <Slider> max prop must be a finite number.`;\nexport const RANGESLIDER_NULL_VALUE = ns + ` <RangeSlider> value prop must be an array of two non-null numbers.`;\nexport const MULTISLIDER_INVALID_CHILD = ns + ` <MultiSlider> children must be <SliderHandle>s or <SliderTrackStop>s`;\nexport const MULTISLIDER_WARN_LABEL_STEP_SIZE_LABEL_VALUES_MUTEX =\n ns +\n ` <MultiSlider> labelStepSize and labelValues prop are mutually exclusive, with labelStepSize taking priority.`;\n\nexport const SPINNER_WARN_CLASSES_SIZE = ns + ` <Spinner> Classes.SMALL/LARGE are ignored if size prop is set.`;\n\nexport const TOASTER_CREATE_NULL =\n ns +\n ` OverlayToaster.create() is not supported inside React lifecycle methods in React 16.` +\n ` See usage example on the docs site. https://blueprintjs.com/docs/#core/components/toast.example`;\nexport const TOASTER_CREATE_ASYNC_NULL =\n ns +\n ` OverlayToaster.createAsync() received a null component ref. This can happen if called inside React lifecycle ` +\n `methods in React 16. See usage example on the docs site. ` +\n `https://blueprintjs.com/docs/#core/components/toast.example`;\nexport const TOASTER_MAX_TOASTS_INVALID =\n ns + ` <OverlayToaster> maxToasts is set to an invalid number, must be greater than 0`;\nexport const TOASTER_WARN_INLINE =\n ns + ` OverlayToaster.create() ignores inline prop as it always creates a new element.`;\n\nexport const DIALOG_WARN_NO_HEADER_ICON = ns + ` <Dialog> iconName is ignored if title is omitted.`;\nexport const DIALOG_WARN_NO_HEADER_CLOSE_BUTTON =\n ns + ` <Dialog> isCloseButtonShown prop is ignored if title is omitted.`;\n\nexport const DRAWER_ANGLE_POSITIONS_ARE_CASTED =\n ns + ` <Drawer> all angle positions are casted into pure position (TOP, BOTTOM, LEFT or RIGHT)`;\n\nexport const OVERLAY2_REQUIRES_OVERLAY_PROVDER =\n ns +\n ` <Overlay2> was used outside of a <OverlaysProvider> context. This will no longer be supported in ` +\n `Blueprint v6. See https://github.com/palantir/blueprint/wiki/Overlay2-migration`;\nexport const OVERLAY_CHILD_REF_AND_REFS_MUTEX =\n ns + ` <Overlay2> cannot use childRef and childRefs props simultaneously`;\nexport const OVERLAY_WITH_MULTIPLE_CHILDREN_REQUIRES_CHILD_REFS =\n ns + ` <Overlay2> requires childRefs prop when rendering multiple child elements`;\nexport const OVERLAY_CHILD_REQUIRES_KEY =\n ns + ` <Overlay2> requires each child element to have a unique key prop when childRefs is used`;\n\nexport function logDeprecatedSizeWarning(component: string, props: Partial<Record<\"large\" | \"small\", boolean>>) {\n const { large, small } = props;\n if (large && small) {\n console.warn(\n ns +\n ` <${component}> large and small props are mutually exclusive. Please use size=\"large\" or size=\"small\" instead.`,\n );\n } else if (large) {\n console.warn(ns + ` <${component}> large is deprecated. Please use size=\"large\" instead.`);\n } else if (small) {\n console.warn(ns + ` <${component}> small is deprecated. Please use size=\"small\" instead.`);\n }\n}\n","/*\n * Copyright 2020 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CLAMP_MIN_MAX } from \"../errors\";\n\n// injected by webpack.DefinePlugin\n// only accessible within this file, so use `Utils.isNodeEnv(env)` from the outside.\ndeclare let NODE_ENV: string;\n\n/** Returns whether bundler-injected variable `NODE_ENV` equals `env`. */\nexport function isNodeEnv(env: string) {\n return typeof NODE_ENV !== \"undefined\" && NODE_ENV === env;\n}\n\n/**\n * Returns the difference in length between two arrays. A `null` argument is\n * considered an empty list. The return value will be positive if `a` is longer\n * than `b`, negative if the opposite is true, and zero if their lengths are\n * equal.\n */\nexport function arrayLengthCompare(a: any[] = [], b: any[] = []) {\n return a.length - b.length;\n}\n\n/**\n * Returns true if the two numbers are within the given tolerance of each other.\n * This is useful to correct for floating point precision issues, less useful\n * for integers.\n */\nexport function approxEqual(a: number, b: number, tolerance = 0.00001) {\n return Math.abs(a - b) <= tolerance;\n}\n\n/**\n * Clamps the given number between min and max values. Returns value if within\n * range, or closest bound.\n */\nexport function clamp(val: number, min: number, max: number) {\n if (val == null) {\n return val;\n }\n if (max < min) {\n throw new Error(CLAMP_MIN_MAX);\n }\n return Math.min(Math.max(val, min), max);\n}\n\n/** Returns the number of decimal places in the given number. */\nexport function countDecimalPlaces(num: number) {\n if (!isFinite(num)) {\n return 0;\n }\n let e = 1;\n let p = 0;\n while (Math.round(num * e) / e !== num) {\n e *= 10;\n p++;\n }\n return p;\n}\n\nconst uniqueCountForNamespace = new Map<string, number>();\n/** Generate a unique ID within a given namespace, using a simple counter-based implementation to avoid collisions. */\nexport function uniqueId(namespace: string) {\n const curCount = uniqueCountForNamespace.get(namespace) ?? 0;\n uniqueCountForNamespace.set(namespace, curCount + 1);\n return `${namespace}-${curCount}`;\n}\n\n/**\n * @returns `true` if the value is an empty string after trimming whitespace\n */\nexport function isEmptyString(val: any) {\n return typeof val === \"string\" && val.trim().length === 0;\n}\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clamp } from \"../../common/utils\";\n\n/** Returns the `decimal` number separator based on locale */\nfunction getDecimalSeparator(locale: string) {\n const testNumber = 1.9;\n const testText = testNumber.toLocaleString(locale);\n const one = (1).toLocaleString(locale);\n const nine = (9).toLocaleString(locale);\n const pattern = `${one}(.+)${nine}`;\n\n const result = new RegExp(pattern).exec(testText);\n\n return (result && result[1]) || \".\";\n}\n\nexport function toLocaleString(num: number, locale: string = \"en-US\") {\n // HACKHACK: roundingPriority is not supported yet in TypeScript https://github.com/microsoft/TypeScript/issues/43336\n return sanitizeNumericInput(num.toLocaleString(locale, { roundingPriority: \"morePrecision\" } as any), locale);\n}\n\nexport function clampValue(value: number, min?: number, max?: number) {\n // defaultProps won't work if the user passes in null, so just default\n // to +/- infinity here instead, as a catch-all.\n const adjustedMin = min != null ? min : -Infinity;\n const adjustedMax = max != null ? max : Infinity;\n return clamp(value, adjustedMin, adjustedMax);\n}\n\nexport function getValueOrEmptyValue(value: number | string = \"\") {\n return value.toString();\n}\n\n/** Transform the localized character (ex. \"\") to a javascript recognizable string number (ex. \"10.99\") */\nfunction transformLocalizedNumberToStringNumber(character: string, locale: string) {\n const charactersMap = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(value => value.toLocaleString(locale));\n const jsNumber = charactersMap.indexOf(character);\n\n if (jsNumber !== -1) {\n return jsNumber;\n } else {\n return character;\n }\n}\n\n/** Transforms the localized number (ex. \"10,99\") to a javascript recognizable string number (ex. \"10.99\") */\nexport function parseStringToStringNumber(value: number | string, locale: string | undefined): string {\n const valueAsString = \"\" + value;\n if (parseFloat(valueAsString).toString() === value.toString()) {\n return value.toString();\n }\n\n if (locale !== undefined) {\n const decimalSeparator = getDecimalSeparator(locale);\n const sanitizedString = sanitizeNumericInput(valueAsString, locale);\n\n return sanitizedString\n .split(\"\")\n .map(character => transformLocalizedNumberToStringNumber(character, locale))\n .join(\"\")\n .replace(decimalSeparator, \".\");\n }\n\n return value.toString();\n}\n\n/** Returns `true` if the string represents a valid numeric value, like \"1e6\". */\nexport function isValueNumeric(value: string, locale: string | undefined) {\n // checking if a string is numeric in Typescript is a big pain, because\n // we can't simply toss a string parameter to isFinite. below is the\n // essential approach that jQuery uses, which involves subtracting a\n // parsed numeric value from the string representation of the value. we\n // need to cast the value to the `any` type to allow this operation\n // between dissimilar types.\n const stringToStringNumber = parseStringToStringNumber(value, locale);\n return value != null && (stringToStringNumber as any) - parseFloat(stringToStringNumber) + 1 >= 0;\n}\n\nexport function isValidNumericKeyboardEvent(e: React.KeyboardEvent, locale: string | undefined) {\n // unit tests may not include e.key. don't bother disabling those events.\n if (e.key == null) {\n return true;\n }\n\n // allow modified key strokes that may involve letters and other\n // non-numeric/invalid characters (Cmd + A, Cmd + C, Cmd + V, Cmd + X).\n if (e.ctrlKey || e.altKey || e.metaKey) {\n return true;\n }\n\n // keys that print a single character when pressed have a `key` name of\n // length 1. every other key has a longer `key` name (e.g. \"Backspace\",\n // \"ArrowUp\", \"Shift\"). since none of those keys can print a character\n // to the field--and since they may have important native behaviors\n // beyond printing a character--we don't want to disable their effects.\n const isSingleCharKey = e.key.length === 1;\n if (!isSingleCharKey) {\n return true;\n }\n\n // now we can simply check that the single character that wants to be printed\n // is a floating-point number character that we're allowed to print.\n return isFloatingPointNumericCharacter(e.key, locale);\n}\n\n/**\n * A regex that matches a string of length 1 (i.e. a standalone character)\n * if and only if it is a floating-point number character as defined by W3C:\n * https://www.w3.org/TR/2012/WD-html-markup-20120329/datatypes.html#common.data.float\n *\n * Floating-point number characters are the only characters that can be\n * printed within a default input[type=\"number\"]. This component should\n * behave the same way when this.props.allowNumericCharactersOnly = true.\n * See here for the input[type=\"number\"].value spec:\n * https://www.w3.org/TR/2012/WD-html-markup-20120329/input.number.html#input.number.attrs.value\n */\nfunction isFloatingPointNumericCharacter(character: string, locale: string | undefined) {\n if (locale !== undefined) {\n const decimalSeparator = getDecimalSeparator(locale).replace(\".\", \"\\\\.\");\n const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(value => value.toLocaleString(locale)).join(\"\");\n const localeFloatingPointNumericCharacterRegex = new RegExp(\n \"^[Ee\" + numbers + \"\\\\+\\\\-\" + decimalSeparator + \"]$\",\n );\n\n return localeFloatingPointNumericCharacterRegex.test(character);\n } else {\n const floatingPointNumericCharacterRegex = /^[Ee0-9\\+\\-\\.]$/;\n\n return floatingPointNumericCharacterRegex.test(character);\n }\n}\n\n/**\n * Round the value to have _up to_ the specified maximum precision.\n *\n * This differs from `toFixed(5)` in that trailing zeroes are not added on\n * more precise values, resulting in shorter strings.\n */\nexport function toMaxPrecision(value: number, maxPrecision: number) {\n // round the value to have the specified maximum precision (toFixed is the wrong choice,\n // because it would show trailing zeros in the decimal part out to the specified precision)\n // source: http://stackoverflow.com/a/18358056/5199574\n const scaleFactor = Math.pow(10, maxPrecision);\n return Math.round(value * scaleFactor) / scaleFactor;\n}\n\n/**\n * Convert Japanese full-width numbers, e.g. '5', to ASCII, e.g. '5'\n * This should be called before performing any other numeric string input validation.\n */\nfunction convertFullWidthNumbersToAscii(value: string) {\n return value.replace(/[\\uFF10-\\uFF19]/g, m => String.fromCharCode(m.charCodeAt(0) - 0xfee0));\n}\n\n/**\n * Convert full-width (Japanese) numbers to ASCII, and strip all characters that are not valid floating-point numeric characters\n */\nexport function sanitizeNumericInput(value: string, locale: string | undefined) {\n const valueChars = convertFullWidthNumbersToAscii(value).split(\"\");\n const sanitizedValueChars = valueChars.filter(valueChar => isFloatingPointNumericCharacter(valueChar, locale));\n\n return sanitizedValueChars.join(\"\");\n}\n","import {\n AbstractPureComponent,\n Classes,\n DISPLAYNAME_PREFIX,\n Icon,\n InputGroupProps,\n removeNonHTMLProps\n} from \"@blueprintjs/core\";\nimport {InputGroupState} from \"@blueprintjs/core/lib/esnext/components/forms/inputGroup\";\nimport classNames from \"classnames\";\nimport * as React from \"react\";\n\nexport interface InputGroup2Props extends InputGroupProps{\n leftElementWidth?: number|string\n rightElementWidth?: number|string\n}\nexport const NON_HTML_PROPS: Array<keyof InputGroup2Props> = [\"inputSize\", \"onValueChange\", \"leftElementWidth\", \"rightElementWidth\"];\n\nexport class InputGroup2 extends AbstractPureComponent<InputGroup2Props, InputGroupState> {\n public static displayName = `${DISPLAYNAME_PREFIX}.InputGroup`;\n\n public state: InputGroupState = {};\n\n private leftElement: HTMLElement | null = null;\n\n private rightElement: HTMLElement | null = null;\n\n private refHandlers = {\n leftElement: (ref: HTMLSpanElement | null) => (this.leftElement = ref),\n rightElement: (ref: HTMLSpanElement | null) => (this.rightElement = ref),\n };\n\n public render() {\n const {\n // asyncControl = false,\n className,\n disabled,\n fill,\n inputClassName,\n inputRef,\n inputSize,\n intent,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n large,\n readOnly,\n round,\n size = \"medium\",\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n small,\n tagName = \"div\",\n } = this.props;\n const inputGroupClasses = classNames(\n Classes.INPUT_GROUP,\n Classes.intentClass(intent),\n {\n [Classes.DISABLED]: disabled,\n [Classes.READ_ONLY]: readOnly,\n [Classes.FILL]: fill,\n [Classes.ROUND]: round,\n },\n Classes.sizeClass(size, {large, small}),\n className,\n );\n\n const paddingLeft = this.state.leftElementWidth || this.props.leftElementWidth || undefined\n const paddingRight = this.state.rightElementWidth || this.props.rightElementWidth || undefined\n const style: React.CSSProperties = {\n ...this.props.style,\n // paddingLeft: this.state.leftElementWidth || this.props.leftElementWidth || 0,\n // paddingRight: this.state.rightElementWidth || this.props.rightElementWidth || 0,\n };\n if(paddingLeft !== undefined)\n style.paddingLeft = paddingLeft\n if(paddingRight !== undefined)\n style.paddingRight = paddingRight\n\n const inputProps = {\n type: \"text\",\n ...removeNonHTMLProps(this.props, NON_HTML_PROPS, true),\n \"aria-disabled\": disabled,\n className: classNames(Classes.INPUT, inputClassName),\n onChange: this.handleInputChange,\n size: inputSize ?? (typeof size === \"number\" ? size : undefined),\n style,\n } satisfies React.HTMLProps<HTMLInputElement>;\n const inputElement = /*asyncControl ? (\n <AsyncControllableInput {...inputProps} inputRef={inputRef} />\n ) : */(\n <input {...inputProps} ref={inputRef}/>\n );\n\n return React.createElement(\n tagName,\n {className: inputGroupClasses},\n this.maybeRenderLeftElement(),\n inputElement,\n this.maybeRenderRightElement(),\n );\n }\n\n public componentDidMount() {\n this.updateInputWidth();\n }\n\n public componentDidUpdate(prevProps: InputGroupProps) {\n const {leftElement, rightElement} = this.props;\n if (prevProps.leftElement !== leftElement || prevProps.rightElement !== rightElement) {\n this.updateInputWidth();\n }\n }\n\n protected validateProps(_props: InputGroupProps) {\n // if (props.leftElement != null && props.leftIcon != null) {\n // console.warn(INPUT_WARN_LEFT_ELEMENT_LEFT_ICON_MUTEX);\n // }\n }\n\n private handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value;\n this.props.onChange?.(event);\n this.props.onValueChange?.(value, event.target);\n };\n\n private maybeRenderLeftElement() {\n const {leftElement, leftIcon} = this.props;\n\n if (leftElement != null) {\n return (\n <span className={Classes.INPUT_LEFT_CONTAINER} ref={this.refHandlers.leftElement}>\n {leftElement}\n </span>\n );\n } else if (leftIcon != null) {\n return <Icon icon={leftIcon} aria-hidden={true} tabIndex={-1}/>;\n }\n\n return undefined;\n }\n\n private maybeRenderRightElement() {\n const {rightElement} = this.props;\n if (rightElement == null) {\n return undefined;\n }\n return (\n <span className={Classes.INPUT_ACTION} ref={this.refHandlers.rightElement}>\n {rightElement}\n </span>\n );\n }\n\n private updateInputWidth() {\n const {leftElementWidth, rightElementWidth} = this.state;\n\n if (this.leftElement != null) {\n const {clientWidth} = this.leftElement;\n // small threshold to prevent infinite loops\n if (leftElementWidth === undefined || Math.abs(clientWidth - leftElementWidth) > 2) {\n this.setState({leftElementWidth: clientWidth});\n }\n } else {\n this.setState({leftElementWidth: undefined});\n }\n\n if (this.rightElement != null) {\n const {clientWidth} = this.rightElement;\n // small threshold to prevent infinite loops\n if (rightElementWidth === undefined || Math.abs(clientWidth - rightElementWidth) > 2) {\n this.setState({rightElementWidth: clientWidth});\n }\n } else {\n this.setState({rightElementWidth: undefined});\n }\n }\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\n\nimport {ChevronDown, ChevronUp} from \"@blueprintjs/icons\";\n\nimport {\n AbstractPureComponent,\n Button,\n ButtonGroup,\n Classes,\n ControlGroup,\n DISPLAYNAME_PREFIX,\n type HTMLInputProps,\n Intent,\n Position,\n refHandler,\n removeNonHTMLProps,\n setRef,\n Utils,\n} from \"@blueprintjs/core\";\nimport * as Errors from \"@blueprintjs/core/src/common/errors\";\nimport type {InputSharedProps} from \"@blueprintjs/core/src/components/forms/inputSharedProps\";\nimport {\n clampValue,\n getValueOrEmptyValue,\n isValidNumericKeyboardEvent,\n isValueNumeric,\n parseStringToStringNumber,\n sanitizeNumericInput,\n toLocaleString,\n} from \"@blueprintjs/core/src/components/forms/numericInputUtils\";\nimport {InputGroup2} from \"../bpComponents/InputGroup2\";\n\nexport interface NumericInputProps extends InputSharedProps {\n /**\n * Whether to allow only floating-point number characters in the field,\n * mimicking the native `input[type=\"number\"]`.\n *\n * @default true\n */\n allowNumericCharactersOnly?: boolean;\n\n /**\n * Set this to `true` if you will be controlling the `value` of this input with asynchronous updates.\n * These may occur if you do not immediately call setState in a parent component with the value from\n * the `onChange` handler.\n */\n asyncControl?: boolean;\n\n /**\n * The position of the buttons with respect to the input field.\n *\n * @default Position.RIGHT\n */\n buttonPosition?: typeof Position.LEFT | typeof Position.RIGHT | \"none\";\n\n /**\n * Whether the value should be clamped to `[min, max]` on blur.\n * The value will be clamped to each bound only if the bound is defined.\n * Note that native `input[type=\"number\"]` controls do *NOT* clamp on blur.\n *\n * @default false\n */\n clampValueOnBlur?: boolean;\n\n /**\n * In uncontrolled mode, this sets the default value of the input.\n * Note that this value is only used upon component instantiation and changes to this prop\n * during the component lifecycle will be ignored.\n *\n * @default \"\"\n */\n defaultValue?: number | string;\n /**\n * If set to `true`, the input will display with larger styling.\n * This is equivalent to setting `Classes.LARGE` via className on the\n * parent control group and on the child input group.\n *\n * @default false\n */\n large?: boolean;\n\n /**\n * The locale name, which is passed to the component to format the number and allowing to type the number in the specific locale.\n * [See MDN documentation for more info about browser locale identification](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n *\n * @default \"\"\n */\n locale?: string;\n\n /**\n * The increment between successive values when <kbd>shift</kbd> is held.\n * Pass explicit `null` value to disable this interaction.\n *\n * @default 10\n */\n majorStepSize?: number | null;\n\n /** The maximum value of the input. */\n max?: number;\n\n /** The minimum value of the input. */\n min?: number;\n\n /**\n * The increment between successive values when <kbd>alt</kbd> is held.\n * Pass explicit `null` value to disable this interaction.\n *\n * @default 0.1\n */\n minorStepSize?: number | null;\n\n /**\n * Whether the entire text field should be selected on focus.\n *\n * @default false\n */\n selectAllOnFocus?: boolean;\n\n /**\n * Whether the entire text field should be selected on increment.\n *\n * @default false\n */\n selectAllOnIncrement?: boolean;\n\n /**\n * If set to `true`, the input will display with smaller styling.\n * This is equivalent to setting `Classes.SMALL` via className on the\n * parent control group and on the child input group.\n *\n * @default false\n */\n small?: boolean;\n\n /**\n * The increment between successive values when no modifier keys are held.\n *\n * @default 1\n */\n stepSize?: number;\n\n /**\n * The value to display in the input field.\n */\n value?: number | string;\n\n /** The callback invoked when the value changes due to a button click. */\n onButtonClick?(valueAsNumber: number, valueAsString: string): void;\n\n /** The callback invoked when the value changes due to typing, arrow keys, or button clicks. */\n onValueChange?(valueAsNumber: number, valueAsString: string, inputElement: HTMLInputElement | null): void;\n}\n\nexport interface NumericInputState {\n currentImeInputInvalid: boolean;\n prevMinProp?: number;\n prevMaxProp?: number;\n shouldSelectAfterUpdate: boolean;\n // stepMaxPrecision: number;\n value: string;\n}\n\nenum IncrementDirection {\n DOWN = -1,\n UP = +1,\n}\n\nconst NON_HTML_PROPS: Array<keyof NumericInputProps> = [\n \"allowNumericCharactersOnly\",\n \"buttonPosition\",\n \"clampValueOnBlur\",\n \"className\",\n \"defaultValue\",\n \"majorStepSize\",\n \"minorStepSize\",\n \"onButtonClick\",\n \"onValueChange\",\n \"selectAllOnFocus\",\n \"selectAllOnIncrement\",\n \"stepSize\",\n];\n\ntype ButtonEventHandlers = Required<Pick<React.HTMLAttributes<HTMLElement>, \"onKeyDown\" | \"onMouseDown\">>;\n\n/**\n * Numeric input component.\n *\n * @see https://blueprintjs.com/docs/#core/components/numeric-input\n */\nexport class NumericInput extends AbstractPureComponent<HTMLInputProps & NumericInputProps, NumericInputState> {\n public static displayName = `${DISPLAYNAME_PREFIX}.NumericInput`;\n\n public static VALUE_EMPTY = \"\";\n\n public static VALUE_ZERO = \"0\";\n\n private numericInputId = Utils.uniqueId(\"numericInput\");\n\n public static defaultProps: NumericInputProps = {\n allowNumericCharactersOnly: true,\n buttonPosition: Position.RIGHT,\n clampValueOnBlur: false,\n defaultValue: NumericInput.VALUE_EMPTY,\n large: false,\n majorStepSize: 10,\n minorStepSize: 0.1,\n selectAllOnFocus: false,\n selectAllOnIncrement: false,\n small: false,\n stepSize: 1,\n };\n\n public static getDerivedStateFromProps(props: NumericInputProps, state: NumericInputState) {\n const nextState = {\n prevMaxProp: props.max,\n prevMinProp: props.min,\n };\n\n const didMinChange = props.min !== state.prevMinProp;\n const didMaxChange = props.max !== state.prevMaxProp;\n const didBoundsChange = didMinChange || didMaxChange;\n\n // in controlled mode, use props.value\n // in uncontrolled mode, if state.value has not been assigned yet (upon initial mount), use props.defaultValue\n const value = props.value?.toString() ?? state.value;\n // const stepMaxPrecision = NumericInput.getStepMaxPrecision(props);\n\n const sanitizedValue =\n value !== NumericInput.VALUE_EMPTY\n ? NumericInput.roundAndClampValue(value, /*stepMaxPrecision,*/ props.min, props.max, 0, props.locale)\n : NumericInput.VALUE_EMPTY;\n\n // if a new min and max were provided that cause the existing value to fall\n // outside of the new bounds, then clamp the value to the new valid range.\n if (didBoundsChange && sanitizedValue !== state.value) {\n return { ...nextState, /*stepMaxPrecision,*/ value: sanitizedValue };\n }\n return { ...nextState, /*stepMaxPrecision,*/ value };\n }\n\n private static CONTINUOUS_CHANGE_DELAY = 300;\n\n private static CONTINUOUS_CHANGE_INTERVAL = 100;\n\n // Value Helpers\n // =============\n // private static getStepMaxPrecision(props: HTMLInputProps & NumericInputProps) {\n // if (props.minorStepSize != null) {\n // return Utils.countDecimalPlaces(props.minorStepSize);\n // } else {\n // return Utils.countDecimalPlaces(props.stepSize!);\n // }\n // }\n\n private static roundAndClampValue(\n value: string,\n // stepMaxPrecision: number,\n min: number | undefined,\n max: number | undefined,\n delta = 0,\n locale: string | undefined,\n ) {\n if (!isValueNumeric(value, locale)) {\n return NumericInput.VALUE_EMPTY;\n }\n const currentValue = parseStringToStringNumber(value, locale);\n // const nextValue = toMaxPrecision(Number(currentValue) + delta, stepMaxPrecision);\n const nextValue = (Number(currentValue) + delta);\n const clampedValue = clampValue(nextValue, min, max);\n return toLocaleString(clampedValue, locale);\n }\n\n public state: NumericInputState = {\n currentImeInputInvalid: false,\n shouldSelectAfterUpdate: false,\n // stepMaxPrecision: NumericInput.getStepMaxPrecision(this.props),\n value: getValueOrEmptyValue(this.props.value ?? this.props.defaultValue),\n };\n\n // updating these flags need not trigger re-renders, so don't include them in this.state.\n private didPasteEventJustOccur = false;\n\n private delta = 0;\n\n public inputElement: HTMLInputElement | null = null;\n\n private inputRef: React.Ref<HTMLInputElement> = refHandler(this, \"inputElement\", this.props.inputRef);\n\n private intervalId?: number;\n\n private incrementButtonHandlers = this.getButtonEventHandlers(IncrementDirection.UP);\n\n private decrementButtonHandlers = this.getButtonEventHandlers(IncrementDirection.DOWN);\n\n private getCurrentValueAsNumber = () => Number(parseStringToStringNumber(this.state.value, this.props.locale));\n\n public render() {\n const { buttonPosition, className, fill, large, small } = this.props;\n const containerClasses = classNames(\n Classes.NUMERIC_INPUT,\n { [Classes.LARGE]: large, [Classes.SMALL]: small },\n className,\n );\n const buttons = this.renderButtons();\n return (\n <ControlGroup className={containerClasses} fill={fill}>\n {buttonPosition === Position.LEFT && buttons}\n {this.renderInput()}\n {buttonPosition === Position.RIGHT && buttons}\n </ControlGroup>\n );\n }\n\n public componentDidUpdate(prevProps: NumericInputProps, prevState: NumericInputState) {\n super.componentDidUpdate(prevProps, prevState);\n\n if (prevProps.inputRef !== this.props.inputRef) {\n setRef(prevProps.inputRef, null);\n this.inputRef = refHandler(this, \"inputElement\", this.props.inputRef);\n setRef(this.props.inputRef, this.inputElement);\n }\n\n if (this.state.shouldSelectAfterUpdate) {\n this.inputElement?.setSelectionRange(0, this.state.value.length);\n }\n\n const didMinChange = this.props.min !== prevProps.min;\n const didMaxChange = this.props.max !== prevProps.max;\n const didBoundsChange = didMinChange || didMaxChange;\n const didLocaleChange = this.props.locale !== prevProps.locale;\n const didValueChange = this.state.value !== prevState.value;\n\n if ((didBoundsChange && didValueChange) || (didLocaleChange && prevState.value !== NumericInput.VALUE_EMPTY)) {\n // we clamped the value due to a bounds change, so we should fire the change callback\n const valueToParse = didLocaleChange ? prevState.value : this.state.value;\n const valueAsString = parseStringToStringNumber(valueToParse, prevProps.locale);\n const localizedValue = toLocaleString(+valueAsString, this.props.locale);\n\n this.props.onValueChange?.(+valueAsString, localizedValue, this.inputElement);\n }\n }\n\n protected validateProps(nextProps: HTMLInputProps & NumericInputProps) {\n const { majorStepSize, max, min, minorStepSize, stepSize/*, value*/ } = nextProps;\n if (min != null && max != null && min > max) {\n console.error(Errors.NUMERIC_INPUT_MIN_MAX);\n }\n if (stepSize! <= 0) {\n console.error(Errors.NUMERIC_INPUT_STEP_SIZE_NON_POSITIVE);\n }\n if (minorStepSize && minorStepSize <= 0) {\n console.error(Errors.NUMERIC_INPUT_MINOR_STEP_SIZE_NON_POSITIVE);\n }\n if (majorStepSize && majorStepSize <= 0) {\n console.error(Errors.NUMERIC_INPUT_MAJOR_STEP_SIZE_NON_POSITIVE);\n }\n if (minorStepSize && minorStepSize > stepSize!) {\n console.error(Errors.NUMERIC_INPUT_MINOR_STEP_SIZE_BOUND);\n }\n if (majorStepSize && majorStepSize < stepSize!) {\n console.error(Errors.NUMERIC_INPUT_MAJOR_STEP_SIZE_BOUND);\n }\n\n // controlled mode\n // if (value != null) {\n // const stepMaxPrecision = NumericInput.getStepMaxPrecision(nextProps);\n // const sanitizedValue = NumericInput.roundAndClampValue(\n // value.toString(),\n // stepMaxPrecision,\n // min,\n // max,\n // 0,\n // this.props.locale,\n // );\n // const valueDoesNotMatch = sanitizedValue !== value.toString();\n // const localizedValue = toLocaleString(\n // Number(parseStringToStringNumber(value, this.props.locale)),\n // this.props.locale,\n // );\n // const isNotLocalized = sanitizedValue !== localizedValue;\n //\n // if (valueDoesNotMatch && isNotLocalized) {\n // console.warn(Errors.NUMERIC_INPUT_CONTROLLED_VALUE_INVALID);\n // }\n // }\n }\n\n // Render Helpers\n // ==============\n\n private renderButtons() {\n const { intent, max, min, locale } = this.props;\n const value = parseStringToStringNumber(this.state.value, locale);\n const disabled = this.props.disabled || this.props.readOnly;\n const isIncrementDisabled = max !== undefined && value !== \"\" && +value >= max;\n const isDecrementDisabled = min !== undefined && value !== \"\" && +value <= min;\n\n return (\n <ButtonGroup className={Classes.FIXED} key=\"button-group\" vertical={true}>\n <Button\n aria-label=\"increment\"\n aria-controls={this.numericInputId}\n disabled={disabled || isIncrementDisabled}\n icon={<ChevronUp />}\n intent={intent}\n {...this.incrementButtonHandlers}\n />\n <Button\n aria-label=\"decrement\"\n aria-controls={this.numericInputId}\n disabled={disabled || isDecrementDisabled}\n icon={<ChevronDown />}\n intent={intent}\n {...this.decrementButtonHandlers}\n />\n </ButtonGroup>\n );\n }\n\n private renderInput() {\n const inputGroupHtmlProps = removeNonHTMLProps(this.props, NON_HTML_PROPS, true);\n const valueAsNumber = this.getCurrentValueAsNumber();\n\n return (\n <InputGroup2\n // asyncControl={this.props.asyncControl}\n autoComplete=\"off\"\n id={this.numericInputId}\n role={this.props.allowNumericCharactersOnly ? \"spinbutton\" : undefined}\n {...inputGroupHtmlProps}\n aria-valuemax={this.props.max}\n aria-valuemin={this.props.min}\n aria-valuenow={valueAsNumber}\n intent={this.state.currentImeInputInvalid ? Intent.DANGER : this.props.intent}\n inputClassName={this.props.inputClassName}\n inputRef={this.inputRef}\n leftElement={this.props.leftElement}\n leftIcon={this.props.leftIcon}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onCompositionEnd={this.handleCompositionEnd}\n onCompositionUpdate={this.handleCompositionUpdate}\n onKeyDown={this.handleInputKeyDown}\n onKeyPress={this.handleInputKeyPress}\n onPaste={this.handleInputPaste}\n onValueChange={this.handleInputChange}\n rightElement={this.props.rightElement}\n size={this.props.small ? \"small\" : this.props.large ? \"large\" : \"medium\"}\n value={this.state.value}\n />\n );\n }\n\n // Callbacks - Buttons\n // ===================\n\n private getButtonEventHandlers(direction: IncrementDirection): ButtonEventHandlers {\n return {\n // keydown is fired repeatedly when held so it's implicitly continuous\n onKeyDown: evt => {\n if (!this.props.disabled && Utils.isKeyboardClick(evt)) {\n this.handleButtonClick(evt, direction);\n }\n },\n onMouseDown: evt => {\n if (!this.props.disabled) {\n this.handleButtonClick(evt, direction);\n this.startContinuousChange();\n }\n },\n };\n }\n\n private handleButtonClick = (e: React.MouseEvent | React.KeyboardEvent, direction: IncrementDirection) => {\n const delta = this.updateDelta(direction, e);\n const nextValue = this.incrementValue(delta);\n this.props.onButtonClick?.(Number(parseStringToStringNumber(nextValue, this.props.locale)), nextValue);\n };\n\n private startContinuousChange() {\n // The button's onMouseUp event handler doesn't fire if the user\n // releases outside of the button, so we need to watch all the way\n // from the top.\n document.addEventListener(\"mouseup\", this.stopContinuousChange);\n\n // Initial delay is slightly longer to prevent the user from\n // accidentally triggering the continuous increment/decrement.\n this.setTimeout(() => {\n this.intervalId = window.setInterval(this.handleContinuousChange, NumericInput.CONTINUOUS_CHANGE_INTERVAL);\n }, NumericInput.CONTINUOUS_CHANGE_DELAY);\n }\n\n private stopContinuousChange = () => {\n this.delta = 0;\n this.clearTimeouts();\n clearInterval(this.intervalId);\n document.removeEventListener(\"mouseup\", this.stopContinuousChange);\n };\n\n private handleContinuousChange = () => {\n // If either min or max prop is set, when reaching the limit\n // the button will be disabled and stopContinuousChange will be never fired,\n // hence the need to check on each iteration to properly clear the timeout\n if (this.props.min !== undefined || this.props.max !== undefined) {\n const min = this.props.min ?? -Infinity;\n const max = this.props.max ?? Infinity;\n const valueAsNumber = this.getCurrentValueAsNumber();\n if (valueAsNumber <= min || valueAsNumber >= max) {\n this.stopContinuousChange();\n return;\n }\n }\n const nextValue = this.incrementValue(this.delta);\n this.props.onButtonClick?.(Number(parseStringToStringNumber(nextValue, this.props.locale)), nextValue);\n };\n\n // Callbacks - Input\n // =================\n\n private handleInputFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n // update this state flag to trigger update for input selection (see componentDidUpdate)\n this.setState({ shouldSelectAfterUpdate: this.props.selectAllOnFocus! });\n this.props.onFocus?.(e);\n };\n\n private handleInputBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n // always disable this flag on blur so it's ready for next time.\n this.setState({ shouldSelectAfterUpdate: false });\n\n if (this.props.clampValueOnBlur) {\n const { value } = e.target as HTMLInputElement;\n this.handleNextValue(this.roundAndClampValue(value));\n }\n\n this.props.onBlur?.(e);\n };\n\n private handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.disabled || this.props.readOnly) {\n return;\n }\n\n const direction = Utils.getArrowKeyDirection(e, [\"ArrowDown\"], [\"ArrowUp\"]);\n if (direction !== undefined) {\n // when the input field has focus, some key combinations will modify\n // the field's selection range. we'll actually want to select all\n // text in the field after we modify the value on the following\n // lines. preventing the default selection behavior lets us do that\n // without interference.\n e.preventDefault();\n\n const delta = this.updateDelta(direction, e);\n this.incrementValue(delta);\n }\n\n this.props.onKeyDown?.(e);\n };\n\n private handleCompositionEnd = (e: React.CompositionEvent<HTMLInputElement>) => {\n if (this.props.allowNumericCharactersOnly) {\n this.handleNextValue(sanitizeNumericInput(e.data, this.props.locale));\n this.setState({ currentImeInputInvalid: false });\n }\n };\n\n private handleCompositionUpdate = (e: React.CompositionEvent<HTMLInputElement>) => {\n if (this.props.allowNumericCharactersOnly) {\n const { data } = e;\n const sanitizedValue = sanitizeNumericInput(data, this.props.locale);\n if (sanitizedValue.length === 0 && data.length > 0) {\n this.setState({ currentImeInputInvalid: true });\n } else {\n this.setState({ currentImeInputInvalid: false });\n }\n }\n };\n\n private handleInputKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // we prohibit keystrokes in onKeyPress instead of onKeyDown, because\n // e.key is not trustworthy in onKeyDown in all browsers.\n if (this.props.allowNumericCharactersOnly && !isValidNumericKeyboardEvent(e, this.props.locale)) {\n e.preventDefault();\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.props.onKeyPress?.(e);\n };\n\n private handleInputPaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n this.didPasteEventJustOccur = true;\n this.props.onPaste?.(e);\n };\n\n private handleInputChange = (value: string) => {\n let nextValue = value;\n if (this.props.allowNumericCharactersOnly && this.didPasteEventJustOccur) {\n this.didPasteEventJustOccur = false;\n nextValue = sanitizeNumericInput(value, this.props.locale);\n }\n\n this.handleNextValue(nextValue);\n this.setState({ shouldSelectAfterUpdate: false });\n };\n\n // Data logic\n // ==========\n\n private handleNextValue(valueAsString: string) {\n if (this.props.value == null) {\n this.setState({ value: valueAsString });\n }\n\n this.props.onValueChange?.(\n Number(parseStringToStringNumber(valueAsString, this.props.locale)),\n valueAsString,\n this.inputElement,\n );\n }\n\n private incrementValue(delta: number) {\n // pretend we're incrementing from 0 if currValue is empty\n const currValue = this.state.value === NumericInput.VALUE_EMPTY ? NumericInput.VALUE_ZERO : this.state.value;\n const nextValue = this.roundAndClampValue(currValue, delta);\n\n if (nextValue !== this.state.value) {\n this.handleNextValue(nextValue);\n this.setState({ shouldSelectAfterUpdate: this.props.selectAllOnIncrement! });\n }\n\n // return value used in continuous change updates\n return nextValue;\n }\n\n private getIncrementDelta(direction: IncrementDirection, isShiftKeyPressed: boolean, isAltKeyPressed: boolean) {\n const { majorStepSize, minorStepSize, stepSize } = this.props;\n\n if (isShiftKeyPressed && majorStepSize != null) {\n return direction * majorStepSize;\n } else if (isAltKeyPressed && minorStepSize != null) {\n return direction * minorStepSize;\n } else {\n return direction * stepSize!;\n }\n }\n\n private roundAndClampValue(value: string, delta = 0) {\n return NumericInput.roundAndClampValue(\n value,\n // this.state.stepMaxPrecision,\n this.props.min,\n this.props.max,\n delta,\n this.props.locale,\n );\n }\n\n private updateDelta(direction: IncrementDirection, e: React.MouseEvent | React.KeyboardEvent) {\n this.delta = this.getIncrementDelta(direction, e.shiftKey, e.altKey);\n return this.delta;\n }\n}\n","// Pointer Lock API utilities for cursor wrap-around behavior\n\nclass FakeCursor {\n private element: HTMLDivElement | null = null;\n private x = 0;\n private y = 0;\n private visible = false;\n private originalCursor = '';\n\n constructor() {\n if (typeof document !== 'undefined') {\n this.createCursorElement();\n }else {\n console.warn('FakeCursor: document is undefined, cannot create cursor element.');\n }\n }\n\n private createCursorElement() {\n this.element = document.createElement('div');\n this.element.style.position = 'fixed';\n this.element.style.width = '16px';\n this.element.style.height = '16px';\n this.element.style.transform = 'translate(calc(-50% + 1px), calc(-50% + 1px))';\n this.element.style.pointerEvents = 'none';\n this.element.style.zIndex = '999999';\n this.element.style.display = 'none';\n this.element.innerHTML = `\n<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_1_176)\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 5.9907V5.9957L5.997 11.9917L5.998 7.9927H7.997H10.017V11.9927L15.997 5.9917L10.017 -0.00730079L10.018 4.0117L7.997 4.0137H5.997L5.998 -0.00830078L0 5.9907ZM1.411 5.9937L4.998 2.4057L4.997 4.9927H8.497H11.018V2.4077L14.583 5.9937L11.019 9.5787L11.018 6.9937H8.497L4.998 6.9927L4.997 9.5787L1.411 5.9937Z\" fill=\"white\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.4971 6.9932H11.0181V9.5792L14.5831 5.9932L11.0181 2.4082V5.0132H8.4971H4.9971V2.4062L1.4111 5.9932L4.9971 9.5792V6.9922L8.4971 6.9932Z\" fill=\"black\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_1_176\">\n<rect width=\"16\" height=\"12\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>\n `;\n document.body.appendChild(this.element);\n }\n\n show(useFallback: boolean) {\n if (this.element) {\n this.element.style.display = 'block';\n this.visible = true;\n if(useFallback) {\n this.originalCursor = document.documentElement.style.cursor;\n document.documentElement.style.cursor = 'ew-resize';\n this.element.style.opacity = '0'; // for pointer events\n this.element.style.pointerEvents = 'auto'; // for pointer events\n }\n }\n }\n\n hide(useFallback: boolean) {\n if (this.element) {\n this.element.style.display = 'none';\n this.visible = false;\n // Restore original cursor\n if (useFallback && this.originalCursor !== undefined) {\n document.documentElement.style.cursor = this.originalCursor;\n }\n this.element.style.opacity = '1';\n this.element.style.pointerEvents = 'none';\n }\n }\n\n setPosition(x: number, y: number) {\n this.x = x;\n this.y = y;\n if (this.element) {\n this.element.style.left = `${x}px`;\n this.element.style.top = `${y}px`;\n }\n }\n\n getPosition() {\n return { x: this.x, y: this.y };\n }\n\n isVisible() {\n return this.visible;\n }\n\n destroy() {\n if (this.element && this.element.parentNode) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n }\n}\n\n// Singleton instance\nlet fakeCursorInstance: FakeCursor | null = null;\n\nexport function getFakeCursor(): FakeCursor {\n if (!fakeCursorInstance) {\n fakeCursorInstance = new FakeCursor();\n }\n return fakeCursorInstance;\n}\n\nexport function destroyFakeCursor() {\n if (fakeCursorInstance) {\n fakeCursorInstance.destroy();\n fakeCursorInstance = null;\n }\n}\n\nexport interface PointerLockOptions {\n onMove: (movementX: number, movementY: number, cursorX: number, cursorY: number) => void;\n onLockChange?: (locked: boolean) => void;\n}\n\nexport class PointerLockManager {\n private element: HTMLElement;\n private fakeCursor: FakeCursor;\n private options: PointerLockOptions;\n private isLocked = false;\n private cursorX = 0;\n private cursorY = 0;\n private useFallback = false;\n private lastMouseX = 0;\n private lastMouseY = 0;\n\n constructor(element: HTMLElement, options: PointerLockOptions) {\n this.element = element;\n this.options = options;\n this.fakeCursor = getFakeCursor();\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handlePointerLockChange = this.handlePointerLockChange.bind(this);\n this.handleFallbackMouseMove = this.handleFallbackMouseMove.bind(this);\n }\n\n requestLock(initialX: number, initialY: number) {\n this.cursorX = initialX;\n this.cursorY = initialY;\n this.lastMouseX = initialX;\n this.lastMouseY = initialY;\n this.fakeCursor.setPosition(initialX, initialY);\n\n // Try to request pointer lock, but prepare for fallback\n if (isSafari() || !this.element.requestPointerLock) {\n // Use fallback immediately for Safari or if pointer lock is not supported\n this.useFallback = true;\n this.isLocked = true; // Treat fallback as \"locked\" state\n this.fakeCursor.show(true);\n // Don't show fake cursor in fallback mode\n document.addEventListener('mousemove', this.handleFallbackMouseMove);\n if (this.options.onLockChange) {\n this.options.onLockChange(true);\n }\n } else {\n this.useFallback = false\n this.fakeCursor.show(false);\n // Try pointer lock for other browsers\n this.element.requestPointerLock();\n document.addEventListener('pointerlockchange', this.handlePointerLockChange);\n document.addEventListener('mousemove', this.handleMouseMove);\n\n // Fallback if pointer lock doesn't engage within 100ms\n setTimeout(() => {\n if (!this.isLocked && !this.useFallback) {\n this.useFallback = true;\n this.isLocked = true;\n this.fakeCursor.show(true);\n document.removeEventListener('mousemove', this.handleMouseMove);\n document.removeEventListener('pointerlockchange', this.handlePointerLockChange);\n document.addEventListener('mousemove', this.handleFallbackMouseMove);\n if (this.options.onLockChange) {\n this.options.onLockChange(true);\n }\n }\n }, 100);\n }\n }\n\n releaseLock() {\n if (this.isLocked && !this.useFallback) {\n document.exitPointerLock();\n }\n this.cleanup();\n }\n\n private cleanup() {\n document.removeEventListener('mousemove', this.handleMouseMove);\n document.removeEventListener('mousemove', this.handleFallbackMouseMove);\n document.removeEventListener('pointerlockchange', this.handlePointerLockChange);\n this.fakeCursor.hide(this.useFallback);\n this.isLocked = false;\n this.useFallback = false;\n }\n\n private handlePointerLockChange() {\n this.isLocked = document.pointerLockElement === this.element;\n\n if (!this.isLocked) {\n this.cleanup();\n }\n\n if (this.options.onLockChange) {\n this.options.onLockChange(this.isLocked);\n }\n }\n\n private handleFallbackMouseMove(ev: MouseEvent) {\n if (!this.isLocked || !this.useFallback) return;\n\n // Calculate movement manually\n const movementX = ev.clientX - this.lastMouseX;\n const movementY = ev.clientY - this.lastMouseY;\n\n this.lastMouseX = ev.clientX;\n this.lastMouseY = ev.clientY;\n\n // Update fake cursor position\n this.cursorX = ev.clientX;\n this.cursorY = ev.clientY;\n\n this.fakeCursor.setPosition(this.cursorX, this.cursorY);\n this.options.onMove(movementX, movementY, this.cursorX, this.cursorY);\n }\n\n private handleMouseMove(ev: MouseEvent) {\n if (!this.isLocked || this.useFallback) return;\n\n const movementX = ev.movementX || 0;\n const movementY = ev.movementY || 0;\n\n // Update fake cursor position\n this.cursorX += movementX;\n this.cursorY += movementY;\n\n // Wrap around screen edges\n const screenWidth = window.innerWidth;\n const screenHeight = window.innerHeight;\n\n if (this.cursorX < 0) {\n this.cursorX = screenWidth - 1;\n } else if (this.cursorX >= screenWidth) {\n this.cursorX = 0;\n }\n\n if (this.cursorY < 0) {\n this.cursorY = screenHeight - 1;\n } else if (this.cursorY >= screenHeight) {\n this.cursorY = 0;\n }\n\n this.fakeCursor.setPosition(this.cursorX, this.cursorY);\n this.options.onMove(movementX, movementY, this.cursorX, this.cursorY);\n }\n\n isPointerLocked() {\n return this.isLocked;\n }\n}\n\n// Detect if we're running in Safari\nfunction isSafari(): boolean {\n if (typeof navigator === 'undefined') return false;\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\n","import * as React from \"react\";\nimport {Icon, IconName, MaybeElement} from \"@blueprintjs/core\";\nimport {PointerLockManager} from \"../utils/pointerLock\";\n\n// todo: bounds and stepsize\n// todo use the old version in safari etc that change the page height on pointer lock\nexport class DraggableIcon extends React.Component<{ icon: IconName | MaybeElement, size?: number, value: number, stepSize?: number, small?: boolean, disabled?: boolean, onChange: (v: number, last?: boolean) => void }> {\n private cursor = 'auto'\n private dragStartValue = -Infinity\n private lastValue = -Infinity\n private pointerLockManager: PointerLockManager | null = null\n private divRef = React.createRef<HTMLDivElement>()\n private removeEvents = () => {\n if (isFinite(this.lastValue) && !this.props.disabled) this.props.onChange(this.lastValue)\n this.lastValue = -Infinity\n this.dragStartValue = -Infinity\n\n if (this.pointerLockManager) {\n this.pointerLockManager.releaseLock()\n this.pointerLockManager = null\n }\n\n document.documentElement.style.cursor = this.cursor\n // setDragging(false)\n };\n\n private handlePointerMove = (movementX: number, _movementY: number, _cursorX: number, _cursorY: number) => {\n if (isFinite(this.dragStartValue)) {\n let stepSize = (this.props.stepSize ?? 1) / 10\n\n // Use movementX for horizontal dragging\n let off = movementX;\n\n // Scale the movement\n off *= stepSize;\n\n // Apply modifiers - these need to be checked differently in pointer lock\n // We'll accumulate the offset instead\n if (!this.accumulatedOffset) this.accumulatedOffset = 0;\n this.accumulatedOffset += off;\n\n let val = this.dragStartValue + this.accumulatedOffset;\n // val = Math.min(props.max, Math.max(props.min, val)); // todo\n val = Number(val.toFixed(Math.max(1, -Math.log10(stepSize / 10)))); // clip decimal places depending on step size\n\n if(!this.props.disabled) this.props.onChange(val, false)\n this.lastValue = val;\n }\n };\n\n private accumulatedOffset = 0;\n\n render() {\n // const [dragging, setDragging] = React.useState(false)\n\n return (\n <div\n ref={this.divRef}\n style={{cursor: !this.props.disabled ? 'ew-resize': 'auto', marginLeft: \"6px\", marginRight: \"6px\", marginTop: this.props.small ? \"3px\" : \"6px\", marginBottom: this.props.small ? \"3px\" : \"6px\"}}\n onMouseDown={(ev) => {\n // if(dragging) return\n if(this.props.disabled) return\n if (!this.divRef.current) return;\n\n this.dragStartValue = this.props.value\n this.accumulatedOffset = 0\n\n this.cursor = document.documentElement.style.cursor\n document.documentElement.style.cursor = \"none\"\n\n // Create pointer lock manager\n this.pointerLockManager = new PointerLockManager(this.divRef.current, {\n onMove: this.handlePointerMove,\n onLockChange: (locked) => {\n if (!locked) {\n this.removeEvents();\n }\n }\n });\n\n this.pointerLockManager.requestLock(ev.clientX, ev.clientY);\n ev.stopPropagation()\n ev.preventDefault()\n\n // Add mouseup listener to release lock\n const handleMouseUp = () => {\n this.removeEvents();\n document.removeEventListener('mouseup', handleMouseUp);\n };\n document.addEventListener('mouseup', handleMouseUp);\n\n // setDragging(true)\n }}\n >\n <Icon icon={this.props.icon} size={this.props.size} aria-disabled={this.props.disabled} />\n </div>\n )\n }\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Many changes over the original implementation here: https://github.com/palantir/blueprint/blob/develop/packages/docs-app/src/examples/core-examples/numericInputExtendedExample.tsx\n */\n\nimport React from \"react\";\n\nimport type {HTMLInputProps, NumericInputProps} from \"@blueprintjs/core\";\nimport {NumericInput} from \"./NumericInput\";\nimport {DraggableIcon} from \"./DraggableIcon\";\n\nexport interface IExtendedNumericInputState {\n value?: string;\n}\n\nconst NumberAbbreviation = {\n BILLION: \"b\",\n MILLION: \"m\",\n THOUSAND: \"k\",\n};\n\nconst NUMBER_ABBREVIATION_REGEX = /((\\.\\d+)|(\\d+(\\.\\d+)?))(k|m|b)\\b/gi;\nconst SCIENTIFIC_NOTATION_REGEX = /((\\.\\d+)|(\\d+(\\.\\d+)?))(e\\d+)\\b/gi;\ntype Props = HTMLInputProps & NumericInputProps & {\n onChange2?: (v: number, last?: boolean) => void,\n transformValue?: (v: number) => number,\n invTransformValue?: (v: number) => number,\n draggableIcon?: boolean\n value?: number | undefined\n defaultValue?: number | undefined\n}\n// todo: bounds and stepsize\nexport class ExtendedNumericInput extends React.PureComponent<Props, IExtendedNumericInputState> {\n invTransformValue = (v: number|undefined) => {\n v = v || 0\n const v1 = this.props.invTransformValue ? this.props.invTransformValue(v) : v;\n return v1\n }\n transformValue = (v: number|undefined) => {\n v = v || 0\n const v1 = this.props.transformValue ? this.props.transformValue(v) : v;\n return v1\n }\n\n public state: IExtendedNumericInputState = {\n value: this.invTransformValue(this.props.value ?? this.props.defaultValue).toString(),\n };\n\n async setValue(val?: number) {\n return new Promise<void>((resolve) => {\n this.setState({value: this.invTransformValue(val ?? this.props.value ?? this.props.defaultValue).toString()}, resolve)\n })\n }\n\n componentDidUpdate(prevProps: Props) {\n if (prevProps.value !== this.props.value && this.props.value !== undefined) {\n this.setState({ value: this.invTransformValue(this.props.value).toString() });\n }\n }\n public render() {\n const {value} = this.state;\n const {\n invTransformValue,\n transformValue,\n draggableIcon,\n onChange2,\n value: _value,\n leftIcon,\n defaultValue,\n ...props2\n } = this.props;\n\n if(transformValue && !invTransformValue ||\n !transformValue && invTransformValue) {\n console.error('ExtendedNumericInput: Both transformValue and invTransformValue must be provided or neither. This is to ensure that the value can be transformed back and forth correctly.');\n }\n\n if(transformValue){\n if(props2.min !== undefined) props2.min = this.invTransformValue(props2.min);\n if(props2.max !== undefined) props2.max = this.invTransformValue(props2.max);\n if(props2.stepSize !== undefined) props2.stepSize = this.invTransformValue(props2.stepSize);\n if(props2.minorStepSize /*!== undefined*/) props2.minorStepSize = this.invTransformValue(props2.minorStepSize);\n if(props2.majorStepSize /*!== undefined*/) props2.majorStepSize = this.invTransformValue(props2.majorStepSize);\n }\n\n return (\n <NumericInput\n {...props2}\n leftElement={( // props2.leftElement could be null\n props2.leftElement !== undefined ? props2.leftElement :\n draggableIcon !== false ? <DraggableIcon icon={leftIcon ?? \"variable\"}\n size={16}\n disabled={props2.readOnly}\n small={props2.small || props2.size as any === 'small'}\n value={parseFloat(value ?? '0')}\n stepSize={props2.stepSize}\n onChange={(v, last) => {\n this.handleValueChange(v, v.toString(), null, last, true)\n }}/> : undefined\n )}\n // leftIcon={draggableIcon ? undefined : leftIcon}\n buttonPosition={props2.buttonPosition ?? (props2.disabled ? \"none\" : \"right\")}\n allowNumericCharactersOnly={false}\n clampValueOnBlur={true}\n onBlur={this.handleBlur}\n onKeyDown={this.handleKeyDown}\n onButtonClick={this.handleButtonClick}\n onValueChange={this.handleValueChange}\n placeholder=\"Enter a number or expression...\"\n value={value}\n />\n );\n }\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.handleConfirm((e.target as HTMLInputElement).value);\n };\n\n\n private _lastChangedValue = null as [number, string] | null\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.code === 'Enter') {\n this.handleConfirm((e.target as HTMLInputElement).value);\n }else if(e.code === 'ArrowUp' || e.code === 'ArrowDown'){\n if(this._lastChangedValue) {\n if(!this._lastChangedValue[1].length && (e.target as HTMLInputElement).value.length){\n // could be because of NaN, so we need to evaluate the expression\n // note: to test this type in \"1+1\" and press up/down. the output should be 2 and not 1 or 0\n this.handleConfirm((e.target as HTMLInputElement).value)\n // todo: should we increment the value here? (also need to take care of ctrl and alt and step sizes)\n }else this.handleValueChange(this._lastChangedValue[0], this._lastChangedValue[1], e.target as HTMLInputElement, true, true)\n }\n else {\n this.handleConfirm((e.target as HTMLInputElement).value);\n // todo: should we increment the value here? (also need to take care of ctrl and alt and step sizes)\n }\n }\n this._lastChangedValue = null\n };\n\n private handleValueChange = (_valueAsNumber: number, valueAsString: string, inputElement: HTMLInputElement | null, last?: boolean, dispatchOnChange2 = false) => {\n this._lastChangedValue = [_valueAsNumber, valueAsString]\n this.setState({value: valueAsString}, () => {\n const transformed = this.transformValue(_valueAsNumber)\n this.props.onValueChange?.(transformed, valueAsString, inputElement)\n if(dispatchOnChange2) {\n this.props.onChange2?.(transformed, last)\n }\n });\n };\n\n private handleButtonClick = (_valueAsNumber: number, valueAsString: string) => {\n this.handleValueChange(_valueAsNumber, valueAsString, null, true, true)\n };\n\n private handleConfirm = (value: string) => {\n let result = value;\n result = this.expandScientificNotationTerms(result);\n result = this.expandNumberAbbreviationTerms(result);\n result = this.evaluateSimpleMathExpression(result);\n result = this.nanStringToEmptyString(result);\n this.setState({value: result}, () => {\n const _valueAsNumber = parseFloat(result) || 0;\n const transformed = this.transformValue(_valueAsNumber)\n this.props.onValueChange?.(transformed, result, null)\n this.props.onChange2?.(transformed, true)\n });\n\n // the user could have typed a different expression that evaluates to\n // the same value. force the update to ensure a render triggers even if\n // this is the case.\n this.forceUpdate();\n };\n\n private expandScientificNotationTerms = (value: string) => {\n // leave empty strings empty\n if (!value) {\n return value;\n }\n return value.replace(SCIENTIFIC_NOTATION_REGEX, this.expandScientificNotationNumber);\n };\n\n private expandNumberAbbreviationTerms = (value: string) => {\n // leave empty strings empty\n if (!value) {\n return value;\n }\n return value.replace(NUMBER_ABBREVIATION_REGEX, this.expandAbbreviatedNumber);\n };\n\n // Adapted from http://stackoverflow.com/questions/2276021/evaluating-a-string-as-a-mathematical-expression-in-javascript\n // todo - use a proper parser and evaluator, right now it only works left to right\n private evaluateSimpleMathExpression = (value: string) => {\n // leave empty strings empty\n if (!value) {\n return value;\n }\n\n // parse all terms from the expression. split on the +, -, *, /, ^(pow) characters and then\n // validate that each term is a number.\n const terms = value.split(/[+\\-*\\/^]/);\n\n // ex. \"1 + 2 - 3 # 4\" will parse on the + and - signs into\n // [\"1 \", \" 2 \", \" 3 # 4\"]. after trimming whitespace from each term\n // and coercing them to numbers, the third term will become NaN,\n // indicating that there was some illegal character present in it.\n const trimmedTerms = terms.map((term: string) => term.trim());\n const numericTerms = trimmedTerms.map((term: string) => +term);\n const illegalTerms = numericTerms.filter(isNaN);\n\n if (illegalTerms.length > 0) {\n return \"\";\n }\n\n // evaluate the expression now that we know it's valid\n let total = 0;\n\n // the regex below will match decimal numbers--optionally preceded by\n // +-*/^ followed by any number of spaces—-including each of the\n // following:\n // \".1\"\n // \" 1\"\n // \"1.1\"\n // \"+ 1\"\n // \"- 1.1\"\n const matches = value.match(/[+\\-*\\/^]*\\s*(\\.\\d+|\\d+(\\.\\d+)?)/gi) || [];\n for (const match of matches) {\n const compactedMatch = match.replace(/\\s/g, \"\");\n const compactedMatchNum = compactedMatch.replace(/[*\\/^]/g, \"\");\n const num = parseFloat(compactedMatchNum);\n if(compactedMatch.startsWith(\"*\")) total *= num;\n else if(compactedMatch.startsWith(\"/\")) total /= num;\n else if(compactedMatch.startsWith(\"^\")) total = Math.pow(total, num);\n else total += num;\n }\n const roundedTotal = this.roundValue(total);\n return roundedTotal.toString();\n };\n\n private nanStringToEmptyString = (value: string) => {\n // our evaluation logic isn't perfect, so use this as a final\n // sanitization step if the result was not a number.\n return value === \"NaN\" ? \"\" : value;\n };\n\n private expandAbbreviatedNumber = (value: string) => {\n if (!value) {\n return value;\n }\n\n const num = +value.substring(0, value.length - 1);\n const lastChar = value.charAt(value.length - 1).toLowerCase();\n\n let result: number | null = null;\n\n if (lastChar === NumberAbbreviation.THOUSAND) {\n result = num * 1e3;\n } else if (lastChar === NumberAbbreviation.MILLION) {\n result = num * 1e6;\n } else if (lastChar === NumberAbbreviation.BILLION) {\n result = num * 1e9;\n }\n\n const isValid = result != null && !isNaN(result);\n\n if (isValid) {\n result = this.roundValue(result!);\n }\n\n return isValid ? result!.toString() : \"\";\n };\n\n private expandScientificNotationNumber = (value: string) => {\n if (!value) {\n return value;\n }\n return (+value).toString();\n };\n\n private roundValue = (value: number, precision: number = 6) => {\n // round to at most two decimal places\n return Math.round(value * 10 ** precision) / 10 ** precision;\n };\n}\n","export interface NumberUnit{\n name: string;\n symbol: string;\n from: (value: number) => number;\n to: (value: number) => number;\n}\nexport const NumberUnits: Record<string, Record<string, NumberUnit>> = {\n 'distance': {\n 'm': {\n 'name': 'Meters',\n 'symbol': 'm',\n from: (v: number) => v,\n to: (v: number) => v,\n },\n 'cm': {\n 'name': 'Centimeters',\n 'symbol': 'cm',\n from: (v: number) => v / 100,\n to: (v: number) => v * 100,\n },\n 'mm': {\n 'name': 'Millimeters',\n 'symbol': 'mm',\n from: (v: number) => v / 1000,\n to: (v: number) => v * 1000,\n },\n 'in': {\n 'name': 'Inches',\n 'symbol': 'in',\n from: (v: number) => v * 0.0254,\n to: (v: number) => v / 0.0254,\n },\n 'ft': {\n 'name': 'Feet',\n 'symbol': 'ft',\n from: (v: number) => v * 0.3048,\n to: (v: number) => v / 0.3048,\n },\n 'km': {\n 'name': 'Kilometers',\n 'symbol': 'km',\n from: (v: number) => v * 1000,\n to: (v: number) => v / 1000,\n },\n 'mi': {\n 'name': 'Miles',\n 'symbol': 'mi',\n from: (v: number) => v * 1609.34,\n to: (v: number) => v / 1609.34,\n },\n },\n 'angle': {\n 'rad': {\n 'name': 'Radians',\n 'symbol': 'rad',\n from: (v: number) => v,\n to: (v: number) => v,\n },\n 'deg': {\n 'name': 'Degrees',\n 'symbol': 'deg',\n from: (v: number) => v * Math.PI / 180,\n to: (v: number) => v * 180 / Math.PI,\n },\n 'grad': {\n 'name': 'Gradians',\n 'symbol': 'grad',\n from: (v: number) => v * Math.PI / 200,\n to: (v: number) => v * 200 / Math.PI,\n },\n },\n 'temperature': {\n 'celsius': {\n 'name': 'Celsius',\n 'symbol': '°C',\n from: (v: number) => v,\n to: (v: number) => v,\n },\n 'fahrenheit': {\n 'name': 'Fahrenheit',\n 'symbol': '°F',\n from: (v: number) => (v - 32) * 5 / 9,\n to: (v: number) => v * 9 / 5 + 32,\n },\n 'kelvin': {\n 'name': 'Kelvin',\n 'symbol': 'K',\n from: (v: number) => v - 273.15,\n to: (v: number) => v + 273.15,\n },\n },\n 'pixel': {\n 'px': {\n 'name': 'Pixels',\n 'symbol': 'px',\n from: (v: number) => v,\n to: (v: number) => v,\n },\n 'dp': {\n 'name': 'Density-independent Pixels',\n 'symbol': 'dp',\n from: (v: number) => v * window.devicePixelRatio,\n to: (v: number) => v / window.devicePixelRatio,\n },\n // todo\n // 'sp': {\n // 'name': 'Scale-independent Pixels',\n // 'symbol': 'sp',\n // from: (v: number) => {\n // const fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) / 16;\n // return v * fontSize * window.devicePixelRatio;\n // }\n // },\n // 'rem': {\n // 'name': 'Root em',\n // 'symbol': 'rem',\n // from: (v: number) => {\n // const fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) / 16;\n // return v * fontSize * window.devicePixelRatio;\n // }\n // }\n }\n}\n","import {NumberUnits} from \"./NumberUnits\";\n\nexport function getNumberTransformFunctions(unit: string | undefined, unitType1: string | undefined, targetUnit: string | undefined) {\n const unitType = unit ? Object.entries(NumberUnits).find(([k, v]) => !!v[unit] && (!unitType1 || k === unitType1)) : undefined\n const target = targetUnit !== unit && unitType && targetUnit ? unitType[1][targetUnit] : undefined\n const source = targetUnit !== unit && unitType && unit ? unitType[1][unit] : undefined\n const transformValue = target && source ?\n (v: number) => target.from(source.to(v)) :\n undefined;\n const invTransformValue = target && source ?\n (v: number) => source.from(target.to(v)) :\n undefined;\n return {transformValue, invTransformValue};\n}\n","import React from \"react\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {BPInputComponent} from \"./BPInputComponent\";\nimport {ExtendedNumericInput} from \"../components/ExtendedNumericInput\";\nimport {BPValueComponentState} from \"./BPValueComponent\";\nimport {getNumberTransformFunctions} from \"./GetNumberTransformFunctions\";\n\nexport class BPNumberInputComponent extends BPInputComponent<number, BPValueComponentState<number>&{unit?: string}> {\n constructor(props: BPComponentProps<number>, context: UiConfigRendererContextType) {\n super(props, context, {value: 0, label: 'Number'});\n }\n\n private _inputs = [React.createRef<ExtendedNumericInput>()]\n\n async refreshConfigState(state?: BPValueComponentState<number>): Promise<void> {\n await super.refreshConfigState(state);\n await this._inputs[0].current?.setValue(this.state.value)\n }\n\n private _onChange = (v: number, last?: boolean) => {\n this.setValue(v, last); // todo: set loading while this promise is happening.\n }\n\n renderInput() {\n\n const unit = this.props.config.unit as string|undefined; // todo add to uiconfig, getOrCall\n const unitType = this.props.config.unitType as string|undefined; // todo add to uiconfig, getOrCall\n const targetUnit = this.state.unit || unit\n const {transformValue, invTransformValue} = getNumberTransformFunctions(unit, unitType, targetUnit);\n\n return (\n <ExtendedNumericInput\n className=\"numericInput\"\n disabled={this.state.disabled}\n readOnly={this.state.readOnly}\n defaultValue={this.state.value}\n fill={true}\n ref={this._inputs[0]}\n key={this.props.config.uuid}\n onChange2={this._onChange}\n transformValue={transformValue}\n invTransformValue={invTransformValue}\n />\n )\n }\n}\n\n","import {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport React from \"react\";\nimport {BPLabelledComponent, BPLabelledComponentState} from \"./BPLabelledComponent\";\nimport {Button, Intent} from \"@blueprintjs/core\";\n\n// @ts-ignore\nexport class BPButtonComponent extends BPLabelledComponent<()=>void, BPLabelledComponentState> {\n constructor(props: BPComponentProps<()=>void>, context: UiConfigRendererContextType) {\n super(props, context, {label: 'Button'});\n }\n\n onClick = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n // console.log('her')\n this.context.methods.clickButton(this.props.config, {args: [event]})\n }\n\n protected flexBasis = \"50%\"\n\n render() {\n return !this.state.hidden ? (\n <div className=\"bpButtonComponent xPaddedContent\"\n style={{flexBasis: this.state.baseWidth ?? this.flexBasis}}\n >\n <Button className=\"bpButton\"\n disabled={this.state.disabled || this.state.readOnly}\n intent={Intent.PRIMARY}\n size={\"small\"}\n fill={true}\n text={this.state.label} style={{}} onClick={this.onClick}/>\n </div>\n ) : null\n }\n\n}\n","import {ChangeEventHandler} from \"react\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {Switch} from \"@blueprintjs/core\";\nimport {BPInputComponent} from \"./BPInputComponent\";\n\nexport class BPToggleInputComponent extends BPInputComponent<boolean> {\n constructor(props: BPComponentProps<boolean>, context: UiConfigRendererContextType) {\n super(props, context, {value: false, label: 'Input'});\n }\n\n private _onChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n this.setValue(e.target.checked); // todo: set loading while this promise is happening.\n }\n\n renderInput() {\n return (\n <Switch alignIndicator=\"right\" defaultChecked={this.state.value}\n disabled={this.state.disabled} readOnly={this.state.readOnly}\n labelElement={(<span className={\"bp5-label\"} title={this.state.label}>{this.state.label}</span>)} onChange={this._onChange}\n inline={false} large={false}\n className=\"switch\"/>\n )\n }\n\n render() {\n return !this.state.hidden ? (\n <div className=\"xPaddedContent folderContent\"\n style={{flexBasis: this.state.baseWidth ?? this.flexBasis}}\n >\n {this.renderInput()}\n </div>\n ) : null\n }\n}\n","import {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {Slider} from \"@blueprintjs/core\";\nimport {BPInputComponent} from \"./BPInputComponent\";\nimport {BPValueComponentState} from \"./BPValueComponent\";\nimport {getOrCall} from \"ts-browser-helpers\";\nimport {ExtendedNumericInput} from \"../components/ExtendedNumericInput\";\nimport {getNumberTransformFunctions} from \"./GetNumberTransformFunctions\";\n\nexport type BPSliderComponentState = BPValueComponentState<number> & {\n min: number,\n max: number,\n step: number\n unit?: string,\n}\n\nexport class BPSliderInputComponent extends BPInputComponent<number, BPSliderComponentState> {\n constructor(props: BPComponentProps<number>, context: UiConfigRendererContextType) {\n super(props, context, {\n value: 0,\n label: 'Slider',\n min: 0,\n max: 1,\n step: 0.01,\n });\n }\n\n getUpdatedState(state: BPSliderComponentState): BPSliderComponentState {\n const bounds = getOrCall(this.props.config.bounds)\n const max = (bounds?.length ?? 0) >= 2 ? bounds![1] : 1\n const min = (bounds?.length ?? 0) >= 1 ? bounds![0] : 0\n const step = getOrCall(this.props.config.stepSize) || (Math.pow(10, Math.floor(Math.log10((max - min) / 100))))\n return super.getUpdatedState({\n ...state,\n min, max, step\n });\n }\n\n flexBasis = \"75%\"\n\n renderInput() {\n\n const unit = this.props.config.unit as string|undefined; // todo add to uiconfig, getOrCall\n const unitType = this.props.config.unitType as string|undefined; // todo add to uiconfig, getOrCall\n const targetUnit = this.state.unit || unit\n const {transformValue, invTransformValue} = getNumberTransformFunctions(unit, unitType, targetUnit);\n\n const invTransformValue_ = invTransformValue || ((v: number) => v);\n const transformValue_ = transformValue || ((v: number) => v);\n return [(<ExtendedNumericInput\n style={{maxWidth: \"4rem\", minWidth: \"3rem\"}}\n // defaultValue={state}\n disabled={this.state.disabled} readOnly={this.state.readOnly}\n value={Math.min(this.state.max, Math.max(this.state.min, this.state.value))}\n key={this.props.config.uuid + '_input'}\n min={this.state.min} max={this.state.max}\n stepSize={this.state.step}\n minorStepSize={this.state.step/10}\n majorStepSize={this.state.step*10}\n buttonPosition=\"none\"\n draggableIcon={false}\n transformValue={transformValue}\n invTransformValue={invTransformValue}\n onChange2={(v, last) => {\n if(this.state.readOnly) return\n this.setValue(v, last)\n }}\n />), (\n <Slider\n value={invTransformValue_(Math.min(this.state.max, Math.max(this.state.min, this.state.value)))}\n key={this.props.config.uuid + '_slider'}\n disabled={this.state.disabled}\n min={invTransformValue_(this.state.min)}\n max={invTransformValue_(this.state.max)}\n stepSize={invTransformValue_(this.state.step)}\n labelRenderer={false}\n // labelStepSize={(max - min)}\n // labelValues={[]}\n onChange={(v) => {\n if(this.state.readOnly) return\n this.setValue(transformValue_(v), false)\n }}\n onRelease={(v) => {\n if(this.state.readOnly) return\n this.setValue(transformValue_(v), true)\n }}\n />\n ),\n ]\n }\n}\n","import {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {Button, MenuItem} from \"@blueprintjs/core\";\nimport {BPInputComponent} from \"./BPInputComponent\";\nimport {BPValueComponentState} from \"./BPValueComponent\";\nimport {ItemRenderer, Select} from \"@blueprintjs/select\";\nimport {cleanLabel} from \"../utils\";\n\nexport interface DropdownItem{\n label: string,\n value: string|number,\n uuid?: string\n}\n\nexport type BPDropdownComponentState = BPValueComponentState<string|number> & {\n options: DropdownItem[]\n}\nconst renderDropdownItem: ItemRenderer<DropdownItem> = (item, { handleClick, handleFocus, modifiers }) => {\n if (!modifiers.matchesPredicate) {\n return null;\n }\n return (\n <MenuItem\n text={item.label}\n label={''}\n roleStructure=\"listoption\"\n active={modifiers.active}\n key={item.uuid || (typeof item.value === 'string' ? item.value : item.label)}\n onClick={handleClick}\n onFocus={handleFocus}\n />\n );\n};\n\nexport class BPDropdownInputComponent extends BPInputComponent<string|number, BPDropdownComponentState> {\n constructor(props: BPComponentProps<string|number>, context: UiConfigRendererContextType) {\n super(props, context, {\n value: '0',\n label: 'Dropdown',\n options: [{label: 'none', value: ''}]\n });\n }\n\n getUpdatedState(state: BPDropdownComponentState): BPDropdownComponentState {\n const children = this.context.methods.getChildren(this.props.config)\n const options: DropdownItem[] = children.map((value, i) => {\n let label1 = this.context.methods.getLabel(value)\n const label = cleanLabel(label1) || `Option ${i}`\n return {label, value: value!.value ?? label1, uuid: value!.uuid}\n })\n\n // const selected = options.find(o=>o.value===val)||options[0]\n return super.getUpdatedState({\n ...state, options\n });\n }\n\n renderInput() {\n const item = this.state.options.find(o=>o.value===this.state.value)||this.state.options[0]\n return (\n <Select<DropdownItem>\n filterable={false}\n activeItem={item}\n key={this.props.config.uuid}\n disabled={this.state.disabled}\n fill={true}\n popoverProps={{\n minimal: true,\n }}\n popoverTargetProps={{\n style: {\n height: \"var(--pt-input-height)\",\n }\n }}\n noResults={<MenuItem disabled={true} text=\"No results.\" roleStructure=\"listoption\" />}\n items={this.state.options}\n onItemSelect={(item)=> {\n if(this.state.readOnly) return\n this.setValue(item.value)\n }}\n itemRenderer={renderDropdownItem}\n >\n {/* children become the popover target; render value here */}\n <Button endIcon=\"double-caret-vertical\" size={\"small\"}\n style={{whiteSpace: 'nowrap', textOverflow: \"ellipsis\", height: \"100%\"}}>{item.label}</Button>\n </Select>\n )\n }\n}\n","import {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {ConfigObject} from \"../ConfigObject\";\nimport {BPLabelledComponentState} from \"./BPLabelledComponent\";\nimport {PanelActions} from \"@blueprintjs/core/lib/esm/components/panel-stack2/panelTypes\";\nimport {UiObjectConfig} from 'uiconfig.js'\nimport {safeSetProperty} from 'ts-browser-helpers'\nimport {BPContainerComponent, BPContainerComponentProps} from './BPContainerComponent'\n\nexport type BPPanelComponentState = BPLabelledComponentState & {\n children: UiObjectConfig[]\n expanded: boolean\n}\n\nexport class BPPanelComponent extends BPContainerComponent<BPPanelComponentState, BPContainerComponentProps> {\n constructor(props: BPComponentProps<void>&PanelActions&BPContainerComponentProps, context: UiConfigRendererContextType) {\n super(props, context, {\n children: [],\n expanded: false,\n label: 'Panel'\n });\n }\n\n setExpanded = (e: boolean) => {\n if (e === this.state.expanded) return\n this.setState({...this.state, expanded: e})\n safeSetProperty(this.props.config, \"expanded\", e, true)\n // if (e) this.state.children.forEach(c => Array.isArray(c) ? null : c.uiRefresh?.(\"postFrame\", true, 1)) // todo: handle array and functions\n }\n\n componentDidMount() {\n super.componentDidMount();\n this.setExpanded(true)\n }\n\n componentWillUnmount() {\n this.setExpanded(false)\n super.componentWillUnmount();\n }\n\n render() {\n return !this.state.hidden ? (\n <div\n key={this.props.config.uuid}\n className=\"folder-children\" style={{listStyleType: \"none\", paddingLeft: \"0\", overflowAnchor: 'none', paddingBottom: '400px'}}>\n {this.state.children.map((c, i) => c ? <ConfigObject key={'c' + i} {...this.props} config={c}/> : null)}\n </div>\n ) : null\n }\n}\n","import {HTMLAttributes, ReactNode} from \"react\";\n\n// https://github.com/palantir/blueprint/issues/2348#issuecomment-389322440\nexport const bpIconWrapper = (path: ReactNode, viewbox = 16, svgProps?: HTMLAttributes<SVGElement>, className?: string) => {\n return (\n <span className={\"bp5-icon\" + (className ? ` ${className}` : '')} role=\"img\" aria-label=\"icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n x=\"0\"\n y=\"0\"\n width=\"16\"\n height=\"16\"\n role=\"img\"\n viewBox={`0 0 ${viewbox} ${viewbox}`}\n {...svgProps}\n >\n {path}\n </svg>\n </span>\n );\n};\n","import {bpIconWrapper} from \"./bpIconWrapper\";\n\nexport const xIcon1 = bpIconWrapper(\n <path\n d=\"M5.77344 1.59131L5.6416 1.99414C4.94336 2.49219 4.36475 3.0708 3.90576 3.72998C3.20264 4.74561 2.62891 5.9834 2.18457 7.44336C1.74512 8.89844 1.52539 10.2656 1.52539 11.5449C1.52539 12.3604 1.71826 13.2393 2.104 14.1816L1.97949 14.6064C0.666016 12.8486 0.00927734 11.0957 0.00927734 9.34766C0.00927734 8.3418 0.229004 7.3457 0.668457 6.35938C1.18604 5.20703 1.95264 4.18408 2.96826 3.29053C3.74463 2.60693 4.67969 2.04053 5.77344 1.59131ZM4.93115 5.3999L7.4873 4.96045C7.95117 5.68799 8.27832 6.48877 8.46875 7.36279C8.94727 6.65479 9.30859 6.15918 9.55273 5.87598C9.87988 5.49512 10.1484 5.24854 10.3584 5.13623C10.5732 5.01904 10.8003 4.96045 11.0396 4.96045C11.3081 4.96045 11.5132 5.03369 11.6548 5.18018C11.8013 5.32666 11.8745 5.52441 11.8745 5.77344C11.8745 6.00781 11.8013 6.20068 11.6548 6.35205C11.5132 6.49854 11.335 6.57178 11.1201 6.57178C10.9639 6.57178 10.7832 6.54492 10.5781 6.49121C10.3779 6.43262 10.2388 6.40332 10.1606 6.40332C9.95557 6.40332 9.76025 6.47656 9.57471 6.62305C9.3208 6.82324 9.0083 7.25049 8.63721 7.90479C9.05225 9.36963 9.38428 10.2632 9.6333 10.5854C9.77979 10.7759 9.92871 10.8711 10.0801 10.8711C10.207 10.8711 10.3169 10.8394 10.4097 10.7759C10.5513 10.6733 10.7686 10.417 11.0615 10.0068L11.3252 10.1606C10.8955 10.854 10.4756 11.3423 10.0654 11.6255C9.75293 11.8452 9.44531 11.9551 9.14258 11.9551C8.83008 11.9551 8.56885 11.8867 8.35889 11.75C8.15381 11.6084 7.9707 11.3813 7.80957 11.0688C7.64844 10.7515 7.45801 10.2461 7.23828 9.55273C6.66699 10.2803 6.21777 10.8125 5.89062 11.1494C5.56836 11.4814 5.2998 11.6987 5.08496 11.8013C4.87012 11.9038 4.64062 11.9551 4.39648 11.9551C4.14258 11.9551 3.94238 11.8818 3.7959 11.7354C3.64453 11.5889 3.56885 11.3984 3.56885 11.1641C3.56885 10.915 3.64941 10.71 3.81055 10.5488C3.97168 10.3877 4.17676 10.3071 4.42578 10.3071C4.55762 10.3071 4.70654 10.3462 4.87256 10.4243C5.1167 10.5415 5.29248 10.6001 5.3999 10.6001C5.5415 10.6001 5.66846 10.5708 5.78076 10.5122C5.92725 10.439 6.11279 10.2803 6.3374 10.0361C6.47412 9.88477 6.72559 9.5625 7.0918 9.06934C6.62305 7.33105 6.25684 6.29102 5.99316 5.94922C5.82715 5.72949 5.61719 5.61963 5.36328 5.61963C5.23145 5.61963 5.07031 5.63916 4.87988 5.67822L4.93115 5.3999ZM10.0581 14.6064L10.1899 14.2036C10.7515 13.8032 11.2275 13.3638 11.6182 12.8853C12.0039 12.4067 12.4019 11.7451 12.812 10.9004C13.2222 10.0508 13.5566 9.14258 13.8154 8.17578C14.1475 6.9209 14.3135 5.74658 14.3135 4.65283C14.3135 3.8374 14.1206 2.95605 13.7349 2.00879L13.8521 1.59131C15.1655 3.34912 15.8223 5.09961 15.8223 6.84277C15.8223 7.85352 15.6025 8.85205 15.1631 9.83838C14.6504 10.9858 13.8838 12.0063 12.8633 12.8999C12.0869 13.5835 11.1519 14.1523 10.0581 14.6064Z\"/>\n);\nexport const yIcon1 = bpIconWrapper(\n <path\n d=\"M6.19092 1.59131L6.05908 1.99414C5.36084 2.49219 4.78223 3.0708 4.32324 3.72998C3.62012 4.74561 3.04639 5.9834 2.60205 7.44336C2.1626 8.89844 1.94287 10.2656 1.94287 11.5449C1.94287 12.3604 2.13574 13.2393 2.52148 14.1816L2.39697 14.6064C1.0835 12.8486 0.426758 11.0957 0.426758 9.34766C0.426758 8.3418 0.646484 7.3457 1.08594 6.35938C1.60352 5.20703 2.37012 4.18408 3.38574 3.29053C4.16211 2.60693 5.09717 2.04053 6.19092 1.59131ZM5.04834 5.61963L7.3042 4.96045C7.48486 5.18506 7.61182 5.39746 7.68506 5.59766C7.81689 5.94434 7.90967 6.42285 7.96338 7.0332C8.06592 8.23438 8.13672 9.51611 8.17578 10.8784C8.69824 10.1899 9.29639 9.2793 9.97021 8.14648C10.1753 7.80469 10.2778 7.48242 10.2778 7.17969C10.2778 6.98926 10.1582 6.80859 9.91895 6.6377C9.68457 6.4668 9.53809 6.33496 9.47949 6.24219C9.4209 6.14453 9.3916 6.02002 9.3916 5.86865C9.3916 5.62451 9.47949 5.41211 9.65527 5.23145C9.83594 5.05078 10.0532 4.96045 10.3071 4.96045C10.5757 4.96045 10.8076 5.06299 11.0029 5.26807C11.2031 5.47314 11.3032 5.71484 11.3032 5.99316C11.3032 6.32031 11.2104 6.70117 11.0249 7.13574C10.8442 7.56543 10.417 8.30518 9.74316 9.35498C8.87891 10.6978 8.03174 11.8599 7.20166 12.8413C6.66943 13.4663 6.23975 13.9155 5.9126 14.189C5.58545 14.4673 5.24609 14.687 4.89453 14.8481C4.68457 14.9409 4.47705 14.9873 4.27197 14.9873C3.99365 14.9873 3.75684 14.8896 3.56152 14.6943C3.36133 14.499 3.26123 14.2671 3.26123 13.9985C3.26123 13.73 3.35156 13.5029 3.53223 13.3174C3.70801 13.1318 3.91553 13.0391 4.15479 13.0391C4.45264 13.0391 4.72607 13.1953 4.9751 13.5078C5.14111 13.7178 5.27783 13.8228 5.38525 13.8228C5.49756 13.8228 5.60742 13.791 5.71484 13.7275C5.86133 13.6494 6.06641 13.4688 6.33008 13.1855C6.35938 12.5752 6.37402 12.1138 6.37402 11.8013C6.37402 11.3813 6.35449 10.7905 6.31543 10.0288L6.19092 7.23828C6.14697 6.72559 6.03711 6.35693 5.86133 6.13232C5.72461 5.96631 5.54639 5.8833 5.32666 5.8833C5.24365 5.8833 5.15088 5.89062 5.04834 5.90527V5.61963ZM9.64062 14.6064L9.77246 14.2036C10.334 13.8032 10.8101 13.3638 11.2007 12.8853C11.5864 12.4067 11.9844 11.7451 12.3945 10.9004C12.8047 10.0508 13.1392 9.14258 13.3979 8.17578C13.73 6.9209 13.896 5.74658 13.896 4.65283C13.896 3.8374 13.7031 2.95605 13.3174 2.00879L13.4346 1.59131C14.748 3.34912 15.4048 5.09961 15.4048 6.84277C15.4048 7.85352 15.1851 8.85205 14.7456 9.83838C14.2329 10.9858 13.4663 12.0063 12.4458 12.8999C11.6694 13.5835 10.7344 14.1523 9.64062 14.6064Z\"/>\n);\nexport const zIcon1 = bpIconWrapper(\n <path\n d=\"M6.60107 1.59131L6.46924 1.99414C5.771 2.49219 5.19238 3.0708 4.7334 3.72998C4.03027 4.74561 3.45654 5.9834 3.01221 7.44336C2.57275 8.89844 2.35303 10.2656 2.35303 11.5449C2.35303 12.3604 2.5459 13.2393 2.93164 14.1816L2.80713 14.6064C1.49365 12.8486 0.836914 11.0957 0.836914 9.34766C0.836914 8.3418 1.05664 7.3457 1.49609 6.35938C2.01367 5.20703 2.78027 4.18408 3.7959 3.29053C4.57227 2.60693 5.50732 2.04053 6.60107 1.59131ZM11.0322 5.16553L6.87207 10.0801C7.18457 10.1729 7.4165 10.312 7.56787 10.4976C7.76318 10.7417 7.90479 11.1079 7.99268 11.5962C8.08057 12.0796 8.18066 12.3848 8.29297 12.5117C8.40527 12.6436 8.52002 12.7095 8.63721 12.7095C8.71533 12.7095 8.78857 12.6729 8.85693 12.5996C8.92529 12.5312 8.95947 12.4531 8.95947 12.3652C8.95947 12.2725 8.93018 12.1211 8.87158 11.9111C8.83252 11.7695 8.81299 11.6328 8.81299 11.501C8.81299 11.2275 8.89844 10.998 9.06934 10.8125C9.24512 10.627 9.45508 10.5342 9.69922 10.5342C9.91895 10.5342 10.1021 10.6172 10.2485 10.7832C10.3999 10.9443 10.4756 11.1567 10.4756 11.4204C10.4756 11.8257 10.29 12.1943 9.91895 12.5264C9.54785 12.8584 9.09131 13.0244 8.54932 13.0244C7.92432 13.0244 7.31152 12.7363 6.71094 12.1602C6.4668 11.9307 6.26904 11.7744 6.11768 11.6914C6.02979 11.6475 5.91748 11.6255 5.78076 11.6255C5.66357 11.6255 5.53418 11.667 5.39258 11.75H4.92383L9.17188 6.71094H7.64844C7.21387 6.71094 6.89893 6.76465 6.70361 6.87207C6.51318 6.97949 6.33252 7.18945 6.16162 7.50195H5.84668L6.45459 5.16553H11.0322ZM9.23047 14.6064L9.3623 14.2036C9.92383 13.8032 10.3999 13.3638 10.7905 12.8853C11.1763 12.4067 11.5742 11.7451 11.9844 10.9004C12.3945 10.0508 12.729 9.14258 12.9878 8.17578C13.3198 6.9209 13.4858 5.74658 13.4858 4.65283C13.4858 3.8374 13.293 2.95605 12.9072 2.00879L13.0244 1.59131C14.3379 3.34912 14.9946 5.09961 14.9946 6.84277C14.9946 7.85352 14.7749 8.85205 14.3354 9.83838C13.8228 10.9858 13.0562 12.0063 12.0356 12.8999C11.2593 13.5835 10.3242 14.1523 9.23047 14.6064Z\"/>\n);\n\nexport const xIcon2 = bpIconWrapper(\n <path\n d=\"M4.56494 11.75L7.5166 8.10254V8.08789L4.65283 4.66748H5.73682L7.95605 7.41406L10.1021 4.66748H11.1641L8.37354 8.10254L11.4351 11.75H10.3584L7.95605 8.64453H7.94141L5.62695 11.75H4.56494Z\"/>\n);\nexport const yIcon2 = bpIconWrapper(\n <path\n d=\"M4.77734 4.66748H5.75146L7.31152 8.54199C7.74121 9.67969 7.99512 10.4243 8.07324 10.7759C8.1416 10.2974 8.87158 8.26123 10.2632 4.66748H11.208L8.25635 12.3359C8.14404 12.624 8.03906 12.8608 7.94141 13.0464C7.84863 13.2319 7.71924 13.4395 7.55322 13.6689C7.39209 13.8984 7.19434 14.0718 6.95996 14.189C6.72559 14.311 6.46191 14.3721 6.16895 14.3721C5.80762 14.3721 5.41699 14.3379 4.99707 14.2695L4.92383 13.4272C5.38281 13.5493 5.79785 13.6104 6.16895 13.6104C6.33008 13.6104 6.47656 13.5737 6.6084 13.5005C6.74512 13.4321 6.8501 13.3687 6.92334 13.3101C7.00146 13.2515 7.08936 13.1221 7.18701 12.9219C7.28955 12.7217 7.35303 12.585 7.37744 12.5117C7.40186 12.4434 7.47021 12.27 7.58252 11.9917C7.62158 11.8794 7.64111 11.7939 7.64111 11.7354C7.64111 11.6865 7.61182 11.5913 7.55322 11.4497L4.77734 4.66748Z\"/>\n);\nexport const zIcon2 = bpIconWrapper(\n <path\n d=\"M5.05566 11.75V11.2373L9.604 5.40723H5.28271V4.66748H10.9077V5.16553L6.38135 11.0029H10.9663V11.75H5.05566Z\"/>\n);\n\nexport const xIcon3 = bpIconWrapper(\n <path\n d=\"M4.12109 12L7.4668 7.59375L4.29688 3.66211H5.31641L7.90039 6.96094L10.373 3.66211H11.334L8.33398 7.60547L11.8613 12H10.8418L7.90039 8.18555L5.09375 12H4.12109Z\"/>\n);\nexport const yIcon3 = bpIconWrapper(\n <path\n d=\"M3.97461 3.66211H4.99414L8.04102 7.89844L11.0938 3.66211H12.002L8.4043 8.66602V12H7.57227V8.66602L3.97461 3.66211Z\"/>\n);\nexport const zIcon3 = bpIconWrapper(\n <path d=\"M4.84766 12V11.5664L10.0156 4.2832H5.0293V3.66211H11.1465V4.07812L5.97266 11.3613H11.2168V12H4.84766Z\"/>\n);\n\nexport const uIcon3 = bpIconWrapper(\n <path\n d=\"M5.02344 9.03516V3.66211H5.86133V9.09375C5.86133 10.1328 6.18555 10.8535 6.83398 11.2559C7.16992 11.4629 7.5625 11.5664 8.01172 11.5664C8.23438 11.5664 8.45117 11.5371 8.66211 11.4785C8.87695 11.4199 9.10742 11.3105 9.35352 11.1504C9.60352 10.9902 9.80273 10.7363 9.95117 10.3887C10.1035 10.0371 10.1797 9.61328 10.1797 9.11719V3.66211H10.959V9.09375C10.959 10.0625 10.6562 10.8242 10.0508 11.3789C9.44922 11.9297 8.76953 12.2051 8.01172 12.2051C7.27734 12.2051 6.62891 11.9648 6.06641 11.4844C5.50781 11.0039 5.17188 10.4004 5.05859 9.67383C5.03516 9.5293 5.02344 9.31641 5.02344 9.03516Z\"/>\n);\nexport const vIcon3 = bpIconWrapper(\n <path\n d=\"M4.12109 3.66211H5.00586L7.87695 10.7871L8.0293 11.2207L9.07227 8.57812L11.0645 3.66211H11.8613L8.46289 12.0586H7.52539L4.12109 3.66211Z\"/>\n);\nexport const wIcon3 = bpIconWrapper(\n <path\n d=\"M2.36914 3.66211H3.18359L4.70703 8.74805C5.12109 10.1738 5.34961 10.998 5.39258 11.2207L5.50977 10.7051L6.16016 8.44922L7.58984 3.66211H8.42773L9.74609 8.00391C10.3125 9.95703 10.6172 11.0293 10.6602 11.2207C10.6836 11.0684 10.9355 10.1758 11.416 8.54297L12.8809 3.66211H13.6133L11.0645 12.0586H10.2031L8.36914 5.92969L8.0293 4.74023L7.9707 4.44141L7.87695 4.89844L7.26172 7.00781L5.75 12.0586H4.91211L2.36914 3.66211Z\"/>\n);\nexport const hIcon3 = bpIconWrapper(\n <path d=\"M4.92969 12V3.66211H5.76758V7.3418H10.2207V3.66211H11.0586V12H10.2207V7.98047H5.76758V12H4.92969Z\"/>\n);\n\n\nexport const xIcon4 = bpIconWrapper(\n <path\n d=\"M4.93115 5.3999L7.4873 4.96045C7.95117 5.68799 8.27832 6.48877 8.46875 7.36279C8.94727 6.65479 9.30859 6.15918 9.55273 5.87598C9.87988 5.49512 10.1484 5.24854 10.3584 5.13623C10.5732 5.01904 10.8003 4.96045 11.0396 4.96045C11.3081 4.96045 11.5132 5.03369 11.6548 5.18018C11.8013 5.32666 11.8745 5.52441 11.8745 5.77344C11.8745 6.00781 11.8013 6.20068 11.6548 6.35205C11.5132 6.49854 11.335 6.57178 11.1201 6.57178C10.9639 6.57178 10.7832 6.54492 10.5781 6.49121C10.3779 6.43262 10.2388 6.40332 10.1606 6.40332C9.95557 6.40332 9.76025 6.47656 9.57471 6.62305C9.3208 6.82324 9.0083 7.25049 8.63721 7.90479C9.05225 9.36963 9.38428 10.2632 9.6333 10.5854C9.77979 10.7759 9.92871 10.8711 10.0801 10.8711C10.207 10.8711 10.3169 10.8394 10.4097 10.7759C10.5513 10.6733 10.7686 10.417 11.0615 10.0068L11.3252 10.1606C10.8955 10.854 10.4756 11.3423 10.0654 11.6255C9.75293 11.8452 9.44531 11.9551 9.14258 11.9551C8.83008 11.9551 8.56885 11.8867 8.35889 11.75C8.15381 11.6084 7.9707 11.3813 7.80957 11.0688C7.64844 10.7515 7.45801 10.2461 7.23828 9.55273C6.66699 10.2803 6.21777 10.8125 5.89062 11.1494C5.56836 11.4814 5.2998 11.6987 5.08496 11.8013C4.87012 11.9038 4.64062 11.9551 4.39648 11.9551C4.14258 11.9551 3.94238 11.8818 3.7959 11.7354C3.64453 11.5889 3.56885 11.3984 3.56885 11.1641C3.56885 10.915 3.64941 10.71 3.81055 10.5488C3.97168 10.3877 4.17676 10.3071 4.42578 10.3071C4.55762 10.3071 4.70654 10.3462 4.87256 10.4243C5.1167 10.5415 5.29248 10.6001 5.3999 10.6001C5.5415 10.6001 5.66846 10.5708 5.78076 10.5122C5.92725 10.439 6.11279 10.2803 6.3374 10.0361C6.47412 9.88477 6.72559 9.5625 7.0918 9.06934C6.62305 7.33105 6.25684 6.29102 5.99316 5.94922C5.82715 5.72949 5.61719 5.61963 5.36328 5.61963C5.23145 5.61963 5.07031 5.63916 4.87988 5.67822L4.93115 5.3999Z\"/>\n);\nexport const yIcon4 = bpIconWrapper(\n <path\n d=\"M5.04834 5.61963L7.3042 4.96045C7.48486 5.18506 7.61182 5.39746 7.68506 5.59766C7.81689 5.94434 7.90967 6.42285 7.96338 7.0332C8.06592 8.23438 8.13672 9.51611 8.17578 10.8784C8.69824 10.1899 9.29639 9.2793 9.97021 8.14648C10.1753 7.80469 10.2778 7.48242 10.2778 7.17969C10.2778 6.98926 10.1582 6.80859 9.91895 6.6377C9.68457 6.4668 9.53809 6.33496 9.47949 6.24219C9.4209 6.14453 9.3916 6.02002 9.3916 5.86865C9.3916 5.62451 9.47949 5.41211 9.65527 5.23145C9.83594 5.05078 10.0532 4.96045 10.3071 4.96045C10.5757 4.96045 10.8076 5.06299 11.0029 5.26807C11.2031 5.47314 11.3032 5.71484 11.3032 5.99316C11.3032 6.32031 11.2104 6.70117 11.0249 7.13574C10.8442 7.56543 10.417 8.30518 9.74316 9.35498C8.87891 10.6978 8.03174 11.8599 7.20166 12.8413C6.66943 13.4663 6.23975 13.9155 5.9126 14.189C5.58545 14.4673 5.24609 14.687 4.89453 14.8481C4.68457 14.9409 4.47705 14.9873 4.27197 14.9873C3.99365 14.9873 3.75684 14.8896 3.56152 14.6943C3.36133 14.499 3.26123 14.2671 3.26123 13.9985C3.26123 13.73 3.35156 13.5029 3.53223 13.3174C3.70801 13.1318 3.91553 13.0391 4.15479 13.0391C4.45264 13.0391 4.72607 13.1953 4.9751 13.5078C5.14111 13.7178 5.27783 13.8228 5.38525 13.8228C5.49756 13.8228 5.60742 13.791 5.71484 13.7275C5.86133 13.6494 6.06641 13.4688 6.33008 13.1855C6.35938 12.5752 6.37402 12.1138 6.37402 11.8013C6.37402 11.3813 6.35449 10.7905 6.31543 10.0288L6.19092 7.23828C6.14697 6.72559 6.03711 6.35693 5.86133 6.13232C5.72461 5.96631 5.54639 5.8833 5.32666 5.8833C5.24365 5.8833 5.15088 5.89062 5.04834 5.90527V5.61963Z\"/>\n);\nexport const zIcon4 = bpIconWrapper(\n <path\n d=\"M11.0322 5.16553L6.87207 10.0801C7.18457 10.1729 7.4165 10.312 7.56787 10.4976C7.76318 10.7417 7.90479 11.1079 7.99268 11.5962C8.08057 12.0796 8.18066 12.3848 8.29297 12.5117C8.40527 12.6436 8.52002 12.7095 8.63721 12.7095C8.71533 12.7095 8.78857 12.6729 8.85693 12.5996C8.92529 12.5312 8.95947 12.4531 8.95947 12.3652C8.95947 12.2725 8.93018 12.1211 8.87158 11.9111C8.83252 11.7695 8.81299 11.6328 8.81299 11.501C8.81299 11.2275 8.89844 10.998 9.06934 10.8125C9.24512 10.627 9.45508 10.5342 9.69922 10.5342C9.91895 10.5342 10.1021 10.6172 10.2485 10.7832C10.3999 10.9443 10.4756 11.1567 10.4756 11.4204C10.4756 11.8257 10.29 12.1943 9.91895 12.5264C9.54785 12.8584 9.09131 13.0244 8.54932 13.0244C7.92432 13.0244 7.31152 12.7363 6.71094 12.1602C6.4668 11.9307 6.26904 11.7744 6.11768 11.6914C6.02979 11.6475 5.91748 11.6255 5.78076 11.6255C5.66357 11.6255 5.53418 11.667 5.39258 11.75H4.92383L9.17188 6.71094H7.64844C7.21387 6.71094 6.89893 6.76465 6.70361 6.87207C6.51318 6.97949 6.33252 7.18945 6.16162 7.50195H5.84668L6.45459 5.16553H11.0322Z\"/>\n);\n\n\nexport const xIcon5 = bpIconWrapper(\n <path\n d=\"M1.44336 7.83008C1.44336 5.2793 2.27539 3.33594 3.93945 2H4.54297C4.16016 2.35937 3.87109 2.66406 3.67578 2.91406C2.69922 4.1875 2.21094 5.81836 2.21094 7.80664C2.21094 10.2949 2.96875 12.2305 4.48438 13.6133C4.51562 13.6367 4.53516 13.6543 4.54297 13.666H3.93945C3.09961 12.9863 2.47266 12.1406 2.05859 11.1289C1.64844 10.1211 1.44336 9.02148 1.44336 7.83008ZM5.25195 11L7.61328 8.08203V8.07031L5.32227 5.33398H6.18945L7.96484 7.53125L9.68164 5.33398H10.5312L8.29883 8.08203L10.748 11H9.88672L7.96484 8.51562H7.95312L6.10156 11H5.25195ZM11.4453 13.666C11.9336 13.2246 12.3164 12.7832 12.5938 12.3418C13.3789 11.1191 13.7715 9.60742 13.7715 7.80664C13.7715 5.31836 13.0195 3.40234 11.5156 2.05859C11.4766 2.02734 11.4531 2.00781 11.4453 2H12.043C12.8828 2.67188 13.5078 3.50977 13.918 4.51367C14.332 5.51758 14.5391 6.61523 14.5391 7.80664C14.5391 8.91992 14.3477 9.99414 13.9648 11.0293C13.582 12.0645 12.9414 12.9434 12.043 13.666H11.4453Z\"/>\n);\nexport const yIcon5 = bpIconWrapper(\n <path\n d=\"M1.44336 7.83008C1.44336 5.2793 2.27539 3.33594 3.93945 2H4.54297C4.16016 2.35937 3.87109 2.66406 3.67578 2.91406C2.69922 4.1875 2.21094 5.81836 2.21094 7.80664C2.21094 10.2949 2.96875 12.2305 4.48438 13.6133C4.51562 13.6367 4.53516 13.6543 4.54297 13.666H3.93945C3.09961 12.9863 2.47266 12.1406 2.05859 11.1289C1.64844 10.1211 1.44336 9.02148 1.44336 7.83008ZM5.42188 5.33398H6.20117L7.44922 8.43359C7.79297 9.34375 7.99609 9.93945 8.05859 10.2207C8.11328 9.83789 8.69727 8.20898 9.81055 5.33398H10.5664L8.20508 11.4688C8.11523 11.6992 8.03125 11.8887 7.95312 12.0371C7.87891 12.1855 7.77539 12.3516 7.64258 12.5352C7.51367 12.7188 7.35547 12.8574 7.16797 12.9512C6.98047 13.0488 6.76953 13.0977 6.53516 13.0977C6.24609 13.0977 5.93359 13.0703 5.59766 13.0156L5.53906 12.3418C5.90625 12.4395 6.23828 12.4883 6.53516 12.4883C6.66406 12.4883 6.78125 12.459 6.88672 12.4004C6.99609 12.3457 7.08008 12.2949 7.13867 12.248C7.20117 12.2012 7.27148 12.0977 7.34961 11.9375C7.43164 11.7773 7.48242 11.668 7.50195 11.6094C7.52148 11.5547 7.57617 11.416 7.66602 11.1934C7.69727 11.1035 7.71289 11.0352 7.71289 10.9883C7.71289 10.9492 7.68945 10.873 7.64258 10.7598L5.42188 5.33398ZM11.4453 13.666C11.9336 13.2246 12.3164 12.7832 12.5938 12.3418C13.3789 11.1191 13.7715 9.60742 13.7715 7.80664C13.7715 5.31836 13.0195 3.40234 11.5156 2.05859C11.4766 2.02734 11.4531 2.00781 11.4453 2H12.043C12.8828 2.67188 13.5078 3.50977 13.918 4.51367C14.332 5.51758 14.5391 6.61523 14.5391 7.80664C14.5391 8.91992 14.3477 9.99414 13.9648 11.0293C13.582 12.0645 12.9414 12.9434 12.043 13.666H11.4453Z\"/>\n);\nexport const zIcon5 = bpIconWrapper(\n <path\n d=\"M1.49023 7.83008C1.49023 5.2793 2.32227 3.33594 3.98633 2H4.58984C4.20703 2.35937 3.91797 2.66406 3.72266 2.91406C2.74609 4.1875 2.25781 5.81836 2.25781 7.80664C2.25781 10.2949 3.01562 12.2305 4.53125 13.6133C4.5625 13.6367 4.58203 13.6543 4.58984 13.666H3.98633C3.14648 12.9863 2.51953 12.1406 2.10547 11.1289C1.69531 10.1211 1.49023 9.02148 1.49023 7.83008ZM5.64453 11V10.5898L9.2832 5.92578H5.82617V5.33398H10.3262V5.73242L6.70508 10.4023H10.373V11H5.64453ZM11.3984 13.666C11.8867 13.2246 12.2695 12.7832 12.5469 12.3418C13.332 11.1191 13.7246 9.60742 13.7246 7.80664C13.7246 5.31836 12.9727 3.40234 11.4688 2.05859C11.4297 2.02734 11.4062 2.00781 11.3984 2H11.9961C12.8359 2.67188 13.4609 3.50977 13.8711 4.51367C14.2852 5.51758 14.4922 6.61523 14.4922 7.80664C14.4922 8.91992 14.3008 9.99414 13.918 11.0293C13.5352 12.0645 12.8945 12.9434 11.9961 13.666H11.3984Z\"/>\n);\n\n\nexport const xIcon6 = bpIconWrapper(\n <path\n d=\"M7.50928 8.40771L5.96387 4.8042C5.69043 4.16943 5.46826 3.77637 5.29736 3.625C5.13135 3.46875 4.86768 3.37354 4.50635 3.33936V3.06836H8.89355L8.81299 3.33936C8.50537 3.36377 8.29785 3.4248 8.19043 3.52246C8.08301 3.62012 8.0293 3.74951 8.0293 3.91064C8.0293 4.10107 8.11475 4.39893 8.28564 4.8042L9.16455 6.88428L10.3877 5.76367C11.0713 5.14355 11.5083 4.67969 11.6987 4.37207C11.811 4.19141 11.8672 4.02783 11.8672 3.88135C11.8672 3.74951 11.8062 3.62988 11.6841 3.52246C11.5669 3.41504 11.3765 3.354 11.1128 3.33936L11.2007 3.06836H14.4453L14.3794 3.33936C14.1353 3.3833 13.9106 3.47119 13.7056 3.60303C13.3784 3.81299 12.8315 4.26953 12.0649 4.97266L9.3916 7.42627L10.8931 10.9199C11.2397 11.7158 11.4985 12.1992 11.6694 12.3701C11.8452 12.541 12.104 12.6606 12.4458 12.729L12.3726 13H7.9707L8.05859 12.729C8.36621 12.7241 8.59082 12.6631 8.73242 12.5459C8.87402 12.4238 8.94482 12.2749 8.94482 12.0991C8.94482 11.8599 8.80811 11.4277 8.53467 10.8027L7.729 8.93506L5.89795 10.6416C5.31689 11.1787 4.97754 11.5303 4.87988 11.6963C4.78711 11.8574 4.74072 12.0112 4.74072 12.1577C4.74072 12.3042 4.80908 12.4336 4.9458 12.5459C5.08252 12.6582 5.30713 12.7192 5.61963 12.729L5.53174 13H2.08936L2.1626 12.729C2.42139 12.6802 2.64355 12.5996 2.8291 12.4873C3.2832 12.2139 3.84229 11.7695 4.50635 11.1543L7.50928 8.40771Z\"/>\n);\nexport const yIcon6 = bpIconWrapper(\n <path\n d=\"M7.38477 8.61279L6.5498 4.99463C6.4082 4.36963 6.2373 3.94238 6.03711 3.71289C5.88574 3.53711 5.60986 3.4126 5.20947 3.33936L5.29004 3.06836H10.0581L9.97021 3.33936C9.50635 3.33936 9.16699 3.43457 8.95215 3.625C8.74219 3.81055 8.63721 4.03271 8.63721 4.2915C8.63721 4.45264 8.68115 4.7334 8.76904 5.13379L9.41357 8.0708L11.0176 5.85889C11.4277 5.29248 11.6841 4.89453 11.7866 4.66504C11.8892 4.43066 11.9404 4.22559 11.9404 4.0498C11.9404 3.87402 11.8745 3.72021 11.7427 3.58838C11.6108 3.45654 11.3984 3.37354 11.1055 3.33936L11.186 3.06836H14.167V3.33936C13.8984 3.36865 13.6665 3.45654 13.4712 3.60303C13.2759 3.74951 12.895 4.21338 12.3286 4.99463L9.50879 8.87646L8.84961 11.1763C8.70801 11.6499 8.63721 11.9258 8.63721 12.0039C8.63721 12.2139 8.71777 12.3872 8.87891 12.5239C9.04004 12.6606 9.31104 12.729 9.69189 12.729H9.97021L9.88965 13H4.80664L4.87988 12.729C5.25098 12.7339 5.54883 12.6851 5.77344 12.5825C5.99805 12.4751 6.1665 12.3384 6.27881 12.1724C6.35693 12.0552 6.47168 11.7427 6.62305 11.2349L7.38477 8.61279Z\"/>\n);\nexport const zIcon6 = bpIconWrapper(\n <path\n d=\"M13.5957 3.33936L6.00049 12.458H6.59375C7.78027 12.458 8.73242 12.2847 9.4502 11.938C10.168 11.5864 10.832 11.0078 11.4424 10.2021H11.75L10.71 13H3.00488V12.729L10.5928 3.63965H9.6626C8.47119 3.63965 7.5874 3.78857 7.01123 4.08643C6.43506 4.37939 5.94189 4.87988 5.53174 5.58789H5.23877L6.08838 3.06836H13.5957V3.33936Z\"/>\n);\n\nexport const xIcon7 = bpIconWrapper(\n <path\n d=\"M12.7249 12.595L12.2749 12.55C11.9899 12.505 11.8099 12.31 11.2849 11.5L8.64488 7.3L10.9549 4.18C11.5699 3.37 11.7499 3.19 11.9749 3.16L12.5899 3.115V2.665H11.0749L8.29988 6.715L6.37988 3.475C6.03488 2.905 5.80988 2.65 5.52488 2.5L3.40988 2.905L3.43988 3.295L4.11488 3.34C4.47488 3.37 4.99988 3.865 5.49488 4.69L7.41488 7.885L4.48988 11.83C4.11488 12.34 3.93488 12.505 3.60488 12.55L3.21488 12.595V13.045C3.87488 13 3.87488 13 3.99488 13C4.11488 13 4.11488 13 4.75988 13.045L7.78988 8.455L10.5499 13.045C11.4799 13 11.4799 13 11.6599 13C11.7349 13 12.0799 13.015 12.7249 13.045V12.595Z\"/>\n);\nexport const yIcon7 = bpIconWrapper(\n <path\n d=\"M3.13988 2.8V3.235L3.57488 3.28C4.08488 3.355 4.86488 4.135 5.49488 5.23L7.35488 8.47C7.44488 8.62 7.48988 8.83 7.48988 9.07V11.2C7.48988 12.385 7.41488 12.505 6.72488 12.55L6.00488 12.595V13.045C6.88988 13.015 7.41488 13 8.19488 13C8.97488 13 9.51488 13.015 10.3999 13.045V12.595L9.67988 12.55C8.98988 12.505 8.91488 12.385 8.91488 11.2V9.265C8.91488 8.44 9.12488 7.93 9.99488 6.61C11.1049 4.945 11.5999 4.27 12.8149 2.815V2.59H11.6149C11.0449 3.7 10.5799 4.51 9.99488 5.44L8.44988 7.885L6.30488 3.97C5.82488 3.115 5.20988 2.425 4.93988 2.425L3.13988 2.8Z\"/>\n);\nexport const zIcon7 = bpIconWrapper(\n <path\n d=\"M12.5599 3.055L12.4999 2.62L10.1599 2.665L6.67988 2.635L4.20488 2.62C4.23488 3.175 4.24988 3.445 4.24988 3.835C4.24988 4.225 4.23488 4.495 4.20488 5.05H4.71488L4.80488 3.985C4.84988 3.4 5.25488 3.28 7.08488 3.28H10.5049L3.22988 12.625V13.045L7.90988 13L12.4849 13.045C12.4849 11.755 12.4999 11.23 12.5749 10.405H12.0649L11.9749 11.26C11.8699 12.25 11.6599 12.34 9.36488 12.34H5.26988L12.5599 3.055Z\"/>\n);\n\nexport const xIcon8 = bpIconWrapper(\n <path\n d=\"M1.79302 7.776C1.79302 4.136 3.15102 2.652 3.96302 1.7L3.69702 1.336C2.89902 2.05 0.589023 3.912 0.589023 7.776C0.589023 9.274 0.939023 10.688 1.61102 11.948C2.10102 12.886 2.54902 13.432 3.69702 14.51L3.96302 14.216C3.31902 13.418 1.79302 11.71 1.79302 7.776ZM8.42946 7.944L10.4175 5.62C10.5015 5.522 10.6555 5.466 10.8935 5.466H11.0895V5.074H9.94146L8.20546 7.524L7.14146 5.9C6.93146 5.592 6.77746 5.41 6.30146 4.934L4.67746 5.214L4.74746 5.578L5.04146 5.606C5.29346 5.62 5.60146 5.816 5.74146 6.012L7.42146 8.448L5.33546 10.912C5.23746 11.038 5.05546 11.122 4.91546 11.122H4.67746V11.5H5.88146L7.75746 8.812L9.61946 11.542C10.3475 11.5 10.3475 11.5 10.4735 11.5C10.6135 11.5 10.6135 11.5 11.3415 11.542V11.122L10.9915 11.08C10.8235 11.066 10.6555 10.954 10.5015 10.744L8.42946 7.944ZM12.3165 1.336L12.0505 1.7C12.8205 2.596 14.2205 4.136 14.2205 7.776C14.2205 11.64 12.7645 13.334 12.0505 14.216L12.3165 14.51C13.0585 13.81 15.4245 11.822 15.4245 7.79C15.4245 3.912 13.1145 2.05 12.3165 1.336Z\"/>\n);\nexport const yIcon8 = bpIconWrapper(\n <path\n d=\"M1.51275 7.776C1.51275 4.136 2.87075 2.652 3.68275 1.7L3.41675 1.336C2.61875 2.05 0.30875 3.912 0.30875 7.776C0.30875 9.274 0.65875 10.688 1.33075 11.948C1.82075 12.886 2.26875 13.432 3.41675 14.51L3.68275 14.216C3.03875 13.418 1.51275 11.71 1.51275 7.776ZM8.27519 10.296C7.96719 9.764 7.81319 9.442 7.56119 8.756L6.66519 6.404C6.58119 6.166 6.52519 5.956 6.52519 5.816C6.52519 5.62 6.67919 5.508 7.00119 5.494L7.53319 5.466V5.074C6.17519 5.116 6.17519 5.116 5.90919 5.116C5.64319 5.116 5.64319 5.116 4.28519 5.074V5.466L4.53719 5.494C4.88719 5.536 5.05519 5.69 5.26519 6.18L6.79119 9.848C7.18319 10.8 7.32319 11.136 7.57519 11.836L7.25319 12.69C6.80519 13.866 6.25919 14.524 5.72719 14.524C5.50319 14.524 5.25119 14.412 5.01319 14.202H4.83119L4.49519 15.252C4.76119 15.392 4.98519 15.462 5.25119 15.462C6.18919 15.462 6.79119 14.958 7.32319 13.74L10.1652 7.188C10.7252 5.914 10.9912 5.536 11.3412 5.494L11.7332 5.466V5.074C10.6272 5.116 10.6272 5.116 10.4032 5.116C10.1792 5.116 10.1792 5.116 9.07319 5.074V5.466L9.43719 5.494C9.82919 5.522 10.0252 5.648 10.0252 5.844C10.0252 5.942 9.99719 6.068 9.94119 6.208L8.27519 10.296ZM12.5968 1.336L12.3308 1.7C13.1008 2.596 14.5008 4.136 14.5008 7.776C14.5008 11.64 13.0448 13.334 12.3308 14.216L12.5968 14.51C13.3388 13.81 15.7048 11.822 15.7048 7.79C15.7048 3.912 13.3948 2.05 12.5968 1.336Z\"/>\n);\nexport const zIcon8 = bpIconWrapper(\n <path\n d=\"M1.9024 7.776C1.9024 4.136 3.2604 2.652 4.0724 1.7L3.8064 1.336C3.0084 2.05 0.698398 3.912 0.698398 7.776C0.698398 9.274 1.0484 10.688 1.7204 11.948C2.2104 12.886 2.6584 13.432 3.8064 14.51L4.0724 14.216C3.4284 13.418 1.9024 11.71 1.9024 7.776ZM10.8768 5.452V5.032C9.89684 5.06 9.47684 5.074 8.94484 5.074L5.47284 5.032C5.44484 5.746 5.43084 5.914 5.34684 6.88H5.76684L5.93484 5.928C5.99084 5.634 6.24284 5.564 7.27884 5.564H9.28084C8.98684 6.026 8.74884 6.348 8.37084 6.824L5.99084 9.792L4.73084 11.262L4.81484 11.542C6.27084 11.5 6.35484 11.5 6.95684 11.5L10.8208 11.542C10.8208 11.22 10.8488 10.884 10.9468 10.212L11.0308 9.554H10.6108L10.3588 10.66C10.3028 10.912 9.71484 11.01 8.37084 11.01H6.48084L10.8768 5.452ZM12.2072 1.336L11.9412 1.7C12.7112 2.596 14.1112 4.136 14.1112 7.776C14.1112 11.64 12.6552 13.334 11.9412 14.216L12.2072 14.51C12.9492 13.81 15.3152 11.822 15.3152 7.79C15.3152 3.912 13.0052 2.05 12.2072 1.336Z\"/>\n);\n\nexport const xIcon9 = bpIconWrapper(\n <path\n d=\"M8.42946 7.944L10.4175 5.62C10.5015 5.522 10.6555 5.466 10.8935 5.466H11.0895V5.074H9.94146L8.20546 7.524L7.14146 5.9C6.93146 5.592 6.77746 5.41 6.30146 4.934L4.67746 5.214L4.74746 5.578L5.04146 5.606C5.29346 5.62 5.60146 5.816 5.74146 6.012L7.42146 8.448L5.33546 10.912C5.23746 11.038 5.05546 11.122 4.91546 11.122H4.67746V11.5H5.88146L7.75746 8.812L9.61946 11.542C10.3475 11.5 10.3475 11.5 10.4735 11.5C10.6135 11.5 10.6135 11.5 11.3415 11.542V11.122L10.9915 11.08C10.8235 11.066 10.6555 10.954 10.5015 10.744L8.42946 7.944Z\"/>\n);\nexport const yIcon9 = bpIconWrapper(\n <path\n d=\"M8.27519 10.296C7.96719 9.764 7.81319 9.442 7.56119 8.756L6.66519 6.404C6.58119 6.166 6.52519 5.956 6.52519 5.816C6.52519 5.62 6.67919 5.508 7.00119 5.494L7.53319 5.466V5.074C6.17519 5.116 6.17519 5.116 5.90919 5.116C5.64319 5.116 5.64319 5.116 4.28519 5.074V5.466L4.53719 5.494C4.88719 5.536 5.05519 5.69 5.26519 6.18L6.79119 9.848C7.18319 10.8 7.32319 11.136 7.57519 11.836L7.25319 12.69C6.80519 13.866 6.25919 14.524 5.72719 14.524C5.50319 14.524 5.25119 14.412 5.01319 14.202H4.83119L4.49519 15.252C4.76119 15.392 4.98519 15.462 5.25119 15.462C6.18919 15.462 6.79119 14.958 7.32319 13.74L10.1652 7.188C10.7252 5.914 10.9912 5.536 11.3412 5.494L11.7332 5.466V5.074C10.6272 5.116 10.6272 5.116 10.4032 5.116C10.1792 5.116 10.1792 5.116 9.07319 5.074V5.466L9.43719 5.494C9.82919 5.522 10.0252 5.648 10.0252 5.844C10.0252 5.942 9.99719 6.068 9.94119 6.208L8.27519 10.296Z\"/>\n);\nexport const zIcon9 = bpIconWrapper(\n <path\n d=\"M10.8768 5.452V5.032C9.89684 5.06 9.47684 5.074 8.94484 5.074L5.47284 5.032C5.44484 5.746 5.43084 5.914 5.34684 6.88H5.76684L5.93484 5.928C5.99084 5.634 6.24284 5.564 7.27884 5.564H9.28084C8.98684 6.026 8.74884 6.348 8.37084 6.824L5.99084 9.792L4.73084 11.262L4.81484 11.542C6.27084 11.5 6.35484 11.5 6.95684 11.5L10.8208 11.542C10.8208 11.22 10.8488 10.884 10.9468 10.212L11.0308 9.554H10.6108L10.3588 10.66C10.3028 10.912 9.71484 11.01 8.37084 11.01H6.48084L10.8768 5.452Z\"/>\n);\n\nexport const xIcon10 = bpIconWrapper(\n <path\n d=\"M6.1748 2.03809C5.66895 2.50749 5.27702 2.89714 4.99902 3.20703C4.72103 3.51693 4.42253 3.95671 4.10352 4.52637C3.78451 5.09603 3.47689 5.79785 3.18066 6.63184C2.96647 7.22428 2.77962 7.80306 2.62012 8.36816C2.46517 8.92871 2.34212 9.49382 2.25098 10.0635C2.15983 10.6286 2.11426 11.2074 2.11426 11.7998C2.11426 12.6702 2.23503 13.4632 2.47656 14.1787L1.86133 14.4316C1.74284 14.1445 1.61751 13.7868 1.48535 13.3584C1.35319 12.93 1.23242 12.415 1.12305 11.8135C1.01823 11.2119 0.96582 10.6104 0.96582 10.0088C0.96582 8.91048 1.13216 7.9056 1.46484 6.99414C1.79753 6.08268 2.21224 5.28516 2.70898 4.60156C3.20573 3.91797 3.70247 3.34375 4.19922 2.87891C4.69596 2.40951 5.19499 1.97656 5.69629 1.58008L6.1748 2.03809ZM11.541 6.13965C11.541 6.43132 11.5 6.71159 11.418 6.98047H10.7617C10.8529 6.66602 10.8984 6.38118 10.8984 6.12598C10.8984 6.06673 10.8802 6.00293 10.8438 5.93457C10.8118 5.86621 10.7458 5.83203 10.6455 5.83203C10.5726 5.83203 10.5111 5.85254 10.4609 5.89355C10.4108 5.93457 10.2855 6.0599 10.085 6.26953L8.81348 7.60938L9.3877 9.4209C9.4515 9.61686 9.5153 9.78092 9.5791 9.91309C9.6429 10.0407 9.72266 10.1045 9.81836 10.1045C9.97786 10.1045 10.1214 9.98145 10.249 9.73535C10.3766 9.48926 10.4678 9.27051 10.5225 9.0791H11.1377C11.001 9.57585 10.8232 9.98145 10.6045 10.2959C10.3857 10.6104 10.151 10.8405 9.90039 10.9863C9.64974 11.1276 9.41276 11.1982 9.18945 11.1982C8.82943 11.1982 8.55371 11.0752 8.3623 10.8291C8.17546 10.5785 8.00911 10.2253 7.86328 9.76953L7.59668 8.91504L6.09961 10.5078C5.66211 10.9681 5.29753 11.1982 5.00586 11.1982C4.60482 11.1982 4.4043 10.9316 4.4043 10.3984C4.4043 10.0202 4.48405 9.64193 4.64355 9.26367H5.38184C5.21322 9.73763 5.12891 10.0407 5.12891 10.1729C5.12891 10.3141 5.1722 10.3848 5.25879 10.3848C5.33171 10.3848 5.45703 10.2959 5.63477 10.1182L7.38477 8.25879L7.0498 7.19238C6.98145 6.97363 6.92676 6.81413 6.88574 6.71387C6.84473 6.60905 6.79232 6.52474 6.72852 6.46094C6.66927 6.39714 6.59408 6.36523 6.50293 6.36523C6.24316 6.36523 6.02441 6.70247 5.84668 7.37695H5.21777C5.36361 6.89844 5.52995 6.50195 5.7168 6.1875C5.9082 5.86849 6.1224 5.62467 6.35938 5.45605C6.59635 5.28743 6.84928 5.20312 7.11816 5.20312C7.47363 5.20312 7.75846 5.33073 7.97266 5.58594C8.19141 5.83659 8.36914 6.18522 8.50586 6.63184L8.61523 6.98047L9.66797 5.8457C10.0781 5.41732 10.4473 5.20312 10.7754 5.20312C11.099 5.20312 11.3063 5.30794 11.3975 5.51758C11.4932 5.72721 11.541 5.93457 11.541 6.13965ZM15.2256 5.98926C15.2256 7.07845 15.0592 8.08333 14.7266 9.00391C14.3984 9.91992 13.9837 10.7197 13.4824 11.4033C12.9857 12.0915 12.498 12.6566 12.0195 13.0986C11.5456 13.5452 11.0352 13.985 10.4883 14.418L10.0166 13.9531C10.4769 13.5339 10.8574 13.1579 11.1582 12.8252C11.459 12.4925 11.7666 12.0413 12.0811 11.4717C12.4001 10.9066 12.71 10.2025 13.0107 9.35938C13.348 8.42969 13.61 7.54329 13.7969 6.7002C13.9837 5.8571 14.0771 5.02311 14.0771 4.19824C14.0771 3.86556 14.0475 3.48275 13.9883 3.0498C13.9336 2.6123 13.8402 2.20215 13.708 1.81934L14.3232 1.56641C14.3916 1.7168 14.4759 1.9401 14.5762 2.23633C14.6764 2.52799 14.7744 2.86523 14.8701 3.24805C14.9658 3.6263 15.0479 4.05469 15.1162 4.5332C15.1891 5.01172 15.2256 5.49707 15.2256 5.98926Z\"/>\n);\nexport const yIcon10 = bpIconWrapper(\n <path\n d=\"M6.31836 2.03809C5.8125 2.50749 5.42057 2.89714 5.14258 3.20703C4.86458 3.51693 4.56608 3.95671 4.24707 4.52637C3.92806 5.09603 3.62044 5.79785 3.32422 6.63184C3.11003 7.22428 2.92318 7.80306 2.76367 8.36816C2.60872 8.92871 2.48568 9.49382 2.39453 10.0635C2.30339 10.6286 2.25781 11.2074 2.25781 11.7998C2.25781 12.6702 2.37858 13.4632 2.62012 14.1787L2.00488 14.4316C1.88639 14.1445 1.76107 13.7868 1.62891 13.3584C1.49674 12.93 1.37598 12.415 1.2666 11.8135C1.16178 11.2119 1.10938 10.6104 1.10938 10.0088C1.10938 8.91048 1.27572 7.9056 1.6084 6.99414C1.94108 6.08268 2.35579 5.28516 2.85254 4.60156C3.34928 3.91797 3.84603 3.34375 4.34277 2.87891C4.83952 2.40951 5.33854 1.97656 5.83984 1.58008L6.31836 2.03809ZM10.9873 6.49512C10.9873 7.28809 10.7184 8.14714 10.1807 9.07227C9.64746 9.9974 8.95931 10.8678 8.11621 11.6836C7.27767 12.5039 6.40495 13.167 5.49805 13.6729C4.59115 14.1787 3.79818 14.4316 3.11914 14.4316C2.80924 14.4316 2.54492 14.3656 2.32617 14.2334C2.10742 14.1058 1.99805 13.9189 1.99805 13.6729C1.99805 13.4769 2.0778 13.3151 2.2373 13.1875C2.39681 13.0645 2.5791 13.0029 2.78418 13.0029C2.94824 13.0029 3.08724 13.0166 3.20117 13.0439C3.3151 13.0758 3.46094 13.1283 3.63867 13.2012C4.02148 13.3288 4.30632 13.3926 4.49316 13.3926C4.80306 13.3926 5.07878 13.2969 5.32031 13.1055C5.56641 12.9186 5.76693 12.693 5.92188 12.4287C6.29557 11.7725 6.48242 10.8473 6.48242 9.65332C6.48242 9.36165 6.47331 9.05632 6.45508 8.7373C6.43685 8.41374 6.40951 8.08333 6.37305 7.74609C6.33659 7.40885 6.28418 7.09896 6.21582 6.81641C6.17936 6.67057 6.11556 6.53841 6.02441 6.41992C5.93783 6.30143 5.83757 6.24219 5.72363 6.24219C5.36816 6.24219 5.14941 6.64323 5.06738 7.44531H4.50684C4.61165 6.53385 4.84863 5.93229 5.21777 5.64062C5.58691 5.34896 5.94238 5.20312 6.28418 5.20312C6.97233 5.20312 7.44173 5.57682 7.69238 6.32422C7.94759 7.06706 8.0752 7.95345 8.0752 8.9834C8.0752 9.83561 8.02962 10.5352 7.93848 11.082C8.74967 10.1341 9.18717 9.6123 9.25098 9.5166C9.46061 9.20671 9.63151 8.90592 9.76367 8.61426C9.89583 8.31803 9.96191 8.02637 9.96191 7.73926C9.96191 7.51595 9.88444 7.20833 9.72949 6.81641C9.56999 6.41992 9.49023 6.13053 9.49023 5.94824C9.49023 5.72949 9.5472 5.55176 9.66113 5.41504C9.77962 5.27376 9.91862 5.20312 10.0781 5.20312C10.2331 5.20312 10.3789 5.25326 10.5156 5.35352C10.6569 5.45378 10.7708 5.60189 10.8574 5.79785C10.944 5.98926 10.9873 6.22168 10.9873 6.49512ZM15.082 5.98926C15.082 7.07845 14.9157 8.08333 14.583 9.00391C14.2549 9.91992 13.8402 10.7197 13.3389 11.4033C12.8421 12.0915 12.3545 12.6566 11.876 13.0986C11.402 13.5452 10.8916 13.985 10.3447 14.418L9.87305 13.9531C10.3333 13.5339 10.7139 13.1579 11.0146 12.8252C11.3154 12.4925 11.623 12.0413 11.9375 11.4717C12.2565 10.9066 12.5664 10.2025 12.8672 9.35938C13.2044 8.42969 13.4665 7.54329 13.6533 6.7002C13.8402 5.8571 13.9336 5.02311 13.9336 4.19824C13.9336 3.86556 13.904 3.48275 13.8447 3.0498C13.79 2.6123 13.6966 2.20215 13.5645 1.81934L14.1797 1.56641C14.248 1.7168 14.3324 1.9401 14.4326 2.23633C14.5329 2.52799 14.6309 2.86523 14.7266 3.24805C14.8223 3.6263 14.9043 4.05469 14.9727 4.5332C15.0456 5.01172 15.082 5.49707 15.082 5.98926Z\"/>\n);\nexport const zIcon10 = bpIconWrapper(\n <path\n d=\"M6.60547 2.03809C6.09961 2.50749 5.70768 2.89714 5.42969 3.20703C5.15169 3.51693 4.85319 3.95671 4.53418 4.52637C4.21517 5.09603 3.90755 5.79785 3.61133 6.63184C3.39714 7.22428 3.21029 7.80306 3.05078 8.36816C2.89583 8.92871 2.77279 9.49382 2.68164 10.0635C2.59049 10.6286 2.54492 11.2074 2.54492 11.7998C2.54492 12.6702 2.66569 13.4632 2.90723 14.1787L2.29199 14.4316C2.1735 14.1445 2.04818 13.7868 1.91602 13.3584C1.78385 12.93 1.66309 12.415 1.55371 11.8135C1.44889 11.2119 1.39648 10.6104 1.39648 10.0088C1.39648 8.91048 1.56283 7.9056 1.89551 6.99414C2.22819 6.08268 2.6429 5.28516 3.13965 4.60156C3.63639 3.91797 4.13314 3.34375 4.62988 2.87891C5.12663 2.40951 5.62565 1.97656 6.12695 1.58008L6.60547 2.03809ZM11.0898 5.53809C11.0898 5.68392 10.9508 5.93001 10.6729 6.27637C10.3949 6.61816 10.0166 7.00098 9.53809 7.4248C9.06413 7.84863 8.49447 8.29297 7.8291 8.75781C7.18197 9.20443 6.70117 9.55534 6.38672 9.81055C6.67839 9.72852 6.89714 9.67155 7.04297 9.63965C7.19336 9.60319 7.41895 9.58496 7.71973 9.58496C8.06608 9.58496 8.41471 9.63737 8.76562 9.74219C8.9707 9.79688 9.12565 9.82422 9.23047 9.82422C9.44466 9.82422 9.611 9.77409 9.72949 9.67383C9.84798 9.56901 9.95736 9.43685 10.0576 9.27734H10.6729C10.5771 9.54167 10.4268 9.82422 10.2217 10.125C10.0166 10.4212 9.75684 10.6742 9.44238 10.8838C9.12793 11.0934 8.7679 11.1982 8.3623 11.1982C8.14355 11.1982 7.95215 11.1663 7.78809 11.1025C7.62402 11.0433 7.44173 10.9521 7.24121 10.8291C7.01335 10.6833 6.82422 10.5739 6.67383 10.501C6.52344 10.4235 6.35938 10.3848 6.18164 10.3848C5.91732 10.3848 5.70085 10.5146 5.53223 10.7744C5.43652 10.9385 5.35905 11.0501 5.2998 11.1094C5.24056 11.1686 5.16081 11.1982 5.06055 11.1982C4.96484 11.1982 4.88509 11.1618 4.82129 11.0889C4.75749 11.016 4.72559 10.9408 4.72559 10.8633C4.72559 10.6719 4.8418 10.4486 5.07422 10.1934C5.30664 9.93815 5.59147 9.67839 5.92871 9.41406C6.27051 9.14974 6.77865 8.77376 7.45312 8.28613C8.46484 7.54785 9.20085 6.95996 9.66113 6.52246C9.38314 6.65007 9.02539 6.71387 8.58789 6.71387C8.44206 6.71387 8.30306 6.70247 8.1709 6.67969C8.03874 6.6569 7.85417 6.61816 7.61719 6.56348C7.31185 6.49512 7.12044 6.46094 7.04297 6.46094C6.83333 6.46094 6.67611 6.50651 6.57129 6.59766C6.46647 6.6888 6.36849 6.81641 6.27734 6.98047H5.68945C5.86263 6.5612 6.11328 6.16016 6.44141 5.77734C6.77409 5.39453 7.22298 5.20312 7.78809 5.20312C8.09798 5.20312 8.48079 5.33301 8.93652 5.59277C9.05501 5.66569 9.16439 5.73177 9.26465 5.79102C9.36947 5.8457 9.45378 5.88444 9.51758 5.90723C9.58594 5.92546 9.6543 5.93457 9.72266 5.93457C9.96875 5.93457 10.1784 5.78874 10.3516 5.49707C10.4154 5.39681 10.4701 5.32389 10.5156 5.27832C10.5658 5.22819 10.6364 5.20312 10.7275 5.20312C10.8551 5.20312 10.9463 5.24186 11.001 5.31934C11.0602 5.39225 11.0898 5.46517 11.0898 5.53809ZM14.7949 5.98926C14.7949 7.07845 14.6286 8.08333 14.2959 9.00391C13.9678 9.91992 13.5531 10.7197 13.0518 11.4033C12.555 12.0915 12.0674 12.6566 11.5889 13.0986C11.1149 13.5452 10.6045 13.985 10.0576 14.418L9.58594 13.9531C10.0462 13.5339 10.4268 13.1579 10.7275 12.8252C11.0283 12.4925 11.3359 12.0413 11.6504 11.4717C11.9694 10.9066 12.2793 10.2025 12.5801 9.35938C12.9173 8.42969 13.1794 7.54329 13.3662 6.7002C13.5531 5.8571 13.6465 5.02311 13.6465 4.19824C13.6465 3.86556 13.6169 3.48275 13.5576 3.0498C13.5029 2.6123 13.4095 2.20215 13.2773 1.81934L13.8926 1.56641C13.9609 1.7168 14.0452 1.9401 14.1455 2.23633C14.2458 2.52799 14.3438 2.86523 14.4395 3.24805C14.5352 3.6263 14.6172 4.05469 14.6855 4.5332C14.7585 5.01172 14.7949 5.49707 14.7949 5.98926Z\"/>\n);\n\nexport const xIcon11 = bpIconWrapper(\n <path\n d=\"M11.541 6.13965C11.541 6.43132 11.5 6.71159 11.418 6.98047H10.7617C10.8529 6.66602 10.8984 6.38118 10.8984 6.12598C10.8984 6.06673 10.8802 6.00293 10.8438 5.93457C10.8118 5.86621 10.7458 5.83203 10.6455 5.83203C10.5726 5.83203 10.5111 5.85254 10.4609 5.89355C10.4108 5.93457 10.2855 6.0599 10.085 6.26953L8.81348 7.60938L9.3877 9.4209C9.4515 9.61686 9.5153 9.78092 9.5791 9.91309C9.6429 10.0407 9.72266 10.1045 9.81836 10.1045C9.97786 10.1045 10.1214 9.98145 10.249 9.73535C10.3766 9.48926 10.4678 9.27051 10.5225 9.0791H11.1377C11.001 9.57585 10.8232 9.98145 10.6045 10.2959C10.3857 10.6104 10.151 10.8405 9.90039 10.9863C9.64974 11.1276 9.41276 11.1982 9.18945 11.1982C8.82943 11.1982 8.55371 11.0752 8.3623 10.8291C8.17546 10.5785 8.00911 10.2253 7.86328 9.76953L7.59668 8.91504L6.09961 10.5078C5.66211 10.9681 5.29753 11.1982 5.00586 11.1982C4.60482 11.1982 4.4043 10.9316 4.4043 10.3984C4.4043 10.0202 4.48405 9.64193 4.64355 9.26367H5.38184C5.21322 9.73763 5.12891 10.0407 5.12891 10.1729C5.12891 10.3141 5.1722 10.3848 5.25879 10.3848C5.33171 10.3848 5.45703 10.2959 5.63477 10.1182L7.38477 8.25879L7.0498 7.19238C6.98145 6.97363 6.92676 6.81413 6.88574 6.71387C6.84473 6.60905 6.79232 6.52474 6.72852 6.46094C6.66927 6.39714 6.59408 6.36523 6.50293 6.36523C6.24316 6.36523 6.02441 6.70247 5.84668 7.37695H5.21777C5.36361 6.89844 5.52995 6.50195 5.7168 6.1875C5.9082 5.86849 6.1224 5.62467 6.35938 5.45605C6.59635 5.28743 6.84928 5.20312 7.11816 5.20312C7.47363 5.20312 7.75846 5.33073 7.97266 5.58594C8.19141 5.83659 8.36914 6.18522 8.50586 6.63184L8.61523 6.98047L9.66797 5.8457C10.0781 5.41732 10.4473 5.20312 10.7754 5.20312C11.099 5.20312 11.3063 5.30794 11.3975 5.51758C11.4932 5.72721 11.541 5.93457 11.541 6.13965Z\"/>\n);\nexport const yIcon11 = bpIconWrapper(\n <path\n d=\"M10.9873 6.49512C10.9873 7.28809 10.7184 8.14714 10.1807 9.07227C9.64746 9.9974 8.95931 10.8678 8.11621 11.6836C7.27767 12.5039 6.40495 13.167 5.49805 13.6729C4.59115 14.1787 3.79818 14.4316 3.11914 14.4316C2.80924 14.4316 2.54492 14.3656 2.32617 14.2334C2.10742 14.1058 1.99805 13.9189 1.99805 13.6729C1.99805 13.4769 2.0778 13.3151 2.2373 13.1875C2.39681 13.0645 2.5791 13.0029 2.78418 13.0029C2.94824 13.0029 3.08724 13.0166 3.20117 13.0439C3.3151 13.0758 3.46094 13.1283 3.63867 13.2012C4.02148 13.3288 4.30632 13.3926 4.49316 13.3926C4.80306 13.3926 5.07878 13.2969 5.32031 13.1055C5.56641 12.9186 5.76693 12.693 5.92188 12.4287C6.29557 11.7725 6.48242 10.8473 6.48242 9.65332C6.48242 9.36165 6.47331 9.05632 6.45508 8.7373C6.43685 8.41374 6.40951 8.08333 6.37305 7.74609C6.33659 7.40885 6.28418 7.09896 6.21582 6.81641C6.17936 6.67057 6.11556 6.53841 6.02441 6.41992C5.93783 6.30143 5.83757 6.24219 5.72363 6.24219C5.36816 6.24219 5.14941 6.64323 5.06738 7.44531H4.50684C4.61165 6.53385 4.84863 5.93229 5.21777 5.64062C5.58691 5.34896 5.94238 5.20312 6.28418 5.20312C6.97233 5.20312 7.44173 5.57682 7.69238 6.32422C7.94759 7.06706 8.0752 7.95345 8.0752 8.9834C8.0752 9.83561 8.02962 10.5352 7.93848 11.082C8.74967 10.1341 9.18717 9.6123 9.25098 9.5166C9.46061 9.20671 9.63151 8.90592 9.76367 8.61426C9.89583 8.31803 9.96191 8.02637 9.96191 7.73926C9.96191 7.51595 9.88444 7.20833 9.72949 6.81641C9.56999 6.41992 9.49023 6.13053 9.49023 5.94824C9.49023 5.72949 9.5472 5.55176 9.66113 5.41504C9.77962 5.27376 9.91862 5.20312 10.0781 5.20312C10.2331 5.20312 10.3789 5.25326 10.5156 5.35352C10.6569 5.45378 10.7708 5.60189 10.8574 5.79785C10.944 5.98926 10.9873 6.22168 10.9873 6.49512Z\"/>\n);\nexport const zIcon11 = bpIconWrapper(\n <path\n d=\"M11.0898 5.53809C11.0898 5.68392 10.9508 5.93001 10.6729 6.27637C10.3949 6.61816 10.0166 7.00098 9.53809 7.4248C9.06413 7.84863 8.49447 8.29297 7.8291 8.75781C7.18197 9.20443 6.70117 9.55534 6.38672 9.81055C6.67839 9.72852 6.89714 9.67155 7.04297 9.63965C7.19336 9.60319 7.41895 9.58496 7.71973 9.58496C8.06608 9.58496 8.41471 9.63737 8.76562 9.74219C8.9707 9.79688 9.12565 9.82422 9.23047 9.82422C9.44466 9.82422 9.611 9.77409 9.72949 9.67383C9.84798 9.56901 9.95736 9.43685 10.0576 9.27734H10.6729C10.5771 9.54167 10.4268 9.82422 10.2217 10.125C10.0166 10.4212 9.75684 10.6742 9.44238 10.8838C9.12793 11.0934 8.7679 11.1982 8.3623 11.1982C8.14355 11.1982 7.95215 11.1663 7.78809 11.1025C7.62402 11.0433 7.44173 10.9521 7.24121 10.8291C7.01335 10.6833 6.82422 10.5739 6.67383 10.501C6.52344 10.4235 6.35938 10.3848 6.18164 10.3848C5.91732 10.3848 5.70085 10.5146 5.53223 10.7744C5.43652 10.9385 5.35905 11.0501 5.2998 11.1094C5.24056 11.1686 5.16081 11.1982 5.06055 11.1982C4.96484 11.1982 4.88509 11.1618 4.82129 11.0889C4.75749 11.016 4.72559 10.9408 4.72559 10.8633C4.72559 10.6719 4.8418 10.4486 5.07422 10.1934C5.30664 9.93815 5.59147 9.67839 5.92871 9.41406C6.27051 9.14974 6.77865 8.77376 7.45312 8.28613C8.46484 7.54785 9.20085 6.95996 9.66113 6.52246C9.38314 6.65007 9.02539 6.71387 8.58789 6.71387C8.44206 6.71387 8.30306 6.70247 8.1709 6.67969C8.03874 6.6569 7.85417 6.61816 7.61719 6.56348C7.31185 6.49512 7.12044 6.46094 7.04297 6.46094C6.83333 6.46094 6.67611 6.50651 6.57129 6.59766C6.46647 6.6888 6.36849 6.81641 6.27734 6.98047H5.68945C5.86263 6.5612 6.11328 6.16016 6.44141 5.77734C6.77409 5.39453 7.22298 5.20312 7.78809 5.20312C8.09798 5.20312 8.48079 5.33301 8.93652 5.59277C9.05501 5.66569 9.16439 5.73177 9.26465 5.79102C9.36947 5.8457 9.45378 5.88444 9.51758 5.90723C9.58594 5.92546 9.6543 5.93457 9.72266 5.93457C9.96875 5.93457 10.1784 5.78874 10.3516 5.49707C10.4154 5.39681 10.4701 5.32389 10.5156 5.27832C10.5658 5.22819 10.6364 5.20312 10.7275 5.20312C10.8551 5.20312 10.9463 5.24186 11.001 5.31934C11.0602 5.39225 11.0898 5.46517 11.0898 5.53809Z\"/>\n);\n\nexport const xIcon12 = bpIconWrapper(\n <path\n d=\"M14.2412 3.23047L14.043 3.85938C13.8789 3.85938 13.7194 3.88444 13.5645 3.93457C13.4141 3.9847 13.2113 4.09863 12.9561 4.27637C12.7054 4.44954 12.3499 4.74577 11.8896 5.16504L9.56543 7.29102L10.8096 10.6816C10.9372 11.0143 11.0397 11.2513 11.1172 11.3926C11.1992 11.5339 11.3223 11.6501 11.4863 11.7412C11.6549 11.8278 11.8874 11.8711 12.1836 11.8711L11.999 12.5H7.76074L7.95215 11.8711C8.24837 11.8711 8.51042 11.8369 8.73828 11.7686C8.9707 11.7002 9.08691 11.5475 9.08691 11.3105C9.08691 11.1419 9.04134 10.9323 8.9502 10.6816L8.16406 8.59668L6.49609 10.1348C6.17253 10.4355 5.96289 10.6497 5.86719 10.7773C5.77604 10.9004 5.73047 11.0508 5.73047 11.2285C5.73047 11.4564 5.83073 11.6204 6.03125 11.7207C6.23177 11.821 6.4528 11.8711 6.69434 11.8711L6.49609 12.5H2.46973L2.66113 11.8711C2.93913 11.8711 3.23763 11.7868 3.55664 11.6182C3.87565 11.4495 4.16276 11.2604 4.41797 11.0508C4.67773 10.8366 5.00814 10.5495 5.40918 10.1895L7.91113 7.90625L6.77637 4.87109C6.65332 4.54297 6.55306 4.31738 6.47559 4.19434C6.40267 4.06673 6.30241 3.98014 6.1748 3.93457C6.0472 3.88444 5.85124 3.85938 5.58691 3.85938L5.77148 3.23047H9.76367L9.56543 3.85938C9.24186 3.85938 8.99805 3.89355 8.83398 3.96191C8.66992 4.03027 8.58789 4.1875 8.58789 4.43359C8.58789 4.58398 8.62435 4.75716 8.69727 4.95312L9.3125 6.62109L10.8506 5.21973C11.0921 4.99642 11.2516 4.82552 11.3291 4.70703C11.4111 4.58854 11.4521 4.47917 11.4521 4.37891C11.4521 4.03255 11.1924 3.85938 10.6729 3.85938L10.8506 3.23047H14.2412Z\"/>\n);\nexport const yIcon12 = bpIconWrapper(\n <path\n d=\"M13.79 3.23047L13.6396 3.85938C13.3753 3.85938 13.1406 3.90039 12.9355 3.98242C12.735 4.06445 12.5254 4.21712 12.3066 4.44043C12.0924 4.66374 11.8509 4.96452 11.582 5.34277L9.32617 8.4668L8.66992 10.6133C8.58333 10.8958 8.54004 11.0964 8.54004 11.2148C8.54004 11.4154 8.60156 11.5635 8.72461 11.6592C8.85221 11.7549 9.00033 11.8141 9.16895 11.8369C9.34212 11.8597 9.55176 11.8711 9.79785 11.8711L9.60645 12.5H5.04004L5.23828 11.8711C5.59831 11.8711 5.86263 11.846 6.03125 11.7959C6.20443 11.7458 6.33431 11.6569 6.4209 11.5293C6.51204 11.4017 6.6123 11.1693 6.72168 10.832L7.44629 8.4668L6.40039 4.72754C6.32747 4.48145 6.25684 4.30371 6.18848 4.19434C6.12012 4.0804 6.00846 3.99609 5.85352 3.94141C5.70312 3.88672 5.47982 3.85938 5.18359 3.85938L5.36133 3.23047H9.44922L9.25781 3.85938C8.94792 3.85938 8.69499 3.89811 8.49902 3.97559C8.30306 4.0485 8.20508 4.22624 8.20508 4.50879C8.20508 4.60905 8.23698 4.77995 8.30078 5.02148L9.0459 7.74219L10.625 5.51367C10.7617 5.31771 10.8643 5.16276 10.9326 5.04883C11.0055 4.9349 11.0579 4.83008 11.0898 4.73438C11.1263 4.63867 11.1445 4.55208 11.1445 4.47461C11.1445 4.20117 11.0534 4.03027 10.8711 3.96191C10.6888 3.89355 10.4632 3.85938 10.1943 3.85938L10.3721 3.23047H13.79Z\"/>\n);\nexport const zIcon12 = bpIconWrapper(\n <path\n d=\"M13.127 3.76367L6.28418 11.8301H8.38281C9.84115 11.8301 10.8779 11.1351 11.4932 9.74512H12.1631L11.3086 12.5H3.94629V11.8438L10.7207 3.90723H8.62207C8.31217 3.90723 8.02051 3.93913 7.74707 4.00293C7.47363 4.06673 7.17057 4.23307 6.83789 4.50195C6.50977 4.77083 6.20898 5.17415 5.93555 5.71191H5.27246L6.03125 3.23047H13.127V3.76367Z\"/>\n);\n\n","import React from 'react'\nimport {Classes, Menu, MenuItem} from '@blueprintjs/core'\n\nexport const defaultVisualStyle = {\n darkMode: true,\n setDarkMode: (_: boolean) => {},\n themes: {\n // https://github.com/pnnl/blueprint-styler/blob/9a2f5461f6e8682f829bd9e1722c5c4c051f7c0f/src/styles/style-manifest.ts#L12\n 'bpx-default': { label: 'Blueprint Default', link: 'https://blueprintjs.com/docs/#blueprint' },\n 'bpx-bpv3': { label: 'Blueprint v3', link: 'https://blueprintjs.com/docs/versions/3/' },\n 'bpx-flat': { label: 'Flat', link: 'https://pnnl.github.io/blueprint-styler/?style=bpx-flat' },\n 'bpx-carbon': { label: 'IBM Carbon', link: 'https://carbondesignsystem.com/components/overview/' },\n 'bpx-antd': { label: 'Ant Design', link: 'https://ant.design/components/overview/' },\n 'bpx-fluent': { label: 'Microsoft Fluent', link: 'https://fluentuipr.z22.web.core.windows.net/heads/master/theming-designer/index.html' },\n 'bpx-pnnl': { label: 'PNNL v3', link: 'https://forgedev.pnnl.gov/prc3/' },\n // 'bpx-static': { label: 'None', link: 'https://blueprintjs.com/docs/#blueprint' },\n },\n theme: 'bpx-default',\n setTheme: (_: string) => {},\n}\nexport const VisualStyleContext = React.createContext<typeof defaultVisualStyle>(defaultVisualStyle)\nexport const useVisualStyle = () => React.useContext(VisualStyleContext)\n\nconst localStoragePrefix = 'bpUi'\nconst localStorageIds = {\n 'darkMode': localStoragePrefix + 'DarkMode',\n 'theme': localStoragePrefix + 'Theme',\n}\nexport function setupVisualStyle(){\n const [darkMode, setDarkMode] = React.useState(localStorage.getItem(localStorageIds.darkMode) !== (defaultVisualStyle.darkMode ? 'false' : 'true'))\n React.useEffect(() => {\n localStorage.setItem(localStorageIds.darkMode, darkMode ? 'true' : 'false')\n const clas = Classes.DARK\n if(!darkMode) document.body.classList.remove(clas)\n else document.body.classList.add(clas)\n }, [darkMode])\n const [theme, setTheme] = React.useState(localStorage.getItem(localStorageIds.theme) || defaultVisualStyle.theme)\n React.useEffect(() => {\n localStorage.setItem(localStorageIds.theme, theme)\n document.documentElement.classList.remove(...Object.keys(defaultVisualStyle.themes).map(k => k))\n document.documentElement.classList.add(theme)\n }, [theme])\n return {darkMode, setDarkMode, theme, setTheme}\n}\n\nexport function VisualStyleProvider({children}: {children: React.ReactNode}) {\n const visualStyle = setupVisualStyle()\n return <VisualStyleContext.Provider value={{...defaultVisualStyle, ...visualStyle}}>\n {children}\n </VisualStyleContext.Provider>\n}\n\nexport function ThemeSettingsMenuComponent() {\n const visualStyle = useVisualStyle()\n return <Menu className={Classes.ELEVATION_0}>\n <MenuItem\n icon=\"contrast\"\n text=\"Color\"\n // intent={intent}\n // labelElement={\"⌘,\"}\n roleStructure=\"menuitem\"\n popoverProps={{\n hoverOpenDelay: 150,\n hoverCloseDelay: 300,\n }}\n children={\n <>\n <MenuItem icon=\"flash\" text=\"Light Mode\"\n shouldDismissPopover={false}\n key=\"light\"\n selected={!visualStyle.darkMode}\n onClick={() => visualStyle.setDarkMode(false)}\n roleStructure=\"listoption\"/>\n <MenuItem icon=\"moon\" text=\"Dark Mode\"\n shouldDismissPopover={false}\n key=\"dark\"\n selected={visualStyle.darkMode}\n onClick={() => visualStyle.setDarkMode(true)}\n roleStructure=\"listoption\"/>\n </>\n }\n />\n <MenuItem\n icon=\"style\"\n text=\"Theme\"\n // intent={intent}\n // labelElement={\"⌘,\"}\n roleStructure=\"menuitem\"\n popoverProps={{\n hoverOpenDelay: 150,\n hoverCloseDelay: 300,\n }}\n children={\n <>\n {Object.entries(visualStyle.themes).map(([key, value]) => (\n <MenuItem\n shouldDismissPopover={false}\n key={key}\n text={value.label}\n selected={visualStyle.theme === key}\n onClick={() => visualStyle.setTheme(key)}\n roleStructure=\"listoption\"/>\n ))}\n </>\n }\n />\n </Menu>\n}\n","import React from \"react\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {BPInputComponent} from \"./BPInputComponent\";\nimport {BPValueComponentState} from \"./BPValueComponent\";\nimport type {Vector2, Vector3,Euler, Vector4} from \"three\";\nimport {ExtendedNumericInput} from \"../components/ExtendedNumericInput\";\nimport {wIcon3, xIcon3, yIcon3, zIcon3} from \"../components/variableIcons\";\nimport {getOrCall} from 'ts-browser-helpers'\nimport {getNumberTransformFunctions} from \"./GetNumberTransformFunctions\";\nimport {HTMLSelect} from \"@blueprintjs/core\";\n\nexport type BPVectorComponentState = BPValueComponentState<Vector2|Vector3|Euler|Vector4> & {\n min: number,\n max: number,\n step: number,\n components: 1|2|3|4,\n unit?: string,\n isEuler: boolean,\n}\n\nexport class BPVectorInputComponent extends BPInputComponent<Vector2|Vector3|Euler|Vector4, BPVectorComponentState> {\n constructor(props: BPComponentProps<Vector2|Vector3|Euler|Vector4>, context: UiConfigRendererContextType) {\n super(props, context, {\n value: new context.THREE!.Vector2(),\n label: 'Vector',\n min: -Infinity,\n max: Infinity,\n step: 0.01,\n components: 2,\n isEuler: false,\n });\n }\n\n forceOnChange: boolean = true\n\n doesNeedRefresh(_: BPVectorComponentState): boolean {\n return true;\n }\n\n getUpdatedState(state: BPVectorComponentState): BPVectorComponentState {\n const bounds = getOrCall(this.props.config.bounds)\n const max = (bounds?.length ?? 0) >= 2 ? bounds![1] : Infinity\n const min = (bounds?.length ?? 0) >= 1 ? bounds![0] : -Infinity\n const step = getOrCall(this.props.config.stepSize) || (isFinite(max) && isFinite(min) ? (Math.pow(10, Math.floor(Math.log10((max - min) / 100)))) : 0.01)\n state = super.getUpdatedState({\n ...state,\n min, max, step\n });\n // console.warn(state.value)\n let com = this.props.config.type!.replace('vector', '').replace('vec', '')\n let components: any = 0;\n // Check if this is an Euler object\n const isEuler = typeof (state.value as any).order === 'string';\n state.isEuler = isEuler;\n\n // console.log(com, components)\n if(!com.length){\n let v = state.value as any;\n // console.log(v)\n if(typeof v.w === \"number\") components = 4\n else if (typeof v.z === \"number\") components = 3\n else if (typeof v.y === \"number\") components = 2\n else if (typeof v.x === \"number\") components = 1\n } else {\n components = Math.min(4, Math.max(1, parseInt(com)))\n }\n state.components = components\n return state\n }\n\n private _inputs = [React.createRef<ExtendedNumericInput>(), React.createRef<ExtendedNumericInput>(), React.createRef<ExtendedNumericInput>(), React.createRef<ExtendedNumericInput>()]\n private _parent = React.createRef<HTMLDivElement>()\n private _lastWidth?: number\n\n async refreshConfigState(state?: BPVectorComponentState): Promise<void> {\n await super.refreshConfigState(state);\n await this._inputs[0].current?.setValue(this.state.value.x)\n await this._inputs[1].current?.setValue(this.state.value.y)\n await this._inputs[2].current?.setValue((this.state.value as any).z)\n await this._inputs[3].current?.setValue((this.state.value as any).w)\n }\n // todo can we do it with css instead of ResizeObserver\n private _resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const newWidth = entry.contentRect.width\n if (Math.abs(newWidth - (this._lastWidth||0)) > 5) {\n this._lastWidth = newWidth\n this.forceUpdate()\n }\n }\n })\n\n componentDidMount() {\n if (this._parent.current) {\n this._resizeObserver.observe(this._parent.current)\n }\n super.componentDidMount()\n }\n\n componentWillUnmount() {\n this._resizeObserver.disconnect()\n super.componentWillUnmount()\n }\n\n renderInput() {\n let ret = []\n if (!this.state.value) return <></>;\n\n const unit = this.props.config.unit as string|undefined; // todo add to uiconfig, getOrCall\n const unitType = this.props.config.unitType as string|undefined; // todo add to uiconfig, getOrCall\n const targetUnit = this.state.unit || unit\n const transformValue = getNumberTransformFunctions(unit, unitType, targetUnit);\n\n const props = {\n disabled: this.state.disabled,\n readOnly: this.state.readOnly,\n min: this.state.min,\n max: this.state.max,\n stepSize: this.state.step,\n minorStepSize: this.state.step / 10,\n majorStepSize: this.state.step * 10,\n buttonPosition: \"none\",\n ...transformValue,\n } as const\n\n const showIcon = this._parent.current?.offsetWidth ? this._parent.current.offsetWidth > (60 * this.state.components) : true\n\n // Euler rotation order options\n const eulerOrderOptions = [\n { label: 'XYZ', value: 'XYZ' },\n { label: 'YXZ', value: 'YXZ' },\n { label: 'ZXY', value: 'ZXY' },\n { label: 'ZYX', value: 'ZYX' },\n { label: 'YZX', value: 'YZX' },\n { label: 'XZY', value: 'XZY' }\n ];\n\n if (this.state.components > 0) {\n const x = (\n <ExtendedNumericInput\n style={{maxWidth: \"8rem\", minWidth: \"2rem\"}}\n // defaultValue={state}\n leftIcon={xIcon3}\n draggableIcon={showIcon}\n value={this.state.value.x}\n key={this.props.config.uuid + '_x'}\n ref={this._inputs[0]}\n {...props}\n onChange2={(v, last) => {\n this.state.value.x = v\n this.setValue(this.state.value, last) // todo: does need refresh?\n }}\n />)\n ret.push(x)\n }\n if(this.state.components>1) {\n const y = (\n <ExtendedNumericInput\n style={{maxWidth: \"8rem\", minWidth: \"2rem\"}}\n // defaultValue={state}\n value={this.state.value.y}\n leftIcon={yIcon3}\n draggableIcon={showIcon}\n key={this.props.config.uuid + '_y'}\n ref={this._inputs[1]}\n {...props}\n onChange2={(v, last) => {\n this.state.value.y = v\n this.setValue(this.state.value, last) // todo: does need refresh?\n }}\n />)\n ret.push(y)\n }\n if(this.state.components>2) {\n const z = (\n <ExtendedNumericInput\n style={{maxWidth: \"8rem\", minWidth: \"2rem\"}}\n // defaultValue={state}\n value={(this.state.value as Vector3|Euler|Vector4).z}\n key={this.props.config.uuid + '_z'}\n leftIcon={zIcon3}\n draggableIcon={showIcon}\n ref={this._inputs[2]}\n {...props}\n onChange2={(v, last) => {\n (this.state.value as Vector3|Euler | Vector4).z = v\n this.setValue(this.state.value, last) // todo: does need refresh?\n }}\n />)\n ret.push(z)\n\n // Add Euler rotation order dropdown after z component\n if(this.state.isEuler && this.props.config.showOrderSelector) { // todo add showOrderSelector to uiconfig types and other renderers\n const eulerOrderDropdown = (\n <HTMLSelect\n options={eulerOrderOptions}\n minimal={true}\n fill={false}\n disabled={this.state.disabled || this.state.readOnly}\n value={(this.state.value as Euler).order}\n key={this.props.config.uuid + '_order'}\n onChange={(event) => {\n (this.state.value as Euler).order = event.currentTarget.value as any;\n this.setValue(this.state.value, true);\n }}\n style={{maxWidth: \"6rem\", minWidth: \"2rem\"}}\n />\n );\n ret.push(eulerOrderDropdown);\n }\n }\n if(this.state.components>3) {\n const w = (\n <ExtendedNumericInput\n style={{maxWidth: \"8rem\", minWidth: \"2rem\"}}\n // defaultValue={state}\n value={(this.state.value as Vector4).w}\n key={this.props.config.uuid + '_w'}\n leftIcon={wIcon3}\n draggableIcon={showIcon}\n ref={this._inputs[3]}\n {...props}\n onChange2={(v, last) => {\n (this.state.value as Vector4).w = v\n this.setValue(this.state.value, last) // todo: does need refresh?\n }}\n />)\n ret.push(w)\n }\n return <div ref={this._parent}\n className={\"formGroupContent\"}\n >\n {ret}\n </div>\n }\n}\n","import {createRef} from \"react\";\nimport {BPComponentProps, UiConfigRendererContextType} from \"./BPComponent\";\nimport {Button, Icon, Popover} from \"@blueprintjs/core\";\nimport {BPValueComponent, BPValueComponentState} from \"./BPValueComponent\";\nimport {HexColorPicker} from \"react-colorful\";\nimport {FormGroupComponent} from \"../components/FormGroupComponent\";\nimport {getOrCall} from 'ts-browser-helpers'\nimport type {Color, ColorRepresentation} from \"three\"\nimport {InputGroup2} from \"../lib\";\n\nexport type BPColorComponentState = BPValueComponentState<string> & {\n mode: 'number' | 'string' | 'Color', lastValue?: ColorRepresentation,\n srgbConvert: boolean\n}\n\n\nexport class BPColorInputComponent extends BPValueComponent<ColorRepresentation, BPColorComponentState, string> {\n private _inputRef = createRef<HTMLInputElement>()\n private _tempColor: Color\n\n constructor(props: BPComponentProps<ColorRepresentation>, context: UiConfigRendererContextType) {\n super(props, context, {\n label: 'Color',\n value: '#000000',\n mode: 'number',\n srgbConvert: false,\n });\n if(!context.THREE?.Color) throw new Error('BPColorInputComponent requires THREE.Color to be available in context')\n if(!this._tempColor) this._tempColor = new context.THREE.Color()\n }\n\n convertValueToState(val: ColorRepresentation, state: BPColorComponentState): BPColorComponentState {\n if(!this._tempColor) this._tempColor = new this.context.THREE!.Color()\n let mode: BPColorComponentState['mode'] = state.mode\n const srgbConvert = getOrCall(this.props.config.srgb) === true\n if (typeof val === 'string') mode = 'string'\n else if (typeof val === 'number') mode = 'number';\n else if (val.isColor)\n mode = 'Color'\n else console.error('not supported color', val)\n this._tempColor.set(val)\n if (srgbConvert) this._tempColor.convertLinearToSRGB()\n const value = '#' + this._tempColor.getHexString().toUpperCase()\n // console.log('color', mode, value, val)\n return {...state, mode, value, lastValue: val, srgbConvert} // default config.srgb = false\n }\n\n async convertStateToValue(state: BPColorComponentState): Promise<ColorRepresentation> {\n if(!this._tempColor) this._tempColor = new this.context.THREE!.Color()\n let val: ColorRepresentation = state.lastValue || 0\n this._tempColor.set(state.value)\n if (state.srgbConvert) this._tempColor.convertSRGBToLinear()\n if (state.mode === 'number') {\n val = this._tempColor.getHex()\n } else if (state.mode === 'string') {\n val = '#' + this._tempColor.getHexString();\n } else if (state.mode === 'Color') {\n val = ((state.lastValue as Color) ?? new this.context.THREE!.Color()).copy(this._tempColor)\n }\n return val;\n }\n\n forceOnChange: boolean = true\n\n doesNeedRefresh(state: BPColorComponentState, _?: boolean): boolean {\n const eq = !super.doesNeedRefresh(state);\n return ((state.value as any as Color)?.isColor && eq) ? true : !eq\n }\n\n private _mouseButtons = 0\n\n componentDidMount() {\n super.componentDidMount();\n document.addEventListener('mousemove', this._mouseMove)\n }\n\n private _mouseMove = (ev: MouseEvent) => {\n this._mouseButtons = ev.buttons\n if (!this._mouseButtons && this._hasMouseUp) this._mouseUp()\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousemove', this._mouseMove)\n this._mouseButtons = 0\n super.componentWillUnmount();\n }\n\n private _hasMouseUp = false\n private _mouseUp = () => {\n document.removeEventListener('mouseup', this._mouseMove)\n if (!this._hasMouseUp) return\n this._hasMouseUp = false\n if(this._inputRef.current) {\n this.setValue(this._inputRef.current.value, true)\n }\n\n if (this._hasMouseUp) return\n document.addEventListener('mouseup', this._mouseUp)\n }\n async refreshConfigState(state?: BPColorComponentState): Promise<void> {\n await super.refreshConfigState(state);\n if(this._inputRef.current)\n this._inputRef.current.value = this.state.value\n }\n\n protected flexBasis = \"100%\"\n\n render() {\n return !this.state.hidden ? (\n <FormGroupComponent\n label={this.state.label}\n flexBasis={this.state.baseWidth ?? this.flexBasis}\n >\n <InputGroup2 inputRef={this._inputRef}\n disabled={this.state.disabled} readOnly={this.state.readOnly}\n fill={true}\n // leftElementWidth={\"calc(3 * var(--pt-grid-size))\"}\n leftElement={(\n <Popover\n popoverClassName={'color-picker-popover'}\n usePortal={false}\n minimal={false}\n content={\n <HexColorPicker color={this.state.value}\n onChange={(c) => {\n if(this.state.readOnly || this.state.disabled) return\n this._tempColor.set(c)\n const v = '#' + this._tempColor.getHexString().toUpperCase()\n this.setValue(v, false)\n this._inputRef.current!.value = v\n\n if (this._hasMouseUp) return\n this._hasMouseUp = true\n document.addEventListener('mouseup', this._mouseUp)\n }\n }/>\n }\n >\n <Button\n disabled={this.state.disabled || this.state.readOnly}\n icon={<Icon icon=\"full-circle\" color={this.state.value}/>}\n text=\"\" variant={\"minimal\"}\n />\n </Popover>\n )} key={this.props.config.uuid} defaultValue={this.state.value} onChange={(e) => {\n const isHex = /^([A-Fa-f\\d]+)$/.exec(e.target.value) // if someone pastes a color hex without #\n this._tempColor.set((isHex ? '#' : '') + e.target.value)\n this.setValue('#' + this._tempColor.getHexString().toUpperCase())\n }}/>\n </FormGroupComponent>\n ) : null\n }\n}\n","import React from \"react\";\nimport {Class, getOrCall, PartialRecord} from \"ts-browser-helpers\";\nimport {BPComponentProps, BPComponentState, UiConfigRendererContext} from \"./bpComponents/BPComponent\";\nimport {BPFolderComponent, FolderHeadCard} from \"./bpComponents/BPFolderComponent\";\nimport {BPTextInputComponent} from \"./bpComponents/BPTextInputComponent\";\nimport {BPNumberInputComponent} from \"./bpComponents/BPNumberInputComponent\";\nimport {BPButtonComponent} from \"./bpComponents/BPButtonComponent\";\nimport {BPToggleInputComponent} from \"./bpComponents/BPToggleInputComponent\";\nimport {BPSliderInputComponent} from \"./bpComponents/BPSliderInputComponent\";\nimport {BPDropdownInputComponent} from \"./bpComponents/BPDropdownInputComponent\";\nimport {PanelActions} from \"@blueprintjs/core/lib/esm/components/panel-stack2/panelTypes\";\nimport {BPPanelComponent} from \"./bpComponents/BPPanelComponent\";\nimport {UiObjectConfig} from 'uiconfig.js'\nimport {BPColorInputComponent} from './bpComponents/BPColorInputComponent'\nimport {BPVectorInputComponent} from './bpComponents/BPVectorInputComponent'\nimport {IconName, MaybeElement} from \"@blueprintjs/core\";\n// import {BPVectorInputComponent} from \"./bpComponents/BPVectorInputComponent\";\n// import {BPFileComponent} from \"./bpComponents/BPFileComponent\";\n// import {BPColorInputComponent} from \"./bpComponents/BPColorInputComponent\";\n// import {BPHierarchyComponent} from \"./bpComponents/BPHierarchyComponent\";\n\nexport type UiConfigTypes = 'input' | 'button' | 'folder' | 'checkbox' | 'toggle' |\n 'dropdown' | 'slider' | 'color' | 'image' | 'number' | 'panel' | 'tree' | 'hierarchy' | 'materials' | 'textures' |\n 'vec' | 'vec2' | 'vec3' | 'vec4' | 'monitor' | 'vector' | 'select' | 'textarea' | 'tabs'\n\nexport interface ConfigProps extends PanelActions {\n config: UiObjectConfig;\n isPanel?: boolean,\n level?: number,\n className?: string\n icon?: IconName|MaybeElement // only for top level folders right now.\n}\n\nexport const ConfigObjectGenerators: PartialRecord<UiConfigTypes, Class<React.Component<BPComponentProps<any>, BPComponentState>>> = {\n input: BPTextInputComponent,\n number: BPNumberInputComponent,\n button: BPButtonComponent,\n // folder: BPPanelComponent,\n folder: BPFolderComponent,\n panel: BPPanelComponent,\n // folder: bpPopFolderGenerator,\n checkbox: BPToggleInputComponent,\n toggle: BPToggleInputComponent,\n dropdown: BPDropdownInputComponent,\n select: BPDropdownInputComponent,\n slider: BPSliderInputComponent,\n color: BPColorInputComponent,\n // image: BPFileComponent,\n vec: BPVectorInputComponent,\n vec2: BPVectorInputComponent,\n vec3: BPVectorInputComponent,\n vec4: BPVectorInputComponent,\n vector: BPVectorInputComponent,\n // hierarchy: BPHierarchyComponent,\n\n // todo textarea, textArea, multiline, tabs, tab, other aliases\n}\n\nexport class ConfigObject extends React.Component<ConfigProps, {}> {\n static contextType = UiConfigRendererContext\n declare context: React.ContextType<typeof UiConfigRendererContext>\n state = {}\n\n render() {\n if (!this.props.config || !this.props.config.type) return (<div key={this.props.config.uuid} className={this.props.className}></div>)\n this.context.methods.initUiConfig(this.props.config)\n if(!this.props.config.dispatchMode) this.props.config.dispatchMode = 'immediate'\n\n const order = this.props.config.order ? getOrCall(this.props.config.order, this.props.config) ?? undefined : undefined\n const orderStyle = {order: order && typeof order === 'string' ? parseInt(order): order}\n\n let type = this.props.config.type as any as UiConfigTypes\n const val = this.context.methods.getRawValue(this.props.config)\n\n // hacks\n if (type === 'input' && typeof val === 'number') this.props.config.type = type = 'number'\n if (type === 'input' && typeof val === 'boolean') this.props.config.type = type = 'toggle'\n if (type === 'monitor') {\n this.props.config.type = type = 'input'\n this.props.config.readOnly = true\n }\n if (val && type === 'input' && typeof (val as any).x === 'number') this.props.config.type = type = 'vec'\n\n let BPComp = ConfigObjectGenerators[type]\n if (type === 'panel' && !this.props.isPanel) {\n const label = this.context.methods.getLabel(this.props.config)\n const children = this.context.methods.getChildren(this.props.config)\n const enabledToggle = children[0] && this.context.methods.getLabel(children[0]).toLowerCase() === 'enabled' ? children[0] : undefined\n enabledToggle && (enabledToggle.hidden = true)\n return (\n <div key={this.props.config.uuid} style={orderStyle} className={this.props.className}>\n <FolderHeadCard\n enabled={enabledToggle ? this.context.methods.getRawValue(enabledToggle) : undefined}\n onEnabledChange={(e) => enabledToggle && this.context.methods.setValue(enabledToggle, e.target.checked, {}).then(() => this.setState(this.state))}\n level={0} label={label} minimal={false} open={false}\n icon={this.props.icon}\n onClick={() => {\n this.props.openPanel<{ config: UiObjectConfig<any> }>({\n props: {config: this.props.config},\n title: label,\n renderPanel: props => {\n if (BPComp)\n return (<BPComp {...props}/>)\n else return <></>\n }\n })\n }}/>\n </div>\n )\n }\n if (BPComp) {\n return (<div key={this.props.config.uuid} style={orderStyle} className={this.props.className}><BPComp {...{...this.props, isPanel: undefined, icon: this.props.icon}} /></div>)\n }\n return (<div key={this.props.config.uuid} style={orderStyle} className={this.props.className}>\n {/*Unknown type: {this.props.config.type}*/}\n </div>)\n // return null\n\n // let uiRef: React.FC | BPUiRef<any> | null = this.props.uiConfig.uiRef\n // if (uiRef) {\n // if (typeof uiRef === 'function') {\n // const FC = uiRef\n // return (<li key={this.props.uiConfig.uuid}><FC/></li>)\n // }\n // const FC = uiRef.FC\n // return (<li key={this.props.uiConfig.uuid}><FC defaultState={this.state} onChange={(s)=>{this.setState({...this.state, ...s})}}/></li>)\n // }\n // if (!this.props.uiConfig.type) return (<li key={v4()}></li>)\n // if (!this.props.uiConfig.uuid) this.props.uiConfig.uuid = v4()\n // const g = ConfigObjectGenerators[this.props.uiConfig.type as any as UiConfigTypes]\n // // console.log(props.uiConfig)\n // if (!g) return <li key={this.props.uiConfig.uuid}></li>\n // this.props.uiConfig.uiRefresh = (mode, deep, delay) => {\n // console.log('refresh', mode, deep, delay) // todo handle mode, deep, delay\n // const _uiRef: React.FC | BPUiRef<any> | null = g(this.props.uiConfig)\n // this.props.uiConfig.uiRef = _uiRef\n // if (typeof _uiRef !== 'function') {\n // this.setState(_uiRef.state)\n // }\n // }\n // uiRef = g(this.props.uiConfig)\n // this.props.uiConfig.uiRef = uiRef\n // if (typeof uiRef !== 'function') {\n // this.state = {...uiRef.state}\n // }\n // if (uiRef) {\n // if (typeof uiRef === 'function')\n // return (<li key={this.props.uiConfig.uuid}>{uiRef({})}</li>)\n // return (<li key={this.props.uiConfig.uuid}>{uiRef.FC({\n // defaultState: this.state, onChange: (s) => {\n // this.setState(s)\n // }\n // })}</li>)\n // }\n // return (<li key={v4()}>Error rendering ConfigObject</li>)\n }\n}\n","import React from \"react\";\nimport {Button, Card, Classes, Panel, PanelStack2, Popover} from \"@blueprintjs/core\";\nimport {ConfigObject, ConfigProps} from \"../ConfigObject\";\nimport {UiObjectConfig} from 'uiconfig.js'\nimport {UiConfigRendererContext} from '../bpComponents/BPComponent'\nimport {\n defaultVisualStyle,\n setupVisualStyle,\n ThemeSettingsMenuComponent,\n VisualStyleContext\n} from './VisualStyleContext'\n\n// import {ViewerAppContext} from \"./ViewerAppComponent\";\n\nexport function ConfigurationPanelComponent({config}: { config: UiObjectConfig<any, 'panel'> }) {\n const renderer = React.useContext(UiConfigRendererContext)\n const stackItem = React.useCallback(() => {\n return {\n props: {config: config},\n renderPanel(props: ConfigProps) {\n // console.log(props.config === config)\n return (\n <div style={{listStyleType: \"none\", paddingLeft: \"0\", margin: \"0\"}}>\n {/*{v && (<ConfigObject {...props}/>)}*/}\n {config && (<ConfigObject {...props} isPanel={true}/>)}\n </div>\n )\n },\n title: renderer.methods.getLabel(config)\n } as Panel<{ config: UiObjectConfig }>\n }, [config])\n const [currentPanelStack, setCurrentPanelStack] = React.useState<Array<Panel<{ config: UiObjectConfig }>>>([stackItem()]);\n const [isMinimized, setIsMinimized] = React.useState(false);\n\n React.useEffect(() => {\n setCurrentPanelStack([stackItem()])\n }, [stackItem, setCurrentPanelStack])\n\n const style = setupVisualStyle()\n\n return (\n <VisualStyleContext.Provider value={{...defaultVisualStyle, ...style}}>\n <Card className={`bpInspectorCard ${style.darkMode?Classes.DARK:\"\"}`} style={{display: isMinimized ? 'none' : 'block'}}>\n <PanelStack2 className=\"inspectorPanelStack\"\n showPanelHeader={true}\n renderActivePanelOnly={true}\n onOpen={(p) => setCurrentPanelStack([...currentPanelStack, p] as any)}\n onClose={() => setCurrentPanelStack(currentPanelStack.slice(0, -1))}\n stack={currentPanelStack}/>\n <div className={\"bpPanelStackHeaderOverlay \" + Classes.PANEL_STACK2_HEADER}>\n <Popover targetProps={{style: {position: \"absolute\", right: \"30px\"}}}\n minimal={true}\n targetTagName={\"div\"}\n content={\n <ThemeSettingsMenuComponent/>\n } placement=\"bottom\">\n <Button icon=\"more\" small minimal text=\"\" />\n </Popover>\n <Button icon=\"minus\" small minimal text=\"\" style={{position: \"absolute\", right: \"5px\"}}\n onClick={() => {\n setIsMinimized(!isMinimized);\n }}\n />\n </div>\n </Card>\n {isMinimized && <Button icon=\"cog\" small text=\"Configuration\" style={{position: \"absolute\", right: \"5px\"}}\n onClick={() => {\n setIsMinimized(!isMinimized);\n }}\n />}\n </VisualStyleContext.Provider>\n )\n}\n","import {createDiv, createStyles, css, JSUndoManager} from \"ts-browser-helpers\";\nimport {UiConfigRenderer, UiObjectConfig} from \"uiconfig.js\";\nimport React from 'react'\nimport {createRoot, Root} from 'react-dom/client'\nimport {ConfigurationPanelComponent} from './components/ConfigurationPanelComponent'\nimport {BPComponent, UiConfigRendererContext} from './bpComponents/BPComponent'\n// @ts-ignore\nimport rendererCss from './renderer.scss?inline' // for rollup build remove ?inline\nimport {FocusStyleManager} from '@blueprintjs/core'\nimport {THREE} from \"./threejs\";\n\nexport class UiConfigRendererBlueprint extends UiConfigRenderer {\n constructor(container: HTMLElement = document.body, {autoPostFrame = true} = {}, undoManager?: JSUndoManager|false) {\n super(container, autoPostFrame, undefined, undoManager);\n // this._root.expanded = expanded\n }\n\n protected _root: Root\n\n protected _createUiContainer(): HTMLDivElement {\n FocusStyleManager.onlyShowFocusOnTabs();\n\n const container = createDiv({id: 'blueprintUiContainer', addToBody: false})\n // the styles (about 3 MB) are added to the document once, not for each renderer\n if (!document.querySelector('style[data-uiconfig-blueprint]')) {\n createStyles(css`\n :root {\n --blueprint-ui-container-width: 300px;\n }\n \n @media only screen and (min-width: 1500px) {\n :root {\n --blueprint-ui-container-width: 400px;\n }\n }\n @media only screen and (min-width: 2500px) {\n :root {\n --blueprint-ui-container-width: 500px;\n }\n }\n \n @media only screen and (min-width: 600px) {\n #blueprintUiContainer {\n min-width: var(--blueprint-ui-container-width);\n min-height: 200px;\n max-height: 100%;\n max-width: 100%;\n resize: both;\n }\n }\n `).dataset.uiconfigBlueprint = 'container'\n createStyles(rendererCss).dataset.uiconfigBlueprint = 'renderer'\n }\n\n this._root = createRoot(container, {\n identifierPrefix: 'bpUi',\n onRecoverableError: (error) => {\n console.warn(error)\n }\n })\n this._root.render(\n <React.StrictMode>\n <UiConfigRendererContext.Provider value={this}>\n <ConfigurationPanelComponent config={this.config}/>\n </UiConfigRendererContext.Provider>\n </React.StrictMode>\n )\n return container\n }\n\n protected _refreshUiConfigObject(config: UiObjectConfig): void {\n (config.uiRef as BPComponent<any, any>)?.refreshConfigState()\n }\n\n renderUiConfig(_: UiObjectConfig): void {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n THREE: THREE|undefined = (window as any).THREE\n\n unmount() {\n this._root?.unmount()\n }\n\n}\n","import {UiConfigRendererBlueprint} from \"./UiConfigRendererBlueprint\";\n\nclass UI extends UiConfigRendererBlueprint{\n\n}\n\nexport {UiConfigRendererBlueprint, UI};\n\n"],"names":["UiConfigRendererContext","createContext","_BPComponent","React","props","context","state","resolve","hidden","getOrCall","disabled","readOnly","baseWidth","s","deep","mode","delay","BPComponent","cleanLabel","varName","result","word","BPLabelledComponent","BPContainerComponent","ev","args","child","oldChildren","newChildren","c","children2","enabledToggle","removed","added","extendStatics","d","b","p","__extends","__","isNodeEnv","env","Intent","NS","intentClass","COLLAPSE","COLLAPSE_BODY","intent","AbstractPureComponent","_super","_this","_i","_a","timeoutId","requestId","_prevProps","_prevState","_snapshot","callback","handle","timeout","_props","DISPLAYNAME_PREFIX","AnimationStates","Collapse","el","height","isOpen","animationState","isContentVisible","shouldRenderChildren","displayWithTransform","isAutoHeight","containerStyle","contentsStyle","classNames","Classes.COLLAPSE","Classes.COLLAPSE_BODY","transitionDuration","clientHeight","clientHeight_1","BPFolderComponent","icon","config","level","filter","setExpanded","e","safeSetProperty","children","ctxMenuBtns","endIcon","jsx","Popover","ContextMenu","Button","FolderHeadCard","Collapse2","jsxs","i","ConfigObject","hasEnabled","Divider","Fragment","Icon","Checkbox","Classes","buttons","Menu","btn","getProps","MenuItem","BPValueComponent","val","_last","needsRefresh","equals","value","last","refreshState","a","equalsPrimitive","FormGroupComponent","FormGroup","BPInputComponent","BPTextInputComponent","iv","TextArea","InputGroup","ns","CLAMP_MIN_MAX","NUMERIC_INPUT_MIN_MAX","NUMERIC_INPUT_MINOR_STEP_SIZE_BOUND","NUMERIC_INPUT_MAJOR_STEP_SIZE_BOUND","NUMERIC_INPUT_MINOR_STEP_SIZE_NON_POSITIVE","NUMERIC_INPUT_MAJOR_STEP_SIZE_NON_POSITIVE","NUMERIC_INPUT_STEP_SIZE_NON_POSITIVE","clamp","min","max","getDecimalSeparator","locale","testText","one","nine","pattern","toLocaleString","num","sanitizeNumericInput","clampValue","getValueOrEmptyValue","transformLocalizedNumberToStringNumber","character","jsNumber","parseStringToStringNumber","valueAsString","decimalSeparator","isValueNumeric","stringToStringNumber","isValidNumericKeyboardEvent","isFloatingPointNumericCharacter","numbers","convertFullWidthNumbersToAscii","m","valueChar","NON_HTML_PROPS","_InputGroup2","ref","event","className","fill","inputClassName","inputRef","inputSize","large","round","size","small","tagName","inputGroupClasses","paddingLeft","paddingRight","style","inputProps","removeNonHTMLProps","inputElement","prevProps","leftElement","rightElement","leftIcon","leftElementWidth","rightElementWidth","clientWidth","InputGroup2","_NumericInput","Utils","refHandler","direction","delta","nextValue","valueAsNumber","data","nextState","didMinChange","didMaxChange","didBoundsChange","sanitizedValue","currentValue","clampedValue","buttonPosition","containerClasses","ControlGroup","Position","prevState","setRef","didLocaleChange","didValueChange","valueToParse","localizedValue","nextProps","majorStepSize","minorStepSize","stepSize","Errors.NUMERIC_INPUT_MIN_MAX","Errors.NUMERIC_INPUT_STEP_SIZE_NON_POSITIVE","Errors.NUMERIC_INPUT_MINOR_STEP_SIZE_NON_POSITIVE","Errors.NUMERIC_INPUT_MAJOR_STEP_SIZE_NON_POSITIVE","Errors.NUMERIC_INPUT_MINOR_STEP_SIZE_BOUND","Errors.NUMERIC_INPUT_MAJOR_STEP_SIZE_BOUND","isIncrementDisabled","isDecrementDisabled","ButtonGroup","ChevronUp","ChevronDown","inputGroupHtmlProps","evt","currValue","isShiftKeyPressed","isAltKeyPressed","NumericInput","FakeCursor","useFallback","x","y","fakeCursorInstance","getFakeCursor","PointerLockManager","element","options","initialX","initialY","isSafari","movementX","movementY","screenWidth","screenHeight","DraggableIcon","_movementY","_cursorX","_cursorY","off","locked","handleMouseUp","NumberAbbreviation","NUMBER_ABBREVIATION_REGEX","SCIENTIFIC_NOTATION_REGEX","ExtendedNumericInput","v","_valueAsNumber","dispatchOnChange2","transformed","term","total","matches","match","compactedMatch","compactedMatchNum","lastChar","isValid","precision","invTransformValue","transformValue","draggableIcon","onChange2","_value","defaultValue","props2","NumberUnits","getNumberTransformFunctions","unit","unitType1","targetUnit","unitType","k","target","source","BPNumberInputComponent","BPButtonComponent","BPToggleInputComponent","Switch","BPSliderInputComponent","bounds","step","invTransformValue_","transformValue_","Slider","renderDropdownItem","item","handleClick","handleFocus","modifiers","BPDropdownInputComponent","label1","o","Select","BPPanelComponent","bpIconWrapper","path","viewbox","svgProps","xIcon3","yIcon3","zIcon3","wIcon3","defaultVisualStyle","_","VisualStyleContext","useVisualStyle","localStoragePrefix","localStorageIds","setupVisualStyle","darkMode","setDarkMode","clas","theme","setTheme","ThemeSettingsMenuComponent","visualStyle","key","BPVectorInputComponent","entries","entry","newWidth","com","components","isEuler","ret","showIcon","eulerOrderOptions","z","eulerOrderDropdown","HTMLSelect","w","BPColorInputComponent","createRef","srgbConvert","eq","HexColorPicker","isHex","ConfigObjectGenerators","_ConfigObject","order","orderStyle","type","BPComp","label","ConfigurationPanelComponent","renderer","stackItem","currentPanelStack","setCurrentPanelStack","isMinimized","setIsMinimized","Card","PanelStack2","UiConfigRendererBlueprint","UiConfigRenderer","container","autoPostFrame","undoManager","FocusStyleManager","createDiv","createStyles","css","rendererCss","createRoot","error","UI"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,10,16,17,18]}
|