@inseefr/lunatic 0.2.3-experimental → 0.2.3-prisme

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.
Files changed (230) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +25 -23
  3. package/lib/index.js +1191 -475
  4. package/lib/index.js.map +1 -1
  5. package/package.json +174 -172
  6. package/src/components/breadcrumb/breadcrumb.scss +22 -22
  7. package/src/components/checkbox/boolean.js +172 -172
  8. package/src/components/checkbox/checkbox.scss +73 -73
  9. package/src/components/checkbox/group.js +231 -231
  10. package/src/components/checkbox/one.js +11 -11
  11. package/src/components/component-wrapper/controls/component.js +70 -0
  12. package/src/components/component-wrapper/controls/controls.scss +6 -0
  13. package/src/components/component-wrapper/controls/index.js +1 -0
  14. package/src/components/component-wrapper/controls/validators/datepicker.js +44 -0
  15. package/src/components/component-wrapper/controls/validators/index.js +16 -0
  16. package/src/components/component-wrapper/controls/validators/input-number.js +23 -0
  17. package/src/components/{missing-wrapper → component-wrapper}/index.js +0 -0
  18. package/src/components/component-wrapper/missing/component.js +200 -0
  19. package/src/components/component-wrapper/missing/index.js +1 -0
  20. package/src/components/{missing-wrapper → component-wrapper/missing}/missing.scss +32 -32
  21. package/src/components/component-wrapper/wrapper.js +23 -0
  22. package/src/components/components.js +1 -0
  23. package/src/components/datepicker/component.js +26 -11
  24. package/src/components/declarations/component.js +46 -46
  25. package/src/components/declarations/declarations.scss +40 -40
  26. package/src/components/declarations/wrappers/input-declarations-wrapper.js +328 -274
  27. package/src/components/declarations/wrappers/simple-declarations-wrapper.js +54 -54
  28. package/src/components/dropdown/commons/actions.js +65 -56
  29. package/src/components/dropdown/commons/children-to-option.js +9 -9
  30. package/src/components/dropdown/commons/cleaner-callbacks.js +58 -58
  31. package/src/components/dropdown/commons/components/dropdown-container.js +29 -29
  32. package/src/components/dropdown/commons/components/dropdown.js +204 -183
  33. package/src/components/dropdown/commons/event-callbacks/on-mousedown-callback.js +15 -15
  34. package/src/components/dropdown/commons/reducer.js +3 -0
  35. package/src/components/dropdown/commons/tools/index.js +17 -17
  36. package/src/components/dropdown/component.js +135 -135
  37. package/src/components/dropdown/dropdown-edit/dropdown-edit.js +194 -185
  38. package/src/components/dropdown/dropdown-edit/index.js +11 -11
  39. package/src/components/dropdown/dropdown-simple/dropdown.js +173 -164
  40. package/src/components/dropdown/dropdown-simple/index.js +20 -20
  41. package/src/components/dropdown/dropdown.scss +178 -178
  42. package/src/components/icon/icon.scss +15 -15
  43. package/src/components/index.js +2 -0
  44. package/src/components/index.scss +177 -175
  45. package/src/components/input/input-number.js +30 -54
  46. package/src/components/input/input.js +11 -11
  47. package/src/components/input/input.scss +31 -37
  48. package/src/components/loop/component.js +170 -169
  49. package/src/components/loop/loop.scss +13 -13
  50. package/src/components/loop/wrapper.js +1 -1
  51. package/src/components/loop-constructor/block/block.scss +10 -10
  52. package/src/components/loop-constructor/block/component.js +9 -9
  53. package/src/components/loop-constructor/roster/component.js +8 -8
  54. package/src/components/loop-constructor/wrapper/body-component.js +146 -125
  55. package/src/components/loop-constructor/wrapper/component.js +190 -190
  56. package/src/components/modal/component.js +36 -0
  57. package/src/components/modal/index.js +1 -0
  58. package/src/components/modal/modal.scss +33 -0
  59. package/src/components/progress-bar/progress-bar.scss +54 -54
  60. package/src/components/radio/component.js +9 -9
  61. package/src/components/radio/radio.scss +59 -59
  62. package/src/components/sequence/component.js +50 -50
  63. package/src/components/sequence/sequence.scss +10 -10
  64. package/src/components/subsequence/component.js +49 -49
  65. package/src/components/suggester/check-store.js +2 -4
  66. package/src/components/suggester/components/panel/default-option-renderer.js +27 -27
  67. package/src/components/suggester/components/panel/option-container.js +61 -61
  68. package/src/components/suggester/components/panel/panel.js +47 -47
  69. package/src/components/suggester/components/selection/default-label-renderer.js +31 -31
  70. package/src/components/suggester/components/selection/label.js +35 -35
  71. package/src/components/suggester/components/selection/selection.js +50 -50
  72. package/src/components/suggester/components/suggester-content.js +2 -2
  73. package/src/components/suggester/components/suggester.js +128 -88
  74. package/src/components/suggester/components/suggester.scss +101 -101
  75. package/src/components/suggester/default-style.scss +125 -125
  76. package/src/components/suggester/find-best-label/find-best-label.js +51 -49
  77. package/src/components/suggester/find-best-label/index.js +1 -1
  78. package/src/components/suggester/idb-suggester.js +73 -67
  79. package/src/components/suggester/lunatic-suggester.js +140 -137
  80. package/src/components/suggester/searching/create-searching.js +49 -47
  81. package/src/components/suggester/searching/index.js +1 -1
  82. package/src/components/suggester/state-management/actions.js +38 -38
  83. package/src/components/suggester/state-management/reducer/reduce-on-delete-search.js +11 -11
  84. package/src/components/suggester/state-management/reducer/reduce-on-init.js +29 -29
  85. package/src/components/suggester/state-management/reducer/reducer.js +38 -38
  86. package/src/components/suggester/suggester-wrapper.js +127 -121
  87. package/src/components/suggester-loader-widget/loader.js +67 -67
  88. package/src/components/suggester-loader-widget/widget.js +123 -123
  89. package/src/components/table/table.js +173 -171
  90. package/src/components/table/table.scss +26 -26
  91. package/src/components/textarea/component.js +11 -11
  92. package/src/components/textarea/textarea.scss +8 -8
  93. package/src/components/tooltip/tooltip.scss +30 -30
  94. package/src/stories/breadcrumb/breadcrumb.stories.js +21 -21
  95. package/src/stories/checkbox-boolean/data.json +78 -78
  96. package/src/stories/datepicker/data.json +3 -1
  97. package/src/stories/declarations/declarations.stories.js +116 -116
  98. package/src/stories/dropdown/README.md +44 -44
  99. package/src/stories/dropdown/data.json +98 -98
  100. package/src/stories/dropdown/dropdown.stories.js +89 -89
  101. package/src/stories/progress-bar/progress-bar.stories.js +24 -24
  102. package/src/stories/questionnaire/arithmetic-management.json +47 -0
  103. package/src/stories/questionnaire/arithmetic.json +247 -247
  104. package/src/stories/questionnaire/calc-var.json +187 -187
  105. package/src/stories/questionnaire/data-logement.json +2691 -2691
  106. package/src/stories/questionnaire/kish.json +275 -0
  107. package/src/stories/questionnaire/logement-queen.json +23390 -0
  108. package/src/stories/questionnaire/logement-s2.json +46028 -44537
  109. package/src/stories/questionnaire/logement-sequence.json +26741 -26741
  110. package/src/stories/questionnaire/logement.json +21073 -26813
  111. package/src/stories/questionnaire/loop-and-controls.json +481 -0
  112. package/src/stories/questionnaire/questionnaire.stories.js +236 -154
  113. package/src/stories/questionnaire/update-external/data.json +1 -0
  114. package/src/stories/questionnaire/update-external/questionnaire.json +75 -0
  115. package/src/stories/sequence/sequence.stories.js +32 -32
  116. package/src/stories/subsequence/subsequence.stories.js +32 -32
  117. package/src/stories/suggester/README.md +46 -46
  118. package/src/stories/suggester/bailleurs-sociaux/fetch-bailleurs.js +15 -15
  119. package/src/stories/suggester/bailleurs-sociaux/index.js +2 -2
  120. package/src/stories/suggester/bailleurs-sociaux/option-bailleur-renderer.js +58 -58
  121. package/src/stories/suggester/bailleurs-sociaux/preloader.svg +51 -51
  122. package/src/stories/suggester/bailleurs-sociaux/theme.scss +22 -22
  123. package/src/stories/suggester/bailleurs-sociaux-2021/fetch-bailleurs.js +12 -0
  124. package/src/stories/suggester/bailleurs-sociaux-2021/index.js +1 -0
  125. package/src/stories/suggester/cog-communes/fetch-cog.js +15 -15
  126. package/src/stories/suggester/data-auto.json +232 -231
  127. package/src/stories/suggester/data-vtl.json +82 -82
  128. package/src/stories/suggester/data.json +169 -136
  129. package/src/stories/suggester/naf-rev2/index.js +2 -2
  130. package/src/stories/suggester/naf-rev2/option-naf-renderer.js +17 -17
  131. package/src/stories/suggester/suggester-workers.stories.js +226 -179
  132. package/src/stories/suggester/suggester.stories.js +138 -133
  133. package/src/stories/utils/orchestrator-split.js +119 -0
  134. package/src/stories/utils/orchestrator.js +119 -108
  135. package/src/tests/components/input-number.spec.js +6 -12
  136. package/src/tests/components/loops/roster-loop.json +71 -71
  137. package/src/tests/components/missing-wrapper.spec.js +0 -1
  138. package/src/tests/utils/lib/table/roster.spec.js +25 -25
  139. package/src/tests/utils/to-expose/handler/results/res-input-edited.json +1 -1
  140. package/src/tests/utils/to-expose/init-questionnaire/questionnaire.json +148 -148
  141. package/src/tests/utils/to-expose/init-questionnaire/result.json +181 -181
  142. package/src/utils/components/dragger/dragger.scss +7 -7
  143. package/src/utils/idb-tools/create-db-opener.js +43 -43
  144. package/src/utils/idb-tools/create-open-db.js +25 -25
  145. package/src/utils/idb-tools/idb-bulk-insert.js +96 -96
  146. package/src/utils/idb-tools/index.js +10 -10
  147. package/src/utils/idb-tools/insert-entity.js +15 -15
  148. package/src/utils/idb-tools/open-db.js +13 -13
  149. package/src/utils/idb-tools/open-or-create-db.js +34 -34
  150. package/src/utils/lib/controls/index.js +1 -0
  151. package/src/utils/lib/controls/utils.js +152 -0
  152. package/src/utils/lib/decorator/title-decorator.js +16 -16
  153. package/src/utils/lib/env.js +2 -2
  154. package/src/utils/lib/index.js +2 -0
  155. package/src/utils/lib/input-number.js +1 -1
  156. package/src/utils/lib/options-positioning.js +9 -9
  157. package/src/utils/lib/pagination/navigation/shared.js +256 -253
  158. package/src/utils/lib/prop-types/lines.js +6 -6
  159. package/src/utils/lib/responses.js +11 -9
  160. package/src/utils/lib/splitting.js +142 -0
  161. package/src/utils/lib/style.js +10 -10
  162. package/src/utils/store-tools/auto-load.js +74 -73
  163. package/src/utils/suggester-workers/append-to-index/append.js +25 -25
  164. package/src/utils/suggester-workers/append-to-index/append.worker.js +16 -16
  165. package/src/utils/suggester-workers/append-to-index/create-append-task.js +45 -43
  166. package/src/utils/suggester-workers/append-to-index/index.js +2 -2
  167. package/src/utils/suggester-workers/append-to-index/prepare-entities.js +61 -61
  168. package/src/utils/suggester-workers/append-to-index/store-messages.js +21 -21
  169. package/src/utils/suggester-workers/commons-tokenizer/create-entity-tokenizer.js +56 -0
  170. package/src/utils/suggester-workers/commons-tokenizer/create-fields-tokenizer.js +56 -0
  171. package/src/utils/suggester-workers/commons-tokenizer/create-filter-stop-words.js +17 -17
  172. package/src/utils/suggester-workers/commons-tokenizer/filters/compose-filters.js +10 -0
  173. package/src/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.js +17 -0
  174. package/src/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.spec.js +14 -0
  175. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-accents.js +12 -0
  176. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-accents.spec.js +12 -0
  177. package/src/utils/suggester-workers/commons-tokenizer/{filter-double.js → filters/filter-double.js} +12 -12
  178. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-double.spec.js +20 -0
  179. package/src/utils/suggester-workers/commons-tokenizer/{filter-length.js → filters/filter-length.js} +7 -7
  180. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-length.spec.js +18 -0
  181. package/src/utils/suggester-workers/commons-tokenizer/{filter-stemmer.js → filters/filter-stemmer.js} +13 -13
  182. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.spec.js +12 -0
  183. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.js +36 -0
  184. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.spec.js +12 -0
  185. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.js +10 -0
  186. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.spec.js +12 -0
  187. package/src/utils/suggester-workers/commons-tokenizer/filters/index.js +2 -0
  188. package/src/utils/suggester-workers/commons-tokenizer/{stop-words.js → filters/stop-words.js} +118 -118
  189. package/src/utils/suggester-workers/commons-tokenizer/get-regexp-from-pattern.js +8 -8
  190. package/src/utils/suggester-workers/commons-tokenizer/get-stemmer.js +18 -18
  191. package/src/utils/suggester-workers/commons-tokenizer/index.js +9 -8
  192. package/src/utils/suggester-workers/commons-tokenizer/prepare-string-indexation.js +13 -9
  193. package/src/utils/suggester-workers/commons-tokenizer/soft-tokenizer.js +7 -7
  194. package/src/utils/suggester-workers/create-worker.js +56 -0
  195. package/src/utils/suggester-workers/find-best-label/find-best-label.js +39 -39
  196. package/src/utils/suggester-workers/find-best-label/find-best-label.worker.js +40 -40
  197. package/src/utils/suggester-workers/find-best-label/tokenize.js +30 -33
  198. package/src/utils/suggester-workers/find-best-label/tokenize.spec.js +19 -19
  199. package/src/utils/suggester-workers/searching/compute-score.js +33 -33
  200. package/src/utils/suggester-workers/searching/get-db.js +18 -18
  201. package/src/utils/suggester-workers/searching/index.js +1 -1
  202. package/src/utils/suggester-workers/searching/order/create-alphanumeric-orderer.js +20 -20
  203. package/src/utils/suggester-workers/searching/order/index.js +19 -19
  204. package/src/utils/suggester-workers/{query-parser → searching/query-parser}/index.js +2 -2
  205. package/src/utils/suggester-workers/searching/query-parser/query-parser-soft.js +7 -0
  206. package/src/utils/suggester-workers/{query-parser → searching/query-parser}/query-parser-soft.spec.js +24 -24
  207. package/src/utils/suggester-workers/searching/query-parser/query-parser-tokenized.js +34 -0
  208. package/src/utils/suggester-workers/searching/resolve-query-parser.js +27 -27
  209. package/src/utils/suggester-workers/searching/search-in-index.js +17 -17
  210. package/src/utils/suggester-workers/searching/searching.js +70 -70
  211. package/src/utils/suggester-workers/searching/searching.worker.js +11 -11
  212. package/src/utils/to-expose/calculated-variables.js +113 -113
  213. package/src/utils/to-expose/handler.js +149 -112
  214. package/src/utils/to-expose/hooks/filter-components.js +27 -12
  215. package/src/utils/to-expose/hooks/index.js +2 -1
  216. package/src/utils/to-expose/hooks/lunatic-split.js +428 -0
  217. package/src/utils/to-expose/hooks/lunatic.js +284 -188
  218. package/src/utils/to-expose/index.js +1 -1
  219. package/src/utils/to-expose/init-questionnaire.js +164 -164
  220. package/src/utils/to-expose/interpret/vtl.js +18 -18
  221. package/src/utils/to-expose/state.js +66 -58
  222. package/src/components/missing-wrapper/component.js +0 -120
  223. package/src/components/missing-wrapper/wrapper.js +0 -10
  224. package/src/tests/utils/to-expose/hooks/use-lunatic.spec.js +0 -46
  225. package/src/utils/suggester-workers/commons-tokenizer/create-tokenizer.js +0 -103
  226. package/src/utils/suggester-workers/commons-tokenizer/filter-accents-to-lower.js +0 -9
  227. package/src/utils/suggester-workers/commons-tokenizer/filter-synonyms.js +0 -10
  228. package/src/utils/suggester-workers/query-parser/query-parser-soft.js +0 -7
  229. package/src/utils/suggester-workers/query-parser/query-parser-tokenized.js +0 -31
  230. package/src/utils/suggester-workers/query-parser/query-parser-tokenized.spec.js +0 -32
@@ -1,96 +1,96 @@
1
- const BULK_LIMIT = 300;
2
-
3
- export const BULK_INSERT_MESSAGES = {
4
- bulkInsertComplete: { type: 'bulk-insert/complete' },
5
- bulkInsertFinished: { type: 'bulk-insert/finished' },
6
- bulkInsertError: { type: 'bulk-insert/error' },
7
- };
8
-
9
- /* */
10
- const pushTask = (store, transaction) => ([first, ...rest] = []) => {
11
- if (first) {
12
- const request = store.add(first);
13
- request.onsuccess = () => {
14
- if (rest.length) {
15
- pushTask(store, transaction)(rest);
16
- }
17
- };
18
-
19
- request.onerror = (e) => {
20
- throw e;
21
- };
22
- }
23
- };
24
-
25
- /* */
26
- function split(entities, limit = BULK_LIMIT) {
27
- return entities.reduce(
28
- ([f, ...r], n, i) => {
29
- return (i + 1) % limit === 0 ? [[n], f, ...r] : [[n, ...f], ...r];
30
- },
31
- [[]]
32
- );
33
- }
34
-
35
- /* */
36
- const bulkPush = (db, name, hook, resolve, reject, max) => (
37
- lot,
38
- i = 0,
39
- treated = 0
40
- ) => {
41
- const [first, ...rest] = lot;
42
- try {
43
- if (first) {
44
- const transaction = db.transaction(name, 'readwrite');
45
- const store = transaction.objectStore(name);
46
- pushTask(store, transaction)(first);
47
- transaction.oncomplete = function () {
48
- const nextTreated = treated + first.length;
49
- hook({
50
- message: {
51
- ...BULK_INSERT_MESSAGES.bulkInsertComplete,
52
- nb: first.length,
53
- treated: nextTreated,
54
- step: i,
55
- max,
56
- percent: Math.round((nextTreated / max) * 100),
57
- },
58
- });
59
- bulkPush(
60
- db,
61
- name,
62
- hook,
63
- resolve,
64
- reject,
65
- max
66
- )(rest, i + 1, nextTreated);
67
- };
68
- transaction.onerror = function (e) {
69
- hook({ message: BULK_INSERT_MESSAGES.bulkInsertError, error: e });
70
- reject(e);
71
- };
72
- } else {
73
- hook({ message: BULK_INSERT_MESSAGES.bulkInsertFinished });
74
- resolve('success');
75
- }
76
- } catch (e) {
77
- hook({ message: BULK_INSERT_MESSAGES.bulkInsertError });
78
- reject(e);
79
- }
80
- };
81
-
82
- /* */
83
- function bulkInsert(db, store, hook = () => null) {
84
- return (entities = []) => {
85
- const lots = split(entities, BULK_LIMIT);
86
- return new Promise((resolve, reject) => {
87
- try {
88
- bulkPush(db, store, hook, resolve, reject, entities.length)(lots);
89
- } catch (e) {
90
- reject(e);
91
- }
92
- });
93
- };
94
- }
95
-
96
- export default bulkInsert;
1
+ const BULK_LIMIT = 300;
2
+
3
+ export const BULK_INSERT_MESSAGES = {
4
+ bulkInsertComplete: { type: 'bulk-insert/complete' },
5
+ bulkInsertFinished: { type: 'bulk-insert/finished' },
6
+ bulkInsertError: { type: 'bulk-insert/error' },
7
+ };
8
+
9
+ /* */
10
+ const pushTask = (store, transaction) => ([first, ...rest] = []) => {
11
+ if (first) {
12
+ const request = store.add(first);
13
+ request.onsuccess = () => {
14
+ if (rest.length) {
15
+ pushTask(store, transaction)(rest);
16
+ }
17
+ };
18
+
19
+ request.onerror = (e) => {
20
+ throw e;
21
+ };
22
+ }
23
+ };
24
+
25
+ /* */
26
+ function split(entities, limit = BULK_LIMIT) {
27
+ return entities.reduce(
28
+ ([f, ...r], n, i) => {
29
+ return (i + 1) % limit === 0 ? [[n], f, ...r] : [[n, ...f], ...r];
30
+ },
31
+ [[]]
32
+ );
33
+ }
34
+
35
+ /* */
36
+ const bulkPush = (db, name, hook, resolve, reject, max) => (
37
+ lot,
38
+ i = 0,
39
+ treated = 0
40
+ ) => {
41
+ const [first, ...rest] = lot;
42
+ try {
43
+ if (first) {
44
+ const transaction = db.transaction(name, 'readwrite');
45
+ const store = transaction.objectStore(name);
46
+ pushTask(store, transaction)(first);
47
+ transaction.oncomplete = function () {
48
+ const nextTreated = treated + first.length;
49
+ hook({
50
+ message: {
51
+ ...BULK_INSERT_MESSAGES.bulkInsertComplete,
52
+ nb: first.length,
53
+ treated: nextTreated,
54
+ step: i,
55
+ max,
56
+ percent: Math.round((nextTreated / max) * 100),
57
+ },
58
+ });
59
+ bulkPush(
60
+ db,
61
+ name,
62
+ hook,
63
+ resolve,
64
+ reject,
65
+ max
66
+ )(rest, i + 1, nextTreated);
67
+ };
68
+ transaction.onerror = function (e) {
69
+ hook({ message: BULK_INSERT_MESSAGES.bulkInsertError, error: e });
70
+ reject(e);
71
+ };
72
+ } else {
73
+ hook({ message: BULK_INSERT_MESSAGES.bulkInsertFinished });
74
+ resolve('success');
75
+ }
76
+ } catch (e) {
77
+ hook({ message: BULK_INSERT_MESSAGES.bulkInsertError });
78
+ reject(e);
79
+ }
80
+ };
81
+
82
+ /* */
83
+ function bulkInsert(db, store, hook = () => null) {
84
+ return (entities = []) => {
85
+ const lots = split(entities, BULK_LIMIT);
86
+ return new Promise((resolve, reject) => {
87
+ try {
88
+ bulkPush(db, store, hook, resolve, reject, entities.length)(lots);
89
+ } catch (e) {
90
+ reject(e);
91
+ }
92
+ });
93
+ };
94
+ }
95
+
96
+ export default bulkInsert;
@@ -1,10 +1,10 @@
1
- export { default as openDb } from './open-db';
2
- export { default as clearDb } from './clear-store';
3
- export { default as getIDB } from './get-idb';
4
- export { default as getEntity } from './get-entity';
5
- export { default as insertEntity } from './insert-entity';
6
- export { default as openOnCreateDb } from './open-or-create-db';
7
- export {
8
- default as idbBulkInsert,
9
- BULK_INSERT_MESSAGES,
10
- } from './idb-bulk-insert';
1
+ export { default as openDb } from './open-db';
2
+ export { default as clearDb } from './clear-store';
3
+ export { default as getIDB } from './get-idb';
4
+ export { default as getEntity } from './get-entity';
5
+ export { default as insertEntity } from './insert-entity';
6
+ export { default as openOnCreateDb } from './open-or-create-db';
7
+ export {
8
+ default as idbBulkInsert,
9
+ BULK_INSERT_MESSAGES,
10
+ } from './idb-bulk-insert';
@@ -1,15 +1,15 @@
1
- function insert(db, storeName, entity) {
2
- return new Promise(function (resolve, reject) {
3
- const transaction = db.transaction(storeName, 'readwrite');
4
- const store = transaction.objectStore(storeName);
5
- const request = store.add(entity);
6
- request.onsuccess = () => {
7
- resolve('success');
8
- };
9
- request.onerror = (e) => {
10
- reject(e);
11
- };
12
- });
13
- }
14
-
15
- export default insert;
1
+ function insert(db, storeName, entity) {
2
+ return new Promise(function (resolve, reject) {
3
+ const transaction = db.transaction(storeName, 'readwrite');
4
+ const store = transaction.objectStore(storeName);
5
+ const request = store.add(entity);
6
+ request.onsuccess = () => {
7
+ resolve('success');
8
+ };
9
+ request.onerror = (e) => {
10
+ reject(e);
11
+ };
12
+ });
13
+ }
14
+
15
+ export default insert;
@@ -1,13 +1,13 @@
1
- /* eslint-disable no-restricted-globals */
2
- import createDbOpener from './create-db-opener';
3
-
4
- function onUpgradeNeeded(e, _, reject) {
5
- e.target.transaction.abort();
6
- reject({ message: 'base seems to need an upgrade!' });
7
- }
8
-
9
- function onSuccess(e, resolve) {
10
- resolve(e.target.result);
11
- }
12
-
13
- export default createDbOpener({ onUpgradeNeeded, onSuccess });
1
+ /* eslint-disable no-restricted-globals */
2
+ import createDbOpener from './create-db-opener';
3
+
4
+ function onUpgradeNeeded(e, _, reject) {
5
+ e.target.transaction.abort();
6
+ reject({ message: 'base seems to need an upgrade!' });
7
+ }
8
+
9
+ function onSuccess(e, resolve) {
10
+ resolve(e.target.result);
11
+ }
12
+
13
+ export default createDbOpener({ onUpgradeNeeded, onSuccess });
@@ -1,34 +1,34 @@
1
- /* eslint-disable no-restricted-globals */
2
- import CONSTANTE from '../store-tools/constantes';
3
- import createDbOpener from './create-db-opener';
4
-
5
- function onUpgradeNeeded(e, resolve, reject) {
6
- try {
7
- e.target.onsuccess = function () {
8
- // Block success event!
9
- };
10
- const db = e.target.result;
11
- const store = db.createObjectStore(CONSTANTE.STORE_DATA_NAME, {
12
- keyPath: 'id',
13
- });
14
- db.createObjectStore(CONSTANTE.STORE_INFO_NAME, {
15
- keyPath: 'name',
16
- });
17
- store.createIndex(CONSTANTE.STORE_INDEX_NAME, 'tokens', {
18
- multiEntry: true,
19
- });
20
-
21
- const txn = e.target.transaction;
22
- txn.oncomplete = function () {
23
- resolve(db);
24
- };
25
- } catch (e) {
26
- reject(e);
27
- }
28
- }
29
-
30
- function onSuccess(e, resolve) {
31
- resolve(e.target.result);
32
- }
33
-
34
- export default createDbOpener({ onUpgradeNeeded, onSuccess });
1
+ /* eslint-disable no-restricted-globals */
2
+ import CONSTANTE from '../store-tools/constantes';
3
+ import createDbOpener from './create-db-opener';
4
+
5
+ function onUpgradeNeeded(e, resolve, reject) {
6
+ try {
7
+ e.target.onsuccess = function () {
8
+ // Block success event!
9
+ };
10
+ const db = e.target.result;
11
+ const store = db.createObjectStore(CONSTANTE.STORE_DATA_NAME, {
12
+ keyPath: 'id',
13
+ });
14
+ db.createObjectStore(CONSTANTE.STORE_INFO_NAME, {
15
+ keyPath: 'name',
16
+ });
17
+ store.createIndex(CONSTANTE.STORE_INDEX_NAME, 'tokens', {
18
+ multiEntry: true,
19
+ });
20
+
21
+ const txn = e.target.transaction;
22
+ txn.oncomplete = function () {
23
+ resolve(db);
24
+ };
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ }
29
+
30
+ function onSuccess(e, resolve) {
31
+ resolve(e.target.result);
32
+ }
33
+
34
+ export default createDbOpener({ onUpgradeNeeded, onSuccess });
@@ -0,0 +1 @@
1
+ export * from './utils';
@@ -0,0 +1,152 @@
1
+ import { buildLoopBindings } from '../loops';
2
+ import { interpret } from '../../to-expose/interpret';
3
+ import { splitPage } from '..';
4
+ import { getTypeControls } from '../../../components/component-wrapper/controls/validators';
5
+
6
+ export const getControls = ({
7
+ page,
8
+ components,
9
+ bindings,
10
+ features,
11
+ preferences,
12
+ }) =>
13
+ getControlsFromComponents({
14
+ page,
15
+ components,
16
+ depth: 1,
17
+ bindings,
18
+ features,
19
+ preferences,
20
+ });
21
+
22
+ const getControlsFromComponents = ({
23
+ page,
24
+ depth,
25
+ components,
26
+ bindings,
27
+ features,
28
+ preferences,
29
+ }) => {
30
+ const { currentIteration, currentPageWithoutAnyIteration } = splitPage(
31
+ page,
32
+ depth
33
+ );
34
+ return components.reduce((acc, component) => {
35
+ const {
36
+ controls,
37
+ componentType,
38
+ components: loopComponents,
39
+ page: componentPage,
40
+ paginatedLoop,
41
+ } = component;
42
+ if (componentType === 'Loop') {
43
+ const { bindingDependencies: bindingDependenciesLoop } = component;
44
+ const rootLoopBindings = getReducedBindings(
45
+ bindingDependenciesLoop,
46
+ bindings
47
+ );
48
+ let loopBindings = {};
49
+ if (paginatedLoop) {
50
+ loopBindings = buildLoopBindings(currentIteration - 1)(
51
+ Object.entries(rootLoopBindings)
52
+ );
53
+ return [
54
+ ...acc,
55
+ ...getControlsFromComponents({
56
+ page,
57
+ components: loopComponents,
58
+ bindings: loopBindings,
59
+ features,
60
+ depth: depth + 1,
61
+ preferences,
62
+ }),
63
+ ];
64
+ } else {
65
+ const {
66
+ loopDependencies,
67
+ lines: { min },
68
+ } = component;
69
+ const iterationsStr = loopDependencies
70
+ ? bindings[loopDependencies[0]]
71
+ : min;
72
+ const iterations = parseInt(iterationsStr, 10);
73
+ const ctrls = [...Array(iterations).keys()].reduce((accIt, i) => {
74
+ loopBindings = buildLoopBindings(i)(Object.entries(rootLoopBindings));
75
+ return [
76
+ ...accIt,
77
+ ...getControlsFromComponents({
78
+ page,
79
+ components: loopComponents,
80
+ bindings: loopBindings,
81
+ features,
82
+ depth: depth,
83
+ preferences,
84
+ }),
85
+ ];
86
+ }, []);
87
+ return [...acc, ...ctrls];
88
+ }
89
+ }
90
+ if (currentPageWithoutAnyIteration === componentPage) {
91
+ if (controls) {
92
+ const interpretedControls = controls.reduce(
93
+ (
94
+ iC,
95
+ { id, control, errorMessage, criticality, bindingDependencies }
96
+ ) => {
97
+ const reducedBindings = getReducedBindings(
98
+ bindingDependencies,
99
+ bindings
100
+ );
101
+ const interpretedControl =
102
+ interpret(features)(reducedBindings)(control);
103
+ if (!interpretedControl)
104
+ return [...iC, { id, errorMessage, criticality }];
105
+ return iC;
106
+ },
107
+ []
108
+ );
109
+ if (!['InputNumber', 'Datepicker'].includes(componentType))
110
+ return [...acc, ...interpretedControls];
111
+ else {
112
+ const {
113
+ response: { name },
114
+ } = component;
115
+ const value = bindings[name];
116
+ const typeControls = getTypeControls({
117
+ ...component,
118
+ value,
119
+ preferences,
120
+ });
121
+
122
+ if (!typeControls) return [...acc, ...interpretedControls];
123
+ return [
124
+ ...acc,
125
+ { ...typeControls, criticality: 'LOCK' },
126
+ ...interpretedControls,
127
+ ];
128
+ }
129
+ }
130
+ if (['InputNumber', 'Datepicker'].includes(componentType)) {
131
+ const {
132
+ response: { name },
133
+ } = component;
134
+ const value = bindings[name];
135
+ const typeControls = getTypeControls({
136
+ ...component,
137
+ value,
138
+ preferences,
139
+ });
140
+ if (!typeControls) return [...acc];
141
+ return [...acc, { ...typeControls, criticality: 'LOCK' }];
142
+ }
143
+ }
144
+ return acc;
145
+ }, []);
146
+ };
147
+
148
+ const getReducedBindings = (bindingDependencies, bindings) =>
149
+ (bindingDependencies || []).reduce(
150
+ (accB, bD) => ({ ...accB, [bD]: bindings[bD] }),
151
+ {}
152
+ );
@@ -1,16 +1,16 @@
1
- import React from 'react';
2
-
3
- const titleDecorator = WrappedComponent => {
4
- const TitleComponent = props => {
5
- const { title } = props;
6
- return (
7
- <>
8
- <h1>{title}</h1>
9
- <WrappedComponent />
10
- </>
11
- );
12
- };
13
- return TitleComponent;
14
- };
15
-
16
- export default titleDecorator;
1
+ import React from 'react';
2
+
3
+ const titleDecorator = WrappedComponent => {
4
+ const TitleComponent = props => {
5
+ const { title } = props;
6
+ return (
7
+ <>
8
+ <h1>{title}</h1>
9
+ <WrappedComponent />
10
+ </>
11
+ );
12
+ };
13
+ return TitleComponent;
14
+ };
15
+
16
+ export default titleDecorator;
@@ -1,2 +1,2 @@
1
- export const isDev =
2
- !process.env.NODE_ENV || process.env.NODE_ENV === 'development';
1
+ export const isDev = false;
2
+ // !process.env.NODE_ENV || process.env.NODE_ENV === 'development';
@@ -1,6 +1,7 @@
1
1
  export { getAlphabet } from './alphabet';
2
2
  export * from './array';
3
3
  export * from './checkbox';
4
+ export * from './controls';
4
5
  export { titleDecorator } from './decorator';
5
6
  export * from './env';
6
7
  export * from './input-number';
@@ -17,3 +18,4 @@ export * from './table';
17
18
  export * from './tooltip';
18
19
  export { isFunction } from './function';
19
20
  export { createObjectEvent } from './event';
21
+ export * from './splitting';
@@ -1,6 +1,6 @@
1
1
  export const isNumberValid = (num, decimals = 0) => {
2
2
  // \\ because of escaping, basic regex has only one \
3
3
  if (num.includes('.') && !decimals) return false;
4
- const regex = new RegExp(`^(-)?(0|[1-9]\\d*)(\\.(\\d){0,${decimals}})?$`);
4
+ const regex = new RegExp(`^(-)?(0|[1-9]\\d*)((\\.|,)(\\d){0,${decimals}})?$`);
5
5
  return regex.test(num);
6
6
  };
@@ -1,9 +1,9 @@
1
- export const getItemsPositioningClass = positioning => {
2
- switch (positioning) {
3
- case 'HORIZONTAL':
4
- return 'horizontal-options';
5
- case 'VERTICAL':
6
- default:
7
- return '';
8
- }
9
- };
1
+ export const getItemsPositioningClass = positioning => {
2
+ switch (positioning) {
3
+ case 'HORIZONTAL':
4
+ return 'horizontal-options';
5
+ case 'VERTICAL':
6
+ default:
7
+ return '';
8
+ }
9
+ };