@inseefr/lunatic 2.6.2 → 2.7.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -3
- package/lib/components/button/lunatic-button.js +1 -2
- package/lib/components/checkbox/checkbox-boolean/html/checkbox-boolean.js +1 -2
- package/lib/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +1 -2
- package/lib/components/checkbox/checkbox-group/checkbox-group-content.js +1 -2
- package/lib/components/checkbox/checkbox-group/html/checkbox-group-content.js +1 -2
- package/lib/components/checkbox/checkbox-group/html/checkbox-group.js +1 -2
- package/lib/components/checkbox/checkbox-group/lunatic-checkbox-group.js +1 -2
- package/lib/components/checkbox/checkbox-one/html/checkbox-one.js +1 -2
- package/lib/components/checkbox/checkbox-one/lunatic-checkbox-one.js +1 -2
- package/lib/components/checkbox/commons/checkbox-option.js +1 -2
- package/lib/components/checkbox/commons/checkbox-option.spec.js +3 -3
- package/lib/components/checkbox/commons/getShortcutKey.js +2 -3
- package/lib/components/commons/components/combo-box/combo-box-container.js +1 -2
- package/lib/components/commons/components/combo-box/combo-box-content-box.js +1 -2
- package/lib/components/commons/components/combo-box/combo-box-content.js +5 -6
- package/lib/components/commons/components/combo-box/combo-box.js +4 -5
- package/lib/components/commons/components/combo-box/combo-box.stories.js +46 -49
- package/lib/components/commons/components/combo-box/keyboard-key-codes.js +2 -3
- package/lib/components/commons/components/combo-box/panel/combo-box-option.js +1 -2
- package/lib/components/commons/components/combo-box/panel/option-container.spec.js +3 -3
- package/lib/components/commons/components/combo-box/panel/panel-container.js +1 -2
- package/lib/components/commons/components/combo-box/panel/panel.spec.js +32 -17
- package/lib/components/commons/components/combo-box/selection/clear-button.js +1 -2
- package/lib/components/commons/components/combo-box/selection/clear-button.spec.js +61 -27
- package/lib/components/commons/components/combo-box/selection/combo-box-label-selection.js +1 -2
- package/lib/components/commons/components/combo-box/selection/input.js +4 -5
- package/lib/components/commons/components/combo-box/selection/label-selection.js +1 -2
- package/lib/components/commons/components/combo-box/selection/selection-container.js +1 -2
- package/lib/components/commons/components/combo-box/selection/selection.js +1 -1
- package/lib/components/commons/components/description.js +2 -4
- package/lib/components/commons/components/dragger/dragger.js +5 -6
- package/lib/components/commons/components/errors/errors.js +2 -3
- package/lib/components/commons/components/fab/fab.js +1 -2
- package/lib/components/commons/components/fab/fab.spec.js +59 -34
- package/lib/components/commons/components/field-container/field-container.js +1 -2
- package/lib/components/commons/components/fieldset.js +1 -2
- package/lib/components/commons/components/html-table/table.js +1 -2
- package/lib/components/commons/components/html-table/tbody.js +1 -2
- package/lib/components/commons/components/html-table/td.js +1 -2
- package/lib/components/commons/components/html-table/th.js +1 -2
- package/lib/components/commons/components/html-table/th.spec.js +3 -3
- package/lib/components/commons/components/html-table/thead.js +1 -2
- package/lib/components/commons/components/html-table/thead.spec.js +3 -3
- package/lib/components/commons/components/html-table/tr.js +1 -2
- package/lib/components/commons/components/is-network/is-network.js +7 -8
- package/lib/components/commons/components/is-network/use-online-status.js +1 -2
- package/lib/components/commons/components/label/label.js +1 -2
- package/lib/components/commons/components/lunatic-component-with-label.js +4 -5
- package/lib/components/commons/components/lunatic-component-without-label.js +4 -5
- package/lib/components/commons/components/md-label/link.js +1 -2
- package/lib/components/commons/components/md-label/md-label.js +4 -5
- package/lib/components/commons/components/missing/missing.js +5 -7
- package/lib/components/commons/components/nothing-to-display.js +1 -2
- package/lib/components/commons/components/orchestrated-component.js +6 -7
- package/lib/components/commons/components/variable-status/variable-status.js +5 -6
- package/lib/components/commons/create-customizable-field.js +4 -5
- package/lib/components/commons/icons/radio-checked-icon.js +1 -2
- package/lib/components/commons/index.js +3 -3
- package/lib/components/commons/safety-label.js +2 -3
- package/lib/components/commons/use-document-add-event-listener.js +1 -2
- package/lib/components/commons/use-on-handle-change.js +1 -2
- package/lib/components/commons/use-options-keydown.js +1 -2
- package/lib/components/component-set/html/component-set-wrapper.js +2 -3
- package/lib/components/component-set/html/component-set.js +1 -2
- package/lib/components/component-set/lunatic-component-set.js +3 -3
- package/lib/components/datepicker/html/datepicker-container.js +1 -2
- package/lib/components/datepicker/html/datepicker-input.js +1 -2
- package/lib/components/datepicker/html/datepicker.js +1 -2
- package/lib/components/datepicker/lunatic-datepicker.js +1 -2
- package/lib/components/declarations/declaration.js +1 -2
- package/lib/components/declarations/declarations-after-text.js +6 -7
- package/lib/components/declarations/declarations-before-text.js +6 -7
- package/lib/components/declarations/declarations-detachable.js +6 -7
- package/lib/components/declarations/declarations.js +2 -4
- package/lib/components/declarations/index.js +3 -3
- package/lib/components/dropdown/html/dropdown-simple/dropdown-simple.js +1 -2
- package/lib/components/dropdown/html/dropdown-simple/simple-label-renderer.js +1 -2
- package/lib/components/dropdown/html/dropdown-simple/simple-option-renderer.js +1 -2
- package/lib/components/dropdown/html/dropdown-writable/dropdown-writable.js +2 -3
- package/lib/components/dropdown/html/dropdown-writable/filter-tools/filter-options.js +1 -2
- package/lib/components/dropdown/html/dropdown-writable/filter-tools/get-label.js +2 -3
- package/lib/components/dropdown/html/dropdown-writable/filter-tools/letters-matching.js +1 -2
- package/lib/components/dropdown/html/dropdown-writable/filter-tools/match.js +1 -2
- package/lib/components/dropdown/html/dropdown-writable/filter-tools/prepare-prefix.js +1 -2
- package/lib/components/dropdown/html/dropdown-writable/writable-label-renderer.js +1 -2
- package/lib/components/dropdown/html/dropdown-writable/writable-option-renderer.js +5 -6
- package/lib/components/dropdown/html/dropdown.js +1 -2
- package/lib/components/dropdown/lunatic-dropdown.js +1 -2
- package/lib/components/duration/duration.js +1 -2
- package/lib/components/duration/durationInput.js +5 -6
- package/lib/components/duration/durationUtils.js +3 -5
- package/lib/components/duration/formatDuration.js +2 -3
- package/lib/components/duration/getDurationFromValue.js +1 -2
- package/lib/components/filter-description/component.js +1 -2
- package/lib/components/index.js +4 -4
- package/lib/components/input/html/input.js +1 -2
- package/lib/components/input/lunatic-input.js +1 -2
- package/lib/components/input-number/html/input-number-thousand.js +2 -3
- package/lib/components/input-number/html/input-number.js +1 -2
- package/lib/components/input-number/lunatic-input-number.js +1 -2
- package/lib/components/loop/block-for-loop.js +12 -17
- package/lib/components/loop/loop.js +3 -3
- package/lib/components/loop/roster-for-loop/roster-for-loop.js +32 -41
- package/lib/components/lunatic-components.js +21 -10
- package/lib/components/modal/html/modal.js +1 -2
- package/lib/components/modal/lunatic-modal.js +2 -3
- package/lib/components/modal-controls/close-or-skip.js +1 -2
- package/lib/components/modal-controls/modal-container.js +1 -2
- package/lib/components/modal-controls/modal-controls.js +5 -6
- package/lib/components/pairwise-links/pairwise-links.js +28 -32
- package/lib/components/question-explication/html/question-explication.js +2 -3
- package/lib/components/question-explication/lunatic-question-explication.js +1 -2
- package/lib/components/question-explication/question-explication.spec.js +4 -4
- package/lib/components/questions/question-context.js +1 -2
- package/lib/components/questions/question-information.js +1 -2
- package/lib/components/radio/html/radio-group-content.js +1 -2
- package/lib/components/radio/html/radio-group.js +1 -2
- package/lib/components/radio/html/radio-option.js +2 -3
- package/lib/components/radio/lunatic-radio-group.js +1 -2
- package/lib/components/roundabout/components/roundabout-container.js +1 -2
- package/lib/components/roundabout/components/roundabout-it-button.js +4 -5
- package/lib/components/roundabout/components/roundabout-it-container.js +1 -2
- package/lib/components/roundabout/components/roundabout-it-title.js +1 -2
- package/lib/components/roundabout/components/roundabout-label.js +1 -2
- package/lib/components/roundabout/components/roundabout-pending.js +1 -2
- package/lib/components/roundabout/lunatic-roundabout.js +1 -2
- package/lib/components/roundabout/redirect.js +4 -5
- package/lib/components/roundabout/roundabout.js +1 -2
- package/lib/components/sequence/html/sequence.js +1 -2
- package/lib/components/sequence/lunatic-sequence.js +1 -2
- package/lib/components/sequence/sequence.spec.js +3 -3
- package/lib/components/subsequence/subsequence.js +1 -2
- package/lib/components/subsequence/subsequence.spec.js +3 -3
- package/lib/components/suggester/find-best-label/find-best-label.js +1 -2
- package/lib/components/suggester/html/notification.js +1 -2
- package/lib/components/suggester/html/suggester.js +5 -6
- package/lib/components/suggester/idb-suggester/check-store.js +4 -5
- package/lib/components/suggester/idb-suggester/idb-suggester.js +1 -1
- package/lib/components/suggester/idb-suggester/suggester-notification.js +1 -2
- package/lib/components/suggester/idb-suggester/suggester-status.js +1 -2
- package/lib/components/suggester/lunatic-suggester.js +1 -2
- package/lib/components/suggester/searching/create-searching.js +9 -6
- package/lib/components/suggester-loader-widget/loader-row.js +2 -3
- package/lib/components/suggester-loader-widget/loader.js +4 -5
- package/lib/components/suggester-loader-widget/progress.js +1 -2
- package/lib/components/suggester-loader-widget/tools/action-tool.js +1 -2
- package/lib/components/suggester-loader-widget/tools/tools.js +1 -2
- package/lib/components/suggester-loader-widget/widget-container.js +1 -2
- package/lib/components/suggester-loader-widget/widget.js +7 -8
- package/lib/components/summary/html/summary-responses.js +1 -2
- package/lib/components/summary/html/summary-title.js +1 -2
- package/lib/components/switch/html/switch.js +1 -2
- package/lib/components/switch/lunatic-switch.js +1 -2
- package/lib/components/table/lunatic-table.js +23 -15
- package/lib/components/table/{header.js → table-header.js} +3 -5
- package/lib/components/textarea/html/textarea.js +1 -2
- package/lib/components/textarea/lunatic-textarea.js +1 -2
- package/lib/constants/component-types.js +1 -2
- package/lib/constants/declarations.js +10 -18
- package/lib/constants/event-types.js +10 -20
- package/lib/constants/supported-preferences.js +4 -5
- package/lib/constants/value-types.js +5 -10
- package/lib/constants/variable-types.js +3 -5
- package/lib/hooks/use-track-changes.js +50 -0
- package/lib/i18n/build-dictionary.js +8 -11
- package/lib/i18n/dictionary.js +1 -2
- package/lib/i18n/index.js +7 -9
- package/lib/i18n/inputNumberProps.js +2 -4
- package/lib/src/components/commons/components/combo-box/combo-box.stories.d.ts +6 -57
- package/lib/src/components/index.d.ts +2 -2
- package/lib/src/components/loop/block-for-loop.d.ts +3 -4
- package/lib/src/components/loop/roster-for-loop/roster-for-loop.d.ts +3 -4
- package/lib/src/components/lunatic-components.d.ts +5 -3
- package/lib/src/components/pairwise-links/pairwise-links.d.ts +1 -2
- package/lib/src/components/table/lunatic-table.d.ts +1 -1
- package/lib/src/components/table/{header.d.ts → table-header.d.ts} +2 -2
- package/lib/src/components/type.d.ts +5 -6
- package/lib/src/hooks/use-track-changes.d.ts +9 -0
- package/lib/src/use-lunatic/actions.d.ts +3 -16
- package/lib/src/use-lunatic/commons/compile-controls.d.ts +3 -2
- package/lib/src/use-lunatic/commons/component.d.ts +22 -0
- package/lib/src/use-lunatic/commons/fill-components/fill-component-value.d.ts +2 -3
- package/lib/src/use-lunatic/commons/fill-components/fill-components.d.ts +6 -0
- package/lib/src/use-lunatic/commons/fill-components/fill-from-state.d.ts +107 -122
- package/lib/src/use-lunatic/commons/fill-components/fill-iterations.d.ts +112 -0
- package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.d.ts +53 -89
- package/lib/src/use-lunatic/commons/get-compatible-vtl-expression.d.ts +1 -0
- package/lib/src/use-lunatic/commons/index.d.ts +0 -3
- package/lib/src/use-lunatic/commons/variables/behaviours/cleaning-behaviour.d.ts +7 -0
- package/lib/src/use-lunatic/commons/variables/behaviours/missing-behaviour.d.ts +7 -0
- package/lib/src/use-lunatic/commons/variables/behaviours/resizing-behaviour.d.ts +7 -0
- package/lib/src/use-lunatic/commons/variables/get-questionnaire-data.d.ts +4 -0
- package/lib/src/use-lunatic/commons/variables/lunatic-variables-store.d.ts +77 -0
- package/lib/src/use-lunatic/reducer/overview/overview-on-init.d.ts +10 -8
- package/lib/src/use-lunatic/reducer/reduce-handle-change.d.ts +6 -0
- package/lib/src/use-lunatic/reducer/reduce-on-init.d.ts +1 -12
- package/lib/src/use-lunatic/type-source.d.ts +7 -21
- package/lib/src/use-lunatic/type.d.ts +13 -11
- package/lib/src/use-lunatic/use-lunatic.d.ts +33 -56
- package/lib/src/utils/array.d.ts +6 -1
- package/lib/src/utils/env.d.ts +1 -0
- package/lib/src/utils/number.d.ts +4 -0
- package/lib/src/utils/variables.d.ts +5 -0
- package/lib/src/utils/vtl.d.ts +14 -0
- package/lib/stories/Introduction.stories.mdx +2 -4
- package/lib/stories/checkbox-boolean/checkboxBoolean.stories.js +5 -7
- package/lib/stories/checkbox-group/checkbox-group.stories.js +28 -11
- package/lib/stories/checkbox-group/source.json +343 -27
- package/lib/stories/checkbox-one/checkboxOne.stories.js +5 -7
- package/lib/stories/component-set/component-set.stories.js +7 -11
- package/lib/stories/custom-mui/checkbox-boolean-mui.js +4 -5
- package/lib/stories/custom-mui/checkbox-group-mui.js +4 -5
- package/lib/stories/custom-mui/checkbox-one-mui.js +1 -2
- package/lib/stories/custom-mui/input-mui.js +4 -5
- package/lib/stories/custom-mui/input-number-mui.js +4 -5
- package/lib/stories/custom-mui/radio-mui.js +4 -5
- package/lib/stories/custom-mui/suggester-mui/suggester-mui.js +5 -6
- package/lib/stories/custom-mui/switch-mui.js +4 -5
- package/lib/stories/custom-mui/table-mui.js +1 -2
- package/lib/stories/custom-mui/tbody-mui.js +1 -2
- package/lib/stories/custom-mui/td-mui.js +1 -2
- package/lib/stories/custom-mui/textarea-mui.js +4 -5
- package/lib/stories/custom-mui/th-mui.js +1 -2
- package/lib/stories/custom-mui/thead-mui.js +1 -2
- package/lib/stories/custom-mui/tr-mui.js +1 -2
- package/lib/stories/date-picker/datepicker.stories.js +5 -7
- package/lib/stories/declaration/input.stories.js +5 -7
- package/lib/stories/disabled/disabled.stories.js +5 -7
- package/lib/stories/dropdown/dropdown.stories.js +5 -7
- package/lib/stories/duration/duration.stories.js +6 -9
- package/lib/stories/filter-description/filter-description.stories.js +6 -9
- package/lib/stories/input/input.stories.js +6 -9
- package/lib/stories/input-number/input-number.stories.js +7 -11
- package/lib/stories/loop/block-for-loop.stories.js +7 -11
- package/lib/stories/loop/paginated-loop.stories.js +5 -7
- package/lib/stories/loop/roster-for-loop.stories.js +8 -12
- package/lib/stories/modal/modal.stories.js +5 -7
- package/lib/stories/overview/overview.stories.js +5 -7
- package/lib/stories/pairwise/pairwise-links.stories.js +8 -12
- package/lib/stories/paste-questionnaire/test.stories.js +5 -7
- package/lib/stories/question-explication/question-explication.stories.js +5 -7
- package/lib/stories/questionnaires/logement/logement.stories.js +7 -11
- package/lib/stories/questionnaires/recensement/recensement.stories.js +5 -7
- package/lib/stories/questionnaires/rp/rp.stories.js +5 -7
- package/lib/stories/questionnaires/simpsons/simpsons.stories.js +8 -12
- package/lib/stories/questionnaires-test/controls/controls-externes.stories.js +5 -7
- package/lib/stories/questionnaires-test/controls/controls.stories.js +9 -15
- package/lib/stories/questionnaires-test/test.stories.js +9 -15
- package/lib/stories/questionnaires2023/bySequence/ticWeb.stories.js +5 -7
- package/lib/stories/questionnaires2023/famille/famille.stories.js +5 -7
- package/lib/stories/questionnaires2023/simpsons/simpsons.stories.js +5 -7
- package/lib/stories/questionnaires2023/ticTel/ticWeb.stories.js +5 -7
- package/lib/stories/questionnaires2023/ticWeb/ticWeb.stories.js +5 -7
- package/lib/stories/radio/radio.stories.js +5 -7
- package/lib/stories/resizing-questionnaire/test.stories.js +5 -7
- package/lib/stories/roundabout/roundabout.stories.js +6 -9
- package/lib/stories/sequence/sequence.stories.js +5 -7
- package/lib/stories/suggester/suggester-workers.stories.js +7 -9
- package/lib/stories/suggester/suggester.stories.js +8 -12
- package/lib/stories/summary/summary.stories.js +5 -7
- package/lib/stories/switch/switch.stories.js +7 -9
- package/lib/stories/table/table.stories.js +10 -15
- package/lib/stories/textarea/textarea.stories.js +5 -7
- package/lib/stories/utils/default-arg-types.js +4 -5
- package/lib/stories/utils/options.js +5 -9
- package/lib/stories/utils/orchestrator.js +10 -10
- package/lib/stories/utils/overview.js +2 -3
- package/lib/stories/utils/waiting/waiting.js +1 -2
- package/lib/test.d.js +3 -0
- package/lib/use-lunatic/actions.js +10 -18
- package/lib/use-lunatic/commons/check-loops.js +5 -6
- package/lib/use-lunatic/commons/compile-controls.js +6 -8
- package/lib/use-lunatic/commons/component.js +22 -0
- package/lib/use-lunatic/commons/compose.js +1 -2
- package/lib/use-lunatic/commons/create-map-pages.js +4 -5
- package/lib/use-lunatic/commons/execute-condition-filter.js +2 -11
- package/lib/use-lunatic/commons/fill-components/fill-component-expressions.js +6 -8
- package/lib/use-lunatic/commons/fill-components/fill-component-value.js +24 -10
- package/lib/use-lunatic/commons/fill-components/fill-components.js +5 -5
- package/lib/use-lunatic/commons/fill-components/fill-from-state.js +4 -5
- package/lib/use-lunatic/commons/fill-components/fill-iterations.js +45 -0
- package/lib/use-lunatic/commons/fill-components/fill-management.js +4 -5
- package/lib/use-lunatic/commons/fill-components/fill-missing-response.js +10 -18
- package/lib/use-lunatic/commons/fill-components/fill-pagination.js +4 -5
- package/lib/use-lunatic/commons/fill-components/fill-specific-expression.js +63 -11
- package/lib/use-lunatic/commons/get-compatible-vtl-expression.js +3 -3
- package/lib/use-lunatic/commons/get-components-from-state.js +1 -2
- package/lib/use-lunatic/commons/get-errors-without-empty-value.js +2 -3
- package/lib/use-lunatic/commons/getOverview.js +3 -4
- package/lib/use-lunatic/commons/index.js +0 -21
- package/lib/use-lunatic/commons/is-First-last-page.js +1 -2
- package/lib/use-lunatic/commons/is-paginated-loop.js +1 -2
- package/lib/use-lunatic/commons/page-navigation.js +4 -4
- package/lib/use-lunatic/commons/page-navigation.spec.js +3 -3
- package/lib/use-lunatic/commons/page-tag.js +3 -3
- package/lib/use-lunatic/commons/use-components-from-state.js +1 -2
- package/lib/use-lunatic/commons/variables/behaviours/cleaning-behaviour.js +39 -0
- package/lib/use-lunatic/commons/variables/behaviours/missing-behaviour.js +47 -0
- package/lib/use-lunatic/commons/variables/behaviours/resizing-behaviour.js +78 -0
- package/lib/use-lunatic/commons/variables/get-questionnaire-data.js +65 -0
- package/lib/use-lunatic/commons/variables/lunatic-variables-store.js +329 -0
- package/lib/use-lunatic/commons/variables/lunatic-variables-store.spec.js +216 -0
- package/lib/use-lunatic/initial-state.js +6 -4
- package/lib/use-lunatic/lunatic-context.js +3 -6
- package/lib/use-lunatic/reducer/commons/auto-explore-loop.js +3 -3
- package/lib/use-lunatic/reducer/commons/is-loop-component.js +2 -3
- package/lib/use-lunatic/reducer/commons/resize-array-variable.js +1 -2
- package/lib/use-lunatic/reducer/commons/validate-condition-filter.js +1 -1
- package/lib/use-lunatic/reducer/overview/overview-on-change.js +6 -7
- package/lib/use-lunatic/reducer/overview/overview-on-init.js +5 -5
- package/lib/use-lunatic/reducer/reduce-go-next-page.js +5 -6
- package/lib/use-lunatic/reducer/reduce-go-previous-page.js +4 -5
- package/lib/use-lunatic/reducer/reduce-go-to-page.js +4 -5
- package/lib/use-lunatic/reducer/reduce-handle-change.js +29 -0
- package/lib/use-lunatic/reducer/reduce-on-init.js +93 -186
- package/lib/use-lunatic/reducer/reduce-on-set-waiting.js +4 -5
- package/lib/use-lunatic/reducer/reduce-update-state.js +3 -3
- package/lib/use-lunatic/reducer/reducer.js +3 -4
- package/lib/use-lunatic/reducer/resolve-component-controls/resolve-simple-control.js +2 -4
- package/lib/use-lunatic/type-source.js +4 -7
- package/lib/use-lunatic/use-lunatic.js +23 -20
- package/lib/use-lunatic/use-lunatic.test.js +134 -5
- package/lib/use-lunatic/use-suggesters.js +6 -7
- package/lib/utils/array.js +57 -6
- package/lib/utils/array.spec.js +30 -0
- package/lib/utils/constants/alphabet.js +1 -2
- package/lib/utils/constants/features.js +3 -6
- package/lib/utils/constants/links.js +2 -4
- package/lib/utils/constants/missing.js +2 -4
- package/lib/utils/constants/variable-status.js +5 -10
- package/lib/utils/constants/variable-types.js +1 -2
- package/lib/utils/env.js +10 -0
- package/lib/utils/function.js +1 -2
- package/lib/utils/get-component-value.js +3 -9
- package/lib/utils/idb-tools/clear-store.js +3 -4
- package/lib/utils/idb-tools/create-db-opener.js +1 -2
- package/lib/utils/idb-tools/create-open-db.js +1 -2
- package/lib/utils/idb-tools/get-entity.js +1 -2
- package/lib/utils/idb-tools/get-idb.js +1 -2
- package/lib/utils/idb-tools/idb-bulk-insert.js +5 -7
- package/lib/utils/idb-tools/index.js +3 -3
- package/lib/utils/idb-tools/insert-entity.js +1 -2
- package/lib/utils/idb-tools/open-db.js +3 -4
- package/lib/utils/idb-tools/open-or-create-db.js +2 -3
- package/lib/utils/is-object.js +1 -1
- package/lib/utils/logger.js +3 -4
- package/lib/utils/number.js +14 -2
- package/lib/utils/object.js +1 -1
- package/lib/utils/store-tools/clear-store-data.js +3 -4
- package/lib/utils/store-tools/clear-store-info.js +3 -4
- package/lib/utils/store-tools/constantes.js +7 -14
- package/lib/utils/store-tools/create/create.js +3 -4
- package/lib/utils/store-tools/create/update-store-info.js +1 -2
- package/lib/utils/store-tools/get-store-count.js +1 -2
- package/lib/utils/store-tools/index.js +3 -3
- package/lib/utils/store-tools/initStore.js +2 -2
- package/lib/utils/store-tools/open-or-create-store.js +1 -2
- package/lib/utils/store-tools/use-store-index.js +4 -5
- package/lib/utils/suggester-workers/append-to-index/append.js +3 -4
- package/lib/utils/suggester-workers/append-to-index/append.worker.js +1 -2
- package/lib/utils/suggester-workers/append-to-index/prepare-entities.js +5 -6
- package/lib/utils/suggester-workers/append-to-index/store-messages.js +4 -5
- package/lib/utils/suggester-workers/commons-tokenizer/create-entity-tokenizer.js +4 -5
- package/lib/utils/suggester-workers/commons-tokenizer/create-fields-tokenizer.js +5 -6
- package/lib/utils/suggester-workers/commons-tokenizer/create-filter-stop-words.js +4 -5
- package/lib/utils/suggester-workers/commons-tokenizer/filters/compose-filters.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.js +4 -5
- package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-accents.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-double.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-length.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.js +4 -5
- package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/filters/stop-words.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/get-regexp-from-pattern.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/get-stemmer.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/prepare-string-indexation.js +1 -2
- package/lib/utils/suggester-workers/commons-tokenizer/soft-tokenizer.js +1 -2
- package/lib/utils/suggester-workers/create-worker-ts.js +2 -3
- package/lib/utils/suggester-workers/create-worker.js +2 -3
- package/lib/utils/suggester-workers/find-best-label/find-best-label.js +5 -6
- package/lib/utils/suggester-workers/find-best-label/tokenize.js +3 -4
- package/lib/utils/suggester-workers/searching/compute-score.js +4 -5
- package/lib/utils/suggester-workers/searching/get-db.js +3 -4
- package/lib/utils/suggester-workers/searching/order/create-alphanumeric-orderer.js +1 -2
- package/lib/utils/suggester-workers/searching/order/index.js +1 -2
- package/lib/utils/suggester-workers/searching/query-parser/query-parser-soft.js +1 -2
- package/lib/utils/suggester-workers/searching/query-parser/query-parser-tokenized.js +1 -2
- package/lib/utils/suggester-workers/searching/resolve-query-parser.js +3 -4
- package/lib/utils/suggester-workers/searching/search-in-index.js +1 -2
- package/lib/utils/suggester-workers/searching/searching.js +5 -6
- package/lib/utils/variables.js +37 -0
- package/lib/utils/vtl.js +100 -0
- package/package.json +28 -16
- package/lib/components/loop/utils/get-initial-nb-rows.js +0 -17
- package/lib/components/pairwise-links/index.js +0 -13
- package/lib/components/pairwise-links/orchestrator.js +0 -71
- package/lib/components/pairwise-links/row.js +0 -74
- package/lib/components/table/cell.js +0 -89
- package/lib/components/table/index.js +0 -13
- package/lib/components/table/row.js +0 -40
- package/lib/components/table/table-orchestrator.js +0 -35
- package/lib/src/components/loop/utils/get-initial-nb-rows.d.ts +0 -4
- package/lib/src/components/pairwise-links/index.d.ts +0 -1
- package/lib/src/components/pairwise-links/orchestrator.d.ts +0 -6
- package/lib/src/components/pairwise-links/row.d.ts +0 -7
- package/lib/src/components/table/cell.d.ts +0 -19
- package/lib/src/components/table/index.d.ts +0 -1
- package/lib/src/components/table/row.d.ts +0 -18
- package/lib/src/components/table/table-orchestrator.d.ts +0 -4
- package/lib/src/use-lunatic/commons/calculated-variables.d.ts +0 -8
- package/lib/src/use-lunatic/commons/execute-expression/create-execute-expression.d.ts +0 -9
- package/lib/src/use-lunatic/commons/execute-expression/create-memoizer.d.ts +0 -8
- package/lib/src/use-lunatic/commons/execute-expression/create-refresh-calculated.d.ts +0 -24
- package/lib/src/use-lunatic/commons/execute-expression/execute-expression.d.ts +0 -11
- package/lib/src/use-lunatic/commons/execute-expression/get-expressions-variables.d.ts +0 -7
- package/lib/src/use-lunatic/commons/execute-expression/get-expressions-variables.spec.d.ts +0 -1
- package/lib/src/use-lunatic/commons/execute-expression/get-safety-expression.d.ts +0 -6
- package/lib/src/use-lunatic/commons/execute-expression/index.d.ts +0 -1
- package/lib/src/use-lunatic/commons/get-component-value/get-component-value.d.ts +0 -6
- package/lib/src/use-lunatic/commons/get-component-value/index.d.ts +0 -1
- package/lib/src/use-lunatic/commons/get-data.d.ts +0 -26
- package/lib/src/use-lunatic/reducer/reduce-handle-change/index.d.ts +0 -1
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.d.ts +0 -7
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.spec.d.ts +0 -1
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.d.ts +0 -4
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-links-variable.d.ts +0 -15
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-missing.d.ts +0 -7
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-resizing.d.ts +0 -4
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-variables-array.d.ts +0 -14
- package/lib/src/use-lunatic/reducer/reduce-handle-change/reduce-variables-simple.d.ts +0 -9
- package/lib/src/use-lunatic/reducer/reduce-on-init.spec.d.ts +0 -1
- package/lib/src/utils/vtl/dataset-builder.d.ts +0 -5
- package/lib/src/utils/vtl/index.d.ts +0 -1
- package/lib/stories/checkboxGroup/checkboxGroup.stories.js +0 -59
- package/lib/stories/checkboxGroup/source.json +0 -402
- package/lib/use-lunatic/commons/calculated-variables.js +0 -104
- package/lib/use-lunatic/commons/execute-expression/create-execute-expression.js +0 -233
- package/lib/use-lunatic/commons/execute-expression/create-execute-expression.spec.js +0 -155
- package/lib/use-lunatic/commons/execute-expression/create-memoizer.js +0 -63
- package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.js +0 -149
- package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.spec.js +0 -130
- package/lib/use-lunatic/commons/execute-expression/execute-expression.js +0 -90
- package/lib/use-lunatic/commons/execute-expression/execute-expression.spec.js +0 -38
- package/lib/use-lunatic/commons/execute-expression/get-expressions-variables.js +0 -40
- package/lib/use-lunatic/commons/execute-expression/get-expressions-variables.spec.js +0 -31
- package/lib/use-lunatic/commons/execute-expression/get-safety-expression.js +0 -35
- package/lib/use-lunatic/commons/execute-expression/index.js +0 -13
- package/lib/use-lunatic/commons/get-component-value/get-component-value.js +0 -174
- package/lib/use-lunatic/commons/get-component-value/index.js +0 -13
- package/lib/use-lunatic/commons/get-data.js +0 -80
- package/lib/use-lunatic/reducer/reduce-handle-change/__mocks__/source-cleaning-loop.json +0 -792
- package/lib/use-lunatic/reducer/reduce-handle-change/index.js +0 -13
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.js +0 -72
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.spec.js +0 -46
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +0 -115
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-links-variable.js +0 -89
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-missing.js +0 -88
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-resizing.js +0 -110
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-variables-array.js +0 -44
- package/lib/use-lunatic/reducer/reduce-handle-change/reduce-variables-simple.js +0 -28
- package/lib/use-lunatic/reducer/reduce-on-init.spec.js +0 -17
- package/lib/utils/vtl/dataset-builder.js +0 -27
- package/lib/utils/vtl/index.js +0 -13
- /package/lib/src/use-lunatic/commons/{execute-expression/create-refresh-calculated.spec.d.ts → variables/lunatic-variables-store.spec.d.ts} +0 -0
- /package/lib/src/{use-lunatic/commons/execute-expression/execute-expression.spec.d.ts → utils/array.spec.d.ts} +0 -0
- /package/lib/stories/{checkboxGroup → checkbox-group}/sourceComponentset.json +0 -0
- /package/lib/stories/{checkboxGroup → checkbox-group}/sourceLoop.json +0 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LunaticVariablesStore = void 0;
|
|
7
|
+
var _vtl = require("../../../utils/vtl");
|
|
8
|
+
var _env = require("../../../utils/env");
|
|
9
|
+
var _variables = require("../../../utils/variables");
|
|
10
|
+
var _resizingBehaviour = require("./behaviours/resizing-behaviour");
|
|
11
|
+
var _cleaningBehaviour = require("./behaviours/cleaning-behaviour");
|
|
12
|
+
var _missingBehaviour = require("./behaviours/missing-behaviour");
|
|
13
|
+
var _array = require("../../../utils/array");
|
|
14
|
+
var _number = require("../../../utils/number");
|
|
15
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
16
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
17
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
19
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
20
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (_e) { function e(_x) { return _e.apply(this, arguments); } e.toString = function () { return _e.toString(); }; return e; }(function (e) { throw e; }), f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function (_e2) { function e(_x2) { return _e2.apply(this, arguments); } e.toString = function () { return _e2.toString(); }; return e; }(function (e) { didErr = true; err = e; }), f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
21
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
22
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
23
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
24
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
25
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
26
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
27
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
28
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
29
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
30
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
31
|
+
// Interpret counter, used for testing purpose
|
|
32
|
+
var interpretCount = 0;
|
|
33
|
+
var LunaticVariablesStore = exports.LunaticVariablesStore = /*#__PURE__*/function () {
|
|
34
|
+
function LunaticVariablesStore() {
|
|
35
|
+
_classCallCheck(this, LunaticVariablesStore);
|
|
36
|
+
this.dictionary = new Map();
|
|
37
|
+
this.eventTarget = new EventTarget();
|
|
38
|
+
interpretCount = 0;
|
|
39
|
+
}
|
|
40
|
+
_createClass(LunaticVariablesStore, [{
|
|
41
|
+
key: "get",
|
|
42
|
+
value:
|
|
43
|
+
/**
|
|
44
|
+
* Retrieve variable value
|
|
45
|
+
*/
|
|
46
|
+
function get(name, iteration) {
|
|
47
|
+
if (!this.dictionary.has(name)) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return this.dictionary.get(name).getValue(iteration);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Set variable value
|
|
55
|
+
*/
|
|
56
|
+
}, {
|
|
57
|
+
key: "set",
|
|
58
|
+
value: function set(name, value) {
|
|
59
|
+
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
60
|
+
if (!this.dictionary.has(name)) {
|
|
61
|
+
this.dictionary.set(name, new LunaticVariable({
|
|
62
|
+
name: name
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
var variable = this.dictionary.get(name);
|
|
66
|
+
if (variable.setValue(value, args.iteration)) {
|
|
67
|
+
this.eventTarget.dispatchEvent(new CustomEvent('change', {
|
|
68
|
+
detail: _objectSpread(_objectSpread({}, args), {}, {
|
|
69
|
+
name: name,
|
|
70
|
+
value: value
|
|
71
|
+
})
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
return variable;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Register calculated variable
|
|
79
|
+
*/
|
|
80
|
+
}, {
|
|
81
|
+
key: "setCalculated",
|
|
82
|
+
value: function setCalculated(name, expression) {
|
|
83
|
+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
84
|
+
dependencies = _ref.dependencies,
|
|
85
|
+
iterationDepth = _ref.iterationDepth;
|
|
86
|
+
if (this.dictionary.has(name)) {
|
|
87
|
+
return this.dictionary.get(name);
|
|
88
|
+
}
|
|
89
|
+
var variable = new LunaticVariable({
|
|
90
|
+
expression: expression,
|
|
91
|
+
dictionary: this.dictionary,
|
|
92
|
+
dependencies: dependencies,
|
|
93
|
+
iterationDepth: iterationDepth,
|
|
94
|
+
name: name
|
|
95
|
+
});
|
|
96
|
+
this.dictionary.set(name, variable);
|
|
97
|
+
return variable;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Run a VTL expression
|
|
102
|
+
*/
|
|
103
|
+
}, {
|
|
104
|
+
key: "run",
|
|
105
|
+
value: function run(expression) {
|
|
106
|
+
var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
107
|
+
return this.setCalculated(expression, expression, {
|
|
108
|
+
dependencies: args.deps
|
|
109
|
+
}).getValue(args.iteration);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Bind event listeners
|
|
114
|
+
*/
|
|
115
|
+
}, {
|
|
116
|
+
key: "on",
|
|
117
|
+
value: function on(eventName, cb) {
|
|
118
|
+
this.eventTarget.addEventListener(eventName, cb);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Detach a listener
|
|
123
|
+
*/
|
|
124
|
+
}, {
|
|
125
|
+
key: "off",
|
|
126
|
+
value: function off(eventName, cb) {
|
|
127
|
+
this.eventTarget.removeEventListener(eventName, cb);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Retrieve the number of interpret() run (used in testing only)
|
|
131
|
+
}, {
|
|
132
|
+
key: "interpretCount",
|
|
133
|
+
get: function get() {
|
|
134
|
+
return interpretCount;
|
|
135
|
+
}
|
|
136
|
+
}], [{
|
|
137
|
+
key: "makeFromSource",
|
|
138
|
+
value: function makeFromSource(source, data) {
|
|
139
|
+
var _variable$name;
|
|
140
|
+
var store = new LunaticVariablesStore();
|
|
141
|
+
if (!source.variables) {
|
|
142
|
+
return store;
|
|
143
|
+
}
|
|
144
|
+
var initialValues = Object.fromEntries(source.variables.map(function (variable) {
|
|
145
|
+
return [variable.name, (0, _variables.getInitialVariableValue)(variable, data)];
|
|
146
|
+
}));
|
|
147
|
+
var getIterationDepth = function getIterationDepth(name) {
|
|
148
|
+
if (name === 'xAxis') return 0;
|
|
149
|
+
if (name === 'yAxis') return 1;
|
|
150
|
+
return undefined;
|
|
151
|
+
};
|
|
152
|
+
var _iterator = _createForOfIteratorHelper(source.variables),
|
|
153
|
+
_step;
|
|
154
|
+
try {
|
|
155
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
156
|
+
var variable = _step.value;
|
|
157
|
+
switch (variable.variableType) {
|
|
158
|
+
case 'CALCULATED':
|
|
159
|
+
store.setCalculated(variable.name, variable.expression.value, {
|
|
160
|
+
dependencies: variable.bindingDependencies,
|
|
161
|
+
iterationDepth: getIterationDepth(variable.name)
|
|
162
|
+
});
|
|
163
|
+
break;
|
|
164
|
+
case 'COLLECTED':
|
|
165
|
+
case 'EXTERNAL':
|
|
166
|
+
store.set(variable.name, initialValues[(_variable$name = variable.name) !== null && _variable$name !== void 0 ? _variable$name : null]);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
} catch (err) {
|
|
171
|
+
_iterator.e(err);
|
|
172
|
+
} finally {
|
|
173
|
+
_iterator.f();
|
|
174
|
+
}
|
|
175
|
+
(0, _resizingBehaviour.resizingBehaviour)(store, source.resizing);
|
|
176
|
+
(0, _cleaningBehaviour.cleaningBehaviour)(store, source.cleaning, initialValues);
|
|
177
|
+
(0, _missingBehaviour.missingBehaviour)(store, source.missingBlock);
|
|
178
|
+
return store;
|
|
179
|
+
}
|
|
180
|
+
}]);
|
|
181
|
+
return LunaticVariablesStore;
|
|
182
|
+
}();
|
|
183
|
+
var LunaticVariable = /*#__PURE__*/function () {
|
|
184
|
+
function LunaticVariable() {
|
|
185
|
+
var _args$name;
|
|
186
|
+
var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
187
|
+
_classCallCheck(this, LunaticVariable);
|
|
188
|
+
// Last time the value was updated (changed)
|
|
189
|
+
this.updatedAt = new Map();
|
|
190
|
+
// Last time "calculation" was run (for calculated variable)
|
|
191
|
+
this.calculatedAt = new Map();
|
|
192
|
+
// Internal value for the variable
|
|
193
|
+
this.value = void 0;
|
|
194
|
+
// List of dependencies, ex: ['FIRSTNAME', 'LASTNAME']
|
|
195
|
+
this.dependencies = void 0;
|
|
196
|
+
// Expression for calculated variable
|
|
197
|
+
this.expression = void 0;
|
|
198
|
+
// Dictionary holding all the available variables
|
|
199
|
+
this.dictionary = void 0;
|
|
200
|
+
// Specific iteration depth to get value from dependencies (used for yAxis for instance)
|
|
201
|
+
this.iterationDepth = void 0;
|
|
202
|
+
// Keep a record of variable name (optional, used for debug)
|
|
203
|
+
this.name = void 0;
|
|
204
|
+
if (args.expression && !args.dictionary) {
|
|
205
|
+
throw new Error("A calculated variable needs a dictionary to retrieve his deps");
|
|
206
|
+
}
|
|
207
|
+
this.expression = args.expression;
|
|
208
|
+
this.dictionary = args.dictionary;
|
|
209
|
+
this.dependencies = args.dependencies;
|
|
210
|
+
this.iterationDepth = args.iterationDepth;
|
|
211
|
+
this.name = (_args$name = args.name) !== null && _args$name !== void 0 ? _args$name : args.expression;
|
|
212
|
+
}
|
|
213
|
+
_createClass(LunaticVariable, [{
|
|
214
|
+
key: "getValue",
|
|
215
|
+
value: function getValue(iteration) {
|
|
216
|
+
// The variable is not calculated
|
|
217
|
+
if (!this.expression) {
|
|
218
|
+
return this.getSavedValue(iteration);
|
|
219
|
+
}
|
|
220
|
+
// Calculate bindings first to refresh "updatedAt" on calculated dependencies
|
|
221
|
+
var bindings = this.getDependenciesValues(iteration);
|
|
222
|
+
if (!this.isOutdated(iteration)) {
|
|
223
|
+
return this.getSavedValue(iteration);
|
|
224
|
+
}
|
|
225
|
+
if ((0, _env.isTestEnv)()) {
|
|
226
|
+
interpretCount++;
|
|
227
|
+
}
|
|
228
|
+
// Remember the value
|
|
229
|
+
try {
|
|
230
|
+
this.setValue((0, _vtl.interpretVTL)(this.expression, bindings), iteration);
|
|
231
|
+
} catch (e) {
|
|
232
|
+
throw new Error("Cannot interpret expression \"".concat(this.expression, "\" with bindings ").concat(JSON.stringify(bindings), ", error : ").concat(e.toString()));
|
|
233
|
+
}
|
|
234
|
+
this.calculatedAt.set(iteration === null || iteration === void 0 ? void 0 : iteration.join('.'), performance.now());
|
|
235
|
+
this.calculatedAt.set(undefined, performance.now());
|
|
236
|
+
return this.getSavedValue(iteration);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Set the value and returns true if the variable is touched
|
|
241
|
+
*/
|
|
242
|
+
}, {
|
|
243
|
+
key: "setValue",
|
|
244
|
+
value: function setValue(value, iteration) {
|
|
245
|
+
var _this = this;
|
|
246
|
+
if (value === this.getSavedValue(iteration)) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
// Decompose arrays, to only update items that changed
|
|
250
|
+
if (Array.isArray(value) && !Array.isArray(iteration)) {
|
|
251
|
+
return !!value.map(function (v, k) {
|
|
252
|
+
return _this.setValue(v, [k]);
|
|
253
|
+
}).find(function (v) {
|
|
254
|
+
return v;
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
// We want to save a value at a specific iteration, but the value is not an array yet
|
|
258
|
+
if (iteration !== undefined && !Array.isArray(this.value)) {
|
|
259
|
+
this.value = [];
|
|
260
|
+
}
|
|
261
|
+
this.value = !Array.isArray(iteration) ? value : (0, _array.setAtIndex)(this.value, iteration, value);
|
|
262
|
+
this.updatedAt.set(iteration === null || iteration === void 0 ? void 0 : iteration.join('.'), performance.now());
|
|
263
|
+
this.updatedAt.set(undefined, performance.now());
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
}, {
|
|
267
|
+
key: "getSavedValue",
|
|
268
|
+
value: function getSavedValue(iteration) {
|
|
269
|
+
if (!Array.isArray(iteration)) {
|
|
270
|
+
return this.value;
|
|
271
|
+
}
|
|
272
|
+
var current = this.value;
|
|
273
|
+
var _iterator2 = _createForOfIteratorHelper(iteration),
|
|
274
|
+
_step2;
|
|
275
|
+
try {
|
|
276
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
277
|
+
var index = _step2.value;
|
|
278
|
+
if (!Array.isArray(current)) {
|
|
279
|
+
return current;
|
|
280
|
+
}
|
|
281
|
+
current = current[index];
|
|
282
|
+
}
|
|
283
|
+
} catch (err) {
|
|
284
|
+
_iterator2.e(err);
|
|
285
|
+
} finally {
|
|
286
|
+
_iterator2.f();
|
|
287
|
+
}
|
|
288
|
+
return current;
|
|
289
|
+
}
|
|
290
|
+
}, {
|
|
291
|
+
key: "getDependencies",
|
|
292
|
+
value: function getDependencies() {
|
|
293
|
+
// Calculate dependencies from expression on the fly if necessary
|
|
294
|
+
if (this.dependencies === undefined) {
|
|
295
|
+
this.dependencies = (0, _vtl.parseVTLVariables)(this.expression);
|
|
296
|
+
}
|
|
297
|
+
return this.dependencies;
|
|
298
|
+
}
|
|
299
|
+
}, {
|
|
300
|
+
key: "getDependenciesValues",
|
|
301
|
+
value: function getDependenciesValues(iteration) {
|
|
302
|
+
var _this2 = this;
|
|
303
|
+
try {
|
|
304
|
+
return Object.fromEntries(this.getDependencies().map(function (dep) {
|
|
305
|
+
var _this2$dictionary;
|
|
306
|
+
var dependencyIteration = (0, _number.isNumber)(_this2.iterationDepth) && Array.isArray(iteration) ? [iteration[_this2.iterationDepth]] : iteration;
|
|
307
|
+
return [dep, (_this2$dictionary = _this2.dictionary) === null || _this2$dictionary === void 0 || (_this2$dictionary = _this2$dictionary.get(dep)) === null || _this2$dictionary === void 0 ? void 0 : _this2$dictionary.getValue(dependencyIteration)];
|
|
308
|
+
}));
|
|
309
|
+
} catch (e) {
|
|
310
|
+
if (e instanceof RangeError) {
|
|
311
|
+
throw new Error("Cannot resolve dependencies for \"".concat(this.expression, "\" with dependencies ").concat(JSON.stringify(this.getDependencies()), " \n ").concat(e.toString()));
|
|
312
|
+
}
|
|
313
|
+
throw e;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}, {
|
|
317
|
+
key: "isOutdated",
|
|
318
|
+
value: function isOutdated(iteration) {
|
|
319
|
+
var _this3 = this,
|
|
320
|
+
_this$calculatedAt$ge;
|
|
321
|
+
var dependenciesUpdatedAt = Math.max.apply(Math, [0].concat(_toConsumableArray(this.getDependencies().map(function (dep) {
|
|
322
|
+
var _this3$dictionary$get, _this3$dictionary;
|
|
323
|
+
return (_this3$dictionary$get = (_this3$dictionary = _this3.dictionary) === null || _this3$dictionary === void 0 || (_this3$dictionary = _this3$dictionary.get(dep)) === null || _this3$dictionary === void 0 ? void 0 : _this3$dictionary.updatedAt.get(iteration === null || iteration === void 0 ? void 0 : iteration.join('.'))) !== null && _this3$dictionary$get !== void 0 ? _this3$dictionary$get : 0;
|
|
324
|
+
}))));
|
|
325
|
+
return dependenciesUpdatedAt > ((_this$calculatedAt$ge = this.calculatedAt.get(iteration === null || iteration === void 0 ? void 0 : iteration.join('.'))) !== null && _this$calculatedAt$ge !== void 0 ? _this$calculatedAt$ge : -1);
|
|
326
|
+
}
|
|
327
|
+
}]);
|
|
328
|
+
return LunaticVariable;
|
|
329
|
+
}();
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _vitest = require("vitest");
|
|
4
|
+
var _lunaticVariablesStore = require("./lunatic-variables-store");
|
|
5
|
+
var _resizingBehaviour = require("./behaviours/resizing-behaviour");
|
|
6
|
+
var _cleaningBehaviour = require("./behaviours/cleaning-behaviour");
|
|
7
|
+
var _missingBehaviour = require("./behaviours/missing-behaviour");
|
|
8
|
+
(0, _vitest.describe)('lunatic-variables-store', function () {
|
|
9
|
+
var variables;
|
|
10
|
+
(0, _vitest.beforeEach)(function () {
|
|
11
|
+
variables = new _lunaticVariablesStore.LunaticVariablesStore();
|
|
12
|
+
});
|
|
13
|
+
(0, _vitest.it)('should record basic variables', function () {
|
|
14
|
+
variables.set('FIRSTNAME', 'John');
|
|
15
|
+
(0, _vitest.expect)(variables.get('FIRSTNAME')).toEqual('John');
|
|
16
|
+
});
|
|
17
|
+
(0, _vitest.it)('should run simple types', function () {
|
|
18
|
+
(0, _vitest.expect)(variables.run('"Hello world"')).toEqual('Hello world');
|
|
19
|
+
(0, _vitest.expect)(variables.run('true')).toEqual(true);
|
|
20
|
+
(0, _vitest.expect)(variables.run('2')).toEqual(2);
|
|
21
|
+
});
|
|
22
|
+
(0, _vitest.it)('should handle calculated', function () {
|
|
23
|
+
variables.set('FIRSTNAME', 'John');
|
|
24
|
+
variables.set('LASTNAME', 'Doe');
|
|
25
|
+
variables.setCalculated('FULLNAME', 'FIRSTNAME || " " || LASTNAME', {
|
|
26
|
+
dependencies: ['FIRSTNAME', 'LASTNAME']
|
|
27
|
+
});
|
|
28
|
+
(0, _vitest.expect)(variables.get('FULLNAME')).toEqual('John Doe');
|
|
29
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(1);
|
|
30
|
+
// The result should be cached
|
|
31
|
+
(0, _vitest.expect)(variables.get('FULLNAME')).toEqual('John Doe');
|
|
32
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(1);
|
|
33
|
+
// But refreshed if a variable was updated
|
|
34
|
+
variables.set('FIRSTNAME', 'Jane');
|
|
35
|
+
(0, _vitest.expect)(variables.get('FULLNAME')).toEqual('Jane Doe');
|
|
36
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(2);
|
|
37
|
+
});
|
|
38
|
+
(0, _vitest.it)('should handle deep calculation', function () {
|
|
39
|
+
variables.set('FIRSTNAME', 'John');
|
|
40
|
+
variables.set('LASTNAME', 'Doe');
|
|
41
|
+
variables.set('AGE', '18');
|
|
42
|
+
variables.setCalculated('FULLNAME', 'FIRSTNAME || " " || LASTNAME', {
|
|
43
|
+
dependencies: ['FIRSTNAME', 'LASTNAME']
|
|
44
|
+
});
|
|
45
|
+
variables.setCalculated('LABEL', 'FULLNAME || " is " || AGE', {
|
|
46
|
+
dependencies: ['FULLNAME', 'AGE']
|
|
47
|
+
});
|
|
48
|
+
(0, _vitest.expect)(variables.get('LABEL')).toEqual('John Doe is 18');
|
|
49
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(2);
|
|
50
|
+
variables.set('AGE', '20');
|
|
51
|
+
(0, _vitest.expect)(variables.get('LABEL')).toEqual('John Doe is 20');
|
|
52
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(3);
|
|
53
|
+
variables.set('FIRSTNAME', 'Jane');
|
|
54
|
+
(0, _vitest.expect)(variables.get('LABEL')).toEqual('Jane Doe is 20');
|
|
55
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(5);
|
|
56
|
+
variables.get('LABEL');
|
|
57
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(5);
|
|
58
|
+
});
|
|
59
|
+
(0, _vitest.it)('should handle dependencies resolution', function () {
|
|
60
|
+
variables.set('FIRSTNAME', 'John');
|
|
61
|
+
variables.set('LASTNAME', 'Doe');
|
|
62
|
+
variables.setCalculated('FULLNAME', 'FIRSTNAME || " " || LASTNAME');
|
|
63
|
+
(0, _vitest.expect)(variables.get('FULLNAME')).toEqual('John Doe');
|
|
64
|
+
variables.set('FIRSTNAME', 'Jane');
|
|
65
|
+
(0, _vitest.expect)(variables.get('FULLNAME')).toEqual('Jane Doe');
|
|
66
|
+
});
|
|
67
|
+
(0, _vitest.it)('should run expression on the fly', function () {
|
|
68
|
+
variables.set('FIRSTNAME', 'John');
|
|
69
|
+
variables.set('LASTNAME', 'Doe');
|
|
70
|
+
(0, _vitest.expect)(variables.run('FIRSTNAME || " " || LASTNAME')).toEqual('John Doe');
|
|
71
|
+
(0, _vitest.expect)(variables.run('FIRSTNAME || " " || LASTNAME')).toEqual('John Doe');
|
|
72
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(1);
|
|
73
|
+
variables.set('FIRSTNAME', 'Jane');
|
|
74
|
+
(0, _vitest.expect)(variables.run('FIRSTNAME || " " || LASTNAME')).toEqual('Jane Doe');
|
|
75
|
+
});
|
|
76
|
+
(0, _vitest.describe)('with iteration', function () {
|
|
77
|
+
(0, _vitest.it)('should handle arrays', function () {
|
|
78
|
+
variables.set('FIRSTNAME', ['John', 'Jane']);
|
|
79
|
+
(0, _vitest.expect)(variables.get('FIRSTNAME')).toEqual(['John', 'Jane']);
|
|
80
|
+
(0, _vitest.expect)(variables.get('FIRSTNAME', [0])).toEqual('John');
|
|
81
|
+
(0, _vitest.expect)(variables.get('FIRSTNAME', [1])).toEqual('Jane');
|
|
82
|
+
});
|
|
83
|
+
(0, _vitest.it)('should handle setting at a specific index', function () {
|
|
84
|
+
variables.set('FIRSTNAME', ['John', 'Jane']);
|
|
85
|
+
variables.set('LASTNAME', null);
|
|
86
|
+
variables.set('FIRSTNAME', 'Marc', {
|
|
87
|
+
iteration: [1]
|
|
88
|
+
});
|
|
89
|
+
(0, _vitest.expect)(variables.get('FIRSTNAME')).toEqual(['John', 'Marc']);
|
|
90
|
+
variables.set('LASTNAME', 'Doe', {
|
|
91
|
+
iteration: [1]
|
|
92
|
+
});
|
|
93
|
+
(0, _vitest.expect)(variables.get('LASTNAME')).toEqual([null, 'Doe']);
|
|
94
|
+
});
|
|
95
|
+
(0, _vitest.it)('should ignore non array values', function () {
|
|
96
|
+
variables.set('FIRSTNAME', 'John');
|
|
97
|
+
(0, _vitest.expect)(variables.get('FIRSTNAME', [0])).toEqual('John');
|
|
98
|
+
});
|
|
99
|
+
(0, _vitest.it)('should handle iteration in calculation', function () {
|
|
100
|
+
variables.set('FIRSTNAME', ['John', 'Jane']);
|
|
101
|
+
variables.set('LASTNAME', ['Doe', 'Dae']);
|
|
102
|
+
variables.setCalculated('FULLNAME', 'FIRSTNAME || " " || LASTNAME', {
|
|
103
|
+
dependencies: ['FIRSTNAME', 'LASTNAME']
|
|
104
|
+
});
|
|
105
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [0])).toEqual('John Doe');
|
|
106
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [1])).toEqual('Jane Dae');
|
|
107
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(2);
|
|
108
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [0])).toEqual('John Doe');
|
|
109
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [1])).toEqual('Jane Dae');
|
|
110
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(2);
|
|
111
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [0])).toEqual('John Doe');
|
|
112
|
+
variables.set('FIRSTNAME', ['John', 'Marc']);
|
|
113
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [0])).toEqual('John Doe');
|
|
114
|
+
(0, _vitest.expect)(variables.get('FULLNAME', [1])).toEqual('Marc Dae');
|
|
115
|
+
// Only the second iteration should be calculated
|
|
116
|
+
(0, _vitest.expect)(variables.interpretCount).toBe(3);
|
|
117
|
+
});
|
|
118
|
+
(0, _vitest.it)('should handle aggregation expression', function () {
|
|
119
|
+
variables.set('FIRSTNAME', ['John', 'Jane']);
|
|
120
|
+
(0, _vitest.expect)(variables.run('count(FIRSTNAME)')).toEqual(2);
|
|
121
|
+
variables.set('FIRSTNAME', ['John', 'Jane', 'Marc']);
|
|
122
|
+
(0, _vitest.expect)(variables.run('count(FIRSTNAME)')).toEqual(3);
|
|
123
|
+
});
|
|
124
|
+
(0, _vitest.it)('should handle non array values', function () {
|
|
125
|
+
variables.set('FIRSTNAME', ['John', 'Jane']);
|
|
126
|
+
variables.set('LASTNAME', 'Doe');
|
|
127
|
+
(0, _vitest.expect)(variables.run('FIRSTNAME || " " || LASTNAME', {
|
|
128
|
+
iteration: [0]
|
|
129
|
+
})).toEqual('John Doe');
|
|
130
|
+
(0, _vitest.expect)(variables.run('FIRSTNAME || " " || LASTNAME', {
|
|
131
|
+
iteration: [1]
|
|
132
|
+
})).toEqual('Jane Doe');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
(0, _vitest.describe)('resizing', function () {
|
|
136
|
+
(0, _vitest.it)('should resize variables', function () {
|
|
137
|
+
variables.set('PRENOM', ['John', 'Jane']);
|
|
138
|
+
variables.set('NOM', ['Doe']);
|
|
139
|
+
(0, _resizingBehaviour.resizingBehaviour)(variables, {
|
|
140
|
+
PRENOM: {
|
|
141
|
+
size: 'count(PRENOM)',
|
|
142
|
+
variables: ['NOM']
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
variables.set('PRENOM', ['John', 'Jane', 'Marc']);
|
|
146
|
+
(0, _vitest.expect)(variables.get('PRENOM').length).toEqual(3);
|
|
147
|
+
(0, _vitest.expect)(variables.get('NOM').length).toEqual(3);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
(0, _vitest.describe)('cleaning', function () {
|
|
151
|
+
(0, _vitest.it)('should clean variables', function () {
|
|
152
|
+
variables.set('PRENOM', 'John');
|
|
153
|
+
variables.set('NOM', 'Doe');
|
|
154
|
+
variables.set('READY', true);
|
|
155
|
+
(0, _cleaningBehaviour.cleaningBehaviour)(variables, {
|
|
156
|
+
READY: {
|
|
157
|
+
PRENOM: 'READY'
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual('John');
|
|
161
|
+
variables.set('READY', false);
|
|
162
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual(null);
|
|
163
|
+
});
|
|
164
|
+
(0, _vitest.it)('should clean variables with initial values', function () {
|
|
165
|
+
variables.set('PRENOM', 'John');
|
|
166
|
+
variables.set('READY', true);
|
|
167
|
+
(0, _cleaningBehaviour.cleaningBehaviour)(variables, {
|
|
168
|
+
READY: {
|
|
169
|
+
PRENOM: 'READY'
|
|
170
|
+
}
|
|
171
|
+
}, {
|
|
172
|
+
PRENOM: 'Jane'
|
|
173
|
+
});
|
|
174
|
+
variables.set('READY', false);
|
|
175
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual('Jane');
|
|
176
|
+
});
|
|
177
|
+
(0, _vitest.it)('should clean variables at a specific iteration', function () {
|
|
178
|
+
variables.set('PRENOM', ['John', 'Jane', 'Marc']);
|
|
179
|
+
variables.set('READY', [true, true, true]);
|
|
180
|
+
(0, _cleaningBehaviour.cleaningBehaviour)(variables, {
|
|
181
|
+
READY: {
|
|
182
|
+
PRENOM: 'READY'
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
variables.set('READY', false, {
|
|
186
|
+
iteration: [1]
|
|
187
|
+
});
|
|
188
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual(['John', null, 'Marc']);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
(0, _vitest.describe)('missing', function () {
|
|
192
|
+
(0, _vitest.beforeEach)(function () {
|
|
193
|
+
(0, _missingBehaviour.missingBehaviour)(variables, {
|
|
194
|
+
PRENOM: ['PRENOM_MISSING'],
|
|
195
|
+
PRENOM_MISSING: ['PRENOM']
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
(0, _vitest.it)('should handle missing', function () {
|
|
199
|
+
variables.set('PRENOM', 'John');
|
|
200
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual('John');
|
|
201
|
+
(0, _vitest.expect)(variables.get('PRENOM_MISSING')).toEqual(null);
|
|
202
|
+
variables.set('PRENOM_MISSING', 'DK');
|
|
203
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual(null);
|
|
204
|
+
(0, _vitest.expect)(variables.get('PRENOM_MISSING')).toEqual('DK');
|
|
205
|
+
});
|
|
206
|
+
(0, _vitest.it)('should handle missing for iteration', function () {
|
|
207
|
+
variables.set('PRENOM', ['John', 'Jane', 'Marc']);
|
|
208
|
+
(0, _vitest.expect)(variables.get('PRENOM_MISSING')).toEqual(null);
|
|
209
|
+
variables.set('PRENOM_MISSING', 'DK', {
|
|
210
|
+
iteration: [1]
|
|
211
|
+
});
|
|
212
|
+
(0, _vitest.expect)(variables.get('PRENOM')).toEqual(['John', null, 'Marc']);
|
|
213
|
+
(0, _vitest.expect)(variables.get('PRENOM_MISSING', [1])).toEqual('DK');
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
});
|
|
@@ -6,9 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _constants = require("../utils/constants");
|
|
8
8
|
var _useSuggesters = require("./use-suggesters");
|
|
9
|
+
var _lunaticVariablesStore = require("./commons/variables/lunatic-variables-store");
|
|
10
|
+
var _env = require("../utils/env");
|
|
9
11
|
var INITIAL_STATE = {
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
+
updatedAt: 0,
|
|
13
|
+
// There is a bug with this constructor in vitest
|
|
14
|
+
variables: (0, _env.isTestEnv)() ? null : new _lunaticVariablesStore.LunaticVariablesStore(),
|
|
12
15
|
pages: {},
|
|
13
16
|
isInLoop: false,
|
|
14
17
|
isFirstPage: false,
|
|
@@ -47,5 +50,4 @@ var INITIAL_STATE = {
|
|
|
47
50
|
};
|
|
48
51
|
}
|
|
49
52
|
};
|
|
50
|
-
var _default = INITIAL_STATE;
|
|
51
|
-
exports["default"] = _default;
|
|
53
|
+
var _default = exports["default"] = INITIAL_STATE;
|
|
@@ -24,7 +24,7 @@ var LunaticContext = /*#__PURE__*/(0, _react.createContext)({
|
|
|
24
24
|
});
|
|
25
25
|
/** Provide `missing` `missingStrategy`, `shortcut` and `missingShortcut`, `dontKnowButton`, `refusedButton` to Missing component
|
|
26
26
|
* to manage non-response buttons and shortcut */
|
|
27
|
-
var useLunaticMissing = function useLunaticMissing() {
|
|
27
|
+
var useLunaticMissing = exports.useLunaticMissing = function useLunaticMissing() {
|
|
28
28
|
var _useContext = (0, _react.useContext)(LunaticContext),
|
|
29
29
|
missing = _useContext.missing,
|
|
30
30
|
missingStrategy = _useContext.missingStrategy,
|
|
@@ -43,17 +43,14 @@ var useLunaticMissing = function useLunaticMissing() {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
/** Return custom elements list to override native components */
|
|
46
|
-
exports.
|
|
47
|
-
var useLunaticCustom = function useLunaticCustom() {
|
|
46
|
+
var useLunaticCustom = exports.useLunaticCustom = function useLunaticCustom() {
|
|
48
47
|
return (0, _react.useContext)(LunaticContext).custom;
|
|
49
48
|
};
|
|
50
49
|
|
|
51
50
|
/** Provide `management` to display data states [COLLECTED,EDITED,FORCED] */
|
|
52
|
-
exports.
|
|
53
|
-
var useLunaticManagement = function useLunaticManagement() {
|
|
51
|
+
var useLunaticManagement = exports.useLunaticManagement = function useLunaticManagement() {
|
|
54
52
|
return (0, _react.useContext)(LunaticContext).management;
|
|
55
53
|
};
|
|
56
|
-
exports.useLunaticManagement = useLunaticManagement;
|
|
57
54
|
function createLunaticProvider(_ref) {
|
|
58
55
|
var custom = _ref.custom,
|
|
59
56
|
management = _ref.management,
|
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.autoExploreLoop = autoExploreLoop;
|
|
7
7
|
var _page = require("../../commons/page");
|
|
8
|
-
function _typeof(
|
|
9
|
-
function ownKeys(
|
|
10
|
-
function _objectSpread(
|
|
8
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
11
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
12
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
13
13
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isLoopComponent = void 0;
|
|
7
|
-
var isLoopComponent = function isLoopComponent(component) {
|
|
7
|
+
var isLoopComponent = exports.isLoopComponent = function isLoopComponent(component) {
|
|
8
8
|
return ['Loop', 'RosterForLoop'].includes(component.componentType);
|
|
9
|
-
};
|
|
10
|
-
exports.isLoopComponent = isLoopComponent;
|
|
9
|
+
};
|
|
@@ -9,7 +9,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
9
9
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
10
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
11
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
12
|
-
function _iterableToArrayLimit(
|
|
12
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
13
13
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
14
|
function validateLoopConditionFilter(state, _ref) {
|
|
15
15
|
var next = _ref.next,
|