@apia/util 1.0.4 → 2.0.1
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/animate/index.d.ts +4 -0
- package/dist/animate/index.d.ts.map +1 -0
- package/dist/animate/index.js +24 -0
- package/dist/animate/index.js.map +1 -0
- package/dist/array/arrayOrArray.d.ts +4 -0
- package/dist/array/arrayOrArray.d.ts.map +1 -0
- package/dist/array/arrayOrArray.js +8 -0
- package/dist/array/arrayOrArray.js.map +1 -0
- package/dist/array/getIndex.d.ts +14 -0
- package/dist/array/getIndex.d.ts.map +1 -0
- package/dist/array/getIndex.js +12 -0
- package/dist/array/getIndex.js.map +1 -0
- package/dist/crypto/decrypt.d.ts +4 -0
- package/dist/crypto/decrypt.d.ts.map +1 -0
- package/dist/crypto/decrypt.js +16 -0
- package/dist/crypto/decrypt.js.map +1 -0
- package/dist/crypto/encrypt.d.ts +4 -0
- package/dist/crypto/encrypt.d.ts.map +1 -0
- package/dist/crypto/encrypt.js +13 -0
- package/dist/crypto/encrypt.js.map +1 -0
- package/dist/crypto/generateKey.js +11 -0
- package/dist/crypto/generateKey.js.map +1 -0
- package/dist/date/apiaDateToStandarFormat.d.ts +4 -0
- package/dist/date/apiaDateToStandarFormat.d.ts.map +1 -0
- package/dist/date/apiaDateToStandarFormat.js +12 -0
- package/dist/date/apiaDateToStandarFormat.js.map +1 -0
- package/dist/date/dateToApiaFormat.d.ts +4 -0
- package/dist/date/dateToApiaFormat.d.ts.map +1 -0
- package/dist/date/dateToApiaFormat.js +9 -0
- package/dist/date/dateToApiaFormat.js.map +1 -0
- package/dist/date/getDateFormat.d.ts +11 -0
- package/dist/date/getDateFormat.d.ts.map +1 -0
- package/dist/date/getDateFormat.js +20 -0
- package/dist/date/getDateFormat.js.map +1 -0
- package/dist/debug/debugDispatcher.d.ts +32 -0
- package/dist/debug/debugDispatcher.d.ts.map +1 -0
- package/dist/debug/debugDispatcher.js +72 -0
- package/dist/debug/debugDispatcher.js.map +1 -0
- package/dist/debug/shortcutController.d.ts +57 -0
- package/dist/debug/shortcutController.d.ts.map +1 -0
- package/dist/debug/shortcutController.js +152 -0
- package/dist/debug/shortcutController.js.map +1 -0
- package/dist/documents/downloadStringAsDoc.d.ts +8 -0
- package/dist/documents/downloadStringAsDoc.d.ts.map +1 -0
- package/dist/documents/downloadStringAsDoc.js +12 -0
- package/dist/documents/downloadStringAsDoc.js.map +1 -0
- package/dist/documents/downloadUrl.d.ts +20 -0
- package/dist/documents/downloadUrl.d.ts.map +1 -0
- package/dist/documents/downloadUrl.js +18 -0
- package/dist/documents/downloadUrl.js.map +1 -0
- package/dist/documents/openAndReadFile.d.ts +4 -0
- package/dist/documents/openAndReadFile.d.ts.map +1 -0
- package/dist/documents/openAndReadFile.js +29 -0
- package/dist/documents/openAndReadFile.js.map +1 -0
- package/dist/dom/autoDisconnectMutationObserver.d.ts +17 -0
- package/dist/dom/autoDisconnectMutationObserver.d.ts.map +1 -0
- package/dist/dom/autoDisconnectMutationObserver.js +35 -0
- package/dist/dom/autoDisconnectMutationObserver.js.map +1 -0
- package/dist/dom/customEvents.d.ts +40 -0
- package/dist/dom/customEvents.d.ts.map +1 -0
- package/dist/dom/customEvents.js +34 -0
- package/dist/dom/customEvents.js.map +1 -0
- package/dist/dom/enableChildrenFocus.d.ts +18 -0
- package/dist/dom/enableChildrenFocus.d.ts.map +1 -0
- package/dist/dom/enableChildrenFocus.js +26 -0
- package/dist/dom/enableChildrenFocus.js.map +1 -0
- package/dist/dom/findOffsetRelativeToScrollParent.d.ts +7 -0
- package/dist/dom/findOffsetRelativeToScrollParent.d.ts.map +1 -0
- package/dist/dom/findOffsetRelativeToScrollParent.js +19 -0
- package/dist/dom/findOffsetRelativeToScrollParent.js.map +1 -0
- package/dist/dom/findScrollContainer.d.ts +8 -0
- package/dist/dom/findScrollContainer.d.ts.map +1 -0
- package/dist/dom/findScrollContainer.js +9 -0
- package/dist/dom/findScrollContainer.js.map +1 -0
- package/dist/dom/getFocusSelector.d.ts +25 -0
- package/dist/dom/getFocusSelector.d.ts.map +1 -0
- package/dist/dom/getFocusSelector.js +30 -0
- package/dist/dom/getFocusSelector.js.map +1 -0
- package/dist/dom/getSpecificParent.d.ts +23 -0
- package/dist/dom/getSpecificParent.d.ts.map +1 -0
- package/dist/dom/getSpecificParent.js +19 -0
- package/dist/dom/getSpecificParent.js.map +1 -0
- package/dist/dom/isChild.d.ts +13 -0
- package/dist/dom/isChild.d.ts.map +1 -0
- package/dist/dom/isChild.js +8 -0
- package/dist/dom/isChild.js.map +1 -0
- package/dist/dom/scrollParentIntoElement.d.ts +9 -0
- package/dist/dom/scrollParentIntoElement.d.ts.map +1 -0
- package/dist/dom/scrollParentIntoElement.js +24 -0
- package/dist/dom/scrollParentIntoElement.js.map +1 -0
- package/dist/dom/url.d.ts +18 -0
- package/dist/dom/url.d.ts.map +1 -0
- package/dist/dom/url.js +52 -0
- package/dist/dom/url.js.map +1 -0
- package/dist/dom/usePanAndZoom.d.ts +14 -0
- package/dist/dom/usePanAndZoom.d.ts.map +1 -0
- package/dist/dom/usePanAndZoom.js +111 -0
- package/dist/dom/usePanAndZoom.js.map +1 -0
- package/dist/encoding/index.d.ts +8 -0
- package/dist/encoding/index.d.ts.map +1 -0
- package/dist/encoding/index.js +12 -0
- package/dist/encoding/index.js.map +1 -0
- package/dist/events/BouncingEmitter.d.ts +67 -0
- package/dist/events/BouncingEmitter.d.ts.map +1 -0
- package/dist/events/BouncingEmitter.js +72 -0
- package/dist/events/BouncingEmitter.js.map +1 -0
- package/dist/events/EventEmitter.d.ts +47 -0
- package/dist/events/EventEmitter.d.ts.map +1 -0
- package/dist/events/EventEmitter.js +75 -0
- package/dist/events/EventEmitter.js.map +1 -0
- package/dist/events/StatefulEmitter.d.ts +44 -0
- package/dist/events/StatefulEmitter.d.ts.map +1 -0
- package/dist/events/StatefulEmitter.js +57 -0
- package/dist/events/StatefulEmitter.js.map +1 -0
- package/dist/events/types.d.ts +29 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/focus/focusController.d.ts +108 -0
- package/dist/focus/focusController.d.ts.map +1 -0
- package/dist/focus/focusController.js +295 -0
- package/dist/focus/focusController.js.map +1 -0
- package/dist/focus/globalFocus.d.ts +24 -0
- package/dist/focus/globalFocus.d.ts.map +1 -0
- package/dist/focus/globalFocus.js +87 -0
- package/dist/focus/globalFocus.js.map +1 -0
- package/dist/history/History.d.ts +81 -0
- package/dist/history/History.d.ts.map +1 -0
- package/dist/history/History.js +122 -0
- package/dist/history/History.js.map +1 -0
- package/dist/hooks/useCombinedRefs.d.ts +18 -0
- package/dist/hooks/useCombinedRefs.d.ts.map +1 -0
- package/dist/hooks/useCombinedRefs.js +20 -0
- package/dist/hooks/useCombinedRefs.js.map +1 -0
- package/dist/hooks/useDebouncedCallback.d.ts +7 -0
- package/dist/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/hooks/useDebouncedCallback.js +21 -0
- package/dist/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/hooks/useLatest.d.ts +13 -0
- package/dist/hooks/useLatest.d.ts.map +1 -0
- package/dist/hooks/useLatest.js +10 -0
- package/dist/hooks/useLatest.js.map +1 -0
- package/dist/hooks/useMount.d.ts +6 -0
- package/dist/hooks/useMount.d.ts.map +1 -0
- package/dist/hooks/useMount.js +14 -0
- package/dist/hooks/useMount.js.map +1 -0
- package/dist/hooks/usePrevious.d.ts +6 -0
- package/dist/hooks/usePrevious.d.ts.map +1 -0
- package/dist/hooks/usePrevious.js +12 -0
- package/dist/hooks/usePrevious.js.map +1 -0
- package/dist/hooks/useShallowMemo.d.ts +9 -0
- package/dist/hooks/useShallowMemo.d.ts.map +1 -0
- package/dist/hooks/useShallowMemo.js +42 -0
- package/dist/hooks/useShallowMemo.js.map +1 -0
- package/dist/hooks/useStateRef.d.ts +10 -0
- package/dist/hooks/useStateRef.d.ts.map +1 -0
- package/dist/hooks/useStateRef.js +11 -0
- package/dist/hooks/useStateRef.js.map +1 -0
- package/dist/hooks/useSubscription.d.ts +31 -0
- package/dist/hooks/useSubscription.d.ts.map +1 -0
- package/dist/hooks/useSubscription.js +21 -0
- package/dist/hooks/useSubscription.js.map +1 -0
- package/dist/hooks/useUnmount.d.ts +4 -0
- package/dist/hooks/useUnmount.d.ts.map +1 -0
- package/dist/hooks/useUnmount.js +10 -0
- package/dist/hooks/useUnmount.js.map +1 -0
- package/dist/hooks/useUpdateEffect.d.ts +10 -0
- package/dist/hooks/useUpdateEffect.d.ts.map +1 -0
- package/dist/hooks/useUpdateEffect.js +16 -0
- package/dist/hooks/useUpdateEffect.js.map +1 -0
- package/dist/imperative/makeImperativeComponent.d.ts +56 -0
- package/dist/imperative/makeImperativeComponent.d.ts.map +1 -0
- package/dist/imperative/makeImperativeComponent.js +48 -0
- package/dist/imperative/makeImperativeComponent.js.map +1 -0
- package/dist/imperative/makeSingleImperativeComponent.d.ts +15 -0
- package/dist/imperative/makeSingleImperativeComponent.d.ts.map +1 -0
- package/dist/imperative/makeSingleImperativeComponent.js +31 -0
- package/dist/imperative/makeSingleImperativeComponent.js.map +1 -0
- package/dist/imperative/types.d.ts +22 -0
- package/dist/imperative/types.d.ts.map +1 -0
- package/dist/imperative/types.js +8 -0
- package/dist/imperative/types.js.map +1 -0
- package/dist/imperative/useImperativeComponentEvents.d.ts +6 -0
- package/dist/imperative/useImperativeComponentEvents.d.ts.map +1 -0
- package/dist/imperative/useImperativeComponentEvents.js +35 -0
- package/dist/imperative/useImperativeComponentEvents.js.map +1 -0
- package/dist/imperative/useImperativeIdentifierContext.d.ts +14 -0
- package/dist/imperative/useImperativeIdentifierContext.d.ts.map +1 -0
- package/dist/imperative/useImperativeIdentifierContext.js +10 -0
- package/dist/imperative/useImperativeIdentifierContext.js.map +1 -0
- package/dist/index.d.ts +69 -1777
- package/dist/index.js +63 -2659
- package/dist/index.js.map +1 -1
- package/dist/labels/formatMessage.d.ts +19 -0
- package/dist/labels/formatMessage.d.ts.map +1 -0
- package/dist/labels/formatMessage.js +13 -0
- package/dist/labels/formatMessage.js.map +1 -0
- package/dist/labels/getLabel.d.ts +34 -0
- package/dist/labels/getLabel.d.ts.map +1 -0
- package/dist/labels/getLabel.js +18 -0
- package/dist/labels/getLabel.js.map +1 -0
- package/dist/number/index.d.ts +29 -0
- package/dist/number/index.d.ts.map +1 -0
- package/dist/number/index.js +43 -0
- package/dist/number/index.js.map +1 -0
- package/dist/objects/getValueByPath.d.ts +23 -0
- package/dist/objects/getValueByPath.d.ts.map +1 -0
- package/dist/objects/getValueByPath.js +19 -0
- package/dist/objects/getValueByPath.js.map +1 -0
- package/dist/objects/setValueByPath.d.ts +33 -0
- package/dist/objects/setValueByPath.d.ts.map +1 -0
- package/dist/objects/setValueByPath.js +35 -0
- package/dist/objects/setValueByPath.js.map +1 -0
- package/dist/propsStore/propsStore.d.ts +42 -0
- package/dist/propsStore/propsStore.d.ts.map +1 -0
- package/dist/propsStore/propsStore.js +157 -0
- package/dist/propsStore/propsStore.js.map +1 -0
- package/dist/propsStore/types.d.ts +24 -0
- package/dist/propsStore/types.d.ts.map +1 -0
- package/dist/propsStore/usePropsSelector.d.ts +67 -0
- package/dist/propsStore/usePropsSelector.d.ts.map +1 -0
- package/dist/propsStore/usePropsSelector.js +92 -0
- package/dist/propsStore/usePropsSelector.js.map +1 -0
- package/dist/screenLock/screenLocker.d.ts +60 -0
- package/dist/screenLock/screenLocker.d.ts.map +1 -0
- package/dist/screenLock/screenLocker.js +95 -0
- package/dist/screenLock/screenLocker.js.map +1 -0
- package/dist/states/useDebouncedState.d.ts +10 -0
- package/dist/states/useDebouncedState.d.ts.map +1 -0
- package/dist/states/useDebouncedState.js +22 -0
- package/dist/states/useDebouncedState.js.map +1 -0
- package/dist/states/useDomState.d.ts +86 -0
- package/dist/states/useDomState.d.ts.map +1 -0
- package/dist/states/useDomState.js +35 -0
- package/dist/states/useDomState.js.map +1 -0
- package/dist/storage/StatefulStore.d.ts +205 -0
- package/dist/storage/StatefulStore.d.ts.map +1 -0
- package/dist/storage/StatefulStore.js +301 -0
- package/dist/storage/StatefulStore.js.map +1 -0
- package/dist/storage/persistentStorage.d.ts +12 -0
- package/dist/storage/persistentStorage.d.ts.map +1 -0
- package/dist/storage/persistentStorage.js +28 -0
- package/dist/storage/persistentStorage.js.map +1 -0
- package/dist/storage/useLocalStorage.d.ts +7 -0
- package/dist/storage/useLocalStorage.d.ts.map +1 -0
- package/dist/storage/useLocalStorage.js +40 -0
- package/dist/storage/useLocalStorage.js.map +1 -0
- package/dist/string/alignment.d.ts +25 -0
- package/dist/string/alignment.d.ts.map +1 -0
- package/dist/string/alignment.js +26 -0
- package/dist/string/alignment.js.map +1 -0
- package/dist/string/ucfirst.d.ts +4 -0
- package/dist/string/ucfirst.d.ts.map +1 -0
- package/dist/string/ucfirst.js +6 -0
- package/dist/string/ucfirst.js.map +1 -0
- package/dist/typeGuards/toBoolean.d.ts +26 -0
- package/dist/typeGuards/toBoolean.d.ts.map +1 -0
- package/dist/typeGuards/toBoolean.js +11 -0
- package/dist/typeGuards/toBoolean.js.map +1 -0
- package/dist/types/apia/common.d.ts +114 -0
- package/dist/types/apia/common.d.ts.map +1 -0
- package/dist/types/apia/date.d.ts +4 -0
- package/dist/types/apia/date.d.ts.map +1 -0
- package/dist/types/apia/forms.d.ts +221 -0
- package/dist/types/apia/forms.d.ts.map +1 -0
- package/dist/types/misc.d.ts +9 -0
- package/dist/types/misc.d.ts.map +1 -0
- package/dist/xml/parseXmlAsync.d.ts +4 -0
- package/dist/xml/parseXmlAsync.d.ts.map +1 -0
- package/dist/xml/parseXmlAsync.js +58 -0
- package/dist/xml/parseXmlAsync.js.map +1 -0
- package/package.json +24 -35
- package/LICENSE.md +0 -21
- package/README.md +0 -18
- package/cleanDist.json +0 -3
- package/entries.json +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { formatMessage } from './formatMessage.js';
|
|
2
|
+
|
|
3
|
+
function getLabel(name, replaceTokens) {
|
|
4
|
+
const label = {
|
|
5
|
+
...window.labels[name] ?? {
|
|
6
|
+
text: `Not preloaded: ${name}`,
|
|
7
|
+
tooltip: `Not preloaded: ${name}`
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
if (replaceTokens?.text !== void 0)
|
|
11
|
+
label.text = formatMessage(label.text, replaceTokens.text);
|
|
12
|
+
if (replaceTokens?.title !== void 0)
|
|
13
|
+
label.tooltip = formatMessage(label.tooltip, replaceTokens.title);
|
|
14
|
+
return label;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { getLabel };
|
|
18
|
+
//# sourceMappingURL=getLabel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLabel.js","sources":["../../src/labels/getLabel.ts"],"sourcesContent":["import { formatMessage } from './formatMessage';\n\ninterface ILabelsContainer {\n labels: {\n [key: string]: {\n text: string;\n tooltip: string;\n };\n };\n}\n\n/**\n * Dado un nombre de etiqueta, devuelve el texto que esa etiqueta contiene en\n * el idioma actual. En este momento, lo único que hace realmente esta función\n * es devolver la variable del window con el mismo nombre que se está\n * pidiendo.\n *\n * La idea de implementar esta función, es que en un futuro la fuente de la\n * que provienen las labels pueda ser más diversa.\n *\n * Permite el pasaje de tokens para el reemplazo automático de los mismos.\n *\n * @example\n *\n * // Suponemos la etiqueta msgUsu = { text: 'Usuario <TOK1>', title: 'Usuario <TOK1>' }\n *\n * getLabel('msgUsu' , {\n * text: {\n * TOK1: 'admin',\n * },\n * title: {\n * TOK1: 'no disponible',\n * }\n * })\n */\nexport function getLabel(\n name: string,\n replaceTokens?: {\n text?: Record<string, string>;\n title?: Record<string, string>;\n },\n) {\n const label = {\n ...((window as unknown as ILabelsContainer).labels[name] ?? {\n text: `Not preloaded: ${name}`,\n tooltip: `Not preloaded: ${name}`,\n }),\n };\n\n if (replaceTokens?.text !== undefined)\n label.text = formatMessage(label.text, replaceTokens.text);\n if (replaceTokens?.title !== undefined)\n label.tooltip = formatMessage(label.tooltip, replaceTokens.title);\n\n return label;\n}\n"],"names":[],"mappings":";;AAmCgB,SAAA,QAAA,CACd,MACA,aAIA,EAAA;AACA,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAK,MAAA,CAAuC,MAAO,CAAA,IAAI,CAAK,IAAA;AAAA,MAC1D,IAAA,EAAM,kBAAkB,IAAI,CAAA,CAAA;AAAA,MAC5B,OAAA,EAAS,kBAAkB,IAAI,CAAA,CAAA;AAAA,KACjC;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,eAAe,IAAS,KAAA,KAAA,CAAA;AAC1B,IAAA,KAAA,CAAM,IAAO,GAAA,aAAA,CAAc,KAAM,CAAA,IAAA,EAAM,cAAc,IAAI,CAAA,CAAA;AAC3D,EAAA,IAAI,eAAe,KAAU,KAAA,KAAA,CAAA;AAC3B,IAAA,KAAA,CAAM,OAAU,GAAA,aAAA,CAAc,KAAM,CAAA,OAAA,EAAS,cAAc,KAAK,CAAA,CAAA;AAElE,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
interface ISetBoundary {
|
|
2
|
+
number?: number | string;
|
|
3
|
+
min?: number;
|
|
4
|
+
max?: number;
|
|
5
|
+
loop?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Añade límites a un número, impidiendo que sea
|
|
9
|
+
* inferior o superior a los límites establecidos.
|
|
10
|
+
*
|
|
11
|
+
* Si se pasa loop en true, al llegar al valor maximo o minimo regresara al
|
|
12
|
+
* minimo o maximo respectivamente.
|
|
13
|
+
*/
|
|
14
|
+
declare function addBoundary(num: number, min: number, max?: number, loop?: boolean): number;
|
|
15
|
+
declare function addBoundary(definition: ISetBoundary): number;
|
|
16
|
+
/**
|
|
17
|
+
* Esta función acepta un número y devuelve la representaciíon
|
|
18
|
+
* en string de su tamaño en disco. Ej: 1024 => 1kb
|
|
19
|
+
*/
|
|
20
|
+
declare function parseAsSize(num: number): string;
|
|
21
|
+
/**
|
|
22
|
+
* Toma cualquier valor y devuelve siempre un número. En caso de que el valor
|
|
23
|
+
* casteado con la función Number(value) de NaN, devuelve defaultReturn, que por
|
|
24
|
+
* defecto es 0
|
|
25
|
+
*/
|
|
26
|
+
declare function noNaN(number: unknown, defaultReturn?: number): number;
|
|
27
|
+
|
|
28
|
+
export { type ISetBoundary, addBoundary, noNaN, parseAsSize };
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
function addBoundary(definition, min, max, loop) {
|
|
2
|
+
const actualNumber = typeof definition === "number" ? definition : definition.number;
|
|
3
|
+
const actualMin = typeof definition === "number" ? min : definition.min;
|
|
4
|
+
const actualMax = typeof definition === "number" ? max : definition.max;
|
|
5
|
+
const isActualLoop = typeof definition === "number" ? loop : definition.loop;
|
|
6
|
+
let newNumber = Number(actualNumber ?? 0);
|
|
7
|
+
if (actualMin !== void 0 && newNumber < actualMin) {
|
|
8
|
+
if (actualMax !== void 0 && isActualLoop) {
|
|
9
|
+
newNumber = actualMax;
|
|
10
|
+
} else {
|
|
11
|
+
newNumber = actualMin;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (actualMax !== void 0 && newNumber > actualMax) {
|
|
15
|
+
if (actualMin !== void 0 && isActualLoop) {
|
|
16
|
+
newNumber = actualMin;
|
|
17
|
+
} else {
|
|
18
|
+
newNumber = actualMax;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return newNumber;
|
|
22
|
+
}
|
|
23
|
+
const sizeUnits = ["b", "kb", "mb", "gb", "tb"];
|
|
24
|
+
function parseAsSize(num) {
|
|
25
|
+
let index = 0;
|
|
26
|
+
let finalSize = num;
|
|
27
|
+
if (finalSize === Infinity)
|
|
28
|
+
return "1000GB";
|
|
29
|
+
while (finalSize > 1024) {
|
|
30
|
+
finalSize /= 1024;
|
|
31
|
+
index++;
|
|
32
|
+
}
|
|
33
|
+
return `${Math.round(finalSize * 10) / 10}${sizeUnits[index]}`;
|
|
34
|
+
}
|
|
35
|
+
function noNaN(number, defaultReturn = 0) {
|
|
36
|
+
const returnNumber = Number(number);
|
|
37
|
+
if (number === null || Number.isNaN(returnNumber))
|
|
38
|
+
return defaultReturn;
|
|
39
|
+
return returnNumber;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { addBoundary, noNaN, parseAsSize };
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/number/index.ts"],"sourcesContent":["export interface ISetBoundary {\n number?: number | string;\n min?: number;\n max?: number;\n loop?: boolean;\n}\n\n/**\n * Añade límites a un número, impidiendo que sea\n * inferior o superior a los límites establecidos.\n *\n * Si se pasa loop en true, al llegar al valor maximo o minimo regresara al\n * minimo o maximo respectivamente.\n */\nexport function addBoundary(\n num: number,\n min: number,\n max?: number,\n loop?: boolean,\n): number;\nexport function addBoundary(definition: ISetBoundary): number;\nexport function addBoundary(\n definition: ISetBoundary | number,\n min?: number,\n max?: number,\n loop?: boolean,\n) {\n const actualNumber =\n typeof definition === 'number' ? definition : definition.number;\n const actualMin = typeof definition === 'number' ? min : definition.min;\n const actualMax = typeof definition === 'number' ? max : definition.max;\n const isActualLoop = typeof definition === 'number' ? loop : definition.loop;\n\n let newNumber = Number(actualNumber ?? 0);\n if (actualMin !== undefined && newNumber < actualMin) {\n if (actualMax !== undefined && isActualLoop) {\n newNumber = actualMax;\n } else {\n newNumber = actualMin;\n }\n }\n if (actualMax !== undefined && newNumber > actualMax) {\n if (actualMin !== undefined && isActualLoop) {\n newNumber = actualMin;\n } else {\n newNumber = actualMax;\n }\n }\n return newNumber;\n}\n\nconst sizeUnits = ['b', 'kb', 'mb', 'gb', 'tb'];\n/**\n * Esta función acepta un número y devuelve la representaciíon\n * en string de su tamaño en disco. Ej: 1024 => 1kb\n */\nexport function parseAsSize(num: number): string {\n let index = 0;\n let finalSize = num;\n\n if (finalSize === Infinity) return '1000GB';\n\n while (finalSize > 1024) {\n finalSize /= 1024;\n index++;\n }\n return `${Math.round(finalSize * 10) / 10}${sizeUnits[index]}`;\n}\n\n/**\n * Toma cualquier valor y devuelve siempre un número. En caso de que el valor\n * casteado con la función Number(value) de NaN, devuelve defaultReturn, que por\n * defecto es 0\n */\nexport function noNaN(number: unknown, defaultReturn = 0) {\n const returnNumber = Number(number);\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\n return returnNumber;\n}\n"],"names":[],"mappings":"AAqBO,SAAS,WACd,CAAA,UAAA,EACA,GACA,EAAA,GAAA,EACA,IACA,EAAA;AACA,EAAA,MAAM,YACJ,GAAA,OAAO,UAAe,KAAA,QAAA,GAAW,aAAa,UAAW,CAAA,MAAA,CAAA;AAC3D,EAAA,MAAM,SAAY,GAAA,OAAO,UAAe,KAAA,QAAA,GAAW,MAAM,UAAW,CAAA,GAAA,CAAA;AACpE,EAAA,MAAM,SAAY,GAAA,OAAO,UAAe,KAAA,QAAA,GAAW,MAAM,UAAW,CAAA,GAAA,CAAA;AACpE,EAAA,MAAM,YAAe,GAAA,OAAO,UAAe,KAAA,QAAA,GAAW,OAAO,UAAW,CAAA,IAAA,CAAA;AAExE,EAAI,IAAA,SAAA,GAAY,MAAO,CAAA,YAAA,IAAgB,CAAC,CAAA,CAAA;AACxC,EAAI,IAAA,SAAA,KAAc,KAAa,CAAA,IAAA,SAAA,GAAY,SAAW,EAAA;AACpD,IAAI,IAAA,SAAA,KAAc,UAAa,YAAc,EAAA;AAC3C,MAAY,SAAA,GAAA,SAAA,CAAA;AAAA,KACP,MAAA;AACL,MAAY,SAAA,GAAA,SAAA,CAAA;AAAA,KACd;AAAA,GACF;AACA,EAAI,IAAA,SAAA,KAAc,KAAa,CAAA,IAAA,SAAA,GAAY,SAAW,EAAA;AACpD,IAAI,IAAA,SAAA,KAAc,UAAa,YAAc,EAAA;AAC3C,MAAY,SAAA,GAAA,SAAA,CAAA;AAAA,KACP,MAAA;AACL,MAAY,SAAA,GAAA,SAAA,CAAA;AAAA,KACd;AAAA,GACF;AACA,EAAO,OAAA,SAAA,CAAA;AACT,CAAA;AAEA,MAAM,YAAY,CAAC,GAAA,EAAK,IAAM,EAAA,IAAA,EAAM,MAAM,IAAI,CAAA,CAAA;AAKvC,SAAS,YAAY,GAAqB,EAAA;AAC/C,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,IAAI,SAAY,GAAA,GAAA,CAAA;AAEhB,EAAA,IAAI,SAAc,KAAA,QAAA;AAAU,IAAO,OAAA,QAAA,CAAA;AAEnC,EAAA,OAAO,YAAY,IAAM,EAAA;AACvB,IAAa,SAAA,IAAA,IAAA,CAAA;AACb,IAAA,KAAA,EAAA,CAAA;AAAA,GACF;AACA,EAAO,OAAA,CAAA,EAAG,IAAK,CAAA,KAAA,CAAM,SAAY,GAAA,EAAE,IAAI,EAAE,CAAA,EAAG,SAAU,CAAA,KAAK,CAAC,CAAA,CAAA,CAAA;AAC9D,CAAA;AAOgB,SAAA,KAAA,CAAM,MAAiB,EAAA,aAAA,GAAgB,CAAG,EAAA;AACxD,EAAM,MAAA,YAAA,GAAe,OAAO,MAAM,CAAA,CAAA;AAClC,EAAA,IAAI,MAAW,KAAA,IAAA,IAAQ,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA;AAAG,IAAO,OAAA,aAAA,CAAA;AAC1D,EAAO,OAAA,YAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Este método itera sobre un objeto hasta encontrar la ruta especificada
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
*
|
|
6
|
+
const obj = {
|
|
7
|
+
a: {
|
|
8
|
+
b: {
|
|
9
|
+
c: {
|
|
10
|
+
d: "d"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
console.log(getValueByPath(obj,'a.b.c')) // { d: 'd' }
|
|
17
|
+
console.log(getValueByPath(obj,'a.b.c.d')) // 'd'
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
declare function getValueByPath(obj: Record<string, unknown>, path: string | string[], separator?: string): unknown;
|
|
21
|
+
|
|
22
|
+
export { getValueByPath };
|
|
23
|
+
//# sourceMappingURL=getValueByPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getValueByPath.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function getValueByPath(obj, path, separator = ".") {
|
|
2
|
+
const actualPath = typeof path === "string" ? path.split(separator) : path;
|
|
3
|
+
if (typeof obj !== "object" || !obj) {
|
|
4
|
+
if (actualPath.length === 0)
|
|
5
|
+
return obj;
|
|
6
|
+
return void 0;
|
|
7
|
+
}
|
|
8
|
+
const currentStep = actualPath.shift();
|
|
9
|
+
if (actualPath.length === 0)
|
|
10
|
+
return obj[currentStep];
|
|
11
|
+
return getValueByPath(
|
|
12
|
+
obj[currentStep],
|
|
13
|
+
actualPath,
|
|
14
|
+
separator
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { getValueByPath };
|
|
19
|
+
//# sourceMappingURL=getValueByPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getValueByPath.js","sources":["../../src/objects/getValueByPath.ts"],"sourcesContent":["/**\n * Este método itera sobre un objeto hasta encontrar la ruta especificada\n *\n * @example\n *\n const obj = {\n a: {\n b: {\n c: {\n d: \"d\"\n }\n }\n }\n };\n\n console.log(getValueByPath(obj,'a.b.c')) // { d: 'd' }\n console.log(getValueByPath(obj,'a.b.c.d')) // 'd'\n *\n */\nexport function getValueByPath(\n obj: Record<string, unknown>,\n path: string | string[],\n separator = '.',\n): unknown {\n const actualPath = typeof path === 'string' ? path.split(separator) : path;\n if (typeof obj !== 'object' || !obj) {\n if (actualPath.length === 0) return obj;\n return undefined;\n }\n const currentStep = actualPath.shift() as string;\n if (actualPath.length === 0) return obj[currentStep];\n return getValueByPath(\n obj[currentStep] as Record<string, unknown>,\n actualPath,\n separator,\n );\n}\n"],"names":[],"mappings":"AAmBO,SAAS,cACd,CAAA,GAAA,EACA,IACA,EAAA,SAAA,GAAY,GACH,EAAA;AACT,EAAA,MAAM,aAAa,OAAO,IAAA,KAAS,WAAW,IAAK,CAAA,KAAA,CAAM,SAAS,CAAI,GAAA,IAAA,CAAA;AACtE,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAY,IAAA,CAAC,GAAK,EAAA;AACnC,IAAA,IAAI,WAAW,MAAW,KAAA,CAAA;AAAG,MAAO,OAAA,GAAA,CAAA;AACpC,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,WAAA,GAAc,WAAW,KAAM,EAAA,CAAA;AACrC,EAAA,IAAI,WAAW,MAAW,KAAA,CAAA;AAAG,IAAA,OAAO,IAAI,WAAW,CAAA,CAAA;AACnD,EAAO,OAAA,cAAA;AAAA,IACL,IAAI,WAAW,CAAA;AAAA,IACf,UAAA;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permite escribir una propiedad en un objeto, en una ruta especificada. Si
|
|
3
|
+
* dicha ruta no existe dentro del objeto la crea, siempre que sea posible. No
|
|
4
|
+
* será posible en caso de que alguno de los elementos de la ruta contenga una
|
|
5
|
+
* propiedad que no sea de tipo objeto.
|
|
6
|
+
*
|
|
7
|
+
* @param obj El objeto donde se desea escribir la propiedad
|
|
8
|
+
* @param path La ruta en la que se va a escribir
|
|
9
|
+
* @param value El valor que se va a escribir en la ruta especificada
|
|
10
|
+
* @returns Un objeto idéntico del recibido pero co nlos cambios aplicados
|
|
11
|
+
*
|
|
12
|
+
* @throws { Error } En caso de que la ruta especificada contenga algún elemento que no puede ser escrito.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
*
|
|
16
|
+
* const a = {
|
|
17
|
+
* a: {}
|
|
18
|
+
* };
|
|
19
|
+
*
|
|
20
|
+
* setValueByPath(a, 'a.b.c', 'Hello world');
|
|
21
|
+
* /* Outputs:
|
|
22
|
+
* {
|
|
23
|
+
* a: {
|
|
24
|
+
* b: {
|
|
25
|
+
* c: 'Hello world'
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
*/
|
|
30
|
+
declare function setValueByPath(obj: Record<string, unknown>, path: string, value: unknown): Record<string, unknown> | null;
|
|
31
|
+
|
|
32
|
+
export { setValueByPath };
|
|
33
|
+
//# sourceMappingURL=setValueByPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setValueByPath.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import clone from 'lodash-es/clone';
|
|
2
|
+
|
|
3
|
+
function setValueByPath(obj, path, value) {
|
|
4
|
+
if (path === "")
|
|
5
|
+
return value;
|
|
6
|
+
const steps = path.split(".");
|
|
7
|
+
if (steps.length === 0) {
|
|
8
|
+
console.warn(`An empty path was provoided ${path}`);
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const originalClonedObject = clone(obj ?? {});
|
|
12
|
+
let currentObj = originalClonedObject;
|
|
13
|
+
for (let i = 0; i < steps.length - 1; i++) {
|
|
14
|
+
if (!currentObj[steps[i]])
|
|
15
|
+
currentObj[steps[i]] = {};
|
|
16
|
+
if (typeof currentObj[steps[i]] === "object") {
|
|
17
|
+
currentObj = currentObj[steps[i]];
|
|
18
|
+
} else {
|
|
19
|
+
console.info({
|
|
20
|
+
originalObject: obj,
|
|
21
|
+
originalPath: path,
|
|
22
|
+
currentObj,
|
|
23
|
+
currentStep: steps[i]
|
|
24
|
+
});
|
|
25
|
+
throw new Error(
|
|
26
|
+
`The provided path ${path} cannot be applied due to it is not an object's path.`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
currentObj[steps.pop()] = value;
|
|
31
|
+
return originalClonedObject;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { setValueByPath };
|
|
35
|
+
//# sourceMappingURL=setValueByPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setValueByPath.js","sources":["../../src/objects/setValueByPath.ts"],"sourcesContent":["import clone from 'lodash-es/clone';\n\n/**\n * Permite escribir una propiedad en un objeto, en una ruta especificada. Si\n * dicha ruta no existe dentro del objeto la crea, siempre que sea posible. No\n * será posible en caso de que alguno de los elementos de la ruta contenga una\n * propiedad que no sea de tipo objeto.\n *\n * @param obj El objeto donde se desea escribir la propiedad\n * @param path La ruta en la que se va a escribir\n * @param value El valor que se va a escribir en la ruta especificada\n * @returns Un objeto idéntico del recibido pero co nlos cambios aplicados\n *\n * @throws { Error } En caso de que la ruta especificada contenga algún elemento que no puede ser escrito.\n *\n * @example\n *\n * const a = {\n * a: {}\n * };\n *\n * setValueByPath(a, 'a.b.c', 'Hello world');\n * /* Outputs:\n * {\n * a: {\n * b: {\n * c: 'Hello world'\n * }\n * }\n * }\n */\nexport function setValueByPath(\n obj: Record<string, unknown>,\n path: string,\n value: unknown,\n) {\n if (path === '') return value as Record<string, unknown>;\n\n const steps = path.split('.');\n if (steps.length === 0) {\n console.warn(`An empty path was provoided ${path}`);\n return null;\n }\n const originalClonedObject = clone(obj ?? {});\n let currentObj = originalClonedObject;\n for (let i = 0; i < steps.length - 1; i++) {\n if (!currentObj[steps[i]]) currentObj[steps[i]] = {};\n if (typeof currentObj[steps[i]] === 'object') {\n currentObj = currentObj[steps[i]] as Record<string, unknown>;\n } else {\n console.info({\n originalObject: obj,\n originalPath: path,\n currentObj,\n currentStep: steps[i],\n });\n throw new Error(\n `The provided path ${path} cannot be applied due to it is not an object's path.`,\n );\n }\n }\n currentObj[steps.pop() as string] = value;\n return originalClonedObject;\n}\n"],"names":[],"mappings":";;AA+BgB,SAAA,cAAA,CACd,GACA,EAAA,IAAA,EACA,KACA,EAAA;AACA,EAAA,IAAI,IAAS,KAAA,EAAA;AAAI,IAAO,OAAA,KAAA,CAAA;AAExB,EAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC5B,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAQ,OAAA,CAAA,IAAA,CAAK,CAA+B,4BAAA,EAAA,IAAI,CAAE,CAAA,CAAA,CAAA;AAClD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAA,MAAM,oBAAuB,GAAA,KAAA,CAAM,GAAO,IAAA,EAAE,CAAA,CAAA;AAC5C,EAAA,IAAI,UAAa,GAAA,oBAAA,CAAA;AACjB,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAM,CAAA,MAAA,GAAS,GAAG,CAAK,EAAA,EAAA;AACzC,IAAA,IAAI,CAAC,UAAA,CAAW,KAAM,CAAA,CAAC,CAAC,CAAA;AAAG,MAAA,UAAA,CAAW,KAAM,CAAA,CAAC,CAAC,CAAA,GAAI,EAAC,CAAA;AACnD,IAAA,IAAI,OAAO,UAAW,CAAA,KAAA,CAAM,CAAC,CAAC,MAAM,QAAU,EAAA;AAC5C,MAAa,UAAA,GAAA,UAAA,CAAW,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KAC3B,MAAA;AACL,MAAA,OAAA,CAAQ,IAAK,CAAA;AAAA,QACX,cAAgB,EAAA,GAAA;AAAA,QAChB,YAAc,EAAA,IAAA;AAAA,QACd,UAAA;AAAA,QACA,WAAA,EAAa,MAAM,CAAC,CAAA;AAAA,OACrB,CAAA,CAAA;AACD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,qBAAqB,IAAI,CAAA,qDAAA,CAAA;AAAA,OAC3B,CAAA;AAAA,KACF;AAAA,GACF;AACA,EAAW,UAAA,CAAA,KAAA,CAAM,GAAI,EAAW,CAAI,GAAA,KAAA,CAAA;AACpC,EAAO,OAAA,oBAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TPropsSuscriptor, TUpdateFieldConfiguration, TProperties } from './types.js';
|
|
2
|
+
import { TId } from '../types/misc.js';
|
|
3
|
+
|
|
4
|
+
declare const PropsSelectorUndefinedObject: {};
|
|
5
|
+
interface IPropsStoreConf {
|
|
6
|
+
logCommands: {
|
|
7
|
+
propsStore?: string;
|
|
8
|
+
updateProp?: string;
|
|
9
|
+
propsSuscriptors?: string;
|
|
10
|
+
propsLog?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
declare class PropsStore<PropsType extends Record<TId, unknown> = Record<TId, unknown>> {
|
|
14
|
+
private configuration?;
|
|
15
|
+
log: unknown;
|
|
16
|
+
fields: Record<TId, PropsType>;
|
|
17
|
+
suscriptors: Record<TId, TPropsSuscriptor<PropsType>[]>;
|
|
18
|
+
loggers: Record<string, (props: unknown[]) => void>;
|
|
19
|
+
constructor(configuration?: IPropsStoreConf | undefined);
|
|
20
|
+
destructor(): void;
|
|
21
|
+
getAllFields(): Record<TId, PropsType>;
|
|
22
|
+
/**
|
|
23
|
+
* Devuelve los props actuales de un campo.
|
|
24
|
+
*/
|
|
25
|
+
getFieldProps<ParsedPropsType = PropsType>(fieldId: TId): ParsedPropsType;
|
|
26
|
+
removeField(fieldId: TId): void;
|
|
27
|
+
/**
|
|
28
|
+
* Permite establecer un suscriptor que será llamado
|
|
29
|
+
* cada vez que las props del campo especificado cambien.
|
|
30
|
+
*/
|
|
31
|
+
suscribe(fieldId: TId, callback: TPropsSuscriptor<PropsType>): () => void;
|
|
32
|
+
/**
|
|
33
|
+
* Actualiza o crea las props de un campo.
|
|
34
|
+
*
|
|
35
|
+
* La tercera prop está relacionada
|
|
36
|
+
*/
|
|
37
|
+
updateField<NewPropsType extends Record<TId, unknown> = Partial<PropsType>>(fieldId: TId, props: Partial<NewPropsType>, conf?: TUpdateFieldConfiguration): void;
|
|
38
|
+
}
|
|
39
|
+
declare const propsStore: PropsStore<TProperties>;
|
|
40
|
+
|
|
41
|
+
export { PropsSelectorUndefinedObject, PropsStore, propsStore };
|
|
42
|
+
//# sourceMappingURL=propsStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propsStore.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import cloneDeep from 'lodash-es/cloneDeep';
|
|
2
|
+
import persistentStorage from '../storage/persistentStorage.js';
|
|
3
|
+
import { debugDispatcher } from '../debug/debugDispatcher.js';
|
|
4
|
+
|
|
5
|
+
const propsLog = "propsLog";
|
|
6
|
+
const PropsSelectorUndefinedObject = {};
|
|
7
|
+
class PropsStore {
|
|
8
|
+
constructor(configuration) {
|
|
9
|
+
this.configuration = configuration;
|
|
10
|
+
this.log = persistentStorage[propsLog];
|
|
11
|
+
this.fields = {};
|
|
12
|
+
this.suscriptors = {};
|
|
13
|
+
this.loggers = {
|
|
14
|
+
propsLog: ([log]) => {
|
|
15
|
+
this.log = log;
|
|
16
|
+
persistentStorage[propsLog] = log;
|
|
17
|
+
},
|
|
18
|
+
propsStore: ([fieldId]) => {
|
|
19
|
+
if (fieldId)
|
|
20
|
+
console.info(this.fields[fieldId]);
|
|
21
|
+
else
|
|
22
|
+
console.info(this.fields);
|
|
23
|
+
},
|
|
24
|
+
propsSuscriptors: ([fieldId]) => {
|
|
25
|
+
if (fieldId)
|
|
26
|
+
console.info(this.suscriptors[fieldId]);
|
|
27
|
+
else
|
|
28
|
+
console.info(this.suscriptors);
|
|
29
|
+
},
|
|
30
|
+
updateProp: ([fieldId, newProps]) => {
|
|
31
|
+
this.updateField(fieldId, newProps);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
if (this.configuration) {
|
|
35
|
+
if (this.configuration.logCommands.propsStore)
|
|
36
|
+
debugDispatcher.on(
|
|
37
|
+
this.configuration.logCommands.propsStore,
|
|
38
|
+
this.loggers.propsStore,
|
|
39
|
+
"Muestra el contenido actual del propsStore"
|
|
40
|
+
);
|
|
41
|
+
if (this.configuration.logCommands.updateProp)
|
|
42
|
+
debugDispatcher.on(
|
|
43
|
+
this.configuration.logCommands.updateProp,
|
|
44
|
+
this.loggers.updateProp,
|
|
45
|
+
"dd.updateProp(fieldId, newProps). El objeto newProps ser\xE1 mergeado sobre las props actuales"
|
|
46
|
+
);
|
|
47
|
+
if (this.configuration.logCommands.propsSuscriptors)
|
|
48
|
+
debugDispatcher.on(
|
|
49
|
+
this.configuration.logCommands.propsSuscriptors,
|
|
50
|
+
this.loggers.propsSuscriptors,
|
|
51
|
+
"Muestra los suscriptores actuales del propsStore"
|
|
52
|
+
);
|
|
53
|
+
if (this.configuration.logCommands.propsLog)
|
|
54
|
+
debugDispatcher.on(
|
|
55
|
+
this.configuration.logCommands.propsLog,
|
|
56
|
+
this.loggers.propsLog,
|
|
57
|
+
"Si se pasa como true, hace log de las acciones. Si se pasa como trace(fieldId), se hace log de todas las acciones y trace del campo especificado. Si se pasa trace(), hace log y trace de todas las acciones."
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
destructor() {
|
|
62
|
+
if (this.configuration) {
|
|
63
|
+
if (this.configuration.logCommands.propsStore)
|
|
64
|
+
debugDispatcher.off(
|
|
65
|
+
this.configuration.logCommands.propsStore,
|
|
66
|
+
this.loggers.propsStore
|
|
67
|
+
);
|
|
68
|
+
if (this.configuration.logCommands.updateProp)
|
|
69
|
+
debugDispatcher.off(
|
|
70
|
+
this.configuration.logCommands.updateProp,
|
|
71
|
+
this.loggers.updateProp
|
|
72
|
+
);
|
|
73
|
+
if (this.configuration.logCommands.propsSuscriptors)
|
|
74
|
+
debugDispatcher.off(
|
|
75
|
+
this.configuration.logCommands.propsSuscriptors,
|
|
76
|
+
this.loggers.propsSuscriptors
|
|
77
|
+
);
|
|
78
|
+
if (this.configuration.logCommands.propsLog)
|
|
79
|
+
debugDispatcher.off(
|
|
80
|
+
this.configuration.logCommands.propsLog,
|
|
81
|
+
this.loggers.propsLog
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
getAllFields() {
|
|
86
|
+
return cloneDeep(this.fields);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Devuelve los props actuales de un campo.
|
|
90
|
+
*/
|
|
91
|
+
getFieldProps(fieldId) {
|
|
92
|
+
return this.fields[fieldId];
|
|
93
|
+
}
|
|
94
|
+
removeField(fieldId) {
|
|
95
|
+
this.suscriptors[fieldId] = [];
|
|
96
|
+
delete this.fields[fieldId];
|
|
97
|
+
if (this.log)
|
|
98
|
+
console.info(`propsStore: removeNode ${fieldId}`);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Permite establecer un suscriptor que será llamado
|
|
102
|
+
* cada vez que las props del campo especificado cambien.
|
|
103
|
+
*/
|
|
104
|
+
suscribe(fieldId, callback) {
|
|
105
|
+
if (!this.suscriptors[fieldId])
|
|
106
|
+
this.suscriptors[fieldId] = [];
|
|
107
|
+
this.suscriptors[fieldId].push(callback);
|
|
108
|
+
callback(this.fields[fieldId] ?? PropsSelectorUndefinedObject);
|
|
109
|
+
return () => {
|
|
110
|
+
this.suscriptors[fieldId] = this.suscriptors[fieldId].filter(
|
|
111
|
+
(current) => {
|
|
112
|
+
return current !== callback;
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Actualiza o crea las props de un campo.
|
|
119
|
+
*
|
|
120
|
+
* La tercera prop está relacionada
|
|
121
|
+
*/
|
|
122
|
+
updateField(fieldId, props, conf) {
|
|
123
|
+
if (fieldId === void 0)
|
|
124
|
+
return;
|
|
125
|
+
const { noEmit, isUrgent } = conf ?? {};
|
|
126
|
+
const newProps = { ...this.fields[fieldId], ...props };
|
|
127
|
+
this.fields[fieldId] = newProps;
|
|
128
|
+
if (this.log === true || this.log === fieldId)
|
|
129
|
+
console.info({ fieldId, props });
|
|
130
|
+
if (this.log === "trace")
|
|
131
|
+
console.trace();
|
|
132
|
+
else {
|
|
133
|
+
const logId = typeof this.log === "string" && (this.log.match(/trace\(([^)]+)\)/) ?? [])[1];
|
|
134
|
+
if (fieldId === logId)
|
|
135
|
+
console.trace();
|
|
136
|
+
}
|
|
137
|
+
if (!noEmit) {
|
|
138
|
+
this.suscriptors[fieldId]?.forEach((current) => {
|
|
139
|
+
return current(newProps, isUrgent);
|
|
140
|
+
});
|
|
141
|
+
this.suscriptors.any?.forEach((current) => {
|
|
142
|
+
return current({ ...newProps, fieldId }, isUrgent);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const propsStore = new PropsStore({
|
|
148
|
+
logCommands: {
|
|
149
|
+
propsLog: "propsLog",
|
|
150
|
+
propsStore: "propsStore",
|
|
151
|
+
propsSuscriptors: "propsSuscriptors",
|
|
152
|
+
updateProp: "updateProp"
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
export { PropsSelectorUndefinedObject, PropsStore, propsStore };
|
|
157
|
+
//# sourceMappingURL=propsStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propsStore.js","sources":["../../src/propsStore/propsStore.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport {\n TProperties,\n TPropsSuscriptor,\n TUpdateFieldConfiguration,\n} from './types';\nimport { debugDispatcher } from '../debug';\nimport { TId } from '../types';\nimport { persistentStorage } from '../storage';\n\nconst propsLog = 'propsLog';\nexport const PropsSelectorUndefinedObject = {};\n\ninterface IPropsStoreConf {\n logCommands: {\n propsStore?: string;\n updateProp?: string;\n propsSuscriptors?: string;\n propsLog?: string;\n };\n}\n\nexport class PropsStore<\n PropsType extends Record<TId, unknown> = Record<TId, unknown>,\n> {\n log = persistentStorage[propsLog];\n\n fields: Record<TId, PropsType> = {};\n\n suscriptors: Record<TId, TPropsSuscriptor<PropsType>[]> = {};\n\n loggers: Record<string, (props: unknown[]) => void> = {\n propsLog: ([log]) => {\n this.log = log;\n persistentStorage[propsLog] = log;\n },\n propsStore: ([fieldId]) => {\n if (fieldId) console.info(this.fields[fieldId as TId]);\n else console.info(this.fields);\n },\n propsSuscriptors: ([fieldId]) => {\n if (fieldId) console.info(this.suscriptors[fieldId as TId]);\n else console.info(this.suscriptors);\n },\n updateProp: ([fieldId, newProps]) => {\n this.updateField(fieldId as TId, newProps as PropsType);\n },\n };\n\n constructor(private configuration?: IPropsStoreConf) {\n if (this.configuration) {\n if (this.configuration.logCommands.propsStore)\n debugDispatcher.on(\n this.configuration.logCommands.propsStore,\n this.loggers.propsStore,\n 'Muestra el contenido actual del propsStore',\n );\n if (this.configuration.logCommands.updateProp)\n debugDispatcher.on(\n this.configuration.logCommands.updateProp,\n this.loggers.updateProp,\n 'dd.updateProp(fieldId, newProps). El objeto newProps será mergeado sobre las props actuales',\n );\n if (this.configuration.logCommands.propsSuscriptors)\n debugDispatcher.on(\n this.configuration.logCommands.propsSuscriptors,\n this.loggers.propsSuscriptors,\n 'Muestra los suscriptores actuales del propsStore',\n );\n if (this.configuration.logCommands.propsLog)\n debugDispatcher.on(\n this.configuration.logCommands.propsLog,\n this.loggers.propsLog,\n 'Si se pasa como true, hace log de las acciones. Si se pasa como trace(fieldId), se hace log de todas las acciones y trace del campo especificado. Si se pasa trace(), hace log y trace de todas las acciones.',\n );\n }\n }\n\n destructor() {\n if (this.configuration) {\n if (this.configuration.logCommands.propsStore)\n debugDispatcher.off(\n this.configuration.logCommands.propsStore,\n this.loggers.propsStore,\n );\n if (this.configuration.logCommands.updateProp)\n debugDispatcher.off(\n this.configuration.logCommands.updateProp,\n this.loggers.updateProp,\n );\n if (this.configuration.logCommands.propsSuscriptors)\n debugDispatcher.off(\n this.configuration.logCommands.propsSuscriptors,\n this.loggers.propsSuscriptors,\n );\n if (this.configuration.logCommands.propsLog)\n debugDispatcher.off(\n this.configuration.logCommands.propsLog,\n this.loggers.propsLog,\n );\n }\n }\n\n getAllFields() {\n return cloneDeep(this.fields);\n }\n\n /**\n * Devuelve los props actuales de un campo.\n */\n getFieldProps<ParsedPropsType = PropsType>(fieldId: TId) {\n return this.fields[fieldId] as unknown as ParsedPropsType;\n }\n\n removeField(fieldId: TId) {\n this.suscriptors[fieldId] = [];\n delete this.fields[fieldId];\n if (this.log) console.info(`propsStore: removeNode ${fieldId}`);\n }\n\n /**\n * Permite establecer un suscriptor que será llamado\n * cada vez que las props del campo especificado cambien.\n */\n suscribe(fieldId: TId, callback: TPropsSuscriptor<PropsType>) {\n if (!this.suscriptors[fieldId]) this.suscriptors[fieldId] = [];\n\n this.suscriptors[fieldId].push(callback);\n\n callback(this.fields[fieldId] ?? PropsSelectorUndefinedObject);\n\n return () => {\n this.suscriptors[fieldId] = this.suscriptors[fieldId].filter(\n (current) => {\n return current !== callback;\n },\n );\n };\n }\n\n /**\n * Actualiza o crea las props de un campo.\n *\n * La tercera prop está relacionada\n */\n updateField<NewPropsType extends Record<TId, unknown> = Partial<PropsType>>(\n fieldId: TId,\n props: Partial<NewPropsType>,\n conf?: TUpdateFieldConfiguration,\n ) {\n if (fieldId === undefined) return;\n\n const { noEmit, isUrgent } = conf ?? {};\n const newProps = { ...this.fields[fieldId], ...props };\n this.fields[fieldId] = newProps;\n\n if (this.log === true || this.log === fieldId)\n console.info({ fieldId, props });\n if (this.log === 'trace') console.trace();\n else {\n const logId =\n typeof this.log === 'string' &&\n (this.log.match(/trace\\(([^)]+)\\)/) ?? [])[1];\n if (fieldId === logId) console.trace();\n }\n\n if (!noEmit) {\n this.suscriptors[fieldId]?.forEach((current) => {\n return current(newProps, isUrgent);\n });\n this.suscriptors.any?.forEach((current) => {\n return current({ ...newProps, fieldId }, isUrgent);\n });\n }\n }\n}\n\nexport const propsStore = new PropsStore<TProperties>({\n logCommands: {\n propsLog: 'propsLog',\n propsStore: 'propsStore',\n propsSuscriptors: 'propsSuscriptors',\n updateProp: 'updateProp',\n },\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PropsStore } from './propsStore.js';
|
|
2
|
+
|
|
3
|
+
type TProperties = Record<string, unknown>;
|
|
4
|
+
type TPropsSuscriptor<PropsType extends Record<string, unknown> = TProperties> = (props: PropsType, urgent?: boolean) => unknown;
|
|
5
|
+
type TPropsSelector<Selected = any, PropsType = TProperties> = (props: PropsType) => Selected;
|
|
6
|
+
/**
|
|
7
|
+
* La función comparadora debe devolver true cuando
|
|
8
|
+
* los elementos son iguales o false cuando son
|
|
9
|
+
* distintos.
|
|
10
|
+
*/
|
|
11
|
+
type TPropsComparator<Selected> = (prevProps: Selected | undefined, newProps: Selected | undefined) => boolean;
|
|
12
|
+
type TPropsConfiguration<Selected, PropsType extends Record<string, unknown> = TProperties> = {
|
|
13
|
+
selector?: TPropsSelector<Selected, PropsType>;
|
|
14
|
+
comparator?: TPropsComparator<Selected>;
|
|
15
|
+
initialValue?: Selected;
|
|
16
|
+
propsStore?: PropsStore<PropsType>;
|
|
17
|
+
};
|
|
18
|
+
type TUpdateFieldConfiguration = Partial<{
|
|
19
|
+
noEmit: boolean;
|
|
20
|
+
isUrgent: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
|
|
23
|
+
export type { TProperties, TPropsComparator, TPropsConfiguration, TPropsSelector, TPropsSuscriptor, TUpdateFieldConfiguration };
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { PropsStore } from './propsStore.js';
|
|
2
|
+
import { TProperties, TPropsSelector, TPropsConfiguration, TPropsComparator } from './types.js';
|
|
3
|
+
import { TId } from '../types/misc.js';
|
|
4
|
+
|
|
5
|
+
declare function isPropsConfigurationObject<Selected, PropsType extends Record<string, unknown> = TProperties>(value?: TPropsSelector<Selected, PropsType> | TPropsConfiguration<Selected, PropsType>): value is TPropsConfiguration<Selected, PropsType>;
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* Este hook permite escuchar los cambios en las propiedades
|
|
9
|
+
* de un campo en particular.
|
|
10
|
+
*
|
|
11
|
+
* @param configuration
|
|
12
|
+
* Este objeto permite pasar las siguientes propiedades para ser
|
|
13
|
+
* determinar el comportamiento del hook:
|
|
14
|
+
*
|
|
15
|
+
* **selector:** La función selectora es una función equivalente
|
|
16
|
+
* a la que se utiliza en el useAppSelector de redux. Con ella
|
|
17
|
+
* se puede seleccionar una porción de las props, evitando
|
|
18
|
+
* re-renderizados innecesarios. Esto se debe a que el renderizado
|
|
19
|
+
* solamente ocurrirá cuando la función selectora devuelva un valor
|
|
20
|
+
* que sea distinto del anterior.
|
|
21
|
+
*
|
|
22
|
+
* El concepto de distinto es: si existe una función comparadora,
|
|
23
|
+
* se determinará mediante la ejecución de dicha función, a la que
|
|
24
|
+
* se le pasan como parámetros el objeto anterior y el nuevo.
|
|
25
|
+
*
|
|
26
|
+
* En caso de que no haya función comparadora, se comparará que
|
|
27
|
+
* las props seleccionadas y las nuevas sean exactamente las mismas
|
|
28
|
+
* (la referencia al mismo objeto).
|
|
29
|
+
*
|
|
30
|
+
* **comparator:** La función comparadora de la que estamos
|
|
31
|
+
* hablando.
|
|
32
|
+
*
|
|
33
|
+
* **initialValue:** Un valor para setearlo al inicio, el mismo
|
|
34
|
+
* solamente será seteado en caso de que ya no exista un valor
|
|
35
|
+
* en el store.
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
declare function usePropsSelector<Selected = TProperties, PropsType extends Record<string, unknown> = TProperties>(fieldId: TId, configuration?: TPropsConfiguration<Selected, PropsType>): Selected;
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
* Este hook permite escuchar los cambios en las propiedades
|
|
42
|
+
* de un campo en particular.
|
|
43
|
+
*
|
|
44
|
+
* @param selector La función selectora es una función equivalente
|
|
45
|
+
* a la que se utiliza en el useAppSelector de redux. Con ella
|
|
46
|
+
* se puede seleccionar una porción de las props, evitando
|
|
47
|
+
* re-renderizados innecesarios. Esto se debe a que el renderizado
|
|
48
|
+
* solamente ocurrirá cuando la función selectora devuelva un valor
|
|
49
|
+
* que sea distinto del anterior.
|
|
50
|
+
*
|
|
51
|
+
* El concepto de distinto es: si existe una función comparadora,
|
|
52
|
+
* se determinará mediante la ejecución de dicha función, a la que
|
|
53
|
+
* se le pasan como parámetros el objeto anterior y el nuevo.
|
|
54
|
+
*
|
|
55
|
+
* En caso de que no haya función comparadora, se comparará que
|
|
56
|
+
* las props seleccionadas y las nuevas sean exactamente las mismas
|
|
57
|
+
* (la referencia al mismo objeto).
|
|
58
|
+
*
|
|
59
|
+
* @param comparator La función comparadora de la que estamos
|
|
60
|
+
* hablando.
|
|
61
|
+
*
|
|
62
|
+
* @returns
|
|
63
|
+
*/
|
|
64
|
+
declare function usePropsSelector<Selected = TProperties, PropsType extends Record<string, unknown> = TProperties>(fieldId: TId, selector?: TPropsSelector<Selected, PropsType> | TPropsConfiguration<Selected, PropsType>, comparator?: TPropsComparator<Selected>, anotherPropsStore?: PropsStore<PropsType>): Selected;
|
|
65
|
+
|
|
66
|
+
export { isPropsConfigurationObject, usePropsSelector };
|
|
67
|
+
//# sourceMappingURL=usePropsSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePropsSelector.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|