@apia/util 3.0.1 → 3.0.6
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 +2 -2
- 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 -32
- package/dist/debug/debugDispatcher.d.ts.map +0 -1
- package/dist/debug/debugDispatcher.js +0 -72
- 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 -48
- 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,56 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { TMap, TMethods, TMethodsMap, TFireEvent } from './types.js';
|
|
3
|
-
import { TId } from '../types/misc.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Permite la creación de componentes multi-instancia que ofrecen métodos para
|
|
7
|
-
* trabajar sobre su estado o su comportamiento interno.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* const [methods, events, Imperative] = makeImperativeComponent<
|
|
11
|
-
{
|
|
12
|
-
age: number;
|
|
13
|
-
},
|
|
14
|
-
{ blink: number }
|
|
15
|
-
>()(
|
|
16
|
-
{} as {
|
|
17
|
-
name: string;
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
setName(setState, name: string) {
|
|
21
|
-
setState({ name });
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
({ age, name, useEvents }) => {
|
|
25
|
-
const [isBlinking, setIsBlinking] = useState(false);
|
|
26
|
-
|
|
27
|
-
useEvents({
|
|
28
|
-
blink() {
|
|
29
|
-
setInterval(() => setIsBlinking((current) => !current), 300);
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<Box sx={{ background: isBlinking ? 'red' : undefined }}>
|
|
35
|
-
{age} {name}
|
|
36
|
-
</Box>
|
|
37
|
-
);
|
|
38
|
-
},
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
methods
|
|
42
|
-
*/
|
|
43
|
-
declare function makeImperativeComponent<ComponentProps extends TMap, Events extends TMap = TMap>(): <State extends TMap, Methods extends TMethods<State>>({ Component, initialState, methods, }: {
|
|
44
|
-
initialState?: State | undefined;
|
|
45
|
-
methods?: Methods | undefined;
|
|
46
|
-
Component: FC<Omit<ComponentProps, 'id'> & State>;
|
|
47
|
-
}) => [
|
|
48
|
-
TMethodsMap<Methods>,
|
|
49
|
-
TFireEvent<Events>,
|
|
50
|
-
FC<ComponentProps & {
|
|
51
|
-
id: TId;
|
|
52
|
-
}>
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
export { makeImperativeComponent as default };
|
|
56
|
-
//# sourceMappingURL=makeImperativeComponent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeImperativeComponent.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useMemo } from 'react';
|
|
3
|
-
import { ImperativeComponentContext } from './types.js';
|
|
4
|
-
|
|
5
|
-
function makeImperativeComponent() {
|
|
6
|
-
return function ImperativeComponent({
|
|
7
|
-
Component,
|
|
8
|
-
initialState,
|
|
9
|
-
methods
|
|
10
|
-
}) {
|
|
11
|
-
const setStates = {};
|
|
12
|
-
const actualMethods = {};
|
|
13
|
-
Object.entries(methods ?? {}).forEach(([key, method]) => {
|
|
14
|
-
actualMethods[key] = (id, ...args) => {
|
|
15
|
-
if (setStates[id])
|
|
16
|
-
method(setStates[id], ...args);
|
|
17
|
-
else {
|
|
18
|
-
console.warn(`The requested id does not exist: ${id}`);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
const eventsHandlers = {};
|
|
23
|
-
const fireEvent = (id, ev, args) => {
|
|
24
|
-
if (eventsHandlers[id])
|
|
25
|
-
eventsHandlers[id]?.[ev]?.forEach((current) => current.cb(args));
|
|
26
|
-
else
|
|
27
|
-
console.warn(`The requested id does not exist: ${id}`);
|
|
28
|
-
};
|
|
29
|
-
const ActualComponent = ({
|
|
30
|
-
id,
|
|
31
|
-
...props
|
|
32
|
-
}) => {
|
|
33
|
-
const [state, innerSetState] = useState(initialState);
|
|
34
|
-
setStates[id] = (newState) => innerSetState((current) => ({ ...current, ...newState }));
|
|
35
|
-
return /* @__PURE__ */ jsx(
|
|
36
|
-
ImperativeComponentContext.Provider,
|
|
37
|
-
{
|
|
38
|
-
value: useMemo(() => ({ id, eventsStore: eventsHandlers }), [id]),
|
|
39
|
-
children: /* @__PURE__ */ jsx(Component, { ...props, ...state })
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
};
|
|
43
|
-
return [actualMethods, fireEvent, ActualComponent];
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export { makeImperativeComponent as default };
|
|
48
|
-
//# sourceMappingURL=makeImperativeComponent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeImperativeComponent.js","sources":["../../src/imperative/makeImperativeComponent.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { FC, useMemo, useState } from 'react';\nimport {\n TMap,\n TMethods,\n TMethodsMap,\n TFireEvent,\n TStateManager,\n TMethod,\n TEventsHandlers,\n ImperativeComponentContext,\n} from './types';\nimport { TId } from '../types';\n\n/**\n * Permite la creación de componentes multi-instancia que ofrecen métodos para\n * trabajar sobre su estado o su comportamiento interno.\n * \n * @example\n * const [methods, events, Imperative] = makeImperativeComponent<\n {\n age: number;\n },\n { blink: number }\n >()(\n {} as {\n name: string;\n },\n {\n setName(setState, name: string) {\n setState({ name });\n },\n },\n ({ age, name, useEvents }) => {\n const [isBlinking, setIsBlinking] = useState(false);\n\n useEvents({\n blink() {\n setInterval(() => setIsBlinking((current) => !current), 300);\n },\n });\n\n return (\n <Box sx={{ background: isBlinking ? 'red' : undefined }}>\n {age} {name}\n </Box>\n );\n },\n );\n\n methods\n */\nexport default function makeImperativeComponent<\n ComponentProps extends TMap,\n Events extends TMap = TMap,\n>() {\n return function ImperativeComponent<\n State extends TMap,\n Methods extends TMethods<State>,\n >({\n Component,\n initialState,\n methods,\n }: {\n initialState?: State;\n methods?: Methods;\n Component: FC<Omit<ComponentProps, 'id'> & State>;\n }): [\n TMethodsMap<Methods>,\n TFireEvent<Events>,\n FC<ComponentProps & { id: TId }>,\n ] {\n /**\n * State methods\n */\n\n const setStates: Record<string, TStateManager<State>> = {};\n const actualMethods: TMethodsMap<Methods> = {} as TMethodsMap<Methods>;\n Object.entries(methods ?? {}).forEach(([key, method]) => {\n actualMethods[key as keyof Methods] = ((id, ...args: any) => {\n if (setStates[id]) method(setStates[id], ...args);\n else {\n console.warn(`The requested id does not exist: ${id}`);\n }\n }) as TMethod<Methods[keyof Methods]>;\n });\n\n /**\n * Events\n */\n const eventsHandlers: TEventsHandlers<Events> = {};\n\n const fireEvent: TFireEvent<Events> = <K extends keyof Events>(\n id: TId,\n ev: K,\n args?: Events[K],\n ) => {\n if (eventsHandlers[id])\n eventsHandlers[id]?.[ev]?.forEach((current) => current.cb(args));\n else console.warn(`The requested id does not exist: ${id}`);\n };\n\n /**\n * Component\n */\n\n const ActualComponent: FC<ComponentProps & { id: TId }> = ({\n id,\n ...props\n }) => {\n const [state, innerSetState] = useState(initialState as State);\n\n setStates[id] = (newState) =>\n innerSetState((current) => ({ ...current, ...newState }));\n\n return (\n <ImperativeComponentContext.Provider\n value={useMemo(() => ({ id, eventsStore: eventsHandlers }), [id])}\n >\n <Component {...props} {...state} />\n </ImperativeComponentContext.Provider>\n );\n };\n\n return [actualMethods, fireEvent, ActualComponent];\n };\n}\n"],"names":[],"mappings":";;;;AAqDA,SAAwB,uBAGpB,GAAA;AACF,EAAA,OAAO,SAAS,mBAGd,CAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,GASA,EAAA;AAKA,IAAA,MAAM,YAAkD,EAAC,CAAA;AACzD,IAAA,MAAM,gBAAsC,EAAC,CAAA;AAC7C,IAAO,MAAA,CAAA,OAAA,CAAQ,OAAW,IAAA,EAAE,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAK,EAAA,MAAM,CAAM,KAAA;AACvD,MAAA,aAAA,CAAc,GAAoB,CAAA,GAAK,CAAC,EAAA,EAAA,GAAO,IAAc,KAAA;AAC3D,QAAA,IAAI,UAAU,EAAE,CAAA;AAAG,UAAA,MAAA,CAAO,SAAU,CAAA,EAAE,CAAG,EAAA,GAAG,IAAI,CAAA,CAAA;AAAA,aAC3C;AACH,UAAQ,OAAA,CAAA,IAAA,CAAK,CAAoC,iCAAA,EAAA,EAAE,CAAE,CAAA,CAAA,CAAA;AAAA,SACvD;AAAA,OACF,CAAA;AAAA,KACD,CAAA,CAAA;AAKD,IAAA,MAAM,iBAA0C,EAAC,CAAA;AAEjD,IAAA,MAAM,SAAgC,GAAA,CACpC,EACA,EAAA,EAAA,EACA,IACG,KAAA;AACH,MAAA,IAAI,eAAe,EAAE,CAAA;AACnB,QAAe,cAAA,CAAA,EAAE,CAAI,GAAA,EAAE,CAAG,EAAA,OAAA,CAAQ,CAAC,OAAY,KAAA,OAAA,CAAQ,EAAG,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA;AAC5D,QAAQ,OAAA,CAAA,IAAA,CAAK,CAAoC,iCAAA,EAAA,EAAE,CAAE,CAAA,CAAA,CAAA;AAAA,KAC5D,CAAA;AAMA,IAAA,MAAM,kBAAoD,CAAC;AAAA,MACzD,EAAA;AAAA,MACA,GAAG,KAAA;AAAA,KACC,KAAA;AACJ,MAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,SAAS,YAAqB,CAAA,CAAA;AAE7D,MAAA,SAAA,CAAU,EAAE,CAAA,GAAI,CAAC,QAAA,KACf,aAAc,CAAA,CAAC,OAAa,MAAA,EAAE,GAAG,OAAA,EAAS,GAAG,QAAA,EAAW,CAAA,CAAA,CAAA;AAE1D,MACE,uBAAA,GAAA;AAAA,QAAC,0BAA2B,CAAA,QAAA;AAAA,QAA3B;AAAA,UACC,KAAA,EAAO,OAAQ,CAAA,OAAO,EAAE,EAAA,EAAI,aAAa,cAAe,EAAA,CAAA,EAAI,CAAC,EAAE,CAAC,CAAA;AAAA,UAEhE,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA,EAAW,GAAG,KAAA,EAAQ,GAAG,KAAO,EAAA,CAAA;AAAA,SAAA;AAAA,OACnC,CAAA;AAAA,KAEJ,CAAA;AAEA,IAAO,OAAA,CAAC,aAAe,EAAA,SAAA,EAAW,eAAe,CAAA,CAAA;AAAA,GACnD,CAAA;AACF;;;;"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { TMap, TMethods, TMethodsMap } from './types.js';
|
|
3
|
-
import { TId } from '../types/misc.js';
|
|
4
|
-
|
|
5
|
-
type TSingleMethodsMap<Methods extends TMethods<any>, MethodsMap extends TMethodsMap<Methods>> = {
|
|
6
|
-
[Name in keyof MethodsMap]: MethodsMap[Name] extends (id: TId, ...args: infer Action) => unknown ? (...args: Action) => unknown : never;
|
|
7
|
-
};
|
|
8
|
-
declare function makeSingleImperativeComponent<ComponentProps extends TMap, Events extends TMap = TMap>(): <State extends TMap, Methods extends TMethods<State>>({ initialState, methods, Component, }: {
|
|
9
|
-
initialState?: State | undefined;
|
|
10
|
-
methods?: Methods | undefined;
|
|
11
|
-
Component: FC<Omit<ComponentProps, 'id'> & State>;
|
|
12
|
-
}) => [TSingleMethodsMap<Methods, TMethodsMap<Methods>>, <K extends keyof Events>(ev: K, args: Events[K]) => void, FC<ComponentProps>];
|
|
13
|
-
|
|
14
|
-
export { makeSingleImperativeComponent as default };
|
|
15
|
-
//# sourceMappingURL=makeSingleImperativeComponent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeSingleImperativeComponent.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import uniqueId from 'lodash-es/uniqueId';
|
|
3
|
-
import makeImperativeComponent from './makeImperativeComponent.js';
|
|
4
|
-
|
|
5
|
-
function makeSingleImperativeComponent() {
|
|
6
|
-
return function SingleImperativeComponent({
|
|
7
|
-
initialState,
|
|
8
|
-
methods,
|
|
9
|
-
Component
|
|
10
|
-
}) {
|
|
11
|
-
const id = uniqueId();
|
|
12
|
-
const [actualMethods, originalFireEvent, ImperativeComponent] = makeImperativeComponent()({
|
|
13
|
-
initialState,
|
|
14
|
-
methods,
|
|
15
|
-
Component
|
|
16
|
-
});
|
|
17
|
-
const fireEvent = (ev, args) => originalFireEvent(id, ev, args);
|
|
18
|
-
const newMethods = {};
|
|
19
|
-
Object.entries(actualMethods).forEach(([name, method]) => {
|
|
20
|
-
newMethods[name] = (...args) => method(id, ...args);
|
|
21
|
-
});
|
|
22
|
-
return [
|
|
23
|
-
newMethods,
|
|
24
|
-
fireEvent,
|
|
25
|
-
(props) => /* @__PURE__ */ jsx(ImperativeComponent, { ...props, id })
|
|
26
|
-
];
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export { makeSingleImperativeComponent as default };
|
|
31
|
-
//# sourceMappingURL=makeSingleImperativeComponent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeSingleImperativeComponent.js","sources":["../../src/imperative/makeSingleImperativeComponent.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { FC } from 'react';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { TMap, TMethods, TMethodsMap } from './types';\nimport makeImperativeComponent from './makeImperativeComponent';\nimport { TId } from '../types';\n\ntype TSingleMethodsMap<\n Methods extends TMethods<any>,\n MethodsMap extends TMethodsMap<Methods>,\n> = {\n [Name in keyof MethodsMap]: MethodsMap[Name] extends (\n id: TId,\n ...args: infer Action\n ) => unknown\n ? (...args: Action) => unknown\n : never;\n};\n\nexport default function makeSingleImperativeComponent<\n ComponentProps extends TMap,\n Events extends TMap = TMap,\n>() {\n return function SingleImperativeComponent<\n State extends TMap,\n Methods extends TMethods<State>,\n >({\n initialState,\n methods,\n Component,\n }: {\n initialState?: State;\n methods?: Methods;\n Component: FC<Omit<ComponentProps, 'id'> & State>;\n }): [\n TSingleMethodsMap<Methods, TMethodsMap<Methods>>,\n <K extends keyof Events>(ev: K, args: Events[K]) => void,\n FC<ComponentProps>,\n ] {\n const id = uniqueId();\n\n const [actualMethods, originalFireEvent, ImperativeComponent] =\n makeImperativeComponent<ComponentProps, Events>()({\n initialState,\n methods,\n Component,\n });\n\n const fireEvent: <K extends keyof Events>(\n ev: K,\n args: Events[K],\n ) => void = (ev, args) => originalFireEvent(id, ev, args);\n\n const newMethods: TSingleMethodsMap<\n Methods,\n TMethodsMap<Methods>\n > = {} as TSingleMethodsMap<Methods, TMethodsMap<Methods>>;\n\n Object.entries(actualMethods).forEach(([name, method]) => {\n (newMethods[name as keyof typeof newMethods] as any) = (...args: any) =>\n (method as (id: TId, ...args: any) => unknown)(id, ...args);\n });\n\n return [\n newMethods,\n fireEvent,\n (props: ComponentProps) => <ImperativeComponent {...props} id={id} />,\n ];\n };\n}\n"],"names":[],"mappings":";;;;AAoBA,SAAwB,6BAGpB,GAAA;AACF,EAAA,OAAO,SAAS,yBAGd,CAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,GASA,EAAA;AACA,IAAA,MAAM,KAAK,QAAS,EAAA,CAAA;AAEpB,IAAA,MAAM,CAAC,aAAe,EAAA,iBAAA,EAAmB,mBAAmB,CAAA,GAC1D,yBAAkD,CAAA;AAAA,MAChD,YAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,KACD,CAAA,CAAA;AAEH,IAAA,MAAM,YAGM,CAAC,EAAA,EAAI,SAAS,iBAAkB,CAAA,EAAA,EAAI,IAAI,IAAI,CAAA,CAAA;AAExD,IAAA,MAAM,aAGF,EAAC,CAAA;AAEL,IAAO,MAAA,CAAA,OAAA,CAAQ,aAAa,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,MAAM,CAAM,KAAA;AACxD,MAAC,UAAA,CAAW,IAA+B,CAAY,GAAA,CAAA,GAAI,SACxD,MAA8C,CAAA,EAAA,EAAI,GAAG,IAAI,CAAA,CAAA;AAAA,KAC7D,CAAA,CAAA;AAED,IAAO,OAAA;AAAA,MACL,UAAA;AAAA,MACA,SAAA;AAAA,MACA,CAAC,KAA0B,qBAAA,GAAA,CAAC,mBAAqB,EAAA,EAAA,GAAG,OAAO,EAAQ,EAAA,CAAA;AAAA,KACrE,CAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { TId } from '../types/misc.js';
|
|
2
|
-
|
|
3
|
-
type TMethod<CR> = CR extends (state: any, ...args: infer Action) => any ? (id: TId, ...args: Action) => unknown : () => unknown;
|
|
4
|
-
type TMethods<State extends TMap, K extends any[] = any[]> = Record<string, (setState: TStateManager<State>, ...args: K) => void>;
|
|
5
|
-
type TMethodsMap<OriginalMethods extends TMethods<any>> = {
|
|
6
|
-
[Name in keyof OriginalMethods]: TMethod<OriginalMethods[Name]>;
|
|
7
|
-
};
|
|
8
|
-
type TEventsMap<OriginalEvents extends TMap> = {
|
|
9
|
-
[Name in keyof OriginalEvents]: (args: OriginalEvents[Name]) => unknown;
|
|
10
|
-
};
|
|
11
|
-
type TEventsHandlers<OriginalEvents extends TMap> = Record<TId, {
|
|
12
|
-
[Name in keyof OriginalEvents]?: {
|
|
13
|
-
cb: (args?: OriginalEvents[Name]) => unknown;
|
|
14
|
-
uniqueHookId: string;
|
|
15
|
-
}[];
|
|
16
|
-
}>;
|
|
17
|
-
type TMap = Record<string, any>;
|
|
18
|
-
type TStateManager<State> = (newState: Partial<State>) => void;
|
|
19
|
-
type TFireEvent<Events extends TMap> = <K extends keyof Events>(id: TId, ev: K, args: Events[K] extends void ? undefined : Events[K]) => void;
|
|
20
|
-
|
|
21
|
-
export type { TEventsHandlers, TEventsMap, TFireEvent, TMap, TMethod, TMethods, TMethodsMap, TStateManager };
|
|
22
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/imperative/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/imperative/types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createContext } from 'react';\nimport { TId } from '../types';\n\nexport type TMethod<CR> = CR extends (state: any, ...args: infer Action) => any\n ? (id: TId, ...args: Action) => unknown\n : () => unknown;\n\nexport type TMethods<State extends TMap, K extends any[] = any[]> = Record<\n string,\n (setState: TStateManager<State>, ...args: K) => void\n>;\n\nexport type TMethodsMap<OriginalMethods extends TMethods<any>> = {\n [Name in keyof OriginalMethods]: TMethod<OriginalMethods[Name]>;\n};\n\nexport type TEventsMap<OriginalEvents extends TMap> = {\n [Name in keyof OriginalEvents]: (args: OriginalEvents[Name]) => unknown;\n};\n\nexport type TEventsHandlers<OriginalEvents extends TMap> = Record<\n TId,\n {\n [Name in keyof OriginalEvents]?: {\n cb: (args?: OriginalEvents[Name]) => unknown;\n uniqueHookId: string;\n }[];\n }\n>;\n\nexport type TMap = Record<string, any>;\n\nexport type TStateManager<State> = (newState: Partial<State>) => void;\n\nexport type TUseEvents<Events extends TMap> = (\n handlers: Partial<TEventsMap<Events>>,\n) => void;\n\nexport const ImperativeComponentContext = createContext<{\n id: TId;\n eventsStore: TEventsHandlers<any>;\n}>(\n {} as {\n id: TId;\n eventsStore: TEventsHandlers<any>;\n },\n);\n\nexport type TFireEvent<Events extends TMap> = <K extends keyof Events>(\n id: TId,\n ev: K,\n args: Events[K] extends void ? undefined : Events[K],\n) => void;\n"],"names":[],"mappings":";;AAuCO,MAAM,0BAA6B,GAAA,aAAA;AAAA,EAIxC,EAAC;AAIH;;;;"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TMap, TEventsMap } from './types.js';
|
|
2
|
-
|
|
3
|
-
declare const useImperativeComponentEvents: <Events extends TMap = TMap>(handlers: Partial<TEventsMap<Events>>) => string;
|
|
4
|
-
|
|
5
|
-
export { useImperativeComponentEvents as default };
|
|
6
|
-
//# sourceMappingURL=useImperativeComponentEvents.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useImperativeComponentEvents.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useMemo, useRef, useCallback, useEffect } from 'react';
|
|
2
|
-
import useImperativeComponentContext from './useImperativeIdentifierContext.js';
|
|
3
|
-
import uniqueId from 'lodash-es/uniqueId';
|
|
4
|
-
|
|
5
|
-
const useImperativeComponentEvents = (handlers) => {
|
|
6
|
-
const uniqueHookId = useMemo(() => uniqueId("hook"), []);
|
|
7
|
-
const { id, eventsStore } = useImperativeComponentContext();
|
|
8
|
-
const hasRegistered = useRef(false);
|
|
9
|
-
const registerEvents = useCallback(() => {
|
|
10
|
-
Object.entries(handlers).forEach(([name, callback]) => {
|
|
11
|
-
if (!eventsStore[id])
|
|
12
|
-
eventsStore[id] = {};
|
|
13
|
-
if (!eventsStore[id][name])
|
|
14
|
-
eventsStore[id][name] = [];
|
|
15
|
-
eventsStore[id][name]?.push({
|
|
16
|
-
cb: callback,
|
|
17
|
-
uniqueHookId
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
}, [eventsStore, handlers, id, uniqueHookId]);
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
registerEvents();
|
|
23
|
-
return () => {
|
|
24
|
-
hasRegistered.current = false;
|
|
25
|
-
Object.entries(handlers).forEach(([name]) => {
|
|
26
|
-
eventsStore[id][name] = (eventsStore[id][name] ?? []).filter((current) => current.uniqueHookId !== uniqueHookId);
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
}, [eventsStore, handlers, id, registerEvents, uniqueHookId]);
|
|
30
|
-
return uniqueHookId;
|
|
31
|
-
};
|
|
32
|
-
var useImperativeComponentEvents$1 = useImperativeComponentEvents;
|
|
33
|
-
|
|
34
|
-
export { useImperativeComponentEvents$1 as default };
|
|
35
|
-
//# sourceMappingURL=useImperativeComponentEvents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useImperativeComponentEvents.js","sources":["../../src/imperative/useImperativeComponentEvents.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { TEventsMap, TMap } from './types';\nimport useImperativeComponentContext from './useImperativeIdentifierContext';\nimport uniqueId from 'lodash-es/uniqueId';\n\nconst useImperativeComponentEvents = <Events extends TMap = TMap>(\n handlers: Partial<TEventsMap<Events>>,\n) => {\n const uniqueHookId = useMemo(() => uniqueId('hook'), []);\n\n const { id, eventsStore } = useImperativeComponentContext<Events>();\n const hasRegistered = useRef(false);\n\n const registerEvents = useCallback(() => {\n Object.entries(handlers).forEach(([name, callback]) => {\n if (!eventsStore[id]) eventsStore[id] = {};\n if (!eventsStore[id][name])\n eventsStore[id][name as keyof (typeof eventsStore)[typeof id]] = [];\n\n eventsStore[id][name as keyof (typeof eventsStore)[typeof id]]?.push({\n cb: callback as (args?: Events[keyof Events] | undefined) => unknown,\n uniqueHookId: uniqueHookId,\n });\n });\n }, [eventsStore, handlers, id, uniqueHookId]);\n\n useEffect(() => {\n registerEvents();\n return () => {\n hasRegistered.current = false;\n Object.entries(handlers).forEach(([name]) => {\n eventsStore[id][name as keyof (typeof eventsStore)[typeof id]] = (\n eventsStore[id][name as keyof (typeof eventsStore)[typeof id]] ?? []\n ).filter((current) => current.uniqueHookId !== uniqueHookId);\n });\n };\n }, [eventsStore, handlers, id, registerEvents, uniqueHookId]);\n\n return uniqueHookId;\n};\n\nexport default useImperativeComponentEvents;\n"],"names":[],"mappings":";;;;AAMA,MAAM,4BAAA,GAA+B,CACnC,QACG,KAAA;AACH,EAAA,MAAM,eAAe,OAAQ,CAAA,MAAM,SAAS,MAAM,CAAA,EAAG,EAAE,CAAA,CAAA;AAEvD,EAAA,MAAM,EAAE,EAAA,EAAI,WAAY,EAAA,GAAI,6BAAsC,EAAA,CAAA;AAClE,EAAM,MAAA,aAAA,GAAgB,OAAO,KAAK,CAAA,CAAA;AAElC,EAAM,MAAA,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAO,MAAA,CAAA,OAAA,CAAQ,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,QAAQ,CAAM,KAAA;AACrD,MAAI,IAAA,CAAC,YAAY,EAAE,CAAA;AAAG,QAAY,WAAA,CAAA,EAAE,IAAI,EAAC,CAAA;AACzC,MAAA,IAAI,CAAC,WAAA,CAAY,EAAE,CAAA,CAAE,IAAI,CAAA;AACvB,QAAA,WAAA,CAAY,EAAE,CAAA,CAAE,IAA6C,CAAA,GAAI,EAAC,CAAA;AAEpE,MAAA,WAAA,CAAY,EAAE,CAAA,CAAE,IAA6C,CAAA,EAAG,IAAK,CAAA;AAAA,QACnE,EAAI,EAAA,QAAA;AAAA,QACJ,YAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,KACA,CAAC,WAAA,EAAa,QAAU,EAAA,EAAA,EAAI,YAAY,CAAC,CAAA,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAe,cAAA,EAAA,CAAA;AACf,IAAA,OAAO,MAAM;AACX,MAAA,aAAA,CAAc,OAAU,GAAA,KAAA,CAAA;AACxB,MAAA,MAAA,CAAO,QAAQ,QAAQ,CAAA,CAAE,QAAQ,CAAC,CAAC,IAAI,CAAM,KAAA;AAC3C,QAAA,WAAA,CAAY,EAAE,CAAE,CAAA,IAA6C,CAC3D,GAAA,CAAA,WAAA,CAAY,EAAE,CAAE,CAAA,IAA6C,CAAK,IAAA,IAClE,MAAO,CAAA,CAAC,OAAY,KAAA,OAAA,CAAQ,iBAAiB,YAAY,CAAA,CAAA;AAAA,OAC5D,CAAA,CAAA;AAAA,KACH,CAAA;AAAA,KACC,CAAC,WAAA,EAAa,UAAU,EAAI,EAAA,cAAA,EAAgB,YAAY,CAAC,CAAA,CAAA;AAE5D,EAAO,OAAA,YAAA,CAAA;AACT,CAAA,CAAA;AAEA,qCAAe,4BAAA;;;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { TMap, TEventsHandlers } from './types.js';
|
|
2
|
-
import { TId } from '../types/misc.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Permite el uso de eventos en herederos directos o no del imperativeComponent
|
|
6
|
-
* más cercano.
|
|
7
|
-
*/
|
|
8
|
-
declare function useImperativeComponentContext<Events extends TMap = TMap>(): {
|
|
9
|
-
id: TId;
|
|
10
|
-
eventsStore: TEventsHandlers<Events>;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export { useImperativeComponentContext as default };
|
|
14
|
-
//# sourceMappingURL=useImperativeIdentifierContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useImperativeIdentifierContext.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useContext } from 'react';
|
|
2
|
-
import { ImperativeComponentContext } from './types.js';
|
|
3
|
-
|
|
4
|
-
function useImperativeComponentContext() {
|
|
5
|
-
const context = useContext(ImperativeComponentContext);
|
|
6
|
-
return context;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export { useImperativeComponentContext as default };
|
|
10
|
-
//# sourceMappingURL=useImperativeIdentifierContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useImperativeIdentifierContext.js","sources":["../../src/imperative/useImperativeIdentifierContext.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { ImperativeComponentContext, TEventsHandlers, TMap } from './types';\nimport { TId } from '../types';\n\n/**\n * Permite el uso de eventos en herederos directos o no del imperativeComponent\n * más cercano.\n */\nexport default function useImperativeComponentContext<\n Events extends TMap = TMap,\n>() {\n const context = useContext(ImperativeComponentContext) as {\n id: TId;\n eventsStore: TEventsHandlers<Events>;\n };\n\n return context;\n}\n"],"names":[],"mappings":";;;AAQA,SAAwB,6BAEpB,GAAA;AACF,EAAM,MAAA,OAAA,GAAU,WAAW,0BAA0B,CAAA,CAAA;AAKrD,EAAO,OAAA,OAAA,CAAA;AACT;;;;"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Da formato a un mensaje con tokens incrustados.
|
|
3
|
-
*
|
|
4
|
-
* @example
|
|
5
|
-
*
|
|
6
|
-
* // Dado el siguiente mensaje:
|
|
7
|
-
* var msg = 'El campo <TOK1> es inválido.';
|
|
8
|
-
*
|
|
9
|
-
* console.log(formatMessage(msg, {
|
|
10
|
-
* TOK1: 'nombre',
|
|
11
|
-
* }));
|
|
12
|
-
* // Imprime: El campo nombre es inválido.
|
|
13
|
-
*/
|
|
14
|
-
declare const formatMessage: (str: string, obj: {
|
|
15
|
-
[key: string]: string;
|
|
16
|
-
}) => string;
|
|
17
|
-
|
|
18
|
-
export { formatMessage };
|
|
19
|
-
//# sourceMappingURL=formatMessage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatMessage.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const formatMessage = (str, obj) => {
|
|
2
|
-
let newStr = str;
|
|
3
|
-
Object.entries(obj).forEach(([key, value]) => {
|
|
4
|
-
const placeHolder = `<${key}>`;
|
|
5
|
-
if (newStr?.includes(placeHolder)) {
|
|
6
|
-
newStr = newStr.replace(placeHolder, value ?? "");
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
|
-
return newStr;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export { formatMessage };
|
|
13
|
-
//# sourceMappingURL=formatMessage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatMessage.js","sources":["../../src/labels/formatMessage.ts"],"sourcesContent":["/**\n * Da formato a un mensaje con tokens incrustados.\n *\n * @example\n *\n * // Dado el siguiente mensaje:\n * var msg = 'El campo <TOK1> es inválido.';\n *\n * console.log(formatMessage(msg, {\n * TOK1: 'nombre',\n * }));\n * // Imprime: El campo nombre es inválido.\n */\nexport const formatMessage = (\n str: string,\n obj: { [key: string]: string },\n): string => {\n let newStr = str;\n Object.entries(obj).forEach(([key, value]) => {\n const placeHolder = `<${key}>`;\n\n if (newStr?.includes(placeHolder)) {\n newStr = newStr.replace(placeHolder, value ?? '');\n }\n });\n return newStr;\n};\n"],"names":[],"mappings":"AAaa,MAAA,aAAA,GAAgB,CAC3B,GAAA,EACA,GACW,KAAA;AACX,EAAA,IAAI,MAAS,GAAA,GAAA,CAAA;AACb,EAAO,MAAA,CAAA,OAAA,CAAQ,GAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAC5C,IAAM,MAAA,WAAA,GAAc,IAAI,GAAG,CAAA,CAAA,CAAA,CAAA;AAE3B,IAAI,IAAA,MAAA,EAAQ,QAAS,CAAA,WAAW,CAAG,EAAA;AACjC,MAAA,MAAA,GAAS,MAAO,CAAA,OAAA,CAAQ,WAAa,EAAA,KAAA,IAAS,EAAE,CAAA,CAAA;AAAA,KAClD;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dado un nombre de etiqueta, devuelve el texto que esa etiqueta contiene en
|
|
3
|
-
* el idioma actual. En este momento, lo único que hace realmente esta función
|
|
4
|
-
* es devolver la variable del window con el mismo nombre que se está
|
|
5
|
-
* pidiendo.
|
|
6
|
-
*
|
|
7
|
-
* La idea de implementar esta función, es que en un futuro la fuente de la
|
|
8
|
-
* que provienen las labels pueda ser más diversa.
|
|
9
|
-
*
|
|
10
|
-
* Permite el pasaje de tokens para el reemplazo automático de los mismos.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
*
|
|
14
|
-
* // Suponemos la etiqueta msgUsu = { text: 'Usuario <TOK1>', title: 'Usuario <TOK1>' }
|
|
15
|
-
*
|
|
16
|
-
* getLabel('msgUsu' , {
|
|
17
|
-
* text: {
|
|
18
|
-
* TOK1: 'admin',
|
|
19
|
-
* },
|
|
20
|
-
* title: {
|
|
21
|
-
* TOK1: 'no disponible',
|
|
22
|
-
* }
|
|
23
|
-
* })
|
|
24
|
-
*/
|
|
25
|
-
declare function getLabel(name: string, replaceTokens?: {
|
|
26
|
-
text?: Record<string, string>;
|
|
27
|
-
title?: Record<string, string>;
|
|
28
|
-
}): {
|
|
29
|
-
text: string;
|
|
30
|
-
tooltip: string;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export { getLabel };
|
|
34
|
-
//# sourceMappingURL=getLabel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getLabel.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/labels/getLabel.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;;;;"}
|
package/dist/number/index.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/number/index.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
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
|
package/dist/number/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;;;;"}
|
|
@@ -1,23 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getValueByPath.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,19 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;;;;"}
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setValueByPath.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|