@inseefr/lunatic 3.4.10-rc.1 → 3.4.11-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/components/Loop/Loop.js +27 -7
- package/components/Loop/Loop.js.map +1 -1
- package/components/LunaticComponents.d.ts +10 -1
- package/components/LunaticComponents.js +3 -1
- package/components/LunaticComponents.js.map +1 -1
- package/components/RosterForLoop/RosterForLoop.js +37 -8
- package/components/RosterForLoop/RosterForLoop.js.map +1 -1
- package/components/Sequence/Sequence.d.ts +1 -1
- package/components/Subsequence/Subsequence.d.ts +1 -1
- package/components/library.d.ts +2 -2
- package/components/shared/HOC/slottableComponent.d.ts +3 -3
- package/components/shared/HOC/slottableComponent.js +2 -2
- package/esm/components/Loop/Loop.js +27 -7
- package/esm/components/Loop/Loop.js.map +1 -1
- package/esm/components/LunaticComponents.d.ts +10 -1
- package/esm/components/LunaticComponents.js +3 -1
- package/esm/components/LunaticComponents.js.map +1 -1
- package/esm/components/RosterForLoop/RosterForLoop.js +34 -8
- package/esm/components/RosterForLoop/RosterForLoop.js.map +1 -1
- package/esm/components/Sequence/Sequence.d.ts +1 -1
- package/esm/components/Subsequence/Subsequence.d.ts +1 -1
- package/esm/components/library.d.ts +2 -2
- package/esm/components/shared/HOC/slottableComponent.d.ts +3 -3
- package/esm/components/shared/HOC/slottableComponent.js +2 -2
- package/esm/i18n/dictionary.d.ts +8 -0
- package/esm/i18n/dictionary.js +5 -0
- package/esm/i18n/dictionary.js.map +1 -1
- package/esm/i18n/index.d.ts +1 -1
- package/esm/type.source.js +0 -1
- package/esm/type.source.js.map +1 -1
- package/esm/use-lunatic/commons/compile-controls.d.ts +1 -1
- package/esm/use-lunatic/commons/compile-controls.js +4 -3
- package/esm/use-lunatic/commons/compile-controls.js.map +1 -1
- package/esm/use-lunatic/commons/variables/behaviours/resizing-behaviour.js +23 -7
- package/esm/use-lunatic/commons/variables/behaviours/resizing-behaviour.js.map +1 -1
- package/esm/use-lunatic/commons/variables/lunatic-variables-store.d.ts +19 -1
- package/esm/use-lunatic/commons/variables/lunatic-variables-store.js +6 -6
- package/esm/use-lunatic/commons/variables/lunatic-variables-store.js.map +1 -1
- package/esm/use-lunatic/commons/variables/lunatic-variables-store.spec.js +66 -1
- package/esm/use-lunatic/commons/variables/lunatic-variables-store.spec.js.map +1 -1
- package/esm/use-lunatic/hooks/use-loop-variables.d.ts +1 -1
- package/esm/use-lunatic/hooks/use-loop-variables.js +1 -1
- package/esm/use-lunatic/hooks/use-page-has-response.d.ts +1 -1
- package/esm/use-lunatic/hooks/use-page-has-response.js +6 -6
- package/esm/use-lunatic/hooks/useOverview.d.ts +1 -1
- package/esm/use-lunatic/hooks/useOverview.js +4 -4
- package/esm/use-lunatic/hooks/useWarnDepChange.d.ts +3 -2
- package/esm/use-lunatic/hooks/useWarnDepChange.js +3 -2
- package/esm/use-lunatic/hooks/useWarnDepChange.js.map +1 -1
- package/esm/use-lunatic/lunatic-context.d.ts +5 -2
- package/esm/use-lunatic/lunatic-context.js +5 -2
- package/esm/use-lunatic/lunatic-context.js.map +1 -1
- package/esm/use-lunatic/props/getComponentTypeProps.d.ts +4 -4
- package/esm/use-lunatic/reducer/commons/index.d.ts +0 -1
- package/esm/use-lunatic/reducer/commons/index.js +0 -1
- package/esm/use-lunatic/reducer/commons/index.js.map +1 -1
- package/esm/use-lunatic/type.d.ts +153 -2
- package/esm/use-lunatic/use-lunatic.d.ts +13 -36
- package/esm/use-lunatic/use-lunatic.js +13 -2
- package/esm/use-lunatic/use-lunatic.js.map +1 -1
- package/esm/utils/array.d.ts +4 -0
- package/esm/utils/array.js +15 -2
- package/esm/utils/array.js.map +1 -1
- package/esm/utils/array.spec.js +12 -1
- package/esm/utils/array.spec.js.map +1 -1
- package/i18n/dictionary.d.ts +8 -0
- package/i18n/dictionary.js +5 -0
- package/i18n/dictionary.js.map +1 -1
- package/i18n/index.d.ts +1 -1
- package/package.json +1 -8
- package/src/components/Loop/Loop.tsx +42 -12
- package/src/components/LunaticComponents.tsx +10 -8
- package/src/components/RosterForLoop/RosterForLoop.tsx +42 -2
- package/src/components/RosterForLoop/__snapshots__/RosterForLoop.spec.tsx.snap +18 -0
- package/src/components/shared/HOC/slottableComponent.tsx +3 -3
- package/src/i18n/dictionary.ts +5 -0
- package/src/stories/pairwise/data.json +1 -1
- package/src/stories/pairwise/source.json +3 -1
- package/src/type.source.ts +0 -1
- package/src/use-lunatic/__snapshots__/use-lunatic.test.ts.snap +0 -323
- package/src/use-lunatic/commons/compile-controls.ts +4 -3
- package/src/use-lunatic/commons/variables/behaviours/resizing-behaviour.ts +35 -10
- package/src/use-lunatic/commons/variables/lunatic-variables-store.spec.ts +68 -1
- package/src/use-lunatic/commons/variables/lunatic-variables-store.ts +21 -19
- package/src/use-lunatic/hooks/use-loop-variables.ts +1 -1
- package/src/use-lunatic/hooks/use-page-has-response.ts +6 -6
- package/src/use-lunatic/hooks/useOverview.ts +4 -4
- package/src/use-lunatic/hooks/useWarnDepChange.ts +3 -2
- package/src/use-lunatic/lunatic-context.tsx +5 -2
- package/src/use-lunatic/reducer/commons/index.ts +0 -1
- package/src/use-lunatic/type.ts +154 -17
- package/src/use-lunatic/use-lunatic.ts +11 -2
- package/src/utils/array.spec.ts +18 -1
- package/src/utils/array.ts +21 -3
- package/tsconfig.build.tsbuildinfo +1 -1
- package/type.source.js +0 -1
- package/type.source.js.map +1 -1
- package/use-lunatic/commons/compile-controls.d.ts +1 -1
- package/use-lunatic/commons/compile-controls.js +4 -3
- package/use-lunatic/commons/compile-controls.js.map +1 -1
- package/use-lunatic/commons/variables/behaviours/resizing-behaviour.js +22 -6
- package/use-lunatic/commons/variables/behaviours/resizing-behaviour.js.map +1 -1
- package/use-lunatic/commons/variables/lunatic-variables-store.d.ts +19 -1
- package/use-lunatic/commons/variables/lunatic-variables-store.js +13 -13
- package/use-lunatic/commons/variables/lunatic-variables-store.js.map +1 -1
- package/use-lunatic/commons/variables/lunatic-variables-store.spec.js +66 -1
- package/use-lunatic/commons/variables/lunatic-variables-store.spec.js.map +1 -1
- package/use-lunatic/hooks/use-loop-variables.d.ts +1 -1
- package/use-lunatic/hooks/use-loop-variables.js +1 -1
- package/use-lunatic/hooks/use-page-has-response.d.ts +1 -1
- package/use-lunatic/hooks/use-page-has-response.js +6 -6
- package/use-lunatic/hooks/useOverview.d.ts +1 -1
- package/use-lunatic/hooks/useOverview.js +4 -4
- package/use-lunatic/hooks/useWarnDepChange.d.ts +3 -2
- package/use-lunatic/hooks/useWarnDepChange.js +3 -2
- package/use-lunatic/hooks/useWarnDepChange.js.map +1 -1
- package/use-lunatic/lunatic-context.d.ts +5 -2
- package/use-lunatic/lunatic-context.js +5 -2
- package/use-lunatic/lunatic-context.js.map +1 -1
- package/use-lunatic/props/getComponentTypeProps.d.ts +4 -4
- package/use-lunatic/reducer/commons/index.d.ts +0 -1
- package/use-lunatic/reducer/commons/index.js +0 -6
- package/use-lunatic/reducer/commons/index.js.map +1 -1
- package/use-lunatic/type.d.ts +153 -2
- package/use-lunatic/use-lunatic.d.ts +13 -36
- package/use-lunatic/use-lunatic.js +13 -2
- package/use-lunatic/use-lunatic.js.map +1 -1
- package/utils/array.d.ts +4 -0
- package/utils/array.js +16 -2
- package/utils/array.js.map +1 -1
- package/utils/array.spec.js +11 -0
- package/utils/array.spec.js.map +1 -1
- package/esm/use-lunatic/reducer/commons/resize-array-variable.d.ts +0 -5
- package/esm/use-lunatic/reducer/commons/resize-array-variable.js +0 -21
- package/esm/use-lunatic/reducer/commons/resize-array-variable.js.map +0 -1
- package/src/use-lunatic/reducer/commons/resize-array-variable.ts +0 -28
- package/use-lunatic/reducer/commons/resize-array-variable.d.ts +0 -5
- package/use-lunatic/reducer/commons/resize-array-variable.js +0 -23
- package/use-lunatic/reducer/commons/resize-array-variable.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { getPageTag, pageTagComparator } from '../commons/page-tag';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Build a filled overview everytime the deps change.
|
|
5
5
|
*/
|
|
6
6
|
export const useOverview = ({ overview, executeExpression, pager, }, deps) => {
|
|
7
7
|
return useMemo(() => interpretOverview(overview, executeExpression, pager),
|
|
@@ -9,7 +9,7 @@ export const useOverview = ({ overview, executeExpression, pager, }, deps) => {
|
|
|
9
9
|
[...deps, overview]);
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
* Use
|
|
12
|
+
* Use Lunatic data to interpret the static overview (calculated on init) with the real data.
|
|
13
13
|
*/
|
|
14
14
|
const interpretOverview = (overviewItems, executeExpression, pager) => {
|
|
15
15
|
// Flat structure of the overview
|
|
@@ -34,7 +34,7 @@ const interpretOverview = (overviewItems, executeExpression, pager) => {
|
|
|
34
34
|
return rootItems;
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
|
-
* Interpret expression inside an item (label & condition)
|
|
37
|
+
* Interpret expression inside an item (label & condition).
|
|
38
38
|
*/
|
|
39
39
|
const interpretOverviewItem = (items, item, executeExpression, pager, iteration) => {
|
|
40
40
|
var _a;
|
|
@@ -74,7 +74,7 @@ const interpretOverviewItem = (items, item, executeExpression, pager, iteration)
|
|
|
74
74
|
];
|
|
75
75
|
};
|
|
76
76
|
/**
|
|
77
|
-
* Set the current property in the correct overview item
|
|
77
|
+
* Set the current property in the correct overview item.
|
|
78
78
|
*/
|
|
79
79
|
const applyCurrentPage = (items, currentPage) => {
|
|
80
80
|
// Look for the last item where page <= currentPage
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { LunaticLogger } from '../logger/type';
|
|
2
2
|
/**
|
|
3
|
-
* Log a warning when the variable change
|
|
4
|
-
*
|
|
3
|
+
* Log a warning when the variable change.
|
|
4
|
+
*
|
|
5
|
+
* Ensure that we received a memoized value and help debug.
|
|
5
6
|
*/
|
|
6
7
|
export declare function useWarnDepChange(variable: unknown, message: string, logger: LunaticLogger): void;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react';
|
|
2
2
|
import { useRefSync } from '../../hooks/useRefSync';
|
|
3
3
|
/**
|
|
4
|
-
* Log a warning when the variable change
|
|
5
|
-
*
|
|
4
|
+
* Log a warning when the variable change.
|
|
5
|
+
*
|
|
6
|
+
* Ensure that we received a memoized value and help debug.
|
|
6
7
|
*/
|
|
7
8
|
export function useWarnDepChange(variable, message, logger) {
|
|
8
9
|
const firstRender = useRef(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWarnDepChange.js","sourceRoot":"","sources":["../../../src/use-lunatic/hooks/useWarnDepChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"useWarnDepChange.js","sourceRoot":"","sources":["../../../src/use-lunatic/hooks/useWarnDepChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,QAAiB,EACjB,OAAe,EACf,MAAqB;IAErB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type FunctionComponent, type PropsWithChildren } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
2
|
+
/**
|
|
3
|
+
* Provide `missing`, `missingStrategy`, `shortcut` and `missingShortcut`,
|
|
4
|
+
* `dontKnowButton`, `refusedButton` to `Missing` component to manage
|
|
5
|
+
* non-response buttons and shortcut.
|
|
6
|
+
*/
|
|
4
7
|
export declare const useLunaticMissing: () => {
|
|
5
8
|
missing: boolean;
|
|
6
9
|
missingStrategy: () => void;
|
|
@@ -11,8 +11,11 @@ const LunaticContext = createContext({
|
|
|
11
11
|
refusedButton: D.RF,
|
|
12
12
|
componentsOptions: { detailAlwaysDisplayed: false },
|
|
13
13
|
});
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
14
|
+
/**
|
|
15
|
+
* Provide `missing`, `missingStrategy`, `shortcut` and `missingShortcut`,
|
|
16
|
+
* `dontKnowButton`, `refusedButton` to `Missing` component to manage
|
|
17
|
+
* non-response buttons and shortcut.
|
|
18
|
+
*/
|
|
16
19
|
export const useLunaticMissing = () => {
|
|
17
20
|
const { missing, missingStrategy, shortcut, missingShortcut, dontKnowButton, refusedButton, } = useContext(LunaticContext);
|
|
18
21
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lunatic-context.js","sourceRoot":"","sources":["../../src/use-lunatic/lunatic-context.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGN,aAAa,EACb,UAAU,GACV,MAAM,OAAO,CAAC;AAEf,OAAO,CAAC,MAAM,eAAe,CAAC;AAE9B,MAAM,cAAc,GAAG,aAAa,CAAC;IACpC,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;IACzB,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAC9C,cAAc,EAAE,CAAC,CAAC,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,EAAE;IACnB,iBAAiB,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE;CACnD,CAAC,CAAC;AACH;
|
|
1
|
+
{"version":3,"file":"lunatic-context.js","sourceRoot":"","sources":["../../src/use-lunatic/lunatic-context.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGN,aAAa,EACb,UAAU,GACV,MAAM,OAAO,CAAC;AAEf,OAAO,CAAC,MAAM,eAAe,CAAC;AAE9B,MAAM,cAAc,GAAG,aAAa,CAAC;IACpC,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;IACzB,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAC9C,cAAc,EAAE,CAAC,CAAC,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,EAAE;IACnB,iBAAiB,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE;CACnD,CAAC,CAAC;AACH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACrC,MAAM,EACL,OAAO,EACP,eAAe,EACf,QAAQ,EACR,eAAe,EACf,cAAc,EACd,aAAa,GACb,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC/B,OAAO;QACN,OAAO;QACP,eAAe;QACf,QAAQ;QACR,eAAe;QACf,cAAc;QACd,aAAa;KACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,EAAE;IAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACxC,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,EACrC,UAAU,EACV,OAAO,EACP,eAAe,EACf,QAAQ,EACR,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,GAUjB;IACA,MAAM,KAAK,GAAG;QACb,UAAU;QACV,OAAO;QACP,eAAe;QACf,QAAQ;QACR,eAAe;QACf,cAAc;QACd,aAAa;QACb,iBAAiB;KACjB,CAAC;IACF,OAAO,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAqB;QACvD,OAAO,CACN,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACnC,QAAQ,GACgB,CAC1B,CAAC;IACH,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -35,11 +35,11 @@ export declare function getComponentTypeProps(component: DeepTranslateExpression
|
|
|
35
35
|
componentType?: "Textarea";
|
|
36
36
|
} & {
|
|
37
37
|
conditionFilter?: boolean;
|
|
38
|
-
}) | (Pick<import("../../components/type").LunaticBaseProps<string>, "
|
|
38
|
+
}) | (Pick<import("../../components/type").LunaticBaseProps<string>, "id" | "label" | "style" | "declarations" | "description"> & import("../..").LunaticExtraProps & {
|
|
39
39
|
componentType?: "Sequence";
|
|
40
40
|
} & {
|
|
41
41
|
conditionFilter?: boolean;
|
|
42
|
-
}) | (Pick<import("../../components/type").LunaticBaseProps<string>, "
|
|
42
|
+
}) | (Pick<import("../../components/type").LunaticBaseProps<string>, "id" | "label" | "declarations" | "description"> & import("../..").LunaticExtraProps & {
|
|
43
43
|
componentType?: "Subsequence";
|
|
44
44
|
} & {
|
|
45
45
|
conditionFilter?: boolean;
|
|
@@ -184,7 +184,7 @@ export declare function getComponentTypeProps(component: DeepTranslateExpression
|
|
|
184
184
|
componentType?: "Dropdown";
|
|
185
185
|
} & {
|
|
186
186
|
conditionFilter?: boolean;
|
|
187
|
-
}) | (Pick<import("../../components/type").LunaticBaseProps<unknown>, "
|
|
187
|
+
}) | (Pick<import("../../components/type").LunaticBaseProps<unknown>, "id" | "label" | "declarations" | "description" | "propsTransformer" | "errors" | "disabled" | "readOnly"> & import("../..").LunaticExtraProps & {
|
|
188
188
|
components: import("../..").LunaticComponentProps[];
|
|
189
189
|
componentType?: "Question";
|
|
190
190
|
iteration?: number;
|
|
@@ -279,7 +279,7 @@ export declare function getComponentTypeProps(component: DeepTranslateExpression
|
|
|
279
279
|
componentType?: "Switch";
|
|
280
280
|
} & {
|
|
281
281
|
conditionFilter?: boolean;
|
|
282
|
-
}) | (Pick<import("../../components/type").LunaticBaseProps<string>, "
|
|
282
|
+
}) | (Pick<import("../../components/type").LunaticBaseProps<string>, "id" | "label"> & import("../..").LunaticExtraProps & {
|
|
283
283
|
componentType?: "FilterDescription";
|
|
284
284
|
} & {
|
|
285
285
|
conditionFilter?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/use-lunatic/reducer/commons/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/use-lunatic/reducer/commons/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
@@ -22,18 +22,32 @@ export type LunaticOverviewItem = {
|
|
|
22
22
|
iterations?: LunaticExpression;
|
|
23
23
|
};
|
|
24
24
|
export type LunaticSuggester = SuggesterDefinition;
|
|
25
|
+
/** Survey data. */
|
|
25
26
|
export type LunaticData = Partial<Record<Exclude<VariableType, 'COLLECTED'>, Record<string, unknown>> & {
|
|
26
27
|
COLLECTED: Record<string, LunaticCollectedValue>;
|
|
27
28
|
}>;
|
|
28
29
|
export type LunaticValues = {
|
|
29
30
|
[variableName: string]: unknown;
|
|
30
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Errors returned by `useLunatic` hook when an input check is made with their
|
|
34
|
+
* id, criticity, type and the message to display to the user.
|
|
35
|
+
*/
|
|
31
36
|
export type LunaticError = Pick<ControlDefinition, 'id' | 'criticality' | 'typeOfControl'> & {
|
|
32
37
|
errorMessage: ReactNode;
|
|
33
38
|
};
|
|
34
39
|
export type VariableType = 'COLLECTED' | 'EXTERNAL' | 'CALCULATED';
|
|
35
40
|
export type LunaticExpression = VTLExpression | VTLScalarExpression;
|
|
41
|
+
/**
|
|
42
|
+
* Page numerotation.
|
|
43
|
+
*
|
|
44
|
+
* String representing a location in the survey. It has one of the following
|
|
45
|
+
* format:
|
|
46
|
+
* - [page].[sous-page]#[iteration], when we are in a loop or a roundabount
|
|
47
|
+
* - [page]
|
|
48
|
+
*/
|
|
36
49
|
export type PageTag = `${number}.${number}#${number}` | `${number}`;
|
|
50
|
+
/** Variables provided to Lunatic through the source and used internally in a store. */
|
|
37
51
|
export type LunaticVariable = Variable;
|
|
38
52
|
export type LunaticCollectedValue = Partial<{
|
|
39
53
|
COLLECTED: unknown;
|
|
@@ -52,15 +66,51 @@ export type LunaticStateVariable = {
|
|
|
52
66
|
CalculatedLinked?: LunaticVariable[];
|
|
53
67
|
};
|
|
54
68
|
}[LunaticVariable['variableType']];
|
|
69
|
+
/**
|
|
70
|
+
* Contains informations about navigation (last page reached, number of pages, subpages, etc.).
|
|
71
|
+
*
|
|
72
|
+
* This is the object used internally to determine where we are in the navigation.
|
|
73
|
+
*
|
|
74
|
+
* When we are in a loop, the pager will have additional properties.
|
|
75
|
+
*/
|
|
55
76
|
export type LunaticPager = {
|
|
77
|
+
/** Last page reached. */
|
|
56
78
|
lastReachedPage?: PageTag;
|
|
79
|
+
/** Last page of the survey. */
|
|
57
80
|
maxPage: number;
|
|
58
|
-
|
|
81
|
+
/** Current page. */
|
|
59
82
|
page: number;
|
|
83
|
+
/**
|
|
84
|
+
* Current subpage.
|
|
85
|
+
*
|
|
86
|
+
* Only in a loop.
|
|
87
|
+
*/
|
|
60
88
|
subPage?: number;
|
|
89
|
+
/**
|
|
90
|
+
* Number of pages in a loop.
|
|
91
|
+
*
|
|
92
|
+
* Only in a loop.
|
|
93
|
+
*/
|
|
94
|
+
nbSubPages?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Iteration index (starts at 0).
|
|
97
|
+
*
|
|
98
|
+
* Only in a loop.
|
|
99
|
+
*/
|
|
61
100
|
iteration?: number;
|
|
101
|
+
/**
|
|
102
|
+
* Number of iterations (i.e. number of people).
|
|
103
|
+
*
|
|
104
|
+
* Only in a loop.
|
|
105
|
+
*/
|
|
62
106
|
nbIterations?: number;
|
|
107
|
+
/**
|
|
108
|
+
* Only in a loop.
|
|
109
|
+
*/
|
|
63
110
|
shallowIteration?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Only in a loop.
|
|
113
|
+
*/
|
|
64
114
|
linksIterations?: number[];
|
|
65
115
|
};
|
|
66
116
|
export type LunaticReducerState = {
|
|
@@ -79,17 +129,22 @@ export type LunaticReducerState = {
|
|
|
79
129
|
components: LunaticSource['components'];
|
|
80
130
|
isLoop: true;
|
|
81
131
|
iterations: VTLScalarExpression;
|
|
132
|
+
/** Variables affecting this loop. */
|
|
82
133
|
loopDependencies: string[];
|
|
134
|
+
/** List of child pages (ex: ['20.1', '20.2'] */
|
|
83
135
|
subPages: string[];
|
|
84
136
|
};
|
|
85
137
|
};
|
|
138
|
+
/** Run an expression using the value from the state. */
|
|
86
139
|
executeExpression: <T = unknown>(expression: VTLExpression, args?: {
|
|
87
140
|
iteration?: number | number[];
|
|
141
|
+
/** @deprecated */
|
|
88
142
|
bindingDependencies?: string[];
|
|
89
143
|
deps?: string[];
|
|
90
144
|
}) => T;
|
|
91
145
|
isInLoop: boolean;
|
|
92
146
|
updatedAt: number;
|
|
147
|
+
/** Update the value collected for the variable. */
|
|
93
148
|
updateBindings: (variableName: string, value: unknown, options: {
|
|
94
149
|
iteration?: number[];
|
|
95
150
|
}) => unknown;
|
|
@@ -97,77 +152,173 @@ export type LunaticReducerState = {
|
|
|
97
152
|
disableFilters?: boolean;
|
|
98
153
|
};
|
|
99
154
|
};
|
|
155
|
+
/** Specific behaviour options defined in the {@link useLunatic} hook. */
|
|
100
156
|
export type LunaticOptions = {
|
|
157
|
+
/** Ignore filters. (default: `false`) */
|
|
101
158
|
disableFilters?: boolean;
|
|
159
|
+
/** Enable VTL and Markdown support. */
|
|
102
160
|
features?: ('MD' | 'VTL')[];
|
|
103
161
|
preferences?: ['COLLECTED'];
|
|
162
|
+
/** Key in which the data is saved. (default: `"COLLECTED"`) */
|
|
104
163
|
savingType?: 'COLLECTED';
|
|
164
|
+
/** Function called when a variable is changed by a user input (must be memoized as it is used in dependency of a `useCallback` by the library). */
|
|
105
165
|
onChange?: LunaticChangesHandler;
|
|
106
166
|
onVariableChange?: (event: LunaticVariablesStoreEvents['change']) => void;
|
|
167
|
+
/**
|
|
168
|
+
* Not yet implemented.
|
|
169
|
+
*
|
|
170
|
+
* Enable management mode which allow to handle multiple states of the same variable (used by recovery positions).
|
|
171
|
+
*
|
|
172
|
+
* The administrator can switch between `COLLECTED`, `EDITED`, `INPUTTED` modes. (default: `false`)
|
|
173
|
+
*/
|
|
107
174
|
management?: boolean;
|
|
175
|
+
/** Enable keyboard shortcuts for checkboxes, radio buttons and missing buttons (default: `false`). */
|
|
108
176
|
shortcut?: boolean;
|
|
177
|
+
/** Starting page at launch. (default: `"1"`) */
|
|
109
178
|
initialPage?: PageTag;
|
|
179
|
+
/** Furthest page the user ever reached. */
|
|
110
180
|
lastReachedPage?: PageTag;
|
|
181
|
+
/** Enable the preemptive loading of suggester data on Lunatic initialization. (default: `false`) */
|
|
111
182
|
autoSuggesterLoading?: boolean;
|
|
183
|
+
/** Function called to fetch nomenclatures used by the suggesters. */
|
|
112
184
|
getReferentiel?: (name: string) => Promise<Array<IndexEntry>>;
|
|
185
|
+
/** Enable data controls (form validation). (default: `false`) */
|
|
113
186
|
activeControls?: boolean;
|
|
187
|
+
/** Enable overview system. (default: `false`) */
|
|
114
188
|
withOverview?: boolean;
|
|
189
|
+
/** Enable missing system. (default: `false`) */
|
|
115
190
|
missing?: boolean;
|
|
191
|
+
/** Function triggered when a missing button is clicked. */
|
|
116
192
|
missingStrategy?: () => void;
|
|
193
|
+
/** Keyboard shortcut that triggers missing buttons. */
|
|
117
194
|
missingShortcut?: {
|
|
118
195
|
dontKnow: string;
|
|
119
196
|
refused: string;
|
|
120
197
|
};
|
|
198
|
+
/** "Don't know" button label. */
|
|
121
199
|
dontKnowButton?: string;
|
|
200
|
+
/** "Refused" button label. */
|
|
122
201
|
refusedButton?: string;
|
|
202
|
+
/** Enable change tracking to keep a track of what variable changed (allow using getChangedData()). (default: `false`) */
|
|
123
203
|
trackChanges?: boolean;
|
|
124
204
|
logger?: LunaticLogger;
|
|
125
205
|
componentsOptions?: {
|
|
126
206
|
detailAlwaysDisplayed?: boolean;
|
|
127
207
|
};
|
|
128
208
|
};
|
|
209
|
+
/**
|
|
210
|
+
* Return type of {@link useLunatic}.
|
|
211
|
+
*
|
|
212
|
+
* Allow to operate the survey.
|
|
213
|
+
*/
|
|
129
214
|
export type LunaticState = {
|
|
215
|
+
/** Current pager. */
|
|
130
216
|
pager: LunaticPager;
|
|
131
217
|
overview: InterpretedLunaticOverviewItem[];
|
|
218
|
+
/** Current page numerotation. */
|
|
132
219
|
pageTag: PageTag;
|
|
220
|
+
/** Date of the last `handleChange` function call. */
|
|
133
221
|
updatedAt: number;
|
|
222
|
+
/** Necessary component that must wraps `LunaticComponents` to make the library works. */
|
|
134
223
|
Provider: FunctionComponent<PropsWithChildren>;
|
|
224
|
+
/** Whether or not we're in a loop. */
|
|
135
225
|
isInLoop: boolean;
|
|
226
|
+
/** Current loop's variables. */
|
|
136
227
|
loopVariables: string[];
|
|
228
|
+
/** Whether or not we're on the survey first page. */
|
|
137
229
|
isFirstPage: boolean;
|
|
230
|
+
/** Whether or not we're on the survey last page (we reached `maxPage`). */
|
|
138
231
|
isLastPage: boolean;
|
|
232
|
+
/** Errors in the survey. */
|
|
139
233
|
errors?: {
|
|
140
234
|
[page: string]: {
|
|
141
235
|
[id: string]: LunaticError[];
|
|
142
236
|
};
|
|
143
237
|
};
|
|
238
|
+
/** Errors in the current page / iteration. */
|
|
144
239
|
currentErrors?: {
|
|
145
240
|
[id: string]: LunaticError[];
|
|
146
241
|
};
|
|
242
|
+
/** Errors in modal. */
|
|
147
243
|
modalErrors?: Record<string, LunaticError[]>;
|
|
244
|
+
/** Navigate to a specific page. */
|
|
148
245
|
goToPage: (page: {
|
|
149
246
|
page: PageTag | number;
|
|
150
247
|
iteration?: number;
|
|
151
248
|
nbIterations?: number;
|
|
152
249
|
subPage?: number;
|
|
153
250
|
}) => void;
|
|
251
|
+
/** Navigate to the next page. */
|
|
154
252
|
goNextPage: () => void;
|
|
253
|
+
/** Navigate to the previous page. */
|
|
155
254
|
goPreviousPage: () => void;
|
|
255
|
+
/** Allow to fetch controls. */
|
|
156
256
|
compileControls: () => {
|
|
157
257
|
currentErrors: Record<string, LunaticError[]> | undefined;
|
|
158
258
|
isCritical: boolean;
|
|
159
259
|
};
|
|
260
|
+
/**
|
|
261
|
+
* Components to display in the current page.
|
|
262
|
+
*
|
|
263
|
+
* Return an array with the various components' properties. The orchestrator
|
|
264
|
+
* has to handle how they are displayed, using the `componentType` property to
|
|
265
|
+
* select the appropriate component.
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* // using `LunaticComponents`
|
|
269
|
+
* import { useLunatic, LunaticComponents } from '@inseefr/lunatic';
|
|
270
|
+
*
|
|
271
|
+
* function App({ source, data }) {
|
|
272
|
+
* const { getComponents, Provider } = useLunatic(source, data, {});
|
|
273
|
+
* const components = getComponents();
|
|
274
|
+
*
|
|
275
|
+
* return (
|
|
276
|
+
* <Provider>
|
|
277
|
+
* <LunaticComponents components={components} />
|
|
278
|
+
* </Provider>
|
|
279
|
+
* );
|
|
280
|
+
* }
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* // using custom components
|
|
284
|
+
* import { useLunatic, LunaticComponents } from '@inseefr/lunatic';
|
|
285
|
+
*
|
|
286
|
+
* const customCompoonents = {
|
|
287
|
+
* Input: MyCustomInput,
|
|
288
|
+
* InputNumber: MyCustomInputNumber,
|
|
289
|
+
* };
|
|
290
|
+
*
|
|
291
|
+
* function App({ source, data }) {
|
|
292
|
+
* const { getComponents, Provider } = useLunatic(source, data, {});
|
|
293
|
+
* const components = getComponents();
|
|
294
|
+
*
|
|
295
|
+
* return (
|
|
296
|
+
* <Provider>
|
|
297
|
+
* <LunaticComponents components={components} slots={customComponents} />
|
|
298
|
+
* </Provider>
|
|
299
|
+
* );
|
|
300
|
+
* }
|
|
301
|
+
*
|
|
302
|
+
* @see {@link LunaticComponents}
|
|
303
|
+
*/
|
|
160
304
|
getComponents: () => LunaticComponentProps[];
|
|
305
|
+
/** Get data collected by the survey. */
|
|
161
306
|
getData: (withRefreshedCalculated: boolean, variableNames?: string[]) => LunaticData;
|
|
162
|
-
|
|
307
|
+
/** Get data that have changed since last reset. Returns the same thing as `getData()`. */
|
|
308
|
+
getChangedData: (reset?: boolean) => LunaticData;
|
|
309
|
+
/** Empty the store of changed variables. */
|
|
163
310
|
resetChangedData: () => void;
|
|
311
|
+
/** Return `true` as soon as the current page has at least one answer. */
|
|
164
312
|
hasPageResponse: () => boolean;
|
|
313
|
+
/** Used for testing purpose only. */
|
|
165
314
|
testing: {
|
|
166
315
|
handleChanges: LunaticChangesHandler;
|
|
167
316
|
};
|
|
168
317
|
};
|
|
318
|
+
/** Function taking as arguments the various changes the user has made. */
|
|
169
319
|
export type LunaticChangesHandler = (args: {
|
|
170
320
|
name: string;
|
|
171
321
|
value: any;
|
|
172
322
|
iteration?: number[];
|
|
323
|
+
removedIndex?: number;
|
|
173
324
|
}[]) => void;
|
|
@@ -1,37 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LunaticData, LunaticOptions, LunaticState } from './type';
|
|
2
2
|
import type { LunaticSource } from './type';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
goToPage: (page: {
|
|
16
|
-
page: PageTag | number;
|
|
17
|
-
iteration?: number;
|
|
18
|
-
nbIterations?: number;
|
|
19
|
-
subPage?: number;
|
|
20
|
-
}) => void;
|
|
21
|
-
compileControls: () => {
|
|
22
|
-
currentErrors: Record<string, import("./type").LunaticError[]> | undefined;
|
|
23
|
-
isCritical: boolean;
|
|
24
|
-
};
|
|
25
|
-
getData: (withRefreshedCalculated: boolean, variableNames?: string[]) => LunaticData;
|
|
26
|
-
getChangedData: (reset?: boolean) => Partial<Record<"EXTERNAL" | "CALCULATED", Record<string, unknown>> & {
|
|
27
|
-
COLLECTED: Record<string, import("./type").LunaticCollectedValue>;
|
|
28
|
-
}>;
|
|
29
|
-
resetChangedData: () => void;
|
|
30
|
-
hasPageResponse: () => boolean;
|
|
31
|
-
Provider: import("react").FunctionComponent<{
|
|
32
|
-
children?: import("react").ReactNode | undefined;
|
|
33
|
-
}>;
|
|
34
|
-
testing: {
|
|
35
|
-
handleChanges: LunaticChangesHandler;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
3
|
+
/** The first library entrypoint is the `useLunatic` hook. */
|
|
4
|
+
export declare function useLunatic(
|
|
5
|
+
/**
|
|
6
|
+
* JSON representation of our survey unit in the Lunatic Model.
|
|
7
|
+
*
|
|
8
|
+
* {@link https://github.com/InseeFr/Lunatic-Model}
|
|
9
|
+
*/
|
|
10
|
+
source: LunaticSource,
|
|
11
|
+
/** Initial survey data (i.e. if it has been partially filled). */
|
|
12
|
+
data?: LunaticData,
|
|
13
|
+
/** Specific behaviour options. */
|
|
14
|
+
argOptions?: LunaticOptions): LunaticState;
|
|
@@ -49,7 +49,18 @@ const defaultOptions = {
|
|
|
49
49
|
logger: ConsoleLogger,
|
|
50
50
|
componentsOptions: { detailAlwaysDisplayed: false },
|
|
51
51
|
};
|
|
52
|
-
|
|
52
|
+
/** The first library entrypoint is the `useLunatic` hook. */
|
|
53
|
+
export function useLunatic(
|
|
54
|
+
/**
|
|
55
|
+
* JSON representation of our survey unit in the Lunatic Model.
|
|
56
|
+
*
|
|
57
|
+
* {@link https://github.com/InseeFr/Lunatic-Model}
|
|
58
|
+
*/
|
|
59
|
+
source,
|
|
60
|
+
/** Initial survey data (i.e. if it has been partially filled). */
|
|
61
|
+
data = DEFAULT_DATA,
|
|
62
|
+
/** Specific behaviour options. */
|
|
63
|
+
argOptions = empty) {
|
|
53
64
|
const options = mergeDefault(argOptions, defaultOptions);
|
|
54
65
|
const { disableFilters, management, missing, missingStrategy, shortcut, missingShortcut, dontKnowButton, refusedButton, onChange, trackChanges, preferences, logger, componentsOptions, } = options;
|
|
55
66
|
// Help debug with warnings for options expected to be memoized
|
|
@@ -60,7 +71,7 @@ export function useLunatic(source, data = DEFAULT_DATA, argOptions = empty) {
|
|
|
60
71
|
data,
|
|
61
72
|
onVariableChange: useRefSync(options.onVariableChange),
|
|
62
73
|
}, reducerInitializer);
|
|
63
|
-
|
|
74
|
+
/** Required context provider: cleaner than prop drilling through every component */
|
|
64
75
|
const Provider = useMemo(() => createLunaticProvider({
|
|
65
76
|
management,
|
|
66
77
|
missing,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-lunatic.js","sourceRoot":"","sources":["../../src/use-lunatic/use-lunatic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAQxD,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,4EAA4E;AAC9F,MAAM,YAAY,GAAG,KAAoB,CAAC;AAC1C,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,IAAI,CAAkB,CAAC;AACxD,MAAM,mBAAmB,GAAG,CAAC,SAAS,CAAkB,CAAC;AACzD,MAAM,gBAAgB,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEvD,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/B,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC;AAE7B,MAAM,cAAc,GAAG;IACtB,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,gBAAgB;IAC1B,WAAW,EAAE,mBAAmB;IAChC,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC1B,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,GAAc;IAC3B,eAAe,EAAE,SAAS;IAC1B,oBAAoB,EAAE,KAAK;IAC3B,cAAc,EAAE,KAAK;IACrB,0EAA0E;IAC1E,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;IACzB,eAAe,EAAE,gBAAgB;IACjC,cAAc,EAAE,iBAAiB;IACjC,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,aAAa;IACrB,iBAAiB,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE;CAC1B,CAAC;AAE3B,MAAM,UAAU,UAAU,
|
|
1
|
+
{"version":3,"file":"use-lunatic.js","sourceRoot":"","sources":["../../src/use-lunatic/use-lunatic.ts"],"names":[],"mappings":"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"}
|
package/esm/utils/array.d.ts
CHANGED
|
@@ -10,7 +10,11 @@ export declare function setAtIndex<T>(arr: T, index: number | number[], newValue
|
|
|
10
10
|
* Get a value inside an array
|
|
11
11
|
*/
|
|
12
12
|
export declare function getAtIndex(arr: unknown, indexes: number[]): unknown;
|
|
13
|
+
/**
|
|
14
|
+
* Cast the variable into an array and adjust the length if necessary
|
|
15
|
+
*/
|
|
13
16
|
export declare function resizeArray<T = unknown>(array: unknown, newLength: number, defaultValue?: T): T[];
|
|
17
|
+
export declare function resizeDownArrayWithIndex<T = unknown>(array: T[], removedIndex: number): T[];
|
|
14
18
|
/**
|
|
15
19
|
* Return the first non-null/undefined value of an array
|
|
16
20
|
*/
|
package/esm/utils/array.js
CHANGED
|
@@ -38,6 +38,9 @@ export function getAtIndex(arr, indexes) {
|
|
|
38
38
|
}
|
|
39
39
|
return current;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Cast the variable into an array and adjust the length if necessary
|
|
43
|
+
*/
|
|
41
44
|
export function resizeArray(array, newLength, defaultValue) {
|
|
42
45
|
// The value is not an array, create an empty array
|
|
43
46
|
if (!Array.isArray(array)) {
|
|
@@ -46,10 +49,20 @@ export function resizeArray(array, newLength, defaultValue) {
|
|
|
46
49
|
if (array.length === newLength) {
|
|
47
50
|
return array;
|
|
48
51
|
}
|
|
49
|
-
return new Array(newLength).fill(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null).
|
|
50
|
-
|
|
52
|
+
return new Array(newLength).fill(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null).reduce(function (step, current, index) {
|
|
53
|
+
if (index < array.length) {
|
|
54
|
+
return [...step, array[index]];
|
|
55
|
+
}
|
|
56
|
+
return [...step, current];
|
|
51
57
|
}, []);
|
|
52
58
|
}
|
|
59
|
+
export function resizeDownArrayWithIndex(array, removedIndex) {
|
|
60
|
+
// the removedIndex is not in array
|
|
61
|
+
if (0 > removedIndex || array.length <= removedIndex) {
|
|
62
|
+
return array;
|
|
63
|
+
}
|
|
64
|
+
return [...array].filter((_, i) => i !== removedIndex);
|
|
65
|
+
}
|
|
53
66
|
/**
|
|
54
67
|
* Return the first non-null/undefined value of an array
|
|
55
68
|
*/
|
package/esm/utils/array.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/utils/array.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,KAAK,CAAI,CAAS,EAAE,EAAoB;IACvD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACzB,GAAM,EACN,KAAwB,EACxB,QAAiB;IAEjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC;IAE3C,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;QACxC,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,QAAQ,CAAC,YAAY,CAAC;QACrB,SAAS,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,QAAa,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,OAAiB;IACzD,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAK,OAAqB,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC,CAAC,wCAAwC;QAC3D,CAAC;QAED,OAAO,GAAI,OAAqB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,KAAc,EACd,SAAiB,EACjB,YAAgB;IAEhB,mDAAmD;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/utils/array.ts"],"names":[],"mappings":"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"}
|
package/esm/utils/array.spec.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { firstValueItem, resizeArray, setAtIndex } from './array';
|
|
2
|
+
import { firstValueItem, resizeArray, resizeDownArrayWithIndex, setAtIndex, } from './array';
|
|
3
3
|
describe('array', () => {
|
|
4
4
|
describe('resizeArray()', () => {
|
|
5
5
|
it('should append new value', () => {
|
|
@@ -38,5 +38,16 @@ describe('array', () => {
|
|
|
38
38
|
expect(firstValueItem([null, 1, 2])).toBe(1);
|
|
39
39
|
expect(firstValueItem([null, undefined, false])).toBe(false);
|
|
40
40
|
});
|
|
41
|
+
describe('resizeDownArrayWithIndex()', () => {
|
|
42
|
+
it('should remove an element of array', () => {
|
|
43
|
+
expect(resizeDownArrayWithIndex([1, 2, 3, 4], 2)).toEqual([1, 2, 4]);
|
|
44
|
+
expect(resizeDownArrayWithIndex([1, 2, 3, 4], 0)).toEqual([2, 3, 4]);
|
|
45
|
+
expect(resizeDownArrayWithIndex([1, 2, 3, 4], 3)).toEqual([1, 2, 3]);
|
|
46
|
+
});
|
|
47
|
+
it('should not remove element (out of index)', () => {
|
|
48
|
+
expect(resizeDownArrayWithIndex([1, 2, 3, 4], -1)).toEqual([1, 2, 3, 4]);
|
|
49
|
+
expect(resizeDownArrayWithIndex([1, 2, 3, 4], 4)).toEqual([1, 2, 3, 4]);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
41
52
|
});
|
|
42
53
|
//# sourceMappingURL=array.spec.js.map
|