@inseefr/lunatic 2.0.0 → 2.0.1-v2

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 (737) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +25 -22
  3. package/lib/components/button/button.scss +24 -0
  4. package/lib/components/button/index.js +15 -0
  5. package/lib/components/button/lunatic-button.js +66 -0
  6. package/lib/components/checkbox/checkbox-boolean/checkbox-boolean.js +36 -0
  7. package/lib/components/checkbox/checkbox-boolean/index.js +15 -0
  8. package/lib/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +48 -0
  9. package/lib/components/checkbox/checkbox-group/checkbox-group.js +96 -0
  10. package/lib/components/checkbox/checkbox-group/checkbox.scss +4 -0
  11. package/lib/components/checkbox/checkbox-group/index.js +15 -0
  12. package/lib/components/checkbox/checkbox-group/lunatic-checkbox-group.js +42 -0
  13. package/lib/components/checkbox/checkbox-one/index.js +15 -0
  14. package/lib/components/checkbox/checkbox-one/lunatic-checkbox-one.js +39 -0
  15. package/lib/components/checkbox/commons/checkbox-option.js +68 -0
  16. package/lib/components/checkbox/commons/checkbox-option.scss +3 -0
  17. package/lib/components/checkbox/commons/index.js +15 -0
  18. package/lib/components/checkbox/index.js +31 -0
  19. package/lib/components/commons/build-style-object.js +36 -0
  20. package/lib/components/commons/components/combo-box/combo-box-container.js +37 -0
  21. package/lib/components/commons/components/combo-box/combo-box-content.js +73 -0
  22. package/lib/components/commons/components/combo-box/combo-box.js +222 -0
  23. package/lib/components/commons/components/combo-box/combo-box.scss +205 -0
  24. package/lib/components/commons/components/combo-box/index.js +15 -0
  25. package/lib/components/commons/components/combo-box/panel/index.js +15 -0
  26. package/lib/components/commons/components/combo-box/panel/option-container.js +77 -0
  27. package/lib/components/commons/components/combo-box/panel/panel-container.js +31 -0
  28. package/lib/components/commons/components/combo-box/panel/panel.js +70 -0
  29. package/lib/components/commons/components/combo-box/selection/delete.js +69 -0
  30. package/lib/components/commons/components/combo-box/selection/displayLabelOrInput.js +30 -0
  31. package/lib/components/commons/components/combo-box/selection/index.js +15 -0
  32. package/lib/components/commons/components/combo-box/selection/input.js +68 -0
  33. package/lib/components/commons/components/combo-box/selection/label-selection.js +39 -0
  34. package/lib/components/commons/components/combo-box/selection/selection-container.js +40 -0
  35. package/lib/components/commons/components/combo-box/selection/selection.js +71 -0
  36. package/lib/components/commons/components/combo-box/state-management/actions.js +98 -0
  37. package/lib/components/commons/components/combo-box/state-management/combo-box-context.js +20 -0
  38. package/lib/components/commons/components/combo-box/state-management/index.js +42 -0
  39. package/lib/components/commons/components/combo-box/state-management/initial-state.js +14 -0
  40. package/lib/components/commons/components/combo-box/state-management/reducer/index.js +15 -0
  41. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-blur.js +22 -0
  42. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-change.js +24 -0
  43. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-delete.js +23 -0
  44. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-focus.js +22 -0
  45. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-init.js +46 -0
  46. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/index.js +15 -0
  47. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/keyboard-key-codes.js +18 -0
  48. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-arrow-down.js +37 -0
  49. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-arrow-up.js +37 -0
  50. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-end.js +28 -0
  51. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-enter.js +23 -0
  52. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-escape.js +22 -0
  53. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-home.js +28 -0
  54. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/on-tab.js +22 -0
  55. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-keydown/reduce-on-keydown.js +59 -0
  56. package/lib/components/commons/components/combo-box/state-management/reducer/reduce-on-select.js +24 -0
  57. package/lib/components/commons/components/combo-box/state-management/reducer/reducer.js +63 -0
  58. package/lib/components/commons/components/create-lunatic-component/create-lunatic-component.js +75 -0
  59. package/lib/components/commons/components/create-lunatic-component/index.js +14 -0
  60. package/lib/components/commons/components/default-label-renderer.js +54 -0
  61. package/lib/components/commons/components/default-option-renderer.js +43 -0
  62. package/lib/components/commons/components/dragger/dragger.js +118 -0
  63. package/lib/components/commons/components/dragger/dragger.scss +8 -0
  64. package/lib/components/commons/components/dragger/index.js +15 -0
  65. package/lib/components/commons/components/errors/errors.js +55 -0
  66. package/lib/components/commons/components/errors/errors.scss +5 -0
  67. package/lib/components/commons/components/errors/index.js +15 -0
  68. package/lib/components/commons/components/fab/fab.js +56 -0
  69. package/lib/components/commons/components/fab/fab.scss +32 -0
  70. package/lib/components/commons/components/fab/index.js +15 -0
  71. package/lib/components/commons/components/field-container/field-container.js +48 -0
  72. package/lib/components/commons/components/field-container/field-container.scss +0 -0
  73. package/lib/components/commons/components/field-container/index.js +15 -0
  74. package/lib/components/commons/components/fieldset.js +26 -0
  75. package/lib/components/commons/components/fieldset.scss +5 -0
  76. package/lib/components/commons/components/html-table/index.js +55 -0
  77. package/lib/components/commons/components/html-table/table.js +38 -0
  78. package/lib/components/commons/components/html-table/tbody.js +38 -0
  79. package/lib/components/commons/components/html-table/td.js +50 -0
  80. package/lib/components/commons/components/html-table/th.js +48 -0
  81. package/lib/components/commons/components/html-table/thead.js +38 -0
  82. package/lib/components/commons/components/html-table/tr.js +40 -0
  83. package/lib/components/commons/components/is-network/index.js +15 -0
  84. package/lib/components/commons/components/is-network/is-network.js +70 -0
  85. package/lib/components/commons/components/is-network/use-online-status.js +55 -0
  86. package/lib/components/commons/components/label.js +35 -0
  87. package/lib/components/commons/components/lunatic-component.js +67 -0
  88. package/lib/components/commons/components/lunatic-fieldset-component.js +60 -0
  89. package/lib/components/commons/components/md-label/index.js +15 -0
  90. package/lib/components/commons/components/md-label/link.js +57 -0
  91. package/lib/components/commons/components/md-label/md-label.js +52 -0
  92. package/lib/components/commons/components/missing/index.js +15 -0
  93. package/lib/components/commons/components/missing/missing.js +90 -0
  94. package/lib/components/commons/components/missing/missing.scss +30 -0
  95. package/lib/components/commons/components/nothing-to-display.js +17 -0
  96. package/lib/components/commons/components/orchestrated-component.js +71 -0
  97. package/{src/components/tooltip → lib/components/commons/components/variable-status}/img/edited.png +0 -0
  98. package/{src/components/tooltip → lib/components/commons/components/variable-status}/img/forced.png +0 -0
  99. package/lib/components/commons/components/variable-status/img/index.js +23 -0
  100. package/lib/components/commons/components/variable-status/index.js +15 -0
  101. package/lib/components/commons/components/variable-status/variable-status.js +95 -0
  102. package/lib/components/commons/components/variable-status/variable-status.scss +39 -0
  103. package/lib/components/commons/create-customizable-field.js +38 -0
  104. package/lib/components/commons/create-row-orchestrator.js +60 -0
  105. package/lib/components/commons/icons/checkbox-checked.icon.js +41 -0
  106. package/lib/components/commons/icons/checkbox-unchecked.icon.js +41 -0
  107. package/lib/components/commons/icons/closed.icon.js +38 -0
  108. package/lib/components/commons/icons/cross.icon.js +38 -0
  109. package/lib/components/commons/icons/index.js +87 -0
  110. package/lib/components/commons/icons/load.icon.js +38 -0
  111. package/lib/components/commons/icons/lunatic-icon.js +25 -0
  112. package/lib/components/commons/icons/lunatic-icon.scss +3 -0
  113. package/lib/components/commons/icons/network.icon.js +38 -0
  114. package/lib/components/commons/icons/on-drag.icon.js +38 -0
  115. package/lib/components/commons/icons/opened.icon.js +38 -0
  116. package/lib/components/commons/icons/radio-checked.icon.js +41 -0
  117. package/lib/components/commons/icons/radio-unchecked.icon.js +41 -0
  118. package/lib/components/commons/index.js +162 -0
  119. package/lib/components/commons/prop-types/declarations.js +27 -0
  120. package/lib/components/commons/prop-types/index.js +47 -0
  121. package/lib/components/commons/prop-types/lines.js +17 -0
  122. package/lib/components/commons/prop-types/options.js +17 -0
  123. package/lib/components/commons/prop-types/response.js +17 -0
  124. package/lib/components/commons/prop-types/value-type.js +22 -0
  125. package/lib/components/commons/safety-label.js +34 -0
  126. package/lib/components/commons/use-document-add-event-listener.js +108 -0
  127. package/lib/components/commons/use-on-handle-change.js +22 -0
  128. package/lib/components/commons/use-options-keydown.js +29 -0
  129. package/lib/components/commons/use-previous.js +19 -0
  130. package/lib/components/components.js +188 -0
  131. package/lib/components/datepicker/datepicker.js +56 -0
  132. package/lib/components/datepicker/datepicker.scss +1 -0
  133. package/lib/components/datepicker/index.js +15 -0
  134. package/lib/components/datepicker/lunatic-datepicker.js +39 -0
  135. package/lib/components/declarations/declaration.js +26 -0
  136. package/lib/components/declarations/declarations-after-text.js +29 -0
  137. package/lib/components/declarations/declarations-before-text.js +29 -0
  138. package/lib/components/declarations/declarations-detachable.js +29 -0
  139. package/lib/components/declarations/declarations.js +61 -0
  140. package/lib/components/declarations/declarations.scss +36 -0
  141. package/lib/components/declarations/index.js +51 -0
  142. package/lib/components/dropdown/dropdown-simple/dropdown-simple.js +43 -0
  143. package/lib/components/dropdown/dropdown-simple/index.js +15 -0
  144. package/lib/components/dropdown/dropdown-simple/simple-label-renderer.js +53 -0
  145. package/lib/components/dropdown/dropdown-simple/simple-option-renderer.js +42 -0
  146. package/lib/components/dropdown/dropdown-writable/dropdown-writable.js +79 -0
  147. package/lib/components/dropdown/dropdown-writable/filter-tools/filter-options.js +47 -0
  148. package/lib/components/dropdown/dropdown-writable/filter-tools/letters-matching.js +40 -0
  149. package/lib/components/dropdown/dropdown-writable/filter-tools/match.js +27 -0
  150. package/lib/components/dropdown/dropdown-writable/filter-tools/prepare-prefix.js +17 -0
  151. package/lib/components/dropdown/dropdown-writable/index.js +15 -0
  152. package/lib/components/dropdown/dropdown-writable/writable-label-renderer.js +53 -0
  153. package/lib/components/dropdown/dropdown-writable/writable-option-renderer.js +170 -0
  154. package/lib/components/dropdown/dropdown.js +58 -0
  155. package/lib/components/dropdown/dropdown.scss +41 -0
  156. package/lib/components/dropdown/index.js +15 -0
  157. package/lib/components/dropdown/lunatic-dropdown.js +62 -0
  158. package/lib/components/filter-description/component.js +26 -0
  159. package/lib/components/filter-description/index.js +15 -0
  160. package/lib/components/index.js +32 -0
  161. package/lib/components/index.scss +136 -0
  162. package/lib/components/input/index.js +15 -0
  163. package/lib/components/input/input.js +61 -0
  164. package/lib/components/input/input.scss +32 -0
  165. package/lib/components/input/lunatic-input.js +43 -0
  166. package/lib/components/input-number/index.js +15 -0
  167. package/lib/components/input-number/input-number.js +61 -0
  168. package/lib/components/input-number/input-number.scss +7 -0
  169. package/lib/components/input-number/lunatic-input-number.js +37 -0
  170. package/lib/components/loop/block-for-loop/block-for-loop-ochestrator.js +16 -0
  171. package/lib/components/loop/block-for-loop/block-for-loop.js +179 -0
  172. package/lib/components/loop/block-for-loop/index.js +15 -0
  173. package/lib/components/loop/block-for-loop/row.js +84 -0
  174. package/lib/components/loop/commons/get-init-length.js +19 -0
  175. package/lib/components/loop/commons/handle-row-button.js +25 -0
  176. package/lib/components/loop/commons/index.js +23 -0
  177. package/lib/components/loop/commons/row-component.js +86 -0
  178. package/lib/components/loop/index.js +15 -0
  179. package/lib/components/loop/loop.js +94 -0
  180. package/lib/components/loop/roster-for-loop/body.js +69 -0
  181. package/lib/components/loop/roster-for-loop/header.js +42 -0
  182. package/lib/components/loop/roster-for-loop/index.js +15 -0
  183. package/lib/components/loop/roster-for-loop/roster-for-loop-orchestrator.js +16 -0
  184. package/lib/components/loop/roster-for-loop/roster-for-loop.js +153 -0
  185. package/lib/components/loop/roster-for-loop/roster-table.js +61 -0
  186. package/lib/components/loop/roster-for-loop/roster.scss +42 -0
  187. package/lib/components/loop/roster-for-loop/row.js +88 -0
  188. package/lib/components/modal-controls/close-or-skip.js +46 -0
  189. package/lib/components/modal-controls/index.js +15 -0
  190. package/lib/components/modal-controls/modal-container.js +24 -0
  191. package/lib/components/modal-controls/modal-controls.js +94 -0
  192. package/lib/components/modal-controls/modal-controls.scss +46 -0
  193. package/lib/components/pairwise/index.js +15 -0
  194. package/lib/components/pairwise/links/index.js +15 -0
  195. package/lib/components/pairwise/links/orchestrator.js +16 -0
  196. package/lib/components/pairwise/links/pairwise-links.js +75 -0
  197. package/lib/components/pairwise/links/row.js +95 -0
  198. package/lib/components/radio/index.js +15 -0
  199. package/lib/components/radio/lunatic-radio-group.js +45 -0
  200. package/lib/components/radio/radio-group.js +48 -0
  201. package/lib/components/radio/radio-option.js +94 -0
  202. package/lib/components/radio/radio.scss +66 -0
  203. package/lib/components/sequence/index.js +15 -0
  204. package/lib/components/sequence/sequence.js +41 -0
  205. package/lib/components/sequence/sequence.scss +10 -0
  206. package/lib/components/subsequence/index.js +15 -0
  207. package/lib/components/subsequence/subsequence.js +38 -0
  208. package/lib/components/suggester/check-store.js +149 -0
  209. package/lib/components/suggester/default-style.scss +125 -0
  210. package/lib/components/suggester/find-best-label/find-best-label.js +67 -0
  211. package/lib/components/suggester/find-best-label/index.js +15 -0
  212. package/lib/components/suggester/idb-suggester.js +95 -0
  213. package/lib/components/suggester/index.js +15 -0
  214. package/lib/components/suggester/lunatic-suggester.js +94 -0
  215. package/lib/components/suggester/searching/create-searching.js +88 -0
  216. package/lib/components/suggester/searching/index.js +15 -0
  217. package/lib/components/suggester/suggester.js +172 -0
  218. package/lib/components/suggester-loader-widget/index.js +15 -0
  219. package/lib/components/suggester-loader-widget/loader-row.js +150 -0
  220. package/lib/components/suggester-loader-widget/loader.js +180 -0
  221. package/lib/components/suggester-loader-widget/progress.js +45 -0
  222. package/lib/components/suggester-loader-widget/tools/action-tool.js +35 -0
  223. package/lib/components/suggester-loader-widget/tools/index.js +23 -0
  224. package/lib/components/suggester-loader-widget/tools/tools.js +20 -0
  225. package/lib/components/suggester-loader-widget/widget-container.js +48 -0
  226. package/lib/components/suggester-loader-widget/widget.js +170 -0
  227. package/lib/components/suggester-loader-widget/widget.scss +176 -0
  228. package/lib/components/switch/index.js +15 -0
  229. package/lib/components/switch/lunatic-switch.js +59 -0
  230. package/lib/components/switch/switch.js +92 -0
  231. package/lib/components/switch/switch.scss +47 -0
  232. package/lib/components/table/cell.js +113 -0
  233. package/lib/components/table/components/cell.js +113 -0
  234. package/lib/components/table/components/header.js +48 -0
  235. package/lib/components/table/components/row.js +47 -0
  236. package/lib/components/table/components/table.js +38 -0
  237. package/lib/components/table/components/table.scss +27 -0
  238. package/lib/components/table/index.js +15 -0
  239. package/lib/components/table/lunatic-table.js +97 -0
  240. package/lib/components/table/table-orchestrator.js +55 -0
  241. package/lib/components/textarea/index.js +15 -0
  242. package/lib/components/textarea/lunatic-textarea.js +52 -0
  243. package/lib/components/textarea/textarea.js +54 -0
  244. package/lib/components/textarea/textarea.scss +8 -0
  245. package/lib/constants/component-types.js +8 -0
  246. package/lib/constants/declarations.js +26 -0
  247. package/lib/constants/event-types.js +28 -0
  248. package/lib/constants/index.js +70 -0
  249. package/lib/constants/supported-preferences.js +18 -0
  250. package/lib/constants/value-types.js +16 -0
  251. package/lib/constants/variable-types.js +12 -0
  252. package/lib/i18n/build-dictionary.js +56 -0
  253. package/lib/i18n/dictionary.js +26 -0
  254. package/lib/i18n/index.js +19 -0
  255. package/lib/index.js +21 -4164
  256. package/lib/stories/Introduction.stories.mdx +114 -0
  257. package/lib/stories/checkboxOne/checkboxOne.stories.js +35 -0
  258. package/lib/stories/checkboxOne/source.json +36 -0
  259. package/lib/stories/custom-mui/checkbox-boolean-mui.js +39 -0
  260. package/lib/stories/custom-mui/checkbox-group-mui.js +80 -0
  261. package/lib/stories/custom-mui/checkbox-one-mui.js +17 -0
  262. package/lib/stories/custom-mui/index.js +127 -0
  263. package/lib/stories/custom-mui/input-mui.js +61 -0
  264. package/lib/stories/custom-mui/input-number-mui.js +47 -0
  265. package/lib/stories/custom-mui/radio-mui.js +75 -0
  266. package/lib/stories/custom-mui/suggester-mui/index.js +15 -0
  267. package/lib/stories/custom-mui/suggester-mui/suggester-mui.js +328 -0
  268. package/lib/stories/custom-mui/switch-mui.js +51 -0
  269. package/lib/stories/custom-mui/table-mui.js +33 -0
  270. package/lib/stories/custom-mui/tbody-mui.js +27 -0
  271. package/lib/stories/custom-mui/td-mui.js +29 -0
  272. package/lib/stories/custom-mui/textarea-mui.js +51 -0
  273. package/lib/stories/custom-mui/th-mui.js +28 -0
  274. package/lib/stories/custom-mui/thead-mui.js +27 -0
  275. package/lib/stories/custom-mui/tr-mui.js +38 -0
  276. package/lib/stories/date-picker/data.json +3 -0
  277. package/lib/stories/date-picker/datepicker.stories.js +38 -0
  278. package/lib/stories/date-picker/source.json +140 -0
  279. package/lib/stories/dropdown/data.json +16 -0
  280. package/lib/stories/dropdown/dropdown.stories.js +38 -0
  281. package/lib/stories/dropdown/source.json +122 -0
  282. package/lib/stories/filter-description/filter-description.stories.js +58 -0
  283. package/lib/stories/filter-description/source-options.json +81 -0
  284. package/lib/stories/filter-description/source.json +11 -0
  285. package/lib/stories/input/data.json +1 -0
  286. package/lib/stories/input/input.stories.js +38 -0
  287. package/lib/stories/input/source.json +28 -0
  288. package/lib/stories/input-number/input-number.stories.js +43 -0
  289. package/lib/stories/input-number/source-euros.json +38 -0
  290. package/lib/stories/input-number/source.json +37 -0
  291. package/lib/stories/pairwise/data.json +13 -0
  292. package/lib/stories/pairwise/links.json +207 -0
  293. package/lib/stories/pairwise/pairwise-links.stories.js +39 -0
  294. package/lib/stories/paste-questionnaire/source.json +6290 -0
  295. package/lib/stories/paste-questionnaire/test.stories.js +91 -0
  296. package/lib/stories/questionnaires/logement/data.json +2691 -0
  297. package/lib/stories/questionnaires/logement/logement.stories.js +86 -0
  298. package/lib/stories/questionnaires/logement/source-sequence.json +34181 -0
  299. package/lib/stories/questionnaires/logement/source-sum.json +34612 -0
  300. package/lib/stories/questionnaires/logement/source.json +34191 -0
  301. package/lib/stories/questionnaires/simpsons/simpsons.stories.js +71 -0
  302. package/lib/stories/questionnaires/simpsons/source.json +6290 -0
  303. package/lib/stories/questionnaires-test/V2_DeclarationsSimples.json +848 -0
  304. package/lib/stories/questionnaires-test/V2_MinMaxSum_Boucles.json +509 -0
  305. package/lib/stories/questionnaires-test/V2_QuestSimple_Boucles.json +4091 -0
  306. package/lib/stories/questionnaires-test/V2_TCMRallyeGames.json +2892 -0
  307. package/lib/stories/questionnaires-test/controls/V2_ControlesNonNum_horsBoucle_PasPageFin.json +666 -0
  308. package/lib/stories/questionnaires-test/controls/V2_ControlesNum_horsBoucle_PasPageFin.json +1957 -0
  309. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees2_PasPageFin.json +709 -0
  310. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees_PasPageFin.json +533 -0
  311. package/lib/stories/questionnaires-test/controls/boucles-n.json +202 -0
  312. package/lib/stories/questionnaires-test/controls/controls.stories.js +108 -0
  313. package/lib/stories/questionnaires-test/test-dylan.json +558 -0
  314. package/lib/stories/questionnaires-test/test.stories.js +104 -0
  315. package/lib/stories/radio/radio.stories.js +35 -0
  316. package/lib/stories/radio/source.json +36 -0
  317. package/lib/stories/roster-for-loop/roster-for-loop.stories.js +35 -0
  318. package/lib/stories/roster-for-loop/source.json +114 -0
  319. package/lib/stories/suggester/source.json +234 -0
  320. package/lib/stories/suggester/suggester.stories.js +59 -0
  321. package/{src/stories/checkbox-one → lib/stories/switch}/README.md +31 -31
  322. package/lib/stories/switch/SwitchMaterialUI.js +51 -0
  323. package/{src/stories/checkbox-boolean/data.json → lib/stories/switch/data-forced.json} +48 -48
  324. package/lib/stories/switch/data.json +80 -0
  325. package/lib/stories/switch/switch.js +108 -0
  326. package/lib/stories/table/data-roster.json +1 -0
  327. package/lib/stories/table/data.json +1 -0
  328. package/{src/stories/table/data-roster.json → lib/stories/table/source-roster.json} +504 -461
  329. package/{src/stories/table/data-default.json → lib/stories/table/source.json} +19 -19
  330. package/lib/stories/table/table.stories.js +65 -0
  331. package/lib/stories/utils/custom-lunatic.scss +28 -0
  332. package/lib/stories/utils/default-arg-types.js +23 -0
  333. package/lib/stories/utils/options.js +32 -0
  334. package/lib/stories/utils/orchestrator.js +188 -0
  335. package/lib/stories/utils/waiting/index.js +15 -0
  336. package/lib/stories/utils/waiting/preloader.svg +1 -0
  337. package/lib/stories/utils/waiting/waiting.js +40 -0
  338. package/lib/stories/utils/waiting/waiting.scss +21 -0
  339. package/lib/tests/sample.spec.js +7 -0
  340. package/lib/use-lunatic/actions.js +102 -0
  341. package/lib/use-lunatic/commons/calculated-variables.js +124 -0
  342. package/lib/use-lunatic/commons/check-loops.js +111 -0
  343. package/lib/use-lunatic/commons/compose.js +28 -0
  344. package/lib/use-lunatic/commons/create-map-pages.js +108 -0
  345. package/lib/use-lunatic/commons/execute-condition-filter.js +34 -0
  346. package/lib/use-lunatic/commons/execute-expression/create-execute-expression.js +308 -0
  347. package/lib/use-lunatic/commons/execute-expression/create-memoizer.js +78 -0
  348. package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.js +160 -0
  349. package/lib/use-lunatic/commons/execute-expression/execute-expression.js +118 -0
  350. package/lib/use-lunatic/commons/execute-expression/get-expressions-variables.js +51 -0
  351. package/lib/use-lunatic/commons/execute-expression/get-safety-expression.js +37 -0
  352. package/lib/use-lunatic/commons/execute-expression/index.js +15 -0
  353. package/lib/use-lunatic/commons/fill-components/fill-component-expressions.js +149 -0
  354. package/lib/use-lunatic/commons/fill-components/fill-component-value.js +26 -0
  355. package/lib/use-lunatic/commons/fill-components/fill-components.js +47 -0
  356. package/lib/use-lunatic/commons/fill-components/fill-errors.js +31 -0
  357. package/lib/use-lunatic/commons/fill-components/fill-from-state.js +26 -0
  358. package/lib/use-lunatic/commons/fill-components/fill-management.js +27 -0
  359. package/lib/use-lunatic/commons/fill-components/fill-missing-response.js +37 -0
  360. package/lib/use-lunatic/commons/fill-components/fill-pagination.js +23 -0
  361. package/lib/use-lunatic/commons/fill-components/index.js +15 -0
  362. package/lib/use-lunatic/commons/get-compatible-vtl-expression.js +32 -0
  363. package/lib/use-lunatic/commons/get-component-value/get-component-value.js +217 -0
  364. package/lib/use-lunatic/commons/get-component-value/index.js +15 -0
  365. package/lib/use-lunatic/commons/get-components-from-state.js +44 -0
  366. package/lib/use-lunatic/commons/get-data.js +90 -0
  367. package/lib/use-lunatic/commons/get-errors-without-empty-value.js +31 -0
  368. package/lib/use-lunatic/commons/index.js +123 -0
  369. package/lib/use-lunatic/commons/is-First-last-page.js +20 -0
  370. package/lib/use-lunatic/commons/is-paginated-loop.js +15 -0
  371. package/lib/use-lunatic/commons/load-suggesters.js +199 -0
  372. package/lib/use-lunatic/commons/page-tag.js +83 -0
  373. package/lib/use-lunatic/commons/use-components-from-state.js +49 -0
  374. package/lib/use-lunatic/index.js +15 -0
  375. package/lib/use-lunatic/initial-state.js +44 -0
  376. package/lib/use-lunatic/reducer/commons/index.js +41 -0
  377. package/lib/use-lunatic/reducer/commons/is-empty-on-empty-page.js +49 -0
  378. package/lib/use-lunatic/reducer/commons/resize-array-variable.js +48 -0
  379. package/lib/use-lunatic/reducer/commons/validate-condition-filter.js +41 -0
  380. package/lib/use-lunatic/reducer/index.js +15 -0
  381. package/lib/use-lunatic/reducer/reduce-go-next-page.js +218 -0
  382. package/lib/use-lunatic/reducer/reduce-go-previous-page.js +165 -0
  383. package/lib/use-lunatic/reducer/reduce-go-to-page.js +60 -0
  384. package/lib/use-lunatic/reducer/reduce-handle-change/index.js +15 -0
  385. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-cleaning.js +77 -0
  386. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +142 -0
  387. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-links-variable.js +53 -0
  388. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-missing.js +90 -0
  389. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-resizing.js +118 -0
  390. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-variables-array.js +50 -0
  391. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-variables-simple.js +29 -0
  392. package/lib/use-lunatic/reducer/reduce-on-init.js +260 -0
  393. package/lib/use-lunatic/reducer/reduce-on-set-waiting.js +23 -0
  394. package/lib/use-lunatic/reducer/reducer.js +58 -0
  395. package/lib/use-lunatic/reducer/validate-controls/create-controls-reducer.js +69 -0
  396. package/lib/use-lunatic/reducer/validate-controls/create-modal-controls-reducer.js +100 -0
  397. package/lib/use-lunatic/reducer/validate-controls/index.js +23 -0
  398. package/lib/use-lunatic/reducer/validate-controls/validation-utils.js +73 -0
  399. package/lib/use-lunatic/use-lunatic.js +215 -0
  400. package/lib/utils/constants/features.js +12 -0
  401. package/lib/utils/constants/index.js +70 -0
  402. package/lib/utils/constants/links.js +10 -0
  403. package/lib/utils/constants/missing.js +10 -0
  404. package/lib/utils/constants/variable-status.js +16 -0
  405. package/lib/utils/constants/variable-types.js +8 -0
  406. package/lib/utils/idb-tools/clear-store.js +52 -0
  407. package/lib/utils/idb-tools/create-db-opener.js +60 -0
  408. package/lib/utils/idb-tools/create-open-db.js +35 -0
  409. package/lib/utils/idb-tools/get-entity.js +25 -0
  410. package/lib/utils/idb-tools/get-idb.js +15 -0
  411. package/lib/utils/idb-tools/idb-bulk-insert.js +157 -0
  412. package/lib/utils/idb-tools/index.js +75 -0
  413. package/lib/utils/idb-tools/insert-entity.js +25 -0
  414. package/lib/utils/idb-tools/open-db.js +29 -0
  415. package/lib/utils/idb-tools/open-or-create-db.js +49 -0
  416. package/lib/utils/is-element.js +12 -0
  417. package/lib/utils/store-tools/auto-load.js +209 -0
  418. package/lib/utils/store-tools/clear-store-data.js +46 -0
  419. package/lib/utils/store-tools/clear-store-info.js +46 -0
  420. package/lib/utils/store-tools/constantes.js +31 -0
  421. package/lib/utils/store-tools/create/create.js +70 -0
  422. package/lib/utils/store-tools/create/index.js +23 -0
  423. package/lib/utils/store-tools/create/update-store-info.js +33 -0
  424. package/lib/utils/store-tools/get-store-count.js +29 -0
  425. package/lib/utils/store-tools/index.js +66 -0
  426. package/lib/utils/store-tools/open-or-create-store.js +60 -0
  427. package/lib/utils/store-tools/use-store-index.js +82 -0
  428. package/lib/utils/suggester-workers/append-to-index/append.js +96 -0
  429. package/lib/utils/suggester-workers/append-to-index/append.worker.js +31 -0
  430. package/lib/utils/suggester-workers/append-to-index/create-append-task.js +66 -0
  431. package/lib/utils/suggester-workers/append-to-index/index.js +23 -0
  432. package/lib/utils/suggester-workers/append-to-index/prepare-entities.js +114 -0
  433. package/lib/utils/suggester-workers/append-to-index/store-messages.js +48 -0
  434. package/lib/utils/suggester-workers/commons-tokenizer/create-entity-tokenizer.js +64 -0
  435. package/lib/utils/suggester-workers/commons-tokenizer/create-fields-tokenizer.js +103 -0
  436. package/lib/utils/suggester-workers/commons-tokenizer/create-filter-stop-words.js +47 -0
  437. package/lib/utils/suggester-workers/commons-tokenizer/filters/compose-filters.js +24 -0
  438. package/lib/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.js +47 -0
  439. package/lib/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.spec.js +16 -0
  440. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-accents.js +24 -0
  441. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-accents.spec.js +18 -0
  442. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-double.js +34 -0
  443. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-double.spec.js +25 -0
  444. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-length.js +17 -0
  445. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-length.spec.js +25 -0
  446. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.js +29 -0
  447. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.spec.js +18 -0
  448. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.js +71 -0
  449. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.spec.js +15 -0
  450. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.js +19 -0
  451. package/lib/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.spec.js +16 -0
  452. package/lib/utils/suggester-workers/commons-tokenizer/filters/index.js +23 -0
  453. package/lib/utils/suggester-workers/commons-tokenizer/filters/stop-words.js +9 -0
  454. package/lib/utils/suggester-workers/commons-tokenizer/get-regexp-from-pattern.js +17 -0
  455. package/lib/utils/suggester-workers/commons-tokenizer/get-stemmer.js +31 -0
  456. package/lib/utils/suggester-workers/commons-tokenizer/index.js +79 -0
  457. package/lib/utils/suggester-workers/commons-tokenizer/prepare-string-indexation.js +24 -0
  458. package/lib/utils/suggester-workers/commons-tokenizer/soft-tokenizer.js +15 -0
  459. package/lib/utils/suggester-workers/create-worker.js +64 -0
  460. package/lib/utils/suggester-workers/find-best-label/find-best-label.js +81 -0
  461. package/lib/utils/suggester-workers/find-best-label/find-best-label.worker.js +67 -0
  462. package/lib/utils/suggester-workers/find-best-label/index.js +1 -0
  463. package/lib/utils/suggester-workers/find-best-label/tokenize.js +62 -0
  464. package/lib/utils/suggester-workers/find-best-label/tokenize.spec.js +26 -0
  465. package/lib/utils/suggester-workers/searching/compute-score.js +63 -0
  466. package/lib/utils/suggester-workers/searching/get-db.js +64 -0
  467. package/lib/utils/suggester-workers/searching/index.js +15 -0
  468. package/lib/utils/suggester-workers/searching/order/create-alphanumeric-orderer.js +33 -0
  469. package/lib/utils/suggester-workers/searching/order/index.js +33 -0
  470. package/lib/utils/suggester-workers/searching/query-parser/index.js +23 -0
  471. package/lib/utils/suggester-workers/searching/query-parser/query-parser-soft.js +15 -0
  472. package/lib/utils/suggester-workers/searching/query-parser/query-parser-soft.spec.js +28 -0
  473. package/lib/utils/suggester-workers/searching/query-parser/query-parser-tokenized.js +51 -0
  474. package/lib/utils/suggester-workers/searching/resolve-query-parser.js +73 -0
  475. package/lib/utils/suggester-workers/searching/search-in-index.js +25 -0
  476. package/lib/utils/suggester-workers/searching/searching.js +170 -0
  477. package/lib/utils/suggester-workers/searching/searching.worker.js +23 -0
  478. package/lib/utils/vtl/dataset-builder.js +28 -0
  479. package/lib/utils/vtl/index.js +15 -0
  480. package/package.json +160 -137
  481. package/lib/index.js.map +0 -1
  482. package/src/components/breadcrumb/breadcrumb.scss +0 -22
  483. package/src/components/breadcrumb/component.js +0 -29
  484. package/src/components/breadcrumb/index.js +0 -1
  485. package/src/components/button/button.scss +0 -26
  486. package/src/components/button/component.js +0 -25
  487. package/src/components/button/index.js +0 -1
  488. package/src/components/checkbox/boolean.js +0 -139
  489. package/src/components/checkbox/checkbox.scss +0 -43
  490. package/src/components/checkbox/group.js +0 -171
  491. package/src/components/checkbox/index.js +0 -3
  492. package/src/components/checkbox/one.js +0 -27
  493. package/src/components/components.js +0 -16
  494. package/src/components/datepicker/component.js +0 -10
  495. package/src/components/datepicker/datepicker.scss +0 -16
  496. package/src/components/datepicker/index.js +0 -1
  497. package/src/components/declarations/component.js +0 -38
  498. package/src/components/declarations/declarations.scss +0 -34
  499. package/src/components/declarations/index.js +0 -1
  500. package/src/components/declarations/wrappers/index.js +0 -3
  501. package/src/components/declarations/wrappers/input-declarations-wrapper.js +0 -164
  502. package/src/components/declarations/wrappers/list-declarations-wrapper.js +0 -162
  503. package/src/components/declarations/wrappers/simple-declarations-wrapper.js +0 -54
  504. package/src/components/dropdown/commons/actions.js +0 -56
  505. package/src/components/dropdown/commons/children-to-option.js +0 -9
  506. package/src/components/dropdown/commons/cleaner-callbacks.js +0 -58
  507. package/src/components/dropdown/commons/components/closed.icon.js +0 -24
  508. package/src/components/dropdown/commons/components/dropdown-container.js +0 -169
  509. package/src/components/dropdown/commons/components/label.js +0 -21
  510. package/src/components/dropdown/commons/components/opened.icon.js +0 -24
  511. package/src/components/dropdown/commons/components/panel.js +0 -78
  512. package/src/components/dropdown/commons/event-callbacks/index.js +0 -5
  513. package/src/components/dropdown/commons/event-callbacks/on-keydown-callback.js +0 -30
  514. package/src/components/dropdown/commons/event-callbacks/on-mousedown-callback.js +0 -11
  515. package/src/components/dropdown/commons/reducer.js +0 -149
  516. package/src/components/dropdown/commons/tools/index.js +0 -17
  517. package/src/components/dropdown/component.js +0 -117
  518. package/src/components/dropdown/dropdown-edit/cross.icon.js +0 -20
  519. package/src/components/dropdown/dropdown-edit/dropdown-edit.js +0 -174
  520. package/src/components/dropdown/dropdown-edit/icone.js +0 -33
  521. package/src/components/dropdown/dropdown-edit/index.js +0 -11
  522. package/src/components/dropdown/dropdown-edit/option.js +0 -62
  523. package/src/components/dropdown/dropdown-edit/prefix-tools.js +0 -51
  524. package/src/components/dropdown/dropdown-simple/dropdown.js +0 -155
  525. package/src/components/dropdown/dropdown-simple/index.js +0 -20
  526. package/src/components/dropdown/dropdown-simple/option.js +0 -15
  527. package/src/components/dropdown/dropdown.scss +0 -183
  528. package/src/components/dropdown/index.js +0 -1
  529. package/src/components/filter-description/component.js +0 -41
  530. package/src/components/filter-description/index.js +0 -1
  531. package/src/components/index.js +0 -4
  532. package/src/components/index.scss +0 -76
  533. package/src/components/input/index.js +0 -2
  534. package/src/components/input/input-number.js +0 -228
  535. package/src/components/input/input.js +0 -10
  536. package/src/components/input/input.scss +0 -27
  537. package/src/components/loop/build-components.js +0 -33
  538. package/src/components/loop/component.js +0 -94
  539. package/src/components/loop/index.js +0 -1
  540. package/src/components/loop/loop.scss +0 -17
  541. package/src/components/loop/wrapper.js +0 -11
  542. package/src/components/loop-constructor/block/block.scss +0 -10
  543. package/src/components/loop-constructor/block/component.js +0 -8
  544. package/src/components/loop-constructor/block/index.js +0 -1
  545. package/src/components/loop-constructor/index.js +0 -1
  546. package/src/components/loop-constructor/roster/component.js +0 -7
  547. package/src/components/loop-constructor/roster/index.js +0 -1
  548. package/src/components/loop-constructor/wrapper/body-component.js +0 -118
  549. package/src/components/loop-constructor/wrapper/build-components.js +0 -33
  550. package/src/components/loop-constructor/wrapper/component.js +0 -152
  551. package/src/components/loop-constructor/wrapper/index.js +0 -1
  552. package/src/components/progress-bar/component.js +0 -28
  553. package/src/components/progress-bar/index.js +0 -1
  554. package/src/components/progress-bar/progress-bar.scss +0 -54
  555. package/src/components/radio/component.js +0 -8
  556. package/src/components/radio/index.js +0 -1
  557. package/src/components/radio/radio.scss +0 -24
  558. package/src/components/sequence/component.js +0 -41
  559. package/src/components/sequence/index.js +0 -1
  560. package/src/components/sequence/sequence.scss +0 -15
  561. package/src/components/subsequence/component.js +0 -48
  562. package/src/components/subsequence/index.js +0 -1
  563. package/src/components/subsequence/subsequence.scss +0 -15
  564. package/src/components/table/index.js +0 -1
  565. package/src/components/table/table.js +0 -160
  566. package/src/components/table/table.scss +0 -23
  567. package/src/components/textarea/component.js +0 -10
  568. package/src/components/textarea/index.js +0 -1
  569. package/src/components/textarea/textarea.scss +0 -16
  570. package/src/components/tooltip/img/index.js +0 -4
  571. package/src/components/tooltip/index.js +0 -1
  572. package/src/components/tooltip/response.js +0 -42
  573. package/src/components/tooltip/tooltip.scss +0 -35
  574. package/src/constants/component-types.js +0 -1
  575. package/src/constants/declarations.js +0 -14
  576. package/src/constants/index.js +0 -4
  577. package/src/constants/supported-preferences.js +0 -10
  578. package/src/constants/value-types.js +0 -5
  579. package/src/constants/variable-types.js +0 -4
  580. package/src/stories/breadcrumb/README.md +0 -14
  581. package/src/stories/breadcrumb/breadcrumb.stories.js +0 -33
  582. package/src/stories/button/README.md +0 -14
  583. package/src/stories/button/button.stories.js +0 -63
  584. package/src/stories/checkbox-boolean/README.md +0 -27
  585. package/src/stories/checkbox-boolean/checkbox-boolean.stories.js +0 -33
  586. package/src/stories/checkbox-group/README.md +0 -29
  587. package/src/stories/checkbox-group/checkbox-group.stories.js +0 -81
  588. package/src/stories/checkbox-group/data-vtl.json +0 -89
  589. package/src/stories/checkbox-group/data.json +0 -89
  590. package/src/stories/checkbox-one/checkbox-one.stories.js +0 -77
  591. package/src/stories/checkbox-one/data-vtl.json +0 -33
  592. package/src/stories/checkbox-one/data.json +0 -33
  593. package/src/stories/datepicker/README.md +0 -31
  594. package/src/stories/datepicker/data.json +0 -28
  595. package/src/stories/datepicker/datepicker.stories.js +0 -65
  596. package/src/stories/declarations/README.md +0 -19
  597. package/src/stories/declarations/declarations.stories.js +0 -112
  598. package/src/stories/dropdown/README.md +0 -44
  599. package/src/stories/dropdown/data-naf.json +0 -6963
  600. package/src/stories/dropdown/data-props.json +0 -81
  601. package/src/stories/dropdown/data.json +0 -78
  602. package/src/stories/dropdown/dropdown.stories.js +0 -65
  603. package/src/stories/filter-description/README.md +0 -15
  604. package/src/stories/filter-description/filter-description.stories.js +0 -70
  605. package/src/stories/input/README.md +0 -33
  606. package/src/stories/input/data.json +0 -28
  607. package/src/stories/input/input.stories.js +0 -67
  608. package/src/stories/input-number/README.md +0 -37
  609. package/src/stories/input-number/data.json +0 -30
  610. package/src/stories/input-number/input-number.stories.js +0 -75
  611. package/src/stories/loop/README.md +0 -25
  612. package/src/stories/loop/loop.stories.js +0 -80
  613. package/src/stories/loop/with-loop/data-loop-deeper.json +0 -298
  614. package/src/stories/loop/with-loop/data-loop.json +0 -211
  615. package/src/stories/loop/with-loop/data-vqs.json +0 -1384
  616. package/src/stories/loop/with-loop/index.js +0 -3
  617. package/src/stories/loop/with-roster/data-loop-deeper.json +0 -298
  618. package/src/stories/loop/with-roster/data-loop.json +0 -213
  619. package/src/stories/loop/with-roster/data-vqs.json +0 -1383
  620. package/src/stories/loop/with-roster/index.js +0 -3
  621. package/src/stories/loop-constructor/README.md +0 -27
  622. package/src/stories/loop-constructor/data-loop.json +0 -66
  623. package/src/stories/loop-constructor/data-roster.json +0 -68
  624. package/src/stories/loop-constructor/loop-constructor.stories.js +0 -42
  625. package/src/stories/progress-bar/README.md +0 -13
  626. package/src/stories/progress-bar/progress-bar.stories.js +0 -24
  627. package/src/stories/radio/README.md +0 -31
  628. package/src/stories/radio/data-vtl.json +0 -32
  629. package/src/stories/radio/data.json +0 -32
  630. package/src/stories/radio/radio.stories.js +0 -81
  631. package/src/stories/sequence/README.md +0 -18
  632. package/src/stories/sequence/sequence.stories.js +0 -58
  633. package/src/stories/subsequence/README.md +0 -18
  634. package/src/stories/subsequence/subsequence.stories.js +0 -58
  635. package/src/stories/table/README.md +0 -29
  636. package/src/stories/table/data-one-axis-one-measure.json +0 -124
  637. package/src/stories/table/data-one-axis-two-measures.json +0 -193
  638. package/src/stories/table/data-one-hierarchical-axis.json +0 -204
  639. package/src/stories/table/data-two-axis-one-measure.json +0 -492
  640. package/src/stories/table/table.stories.js +0 -77
  641. package/src/stories/textarea/README.md +0 -33
  642. package/src/stories/textarea/data-forced.json +0 -28
  643. package/src/stories/textarea/data.json +0 -28
  644. package/src/stories/textarea/textarea.stories.js +0 -90
  645. package/src/stories/tooltip-response/README.md +0 -14
  646. package/src/stories/tooltip-response/tooltip.stories.js +0 -43
  647. package/src/stories/utils/custom-lunatic.scss +0 -787
  648. package/src/stories/utils/img/arrow.png +0 -0
  649. package/src/stories/utils/img/check_box.svg +0 -1
  650. package/src/stories/utils/img/check_box_outline.svg +0 -1
  651. package/src/stories/utils/img/lunatic-logo.png +0 -0
  652. package/src/stories/utils/img/menu-down.svg +0 -1
  653. package/src/stories/utils/img/menu-up.svg +0 -1
  654. package/src/stories/utils/img/radio_button_checked.svg +0 -1
  655. package/src/stories/utils/img/radio_button_unchecked.svg +0 -1
  656. package/src/stories/utils/options.js +0 -21
  657. package/src/stories/utils/orchestrator.js +0 -53
  658. package/src/tests/components/breadcrumb.spec.js +0 -13
  659. package/src/tests/components/button.spec.js +0 -11
  660. package/src/tests/components/checkbox-boolean.spec.js +0 -40
  661. package/src/tests/components/checkbox-group.spec.js +0 -48
  662. package/src/tests/components/checkbox-one.spec.js +0 -32
  663. package/src/tests/components/datepicker.spec.js +0 -22
  664. package/src/tests/components/declarations-wrappers/input-declarations-wrapper.spec.js +0 -65
  665. package/src/tests/components/declarations-wrappers/list-declarations-wrapper.spec.js +0 -47
  666. package/src/tests/components/declarations-wrappers/simple-declarations-wrapper.spec.js +0 -21
  667. package/src/tests/components/declarations.spec.js +0 -46
  668. package/src/tests/components/input-number.spec.js +0 -173
  669. package/src/tests/components/input.spec.js +0 -18
  670. package/src/tests/components/progress-bar.spec.js +0 -15
  671. package/src/tests/components/radio.spec.js +0 -27
  672. package/src/tests/components/sequence.spec.js +0 -9
  673. package/src/tests/components/subsequence.spec.js +0 -9
  674. package/src/tests/components/table.spec.js +0 -11
  675. package/src/tests/components/textarea.spec.js +0 -18
  676. package/src/tests/components/tooltip.spec.js +0 -25
  677. package/src/tests/setup/setupTests.js +0 -4
  678. package/src/tests/utils/lib/alphabet.spec.js +0 -36
  679. package/src/tests/utils/lib/checkbox/group.spec.js +0 -72
  680. package/src/tests/utils/lib/decorator/title-decorator.spec.js +0 -12
  681. package/src/tests/utils/lib/items-positioning.spec.js +0 -17
  682. package/src/tests/utils/lib/label-position.spec.js +0 -22
  683. package/src/tests/utils/lib/loops/bindings.spec.js +0 -60
  684. package/src/tests/utils/lib/loops/shared.spec.js +0 -77
  685. package/src/tests/utils/lib/responses.spec.js +0 -58
  686. package/src/tests/utils/lib/style.spec.js +0 -26
  687. package/src/tests/utils/lib/table/roster.spec.js +0 -25
  688. package/src/tests/utils/lib/tooltip/build-response.spec.js +0 -95
  689. package/src/tests/utils/lib/tooltip/content.spec.js +0 -109
  690. package/src/tests/utils/to-expose/handler/handler.spec.js +0 -86
  691. package/src/tests/utils/to-expose/handler/questionnaire.json +0 -154
  692. package/src/tests/utils/to-expose/handler/results/index.js +0 -6
  693. package/src/tests/utils/to-expose/handler/results/res-double.json +0 -157
  694. package/src/tests/utils/to-expose/handler/results/res-input-collected.json +0 -154
  695. package/src/tests/utils/to-expose/handler/results/res-input-edited.json +0 -157
  696. package/src/tests/utils/to-expose/handler/results/res-loop.json +0 -157
  697. package/src/tests/utils/to-expose/handler/results/res-matrix.json +0 -157
  698. package/src/tests/utils/to-expose/handler/results/res-responses.json +0 -157
  699. package/src/tests/utils/to-expose/init-questionnaire/data.json +0 -12
  700. package/src/tests/utils/to-expose/init-questionnaire/init-questionnaire.spec.js +0 -19
  701. package/src/tests/utils/to-expose/init-questionnaire/questionnaire.json +0 -129
  702. package/src/tests/utils/to-expose/init-questionnaire/result.json +0 -162
  703. package/src/tests/utils/to-expose/interpret.spec.js +0 -42
  704. package/src/tests/utils/to-expose/state/questionnaire.json +0 -61
  705. package/src/tests/utils/to-expose/state/results.js +0 -78
  706. package/src/tests/utils/to-expose/state/state.spec.js +0 -59
  707. package/src/utils/lib/alphabet.js +0 -1
  708. package/src/utils/lib/checkbox/group.js +0 -21
  709. package/src/utils/lib/checkbox/index.js +0 -1
  710. package/src/utils/lib/decorator/index.js +0 -1
  711. package/src/utils/lib/decorator/title-decorator.js +0 -16
  712. package/src/utils/lib/index.js +0 -12
  713. package/src/utils/lib/label-position.js +0 -12
  714. package/src/utils/lib/loops/bindings.js +0 -47
  715. package/src/utils/lib/loops/index.js +0 -2
  716. package/src/utils/lib/loops/shared.js +0 -43
  717. package/src/utils/lib/memo-check.js +0 -24
  718. package/src/utils/lib/options-positioning.js +0 -9
  719. package/src/utils/lib/prop-types/declarations.js +0 -22
  720. package/src/utils/lib/prop-types/index.js +0 -5
  721. package/src/utils/lib/prop-types/lines.js +0 -6
  722. package/src/utils/lib/prop-types/options.js +0 -8
  723. package/src/utils/lib/prop-types/response.js +0 -6
  724. package/src/utils/lib/prop-types/value-type.js +0 -9
  725. package/src/utils/lib/responses.js +0 -9
  726. package/src/utils/lib/style.js +0 -10
  727. package/src/utils/lib/table/index.js +0 -1
  728. package/src/utils/lib/table/roster.js +0 -18
  729. package/src/utils/lib/tooltip/build-response.js +0 -23
  730. package/src/utils/lib/tooltip/content.js +0 -52
  731. package/src/utils/lib/tooltip/index.js +0 -5
  732. package/src/utils/to-expose/handler.js +0 -99
  733. package/src/utils/to-expose/hook.js +0 -65
  734. package/src/utils/to-expose/index.js +0 -11
  735. package/src/utils/to-expose/init-questionnaire.js +0 -114
  736. package/src/utils/to-expose/interpret.js +0 -53
  737. package/src/utils/to-expose/state.js +0 -58
package/lib/index.js CHANGED
@@ -1,4175 +1,32 @@
1
- Object.defineProperty(exports, '__esModule', { value: true });
1
+ "use strict";
2
2
 
3
- var React = require('react');
4
- var PropTypes = require('prop-types');
5
- var camelCase = require('lodash.camelcase');
6
- var isEqual = require('lodash.isequal');
7
- var vtl2_1Engine = require('@inseefr/vtl-2.1-engine');
8
- var removeAccents = require('remove-accents');
9
-
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
- var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
14
- var camelCase__default = /*#__PURE__*/_interopDefaultLegacy(camelCase);
15
- var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
16
- var removeAccents__default = /*#__PURE__*/_interopDefaultLegacy(removeAccents);
17
-
18
- var lunatic = /*#__PURE__*/Object.freeze({
19
- __proto__: null,
20
- get Breadcrumb () { return Breadcrumb; },
21
- get Button () { return Button; },
22
- get Datepicker () { return component; },
23
- get Declarations () { return Declarations; },
24
- get Dropdown () { return component$1; },
25
- get FilterDescription () { return FilterDescription; },
26
- get ProgressBar () { return ProgressBar; },
27
- get Radio () { return component$2; },
28
- get Loop () { return LoopWrapper; },
29
- get Sequence () { return component$4; },
30
- get Subsequence () { return component$5; },
31
- get Textarea () { return component$6; },
32
- get TooltipResponse () { return TooltipResponse; },
33
- get CheckboxGroup () { return group; },
34
- get CheckboxBoolean () { return boolean; },
35
- get CheckboxOne () { return one; },
36
- get Input () { return input; },
37
- get InputNumber () { return inputNumber; },
38
- get RosterForLoop () { return component$3; }
39
- });
40
-
41
- // Declaration position
42
- var BEFORE_QUESTION_TEXT = 'BEFORE_QUESTION_TEXT';
43
- var AFTER_QUESTION_TEXT = 'AFTER_QUESTION_TEXT';
44
- var DETACHABLE = 'DETACHABLE'; // Declaration types
45
-
46
- var INSTRUCTION = 'INSTRUCTION';
47
- var COMMENT = 'COMMENT';
48
- var HELP = 'HELP';
49
- var WARNING = 'WARNING';
50
- var MESSAGE_FILTER = 'MESSAGE_FILTER';
51
- var STATEMENT = 'STATEMENT';
52
-
53
- var PREVIOUS = 'PREVIOUS';
54
- var COLLECTED = 'COLLECTED';
55
- var FORCED = 'FORCED';
56
- var EDITED = 'EDITED';
57
- var INPUTED = 'INPUTED';
58
-
59
- var EXTERNAL = 'EXTERNAL';
60
- var CALCULATED = 'CALCULATED'; // Already define in value-types
61
- //export const COLLECTED = 'COLLECTED';
62
-
63
- var declarations = PropTypes__default['default'].arrayOf(PropTypes__default['default'].shape({
64
- id: PropTypes__default['default'].string.isRequired,
65
- declarationType: PropTypes__default['default'].oneOf([INSTRUCTION, COMMENT, HELP, WARNING, MESSAGE_FILTER, STATEMENT]),
66
- position: PropTypes__default['default'].oneOf([BEFORE_QUESTION_TEXT, AFTER_QUESTION_TEXT, DETACHABLE]),
67
- label: PropTypes__default['default'].string.isRequired
68
- })).isRequired;
69
-
70
- var options = PropTypes__default['default'].arrayOf(PropTypes__default['default'].shape({
71
- label: PropTypes__default['default'].string.isRequired,
72
- value: PropTypes__default['default'].string.isRequired
73
- }));
74
-
75
- var response = PropTypes__default['default'].shape({
76
- name: PropTypes__default['default'].string,
77
- values: PropTypes__default['default'].shape({})
78
- });
79
-
80
- var valueType = PropTypes__default['default'].oneOf(['COLLECTED', 'PREVIOUS', 'FORCED', 'EDITED', 'INPUTED']);
81
-
82
- var lines = PropTypes__default['default'].shape({
83
- min: PropTypes__default['default'].number,
84
- max: PropTypes__default['default'].number
85
- });
86
-
87
- var buildTooltip = function buildTooltip(response) {
88
- if (!response || !response.values || Object.keys(response.values).length === 0) return {};
89
- var values = response.values;
90
- var edited = values[EDITED];
91
- var forced = values[FORCED];
92
- var collected = values[COLLECTED];
93
-
94
- if (has(edited)) {
95
- if (!has(forced)) return {
96
- content: [{
97
- key: 'Brute',
98
- value: collected || ' - '
99
- }],
100
- imgName: 'editedImg'
101
- };
102
- return {
103
- content: [{
104
- key: 'Brute',
105
- value: collected || ' - '
106
- }, {
107
- key: 'Correction automatique',
108
- value: forced
109
- }],
110
- imgName: 'editedImg'
111
- };
112
- }
113
-
114
- if (has(forced)) return {
115
- content: [{
116
- key: 'Brute',
117
- value: collected || ' - '
118
- }],
119
- imgName: 'forcedImg'
120
- };
121
- return {};
122
- };
123
-
124
- var has = function has(status) {
125
- return status !== undefined && status !== null;
126
- };
127
-
128
- function _defineProperty(obj, key, value) {
129
- if (key in obj) {
130
- Object.defineProperty(obj, key, {
131
- value: value,
132
- enumerable: true,
133
- configurable: true,
134
- writable: true
135
- });
136
- } else {
137
- obj[key] = value;
138
- }
139
-
140
- return obj;
141
- }
142
-
143
- function _extends() {
144
- _extends = Object.assign || function (target) {
145
- for (var i = 1; i < arguments.length; i++) {
146
- var source = arguments[i];
147
-
148
- for (var key in source) {
149
- if (Object.prototype.hasOwnProperty.call(source, key)) {
150
- target[key] = source[key];
151
- }
152
- }
153
- }
154
-
155
- return target;
156
- };
157
-
158
- return _extends.apply(this, arguments);
159
- }
160
-
161
- function ownKeys(object, enumerableOnly) {
162
- var keys = Object.keys(object);
163
-
164
- if (Object.getOwnPropertySymbols) {
165
- var symbols = Object.getOwnPropertySymbols(object);
166
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
167
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
168
- });
169
- keys.push.apply(keys, symbols);
170
- }
171
-
172
- return keys;
173
- }
174
-
175
- function _objectSpread2(target) {
176
- for (var i = 1; i < arguments.length; i++) {
177
- var source = arguments[i] != null ? arguments[i] : {};
178
-
179
- if (i % 2) {
180
- ownKeys(Object(source), true).forEach(function (key) {
181
- _defineProperty(target, key, source[key]);
182
- });
183
- } else if (Object.getOwnPropertyDescriptors) {
184
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
185
- } else {
186
- ownKeys(Object(source)).forEach(function (key) {
187
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
188
- });
189
- }
190
- }
191
-
192
- return target;
193
- }
194
-
195
- function _objectWithoutPropertiesLoose(source, excluded) {
196
- if (source == null) return {};
197
- var target = {};
198
- var sourceKeys = Object.keys(source);
199
- var key, i;
200
-
201
- for (i = 0; i < sourceKeys.length; i++) {
202
- key = sourceKeys[i];
203
- if (excluded.indexOf(key) >= 0) continue;
204
- target[key] = source[key];
205
- }
206
-
207
- return target;
208
- }
209
-
210
- function _objectWithoutProperties(source, excluded) {
211
- if (source == null) return {};
212
-
213
- var target = _objectWithoutPropertiesLoose(source, excluded);
214
-
215
- var key, i;
216
-
217
- if (Object.getOwnPropertySymbols) {
218
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
219
-
220
- for (i = 0; i < sourceSymbolKeys.length; i++) {
221
- key = sourceSymbolKeys[i];
222
- if (excluded.indexOf(key) >= 0) continue;
223
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
224
- target[key] = source[key];
225
- }
226
- }
227
-
228
- return target;
229
- }
230
-
231
- function _slicedToArray(arr, i) {
232
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
233
- }
234
-
235
- function _toArray(arr) {
236
- return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
237
- }
238
-
239
- function _toConsumableArray(arr) {
240
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
241
- }
242
-
243
- function _arrayWithoutHoles(arr) {
244
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
245
- }
246
-
247
- function _arrayWithHoles(arr) {
248
- if (Array.isArray(arr)) return arr;
249
- }
250
-
251
- function _iterableToArray(iter) {
252
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
253
- }
254
-
255
- function _iterableToArrayLimit(arr, i) {
256
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
257
- var _arr = [];
258
- var _n = true;
259
- var _d = false;
260
- var _e = undefined;
261
-
262
- try {
263
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
264
- _arr.push(_s.value);
265
-
266
- if (i && _arr.length === i) break;
267
- }
268
- } catch (err) {
269
- _d = true;
270
- _e = err;
271
- } finally {
272
- try {
273
- if (!_n && _i["return"] != null) _i["return"]();
274
- } finally {
275
- if (_d) throw _e;
276
- }
277
- }
278
-
279
- return _arr;
280
- }
281
-
282
- function _unsupportedIterableToArray(o, minLen) {
283
- if (!o) return;
284
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
285
- var n = Object.prototype.toString.call(o).slice(8, -1);
286
- if (n === "Object" && o.constructor) n = o.constructor.name;
287
- if (n === "Map" || n === "Set") return Array.from(o);
288
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
289
- }
290
-
291
- function _arrayLikeToArray(arr, len) {
292
- if (len == null || len > arr.length) len = arr.length;
293
-
294
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
295
-
296
- return arr2;
297
- }
298
-
299
- function _nonIterableSpread() {
300
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
301
- }
302
-
303
- function _nonIterableRest() {
304
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
305
- }
306
-
307
- var buildMultiTooltipResponse = function buildMultiTooltipResponse(options) {
308
- return function (response) {
309
- if (!response || Object.keys(response).length === 0 || !options) return {};
310
- var name = response.name,
311
- values = response.values;
312
- var newValues = Object.entries(values).reduce(function (acc, _ref) {
313
- var _ref2 = _slicedToArray(_ref, 2),
314
- k = _ref2[0],
315
- v = _ref2[1];
316
-
317
- return v === null ? _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, v)) : _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, options.find(function (o) {
318
- return o.value === v;
319
- }).label));
320
- }, {});
321
- return {
322
- name: name,
323
- values: newValues
324
- };
325
- };
326
- };
327
- var buildBooleanTooltipResponse = function buildBooleanTooltipResponse(response) {
328
- if (!response || Object.keys(response).length === 0) return {};
329
- var name = response.name,
330
- values = response.values;
331
- var newValues = Object.entries(values).reduce(function (acc, _ref3) {
332
- var _ref4 = _slicedToArray(_ref3, 2),
333
- k = _ref4[0],
334
- v = _ref4[1];
335
-
336
- return v === null ? _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, v)) : _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, k, v ? 'Vrai' : 'Faux'));
337
- }, {});
338
- return {
339
- name: name,
340
- values: newValues
341
- };
342
- };
343
-
344
- var getAlphabet = function getAlphabet() {
345
- return 'abcdefghijklmnopqrstuvwxyz'.split('');
346
- };
347
-
348
- var getLabelPositionClass = function getLabelPositionClass(position) {
349
- switch (position) {
350
- case 'LEFT':
351
- return 'label-left';
352
-
353
- case 'BOTTOM':
354
- return 'label-bottom';
355
-
356
- case 'RIGHT':
357
- return 'label-right';
358
-
359
- default:
360
- return 'label-top';
361
- }
362
- };
363
-
364
- var getItemsPositioningClass = function getItemsPositioningClass(positioning) {
365
- switch (positioning) {
366
- case 'HORIZONTAL':
367
- return 'horizontal-options';
368
-
369
- case 'VERTICAL':
370
- default:
371
- return '';
372
- }
373
- };
374
-
375
- var getResponseName = function getResponseName(response) {
376
- return response && response.name || '';
377
- };
378
- var getResponseByPreference = function getResponseByPreference(preferences) {
379
- return function (response) {
380
- if (!(response && response.values)) return '';
381
- return preferences.reduce(function (acc, p) {
382
- var value = response.values[p];
383
- return value !== null ? value : acc;
384
- }, '');
385
- };
386
- };
387
-
388
- var buildStyleObject = function buildStyleObject(obj) {
389
- return obj ? Object.entries(obj).reduce(function (_, _ref) {
390
- var _ref2 = _slicedToArray(_ref, 2),
391
- key = _ref2[0],
392
- value = _ref2[1];
393
-
394
- if (key.startsWith(':')) _[key] = buildStyleObject(value);else _[camelCase__default['default'](key)] = value;
395
- return _;
396
- }, {}) : {};
397
- };
398
-
399
- var isResponseEmpty = function isResponseEmpty(response) {
400
- return Object.values(response.values).filter(function (v) {
401
- return v !== null;
402
- }).length === 0;
403
- };
404
-
405
- var getRosterInitLines = function getRosterInitLines(cells) {
406
- return Array.isArray(cells) ? cells.reduce(function (_, line) {
407
- return [].concat(_toConsumableArray(_), [line.reduce(function (__, component) {
408
- if (!component.response || __) return __;
409
- return !isResponseEmpty(component.response);
410
- }, false)]);
411
- }, []).filter(function (b) {
412
- return b;
413
- }).length : 0;
414
- };
415
-
416
- var buildBindingsForDeeperComponents = function buildBindingsForDeeperComponents(index) {
417
- return function (bindings) {
418
- return bindings ? Object.entries(bindings).reduce(function (_, _ref) {
419
- var _ref2 = _slicedToArray(_ref, 2),
420
- name = _ref2[0],
421
- value = _ref2[1];
422
-
423
- if (Array.isArray(value)) return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value[index] || null));
424
- return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value));
425
- }, {}) : {};
426
- };
427
- };
428
-
429
- var getDefaultDatasetStructure = function getDefaultDatasetStructure(name, value) {
430
- return _defineProperty({}, name, {
431
- dataStructure: {},
432
- dataPoints: _defineProperty({}, name, value)
433
- });
434
- };
435
-
436
- var buildVectorialBindings = function buildVectorialBindings(bindings) {
437
- return bindings ? Object.entries(bindings).reduce(function (_, _ref4) {
438
- var _ref5 = _slicedToArray(_ref4, 2),
439
- name = _ref5[0],
440
- value = _ref5[1];
441
-
442
- if (Array.isArray(value)) return _objectSpread2(_objectSpread2({}, _), getDefaultDatasetStructure(name, value));
443
- return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value));
444
- }, {}) : {};
445
- };
446
- var displayLoop = function displayLoop(dependencyList) {
447
- return function (bindings) {
448
- if (!Array.isArray(dependencyList) || !bindings) return false;
449
- return !(dependencyList.map(function (iv) {
450
- return Array.isArray(bindings[iv][0]) ? bindings[iv][0].flat()[0] : bindings[iv][0];
451
- }).filter(function (v) {
452
- return v;
453
- }).length === 0);
454
- };
455
- };
456
- var displayLoopQuestion = function displayLoopQuestion(dependencyList) {
457
- return function (bindings) {
458
- if (!Array.isArray(dependencyList) || !bindings) return false;
459
- return !(dependencyList.map(function (iv) {
460
- return Array.isArray(bindings[iv]) ? bindings[iv].flat()[0] : bindings[iv];
461
- }).filter(function (v) {
462
- return v;
463
- }).length === 0);
464
- };
465
- };
466
-
467
- var getLoopConstructorInitLines = function getLoopConstructorInitLines(components) {
468
- return Array.isArray(components) ? components.reduce(function (_, c) {
469
- return c.response && c.response.values[COLLECTED] && c.response.values[COLLECTED].length > _ ? c.response.values[COLLECTED].length : _;
470
- }, 0) : 0;
471
- };
472
- var getInvolvedVariables = function getInvolvedVariables(parentComponents) {
473
- return Array.isArray(parentComponents) ? parentComponents.reduce(function (_, c) {
474
- var response = c.response,
475
- responses = c.responses,
476
- components = c.components,
477
- depth = c.depth;
478
- if (response && response.name) return [].concat(_toConsumableArray(_), [{
479
- name: response.name,
480
- depth: depth
481
- }]);
482
- if (responses || components) return [].concat(_toConsumableArray(_), [getInvolvedVariables(responses || components)]);
483
- return _;
484
- }, []).flat() : [];
485
- };
486
- var lastLoopChildLineIsEmpty = function lastLoopChildLineIsEmpty(bindings) {
487
- return function (involvedVariables) {
488
- return bindings && involvedVariables ? involvedVariables.map(function (iv) {
489
- return iv.name;
490
- }).filter(function (iv) {
491
- return bindings[iv] && bindings[iv][bindings[iv].length - 1];
492
- }).length === 0 : true;
493
- };
494
- };
495
- var buildEmptyValue = function buildEmptyValue(depth) {
496
- if (!depth || depth === 1) return null;
497
- return new Array(depth - 1).fill(null).reduce(function (acc) {
498
- return new Array(1).fill(acc);
499
- }, null);
500
- };
501
-
502
- var VarsHasBeenUpdated = function VarsHasBeenUpdated(prevProps, props) {
503
- var oldR = prevProps.response,
504
- oldRs = prevProps.responses,
505
- oldC = prevProps.cells;
506
- var newR = props.response,
507
- newRs = props.responses,
508
- newC = props.cells;
509
- if (!newR && !newRs && !newC) return true;
510
- return !(newR && isEqual__default['default'](oldR, newR) || newRs && isEqual__default['default'](oldRs, newRs) || newC && isEqual__default['default'](oldC, newC));
511
- };
512
-
513
- var areEqual = function areEqual(prevProps, props) {
514
- if (VarsHasBeenUpdated(prevProps, props)) return false;
515
- var bindingDependencies = props.bindingDependencies;
516
-
517
- if (Array.isArray(bindingDependencies) && bindingDependencies.length > 0) {
518
- var oldB = prevProps.bindings;
519
- var newB = props.bindings;
520
- return !bindingDependencies.map(function (d) {
521
- return isEqual__default['default'](oldB[d], newB[d]);
522
- }).includes(false);
523
- }
524
-
525
- return true;
526
- };
527
-
528
- var responseToClean = function responseToClean(response) {
529
- return function (preferences) {
530
- if (!preferences || !response.values) return false;
531
- var values = response.values;
532
- if (!values) return false;
533
-
534
- var cutedValues = _objectSpread2(_objectSpread2({}, values), {}, _defineProperty({}, preferences[preferences.length - 1], null));
535
-
536
- return Object.values(cutedValues).filter(function (v) {
537
- return v !== null;
538
- }).length === 0;
539
- };
540
- };
541
- var responsesToClean = function responsesToClean(responses) {
542
- return function (preferences) {
543
- return function (key) {
544
- if (!preferences || !key) return false;
545
- var values = responses.find(function (r) {
546
- return r.response.name === key;
547
- }).response.values;
548
- if (!values) return false;
549
-
550
- var cutedValues = _objectSpread2(_objectSpread2({}, values), {}, _defineProperty({}, preferences[preferences.length - 1], null));
551
-
552
- return Object.values(cutedValues).filter(function (v) {
553
- return v !== null;
554
- }).length === 0;
555
- };
556
- };
557
- };
558
-
559
- function styleInject(css, ref) {
560
- if ( ref === void 0 ) ref = {};
561
- var insertAt = ref.insertAt;
562
-
563
- if (!css || typeof document === 'undefined') { return; }
564
-
565
- var head = document.head || document.getElementsByTagName('head')[0];
566
- var style = document.createElement('style');
567
- style.type = 'text/css';
568
-
569
- if (insertAt === 'top') {
570
- if (head.firstChild) {
571
- head.insertBefore(style, head.firstChild);
572
- } else {
573
- head.appendChild(style);
574
- }
575
- } else {
576
- head.appendChild(style);
577
- }
578
-
579
- if (style.styleSheet) {
580
- style.styleSheet.cssText = css;
581
- } else {
582
- style.appendChild(document.createTextNode(css));
583
- }
584
- }
585
-
586
- var css_248z = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.breadcrumb-lunatic {\n width: 100%;\n height: 40px;\n box-sizing: border-box;\n border-radius: 0px;\n background-color: #e80a4d;\n color: white;\n font-weight: bold;\n font-size: 130%;\n padding-left: 10px;\n display: flex;\n align-items: center;\n}\n\n.breadcrumb-element-lunatic:before {\n content: \">\";\n color: white;\n margin-left: 0.4em;\n margin-right: 0.4em;\n}";
587
- styleInject(css_248z);
588
-
589
- var Breadcrumb = function Breadcrumb(_ref) {
590
- var elements = _ref.elements,
591
- style = _ref.style;
592
- return /*#__PURE__*/React__default['default'].createElement("div", {
593
- "aria-label": "breadcrumb",
594
- className: "breadcrumb-lunatic",
595
- style: buildStyleObject(style)
596
- }, elements.map(function (e, i) {
597
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, {
598
- key: "breadcrumb-".concat(e.toLowerCase())
599
- }, e && /*#__PURE__*/React__default['default'].createElement("span", {
600
- className: i !== 0 ? 'breadcrumb-element-lunatic' : undefined
601
- }, e));
602
- }));
603
- };
604
-
605
- Breadcrumb.propTypes = {
606
- elements: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string).isRequired,
607
- style: PropTypes__default['default'].object
608
- };
609
-
610
- var css_248z$1 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.button-lunatic {\n width: 100%;\n color: white;\n border-color: #e80a4d;\n background-color: #e80a4d;\n font-size: 1.5em;\n font-weight: bold;\n padding: 0.4em;\n}\n.button-lunatic:hover, .button-lunatic:focus:hover {\n color: #e80a4d;\n background-color: white;\n border-color: #e80a4d;\n}\n.button-lunatic:focus {\n outline: none;\n background-color: #e07898;\n border-color: #e07898;\n}\n.button-lunatic:disabled {\n background: #dddddd;\n color: #e80a4d;\n}";
611
- styleInject(css_248z$1);
612
-
613
- var Button = function Button(_ref) {
614
- var label = _ref.label,
615
- value = _ref.value,
616
- onClick = _ref.onClick,
617
- disabled = _ref.disabled,
618
- style = _ref.style;
619
- return /*#__PURE__*/React__default['default'].createElement("button", {
620
- type: "button",
621
- "aria-label": label || 'button',
622
- className: "button-lunatic",
623
- style: buildStyleObject(style),
624
- disabled: disabled,
625
- onClick: onClick
626
- }, value);
627
- };
628
-
629
- Button.propTypes = {
630
- value: PropTypes__default['default'].string.isRequired,
631
- disabled: PropTypes__default['default'].bool,
632
- onClick: PropTypes__default['default'].func.isRequired
633
- };
634
-
635
- var interpret = function interpret(features) {
636
- return function (bindings, doNotReplaceNullBindings) {
637
- return function (expression) {
638
- if (!expression) return '';
639
- if (!Array.isArray(features)) return expression;
640
-
641
- if (features.includes('VTL')) {
642
- try {
643
- var VTLExpr = vtl2_1Engine.interpret(expression, doNotReplaceNullBindings ? bindings : replaceNullBindings(bindings));
644
- if (!VTLExpr) return expression;
645
- return VTLExpr;
646
- } catch (e) {
647
- return expression;
648
- }
649
- }
650
-
651
- return expression;
652
- };
653
- };
654
- };
655
- var interpretWithEmptyDefault = function interpretWithEmptyDefault(features, doNotReplaceNullBindings) {
656
- return function (bindings, replaceNullBindings) {
657
- return function (expression) {
658
- if (!expression) return '';
659
- if (!Array.isArray(features)) return expression;
660
-
661
- if (features.includes('VTL')) {
662
- try {
663
- var VTLExpr = vtl2_1Engine.interpret(expression, doNotReplaceNullBindings ? bindings : replaceNullBindings(bindings, ''));
664
- if (!VTLExpr) return '';
665
- return VTLExpr;
666
- } catch (e) {
667
- return '';
668
- }
669
- }
670
-
671
- return '';
672
- };
673
- };
674
- };
675
- var replaceNullBindings = function replaceNullBindings(bindings, defaultValue) {
676
- return bindings ? Object.entries(bindings).reduce(function (acc, _ref) {
677
- var _ref2 = _slicedToArray(_ref, 2),
678
- key = _ref2[0],
679
- value = _ref2[1];
680
-
681
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, value === null ? defaultValue || key : value));
682
- }, {}) : {};
683
- };
684
-
685
- var mergeQuestionnaireAndData = function mergeQuestionnaireAndData(questionnaire) {
686
- return function (data) {
687
- if (!questionnaire || !questionnaire.components) return {};
688
- if (questionnaire.components.length === 0) return questionnaire;
689
-
690
- var components = questionnaire.components,
691
- variables = questionnaire.variables,
692
- props = _objectWithoutProperties(questionnaire, ["components", "variables"]);
693
-
694
- var vars = buildVars(data || {})(variables);
695
- var filledComponents = buildFilledComponents(vars[COLLECTED])(components)(0);
696
- return _objectSpread2(_objectSpread2({}, props), {}, {
697
- components: filledComponents,
698
- variables: vars
699
- });
700
- };
701
- };
702
-
703
- var buildVars = function buildVars(data) {
704
- return function (variables) {
705
- if (!Array.isArray(variables)) return {};
706
- var collectedData = data.COLLECTED;
707
- var collected = variables.filter(function (_ref) {
708
- var variableType = _ref.variableType;
709
- return variableType === COLLECTED;
710
- }).reduce(function (acc, _ref2) {
711
- var values = _ref2.values,
712
- name = _ref2.name,
713
- componentRef = _ref2.componentRef;
714
- var d = collectedData && collectedData[name] || {};
715
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, name, {
716
- componentRef: componentRef,
717
- values: _objectSpread2(_objectSpread2({}, values), d)
718
- }));
719
- }, {});
720
- var EXTERNAL$1 = variables.filter(function (_ref3) {
721
- var variableType = _ref3.variableType;
722
- return variableType === EXTERNAL;
723
- }).reduce(function (_, v) {
724
- return _objectSpread2(_objectSpread2({}, _), initExternalVariable(v)(data));
725
- }, {});
726
- return {
727
- EXTERNAL: EXTERNAL$1,
728
- COLLECTED: collected,
729
- CALCULATED: variables.filter(function (_ref4) {
730
- var variableType = _ref4.variableType;
731
- return variableType === CALCULATED;
732
- }).reduce(function (_, v) {
733
- return _objectSpread2(_objectSpread2({}, _), initCalculatedVariable(v)(_objectSpread2(_objectSpread2({}, EXTERNAL$1), collected)));
734
- }, {})
735
- };
736
- };
737
- };
738
-
739
- var buildFilledComponents = function buildFilledComponents(vars) {
740
- return function (components) {
741
- return function (depth) {
742
- return components.map(function (c) {
743
- var component = _objectSpread2({
744
- depth: depth
745
- }, c);
746
-
747
- return buildFilledComponent(vars)(component);
748
- });
749
- };
750
- };
751
- };
752
-
753
- var buildFilledComponent = function buildFilledComponent(vars) {
754
- return function (component) {
755
- if (component.response) return buildResponseComponent(vars)(component);else if (component.responses) return buildResponsesComponent(vars)(component);else if (component.cells) return buildCellsComponent(vars)(component);else if (component.components) return buildComponentsComponent(vars)(component);
756
- return component;
757
- };
758
- };
759
- var buildResponseComponent = function buildResponseComponent(vars) {
760
- return function (c) {
761
- return _objectSpread2(_objectSpread2({}, c), {}, {
762
- response: {
763
- name: c.response.name,
764
- values: vars[c.response.name].values
765
- }
766
- });
767
- };
768
- };
769
- var buildResponsesComponent = function buildResponsesComponent(vars) {
770
- return function (c) {
771
- var responses = c.responses,
772
- rest = _objectWithoutProperties(c, ["responses"]);
773
-
774
- var filledResponses = responses.map(function (r) {
775
- return buildResponseComponent(vars)(r);
776
- });
777
- return _objectSpread2(_objectSpread2({}, rest), {}, {
778
- responses: filledResponses
779
- });
780
- };
781
- };
782
- var buildCellsComponent = function buildCellsComponent(vars) {
783
- return function (c) {
784
- var cells = c.cells,
785
- depth = c.depth,
786
- rest = _objectWithoutProperties(c, ["cells", "depth"]);
787
-
788
- var filledCells = cells.map(function (row) {
789
- return buildFilledComponents(vars)(row)(depth);
790
- });
791
- return _objectSpread2(_objectSpread2({}, rest), {}, {
792
- depth: depth,
793
- cells: filledCells
794
- });
795
- };
796
- };
797
- var buildComponentsComponent = function buildComponentsComponent(vars) {
798
- return function (component) {
799
- var components = component.components,
800
- depth = component.depth,
801
- rest = _objectWithoutProperties(component, ["components", "depth"]);
802
-
803
- var filledComponents = buildFilledComponents(vars)(components)(depth + 1);
804
- return _objectSpread2(_objectSpread2({}, rest), {}, {
805
- depth: depth,
806
- components: filledComponents
807
- });
808
- };
809
- };
810
-
811
- var initExternalVariable = function initExternalVariable(_ref5) {
812
- var name = _ref5.name;
813
- return function (data) {
814
- return _defineProperty({}, name, data && data.EXTERNAL && data.EXTERNAL[name] || null);
815
- };
816
- };
817
-
818
- var initCalculatedVariable = function initCalculatedVariable(_ref7) {
819
- var name = _ref7.name,
820
- expression = _ref7.expression;
821
- return function (data) {
822
- var bindings = Object.entries(data).reduce(function (acc, _ref8) {
823
- var _ref9 = _slicedToArray(_ref8, 2),
824
- key = _ref9[0],
825
- value = _ref9[1];
826
-
827
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, typeof value === 'string' || value === null ? value : value.values[COLLECTED]));
828
- }, {});
829
- return _defineProperty({}, name, {
830
- expression: expression,
831
- value: interpret(['VTL'])(bindings)(expression)
832
- });
833
- };
834
- };
835
-
836
- var getState = function getState(questionnaire) {
837
- var _ref;
838
-
839
- var variables = questionnaire.variables;
840
- return _ref = {}, _defineProperty(_ref, CALCULATED, getCalculatedFromVariables(variables)), _defineProperty(_ref, COLLECTED, getCollectedState(questionnaire)), _defineProperty(_ref, EXTERNAL, getExternalFromVariables(variables)), _ref;
841
- };
842
- var getCollectedState = function getCollectedState(questionnaire) {
843
- var variables = questionnaire.variables;
844
- return variables && variables[COLLECTED] && Object.entries(variables[COLLECTED]).reduce(function (acc, _ref2) {
845
- var _ref3 = _slicedToArray(_ref2, 2),
846
- name = _ref3[0],
847
- values = _ref3[1].values;
848
-
849
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, name, values));
850
- }, {}) || {};
851
- };
852
-
853
- var getCalculatedFromVariables = function getCalculatedFromVariables(variables) {
854
- return variables && variables[CALCULATED] ? Object.entries(variables[CALCULATED]).reduce(function (_, _ref4) {
855
- var _ref5 = _slicedToArray(_ref4, 2),
856
- name = _ref5[0],
857
- value = _ref5[1].value;
858
-
859
- return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, name, value));
860
- }, {}) : {};
861
- };
862
-
863
- var getExternalFromVariables = function getExternalFromVariables(variables) {
864
- return variables && variables[EXTERNAL] || {};
865
- };
866
-
867
- var getCollectedStateByValueType = function getCollectedStateByValueType(questionnaire) {
868
- return function (valueType, displayNull) {
869
- return ['PREVIOUS', 'COLLECTED', 'FORCED', 'EDITED', 'INPUTED'].includes(valueType) ? Object.entries(getCollectedState(questionnaire)).reduce(function (_, v) {
870
- if (displayNull || v[1][valueType] !== null) return _objectSpread2(_objectSpread2({}, _), {}, _defineProperty({}, v[0], v[1][valueType]));
871
- return _;
872
- }, {}) : {};
873
- };
874
- };
875
- var getBindings = function getBindings(questionnaire) {
876
- var variables = questionnaire.variables;
877
- return _objectSpread2(_objectSpread2(_objectSpread2({}, getCollectedStateByValueType(questionnaire)('COLLECTED', true)), getCalculatedFromVariables(variables)), getExternalFromVariables(variables));
878
- };
879
-
880
- var supportedPreferences = [PREVIOUS, COLLECTED, FORCED, EDITED, INPUTED];
881
-
882
- var updateQuestionnaire = function updateQuestionnaire(valueType) {
883
- return function (questionnaire) {
884
- return function (preferences) {
885
- return function (updatedValues) {
886
- if (!supportedPreferences.includes(valueType) || preferences.length === 0 || !updatedValues) return questionnaire;
887
-
888
- var variables = questionnaire.variables,
889
- components = questionnaire.components,
890
- other = _objectWithoutProperties(questionnaire, ["variables", "components"]);
891
-
892
- if (!components || components.length === 0) return questionnaire;
893
- var varsAndRefs = Object.entries(updatedValues).reduce(function (acc, _ref) {
894
- var _ref2 = _slicedToArray(_ref, 2),
895
- key = _ref2[0],
896
- value = _ref2[1];
897
-
898
- var _acc$newVariables = acc.newVariables,
899
- COLLECTED = _acc$newVariables.COLLECTED,
900
- otherVars = _objectWithoutProperties(_acc$newVariables, ["COLLECTED"]),
901
- refs = acc.refs;
902
-
903
- var _COLLECTED$key = COLLECTED[key],
904
- componentRef = _COLLECTED$key.componentRef,
905
- values = _COLLECTED$key.values;
906
- var updated = {
907
- componentRef: componentRef,
908
- values: _objectSpread2(_objectSpread2({}, values), {}, _defineProperty({}, valueType, buildNewValue(preferences)(valueType)(values)(value)))
909
- };
910
-
911
- var newCollected = _objectSpread2(_objectSpread2({}, COLLECTED), {}, _defineProperty({}, key, updated));
912
-
913
- return {
914
- newVariables: _objectSpread2(_objectSpread2({}, otherVars), {}, {
915
- COLLECTED: newCollected
916
- }),
917
- refs: [].concat(_toConsumableArray(refs), [componentRef])
918
- };
919
- }, {
920
- newVariables: variables,
921
- refs: []
922
- });
923
- var newVariables = varsAndRefs.newVariables,
924
- r = varsAndRefs.refs;
925
- var newVariablesWithCalculated = valueType === COLLECTED ? addCalculatedVars(newVariables) : newVariables;
926
- var collectedVars = newVariables[COLLECTED];
927
- var newComponents = components.map(function (c) {
928
- if (r.includes(c.id)) return buildFilledComponent(collectedVars)(c);
929
- return c;
930
- });
931
- return _objectSpread2(_objectSpread2({}, other), {}, {
932
- variables: newVariablesWithCalculated,
933
- components: newComponents
934
- });
935
- };
936
- };
937
- };
938
- };
939
-
940
- var buildNewValue = function buildNewValue(preferences) {
941
- return function (valueType) {
942
- return function (oldValues) {
943
- return function (value) {
944
- if (preferences.length === 1) return value;
945
- var index = preferences.indexOf(valueType);
946
- if (index < 1) return value;
947
- var valuesByPreference = preferences.slice(0, index).map(function (p) {
948
- return oldValues[p];
949
- }).filter(function (v) {
950
- return v !== null;
951
- });
952
- var lastValue = valuesByPreference[valuesByPreference.length - 1];
953
- return lastValue === value ? null : value;
954
- };
955
- };
956
- };
957
- };
958
-
959
- var addCalculatedVars = function addCalculatedVars(variables) {
960
- if (!variables[CALCULATED] || Object.keys(variables[CALCULATED]).length === 0) return variables;
961
- var COLLECTED$1 = variables.COLLECTED,
962
- EXTERNAL = variables.EXTERNAL,
963
- CALCULATED$1 = variables.CALCULATED;
964
- var collected = Object.entries(COLLECTED$1).reduce(function (acc, _ref3) {
965
- var _ref4 = _slicedToArray(_ref3, 2),
966
- key = _ref4[0],
967
- values = _ref4[1].values;
968
-
969
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, values[COLLECTED]));
970
- }, {});
971
- var bindings = buildVectorialBindings(_objectSpread2(_objectSpread2({}, collected), EXTERNAL));
972
- var calculated = Object.entries(CALCULATED$1).reduce(function (acc, _ref5) {
973
- var _ref6 = _slicedToArray(_ref5, 2),
974
- key = _ref6[0],
975
- expression = _ref6[1].expression;
976
-
977
- // Assume that a calculated variable has a first level scope
978
- // If we need to handle deep calculated variables, we have to
979
- // update the shape of bindings, grouping vars by type
980
- var res = interpret(['VTL'])(bindings)(expression);
981
- var value = Array.isArray(res) ? res.join(',') : res;
982
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, {
983
- expression: expression,
984
- value: value
985
- }));
986
- }, {});
987
- return {
988
- EXTERNAL: EXTERNAL,
989
- COLLECTED: COLLECTED$1,
990
- CALCULATED: calculated
991
- };
992
- };
993
-
994
- var filterComponents = function filterComponents(components, management, bindings, features) {
995
- var filteredComponents = management ? components : components.filter(function (_ref) {
996
- var conditionFilter = _ref.conditionFilter;
997
- return !conditionFilter || interpret(features)(bindings, true)(conditionFilter) === 'normal';
998
- });
999
- return filteredComponents;
1000
- };
1001
-
1002
- var useLunatic = function useLunatic(source, data, _ref2) {
1003
- var _ref2$savingType = _ref2.savingType,
1004
- savingType = _ref2$savingType === void 0 ? COLLECTED : _ref2$savingType,
1005
- _ref2$preferences = _ref2.preferences,
1006
- preferences = _ref2$preferences === void 0 ? [COLLECTED] : _ref2$preferences,
1007
- _ref2$features = _ref2.features,
1008
- features = _ref2$features === void 0 ? ['VTL'] : _ref2$features,
1009
- _ref2$management = _ref2.management,
1010
- management = _ref2$management === void 0 ? false : _ref2$management;
1011
-
1012
- var _useState = React.useState(mergeQuestionnaireAndData(source)(data || {})),
1013
- _useState2 = _slicedToArray(_useState, 2),
1014
- questionnaire = _useState2[0],
1015
- setQuestionnaire = _useState2[1];
1016
-
1017
- var _useState3 = React.useState({}),
1018
- _useState4 = _slicedToArray(_useState3, 2),
1019
- todo = _useState4[0],
1020
- setTodo = _useState4[1];
1021
-
1022
- var handleChange = React.useCallback(function (updatedValue) {
1023
- setTodo(updatedValue);
1024
- }, []); // Assume we only want to handle source update
1025
-
1026
- React.useEffect(function () {
1027
- setQuestionnaire(mergeQuestionnaireAndData(source)(data)); // eslint-disable-next-line react-hooks/exhaustive-deps
1028
- }, [source]);
1029
- React.useEffect(function () {
1030
- if (Object.keys(todo).length !== 0) {
1031
- var newQ = updateQuestionnaire(savingType)(questionnaire)(preferences)(todo);
1032
- setQuestionnaire(newQ);
1033
- setTodo({});
1034
- }
1035
- }, [todo, preferences, questionnaire, savingType, features, management]);
1036
- var bindings = getBindings(questionnaire);
1037
- var components = filterComponents(questionnaire.components, management, bindings, features);
1038
- return {
1039
- questionnaire: questionnaire,
1040
- handleChange: handleChange,
1041
- components: components,
1042
- bindings: bindings
1043
- };
1044
- };
1045
-
1046
- var css_248z$2 = "@charset \"UTF-8\";\n.declaration-instruction {\n font-style: italic;\n font-size: 80%;\n}\n\n.declaration-comment {\n font-size: 80%;\n}\n\n.declaration-statement {\n font-style: italic;\n font-size: 80%;\n color: blue;\n}\n\n.declaration-help {\n font-style: italic;\n font-size: 80%;\n color: green;\n}\n\n.declaration-warning {\n font-style: bold;\n font-size: 80%;\n color: red;\n}\n\n.declaration-message_filter {\n font-size: 100%;\n color: #494242;\n}\n.declaration-message_filter:before {\n content: \"→ \";\n}";
1047
- styleInject(css_248z$2);
1048
-
1049
- var Declarations = function Declarations(_ref) {
1050
- var id = _ref.id,
1051
- type = _ref.type,
1052
- declarations = _ref.declarations,
1053
- features = _ref.features,
1054
- bindings = _ref.bindings;
1055
- var filtered = declarations.filter(function (_ref2) {
1056
- var position = _ref2.position;
1057
- return position === type;
1058
- });
1059
- return /*#__PURE__*/React__default['default'].createElement("div", {
1060
- id: "declarations-".concat(id, "-").concat(type),
1061
- className: "declarations-lunatic"
1062
- }, filtered.map(function (_ref3) {
1063
- var idD = _ref3.id,
1064
- label = _ref3.label,
1065
- declarationType = _ref3.declarationType;
1066
- return /*#__PURE__*/React__default['default'].createElement("div", {
1067
- key: "".concat(idD),
1068
- className: "declaration-lunatic declaration-".concat(declarationType.toLowerCase())
1069
- }, interpret(features)(bindings)(label));
1070
- }));
1071
- };
1072
-
1073
- Declarations.defaultProps = {
1074
- type: 'AFTER_QUESTION_TEXT',
1075
- declarations: [],
1076
- features: [],
1077
- bindings: {}
1078
- };
1079
- Declarations.propTypes = {
1080
- id: PropTypes__default['default'].string.isRequired,
1081
- type: PropTypes__default['default'].string,
1082
- declarations: declarations,
1083
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1084
- bindings: PropTypes__default['default'].object
1085
- };
1086
-
1087
- var img = new Image(); img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAAGEMEXHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABjUExURf///8Xn9XrH6Va44zKp3Eiy4GW+5b7j9Kja8Bme2CSj2p7W7vH5/UGv34XM69vw+czq9iCh2ZbT7bfg82W94+33/Njt92zB5k+14XPE6On2+4vN6sLl9Mno9i+n3Cum2wAAAIfAWccAAAAhdFJOU///////////////////////////////////////////AJ/B0CEAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAEVSURBVChTVVIBcsMgDFODm2JKIFnTbvv/Ryfb0F11Z4ptWYBSYL8wFBk34A7kLwDCUIbBfkcIHppsM2tIVy61exRoQ0LFaa2NhLSiP7l/MA7no6rsdd+UI5SINQSvZKVsBXSB7N4plnFRyihxxrFdtxeep5qwYRFZx1ZK6735IMrmJSQOZR9sXKWZSKeaVdQVfftOirdG8kHjhXlFxZ0ZWezpwrclo4Q69ZUWZj28BPyobmbCQPYxR6HdE53leLyBpGIGEELHP7GGtB/DIyds+mathZ/BEBefyNSRMJxDwRggcXbMlSlGsPM9uWHpgKnRgPB/zBCd/yStLB3z1hK6wO+8zn7o+7sx47v/s9oOdgdoLAD8AWlNC8M57XWRAAAAAElFTkSuQmCC';
1088
-
1089
- var img$1 = new Image(); img$1.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAZCAMAAAFiGY6DAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABUUExURf///6zc8Uiy4PH5/d/x+b7j9Bme2DKp3CSj2la442W+5YnN61O34nrH6Z7W7tDr9yCh2bfg8+33/HPE6EGv35bT7U+14czq9nDD56XZ7+n2+wAAAJWny4EAAAAcdFJOU////////////////////////////////////wAXsuLXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQoU2VSC3bDIAwzJRM0hCb0ldfd/6STDFm7TgnEX2GbGHExQ4PZoc0scT0MgC/6xkqZ+tC0x6y4E4zlU5VAs8I2Wrv0/PL/xzih4gKsCJVB1RZKsvXYrJntG7gXrM/ddgZ3JPDtBRHFSQYG1Ylgy9cUhStwdaGKO6tAdX0wCQi5tUyzK6oYYNHB+aDDBXhHcjtu09uHKgfTYGTUXMRDtCOU7HUU8ShH1CdWdj1FoS/3k+4vyB3Se6KV8tv6Bamm2Z3d+GWvuNmel4WC7A9+OUcV9AKr5PHEJHIxavjui4mOisf0/B7uiqwTrp9/gisa0wuycLTs3zlI2yl7QpTvDR8FlXy3jWq3hqBYjYpXPy/A7Lmu33GIMR1r3z6OPnFngYFXbfYDTw4LkdQNpj4AAAAASUVORK5CYII=';
1090
-
1091
- var img$2 = /*#__PURE__*/Object.freeze({
1092
- __proto__: null,
1093
- editedImg: img,
1094
- forcedImg: img$1
1095
- });
1096
-
1097
- var css_248z$3 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n/* Tooltip container */\n.tooltip-lunatic {\n position: relative;\n display: inline-block;\n align-items: center;\n}\n\n/* Tooltip text */\n.tooltip-lunatic .tooltip-text {\n visibility: hidden;\n width: 20em;\n background-color: #e80a4d;\n color: #fff;\n padding: 5px 0;\n border-radius: 6px;\n text-align: left;\n /* Position the tooltip text */\n position: absolute;\n z-index: 1;\n bottom: 120%;\n left: -10em;\n /* Fade in tooltip */\n opacity: 0;\n transition: opacity 0.3s;\n}\n\n/* Show the tooltip text when you mouse over the tooltip container */\n.tooltip-lunatic:hover .tooltip-text {\n visibility: visible;\n opacity: 1;\n}";
1098
- styleInject(css_248z$3);
1099
-
1100
- var TooltipResponse = function TooltipResponse(_ref) {
1101
- var id = _ref.id,
1102
- response = _ref.response;
1103
-
1104
- var _useState = React.useState(function () {
1105
- return buildTooltip(response);
1106
- }),
1107
- _useState2 = _slicedToArray(_useState, 2),
1108
- tooltipElements = _useState2[0],
1109
- setTooltipElements = _useState2[1];
1110
-
1111
- React.useEffect(function () {
1112
- setTooltipElements(buildTooltip(response));
1113
- }, [response]);
1114
- var content = tooltipElements.content,
1115
- imgName = tooltipElements.imgName;
1116
- if (!content) return null;
1117
- return /*#__PURE__*/React__default['default'].createElement("div", {
1118
- className: "tooltip-lunatic"
1119
- }, /*#__PURE__*/React__default['default'].createElement("img", {
1120
- id: id,
1121
- alt: "img-tooltip",
1122
- src: img$2[imgName].src || img$2[imgName]
1123
- }), /*#__PURE__*/React__default['default'].createElement("span", {
1124
- className: "tooltip-text"
1125
- }, /*#__PURE__*/React__default['default'].createElement("ul", null, content.map(function (_ref2) {
1126
- var key = _ref2.key,
1127
- value = _ref2.value;
1128
- return /*#__PURE__*/React__default['default'].createElement("li", {
1129
- key: "tooltip-".concat(id, "-content-").concat(key)
1130
- }, "".concat(key, " : ").concat(value));
1131
- }))));
1132
- };
1133
-
1134
- TooltipResponse.defaultProps = {
1135
- response: {}
1136
- };
1137
- TooltipResponse.propTypes = {
1138
- id: PropTypes__default['default'].string,
1139
- response: response
1140
- };
1141
-
1142
- var css_248z$4 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.checkbox-group {\n border: 0.1em solid #e80a4d;\n}\n\n.checkbox-lunatic {\n margin: 0;\n margin-right: 1em;\n margin-left: 1em;\n margin-top: 0.5em;\n}\n.checkbox-lunatic:focus {\n outline: none;\n}\n.checkbox-lunatic:checked + label {\n border: 0.1em solid #e80a4d;\n padding: 0.3em;\n}\n.checkbox-lunatic:focus {\n box-shadow: 0 0 0.3em 0.3em #e80a4d;\n}\n\n.checkbox-lunatic-no-margin {\n margin: 0;\n margin-right: 1em;\n margin-left: 0;\n margin-top: 0.5em;\n}\n.checkbox-lunatic-no-margin:focus {\n outline: none;\n}\n.checkbox-lunatic-no-margin:checked + label {\n border: 0.1em solid #e80a4d;\n padding: 0.3em;\n}\n\n.checkbox-modality {\n margin-top: 1em;\n}\n\n.checkbox-boolean-modality {\n margin-top: 1em;\n}\n\n.checkbox-alone {\n margin-left: 0;\n margin-top: 0.5em;\n}";
1143
- styleInject(css_248z$4);
1144
-
1145
- var CheckboxGroup = function CheckboxGroup(_ref) {
1146
- var id = _ref.id,
1147
- label = _ref.label,
1148
- preferences = _ref.preferences,
1149
- responses = _ref.responses,
1150
- handleChange = _ref.handleChange,
1151
- disabled = _ref.disabled,
1152
- focused = _ref.focused,
1153
- keyboardSelection = _ref.keyboardSelection,
1154
- positioning = _ref.positioning,
1155
- declarations = _ref.declarations,
1156
- features = _ref.features,
1157
- bindings = _ref.bindings,
1158
- management = _ref.management,
1159
- style = _ref.style;
1160
- var fieldsetStyle = style.fieldsetStyle,
1161
- modalityStyle = style.modalityStyle;
1162
- var inputRef = React.useRef();
1163
-
1164
- var specificHandleChange = function specificHandleChange(e) {
1165
- var _Object$entries$ = _slicedToArray(Object.entries(e)[0], 2),
1166
- key = _Object$entries$[0],
1167
- value = _Object$entries$[1];
1168
-
1169
- if (value === false && responsesToClean(responses)(preferences)(key)) handleChange(_defineProperty({}, key, null));else handleChange(e);
1170
- };
1171
-
1172
- React.useEffect(function () {
1173
- if (focused) inputRef.current.focus();
1174
- }, [focused]);
1175
- var checkedArray = [];
1176
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1177
- id: id,
1178
- type: BEFORE_QUESTION_TEXT,
1179
- declarations: declarations,
1180
- features: features,
1181
- bindings: bindings
1182
- }), /*#__PURE__*/React__default['default'].createElement("fieldset", {
1183
- key: "checkbox-".concat(id),
1184
- className: "checkbox-group",
1185
- style: buildStyleObject(fieldsetStyle)
1186
- }, /*#__PURE__*/React__default['default'].createElement("legend", null, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1187
- id: id,
1188
- type: AFTER_QUESTION_TEXT,
1189
- declarations: declarations,
1190
- features: features,
1191
- bindings: bindings
1192
- }), responses.map(function (_ref2, i) {
1193
- var modId = _ref2.id,
1194
- modLabel = _ref2.label,
1195
- response = _ref2.response;
1196
- var checked = getResponseByPreference(preferences)(response);
1197
- if (checked) checkedArray.push(modId);
1198
- var toRef = i === 0 || checkedArray[0] && checkedArray[0] === modId;
1199
- var interpretedLabel = interpret(features)(bindings)(modLabel);
1200
- return /*#__PURE__*/React__default['default'].createElement("div", {
1201
- className: "".concat(getItemsPositioningClass(positioning)),
1202
- key: "checkbox-".concat(id, "-").concat(modId)
1203
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1204
- className: "field-container"
1205
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1206
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1207
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1208
- className: "checkbox-modality ".concat(checked ? 'content-checked' : '')
1209
- }, /*#__PURE__*/React__default['default'].createElement("input", {
1210
- type: "checkbox",
1211
- id: "checkbox-".concat(id, "-").concat(modId),
1212
- ref: toRef ? inputRef : null,
1213
- key: "checkbox-".concat(id, "-").concat(modId),
1214
- "aria-labelledby": "input-label-".concat(id, "-").concat(modId),
1215
- className: "checkbox-lunatic",
1216
- checked: checked,
1217
- disabled: disabled,
1218
- onChange: function onChange(e) {
1219
- specificHandleChange(_defineProperty({}, getResponseName(response), e.target.checked));
1220
- }
1221
- }), /*#__PURE__*/React__default['default'].createElement("label", {
1222
- htmlFor: "checkbox-".concat(id, "-").concat(modId),
1223
- id: "input-label-".concat(id, "-").concat(modId),
1224
- style: checked ? buildStyleObject(modalityStyle) : {}
1225
- }, keyboardSelection && /*#__PURE__*/React__default['default'].createElement("span", {
1226
- className: "code-modality"
1227
- }, responses.length < 10 ? i + 1 : getAlphabet()[i].toUpperCase()), interpretedLabel))), management && /*#__PURE__*/React__default['default'].createElement("div", {
1228
- className: "tooltip"
1229
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1230
- id: id,
1231
- response: buildBooleanTooltipResponse(response)
1232
- }))));
1233
- })), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1234
- id: id,
1235
- type: DETACHABLE,
1236
- declarations: declarations,
1237
- features: features,
1238
- bindings: bindings
1239
- }));
1240
- };
1241
-
1242
- CheckboxGroup.defaultProps = {
1243
- label: '',
1244
- preferences: ['COLLECTED'],
1245
- responses: [],
1246
- disabled: false,
1247
- focused: false,
1248
- keyboardSelection: false,
1249
- positioning: 'DEFAULT',
1250
- declarations: [],
1251
- features: [],
1252
- bindings: {},
1253
- management: false,
1254
- style: {
1255
- fieldsetStyle: {},
1256
- modalityStyle: {}
1257
- }
1258
- };
1259
- CheckboxGroup.propTypes = {
1260
- id: PropTypes__default['default'].string.isRequired,
1261
- label: PropTypes__default['default'].string,
1262
- preferences: PropTypes__default['default'].arrayOf(valueType),
1263
- response: response,
1264
- handleChange: PropTypes__default['default'].func.isRequired,
1265
- disabled: PropTypes__default['default'].bool,
1266
- focused: PropTypes__default['default'].bool,
1267
- keyboardSelection: PropTypes__default['default'].bool,
1268
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
1269
- declarations: declarations,
1270
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1271
- bindings: PropTypes__default['default'].object,
1272
- management: PropTypes__default['default'].bool,
1273
- style: PropTypes__default['default'].object
1274
- };
1275
- var group = /*#__PURE__*/React__default['default'].memo(CheckboxGroup, areEqual);
1276
-
1277
- var CheckboxBoolean = function CheckboxBoolean(_ref) {
1278
- var id = _ref.id,
1279
- label = _ref.label,
1280
- preferences = _ref.preferences,
1281
- response = _ref.response,
1282
- handleChange = _ref.handleChange,
1283
- disabled = _ref.disabled,
1284
- positioning = _ref.positioning,
1285
- focused = _ref.focused,
1286
- declarations = _ref.declarations,
1287
- features = _ref.features,
1288
- bindings = _ref.bindings,
1289
- management = _ref.management,
1290
- style = _ref.style;
1291
- var inputRef = React.useRef();
1292
-
1293
- var specificHandleChange = function specificHandleChange(e) {
1294
- var _Object$entries$ = _slicedToArray(Object.entries(e)[0], 2),
1295
- key = _Object$entries$[0],
1296
- value = _Object$entries$[1];
1297
-
1298
- if (value === false && responseToClean(response)(preferences)) handleChange(_defineProperty({}, key, null));else handleChange(e);
1299
- };
1300
-
1301
- React.useEffect(function () {
1302
- if (focused) inputRef.current.focus();
1303
- }, [focused]);
1304
- var isVertical = positioning === 'VERTICAL';
1305
- var isHorizontal = positioning === 'HORIZONTAL';
1306
- var input = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement("input", {
1307
- type: "checkbox",
1308
- id: "checkbox-boolean-".concat(id),
1309
- ref: inputRef,
1310
- title: label ? label : 'empty-label',
1311
- className: "checkbox-boolean-lunatic".concat(isVertical ? '-no-margin' : ''),
1312
- style: buildStyleObject(style),
1313
- checked: getResponseByPreference(preferences)(response),
1314
- disabled: disabled,
1315
- onChange: function onChange(e) {
1316
- specificHandleChange(_defineProperty({}, getResponseName(response), e.target.checked));
1317
- }
1318
- }), label && /*#__PURE__*/React__default['default'].createElement("label", {
1319
- htmlFor: "checkbox-boolean-".concat(id)
1320
- }, isHorizontal ? interpret(features)(bindings)(label) : ''));
1321
- return /*#__PURE__*/React__default['default'].createElement("div", {
1322
- key: "checkbox-boolean-".concat(id),
1323
- className: "checkbox-boolean-modality"
1324
- }, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1325
- id: id,
1326
- type: BEFORE_QUESTION_TEXT,
1327
- declarations: declarations,
1328
- features: features,
1329
- bindings: bindings
1330
- }), label && !isHorizontal && /*#__PURE__*/React__default['default'].createElement("label", {
1331
- htmlFor: "checkbox-boolean-".concat(id)
1332
- }, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1333
- id: id,
1334
- type: AFTER_QUESTION_TEXT,
1335
- declarations: declarations,
1336
- features: features,
1337
- bindings: bindings
1338
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1339
- className: "field-container"
1340
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1341
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1342
- }, isVertical ? /*#__PURE__*/React__default['default'].createElement("div", null, input) : input), management && /*#__PURE__*/React__default['default'].createElement("div", {
1343
- className: "tooltip"
1344
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1345
- id: id,
1346
- response: buildBooleanTooltipResponse(response)
1347
- }))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1348
- id: id,
1349
- type: DETACHABLE,
1350
- declarations: declarations,
1351
- features: features,
1352
- bindings: bindings
1353
- }));
1354
- };
1355
-
1356
- CheckboxBoolean.defaultProps = {
1357
- label: '',
1358
- preferences: ['COLLECTED'],
1359
- response: {},
1360
- disabled: false,
1361
- positioning: 'DEFAULT',
1362
- focused: false,
1363
- declarations: [],
1364
- features: [],
1365
- bindings: {},
1366
- management: false,
1367
- style: {}
1368
- };
1369
- CheckboxBoolean.propTypes = {
1370
- id: PropTypes__default['default'].string.isRequired,
1371
- label: PropTypes__default['default'].string,
1372
- preferences: PropTypes__default['default'].arrayOf(valueType),
1373
- response: response,
1374
- handleChange: PropTypes__default['default'].func.isRequired,
1375
- disabled: PropTypes__default['default'].bool,
1376
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
1377
- focused: PropTypes__default['default'].bool,
1378
- declarations: declarations,
1379
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1380
- bindings: PropTypes__default['default'].object,
1381
- management: PropTypes__default['default'].bool,
1382
- style: PropTypes__default['default'].object
1383
- };
1384
- var boolean = /*#__PURE__*/React__default['default'].memo(CheckboxBoolean, areEqual);
1385
-
1386
- var InputDeclarationsWrapper = function InputDeclarationsWrapper(_ref) {
1387
- var id = _ref.id,
1388
- label = _ref.label,
1389
- preferences = _ref.preferences,
1390
- response = _ref.response,
1391
- placeholder = _ref.placeholder,
1392
- handleChange = _ref.handleChange,
1393
- maxLength = _ref.maxLength,
1394
- readOnly = _ref.readOnly,
1395
- disabled = _ref.disabled,
1396
- autoComplete = _ref.autoComplete,
1397
- labelPosition = _ref.labelPosition,
1398
- mandatory = _ref.mandatory,
1399
- declarations = _ref.declarations,
1400
- features = _ref.features,
1401
- bindings = _ref.bindings,
1402
- focused = _ref.focused,
1403
- management = _ref.management,
1404
- style = _ref.style,
1405
- type = _ref.type,
1406
- roleType = _ref.roleType;
1407
- var inputRef = React.useRef();
1408
-
1409
- var _useState = React.useState(function () {
1410
- return getResponseByPreference(preferences)(response);
1411
- }),
1412
- _useState2 = _slicedToArray(_useState, 2),
1413
- value = _useState2[0],
1414
- setValue = _useState2[1];
1415
-
1416
- React.useEffect(function () {
1417
- if (focused) inputRef.current.focus();
1418
- }, [focused]); // Assume we only want to handle enable external updates
1419
- // Don't need to check all value changes
1420
-
1421
- React.useEffect(function () {
1422
- if (getResponseByPreference(preferences)(response) !== value) setValue(getResponseByPreference(preferences)(response)); // eslint-disable-next-line react-hooks/exhaustive-deps
1423
- }, [response, preferences]);
1424
-
1425
- var handleChangeOnBlur = function handleChangeOnBlur() {
1426
- handleChange(_defineProperty({}, getResponseName(response), value));
1427
- };
1428
-
1429
- var Component = roleType === 'textarea' ? 'textarea' : 'input';
1430
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1431
- id: id,
1432
- type: BEFORE_QUESTION_TEXT,
1433
- declarations: declarations,
1434
- features: features,
1435
- bindings: bindings
1436
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1437
- className: getLabelPositionClass(labelPosition)
1438
- }, label && /*#__PURE__*/React__default['default'].createElement("label", {
1439
- htmlFor: "".concat(roleType, "-").concat(id),
1440
- id: "".concat(roleType, "-label-").concat(id),
1441
- className: "".concat(mandatory ? 'mandatory' : '')
1442
- }, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1443
- id: id,
1444
- type: AFTER_QUESTION_TEXT,
1445
- declarations: declarations,
1446
- features: features,
1447
- bindings: bindings
1448
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1449
- className: "field-container"
1450
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1451
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1452
- }, /*#__PURE__*/React__default['default'].createElement(Component, {
1453
- type: type,
1454
- id: "".concat(roleType, "-").concat(id),
1455
- ref: inputRef,
1456
- value: value,
1457
- placeholder: placeholder,
1458
- autoComplete: autoComplete ? 'on' : 'off',
1459
- className: "".concat(roleType, "-lunatic"),
1460
- style: buildStyleObject(style),
1461
- readOnly: readOnly,
1462
- disabled: disabled,
1463
- maxLength: maxLength || 524288,
1464
- required: mandatory,
1465
- "aria-required": mandatory,
1466
- onChange: function onChange(_ref2) {
1467
- var v = _ref2.target.value;
1468
- setValue(v === '' ? null : v);
1469
- },
1470
- onBlur: handleChangeOnBlur
1471
- })), management && /*#__PURE__*/React__default['default'].createElement("div", {
1472
- className: "tooltip"
1473
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1474
- id: id,
1475
- response: response
1476
- })))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1477
- id: id,
1478
- type: DETACHABLE,
1479
- declarations: declarations,
1480
- features: features,
1481
- bindings: bindings
1482
- }));
1483
- };
1484
-
1485
- InputDeclarationsWrapper.defaultProps = {
1486
- label: '',
1487
- preferences: ['COLLECTED'],
1488
- response: {},
1489
- placeholder: '',
1490
- readOnly: false,
1491
- disabled: false,
1492
- autoComplete: false,
1493
- labelPosition: 'DEFAULT',
1494
- mandatory: false,
1495
- focused: false,
1496
- declarations: [],
1497
- features: [],
1498
- bindings: {},
1499
- management: false,
1500
- style: {}
1501
- };
1502
- InputDeclarationsWrapper.propTypes = {
1503
- id: PropTypes__default['default'].string.isRequired,
1504
- label: PropTypes__default['default'].string,
1505
- preferences: PropTypes__default['default'].arrayOf(valueType),
1506
- response: response,
1507
- placeholder: PropTypes__default['default'].string,
1508
- handleChange: PropTypes__default['default'].func.isRequired,
1509
- readOnly: PropTypes__default['default'].bool,
1510
- disabled: PropTypes__default['default'].bool,
1511
- maxLength: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string]),
1512
- autoComplete: PropTypes__default['default'].bool,
1513
- labelPosition: PropTypes__default['default'].oneOf(['DEFAULT', 'TOP', 'BOTTOM', 'LEFT', 'RIGHT']),
1514
- mandatory: PropTypes__default['default'].bool,
1515
- focused: PropTypes__default['default'].bool,
1516
- declarations: declarations,
1517
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1518
- bindings: PropTypes__default['default'].object,
1519
- management: PropTypes__default['default'].bool,
1520
- style: PropTypes__default['default'].object,
1521
- type: PropTypes__default['default'].oneOf(['text', 'date', null]),
1522
- roleType: PropTypes__default['default'].oneOf(['input', 'datepicker', 'textarea'])
1523
- };
1524
-
1525
- var ListDeclarationsWrapper = function ListDeclarationsWrapper(_ref) {
1526
- var id = _ref.id,
1527
- label = _ref.label,
1528
- preferences = _ref.preferences,
1529
- response = _ref.response,
1530
- options = _ref.options,
1531
- handleChange = _ref.handleChange,
1532
- disabled = _ref.disabled,
1533
- focused = _ref.focused,
1534
- keyboardSelection = _ref.keyboardSelection,
1535
- declarations = _ref.declarations,
1536
- features = _ref.features,
1537
- bindings = _ref.bindings,
1538
- management = _ref.management,
1539
- style = _ref.style,
1540
- positioning = _ref.positioning,
1541
- type = _ref.type;
1542
- var inputRef = React.useRef();
1543
- React.useEffect(function () {
1544
- if (focused) inputRef.current.focus();
1545
- }, [focused]);
1546
- var fieldsetStyle = style.fieldsetStyle,
1547
- modalityStyle = style.modalityStyle;
1548
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1549
- id: id,
1550
- type: BEFORE_QUESTION_TEXT,
1551
- declarations: declarations,
1552
- features: features,
1553
- bindings: bindings
1554
- }), /*#__PURE__*/React__default['default'].createElement("div", {
1555
- className: "field-container"
1556
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1557
- className: "".concat(management ? 'field-with-tooltip' : 'field')
1558
- }, /*#__PURE__*/React__default['default'].createElement("fieldset", {
1559
- key: "".concat(type, "-").concat(id),
1560
- className: "".concat(type, "-group"),
1561
- style: buildStyleObject(fieldsetStyle)
1562
- }, /*#__PURE__*/React__default['default'].createElement("legend", null, interpret(features)(bindings)(label)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1563
- id: id,
1564
- type: AFTER_QUESTION_TEXT,
1565
- declarations: declarations,
1566
- features: features,
1567
- bindings: bindings
1568
- }), options.map(function (_ref2, i) {
1569
- var optionLabel = _ref2.label,
1570
- optionValue = _ref2.value;
1571
- var checked = getResponseByPreference(preferences)(response) === optionValue;
1572
- var interpretedLabel = interpret(features)(bindings)(optionLabel);
1573
- return /*#__PURE__*/React__default['default'].createElement("div", {
1574
- key: "".concat(type, "-").concat(id, "-").concat(optionValue),
1575
- className: "".concat(type, "-modality ").concat(getItemsPositioningClass(positioning), " ").concat(checked ? 'content-checked' : '')
1576
- }, /*#__PURE__*/React__default['default'].createElement("input", {
1577
- type: type,
1578
- name: "".concat(type, "-").concat(id),
1579
- ref: i === 0 || checked ? inputRef : null,
1580
- id: "".concat(type, "-").concat(id, "-").concat(optionValue),
1581
- "aria-labelledby": "input-label-".concat(id, "-").concat(optionValue),
1582
- className: "".concat(type, "-lunatic"),
1583
- style: buildStyleObject(style),
1584
- checked: checked,
1585
- disabled: disabled,
1586
- onChange: function onChange() {
1587
- return handleChange(_defineProperty({}, getResponseName(response), optionValue));
1588
- }
1589
- }), /*#__PURE__*/React__default['default'].createElement("label", {
1590
- htmlFor: "".concat(type, "-").concat(id, "-").concat(optionValue),
1591
- id: "input-label-".concat(id, "-").concat(optionValue),
1592
- style: checked ? buildStyleObject(modalityStyle) : {}
1593
- }, keyboardSelection && /*#__PURE__*/React__default['default'].createElement("span", {
1594
- className: "code-modality"
1595
- }, options.length < 10 ? i + 1 : getAlphabet()[i].toUpperCase()), interpretedLabel));
1596
- }))), management && /*#__PURE__*/React__default['default'].createElement("div", {
1597
- className: "tooltip"
1598
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
1599
- id: id,
1600
- response: buildMultiTooltipResponse(options)(response)
1601
- }))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1602
- id: id,
1603
- type: DETACHABLE,
1604
- declarations: declarations,
1605
- features: features,
1606
- bindings: bindings
1607
- }));
1608
- };
1609
-
1610
- ListDeclarationsWrapper.defaultProps = {
1611
- label: '',
1612
- preferences: ['COLLECTED'],
1613
- response: {},
1614
- options: [],
1615
- disabled: false,
1616
- focused: false,
1617
- keyboardSelection: false,
1618
- positioning: 'DEFAULT',
1619
- declarations: [],
1620
- features: [],
1621
- bindings: {},
1622
- management: false,
1623
- style: {
1624
- fieldsetStyle: {},
1625
- modalityStyle: {}
1626
- }
1627
- };
1628
- ListDeclarationsWrapper.propTypes = {
1629
- id: PropTypes__default['default'].string.isRequired,
1630
- label: PropTypes__default['default'].string,
1631
- preferences: PropTypes__default['default'].arrayOf(valueType),
1632
- response: response,
1633
- options: options,
1634
- handleChange: PropTypes__default['default'].func.isRequired,
1635
- disabled: PropTypes__default['default'].bool,
1636
- focused: PropTypes__default['default'].bool,
1637
- keyboardSelection: PropTypes__default['default'].bool,
1638
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
1639
- declarations: declarations,
1640
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1641
- bindings: PropTypes__default['default'].object,
1642
- management: PropTypes__default['default'].bool,
1643
- style: PropTypes__default['default'].object,
1644
- type: PropTypes__default['default'].oneOf(['radio', 'checkbox'])
1645
- };
1646
-
1647
- var SimpleDeclarationsWrapper = function SimpleDeclarationsWrapper(_ref) {
1648
- var id = _ref.id,
1649
- declarations = _ref.declarations,
1650
- features = _ref.features,
1651
- bindings = _ref.bindings,
1652
- children = _ref.children;
1653
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1654
- id: id,
1655
- type: BEFORE_QUESTION_TEXT,
1656
- declarations: declarations,
1657
- features: features,
1658
- bindings: bindings
1659
- }), children, /*#__PURE__*/React__default['default'].createElement(Declarations, {
1660
- id: id,
1661
- type: AFTER_QUESTION_TEXT,
1662
- declarations: declarations,
1663
- features: features,
1664
- bindings: bindings
1665
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
1666
- id: id,
1667
- type: DETACHABLE,
1668
- declarations: declarations,
1669
- features: features,
1670
- bindings: bindings
1671
- }));
1672
- };
1673
-
1674
- SimpleDeclarationsWrapper.defaultProps = {
1675
- declarations: [],
1676
- features: [],
1677
- bindings: {}
1678
- };
1679
- SimpleDeclarationsWrapper.propTypes = {
1680
- id: PropTypes__default['default'].string.isRequired,
1681
- declarations: declarations,
1682
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
1683
- bindings: PropTypes__default['default'].object,
1684
- children: PropTypes__default['default'].element.isRequired
1685
- };
1686
-
1687
- var CheckboxOne = function CheckboxOne(props) {
1688
- var specificHandleChange = function specificHandleChange(e) {
1689
- var preferences = props.preferences,
1690
- values = props.response.values,
1691
- handleChange = props.handleChange;
1692
-
1693
- var _Object$entries$ = _slicedToArray(Object.entries(e)[0], 2),
1694
- key = _Object$entries$[0],
1695
- value = _Object$entries$[1];
1696
-
1697
- if (values[preferences[preferences.length - 1]] === value) handleChange(_defineProperty({}, key, null));else handleChange(e);
1698
- };
1699
-
1700
- return /*#__PURE__*/React__default['default'].createElement(ListDeclarationsWrapper, _extends({
1701
- type: "checkbox"
1702
- }, props, {
1703
- handleChange: specificHandleChange
1704
- }));
1705
- };
1706
-
1707
- var one = /*#__PURE__*/React__default['default'].memo(CheckboxOne, areEqual);
1708
-
1709
- var css_248z$5 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.datepicker-lunatic {\n width: 100%;\n box-sizing: border-box;\n border: solid 2px #e80a4d;\n border-radius: 10px;\n padding: 5px;\n}\n.datepicker-lunatic:focus {\n outline: none;\n box-shadow: 0 0 10px #e80a4d;\n}\n.datepicker-lunatic:read-only {\n background-color: #ebebe4;\n}";
1710
- styleInject(css_248z$5);
1711
-
1712
- var Datepicker = function Datepicker(props) {
1713
- return /*#__PURE__*/React__default['default'].createElement(InputDeclarationsWrapper, _extends({
1714
- type: "date",
1715
- roleType: "datepicker"
1716
- }, props));
1717
- };
1718
-
1719
- var component = /*#__PURE__*/React__default['default'].memo(Datepicker, areEqual);
1720
-
1721
- function createCommonjsModule(fn, module) {
1722
- return module = { exports: {} }, fn(module, module.exports), module.exports;
1723
- }
1724
-
1725
- var classnames = createCommonjsModule(function (module) {
1726
- /*!
1727
- Copyright (c) 2017 Jed Watson.
1728
- Licensed under the MIT License (MIT), see
1729
- http://jedwatson.github.io/classnames
1730
- */
1731
- /* global define */
1732
-
1733
- (function () {
1734
-
1735
- var hasOwn = {}.hasOwnProperty;
1736
-
1737
- function classNames () {
1738
- var classes = [];
1739
-
1740
- for (var i = 0; i < arguments.length; i++) {
1741
- var arg = arguments[i];
1742
- if (!arg) continue;
1743
-
1744
- var argType = typeof arg;
1745
-
1746
- if (argType === 'string' || argType === 'number') {
1747
- classes.push(arg);
1748
- } else if (Array.isArray(arg) && arg.length) {
1749
- var inner = classNames.apply(null, arg);
1750
- if (inner) {
1751
- classes.push(inner);
1752
- }
1753
- } else if (argType === 'object') {
1754
- for (var key in arg) {
1755
- if (hasOwn.call(arg, key) && arg[key]) {
1756
- classes.push(key);
1757
- }
1758
- }
1759
- }
1760
- }
1761
-
1762
- return classes.join(' ');
1763
- }
1764
-
1765
- if ( module.exports) {
1766
- classNames.default = classNames;
1767
- module.exports = classNames;
1768
- } else {
1769
- window.classNames = classNames;
1770
- }
1771
- }());
1772
- });
1773
-
1774
- var SHOW_PANEL = "dropdown/show-panel";
1775
- var showPanel = function showPanel() {
1776
- return {
1777
- type: SHOW_PANEL
1778
- };
1779
- };
1780
- var HIDE_PANEL = "dropdown/hide-panel";
1781
- var hidePanel = function hidePanel() {
1782
- return {
1783
- type: HIDE_PANEL
1784
- };
1785
- };
1786
- var SET_ACTIVE_OPTION = "dropdown/set-active-option";
1787
- var setActiveOption = function setActiveOption(index) {
1788
- return {
1789
- type: SET_ACTIVE_OPTION,
1790
- payload: {
1791
- index: index
1792
- }
1793
- };
1794
- };
1795
- var SET_OPTIONS = "dropdown/set-options";
1796
- var setOptions = function setOptions(options) {
1797
- return {
1798
- type: SET_OPTIONS,
1799
- payload: {
1800
- options: options
1801
- }
1802
- };
1803
- };
1804
- var SET_VALUE = "dropdown/set-value";
1805
- var setValue = function setValue(value) {
1806
- return {
1807
- type: SET_VALUE,
1808
- payload: {
1809
- value: value
1810
- }
1811
- };
1812
- };
1813
- var SET_FOCUSED = "dropdown/set-focused";
1814
- var setFocused = function setFocused(focused) {
1815
- return {
1816
- type: SET_FOCUSED,
1817
- payload: {
1818
- focused: focused
1819
- }
1820
- };
1821
- };
1822
- var SET_SELECTED_OPTION = "dropdown/set-selectted-option";
1823
- var setSelectedOption = function setSelectedOption(option) {
1824
- return {
1825
- type: SET_SELECTED_OPTION,
1826
- payload: {
1827
- option: option
1828
- }
1829
- };
1830
- };
1831
- var RESET_SELECTION = "dropdown/reset-selection";
1832
- var resetSelection = function resetSelection(option) {
1833
- return {
1834
- type: RESET_SELECTION
1835
- };
1836
- };
1837
- /* */
1838
-
1839
- var ARROW_UP_PRESSED = "dropdown/arrow-up-ressed";
1840
- var arrowUpPressed = function arrowUpPressed() {
1841
- return {
1842
- type: ARROW_UP_PRESSED
1843
- };
1844
- };
1845
- /* */
1846
-
1847
- var ARROW_DOWN_PRESSED = "dropdown/arrow-down-pressed";
1848
- var arrowDownPressed = function arrowDownPressed() {
1849
- return {
1850
- type: ARROW_DOWN_PRESSED
1851
- };
1852
- };
1853
- /* */
1854
-
1855
- var ENTER_PRESSED = "dropdown/enter-pressed";
1856
- var enterPressed = function enterPressed(callback) {
1857
- return {
1858
- type: ENTER_PRESSED,
1859
- payload: {
1860
- callback: callback
1861
- }
1862
- };
1863
- };
1864
- /* */
1865
-
1866
- var SET_PREFIX = "dropdown/set-prefix";
1867
- var setPrefix = function setPrefix(prefix) {
1868
- return {
1869
- type: SET_PREFIX,
1870
- payload: {
1871
- prefix: prefix
1872
- }
1873
- };
1874
- };
1875
-
1876
- /**
1877
- *
1878
- */
1879
-
1880
- function Panel(_ref) {
1881
- var _ref$options = _ref.options,
1882
- options = _ref$options === void 0 ? [] : _ref$options,
1883
- display = _ref.display,
1884
- handleActive = _ref.handleActive,
1885
- prefix = _ref.prefix,
1886
- activeIndex = _ref.activeIndex,
1887
- selectedOption = _ref.selectedOption,
1888
- onSelect = _ref.onSelect,
1889
- idDropdown = _ref.idDropdown,
1890
- Option = _ref.optionComponent;
1891
- var ulRef = React.useRef();
1892
- return display ? /*#__PURE__*/React__default['default'].createElement("div", {
1893
- className: "lunatic-dropdown-panel-container"
1894
- }, /*#__PURE__*/React__default['default'].createElement("ul", {
1895
- className: "lunatic-dropdown-panel",
1896
- ref: ulRef,
1897
- tabIndex: "-1"
1898
- }, options.map(function (_ref2, index) {
1899
- var label = _ref2.label,
1900
- value = _ref2.value;
1901
- return /*#__PURE__*/React__default['default'].createElement("li", {
1902
- key: value,
1903
- id: "".concat(idDropdown, "-option-").concat(value),
1904
- onMouseEnter: function onMouseEnter() {
1905
- return handleActive(index);
1906
- },
1907
- onMouseDown: function onMouseDown(e) {
1908
- e.stopPropagation();
1909
- e.preventDefault();
1910
-
1911
- if (e.button === 0) {
1912
- onSelect({
1913
- label: label,
1914
- value: value
1915
- });
1916
- }
1917
- }
1918
- }, /*#__PURE__*/React__default['default'].createElement(Option, {
1919
- label: label,
1920
- value: value,
1921
- prefix: prefix,
1922
- active: activeIndex === index,
1923
- selected: selectedOption && selectedOption.value === value
1924
- }));
1925
- }))) : null;
1926
- }
1927
-
1928
- var propTypesOption = PropTypes__default['default'].shape({
1929
- label: PropTypes__default['default'].string,
1930
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].object, PropTypes__default['default'].number, PropTypes__default['default'].symbol, PropTypes__default['default'].bool])
1931
- });
1932
- Panel.propTypes = {
1933
- idDropdown: PropTypes__default['default'].string.isRequired,
1934
- prefix: PropTypes__default['default'].string,
1935
- onSelect: PropTypes__default['default'].func,
1936
- handleActive: PropTypes__default['default'].func.isRequired,
1937
- activeIndex: PropTypes__default['default'].number,
1938
- selectedOption: propTypesOption,
1939
- display: PropTypes__default['default'].bool.isRequired,
1940
- options: PropTypes__default['default'].arrayOf(propTypesOption)
1941
- };
1942
- Panel.defaultProps = {
1943
- options: [],
1944
- onSelect: function onSelect() {
1945
- return null;
1946
- },
1947
- selectedOption: undefined
1948
- };
1949
-
1950
- function Icon(_ref) {
1951
- var _ref$height = _ref.height,
1952
- height = _ref$height === void 0 ? 20 : _ref$height,
1953
- _ref$width = _ref.width,
1954
- width = _ref$width === void 0 ? 20 : _ref$width,
1955
- _ref$color = _ref.color,
1956
- color = _ref$color === void 0 ? "#aaa" : _ref$color;
1957
- return /*#__PURE__*/React__default['default'].createElement("svg", {
1958
- xmlns: "http://www.w3.org/2000/svg",
1959
- width: width,
1960
- height: height,
1961
- x: "0",
1962
- y: "0",
1963
- enableBackground: "new 0 0 292.362 292.362",
1964
- version: "1.1",
1965
- viewBox: "0 0 292.362 292.362",
1966
- xmlSpace: "preserve"
1967
- }, /*#__PURE__*/React__default['default'].createElement("path", {
1968
- fill: color,
1969
- d: "M286.935 69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952 0-9.233 1.807-12.85 5.424C1.807 72.998 0 77.279 0 82.228c0 4.948 1.807 9.229 5.424 12.847l127.907 127.907c3.621 3.617 7.902 5.428 12.85 5.428s9.233-1.811 12.847-5.428L286.935 95.074c3.613-3.617 5.427-7.898 5.427-12.847 0-4.948-1.814-9.229-5.427-12.85z"
1970
- }));
1971
- }
1972
-
1973
- function Icon$1(_ref) {
1974
- var _ref$height = _ref.height,
1975
- height = _ref$height === void 0 ? 20 : _ref$height,
1976
- _ref$width = _ref.width,
1977
- width = _ref$width === void 0 ? 20 : _ref$width,
1978
- _ref$color = _ref.color,
1979
- color = _ref$color === void 0 ? "#aaa" : _ref$color;
1980
- return /*#__PURE__*/React__default['default'].createElement("svg", {
1981
- xmlns: "http://www.w3.org/2000/svg",
1982
- width: width,
1983
- height: height,
1984
- x: "0",
1985
- y: "0",
1986
- enableBackground: "new 0 0 292.362 292.362",
1987
- version: "1.1",
1988
- viewBox: "0 0 292.362 292.362",
1989
- xmlSpace: "preserve"
1990
- }, /*#__PURE__*/React__default['default'].createElement("path", {
1991
- fill: color,
1992
- d: "M286.935 197.286L159.028 69.379c-3.613-3.617-7.895-5.424-12.847-5.424s-9.233 1.807-12.85 5.424L5.424 197.286C1.807 200.9 0 205.184 0 210.132s1.807 9.233 5.424 12.847c3.621 3.617 7.902 5.428 12.85 5.428h255.813c4.949 0 9.233-1.811 12.848-5.428 3.613-3.613 5.427-7.898 5.427-12.847s-1.814-9.232-5.427-12.846z"
1993
- }));
1994
- }
1995
-
1996
- var Label = function Label(_ref) {
1997
- var content = _ref.content,
1998
- focused = _ref.focused,
1999
- mandatory = _ref.mandatory;
2000
- return /*#__PURE__*/React__default['default'].createElement("div", {
2001
- className: classnames('lunatic-dropdown-label', {
2002
- focused: focused,
2003
- mandatory: mandatory
2004
- })
2005
- }, content);
2006
- };
2007
-
2008
- Label.defaultProps = {
2009
- mandatory: false
2010
- };
2011
- Label.propTypes = {
2012
- content: PropTypes__default['default'].string.isRequired,
2013
- focused: PropTypes__default['default'].bool.isRequired,
2014
- mandatory: PropTypes__default['default'].bool
2015
- };
2016
-
2017
- var CLEANER_CALLBACKS = {};
2018
- /**
2019
- *
2020
- * @param {...any} execpt identifiants de dropdownn a ne pas appliquer
2021
- */
2022
-
2023
- var applyAll = function applyAll() {
2024
- for (var _len = arguments.length, execpt = new Array(_len), _key = 0; _key < _len; _key++) {
2025
- execpt[_key] = arguments[_key];
2026
- }
2027
-
2028
- Object.entries(CLEANER_CALLBACKS).forEach(function (_ref) {
2029
- var _ref2 = _slicedToArray(_ref, 2),
2030
- k = _ref2[0],
2031
- todo = _ref2[1];
2032
-
2033
- if (execpt.indexOf(k) === -1) {
2034
- apply(k);
2035
- }
2036
- });
2037
- };
2038
- /**
2039
- * Applique une fonction pour l'identifiant transmis
2040
- * @param {string} id
2041
- */
2042
-
2043
- var apply = function apply(id) {
2044
- if (id in CLEANER_CALLBACKS && typeof CLEANER_CALLBACKS[id] === "function") {
2045
- CLEANER_CALLBACKS[id]();
2046
- }
2047
- };
2048
- /**
2049
- *
2050
- * @param {string} id
2051
- * @param {function} callback
2052
- */
2053
-
2054
- var add = function add(id, callback) {
2055
- if (typeof callback === "function") {
2056
- CLEANER_CALLBACKS[id] = callback;
2057
- }
2058
- };
2059
- /**
2060
- *
2061
- * @param {string} id
2062
- */
2063
-
2064
- var clear = function clear(id) {
2065
- delete CLEANER_CALLBACKS[id];
2066
- };
2067
-
2068
- var BINDED_KEYS = {
2069
- arrowUp: "ArrowUp",
2070
- arrowDown: "ArrowDown",
2071
- enter: "Enter",
2072
- tab: "Tab"
2073
- };
2074
- /** */
2075
-
2076
- var onKeyDownCallback = (function (_, dispatch, onSelect) {
2077
- return function (key) {
2078
- switch (key) {
2079
- case BINDED_KEYS.arrowUp:
2080
- dispatch(arrowUpPressed()); // dispatch(actions.showPanel());
2081
-
2082
- break;
2083
-
2084
- case BINDED_KEYS.arrowDown:
2085
- dispatch(arrowDownPressed());
2086
- dispatch(showPanel());
2087
- break;
2088
-
2089
- case BINDED_KEYS.enter:
2090
- dispatch(enterPressed(onSelect));
2091
- break;
2092
-
2093
- case BINDED_KEYS.tab:
2094
- dispatch(setFocused(false));
2095
- dispatch(hidePanel());
2096
- break;
2097
- }
2098
- };
2099
- });
2100
-
2101
- /** */
2102
-
2103
- var onMouseDownCallback = (function (_ref, dispatch) {
2104
- var visible = _ref.visible,
2105
- id = _ref.id,
2106
- disabled = _ref.disabled;
2107
- return function (e) {
2108
- e.stopPropagation();
2109
-
2110
- if (!visible && !disabled) {
2111
- applyAll(id);
2112
- dispatch(showPanel());
2113
- }
2114
- };
2115
- });
2116
-
2117
- /** */
2118
-
2119
- var stopAndPrevent = function stopAndPrevent(e) {
2120
- e.preventDefault();
2121
- e.stopPropagation();
2122
- };
2123
- /** */
2124
-
2125
-
2126
- var onKeyDownCallback_ = function onKeyDownCallback_(state, dispatch, onSelect) {
2127
- return function (e) {
2128
- switch (e.key) {
2129
- case BINDED_KEYS.enter:
2130
- case BINDED_KEYS.arrowUp:
2131
- case BINDED_KEYS.arrowDown:
2132
- stopAndPrevent(e);
2133
- onKeyDownCallback(state, dispatch, onSelect)(e.key);
2134
- break;
2135
-
2136
- case BINDED_KEYS.tab:
2137
- onKeyDownCallback(state, dispatch, onSelect)(e.key);
2138
- break;
2139
- }
2140
- };
2141
- };
2142
-
2143
- var getZIndex = function getZIndex(z) {
2144
- return z || 0;
2145
- };
2146
-
2147
- var DropdownContainer = function DropdownContainer(_ref) {
2148
- var options = _ref.options,
2149
- children = _ref.children,
2150
- onSelect = _ref.onSelect,
2151
- response = _ref.response,
2152
- className = _ref.className,
2153
- label = _ref.label,
2154
- labelPosition = _ref.labelPosition,
2155
- mandatory = _ref.mandatory,
2156
- valueFromProps = _ref.value,
2157
- zIndex = _ref.zIndex,
2158
- management = _ref.management,
2159
- state = _ref.state,
2160
- dispatch = _ref.dispatch,
2161
- refs = _ref.refs;
2162
- var visible = state.visible,
2163
- focused = state.focused,
2164
- id = state.id,
2165
- disabled = state.disabled;
2166
- add(id, function () {
2167
- dispatch(hidePanel());
2168
- dispatch(setFocused(false));
2169
- });
2170
- React.useEffect(function () {
2171
- var hook = function hook() {
2172
- dispatch(hidePanel());
2173
- dispatch(setFocused(false));
2174
- };
2175
-
2176
- window.addEventListener('mousedown', hook);
2177
- return function () {
2178
- window.removeEventListener('mousedown', hook);
2179
- clear(id);
2180
- };
2181
- }, [id, dispatch]);
2182
- React.useEffect(function () {
2183
- dispatch(setOptions(options));
2184
- }, [options, dispatch]);
2185
- React.useEffect(function () {
2186
- if (valueFromProps) {
2187
- var _options$reduce = options.reduce(function (a, o, i) {
2188
- return o.value === valueFromProps && a.index === -1 ? {
2189
- index: i,
2190
- option: o
2191
- } : a;
2192
- }, {
2193
- index: -1,
2194
- option: {}
2195
- }),
2196
- option = _options$reduce.option,
2197
- index = _options$reduce.index;
2198
-
2199
- dispatch(setSelectedOption(option));
2200
- dispatch(setActiveOption(index));
2201
- }
2202
- }, [valueFromProps, options, dispatch]);
2203
- var z = getZIndex(zIndex);
2204
- return /*#__PURE__*/React__default['default'].createElement("div", {
2205
- className: classnames("".concat(className, " ").concat(getLabelPositionClass(labelPosition)), {
2206
- focused: focused,
2207
- disabled: disabled
2208
- }),
2209
- tabIndex: "-1",
2210
- id: id,
2211
- onMouseDown: onMouseDownCallback(state, dispatch),
2212
- onKeyDown: onKeyDownCallback_(state, dispatch, onSelect),
2213
- onFocus: function onFocus() {
2214
- return dispatch(setFocused( !disabled));
2215
- },
2216
- onBlur: function onBlur() {
2217
- dispatch(setFocused(false));
2218
- },
2219
- ref: refs
2220
- }, label ? /*#__PURE__*/React__default['default'].createElement(Label, {
2221
- content: label,
2222
- focused: focused,
2223
- mandatory: mandatory
2224
- }) : null, /*#__PURE__*/React__default['default'].createElement("div", {
2225
- className: "field-container"
2226
- }, /*#__PURE__*/React__default['default'].createElement("div", {
2227
- className: "".concat(management ? 'field-with-tooltip' : 'field')
2228
- }, /*#__PURE__*/React__default['default'].createElement("div", {
2229
- tabIndex: "-1",
2230
- style: {
2231
- zIndex: focused ? z + 1 : z
2232
- },
2233
- className: "lunatic-dropdown-container"
2234
- }, /*#__PURE__*/React__default['default'].createElement("span", {
2235
- className: classnames("lunatic-dropdown-content", {
2236
- focused: focused,
2237
- visible: visible,
2238
- disabled: disabled
2239
- })
2240
- }, children))), management && /*#__PURE__*/React__default['default'].createElement("div", {
2241
- className: "tooltip"
2242
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
2243
- id: id,
2244
- response: buildMultiTooltipResponse(options)(response)
2245
- }))));
2246
- };
2247
-
2248
- DropdownContainer.propTypes = {
2249
- zIndex: PropTypes__default['default'].number,
2250
- className: PropTypes__default['default'].string,
2251
- id: PropTypes__default['default'].string,
2252
- options: PropTypes__default['default'].array.isRequired,
2253
- onSelect: PropTypes__default['default'].func,
2254
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].number, PropTypes__default['default'].object, PropTypes__default['default'].bool])
2255
- };
2256
- DropdownContainer.defaultProps = {
2257
- options: [],
2258
- zIndex: 0,
2259
- onSelect: function onSelect() {
2260
- return null;
2261
- }
2262
- };
2263
- var DropdownContainer$1 = /*#__PURE__*/React__default['default'].forwardRef(function (props, ref) {
2264
- return /*#__PURE__*/React__default['default'].createElement(DropdownContainer, _extends({}, props, {
2265
- refs: ref
2266
- }));
2267
- });
2268
-
2269
- /** */
2270
- var scrollTo = function scrollTo(id) {
2271
- var li = document.getElementById(id);
2272
-
2273
- if (li) {
2274
- var parent = li.parentNode;
2275
- var pr = parent.getBoundingClientRect();
2276
- var lr = li.getBoundingClientRect();
2277
- var top = lr.top - pr.top + parent.scrollTop;
2278
- var bottom = lr.bottom - pr.top + parent.scrollTop;
2279
-
2280
- if (bottom > parent.scrollTop + pr.height) {
2281
- parent.scrollTo(0, bottom - pr.height);
2282
- } else if (top < parent.scrollTop) {
2283
- parent.scrollTo(0, top);
2284
- }
2285
- }
2286
- };
2287
-
2288
- var preparePrefix = function preparePrefix(prefix) {
2289
- return typeof prefix === 'string' ? removeAccents__default['default'](prefix.toLowerCase()).replace(/[- ']/g, '') : prefix;
2290
- };
2291
- var lettersMatching = function lettersMatching(label) {
2292
- var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
2293
- var pref = prefix.split('');
2294
- var pos = -1;
2295
- var clean = preparePrefix(label);
2296
- return clean.split('').reduce(function (a, c, idx) {
2297
- if (pos < pref.length && pref[pos + 1] === c) {
2298
- pos++;
2299
- return [].concat(_toConsumableArray(a), [c]);
2300
- }
2301
-
2302
- return a;
2303
- }, []);
2304
- };
2305
- var match = function match(label, prefix) {
2306
- var pref = prefix.split('');
2307
- var pos = -1;
2308
- var clean = preparePrefix(label);
2309
- return clean.split('').reduce(function (a, c, idx) {
2310
- if (pos < pref.length && pref[pos + 1] === c) {
2311
- pos++;
2312
- return a + 1;
2313
- }
2314
-
2315
- return a / (idx * 0.0001 + 1);
2316
- }, 0) / prefix.length;
2317
- };
2318
- /** */
2319
-
2320
- var filterOption = function filterOption(options, prefix) {
2321
- if (!prefix || prefix.length === 0) {
2322
- return options;
2323
- }
2324
-
2325
- return options.reduce(function (acc, o) {
2326
- var label = o.label,
2327
- search = o.search;
2328
- var how = match(search || label, prefix);
2329
- return how >= 0.6 ? [{
2330
- o: o,
2331
- how: how
2332
- }].concat(_toConsumableArray(acc)).sort(function (a, b) {
2333
- return a.how <= b.how;
2334
- }) : acc;
2335
- }, []).map(function (_ref) {
2336
- var o = _ref.o;
2337
- return o;
2338
- });
2339
- };
2340
-
2341
- var initial = {
2342
- prefix: undefined,
2343
- options: [],
2344
- visibleOptions: [],
2345
- visible: false,
2346
- activeIndex: undefined,
2347
- selectedOption: undefined,
2348
- focused: false,
2349
- value: ''
2350
- };
2351
- /** */
2352
-
2353
- var isPrefix = function isPrefix(prefix) {
2354
- return prefix !== undefined && prefix.length > 0;
2355
- };
2356
- /** */
2357
-
2358
-
2359
- var reduceArrowDownPressed = function reduceArrowDownPressed(state) {
2360
- var visibleOptions = state.visibleOptions,
2361
- activeIndex = state.activeIndex;
2362
- var next = visibleOptions.length ? Math.min(visibleOptions.length - 1, activeIndex === undefined ? 0 : activeIndex + 1) : undefined;
2363
-
2364
- if (next !== undefined) {
2365
- scrollTo("".concat(state.id, "-option-").concat(visibleOptions[next].value));
2366
- }
2367
-
2368
- return _objectSpread2(_objectSpread2({}, state), {}, {
2369
- activeIndex: next
2370
- });
2371
- };
2372
- /** */
2373
-
2374
-
2375
- var reduceArrowUpPressed = function reduceArrowUpPressed(state) {
2376
- var visibleOptions = state.visibleOptions,
2377
- activeIndex = state.activeIndex;
2378
- var next = visibleOptions.length ? Math.max(0, activeIndex === undefined ? 0 : activeIndex - 1) : undefined;
2379
-
2380
- if (next !== undefined) {
2381
- scrollTo("".concat(state.id, "-option-").concat(visibleOptions[next].value));
2382
- }
2383
-
2384
- return _objectSpread2(_objectSpread2({}, state), {}, {
2385
- activeIndex: next
2386
- });
2387
- };
2388
- /** */
2389
-
2390
-
2391
- var reduceEnterPressed = function reduceEnterPressed(state, callback) {
2392
- var activeIndex = state.activeIndex,
2393
- visibleOptions = state.visibleOptions,
2394
- visible = state.visible;
2395
-
2396
- if (!visible) {
2397
- return _objectSpread2(_objectSpread2({}, state), {}, {
2398
- visible: true
2399
- });
2400
- }
2401
-
2402
- if (activeIndex !== undefined) {
2403
- var option = visibleOptions[activeIndex];
2404
- callback(option);
2405
- return _objectSpread2(_objectSpread2({}, state), {}, {
2406
- selectedOption: option,
2407
- value: option.label,
2408
- prefix: preparePrefix(option.label),
2409
- visible: false
2410
- });
2411
- }
2412
-
2413
- return state;
2414
- };
2415
- /** */
2416
-
2417
-
2418
- var reducer = function reducer(state, action) {
2419
- var type = action.type,
2420
- payload = action.payload;
2421
-
2422
- switch (type) {
2423
- case SHOW_PANEL:
2424
- {
2425
- return _objectSpread2(_objectSpread2({}, state), {}, {
2426
- visible: true
2427
- });
2428
- }
2429
-
2430
- case HIDE_PANEL:
2431
- {
2432
- return _objectSpread2(_objectSpread2({}, state), {}, {
2433
- visible: false
2434
- });
2435
- }
2436
-
2437
- case SET_ACTIVE_OPTION:
2438
- {
2439
- var index = payload.index;
2440
- return _objectSpread2(_objectSpread2({}, state), {}, {
2441
- activeIndex: index
2442
- });
2443
- }
2444
-
2445
- case SET_OPTIONS:
2446
- {
2447
- var options = payload.options;
2448
- var prefix = state.prefix;
2449
- return _objectSpread2(_objectSpread2({}, state), {}, {
2450
- options: options,
2451
- visibleOptions: isPrefix(prefix) ? filterOption(options) : options
2452
- });
2453
- }
2454
-
2455
- case SET_PREFIX:
2456
- {
2457
- var _prefix = payload.prefix;
2458
- var _options = state.options;
2459
- return _objectSpread2(_objectSpread2({}, state), {}, {
2460
- prefix: _prefix,
2461
- activeIndex: undefined,
2462
- visibleOptions: isPrefix(_prefix) ? filterOption(_options, _prefix) : _options
2463
- });
2464
- }
2465
-
2466
- case SET_VALUE:
2467
- {
2468
- var value = payload.value;
2469
- return _objectSpread2(_objectSpread2({}, state), {}, {
2470
- value: value
2471
- });
2472
- }
2473
-
2474
- case SET_SELECTED_OPTION:
2475
- {
2476
- var option = payload.option;
2477
- return _objectSpread2(_objectSpread2({}, state), {}, {
2478
- value: option.label,
2479
- selectedOption: option,
2480
- prefix: preparePrefix(option.label)
2481
- });
2482
- }
2483
-
2484
- case SET_FOCUSED:
2485
- {
2486
- var focused = payload.focused;
2487
- return _objectSpread2(_objectSpread2({}, state), {}, {
2488
- focused: focused
2489
- });
2490
- }
2491
-
2492
- case RESET_SELECTION:
2493
- {
2494
- return _objectSpread2(_objectSpread2({}, state), {}, {
2495
- prefix: undefined,
2496
- value: '',
2497
- selectedOption: undefined,
2498
- activeIndex: undefined,
2499
- activeOption: undefined,
2500
- visibleOptions: state.options
2501
- });
2502
- }
2503
-
2504
- case ARROW_UP_PRESSED:
2505
- {
2506
- return reduceArrowUpPressed(state);
2507
- }
2508
-
2509
- case ARROW_DOWN_PRESSED:
2510
- {
2511
- return reduceArrowDownPressed(state);
2512
- }
2513
-
2514
- case ENTER_PRESSED:
2515
- {
2516
- var callback = payload.callback;
2517
- return reduceEnterPressed(state, callback);
2518
- }
2519
-
2520
- default:
2521
- return state;
2522
- }
2523
- };
2524
-
2525
- var Option = (function (_ref) {
2526
- var label = _ref.label,
2527
- active = _ref.active,
2528
- selected = _ref.selected;
2529
- return /*#__PURE__*/React__default['default'].createElement("span", {
2530
- className: classnames('lunatic-dropdown-option', {
2531
- 'lunatic-dropdown-option-active': active,
2532
- 'lunatic-dropdown-option-selected': selected
2533
- })
2534
- }, label);
2535
- });
2536
-
2537
- var Dropdown = function Dropdown(_ref) {
2538
- var widthAuto = _ref.widthAuto,
2539
- initId = _ref.id,
2540
- label = _ref.label,
2541
- value = _ref.value,
2542
- options = _ref.options,
2543
- response = _ref.response,
2544
- onSelect = _ref.onSelect,
2545
- placeholder = _ref.placeholder,
2546
- disabled = _ref.disabled,
2547
- initFocused = _ref.focused,
2548
- mandatory = _ref.mandatory,
2549
- labelPosition = _ref.labelPosition,
2550
- management = _ref.management,
2551
- className = _ref.className,
2552
- zIndex = _ref.zIndex;
2553
- var containerEl = React.useRef();
2554
-
2555
- var _useReducer = React.useReducer(reducer, _objectSpread2(_objectSpread2({}, initial), {}, {
2556
- id: "dropdown-".concat(initId, "-").concat(new Date().getMilliseconds()),
2557
- disabled: disabled,
2558
- focused: initFocused
2559
- })),
2560
- _useReducer2 = _slicedToArray(_useReducer, 2),
2561
- state = _useReducer2[0],
2562
- dispatch = _useReducer2[1];
2563
-
2564
- var focused = state.focused,
2565
- visible = state.visible,
2566
- activeIndex = state.activeIndex,
2567
- id = state.id;
2568
- var onSelect_ = createOnSelect(state, dispatch, onSelect);
2569
- var selectedOption = options.find(function (o) {
2570
- return o.value === value;
2571
- });
2572
- return /*#__PURE__*/React__default['default'].createElement(DropdownContainer$1, {
2573
- className: className || 'lunatic-dropdown',
2574
- ref: containerEl,
2575
- state: state,
2576
- dispatch: dispatch,
2577
- options: options,
2578
- response: response,
2579
- management: management,
2580
- label: label,
2581
- labelPosition: labelPosition,
2582
- mandatory: mandatory,
2583
- onSelect: onSelect_,
2584
- value: value,
2585
- zIndex: zIndex
2586
- }, /*#__PURE__*/React__default['default'].createElement("span", {
2587
- className: classnames('lunatic-dropdown-input', {
2588
- focused: focused
2589
- })
2590
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2591
- type: "button",
2592
- disabled: disabled,
2593
- value: selectedOption ? selectedOption.label : placeholder || ''
2594
- })), getIcon(state, dispatch)(visible, containerEl), /*#__PURE__*/React__default['default'].createElement("div", {
2595
- tabIndex: "-1",
2596
- className: classnames('lunatic-transition', {
2597
- visible: isDisplay(state),
2598
- 'width-auto': widthAuto
2599
- })
2600
- }, /*#__PURE__*/React__default['default'].createElement(Panel, {
2601
- idDropdown: id,
2602
- options: options,
2603
- display: isDisplay(state),
2604
- activeIndex: activeIndex,
2605
- optionComponent: Option,
2606
- selectedOption: selectedOption,
2607
- onSelect: onSelect_,
2608
- handleActive: function handleActive(index) {
2609
- return dispatch(setActiveOption(index));
2610
- }
2611
- })));
2612
- };
2613
-
2614
- Dropdown.propTypes = {
2615
- widthAuto: PropTypes__default['default'].bool,
2616
- disabled: PropTypes__default['default'].bool,
2617
- focused: PropTypes__default['default'].bool,
2618
- zIndex: PropTypes__default['default'].number,
2619
- className: PropTypes__default['default'].string,
2620
- id: PropTypes__default['default'].string,
2621
- options: PropTypes__default['default'].array.isRequired,
2622
- onSelect: PropTypes__default['default'].func,
2623
- placeholder: PropTypes__default['default'].string,
2624
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].number, PropTypes__default['default'].bool])
2625
- };
2626
- Dropdown.defaultProps = {
2627
- disabled: false,
2628
- focused: false,
2629
- options: [],
2630
- zIndex: 0,
2631
- onSelect: function onSelect() {
2632
- return null;
2633
- },
2634
- placeholder: 'Search...',
2635
- widthAuto: false
2636
- };
2637
- /* **/
2638
-
2639
- var isDisplay = function isDisplay(_ref2) {
2640
- var visible = _ref2.visible,
2641
- options = _ref2.options;
2642
- return visible && options.length > 0;
2643
- };
2644
- /** */
2645
-
2646
-
2647
- var getIcon = function getIcon(_ref3, dispatch) {
2648
- var disabled = _ref3.disabled;
2649
- return function (visible, containerEl) {
2650
- if (disabled) {
2651
- return /*#__PURE__*/React__default['default'].createElement("span", {
2652
- className: "lunatic-icone"
2653
- }, /*#__PURE__*/React__default['default'].createElement(Icon, {
2654
- width: 10,
2655
- height: 10
2656
- }));
2657
- }
2658
-
2659
- return /*#__PURE__*/React__default['default'].createElement("span", {
2660
- className: "lunatic-icone",
2661
- tabIndex: "-1",
2662
- onMouseDown: function onMouseDown(e) {
2663
- e.stopPropagation();
2664
- e.preventDefault();
2665
-
2666
- if (visible) {
2667
- dispatch(hidePanel());
2668
- } else {
2669
- dispatch(showPanel());
2670
- containerEl.current.focus();
2671
- }
2672
- }
2673
- }, visible ? /*#__PURE__*/React__default['default'].createElement(Icon$1, {
2674
- width: 10,
2675
- height: 10
2676
- }) : /*#__PURE__*/React__default['default'].createElement(Icon, {
2677
- width: 10,
2678
- height: 10
2679
- }));
2680
- };
2681
- };
2682
-
2683
- var createOnSelect = function createOnSelect(_, dispatch, onSelect) {
2684
- return function (option) {
2685
- dispatch(setSelectedOption(option));
2686
- dispatch(hidePanel());
2687
- onSelect(option);
2688
- };
2689
- };
2690
-
2691
- var childrenToOption = function childrenToOption() {
2692
- var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2693
- return (Array.isArray(children) ? children : [children]).map(function (child) {
2694
- var value = child.props.value;
2695
- var label = child.props.children;
2696
-
2697
- if (label === undefined || value === undefined) {
2698
- throw new Error('Ooops');
2699
- }
2700
-
2701
- return {
2702
- label: label,
2703
- value: value
2704
- };
2705
- });
2706
- };
2707
-
2708
- var createDropdown = function createDropdown(Component) {
2709
- return function (_ref) {
2710
- var children = _ref.children,
2711
- options = _ref.options,
2712
- props = _objectWithoutProperties(_ref, ["children", "options"]);
2713
-
2714
- var o = options || childrenToOption(children);
2715
- return /*#__PURE__*/React__default['default'].createElement(Component, _extends({
2716
- options: o
2717
- }, props));
2718
- };
2719
- };
2720
-
2721
- var DropdownSimple = createDropdown(Dropdown);
2722
-
2723
- var Option$1 = (function (_ref) {
2724
- var label = _ref.label,
2725
- active = _ref.active,
2726
- prefix = _ref.prefix,
2727
- selected = _ref.selected;
2728
- var initLetters = lettersMatching(label, prefix);
2729
- var what = label.split('').reduce(function (_ref2, c) {
2730
- var letters = _ref2.letters,
2731
- stack = _ref2.stack;
2732
- var m = preparePrefix(c);
2733
-
2734
- var _letters = _toArray(letters),
2735
- first = _letters[0],
2736
- rest = _letters.slice(1);
2737
-
2738
- if (m === first) {
2739
- return {
2740
- letters: rest,
2741
- stack: [].concat(_toConsumableArray(stack), [{
2742
- "char": c,
2743
- className: 'lunatic-prefix'
2744
- }])
2745
- };
2746
- }
2747
-
2748
- return {
2749
- letters: letters,
2750
- stack: [].concat(_toConsumableArray(stack), [{
2751
- "char": c,
2752
- className: 'lunatic-normal'
2753
- }])
2754
- };
2755
- }, {
2756
- letters: initLetters,
2757
- stack: []
2758
- }).stack.reduce(function (_ref3, _ref4) {
2759
- var last = _ref3.last,
2760
- stack = _ref3.stack;
2761
- var _char = _ref4["char"],
2762
- className = _ref4.className;
2763
-
2764
- if (!last) {
2765
- return {
2766
- last: className,
2767
- stack: [{
2768
- part: _char,
2769
- className: className
2770
- }]
2771
- };
2772
- }
2773
-
2774
- if (last !== className) {
2775
- return {
2776
- last: className,
2777
- stack: [{
2778
- part: _char,
2779
- className: className
2780
- }].concat(_toConsumableArray(stack))
2781
- };
2782
- }
2783
-
2784
- var _stack = _toArray(stack),
2785
- first = _stack[0],
2786
- rest = _stack.slice(1);
2787
-
2788
- return {
2789
- last: className,
2790
- stack: [_objectSpread2(_objectSpread2({}, first), {}, {
2791
- part: "".concat(first.part).concat(_char)
2792
- })].concat(_toConsumableArray(rest))
2793
- };
2794
- }, {
2795
- last: undefined,
2796
- stack: []
2797
- }).stack.reverse().map(function (_ref5, i) {
2798
- var part = _ref5.part,
2799
- className = _ref5.className;
2800
- return /*#__PURE__*/React__default['default'].createElement("span", {
2801
- className: className,
2802
- key: i
2803
- }, part);
2804
- });
2805
- return /*#__PURE__*/React__default['default'].createElement("span", {
2806
- className: classnames('lunatic-dropdown-option', {
2807
- 'lunatic-dropdown-option-active': active,
2808
- 'lunatic-dropdown-option-selected': selected
2809
- })
2810
- }, what);
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
2811
5
  });
2812
-
2813
- var CrossIcon = (function (_ref) {
2814
- var _ref$width = _ref.width,
2815
- width = _ref$width === void 0 ? 20 : _ref$width,
2816
- _ref$height = _ref.height,
2817
- height = _ref$height === void 0 ? 20 : _ref$height,
2818
- _ref$color = _ref.color,
2819
- color = _ref$color === void 0 ? "#aaa" : _ref$color;
2820
- return /*#__PURE__*/React__default['default'].createElement("svg", {
2821
- xmlns: "http://www.w3.org/2000/svg",
2822
- width: width,
2823
- height: height,
2824
- x: "0",
2825
- y: "0",
2826
- enableBackground: "new 0 0 612 612",
2827
- version: "1.1",
2828
- viewBox: "0 0 612 612",
2829
- xmlSpace: "preserve"
2830
- }, /*#__PURE__*/React__default['default'].createElement("path", {
2831
- fill: color,
2832
- d: "M444.644 306l138.644-138.644c38.284-38.284 38.284-100.36 0-138.644-38.283-38.284-100.359-38.284-138.644 0L306 167.356 167.356 28.713c-38.284-38.284-100.36-38.284-138.644 0s-38.284 100.36 0 138.644L167.356 306 28.713 444.644c-38.284 38.283-38.284 100.36 0 138.644 38.284 38.284 100.36 38.284 138.644 0L306 444.644l138.644 138.644c38.283 38.284 100.36 38.284 138.644 0 38.284-38.283 38.284-100.36 0-138.644L444.644 306z"
2833
- }));
2834
- });
2835
-
2836
- /** */
2837
-
2838
- var getIcon$1 = function getIcon(visible) {
2839
- return visible ? /*#__PURE__*/React__default['default'].createElement(Icon$1, {
2840
- width: 10,
2841
- height: 10
2842
- }) : /*#__PURE__*/React__default['default'].createElement(Icon, {
2843
- width: 10,
2844
- height: 10
2845
- });
6
+ var _exportNames = {
7
+ useLunatic: true
2846
8
  };
2847
-
2848
- var Icone = function Icone(_ref) {
2849
- var prefix = _ref.prefix,
2850
- visible = _ref.visible,
2851
- disabled = _ref.disabled,
2852
- onDelete = _ref.onDelete,
2853
- onSwitch = _ref.onSwitch;
2854
-
2855
- if (disabled) {
2856
- return /*#__PURE__*/React__default['default'].createElement("span", {
2857
- className: "lunatic-icone",
2858
- tabIndex: "-1",
2859
- onMouseDown: onSwitch
2860
- }, /*#__PURE__*/React__default['default'].createElement(Icon, {
2861
- width: 10,
2862
- height: 10
2863
- }));
9
+ Object.defineProperty(exports, "useLunatic", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _useLunatic["default"];
2864
13
  }
2865
-
2866
- return prefix && prefix.length > 0 ? /*#__PURE__*/React__default['default'].createElement("span", {
2867
- className: "lunatic-icone",
2868
- tabIndex: "-1",
2869
- onMouseDown: onDelete
2870
- }, /*#__PURE__*/React__default['default'].createElement(CrossIcon, {
2871
- width: 10,
2872
- height: 10
2873
- })) : /*#__PURE__*/React__default['default'].createElement("span", {
2874
- className: "lunatic-icone",
2875
- tabIndex: "-1",
2876
- onMouseDown: onSwitch
2877
- }, getIcon$1(visible));
2878
- };
2879
-
2880
- /* **/
2881
-
2882
- var isDisplay$1 = function isDisplay(_ref) {
2883
- var visible = _ref.visible,
2884
- visibleOptions = _ref.visibleOptions;
2885
- return visible && visibleOptions.length > 0;
2886
- };
2887
- /** */
2888
-
2889
-
2890
- var onChangeCallback = function onChangeCallback(state, dispatch) {
2891
- return function (e) {
2892
- e.stopPropagation();
2893
- e.preventDefault();
2894
- dispatch(setValue(e.target.value));
2895
- dispatch(setPrefix(preparePrefix(e.target.value)));
2896
- };
2897
- };
2898
- /** */
2899
-
2900
-
2901
- var createOnSelect$1 = function createOnSelect(_, dispatch, onSelect) {
2902
- return function (option) {
2903
- dispatch(setSelectedOption(option));
2904
- dispatch(hidePanel());
2905
- onSelect(option);
2906
- };
2907
- };
2908
- /**
2909
- *
2910
- * @param {props}
2911
- */
2912
-
2913
-
2914
- function Dropdown$1(_ref2) {
2915
- var widthAuto = _ref2.widthAuto,
2916
- _ref2$options = _ref2.options,
2917
- options = _ref2$options === void 0 ? [] : _ref2$options,
2918
- onSelect = _ref2.onSelect,
2919
- response = _ref2.response,
2920
- className = _ref2.className,
2921
- placeholder = _ref2.placeholder,
2922
- label = _ref2.label,
2923
- labelPosition = _ref2.labelPosition,
2924
- mandatory = _ref2.mandatory,
2925
- valueFromProps = _ref2.value,
2926
- zIndex = _ref2.zIndex,
2927
- management = _ref2.management,
2928
- disabled = _ref2.disabled,
2929
- initFocused = _ref2.focused;
2930
-
2931
- var _useReducer = React.useReducer(reducer, _objectSpread2(_objectSpread2({}, initial), {}, {
2932
- id: "dropdown-".concat(new Date().getMilliseconds()),
2933
- disabled: disabled,
2934
- focused: initFocused
2935
- })),
2936
- _useReducer2 = _slicedToArray(_useReducer, 2),
2937
- state = _useReducer2[0],
2938
- dispatch = _useReducer2[1];
2939
-
2940
- var prefix = state.prefix,
2941
- visible = state.visible,
2942
- activeIndex = state.activeIndex,
2943
- visibleOptions = state.visibleOptions,
2944
- value = state.value,
2945
- focused = state.focused,
2946
- id = state.id;
2947
- var inputEl = React.useRef();
2948
- var containerEl = React.useRef();
2949
- var onSelect_ = createOnSelect$1(state, dispatch, onSelect);
2950
- var selectedOption = options.find(function (o) {
2951
- return o.value === value;
2952
- });
2953
- return /*#__PURE__*/React__default['default'].createElement(DropdownContainer$1, {
2954
- className: className || 'lunatic-dropdown',
2955
- state: state,
2956
- ref: containerEl,
2957
- dispatch: dispatch,
2958
- options: options,
2959
- label: label,
2960
- labelPosition: labelPosition,
2961
- mandatory: mandatory,
2962
- response: response,
2963
- onSelect: onSelect_,
2964
- value: valueFromProps,
2965
- zIndex: zIndex,
2966
- management: management
2967
- }, /*#__PURE__*/React__default['default'].createElement("div", {
2968
- className: classnames('lunatic-dropdown-input', {
2969
- focused: focused,
2970
- disabled: disabled
2971
- })
2972
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2973
- type: "text",
2974
- ref: inputEl,
2975
- value: value || '',
2976
- disabled: disabled,
2977
- placeholder: placeholder,
2978
- autoComplete: "list",
2979
- autoCorrect: "off",
2980
- autoCapitalize: "off",
2981
- spellCheck: "false",
2982
- tabIndex: "-1",
2983
- onChange: onChangeCallback(state, dispatch)
2984
- })), /*#__PURE__*/React__default['default'].createElement(Icone, {
2985
- prefix: prefix,
2986
- visible: visible,
2987
- disabled: disabled,
2988
- onDelete: function onDelete(e) {
2989
- e.stopPropagation();
2990
- inputEl.current.value = '';
2991
- dispatch(resetSelection());
2992
- onSelect_({
2993
- value: null
2994
- });
2995
- },
2996
- onSwitch: function onSwitch(e) {
2997
- e.stopPropagation();
2998
- e.preventDefault();
2999
-
3000
- if (visible) {
3001
- dispatch(hidePanel());
3002
- } else {
3003
- dispatch(showPanel());
3004
- containerEl.current.focus();
3005
- }
3006
- }
3007
- }), /*#__PURE__*/React__default['default'].createElement("div", {
3008
- tabIndex: "-1",
3009
- className: classnames('lunatic-transition', {
3010
- visible: isDisplay$1(state),
3011
- 'width-auto': widthAuto
3012
- })
3013
- }, /*#__PURE__*/React__default['default'].createElement(Panel, {
3014
- idDropdown: id,
3015
- options: visibleOptions,
3016
- display: isDisplay$1(state) && !disabled,
3017
- prefix: prefix,
3018
- activeIndex: activeIndex,
3019
- optionComponent: Option$1,
3020
- selectedOption: selectedOption,
3021
- onSelect: onSelect_,
3022
- handleActive: function handleActive(index) {
3023
- return dispatch(setActiveOption(index));
3024
- }
3025
- })));
3026
- }
3027
-
3028
- Dropdown$1.propTypes = {
3029
- widthAuto: PropTypes__default['default'].bool,
3030
- zIndex: PropTypes__default['default'].number,
3031
- disabled: PropTypes__default['default'].bool,
3032
- focused: PropTypes__default['default'].bool,
3033
- className: PropTypes__default['default'].string,
3034
- id: PropTypes__default['default'].string,
3035
- options: PropTypes__default['default'].array.isRequired,
3036
- onSelect: PropTypes__default['default'].func,
3037
- placeholder: PropTypes__default['default'].string,
3038
- value: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].number, PropTypes__default['default'].bool])
3039
- };
3040
- Dropdown$1.defaultProps = {
3041
- options: [],
3042
- zIndex: 0,
3043
- onSelect: function onSelect() {
3044
- return null;
3045
- },
3046
- placeholder: 'Search...',
3047
- disabled: false,
3048
- focused: false,
3049
- widthAuto: false
3050
- };
3051
-
3052
- var childrenToOption$1 = (function () {
3053
- var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3054
- return (Array.isArray(children) ? children : [children]).map(function (child) {
3055
- var value = child.props.value;
3056
- var label = child.props.children;
3057
-
3058
- if (label === undefined || value === undefined) {
3059
- throw new Error("Ooops");
3060
- }
3061
-
3062
- return {
3063
- label: label,
3064
- value: value
3065
- };
3066
- });
3067
14
  });
3068
15
 
3069
- var createDropDown = function createDropDown(Component) {
3070
- return function (_ref) {
3071
- var children = _ref.children,
3072
- options = _ref.options,
3073
- props = _objectWithoutProperties(_ref, ["children", "options"]);
3074
-
3075
- var o = options || childrenToOption$1(children);
3076
- return /*#__PURE__*/React__default['default'].createElement(Component, _extends({
3077
- options: o
3078
- }, props));
3079
- };
3080
- };
3081
-
3082
- var DropdownEdit = createDropDown(Dropdown$1);
3083
-
3084
- var css_248z$6 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.lunatic-dropdown {\n display: block;\n}\n.lunatic-dropdown:focus {\n outline: none;\n}\n.lunatic-dropdown.label-left {\n display: flex;\n flex-direction: row;\n}\n.lunatic-dropdown.label-right {\n display: flex;\n flex-direction: row-reverse;\n}\n.lunatic-dropdown.label-top {\n display: flex;\n flex-direction: column;\n}\n.lunatic-dropdown.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n.lunatic-dropdown .lunatic-dropdown-container {\n position: relative;\n height: 2em;\n width: 100%;\n}\n.lunatic-dropdown .lunatic-dropdown-container:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input {\n display: block;\n background-color: snow;\n width: 100%;\n border: none;\n height: 2em;\n border-radius: 0px 0px;\n box-shadow: 0em 0em 0.1em 0.1em #e80a4d;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input.focused {\n box-shadow: 0 0 0 0.2em #e80a4d;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input.disabled {\n background-color: #ebebe4;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-dropdown-input input {\n margin: 0px 25px 0px 12px;\n width: calc(100% - 37px);\n background-color: transparent;\n height: 2em;\n border: none;\n outline: none;\n text-align: left;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-icone {\n cursor: pointer;\n position: absolute;\n right: 10px;\n top: 7px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-icone:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition {\n visibility: hidden;\n overflow-y: hidden;\n opacity: 0;\n /** options style */\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition.width-auto {\n display: inline-block;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition.visible {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.5s ease-in;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel {\n padding: 0;\n margin: 0;\n margin-top: 12px;\n list-style: none;\n background-color: #e07898;\n max-height: 200px;\n overflow-y: auto;\n /* width */\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel:focus {\n outline: none;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar {\n width: 8px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar-track {\n background-color: #ffe9e8;\n border-radius: 4px 4px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar-thumb {\n background: #e80a4d;\n border-radius: 4px 4px;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-panel::-webkit-scrollbar-thumb:hover {\n background: Indigo;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option {\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #ebebe4;\n padding: 5px 5px;\n display: block;\n border-bottom: solid 1px #ffe9e8;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-active {\n color: #ebebe4;\n background-color: #e80a4d;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-active .lunatic-prefix {\n color: Indigo;\n font-weight: bold;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-selected {\n color: #ebebe4;\n background-color: Indigo;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-selected .lunatic-prefix {\n color: #ebebe4;\n font-weight: bold;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option.lunatic-dropdown-option-selected.lunatic-dropdown-option-active {\n color: #ebebe4;\n background-color: #e07898;\n}\n.lunatic-dropdown .lunatic-dropdown-container .lunatic-dropdown-content .lunatic-transition .lunatic-dropdown-option .lunatic-prefix {\n color: Indigo;\n font-weight: bold;\n}";
3085
- styleInject(css_248z$6);
3086
-
3087
- var Dropdown$2 = function Dropdown(_ref) {
3088
- var id = _ref.id,
3089
- label = _ref.label,
3090
- preferences = _ref.preferences,
3091
- response = _ref.response,
3092
- handleChange = _ref.handleChange,
3093
- options = _ref.options,
3094
- writable = _ref.writable,
3095
- declarations = _ref.declarations,
3096
- features = _ref.features,
3097
- bindings = _ref.bindings,
3098
- management = _ref.management,
3099
- freezeOptions = _ref.freezeOptions,
3100
- rest = _objectWithoutProperties(_ref, ["id", "label", "preferences", "response", "handleChange", "options", "writable", "declarations", "features", "bindings", "management", "freezeOptions"]);
3101
-
3102
- var _useState = React.useState(options),
3103
- _useState2 = _slicedToArray(_useState, 2),
3104
- opts = _useState2[0],
3105
- setOpts = _useState2[1];
16
+ var _components = require("./components");
3106
17
 
3107
- React.useEffect(function () {
3108
- if (!freezeOptions) {
3109
- var featOptions = options.map(function (_ref2) {
3110
- var labelOption = _ref2.label,
3111
- restOpts = _objectWithoutProperties(_ref2, ["label"]);
3112
-
3113
- return _objectSpread2({
3114
- label: interpret(features)(bindings)(labelOption)
3115
- }, restOpts);
3116
- });
3117
- setOpts(featOptions);
3118
- }
3119
- }, [freezeOptions, features, bindings, options]);
3120
- var interpretedLabel = interpret(features)(bindings)(label);
3121
- var value = getResponseByPreference(preferences)(response);
3122
-
3123
- var onSelect = function onSelect(e) {
3124
- return handleChange(_defineProperty({}, getResponseName(response), e.value));
3125
- };
3126
-
3127
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
3128
- id: id,
3129
- type: BEFORE_QUESTION_TEXT,
3130
- declarations: declarations,
3131
- features: features,
3132
- bindings: bindings
3133
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3134
- id: id,
3135
- type: AFTER_QUESTION_TEXT,
3136
- declarations: declarations,
3137
- features: features,
3138
- bindings: bindings
3139
- }), writable ? /*#__PURE__*/React__default['default'].createElement(DropdownEdit, _extends({}, rest, {
3140
- id: id,
3141
- value: value,
3142
- response: response,
3143
- label: interpretedLabel,
3144
- options: opts,
3145
- onSelect: onSelect,
3146
- management: management
3147
- })) : /*#__PURE__*/React__default['default'].createElement(DropdownSimple, _extends({}, rest, {
3148
- id: id,
3149
- value: value,
3150
- response: response,
3151
- label: interpretedLabel,
3152
- options: opts,
3153
- onSelect: onSelect,
3154
- management: management
3155
- })), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3156
- id: id,
3157
- type: DETACHABLE,
3158
- declarations: declarations,
3159
- features: features,
3160
- bindings: bindings
3161
- }));
3162
- };
3163
-
3164
- Dropdown$2.propTypes = {
3165
- disabled: PropTypes__default['default'].bool,
3166
- writable: PropTypes__default['default'].bool,
3167
- handleChange: PropTypes__default['default'].func,
3168
- label: PropTypes__default['default'].string,
3169
- className: PropTypes__default['default'].string,
3170
- zIndex: PropTypes__default['default'].number,
3171
- freezeOptions: PropTypes__default['default'].bool
3172
- };
3173
- Dropdown$2.defaultProps = {
3174
- writable: false,
3175
- handleChange: function handleChange() {
3176
- return null;
3177
- },
3178
- label: undefined,
3179
- className: undefined,
3180
- zIndex: 0,
3181
- disabled: false,
3182
- freezeOptions: false
3183
- };
3184
- var component$1 = /*#__PURE__*/React__default['default'].memo(Dropdown$2, areEqual);
3185
-
3186
- var css_248z$7 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.input-lunatic {\n box-sizing: border-box;\n border: solid 2px #e80a4d;\n border-radius: 10px;\n padding: 5px;\n}\n.input-lunatic:focus {\n outline: none;\n box-shadow: 0 0 10px #e80a4d;\n}\n.input-lunatic:read-only {\n background-color: #ebebe4;\n}\n\n.warning {\n box-sizing: border-box;\n border: solid 2px #f50c0c;\n background-color: #f50c0c;\n}\n\n.lunatic-input-number-errors .error {\n color: #f50c0c;\n}";
3187
- styleInject(css_248z$7);
3188
-
3189
- var Input = function Input(props) {
3190
- return /*#__PURE__*/React__default['default'].createElement(InputDeclarationsWrapper, _extends({
3191
- type: "text",
3192
- roleType: "input"
3193
- }, props));
3194
- };
3195
-
3196
- var input = /*#__PURE__*/React__default['default'].memo(Input, areEqual);
3197
-
3198
- var InputNumber = function InputNumber(_ref) {
3199
- var id = _ref.id,
3200
- label = _ref.label,
3201
- preferences = _ref.preferences,
3202
- response = _ref.response,
3203
- min = _ref.min,
3204
- max = _ref.max,
3205
- decimals = _ref.decimals,
3206
- placeholder = _ref.placeholder,
3207
- handleChange = _ref.handleChange,
3208
- readOnly = _ref.readOnly,
3209
- disabled = _ref.disabled,
3210
- autoComplete = _ref.autoComplete,
3211
- focused = _ref.focused,
3212
- style = _ref.style,
3213
- unit = _ref.unit,
3214
- labelPosition = _ref.labelPosition,
3215
- unitPosition = _ref.unitPosition,
3216
- declarations = _ref.declarations,
3217
- features = _ref.features,
3218
- bindings = _ref.bindings,
3219
- management = _ref.management,
3220
- mandatory = _ref.mandatory,
3221
- validators = _ref.validators;
3222
- var inputRef = React.useRef();
3223
-
3224
- var _useState = React.useState(function () {
3225
- return getResponseByPreference(preferences)(response);
3226
- }),
3227
- _useState2 = _slicedToArray(_useState, 2),
3228
- value = _useState2[0],
3229
- setValue = _useState2[1];
3230
-
3231
- var _useState3 = React.useState([minMaxValidator({
3232
- min: min,
3233
- max: max
3234
- })].concat(_toConsumableArray(validators)).map(function (v) {
3235
- return v(value);
3236
- }).filter(function (m) {
3237
- return m !== undefined;
3238
- })),
3239
- _useState4 = _slicedToArray(_useState3, 2),
3240
- messagesError = _useState4[0],
3241
- setMessagesError = _useState4[1]; // Assume we only want to handle enable external updates
3242
- // Don't need to check all value changes
3243
-
3244
-
3245
- React.useEffect(function () {
3246
- if (getResponseByPreference(preferences)(response) !== value) setValue(getResponseByPreference(preferences)(response)); // eslint-disable-next-line react-hooks/exhaustive-deps
3247
- }, [response, preferences]);
3248
-
3249
- var handleChangeOnBlur = function handleChangeOnBlur() {
3250
- handleChange(_defineProperty({}, getResponseName(response), value));
3251
- };
3252
-
3253
- var validate = function validate(v) {
3254
- setMessagesError([minMaxValidator({
3255
- min: min,
3256
- max: max
3257
- })].concat(_toConsumableArray(validators)).map(function (f) {
3258
- return f(v);
3259
- }).filter(function (m) {
3260
- return m !== undefined;
3261
- }));
3262
- };
3263
-
3264
- React.useEffect(function () {
3265
- if (focused) inputRef.current.focus();
3266
- }, [focused]);
3267
- React.useEffect(function () {
3268
- setMessagesError([minMaxValidator({
3269
- min: min,
3270
- max: max
3271
- })].concat(_toConsumableArray(validators)).map(function (v) {
3272
- return v(value);
3273
- }).filter(function (m) {
3274
- return m !== undefined;
3275
- }));
3276
- }, [value, min, max, validators]);
3277
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
3278
- id: id,
3279
- type: BEFORE_QUESTION_TEXT,
3280
- declarations: declarations,
3281
- features: features,
3282
- bindings: bindings
3283
- }), /*#__PURE__*/React__default['default'].createElement("div", {
3284
- className: getLabelPositionClass(labelPosition)
3285
- }, /*#__PURE__*/React__default['default'].createElement("label", {
3286
- htmlFor: "input-".concat(id),
3287
- id: "input-label-".concat(id),
3288
- className: "".concat(mandatory ? 'mandatory' : '')
3289
- }, interpret(features)(bindings)(label), ' ', /*#__PURE__*/React__default['default'].createElement("span", {
3290
- className: "unit"
3291
- }, unit && ['DEFAULT', 'BEFORE'].includes(unitPosition) ? "(".concat(unit, ")") : '')), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3292
- id: id,
3293
- type: AFTER_QUESTION_TEXT,
3294
- declarations: declarations,
3295
- features: features,
3296
- bindings: bindings
3297
- }), /*#__PURE__*/React__default['default'].createElement("div", {
3298
- className: "field-container"
3299
- }, /*#__PURE__*/React__default['default'].createElement("div", {
3300
- className: "".concat(management ? 'field-with-tooltip' : 'field')
3301
- }, /*#__PURE__*/React__default['default'].createElement("input", {
3302
- type: "number",
3303
- id: "input-".concat(id),
3304
- ref: inputRef,
3305
- "aria-labelledby": "input-label-".concat(id),
3306
- value: value || '',
3307
- min: min,
3308
- max: max,
3309
- step: decimals ? "".concat(Math.pow(10, -decimals)) : '0',
3310
- placeholder: placeholder,
3311
- className: "input-lunatic ".concat(messagesError.length > 0 ? 'warning' : ''),
3312
- style: buildStyleObject(style),
3313
- readOnly: readOnly,
3314
- disabled: disabled,
3315
- autoComplete: autoComplete ? 'on' : 'off',
3316
- required: mandatory,
3317
- "aria-required": mandatory,
3318
- onChange: function onChange(_ref2) {
3319
- var v = _ref2.target.value;
3320
- validate(v);
3321
- setValue(v === '' ? null : v);
3322
- },
3323
- onBlur: handleChangeOnBlur
3324
- }), unitPosition === 'AFTER' && /*#__PURE__*/React__default['default'].createElement("span", {
3325
- className: "unit"
3326
- }, unit)), management && /*#__PURE__*/React__default['default'].createElement("div", {
3327
- className: "tooltip"
3328
- }, /*#__PURE__*/React__default['default'].createElement(TooltipResponse, {
3329
- id: id,
3330
- response: response
3331
- }))), /*#__PURE__*/React__default['default'].createElement("div", {
3332
- className: "lunatic-input-number-errors"
3333
- }, messagesError.map(function (m, i) {
3334
- return /*#__PURE__*/React__default['default'].createElement("div", {
3335
- key: i,
3336
- className: "error"
3337
- }, m);
3338
- }))), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3339
- id: id,
3340
- type: DETACHABLE,
3341
- declarations: declarations,
3342
- features: features,
3343
- bindings: bindings
3344
- }));
3345
- };
3346
-
3347
- var minMaxValidator = function minMaxValidator(_ref3) {
3348
- var min = _ref3.min,
3349
- max = _ref3.max;
3350
- return function (value) {
3351
- if (!value) {
3352
- return undefined;
3353
- }
3354
-
3355
- var valueNumber = Number(value);
3356
- if (!min && isDef(max) && valueNumber > max) return /*#__PURE__*/React__default['default'].createElement("span", null, "La valeur doit \xEAtre inf\xE9rieure \xE0 ".concat(max));else if (isDef(min) && !max && valueNumber < min) return /*#__PURE__*/React__default['default'].createElement("span", null, "La valeur doit \xEAtre sup\xE9rieure \xE0 ".concat(min));else if (isDef(min) && isDef(max) && (valueNumber < min || valueNumber > max)) return /*#__PURE__*/React__default['default'].createElement("span", null, "La valeur doit \xEAtre comprise entre ".concat(min, " et ").concat(max));
3357
- return undefined;
3358
- };
3359
- };
3360
-
3361
- var isDef = function isDef(number) {
3362
- return number || number === 0;
3363
- };
3364
-
3365
- InputNumber.defaultProps = {
3366
- label: '',
3367
- preferences: ['COLLECTED'],
3368
- response: {},
3369
- min: undefined,
3370
- max: undefined,
3371
- decimals: 0,
3372
- placeholder: '',
3373
- readOnly: false,
3374
- disabled: false,
3375
- autoComplete: false,
3376
- focused: false,
3377
- declarations: [],
3378
- features: [],
3379
- bindings: {},
3380
- labelPosition: 'DEFAULT',
3381
- unitPosition: 'DEFAULT',
3382
- mandatory: false,
3383
- management: false,
3384
- style: {},
3385
- validators: []
3386
- };
3387
- InputNumber.propTypes = {
3388
- id: PropTypes__default['default'].string.isRequired,
3389
- label: PropTypes__default['default'].string,
3390
- preferences: PropTypes__default['default'].arrayOf(valueType),
3391
- response: response,
3392
- min: PropTypes__default['default'].number,
3393
- max: PropTypes__default['default'].number,
3394
- decimals: PropTypes__default['default'].number,
3395
- placeholder: PropTypes__default['default'].string,
3396
- handleChange: PropTypes__default['default'].func.isRequired,
3397
- readOnly: PropTypes__default['default'].bool,
3398
- disabled: PropTypes__default['default'].bool,
3399
- autoComplete: PropTypes__default['default'].bool,
3400
- focused: PropTypes__default['default'].bool,
3401
- declarations: declarations,
3402
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3403
- bindings: PropTypes__default['default'].object,
3404
- labelPosition: PropTypes__default['default'].oneOf(['DEFAULT', 'TOP', 'BOTTOM', 'LEFT', 'RIGHT']),
3405
- unitPosition: PropTypes__default['default'].oneOf(['DEFAULT', 'BEFORE', 'AFTER']),
3406
- mandatory: PropTypes__default['default'].bool,
3407
- management: PropTypes__default['default'].bool,
3408
- style: PropTypes__default['default'].object,
3409
- validators: PropTypes__default['default'].arrayOf(PropTypes__default['default'].func)
3410
- };
3411
- var inputNumber = /*#__PURE__*/React__default['default'].memo(InputNumber, areEqual);
3412
-
3413
- var FilterDescription = function FilterDescription(_ref) {
3414
- var id = _ref.id,
3415
- label = _ref.label,
3416
- filterDescription = _ref.filterDescription,
3417
- features = _ref.features,
3418
- bindings = _ref.bindings,
3419
- style = _ref.style;
3420
- return filterDescription ? /*#__PURE__*/React__default['default'].createElement("div", {
3421
- id: "filter-description-".concat(id),
3422
- "aria-label": "filter-description",
3423
- className: "filter-description-lunatic",
3424
- style: buildStyleObject(style)
3425
- }, interpret(features)(bindings)(label)) : null;
3426
- };
3427
-
3428
- FilterDescription.defaultProps = {
3429
- filterDescription: false,
3430
- features: [],
3431
- bindings: {},
3432
- style: {}
3433
- };
3434
- FilterDescription.propTypes = {
3435
- id: PropTypes__default['default'].string.isRequired,
3436
- label: PropTypes__default['default'].string.isRequired,
3437
- filterDescription: PropTypes__default['default'].bool,
3438
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3439
- bindings: PropTypes__default['default'].object,
3440
- style: PropTypes__default['default'].object
3441
- };
3442
-
3443
- var css_248z$8 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.progress-lunatic {\n height: 30px;\n position: relative;\n background: #d3d3d3;\n -moz-border-radius: 20px;\n -webkit-border-radius: 20px;\n border-radius: 20px;\n padding: 5px;\n box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3);\n text-align: center;\n font-weight: bold;\n}\n\n.progress-lunatic > span {\n display: block;\n height: 100%;\n border-radius: 20px;\n background-color: #e80a4d;\n opacity: 0.6;\n box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4);\n position: relative;\n top: -18px;\n overflow: hidden;\n}\n\n.progress-lunatic > span:after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n z-index: 1;\n background-size: 50px 50px;\n animation: move 2s linear infinite;\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n border-top-left-radius: 20px;\n border-bottom-left-radius: 20px;\n overflow: hidden;\n}";
3444
- styleInject(css_248z$8);
3445
-
3446
- var ProgressBar = function ProgressBar(_ref) {
3447
- var id = _ref.id,
3448
- value = _ref.value,
3449
- style = _ref.style;
3450
- var controledValue = value;
3451
- if (value < 0) controledValue = 0;
3452
- if (value > 100) controledValue = 100;
3453
- return /*#__PURE__*/React__default['default'].createElement("div", {
3454
- id: "progress-".concat(id),
3455
- className: "progress-lunatic",
3456
- style: buildStyleObject(style)
3457
- }, "".concat(controledValue.toFixed(0), " %"), /*#__PURE__*/React__default['default'].createElement("span", {
3458
- style: {
3459
- width: "".concat(controledValue, "%")
3460
- }
3461
- }));
3462
- };
3463
-
3464
- ProgressBar.propTypes = {
3465
- id: PropTypes__default['default'].string.isRequired,
3466
- value: PropTypes__default['default'].number.isRequired,
3467
- style: PropTypes__default['default'].object
3468
- };
3469
-
3470
- var css_248z$9 = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.radio-group {\n border: 0.1em solid #e80a4d;\n}\n\n.radio-lunatic {\n margin: 0;\n margin-right: 1em;\n margin-left: 1em;\n margin-top: 0.5em;\n}\n.radio-lunatic:focus {\n outline: none;\n box-shadow: 0 0 0.3em 0.3em #e80a4d;\n}\n.radio-lunatic:checked + label {\n border: 0.1em solid #e80a4d;\n padding: 0.3em;\n}\n\n.radio-modality {\n margin-top: 1em;\n}";
3471
- styleInject(css_248z$9);
3472
-
3473
- var Radio = function Radio(props) {
3474
- return /*#__PURE__*/React__default['default'].createElement(ListDeclarationsWrapper, _extends({
3475
- type: "radio"
3476
- }, props));
3477
- };
3478
-
3479
- var component$2 = /*#__PURE__*/React__default['default'].memo(Radio, areEqual);
3480
-
3481
- var buildLoopComponents = function buildLoopComponents(iterations) {
3482
- return function (components) {
3483
- var toFlat = _toConsumableArray(Array(iterations).keys()).map(function (rowNumber) {
3484
- return buildFlatten(rowNumber)(components).map(function (c) {
3485
- return _objectSpread2(_objectSpread2({}, c), {}, {
3486
- rowNumber: rowNumber
3487
- });
3488
- });
3489
- });
3490
-
3491
- return toFlat.flat();
3492
- };
3493
- };
3494
-
3495
- var buildFlatten = function buildFlatten(i) {
3496
- return function (parentComponents) {
3497
- return parentComponents.map(function (component) {
3498
- var response = component.response,
3499
- responses = component.responses,
3500
- components = component.components;
3501
- if (response) return buildFlattenResponse(i)(component);else if (responses) return _objectSpread2(_objectSpread2({}, component), {}, {
3502
- responses: responses.map(function (r) {
3503
- return buildFlattenResponse(i)(r);
3504
- })
3505
- });else if (components) return _objectSpread2(_objectSpread2({}, component), {}, {
3506
- components: buildFlatten(i)(components)
3507
- });else return component;
3508
- });
3509
- };
3510
- };
3511
-
3512
- var buildFlattenResponse = function buildFlattenResponse(i) {
3513
- return function (component) {
3514
- var response = component.response,
3515
- other = _objectWithoutProperties(component, ["response"]);
3516
-
3517
- var name = response.name,
3518
- values = response.values;
3519
- var newValues = Object.entries(values).reduce(function (acc, _ref) {
3520
- var _ref2 = _slicedToArray(_ref, 2),
3521
- key = _ref2[0],
3522
- value = _ref2[1];
3523
-
3524
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, value ? value[i] : null));
3525
- }, {});
3526
- return _objectSpread2(_objectSpread2({}, other), {}, {
3527
- response: {
3528
- name: name,
3529
- values: newValues
3530
- }
3531
- });
3532
- };
3533
- };
3534
-
3535
- var css_248z$a = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.lunatic-loop {\n margin-top: 1em;\n margin-bottom: 1em;\n border: solid 2px #e80a4d;\n padding: 2em;\n}\n.lunatic-loop .loop-label {\n text-align: center;\n font-weight: bold;\n font-size: 2em;\n}\n.lunatic-loop .loop-component {\n margin-top: 0.4em;\n margin-bottom: 0.4em;\n}";
3536
- styleInject(css_248z$a);
3537
-
3538
- var Loop = function Loop(_ref) {
3539
- var id = _ref.id,
3540
- label = _ref.label,
3541
- iterations = _ref.iterations,
3542
- components = _ref.components,
3543
- bindings = _ref.bindings,
3544
- handleChange = _ref.handleChange,
3545
- loopDependencies = _ref.loopDependencies,
3546
- orchetratorProps = _objectWithoutProperties(_ref, ["id", "label", "iterations", "components", "bindings", "handleChange", "loopDependencies"]);
3547
-
3548
- var _useState = React.useState({}),
3549
- _useState2 = _slicedToArray(_useState, 2),
3550
- todo = _useState2[0],
3551
- setTodo = _useState2[1];
3552
-
3553
- var vectorialBindings = buildVectorialBindings(bindings);
3554
- var features = orchetratorProps.features;
3555
- var iterationNb = interpret(features)(vectorialBindings)(iterations);
3556
- var involvedVariables = getInvolvedVariables(components);
3557
- /**
3558
- * Handle the increase in the number of iterations
3559
- * Assume we only want to update if iterationNb changes
3560
- */
3561
-
3562
- React.useEffect(function () {
3563
- var toUpdate = involvedVariables.reduce(function (acc, _ref2) {
3564
- var iv = _ref2.name,
3565
- depth = _ref2.depth;
3566
- if (bindings[iv] && iterationNb > bindings[iv].length) return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, iv, [].concat(_toConsumableArray(bindings[iv]), _toConsumableArray(new Array(iterationNb - bindings[iv].length).fill(buildEmptyValue(depth))))));
3567
- return acc;
3568
- }, {});
3569
- if (Object.keys(toUpdate).length !== 0) handleChange(toUpdate); // eslint-disable-next-line react-hooks/exhaustive-deps
3570
- }, [iterationNb]);
3571
- React.useEffect(function () {
3572
- if (Object.keys(todo).length !== 0) {
3573
- var up = todo.up,
3574
- rowNumber = todo.rowNumber;
3575
-
3576
- var _Object$entries$ = _slicedToArray(Object.entries(up)[0], 2),
3577
- key = _Object$entries$[0],
3578
- value = _Object$entries$[1];
3579
-
3580
- var previousValue = bindings[key];
3581
- var newValue = previousValue.map(function (v, i) {
3582
- return i === rowNumber ? value : v;
3583
- });
3584
- handleChange(_defineProperty({}, key, newValue));
3585
- setTodo({});
18
+ Object.keys(_components).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
+ if (key in exports && exports[key] === _components[key]) return;
22
+ Object.defineProperty(exports, key, {
23
+ enumerable: true,
24
+ get: function get() {
25
+ return _components[key];
3586
26
  }
3587
- }, [bindings, todo, handleChange]);
3588
- var flattenComponents = buildLoopComponents(iterationNb)(components);
3589
- if (!displayLoop(loopDependencies)(bindings)) return null;
3590
- var loopComponents = flattenComponents.map(function (_ref3) {
3591
- var componentType = _ref3.componentType,
3592
- idC = _ref3.id,
3593
- rowNumber = _ref3.rowNumber,
3594
- conditionFilter = _ref3.conditionFilter,
3595
- rest = _objectWithoutProperties(_ref3, ["componentType", "id", "rowNumber", "conditionFilter"]);
3596
-
3597
- var loopBindings = buildBindingsForDeeperComponents(rowNumber)(bindings);
3598
- if (!displayLoopQuestion(loopDependencies)(loopBindings)) return null;
3599
- var Component = lunatic[componentType];
3600
- if (interpret(features)(loopBindings, true)(conditionFilter) !== 'normal') return null;
3601
- return /*#__PURE__*/React__default['default'].createElement("div", {
3602
- key: "".concat(idC, "-loop-").concat(rowNumber),
3603
- className: "loop-component"
3604
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({}, orchetratorProps, rest, {
3605
- id: "".concat(idC, "-loop-").concat(rowNumber),
3606
- handleChange: function handleChange(up) {
3607
- return setTodo({
3608
- up: up,
3609
- rowNumber: rowNumber
3610
- });
3611
- },
3612
- bindings: loopBindings,
3613
- componentType: componentType
3614
- })));
3615
- });
3616
- return /*#__PURE__*/React__default['default'].createElement("div", {
3617
- id: "loop-".concat(id),
3618
- className: "lunatic-loop"
3619
- }, loopComponents);
3620
- };
3621
-
3622
- var Loop$1 = /*#__PURE__*/React__default['default'].memo(Loop, areEqual);
3623
-
3624
- var buildContentForLoopConstructor = function buildContentForLoopConstructor(_ref) {
3625
- var components = _ref.components,
3626
- headers = _ref.headers;
3627
- // Start hack to find interation number
3628
- // Refactor if we have to handle complex components (vector, matrix)
3629
- var iterations = components.find(function (c) {
3630
- return c.response;
3631
- }).response.values[COLLECTED].length || 1; // End
3632
-
3633
- var initialArray = _toConsumableArray(Array(iterations).keys());
3634
-
3635
- var uiComponents = components.map(function (comp) {
3636
- var response = comp.response,
3637
- other = _objectWithoutProperties(comp, ["response"]);
3638
-
3639
- if (!response) return initialArray.map(function () {
3640
- return comp;
3641
- }); // Handle reponses & cells components ?
3642
-
3643
- var name = response.name,
3644
- values = response.values;
3645
- return initialArray.map(function (rowNumber) {
3646
- var newValues = Object.entries(values).reduce(function (acc, _ref2) {
3647
- var _ref3 = _slicedToArray(_ref2, 2),
3648
- key = _ref3[0],
3649
- value = _ref3[1];
3650
-
3651
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, value ? value[rowNumber] : null));
3652
- }, {});
3653
- return _objectSpread2(_objectSpread2({}, other), {}, {
3654
- response: {
3655
- name: name,
3656
- values: newValues
3657
- },
3658
- rowNumber: rowNumber
3659
- });
3660
- });
3661
- }, []);
3662
-
3663
- var transpose = function transpose(m) {
3664
- return m[0].map(function (_, i) {
3665
- return m.map(function (x) {
3666
- return x[i];
3667
- });
3668
- });
3669
- };
3670
-
3671
- var rows = transpose(uiComponents);
3672
- return headers ? [headers].concat(_toConsumableArray(rows)) : rows;
3673
- };
3674
-
3675
- var BodyComponent = function BodyComponent(_ref) {
3676
- var componentType = _ref.componentType,
3677
- mainId = _ref.mainId,
3678
- headers = _ref.headers,
3679
- components = _ref.components,
3680
- bindings = _ref.bindings,
3681
- width = _ref.width,
3682
- preferences = _ref.preferences,
3683
- positioning = _ref.positioning,
3684
- management = _ref.management,
3685
- features = _ref.features,
3686
- setTodo = _ref.setTodo;
3687
- var uiComponents = buildContentForLoopConstructor({
3688
- components: components,
3689
- headers: headers
3690
27
  });
3691
- if (componentType === 'RosterForLoop') return /*#__PURE__*/React__default['default'].createElement("table", {
3692
- id: "table-".concat(mainId),
3693
- className: "table-lunatic"
3694
- }, /*#__PURE__*/React__default['default'].createElement("tbody", null, uiComponents.map(function (row, i) {
3695
- return /*#__PURE__*/React__default['default'].createElement("tr", {
3696
- key: "table-".concat(mainId, "-row").concat(i)
3697
- }, row.map(function (component, j) {
3698
- var label = component.label,
3699
- headerCell = component.headerCell,
3700
- colspan = component.colspan,
3701
- rowspan = component.rowspan,
3702
- componentType = component.componentType,
3703
- id = component.id,
3704
- rowNumber = component.rowNumber,
3705
- componentProps = _objectWithoutProperties(component, ["label", "headerCell", "colspan", "rowspan", "componentType", "id", "rowNumber"]);
3706
-
3707
- var localBindings = buildBindingsForDeeperComponents(rowNumber)(bindings);
3708
-
3709
- if (componentType) {
3710
- var Component = lunatic[componentType];
3711
- return /*#__PURE__*/React__default['default'].createElement("td", {
3712
- key: "table-".concat(mainId, "-row-").concat(i, "-cell-").concat(j),
3713
- style: {
3714
- width: width
3715
- }
3716
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({}, componentProps, {
3717
- id: "".concat(id, "-row-").concat(i),
3718
- label: label,
3719
- handleChange: function handleChange(up) {
3720
- setTodo({
3721
- up: up,
3722
- rowNumber: rowNumber
3723
- });
3724
- },
3725
- preferences: preferences,
3726
- positioning: positioning,
3727
- management: management,
3728
- features: features,
3729
- bindings: localBindings,
3730
- zIndex: uiComponents.length - i || 0
3731
- })));
3732
- }
3733
-
3734
- var cellOptions = {
3735
- key: "table-".concat(mainId, "-row-").concat(i, "-cell-").concat(j),
3736
- style: {
3737
- width: width
3738
- },
3739
- colSpan: colspan || 1,
3740
- rowSpan: rowspan || 1
3741
- };
3742
- var interpretedLabel = interpret(features)(bindings)(label);
3743
- return headerCell ? /*#__PURE__*/React__default['default'].createElement("th", cellOptions, interpretedLabel) : /*#__PURE__*/React__default['default'].createElement("td", cellOptions, interpretedLabel);
3744
- }));
3745
- })));else return /*#__PURE__*/React__default['default'].createElement("div", {
3746
- className: "block-for-loop"
3747
- }, uiComponents.map(function (row, i) {
3748
- return row.map(function (_ref2) {
3749
- var componentType = _ref2.componentType,
3750
- id = _ref2.id,
3751
- label = _ref2.label,
3752
- componentProps = _objectWithoutProperties(_ref2, ["componentType", "id", "label"]);
3753
-
3754
- var Component = lunatic[componentType];
3755
- var localBindings = buildBindingsForDeeperComponents(i)(bindings);
3756
- return /*#__PURE__*/React__default['default'].createElement("div", {
3757
- className: "block-component",
3758
- key: "".concat(id, "-row-").concat(i)
3759
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({}, componentProps, {
3760
- id: "".concat(id, "-row-").concat(i),
3761
- label: label,
3762
- handleChange: function handleChange(up) {
3763
- setTodo({
3764
- up: up,
3765
- rowNumber: i
3766
- });
3767
- },
3768
- preferences: preferences,
3769
- positioning: positioning,
3770
- management: management,
3771
- features: features,
3772
- bindings: localBindings
3773
- })));
3774
- });
3775
- }));
3776
- };
3777
-
3778
- var LoopConstructorWrapper = function LoopConstructorWrapper(_ref) {
3779
- var mainId = _ref.id,
3780
- mainLabel = _ref.label,
3781
- components = _ref.components,
3782
- handleChange = _ref.handleChange,
3783
- lines = _ref.lines,
3784
- declarations = _ref.declarations,
3785
- features = _ref.features,
3786
- bindings = _ref.bindings,
3787
- addBtnLabel = _ref.addBtnLabel,
3788
- hideBtn = _ref.hideBtn,
3789
- componentType = _ref.componentType,
3790
- otherProps = _objectWithoutProperties(_ref, ["id", "label", "components", "handleChange", "lines", "declarations", "features", "bindings", "addBtnLabel", "hideBtn", "componentType"]);
3791
-
3792
- var _useState = React.useState({}),
3793
- _useState2 = _slicedToArray(_useState, 2),
3794
- todo = _useState2[0],
3795
- setTodo = _useState2[1];
3796
-
3797
- var minLines = Math.max(lines.min || 0, getLoopConstructorInitLines(components));
3798
- var maxLines = lines ? lines.max : undefined;
3799
- var width = "".concat(100 / Math.max.apply(Math, _toConsumableArray(components.map(function (row) {
3800
- return row.length;
3801
- }))), "%");
3802
- var Button$1 = Button;
3803
- var involvedVariables = getInvolvedVariables(components);
3804
- React.useEffect(function () {
3805
- if (Object.keys(todo).length !== 0) {
3806
- var up = todo.up,
3807
- rowNumber = todo.rowNumber;
3808
-
3809
- var _Object$entries$ = _slicedToArray(Object.entries(up)[0], 2),
3810
- key = _Object$entries$[0],
3811
- value = _Object$entries$[1];
3812
-
3813
- var previousValue = bindings[key];
3814
- var newValue = previousValue.map(function (v, i) {
3815
- return i === rowNumber ? value : v;
3816
- });
3817
- handleChange(_defineProperty({}, key, newValue));
3818
- setTodo({});
3819
- }
3820
- }, [bindings, todo, handleChange]);
3821
-
3822
- var addLine = function addLine() {
3823
- var toHandle = involvedVariables.reduce(function (acc, _ref2) {
3824
- var iv = _ref2.name,
3825
- depth = _ref2.depth;
3826
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, iv, [].concat(_toConsumableArray(bindings[iv]), [buildEmptyValue(depth)])));
3827
- }, {});
3828
- handleChange(toHandle);
3829
- };
3830
-
3831
- var customBtnLabel = componentType === 'Loop' && interpret(features)(bindings)(mainLabel) || addBtnLabel;
3832
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
3833
- id: mainId,
3834
- type: BEFORE_QUESTION_TEXT,
3835
- declarations: declarations,
3836
- features: features,
3837
- bindings: bindings
3838
- }), componentType === 'RosterForLoop' && mainLabel && /*#__PURE__*/React__default['default'].createElement("label", {
3839
- htmlFor: "loops-constructor-".concat(mainId),
3840
- id: "loops-constructor-label-".concat(mainId)
3841
- }, interpret(features)(bindings)(mainLabel)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3842
- id: mainId,
3843
- type: AFTER_QUESTION_TEXT,
3844
- declarations: declarations,
3845
- features: features,
3846
- bindings: bindings
3847
- }), /*#__PURE__*/React__default['default'].createElement(BodyComponent, _extends({
3848
- mainId: mainId,
3849
- componentType: componentType,
3850
- components: components,
3851
- bindings: bindings,
3852
- width: width,
3853
- features: features,
3854
- setTodo: setTodo
3855
- }, otherProps)), !hideBtn && /*#__PURE__*/React__default['default'].createElement(Button$1, {
3856
- label: "addLine",
3857
- value: customBtnLabel,
3858
- disabled: Number.isInteger(minLines) && minLines === maxLines || lastLoopChildLineIsEmpty(bindings)(involvedVariables),
3859
- onClick: addLine
3860
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
3861
- id: mainId,
3862
- type: DETACHABLE,
3863
- declarations: declarations,
3864
- features: features,
3865
- bindings: bindings
3866
- }));
3867
- };
3868
-
3869
- LoopConstructorWrapper.defaultProps = {
3870
- label: '',
3871
- preferences: ['COLLECTED'],
3872
- components: [],
3873
- lines: {},
3874
- positioning: 'DEFAULT',
3875
- declarations: [],
3876
- features: [],
3877
- bindings: {},
3878
- addBtnLabel: 'Add a line',
3879
- management: false,
3880
- hideBtn: false,
3881
- style: {}
3882
- };
3883
- LoopConstructorWrapper.propTypes = {
3884
- componentType: PropTypes__default['default'].string.isRequired,
3885
- id: PropTypes__default['default'].string.isRequired,
3886
- label: PropTypes__default['default'].string,
3887
- preferences: PropTypes__default['default'].arrayOf(valueType),
3888
- components: PropTypes__default['default'].array,
3889
- handleChange: PropTypes__default['default'].func.isRequired,
3890
- lines: lines,
3891
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
3892
- declarations: declarations,
3893
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3894
- bindings: PropTypes__default['default'].object,
3895
- addBtnLabel: PropTypes__default['default'].string,
3896
- hideBtn: PropTypes__default['default'].bool,
3897
- management: PropTypes__default['default'].bool,
3898
- style: PropTypes__default['default'].object
3899
- };
3900
- var LoopConstructorWrapper$1 = /*#__PURE__*/React__default['default'].memo(LoopConstructorWrapper, areEqual);
3901
-
3902
- var css_248z$b = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.block-for-loop {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n.block-for-loop .block-component {\n margin-top: 0.4em;\n margin-bottom: 0.4em;\n}";
3903
- styleInject(css_248z$b);
3904
-
3905
- var BlockForLoop = function BlockForLoop(props) {
3906
- return /*#__PURE__*/React__default['default'].createElement(LoopConstructorWrapper$1, props);
3907
- };
3908
-
3909
- var BlockForLoop$1 = /*#__PURE__*/React__default['default'].memo(BlockForLoop, areEqual);
3910
-
3911
- var LoopWrapper = function LoopWrapper(props) {
3912
- var iterations = props.iterations;
3913
- if (iterations) return /*#__PURE__*/React__default['default'].createElement(Loop$1, props);
3914
- return /*#__PURE__*/React__default['default'].createElement(BlockForLoop$1, props);
3915
- };
3916
-
3917
- var RosterForLoop = function RosterForLoop(props) {
3918
- return /*#__PURE__*/React__default['default'].createElement(LoopConstructorWrapper$1, props);
3919
- };
3920
-
3921
- var component$3 = /*#__PURE__*/React__default['default'].memo(RosterForLoop, areEqual);
3922
-
3923
- var css_248z$c = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.sequence-lunatic {\n height: 40px;\n box-sizing: border-box;\n border-radius: 0px;\n background-color: #e80a4d;\n border: 0.1em solid #e80a4d;\n color: white;\n font-weight: bold;\n font-size: 130%;\n padding-left: 10px;\n display: flex;\n align-items: center;\n}";
3924
- styleInject(css_248z$c);
3925
-
3926
- var Sequence = function Sequence(_ref) {
3927
- var id = _ref.id,
3928
- label = _ref.label,
3929
- declarations = _ref.declarations,
3930
- features = _ref.features,
3931
- bindings = _ref.bindings,
3932
- style = _ref.style;
3933
- return /*#__PURE__*/React__default['default'].createElement(SimpleDeclarationsWrapper, {
3934
- id: id,
3935
- declarations: declarations,
3936
- features: features,
3937
- bindings: bindings
3938
- }, /*#__PURE__*/React__default['default'].createElement("div", {
3939
- "aria-label": "sequence-".concat(id),
3940
- className: "sequence-lunatic",
3941
- style: buildStyleObject(style)
3942
- }, interpret(features)(bindings)(label)));
3943
- };
3944
-
3945
- Sequence.defaultProps = {
3946
- declarations: [],
3947
- features: [],
3948
- bindings: {},
3949
- style: {}
3950
- };
3951
- Sequence.propTypes = {
3952
- id: PropTypes__default['default'].string.isRequired,
3953
- label: PropTypes__default['default'].string.isRequired,
3954
- declarations: declarations,
3955
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3956
- bindings: PropTypes__default['default'].object,
3957
- style: PropTypes__default['default'].object
3958
- };
3959
- var component$4 = /*#__PURE__*/React__default['default'].memo(Sequence, areEqual);
3960
-
3961
- var css_248z$d = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.subsequence-lunatic {\n height: 20px;\n box-sizing: border-box;\n border-radius: 0px;\n background-color: #e80a4d;\n border: 0.1em solid #e80a4d;\n color: white;\n font-weight: bold;\n font-size: 90%;\n padding-left: 10px;\n display: flex;\n align-items: center;\n}";
3962
- styleInject(css_248z$d);
3963
-
3964
- var Subsequence = function Subsequence(_ref) {
3965
- var id = _ref.id,
3966
- label = _ref.label,
3967
- declarations = _ref.declarations,
3968
- features = _ref.features,
3969
- bindings = _ref.bindings,
3970
- style = _ref.style;
3971
- return /*#__PURE__*/React__default['default'].createElement(SimpleDeclarationsWrapper, {
3972
- id: id,
3973
- declarations: declarations,
3974
- features: features,
3975
- bindings: bindings
3976
- }, /*#__PURE__*/React__default['default'].createElement("div", {
3977
- "aria-label": "subsequence-".concat(id),
3978
- className: "subsequence-lunatic",
3979
- style: buildStyleObject(style)
3980
- }, interpret(features)(bindings)(label)));
3981
- };
3982
-
3983
- Subsequence.defaultProps = {
3984
- declarations: [],
3985
- features: [],
3986
- bindings: {},
3987
- style: {}
3988
- };
3989
- Subsequence.propTypes = {
3990
- id: PropTypes__default['default'].string.isRequired,
3991
- label: PropTypes__default['default'].string.isRequired,
3992
- declarations: declarations,
3993
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
3994
- bindings: PropTypes__default['default'].object,
3995
- style: PropTypes__default['default'].object
3996
- };
3997
- var component$5 = /*#__PURE__*/React__default['default'].memo(Subsequence, areEqual);
3998
-
3999
- var css_248z$e = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.textarea-lunatic {\n width: 100%;\n box-sizing: border-box;\n border: solid 2px #e80a4d;\n border-radius: 10px;\n padding: 5px;\n}\n.textarea-lunatic:focus {\n outline: none;\n box-shadow: 0 0 10px #e80a4d;\n}\n.textarea-lunatic:read-only {\n background-color: #ebebe4;\n}";
4000
- styleInject(css_248z$e);
4001
-
4002
- var Textarea = function Textarea(props) {
4003
- return /*#__PURE__*/React__default['default'].createElement(InputDeclarationsWrapper, _extends({
4004
- type: null,
4005
- roleType: "textarea"
4006
- }, props));
4007
- };
4008
-
4009
- var component$6 = /*#__PURE__*/React__default['default'].memo(Textarea, areEqual);
4010
-
4011
- var css_248z$f = "* {\n box-sizing: border-box;\n}\n\n.mandatory:after {\n content: \" *\";\n color: red;\n}\n\n.horizontal-options {\n display: inline-block;\n margin-right: 2em;\n}\n\nlabel,\n.lunatic-dropdown-label {\n margin-bottom: 0.5em;\n}\n\n.label-top {\n display: flex;\n flex-direction: column;\n}\n\n.label-bottom {\n display: flex;\n flex-direction: column-reverse;\n}\n\n.label-right {\n justify-content: flex-end;\n display: flex;\n flex-direction: row-reverse;\n align-items: baseline;\n}\n.label-right :first-child {\n margin-right: 1rem;\n}\n\n.label-left {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n.label-left :first-child {\n margin-right: 1rem;\n}\n\n.field-container {\n display: flex;\n}\n\n.tooltip {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.field-with-tooltip {\n width: calc(100% - 25px);\n position: relative;\n}\n\n.field {\n width: 100%;\n position: relative;\n}\n\n.table-lunatic {\n table-layout: fixed;\n border-collapse: collapse;\n margin-top: 0.3em;\n margin-bottom: 0.3em;\n}\n.table-lunatic td,\n.table-lunatic th {\n border: 0.15em solid #e80a4d;\n padding: 0.2em;\n}\n.table-lunatic td fieldset,\n.table-lunatic th fieldset {\n margin: none;\n border: none;\n}\n.table-lunatic td fieldset .radio-modality,\n.table-lunatic th fieldset .radio-modality {\n margin-top: 0;\n}\n.table-lunatic td fieldset .checkbox-modality,\n.table-lunatic th fieldset .checkbox-modality {\n margin-top: 0;\n}";
4012
- styleInject(css_248z$f);
4013
-
4014
- var Table = function Table(_ref) {
4015
- var tableId = _ref.id,
4016
- tableLabel = _ref.label,
4017
- preferences = _ref.preferences,
4018
- cells = _ref.cells,
4019
- handleChange = _ref.handleChange,
4020
- initLines = _ref.lines,
4021
- positioning = _ref.positioning,
4022
- declarations = _ref.declarations,
4023
- features = _ref.features,
4024
- bindings = _ref.bindings,
4025
- addBtnLabel = _ref.addBtnLabel,
4026
- hideBtn = _ref.hideBtn,
4027
- management = _ref.management;
4028
- var minLines = initLines ? Math.max(initLines.min, getRosterInitLines(cells)) : undefined;
4029
- var maxLines = initLines ? initLines.max : undefined;
4030
-
4031
- var _useState = React.useState(minLines),
4032
- _useState2 = _slicedToArray(_useState, 2),
4033
- lines = _useState2[0],
4034
- setLines = _useState2[1];
4035
-
4036
- var width = "".concat(100 / Math.max.apply(Math, _toConsumableArray(cells.map(function (line) {
4037
- return line.length;
4038
- }))), "%");
4039
- var Button$1 = Button;
4040
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(Declarations, {
4041
- id: tableId,
4042
- type: BEFORE_QUESTION_TEXT,
4043
- declarations: declarations,
4044
- features: features,
4045
- bindings: bindings
4046
- }), tableLabel && /*#__PURE__*/React__default['default'].createElement("label", {
4047
- htmlFor: "table-one-axis-".concat(tableId),
4048
- id: "table-one-axis-label-".concat(tableId)
4049
- }, interpret(features)(bindings)(tableLabel)), /*#__PURE__*/React__default['default'].createElement(Declarations, {
4050
- id: tableId,
4051
- type: AFTER_QUESTION_TEXT,
4052
- declarations: declarations,
4053
- features: features,
4054
- bindings: bindings
4055
- }), /*#__PURE__*/React__default['default'].createElement("table", {
4056
- id: "table-".concat(tableId),
4057
- className: "table-lunatic"
4058
- }, /*#__PURE__*/React__default['default'].createElement("tbody", null, (minLines || minLines === 0 ? cells.slice(0, lines + 1) : cells).map(function (line, i) {
4059
- return /*#__PURE__*/React__default['default'].createElement("tr", {
4060
- key: "table-".concat(tableId, "-line").concat(i)
4061
- }, line.map(function (component, j) {
4062
- var label = component.label,
4063
- headerCell = component.headerCell,
4064
- colspan = component.colspan,
4065
- rowspan = component.rowspan,
4066
- componentType = component.componentType,
4067
- componentProps = _objectWithoutProperties(component, ["label", "headerCell", "colspan", "rowspan", "componentType"]);
4068
-
4069
- if (componentType) {
4070
- var Component = lunatic[componentType];
4071
- return /*#__PURE__*/React__default['default'].createElement("td", {
4072
- key: "table-".concat(tableId, "-line").concat(i, "-cell-").concat(j),
4073
- style: {
4074
- width: width
4075
- }
4076
- }, /*#__PURE__*/React__default['default'].createElement(Component, _extends({
4077
- label: label,
4078
- handleChange: handleChange,
4079
- preferences: preferences,
4080
- positioning: positioning,
4081
- management: management,
4082
- features: features,
4083
- bindings: bindings
4084
- }, componentProps, {
4085
- zIndex: cells.length - i || 0
4086
- })));
4087
- }
4088
-
4089
- var cellOptions = {
4090
- key: "table-".concat(tableId, "-line").concat(i, "-cell-").concat(j),
4091
- style: {
4092
- width: width
4093
- },
4094
- colSpan: colspan || 1,
4095
- rowSpan: rowspan || 1
4096
- };
4097
- var interpretedLabel = interpret(features)(bindings)(label);
4098
- return headerCell ? /*#__PURE__*/React__default['default'].createElement("th", cellOptions, interpretedLabel) : /*#__PURE__*/React__default['default'].createElement("td", cellOptions, interpretedLabel);
4099
- }));
4100
- }))), Number.isInteger(minLines) && lines < maxLines && !hideBtn && /*#__PURE__*/React__default['default'].createElement(Button$1, {
4101
- label: "addLine",
4102
- value: addBtnLabel,
4103
- onClick: function onClick() {
4104
- return setLines(lines + 1);
4105
- }
4106
- }), /*#__PURE__*/React__default['default'].createElement(Declarations, {
4107
- id: tableId,
4108
- type: DETACHABLE,
4109
- declarations: declarations,
4110
- features: features,
4111
- bindings: bindings
4112
- }));
4113
- };
28
+ });
4114
29
 
4115
- Table.defaultProps = {
4116
- label: '',
4117
- preferences: ['COLLECTED'],
4118
- cells: [],
4119
- lines: {},
4120
- positioning: 'DEFAULT',
4121
- declarations: [],
4122
- features: [],
4123
- bindings: {},
4124
- addBtnLabel: 'Add a line',
4125
- management: false,
4126
- hideBtn: false,
4127
- style: {}
4128
- };
4129
- Table.propTypes = {
4130
- id: PropTypes__default['default'].string.isRequired,
4131
- label: PropTypes__default['default'].string,
4132
- preferences: PropTypes__default['default'].arrayOf(valueType),
4133
- cells: PropTypes__default['default'].array,
4134
- handleChange: PropTypes__default['default'].func.isRequired,
4135
- lines: lines,
4136
- positioning: PropTypes__default['default'].oneOf(['DEFAULT', 'HORIZONTAL', 'VERTICAL']),
4137
- declarations: declarations,
4138
- features: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),
4139
- bindings: PropTypes__default['default'].object,
4140
- addBtnLabel: PropTypes__default['default'].string,
4141
- hideBtn: PropTypes__default['default'].bool,
4142
- management: PropTypes__default['default'].bool,
4143
- style: PropTypes__default['default'].object
4144
- };
4145
- var table = /*#__PURE__*/React__default['default'].memo(Table, areEqual);
30
+ var _useLunatic = _interopRequireDefault(require("./use-lunatic"));
4146
31
 
4147
- exports.Breadcrumb = Breadcrumb;
4148
- exports.Button = Button;
4149
- exports.CheckboxBoolean = boolean;
4150
- exports.CheckboxGroup = group;
4151
- exports.CheckboxOne = one;
4152
- exports.Datepicker = component;
4153
- exports.Declarations = Declarations;
4154
- exports.Dropdown = component$1;
4155
- exports.FilterDescription = FilterDescription;
4156
- exports.Input = input;
4157
- exports.InputNumber = inputNumber;
4158
- exports.Loop = LoopWrapper;
4159
- exports.ProgressBar = ProgressBar;
4160
- exports.Radio = component$2;
4161
- exports.RosterForLoop = component$3;
4162
- exports.Sequence = component$4;
4163
- exports.Subsequence = component$5;
4164
- exports.Table = table;
4165
- exports.Textarea = component$6;
4166
- exports.TooltipResponse = TooltipResponse;
4167
- exports.getBindings = getBindings;
4168
- exports.getCollectedState = getCollectedState;
4169
- exports.getCollectedStateByValueType = getCollectedStateByValueType;
4170
- exports.getState = getState;
4171
- exports.interpret = interpret;
4172
- exports.interpretWithEmptyDefault = interpretWithEmptyDefault;
4173
- exports.mergeQuestionnaireAndData = mergeQuestionnaireAndData;
4174
- exports.useLunatic = useLunatic;
4175
- //# sourceMappingURL=index.js.map
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }