@elliemae/ds-shared 1.57.0-rc.0 → 1.57.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/CheckableGroup.js +4 -6
- package/cjs/CheckableGroup.js.map +1 -1
- package/cjs/FocusGroup/FocusGrid.js +13 -16
- package/cjs/FocusGroup/FocusGrid.js.map +1 -1
- package/cjs/FocusGroup/FocusGroup.js +4 -4
- package/cjs/FocusGroup/FocusGroup.js.map +1 -1
- package/cjs/FocusGroup/FocusGroupManager.js +3 -3
- package/cjs/FocusGroup/FocusGroupManager.js.map +1 -1
- package/cjs/FocusGroup/focusGroupManagerHoc.js +1 -1
- package/cjs/FocusGroup/index.js +1 -3
- package/cjs/FocusGroup/index.js.map +1 -1
- package/cjs/toolbar/ToolbarProvider.js +3 -3
- package/cjs/toolbar/ToolbarProvider.js.map +1 -1
- package/cjs/useDataGrid/VolatileRowsListener.js +2 -2
- package/cjs/useDataGrid/VolatileRowsListener.js.map +1 -1
- package/cjs/useDataGrid/index.js +1 -4
- package/cjs/useDataGrid/index.js.map +1 -1
- package/cjs/useDataGrid/initColumnDefinition.js +16 -16
- package/cjs/useDataGrid/initColumnDefinition.js.map +1 -1
- package/cjs/useDataGrid/useDataGrid.js +9 -14
- package/cjs/useDataGrid/useDataGrid.js.map +1 -1
- package/cjs/useDataList/index.js +1 -1
- package/cjs/useDataList/useDataList.js +2 -2
- package/cjs/useDataList/useDataList.js.map +1 -1
- package/cjs/virtualization/AutoHeightList.js +5 -8
- package/cjs/virtualization/AutoHeightList.js.map +1 -1
- package/cjs/virtualization/index.js +1 -3
- package/cjs/virtualization/index.js.map +1 -1
- package/esm/CheckableGroup.js +1 -2
- package/esm/CheckableGroup.js.map +1 -1
- package/esm/FocusGroup/FocusGrid.js +1 -3
- package/esm/FocusGroup/FocusGrid.js.map +1 -1
- package/esm/FocusGroup/FocusGroup.js +1 -1
- package/esm/FocusGroup/FocusGroup.js.map +1 -1
- package/esm/FocusGroup/FocusGroupManager.js +1 -1
- package/esm/FocusGroup/FocusGroupManager.js.map +1 -1
- package/esm/FocusGroup/focusGroupManagerHoc.js +1 -1
- package/esm/FocusGroup/index.js +1 -3
- package/esm/FocusGroup/index.js.map +1 -1
- package/esm/toolbar/ToolbarProvider.js +2 -2
- package/esm/toolbar/ToolbarProvider.js.map +1 -1
- package/esm/useDataGrid/VolatileRowsListener.js +1 -1
- package/esm/useDataGrid/VolatileRowsListener.js.map +1 -1
- package/esm/useDataGrid/index.js +1 -4
- package/esm/useDataGrid/index.js.map +1 -1
- package/esm/useDataGrid/initColumnDefinition.js +1 -1
- package/esm/useDataGrid/initColumnDefinition.js.map +1 -1
- package/esm/useDataGrid/useDataGrid.js +1 -4
- package/esm/useDataGrid/useDataGrid.js.map +1 -1
- package/esm/useDataList/index.js +1 -1
- package/esm/useDataList/useDataList.js +1 -1
- package/esm/useDataList/useDataList.js.map +1 -1
- package/esm/virtualization/AutoHeightList.js +1 -3
- package/esm/virtualization/AutoHeightList.js.map +1 -1
- package/esm/virtualization/index.js +1 -3
- package/esm/virtualization/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -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/utils';\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","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","items","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":";;;;;;;;;AAMA,IAAMA,cAAc,GAAG;AACrBC,EAAAA,WAAW,EAAE;AADQ,CAAvB;;AAIA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,CAAD,EAAIC,GAAJ,EAAqB;AAC1C,MAAIC,UAAU,CAACD,GAAD,CAAd,EAAqB;AACnBD,IAAAA,CAAC,CAACG,cAAF;;AADmB,sCADYC,IACZ;AADYA,MAAAA,IACZ;AAAA;;AAEnBH,IAAAA,GAAG,MAAH,SAAOG,IAAP;AACD;AACF,CALD;;AAOA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,GAInB;AAAA,MAHHC,OAGG,uEAHO,EAGP;AAAA,MAFHC,MAEG;AAAA,MADHC,YACG,uEADY;AAAA,WAAMC,QAAN;AAAA,GACZ;AACHC,EAAAA,MAAM,CAACC,IAAP,CAAYL,OAAZ,EAAqBM,OAArB,CAA6B,UAACC,MAAD,EAAY;AACvC,0BAA2DP,OAAO,CAACO,MAAD,CAAlE;AAAA,QAAQC,OAAR,mBAAQA,OAAR;AAAA,QAAiBC,OAAjB,mBAAiBA,OAAjB;AAAA,gDAA0BC,oBAA1B;AAAA,QAA0BA,oBAA1B,sCAAiD,KAAjD;;AACA,QAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACjB,CAAD,EAAO;AAClC,UAAMkB,aAAa,GAAGhB,UAAU,CAACK,MAAD,CAAV,GAAqBA,MAAM,EAA3B,GAAgCA,MAAtD;AACA,UACE,CAACS,oBAAD,IACAE,aAAa,CAACC,IAAd,KAAuBV,QAAQ,CAACW,aAFlC,EAIE;AACFpB,MAAAA,CAAC,CAACG,cAAF;AACAY,MAAAA,OAAO,CAACG,aAAD,CAAP;AACD,KATD;;AAUAG,IAAAA,OAAO,CACLR,MADK;AAEHS,MAAAA,OAAO,EAAEd,YAAY;AAFlB,OAEyBM,OAFzB,GAGLG,oBAHK,CAAP;AAKD,GAjBD;AAkBD,CAvBD;;AAyBA,IAAMM,iBAAiB,GAAG,SAApBA,iBAAoB,GAAkB;AAAA,MAAjBjB,OAAiB,uEAAP,EAAO;AAC1CI,EAAAA,MAAM,CAACC,IAAP,CAAYL,OAAZ,EAAqBM,OAArB,CAA6B,UAACC,MAAD,EAAY;AACvCQ,IAAAA,OAAO,CAACG,MAAR,CAAeX,MAAf;AACD,GAFD;AAGD,CAJD;;AAMA,IAAMY,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAM,IAAN;AAAA,CAAb;;IAEqBC;AAGnB,wBAA0B;AAAA,QAAdZ,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,mCAFlB,EAEkB;;AACxB,SAAKA,OAAL,mCAAoBjB,cAApB,GAAuCiB,OAAvC;AAEA,QAAQhB,WAAR,GAAwB,KAAKgB,OAA7B,CAAQhB,WAAR;AAEA,SAAK6B,WAAL;AACEC,MAAAA,OAAO,EAAE9B,WAAW,KAAK,YAAhB,IAAgC,UAD3C;AAEE+B,MAAAA,UAAU,EAAE/B,WAAW,KAAK,UAAhB,IAA8B,MAF5C;AAGEgC,MAAAA,SAAS,EAAEhC,WAAW,KAAK,YAAhB,IAAgC,MAH7C;AAIEiC,MAAAA,SAAS,EAAEjC,WAAW,KAAK,UAAhB,IAA8B,UAJ3C;AAKEkC,MAAAA,IAAI,EAAE,OALR;AAMEC,MAAAA,GAAG,EAAE,MANP;AAOEC,MAAAA,MAAM,EAAE,OAPV;AAQEC,MAAAA,QAAQ,EAAE,MARZ;AASEC,MAAAA,MAAM,EAAE;AATV,OAUKtB,OAAO,CAACa,WAVb;AAaA,SAAKU,kBAAL,GAA0B,IAA1B;AACA,SAAKC,SAAL,GAAiB,IAAjB;AAEA,SAAKC,UAAL,GAAkB;AAChBC,MAAAA,QAAQ,EAAE,KAAKC,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CADM;AAEhBC,MAAAA,IAAI,EAAE,KAAKC,SAAL,CAAeF,IAAf,CAAoB,IAApB,CAFU;AAGhBG,MAAAA,KAAK,EAAE,KAAKC,UAAL,CAAgBJ,IAAhB,CAAqB,IAArB,CAHS;AAIhBK,MAAAA,IAAI,EAAE,KAAKC,SAAL,CAAeN,IAAf,CAAoB,IAApB,CAJU;AAKhBO,MAAAA,IAAI,EAAE,KAAKA,IAAL,CAAUP,IAAV,CAAe,IAAf,CALU;AAMhBQ,MAAAA,KAAK,EAAE;AAAA,eAAM,IAAN;AAAA;AANS,KAAlB;AAQA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBT,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKU,QAAL,GAAgB,KAAKA,QAAL,CAAcV,IAAd,CAAmB,IAAnB,CAAhB;AACA,SAAKI,UAAL,GAAkB,KAAKA,UAAL,CAAgBJ,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKM,SAAL,GAAiB,KAAKA,SAAL,CAAeN,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAKW,aAAL,GAAqB,KAAKA,aAAL,CAAmBX,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKE,SAAL,GAAiB,KAAKA,SAAL,CAAeF,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAKD,aAAL,GAAqB,KAAKA,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKY,SAAL,GAAiB,KAAKA,SAAL,CAAeZ,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAKa,YAAL,GAAoB,KAAKA,YAAL,CAAkBb,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKc,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBd,IAAtB,CAA2B,IAA3B,CAAxB;AACD;;;;WAED,4BAAmB;AACjB,UAAMvB,IAAI,GAAG,KAAKkB,kBAAlB;;AACA,iBAAkBoB,GAAG,CAACtC,IAAD,EAAO,CAAC,SAAD,CAAP,EAAoB,EAApB,CAArB;AAAA,UAAQuC,KAAR,QAAQA,KAAR;;AACA,aAAO;AACLvC,QAAAA,IAAI,EAAJA,IADK;AAELuC,QAAAA,KAAK,EAALA;AAFK,OAAP;AAID;;;WAED,oBAAW;AACT,UAAQlD,YAAR,GAAyB,KAAKM,OAA9B,CAAQN,YAAR;AACAC,MAAAA,QAAQ,CAACkD,gBAAT,CAA0B,SAA1B,EAAqC,KAAKR,aAA1C,EAAyD,IAAzD;AACA9C,MAAAA,eAAe,CAAC,KAAKS,OAAL,CAAaR,OAAd,EAAuB,KAAKkD,gBAA5B,EAA8ChD,YAA9C,CAAf;AACD;;;WAED,sBAAa;AACXC,MAAAA,QAAQ,CAACmD,mBAAT,CAA6B,SAA7B,EAAwC,KAAKT,aAA7C,EAA4D,IAA5D;AACA5B,MAAAA,iBAAiB,CAAC,KAAKT,OAAL,CAAaR,OAAd,CAAjB;AACD;;;WAED,uBAAcN,CAAd,EAAiB;AACf,UAAI,CAAC,KAAKqD,aAAL,EAAL,EAA2B;AAC3B,WAAKQ,oBAAL,CAA0B7D,CAA1B;AACD;;;WAED,8BAAqBA,CAArB,EAAwB;AAAA;;AACtB,UAAM8D,OAAO,GAAGC,KAAK,CAACC,OAAN,CAAc,KAAKrC,WAAL,CAAiB3B,CAAC,CAACiE,GAAnB,CAAd,IACZ,KAAKtC,WAAL,CAAiB3B,CAAC,CAACiE,GAAnB,CADY,GAEZ,CAAC,KAAKtC,WAAL,CAAiB3B,CAAC,CAACiE,GAAnB,CAAD,CAFJ;AAGA,aAAOH,OAAO,CAACI,GAAR,CAAY,UAACC,MAAD;AAAA,eACjB,OAAOA,MAAP,KAAkB,QAAlB,GACIpE,cAAc,CAACC,CAAD,EAAI,KAAI,CAACuC,UAAL,CAAgB4B,MAAhB,CAAJ,CADlB,GAEIpE,cAAc,CAACC,CAAD,EAAImE,MAAJ,CAHD;AAAA,OAAZ,CAAP;AAKD;;;WAED,kBAASC,IAAT,EAA2B;AAAA;;AAAA,UAAZC,KAAY,uEAAJ,EAAI;AACzB,UAAMC,UAAU,GAAG,KAAKC,KAAL,CAAWC,SAAX,CACjB,UAACrD,IAAD;AAAA,eACEA,IAAI,CAACsD,uBAAL,CAA6BL,IAA7B,MAAuCM,IAAI,CAACC,2BAD9C;AAAA,OADiB,CAAnB;AAIAP,MAAAA,IAAI,CAACQ,cAAL,GAAsBP,KAAK,CAACQ,OAAN,IAAiBpD,IAAvC;AACA2C,MAAAA,IAAI,CAACU,aAAL,GAAqBT,KAAK,CAACU,MAAN,IAAgBtD,IAArC;;AACA2C,MAAAA,IAAI,CAACY,OAAL,GAAe;AAAA,eAAM,MAAI,CAAC1B,SAAL,CAAec,IAAf,CAAN;AAAA,OAAf;;AACAA,MAAAA,IAAI,CAACa,OAAL,GAAe,YAAM;AACnB,QAAA,MAAI,CAAC3B,SAAL,CAAec,IAAf;AACD,OAFD;;AAGA,UAAIE,UAAU,KAAK,CAAC,CAApB,EAAuB;AACrB,aAAKC,KAAL,CAAWW,IAAX,CAAgBd,IAAhB;AACD,OAFD,MAEO;AACL,aAAKG,KAAL,CAAWY,MAAX,CAAkBb,UAAlB,EAA8B,CAA9B,EAAiCF,IAAjC;AACD;AACF;;;WAED,oBAAWA,IAAX,EAAiB;AACf,UAAMV,KAAK,GAAG,KAAK0B,kBAAL,CAAwBhB,IAAxB,CAAd;AACA,UAAIV,KAAK,GAAG,CAAC,CAAb,EAAgB,KAAKa,KAAL,CAAWY,MAAX,CAAkBzB,KAAlB,EAAyB,CAAzB;AACjB;;;WAED,gBAAO;AACL,UAAQ2B,gBAAR,GAA6B,KAAKvE,OAAlC,CAAQuE,gBAAR;AACAA,MAAAA,gBAAgB;AACjB;;;WAED,mBAAUjB,IAAV,EAAgB;AACd,UAAI,KAAK/B,kBAAL,IAA2B,KAAKA,kBAAL,KAA4B+B,IAA3D,EAAiE;AAC/D,aAAK/B,kBAAL,CAAwByC,aAAxB;AACA,aAAKzC,kBAAL,CAAwBiD,YAAxB,CAAqC,UAArC,EAAiD,CAAC,CAAlD;AACD;;AACD,UAAI,CAAClB,IAAL,EAAW;AACX,WAAK/B,kBAAL,GAA0B+B,IAA1B;AACAA,MAAAA,IAAI,CAACkB,YAAL,CAAkB,UAAlB,EAA8B,CAA9B;AACAlB,MAAAA,IAAI,CAACmB,KAAL;AACAnB,MAAAA,IAAI,CAACQ,cAAL;AACD;;;WAED,qBAAY;AACV,UAAMzD,IAAI,GAAG,KAAKqE,WAAL,EAAb;AACA,WAAKlC,SAAL,CAAenC,IAAf;AACD;;;WAED,qBAAYiD,IAAZ,EAAkB;AAChB,UAAMV,KAAK,GAAG,KAAK0B,kBAAL,CAAwBhB,IAAxB,CAAd;AACA,WAAKqB,YAAL,CAAkB/B,KAAlB;AACD;;;WAED,sBAAaA,KAAb,EAAoB;AAClB,UAAMvC,IAAI,GAAG,KAAKuE,cAAL,CAAoBhC,KAApB,CAAb;AACA,WAAKJ,SAAL,CAAenC,IAAf;AACD;;;WAED,yBAAgB;AACd,UAAMwE,QAAQ,GAAG,KAAKC,eAAL,EAAjB;AACA,WAAKtC,SAAL,CAAeqC,QAAf;AACD;;;WAED,sBAAa;AACX,UAAMxE,IAAI,GAAG,KAAK0E,YAAL,EAAb;AACA,WAAKvC,SAAL,CAAenC,IAAf;AACD;;;WAED,qBAAY;AACV,UAAMA,IAAI,GAAG,KAAK2E,WAAL,EAAb;AACA,WAAKxC,SAAL,CAAenC,IAAf;AACD;;;WAED,wBAAe;AACb,WAAKmC,SAAL,CAAe,KAAKjB,kBAApB;AACD;;;WAED,0BAAiB;AACf,UAAQ0D,gBAAR,GAA6B,KAAKjF,OAAlC,CAAQiF,gBAAR;AACA,WAAK9C,IAAL;AACA8C,MAAAA,gBAAgB;AACjB;;;WAED,8BAAqB;AACnB,UAAQC,oBAAR,GAAiC,KAAKlF,OAAtC,CAAQkF,oBAAR;AACA,WAAK/C,IAAL;AACA+C,MAAAA,oBAAoB;AACrB;;;WAED,uBAAc;AACZ,UAAQC,IAAR,GAAiB,KAAKnF,OAAtB,CAAQmF,IAAR;AACA,UAAMC,YAAY,GAAG,KAAKC,eAAL,EAArB;AACA,UAAMC,iBAAiB,GAAGF,YAAY,GAAG,CAAzC;;AACA,UAAI,CAAC,KAAKG,iBAAL,CAAuBD,iBAAvB,CAAL,EAAgD;AAC9C,eAAOH,IAAI,GAAG,KAAKJ,YAAL,EAAH,GAAyB,KAAKS,cAAL,EAApC;AACD;;AACD,aAAO,KAAKZ,cAAL,CAAoBU,iBAApB,CAAP;AACD;;;WAED,2BAAkB;AAChB,UAAQH,IAAR,GAAiB,KAAKnF,OAAtB,CAAQmF,IAAR;AACA,UAAMC,YAAY,GAAG,KAAKC,eAAL,EAArB;AACA,UAAMI,iBAAiB,GAAGL,YAAY,GAAG,CAAzC;;AACA,UAAI,CAAC,KAAKM,iBAAL,CAAuBD,iBAAvB,CAAL,EAAgD;AAC9C,eAAON,IAAI,GAAG,KAAKH,WAAL,EAAH,GAAwB,KAAKW,kBAAL,EAAnC;AACD;;AACD,aAAO,KAAKf,cAAL,CAAoBa,iBAApB,CAAP;AACD;;;WAED,2BAAkB7C,KAAlB,EAAyB;AACvB,aAAO,KAAKa,KAAL,CAAWmC,MAAX,GAAoBhD,KAA3B;AACD;;;WAED,2BAAkBA,KAAlB,EAAyB;AACvB,aAAOA,KAAK,IAAI,CAAhB;AACD;;;WAED,wBAAeA,KAAf,EAAsB;AACpB,aAAO,KAAKa,KAAL,CAAWb,KAAX,CAAP;AACD;;;WAED,4BAAmBU,IAAnB,EAAyB;AACvB,aAAO,KAAKG,KAAL,CAAWC,SAAX,CAAqB,UAACrD,IAAD;AAAA,eAAUA,IAAI,KAAKiD,IAAnB;AAAA,OAArB,CAAP;AACD;;;WAED,2BAAkB;AAChB,aAAO,KAAKgB,kBAAL,CAAwB3E,QAAQ,CAACW,aAAjC,CAAP;AACD;;;WAED,0BAAiB;AACf,UAAMsC,KAAK,GAAG,KAAKyC,eAAL,EAAd;AACA,aAAOzC,KAAK,GAAG,CAAC,CAAT,IAAc,KAAKa,KAAL,CAAWb,KAAX,CAArB;AACD;;;WAED,yBAAgB;AACd,aAAO,KAAKyC,eAAL,OAA2B,CAAC,CAAnC;AACD;;;WAED,wBAAe;AACb,aAAO,CAAC,CAAC,KAAK5B,KAAL,CAAWmC,MAAb,IAAuB,KAAKnC,KAAL,CAAW,CAAX,CAA9B;AACD;;;WAED,uBAAc;AACZ,aAAO,CAAC,CAAC,KAAKA,KAAL,CAAWmC,MAAb,IAAuB,KAAKnC,KAAL,CAAW,KAAKA,KAAL,CAAWmC,MAAX,GAAoB,CAA/B,CAA9B;AACD;;;;;;;;"}
|
|
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","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","items","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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"}
|
|
@@ -6,7 +6,7 @@ import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConst
|
|
|
6
6
|
import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
7
7
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
8
8
|
import React, { Component } from 'react';
|
|
9
|
-
import { isFunction } from '@elliemae/ds-utilities
|
|
9
|
+
import { isFunction } from '@elliemae/ds-utilities';
|
|
10
10
|
import FocusGroup from './FocusGroup.js';
|
|
11
11
|
import FocusGroupContext from './FocusGroupContext.js';
|
|
12
12
|
import 'hotkeys-js';
|
|
@@ -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
|
|
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","focusGroup","FocusGroup","onFocusGroupSet","actions","activate","bind","deactivate","register","unregister","focusFirst","focusLast","focusItemByIndex","focusItemByNode","focus","focusCurrent","isGroupActive","focusNext","focusPrevious","autoFocusOnMount","setTimeout","onActivate","activated","isFunction","onExitFocusGroup","item","index","focusByIndex","node","getItemIndexByNode","children","Component","exitWhenNoPrevious","exitWhenNoNext","keyBindings","onFocus","onFocusPreviousGroup","onFocusNextGroup"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import '@babel/runtime/helpers/esm/inherits';
|
|
|
9
9
|
import '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
10
10
|
import '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
11
11
|
import '@babel/runtime/helpers/esm/defineProperty';
|
|
12
|
-
import '@elliemae/ds-utilities
|
|
12
|
+
import '@elliemae/ds-utilities';
|
|
13
13
|
import './FocusGroup.js';
|
|
14
14
|
import 'hotkeys-js';
|
|
15
15
|
import './FocusGroupContext.js';
|
package/esm/FocusGroup/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { default as FocusGrid, FocusGridContext } from './FocusGrid.js';
|
|
|
7
7
|
import '@babel/runtime/helpers/esm/classCallCheck';
|
|
8
8
|
import '@babel/runtime/helpers/esm/createClass';
|
|
9
9
|
import '@babel/runtime/helpers/esm/defineProperty';
|
|
10
|
-
import '@elliemae/ds-utilities
|
|
10
|
+
import '@elliemae/ds-utilities';
|
|
11
11
|
import 'hotkeys-js';
|
|
12
12
|
import 'react';
|
|
13
13
|
import '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
@@ -16,7 +16,5 @@ import '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
|
16
16
|
import '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
17
17
|
import '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
18
18
|
import '@babel/runtime/helpers/esm/extends';
|
|
19
|
-
import '@elliemae/ds-utilities/hooks/useHotkeys';
|
|
20
|
-
import '@elliemae/ds-utilities/system';
|
|
21
19
|
import './utils/getNextCellPosition.js';
|
|
22
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,8 +2,8 @@ import _extends from '@babel/runtime/helpers/esm/extends';
|
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
3
3
|
import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
|
|
4
4
|
import React, { useRef, useState, useEffect, useMemo } from 'react';
|
|
5
|
-
import DSPopover from '@elliemae/ds-
|
|
6
|
-
import { useOnClickOutside } from '@elliemae/ds-utilities
|
|
5
|
+
import DSPopover from '@elliemae/ds-popper';
|
|
6
|
+
import { useOnClickOutside } from '@elliemae/ds-utilities';
|
|
7
7
|
|
|
8
8
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
9
9
|
|
|
@@ -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-
|
|
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","options","renderer","Component","as","style","Content","memo"],"mappings":";;;;;;;;;;IAIaA,cAAc,gBAAGC,KAAK,CAACC,aAAN;AAE9B,IAAQC,QAAR,GAAqBH,cAArB,CAAQG,QAAR;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,QAAD,EAAWC,YAAX,EAA4B;AACpDC,EAAAA,SAAS,CAAC,YAAM;AACdC,IAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkCJ,QAAlC,EAA4C,IAA5C;AACA,WAAO,YAAM;AACXG,MAAAA,MAAM,CAACE,mBAAP,CAA2B,QAA3B,EAAqCL,QAArC,EAA+C,IAA/C;AACD,KAFD;AAGD,GALQ,EAKN,CAACC,YAAD,CALM,CAAT;AAMD,CAPD;;AASA,IAAMK,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAM,IAAN;AAAA,CAAb;;AACA,SAASC,eAAT,OAAkF;AAAA,wBAAvDC,KAAuD;AAAA,MAAvDA,KAAuD,2BAA/C,GAA+C;AAAA,MAA1CC,QAA0C,QAA1CA,QAA0C;AAAA,yBAAhCC,MAAgC;AAAA,MAAhCA,MAAgC,4BAAvBJ,IAAuB;AAAA,yBAAjBK,MAAiB;AAAA,MAAjBA,MAAiB,4BAARL,IAAQ;AAChF,MAAMM,SAAS,GAAGC,MAAM,EAAxB;AACA,MAAMC,SAAS,GAAGD,MAAM,EAAxB;AACA,MAAME,UAAU,GAAGF,MAAM,EAAzB;;AACA,kBAAwCG,QAAQ,CAAC,EAAD,CAAhD;AAAA;AAAA,MAAOC,YAAP;AAAA,MAAqBC,eAArB;;AAEA,MAAMC,IAAI,GAAG,SAAPA,IAAO,CAACC,KAAD,EAAW;AACtB,QAAIA,KAAK,CAACC,SAAN,KAAoBJ,YAAY,CAACI,SAArC,EAAgDC,YAAY,CAACR,SAAS,CAACS,OAAX,CAAZ;AAChDX,IAAAA,SAAS,CAACW,OAAV,GAAoBC,UAAU,CAC5B;AAAA,aACEN,eAAe,iCACVE,KADU;AAEbK,QAAAA,OAAO,EAAE;AAFI,SADjB;AAAA,KAD4B,EAM5BjB,KAN4B,CAA9B;AAQAG,IAAAA,MAAM;AACP,GAXD;;AAaA,MAAMe,IAAI,GAAG,SAAPA,IAAO,CAACC,CAAD,EAAIC,KAAJ,EAAc;AACzB,QAAI,CAACA,KAAL,EAAYN,YAAY,CAACV,SAAS,CAACW,OAAX,CAAZ;AACZT,IAAAA,SAAS,CAACS,OAAV,GAAoBC,UAAU,CAC5B;AAAA,aACEN,eAAe,CAAC,UAACW,SAAD;AAAA,+CACXA,SADW;AAEdJ,UAAAA,OAAO,EAAE;AAFK;AAAA,OAAD,CADjB;AAAA,KAD4B,EAM5B,GAN4B,CAA9B;AAQAf,IAAAA,MAAM,CAACO,YAAD,EAAeU,CAAf,CAAN;AACD,GAXD;;AAaA5B,EAAAA,iBAAiB,CAAC,UAAC4B,CAAD;AAAA,WAAOD,IAAI,CAACC,CAAD,EAAI,IAAJ,CAAX;AAAA,GAAD,EAAuBV,YAAY,CAACQ,OAApC,CAAjB;AACAK,EAAAA,iBAAiB,CAACf,UAAD,EAAa;AAAA,WAAMW,IAAI,EAAV;AAAA,GAAb,CAAjB;;AAEA,MAAMK,cAAc,GAAG,SAAjBA,cAAiB,CAACJ,CAAD,EAAO;AAC5B,QAAIA,CAAC,CAACK,GAAF,KAAU,QAAd,EAAwB;AACtBN,MAAAA,IAAI,CAACC,CAAD,CAAJ;AACD;AACF,GAJD;;AAMAzB,EAAAA,SAAS,CAAC,YAAM;AACdC,IAAAA,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmC2B,cAAnC;AACA,WAAO,YAAM;AACX5B,MAAAA,MAAM,CAACE,mBAAP,CAA2B,SAA3B,EAAsC0B,cAAtC;AACD,KAFD;AAGD,GALQ,CAAT;AAOA,MAAME,KAAK,GAAGC,OAAO,CACnB;AAAA,WAAO;AACLd,MAAAA,KAAK,EAAEH,YADF;AAELE,MAAAA,IAAI,EAAJA,IAFK;AAGLO,MAAAA,IAAI,EAAJA;AAHK,KAAP;AAAA,GADmB,EAMnB,CAACT,YAAY,CAACI,SAAd,CANmB,CAArB;AASA,sBACE,oBAAC,QAAD;AAAU,IAAA,KAAK,EAAEY;AAAjB,KACGxB,QADH,eAEE,oBAAC,SAAD;AACE,IAAA,UAAU,EAAC;AADb,KAEOQ,YAAY,CAACkB,OAAb,IAAwB,EAF/B;AAGE,IAAA,OAAO,EAAElB,YAAY,CAACmB,QAHxB;AAIE,IAAA,SAAS,EAAC,MAJZ;AAKE,IAAA,WAAW,EAAEnB,YAAY,CAACI,SAL5B;AAME,IAAA,QAAQ,EAAE;AAAA,UAAOgB,SAAP,SAAGC,EAAH;AAAA,UAAkBC,KAAlB,SAAkBA,KAAlB;AAAA,UAAmCC,OAAnC,SAAyB/B,QAAzB;AAAA,0BACR;AAAK,QAAA,GAAG,EAAEM,UAAV;AAAsB,QAAA,YAAY,EAAE,sBAACY,CAAD;AAAA,iBAAOR,IAAI,CAACF,YAAD,CAAX;AAAA,SAApC;AAAkE,QAAA,YAAY,EAAES;AAAhF,sBACE,oBAAC,SAAD;AAAW,QAAA,KAAK,EAAEa;AAAlB,SAA0BC,OAA1B,CADF,CADQ;AAAA,KANZ;AAWE,IAAA,KAAK,EAAEvB,YAAY,CAACsB,KAXtB;AAYE,IAAA,OAAO,EAAEtB,YAAY,CAACQ;AAZxB,KAFF,CADF;AAmBD;;AAED,qCAAe7B,KAAK,CAAC6C,IAAN,CAAWlC,eAAX,CAAf;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
|
|
2
2
|
import _createClass from '@babel/runtime/helpers/esm/createClass';
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
4
|
-
import { safeCall } from '@elliemae/ds-utilities
|
|
4
|
+
import { safeCall } from '@elliemae/ds-utilities';
|
|
5
5
|
|
|
6
6
|
var VolatileRowsListener = /*#__PURE__*/function () {
|
|
7
7
|
function VolatileRowsListener() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolatileRowsListener.js","sources":["../../../src/useDataGrid/VolatileRowsListener.tsx"],"sourcesContent":["import { safeCall } from '@elliemae/ds-utilities
|
|
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","listener","observers","push","nextRows","forEach","observer","safeCall"],"mappings":";;;;;IAEqBA;;;;uCACP;;;;;WAEZ,iBAAQC,QAAR,EAAkB;AAChB,WAAKC,SAAL,CAAeC,IAAf,CAAoBF,QAApB;AACD;;;WAED,gBAAOG,QAAP,EAAiB;AACf,WAAKF,SAAL,CAAeG,OAAf,CAAuB,UAAAC,QAAQ;AAAA,eAAIC,QAAQ,CAACD,QAAD,EAAWF,QAAX,CAAZ;AAAA,OAA/B;AACA,WAAKF,SAAL,GAAiB,EAAjB;AACD;;;;;;;;"}
|
package/esm/useDataGrid/index.js
CHANGED
|
@@ -2,13 +2,10 @@ export { default } from './useDataGrid.js';
|
|
|
2
2
|
import '@babel/runtime/helpers/esm/defineProperty';
|
|
3
3
|
import '@babel/runtime/helpers/esm/slicedToArray';
|
|
4
4
|
import '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
5
|
-
import '@elliemae/ds-utilities
|
|
5
|
+
import '@elliemae/ds-utilities';
|
|
6
6
|
import 'react';
|
|
7
7
|
import 'uuid';
|
|
8
8
|
import 'table-resolver';
|
|
9
|
-
import '@elliemae/ds-utilities/hooks/useDerivedStateFromProps';
|
|
10
|
-
import '@elliemae/ds-utilities/hooks/usePrevious';
|
|
11
|
-
import '@elliemae/ds-utilities/system';
|
|
12
9
|
import './initColumnDefinition.js';
|
|
13
10
|
import '@babel/runtime/helpers/esm/toConsumableArray';
|
|
14
11
|
import '../createDataInstance/utils.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,7 @@ import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';
|
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { v4 } from 'uuid';
|
|
5
|
-
import { curry, get, cloneDeep, set, isFunction } from '@elliemae/ds-utilities
|
|
5
|
+
import { curry, get, cloneDeep, set, isFunction } from '@elliemae/ds-utilities';
|
|
6
6
|
|
|
7
7
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
8
8
|
|
|
@@ -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
|
|
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","cell","transforms","customRenderer","justifyContent","uuid","uuidv4","undefined","headerHookEffects"],"mappings":"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"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
2
|
import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
|
|
3
3
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
4
|
-
import { compose, cloneDeep, isObject, isEqual } from '@elliemae/ds-utilities
|
|
4
|
+
import { useDerivedStateFromProps, compose, cloneDeep, usePrevious, isObject, isEqual, setRef } from '@elliemae/ds-utilities';
|
|
5
5
|
import { useRef, useState, useMemo } from 'react';
|
|
6
6
|
import { v4 } from 'uuid';
|
|
7
7
|
import * as resolve from 'table-resolver';
|
|
8
|
-
import useDerivedStateFromProps from '@elliemae/ds-utilities/hooks/useDerivedStateFromProps';
|
|
9
|
-
import usePrevious from '@elliemae/ds-utilities/hooks/usePrevious';
|
|
10
|
-
import { setRef } from '@elliemae/ds-utilities/system';
|
|
11
8
|
import initColumnDefinition from './initColumnDefinition.js';
|
|
12
9
|
import { applyDecorators, decorateColumns, reducePropsGetter } from '../createDataInstance/utils.js';
|
|
13
10
|
import VolatileRowsListener from './VolatileRowsListener.js';
|
|
@@ -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} from '@elliemae/ds-utilities/utils';\nimport { useMemo, useRef, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as resolve from 'table-resolver';\nimport useDerivedStateFromProps from '@elliemae/ds-utilities/hooks/useDerivedStateFromProps';\nimport usePrevious from '@elliemae/ds-utilities/hooks/usePrevious';\nimport { setRef } from '@elliemae/ds-utilities/system';\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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"}
|
package/esm/useDataList/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import '@babel/runtime/helpers/esm/toConsumableArray';
|
|
|
3
3
|
import '@babel/runtime/helpers/esm/defineProperty';
|
|
4
4
|
import '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '@elliemae/ds-utilities
|
|
6
|
+
import '@elliemae/ds-utilities';
|
|
7
7
|
import 'lodash/get';
|
|
8
8
|
import '../createDataInstance/utils.js';
|
|
9
9
|
import './recordIterator.js';
|
|
@@ -2,7 +2,7 @@ import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';
|
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
3
3
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
4
4
|
import { useRef, useMemo } from 'react';
|
|
5
|
-
import { setRef } from '@elliemae/ds-utilities
|
|
5
|
+
import { setRef } from '@elliemae/ds-utilities';
|
|
6
6
|
import get from 'lodash/get';
|
|
7
7
|
import { reducePropsGetter, composeFormatters } from '../createDataInstance/utils.js';
|
|
8
8
|
import { recordIterator } from './recordIterator.js';
|
|
@@ -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
|
|
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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"}
|
|
@@ -2,9 +2,7 @@ import _extends from '@babel/runtime/helpers/esm/extends';
|
|
|
2
2
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
3
3
|
import React, { forwardRef, useRef } from 'react';
|
|
4
4
|
import { FixedSizeList } from 'react-window';
|
|
5
|
-
import { cx } from '@elliemae/ds-utilities
|
|
6
|
-
import { mergeRefs } from '@elliemae/ds-utilities/system';
|
|
7
|
-
import useWindowScrollerList from '@elliemae/ds-utilities/hooks/useWindowScrollerList';
|
|
5
|
+
import { useWindowScrollerList, mergeRefs, cx } from '@elliemae/ds-utilities';
|
|
8
6
|
|
|
9
7
|
var _excluded = ["itemCount", "className", "innerRef", "itemData", "itemKey", "itemSize", "outerRef", "component"];
|
|
10
8
|
var AutoHeightList = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
@@ -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
|
|
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","mergeRefs","cx","window","innerHeight"],"mappings":";;;;;;;IAIaA,cAAc,gBAAGC,UAAU,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,aAI1B;AAAA,MAHEC,UAGF;;AACH,MAAMC,OAAO,GAAGC,MAAM,EAAtB;AACA,MAAMC,YAAY,GAAGD,MAAM,EAA3B;AAEAE,EAAAA,qBAAqB,CAAC;AACpBC,IAAAA,YAAY,EAAEJ,OADM;AAEpBE,IAAAA,YAAY,EAAZA;AAFoB,GAAD,CAArB;AAKA,sBACE,oBAAC,aAAD,eACMH,UADN;AAEE,IAAA,GAAG,EAAEM,SAAS,CAACjB,GAAD,EAAMY,OAAN,CAFhB;AAGE,IAAA,SAAS,EAAEM,EAAE,CAAChB,SAAD,EAAY,0BAAZ,CAHf;AAIE,IAAA,MAAM,EAAEiB,MAAM,CAACC,WAJjB;AAKE,IAAA,QAAQ,EAAEjB,QALZ;AAME,IAAA,SAAS,EAAEF,SANb;AAOE,IAAA,QAAQ,EAAEG,QAPZ;AAQE,IAAA,OAAO,EAAEC,OARX;AASE,IAAA,QAAQ,EAAEC,QATZ;AAUE,IAAA,QAAQ,EAAEW,SAAS,CAACH,YAAD,EAAeP,QAAf,CAVrB;AAWE,IAAA,aAAa,EAAE,EAXjB;AAYE,IAAA,cAAc;AAZhB,KADF;AAgBD,CAvCqC;;;;"}
|
|
@@ -7,9 +7,7 @@ import '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react-virtualized-auto-sizer';
|
|
9
9
|
import 'react-window';
|
|
10
|
-
import '@elliemae/ds-utilities
|
|
11
|
-
import '@elliemae/ds-utilities/system';
|
|
12
|
-
import '@elliemae/ds-utilities/hooks/useWindowScrollerList';
|
|
10
|
+
import '@elliemae/ds-utilities';
|
|
13
11
|
|
|
14
12
|
function getVirtualListComponent(_ref) {
|
|
15
13
|
var Component = _ref.component,
|
|
@@ -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":"
|
|
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,cAAP;AAChB,MAAIH,KAAJ,EAAW,OAAOI,eAAP;AACX,SAAON,SAAP;AACD;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-shared",
|
|
3
|
-
"version": "1.57.0-rc.
|
|
3
|
+
"version": "1.57.0-rc.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Ellie Mae - Dim Sum - Shared components and utilities",
|
|
6
6
|
"main": "cjs/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"directory": "dist"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@elliemae/ds-basic": "1.57.0-rc.
|
|
24
|
-
"@elliemae/ds-utilities": "1.57.0-rc.
|
|
23
|
+
"@elliemae/ds-basic": "1.57.0-rc.4",
|
|
24
|
+
"@elliemae/ds-utilities": "1.57.0-rc.4",
|
|
25
25
|
"hoist-non-react-statics": "~3.3.2",
|
|
26
26
|
"hotkeys-js": "~3.8.2",
|
|
27
27
|
"prop-types": "~15.7.2",
|