@apia/util 2.0.11 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1865 -68
- package/dist/index.js +2650 -62
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/dist/animate/index.d.ts +0 -4
- package/dist/animate/index.d.ts.map +0 -1
- package/dist/animate/index.js +0 -24
- package/dist/animate/index.js.map +0 -1
- package/dist/array/arrayOrArray.d.ts +0 -4
- package/dist/array/arrayOrArray.d.ts.map +0 -1
- package/dist/array/arrayOrArray.js +0 -8
- package/dist/array/arrayOrArray.js.map +0 -1
- package/dist/array/getIndex.d.ts +0 -14
- package/dist/array/getIndex.d.ts.map +0 -1
- package/dist/array/getIndex.js +0 -12
- package/dist/array/getIndex.js.map +0 -1
- package/dist/crypto/decrypt.d.ts +0 -4
- package/dist/crypto/decrypt.d.ts.map +0 -1
- package/dist/crypto/decrypt.js +0 -16
- package/dist/crypto/decrypt.js.map +0 -1
- package/dist/crypto/encrypt.d.ts +0 -4
- package/dist/crypto/encrypt.d.ts.map +0 -1
- package/dist/crypto/encrypt.js +0 -13
- package/dist/crypto/encrypt.js.map +0 -1
- package/dist/crypto/generateKey.js +0 -11
- package/dist/crypto/generateKey.js.map +0 -1
- package/dist/date/apiaDateToStandarFormat.d.ts +0 -4
- package/dist/date/apiaDateToStandarFormat.d.ts.map +0 -1
- package/dist/date/apiaDateToStandarFormat.js +0 -12
- package/dist/date/apiaDateToStandarFormat.js.map +0 -1
- package/dist/date/dateToApiaFormat.d.ts +0 -4
- package/dist/date/dateToApiaFormat.d.ts.map +0 -1
- package/dist/date/dateToApiaFormat.js +0 -9
- package/dist/date/dateToApiaFormat.js.map +0 -1
- package/dist/date/getDateFormat.d.ts +0 -11
- package/dist/date/getDateFormat.d.ts.map +0 -1
- package/dist/date/getDateFormat.js +0 -20
- package/dist/date/getDateFormat.js.map +0 -1
- package/dist/debug/debugDispatcher.d.ts +0 -36
- package/dist/debug/debugDispatcher.d.ts.map +0 -1
- package/dist/debug/debugDispatcher.js +0 -75
- package/dist/debug/debugDispatcher.js.map +0 -1
- package/dist/debug/shortcutController.d.ts +0 -57
- package/dist/debug/shortcutController.d.ts.map +0 -1
- package/dist/debug/shortcutController.js +0 -152
- package/dist/debug/shortcutController.js.map +0 -1
- package/dist/documents/downloadStringAsDoc.d.ts +0 -8
- package/dist/documents/downloadStringAsDoc.d.ts.map +0 -1
- package/dist/documents/downloadStringAsDoc.js +0 -12
- package/dist/documents/downloadStringAsDoc.js.map +0 -1
- package/dist/documents/downloadUrl.d.ts +0 -20
- package/dist/documents/downloadUrl.d.ts.map +0 -1
- package/dist/documents/downloadUrl.js +0 -18
- package/dist/documents/downloadUrl.js.map +0 -1
- package/dist/documents/openAndReadFile.d.ts +0 -4
- package/dist/documents/openAndReadFile.d.ts.map +0 -1
- package/dist/documents/openAndReadFile.js +0 -29
- package/dist/documents/openAndReadFile.js.map +0 -1
- package/dist/dom/autoDisconnectMutationObserver.d.ts +0 -17
- package/dist/dom/autoDisconnectMutationObserver.d.ts.map +0 -1
- package/dist/dom/autoDisconnectMutationObserver.js +0 -35
- package/dist/dom/autoDisconnectMutationObserver.js.map +0 -1
- package/dist/dom/customEvents.d.ts +0 -40
- package/dist/dom/customEvents.d.ts.map +0 -1
- package/dist/dom/customEvents.js +0 -34
- package/dist/dom/customEvents.js.map +0 -1
- package/dist/dom/enableChildrenFocus.d.ts +0 -18
- package/dist/dom/enableChildrenFocus.d.ts.map +0 -1
- package/dist/dom/enableChildrenFocus.js +0 -26
- package/dist/dom/enableChildrenFocus.js.map +0 -1
- package/dist/dom/findOffsetRelativeToScrollParent.d.ts +0 -7
- package/dist/dom/findOffsetRelativeToScrollParent.d.ts.map +0 -1
- package/dist/dom/findOffsetRelativeToScrollParent.js +0 -19
- package/dist/dom/findOffsetRelativeToScrollParent.js.map +0 -1
- package/dist/dom/findScrollContainer.d.ts +0 -8
- package/dist/dom/findScrollContainer.d.ts.map +0 -1
- package/dist/dom/findScrollContainer.js +0 -9
- package/dist/dom/findScrollContainer.js.map +0 -1
- package/dist/dom/getFocusSelector.d.ts +0 -25
- package/dist/dom/getFocusSelector.d.ts.map +0 -1
- package/dist/dom/getFocusSelector.js +0 -30
- package/dist/dom/getFocusSelector.js.map +0 -1
- package/dist/dom/getSpecificParent.d.ts +0 -23
- package/dist/dom/getSpecificParent.d.ts.map +0 -1
- package/dist/dom/getSpecificParent.js +0 -19
- package/dist/dom/getSpecificParent.js.map +0 -1
- package/dist/dom/isChild.d.ts +0 -13
- package/dist/dom/isChild.d.ts.map +0 -1
- package/dist/dom/isChild.js +0 -8
- package/dist/dom/isChild.js.map +0 -1
- package/dist/dom/scrollParentIntoElement.d.ts +0 -9
- package/dist/dom/scrollParentIntoElement.d.ts.map +0 -1
- package/dist/dom/scrollParentIntoElement.js +0 -24
- package/dist/dom/scrollParentIntoElement.js.map +0 -1
- package/dist/dom/url.d.ts +0 -18
- package/dist/dom/url.d.ts.map +0 -1
- package/dist/dom/url.js +0 -52
- package/dist/dom/url.js.map +0 -1
- package/dist/dom/usePanAndZoom.d.ts +0 -14
- package/dist/dom/usePanAndZoom.d.ts.map +0 -1
- package/dist/dom/usePanAndZoom.js +0 -111
- package/dist/dom/usePanAndZoom.js.map +0 -1
- package/dist/encoding/index.d.ts +0 -8
- package/dist/encoding/index.d.ts.map +0 -1
- package/dist/encoding/index.js +0 -12
- package/dist/encoding/index.js.map +0 -1
- package/dist/events/BouncingEmitter.d.ts +0 -67
- package/dist/events/BouncingEmitter.d.ts.map +0 -1
- package/dist/events/BouncingEmitter.js +0 -72
- package/dist/events/BouncingEmitter.js.map +0 -1
- package/dist/events/EventEmitter.d.ts +0 -47
- package/dist/events/EventEmitter.d.ts.map +0 -1
- package/dist/events/EventEmitter.js +0 -75
- package/dist/events/EventEmitter.js.map +0 -1
- package/dist/events/StatefulEmitter.d.ts +0 -44
- package/dist/events/StatefulEmitter.d.ts.map +0 -1
- package/dist/events/StatefulEmitter.js +0 -57
- package/dist/events/StatefulEmitter.js.map +0 -1
- package/dist/events/types.d.ts +0 -29
- package/dist/events/types.d.ts.map +0 -1
- package/dist/focus/focusController.d.ts +0 -108
- package/dist/focus/focusController.d.ts.map +0 -1
- package/dist/focus/focusController.js +0 -295
- package/dist/focus/focusController.js.map +0 -1
- package/dist/focus/globalFocus.d.ts +0 -24
- package/dist/focus/globalFocus.d.ts.map +0 -1
- package/dist/focus/globalFocus.js +0 -87
- package/dist/focus/globalFocus.js.map +0 -1
- package/dist/history/History.d.ts +0 -81
- package/dist/history/History.d.ts.map +0 -1
- package/dist/history/History.js +0 -122
- package/dist/history/History.js.map +0 -1
- package/dist/hooks/useCombinedRefs.d.ts +0 -18
- package/dist/hooks/useCombinedRefs.d.ts.map +0 -1
- package/dist/hooks/useCombinedRefs.js +0 -20
- package/dist/hooks/useCombinedRefs.js.map +0 -1
- package/dist/hooks/useDebouncedCallback.d.ts +0 -7
- package/dist/hooks/useDebouncedCallback.d.ts.map +0 -1
- package/dist/hooks/useDebouncedCallback.js +0 -21
- package/dist/hooks/useDebouncedCallback.js.map +0 -1
- package/dist/hooks/useLatest.d.ts +0 -13
- package/dist/hooks/useLatest.d.ts.map +0 -1
- package/dist/hooks/useLatest.js +0 -10
- package/dist/hooks/useLatest.js.map +0 -1
- package/dist/hooks/useMount.d.ts +0 -6
- package/dist/hooks/useMount.d.ts.map +0 -1
- package/dist/hooks/useMount.js +0 -14
- package/dist/hooks/useMount.js.map +0 -1
- package/dist/hooks/usePrevious.d.ts +0 -6
- package/dist/hooks/usePrevious.d.ts.map +0 -1
- package/dist/hooks/usePrevious.js +0 -12
- package/dist/hooks/usePrevious.js.map +0 -1
- package/dist/hooks/useShallowMemo.d.ts +0 -9
- package/dist/hooks/useShallowMemo.d.ts.map +0 -1
- package/dist/hooks/useShallowMemo.js +0 -42
- package/dist/hooks/useShallowMemo.js.map +0 -1
- package/dist/hooks/useStateRef.d.ts +0 -10
- package/dist/hooks/useStateRef.d.ts.map +0 -1
- package/dist/hooks/useStateRef.js +0 -11
- package/dist/hooks/useStateRef.js.map +0 -1
- package/dist/hooks/useSubscription.d.ts +0 -31
- package/dist/hooks/useSubscription.d.ts.map +0 -1
- package/dist/hooks/useSubscription.js +0 -21
- package/dist/hooks/useSubscription.js.map +0 -1
- package/dist/hooks/useUnmount.d.ts +0 -4
- package/dist/hooks/useUnmount.d.ts.map +0 -1
- package/dist/hooks/useUnmount.js +0 -10
- package/dist/hooks/useUnmount.js.map +0 -1
- package/dist/hooks/useUpdateEffect.d.ts +0 -10
- package/dist/hooks/useUpdateEffect.d.ts.map +0 -1
- package/dist/hooks/useUpdateEffect.js +0 -16
- package/dist/hooks/useUpdateEffect.js.map +0 -1
- package/dist/imperative/makeImperativeComponent.d.ts +0 -56
- package/dist/imperative/makeImperativeComponent.d.ts.map +0 -1
- package/dist/imperative/makeImperativeComponent.js +0 -43
- package/dist/imperative/makeImperativeComponent.js.map +0 -1
- package/dist/imperative/makeSingleImperativeComponent.d.ts +0 -15
- package/dist/imperative/makeSingleImperativeComponent.d.ts.map +0 -1
- package/dist/imperative/makeSingleImperativeComponent.js +0 -31
- package/dist/imperative/makeSingleImperativeComponent.js.map +0 -1
- package/dist/imperative/types.d.ts +0 -22
- package/dist/imperative/types.d.ts.map +0 -1
- package/dist/imperative/types.js +0 -8
- package/dist/imperative/types.js.map +0 -1
- package/dist/imperative/useImperativeComponentEvents.d.ts +0 -6
- package/dist/imperative/useImperativeComponentEvents.d.ts.map +0 -1
- package/dist/imperative/useImperativeComponentEvents.js +0 -35
- package/dist/imperative/useImperativeComponentEvents.js.map +0 -1
- package/dist/imperative/useImperativeIdentifierContext.d.ts +0 -14
- package/dist/imperative/useImperativeIdentifierContext.d.ts.map +0 -1
- package/dist/imperative/useImperativeIdentifierContext.js +0 -10
- package/dist/imperative/useImperativeIdentifierContext.js.map +0 -1
- package/dist/labels/formatMessage.d.ts +0 -19
- package/dist/labels/formatMessage.d.ts.map +0 -1
- package/dist/labels/formatMessage.js +0 -13
- package/dist/labels/formatMessage.js.map +0 -1
- package/dist/labels/getLabel.d.ts +0 -34
- package/dist/labels/getLabel.d.ts.map +0 -1
- package/dist/labels/getLabel.js +0 -18
- package/dist/labels/getLabel.js.map +0 -1
- package/dist/number/index.d.ts +0 -29
- package/dist/number/index.d.ts.map +0 -1
- package/dist/number/index.js +0 -43
- package/dist/number/index.js.map +0 -1
- package/dist/objects/getValueByPath.d.ts +0 -23
- package/dist/objects/getValueByPath.d.ts.map +0 -1
- package/dist/objects/getValueByPath.js +0 -19
- package/dist/objects/getValueByPath.js.map +0 -1
- package/dist/objects/setValueByPath.d.ts +0 -33
- package/dist/objects/setValueByPath.d.ts.map +0 -1
- package/dist/objects/setValueByPath.js +0 -35
- package/dist/objects/setValueByPath.js.map +0 -1
- package/dist/propsStore/propsStore.d.ts +0 -42
- package/dist/propsStore/propsStore.d.ts.map +0 -1
- package/dist/propsStore/propsStore.js +0 -157
- package/dist/propsStore/propsStore.js.map +0 -1
- package/dist/propsStore/types.d.ts +0 -24
- package/dist/propsStore/types.d.ts.map +0 -1
- package/dist/propsStore/usePropsSelector.d.ts +0 -67
- package/dist/propsStore/usePropsSelector.d.ts.map +0 -1
- package/dist/propsStore/usePropsSelector.js +0 -92
- package/dist/propsStore/usePropsSelector.js.map +0 -1
- package/dist/screenLock/screenLocker.d.ts +0 -60
- package/dist/screenLock/screenLocker.d.ts.map +0 -1
- package/dist/screenLock/screenLocker.js +0 -95
- package/dist/screenLock/screenLocker.js.map +0 -1
- package/dist/states/useDebouncedState.d.ts +0 -10
- package/dist/states/useDebouncedState.d.ts.map +0 -1
- package/dist/states/useDebouncedState.js +0 -22
- package/dist/states/useDebouncedState.js.map +0 -1
- package/dist/states/useDomState.d.ts +0 -86
- package/dist/states/useDomState.d.ts.map +0 -1
- package/dist/states/useDomState.js +0 -35
- package/dist/states/useDomState.js.map +0 -1
- package/dist/storage/StatefulStore.d.ts +0 -205
- package/dist/storage/StatefulStore.d.ts.map +0 -1
- package/dist/storage/StatefulStore.js +0 -301
- package/dist/storage/StatefulStore.js.map +0 -1
- package/dist/storage/persistentStorage.d.ts +0 -12
- package/dist/storage/persistentStorage.d.ts.map +0 -1
- package/dist/storage/persistentStorage.js +0 -28
- package/dist/storage/persistentStorage.js.map +0 -1
- package/dist/storage/useLocalStorage.d.ts +0 -7
- package/dist/storage/useLocalStorage.d.ts.map +0 -1
- package/dist/storage/useLocalStorage.js +0 -40
- package/dist/storage/useLocalStorage.js.map +0 -1
- package/dist/string/alignment.d.ts +0 -25
- package/dist/string/alignment.d.ts.map +0 -1
- package/dist/string/alignment.js +0 -26
- package/dist/string/alignment.js.map +0 -1
- package/dist/string/ucfirst.d.ts +0 -4
- package/dist/string/ucfirst.d.ts.map +0 -1
- package/dist/string/ucfirst.js +0 -6
- package/dist/string/ucfirst.js.map +0 -1
- package/dist/typeGuards/toBoolean.d.ts +0 -26
- package/dist/typeGuards/toBoolean.d.ts.map +0 -1
- package/dist/typeGuards/toBoolean.js +0 -11
- package/dist/typeGuards/toBoolean.js.map +0 -1
- package/dist/types/apia/common.d.ts +0 -114
- package/dist/types/apia/common.d.ts.map +0 -1
- package/dist/types/apia/date.d.ts +0 -4
- package/dist/types/apia/date.d.ts.map +0 -1
- package/dist/types/apia/forms.d.ts +0 -221
- package/dist/types/apia/forms.d.ts.map +0 -1
- package/dist/types/misc.d.ts +0 -9
- package/dist/types/misc.d.ts.map +0 -1
- package/dist/xml/parseXmlAsync.d.ts +0 -4
- package/dist/xml/parseXmlAsync.d.ts.map +0 -1
- package/dist/xml/parseXmlAsync.js +0 -58
- package/dist/xml/parseXmlAsync.js.map +0 -1
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash-es/isFunction';
|
|
2
|
-
import { globalFocus } from './globalFocus.js';
|
|
3
|
-
import persistentStorage from '../storage/persistentStorage.js';
|
|
4
|
-
import { noNaN } from '../number/index.js';
|
|
5
|
-
import { focusSelector } from '../dom/getFocusSelector.js';
|
|
6
|
-
import { screenLocker } from '../screenLock/screenLocker.js';
|
|
7
|
-
import { customEvents } from '../dom/customEvents.js';
|
|
8
|
-
|
|
9
|
-
var __accessCheck = (obj, member, msg) => {
|
|
10
|
-
if (!member.has(obj))
|
|
11
|
-
throw TypeError("Cannot " + msg);
|
|
12
|
-
};
|
|
13
|
-
var __privateGet = (obj, member, getter) => {
|
|
14
|
-
__accessCheck(obj, member, "read from private field");
|
|
15
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
16
|
-
};
|
|
17
|
-
var __privateAdd = (obj, member, value) => {
|
|
18
|
-
if (member.has(obj))
|
|
19
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
20
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
21
|
-
};
|
|
22
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
23
|
-
__accessCheck(obj, member, "write to private field");
|
|
24
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
25
|
-
return value;
|
|
26
|
-
};
|
|
27
|
-
var __privateWrapper = (obj, member, setter, getter) => ({
|
|
28
|
-
set _(value) {
|
|
29
|
-
__privateSet(obj, member, value, setter);
|
|
30
|
-
},
|
|
31
|
-
get _() {
|
|
32
|
-
return __privateGet(obj, member, getter);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
var __privateMethod = (obj, member, method) => {
|
|
36
|
-
__accessCheck(obj, member, "access private method");
|
|
37
|
-
return method;
|
|
38
|
-
};
|
|
39
|
-
var _root, _props, _actualFocusQuery, _currentInstruction, _focusDelay, _focusRetries, _focusTimeout, _isIntervalRunning, _focusQuery, focusQuery_get, _checkInstruction, checkInstruction_fn, _doFocus, doFocus_fn, _resetInterval, resetInterval_fn, _runFocusInterval, runFocusInterval_fn, _a;
|
|
40
|
-
const notificationsSelector = ".notification";
|
|
41
|
-
const focus = new (_a = class {
|
|
42
|
-
constructor(root, props) {
|
|
43
|
-
__privateAdd(this, _focusQuery);
|
|
44
|
-
__privateAdd(this, _checkInstruction);
|
|
45
|
-
__privateAdd(this, _doFocus);
|
|
46
|
-
__privateAdd(this, _resetInterval);
|
|
47
|
-
__privateAdd(this, _runFocusInterval);
|
|
48
|
-
__privateAdd(this, _root, void 0);
|
|
49
|
-
__privateAdd(this, _props, void 0);
|
|
50
|
-
this.afterNotificationFocus = void 0;
|
|
51
|
-
__privateAdd(this, _actualFocusQuery, []);
|
|
52
|
-
__privateAdd(this, _currentInstruction, 0);
|
|
53
|
-
__privateAdd(this, _focusDelay, 300);
|
|
54
|
-
__privateAdd(this, _focusRetries, 3);
|
|
55
|
-
__privateAdd(this, _focusTimeout, -1);
|
|
56
|
-
__privateAdd(this, _isIntervalRunning, false);
|
|
57
|
-
this.focusOnReload = null;
|
|
58
|
-
__privateSet(this, _root, root);
|
|
59
|
-
__privateSet(this, _props, props);
|
|
60
|
-
window.focusStatus = {};
|
|
61
|
-
globalFocus.onFocus(() => {
|
|
62
|
-
__privateMethod(this, _resetInterval, resetInterval_fn).call(this);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Da la instrucción de colocar el foco en el elemento provisto como
|
|
67
|
-
* parámetro una vez que todas las notificaciones se hayan cerrado. En caso
|
|
68
|
-
* de no existir notificaciones abiertas, hace foco en el elemento
|
|
69
|
-
* directamente.
|
|
70
|
-
*/
|
|
71
|
-
afterNotifications(element, configuration) {
|
|
72
|
-
if (!element)
|
|
73
|
-
return;
|
|
74
|
-
void this.on(element, configuration);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Da la instrucción de colocar el foco en el elemento provisto como
|
|
78
|
-
* parámetro luego de recargar la página.
|
|
79
|
-
*
|
|
80
|
-
* Los parámetros pasados serán ordenados en orden de importancia priorizando
|
|
81
|
-
* en el siguiente orden:
|
|
82
|
-
* - id
|
|
83
|
-
* - name
|
|
84
|
-
* - className
|
|
85
|
-
* - selector
|
|
86
|
-
*/
|
|
87
|
-
afterReload({
|
|
88
|
-
className,
|
|
89
|
-
id,
|
|
90
|
-
name,
|
|
91
|
-
selector
|
|
92
|
-
}) {
|
|
93
|
-
persistentStorage.focusOnReload = [
|
|
94
|
-
id ? `#${id}` : void 0,
|
|
95
|
-
name ? `[name="${name}"]` : void 0,
|
|
96
|
-
className ? `.${className}` : void 0,
|
|
97
|
-
selector
|
|
98
|
-
].filter((el) => el !== void 0).join(",");
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Da la instrucción de colocar el foco el elemento pasado como parámetro.
|
|
102
|
-
* Se puede pasar también una función que devuelva HTMLElement | false |
|
|
103
|
-
* null.
|
|
104
|
-
*
|
|
105
|
-
* El segundo parámetro del método on es un objeto de tipo
|
|
106
|
-
* ScrollIntoViewOptions, que permite modificar el comportamiento del scroll
|
|
107
|
-
* a en el elemento.
|
|
108
|
-
*
|
|
109
|
-
* @see TFocusRetriever para más detalles sobre la función como parámetro.
|
|
110
|
-
*/
|
|
111
|
-
async on(element, configuration) {
|
|
112
|
-
if (element) {
|
|
113
|
-
const focusElement = {
|
|
114
|
-
element,
|
|
115
|
-
configuration
|
|
116
|
-
};
|
|
117
|
-
for (let i = 0; i < __privateGet(this, _focusRetries); i++)
|
|
118
|
-
__privateGet(this, _focusQuery, focusQuery_get).unshift(focusElement);
|
|
119
|
-
__privateMethod(this, _resetInterval, resetInterval_fn).call(this);
|
|
120
|
-
return __privateMethod(this, _runFocusInterval, runFocusInterval_fn).call(this, focusElement);
|
|
121
|
-
}
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
restore() {
|
|
125
|
-
void this.on(
|
|
126
|
-
globalFocus.last(":not(body), body#tinymce") || document.querySelector(focusSelector)
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
init() {
|
|
130
|
-
const modalsObserver = new MutationObserver((mutation) => {
|
|
131
|
-
if (mutation[0].removedNodes.length === 0)
|
|
132
|
-
return;
|
|
133
|
-
this.afterNotifications(
|
|
134
|
-
globalFocus.last(
|
|
135
|
-
":not(body):not(.notificationsView *), body#tinymce"
|
|
136
|
-
)
|
|
137
|
-
);
|
|
138
|
-
});
|
|
139
|
-
const appModalsBox = (__privateGet(this, _props)?.modalsContainerRetriever ?? (() => __privateGet(this, _root).querySelector("#AppModals")))();
|
|
140
|
-
if (appModalsBox)
|
|
141
|
-
modalsObserver.observe(appModalsBox, { childList: true });
|
|
142
|
-
screenLocker.on("releaseForFirstTime", () => {
|
|
143
|
-
if (persistentStorage.focusOnReload)
|
|
144
|
-
this.focusOnReload = persistentStorage.focusOnReload;
|
|
145
|
-
persistentStorage.focusOnReload = null;
|
|
146
|
-
this.afterNotifications(() => {
|
|
147
|
-
if (this.focusOnReload) {
|
|
148
|
-
const initialFocusElement = document.querySelector(
|
|
149
|
-
this.focusOnReload
|
|
150
|
-
);
|
|
151
|
-
const scrollTop = noNaN(
|
|
152
|
-
window.CURRENT_TAB?.split(
|
|
153
|
-
"~"
|
|
154
|
-
)[1]
|
|
155
|
-
);
|
|
156
|
-
if (document.scrollingElement)
|
|
157
|
-
document.scrollingElement.scrollTop = scrollTop;
|
|
158
|
-
return initialFocusElement;
|
|
159
|
-
}
|
|
160
|
-
return false;
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}, _root = new WeakMap(), _props = new WeakMap(), _actualFocusQuery = new WeakMap(), _currentInstruction = new WeakMap(), _focusDelay = new WeakMap(), _focusRetries = new WeakMap(), _focusTimeout = new WeakMap(), _isIntervalRunning = new WeakMap(), _focusQuery = new WeakSet(), focusQuery_get = function() {
|
|
165
|
-
return new Proxy(__privateGet(this, _actualFocusQuery), {
|
|
166
|
-
get: (target, key) => {
|
|
167
|
-
if (key in target) {
|
|
168
|
-
const prop = target[key];
|
|
169
|
-
if (isFunction(prop))
|
|
170
|
-
return (...props) => {
|
|
171
|
-
const result = target[key].bind(target, ...props)();
|
|
172
|
-
return result;
|
|
173
|
-
};
|
|
174
|
-
return prop;
|
|
175
|
-
}
|
|
176
|
-
return void 0;
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
}, _checkInstruction = new WeakSet(), checkInstruction_fn = function(focusCheck) {
|
|
180
|
-
return focusCheck.currentInstruction === __privateGet(this, _currentInstruction);
|
|
181
|
-
}, _doFocus = new WeakSet(), doFocus_fn = async function(HTMLElement, focusCheck, isLastTry, configuration) {
|
|
182
|
-
if (screenLocker.isLocked("common") && !configuration?.focusEvenWhenScreenLocked) {
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
const actualHTMLElement = isFunction(HTMLElement) ? HTMLElement(isLastTry) : HTMLElement;
|
|
186
|
-
if (actualHTMLElement) {
|
|
187
|
-
if (actualHTMLElement.disabled)
|
|
188
|
-
return false;
|
|
189
|
-
actualHTMLElement.focus();
|
|
190
|
-
return new Promise((resolve) => {
|
|
191
|
-
if (configuration?.dispatchCustomEvent !== false) {
|
|
192
|
-
const customFocusEvent = new CustomEvent(customEvents.focus, {
|
|
193
|
-
bubbles: true
|
|
194
|
-
});
|
|
195
|
-
actualHTMLElement.dispatchEvent(customFocusEvent);
|
|
196
|
-
}
|
|
197
|
-
setTimeout(() => {
|
|
198
|
-
if (!__privateMethod(this, _checkInstruction, checkInstruction_fn).call(this, focusCheck)) {
|
|
199
|
-
resolve(false);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
try {
|
|
203
|
-
if (configuration?.scrollIntoViewOptions)
|
|
204
|
-
actualHTMLElement?.scrollIntoView(
|
|
205
|
-
configuration.scrollIntoViewOptions
|
|
206
|
-
);
|
|
207
|
-
} catch (e) {
|
|
208
|
-
console.error(e);
|
|
209
|
-
}
|
|
210
|
-
setTimeout(() => {
|
|
211
|
-
if (!__privateMethod(this, _checkInstruction, checkInstruction_fn).call(this, focusCheck)) {
|
|
212
|
-
resolve(false);
|
|
213
|
-
} else if (document.activeElement?.tagName === "IFRAME") {
|
|
214
|
-
resolve(
|
|
215
|
-
document.activeElement.contentDocument?.contains(actualHTMLElement) ? actualHTMLElement : null
|
|
216
|
-
);
|
|
217
|
-
} else
|
|
218
|
-
resolve(
|
|
219
|
-
document.activeElement === actualHTMLElement ? actualHTMLElement : null
|
|
220
|
-
);
|
|
221
|
-
}, 0);
|
|
222
|
-
}, 0);
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
return actualHTMLElement;
|
|
226
|
-
}, _resetInterval = new WeakSet(), resetInterval_fn = function() {
|
|
227
|
-
clearTimeout(__privateGet(this, _focusTimeout));
|
|
228
|
-
__privateSet(this, _focusTimeout, -1);
|
|
229
|
-
__privateSet(this, _isIntervalRunning, false);
|
|
230
|
-
__privateWrapper(this, _currentInstruction)._++;
|
|
231
|
-
}, _runFocusInterval = new WeakSet(), runFocusInterval_fn = async function(focusElement, internalCall) {
|
|
232
|
-
if (!internalCall && (__privateGet(this, _focusTimeout) !== -1 || __privateGet(this, _isIntervalRunning)))
|
|
233
|
-
return false;
|
|
234
|
-
const currentInstruction = {
|
|
235
|
-
currentInstruction: __privateGet(this, _currentInstruction)
|
|
236
|
-
};
|
|
237
|
-
__privateSet(this, _isIntervalRunning, true);
|
|
238
|
-
return new Promise((resolve) => {
|
|
239
|
-
const resolvePromise = async () => {
|
|
240
|
-
const element = focusElement ?? __privateGet(this, _focusQuery, focusQuery_get).shift();
|
|
241
|
-
if (element) {
|
|
242
|
-
const hasFocused = await __privateMethod(this, _doFocus, doFocus_fn).call(this, element.element, currentInstruction, element !== __privateGet(this, _focusQuery, focusQuery_get)[0], element.configuration);
|
|
243
|
-
if (!__privateMethod(this, _checkInstruction, checkInstruction_fn).call(this, currentInstruction)) {
|
|
244
|
-
resolve(false);
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
if (hasFocused !== null && hasFocused !== false) {
|
|
248
|
-
__privateSet(this, _actualFocusQuery, []);
|
|
249
|
-
resolve(hasFocused);
|
|
250
|
-
__privateSet(this, _isIntervalRunning, false);
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
if (hasFocused === false) {
|
|
254
|
-
__privateSet(this, _actualFocusQuery, __privateGet(this, _actualFocusQuery).filter(
|
|
255
|
-
(current) => current !== element
|
|
256
|
-
));
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
if (!__privateMethod(this, _checkInstruction, checkInstruction_fn).call(this, currentInstruction)) {
|
|
260
|
-
resolve(false);
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
if (__privateGet(this, _actualFocusQuery).length > 0) {
|
|
264
|
-
__privateSet(this, _focusTimeout, setTimeout(() => {
|
|
265
|
-
const runInterval = async () => {
|
|
266
|
-
const result = await __privateMethod(this, _runFocusInterval, runFocusInterval_fn).call(this, void 0, true);
|
|
267
|
-
resolve(result);
|
|
268
|
-
__privateSet(this, _isIntervalRunning, true);
|
|
269
|
-
};
|
|
270
|
-
void runInterval();
|
|
271
|
-
}, __privateGet(this, _focusDelay)));
|
|
272
|
-
} else {
|
|
273
|
-
const lastFocused = globalFocus.last(":not(body)");
|
|
274
|
-
if (lastFocused) {
|
|
275
|
-
const result = await __privateMethod(this, _doFocus, doFocus_fn).call(this, lastFocused, currentInstruction, element !== __privateGet(this, _focusQuery, focusQuery_get)[0], element?.configuration);
|
|
276
|
-
if (!__privateMethod(this, _checkInstruction, checkInstruction_fn).call(this, currentInstruction)) {
|
|
277
|
-
resolve(false);
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
if (result)
|
|
281
|
-
resolve(result);
|
|
282
|
-
else
|
|
283
|
-
resolve(false);
|
|
284
|
-
__privateSet(this, _isIntervalRunning, true);
|
|
285
|
-
}
|
|
286
|
-
resolve(false);
|
|
287
|
-
__privateSet(this, _isIntervalRunning, true);
|
|
288
|
-
}
|
|
289
|
-
};
|
|
290
|
-
void resolvePromise();
|
|
291
|
-
});
|
|
292
|
-
}, _a)(document.getElementById("root"));
|
|
293
|
-
|
|
294
|
-
export { focus, notificationsSelector };
|
|
295
|
-
//# sourceMappingURL=focusController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"focusController.js","sources":["../../src/focus/focusController.ts"],"sourcesContent":["import isFunction from 'lodash-es/isFunction';\r\nimport { TRequireOnlyOne } from '../types';\r\nimport { globalFocus } from './globalFocus';\r\nimport { screenLocker } from '../screenLock';\r\nimport { customEvents, focusSelector } from '../dom';\r\nimport { persistentStorage } from '../storage';\r\nimport { noNaN } from '../number';\r\n\r\ninterface IFocusProps {\r\n modalsContainerRetriever?: () => HTMLElement;\r\n notificationsContainerRetriever?: () => HTMLElement;\r\n}\r\n\r\nexport interface IOnFocusConfiguration {\r\n /**\r\n * El controlador emite un evento custom cuando se realiza foco, con la\r\n * intención de que los elementos colapsables se abran automáticamente. Si\r\n * este parámetro es pasado con false, se evita ese comportamiento.\r\n */\r\n dispatchCustomEvent?: boolean;\r\n /**\r\n * Cuando la pantalla está bloqueada con el spinner, el controlador no\r\n * intentará hacer foco, a menos que este parámetro se pase en true.\r\n */\r\n focusEvenWhenScreenLocked?: boolean;\r\n scrollIntoViewOptions?: ScrollIntoViewOptions;\r\n}\r\n\r\nexport const notificationsSelector = '.notification';\r\n\r\n/**\r\n * Al método focus.on se le puede pasar o bien un HTMLElement o bien una\r\n * función que implemente esta interfaz. Cuando se pasa una función, la misma\r\n * será invocada cada vez que se vaya a intentar una acción de foco.\r\n *\r\n * Si la función devuelve un elemento HTML, se intentará hacer foco sobre éste.\r\n *\r\n * Si la función devuelve null, ese intento será tomado como nulo y se volverá\r\n * a intentar luego del tiempo determinado.\r\n *\r\n * Si la función devuelve false, será eliminada de la cola de foco, lo que\r\n * significa que ya no se intentará hacer foco sobre este elemento. En cambio,\r\n * se continuará con los demás elementos de la cola o en caso de no haber\r\n * ninguno, con el último elemento que tuvo foco y aún esté presente en el\r\n * documento.\r\n */\r\nexport type TFocusRetriever = (\r\n isLastTry: boolean,\r\n) => HTMLElement | null | false;\r\n\r\ninterface IFocusQueryElement {\r\n element: HTMLElement | TFocusRetriever;\r\n configuration?: IOnFocusConfiguration;\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n focusStatus: Record<string, unknown>;\r\n }\r\n}\r\n\r\ninterface IFocusCheck {\r\n currentInstruction: number;\r\n}\r\n\r\nexport const focus = new (class FocusController {\r\n #root: HTMLElement;\r\n\r\n #props: IFocusProps | undefined;\r\n\r\n constructor(root: HTMLElement, props?: IFocusProps) {\r\n this.#root = root;\r\n this.#props = props;\r\n\r\n window.focusStatus = {};\r\n globalFocus.onFocus(() => {\r\n this.#resetInterval();\r\n });\r\n }\r\n\r\n afterNotificationFocus: IFocusQueryElement | undefined = undefined;\r\n\r\n #actualFocusQuery: IFocusQueryElement[] = [];\r\n\r\n #currentInstruction = 0;\r\n\r\n #focusDelay = 300;\r\n\r\n #focusRetries = 3;\r\n\r\n #focusTimeout = -1;\r\n\r\n #isIntervalRunning = false;\r\n\r\n set #focusQuery(value: IFocusQueryElement[]) {\r\n this.#actualFocusQuery = value;\r\n }\r\n\r\n get #focusQuery() {\r\n return new Proxy(this.#actualFocusQuery, {\r\n get: (target, key) => {\r\n if (key in target) {\r\n const prop = target[key as keyof typeof target];\r\n if (isFunction(prop))\r\n return (...props: unknown[]) => {\r\n const result = (\r\n target[key as keyof typeof target] as unknown as (\r\n ...methodProps: unknown[]\r\n ) => void\r\n ).bind(target, ...props)();\r\n return result;\r\n };\r\n return prop;\r\n }\r\n return undefined;\r\n },\r\n });\r\n }\r\n\r\n #checkInstruction(focusCheck: IFocusCheck) {\r\n return focusCheck.currentInstruction === this.#currentInstruction;\r\n }\r\n\r\n async #doFocus(\r\n HTMLElement: HTMLElement | TFocusRetriever,\r\n focusCheck: IFocusCheck,\r\n isLastTry: boolean,\r\n configuration?: IOnFocusConfiguration,\r\n ) {\r\n if (\r\n screenLocker.isLocked('common') &&\r\n !configuration?.focusEvenWhenScreenLocked\r\n ) {\r\n return null;\r\n }\r\n const actualHTMLElement = isFunction(HTMLElement)\r\n ? HTMLElement(isLastTry)\r\n : HTMLElement;\r\n\r\n if (actualHTMLElement) {\r\n if ((actualHTMLElement as HTMLInputElement).disabled) return false;\r\n actualHTMLElement.focus();\r\n return new Promise<false | null | HTMLElement>((resolve) => {\r\n if (configuration?.dispatchCustomEvent !== false) {\r\n const customFocusEvent = new CustomEvent(customEvents.focus, {\r\n bubbles: true,\r\n });\r\n actualHTMLElement.dispatchEvent(customFocusEvent);\r\n }\r\n\r\n /**\r\n * Este setTimeout está colocado aquí para asegurarme de que se\r\n * propague correctamente el customEvent y los procesos de renderizado\r\n * asociados puedan ser ejecutados antes de proseguir con el proces de\r\n * foco.\r\n */\r\n setTimeout(() => {\r\n if (!this.#checkInstruction(focusCheck)) {\r\n resolve(false);\r\n return;\r\n }\r\n try {\r\n if (configuration?.scrollIntoViewOptions)\r\n actualHTMLElement?.scrollIntoView(\r\n configuration.scrollIntoViewOptions,\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n setTimeout(() => {\r\n if (!this.#checkInstruction(focusCheck)) {\r\n resolve(false);\r\n } else if (document.activeElement?.tagName === 'IFRAME') {\r\n resolve(\r\n (\r\n document.activeElement as HTMLIFrameElement\r\n ).contentDocument?.contains(actualHTMLElement)\r\n ? actualHTMLElement\r\n : null,\r\n );\r\n } else\r\n resolve(\r\n document.activeElement === actualHTMLElement\r\n ? actualHTMLElement\r\n : null,\r\n );\r\n }, 0);\r\n }, 0);\r\n });\r\n }\r\n return actualHTMLElement;\r\n }\r\n\r\n #resetInterval() {\r\n clearTimeout(this.#focusTimeout);\r\n this.#focusTimeout = -1;\r\n this.#isIntervalRunning = false;\r\n this.#currentInstruction++;\r\n }\r\n\r\n async #runFocusInterval(\r\n focusElement?: IFocusQueryElement,\r\n internalCall?: boolean,\r\n ): Promise<false | HTMLElement> {\r\n if (!internalCall && (this.#focusTimeout !== -1 || this.#isIntervalRunning))\r\n return false;\r\n const currentInstruction: IFocusCheck = {\r\n currentInstruction: this.#currentInstruction,\r\n };\r\n this.#isIntervalRunning = true;\r\n return new Promise<false | HTMLElement>((resolve) => {\r\n const resolvePromise = async () => {\r\n const element = focusElement ?? this.#focusQuery.shift();\r\n\r\n if (element) {\r\n const hasFocused = await this.#doFocus(\r\n element.element,\r\n currentInstruction,\r\n element !== this.#focusQuery[0],\r\n element.configuration,\r\n );\r\n if (!this.#checkInstruction(currentInstruction)) {\r\n resolve(false);\r\n return;\r\n }\r\n if (hasFocused !== null && hasFocused !== false) {\r\n this.#actualFocusQuery = [];\r\n resolve(hasFocused);\r\n this.#isIntervalRunning = false;\r\n return;\r\n }\r\n if (hasFocused === false) {\r\n this.#actualFocusQuery = this.#actualFocusQuery.filter(\r\n (current) => current !== element,\r\n );\r\n }\r\n }\r\n\r\n if (!this.#checkInstruction(currentInstruction)) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (this.#actualFocusQuery.length > 0) {\r\n this.#focusTimeout = setTimeout(() => {\r\n const runInterval = async () => {\r\n const result = await this.#runFocusInterval(undefined, true);\r\n resolve(result);\r\n this.#isIntervalRunning = true;\r\n };\r\n void runInterval();\r\n }, this.#focusDelay) as unknown as number;\r\n } else {\r\n const lastFocused = globalFocus.last(':not(body)');\r\n if (lastFocused) {\r\n const result = await this.#doFocus(\r\n lastFocused,\r\n currentInstruction,\r\n element !== this.#focusQuery[0],\r\n element?.configuration,\r\n );\r\n if (!this.#checkInstruction(currentInstruction)) {\r\n resolve(false);\r\n return;\r\n }\r\n if (result) resolve(result);\r\n else resolve(false);\r\n this.#isIntervalRunning = true;\r\n }\r\n resolve(false);\r\n this.#isIntervalRunning = true;\r\n }\r\n };\r\n void resolvePromise();\r\n });\r\n }\r\n\r\n /**\r\n * Da la instrucción de colocar el foco en el elemento provisto como\r\n * parámetro una vez que todas las notificaciones se hayan cerrado. En caso\r\n * de no existir notificaciones abiertas, hace foco en el elemento\r\n * directamente.\r\n */\r\n afterNotifications(\r\n element: HTMLElement | TFocusRetriever,\r\n configuration?: IOnFocusConfiguration,\r\n ) {\r\n if (!element) return;\r\n void this.on(element, configuration);\r\n }\r\n\r\n /**\r\n * Da la instrucción de colocar el foco en el elemento provisto como\r\n * parámetro luego de recargar la página.\r\n *\r\n * Los parámetros pasados serán ordenados en orden de importancia priorizando\r\n * en el siguiente orden:\r\n * - id\r\n * - name\r\n * - className\r\n * - selector\r\n */\r\n afterReload({\r\n className,\r\n id,\r\n name,\r\n selector,\r\n }: TRequireOnlyOne<{\r\n className: string;\r\n id: string;\r\n name: string;\r\n selector: string;\r\n }>) {\r\n persistentStorage.focusOnReload = [\r\n id ? `#${id}` : undefined,\r\n name ? `[name=\"${name}\"]` : undefined,\r\n className ? `.${className}` : undefined,\r\n selector,\r\n ]\r\n .filter((el) => el !== undefined)\r\n .join(',');\r\n }\r\n\r\n /**\r\n * Da la instrucción de colocar el foco el elemento pasado como parámetro.\r\n * Se puede pasar también una función que devuelva HTMLElement | false |\r\n * null.\r\n *\r\n * El segundo parámetro del método on es un objeto de tipo\r\n * ScrollIntoViewOptions, que permite modificar el comportamiento del scroll\r\n * a en el elemento.\r\n *\r\n * @see TFocusRetriever para más detalles sobre la función como parámetro.\r\n */\r\n async on(\r\n element: HTMLElement | TFocusRetriever,\r\n configuration?: IOnFocusConfiguration,\r\n ) {\r\n if (element) {\r\n const focusElement = {\r\n element,\r\n configuration,\r\n };\r\n for (let i = 0; i < this.#focusRetries; i++)\r\n this.#focusQuery.unshift(focusElement);\r\n\r\n this.#resetInterval();\r\n return this.#runFocusInterval(focusElement);\r\n }\r\n return false;\r\n }\r\n\r\n focusOnReload: string | null = null;\r\n\r\n restore() {\r\n void this.on(\r\n (globalFocus.last(':not(body), body#tinymce') as HTMLElement) ||\r\n (document.querySelector(focusSelector) as HTMLElement),\r\n );\r\n }\r\n\r\n init() {\r\n const modalsObserver = new MutationObserver((mutation) => {\r\n if (mutation[0].removedNodes.length === 0) return;\r\n this.afterNotifications(\r\n globalFocus.last(\r\n ':not(body):not(.notificationsView *), body#tinymce',\r\n ) as HTMLElement,\r\n );\r\n });\r\n const appModalsBox = (\r\n this.#props?.modalsContainerRetriever ??\r\n (() => this.#root.querySelector('#AppModals'))\r\n )();\r\n if (appModalsBox) modalsObserver.observe(appModalsBox, { childList: true });\r\n\r\n screenLocker.on('releaseForFirstTime', () => {\r\n if (persistentStorage.focusOnReload)\r\n this.focusOnReload = persistentStorage.focusOnReload as string;\r\n persistentStorage.focusOnReload = null;\r\n this.afterNotifications(() => {\r\n if (this.focusOnReload) {\r\n const initialFocusElement = document.querySelector(\r\n this.focusOnReload,\r\n );\r\n const scrollTop = noNaN(\r\n (window as unknown as Record<string, string>).CURRENT_TAB?.split(\r\n '~',\r\n )[1],\r\n );\r\n if (document.scrollingElement)\r\n document.scrollingElement.scrollTop = scrollTop;\r\n return initialFocusElement as HTMLElement | null;\r\n }\r\n return false;\r\n });\r\n });\r\n }\r\n})(document.getElementById('root') as HTMLElement);\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { TFocusRetriever } from './focusController.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The GlobalFocus helper keeps a list of the last focused elements and allows
|
|
5
|
-
* to retrieve the last focused element which matches against a query selector.
|
|
6
|
-
*/
|
|
7
|
-
declare const globalFocus: {
|
|
8
|
-
focused: (HTMLElement | TFocusRetriever)[];
|
|
9
|
-
"__#2@#onFocusCallbacks": (() => unknown)[];
|
|
10
|
-
offFocus(cb: () => unknown): void;
|
|
11
|
-
onFocus(cb: () => unknown): () => void;
|
|
12
|
-
inDocument(el: HTMLElement | TFocusRetriever): boolean;
|
|
13
|
-
focus: HTMLElement | TFocusRetriever;
|
|
14
|
-
readonly list: (HTMLElement | TFocusRetriever)[];
|
|
15
|
-
/**
|
|
16
|
-
* @param querySelector A query selector against which the element should match
|
|
17
|
-
* @returns The last HTMLElement if no querySelector argument provided or else, the last which matches
|
|
18
|
-
* against that query selector.
|
|
19
|
-
* */
|
|
20
|
-
last(querySelector?: string, omit?: number): HTMLElement | TFocusRetriever | null;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export { globalFocus };
|
|
24
|
-
//# sourceMappingURL=globalFocus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"globalFocus.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash-es/isFunction';
|
|
2
|
-
import { debugDispatcher } from '../debug/debugDispatcher.js';
|
|
3
|
-
|
|
4
|
-
var __accessCheck = (obj, member, msg) => {
|
|
5
|
-
if (!member.has(obj))
|
|
6
|
-
throw TypeError("Cannot " + msg);
|
|
7
|
-
};
|
|
8
|
-
var __privateGet = (obj, member, getter) => {
|
|
9
|
-
__accessCheck(obj, member, "read from private field");
|
|
10
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
11
|
-
};
|
|
12
|
-
var __privateAdd = (obj, member, value) => {
|
|
13
|
-
if (member.has(obj))
|
|
14
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
15
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
16
|
-
};
|
|
17
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
18
|
-
__accessCheck(obj, member, "write to private field");
|
|
19
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
20
|
-
return value;
|
|
21
|
-
};
|
|
22
|
-
var _onFocusCallbacks, _a;
|
|
23
|
-
const historySize = 50;
|
|
24
|
-
const globalFocus = new (_a = class {
|
|
25
|
-
constructor() {
|
|
26
|
-
this.focused = [];
|
|
27
|
-
__privateAdd(this, _onFocusCallbacks, []);
|
|
28
|
-
debugDispatcher.on(
|
|
29
|
-
"focusHistory",
|
|
30
|
-
() => {
|
|
31
|
-
console.info(this.focused);
|
|
32
|
-
},
|
|
33
|
-
"Muestra el historial de elementos que recibieron foco."
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
offFocus(cb) {
|
|
37
|
-
__privateSet(this, _onFocusCallbacks, __privateGet(this, _onFocusCallbacks).filter(
|
|
38
|
-
(current) => current !== cb
|
|
39
|
-
));
|
|
40
|
-
}
|
|
41
|
-
onFocus(cb) {
|
|
42
|
-
__privateGet(this, _onFocusCallbacks).push(cb);
|
|
43
|
-
return () => {
|
|
44
|
-
this.offFocus(cb);
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
inDocument(el) {
|
|
48
|
-
return el instanceof Function || el instanceof HTMLElement && el.offsetParent !== null;
|
|
49
|
-
}
|
|
50
|
-
set focus(element) {
|
|
51
|
-
this.focused = this.focused.filter((el) => {
|
|
52
|
-
const existsInDocument = this.inDocument(el) && element !== el;
|
|
53
|
-
return existsInDocument;
|
|
54
|
-
});
|
|
55
|
-
this.focused.unshift(element);
|
|
56
|
-
if (this.focused.length > historySize) {
|
|
57
|
-
this.focused = this.focused.splice(0, historySize);
|
|
58
|
-
}
|
|
59
|
-
__privateGet(this, _onFocusCallbacks).forEach((cb) => cb());
|
|
60
|
-
}
|
|
61
|
-
get list() {
|
|
62
|
-
return [...this.focused];
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* @param querySelector A query selector against which the element should match
|
|
66
|
-
* @returns The last HTMLElement if no querySelector argument provided or else, the last which matches
|
|
67
|
-
* against that query selector.
|
|
68
|
-
* */
|
|
69
|
-
last(querySelector, omit = 0) {
|
|
70
|
-
if (querySelector)
|
|
71
|
-
for (let i = omit; i <= this.focused.length; i++) {
|
|
72
|
-
const storedElement = this.focused[i];
|
|
73
|
-
const element = (
|
|
74
|
-
// eslint-disable-next-line no-nested-ternary
|
|
75
|
-
storedElement?.id !== void 0 ? storedElement : isFunction(storedElement) ? storedElement(false) : null
|
|
76
|
-
);
|
|
77
|
-
if (element && this.inDocument(element) && element.matches && element.matches(querySelector))
|
|
78
|
-
return element;
|
|
79
|
-
}
|
|
80
|
-
else
|
|
81
|
-
return this.focused[this.focused.length - 1];
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
}, _onFocusCallbacks = new WeakMap(), _a)();
|
|
85
|
-
|
|
86
|
-
export { globalFocus };
|
|
87
|
-
//# sourceMappingURL=globalFocus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"globalFocus.js","sources":["../../src/focus/globalFocus.ts"],"sourcesContent":["import isFunction from 'lodash-es/isFunction';\r\nimport { TFocusRetriever } from './focusController';\r\nimport { debugDispatcher } from '../debug';\r\n\r\nconst historySize = 50;\r\n\r\n/**\r\n * The GlobalFocus helper keeps a list of the last focused elements and allows\r\n * to retrieve the last focused element which matches against a query selector.\r\n */\r\nexport const globalFocus = new (class {\r\n focused: (HTMLElement | TFocusRetriever)[] = [];\r\n\r\n #onFocusCallbacks: (() => unknown)[] = [];\r\n\r\n offFocus(cb: () => unknown) {\r\n this.#onFocusCallbacks = this.#onFocusCallbacks.filter(\r\n (current) => current !== cb,\r\n );\r\n }\r\n\r\n onFocus(cb: () => unknown) {\r\n this.#onFocusCallbacks.push(cb);\r\n\r\n return () => {\r\n this.offFocus(cb);\r\n };\r\n }\r\n\r\n constructor() {\r\n debugDispatcher.on(\r\n 'focusHistory',\r\n () => {\r\n console.info(this.focused);\r\n },\r\n 'Muestra el historial de elementos que recibieron foco.',\r\n );\r\n }\r\n\r\n inDocument(el: HTMLElement | TFocusRetriever) {\r\n return (\r\n el instanceof Function ||\r\n (el instanceof HTMLElement && el.offsetParent !== null)\r\n );\r\n }\r\n\r\n set focus(element: HTMLElement | TFocusRetriever) {\r\n this.focused = this.focused.filter((el) => {\r\n const existsInDocument = this.inDocument(el) && element !== el;\r\n\r\n return existsInDocument;\r\n });\r\n this.focused.unshift(element);\r\n if (this.focused.length > historySize) {\r\n this.focused = this.focused.splice(0, historySize);\r\n }\r\n\r\n this.#onFocusCallbacks.forEach((cb) => cb());\r\n }\r\n\r\n get list() {\r\n return [...this.focused];\r\n }\r\n\r\n /**\r\n * @param querySelector A query selector against which the element should match\r\n * @returns The last HTMLElement if no querySelector argument provided or else, the last which matches\r\n * against that query selector.\r\n * */\r\n last(querySelector?: string, omit = 0) {\r\n if (querySelector)\r\n for (let i = omit; i <= this.focused.length; i++) {\r\n const storedElement = this.focused[i];\r\n const element =\r\n // eslint-disable-next-line no-nested-ternary\r\n (storedElement as HTMLElement)?.id !== undefined\r\n ? (storedElement as HTMLElement)\r\n : isFunction(storedElement)\r\n ? storedElement(false)\r\n : null;\r\n\r\n if (\r\n element &&\r\n this.inDocument(element) &&\r\n element.matches &&\r\n element.matches(querySelector)\r\n )\r\n return element;\r\n }\r\n else return this.focused[this.focused.length - 1];\r\n return null;\r\n }\r\n})();\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '../events/EventEmitter.js';
|
|
2
|
-
|
|
3
|
-
type THistoryCount = {
|
|
4
|
-
currentStep: number;
|
|
5
|
-
stepCount: number;
|
|
6
|
-
};
|
|
7
|
-
type THistoryStep<T> = {
|
|
8
|
-
content: T;
|
|
9
|
-
} & THistoryCount;
|
|
10
|
-
type THistoryStepChange<T> = THistoryCount & THistoryStep<T> & {
|
|
11
|
-
fromPush?: boolean;
|
|
12
|
-
hasPrevious: boolean;
|
|
13
|
-
hasNext: boolean;
|
|
14
|
-
};
|
|
15
|
-
type THistoryConfiguration = {
|
|
16
|
-
maxLength: number;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* # Cómo usar el historial
|
|
20
|
-
*
|
|
21
|
-
* Es muy sencillo: se instancia con un callback que recibirá un método push
|
|
22
|
-
* cada vez que una ventana se cierre. En esos momentos, el usuario del History
|
|
23
|
-
* puede hacer push al estado.
|
|
24
|
-
*
|
|
25
|
-
* ## La mecánica
|
|
26
|
-
*
|
|
27
|
-
* - Instancio la clase y recibo el método push
|
|
28
|
-
* - Cuando se realizan cambios significativos, llamo al método openWindow
|
|
29
|
-
* - El método openWindow da una ventana de 350ms antes de llamar al callback
|
|
30
|
-
* - Si durante esa ventana se vuelve a llamar a openWindow, la ventana se
|
|
31
|
-
* resetea
|
|
32
|
-
* - Si al llamar al callback, se hace push al estado, ese estado es propagado
|
|
33
|
-
* mediante el hook y mediante el evento on('stepChange')
|
|
34
|
-
*
|
|
35
|
-
* ## Cómo escuchar cambios
|
|
36
|
-
*
|
|
37
|
-
* ```ts
|
|
38
|
-
* this.history.on('stepChange', (data) => {
|
|
39
|
-
if (!data.fromPush) this.update(data.content);
|
|
40
|
-
});
|
|
41
|
-
```
|
|
42
|
-
*
|
|
43
|
-
* ## Back y forward
|
|
44
|
-
*
|
|
45
|
-
* El back y forward son dos métodos del history que hacen un stepChange y
|
|
46
|
-
* emiten a través de on('stepChange') y el hook
|
|
47
|
-
*/
|
|
48
|
-
declare class History<T> extends EventEmitter<{
|
|
49
|
-
stepChange: THistoryStepChange<T>;
|
|
50
|
-
}> {
|
|
51
|
-
private configuration;
|
|
52
|
-
private autocloseTimeout;
|
|
53
|
-
private currentStep;
|
|
54
|
-
private content;
|
|
55
|
-
private emitting;
|
|
56
|
-
protected enabled: boolean;
|
|
57
|
-
private _isOpen;
|
|
58
|
-
private timeoutMs;
|
|
59
|
-
constructor(onCloseWindow: (push: (newState: T) => void) => unknown, configuration?: THistoryConfiguration);
|
|
60
|
-
private closeWindow;
|
|
61
|
-
private getEvent;
|
|
62
|
-
private onCloseWindow;
|
|
63
|
-
private push;
|
|
64
|
-
private shoutStepChange;
|
|
65
|
-
hooks: {
|
|
66
|
-
useCountChange: (onChange: (ev: THistoryStepChange<T>) => unknown) => void;
|
|
67
|
-
};
|
|
68
|
-
back: () => void;
|
|
69
|
-
disable: () => void;
|
|
70
|
-
emit<K extends 'stepChange'>(eventName: K, params?: THistoryStepChange<T>): void;
|
|
71
|
-
enable: () => void;
|
|
72
|
-
forward: () => void;
|
|
73
|
-
get isOpen(): boolean;
|
|
74
|
-
openWindow: () => void;
|
|
75
|
-
reset: () => void;
|
|
76
|
-
updateConfig: (newConfiguration: Partial<THistoryConfiguration>) => void;
|
|
77
|
-
useStep: () => Pick<THistoryStepChange<T>, "hasNext" | "hasPrevious" | "currentStep">;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export { History, type THistoryConfiguration, type THistoryCount, type THistoryStep, type THistoryStepChange };
|
|
81
|
-
//# sourceMappingURL=History.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"History.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|