@deephaven/components 0.15.6-vite.19 → 0.15.7-beta.0
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/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BaseStyleSheet.css +11560 -0
- package/dist/BaseStyleSheet.css.map +1 -0
- package/dist/BasicModal.js.map +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/ButtonOld.js.map +1 -1
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.js.map +1 -1
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DeephavenSpinner.js.map +1 -1
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.js +1 -1
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.js +1 -1
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.js.map +1 -1
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioItem.js.map +1 -1
- package/dist/SearchInput.js.map +1 -1
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.js.map +1 -1
- package/dist/ThemeExport.js.map +1 -1
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextAction.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/context-actions/index.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/menu-actions/index.js.map +1 -1
- package/dist/modal/Modal.js.map +1 -1
- package/dist/modal/ModalBody.js.map +1 -1
- package/dist/modal/ModalFooter.js.map +1 -1
- package/dist/modal/ModalHeader.js.map +1 -1
- package/dist/modal/index.js.map +1 -1
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.d.ts +2 -0
- package/dist/popper/Tooltip.d.ts.map +1 -1
- package/dist/popper/Tooltip.js +4 -1
- package/dist/popper/Tooltip.js.map +1 -1
- package/dist/popper/index.js.map +1 -1
- package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
- package/dist/shortcuts/Shortcut.js.map +1 -1
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
- package/dist/shortcuts/index.js.map +1 -1
- package/package.json +9 -9
- package/scss/BaseStyleSheet.scss +0 -847
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/context-actions/ContextMenuRoot.tsx"],"names":["React","Component","classNames","ContextMenu","ContextActionUtils","ContextMenuRoot","constructor","props","handleMenuClose","bind","handleContextMenu","container","createRef","openMenu","state","actions","left","top","componentDidMount","current","parentElement","addEventListener","componentWillUnmount","removeEventListener","e","isContextActionEvent","metaKey","ctrlKey","contextActions","getMenuItems","parentRect","getBoundingClientRect","clientY","clientX","length","target","preventDefault","setState","element","document","elementFromPoint","mouseEvent","MouseEvent","bubbles","cancelable","dispatchEvent","menu","render","dataTestId","verifiedTop","verifiedLeft","active"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from './ContextMenu';\nimport ContextActionUtils, { MenuItem } from './ContextActionUtils';\n\ntype ContextMenuRootProps = Record<string, never> & {\n 'data-testid'?: string;\n};\n\ninterface ContextMenuRootState {\n actions: MenuItem[] | null;\n left: number;\n top: number;\n}\n\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component<\n ContextMenuRootProps,\n ContextMenuRootState\n> {\n constructor(props: ContextMenuRootProps) {\n super(props);\n\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = React.createRef();\n this.openMenu = React.createRef();\n\n this.state = {\n actions: null,\n left: 0,\n top: 0,\n };\n }\n\n componentDidMount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.addEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n componentWillUnmount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.removeEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n openMenu: React.RefObject<ContextMenu>;\n\n handleContextMenu(e: MouseEvent): void {\n if (!ContextActionUtils.isContextActionEvent(e)) {\n return;\n }\n\n if (!this.container.current) {\n return;\n }\n\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n\n const contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n\n const parentRect = this.container.current.getBoundingClientRect();\n const top = e.clientY - parentRect.top;\n const left = e.clientX - parentRect.left;\n\n if (contextActions.length === 0) {\n // This code path seems to only exist for Chrome on Mac\n // Mac appears to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({ actions: null }, () => {\n const element = document.elementFromPoint(left, top); // x y\n\n const mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true,\n });\n\n element?.dispatchEvent(mouseEvent);\n });\n return;\n }\n\n // target was a menu item\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left,\n });\n }\n\n handleMenuClose(menu: ContextMenu): void {\n if (menu === this.openMenu.current) {\n this.setState({ actions: null });\n }\n }\n\n render(): JSX.Element {\n let menu = null;\n const { 'data-testid': dataTestId } = this.props;\n const { actions, top, left } = this.state;\n if (actions) {\n menu = (\n <ContextMenu\n ref={this.openMenu}\n actions={actions}\n onMenuClosed={this.handleMenuClose}\n top={top}\n left={left}\n updatePosition={(verifiedTop, verifiedLeft) => {\n this.setState({ top: verifiedTop, left: verifiedLeft });\n }}\n data-testid={dataTestId}\n />\n );\n }\n return (\n <div\n className={classNames('context-menu-root', { active: actions })}\n ref={this.container}\n >\n {menu}\n </div>\n );\n }\n}\n\nexport default ContextMenuRoot;\n"],"file":"ContextMenuRoot.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/context-actions/GlobalContextAction.tsx"],"names":["Component","Log","ContextActionUtils","log","module","GlobalContextAction","constructor","props","handleContextMenu","bind","handleKeyDown","componentDidMount","document","body","addEventListener","componentWillUnmount","removeEventListener","evt","e","contextActions","action","title","menuElement","push","debug","actionsDisabled","shortcut","matchesEvent","result","undefined","preventDefault","stopPropagation","render"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,kB;AAGP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,qBAAX,CAAZ;;AAMA,MAAMC,mBAAN,SAAkCL,SAAlC,CAAsE;AACpEM,EAAAA,WAAW,CAACC,KAAD,EAAkC;AAC3C,UAAMA,KAAN;AAEA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBD,IAAnB,CAAwB,IAAxB,CAArB;AACD;;AAEDE,EAAAA,iBAAiB,GAAS;AACxBC,IAAAA,QAAQ,CAACC,IAAT,CAAcC,gBAAd,CAA+B,aAA/B,EAA8C,KAAKN,iBAAnD;AACAI,IAAAA,QAAQ,CAACC,IAAT,CAAcC,gBAAd,CAA+B,SAA/B,EAA0C,KAAKJ,aAA/C;AACD;;AAEDK,EAAAA,oBAAoB,GAAS;AAC3BH,IAAAA,QAAQ,CAACC,IAAT,CAAcG,mBAAd,CAAkC,aAAlC,EAAiD,KAAKR,iBAAtD;AACAI,IAAAA,QAAQ,CAACC,IAAT,CAAcG,mBAAd,CAAkC,SAAlC,EAA6C,KAAKN,aAAlD;AACD;;AAEDF,EAAAA,iBAAiB,CAACS,GAAD,EAAwB;AACvC,QAAMC,CAAC,GAAGD,GAAV;;AACA,QAAI,CAACC,CAAC,CAACC,cAAP,EAAuB;AACrBD,MAAAA,CAAC,CAACC,cAAF,GAAmB,EAAnB;AACD;;AAED,QAAM;AAAEC,MAAAA;AAAF,QAAa,KAAKb,KAAxB;;AAEA,QAAI,CAACa,MAAM,CAACC,KAAR,IAAiB,CAACD,MAAM,CAACE,WAA7B,EAA0C;AACxC;AACD;;AAED,QAAI,CAACJ,CAAC,CAACC,cAAP,EAAuB;AACrBD,MAAAA,CAAC,CAACC,cAAF,GAAmB,EAAnB;AACD;;AAEDD,IAAAA,CAAC,CAACC,cAAF,CAAiBI,IAAjB,CAAsBH,MAAtB;AAEAjB,IAAAA,GAAG,CAACqB,KAAJ,CACE,oEADF,EAEEN,CAAC,CAACC,cAFJ;AAID;;AAEDT,EAAAA,aAAa,CAACQ,CAAD,EAAyB;AAAA;;AACpC,QAAM;AAAEE,MAAAA;AAAF,QAAa,KAAKb,KAAxB;;AACA,QACE,CAACL,kBAAkB,CAACuB,eAApB,wBACAL,MAAM,CAACM,QADP,6CACA,iBAAiBC,YAAjB,CAA8BT,CAA9B,CAFF,EAGE;AAAA;;AACAf,MAAAA,GAAG,CAACqB,KAAJ,CAAU,wBAAV,EAAoCN,CAApC;AAEA,UAAMU,MAAM,qBAAGR,MAAM,CAACA,MAAV,mDAAG,oBAAAA,MAAM,EAAUF,CAAV,CAArB;;AAEA,UAAIU,MAAM,IAAIA,MAAM,KAAKC,SAAzB,EAAoC;AAClCX,QAAAA,CAAC,CAACY,cAAF;AACAZ,QAAAA,CAAC,CAACa,eAAF;AACD;AACF;AACF;;AAEDC,EAAAA,MAAM,GAAS;AACb,WAAO,IAAP;AACD;;AA7DmE;;AAgEtE,eAAe3B,mBAAf","sourcesContent":["import { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from './ContextActionUtils';\nimport type { ContextAction, ContextActionEvent } from './ContextActionUtils';\n\nconst log = Log.module('GlobalContextAction');\n\ninterface GlobalContextActionProps {\n action: ContextAction;\n}\n\nclass GlobalContextAction extends Component<GlobalContextActionProps> {\n constructor(props: GlobalContextActionProps) {\n super(props);\n\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentDidMount(): void {\n document.body.addEventListener('contextmenu', this.handleContextMenu);\n document.body.addEventListener('keydown', this.handleKeyDown);\n }\n\n componentWillUnmount(): void {\n document.body.removeEventListener('contextmenu', this.handleContextMenu);\n document.body.removeEventListener('keydown', this.handleKeyDown);\n }\n\n handleContextMenu(evt: MouseEvent): void {\n const e = evt as ContextActionEvent;\n if (!e.contextActions) {\n e.contextActions = [];\n }\n\n const { action } = this.props;\n\n if (!action.title && !action.menuElement) {\n return;\n }\n\n if (!e.contextActions) {\n e.contextActions = [];\n }\n\n e.contextActions.push(action);\n\n log.debug(\n 'Received context menu event at global action! Menu items are now: ',\n e.contextActions\n );\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const { action } = this.props;\n if (\n !ContextActionUtils.actionsDisabled &&\n action.shortcut?.matchesEvent(e)\n ) {\n log.debug('Global hotkey matched!', e);\n\n const result = action.action?.(e);\n\n if (result || result === undefined) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default GlobalContextAction;\n"],"file":"GlobalContextAction.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/context-actions/GlobalContextActions.tsx"],"names":["React","Component","GlobalContextAction","GlobalContextActions","render","actions","dataTestId","props","actionElements","i","length","action","shortcut","title","menuElement","actionElement","id","push"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;OACOC,mB;;AAQP,MAAMC,oBAAN,SAAmCF,SAAnC,CAAwE;AACtEG,EAAAA,MAAM,GAAoB;AACxB,QAAM;AAAEC,MAAAA,OAAF;AAAW,qBAAeC;AAA1B,QAAyC,KAAKC,KAApD;AACA,QAAMC,cAAc,GAAG,EAAvB;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,OAAO,CAACK,MAA5B,EAAoCD,CAAC,IAAI,CAAzC,EAA4C;AAC1C,UAAME,MAAM,GAAGN,OAAO,CAACI,CAAD,CAAtB;AACA,UAAM;AAAEG,QAAAA;AAAF,UAAeD,MAArB;;AACA,UAAIA,MAAM,CAACE,KAAP,IAAgBF,MAAM,CAACG,WAAvB,IAAsCF,QAA1C,EAAoD;AAClD,YAAMG,aAAa,gBACjB,oBAAC,mBAAD;AACE,UAAA,GAAG,YAAKJ,MAAM,CAACE,KAAZ,cAAqBD,QAArB,aAAqBA,QAArB,uBAAqBA,QAAQ,CAAEI,EAA/B,CADL;AAEE,UAAA,MAAM,EAAEL,MAFV;AAGE,yBAAaL;AAHf,UADF;AAOAE,QAAAA,cAAc,CAACS,IAAf,CAAoBF,aAApB;AACD;AACF;;AACD,WAAOP,cAAP;AACD;;AAnBqE;;AAsBxE,eAAeL,oBAAf","sourcesContent":["import React, { Component } from 'react';\nimport GlobalContextAction from './GlobalContextAction';\nimport type { ContextAction } from './ContextActionUtils';\n\ninterface GlobalContextActionsProps {\n actions: ContextAction[];\n 'data-testid'?: string;\n}\n\nclass GlobalContextActions extends Component<GlobalContextActionsProps> {\n render(): React.ReactNode {\n const { actions, 'data-testid': dataTestId } = this.props;\n const actionElements = [];\n for (let i = 0; i < actions.length; i += 1) {\n const action = actions[i];\n const { shortcut } = action;\n if (action.title || action.menuElement || shortcut) {\n const actionElement = (\n <GlobalContextAction\n key={`${action.title}.${shortcut?.id}`}\n action={action}\n data-testid={dataTestId}\n />\n );\n actionElements.push(actionElement);\n }\n }\n return actionElements;\n }\n}\n\nexport default GlobalContextActions;\n"],"file":"GlobalContextActions.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/context-actions/index.ts"],"names":["default","ContextActions","ContextActionUtils","ContextMenuItem","ContextMenuRoot"],"mappings":"SAASA,OAAO,IAAIC,c;SACXD,OAAO,IAAIE,kB;SAEXF,OAAO,IAAIG,e;SACXH,OAAO,IAAII,e","sourcesContent":["export { default as ContextActions } from './ContextActions';\nexport { default as ContextActionUtils } from './ContextActionUtils';\nexport type { ContextAction } from './ContextActionUtils';\nexport { default as ContextMenuItem } from './ContextMenuItem';\nexport { default as ContextMenuRoot } from './ContextMenuRoot';\nexport type { ResolvableContextAction } from './ContextActionUtils';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"declaration.d.js"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,CAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["$","window","jQuery","default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CustomTimeSelect","DebouncedSearchInput","DeephavenSpinner","DraggableItemList","DragUtils","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch"],"mappings":"AAAA;AACA,OAAO,KAAKA,CAAZ,MAAmB,QAAnB;AASAC,MAAM,CAACD,CAAP,GAAWA,CAAX;AACAC,MAAM,CAACC,MAAP,GAAgBF,CAAhB;SAGSG,OAAO,IAAIC,iB;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,M;SACXJ,OAAO,IAAIK,W;SACXL,OAAO,IAAIM,S;SACXN,OAAO,IAAIO,Q;;SAEXP,OAAO,IAAIQ,Q;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,Q;SACXV,OAAO,IAAIW,gB;SACXX,OAAO,IAAIY,oB;SACXZ,OAAO,IAAIa,gB;SACXb,OAAO,IAAIc,iB;;SAEXd,OAAO,IAAIe,S;SACXf,OAAO,IAAIgB,wB;;;SAGXhB,OAAO,IAAIiB,Y;SACXjB,OAAO,IAAIkB,c;SACXlB,OAAO,IAAImB,c;SACXnB,OAAO,IAAIoB,Y;;SAEXpB,OAAO,IAAIqB,W;;;SAGXrB,OAAO,IAAIsB,M;;;SAGXtB,OAAO,IAAIuB,U;SACXvB,OAAO,IAAIwB,S;SACXxB,OAAO,IAAIyB,M;SACXzB,OAAO,IAAI0B,W;SACX1B,OAAO,IAAI2B,e;;;SAGX3B,OAAO,IAAI4B,c;SACX5B,OAAO,IAAI6B,W;SACX7B,OAAO,IAAI8B,S;SACX9B,OAAO,IAAI+B,U;SACX/B,OAAO,IAAIgC,iB;SACXhC,OAAO,IAAIiC,Q","sourcesContent":["/** Shim for using jquery in frameworks included by react (such as bootstrap) */\nimport * as $ from 'jquery';\n\ndeclare global {\n interface Window {\n $: typeof $;\n jQuery: typeof $;\n }\n}\n\nwindow.$ = $;\nwindow.jQuery = $;\n\nexport type { Range } from '@deephaven/utils';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport { default as DeephavenSpinner } from './DeephavenSpinner';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/menu-actions/DropdownMenu.tsx"],"names":["React","PureComponent","classNames","Popper","Menu","DropdownMenu","constructor","props","handleClick","bind","handleCloseMenu","handleExited","container","createRef","parent","popper","isOpen","componentDidMount","isShown","current","parentElement","addEventListener","openMenu","componentDidUpdate","prevProps","window","requestAnimationFrame","closeMenu","componentWillUnmount","removeEventListener","hide","show","scheduleUpdate","e","preventDefault","stopPropagation","onMenuClosed","render","actions","onMenuOpened","popperClassName","dataTestId","menuStyle","options","popperOptions","placement","separateKeyboardMouse","undefined"],"mappings":"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","sourcesContent":["/**\n * Add dropdown menu that you add onto any component.\n *\n * Similar to the context-actions package, accepts list of actions to create a dropdown menu.\n * Note: Does not support nested sub-menus.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action',\n * action: () => { alert('My Action Clicked!') }\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * shortcut: Shortcut, // Shortcut class instance\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null // Int where to order within group\n * }];\n *\n * Usage:\n * 1. Auto bind click to open event to parent\n * <div>\n * Click in this container\n * <DropdownMenu actions={actions}/>\n * </div>\n *\n * 2. Control via prop\n * <div>\n * DropdownMenu will not react to the click event if isShown prop is used\n * <DropdownMenu actions={actions} isShown={isShown} />\n * </div>\n *\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from '../popper';\nimport Menu, { MenuOptions } from './Menu';\nimport { ContextAction } from '../context-actions/ContextActionUtils';\nimport './DropdownMenu.scss';\n\nexport type DropdownAction = ContextAction & { actions?: never };\n\nexport type DropdownActions = DropdownAction | DropdownAction[];\n\ntype DropdownMenuProps = {\n // Override to prevent nested lists\n actions: DropdownActions;\n isShown: boolean | null;\n onMenuClosed(): void;\n onMenuOpened(): void;\n options: MenuOptions;\n popperOptions: PopperOptions;\n popperClassName: string;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\nclass DropdownMenu extends PureComponent<DropdownMenuProps> {\n static defaultProps = {\n isShown: null,\n onMenuClosed(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n options: {},\n popperOptions: {},\n popperClassName: '',\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n this.handleExited = this.handleExited.bind(this);\n\n this.container = React.createRef();\n this.parent = null;\n this.popper = React.createRef();\n\n this.isOpen = false;\n }\n\n componentDidMount(): void {\n const { isShown } = this.props;\n\n if (isShown === null) {\n if (this.container.current?.parentElement) {\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('click', this.handleClick);\n }\n } else if (isShown) {\n this.openMenu();\n }\n }\n\n componentDidUpdate(prevProps: DropdownMenuProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.openMenu();\n });\n } else {\n this.closeMenu();\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this.parent) {\n this.parent.removeEventListener('click', this.handleClick);\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n parent: Element | null;\n\n popper: React.RefObject<Popper>;\n\n isOpen: boolean;\n\n closeMenu(): void {\n this.popper.current?.hide();\n }\n\n openMenu(): void {\n if (this.popper.current && !this.isOpen) {\n this.popper.current.show();\n this.isOpen = true;\n }\n }\n\n scheduleUpdate(): void {\n this.popper.current?.scheduleUpdate();\n }\n\n handleClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n\n this.openMenu();\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleExited(): void {\n this.isOpen = false;\n\n const { onMenuClosed } = this.props;\n onMenuClosed();\n }\n\n render(): JSX.Element {\n const {\n actions,\n onMenuOpened,\n popperClassName,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuStyle } = this.props;\n let { options, popperOptions } = this.props;\n popperOptions = { placement: 'bottom', ...popperOptions };\n options = {\n separateKeyboardMouse: true,\n ...options,\n };\n return (\n <div\n className=\"menu-actions-listener\"\n ref={this.container}\n data-testid={dataTestId}\n >\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('menu-popper', popperClassName)}\n onExited={this.handleExited}\n closeOnBlur\n interactive\n >\n <Menu\n actions={actions}\n closeMenu={this.handleCloseMenu}\n onMenuOpened={onMenuOpened}\n options={options}\n menuStyle={menuStyle}\n />\n </Popper>\n </div>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["React","PureComponent","ContextActionUtils","ContextMenuItem","Menu","constructor","props","handleKeyDown","bind","handleMenuItemClick","handleMenuItemMouseMove","handleMouseLeave","handleCloseMenu","container","createRef","oldFocus","document","activeElement","rAF","options","keyboardIndex","initialKeyboardIndex","state","menuItems","mouseIndex","componentDidMount","initMenu","window","requestAnimationFrame","current","focus","onMenuOpened","componentDidUpdate","prevProps","actions","componentWillUnmount","cancelAnimationFrame","getKeyboardIndex","separateKeyboardMouse","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","getMenuItems","length","sortActions","concat","e","newFocus","key","shiftKey","getNextMenuItem","closeMenu","HTMLElement","preventDefault","stopPropagation","closeAll","onMenuClosed","menuItem","disabled","action","focusIndex","indexOf","render","menuItemElements","dataTestId","i","group","push","menuItemElement","menuStyle","undefined"],"sources":["../../src/menu-actions/Menu.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport ContextActionUtils, {\n ContextAction,\n} from '../context-actions/ContextActionUtils';\nimport ContextMenuItem from '../context-actions/ContextMenuItem';\n\nexport type MenuOptions = {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n};\n\ntype MenuProps = {\n actions: ContextAction | ContextAction[];\n closeMenu(closeAll: boolean): void;\n onMenuClosed(menu: Menu): void;\n onMenuOpened(menu: Menu): void;\n options: MenuOptions;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\ntype MenuState = {\n menuItems: ContextAction[];\n keyboardIndex: number;\n mouseIndex: number;\n};\n\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent<MenuProps, MenuState> {\n static defaultProps = {\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: MenuProps) {\n super(props);\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n\n const { options } = props;\n const keyboardIndex = options.initialKeyboardIndex ?? -1;\n\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.rAF = window.requestAnimationFrame(() => {\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n this.container.current?.focus();\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(prevProps: MenuProps): void {\n const { actions } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n\n componentWillUnmount(): void {\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n rAF: number;\n\n getKeyboardIndex(): number | null {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n\n this.setState({\n menuItems: [],\n });\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions, false);\n\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(menuItems)\n ),\n }));\n }\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (\n e.key === 'ArrowUp' ||\n (e.key === 'Tab' && e.shiftKey === true)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n -1,\n menuItems\n );\n } else if (\n e.key === 'ArrowDown' ||\n (e.key === 'Tab' && e.shiftKey === false)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n 1,\n menuItems\n );\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n if (menuItem != null && !menuItem.disabled && menuItem.action != null) {\n menuItem.action();\n this.closeMenu(true);\n }\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { 'data-testid': dataTestId } = this.props;\n const { keyboardIndex, menuItems, mouseIndex } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={() => false}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n const { menuStyle } = this.props;\n\n return (\n <div\n className=\"context-menu-container\"\n style={{ ...menuStyle }}\n ref={this.container}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n </div>\n );\n }\n}\n\nexport default Menu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/menu-actions/Menu.tsx"],"names":["React","PureComponent","ContextActionUtils","ContextMenuItem","Menu","constructor","props","handleKeyDown","bind","handleMenuItemClick","handleMenuItemMouseMove","handleMouseLeave","handleCloseMenu","container","createRef","oldFocus","document","activeElement","rAF","options","keyboardIndex","initialKeyboardIndex","state","menuItems","mouseIndex","componentDidMount","initMenu","window","requestAnimationFrame","current","focus","onMenuOpened","componentDidUpdate","prevProps","actions","componentWillUnmount","cancelAnimationFrame","getKeyboardIndex","separateKeyboardMouse","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","getMenuItems","length","sortActions","concat","e","newFocus","key","shiftKey","getNextMenuItem","closeMenu","HTMLElement","preventDefault","stopPropagation","closeAll","onMenuClosed","menuItem","disabled","action","focusIndex","indexOf","render","menuItemElements","dataTestId","i","group","push","menuItemElement","menuStyle","undefined"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport ContextActionUtils, {\n ContextAction,\n} from '../context-actions/ContextActionUtils';\nimport ContextMenuItem from '../context-actions/ContextMenuItem';\n\nexport type MenuOptions = {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n};\n\ntype MenuProps = {\n actions: ContextAction | ContextAction[];\n closeMenu(closeAll: boolean): void;\n onMenuClosed(menu: Menu): void;\n onMenuOpened(menu: Menu): void;\n options: MenuOptions;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\ntype MenuState = {\n menuItems: ContextAction[];\n keyboardIndex: number;\n mouseIndex: number;\n};\n\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent<MenuProps, MenuState> {\n static defaultProps = {\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: MenuProps) {\n super(props);\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n\n const { options } = props;\n const keyboardIndex = options.initialKeyboardIndex ?? -1;\n\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.rAF = window.requestAnimationFrame(() => {\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n this.container.current?.focus();\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(prevProps: MenuProps): void {\n const { actions } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n\n componentWillUnmount(): void {\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n rAF: number;\n\n getKeyboardIndex(): number | null {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (options.separateKeyboardMouse) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n\n this.setState({\n menuItems: [],\n });\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions, false);\n\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(menuItems)\n ),\n }));\n }\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (\n e.key === 'ArrowUp' ||\n (e.key === 'Tab' && e.shiftKey === true)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n -1,\n menuItems\n );\n } else if (\n e.key === 'ArrowDown' ||\n (e.key === 'Tab' && e.shiftKey === false)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n 1,\n menuItems\n );\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n if (menuItem != null && !menuItem.disabled && menuItem.action != null) {\n menuItem.action();\n this.closeMenu(true);\n }\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { 'data-testid': dataTestId } = this.props;\n const { keyboardIndex, menuItems, mouseIndex } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={() => false}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n const { menuStyle } = this.props;\n\n return (\n <div\n className=\"context-menu-container\"\n style={{ ...menuStyle }}\n ref={this.container}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n </div>\n );\n }\n}\n\nexport default Menu;\n"],"file":"Menu.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/menu-actions/index.ts"],"names":["default"],"mappings":"AAAA;SACSA,O","sourcesContent":["// Note this exports as the default for this module\nexport { default } from './DropdownMenu';\nexport * from './DropdownMenu';\n"],"file":"index.js"}
|
package/dist/modal/Modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/modal/Modal.tsx"],"names":["classNames","React","useCallback","useEffect","useRef","ReactDOM","CSSTransition","ThemeExport","Modal","className","children","role","keyboard","isOpen","centered","size","onOpened","onClosed","toggle","dataTestId","element","handleKeyDown","event","key","addKeydownEventListener","window","addEventListener","removeEventListener","open","closed","current","document","createElement","setAttribute","body","appendChild","onExited","removeChild","undefined","createPortal","appearActive","appearDone","transitionMs","zIndex","display","e","stopPropagation"],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, {\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport ThemeExport from '../ThemeExport';\n\ninterface ModalProps {\n className?: string;\n children?: ReactNode;\n role?: string;\n keyboard?: boolean;\n isOpen?: boolean;\n centered?: boolean;\n size?: 'sm' | 'lg' | 'xl' | undefined;\n onOpened?: () => void;\n onClosed?: () => void;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nconst Modal = ({\n className = 'theme-bg-light',\n children,\n role = 'role',\n keyboard = true,\n isOpen = false,\n centered = false,\n size,\n onOpened,\n onClosed,\n toggle,\n 'data-testid': dataTestId,\n}: ModalProps): ReactElement => {\n const element = useRef<HTMLElement>();\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Escape':\n toggle?.();\n break;\n default:\n break;\n }\n },\n [toggle]\n );\n\n useEffect(\n function addKeydownEventListener() {\n if (isOpen && keyboard) {\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }\n },\n [handleKeyDown, isOpen, keyboard]\n );\n\n useEffect(\n function open() {\n if (isOpen && onOpened) {\n onOpened();\n }\n },\n [onOpened, isOpen]\n );\n\n useEffect(\n function closed() {\n if (!isOpen && onClosed) {\n onClosed();\n }\n },\n [onClosed, isOpen]\n );\n\n if (isOpen && !element.current) {\n element.current = document.createElement('div');\n element.current.setAttribute(\n 'style',\n 'padding-right: 15px; display: block'\n );\n element.current.setAttribute('role', 'presentation');\n document.body.appendChild(element.current);\n }\n\n const onExited = () => {\n if (element.current) {\n document.body.removeChild(element.current);\n element.current = undefined;\n }\n };\n\n return element.current ? (\n ReactDOM.createPortal(\n <>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearActive: 'show',\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className={classNames('modal-backdrop fade')}\n style={{ zIndex: 1050 }}\n />\n </CSSTransition>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className=\"modal fade\"\n onClick={toggle}\n role=\"dialog\"\n style={{ display: 'block' }}\n >\n <div\n className={classNames(`modal-dialog ${className}`, {\n 'modal-lg': size === 'lg',\n 'modal-sm': size === 'sm',\n 'modal-xl': size === 'xl',\n 'modal-dialog-centered': centered,\n })}\n style={{ zIndex: 1040 }}\n >\n <div\n className=\"modal-content\"\n onClick={e => e.stopPropagation()}\n role=\"presentation\"\n data-testid={dataTestId}\n >\n {children}\n </div>\n </div>\n </div>\n </CSSTransition>\n </>,\n element.current\n )\n ) : (\n <></>\n );\n};\n\nexport default Modal;\n"],"file":"Modal.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/modal/ModalBody.tsx"],"names":["React","ModalBody","className","style","children","dataTestId"],"mappings":"AAAA,OAAOA,KAAP,MAA8D,OAA9D;;AASA,IAAMC,SAAS,GAAG;AAAA,MAAC;AACjBC,IAAAA,SAAS,GAAG,YADK;AAEjBC,IAAAA,KAFiB;AAGjBC,IAAAA,QAHiB;AAIjB,mBAAeC;AAJE,GAAD;AAAA,sBAMhB;AAAK,IAAA,SAAS,EAAEH,SAAhB;AAA2B,mBAAaG,UAAxC;AAAoD,IAAA,KAAK,EAAEF;AAA3D,KACGC,QADH,CANgB;AAAA,CAAlB;;AAWA,eAAeH,SAAf","sourcesContent":["import React, { CSSProperties, ReactElement, ReactNode } from 'react';\n\ninterface ModalBodyProps {\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nconst ModalBody = ({\n className = 'modal-body',\n style,\n children,\n 'data-testid': dataTestId,\n}: ModalBodyProps): ReactElement => (\n <div className={className} data-testid={dataTestId} style={style}>\n {children}\n </div>\n);\n\nexport default ModalBody;\n"],"file":"ModalBody.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/modal/ModalFooter.tsx"],"names":["React","ModalFooter","className","children","dataTestId"],"mappings":"AAAA,OAAOA,KAAP,MAA+C,OAA/C;;AAQA,IAAMC,WAAW,GAAG;AAAA,MAAC;AACnBC,IAAAA,SAAS,GAAG,cADO;AAEnBC,IAAAA,QAFmB;AAGnB,mBAAeC;AAHI,GAAD;AAAA,sBAKlB;AAAK,IAAA,SAAS,EAAEF,SAAhB;AAA2B,mBAAaE;AAAxC,KACGD,QADH,CALkB;AAAA,CAApB;;AAUA,eAAeF,WAAf","sourcesContent":["import React, { ReactElement, ReactNode } from 'react';\n\ninterface ModalFooterProps {\n className?: string;\n children?: ReactNode;\n 'data-testid'?: string;\n}\n\nconst ModalFooter = ({\n className = 'modal-footer',\n children,\n 'data-testid': dataTestId,\n}: ModalFooterProps): ReactElement => (\n <div className={className} data-testid={dataTestId}>\n {children}\n </div>\n);\n\nexport default ModalFooter;\n"],"file":"ModalFooter.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/modal/ModalHeader.tsx"],"names":["React","ModalHeader","className","children","closeButton","style","toggle","dataTestId"],"mappings":"AAAA,OAAOA,KAAP,MAA8D,OAA9D;;AAWA,IAAMC,WAAW,GAAG;AAAA,MAAC;AACnBC,IAAAA,SADmB;AAEnBC,IAAAA,QAFmB;AAGnBC,IAAAA,WAAW,GAAG,IAHK;AAInBC,IAAAA,KAJmB;AAKnBC,IAAAA,MALmB;AAMnB,mBAAeC;AANI,GAAD;AAAA,sBAQlB;AAAK,IAAA,SAAS,yBAAkBL,SAAlB,CAAd;AAA6C,IAAA,KAAK,EAAEG;AAApD,kBACE;AAAI,IAAA,SAAS,EAAC;AAAd,KAA6BF,QAA7B,CADF,EAEGC,WAAW,iBACV;AACE,IAAA,IAAI,EAAC,QADP;AAEE,IAAA,SAAS,EAAC,OAFZ;AAGE,oBAAa,OAHf;AAIE,kBAAW,OAJb;AAKE,IAAA,OAAO,EAAEE;AALX,kBAOE;AAAM,mBAAY;AAAlB,YAPF,CAHJ,CARkB;AAAA,CAApB;;AAwBA,eAAeL,WAAf","sourcesContent":["import React, { CSSProperties, ReactElement, ReactNode } from 'react';\n\ninterface ModalHeaderProps {\n className?: string;\n children?: ReactNode;\n closeButton?: boolean;\n style?: CSSProperties;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nconst ModalHeader = ({\n className,\n children,\n closeButton = true,\n style,\n toggle,\n 'data-testid': dataTestId,\n}: ModalHeaderProps): ReactElement => (\n <div className={`modal-header ${className}`} style={style}>\n <h5 className=\"modal-title\">{children}</h5>\n {closeButton && (\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n onClick={toggle}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n )}\n </div>\n);\n\nexport default ModalHeader;\n"],"file":"ModalHeader.js"}
|
package/dist/modal/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/modal/index.ts"],"names":["default","Modal","ModalBody","ModalHeader","ModalFooter"],"mappings":"SAASA,OAAO,IAAIC,K;SACXD,OAAO,IAAIE,S;SACXF,OAAO,IAAIG,W;SACXH,OAAO,IAAII,W","sourcesContent":["export { default as Modal } from './Modal';\nexport { default as ModalBody } from './ModalBody';\nexport { default as ModalHeader } from './ModalHeader';\nexport { default as ModalFooter } from './ModalFooter';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Menu.tsx"],"names":["React","MenuItem","Menu","items","onSelect","undefined","dataTestId","map","item","itemIndex","title"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;OACOC,Q;;AAWP,OAAO,IAAMC,IAAI,GAAG;AAAA,MAAC;AACnBC,IAAAA,KADmB;AAEnBC,IAAAA,QAAQ,EAARA,SAAQ,GAAG,MAAMC,SAFE;AAGnB,mBAAeC;AAHI,GAAD;AAAA,sBAKlB;AAAK,IAAA,SAAS,EAAC,sBAAf;AAAsC,mBAAaA;AAAnD,kBACE;AAAI,IAAA,SAAS,EAAC;AAAd,KACGH,KAAK,CAACI,GAAN,CAAU,CAACC,IAAD,EAAOC,SAAP,kBACT;AAAI,IAAA,GAAG,EAAED,IAAI,CAACE;AAAd,kBACE,oBAAC,QAAD;AACE,IAAA,IAAI,EAAEF,IADR;AAEE,IAAA,QAAQ,EAAE,MAAM;AACdJ,MAAAA,SAAQ,CAACK,SAAD,CAAR;AACD;AAJH,IADF,CADD,CADH,CADF,CALkB;AAAA,CAAb;AAqBP,eAAeP,IAAf","sourcesContent":["import React from 'react';\nimport MenuItem, { MenuItemDef } from './MenuItem';\nimport './Menu.scss';\n\nexport type MenuSelectCallback = (itemIndex: number) => void;\n\nexport type MenuProps = {\n items: MenuItemDef[];\n onSelect?: MenuSelectCallback;\n 'data-testid'?: string;\n};\n\nexport const Menu = ({\n items,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuProps): JSX.Element => (\n <div className=\"navigation-menu-view\" data-testid={dataTestId}>\n <ul className=\"navigation-menu-list\">\n {items.map((item, itemIndex) => (\n <li key={item.title}>\n <MenuItem\n item={item}\n onSelect={() => {\n onSelect(itemIndex);\n }}\n />\n </li>\n ))}\n </ul>\n </div>\n);\n\nexport default Menu;\n"],"file":"Menu.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/MenuItem.tsx"],"names":["React","useMemo","FontAwesomeIcon","vsChevronRight","UISwitch","isSwitchMenuItemType","item","isOn","undefined","MenuItem","onSelect","dataTestId","icon","subtitle","title","handleSelect","onChange","event","key","stopPropagation"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,QAA+B,kBAA/B;;OAGOC,Q;;AAaP,SAASC,oBAAT,CAA8BC,IAA9B,EAA4E;AAC1E,SAAQA,IAAD,CAA4BC,IAA5B,KAAqCC,SAA5C;AACD;;AAQD;AACA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,QAIU;AAAA,MAJT;AACvBH,IAAAA,IADuB;AAEvBI,IAAAA,QAAQ,GAAG,MAAMF,SAFM;AAGvB,mBAAeG;AAHQ,GAIS;AAChC,MAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,MAA4BR,IAAlC;AACA,MAAMS,YAAY,GAAGd,OAAO,CAAC,MAAM;AACjC,QAAII,oBAAoB,CAACC,IAAD,CAAxB,EAAgC;AAC9B,aAAO,MAAM;AACXA,QAAAA,IAAI,CAACU,QAAL,CAAc,CAACV,IAAI,CAACC,IAApB;AACD,OAFD;AAGD;;AACD,WAAOG,QAAP;AACD,GAP2B,EAOzB,CAACJ,IAAD,EAAOI,QAAP,CAPyB,CAA5B;AAQA,sBACE;AACE,IAAA,SAAS,EAAC,8BADZ;AAEE,uCAA0BI,KAA1B,CAFF;AAGE,IAAA,OAAO,EAAEC,YAHX;AAIE,IAAA,SAAS,EAAEE,KAAK,IAAI;AAClB,UAAIA,KAAK,CAACC,GAAN,KAAc,OAAd,IAAyBD,KAAK,CAACC,GAAN,KAAc,GAA3C,EAAgD;AAC9CH,QAAAA,YAAY;AACb;AACF,KARH;AASE,IAAA,QAAQ,EAAE,CATZ;AAUE,IAAA,IAAI,EAAC;AAVP,KAYGH,IAAI,iBACH;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEA;AAAvB,IADF,CAbJ,eAiBE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAwBE,KAAxB,CAjBF,EAkBGD,QAAQ,iBAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAA2BA,QAA3B,CAlBf,eAmBE;AAAK,IAAA,SAAS,EAAC,WAAf;AAA2B,mBAAaF;AAAxC,KACIN,oBAAoB,CAACC,IAAD,CAApB,iBACA,oBAAC,QAAD;AACE,IAAA,EAAE,EAAEA,IAAI,CAACC,IADX;AAEE,IAAA,OAAO,EAAEU,KAAK,IAAI;AAChBA,MAAAA,KAAK,CAACE,eAAN;AACAJ,MAAAA,YAAY;AACb;AALH,IADD,iBAQK,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEZ;AAAvB,IATR,CAnBF,CADF;AAiCD,CA/CM;AAiDP,eAAeM,QAAf","sourcesContent":["import React, { useMemo } from 'react';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport './MenuItem.scss';\n\nimport UISwitch from '../UISwitch';\n\nexport type MenuItemDef = {\n title: string;\n subtitle?: string;\n icon?: IconProp;\n};\n\nexport type SwitchMenuItemDef = MenuItemDef & {\n isOn: boolean;\n onChange: (isOn: boolean) => void;\n};\n\nfunction isSwitchMenuItemType(item: MenuItemDef): item is SwitchMenuItemDef {\n return (item as SwitchMenuItemDef).isOn !== undefined;\n}\n\nexport type MenuItemProps = {\n item: MenuItemDef;\n onSelect?: () => void;\n 'data-testid'?: string;\n};\n\n/**\n * @param props.item The menu item to set. Set a SwitchMenuItemDef to show a switch.\n * @param props.onSelect Called when the menu item is selected\n */\nexport const MenuItem = ({\n item,\n onSelect = () => undefined,\n 'data-testid': dataTestId,\n}: MenuItemProps): JSX.Element => {\n const { icon, subtitle, title } = item;\n const handleSelect = useMemo(() => {\n if (isSwitchMenuItemType(item)) {\n return () => {\n item.onChange(!item.isOn);\n };\n }\n return onSelect;\n }, [item, onSelect]);\n return (\n <div\n className=\"btn btn-navigation-menu-item\"\n data-testid={`menu-item-${title}`}\n onClick={handleSelect}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelect();\n }\n }}\n tabIndex={0}\n role=\"menuitem\"\n >\n {icon && (\n <div className=\"icon\">\n <FontAwesomeIcon icon={icon} />\n </div>\n )}\n <div className=\"title\">{title}</div>\n {subtitle && <div className=\"shortcut\">{subtitle}</div>}\n <div className=\"accessory\" data-testid={dataTestId}>\n {(isSwitchMenuItemType(item) && (\n <UISwitch\n on={item.isOn}\n onClick={event => {\n event.stopPropagation();\n handleSelect();\n }}\n />\n )) || <FontAwesomeIcon icon={vsChevronRight} />}\n </div>\n </div>\n );\n};\n\nexport default MenuItem;\n"],"file":"MenuItem.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Page.tsx"],"names":["React","FontAwesomeIcon","vsClose","vsChevronLeft","Page","children","onBack","onClose","title","dataTestId","undefined"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,OAAT,EAAkBC,aAAlB,QAAuC,kBAAvC;;;AAWA;AACA;AACA;AACA;AACA,OAAO,IAAMC,IAAI,GAAG;AAAA,MAAC;AACnBC,IAAAA,QADmB;AAEnBC,IAAAA,MAFmB;AAGnBC,IAAAA,OAHmB;AAInBC,IAAAA,KAJmB;AAKnB,mBAAeC;AALI,GAAD;AAAA,sBAOlB;AAAK,IAAA,SAAS,EAAC,iBAAf;AAAiC,mBAAaA;AAA9C,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,MAAM,KAAKI,SAAX,iBACC;AACE,IAAA,SAAS,EAAC,uBADZ;AAEE,mBAAY,eAFd;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,IAAA,OAAO,EAAEJ;AAJX,kBAME,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEH;AAAvB,IANF,SAFJ,CADF,eAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCK,KAAnC,CAdF,eAeE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGD,OAAO,KAAKG,SAAZ,iBACC;AACE,IAAA,SAAS,EAAC,+CADZ;AAEE,mBAAY,gBAFd;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,IAAA,OAAO,EAAEH;AAJX,kBAME,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAEL;AAAvB,IANF,CAFJ,CAfF,CADF,eA6BE;AAAK,IAAA,SAAS,EAAC;AAAf,KAAqCG,QAArC,CA7BF,CAPkB;AAAA,CAAb;AAwCP,eAAeD,IAAf","sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsChevronLeft } from '@deephaven/icons';\nimport './Page.scss';\n\nexport type PageProps = {\n children: React.ReactNode;\n onBack?: () => void;\n onClose?: () => void;\n title: string;\n 'data-testid'?: string;\n};\n\n/**\n * A page view with a back button in the bottom left, a title at the top, and a close button in the top right.\n * Back and close buttons will only appear if `onBack` and/or `onClose` callbacks are set.\n */\nexport const Page = ({\n children,\n onBack,\n onClose,\n title,\n 'data-testid': dataTestId,\n}: PageProps): JSX.Element => (\n <div className=\"navigation-page\" data-testid={dataTestId}>\n <div className=\"navigation-title-bar\">\n <div className=\"navigation-left-buttons\">\n {onBack !== undefined && (\n <button\n className=\"btn btn-link btn-back\"\n data-testid=\"btn-page-back\"\n type=\"button\"\n onClick={onBack}\n >\n <FontAwesomeIcon icon={vsChevronLeft} />\n Back\n </button>\n )}\n </div>\n <div className=\"navigation-title\">{title}</div>\n <div className=\"navigation-right-buttons\">\n {onClose !== undefined && (\n <button\n className=\"btn btn-link btn-link-icon btn-close px-2 m-1\"\n data-testid=\"btn-page-close\"\n type=\"button\"\n onClick={onClose}\n >\n <FontAwesomeIcon icon={vsClose} />\n </button>\n )}\n </div>\n </div>\n <div className=\"navigation-content\">{children}</div>\n </div>\n);\n\nexport default Page;\n"],"file":"Page.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/Stack.tsx"],"names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","dataTestId","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","initAnimation","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport ThemeExport from '../ThemeExport';\nimport './Stack.scss';\n\nexport type StackProps = {\n children: React.ReactNode | React.ReactNode[];\n 'data-testid'?: string;\n};\n\n/**\n * Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.\n * Adding items to the stack will do a \"push\" animation, and removing items from the stack will do a \"pop\" animation.\n */\nexport const Stack = ({\n children,\n 'data-testid': dataTestId,\n}: StackProps): JSX.Element => {\n const childrenArray = useMemo(() => React.Children.toArray(children), [\n children,\n ]);\n const prevChildrenArray = usePrevious(childrenArray);\n const [mainView, setMainView] = useState<React.ReactNode>(\n childrenArray[childrenArray.length - 1]\n );\n\n const [pushingView, setPushingView] = useState<React.ReactNode>(null);\n const [poppingView, setPoppingView] = useState<React.ReactNode>(null);\n\n /**\n * To do the animation effect, we just need to set the proper pushing/popping views when the stack changes.\n * `mainView` - The main view of the stack, stationary, filling the container.\n * `pushingView` - A view that's currently being pushed. Slides from off screen right to overtop of `mainView`.\n * `poppingView` - A view that's currently being popped. Slides from overtop of `mainView` to right off screen.\n *\n * When the `pushingView` or `poppingView` is set, that will kick off their animation.\n * Completion of the animation is handled in `pushComplete` or `popComplete`, and then the stack is in an idle state again.\n */\n useEffect(\n function initAnimation() {\n if (\n prevChildrenArray === undefined ||\n childrenArray === prevChildrenArray\n ) {\n return;\n }\n const topChild = childrenArray[childrenArray.length - 1];\n if (\n childrenArray.length === prevChildrenArray.length ||\n prevChildrenArray.length === 0 ||\n pushingView !== null ||\n poppingView !== null\n ) {\n // 1) Stack is the same size, we've just mounted, or we're already in an animation - just update the view\n if (pushingView !== null && topChild !== pushingView) {\n // Stack was updated mid animation\n setPushingView(topChild);\n } else if (topChild !== poppingView && topChild !== mainView) {\n // Replace the current view\n setMainView(topChild);\n }\n } else if (childrenArray.length > prevChildrenArray.length) {\n // 2) Stack has grown - start the push animation\n setPushingView(topChild);\n } else if (childrenArray.length < prevChildrenArray.length) {\n // 3) Stack has shrunk - start the pop animation\n setMainView(topChild);\n setPoppingView(prevChildrenArray[prevChildrenArray.length - 1]);\n }\n },\n [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]\n );\n\n const pushComplete = useCallback(() => {\n setMainView(pushingView);\n setPushingView(null);\n }, [pushingView]);\n\n const popComplete = useCallback(() => {\n setPoppingView(null);\n }, []);\n\n return (\n <div className=\"navigation-stack\">\n <div className=\"main-view\" data-testid={dataTestId}>\n {mainView}\n </div>\n\n <CSSTransition\n in={poppingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-right\"\n onEntered={popComplete}\n >\n <>{poppingView && <div className=\"popping-view\">{poppingView}</div>}</>\n </CSSTransition>\n <CSSTransition\n in={pushingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntered={pushComplete}\n >\n <>{pushingView && <div className=\"pushing-view\">{pushingView}</div>}</>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Stack;\n"],"file":"Stack.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/navigation/index.ts"],"names":["default","Menu","MenuItem","Page","Stack"],"mappings":"SAASA,OAAO,IAAIC,I;SAEXD,OAAO,IAAIE,Q;SAEXF,OAAO,IAAIG,I;SAEXH,OAAO,IAAII,K","sourcesContent":["export { default as Menu } from './Menu';\nexport type { MenuProps } from './Menu';\nexport { default as MenuItem } from './MenuItem';\nexport type { SwitchMenuItemDef, MenuItemDef, MenuItemProps } from './MenuItem';\nexport { default as Page } from './Page';\nexport type { PageProps } from './Page';\nexport { default as Stack } from './Stack';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","Popper","constructor","props","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","placement","body","appendChild","parent","scheduleUpdate","contains","activeElement","elem","firstElementChild","HTMLElement","focus","setState","updateState","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","stopPropagation","key","undefined","render","dataTestId","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // for blur on close to work, focus needs to be on or within the popper\n if (closeOnBlur && !this.element.contains(document.activeElement)) {\n // only set focus, if a focus isn't already set within\n const elem = this.element.firstElementChild;\n if (elem instanceof HTMLElement) {\n elem.focus(); // first child of the portal element\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur,\n } = this.props;\n const { show } = this.state;\n\n return (\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames('popper', { interactive }, className)}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/popper/Popper.tsx"],"names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","Popper","constructor","props","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","placement","body","appendChild","parent","scheduleUpdate","contains","activeElement","elem","firstElementChild","HTMLElement","focus","setState","updateState","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","stopPropagation","key","undefined","render","dataTestId","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"mappings":"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","sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // for blur on close to work, focus needs to be on or within the popper\n if (closeOnBlur && !this.element.contains(document.activeElement)) {\n // only set focus, if a focus isn't already set within\n const elem = this.element.firstElementChild;\n if (elem instanceof HTMLElement) {\n elem.focus(); // first child of the portal element\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur,\n } = this.props;\n const { show } = this.state;\n\n return (\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames('popper', { interactive }, className)}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"file":"Popper.js"}
|
package/dist/popper/Tooltip.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ declare type TooltipProps = typeof Tooltip.defaultProps & {
|
|
|
8
8
|
reshowTimeout?: number;
|
|
9
9
|
timeout?: number;
|
|
10
10
|
referenceObject?: ReferenceObject | null;
|
|
11
|
+
onEntered?: () => void;
|
|
11
12
|
onExited?: () => void;
|
|
12
13
|
'data-testid'?: string;
|
|
13
14
|
};
|
|
@@ -38,6 +39,7 @@ declare class Tooltip extends Component<TooltipProps, TooltipState> {
|
|
|
38
39
|
popperClassName: string;
|
|
39
40
|
reshowTimeout: number;
|
|
40
41
|
timeout: number;
|
|
42
|
+
onEntered: () => void;
|
|
41
43
|
onExited: () => void;
|
|
42
44
|
'data-testid': undefined;
|
|
43
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/popper/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIlE,aAAK,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG;IAChD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,cAAM,OAAQ,SAAQ,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,MAAM,CAAC,cAAc,SAAO;IAE5B,MAAM,CAAC,oBAAoB,SAAO;IAElC,MAAM,CAAC,sBAAsB,SAAO;IAEpC,MAAM,CAAC,iBAAiB,SAAK;IAE7B,MAAM,CAAC,cAAc,SAAc;IAEnC,MAAM,CAAC,YAAY;;;;;;
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/popper/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIlE,aAAK,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG;IAChD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,cAAM,OAAQ,SAAQ,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,MAAM,CAAC,cAAc,SAAO;IAE5B,MAAM,CAAC,oBAAoB,SAAO;IAElC,MAAM,CAAC,sBAAsB,SAAO;IAEpC,MAAM,CAAC,iBAAiB,SAAK;IAE7B,MAAM,CAAC,cAAc,SAAc;IAEnC,MAAM,CAAC,YAAY;;;;;;yBAMF,IAAI;wBACL,IAAI;;MAElB;IAEF,MAAM,CAAC,YAAY,IAAI,IAAI;IAQ3B,MAAM,CAAC,WAAW,IAAI,IAAI;gBAId,KAAK,EAAE,YAAY;IAqB/B,iBAAiB,IAAI,IAAI;IASzB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAa1E,oBAAoB,IAAI,IAAI;IAY5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAI3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,cAAc,IAAI,IAAI;IAYtB,aAAa,IAAI,IAAI;IAUrB,oBAAoB,IAAI,IAAI;IAM5B,mBAAmB,IAAI,IAAI;IAM3B,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAanB,gBAAgB,IAAI,IAAI;IAUxB,aAAa,IAAI,IAAI;IAIrB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IA+B9C,UAAU,IAAI,IAAI;IAclB,SAAS,IAAI,IAAI;IAOjB,IAAI,IAAI,IAAI;IAeZ,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;IAId,YAAY,IAAI,IAAI;IAMpB,kBAAkB,IAAI,IAAI;IAQ1B,MAAM,IAAI,GAAG,CAAC,OAAO;CA+BtB;AAED,eAAe,OAAO,CAAC"}
|