@elliemae/ds-shared 1.61.12 → 1.61.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/cjs/Animations/BaseAnimation.js.map +1 -1
  2. package/cjs/Animations/Grow.js.map +1 -1
  3. package/cjs/Animations/GrowRight.js.map +1 -1
  4. package/cjs/CheckableGroup.js.map +1 -1
  5. package/cjs/DeferRenderAfterComputation.js.map +1 -1
  6. package/cjs/FocusGroup/FocusGrid.js.map +1 -1
  7. package/cjs/FocusGroup/FocusGroup.js.map +1 -1
  8. package/cjs/FocusGroup/FocusGroupManager.js.map +1 -1
  9. package/cjs/FocusGroup/focusGroupManagerHoc.js.map +1 -1
  10. package/cjs/FocusGroup/useFocusGroupItem.js.map +1 -1
  11. package/cjs/FocusGroup/utils/getNextCellPosition.js.map +1 -1
  12. package/cjs/GroupContext/Group.js.map +1 -1
  13. package/cjs/GroupContext/GroupItem.js.map +1 -1
  14. package/cjs/ScrollSync/ScrollSync.js.map +1 -1
  15. package/cjs/ScrollSync/ScrollSyncPane.js.map +1 -1
  16. package/cjs/ScrollSync/ScrollSyncProvider.js.map +1 -1
  17. package/cjs/ScrollSync/useScrollSync.js.map +1 -1
  18. package/cjs/createDataInstance/createInstancePlugin.js.map +1 -1
  19. package/cjs/createDataInstance/createInstanceRef.js.map +1 -1
  20. package/cjs/createDataInstance/utils.js.map +1 -1
  21. package/cjs/defer-render-hoc/index.js.map +1 -1
  22. package/cjs/toolbar/ToolbarProvider.js.map +1 -1
  23. package/cjs/useDataGrid/VolatileRowsListener.js.map +1 -1
  24. package/cjs/useDataGrid/initColumnDefinition.js.map +1 -1
  25. package/cjs/useDataGrid/useDataGrid.js.map +1 -1
  26. package/cjs/useDataList/recordIterator.js.map +1 -1
  27. package/cjs/useDataList/useDataList.js.map +1 -1
  28. package/cjs/utils.js.map +1 -1
  29. package/cjs/virtualization/AutoHeightList.js.map +1 -1
  30. package/cjs/virtualization/FluidHeightList.js.map +1 -1
  31. package/cjs/virtualization/index.js.map +1 -1
  32. package/esm/Animations/BaseAnimation.js.map +1 -1
  33. package/esm/Animations/Grow.js.map +1 -1
  34. package/esm/Animations/GrowRight.js.map +1 -1
  35. package/esm/CheckableGroup.js.map +1 -1
  36. package/esm/DeferRenderAfterComputation.js.map +1 -1
  37. package/esm/FocusGroup/FocusGrid.js.map +1 -1
  38. package/esm/FocusGroup/FocusGroup.js.map +1 -1
  39. package/esm/FocusGroup/FocusGroupManager.js.map +1 -1
  40. package/esm/FocusGroup/focusGroupManagerHoc.js.map +1 -1
  41. package/esm/FocusGroup/useFocusGroupItem.js.map +1 -1
  42. package/esm/FocusGroup/utils/getNextCellPosition.js.map +1 -1
  43. package/esm/GroupContext/Group.js.map +1 -1
  44. package/esm/GroupContext/GroupItem.js.map +1 -1
  45. package/esm/ScrollSync/ScrollSync.js.map +1 -1
  46. package/esm/ScrollSync/ScrollSyncPane.js.map +1 -1
  47. package/esm/ScrollSync/ScrollSyncProvider.js.map +1 -1
  48. package/esm/ScrollSync/useScrollSync.js.map +1 -1
  49. package/esm/createDataInstance/createInstancePlugin.js.map +1 -1
  50. package/esm/createDataInstance/createInstanceRef.js.map +1 -1
  51. package/esm/createDataInstance/utils.js.map +1 -1
  52. package/esm/defer-render-hoc/index.js.map +1 -1
  53. package/esm/toolbar/ToolbarProvider.js.map +1 -1
  54. package/esm/useDataGrid/VolatileRowsListener.js.map +1 -1
  55. package/esm/useDataGrid/initColumnDefinition.js.map +1 -1
  56. package/esm/useDataGrid/useDataGrid.js.map +1 -1
  57. package/esm/useDataList/recordIterator.js.map +1 -1
  58. package/esm/useDataList/useDataList.js.map +1 -1
  59. package/esm/utils.js.map +1 -1
  60. package/esm/virtualization/AutoHeightList.js.map +1 -1
  61. package/esm/virtualization/FluidHeightList.js.map +1 -1
  62. package/esm/virtualization/index.js.map +1 -1
  63. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarProvider.js","sources":["../../../src/toolbar/ToolbarProvider.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState, useEffect } from 'react';\nimport DSPopover from '@elliemae/ds-popper';\nimport { useOnClickOutside } from '@elliemae/ds-utilities';\n\nexport const ToolbarContext = React.createContext();\n\nconst { Provider } = ToolbarContext;\n\nconst useScrollListener = (callback, dependencies) => {\n useEffect(() => {\n window.addEventListener('scroll', callback, true);\n return () => {\n window.removeEventListener('scroll', callback, true);\n };\n }, [dependencies]);\n};\n\nconst noop = () => null;\nfunction ToolbarProvider({ delay = 200, children, onHide = noop, onShow = noop }) {\n const showTimer = useRef();\n const hideTimer = useRef();\n const toolbarRef = useRef();\n const [tooltipState, setTooltipState] = useState({});\n\n const show = (state) => {\n if (state.reference === tooltipState.reference) clearTimeout(hideTimer.current);\n showTimer.current = setTimeout(\n () =>\n setTooltipState({\n ...state,\n visible: true,\n }),\n delay,\n );\n onShow();\n };\n\n const hide = (e, force) => {\n if (!force) clearTimeout(showTimer.current);\n hideTimer.current = setTimeout(\n () =>\n setTooltipState((prevState) => ({\n ...prevState,\n visible: false,\n })),\n 100,\n );\n onHide(tooltipState, e);\n };\n\n useScrollListener((e) => hide(e, true), tooltipState.visible);\n useOnClickOutside(toolbarRef, () => hide());\n\n const keyDownHandler = (e) => {\n if (e.key === 'Escape') {\n hide(e);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', keyDownHandler);\n return () => {\n window.removeEventListener('keydown', keyDownHandler);\n };\n });\n\n const value = useMemo(\n () => ({\n state: tooltipState,\n show,\n hide,\n }),\n [tooltipState.reference],\n );\n\n return (\n <Provider value={value}>\n {children}\n <DSPopover\n boundaries=\"scrollParent\"\n {...(tooltipState.options || {})}\n content={tooltipState.renderer}\n placement=\"left\"\n referenceEl={tooltipState.reference}\n renderer={({ as: Component, style, children: Content }) => (\n <div ref={toolbarRef} onMouseEnter={(e) => show(tooltipState, e)} onMouseLeave={hide}>\n <Component style={style}>{Content}</Component>\n </div>\n )}\n style={tooltipState.style}\n visible={tooltipState.visible}\n />\n </Provider>\n );\n}\n\nexport default React.memo(ToolbarProvider);\n"],"names":["ToolbarContext","React","createContext","Provider","useScrollListener","callback","dependencies","useEffect","window","addEventListener","removeEventListener","noop","ToolbarProvider","delay","children","onHide","onShow","showTimer","useRef","hideTimer","toolbarRef","useState","tooltipState","setTooltipState","show","state","reference","clearTimeout","current","setTimeout","visible","hide","e","force","prevState","useOnClickOutside","keyDownHandler","key","value","useMemo","DSPopover","options","renderer","Component","as","style","Content","memo"],"mappings":"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"}
1
+ {"version":3,"file":"ToolbarProvider.js","sources":["../../../src/toolbar/ToolbarProvider.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState, useEffect } from 'react';\nimport DSPopover from '@elliemae/ds-popper';\nimport { useOnClickOutside } from '@elliemae/ds-utilities';\n\nexport const ToolbarContext = React.createContext();\n\nconst { Provider } = ToolbarContext;\n\nconst useScrollListener = (callback, dependencies) => {\n useEffect(() => {\n window.addEventListener('scroll', callback, true);\n return () => {\n window.removeEventListener('scroll', callback, true);\n };\n }, [dependencies]);\n};\n\nconst noop = () => null;\nfunction ToolbarProvider({ delay = 200, children, onHide = noop, onShow = noop }) {\n const showTimer = useRef();\n const hideTimer = useRef();\n const toolbarRef = useRef();\n const [tooltipState, setTooltipState] = useState({});\n\n const show = (state) => {\n if (state.reference === tooltipState.reference) clearTimeout(hideTimer.current);\n showTimer.current = setTimeout(\n () =>\n setTooltipState({\n ...state,\n visible: true,\n }),\n delay,\n );\n onShow();\n };\n\n const hide = (e, force) => {\n if (!force) clearTimeout(showTimer.current);\n hideTimer.current = setTimeout(\n () =>\n setTooltipState((prevState) => ({\n ...prevState,\n visible: false,\n })),\n 100,\n );\n onHide(tooltipState, e);\n };\n\n useScrollListener((e) => hide(e, true), tooltipState.visible);\n useOnClickOutside(toolbarRef, () => hide());\n\n const keyDownHandler = (e) => {\n if (e.key === 'Escape') {\n hide(e);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', keyDownHandler);\n return () => {\n window.removeEventListener('keydown', keyDownHandler);\n };\n });\n\n const value = useMemo(\n () => ({\n state: tooltipState,\n show,\n hide,\n }),\n [tooltipState.reference],\n );\n\n return (\n <Provider value={value}>\n {children}\n <DSPopover\n boundaries=\"scrollParent\"\n {...(tooltipState.options || {})}\n content={tooltipState.renderer}\n placement=\"left\"\n referenceEl={tooltipState.reference}\n renderer={({ as: Component, style, children: Content }) => (\n <div ref={toolbarRef} onMouseEnter={(e) => show(tooltipState, e)} onMouseLeave={hide}>\n <Component style={style}>{Content}</Component>\n </div>\n )}\n style={tooltipState.style}\n visible={tooltipState.visible}\n />\n </Provider>\n );\n}\n\nexport default React.memo(ToolbarProvider);\n"],"names":["ToolbarContext","React","createContext","Provider","useScrollListener","callback","dependencies","useEffect","window","addEventListener","removeEventListener","noop","ToolbarProvider","delay","children","onHide","onShow","showTimer","useRef","hideTimer","toolbarRef","useState","tooltipState","setTooltipState","show","state","reference","clearTimeout","current","setTimeout","visible","hide","e","force","prevState","useOnClickOutside","keyDownHandler","key","value","useMemo","DSPopover","options","renderer","Component","as","style","Content","memo"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VolatileRowsListener.js","sources":["../../../src/useDataGrid/VolatileRowsListener.tsx"],"sourcesContent":["import { safeCall } from '@elliemae/ds-utilities';\n\nexport default class VolatileRowsListener {\n observers = [];\n\n observe(listener) {\n this.observers.push(listener);\n }\n\n notify(nextRows) {\n this.observers.forEach(observer => safeCall(observer, nextRows));\n this.observers = [];\n }\n}\n"],"names":["VolatileRowsListener","observers","listener","push","nextRows","forEach","observer","safeCall"],"mappings":";;;;;;;;;;;IAEqBA;;;;SACnBC,YAAY;;;;;WAEZ,iBAAQC,QAAR,EAAkB;AAChB,WAAKD,SAAL,CAAeE,IAAf,CAAoBD,QAApB;AACD;;;WAED,gBAAOE,QAAP,EAAiB;AACf,WAAKH,SAAL,CAAeI,OAAf,CAAuB,UAAAC,QAAQ;AAAA,eAAIC,oBAAQ,CAACD,QAAD,EAAWF,QAAX,CAAZ;AAAA,OAA/B;AACA,WAAKH,SAAL,GAAiB,EAAjB;AACD;;;;;;;;"}
1
+ {"version":3,"file":"VolatileRowsListener.js","sources":["../../../src/useDataGrid/VolatileRowsListener.tsx"],"sourcesContent":["import { safeCall } from '@elliemae/ds-utilities';\n\nexport default class VolatileRowsListener {\n observers = [];\n\n observe(listener) {\n this.observers.push(listener);\n }\n\n notify(nextRows) {\n this.observers.forEach(observer => safeCall(observer, nextRows));\n this.observers = [];\n }\n}\n"],"names":["VolatileRowsListener","observers","listener","push","nextRows","forEach","observer","safeCall"],"mappings":";;;;;;;;;;;IAEqBA;;;;SACnBC,YAAY;;;;;WAEZ,iBAAQC,QAAR,EAAkB;MAChB,KAAKD,SAAL,CAAeE,IAAf,CAAoBD,QAApB;;;;WAGF,gBAAOE,QAAP,EAAiB;MACf,KAAKH,SAAL,CAAeI,OAAf,CAAuB,UAAAC,QAAQ;QAAA,OAAIC,oBAAQ,CAACD,QAAD,EAAWF,QAAX,CAAZ;OAA/B;MACA,KAAKH,SAAL,GAAiB,EAAjB;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"initColumnDefinition.js","sources":["../../../src/useDataGrid/initColumnDefinition.tsx"],"sourcesContent":["/* eslint-disable max-lines */\n/* eslint-disable react/display-name */\nimport React from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n get,\n curry,\n set,\n cloneDeep,\n isFunction,\n} from '@elliemae/ds-utilities';\n\n// TODO: use lenses to access nested fields\n\nexport const appendHeaderFormatter = curry((formatter, column) => ({\n ...column,\n header: {\n ...column.header,\n formatters: [...get(column, 'header.formatters', []), formatter],\n },\n}));\n\nexport const appendCellFormatter = curry(\n (formatter, column, path = 'formatters') => {\n const nextColumn = cloneDeep(column);\n const formatters = get(nextColumn, ['cell', path], []);\n const scrollingFormatters = get(nextColumn, 'cell.scrollingFormatters', []);\n if (Array.isArray(formatter)) {\n if (formatter[1]) scrollingFormatters.push(formatter[1]);\n formatters.push(formatter[0]);\n } else {\n formatters.push(formatter);\n scrollingFormatters.push(formatter);\n }\n set(nextColumn, ['cell', path], formatters);\n set(nextColumn, 'cell.scrollingFormatters', scrollingFormatters);\n return nextColumn;\n },\n);\n\nconst defaultColumnDefinitionOptions = {\n normalize: false,\n useTextTruncation: true,\n isUserColumn: true,\n visible: true,\n};\n\nexport const mergeClassNameToColumnHeader = curry((className, column) => {\n const headerProps = get(column, ['header', 'props'], {});\n const headerClassName = headerProps.className || '';\n return {\n ...column,\n header: {\n ...column.header,\n props: {\n ...headerProps,\n className: `${headerClassName} ${className}`,\n },\n },\n };\n});\n\nexport default function initColumnDefinition(options = {}) {\n // eslint-disable-next-line complexity\n return (column) => {\n // todo: clean this\n if (column.type === 'number') {\n // eslint-disable-next-line no-param-reassign\n column.cellStyle = {\n textAlign: 'right',\n };\n }\n const { useTextTruncation = true, isUserColumn, visible, normalize } = {\n ...defaultColumnDefinitionOptions,\n ...options,\n };\n\n if (normalize) {\n // eslint-disable-next-line no-param-reassign\n column.originalProperty = column.property;\n // eslint-disable-next-line no-param-reassign\n column.property = column.property.replace(/\\s+/g, '');\n }\n\n // eslint-disable-next-line no-param-reassign\n column.props = {\n ...column.props,\n style: {},\n };\n // eslint-disable-next-line no-param-reassign\n column.header = {\n ...column.header,\n label: column.label,\n formatters: [...get(column, ['header', 'formatters'], [])],\n props: {\n style: column.headerStyle || {},\n },\n };\n if (\n useTextTruncation &&\n !(\n isFunction(column.customHeaderRenderer) ||\n column.header.formatters.length\n )\n ) {\n column.header.formatters.push((value) => (\n <span className=\"cell-value\">{value}</span>\n ));\n }\n\n // eslint-disable-next-line no-param-reassign\n column.cell = {\n ...column.cell,\n transforms: [],\n formatters: [...get(column, ['cell', 'formatters'], [])],\n scrollingFormatters: [...get(column, ['cell', 'formatters'], [])],\n props: {\n style: column.cellStyle || {},\n },\n };\n\n if (\n useTextTruncation &&\n !(isFunction(column.customRenderer) || column.cell.formatters.length)\n ) {\n column.cell.formatters.push((value) => (\n <span\n className=\"cell-value\"\n style={{\n justifyContent:\n column.type === 'number' ? 'flex-end' : 'flex-start',\n }}\n >\n {value}\n </span>\n ));\n }\n // eslint-disable-next-line no-param-reassign\n column.uuid = column.uuid || uuidv4();\n // eslint-disable-next-line no-param-reassign\n column.visible = column.visible === undefined ? visible : column.visible;\n // eslint-disable-next-line no-param-reassign, max-lines\n column.isUserColumn = column.isUserColumn || isUserColumn;\n // eslint-disable-next-line no-param-reassign\n column.headerHookEffects = [];\n return column;\n };\n}\n"],"names":["appendHeaderFormatter","curry","formatter","column","header","formatters","get","appendCellFormatter","path","nextColumn","cloneDeep","scrollingFormatters","Array","isArray","push","set","defaultColumnDefinitionOptions","normalize","useTextTruncation","isUserColumn","visible","mergeClassNameToColumnHeader","className","headerProps","headerClassName","props","initColumnDefinition","options","type","cellStyle","textAlign","originalProperty","property","replace","style","label","headerStyle","isFunction","customHeaderRenderer","length","value","React","cell","transforms","customRenderer","justifyContent","uuid","uuidv4","undefined","headerHookEffects"],"mappings":"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"}
1
+ {"version":3,"file":"initColumnDefinition.js","sources":["../../../src/useDataGrid/initColumnDefinition.tsx"],"sourcesContent":["/* eslint-disable max-lines */\n/* eslint-disable react/display-name */\nimport React from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n get,\n curry,\n set,\n cloneDeep,\n isFunction,\n} from '@elliemae/ds-utilities';\n\n// TODO: use lenses to access nested fields\n\nexport const appendHeaderFormatter = curry((formatter, column) => ({\n ...column,\n header: {\n ...column.header,\n formatters: [...get(column, 'header.formatters', []), formatter],\n },\n}));\n\nexport const appendCellFormatter = curry(\n (formatter, column, path = 'formatters') => {\n const nextColumn = cloneDeep(column);\n const formatters = get(nextColumn, ['cell', path], []);\n const scrollingFormatters = get(nextColumn, 'cell.scrollingFormatters', []);\n if (Array.isArray(formatter)) {\n if (formatter[1]) scrollingFormatters.push(formatter[1]);\n formatters.push(formatter[0]);\n } else {\n formatters.push(formatter);\n scrollingFormatters.push(formatter);\n }\n set(nextColumn, ['cell', path], formatters);\n set(nextColumn, 'cell.scrollingFormatters', scrollingFormatters);\n return nextColumn;\n },\n);\n\nconst defaultColumnDefinitionOptions = {\n normalize: false,\n useTextTruncation: true,\n isUserColumn: true,\n visible: true,\n};\n\nexport const mergeClassNameToColumnHeader = curry((className, column) => {\n const headerProps = get(column, ['header', 'props'], {});\n const headerClassName = headerProps.className || '';\n return {\n ...column,\n header: {\n ...column.header,\n props: {\n ...headerProps,\n className: `${headerClassName} ${className}`,\n },\n },\n };\n});\n\nexport default function initColumnDefinition(options = {}) {\n // eslint-disable-next-line complexity\n return (column) => {\n // todo: clean this\n if (column.type === 'number') {\n // eslint-disable-next-line no-param-reassign\n column.cellStyle = {\n textAlign: 'right',\n };\n }\n const { useTextTruncation = true, isUserColumn, visible, normalize } = {\n ...defaultColumnDefinitionOptions,\n ...options,\n };\n\n if (normalize) {\n // eslint-disable-next-line no-param-reassign\n column.originalProperty = column.property;\n // eslint-disable-next-line no-param-reassign\n column.property = column.property.replace(/\\s+/g, '');\n }\n\n // eslint-disable-next-line no-param-reassign\n column.props = {\n ...column.props,\n style: {},\n };\n // eslint-disable-next-line no-param-reassign\n column.header = {\n ...column.header,\n label: column.label,\n formatters: [...get(column, ['header', 'formatters'], [])],\n props: {\n style: column.headerStyle || {},\n },\n };\n if (\n useTextTruncation &&\n !(\n isFunction(column.customHeaderRenderer) ||\n column.header.formatters.length\n )\n ) {\n column.header.formatters.push((value) => (\n <span className=\"cell-value\">{value}</span>\n ));\n }\n\n // eslint-disable-next-line no-param-reassign\n column.cell = {\n ...column.cell,\n transforms: [],\n formatters: [...get(column, ['cell', 'formatters'], [])],\n scrollingFormatters: [...get(column, ['cell', 'formatters'], [])],\n props: {\n style: column.cellStyle || {},\n },\n };\n\n if (\n useTextTruncation &&\n !(isFunction(column.customRenderer) || column.cell.formatters.length)\n ) {\n column.cell.formatters.push((value) => (\n <span\n className=\"cell-value\"\n style={{\n justifyContent:\n column.type === 'number' ? 'flex-end' : 'flex-start',\n }}\n >\n {value}\n </span>\n ));\n }\n // eslint-disable-next-line no-param-reassign\n column.uuid = column.uuid || uuidv4();\n // eslint-disable-next-line no-param-reassign\n column.visible = column.visible === undefined ? visible : column.visible;\n // eslint-disable-next-line no-param-reassign, max-lines\n column.isUserColumn = column.isUserColumn || isUserColumn;\n // eslint-disable-next-line no-param-reassign\n column.headerHookEffects = [];\n return column;\n };\n}\n"],"names":["appendHeaderFormatter","curry","formatter","column","header","formatters","get","appendCellFormatter","path","nextColumn","cloneDeep","scrollingFormatters","Array","isArray","push","set","defaultColumnDefinitionOptions","normalize","useTextTruncation","isUserColumn","visible","mergeClassNameToColumnHeader","className","headerProps","headerClassName","props","initColumnDefinition","options","type","cellStyle","textAlign","originalProperty","property","replace","style","label","headerStyle","isFunction","customHeaderRenderer","length","value","React","cell","transforms","customRenderer","justifyContent","uuid","uuidv4","undefined","headerHookEffects"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDataGrid.js","sources":["../../../src/useDataGrid/useDataGrid.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport {\n cloneDeep,\n compose,\n isEqual,\n isObject,\n setRef, \n usePrevious, \n useDerivedStateFromProps \n} from '@elliemae/ds-utilities';\nimport { useMemo, useRef, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as resolve from 'table-resolver';\nimport initColumnDefinition from './initColumnDefinition';\nimport {\n applyDecorators,\n decorateColumns,\n reducePropsGetter,\n} from '../createDataInstance/utils';\nimport VolatileRowsListener from './VolatileRowsListener';\nimport { isInternetExplorer } from '../utils';\n\nconst IS_INTERNET_EXPLORER = isInternetExplorer();\n\n// TODO: Reuse createDataInstance for the grid the same\n// way as the list does ex: packages/ds-shared/src/useDataList/useDataList.js\n// eslint-disable-next-line max-statements\nexport default function useDataGrid({\n uuid: uuidProp,\n plugins: pluginsFromProps,\n rows,\n columns,\n renderers = {},\n ...props\n}) {\n const plugins = pluginsFromProps;\n const instance = useRef();\n const tableRef = useRef();\n const headerRef = useRef();\n const bodyRef = useRef();\n const bodyInnerRef = useRef();\n const [uuid] = useState(uuidProp || (() => uuidv4()));\n const [hasScroll, setHasScroll] = useState(false);\n const [isRowDragging, setIsRowDragging] = useState(false);\n const isScrolling = useRef();\n const shouldRefocus = useRef(); // todo: we probably need a plugin for focus related stuff\n const [RowsObserver] = useState(() => new VolatileRowsListener());\n\n // todo move this with rows composition\n const [originalRows, updateRows] = useDerivedStateFromProps(rows, {\n onUpdate: resolve.resolve({\n columns,\n method: (extra) =>\n compose(\n resolve.byFunction('valueTransformation')(extra),\n resolve.nested(extra),\n ),\n }),\n updateOnStateChange: true,\n });\n\n instance.current = {\n decoratedRenderers: cloneDeep(renderers),\n decoratedColumns: columns,\n columns,\n rows,\n composedRows: originalRows,\n getRowProps: [],\n getHeaderRowProps: [],\n getBodyProps: [],\n getTableProps: [],\n effects: [],\n uuid,\n props,\n refs: {\n table: tableRef,\n body: bodyRef,\n header: headerRef,\n innerBody: bodyInnerRef,\n },\n state: {\n hasScroll,\n },\n actions: {\n updateRows,\n },\n updateRows,\n // eslint-disable-next-line no-return-assign\n enableEvents: () =>\n (document.body.style.pointerEvents = IS_INTERNET_EXPLORER ? '' : null),\n // eslint-disable-next-line no-return-assign\n disableEvents: () => (document.body.style.pointerEvents = 'none'),\n observeRows: (observer) => RowsObserver.observe(observer),\n hotKeys: {},\n shouldRefocus,\n isScrolling,\n setHasScroll,\n setIsRowDragging,\n isRowDragging,\n plugins,\n };\n instance.current.getState = () => instance.current.state;\n instance.current.getInstance = () => instance.current;\n\n const defaultDecorators = {\n decorateGrid: [],\n registerStateHook: [],\n registerHotKeys: [],\n decorateColumn: [],\n decorateColumns: [\n (cols) =>\n cols.map((col) =>\n initColumnDefinition({\n useTextTruncation: col.useTextTruncation,\n wrapText: props.wrapText,\n normalize: props.normalizeDataKeys,\n })(col),\n ),\n ],\n decorateRenderers: [],\n getRowProps: [],\n getHeaderRowProps: [],\n getBodyProps: [],\n getTableProps: [],\n getHeaderProps: [],\n composeRows: [],\n };\n\n const decorators = useMemo(() => {\n let nextDecorators = defaultDecorators;\n // eslint-disable-next-line no-return-assign\n plugins.forEach((plugin) => (nextDecorators = plugin(nextDecorators)));\n return nextDecorators;\n }, [plugins]);\n\n instance.current = decorators.decorateGrid.reduce(\n (nextInstance, decorator) => ({\n ...nextInstance,\n ...decorator(instance.current),\n }),\n instance.current,\n );\n\n instance.current = decorators.registerStateHook.reduce(\n (nextInstance, decorator) => {\n const { state, actions } = decorator(instance.current);\n return {\n ...nextInstance,\n state: {\n ...nextInstance.state,\n ...state,\n },\n actions: {\n ...nextInstance.actions,\n ...actions,\n },\n };\n },\n instance.current,\n );\n\n const reduceHotKey = (nextInstance, { key, handler, options }) => ({\n ...nextInstance,\n hotKeys: {\n ...nextInstance.hotKeys,\n [key]: { handler, options },\n },\n });\n instance.current = decorators.registerHotKeys.reduce(\n (nextInstance, decorator) => {\n const hotKeys = decorator(nextInstance);\n if (Array.isArray(hotKeys)) {\n return hotKeys.reduce(reduceHotKey, nextInstance);\n }\n return reduceHotKey(nextInstance, hotKeys);\n },\n instance.current,\n );\n\n instance.current.decoratedRenderers = applyDecorators(\n instance.current.decoratedRenderers,\n decorators.decorateRenderers,\n instance.current,\n );\n\n instance.current.decoratedColumns = useMemo(() => {\n const visibleColumns = cloneDeep(columns).filter(\n (column) => typeof column.visible === 'undefined' || column.visible,\n );\n return visibleColumns.length\n ? decorateColumns(visibleColumns, decorators, instance.current)\n : [];\n }, [columns]);\n\n instance.current.getBodyProps = reducePropsGetter(\n decorators.getBodyProps,\n instance.current,\n );\n instance.current.getHeaderProps = reducePropsGetter(\n decorators.getHeaderProps,\n instance.current,\n );\n instance.current.getRowProps = reducePropsGetter(\n decorators.getRowProps,\n instance.current,\n );\n instance.current.getHeaderRowProps = reducePropsGetter(\n decorators.getHeaderRowProps,\n instance.current,\n );\n instance.current.getTableProps = reducePropsGetter(\n decorators.getTableProps,\n instance.current,\n );\n\n instance.current.composedRows = decorators.composeRows.reduce(\n (nextRows, getter) => getter(nextRows, instance.current),\n instance.current.composedRows,\n );\n\n RowsObserver.notify(instance.current.composedRows);\n\n const currentShouldRefocus = instance.current.shouldRefocus.current;\n const prevState = usePrevious(instance.current.state);\n if (isObject(currentShouldRefocus) && currentShouldRefocus.forced) {\n instance.current.shouldRefocus.current = currentShouldRefocus.value;\n } else {\n instance.current.shouldRefocus.current = !isEqual(\n prevState,\n instance.current.state,\n );\n }\n\n if (props.instanceRef) setRef(props.instanceRef, instance.current);\n\n return {\n ...instance.current,\n decorators,\n };\n}\n"],"names":["IS_INTERNET_EXPLORER","isInternetExplorer","useDataGrid","uuidProp","uuid","pluginsFromProps","plugins","rows","columns","renderers","props","instance","useRef","tableRef","headerRef","bodyRef","bodyInnerRef","useState","uuidv4","hasScroll","setHasScroll","isRowDragging","setIsRowDragging","isScrolling","shouldRefocus","VolatileRowsListener","RowsObserver","useDerivedStateFromProps","onUpdate","resolve","method","extra","compose","byFunction","nested","updateOnStateChange","originalRows","updateRows","current","decoratedRenderers","cloneDeep","decoratedColumns","composedRows","getRowProps","getHeaderRowProps","getBodyProps","getTableProps","effects","refs","table","body","header","innerBody","state","actions","enableEvents","document","style","pointerEvents","disableEvents","observeRows","observer","observe","hotKeys","getState","getInstance","defaultDecorators","decorateGrid","registerStateHook","registerHotKeys","decorateColumn","decorateColumns","cols","map","col","initColumnDefinition","useTextTruncation","wrapText","normalize","normalizeDataKeys","decorateRenderers","getHeaderProps","composeRows","decorators","useMemo","nextDecorators","forEach","plugin","reduce","nextInstance","decorator","reduceHotKey","key","handler","options","Array","isArray","applyDecorators","visibleColumns","filter","column","visible","length","reducePropsGetter","nextRows","getter","notify","currentShouldRefocus","prevState","usePrevious","isObject","forced","value","isEqual","instanceRef","setRef"],"mappings":"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"}
1
+ {"version":3,"file":"useDataGrid.js","sources":["../../../src/useDataGrid/useDataGrid.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport {\n cloneDeep,\n compose,\n isEqual,\n isObject,\n setRef, \n usePrevious, \n useDerivedStateFromProps \n} from '@elliemae/ds-utilities';\nimport { useMemo, useRef, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as resolve from 'table-resolver';\nimport initColumnDefinition from './initColumnDefinition';\nimport {\n applyDecorators,\n decorateColumns,\n reducePropsGetter,\n} from '../createDataInstance/utils';\nimport VolatileRowsListener from './VolatileRowsListener';\nimport { isInternetExplorer } from '../utils';\n\nconst IS_INTERNET_EXPLORER = isInternetExplorer();\n\n// TODO: Reuse createDataInstance for the grid the same\n// way as the list does ex: packages/ds-shared/src/useDataList/useDataList.js\n// eslint-disable-next-line max-statements\nexport default function useDataGrid({\n uuid: uuidProp,\n plugins: pluginsFromProps,\n rows,\n columns,\n renderers = {},\n ...props\n}) {\n const plugins = pluginsFromProps;\n const instance = useRef();\n const tableRef = useRef();\n const headerRef = useRef();\n const bodyRef = useRef();\n const bodyInnerRef = useRef();\n const [uuid] = useState(uuidProp || (() => uuidv4()));\n const [hasScroll, setHasScroll] = useState(false);\n const [isRowDragging, setIsRowDragging] = useState(false);\n const isScrolling = useRef();\n const shouldRefocus = useRef(); // todo: we probably need a plugin for focus related stuff\n const [RowsObserver] = useState(() => new VolatileRowsListener());\n\n // todo move this with rows composition\n const [originalRows, updateRows] = useDerivedStateFromProps(rows, {\n onUpdate: resolve.resolve({\n columns,\n method: (extra) =>\n compose(\n resolve.byFunction('valueTransformation')(extra),\n resolve.nested(extra),\n ),\n }),\n updateOnStateChange: true,\n });\n\n instance.current = {\n decoratedRenderers: cloneDeep(renderers),\n decoratedColumns: columns,\n columns,\n rows,\n composedRows: originalRows,\n getRowProps: [],\n getHeaderRowProps: [],\n getBodyProps: [],\n getTableProps: [],\n effects: [],\n uuid,\n props,\n refs: {\n table: tableRef,\n body: bodyRef,\n header: headerRef,\n innerBody: bodyInnerRef,\n },\n state: {\n hasScroll,\n },\n actions: {\n updateRows,\n },\n updateRows,\n // eslint-disable-next-line no-return-assign\n enableEvents: () =>\n (document.body.style.pointerEvents = IS_INTERNET_EXPLORER ? '' : null),\n // eslint-disable-next-line no-return-assign\n disableEvents: () => (document.body.style.pointerEvents = 'none'),\n observeRows: (observer) => RowsObserver.observe(observer),\n hotKeys: {},\n shouldRefocus,\n isScrolling,\n setHasScroll,\n setIsRowDragging,\n isRowDragging,\n plugins,\n };\n instance.current.getState = () => instance.current.state;\n instance.current.getInstance = () => instance.current;\n\n const defaultDecorators = {\n decorateGrid: [],\n registerStateHook: [],\n registerHotKeys: [],\n decorateColumn: [],\n decorateColumns: [\n (cols) =>\n cols.map((col) =>\n initColumnDefinition({\n useTextTruncation: col.useTextTruncation,\n wrapText: props.wrapText,\n normalize: props.normalizeDataKeys,\n })(col),\n ),\n ],\n decorateRenderers: [],\n getRowProps: [],\n getHeaderRowProps: [],\n getBodyProps: [],\n getTableProps: [],\n getHeaderProps: [],\n composeRows: [],\n };\n\n const decorators = useMemo(() => {\n let nextDecorators = defaultDecorators;\n // eslint-disable-next-line no-return-assign\n plugins.forEach((plugin) => (nextDecorators = plugin(nextDecorators)));\n return nextDecorators;\n }, [plugins]);\n\n instance.current = decorators.decorateGrid.reduce(\n (nextInstance, decorator) => ({\n ...nextInstance,\n ...decorator(instance.current),\n }),\n instance.current,\n );\n\n instance.current = decorators.registerStateHook.reduce(\n (nextInstance, decorator) => {\n const { state, actions } = decorator(instance.current);\n return {\n ...nextInstance,\n state: {\n ...nextInstance.state,\n ...state,\n },\n actions: {\n ...nextInstance.actions,\n ...actions,\n },\n };\n },\n instance.current,\n );\n\n const reduceHotKey = (nextInstance, { key, handler, options }) => ({\n ...nextInstance,\n hotKeys: {\n ...nextInstance.hotKeys,\n [key]: { handler, options },\n },\n });\n instance.current = decorators.registerHotKeys.reduce(\n (nextInstance, decorator) => {\n const hotKeys = decorator(nextInstance);\n if (Array.isArray(hotKeys)) {\n return hotKeys.reduce(reduceHotKey, nextInstance);\n }\n return reduceHotKey(nextInstance, hotKeys);\n },\n instance.current,\n );\n\n instance.current.decoratedRenderers = applyDecorators(\n instance.current.decoratedRenderers,\n decorators.decorateRenderers,\n instance.current,\n );\n\n instance.current.decoratedColumns = useMemo(() => {\n const visibleColumns = cloneDeep(columns).filter(\n (column) => typeof column.visible === 'undefined' || column.visible,\n );\n return visibleColumns.length\n ? decorateColumns(visibleColumns, decorators, instance.current)\n : [];\n }, [columns]);\n\n instance.current.getBodyProps = reducePropsGetter(\n decorators.getBodyProps,\n instance.current,\n );\n instance.current.getHeaderProps = reducePropsGetter(\n decorators.getHeaderProps,\n instance.current,\n );\n instance.current.getRowProps = reducePropsGetter(\n decorators.getRowProps,\n instance.current,\n );\n instance.current.getHeaderRowProps = reducePropsGetter(\n decorators.getHeaderRowProps,\n instance.current,\n );\n instance.current.getTableProps = reducePropsGetter(\n decorators.getTableProps,\n instance.current,\n );\n\n instance.current.composedRows = decorators.composeRows.reduce(\n (nextRows, getter) => getter(nextRows, instance.current),\n instance.current.composedRows,\n );\n\n RowsObserver.notify(instance.current.composedRows);\n\n const currentShouldRefocus = instance.current.shouldRefocus.current;\n const prevState = usePrevious(instance.current.state);\n if (isObject(currentShouldRefocus) && currentShouldRefocus.forced) {\n instance.current.shouldRefocus.current = currentShouldRefocus.value;\n } else {\n instance.current.shouldRefocus.current = !isEqual(\n prevState,\n instance.current.state,\n );\n }\n\n if (props.instanceRef) setRef(props.instanceRef, instance.current);\n\n return {\n ...instance.current,\n decorators,\n };\n}\n"],"names":["IS_INTERNET_EXPLORER","isInternetExplorer","useDataGrid","uuidProp","uuid","pluginsFromProps","plugins","rows","columns","renderers","props","instance","useRef","tableRef","headerRef","bodyRef","bodyInnerRef","useState","uuidv4","hasScroll","setHasScroll","isRowDragging","setIsRowDragging","isScrolling","shouldRefocus","VolatileRowsListener","RowsObserver","useDerivedStateFromProps","onUpdate","resolve","method","extra","compose","byFunction","nested","updateOnStateChange","originalRows","updateRows","current","decoratedRenderers","cloneDeep","decoratedColumns","composedRows","getRowProps","getHeaderRowProps","getBodyProps","getTableProps","effects","refs","table","body","header","innerBody","state","actions","enableEvents","document","style","pointerEvents","disableEvents","observeRows","observer","observe","hotKeys","getState","getInstance","defaultDecorators","decorateGrid","registerStateHook","registerHotKeys","decorateColumn","decorateColumns","cols","map","col","initColumnDefinition","useTextTruncation","wrapText","normalize","normalizeDataKeys","decorateRenderers","getHeaderProps","composeRows","decorators","useMemo","nextDecorators","forEach","plugin","reduce","nextInstance","decorator","reduceHotKey","key","handler","options","Array","isArray","applyDecorators","visibleColumns","filter","column","visible","length","reducePropsGetter","nextRows","getter","notify","currentShouldRefocus","prevState","usePrevious","isObject","forced","value","isEqual","instanceRef","setRef"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recordIterator.js","sources":["../../../src/useDataList/recordIterator.tsx"],"sourcesContent":["const defaultStrategy = () => {\n throw Error('Implement an iterator strategy for record iterator');\n};\n\nexport function recordIterator(\n records,\n strategy = defaultStrategy,\n decorators = [],\n instance,\n) {\n const nextRows = [];\n\n strategy({\n data: records,\n cb: row => {\n let nextRow = row;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let i = 0; i < decorators.length; i++) {\n nextRow = decorators[i](nextRow, instance);\n if (!nextRow) break;\n }\n\n if (nextRow) nextRows.push(nextRow);\n },\n instance,\n });\n\n return nextRows;\n}\n"],"names":["defaultStrategy","Error","recordIterator","records","strategy","decorators","instance","nextRows","data","cb","row","nextRow","i","length","push"],"mappings":";;;;AAAA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC5B,QAAMC,KAAK,CAAC,oDAAD,CAAX;AACD,CAFD;;AAIO,SAASC,cAAT,CACLC,OADK,EAKL;AAAA,MAHAC,QAGA,uEAHWJ,eAGX;AAAA,MAFAK,UAEA,uEAFa,EAEb;AAAA,MADAC,QACA;AACA,MAAMC,QAAQ,GAAG,EAAjB;AAEAH,EAAAA,QAAQ,CAAC;AACPI,IAAAA,IAAI,EAAEL,OADC;AAEPM,IAAAA,EAAE,EAAE,YAAAC,GAAG,EAAI;AACT,UAAIC,OAAO,GAAGD,GAAd,CADS;;AAIT,WAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,UAAU,CAACQ,MAA/B,EAAuCD,CAAC,EAAxC,EAA4C;AAC1CD,QAAAA,OAAO,GAAGN,UAAU,CAACO,CAAD,CAAV,CAAcD,OAAd,EAAuBL,QAAvB,CAAV;AACA,YAAI,CAACK,OAAL,EAAc;AACf;;AAED,UAAIA,OAAJ,EAAaJ,QAAQ,CAACO,IAAT,CAAcH,OAAd;AACd,KAZM;AAaPL,IAAAA,QAAQ,EAARA;AAbO,GAAD,CAAR;AAgBA,SAAOC,QAAP;AACD;;;;"}
1
+ {"version":3,"file":"recordIterator.js","sources":["../../../src/useDataList/recordIterator.tsx"],"sourcesContent":["const defaultStrategy = () => {\n throw Error('Implement an iterator strategy for record iterator');\n};\n\nexport function recordIterator(\n records,\n strategy = defaultStrategy,\n decorators = [],\n instance,\n) {\n const nextRows = [];\n\n strategy({\n data: records,\n cb: row => {\n let nextRow = row;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let i = 0; i < decorators.length; i++) {\n nextRow = decorators[i](nextRow, instance);\n if (!nextRow) break;\n }\n\n if (nextRow) nextRows.push(nextRow);\n },\n instance,\n });\n\n return nextRows;\n}\n"],"names":["defaultStrategy","Error","recordIterator","records","strategy","decorators","instance","nextRows","data","cb","row","nextRow","i","length","push"],"mappings":";;;;AAAA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,GAAM;EAC5B,MAAMC,KAAK,CAAC,oDAAD,CAAX;AACD,CAFD;;AAIO,SAASC,cAAT,CACLC,OADK,EAKL;EAAA,IAHAC,QAGA,uEAHWJ,eAGX;EAAA,IAFAK,UAEA,uEAFa,EAEb;EAAA,IADAC,QACA;EACA,IAAMC,QAAQ,GAAG,EAAjB;EAEAH,QAAQ,CAAC;IACPI,IAAI,EAAEL,OADC;IAEPM,EAAE,EAAE,YAAAC,GAAG,EAAI;MACT,IAAIC,OAAO,GAAGD,GAAd,CADS;;MAIT,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,UAAU,CAACQ,MAA/B,EAAuCD,CAAC,EAAxC,EAA4C;QAC1CD,OAAO,GAAGN,UAAU,CAACO,CAAD,CAAV,CAAcD,OAAd,EAAuBL,QAAvB,CAAV;QACA,IAAI,CAACK,OAAL,EAAc;;;MAGhB,IAAIA,OAAJ,EAAaJ,QAAQ,CAACO,IAAT,CAAcH,OAAd;KAXR;IAaPL,QAAQ,EAARA;GAbM,CAAR;EAgBA,OAAOC,QAAP;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDataList.js","sources":["../../../src/useDataList/useDataList.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport { setRef } from '@elliemae/ds-utilities';\nimport get from 'lodash/get';\nimport {\n composeFormatters,\n reducePropsGetter,\n} from '../createDataInstance/utils';\nimport { recordIterator } from './recordIterator';\nimport createInstanceRef from '../createDataInstance/createInstanceRef';\n\nexport const getItemLabel = (record, nameKey = 'name') =>\n get(record, ['data', nameKey]);\nexport const getItemChildren = (record, childrenKey = 'children') =>\n get(record, ['data', childrenKey]);\n\nconst listRenderers = {\n list: 'ul',\n item: 'li',\n};\n\n// todo: check if a plugin is a LIST plugin rather than GRID\nexport default function useDataList({\n data = [],\n plugins = [],\n renderers = listRenderers,\n itemRenderer = [],\n customDecorators,\n ...props\n}) {\n const listRef = useRef();\n const { instance, decorators } = createInstanceRef({\n data,\n renderers,\n plugins,\n customDecorators: {\n ...customDecorators,\n recordIterator,\n getListProps: [],\n getItemProps: [],\n itemRenderer: [...itemRenderer], // components reduce to compose item content\n record: [],\n records: [],\n },\n ...props,\n });\n instance.current.getListRef = () => listRef;\n instance.current.setListRef = (ref) => {\n listRef.current = ref;\n };\n instance.current.getItemLabel = (record) =>\n getItemLabel(record, props.nameKey);\n instance.current.getItemChildren = (record) =>\n getItemChildren(record, props.childrenKey);\n\n instance.current.decorators = decorators;\n instance.current.getListProps = reducePropsGetter(\n decorators.getListProps,\n instance.current,\n );\n instance.current.getItemProps = reducePropsGetter(\n decorators.getItemProps,\n instance.current,\n );\n instance.current.itemRenderer = composeFormatters(\n instance.current.decorators.itemRenderer,\n instance.current,\n );\n\n instance.current.records = useMemo(() => {\n // record iterator TREE / Simple\n let nextRecords = recordIterator(\n data,\n instance.current.decorators.recordIterator,\n decorators.record,\n instance.current,\n );\n\n // compose all records\n nextRecords = decorators.records.reduce(\n (nextRows, getter) => getter(nextRows, instance.current),\n nextRecords,\n );\n\n return nextRecords;\n });\n\n if (props.instanceRef) setRef(props.instanceRef, instance.current);\n\n return instance.current;\n}\n"],"names":["getItemLabel","record","nameKey","get","getItemChildren","childrenKey","listRenderers","list","item","useDataList","data","plugins","renderers","itemRenderer","customDecorators","props","listRef","useRef","createInstanceRef","recordIterator","getListProps","getItemProps","records","instance","decorators","current","getListRef","setListRef","ref","reducePropsGetter","composeFormatters","useMemo","nextRecords","reduce","nextRows","getter","instanceRef","setRef"],"mappings":"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"}
1
+ {"version":3,"file":"useDataList.js","sources":["../../../src/useDataList/useDataList.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport { setRef } from '@elliemae/ds-utilities';\nimport get from 'lodash/get';\nimport {\n composeFormatters,\n reducePropsGetter,\n} from '../createDataInstance/utils';\nimport { recordIterator } from './recordIterator';\nimport createInstanceRef from '../createDataInstance/createInstanceRef';\n\nexport const getItemLabel = (record, nameKey = 'name') =>\n get(record, ['data', nameKey]);\nexport const getItemChildren = (record, childrenKey = 'children') =>\n get(record, ['data', childrenKey]);\n\nconst listRenderers = {\n list: 'ul',\n item: 'li',\n};\n\n// todo: check if a plugin is a LIST plugin rather than GRID\nexport default function useDataList({\n data = [],\n plugins = [],\n renderers = listRenderers,\n itemRenderer = [],\n customDecorators,\n ...props\n}) {\n const listRef = useRef();\n const { instance, decorators } = createInstanceRef({\n data,\n renderers,\n plugins,\n customDecorators: {\n ...customDecorators,\n recordIterator,\n getListProps: [],\n getItemProps: [],\n itemRenderer: [...itemRenderer], // components reduce to compose item content\n record: [],\n records: [],\n },\n ...props,\n });\n instance.current.getListRef = () => listRef;\n instance.current.setListRef = (ref) => {\n listRef.current = ref;\n };\n instance.current.getItemLabel = (record) =>\n getItemLabel(record, props.nameKey);\n instance.current.getItemChildren = (record) =>\n getItemChildren(record, props.childrenKey);\n\n instance.current.decorators = decorators;\n instance.current.getListProps = reducePropsGetter(\n decorators.getListProps,\n instance.current,\n );\n instance.current.getItemProps = reducePropsGetter(\n decorators.getItemProps,\n instance.current,\n );\n instance.current.itemRenderer = composeFormatters(\n instance.current.decorators.itemRenderer,\n instance.current,\n );\n\n instance.current.records = useMemo(() => {\n // record iterator TREE / Simple\n let nextRecords = recordIterator(\n data,\n instance.current.decorators.recordIterator,\n decorators.record,\n instance.current,\n );\n\n // compose all records\n nextRecords = decorators.records.reduce(\n (nextRows, getter) => getter(nextRows, instance.current),\n nextRecords,\n );\n\n return nextRecords;\n });\n\n if (props.instanceRef) setRef(props.instanceRef, instance.current);\n\n return instance.current;\n}\n"],"names":["getItemLabel","record","nameKey","get","getItemChildren","childrenKey","listRenderers","list","item","useDataList","data","plugins","renderers","itemRenderer","customDecorators","props","listRef","useRef","createInstanceRef","recordIterator","getListProps","getItemProps","records","instance","decorators","current","getListRef","setListRef","ref","reducePropsGetter","composeFormatters","useMemo","nextRecords","reduce","nextRows","getter","instanceRef","setRef"],"mappings":"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"}
package/cjs/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["/* eslint-disable no-cond-assign */\nexport const objectType = (obj) =>\n Object.prototype.toString.call(obj).slice(8, -1);\nexport const isDefined = (param) => typeof param !== 'undefined';\nexport const isUndefined = (param) => typeof param === 'undefined';\nexport const isFunction = (param) => typeof param === 'function';\nexport const isNumber = param => typeof param === 'number' && !isNaN(param); // eslint-disable-line\nexport const isString = (str) => objectType(str) === 'String';\nexport const isArray = (arr) => objectType(arr) === 'Array';\n\nexport const closest = (target, selector) => {\n // closest(e.target, '.field')\n while (target) {\n // eslint-disable-line\n if (target.matches && target.matches(selector)) return target;\n if (target.msMatchesSelector && target.msMatchesSelector(selector))\n return target;\n // eslint-disable-next-line no-param-reassign\n target = target.parentNode;\n }\n return null;\n};\n\nexport const getOffsetRect = (elem) => {\n // (1)\n const box = elem.getBoundingClientRect();\n\n const { body, documentElement } = document;\n\n // (2)\n const scrollTop =\n window.pageYOffset || documentElement.scrollTop || body.scrollTop;\n const scrollLeft =\n window.pageXOffset || documentElement.scrollLeft || body.scrollLeft;\n\n // (3)\n const clientTop = documentElement.clientTop || body.clientTop || 0;\n const clientLeft = documentElement.clientLeft || body.clientLeft || 0;\n\n // (4)\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return { top: Math.round(top), left: Math.round(left) };\n};\n\nexport const getTotalScroll = (elem) => {\n let top = 0;\n let left = 0;\n\n // eslint-disable-next-line no-param-reassign\n while ((elem = elem.parentNode)) {\n top += elem.scrollTop || 0;\n left += elem.scrollLeft || 0;\n }\n\n return { top, left };\n};\n\nexport const getTransformProps = (x, y) => ({\n transform: `translate(${x}px, ${y}px)`,\n});\n\nexport const listWithChildren = (list, childrenProp) =>\n list.map((item) => ({\n ...item,\n [childrenProp]: item[childrenProp]\n ? listWithChildren(item[childrenProp], childrenProp)\n : [],\n }));\n\nexport const getAllNonEmptyNodesIds = (items, childrenProp) => {\n let childrenIds = [];\n const ids = items\n .filter((item) => item[childrenProp].length)\n .map((item) => {\n childrenIds = childrenIds.concat(\n getAllNonEmptyNodesIds(item[childrenProp], childrenProp),\n );\n return item.id;\n });\n\n return ids.concat(childrenIds);\n};\n\nexport const isInternetExplorer = () => {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n // If Internet Explorer, return version number\n if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11\\./)) {\n return true;\n }\n return false;\n};\n"],"names":["objectType","obj","Object","prototype","toString","call","slice","isDefined","param","isUndefined","isFunction","isNumber","isNaN","isString","str","isArray","arr","closest","target","selector","matches","msMatchesSelector","parentNode","getOffsetRect","elem","box","getBoundingClientRect","document","body","documentElement","scrollTop","window","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","top","left","Math","round","getTotalScroll","getTransformProps","x","y","transform","listWithChildren","list","childrenProp","map","item","getAllNonEmptyNodesIds","items","childrenIds","ids","filter","length","concat","id","isInternetExplorer","ua","navigator","userAgent","msie","indexOf","match"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["/* eslint-disable no-cond-assign */\nexport const objectType = (obj) =>\n Object.prototype.toString.call(obj).slice(8, -1);\nexport const isDefined = (param) => typeof param !== 'undefined';\nexport const isUndefined = (param) => typeof param === 'undefined';\nexport const isFunction = (param) => typeof param === 'function';\nexport const isNumber = param => typeof param === 'number' && !isNaN(param); // eslint-disable-line\nexport const isString = (str) => objectType(str) === 'String';\nexport const isArray = (arr) => objectType(arr) === 'Array';\n\nexport const closest = (target, selector) => {\n // closest(e.target, '.field')\n while (target) {\n // eslint-disable-line\n if (target.matches && target.matches(selector)) return target;\n if (target.msMatchesSelector && target.msMatchesSelector(selector))\n return target;\n // eslint-disable-next-line no-param-reassign\n target = target.parentNode;\n }\n return null;\n};\n\nexport const getOffsetRect = (elem) => {\n // (1)\n const box = elem.getBoundingClientRect();\n\n const { body, documentElement } = document;\n\n // (2)\n const scrollTop =\n window.pageYOffset || documentElement.scrollTop || body.scrollTop;\n const scrollLeft =\n window.pageXOffset || documentElement.scrollLeft || body.scrollLeft;\n\n // (3)\n const clientTop = documentElement.clientTop || body.clientTop || 0;\n const clientLeft = documentElement.clientLeft || body.clientLeft || 0;\n\n // (4)\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return { top: Math.round(top), left: Math.round(left) };\n};\n\nexport const getTotalScroll = (elem) => {\n let top = 0;\n let left = 0;\n\n // eslint-disable-next-line no-param-reassign\n while ((elem = elem.parentNode)) {\n top += elem.scrollTop || 0;\n left += elem.scrollLeft || 0;\n }\n\n return { top, left };\n};\n\nexport const getTransformProps = (x, y) => ({\n transform: `translate(${x}px, ${y}px)`,\n});\n\nexport const listWithChildren = (list, childrenProp) =>\n list.map((item) => ({\n ...item,\n [childrenProp]: item[childrenProp]\n ? listWithChildren(item[childrenProp], childrenProp)\n : [],\n }));\n\nexport const getAllNonEmptyNodesIds = (items, childrenProp) => {\n let childrenIds = [];\n const ids = items\n .filter((item) => item[childrenProp].length)\n .map((item) => {\n childrenIds = childrenIds.concat(\n getAllNonEmptyNodesIds(item[childrenProp], childrenProp),\n );\n return item.id;\n });\n\n return ids.concat(childrenIds);\n};\n\nexport const isInternetExplorer = () => {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n // If Internet Explorer, return version number\n if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11\\./)) {\n return true;\n }\n return false;\n};\n"],"names":["objectType","obj","Object","prototype","toString","call","slice","isDefined","param","isUndefined","isFunction","isNumber","isNaN","isString","str","isArray","arr","closest","target","selector","matches","msMatchesSelector","parentNode","getOffsetRect","elem","box","getBoundingClientRect","document","body","documentElement","scrollTop","window","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","top","left","Math","round","getTotalScroll","getTransformProps","x","y","transform","listWithChildren","list","childrenProp","map","item","getAllNonEmptyNodesIds","items","childrenIds","ids","filter","length","concat","id","isInternetExplorer","ua","navigator","userAgent","msie","indexOf","match"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AutoHeightList.js","sources":["../../../src/virtualization/AutoHeightList.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { FixedSizeList as List } from 'react-window';\nimport { cx, useWindowScrollerList, mergeRefs } from '@elliemae/ds-utilities';\n\nexport const AutoHeightList = forwardRef(\n (\n {\n itemCount,\n className,\n innerRef,\n itemData,\n itemKey,\n itemSize,\n outerRef,\n component: ListComponent = List,\n ...otherProps\n },\n ref,\n ) => {\n const listRef = useRef();\n const outerListRef = useRef();\n\n useWindowScrollerList({\n listInstance: listRef,\n outerListRef,\n });\n\n return (\n <ListComponent\n {...otherProps}\n ref={mergeRefs(ref, listRef)}\n className={cx(className, 'window-scroller-override')}\n height={window.innerHeight}\n innerRef={innerRef}\n itemCount={itemCount}\n itemData={itemData}\n itemKey={itemKey}\n itemSize={itemSize}\n outerRef={mergeRefs(outerListRef, outerRef)}\n overscanCount={10}\n useIsScrolling\n />\n );\n },\n);\n"],"names":["AutoHeightList","forwardRef","ref","itemCount","className","innerRef","itemData","itemKey","itemSize","outerRef","component","ListComponent","List","otherProps","listRef","useRef","outerListRef","useWindowScrollerList","listInstance","React","mergeRefs","cx","window","innerHeight"],"mappings":";;;;;;;;;;;;;;;;;IAIaA,cAAc,gBAAGC,gBAAU,CACtC,gBAYEC,GAZF,EAaK;AAAA,MAXDC,SAWC,QAXDA,SAWC;AAAA,MAVDC,SAUC,QAVDA,SAUC;AAAA,MATDC,QASC,QATDA,QASC;AAAA,MARDC,QAQC,QARDA,QAQC;AAAA,MAPDC,OAOC,QAPDA,OAOC;AAAA,MANDC,QAMC,QANDA,QAMC;AAAA,MALDC,QAKC,QALDA,QAKC;AAAA,4BAJDC,SAIC;AAAA,MAJUC,aAIV,+BAJ0BC,yBAI1B;AAAA,MAHEC,UAGF;;AACH,MAAMC,OAAO,GAAGC,YAAM,EAAtB;AACA,MAAMC,YAAY,GAAGD,YAAM,EAA3B;AAEAE,EAAAA,iCAAqB,CAAC;AACpBC,IAAAA,YAAY,EAAEJ,OADM;AAEpBE,IAAAA,YAAY,EAAZA;AAFoB,GAAD,CAArB;AAKA,sBACEG,wCAAC,aAAD,mCACMN,UADN;AAEE,IAAA,GAAG,EAAEO,qBAAS,CAAClB,GAAD,EAAMY,OAAN,CAFhB;AAGE,IAAA,SAAS,EAAEO,cAAE,CAACjB,SAAD,EAAY,0BAAZ,CAHf;AAIE,IAAA,MAAM,EAAEkB,MAAM,CAACC,WAJjB;AAKE,IAAA,QAAQ,EAAElB,QALZ;AAME,IAAA,SAAS,EAAEF,SANb;AAOE,IAAA,QAAQ,EAAEG,QAPZ;AAQE,IAAA,OAAO,EAAEC,OARX;AASE,IAAA,QAAQ,EAAEC,QATZ;AAUE,IAAA,QAAQ,EAAEY,qBAAS,CAACJ,YAAD,EAAeP,QAAf,CAVrB;AAWE,IAAA,aAAa,EAAE,EAXjB;AAYE,IAAA,cAAc;AAZhB,KADF;AAgBD,CAvCqC;;;;"}
1
+ {"version":3,"file":"AutoHeightList.js","sources":["../../../src/virtualization/AutoHeightList.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { FixedSizeList as List } from 'react-window';\nimport { cx, useWindowScrollerList, mergeRefs } from '@elliemae/ds-utilities';\n\nexport const AutoHeightList = forwardRef(\n (\n {\n itemCount,\n className,\n innerRef,\n itemData,\n itemKey,\n itemSize,\n outerRef,\n component: ListComponent = List,\n ...otherProps\n },\n ref,\n ) => {\n const listRef = useRef();\n const outerListRef = useRef();\n\n useWindowScrollerList({\n listInstance: listRef,\n outerListRef,\n });\n\n return (\n <ListComponent\n {...otherProps}\n ref={mergeRefs(ref, listRef)}\n className={cx(className, 'window-scroller-override')}\n height={window.innerHeight}\n innerRef={innerRef}\n itemCount={itemCount}\n itemData={itemData}\n itemKey={itemKey}\n itemSize={itemSize}\n outerRef={mergeRefs(outerListRef, outerRef)}\n overscanCount={10}\n useIsScrolling\n />\n );\n },\n);\n"],"names":["AutoHeightList","forwardRef","ref","itemCount","className","innerRef","itemData","itemKey","itemSize","outerRef","component","ListComponent","List","otherProps","listRef","useRef","outerListRef","useWindowScrollerList","listInstance","React","mergeRefs","cx","window","innerHeight"],"mappings":";;;;;;;;;;;;;;;;;IAIaA,cAAc,gBAAGC,gBAAU,CACtC,gBAYEC,GAZF,EAaK;EAAA,IAXDC,SAWC,QAXDA,SAWC;MAVDC,SAUC,QAVDA,SAUC;MATDC,QASC,QATDA,QASC;MARDC,QAQC,QARDA,QAQC;MAPDC,OAOC,QAPDA,OAOC;MANDC,QAMC,QANDA,QAMC;MALDC,QAKC,QALDA,QAKC;4BAJDC,SAIC;MAJUC,aAIV,+BAJ0BC,yBAI1B;MAHEC,UAGF;;EACH,IAAMC,OAAO,GAAGC,YAAM,EAAtB;EACA,IAAMC,YAAY,GAAGD,YAAM,EAA3B;EAEAE,iCAAqB,CAAC;IACpBC,YAAY,EAAEJ,OADM;IAEpBE,YAAY,EAAZA;GAFmB,CAArB;EAKA,oBACEG,wCAAC,aAAD,mCACMN,UADN;IAEE,GAAG,EAAEO,qBAAS,CAAClB,GAAD,EAAMY,OAAN,CAFhB;IAGE,SAAS,EAAEO,cAAE,CAACjB,SAAD,EAAY,0BAAZ,CAHf;IAIE,MAAM,EAAEkB,MAAM,CAACC,WAJjB;IAKE,QAAQ,EAAElB,QALZ;IAME,SAAS,EAAEF,SANb;IAOE,QAAQ,EAAEG,QAPZ;IAQE,OAAO,EAAEC,OARX;IASE,QAAQ,EAAEC,QATZ;IAUE,QAAQ,EAAEY,qBAAS,CAACJ,YAAD,EAAeP,QAAf,CAVrB;IAWE,aAAa,EAAE,EAXjB;IAYE,cAAc;KAblB;AAgBD,CAvCqC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FluidHeightList.js","sources":["../../../src/virtualization/FluidHeightList.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nexport const FluidHeightList = forwardRef(\n ({ component: Component, ...props }, ref) => (\n <AutoSizer disableWidth>\n {({ height: fluidHeight }) => (\n <Component\n {...props}\n ref={ref}\n height={fluidHeight - 32} // taking in count the margins of the list\n />\n )}\n </AutoSizer>\n ),\n);\n"],"names":["FluidHeightList","forwardRef","ref","Component","component","props","React","AutoSizer","fluidHeight","height"],"mappings":";;;;;;;;;;;;;;;;;IAGaA,eAAe,gBAAGC,gBAAU,CACvC,gBAAqCC,GAArC;AAAA,MAAcC,SAAd,QAAGC,SAAH;AAAA,MAA4BC,KAA5B;;AAAA,sBACEC,wCAACC,6BAAD;AAAW,IAAA,YAAY;AAAvB,KACG;AAAA,QAAWC,WAAX,SAAGC,MAAH;AAAA,wBACCH,wCAAC,SAAD,mCACMD,KADN;AAEE,MAAA,GAAG,EAAEH,GAFP;AAGE,MAAA,MAAM,EAAEM,WAAW,GAAG,EAHxB;;AAAA,OADD;AAAA,GADH,CADF;AAAA,CADuC;;;;"}
1
+ {"version":3,"file":"FluidHeightList.js","sources":["../../../src/virtualization/FluidHeightList.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nexport const FluidHeightList = forwardRef(\n ({ component: Component, ...props }, ref) => (\n <AutoSizer disableWidth>\n {({ height: fluidHeight }) => (\n <Component\n {...props}\n ref={ref}\n height={fluidHeight - 32} // taking in count the margins of the list\n />\n )}\n </AutoSizer>\n ),\n);\n"],"names":["FluidHeightList","forwardRef","ref","Component","component","props","React","AutoSizer","fluidHeight","height"],"mappings":";;;;;;;;;;;;;;;;;IAGaA,eAAe,gBAAGC,gBAAU,CACvC,gBAAqCC,GAArC;EAAA,IAAcC,SAAd,QAAGC,SAAH;MAA4BC,KAA5B;;EAAA,oBACEC,wCAACC,6BAAD;IAAW,YAAY;KACpB;IAAA,IAAWC,WAAX,SAAGC,MAAH;IAAA,oBACCH,wCAAC,SAAD,mCACMD,KADN;MAEE,GAAG,EAAEH,GAFP;MAGE,MAAM,EAAEM,WAAW,GAAG,EAHxB;;OADD;GADH,CADF;AAAA,CADuC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/virtualization/index.tsx"],"sourcesContent":["import { FluidHeightList } from './FluidHeightList';\nimport { AutoHeightList } from './AutoHeightList';\n\nexport { FluidHeightList, AutoHeightList };\n\nexport function getVirtualListComponent({\n component: Component,\n fluid,\n height,\n autoHeight,\n}) {\n if (autoHeight) return AutoHeightList;\n if (fluid) return FluidHeightList;\n return Component;\n}\n"],"names":["getVirtualListComponent","Component","component","fluid","height","autoHeight","AutoHeightList","FluidHeightList"],"mappings":";;;;;;;;;;;;;AAKO,SAASA,uBAAT,OAKJ;AAAA,MAJUC,SAIV,QAJDC,SAIC;AAAA,MAHDC,KAGC,QAHDA,KAGC;AAAA,WAFDC,MAEC;AAAA,UADDC,UACC,QADDA;AAEA,MAAIA,UAAJ,EAAgB,OAAOC,4CAAP;AAChB,MAAIH,KAAJ,EAAW,OAAOI,8CAAP;AACX,SAAON,SAAP;AACD;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/virtualization/index.tsx"],"sourcesContent":["import { FluidHeightList } from './FluidHeightList';\nimport { AutoHeightList } from './AutoHeightList';\n\nexport { FluidHeightList, AutoHeightList };\n\nexport function getVirtualListComponent({\n component: Component,\n fluid,\n height,\n autoHeight,\n}) {\n if (autoHeight) return AutoHeightList;\n if (fluid) return FluidHeightList;\n return Component;\n}\n"],"names":["getVirtualListComponent","Component","component","fluid","height","autoHeight","AutoHeightList","FluidHeightList"],"mappings":";;;;;;;;;;;;;AAKO,SAASA,uBAAT,OAKJ;MAJUC,SAIV,QAJDC,SAIC;MAHDC,KAGC,QAHDA,KAGC;WAFDC,MAEC;UADDC,UACC,QADDA;EAEA,IAAIA,UAAJ,EAAgB,OAAOC,4CAAP;EAChB,IAAIH,KAAJ,EAAW,OAAOI,8CAAP;EACX,OAAON,SAAP;AACD;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAnimation.js","sources":["../../../src/Animations/BaseAnimation.tsx"],"sourcesContent":["/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { Transition } from 'react-spring/renderprops.cjs';\n\nconst BaseAnimation = ({\n keys = undefined,\n items = [],\n duration = 100,\n enter = {},\n from = {},\n leave = {},\n onRest = () => null,\n children,\n}) => (\n <Transition\n config={{ duration }}\n enter={enter}\n from={from}\n items={items}\n keys={keys}\n leave={leave}\n onRest={onRest}\n >\n {children}\n </Transition>\n);\n\nexport default BaseAnimation;\n"],"names":["BaseAnimation","keys","undefined","items","duration","enter","from","leave","onRest","children"],"mappings":";;;AAAA;;IAIMA,aAAa,GAAG,SAAhBA,aAAgB;AAAA,uBACpBC,IADoB;AAAA,MACpBA,IADoB,0BACbC,SADa;AAAA,wBAEpBC,KAFoB;AAAA,MAEpBA,KAFoB,2BAEZ,EAFY;AAAA,2BAGpBC,QAHoB;AAAA,MAGpBA,QAHoB,8BAGT,GAHS;AAAA,wBAIpBC,KAJoB;AAAA,MAIpBA,KAJoB,2BAIZ,EAJY;AAAA,uBAKpBC,IALoB;AAAA,MAKpBA,IALoB,0BAKb,EALa;AAAA,wBAMpBC,KANoB;AAAA,MAMpBA,KANoB,2BAMZ,EANY;AAAA,yBAOpBC,MAPoB;AAAA,MAOpBA,MAPoB,4BAOX;AAAA,WAAM,IAAN;AAAA,GAPW;AAAA,MAQpBC,QARoB,QAQpBA,QARoB;AAAA,sBAUpB,oBAAC,UAAD;AACE,IAAA,MAAM,EAAE;AAAEL,MAAAA,QAAQ,EAARA;AAAF,KADV;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,IAAI,EAAEC,IAHR;AAIE,IAAA,KAAK,EAAEH,KAJT;AAKE,IAAA,IAAI,EAAEF,IALR;AAME,IAAA,KAAK,EAAEM,KANT;AAOE,IAAA,MAAM,EAAEC;AAPV,KASGC,QATH,CAVoB;AAAA;;;;"}
1
+ {"version":3,"file":"BaseAnimation.js","sources":["../../../src/Animations/BaseAnimation.tsx"],"sourcesContent":["/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { Transition } from 'react-spring/renderprops.cjs';\n\nconst BaseAnimation = ({\n keys = undefined,\n items = [],\n duration = 100,\n enter = {},\n from = {},\n leave = {},\n onRest = () => null,\n children,\n}) => (\n <Transition\n config={{ duration }}\n enter={enter}\n from={from}\n items={items}\n keys={keys}\n leave={leave}\n onRest={onRest}\n >\n {children}\n </Transition>\n);\n\nexport default BaseAnimation;\n"],"names":["BaseAnimation","keys","undefined","items","duration","enter","from","leave","onRest","children"],"mappings":";;;AAAA;;IAIMA,aAAa,GAAG,SAAhBA,aAAgB;EAAA,qBACpBC,IADoB;MACpBA,IADoB,0BACbC,SADa;wBAEpBC,KAFoB;MAEpBA,KAFoB,2BAEZ,EAFY;2BAGpBC,QAHoB;MAGpBA,QAHoB,8BAGT,GAHS;wBAIpBC,KAJoB;MAIpBA,KAJoB,2BAIZ,EAJY;uBAKpBC,IALoB;MAKpBA,IALoB,0BAKb,EALa;wBAMpBC,KANoB;MAMpBA,KANoB,2BAMZ,EANY;yBAOpBC,MAPoB;MAOpBA,MAPoB,4BAOX;IAAA,OAAM,IAAN;GAPW;MAQpBC,QARoB,QAQpBA,QARoB;EAAA,oBAUpB,oBAAC,UAAD;IACE,MAAM,EAAE;MAAEL,QAAQ,EAARA;KADZ;IAEE,KAAK,EAAEC,KAFT;IAGE,IAAI,EAAEC,IAHR;IAIE,KAAK,EAAEH,KAJT;IAKE,IAAI,EAAEF,IALR;IAME,KAAK,EAAEM,KANT;IAOE,MAAM,EAAEC;KAEPC,QATH,CAVoB;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Grow.js","sources":["../../../src/Animations/Grow.tsx"],"sourcesContent":["import React from 'react';\nimport BaseAnimation from './BaseAnimation';\n\nconst Grow = ({\n keys = undefined,\n duration,\n items = undefined,\n from = 0,\n to = 1,\n children,\n onRest = () => null,\n}) => (\n <BaseAnimation\n duration={duration}\n enter={{ opacity: 1, transform: `scale(${to})` }}\n from={{ opacity: 0, transform: `scale(${from})` }}\n items={items}\n keys={keys}\n leave={{ opacity: 0, transform: `scale(${from})` }}\n onRest={onRest}\n >\n {children}\n </BaseAnimation>\n);\n\nexport default Grow;\n"],"names":["Grow","keys","undefined","duration","items","from","to","children","onRest","opacity","transform"],"mappings":";;;;IAGMA,IAAI,GAAG,SAAPA,IAAO;AAAA,uBACXC,IADW;AAAA,MACXA,IADW,0BACJC,SADI;AAAA,MAEXC,QAFW,QAEXA,QAFW;AAAA,wBAGXC,KAHW;AAAA,MAGXA,KAHW,2BAGHF,SAHG;AAAA,uBAIXG,IAJW;AAAA,MAIXA,IAJW,0BAIJ,CAJI;AAAA,qBAKXC,EALW;AAAA,MAKXA,EALW,wBAKN,CALM;AAAA,MAMXC,QANW,QAMXA,QANW;AAAA,yBAOXC,MAPW;AAAA,MAOXA,MAPW,4BAOF;AAAA,WAAM,IAAN;AAAA,GAPE;AAAA,sBASX,oBAAC,aAAD;AACE,IAAA,QAAQ,EAAEL,QADZ;AAEE,IAAA,KAAK,EAAE;AAAEM,MAAAA,OAAO,EAAE,CAAX;AAAcC,MAAAA,SAAS,kBAAWJ,EAAX;AAAvB,KAFT;AAGE,IAAA,IAAI,EAAE;AAAEG,MAAAA,OAAO,EAAE,CAAX;AAAcC,MAAAA,SAAS,kBAAWL,IAAX;AAAvB,KAHR;AAIE,IAAA,KAAK,EAAED,KAJT;AAKE,IAAA,IAAI,EAAEH,IALR;AAME,IAAA,KAAK,EAAE;AAAEQ,MAAAA,OAAO,EAAE,CAAX;AAAcC,MAAAA,SAAS,kBAAWL,IAAX;AAAvB,KANT;AAOE,IAAA,MAAM,EAAEG;AAPV,KASGD,QATH,CATW;AAAA;;;;"}
1
+ {"version":3,"file":"Grow.js","sources":["../../../src/Animations/Grow.tsx"],"sourcesContent":["import React from 'react';\nimport BaseAnimation from './BaseAnimation';\n\nconst Grow = ({\n keys = undefined,\n duration,\n items = undefined,\n from = 0,\n to = 1,\n children,\n onRest = () => null,\n}) => (\n <BaseAnimation\n duration={duration}\n enter={{ opacity: 1, transform: `scale(${to})` }}\n from={{ opacity: 0, transform: `scale(${from})` }}\n items={items}\n keys={keys}\n leave={{ opacity: 0, transform: `scale(${from})` }}\n onRest={onRest}\n >\n {children}\n </BaseAnimation>\n);\n\nexport default Grow;\n"],"names":["Grow","keys","undefined","duration","items","from","to","children","onRest","opacity","transform"],"mappings":";;;;IAGMA,IAAI,GAAG,SAAPA,IAAO;EAAA,qBACXC,IADW;MACXA,IADW,0BACJC,SADI;MAEXC,QAFW,QAEXA,QAFW;wBAGXC,KAHW;MAGXA,KAHW,2BAGHF,SAHG;uBAIXG,IAJW;MAIXA,IAJW,0BAIJ,CAJI;qBAKXC,EALW;MAKXA,EALW,wBAKN,CALM;MAMXC,QANW,QAMXA,QANW;yBAOXC,MAPW;MAOXA,MAPW,4BAOF;IAAA,OAAM,IAAN;GAPE;EAAA,oBASX,oBAAC,aAAD;IACE,QAAQ,EAAEL,QADZ;IAEE,KAAK,EAAE;MAAEM,OAAO,EAAE,CAAX;MAAcC,SAAS,kBAAWJ,EAAX;KAFhC;IAGE,IAAI,EAAE;MAAEG,OAAO,EAAE,CAAX;MAAcC,SAAS,kBAAWL,IAAX;KAH/B;IAIE,KAAK,EAAED,KAJT;IAKE,IAAI,EAAEH,IALR;IAME,KAAK,EAAE;MAAEQ,OAAO,EAAE,CAAX;MAAcC,SAAS,kBAAWL,IAAX;KANhC;IAOE,MAAM,EAAEG;KAEPD,QATH,CATW;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"GrowRight.js","sources":["../../../src/Animations/GrowRight.tsx"],"sourcesContent":["import React from 'react';\nimport BaseAnimation from './BaseAnimation';\n\nconst GrowRight = ({\n keys = undefined,\n items = undefined,\n duration = 200,\n from = 0,\n to = 1,\n children,\n onRest = () => null,\n}) => (\n <BaseAnimation\n duration={duration}\n enter={{\n opacity: `${to}`,\n transform: 'translateX(0px)',\n }}\n from={{\n opacity: `${from}`,\n transform: 'translateX(100%)',\n }}\n items={items}\n keys={keys}\n leave={{\n opacity: `${from}`,\n transform: 'translateX(100%)',\n }}\n onRest={onRest}\n >\n {children}\n </BaseAnimation>\n);\n\nexport default GrowRight;\n"],"names":["GrowRight","keys","undefined","items","duration","from","to","children","onRest","opacity","transform"],"mappings":";;;;IAGMA,SAAS,GAAG,SAAZA,SAAY;AAAA,uBAChBC,IADgB;AAAA,MAChBA,IADgB,0BACTC,SADS;AAAA,wBAEhBC,KAFgB;AAAA,MAEhBA,KAFgB,2BAERD,SAFQ;AAAA,2BAGhBE,QAHgB;AAAA,MAGhBA,QAHgB,8BAGL,GAHK;AAAA,uBAIhBC,IAJgB;AAAA,MAIhBA,IAJgB,0BAIT,CAJS;AAAA,qBAKhBC,EALgB;AAAA,MAKhBA,EALgB,wBAKX,CALW;AAAA,MAMhBC,QANgB,QAMhBA,QANgB;AAAA,yBAOhBC,MAPgB;AAAA,MAOhBA,MAPgB,4BAOP;AAAA,WAAM,IAAN;AAAA,GAPO;AAAA,sBAShB,oBAAC,aAAD;AACE,IAAA,QAAQ,EAAEJ,QADZ;AAEE,IAAA,KAAK,EAAE;AACLK,MAAAA,OAAO,YAAKH,EAAL,CADF;AAELI,MAAAA,SAAS,EAAE;AAFN,KAFT;AAME,IAAA,IAAI,EAAE;AACJD,MAAAA,OAAO,YAAKJ,IAAL,CADH;AAEJK,MAAAA,SAAS,EAAE;AAFP,KANR;AAUE,IAAA,KAAK,EAAEP,KAVT;AAWE,IAAA,IAAI,EAAEF,IAXR;AAYE,IAAA,KAAK,EAAE;AACLQ,MAAAA,OAAO,YAAKJ,IAAL,CADF;AAELK,MAAAA,SAAS,EAAE;AAFN,KAZT;AAgBE,IAAA,MAAM,EAAEF;AAhBV,KAkBGD,QAlBH,CATgB;AAAA;;;;"}
1
+ {"version":3,"file":"GrowRight.js","sources":["../../../src/Animations/GrowRight.tsx"],"sourcesContent":["import React from 'react';\nimport BaseAnimation from './BaseAnimation';\n\nconst GrowRight = ({\n keys = undefined,\n items = undefined,\n duration = 200,\n from = 0,\n to = 1,\n children,\n onRest = () => null,\n}) => (\n <BaseAnimation\n duration={duration}\n enter={{\n opacity: `${to}`,\n transform: 'translateX(0px)',\n }}\n from={{\n opacity: `${from}`,\n transform: 'translateX(100%)',\n }}\n items={items}\n keys={keys}\n leave={{\n opacity: `${from}`,\n transform: 'translateX(100%)',\n }}\n onRest={onRest}\n >\n {children}\n </BaseAnimation>\n);\n\nexport default GrowRight;\n"],"names":["GrowRight","keys","undefined","items","duration","from","to","children","onRest","opacity","transform"],"mappings":";;;;IAGMA,SAAS,GAAG,SAAZA,SAAY;EAAA,qBAChBC,IADgB;MAChBA,IADgB,0BACTC,SADS;wBAEhBC,KAFgB;MAEhBA,KAFgB,2BAERD,SAFQ;2BAGhBE,QAHgB;MAGhBA,QAHgB,8BAGL,GAHK;uBAIhBC,IAJgB;MAIhBA,IAJgB,0BAIT,CAJS;qBAKhBC,EALgB;MAKhBA,EALgB,wBAKX,CALW;MAMhBC,QANgB,QAMhBA,QANgB;yBAOhBC,MAPgB;MAOhBA,MAPgB,4BAOP;IAAA,OAAM,IAAN;GAPO;EAAA,oBAShB,oBAAC,aAAD;IACE,QAAQ,EAAEJ,QADZ;IAEE,KAAK,EAAE;MACLK,OAAO,YAAKH,EAAL,CADF;MAELI,SAAS,EAAE;KAJf;IAME,IAAI,EAAE;MACJD,OAAO,YAAKJ,IAAL,CADH;MAEJK,SAAS,EAAE;KARf;IAUE,KAAK,EAAEP,KAVT;IAWE,IAAI,EAAEF,IAXR;IAYE,KAAK,EAAE;MACLQ,OAAO,YAAKJ,IAAL,CADF;MAELK,SAAS,EAAE;KAdf;IAgBE,MAAM,EAAEF;KAEPD,QAlBH,CATgB;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckableGroup.js","sources":["../../src/CheckableGroup.tsx"],"sourcesContent":["import React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport { addOrRemove, runAll, useDerivedStateFromProps } from '@elliemae/ds-utilities';\n\nexport function useCheckableGroup({\n children,\n active: activeProp,\n multi,\n onCheck = () => null,\n}) {\n const [active, setActive] = useDerivedStateFromProps(activeProp);\n\n const handleCheck = ({ target: { value } }, item) => {\n setActive(prevActive => {\n const nextActive = multi ? addOrRemove(prevActive, value) : value;\n onCheck(nextActive, item);\n return nextActive;\n });\n };\n\n return React.Children.map(children, child => {\n const { props } = child;\n const checked = Array.isArray(active)\n ? active.indexOf(props.name) !== -1\n : active === props.name;\n\n return cloneElement(child, {\n ...props,\n checked,\n onClick: runAll(handleCheck, props.onClick),\n });\n });\n}\n\nfunction CheckableGroup({\n active = [],\n multi = false, // checkbox or radio\n children,\n}) {\n return useCheckableGroup({ active, multi, children });\n}\n\nCheckableGroup.propTypes = {\n /* The item (if multi false) or items (if multi true) selected */\n active: PropTypes.arrayOf(PropTypes.string),\n /* Whether is multi select or not */\n multi: PropTypes.bool,\n /* Handler when a user checks an item */\n onCheck: PropTypes.func,\n};\n\nexport default CheckableGroup;\n"],"names":["useCheckableGroup","children","activeProp","active","multi","onCheck","useDerivedStateFromProps","setActive","handleCheck","item","value","target","prevActive","nextActive","addOrRemove","React","Children","map","child","props","checked","Array","isArray","indexOf","name","cloneElement","onClick","runAll","CheckableGroup","propTypes","PropTypes","arrayOf","string","bool","func"],"mappings":";;;;;;;;;AAIO,SAASA,iBAAT,OAKJ;AAAA,MAJDC,QAIC,QAJDA,QAIC;AAAA,MAHOC,UAGP,QAHDC,MAGC;AAAA,MAFDC,KAEC,QAFDA,KAEC;AAAA,0BADDC,OACC;AAAA,MADDA,OACC,6BADS;AAAA,WAAM,IAAN;AAAA,GACT;;AACD,8BAA4BC,wBAAwB,CAACJ,UAAD,CAApD;AAAA;AAAA,MAAOC,MAAP;AAAA,MAAeI,SAAf;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,QAAwBC,IAAxB,EAAiC;AAAA,QAApBC,KAAoB,SAA9BC,MAA8B,CAApBD,KAAoB;AACnDH,IAAAA,SAAS,CAAC,UAAAK,UAAU,EAAI;AACtB,UAAMC,UAAU,GAAGT,KAAK,GAAGU,WAAW,CAACF,UAAD,EAAaF,KAAb,CAAd,GAAoCA,KAA5D;AACAL,MAAAA,OAAO,CAACQ,UAAD,EAAaJ,IAAb,CAAP;AACA,aAAOI,UAAP;AACD,KAJQ,CAAT;AAKD,GAND;;AAQA,SAAOE,KAAK,CAACC,QAAN,CAAeC,GAAf,CAAmBhB,QAAnB,EAA6B,UAAAiB,KAAK,EAAI;AAC3C,QAAQC,KAAR,GAAkBD,KAAlB,CAAQC,KAAR;AACA,QAAMC,OAAO,GAAGC,KAAK,CAACC,OAAN,CAAcnB,MAAd,IACZA,MAAM,CAACoB,OAAP,CAAeJ,KAAK,CAACK,IAArB,MAA+B,CAAC,CADpB,GAEZrB,MAAM,KAAKgB,KAAK,CAACK,IAFrB;AAIA,wBAAOC,YAAY,CAACP,KAAD,kCACdC,KADc;AAEjBC,MAAAA,OAAO,EAAPA,OAFiB;AAGjBM,MAAAA,OAAO,EAAEC,MAAM,CAACnB,WAAD,EAAcW,KAAK,CAACO,OAApB;AAHE,OAAnB;AAKD,GAXM,CAAP;AAYD;;AAED,SAASE,cAAT,QAIG;AAAA,2BAHDzB,MAGC;AAAA,MAHDA,MAGC,6BAHQ,EAGR;AAAA,0BAFDC,KAEC;AAAA,MAFDA,KAEC,4BAFO,KAEP;AAAA,MADDH,QACC,SADDA,QACC;AACD,SAAOD,iBAAiB,CAAC;AAAEG,IAAAA,MAAM,EAANA,MAAF;AAAUC,IAAAA,KAAK,EAALA,KAAV;AAAiBH,IAAAA,QAAQ,EAARA;AAAjB,GAAD,CAAxB;AACD;;AAED2B,cAAc,CAACC,SAAf,GAA2B;AACzB;AACA1B,EAAAA,MAAM,EAAE2B,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,CAFiB;;AAGzB;AACA5B,EAAAA,KAAK,EAAE0B,SAAS,CAACG,IAJQ;;AAKzB;AACA5B,EAAAA,OAAO,EAAEyB,SAAS,CAACI;AANM,CAA3B;;;;"}
1
+ {"version":3,"file":"CheckableGroup.js","sources":["../../src/CheckableGroup.tsx"],"sourcesContent":["import React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport { addOrRemove, runAll, useDerivedStateFromProps } from '@elliemae/ds-utilities';\n\nexport function useCheckableGroup({\n children,\n active: activeProp,\n multi,\n onCheck = () => null,\n}) {\n const [active, setActive] = useDerivedStateFromProps(activeProp);\n\n const handleCheck = ({ target: { value } }, item) => {\n setActive(prevActive => {\n const nextActive = multi ? addOrRemove(prevActive, value) : value;\n onCheck(nextActive, item);\n return nextActive;\n });\n };\n\n return React.Children.map(children, child => {\n const { props } = child;\n const checked = Array.isArray(active)\n ? active.indexOf(props.name) !== -1\n : active === props.name;\n\n return cloneElement(child, {\n ...props,\n checked,\n onClick: runAll(handleCheck, props.onClick),\n });\n });\n}\n\nfunction CheckableGroup({\n active = [],\n multi = false, // checkbox or radio\n children,\n}) {\n return useCheckableGroup({ active, multi, children });\n}\n\nCheckableGroup.propTypes = {\n /* The item (if multi false) or items (if multi true) selected */\n active: PropTypes.arrayOf(PropTypes.string),\n /* Whether is multi select or not */\n multi: PropTypes.bool,\n /* Handler when a user checks an item */\n onCheck: PropTypes.func,\n};\n\nexport default CheckableGroup;\n"],"names":["useCheckableGroup","children","activeProp","active","multi","onCheck","useDerivedStateFromProps","setActive","handleCheck","item","value","target","prevActive","nextActive","addOrRemove","React","Children","map","child","props","checked","Array","isArray","indexOf","name","cloneElement","onClick","runAll","CheckableGroup","propTypes","PropTypes","arrayOf","string","bool","func"],"mappings":";;;;;;;;;AAIO,SAASA,iBAAT,OAKJ;EAAA,IAJDC,QAIC,QAJDA,QAIC;MAHOC,UAGP,QAHDC,MAGC;MAFDC,KAEC,QAFDA,KAEC;0BADDC,OACC;MADDA,OACC,6BADS;IAAA,OAAM,IAAN;GACT;;EACD,4BAA4BC,wBAAwB,CAACJ,UAAD,CAApD;;MAAOC,MAAP;MAAeI,SAAf;;EAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,QAAwBC,IAAxB,EAAiC;IAAA,IAApBC,KAAoB,SAA9BC,MAA8B,CAApBD,KAAoB;IACnDH,SAAS,CAAC,UAAAK,UAAU,EAAI;MACtB,IAAMC,UAAU,GAAGT,KAAK,GAAGU,WAAW,CAACF,UAAD,EAAaF,KAAb,CAAd,GAAoCA,KAA5D;MACAL,OAAO,CAACQ,UAAD,EAAaJ,IAAb,CAAP;MACA,OAAOI,UAAP;KAHO,CAAT;GADF;;EAQA,OAAOE,KAAK,CAACC,QAAN,CAAeC,GAAf,CAAmBhB,QAAnB,EAA6B,UAAAiB,KAAK,EAAI;IAC3C,IAAQC,KAAR,GAAkBD,KAAlB,CAAQC,KAAR;IACA,IAAMC,OAAO,GAAGC,KAAK,CAACC,OAAN,CAAcnB,MAAd,IACZA,MAAM,CAACoB,OAAP,CAAeJ,KAAK,CAACK,IAArB,MAA+B,CAAC,CADpB,GAEZrB,MAAM,KAAKgB,KAAK,CAACK,IAFrB;IAIA,oBAAOC,YAAY,CAACP,KAAD,kCACdC,KADc;MAEjBC,OAAO,EAAPA,OAFiB;MAGjBM,OAAO,EAAEC,MAAM,CAACnB,WAAD,EAAcW,KAAK,CAACO,OAApB;OAHjB;GANK,CAAP;AAYD;;AAED,SAASE,cAAT,QAIG;EAAA,yBAHDzB,MAGC;MAHDA,MAGC,6BAHQ,EAGR;0BAFDC,KAEC;MAFDA,KAEC,4BAFO,KAEP;MADDH,QACC,SADDA,QACC;EACD,OAAOD,iBAAiB,CAAC;IAAEG,MAAM,EAANA,MAAF;IAAUC,KAAK,EAALA,KAAV;IAAiBH,QAAQ,EAARA;GAAlB,CAAxB;AACD;;AAED2B,cAAc,CAACC,SAAf,GAA2B;;EAEzB1B,MAAM,EAAE2B,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,MAA5B,CAFiB;;;EAIzB5B,KAAK,EAAE0B,SAAS,CAACG,IAJQ;;;EAMzB5B,OAAO,EAAEyB,SAAS,CAACI;AANM,CAA3B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeferRenderAfterComputation.js","sources":["../../src/DeferRenderAfterComputation.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport raf from 'raf';\n\nexport default function DeferRenderAfterComputation({\n children,\n resolve,\n fallback,\n timeout = 2000,\n}) {\n const [shouldRender, setShouldRender] = useState(false);\n\n useEffect(() => {\n // eslint-disable-next-line max-nested-callbacks\n raf(() =>\n raf(() =>\n resolve().then(() => {\n setShouldRender(true);\n }),\n ),\n );\n }, []);\n return shouldRender ? children : fallback;\n}\n"],"names":["DeferRenderAfterComputation","children","resolve","fallback","timeout","useState","shouldRender","setShouldRender","useEffect","raf","then"],"mappings":";;;;AAGe,SAASA,2BAAT,OAKZ;AAAA,MAJDC,QAIC,QAJDA,QAIC;AAAA,MAHDC,OAGC,QAHDA,OAGC;AAAA,MAFDC,QAEC,QAFDA,QAEC;AAAA,WADDC,OACC;;AACD,kBAAwCC,QAAQ,CAAC,KAAD,CAAhD;AAAA;AAAA,MAAOC,YAAP;AAAA,MAAqBC,eAArB;;AAEAC,EAAAA,SAAS,CAAC,YAAM;AACd;AACAC,IAAAA,GAAG,CAAC;AAAA,aACFA,GAAG,CAAC;AAAA,eACFP,OAAO,GAAGQ,IAAV,CAAe,YAAM;AACnBH,UAAAA,eAAe,CAAC,IAAD,CAAf;AACD,SAFD,CADE;AAAA,OAAD,CADD;AAAA,KAAD,CAAH;AAOD,GATQ,EASN,EATM,CAAT;AAUA,SAAOD,YAAY,GAAGL,QAAH,GAAcE,QAAjC;AACD;;;;"}
1
+ {"version":3,"file":"DeferRenderAfterComputation.js","sources":["../../src/DeferRenderAfterComputation.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport raf from 'raf';\n\nexport default function DeferRenderAfterComputation({\n children,\n resolve,\n fallback,\n timeout = 2000,\n}) {\n const [shouldRender, setShouldRender] = useState(false);\n\n useEffect(() => {\n // eslint-disable-next-line max-nested-callbacks\n raf(() =>\n raf(() =>\n resolve().then(() => {\n setShouldRender(true);\n }),\n ),\n );\n }, []);\n return shouldRender ? children : fallback;\n}\n"],"names":["DeferRenderAfterComputation","children","resolve","fallback","timeout","useState","shouldRender","setShouldRender","useEffect","raf","then"],"mappings":";;;;AAGe,SAASA,2BAAT,OAKZ;MAJDC,QAIC,QAJDA,QAIC;MAHDC,OAGC,QAHDA,OAGC;MAFDC,QAEC,QAFDA,QAEC;WADDC,OACC;;EACD,gBAAwCC,QAAQ,CAAC,KAAD,CAAhD;;MAAOC,YAAP;MAAqBC,eAArB;;EAEAC,SAAS,CAAC,YAAM;;IAEdC,GAAG,CAAC;MAAA,OACFA,GAAG,CAAC;QAAA,OACFP,OAAO,GAAGQ,IAAV,CAAe,YAAM;UACnBH,eAAe,CAAC,IAAD,CAAf;SADF,CADE;OAAD,CADD;KAAD,CAAH;GAFO,EASN,EATM,CAAT;EAUA,OAAOD,YAAY,GAAGL,QAAH,GAAcE,QAAjC;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FocusGrid.js","sources":["../../../src/FocusGroup/FocusGrid.tsx"],"sourcesContent":["import React, { createContext, useEffect, useMemo, useRef } from 'react';\nimport { isFunction, runAll, get, useHotkeys, mergeRefs } from '@elliemae/ds-utilities';\nimport getNextCellPosition from './utils/getNextCellPosition';\n\nexport const FocusGridContext = createContext();\nconst { Provider } = FocusGridContext;\n\nconst preventDefault = e => e.preventDefault();\n\nfunction registerHotKeysHooks(hotKeys, { focusedRow, focusedCell }) {\n Object.keys(hotKeys).forEach(key => {\n const { handler, options } = hotKeys[key];\n useHotkeys({\n keys: key,\n handler: e => {\n e.preventDefault();\n handler({\n rowIndex: focusedRow.current,\n cellIndex: focusedCell.current,\n });\n },\n options,\n });\n });\n}\n\n// eslint-disable-next-line max-statements\nexport default function FocusGridProvider({\n shouldWrapRows = false,\n shouldWrapCells = false,\n shouldRefocus = true,\n children,\n keyBindings,\n hotKeys,\n}) {\n const focusedRow = useRef();\n const focusedCell = useRef();\n const grid = useRef([]);\n const containerRef = useRef(document);\n const child = React.Children.only(children);\n const decoratedChild = React.cloneElement(child, {\n innerRef: mergeRefs(child.props.innerRef, containerRef),\n });\n\n const getNode = ({ rowIndex, cellIndex }) =>\n get(grid.current, [rowIndex, cellIndex]);\n\n const register = (node, rowIndex, columnIndex) => {\n if (!node) return;\n if (!Array.isArray(grid.current[rowIndex])) {\n grid.current[rowIndex] = [];\n }\n\n if (rowIndex === 0 && columnIndex === 0) {\n node.setAttribute('tabindex', 0);\n } else {\n node.setAttribute('tabindex', -1);\n }\n\n node.onfocus = () => {\n const prevNode = getNode({\n rowIndex: focusedRow.current,\n cellIndex: focusedCell.current,\n });\n\n if (prevNode) prevNode.setAttribute('tabindex', -1);\n\n node.setAttribute('tabindex', 0);\n focusedRow.current = rowIndex;\n focusedCell.current = columnIndex;\n };\n grid.current[rowIndex][columnIndex] = node;\n };\n\n useEffect(() => {\n if (shouldRefocus) {\n const rowIndex = focusedRow.current;\n const cellIndex = focusedCell.current;\n\n const node = get(grid.current, [rowIndex, cellIndex]);\n if (node) node.focus();\n }\n });\n\n const focusNextCell = (directionY, directionX, position) => {\n const { rowIndex, cellIndex } =\n position ||\n getNextCellPosition({\n grid: grid.current,\n currentCell: focusedCell.current,\n currentRow: focusedRow.current,\n directionX,\n directionY,\n shouldWrapCells,\n shouldWrapRows,\n });\n\n const node = getNode({ rowIndex, cellIndex });\n\n // can focus\n if (node) {\n node.focus();\n focusedRow.current = rowIndex;\n focusedCell.current = cellIndex;\n }\n };\n\n registerHotKeysHooks(hotKeys, { focusedCell, focusedRow });\n\n const defaultKeyBindings = {\n ArrowUp: runAll(preventDefault, () => focusNextCell(-1, 0)),\n ArrowRight: runAll(preventDefault, () => focusNextCell(0, 1)),\n ArrowDown: runAll(preventDefault, () => focusNextCell(1, 0)),\n ArrowLeft: runAll(preventDefault, () => focusNextCell(0, -1)),\n Home: runAll(preventDefault, e => {\n let rowIndex = focusedRow.current;\n if (e.ctrlKey) {\n rowIndex = 0;\n }\n focusNextCell(0, 0, { rowIndex, cellIndex: 0 });\n }),\n End: runAll(preventDefault, e => {\n let rowIndex = focusedRow.current;\n if (e.ctrlKey) {\n rowIndex = grid.current.length - 1;\n }\n focusNextCell(0, 0, { rowIndex, cellIndex: grid.current[0].length - 1 });\n }),\n ...keyBindings,\n };\n const nextKeyBindings = isFunction(keyBindings)\n ? keyBindings({\n defaultBindings: defaultKeyBindings,\n rowIndex: focusedRow.current,\n cellIndex: focusedCell.current,\n })\n : { ...defaultKeyBindings, ...keyBindings };\n\n const onKeyDown = e => {\n if (e.target.tagName.toLowerCase() === 'input') return;\n const action = nextKeyBindings[e.key];\n if (isFunction(action)) action(e);\n };\n\n const activate = container => {\n container.addEventListener('keydown', onKeyDown, true);\n };\n\n const deactivate = container => {\n container.removeEventListener('keydown', onKeyDown, true);\n };\n\n useEffect(() => {\n activate(containerRef.current);\n return () => {\n deactivate(containerRef.current);\n };\n }, []);\n\n const valueProvider = useMemo(\n () => ({\n register,\n }),\n [],\n );\n\n return <Provider value={valueProvider}>{decoratedChild}</Provider>;\n}\n"],"names":["FocusGridContext","createContext","Provider","preventDefault","e","registerHotKeysHooks","hotKeys","focusedRow","focusedCell","Object","keys","forEach","key","handler","options","useHotkeys","rowIndex","current","cellIndex","FocusGridProvider","shouldWrapRows","shouldWrapCells","shouldRefocus","children","keyBindings","useRef","grid","containerRef","document","child","React","Children","only","decoratedChild","cloneElement","innerRef","mergeRefs","props","getNode","get","register","node","columnIndex","Array","isArray","setAttribute","onfocus","prevNode","useEffect","focus","focusNextCell","directionY","directionX","position","getNextCellPosition","currentCell","currentRow","defaultKeyBindings","ArrowUp","runAll","ArrowRight","ArrowDown","ArrowLeft","Home","ctrlKey","End","length","nextKeyBindings","isFunction","defaultBindings","onKeyDown","target","tagName","toLowerCase","action","activate","container","addEventListener","deactivate","removeEventListener","valueProvider","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"FocusGrid.js","sources":["../../../src/FocusGroup/FocusGrid.tsx"],"sourcesContent":["import React, { createContext, useEffect, useMemo, useRef } from 'react';\nimport { isFunction, runAll, get, useHotkeys, mergeRefs } from '@elliemae/ds-utilities';\nimport getNextCellPosition from './utils/getNextCellPosition';\n\nexport const FocusGridContext = createContext();\nconst { Provider } = FocusGridContext;\n\nconst preventDefault = e => e.preventDefault();\n\nfunction registerHotKeysHooks(hotKeys, { focusedRow, focusedCell }) {\n Object.keys(hotKeys).forEach(key => {\n const { handler, options } = hotKeys[key];\n useHotkeys({\n keys: key,\n handler: e => {\n e.preventDefault();\n handler({\n rowIndex: focusedRow.current,\n cellIndex: focusedCell.current,\n });\n },\n options,\n });\n });\n}\n\n// eslint-disable-next-line max-statements\nexport default function FocusGridProvider({\n shouldWrapRows = false,\n shouldWrapCells = false,\n shouldRefocus = true,\n children,\n keyBindings,\n hotKeys,\n}) {\n const focusedRow = useRef();\n const focusedCell = useRef();\n const grid = useRef([]);\n const containerRef = useRef(document);\n const child = React.Children.only(children);\n const decoratedChild = React.cloneElement(child, {\n innerRef: mergeRefs(child.props.innerRef, containerRef),\n });\n\n const getNode = ({ rowIndex, cellIndex }) =>\n get(grid.current, [rowIndex, cellIndex]);\n\n const register = (node, rowIndex, columnIndex) => {\n if (!node) return;\n if (!Array.isArray(grid.current[rowIndex])) {\n grid.current[rowIndex] = [];\n }\n\n if (rowIndex === 0 && columnIndex === 0) {\n node.setAttribute('tabindex', 0);\n } else {\n node.setAttribute('tabindex', -1);\n }\n\n node.onfocus = () => {\n const prevNode = getNode({\n rowIndex: focusedRow.current,\n cellIndex: focusedCell.current,\n });\n\n if (prevNode) prevNode.setAttribute('tabindex', -1);\n\n node.setAttribute('tabindex', 0);\n focusedRow.current = rowIndex;\n focusedCell.current = columnIndex;\n };\n grid.current[rowIndex][columnIndex] = node;\n };\n\n useEffect(() => {\n if (shouldRefocus) {\n const rowIndex = focusedRow.current;\n const cellIndex = focusedCell.current;\n\n const node = get(grid.current, [rowIndex, cellIndex]);\n if (node) node.focus();\n }\n });\n\n const focusNextCell = (directionY, directionX, position) => {\n const { rowIndex, cellIndex } =\n position ||\n getNextCellPosition({\n grid: grid.current,\n currentCell: focusedCell.current,\n currentRow: focusedRow.current,\n directionX,\n directionY,\n shouldWrapCells,\n shouldWrapRows,\n });\n\n const node = getNode({ rowIndex, cellIndex });\n\n // can focus\n if (node) {\n node.focus();\n focusedRow.current = rowIndex;\n focusedCell.current = cellIndex;\n }\n };\n\n registerHotKeysHooks(hotKeys, { focusedCell, focusedRow });\n\n const defaultKeyBindings = {\n ArrowUp: runAll(preventDefault, () => focusNextCell(-1, 0)),\n ArrowRight: runAll(preventDefault, () => focusNextCell(0, 1)),\n ArrowDown: runAll(preventDefault, () => focusNextCell(1, 0)),\n ArrowLeft: runAll(preventDefault, () => focusNextCell(0, -1)),\n Home: runAll(preventDefault, e => {\n let rowIndex = focusedRow.current;\n if (e.ctrlKey) {\n rowIndex = 0;\n }\n focusNextCell(0, 0, { rowIndex, cellIndex: 0 });\n }),\n End: runAll(preventDefault, e => {\n let rowIndex = focusedRow.current;\n if (e.ctrlKey) {\n rowIndex = grid.current.length - 1;\n }\n focusNextCell(0, 0, { rowIndex, cellIndex: grid.current[0].length - 1 });\n }),\n ...keyBindings,\n };\n const nextKeyBindings = isFunction(keyBindings)\n ? keyBindings({\n defaultBindings: defaultKeyBindings,\n rowIndex: focusedRow.current,\n cellIndex: focusedCell.current,\n })\n : { ...defaultKeyBindings, ...keyBindings };\n\n const onKeyDown = e => {\n if (e.target.tagName.toLowerCase() === 'input') return;\n const action = nextKeyBindings[e.key];\n if (isFunction(action)) action(e);\n };\n\n const activate = container => {\n container.addEventListener('keydown', onKeyDown, true);\n };\n\n const deactivate = container => {\n container.removeEventListener('keydown', onKeyDown, true);\n };\n\n useEffect(() => {\n activate(containerRef.current);\n return () => {\n deactivate(containerRef.current);\n };\n }, []);\n\n const valueProvider = useMemo(\n () => ({\n register,\n }),\n [],\n );\n\n return <Provider value={valueProvider}>{decoratedChild}</Provider>;\n}\n"],"names":["FocusGridContext","createContext","Provider","preventDefault","e","registerHotKeysHooks","hotKeys","focusedRow","focusedCell","Object","keys","forEach","key","handler","options","useHotkeys","rowIndex","current","cellIndex","FocusGridProvider","shouldWrapRows","shouldWrapCells","shouldRefocus","children","keyBindings","useRef","grid","containerRef","document","child","React","Children","only","decoratedChild","cloneElement","innerRef","mergeRefs","props","getNode","get","register","node","columnIndex","Array","isArray","setAttribute","onfocus","prevNode","useEffect","focus","focusNextCell","directionY","directionX","position","getNextCellPosition","currentCell","currentRow","defaultKeyBindings","ArrowUp","runAll","ArrowRight","ArrowDown","ArrowLeft","Home","ctrlKey","End","length","nextKeyBindings","isFunction","defaultBindings","onKeyDown","target","tagName","toLowerCase","action","activate","container","addEventListener","deactivate","removeEventListener","valueProvider","useMemo"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FocusGroup.js","sources":["../../../src/FocusGroup/FocusGroup.tsx"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { isFunction, get } from '@elliemae/ds-utilities';\nimport hotkeys from 'hotkeys-js';\n\nconst defaultOptions = {\n orientation: 'vertical',\n};\n\nconst safeCallAction = (e, fun, ...args) => {\n if (isFunction(fun)) {\n e.preventDefault();\n fun(...args);\n }\n};\n\nconst registerHotkeys = (\n hotKeys = {},\n params,\n getContainer = () => document,\n) => {\n Object.keys(hotKeys).forEach((hotkey) => {\n const { options, handler, allowDocumentHandler = false } = hotKeys[hotkey];\n const parameterizedHandler = (e) => {\n const handlerParams = isFunction(params) ? params() : params;\n if (\n !allowDocumentHandler &&\n handlerParams.item !== document.activeElement\n )\n return;\n e.preventDefault();\n handler(handlerParams);\n };\n hotkeys(\n hotkey,\n { element: getContainer(), ...options },\n parameterizedHandler,\n );\n });\n};\n\nconst unregisterHotKeys = (hotKeys = {}) => {\n Object.keys(hotKeys).forEach((hotkey) => {\n hotkeys.unbind(hotkey);\n });\n};\n\nconst noop = () => null;\n\nexport default class FocusGroup {\n items = [];\n\n constructor(options = {}) {\n this.options = { ...defaultOptions, ...options };\n\n const { orientation } = this.options;\n\n this.keyBindings = {\n ArrowUp: orientation !== 'horizontal' && 'previous',\n ArrowRight: orientation !== 'vertical' && 'next',\n ArrowDown: orientation !== 'horizontal' && 'next',\n ArrowLeft: orientation !== 'vertical' && 'previous',\n Home: 'first',\n End: 'last',\n PageUp: 'first',\n PageDown: 'last',\n Escape: 'exit',\n ...options.keyBindings,\n };\n\n this.currentFocusedItem = null;\n this.currIndex = null;\n\n this.mapActions = {\n previous: this.focusPrevious.bind(this),\n next: this.focusNext.bind(this),\n first: this.focusFirst.bind(this),\n last: this.focusLast.bind(this),\n exit: this.exit.bind(this),\n enter: () => null,\n };\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.register = this.register.bind(this);\n this.focusFirst = this.focusFirst.bind(this);\n this.focusLast = this.focusLast.bind(this);\n this.isGroupActive = this.isGroupActive.bind(this);\n this.focusNext = this.focusNext.bind(this);\n this.focusPrevious = this.focusPrevious.bind(this);\n this.focusItem = this.focusItem.bind(this);\n this.focusCurrent = this.focusCurrent.bind(this);\n this.getHotKeysParams = this.getHotKeysParams.bind(this);\n }\n\n getHotKeysParams() {\n const item = this.currentFocusedItem;\n const { index } = get(item, ['dataset'], {});\n return {\n item,\n index,\n };\n }\n\n activate() {\n const { getContainer } = this.options;\n document.addEventListener('keydown', this.handleKeyDown, true);\n registerHotkeys(this.options.hotKeys, this.getHotKeysParams, getContainer);\n }\n\n deactivate() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n unregisterHotKeys(this.options.hotKeys);\n }\n\n handleKeyDown(e) {\n if (!this.isGroupActive()) return;\n this.executeActionByEvent(e);\n }\n\n executeActionByEvent(e) {\n const actions = Array.isArray(this.keyBindings[e.key])\n ? this.keyBindings[e.key]\n : [this.keyBindings[e.key]];\n return actions.map((action) =>\n typeof action === 'string'\n ? safeCallAction(e, this.mapActions[action])\n : safeCallAction(e, action),\n );\n }\n\n register(node, props = {}) {\n const afterIndex = this.items.findIndex(\n (item) =>\n item.compareDocumentPosition(node) === Node.DOCUMENT_POSITION_PRECEDING,\n );\n node.specialOnFocus = props.onFocus || noop;\n node.specialOnBlur = props.onBlur || noop;\n node.onclick = () => this.focusItem(node);\n node.onfocus = () => {\n this.focusItem(node);\n };\n if (afterIndex === -1) {\n this.items.push(node);\n } else {\n this.items.splice(afterIndex, 0, node);\n }\n }\n\n unregister(node) {\n const index = this.getItemIndexByNode(node);\n if (index > -1) this.items.splice(index, 1);\n }\n\n exit() {\n const { onExitFocusGroup } = this.options;\n onExitFocusGroup();\n }\n\n focusItem(node) {\n if (this.currentFocusedItem && this.currentFocusedItem !== node) {\n this.currentFocusedItem.specialOnBlur();\n this.currentFocusedItem.setAttribute('tabindex', -1);\n }\n if (!node) return;\n this.currentFocusedItem = node;\n node.setAttribute('tabindex', 0);\n node.focus();\n node.specialOnFocus();\n }\n\n focusNext() {\n const item = this.getNextItem();\n this.focusItem(item);\n }\n\n focusByNode(node) {\n const index = this.getItemIndexByNode(node);\n this.focusByIndex(index);\n }\n\n focusByIndex(index) {\n const item = this.getItemByIndex(index);\n this.focusItem(item);\n }\n\n focusPrevious() {\n const prevItem = this.getPreviousItem();\n this.focusItem(prevItem);\n }\n\n focusFirst() {\n const item = this.getFirstItem();\n this.focusItem(item);\n }\n\n focusLast() {\n const item = this.getLastItem();\n this.focusItem(item);\n }\n\n focusCurrent() {\n this.focusItem(this.currentFocusedItem);\n }\n\n focusNextGroup() {\n const { onFocusNextGroup } = this.options;\n this.exit();\n onFocusNextGroup();\n }\n\n focusPreviousGroup() {\n const { onFocusPreviousGroup } = this.options;\n this.exit();\n onFocusPreviousGroup();\n }\n\n getNextItem() {\n const { loop } = this.options;\n const currentIndex = this.getFocusedIndex();\n const supposedNextIndex = currentIndex + 1;\n if (!this.checkCanFocusNext(supposedNextIndex)) {\n return loop ? this.getFirstItem() : this.focusNextGroup();\n }\n return this.getItemByIndex(supposedNextIndex);\n }\n\n getPreviousItem() {\n const { loop } = this.options;\n const currentIndex = this.getFocusedIndex();\n const supposedPrevIndex = currentIndex - 1;\n if (!this.checkCanFocusPrev(supposedPrevIndex)) {\n return loop ? this.getLastItem() : this.focusPreviousGroup();\n }\n return this.getItemByIndex(supposedPrevIndex);\n }\n\n checkCanFocusNext(index) {\n return this.items.length > index;\n }\n\n checkCanFocusPrev(index) {\n return index >= 0;\n }\n\n getItemByIndex(index) {\n return this.items[index];\n }\n\n getItemIndexByNode(node) {\n return this.items.findIndex((item) => item === node);\n }\n\n getFocusedIndex() {\n return this.getItemIndexByNode(document.activeElement);\n }\n\n getFocusedItem() {\n const index = this.getFocusedIndex();\n return index > -1 && this.items[index];\n }\n\n isGroupActive() {\n return this.getFocusedIndex() !== -1;\n }\n\n getFirstItem() {\n return !!this.items.length && this.items[0];\n }\n\n getLastItem() {\n return !!this.items.length && this.items[this.items.length - 1];\n }\n}\n"],"names":["defaultOptions","orientation","safeCallAction","e","fun","isFunction","preventDefault","args","registerHotkeys","hotKeys","params","getContainer","document","Object","keys","forEach","hotkey","options","handler","allowDocumentHandler","parameterizedHandler","handlerParams","item","activeElement","hotkeys","element","unregisterHotKeys","unbind","noop","FocusGroup","items","keyBindings","ArrowUp","ArrowRight","ArrowDown","ArrowLeft","Home","End","PageUp","PageDown","Escape","currentFocusedItem","currIndex","mapActions","previous","focusPrevious","bind","next","focusNext","first","focusFirst","last","focusLast","exit","enter","handleKeyDown","register","isGroupActive","focusItem","focusCurrent","getHotKeysParams","get","index","addEventListener","removeEventListener","executeActionByEvent","actions","Array","isArray","key","map","action","node","props","afterIndex","findIndex","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","specialOnFocus","onFocus","specialOnBlur","onBlur","onclick","onfocus","push","splice","getItemIndexByNode","onExitFocusGroup","setAttribute","focus","getNextItem","focusByIndex","getItemByIndex","prevItem","getPreviousItem","getFirstItem","getLastItem","onFocusNextGroup","onFocusPreviousGroup","loop","currentIndex","getFocusedIndex","supposedNextIndex","checkCanFocusNext","focusNextGroup","supposedPrevIndex","checkCanFocusPrev","focusPreviousGroup","length"],"mappings":"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"}
1
+ {"version":3,"file":"FocusGroup.js","sources":["../../../src/FocusGroup/FocusGroup.tsx"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { isFunction, get } from '@elliemae/ds-utilities';\nimport hotkeys from 'hotkeys-js';\n\nconst defaultOptions = {\n orientation: 'vertical',\n};\n\nconst safeCallAction = (e, fun, ...args) => {\n if (isFunction(fun)) {\n e.preventDefault();\n fun(...args);\n }\n};\n\nconst registerHotkeys = (\n hotKeys = {},\n params,\n getContainer = () => document,\n) => {\n Object.keys(hotKeys).forEach((hotkey) => {\n const { options, handler, allowDocumentHandler = false } = hotKeys[hotkey];\n const parameterizedHandler = (e) => {\n const handlerParams = isFunction(params) ? params() : params;\n if (\n !allowDocumentHandler &&\n handlerParams.item !== document.activeElement\n )\n return;\n e.preventDefault();\n handler(handlerParams);\n };\n hotkeys(\n hotkey,\n { element: getContainer(), ...options },\n parameterizedHandler,\n );\n });\n};\n\nconst unregisterHotKeys = (hotKeys = {}) => {\n Object.keys(hotKeys).forEach((hotkey) => {\n hotkeys.unbind(hotkey);\n });\n};\n\nconst noop = () => null;\n\nexport default class FocusGroup {\n items = [];\n\n constructor(options = {}) {\n this.options = { ...defaultOptions, ...options };\n\n const { orientation } = this.options;\n\n this.keyBindings = {\n ArrowUp: orientation !== 'horizontal' && 'previous',\n ArrowRight: orientation !== 'vertical' && 'next',\n ArrowDown: orientation !== 'horizontal' && 'next',\n ArrowLeft: orientation !== 'vertical' && 'previous',\n Home: 'first',\n End: 'last',\n PageUp: 'first',\n PageDown: 'last',\n Escape: 'exit',\n ...options.keyBindings,\n };\n\n this.currentFocusedItem = null;\n this.currIndex = null;\n\n this.mapActions = {\n previous: this.focusPrevious.bind(this),\n next: this.focusNext.bind(this),\n first: this.focusFirst.bind(this),\n last: this.focusLast.bind(this),\n exit: this.exit.bind(this),\n enter: () => null,\n };\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.register = this.register.bind(this);\n this.focusFirst = this.focusFirst.bind(this);\n this.focusLast = this.focusLast.bind(this);\n this.isGroupActive = this.isGroupActive.bind(this);\n this.focusNext = this.focusNext.bind(this);\n this.focusPrevious = this.focusPrevious.bind(this);\n this.focusItem = this.focusItem.bind(this);\n this.focusCurrent = this.focusCurrent.bind(this);\n this.getHotKeysParams = this.getHotKeysParams.bind(this);\n }\n\n getHotKeysParams() {\n const item = this.currentFocusedItem;\n const { index } = get(item, ['dataset'], {});\n return {\n item,\n index,\n };\n }\n\n activate() {\n const { getContainer } = this.options;\n document.addEventListener('keydown', this.handleKeyDown, true);\n registerHotkeys(this.options.hotKeys, this.getHotKeysParams, getContainer);\n }\n\n deactivate() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n unregisterHotKeys(this.options.hotKeys);\n }\n\n handleKeyDown(e) {\n if (!this.isGroupActive()) return;\n this.executeActionByEvent(e);\n }\n\n executeActionByEvent(e) {\n const actions = Array.isArray(this.keyBindings[e.key])\n ? this.keyBindings[e.key]\n : [this.keyBindings[e.key]];\n return actions.map((action) =>\n typeof action === 'string'\n ? safeCallAction(e, this.mapActions[action])\n : safeCallAction(e, action),\n );\n }\n\n register(node, props = {}) {\n const afterIndex = this.items.findIndex(\n (item) =>\n item.compareDocumentPosition(node) === Node.DOCUMENT_POSITION_PRECEDING,\n );\n node.specialOnFocus = props.onFocus || noop;\n node.specialOnBlur = props.onBlur || noop;\n node.onclick = () => this.focusItem(node);\n node.onfocus = () => {\n this.focusItem(node);\n };\n if (afterIndex === -1) {\n this.items.push(node);\n } else {\n this.items.splice(afterIndex, 0, node);\n }\n }\n\n unregister(node) {\n const index = this.getItemIndexByNode(node);\n if (index > -1) this.items.splice(index, 1);\n }\n\n exit() {\n const { onExitFocusGroup } = this.options;\n onExitFocusGroup();\n }\n\n focusItem(node) {\n if (this.currentFocusedItem && this.currentFocusedItem !== node) {\n this.currentFocusedItem.specialOnBlur();\n this.currentFocusedItem.setAttribute('tabindex', -1);\n }\n if (!node) return;\n this.currentFocusedItem = node;\n node.setAttribute('tabindex', 0);\n node.focus();\n node.specialOnFocus();\n }\n\n focusNext() {\n const item = this.getNextItem();\n this.focusItem(item);\n }\n\n focusByNode(node) {\n const index = this.getItemIndexByNode(node);\n this.focusByIndex(index);\n }\n\n focusByIndex(index) {\n const item = this.getItemByIndex(index);\n this.focusItem(item);\n }\n\n focusPrevious() {\n const prevItem = this.getPreviousItem();\n this.focusItem(prevItem);\n }\n\n focusFirst() {\n const item = this.getFirstItem();\n this.focusItem(item);\n }\n\n focusLast() {\n const item = this.getLastItem();\n this.focusItem(item);\n }\n\n focusCurrent() {\n this.focusItem(this.currentFocusedItem);\n }\n\n focusNextGroup() {\n const { onFocusNextGroup } = this.options;\n this.exit();\n onFocusNextGroup();\n }\n\n focusPreviousGroup() {\n const { onFocusPreviousGroup } = this.options;\n this.exit();\n onFocusPreviousGroup();\n }\n\n getNextItem() {\n const { loop } = this.options;\n const currentIndex = this.getFocusedIndex();\n const supposedNextIndex = currentIndex + 1;\n if (!this.checkCanFocusNext(supposedNextIndex)) {\n return loop ? this.getFirstItem() : this.focusNextGroup();\n }\n return this.getItemByIndex(supposedNextIndex);\n }\n\n getPreviousItem() {\n const { loop } = this.options;\n const currentIndex = this.getFocusedIndex();\n const supposedPrevIndex = currentIndex - 1;\n if (!this.checkCanFocusPrev(supposedPrevIndex)) {\n return loop ? this.getLastItem() : this.focusPreviousGroup();\n }\n return this.getItemByIndex(supposedPrevIndex);\n }\n\n checkCanFocusNext(index) {\n return this.items.length > index;\n }\n\n checkCanFocusPrev(index) {\n return index >= 0;\n }\n\n getItemByIndex(index) {\n return this.items[index];\n }\n\n getItemIndexByNode(node) {\n return this.items.findIndex((item) => item === node);\n }\n\n getFocusedIndex() {\n return this.getItemIndexByNode(document.activeElement);\n }\n\n getFocusedItem() {\n const index = this.getFocusedIndex();\n return index > -1 && this.items[index];\n }\n\n isGroupActive() {\n return this.getFocusedIndex() !== -1;\n }\n\n getFirstItem() {\n return !!this.items.length && this.items[0];\n }\n\n getLastItem() {\n return !!this.items.length && this.items[this.items.length - 1];\n }\n}\n"],"names":["defaultOptions","orientation","safeCallAction","e","fun","isFunction","preventDefault","args","registerHotkeys","hotKeys","params","getContainer","document","Object","keys","forEach","hotkey","options","handler","allowDocumentHandler","parameterizedHandler","handlerParams","item","activeElement","hotkeys","element","unregisterHotKeys","unbind","noop","FocusGroup","items","keyBindings","ArrowUp","ArrowRight","ArrowDown","ArrowLeft","Home","End","PageUp","PageDown","Escape","currentFocusedItem","currIndex","mapActions","previous","focusPrevious","bind","next","focusNext","first","focusFirst","last","focusLast","exit","enter","handleKeyDown","register","isGroupActive","focusItem","focusCurrent","getHotKeysParams","get","index","addEventListener","removeEventListener","executeActionByEvent","actions","Array","isArray","key","map","action","node","props","afterIndex","findIndex","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","specialOnFocus","onFocus","specialOnBlur","onBlur","onclick","onfocus","push","splice","getItemIndexByNode","onExitFocusGroup","setAttribute","focus","getNextItem","focusByIndex","getItemByIndex","prevItem","getPreviousItem","getFirstItem","getLastItem","onFocusNextGroup","onFocusPreviousGroup","loop","currentIndex","getFocusedIndex","supposedNextIndex","checkCanFocusNext","focusNextGroup","supposedPrevIndex","checkCanFocusPrev","focusPreviousGroup","length"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FocusGroupManager.js","sources":["../../../src/FocusGroup/FocusGroupManager.tsx"],"sourcesContent":["import React, { Component, useEffect } from 'react';\nimport { isFunction } from '@elliemae/ds-utilities';\nimport FocusGroup from './FocusGroup';\nimport FocusGroupContext from './FocusGroupContext';\n\nconst noop = () => null;\n\nexport default class FocusGroupProvider extends Component {\n activated = false;\n\n static defaultProps = {\n exitWhenNoPrevious: false,\n exitWhenNoNext: false,\n keyBindings: {},\n onFocus: noop,\n onExitFocusGroup: noop,\n onFocusPreviousGroup: noop,\n onFocusNextGroup: noop,\n onFocusGroupSet: noop,\n };\n\n constructor(props) {\n super(props);\n\n this.focusGroup = new FocusGroup(props);\n\n props.onFocusGroupSet(this);\n\n this.actions = {\n activate: this.activate.bind(this),\n deactivate: this.deactivate.bind(this),\n register: this.focusGroup.register,\n unregister: this.unregister.bind(this),\n focusFirst: this.focusGroup.focusFirst,\n focusLast: this.focusGroup.focusLast,\n focusItemByIndex: this.focusItemByIndex.bind(this),\n focusItemByNode: this.focusItemByNode.bind(this),\n focus: this.focusGroup.focusCurrent,\n isGroupActive: this.focusGroup.isGroupActive,\n focusNext: this.focusGroup.focusNext,\n focusPrevious: this.focusGroup.focusPrevious,\n };\n }\n\n componentDidMount() {\n const { autoFocusOnMount } = this.props;\n\n this.activate();\n\n if (autoFocusOnMount) {\n setTimeout(() => {\n this.actions.focusFirst();\n }, 0);\n }\n }\n\n componentWillUnmount() {\n this.deactivate();\n }\n\n activate() {\n const { onActivate } = this.props;\n this.focusGroup.activate();\n this.activated = true;\n if (isFunction(onActivate)) onActivate();\n }\n\n deactivate() {\n const { onExitFocusGroup } = this.props;\n this.activated = false;\n this.focusGroup.deactivate();\n if (isFunction(onExitFocusGroup)) {\n onExitFocusGroup();\n }\n }\n\n register(item) {\n this.focusGroup.register(item);\n }\n\n unregister(item) {\n this.focusGroup.unregister(item);\n }\n\n focusItemByIndex(index) {\n if (!this.activated) this.activate();\n setTimeout(() => {\n this.focusGroup.focusByIndex(index);\n }, 200);\n }\n\n focusItemByNode(node) {\n if (!this.activated) this.activate();\n const index = this.focusGroup.getItemIndexByNode(node);\n this.focusItemByIndex(index);\n }\n\n render() {\n const { children } = this.props;\n return (\n <FocusGroupContext.Provider value={this.actions}>\n {children}\n </FocusGroupContext.Provider>\n );\n }\n}\n"],"names":["noop","FocusGroupProvider","props","activated","focusGroup","FocusGroup","onFocusGroupSet","actions","activate","bind","deactivate","register","unregister","focusFirst","focusLast","focusItemByIndex","focusItemByNode","focus","focusCurrent","isGroupActive","focusNext","focusPrevious","autoFocusOnMount","setTimeout","onActivate","isFunction","onExitFocusGroup","item","index","focusByIndex","node","getItemIndexByNode","children","Component","defaultProps","exitWhenNoPrevious","exitWhenNoNext","keyBindings","onFocus","onFocusPreviousGroup","onFocusNextGroup"],"mappings":"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"}
1
+ {"version":3,"file":"FocusGroupManager.js","sources":["../../../src/FocusGroup/FocusGroupManager.tsx"],"sourcesContent":["import React, { Component, useEffect } from 'react';\nimport { isFunction } from '@elliemae/ds-utilities';\nimport FocusGroup from './FocusGroup';\nimport FocusGroupContext from './FocusGroupContext';\n\nconst noop = () => null;\n\nexport default class FocusGroupProvider extends Component {\n activated = false;\n\n static defaultProps = {\n exitWhenNoPrevious: false,\n exitWhenNoNext: false,\n keyBindings: {},\n onFocus: noop,\n onExitFocusGroup: noop,\n onFocusPreviousGroup: noop,\n onFocusNextGroup: noop,\n onFocusGroupSet: noop,\n };\n\n constructor(props) {\n super(props);\n\n this.focusGroup = new FocusGroup(props);\n\n props.onFocusGroupSet(this);\n\n this.actions = {\n activate: this.activate.bind(this),\n deactivate: this.deactivate.bind(this),\n register: this.focusGroup.register,\n unregister: this.unregister.bind(this),\n focusFirst: this.focusGroup.focusFirst,\n focusLast: this.focusGroup.focusLast,\n focusItemByIndex: this.focusItemByIndex.bind(this),\n focusItemByNode: this.focusItemByNode.bind(this),\n focus: this.focusGroup.focusCurrent,\n isGroupActive: this.focusGroup.isGroupActive,\n focusNext: this.focusGroup.focusNext,\n focusPrevious: this.focusGroup.focusPrevious,\n };\n }\n\n componentDidMount() {\n const { autoFocusOnMount } = this.props;\n\n this.activate();\n\n if (autoFocusOnMount) {\n setTimeout(() => {\n this.actions.focusFirst();\n }, 0);\n }\n }\n\n componentWillUnmount() {\n this.deactivate();\n }\n\n activate() {\n const { onActivate } = this.props;\n this.focusGroup.activate();\n this.activated = true;\n if (isFunction(onActivate)) onActivate();\n }\n\n deactivate() {\n const { onExitFocusGroup } = this.props;\n this.activated = false;\n this.focusGroup.deactivate();\n if (isFunction(onExitFocusGroup)) {\n onExitFocusGroup();\n }\n }\n\n register(item) {\n this.focusGroup.register(item);\n }\n\n unregister(item) {\n this.focusGroup.unregister(item);\n }\n\n focusItemByIndex(index) {\n if (!this.activated) this.activate();\n setTimeout(() => {\n this.focusGroup.focusByIndex(index);\n }, 200);\n }\n\n focusItemByNode(node) {\n if (!this.activated) this.activate();\n const index = this.focusGroup.getItemIndexByNode(node);\n this.focusItemByIndex(index);\n }\n\n render() {\n const { children } = this.props;\n return (\n <FocusGroupContext.Provider value={this.actions}>\n {children}\n </FocusGroupContext.Provider>\n );\n }\n}\n"],"names":["noop","FocusGroupProvider","props","activated","focusGroup","FocusGroup","onFocusGroupSet","actions","activate","bind","deactivate","register","unregister","focusFirst","focusLast","focusItemByIndex","focusItemByNode","focus","focusCurrent","isGroupActive","focusNext","focusPrevious","autoFocusOnMount","setTimeout","onActivate","isFunction","onExitFocusGroup","item","index","focusByIndex","node","getItemIndexByNode","children","Component","defaultProps","exitWhenNoPrevious","exitWhenNoNext","keyBindings","onFocus","onFocusPreviousGroup","onFocusNextGroup"],"mappings":"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"}