@elliemae/ds-shared 1.58.0-rc.2 → 1.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/FocusGroup/FocusGroup.js +1 -2
- package/cjs/FocusGroup/FocusGroup.js.map +1 -1
- package/cjs/FocusGroup/FocusGroupManager.js +4 -7
- package/cjs/FocusGroup/FocusGroupManager.js.map +1 -1
- package/cjs/FocusGroup/focusGroupManagerHoc.js +1 -1
- package/cjs/ScrollSync/ScrollSync.js +17 -20
- package/cjs/ScrollSync/ScrollSync.js.map +1 -1
- package/cjs/ScrollSync/ScrollSyncPane.js +5 -9
- package/cjs/ScrollSync/ScrollSyncPane.js.map +1 -1
- package/cjs/ScrollSync/index.js +0 -1
- package/cjs/ScrollSync/index.js.map +1 -1
- package/cjs/defer-render-hoc/index.js +2 -8
- package/cjs/defer-render-hoc/index.js.map +1 -1
- package/cjs/index.js +0 -1
- package/cjs/index.js.map +1 -1
- package/cjs/useDataGrid/VolatileRowsListener.js +1 -3
- package/cjs/useDataGrid/VolatileRowsListener.js.map +1 -1
- package/esm/FocusGroup/FocusGroup.js +1 -2
- package/esm/FocusGroup/FocusGroup.js.map +1 -1
- package/esm/FocusGroup/FocusGroupManager.js +4 -6
- package/esm/FocusGroup/FocusGroupManager.js.map +1 -1
- package/esm/FocusGroup/focusGroupManagerHoc.js +1 -1
- package/esm/ScrollSync/ScrollSync.js +17 -19
- package/esm/ScrollSync/ScrollSync.js.map +1 -1
- package/esm/ScrollSync/ScrollSyncPane.js +5 -7
- package/esm/ScrollSync/ScrollSyncPane.js.map +1 -1
- package/esm/ScrollSync/index.js +0 -1
- package/esm/ScrollSync/index.js.map +1 -1
- package/esm/defer-render-hoc/index.js +2 -6
- package/esm/defer-render-hoc/index.js.map +1 -1
- package/esm/index.js +0 -1
- package/esm/index.js.map +1 -1
- package/esm/useDataGrid/VolatileRowsListener.js +1 -2
- package/esm/useDataGrid/VolatileRowsListener.js.map +1 -1
- package/package.json +3 -3
|
@@ -75,8 +75,7 @@ var FocusGroup = /*#__PURE__*/function () {
|
|
|
75
75
|
|
|
76
76
|
_classCallCheck__default['default'](this, FocusGroup);
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
this.items = [];
|
|
80
79
|
this.options = _objectSpread(_objectSpread({}, defaultOptions), options);
|
|
81
80
|
var orientation = this.options.orientation;
|
|
82
81
|
this.keyBindings = _objectSpread({
|
|
@@ -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","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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"}
|
|
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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"}
|
|
@@ -6,11 +6,11 @@ var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitializ
|
|
|
6
6
|
var _inherits = require('@babel/runtime/helpers/inherits');
|
|
7
7
|
var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
8
8
|
var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
|
|
9
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
10
9
|
var React = require('react');
|
|
11
10
|
var dsUtilities = require('@elliemae/ds-utilities');
|
|
12
11
|
var FocusGroup_FocusGroup = require('./FocusGroup.js');
|
|
13
12
|
var FocusGroup_FocusGroupContext = require('./FocusGroupContext.js');
|
|
13
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
14
14
|
require('hotkeys-js');
|
|
15
15
|
|
|
16
16
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -21,7 +21,6 @@ var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assert
|
|
|
21
21
|
var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
|
|
22
22
|
var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
|
|
23
23
|
var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
|
|
24
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
25
24
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
26
25
|
|
|
27
26
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
|
|
@@ -43,9 +42,7 @@ var FocusGroupProvider = /*#__PURE__*/function (_Component) {
|
|
|
43
42
|
_classCallCheck__default['default'](this, FocusGroupProvider);
|
|
44
43
|
|
|
45
44
|
_this = _super.call(this, props);
|
|
46
|
-
|
|
47
|
-
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "activated", false);
|
|
48
|
-
|
|
45
|
+
_this.activated = false;
|
|
49
46
|
_this.focusGroup = new FocusGroup_FocusGroup(props);
|
|
50
47
|
props.onFocusGroupSet(_assertThisInitialized__default['default'](_this));
|
|
51
48
|
_this.actions = {
|
|
@@ -143,7 +140,7 @@ var FocusGroupProvider = /*#__PURE__*/function (_Component) {
|
|
|
143
140
|
return FocusGroupProvider;
|
|
144
141
|
}(React.Component);
|
|
145
142
|
|
|
146
|
-
|
|
143
|
+
FocusGroupProvider.defaultProps = {
|
|
147
144
|
exitWhenNoPrevious: false,
|
|
148
145
|
exitWhenNoNext: false,
|
|
149
146
|
keyBindings: {},
|
|
@@ -152,7 +149,7 @@ _defineProperty__default['default'](FocusGroupProvider, "defaultProps", {
|
|
|
152
149
|
onFocusPreviousGroup: noop,
|
|
153
150
|
onFocusNextGroup: noop,
|
|
154
151
|
onFocusGroupSet: noop
|
|
155
|
-
}
|
|
152
|
+
};
|
|
156
153
|
|
|
157
154
|
module.exports = FocusGroupProvider;
|
|
158
155
|
//# sourceMappingURL=FocusGroupManager.js.map
|
|
@@ -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","focusGroup","FocusGroup","onFocusGroupSet","actions","activate","bind","deactivate","register","unregister","focusFirst","focusLast","focusItemByIndex","focusItemByNode","focus","focusCurrent","isGroupActive","focusNext","focusPrevious","autoFocusOnMount","setTimeout","onActivate","
|
|
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","React","FocusGroupContext","Component","defaultProps","exitWhenNoPrevious","exitWhenNoNext","keyBindings","onFocus","onFocusPreviousGroup","onFocusNextGroup"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAMA,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAM,IAAN;AAAA,CAAb;;IAEqBC;;;;;AAcnB,8BAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;AADiB,UAbnBC,SAamB,GAbP,KAaO;AAGjB,UAAKC,UAAL,GAAkB,IAAIC,qBAAJ,CAAeH,KAAf,CAAlB;AAEAA,IAAAA,KAAK,CAACI,eAAN;AAEA,UAAKC,OAAL,GAAe;AACbC,MAAAA,QAAQ,EAAE,MAAKA,QAAL,CAAcC,IAAd,mDADG;AAEbC,MAAAA,UAAU,EAAE,MAAKA,UAAL,CAAgBD,IAAhB,mDAFC;AAGbE,MAAAA,QAAQ,EAAE,MAAKP,UAAL,CAAgBO,QAHb;AAIbC,MAAAA,UAAU,EAAE,MAAKA,UAAL,CAAgBH,IAAhB,mDAJC;AAKbI,MAAAA,UAAU,EAAE,MAAKT,UAAL,CAAgBS,UALf;AAMbC,MAAAA,SAAS,EAAE,MAAKV,UAAL,CAAgBU,SANd;AAObC,MAAAA,gBAAgB,EAAE,MAAKA,gBAAL,CAAsBN,IAAtB,mDAPL;AAQbO,MAAAA,eAAe,EAAE,MAAKA,eAAL,CAAqBP,IAArB,mDARJ;AASbQ,MAAAA,KAAK,EAAE,MAAKb,UAAL,CAAgBc,YATV;AAUbC,MAAAA,aAAa,EAAE,MAAKf,UAAL,CAAgBe,aAVlB;AAWbC,MAAAA,SAAS,EAAE,MAAKhB,UAAL,CAAgBgB,SAXd;AAYbC,MAAAA,aAAa,EAAE,MAAKjB,UAAL,CAAgBiB;AAZlB,KAAf;AAPiB;AAqBlB;;;;WAED,6BAAoB;AAAA;;AAClB,UAAQC,gBAAR,GAA6B,KAAKpB,KAAlC,CAAQoB,gBAAR;AAEA,WAAKd,QAAL;;AAEA,UAAIc,gBAAJ,EAAsB;AACpBC,QAAAA,UAAU,CAAC,YAAM;AACf,UAAA,MAAI,CAAChB,OAAL,CAAaM,UAAb;AACD,SAFS,EAEP,CAFO,CAAV;AAGD;AACF;;;WAED,gCAAuB;AACrB,WAAKH,UAAL;AACD;;;WAED,oBAAW;AACT,UAAQc,UAAR,GAAuB,KAAKtB,KAA5B,CAAQsB,UAAR;AACA,WAAKpB,UAAL,CAAgBI,QAAhB;AACA,WAAKL,SAAL,GAAiB,IAAjB;AACA,UAAIsB,sBAAU,CAACD,UAAD,CAAd,EAA4BA,UAAU;AACvC;;;WAED,sBAAa;AACX,UAAQE,gBAAR,GAA6B,KAAKxB,KAAlC,CAAQwB,gBAAR;AACA,WAAKvB,SAAL,GAAiB,KAAjB;AACA,WAAKC,UAAL,CAAgBM,UAAhB;;AACA,UAAIe,sBAAU,CAACC,gBAAD,CAAd,EAAkC;AAChCA,QAAAA,gBAAgB;AACjB;AACF;;;WAED,kBAASC,IAAT,EAAe;AACb,WAAKvB,UAAL,CAAgBO,QAAhB,CAAyBgB,IAAzB;AACD;;;WAED,oBAAWA,IAAX,EAAiB;AACf,WAAKvB,UAAL,CAAgBQ,UAAhB,CAA2Be,IAA3B;AACD;;;WAED,0BAAiBC,KAAjB,EAAwB;AAAA;;AACtB,UAAI,CAAC,KAAKzB,SAAV,EAAqB,KAAKK,QAAL;AACrBe,MAAAA,UAAU,CAAC,YAAM;AACf,QAAA,MAAI,CAACnB,UAAL,CAAgByB,YAAhB,CAA6BD,KAA7B;AACD,OAFS,EAEP,GAFO,CAAV;AAGD;;;WAED,yBAAgBE,IAAhB,EAAsB;AACpB,UAAI,CAAC,KAAK3B,SAAV,EAAqB,KAAKK,QAAL;AACrB,UAAMoB,KAAK,GAAG,KAAKxB,UAAL,CAAgB2B,kBAAhB,CAAmCD,IAAnC,CAAd;AACA,WAAKf,gBAAL,CAAsBa,KAAtB;AACD;;;WAED,kBAAS;AACP,UAAQI,QAAR,GAAqB,KAAK9B,KAA1B,CAAQ8B,QAAR;AACA,0BACEC,wCAACC,4BAAD,CAAmB,QAAnB;AAA4B,QAAA,KAAK,EAAE,KAAK3B;AAAxC,SACGyB,QADH,CADF;AAKD;;;;EAjG6CG;;AAA3BlC,mBAGZmC,eAAe;AACpBC,EAAAA,kBAAkB,EAAE,KADA;AAEpBC,EAAAA,cAAc,EAAE,KAFI;AAGpBC,EAAAA,WAAW,EAAE,EAHO;AAIpBC,EAAAA,OAAO,EAAExC,IAJW;AAKpB0B,EAAAA,gBAAgB,EAAE1B,IALE;AAMpByC,EAAAA,oBAAoB,EAAEzC,IANF;AAOpB0C,EAAAA,gBAAgB,EAAE1C,IAPE;AAQpBM,EAAAA,eAAe,EAAEN;AARG;;;;"}
|
|
@@ -10,9 +10,9 @@ require('@babel/runtime/helpers/assertThisInitialized');
|
|
|
10
10
|
require('@babel/runtime/helpers/inherits');
|
|
11
11
|
require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
12
12
|
require('@babel/runtime/helpers/getPrototypeOf');
|
|
13
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
14
13
|
require('@elliemae/ds-utilities');
|
|
15
14
|
require('./FocusGroup.js');
|
|
15
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
16
16
|
require('hotkeys-js');
|
|
17
17
|
require('./FocusGroupContext.js');
|
|
18
18
|
|
|
@@ -8,7 +8,6 @@ var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitializ
|
|
|
8
8
|
var _inherits = require('@babel/runtime/helpers/inherits');
|
|
9
9
|
var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
10
10
|
var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
|
|
11
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
12
11
|
var React = require('react');
|
|
13
12
|
|
|
14
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -19,7 +18,6 @@ var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assert
|
|
|
19
18
|
var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
|
|
20
19
|
var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
|
|
21
20
|
var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
|
|
22
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
23
21
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
24
22
|
|
|
25
23
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
|
|
@@ -39,10 +37,9 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
39
37
|
_classCallCheck__default['default'](this, ScrollSync);
|
|
40
38
|
|
|
41
39
|
_this = _super.call(this, props);
|
|
40
|
+
_this.panes = {};
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "registerPane", function (node, groups) {
|
|
42
|
+
_this.registerPane = function (node, groups) {
|
|
46
43
|
groups.forEach(function (group) {
|
|
47
44
|
if (!_this.panes[group]) {
|
|
48
45
|
_this.panes[group] = [];
|
|
@@ -56,9 +53,9 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
56
53
|
});
|
|
57
54
|
|
|
58
55
|
_this.addEvents(node, groups);
|
|
59
|
-
}
|
|
56
|
+
};
|
|
60
57
|
|
|
61
|
-
|
|
58
|
+
_this.unregisterPane = function (node, groups) {
|
|
62
59
|
groups.forEach(function (group) {
|
|
63
60
|
if (_this.findPane(node, group)) {
|
|
64
61
|
_this.removeEvents(node);
|
|
@@ -66,19 +63,19 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
66
63
|
_this.panes[group].splice(_this.panes[group].indexOf(node), 1);
|
|
67
64
|
}
|
|
68
65
|
});
|
|
69
|
-
}
|
|
66
|
+
};
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
_this.addEvents = function (node, groups) {
|
|
72
69
|
/* For some reason element.addEventListener doesnt work with document.body */
|
|
73
70
|
node.onscroll = _this.handlePaneScroll.bind(_assertThisInitialized__default['default'](_this), node, groups); // eslint-disable-line
|
|
74
|
-
}
|
|
71
|
+
};
|
|
75
72
|
|
|
76
|
-
|
|
73
|
+
_this.removeEvents = function (node) {
|
|
77
74
|
/* For some reason element.removeEventListener doesnt work with document.body */
|
|
78
75
|
node.onscroll = null; // eslint-disable-line
|
|
79
|
-
}
|
|
76
|
+
};
|
|
80
77
|
|
|
81
|
-
|
|
78
|
+
_this.findPane = function (node, group) {
|
|
82
79
|
if (!_this.panes[group]) {
|
|
83
80
|
return false;
|
|
84
81
|
}
|
|
@@ -86,18 +83,18 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
86
83
|
return _this.panes[group].find(function (pane) {
|
|
87
84
|
return pane === node;
|
|
88
85
|
});
|
|
89
|
-
}
|
|
86
|
+
};
|
|
90
87
|
|
|
91
|
-
|
|
88
|
+
_this.handlePaneScroll = function (node, groups, e) {
|
|
92
89
|
var enabled = _this.props.enabled;
|
|
93
90
|
if (_this.props.onScroll) _this.props.onScroll(e);
|
|
94
91
|
if (!enabled) return;
|
|
95
92
|
window.requestAnimationFrame(function () {
|
|
96
93
|
_this.syncScrollPositions(node, groups);
|
|
97
94
|
});
|
|
98
|
-
}
|
|
95
|
+
};
|
|
99
96
|
|
|
100
|
-
|
|
97
|
+
_this.syncScrollPositions = function (scrolledPane, groups) {
|
|
101
98
|
groups.forEach(function (group) {
|
|
102
99
|
_this.panes[group].forEach(function (pane) {
|
|
103
100
|
/* For all panes beside the currently scrolling one */
|
|
@@ -115,7 +112,7 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
115
112
|
}
|
|
116
113
|
});
|
|
117
114
|
});
|
|
118
|
-
}
|
|
115
|
+
};
|
|
119
116
|
|
|
120
117
|
_this.syncContext = {
|
|
121
118
|
registerPane: _this.registerPane,
|
|
@@ -166,12 +163,12 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
166
163
|
return ScrollSync;
|
|
167
164
|
}(React.Component);
|
|
168
165
|
|
|
169
|
-
|
|
166
|
+
ScrollSync.defaultProps = {
|
|
170
167
|
proportional: true,
|
|
171
168
|
vertical: true,
|
|
172
169
|
horizontal: true,
|
|
173
170
|
enabled: true
|
|
174
|
-
}
|
|
171
|
+
};
|
|
175
172
|
|
|
176
173
|
exports.ScrollSyncContext = ScrollSyncContext;
|
|
177
174
|
exports['default'] = ScrollSync;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollSync.js","sources":["../../../src/ScrollSync/ScrollSync.tsx"],"sourcesContent":["import React, { Component } from 'react';\n\nexport const ScrollSyncContext = React.createContext();\n\nconst { Provider } = ScrollSyncContext;\n\nexport default class ScrollSync extends Component {\n panes = {};\n\n static defaultProps = {\n proportional: true,\n vertical: true,\n horizontal: true,\n enabled: true,\n };\n\n constructor(props) {\n super(props);\n this.syncContext = {\n registerPane: this.registerPane,\n unregisterPane: this.unregisterPane,\n };\n }\n\n registerPane = (node, groups) => {\n groups.forEach((group) => {\n if (!this.panes[group]) {\n this.panes[group] = [];\n }\n\n if (this.panes[group].length > 0) {\n this.syncScrollPosition(this.panes[group][0], node);\n }\n this.panes[group].push(node);\n });\n this.addEvents(node, groups);\n };\n\n unregisterPane = (node, groups) => {\n groups.forEach((group) => {\n if (this.findPane(node, group)) {\n this.removeEvents(node);\n this.panes[group].splice(this.panes[group].indexOf(node), 1);\n }\n });\n };\n\n addEvents = (node, groups) => {\n /* For some reason element.addEventListener doesnt work with document.body */\n node.onscroll = this.handlePaneScroll.bind(this, node, groups); // eslint-disable-line\n };\n\n removeEvents = (node) => {\n /* For some reason element.removeEventListener doesnt work with document.body */\n node.onscroll = null; // eslint-disable-line\n };\n\n findPane = (node, group) => {\n if (!this.panes[group]) {\n return false;\n }\n\n return this.panes[group].find((pane) => pane === node);\n };\n\n handlePaneScroll = (node, groups, e) => {\n const { enabled } = this.props;\n if (this.props.onScroll) this.props.onScroll(e);\n\n if (!enabled) return;\n\n window.requestAnimationFrame(() => {\n this.syncScrollPositions(node, groups);\n });\n };\n\n syncScrollPositions = (scrolledPane, groups) => {\n groups.forEach((group) => {\n this.panes[group].forEach((pane) => {\n /* For all panes beside the currently scrolling one */\n if (scrolledPane !== pane) {\n /* Remove event listeners from the node that we'll manipulate */\n this.removeEvents(pane, group);\n this.syncScrollPosition(scrolledPane, pane);\n /* Re-attach event listeners after we're done scrolling */\n window.requestAnimationFrame(() => {\n this.addEvents(pane, groups);\n });\n }\n });\n });\n };\n\n syncScrollPosition(scrolledPane, pane) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollWidth,\n clientWidth,\n } = scrolledPane;\n\n const scrollTopOffset = scrollHeight - clientHeight;\n const scrollLeftOffset = scrollWidth - clientWidth;\n\n const { proportional, vertical, horizontal } = this.props;\n\n /* Calculate the actual pane height */\n const paneHeight = pane.scrollHeight - clientHeight;\n const paneWidth = pane.scrollWidth - clientWidth;\n /* Adjust the scrollTop position of it accordingly */\n if (vertical && scrollTopOffset > 0) {\n pane.scrollTop = proportional\n ? (paneHeight * scrollTop) / scrollTopOffset\n : scrollTop; // eslint-disable-line\n }\n if (horizontal && scrollLeftOffset > 0) {\n pane.scrollLeft = proportional\n ? (paneWidth * scrollLeft) / scrollLeftOffset\n : scrollLeft; // eslint-disable-line\n }\n }\n\n render() {\n const { children } = this.props;\n return (\n <Provider value={this.syncContext}>\n {React.Children.only(children)}\n </Provider>\n );\n }\n}\n"],"names":["ScrollSyncContext","React","createContext","Provider","ScrollSync","props","node","groups","forEach","group","
|
|
1
|
+
{"version":3,"file":"ScrollSync.js","sources":["../../../src/ScrollSync/ScrollSync.tsx"],"sourcesContent":["import React, { Component } from 'react';\n\nexport const ScrollSyncContext = React.createContext();\n\nconst { Provider } = ScrollSyncContext;\n\nexport default class ScrollSync extends Component {\n panes = {};\n\n static defaultProps = {\n proportional: true,\n vertical: true,\n horizontal: true,\n enabled: true,\n };\n\n constructor(props) {\n super(props);\n this.syncContext = {\n registerPane: this.registerPane,\n unregisterPane: this.unregisterPane,\n };\n }\n\n registerPane = (node, groups) => {\n groups.forEach((group) => {\n if (!this.panes[group]) {\n this.panes[group] = [];\n }\n\n if (this.panes[group].length > 0) {\n this.syncScrollPosition(this.panes[group][0], node);\n }\n this.panes[group].push(node);\n });\n this.addEvents(node, groups);\n };\n\n unregisterPane = (node, groups) => {\n groups.forEach((group) => {\n if (this.findPane(node, group)) {\n this.removeEvents(node);\n this.panes[group].splice(this.panes[group].indexOf(node), 1);\n }\n });\n };\n\n addEvents = (node, groups) => {\n /* For some reason element.addEventListener doesnt work with document.body */\n node.onscroll = this.handlePaneScroll.bind(this, node, groups); // eslint-disable-line\n };\n\n removeEvents = (node) => {\n /* For some reason element.removeEventListener doesnt work with document.body */\n node.onscroll = null; // eslint-disable-line\n };\n\n findPane = (node, group) => {\n if (!this.panes[group]) {\n return false;\n }\n\n return this.panes[group].find((pane) => pane === node);\n };\n\n handlePaneScroll = (node, groups, e) => {\n const { enabled } = this.props;\n if (this.props.onScroll) this.props.onScroll(e);\n\n if (!enabled) return;\n\n window.requestAnimationFrame(() => {\n this.syncScrollPositions(node, groups);\n });\n };\n\n syncScrollPositions = (scrolledPane, groups) => {\n groups.forEach((group) => {\n this.panes[group].forEach((pane) => {\n /* For all panes beside the currently scrolling one */\n if (scrolledPane !== pane) {\n /* Remove event listeners from the node that we'll manipulate */\n this.removeEvents(pane, group);\n this.syncScrollPosition(scrolledPane, pane);\n /* Re-attach event listeners after we're done scrolling */\n window.requestAnimationFrame(() => {\n this.addEvents(pane, groups);\n });\n }\n });\n });\n };\n\n syncScrollPosition(scrolledPane, pane) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollWidth,\n clientWidth,\n } = scrolledPane;\n\n const scrollTopOffset = scrollHeight - clientHeight;\n const scrollLeftOffset = scrollWidth - clientWidth;\n\n const { proportional, vertical, horizontal } = this.props;\n\n /* Calculate the actual pane height */\n const paneHeight = pane.scrollHeight - clientHeight;\n const paneWidth = pane.scrollWidth - clientWidth;\n /* Adjust the scrollTop position of it accordingly */\n if (vertical && scrollTopOffset > 0) {\n pane.scrollTop = proportional\n ? (paneHeight * scrollTop) / scrollTopOffset\n : scrollTop; // eslint-disable-line\n }\n if (horizontal && scrollLeftOffset > 0) {\n pane.scrollLeft = proportional\n ? (paneWidth * scrollLeft) / scrollLeftOffset\n : scrollLeft; // eslint-disable-line\n }\n }\n\n render() {\n const { children } = this.props;\n return (\n <Provider value={this.syncContext}>\n {React.Children.only(children)}\n </Provider>\n );\n }\n}\n"],"names":["ScrollSyncContext","React","createContext","Provider","ScrollSync","props","panes","registerPane","node","groups","forEach","group","length","syncScrollPosition","push","addEvents","unregisterPane","findPane","removeEvents","splice","indexOf","onscroll","handlePaneScroll","bind","find","pane","e","enabled","onScroll","window","requestAnimationFrame","syncScrollPositions","scrolledPane","syncContext","scrollTop","scrollHeight","clientHeight","scrollLeft","scrollWidth","clientWidth","scrollTopOffset","scrollLeftOffset","proportional","vertical","horizontal","paneHeight","paneWidth","children","Children","only","Component","defaultProps"],"mappings":"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"}
|
|
@@ -3,24 +3,21 @@
|
|
|
3
3
|
var _extends = require('@babel/runtime/helpers/extends');
|
|
4
4
|
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
|
|
5
5
|
var _createClass = require('@babel/runtime/helpers/createClass');
|
|
6
|
-
var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
|
|
7
6
|
var _inherits = require('@babel/runtime/helpers/inherits');
|
|
8
7
|
var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
9
8
|
var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
|
|
10
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
9
|
var React = require('react');
|
|
12
10
|
var ScrollSync_ScrollSync = require('./ScrollSync.js');
|
|
11
|
+
require('@babel/runtime/helpers/assertThisInitialized');
|
|
13
12
|
|
|
14
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
14
|
|
|
16
15
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
17
16
|
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
18
17
|
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
|
|
19
|
-
var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
|
|
20
18
|
var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
|
|
21
19
|
var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
|
|
22
20
|
var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
|
|
23
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
24
21
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
25
22
|
|
|
26
23
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
|
|
@@ -53,9 +50,9 @@ var ScrollSyncPane = /*#__PURE__*/function (_Component) {
|
|
|
53
50
|
|
|
54
51
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
55
52
|
|
|
56
|
-
|
|
53
|
+
_this.toArray = function (groups) {
|
|
57
54
|
return [].concat(groups);
|
|
58
|
-
}
|
|
55
|
+
};
|
|
59
56
|
|
|
60
57
|
return _this;
|
|
61
58
|
}
|
|
@@ -100,11 +97,10 @@ var ScrollSyncPane = /*#__PURE__*/function (_Component) {
|
|
|
100
97
|
return ScrollSyncPane;
|
|
101
98
|
}(React.Component);
|
|
102
99
|
|
|
103
|
-
|
|
100
|
+
ScrollSyncPane.defaultProps = {
|
|
104
101
|
group: 'default',
|
|
105
102
|
enabled: true
|
|
106
|
-
}
|
|
107
|
-
|
|
103
|
+
};
|
|
108
104
|
var ScrollSyncPane$1 = (function (props) {
|
|
109
105
|
return /*#__PURE__*/React__default['default'].createElement(ScrollSync_ScrollSync.ScrollSyncContext.Consumer, null, function (context) {
|
|
110
106
|
return /*#__PURE__*/React__default['default'].createElement(ScrollSyncPane, _extends__default['default']({}, props, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollSyncPane.js","sources":["../../../src/ScrollSync/ScrollSyncPane.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport React, { Component } from 'react';\nimport { ScrollSyncContext } from './ScrollSync';\n\n/**\n * MODIFIED FROM react-scroll-sync\n *\n * ScrollSyncPane Component\n *\n * Wrap your content in it to keep its scroll position in sync with other panes\n *\n * @param groups\n * @example ./example.md\n */\nclass ScrollSyncPane extends Component {\n static defaultProps = {\n group: 'default',\n enabled: true,\n };\n\n componentWillUnmount() {\n const { enabled, group, syncContext } = this.props;\n const { unregisterPane } = syncContext;\n\n if (enabled) unregisterPane(this.node, this.toArray(group));\n }\n\n toArray = groups => [].concat(groups);\n\n render() {\n const { children, group, syncContext, notPaginated } = this.props;\n const { registerPane } = syncContext;\n\n return children({\n registerPane: node => {\n if (notPaginated) {\n const virtualizedBody = node.querySelector(\n '.virtualized-body-wrapper',\n );\n if (virtualizedBody) {\n registerPane(virtualizedBody, this.toArray(group));\n }\n }\n return registerPane(node, this.toArray(group));\n },\n });\n }\n}\n\nexport default props => (\n <ScrollSyncContext.Consumer>\n {context => <ScrollSyncPane {...props} syncContext={context} />}\n </ScrollSyncContext.Consumer>\n);\n"],"names":["ScrollSyncPane","groups","concat","props","enabled","group","syncContext","unregisterPane","node","
|
|
1
|
+
{"version":3,"file":"ScrollSyncPane.js","sources":["../../../src/ScrollSync/ScrollSyncPane.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport React, { Component } from 'react';\nimport { ScrollSyncContext } from './ScrollSync';\n\n/**\n * MODIFIED FROM react-scroll-sync\n *\n * ScrollSyncPane Component\n *\n * Wrap your content in it to keep its scroll position in sync with other panes\n *\n * @param groups\n * @example ./example.md\n */\nclass ScrollSyncPane extends Component {\n static defaultProps = {\n group: 'default',\n enabled: true,\n };\n\n componentWillUnmount() {\n const { enabled, group, syncContext } = this.props;\n const { unregisterPane } = syncContext;\n\n if (enabled) unregisterPane(this.node, this.toArray(group));\n }\n\n toArray = groups => [].concat(groups);\n\n render() {\n const { children, group, syncContext, notPaginated } = this.props;\n const { registerPane } = syncContext;\n\n return children({\n registerPane: node => {\n if (notPaginated) {\n const virtualizedBody = node.querySelector(\n '.virtualized-body-wrapper',\n );\n if (virtualizedBody) {\n registerPane(virtualizedBody, this.toArray(group));\n }\n }\n return registerPane(node, this.toArray(group));\n },\n });\n }\n}\n\nexport default props => (\n <ScrollSyncContext.Consumer>\n {context => <ScrollSyncPane {...props} syncContext={context} />}\n </ScrollSyncContext.Consumer>\n);\n"],"names":["ScrollSyncPane","toArray","groups","concat","props","enabled","group","syncContext","unregisterPane","node","children","notPaginated","registerPane","virtualizedBody","querySelector","Component","defaultProps","React","ScrollSyncContext","context"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMA;;;;;;;;;;;;;;;;UAaJC,UAAU,UAAAC,MAAM;AAAA,aAAI,GAAGC,MAAH,CAAUD,MAAV,CAAJ;AAAA;;;;;;;WAPhB,gCAAuB;AACrB,wBAAwC,KAAKE,KAA7C;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,KAAjB,eAAiBA,KAAjB;AAAA,UAAwBC,WAAxB,eAAwBA,WAAxB;AACA,UAAQC,cAAR,GAA2BD,WAA3B,CAAQC,cAAR;AAEA,UAAIH,OAAJ,EAAaG,cAAc,CAAC,KAAKC,IAAN,EAAY,KAAKR,OAAL,CAAaK,KAAb,CAAZ,CAAd;AACd;;;WAID,kBAAS;AAAA;;AACP,yBAAuD,KAAKF,KAA5D;AAAA,UAAQM,QAAR,gBAAQA,QAAR;AAAA,UAAkBJ,KAAlB,gBAAkBA,KAAlB;AAAA,UAAyBC,WAAzB,gBAAyBA,WAAzB;AAAA,UAAsCI,YAAtC,gBAAsCA,YAAtC;AACA,UAAQC,aAAR,GAAyBL,WAAzB,CAAQK,YAAR;AAEA,aAAOF,QAAQ,CAAC;AACdE,QAAAA,YAAY,EAAE,sBAAAH,IAAI,EAAI;AACpB,cAAIE,YAAJ,EAAkB;AAChB,gBAAME,eAAe,GAAGJ,IAAI,CAACK,aAAL,CACtB,2BADsB,CAAxB;;AAGA,gBAAID,eAAJ,EAAqB;AACnBD,cAAAA,aAAY,CAACC,eAAD,EAAkB,MAAI,CAACZ,OAAL,CAAaK,KAAb,CAAlB,CAAZ;AACD;AACF;;AACD,iBAAOM,aAAY,CAACH,IAAD,EAAO,MAAI,CAACR,OAAL,CAAaK,KAAb,CAAP,CAAnB;AACD;AAXa,OAAD,CAAf;AAaD;;;;EAhC0BS;;AAAvBf,eACGgB,eAAe;AACpBV,EAAAA,KAAK,EAAE,SADa;AAEpBD,EAAAA,OAAO,EAAE;AAFW;AAkCxB,wBAAe,UAAAD,KAAK;AAAA,sBAClBa,wCAACC,uCAAD,CAAmB,QAAnB,QACG,UAAAC,OAAO;AAAA,wBAAIF,wCAAC,cAAD,mCAAoBb,KAApB;AAA2B,MAAA,WAAW,EAAEe;AAAxC,OAAJ;AAAA,GADV,CADkB;AAAA,CAApB;;;;"}
|
package/cjs/ScrollSync/index.js
CHANGED
|
@@ -10,7 +10,6 @@ require('@babel/runtime/helpers/assertThisInitialized');
|
|
|
10
10
|
require('@babel/runtime/helpers/inherits');
|
|
11
11
|
require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
12
12
|
require('@babel/runtime/helpers/getPrototypeOf');
|
|
13
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
14
13
|
require('react');
|
|
15
14
|
require('@babel/runtime/helpers/extends');
|
|
16
15
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
|
|
4
4
|
var _createClass = require('@babel/runtime/helpers/createClass');
|
|
5
|
-
var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
|
|
6
5
|
var _inherits = require('@babel/runtime/helpers/inherits');
|
|
7
6
|
var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
8
7
|
var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
|
|
9
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
10
8
|
var React = require('react');
|
|
11
9
|
var raf = require('raf');
|
|
12
10
|
var hoistNonReactStatic = require('hoist-non-react-statics');
|
|
@@ -15,11 +13,9 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
15
13
|
|
|
16
14
|
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
17
15
|
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
|
|
18
|
-
var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
|
|
19
16
|
var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
|
|
20
17
|
var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
|
|
21
18
|
var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
|
|
22
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
23
19
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
24
20
|
var raf__default = /*#__PURE__*/_interopDefaultLegacy(raf);
|
|
25
21
|
var hoistNonReactStatic__default = /*#__PURE__*/_interopDefaultLegacy(hoistNonReactStatic);
|
|
@@ -51,11 +47,9 @@ function deferComponentRender(WrappedComponent, fallback) {
|
|
|
51
47
|
}
|
|
52
48
|
|
|
53
49
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
54
|
-
|
|
55
|
-
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "state", {
|
|
50
|
+
_this.state = {
|
|
56
51
|
shouldRender: false
|
|
57
|
-
}
|
|
58
|
-
|
|
52
|
+
};
|
|
59
53
|
return _this;
|
|
60
54
|
}
|
|
61
55
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/defer-render-hoc/index.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport raf from 'raf';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\n/**\n * Allows two animation frames to complete to allow other components to update\n * and re-render before mounting and rendering an expensive `WrappedComponent`.\n *\n * @param WrappedComponent\n * @param fallback\n */\nexport default function deferComponentRender(WrappedComponent, fallback) {\n class DeferredRenderWrapper extends PureComponent {\n state = { shouldRender: false };\n\n componentDidMount() {\n raf(() => raf(() => this.setState({ shouldRender: true })));\n }\n\n render() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.state.shouldRender ? (\n <WrappedComponent {...this.props} />\n ) : (\n fallback\n );\n }\n }\n\n return hoistNonReactStatic(DeferredRenderWrapper, WrappedComponent);\n}\n"],"names":["deferComponentRender","WrappedComponent","fallback","DeferredRenderWrapper","shouldRender","raf","setState","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/defer-render-hoc/index.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport raf from 'raf';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\n/**\n * Allows two animation frames to complete to allow other components to update\n * and re-render before mounting and rendering an expensive `WrappedComponent`.\n *\n * @param WrappedComponent\n * @param fallback\n */\nexport default function deferComponentRender(WrappedComponent, fallback) {\n class DeferredRenderWrapper extends PureComponent {\n state = { shouldRender: false };\n\n componentDidMount() {\n raf(() => raf(() => this.setState({ shouldRender: true })));\n }\n\n render() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.state.shouldRender ? (\n <WrappedComponent {...this.props} />\n ) : (\n fallback\n );\n }\n }\n\n return hoistNonReactStatic(DeferredRenderWrapper, WrappedComponent);\n}\n"],"names":["deferComponentRender","WrappedComponent","fallback","DeferredRenderWrapper","state","shouldRender","raf","setState","React","props","PureComponent","hoistNonReactStatic"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASA,oBAAT,CAA8BC,gBAA9B,EAAgDC,QAAhD,EAA0D;AAAA,MACjEC,qBADiE;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,YAErEC,KAFqE,GAE7D;AAAEC,QAAAA,YAAY,EAAE;AAAhB,OAF6D;AAAA;AAAA;;AAAA;AAAA;AAAA,aAIrE,6BAAoB;AAAA;;AAClBC,QAAAA,uBAAG,CAAC;AAAA,iBAAMA,uBAAG,CAAC;AAAA,mBAAM,MAAI,CAACC,QAAL,CAAc;AAAEF,cAAAA,YAAY,EAAE;AAAhB,aAAd,CAAN;AAAA,WAAD,CAAT;AAAA,SAAD,CAAH;AACD;AANoE;AAAA;AAAA,aAQrE,kBAAS;AACP;AACA,eAAO,KAAKD,KAAL,CAAWC,YAAX,gBACLG,wCAAC,gBAAD,EAAsB,KAAKC,KAA3B,CADK,GAGLP,QAHF;AAKD;AAfoE;;AAAA;AAAA,IACnCQ,mBADmC;;AAkBvE,SAAOC,uCAAmB,CAACR,qBAAD,EAAwBF,gBAAxB,CAA1B;AACD;;;;"}
|
package/cjs/index.js
CHANGED
|
@@ -13,7 +13,6 @@ require('@babel/runtime/helpers/assertThisInitialized');
|
|
|
13
13
|
require('@babel/runtime/helpers/inherits');
|
|
14
14
|
require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
15
15
|
require('@babel/runtime/helpers/getPrototypeOf');
|
|
16
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
17
16
|
require('react');
|
|
18
17
|
require('@babel/runtime/helpers/extends');
|
|
19
18
|
require('prop-types');
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,20 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
|
|
4
4
|
var _createClass = require('@babel/runtime/helpers/createClass');
|
|
5
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
5
|
var dsUtilities = require('@elliemae/ds-utilities');
|
|
7
6
|
|
|
8
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
8
|
|
|
10
9
|
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
11
10
|
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
|
|
12
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
13
11
|
|
|
14
12
|
var VolatileRowsListener = /*#__PURE__*/function () {
|
|
15
13
|
function VolatileRowsListener() {
|
|
16
14
|
_classCallCheck__default['default'](this, VolatileRowsListener);
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
this.observers = [];
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
_createClass__default['default'](VolatileRowsListener, [{
|
|
@@ -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","
|
|
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;;;;;;;;"}
|
|
@@ -66,8 +66,7 @@ var FocusGroup = /*#__PURE__*/function () {
|
|
|
66
66
|
|
|
67
67
|
_classCallCheck(this, FocusGroup);
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
this.items = [];
|
|
71
70
|
this.options = _objectSpread(_objectSpread({}, defaultOptions), options);
|
|
72
71
|
var orientation = this.options.orientation;
|
|
73
72
|
this.keyBindings = _objectSpread({
|
|
@@ -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","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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"}
|
|
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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"}
|
|
@@ -4,11 +4,11 @@ import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitial
|
|
|
4
4
|
import _inherits from '@babel/runtime/helpers/esm/inherits';
|
|
5
5
|
import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
6
6
|
import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
7
|
-
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
8
7
|
import React, { Component } from 'react';
|
|
9
8
|
import { isFunction } from '@elliemae/ds-utilities';
|
|
10
9
|
import FocusGroup from './FocusGroup.js';
|
|
11
10
|
import FocusGroupContext from './FocusGroupContext.js';
|
|
11
|
+
import '@babel/runtime/helpers/esm/defineProperty';
|
|
12
12
|
import 'hotkeys-js';
|
|
13
13
|
|
|
14
14
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
@@ -30,9 +30,7 @@ var FocusGroupProvider = /*#__PURE__*/function (_Component) {
|
|
|
30
30
|
_classCallCheck(this, FocusGroupProvider);
|
|
31
31
|
|
|
32
32
|
_this = _super.call(this, props);
|
|
33
|
-
|
|
34
|
-
_defineProperty(_assertThisInitialized(_this), "activated", false);
|
|
35
|
-
|
|
33
|
+
_this.activated = false;
|
|
36
34
|
_this.focusGroup = new FocusGroup(props);
|
|
37
35
|
props.onFocusGroupSet(_assertThisInitialized(_this));
|
|
38
36
|
_this.actions = {
|
|
@@ -130,7 +128,7 @@ var FocusGroupProvider = /*#__PURE__*/function (_Component) {
|
|
|
130
128
|
return FocusGroupProvider;
|
|
131
129
|
}(Component);
|
|
132
130
|
|
|
133
|
-
|
|
131
|
+
FocusGroupProvider.defaultProps = {
|
|
134
132
|
exitWhenNoPrevious: false,
|
|
135
133
|
exitWhenNoNext: false,
|
|
136
134
|
keyBindings: {},
|
|
@@ -139,7 +137,7 @@ _defineProperty(FocusGroupProvider, "defaultProps", {
|
|
|
139
137
|
onFocusPreviousGroup: noop,
|
|
140
138
|
onFocusNextGroup: noop,
|
|
141
139
|
onFocusGroupSet: noop
|
|
142
|
-
}
|
|
140
|
+
};
|
|
143
141
|
|
|
144
142
|
export { FocusGroupProvider as default };
|
|
145
143
|
//# sourceMappingURL=FocusGroupManager.js.map
|
|
@@ -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","focusGroup","FocusGroup","onFocusGroupSet","actions","activate","bind","deactivate","register","unregister","focusFirst","focusLast","focusItemByIndex","focusItemByNode","focus","focusCurrent","isGroupActive","focusNext","focusPrevious","autoFocusOnMount","setTimeout","onActivate","
|
|
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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"}
|
|
@@ -8,9 +8,9 @@ import '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
|
8
8
|
import '@babel/runtime/helpers/esm/inherits';
|
|
9
9
|
import '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
10
10
|
import '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
11
|
-
import '@babel/runtime/helpers/esm/defineProperty';
|
|
12
11
|
import '@elliemae/ds-utilities';
|
|
13
12
|
import './FocusGroup.js';
|
|
13
|
+
import '@babel/runtime/helpers/esm/defineProperty';
|
|
14
14
|
import 'hotkeys-js';
|
|
15
15
|
import './FocusGroupContext.js';
|
|
16
16
|
|
|
@@ -4,7 +4,6 @@ import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitial
|
|
|
4
4
|
import _inherits from '@babel/runtime/helpers/esm/inherits';
|
|
5
5
|
import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
6
6
|
import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
7
|
-
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
8
7
|
import React, { Component } from 'react';
|
|
9
8
|
|
|
10
9
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
@@ -24,10 +23,9 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
24
23
|
_classCallCheck(this, ScrollSync);
|
|
25
24
|
|
|
26
25
|
_this = _super.call(this, props);
|
|
26
|
+
_this.panes = {};
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
_defineProperty(_assertThisInitialized(_this), "registerPane", function (node, groups) {
|
|
28
|
+
_this.registerPane = function (node, groups) {
|
|
31
29
|
groups.forEach(function (group) {
|
|
32
30
|
if (!_this.panes[group]) {
|
|
33
31
|
_this.panes[group] = [];
|
|
@@ -41,9 +39,9 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
41
39
|
});
|
|
42
40
|
|
|
43
41
|
_this.addEvents(node, groups);
|
|
44
|
-
}
|
|
42
|
+
};
|
|
45
43
|
|
|
46
|
-
|
|
44
|
+
_this.unregisterPane = function (node, groups) {
|
|
47
45
|
groups.forEach(function (group) {
|
|
48
46
|
if (_this.findPane(node, group)) {
|
|
49
47
|
_this.removeEvents(node);
|
|
@@ -51,19 +49,19 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
51
49
|
_this.panes[group].splice(_this.panes[group].indexOf(node), 1);
|
|
52
50
|
}
|
|
53
51
|
});
|
|
54
|
-
}
|
|
52
|
+
};
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
_this.addEvents = function (node, groups) {
|
|
57
55
|
/* For some reason element.addEventListener doesnt work with document.body */
|
|
58
56
|
node.onscroll = _this.handlePaneScroll.bind(_assertThisInitialized(_this), node, groups); // eslint-disable-line
|
|
59
|
-
}
|
|
57
|
+
};
|
|
60
58
|
|
|
61
|
-
|
|
59
|
+
_this.removeEvents = function (node) {
|
|
62
60
|
/* For some reason element.removeEventListener doesnt work with document.body */
|
|
63
61
|
node.onscroll = null; // eslint-disable-line
|
|
64
|
-
}
|
|
62
|
+
};
|
|
65
63
|
|
|
66
|
-
|
|
64
|
+
_this.findPane = function (node, group) {
|
|
67
65
|
if (!_this.panes[group]) {
|
|
68
66
|
return false;
|
|
69
67
|
}
|
|
@@ -71,18 +69,18 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
71
69
|
return _this.panes[group].find(function (pane) {
|
|
72
70
|
return pane === node;
|
|
73
71
|
});
|
|
74
|
-
}
|
|
72
|
+
};
|
|
75
73
|
|
|
76
|
-
|
|
74
|
+
_this.handlePaneScroll = function (node, groups, e) {
|
|
77
75
|
var enabled = _this.props.enabled;
|
|
78
76
|
if (_this.props.onScroll) _this.props.onScroll(e);
|
|
79
77
|
if (!enabled) return;
|
|
80
78
|
window.requestAnimationFrame(function () {
|
|
81
79
|
_this.syncScrollPositions(node, groups);
|
|
82
80
|
});
|
|
83
|
-
}
|
|
81
|
+
};
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
_this.syncScrollPositions = function (scrolledPane, groups) {
|
|
86
84
|
groups.forEach(function (group) {
|
|
87
85
|
_this.panes[group].forEach(function (pane) {
|
|
88
86
|
/* For all panes beside the currently scrolling one */
|
|
@@ -100,7 +98,7 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
100
98
|
}
|
|
101
99
|
});
|
|
102
100
|
});
|
|
103
|
-
}
|
|
101
|
+
};
|
|
104
102
|
|
|
105
103
|
_this.syncContext = {
|
|
106
104
|
registerPane: _this.registerPane,
|
|
@@ -151,12 +149,12 @@ var ScrollSync = /*#__PURE__*/function (_Component) {
|
|
|
151
149
|
return ScrollSync;
|
|
152
150
|
}(Component);
|
|
153
151
|
|
|
154
|
-
|
|
152
|
+
ScrollSync.defaultProps = {
|
|
155
153
|
proportional: true,
|
|
156
154
|
vertical: true,
|
|
157
155
|
horizontal: true,
|
|
158
156
|
enabled: true
|
|
159
|
-
}
|
|
157
|
+
};
|
|
160
158
|
|
|
161
159
|
export { ScrollSyncContext, ScrollSync as default };
|
|
162
160
|
//# sourceMappingURL=ScrollSync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollSync.js","sources":["../../../src/ScrollSync/ScrollSync.tsx"],"sourcesContent":["import React, { Component } from 'react';\n\nexport const ScrollSyncContext = React.createContext();\n\nconst { Provider } = ScrollSyncContext;\n\nexport default class ScrollSync extends Component {\n panes = {};\n\n static defaultProps = {\n proportional: true,\n vertical: true,\n horizontal: true,\n enabled: true,\n };\n\n constructor(props) {\n super(props);\n this.syncContext = {\n registerPane: this.registerPane,\n unregisterPane: this.unregisterPane,\n };\n }\n\n registerPane = (node, groups) => {\n groups.forEach((group) => {\n if (!this.panes[group]) {\n this.panes[group] = [];\n }\n\n if (this.panes[group].length > 0) {\n this.syncScrollPosition(this.panes[group][0], node);\n }\n this.panes[group].push(node);\n });\n this.addEvents(node, groups);\n };\n\n unregisterPane = (node, groups) => {\n groups.forEach((group) => {\n if (this.findPane(node, group)) {\n this.removeEvents(node);\n this.panes[group].splice(this.panes[group].indexOf(node), 1);\n }\n });\n };\n\n addEvents = (node, groups) => {\n /* For some reason element.addEventListener doesnt work with document.body */\n node.onscroll = this.handlePaneScroll.bind(this, node, groups); // eslint-disable-line\n };\n\n removeEvents = (node) => {\n /* For some reason element.removeEventListener doesnt work with document.body */\n node.onscroll = null; // eslint-disable-line\n };\n\n findPane = (node, group) => {\n if (!this.panes[group]) {\n return false;\n }\n\n return this.panes[group].find((pane) => pane === node);\n };\n\n handlePaneScroll = (node, groups, e) => {\n const { enabled } = this.props;\n if (this.props.onScroll) this.props.onScroll(e);\n\n if (!enabled) return;\n\n window.requestAnimationFrame(() => {\n this.syncScrollPositions(node, groups);\n });\n };\n\n syncScrollPositions = (scrolledPane, groups) => {\n groups.forEach((group) => {\n this.panes[group].forEach((pane) => {\n /* For all panes beside the currently scrolling one */\n if (scrolledPane !== pane) {\n /* Remove event listeners from the node that we'll manipulate */\n this.removeEvents(pane, group);\n this.syncScrollPosition(scrolledPane, pane);\n /* Re-attach event listeners after we're done scrolling */\n window.requestAnimationFrame(() => {\n this.addEvents(pane, groups);\n });\n }\n });\n });\n };\n\n syncScrollPosition(scrolledPane, pane) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollWidth,\n clientWidth,\n } = scrolledPane;\n\n const scrollTopOffset = scrollHeight - clientHeight;\n const scrollLeftOffset = scrollWidth - clientWidth;\n\n const { proportional, vertical, horizontal } = this.props;\n\n /* Calculate the actual pane height */\n const paneHeight = pane.scrollHeight - clientHeight;\n const paneWidth = pane.scrollWidth - clientWidth;\n /* Adjust the scrollTop position of it accordingly */\n if (vertical && scrollTopOffset > 0) {\n pane.scrollTop = proportional\n ? (paneHeight * scrollTop) / scrollTopOffset\n : scrollTop; // eslint-disable-line\n }\n if (horizontal && scrollLeftOffset > 0) {\n pane.scrollLeft = proportional\n ? (paneWidth * scrollLeft) / scrollLeftOffset\n : scrollLeft; // eslint-disable-line\n }\n }\n\n render() {\n const { children } = this.props;\n return (\n <Provider value={this.syncContext}>\n {React.Children.only(children)}\n </Provider>\n );\n }\n}\n"],"names":["ScrollSyncContext","React","createContext","Provider","ScrollSync","props","node","groups","forEach","group","
|
|
1
|
+
{"version":3,"file":"ScrollSync.js","sources":["../../../src/ScrollSync/ScrollSync.tsx"],"sourcesContent":["import React, { Component } from 'react';\n\nexport const ScrollSyncContext = React.createContext();\n\nconst { Provider } = ScrollSyncContext;\n\nexport default class ScrollSync extends Component {\n panes = {};\n\n static defaultProps = {\n proportional: true,\n vertical: true,\n horizontal: true,\n enabled: true,\n };\n\n constructor(props) {\n super(props);\n this.syncContext = {\n registerPane: this.registerPane,\n unregisterPane: this.unregisterPane,\n };\n }\n\n registerPane = (node, groups) => {\n groups.forEach((group) => {\n if (!this.panes[group]) {\n this.panes[group] = [];\n }\n\n if (this.panes[group].length > 0) {\n this.syncScrollPosition(this.panes[group][0], node);\n }\n this.panes[group].push(node);\n });\n this.addEvents(node, groups);\n };\n\n unregisterPane = (node, groups) => {\n groups.forEach((group) => {\n if (this.findPane(node, group)) {\n this.removeEvents(node);\n this.panes[group].splice(this.panes[group].indexOf(node), 1);\n }\n });\n };\n\n addEvents = (node, groups) => {\n /* For some reason element.addEventListener doesnt work with document.body */\n node.onscroll = this.handlePaneScroll.bind(this, node, groups); // eslint-disable-line\n };\n\n removeEvents = (node) => {\n /* For some reason element.removeEventListener doesnt work with document.body */\n node.onscroll = null; // eslint-disable-line\n };\n\n findPane = (node, group) => {\n if (!this.panes[group]) {\n return false;\n }\n\n return this.panes[group].find((pane) => pane === node);\n };\n\n handlePaneScroll = (node, groups, e) => {\n const { enabled } = this.props;\n if (this.props.onScroll) this.props.onScroll(e);\n\n if (!enabled) return;\n\n window.requestAnimationFrame(() => {\n this.syncScrollPositions(node, groups);\n });\n };\n\n syncScrollPositions = (scrolledPane, groups) => {\n groups.forEach((group) => {\n this.panes[group].forEach((pane) => {\n /* For all panes beside the currently scrolling one */\n if (scrolledPane !== pane) {\n /* Remove event listeners from the node that we'll manipulate */\n this.removeEvents(pane, group);\n this.syncScrollPosition(scrolledPane, pane);\n /* Re-attach event listeners after we're done scrolling */\n window.requestAnimationFrame(() => {\n this.addEvents(pane, groups);\n });\n }\n });\n });\n };\n\n syncScrollPosition(scrolledPane, pane) {\n const {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollLeft,\n scrollWidth,\n clientWidth,\n } = scrolledPane;\n\n const scrollTopOffset = scrollHeight - clientHeight;\n const scrollLeftOffset = scrollWidth - clientWidth;\n\n const { proportional, vertical, horizontal } = this.props;\n\n /* Calculate the actual pane height */\n const paneHeight = pane.scrollHeight - clientHeight;\n const paneWidth = pane.scrollWidth - clientWidth;\n /* Adjust the scrollTop position of it accordingly */\n if (vertical && scrollTopOffset > 0) {\n pane.scrollTop = proportional\n ? (paneHeight * scrollTop) / scrollTopOffset\n : scrollTop; // eslint-disable-line\n }\n if (horizontal && scrollLeftOffset > 0) {\n pane.scrollLeft = proportional\n ? (paneWidth * scrollLeft) / scrollLeftOffset\n : scrollLeft; // eslint-disable-line\n }\n }\n\n render() {\n const { children } = this.props;\n return (\n <Provider value={this.syncContext}>\n {React.Children.only(children)}\n </Provider>\n );\n }\n}\n"],"names":["ScrollSyncContext","React","createContext","Provider","ScrollSync","props","panes","registerPane","node","groups","forEach","group","length","syncScrollPosition","push","addEvents","unregisterPane","findPane","removeEvents","splice","indexOf","onscroll","handlePaneScroll","bind","find","pane","e","enabled","onScroll","window","requestAnimationFrame","syncScrollPositions","scrolledPane","syncContext","scrollTop","scrollHeight","clientHeight","scrollLeft","scrollWidth","clientWidth","scrollTopOffset","scrollLeftOffset","proportional","vertical","horizontal","paneHeight","paneWidth","children","Children","only","Component","defaultProps"],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
|
|
3
3
|
import _createClass from '@babel/runtime/helpers/esm/createClass';
|
|
4
|
-
import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
5
4
|
import _inherits from '@babel/runtime/helpers/esm/inherits';
|
|
6
5
|
import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
7
6
|
import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
8
|
-
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
9
7
|
import React, { Component } from 'react';
|
|
10
8
|
import { ScrollSyncContext } from './ScrollSync.js';
|
|
9
|
+
import '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
11
10
|
|
|
12
11
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
13
12
|
|
|
@@ -39,9 +38,9 @@ var ScrollSyncPane = /*#__PURE__*/function (_Component) {
|
|
|
39
38
|
|
|
40
39
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
_this.toArray = function (groups) {
|
|
43
42
|
return [].concat(groups);
|
|
44
|
-
}
|
|
43
|
+
};
|
|
45
44
|
|
|
46
45
|
return _this;
|
|
47
46
|
}
|
|
@@ -86,11 +85,10 @@ var ScrollSyncPane = /*#__PURE__*/function (_Component) {
|
|
|
86
85
|
return ScrollSyncPane;
|
|
87
86
|
}(Component);
|
|
88
87
|
|
|
89
|
-
|
|
88
|
+
ScrollSyncPane.defaultProps = {
|
|
90
89
|
group: 'default',
|
|
91
90
|
enabled: true
|
|
92
|
-
}
|
|
93
|
-
|
|
91
|
+
};
|
|
94
92
|
var ScrollSyncPane$1 = (function (props) {
|
|
95
93
|
return /*#__PURE__*/React.createElement(ScrollSyncContext.Consumer, null, function (context) {
|
|
96
94
|
return /*#__PURE__*/React.createElement(ScrollSyncPane, _extends({}, props, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollSyncPane.js","sources":["../../../src/ScrollSync/ScrollSyncPane.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport React, { Component } from 'react';\nimport { ScrollSyncContext } from './ScrollSync';\n\n/**\n * MODIFIED FROM react-scroll-sync\n *\n * ScrollSyncPane Component\n *\n * Wrap your content in it to keep its scroll position in sync with other panes\n *\n * @param groups\n * @example ./example.md\n */\nclass ScrollSyncPane extends Component {\n static defaultProps = {\n group: 'default',\n enabled: true,\n };\n\n componentWillUnmount() {\n const { enabled, group, syncContext } = this.props;\n const { unregisterPane } = syncContext;\n\n if (enabled) unregisterPane(this.node, this.toArray(group));\n }\n\n toArray = groups => [].concat(groups);\n\n render() {\n const { children, group, syncContext, notPaginated } = this.props;\n const { registerPane } = syncContext;\n\n return children({\n registerPane: node => {\n if (notPaginated) {\n const virtualizedBody = node.querySelector(\n '.virtualized-body-wrapper',\n );\n if (virtualizedBody) {\n registerPane(virtualizedBody, this.toArray(group));\n }\n }\n return registerPane(node, this.toArray(group));\n },\n });\n }\n}\n\nexport default props => (\n <ScrollSyncContext.Consumer>\n {context => <ScrollSyncPane {...props} syncContext={context} />}\n </ScrollSyncContext.Consumer>\n);\n"],"names":["ScrollSyncPane","groups","concat","props","enabled","group","syncContext","unregisterPane","node","
|
|
1
|
+
{"version":3,"file":"ScrollSyncPane.js","sources":["../../../src/ScrollSync/ScrollSyncPane.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport React, { Component } from 'react';\nimport { ScrollSyncContext } from './ScrollSync';\n\n/**\n * MODIFIED FROM react-scroll-sync\n *\n * ScrollSyncPane Component\n *\n * Wrap your content in it to keep its scroll position in sync with other panes\n *\n * @param groups\n * @example ./example.md\n */\nclass ScrollSyncPane extends Component {\n static defaultProps = {\n group: 'default',\n enabled: true,\n };\n\n componentWillUnmount() {\n const { enabled, group, syncContext } = this.props;\n const { unregisterPane } = syncContext;\n\n if (enabled) unregisterPane(this.node, this.toArray(group));\n }\n\n toArray = groups => [].concat(groups);\n\n render() {\n const { children, group, syncContext, notPaginated } = this.props;\n const { registerPane } = syncContext;\n\n return children({\n registerPane: node => {\n if (notPaginated) {\n const virtualizedBody = node.querySelector(\n '.virtualized-body-wrapper',\n );\n if (virtualizedBody) {\n registerPane(virtualizedBody, this.toArray(group));\n }\n }\n return registerPane(node, this.toArray(group));\n },\n });\n }\n}\n\nexport default props => (\n <ScrollSyncContext.Consumer>\n {context => <ScrollSyncPane {...props} syncContext={context} />}\n </ScrollSyncContext.Consumer>\n);\n"],"names":["ScrollSyncPane","toArray","groups","concat","props","enabled","group","syncContext","unregisterPane","node","children","notPaginated","registerPane","virtualizedBody","querySelector","Component","defaultProps","context"],"mappings":";;;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMA;;;;;;;;;;;;;;;;UAaJC,UAAU,UAAAC,MAAM;AAAA,aAAI,GAAGC,MAAH,CAAUD,MAAV,CAAJ;AAAA;;;;;;;WAPhB,gCAAuB;AACrB,wBAAwC,KAAKE,KAA7C;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,KAAjB,eAAiBA,KAAjB;AAAA,UAAwBC,WAAxB,eAAwBA,WAAxB;AACA,UAAQC,cAAR,GAA2BD,WAA3B,CAAQC,cAAR;AAEA,UAAIH,OAAJ,EAAaG,cAAc,CAAC,KAAKC,IAAN,EAAY,KAAKR,OAAL,CAAaK,KAAb,CAAZ,CAAd;AACd;;;WAID,kBAAS;AAAA;;AACP,yBAAuD,KAAKF,KAA5D;AAAA,UAAQM,QAAR,gBAAQA,QAAR;AAAA,UAAkBJ,KAAlB,gBAAkBA,KAAlB;AAAA,UAAyBC,WAAzB,gBAAyBA,WAAzB;AAAA,UAAsCI,YAAtC,gBAAsCA,YAAtC;AACA,UAAQC,aAAR,GAAyBL,WAAzB,CAAQK,YAAR;AAEA,aAAOF,QAAQ,CAAC;AACdE,QAAAA,YAAY,EAAE,sBAAAH,IAAI,EAAI;AACpB,cAAIE,YAAJ,EAAkB;AAChB,gBAAME,eAAe,GAAGJ,IAAI,CAACK,aAAL,CACtB,2BADsB,CAAxB;;AAGA,gBAAID,eAAJ,EAAqB;AACnBD,cAAAA,aAAY,CAACC,eAAD,EAAkB,MAAI,CAACZ,OAAL,CAAaK,KAAb,CAAlB,CAAZ;AACD;AACF;;AACD,iBAAOM,aAAY,CAACH,IAAD,EAAO,MAAI,CAACR,OAAL,CAAaK,KAAb,CAAP,CAAnB;AACD;AAXa,OAAD,CAAf;AAaD;;;;EAhC0BS;;AAAvBf,eACGgB,eAAe;AACpBV,EAAAA,KAAK,EAAE,SADa;AAEpBD,EAAAA,OAAO,EAAE;AAFW;AAkCxB,wBAAe,UAAAD,KAAK;AAAA,sBAClB,oBAAC,iBAAD,CAAmB,QAAnB,QACG,UAAAa,OAAO;AAAA,wBAAI,oBAAC,cAAD,eAAoBb,KAApB;AAA2B,MAAA,WAAW,EAAEa;AAAxC,OAAJ;AAAA,GADV,CADkB;AAAA,CAApB;;;;"}
|
package/esm/ScrollSync/index.js
CHANGED
|
@@ -6,7 +6,6 @@ import '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
|
6
6
|
import '@babel/runtime/helpers/esm/inherits';
|
|
7
7
|
import '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
8
8
|
import '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
9
|
-
import '@babel/runtime/helpers/esm/defineProperty';
|
|
10
9
|
import 'react';
|
|
11
10
|
import '@babel/runtime/helpers/esm/extends';
|
|
12
11
|
//# 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":";;;;;;;;;"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
|
|
2
2
|
import _createClass from '@babel/runtime/helpers/esm/createClass';
|
|
3
|
-
import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
4
3
|
import _inherits from '@babel/runtime/helpers/esm/inherits';
|
|
5
4
|
import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
6
5
|
import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
7
|
-
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
8
6
|
import React, { PureComponent } from 'react';
|
|
9
7
|
import raf from 'raf';
|
|
10
8
|
import hoistNonReactStatic from 'hoist-non-react-statics';
|
|
@@ -36,11 +34,9 @@ function deferComponentRender(WrappedComponent, fallback) {
|
|
|
36
34
|
}
|
|
37
35
|
|
|
38
36
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
39
|
-
|
|
40
|
-
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
37
|
+
_this.state = {
|
|
41
38
|
shouldRender: false
|
|
42
|
-
}
|
|
43
|
-
|
|
39
|
+
};
|
|
44
40
|
return _this;
|
|
45
41
|
}
|
|
46
42
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/defer-render-hoc/index.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport raf from 'raf';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\n/**\n * Allows two animation frames to complete to allow other components to update\n * and re-render before mounting and rendering an expensive `WrappedComponent`.\n *\n * @param WrappedComponent\n * @param fallback\n */\nexport default function deferComponentRender(WrappedComponent, fallback) {\n class DeferredRenderWrapper extends PureComponent {\n state = { shouldRender: false };\n\n componentDidMount() {\n raf(() => raf(() => this.setState({ shouldRender: true })));\n }\n\n render() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.state.shouldRender ? (\n <WrappedComponent {...this.props} />\n ) : (\n fallback\n );\n }\n }\n\n return hoistNonReactStatic(DeferredRenderWrapper, WrappedComponent);\n}\n"],"names":["deferComponentRender","WrappedComponent","fallback","DeferredRenderWrapper","shouldRender","raf","setState","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/defer-render-hoc/index.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport raf from 'raf';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\n/**\n * Allows two animation frames to complete to allow other components to update\n * and re-render before mounting and rendering an expensive `WrappedComponent`.\n *\n * @param WrappedComponent\n * @param fallback\n */\nexport default function deferComponentRender(WrappedComponent, fallback) {\n class DeferredRenderWrapper extends PureComponent {\n state = { shouldRender: false };\n\n componentDidMount() {\n raf(() => raf(() => this.setState({ shouldRender: true })));\n }\n\n render() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.state.shouldRender ? (\n <WrappedComponent {...this.props} />\n ) : (\n fallback\n );\n }\n }\n\n return hoistNonReactStatic(DeferredRenderWrapper, WrappedComponent);\n}\n"],"names":["deferComponentRender","WrappedComponent","fallback","DeferredRenderWrapper","state","shouldRender","raf","setState","props","PureComponent","hoistNonReactStatic"],"mappings":";;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASA,oBAAT,CAA8BC,gBAA9B,EAAgDC,QAAhD,EAA0D;AAAA,MACjEC,qBADiE;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,YAErEC,KAFqE,GAE7D;AAAEC,QAAAA,YAAY,EAAE;AAAhB,OAF6D;AAAA;AAAA;;AAAA;AAAA;AAAA,aAIrE,6BAAoB;AAAA;;AAClBC,QAAAA,GAAG,CAAC;AAAA,iBAAMA,GAAG,CAAC;AAAA,mBAAM,MAAI,CAACC,QAAL,CAAc;AAAEF,cAAAA,YAAY,EAAE;AAAhB,aAAd,CAAN;AAAA,WAAD,CAAT;AAAA,SAAD,CAAH;AACD;AANoE;AAAA;AAAA,aAQrE,kBAAS;AACP;AACA,eAAO,KAAKD,KAAL,CAAWC,YAAX,gBACL,oBAAC,gBAAD,EAAsB,KAAKG,KAA3B,CADK,GAGLN,QAHF;AAKD;AAfoE;;AAAA;AAAA,IACnCO,aADmC;;AAkBvE,SAAOC,mBAAmB,CAACP,qBAAD,EAAwBF,gBAAxB,CAA1B;AACD;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -9,7 +9,6 @@ import '@babel/runtime/helpers/esm/assertThisInitialized';
|
|
|
9
9
|
import '@babel/runtime/helpers/esm/inherits';
|
|
10
10
|
import '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
|
11
11
|
import '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
12
|
-
import '@babel/runtime/helpers/esm/defineProperty';
|
|
13
12
|
import 'react';
|
|
14
13
|
import '@babel/runtime/helpers/esm/extends';
|
|
15
14
|
import 'prop-types';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
|
|
2
2
|
import _createClass from '@babel/runtime/helpers/esm/createClass';
|
|
3
|
-
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
4
3
|
import { safeCall } from '@elliemae/ds-utilities';
|
|
5
4
|
|
|
6
5
|
var VolatileRowsListener = /*#__PURE__*/function () {
|
|
7
6
|
function VolatileRowsListener() {
|
|
8
7
|
_classCallCheck(this, VolatileRowsListener);
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
this.observers = [];
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
_createClass(VolatileRowsListener, [{
|
|
@@ -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","
|
|
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,QAAQ,CAACD,QAAD,EAAWF,QAAX,CAAZ;AAAA,OAA/B;AACA,WAAKH,SAAL,GAAiB,EAAjB;AACD;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-shared",
|
|
3
|
-
"version": "1.58.0
|
|
3
|
+
"version": "1.58.0",
|
|
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.58.0
|
|
24
|
-
"@elliemae/ds-utilities": "1.58.0
|
|
23
|
+
"@elliemae/ds-basic": "1.58.0",
|
|
24
|
+
"@elliemae/ds-utilities": "1.58.0",
|
|
25
25
|
"hoist-non-react-statics": "~3.3.2",
|
|
26
26
|
"hotkeys-js": "~3.8.2",
|
|
27
27
|
"prop-types": "~15.7.2",
|