@case-framework/survey-ui 0.6.2 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/README.md +40 -34
  2. package/dist/src/index.d.ts +7 -13
  3. package/dist/src/lib/survey-assets.d.ts +2 -0
  4. package/dist/src/modules/survey-player/index.d.ts +2 -0
  5. package/dist/src/modules/survey-player/registry.d.ts +23 -0
  6. package/dist/src/modules/survey-player/survey-context.d.ts +1 -1
  7. package/dist/src/modules/survey-player/survey-item/survey-item-types/placeholder-item-renderers.d.ts +1 -1
  8. package/dist/src/modules/survey-player/survey-player.d.ts +1 -1
  9. package/dist/survey-ui.cjs +47 -0
  10. package/dist/survey-ui.cjs.map +1 -0
  11. package/dist/survey-ui.css +1 -1
  12. package/dist/survey-ui.js +14136 -0
  13. package/dist/survey-ui.js.map +1 -0
  14. package/package.json +25 -63
  15. package/dist/default-item-cores-C6VK2LFe.js +0 -10
  16. package/dist/default-item-cores-C6VK2LFe.js.map +0 -1
  17. package/dist/default-item-cores-gdu37TFX.mjs +0 -3988
  18. package/dist/default-item-cores-gdu37TFX.mjs.map +0 -1
  19. package/dist/item-core-registry.cjs.js +0 -2
  20. package/dist/item-core-registry.cjs.js.map +0 -1
  21. package/dist/item-core-registry.es.js +0 -11
  22. package/dist/item-core-registry.es.js.map +0 -1
  23. package/dist/src/components/c-ui/alert-provider.d.ts +0 -18
  24. package/dist/src/components/c-ui/dot-background.d.ts +0 -72
  25. package/dist/src/components/c-ui/filepicker-dropzone.d.ts +0 -38
  26. package/dist/src/components/c-ui/loading-button.d.ts +0 -9
  27. package/dist/src/components/common/content-editable-plain.d.ts +0 -17
  28. package/dist/src/components/common/sortable-tree.d.ts +0 -59
  29. package/dist/src/components/hooks/use-button-shortcut.d.ts +0 -18
  30. package/dist/src/components/hooks/use-document-keydown.d.ts +0 -7
  31. package/dist/src/components/rich-text/content-policy.d.ts +0 -19
  32. package/dist/src/components/rich-text/index.d.ts +0 -6
  33. package/dist/src/components/rich-text/nodes/rich-text-image-node.d.ts +0 -40
  34. package/dist/src/components/rich-text/nodes/rich-text-info-box-node.d.ts +0 -45
  35. package/dist/src/components/rich-text/nodes/survey-rich-text-heading-node.d.ts +0 -27
  36. package/dist/src/components/rich-text/rich-text-block-editor.d.ts +0 -8
  37. package/dist/src/components/rich-text/rich-text-editor-context.d.ts +0 -23
  38. package/dist/src/components/rich-text/rich-text-survey-content.d.ts +0 -7
  39. package/dist/src/components/rich-text/types.d.ts +0 -6
  40. package/dist/src/components/rich-text-editor/index.d.ts +0 -3
  41. package/dist/src/components/rich-text-editor/plugins/command-handler-plugin.d.ts +0 -5
  42. package/dist/src/components/rich-text-editor/plugins/editable-mode-plugin.d.ts +0 -3
  43. package/dist/src/components/rich-text-editor/plugins/floating-toolbar-plugin.d.ts +0 -11
  44. package/dist/src/components/rich-text-editor/plugins/image-dialog-plugin.d.ts +0 -4
  45. package/dist/src/components/rich-text-editor/plugins/info-box-popover-plugin.d.ts +0 -6
  46. package/dist/src/components/rich-text-editor/plugins/link-popover-plugin.d.ts +0 -6
  47. package/dist/src/components/rich-text-editor/plugins/rich-text-image-asset-deletion-plugin.d.ts +0 -1
  48. package/dist/src/components/rich-text-editor/plugins/slash-command-menu-plugin.d.ts +0 -15
  49. package/dist/src/components/rich-text-editor/plugins/sync-editor-value-plugin.d.ts +0 -4
  50. package/dist/src/components/rich-text-editor/rich-text-editor-utils.d.ts +0 -205
  51. package/dist/src/components/rich-text-editor/rich-text-editor.d.ts +0 -43
  52. package/dist/src/components/rich-text-editor/rich-text-image-editor-commands.d.ts +0 -12
  53. package/dist/src/components/rich-text-editor/rich-text-info-box-commands.d.ts +0 -20
  54. package/dist/src/components/rich-text-editor/style-control-icon.d.ts +0 -5
  55. package/dist/src/components/ui/alert.d.ts +0 -10
  56. package/dist/src/components/ui/badge.d.ts +0 -9
  57. package/dist/src/components/ui/breadcrumb.d.ts +0 -11
  58. package/dist/src/components/ui/card.d.ts +0 -11
  59. package/dist/src/components/ui/command.d.ts +0 -18
  60. package/dist/src/components/ui/context-menu.d.ts +0 -31
  61. package/dist/src/components/ui/dialog.d.ts +0 -20
  62. package/dist/src/components/ui/dropdown-menu.d.ts +0 -29
  63. package/dist/src/components/ui/kbd.d.ts +0 -3
  64. package/dist/src/components/ui/resizable.d.ts +0 -7
  65. package/dist/src/components/ui/scroll-area.d.ts +0 -5
  66. package/dist/src/components/ui/skeleton.d.ts +0 -2
  67. package/dist/src/components/ui/sonner.d.ts +0 -3
  68. package/dist/src/components/ui/tabs.d.ts +0 -11
  69. package/dist/src/components/ui/toggle-group.d.ts +0 -10
  70. package/dist/src/components/ui/toggle.d.ts +0 -9
  71. package/dist/src/components/ui/tooltip.d.ts +0 -7
  72. package/dist/src/dev/_components/nav-input.d.ts +0 -35
  73. package/dist/src/dev/app.d.ts +0 -2
  74. package/dist/src/dev/localizations/de.d.ts +0 -2
  75. package/dist/src/dev/main.d.ts +0 -0
  76. package/dist/src/item-core-registry.d.ts +0 -4
  77. package/dist/src/modules/default-item-registry/default-registry-entries.d.ts +0 -2
  78. package/dist/src/modules/default-item-registry/index.d.ts +0 -19
  79. package/dist/src/modules/default-item-registry/item-authoring-state.d.ts +0 -15
  80. package/dist/src/modules/default-item-registry/items/choice/editor/card.d.ts +0 -3
  81. package/dist/src/modules/default-item-registry/items/choice/editor/option-create.d.ts +0 -11
  82. package/dist/src/modules/default-item-registry/items/choice/editor/option-edit-dialog.d.ts +0 -21
  83. package/dist/src/modules/default-item-registry/items/choice/editor/option-editor-fields.d.ts +0 -17
  84. package/dist/src/modules/default-item-registry/items/choice/editor/response-options-list.d.ts +0 -20
  85. package/dist/src/modules/default-item-registry/items/choice/expression-registry.d.ts +0 -3
  86. package/dist/src/modules/default-item-registry/items/choice/preview/item.d.ts +0 -2
  87. package/dist/src/modules/default-item-registry/items/choice/search-adapter.d.ts +0 -2
  88. package/dist/src/modules/default-item-registry/items/form/editor/card.d.ts +0 -3
  89. package/dist/src/modules/default-item-registry/items/form/editor/config-editor.d.ts +0 -12
  90. package/dist/src/modules/default-item-registry/items/form/editor/field-edit-dialog.d.ts +0 -10
  91. package/dist/src/modules/default-item-registry/items/form/editor/field-group-header-dialog.d.ts +0 -12
  92. package/dist/src/modules/default-item-registry/items/form/editor/field-group-layout-dialog.d.ts +0 -9
  93. package/dist/src/modules/default-item-registry/items/form/editor/field-item-preview.d.ts +0 -15
  94. package/dist/src/modules/default-item-registry/items/form/editor/field-key-dialog.d.ts +0 -10
  95. package/dist/src/modules/default-item-registry/items/form/editor/field-sort-dialog.d.ts +0 -11
  96. package/dist/src/modules/default-item-registry/items/form/editor/field-type-shared.d.ts +0 -12
  97. package/dist/src/modules/default-item-registry/items/form/editor/response-field-groups-list.d.ts +0 -16
  98. package/dist/src/modules/default-item-registry/items/form/preview/item.d.ts +0 -2
  99. package/dist/src/modules/default-item-registry/items/form/search-adapter.d.ts +0 -2
  100. package/dist/src/modules/default-item-registry/items/info/editor-card.d.ts +0 -3
  101. package/dist/src/modules/default-item-registry/items/info/preview/item.d.ts +0 -2
  102. package/dist/src/modules/default-item-registry/items/info/search-adapter.d.ts +0 -2
  103. package/dist/src/modules/default-item-registry/items/structure/group/editor-card.d.ts +0 -3
  104. package/dist/src/modules/default-item-registry/items/structure/page-break/editor-card.d.ts +0 -3
  105. package/dist/src/modules/default-item-registry/items/structure/preview-renderers.d.ts +0 -3
  106. package/dist/src/modules/default-item-registry/items/structure/root/editor-card.d.ts +0 -3
  107. package/dist/src/modules/default-item-registry/shared/preview/question-header.d.ts +0 -6
  108. package/dist/src/modules/default-item-registry/shared/preview/utils.d.ts +0 -3
  109. package/dist/src/modules/default-item-registry/shared/question-editor/deferred-localized-rich-text-field.d.ts +0 -26
  110. package/dist/src/modules/default-item-registry/shared/question-editor/header-editor.d.ts +0 -6
  111. package/dist/src/modules/default-item-registry/shared/question-editor/layout.d.ts +0 -8
  112. package/dist/src/modules/default-item-registry/shared/question-editor/rich-text-editors.d.ts +0 -23
  113. package/dist/src/modules/default-item-registry/shared/question-editor/rich-text-policies.d.ts +0 -8
  114. package/dist/src/modules/default-item-registry/shared/question-editor/toolbar.d.ts +0 -10
  115. package/dist/src/modules/survey-editor/ai/create-provider.d.ts +0 -22
  116. package/dist/src/modules/survey-editor/ai/types.d.ts +0 -11
  117. package/dist/src/modules/survey-editor/ai/use-survey-assistant-integration.d.ts +0 -16
  118. package/dist/src/modules/survey-editor/assets/index.d.ts +0 -4
  119. package/dist/src/modules/survey-editor/assets/survey-image-asset-manager.d.ts +0 -4
  120. package/dist/src/modules/survey-editor/assets/use-survey-assets.d.ts +0 -4
  121. package/dist/src/modules/survey-editor/assets/utils.d.ts +0 -5
  122. package/dist/src/modules/survey-editor/assistant/apply.d.ts +0 -24
  123. package/dist/src/modules/survey-editor/assistant/index.d.ts +0 -2
  124. package/dist/src/modules/survey-editor/assistant/snapshot.d.ts +0 -39
  125. package/dist/src/modules/survey-editor/editor-card/add-items/constants.d.ts +0 -5
  126. package/dist/src/modules/survey-editor/editor-card/add-items/hooks/use-add-item-actions.d.ts +0 -24
  127. package/dist/src/modules/survey-editor/editor-card/add-items/hooks/use-add-item-target.d.ts +0 -9
  128. package/dist/src/modules/survey-editor/editor-card/add-items/hooks/use-option-group-navigation.d.ts +0 -20
  129. package/dist/src/modules/survey-editor/editor-card/add-items/types.d.ts +0 -21
  130. package/dist/src/modules/survey-editor/editor-card/add-items/views/back-button.d.ts +0 -5
  131. package/dist/src/modules/survey-editor/editor-card/add-items/views/blank-item-view.d.ts +0 -13
  132. package/dist/src/modules/survey-editor/editor-card/add-items/views/entry-view.d.ts +0 -15
  133. package/dist/src/modules/survey-editor/editor-card/add-items/views/item-type-grid-view.d.ts +0 -30
  134. package/dist/src/modules/survey-editor/editor-card/add-items/views/structure-view.d.ts +0 -16
  135. package/dist/src/modules/survey-editor/editor-card/add-items.d.ts +0 -1
  136. package/dist/src/modules/survey-editor/editor-card/copy-item-dropdown-menu.d.ts +0 -5
  137. package/dist/src/modules/survey-editor/editor-card/delete-item-context-menu.d.ts +0 -5
  138. package/dist/src/modules/survey-editor/editor-card/delete-item-dropdown-menu.d.ts +0 -7
  139. package/dist/src/modules/survey-editor/editor-card/editor-card-tab-trigger.d.ts +0 -15
  140. package/dist/src/modules/survey-editor/editor-card/expression-pseudo-code.d.ts +0 -8
  141. package/dist/src/modules/survey-editor/editor-card/group-items.d.ts +0 -2
  142. package/dist/src/modules/survey-editor/editor-card/hooks/use-armed-shortcut-sequence.d.ts +0 -11
  143. package/dist/src/modules/survey-editor/editor-card/hooks/use-group-list-keyboard.d.ts +0 -30
  144. package/dist/src/modules/survey-editor/editor-card/index.d.ts +0 -2
  145. package/dist/src/modules/survey-editor/editor-card/item-authoring-state-preview.d.ts +0 -16
  146. package/dist/src/modules/survey-editor/editor-card/item-color-menu.d.ts +0 -6
  147. package/dist/src/modules/survey-editor/editor-card/item-color-selector.d.ts +0 -5
  148. package/dist/src/modules/survey-editor/editor-card/item-editor-card-skeleton.d.ts +0 -2
  149. package/dist/src/modules/survey-editor/editor-card/item-editor-card.d.ts +0 -34
  150. package/dist/src/modules/survey-editor/editor-card/item-editor-context.d.ts +0 -23
  151. package/dist/src/modules/survey-editor/editor-card/item-expression-overview.d.ts +0 -33
  152. package/dist/src/modules/survey-editor/editor-card/item-key-editor.d.ts +0 -9
  153. package/dist/src/modules/survey-editor/editor-card/item-label-preview-and-editor.d.ts +0 -10
  154. package/dist/src/modules/survey-editor/editor-card/item-preview.d.ts +0 -8
  155. package/dist/src/modules/survey-editor/editor-card/item-sibling-navigation.d.ts +0 -5
  156. package/dist/src/modules/survey-editor/editor-card/item-type-icon-with-tooltip.d.ts +0 -8
  157. package/dist/src/modules/survey-editor/editor-card/survey-player-item-preview.d.ts +0 -6
  158. package/dist/src/modules/survey-editor/editor-instance-provider.d.ts +0 -9
  159. package/dist/src/modules/survey-editor/hooks/useClipboardValue.d.ts +0 -2
  160. package/dist/src/modules/survey-editor/hooks/useDeleteItem.d.ts +0 -11
  161. package/dist/src/modules/survey-editor/hooks/useEditor.d.ts +0 -12
  162. package/dist/src/modules/survey-editor/hooks/useEditorStateChange.d.ts +0 -18
  163. package/dist/src/modules/survey-editor/hooks/useKeyboardShortcuts.d.ts +0 -7
  164. package/dist/src/modules/survey-editor/index.d.ts +0 -20
  165. package/dist/src/modules/survey-editor/localization/date-fns.d.ts +0 -5
  166. package/dist/src/modules/survey-editor/localization/default-all.d.ts +0 -2
  167. package/dist/src/modules/survey-editor/localization/default-en.d.ts +0 -3
  168. package/dist/src/modules/survey-editor/localization/default-nl.d.ts +0 -2
  169. package/dist/src/modules/survey-editor/localization/index.d.ts +0 -5
  170. package/dist/src/modules/survey-editor/localization/runtime.d.ts +0 -4
  171. package/dist/src/modules/survey-editor/navigation/location.d.ts +0 -6
  172. package/dist/src/modules/survey-editor/navigation/navigation-provider.d.ts +0 -12
  173. package/dist/src/modules/survey-editor/navigation/navigation.d.ts +0 -22
  174. package/dist/src/modules/survey-editor/navigation/types.d.ts +0 -23
  175. package/dist/src/modules/survey-editor/primitives/input-with-ai-popover.d.ts +0 -35
  176. package/dist/src/modules/survey-editor/registry/authoring-state.d.ts +0 -17
  177. package/dist/src/modules/survey-editor/registry/index.d.ts +0 -8
  178. package/dist/src/modules/survey-editor/registry/registry-mappers.d.ts +0 -25
  179. package/dist/src/modules/survey-editor/registry/search-adapter.d.ts +0 -19
  180. package/dist/src/modules/survey-editor/registry/types.d.ts +0 -218
  181. package/dist/src/modules/survey-editor/routes/editor/_components/assistant-authoring-lock.d.ts +0 -7
  182. package/dist/src/modules/survey-editor/routes/editor/_components/editor-assistant-slot-context.d.ts +0 -6
  183. package/dist/src/modules/survey-editor/routes/editor/_components/editor-assistant-slot.d.ts +0 -8
  184. package/dist/src/modules/survey-editor/routes/editor/_components/editor-mode-switch.d.ts +0 -7
  185. package/dist/src/modules/survey-editor/routes/editor/_components/editor-workspace.d.ts +0 -30
  186. package/dist/src/modules/survey-editor/routes/editor/_components/footer.d.ts +0 -2
  187. package/dist/src/modules/survey-editor/routes/editor/_components/history-stack.d.ts +0 -2
  188. package/dist/src/modules/survey-editor/routes/editor/_components/main.d.ts +0 -7
  189. package/dist/src/modules/survey-editor/routes/editor/_components/workspace-presets.d.ts +0 -75
  190. package/dist/src/modules/survey-editor/routes/editor/asset-manager/index.d.ts +0 -2
  191. package/dist/src/modules/survey-editor/routes/editor/index.d.ts +0 -7
  192. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/item-editor-toolbar/breadcrumbs-nav.d.ts +0 -2
  193. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/item-editor-toolbar/item-editor-toolbar.d.ts +0 -6
  194. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/item-editor-toolbar/language-picker.d.ts +0 -2
  195. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/item-editor-toolbar/search-trigger.d.ts +0 -3
  196. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/item-editor-toolbar/survey-search.d.ts +0 -7
  197. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/survey-outline.d.ts +0 -3
  198. package/dist/src/modules/survey-editor/routes/editor/item-editor/_components/survey-workspace.d.ts +0 -12
  199. package/dist/src/modules/survey-editor/routes/editor/item-editor/index.d.ts +0 -6
  200. package/dist/src/modules/survey-editor/routes/editor/preview-mode/index.d.ts +0 -7
  201. package/dist/src/modules/survey-editor/routes/editor/preview-mode/page-break-divider.d.ts +0 -6
  202. package/dist/src/modules/survey-editor/routes/editor/preview-mode/preview-controls.d.ts +0 -15
  203. package/dist/src/modules/survey-editor/routes/editor/preview-mode/preview-tree.d.ts +0 -26
  204. package/dist/src/modules/survey-editor/routes/editor/preview-mode/survey-preview-canvas.d.ts +0 -16
  205. package/dist/src/modules/survey-editor/routes/editor/preview-mode/survey-preview-item.d.ts +0 -13
  206. package/dist/src/modules/survey-editor/routes/editor/preview-mode/use-preview-preferences.d.ts +0 -14
  207. package/dist/src/modules/survey-editor/routes/editor/translation-mode/index.d.ts +0 -2
  208. package/dist/src/modules/survey-editor/session-file.d.ts +0 -13
  209. package/dist/src/modules/survey-editor/store/editor-store-context.d.ts +0 -10
  210. package/dist/src/modules/survey-editor/store/editor-store-provider.d.ts +0 -7
  211. package/dist/src/modules/survey-editor/store/editor-store.d.ts +0 -109
  212. package/dist/src/modules/survey-editor/store/use-editor-store.d.ts +0 -4
  213. package/dist/src/modules/survey-editor/store/useItemNavigation.d.ts +0 -7
  214. package/dist/src/modules/survey-editor/survey-editor-config.d.ts +0 -38
  215. package/dist/src/modules/survey-editor/survey-editor.d.ts +0 -40
  216. package/dist/src/modules/survey-editor/utils/item-type-infos.d.ts +0 -23
  217. package/dist/src/modules/survey-editor/workspace.d.ts +0 -17
  218. package/dist/src/modules/survey-player/survey-item/survey-item-types/question-wrapper.d.ts +0 -5
  219. package/dist/survey-editor-animations.css +0 -87
  220. package/dist/survey-editor-animations.css.d.ts +0 -2
  221. package/dist/survey-editor-defaults.css +0 -15
  222. package/dist/survey-editor-defaults.css.d.ts +0 -2
  223. package/dist/survey-ui.cjs.js +0 -199
  224. package/dist/survey-ui.cjs.js.map +0 -1
  225. package/dist/survey-ui.es.js +0 -57954
  226. package/dist/survey-ui.es.js.map +0 -1
  227. package/dist/vite.svg +0 -1
  228. /package/dist/src/{components/rich-text/rich-text-link-utils.d.ts → lib/rich-text-link-url.d.ts} +0 -0
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@case-framework/survey-ui",
3
- "version": "0.6.2",
4
- "private": false,
3
+ "version": "0.8.1",
4
+ "description": "Participant-facing React survey player for CASE surveys.",
5
+ "license": "ISC",
5
6
  "repository": {
6
7
  "type": "git",
7
8
  "url": "https://github.com/case-framework/case-survey-toolkit"
@@ -9,97 +10,58 @@
9
10
  "files": [
10
11
  "dist"
11
12
  ],
13
+ "type": "module",
12
14
  "sideEffects": [
13
15
  "**/*.css"
14
16
  ],
15
- "main": "./dist/survey-ui.cjs.js",
16
- "module": "./dist/survey-ui.es.js",
17
+ "main": "./dist/survey-ui.cjs",
18
+ "module": "./dist/survey-ui.js",
17
19
  "types": "./dist/src/index.d.ts",
18
20
  "exports": {
19
21
  ".": {
20
22
  "types": "./dist/src/index.d.ts",
21
- "import": "./dist/survey-ui.es.js",
22
- "require": "./dist/survey-ui.cjs.js"
23
- },
24
- "./item-core-registry": {
25
- "types": "./dist/src/item-core-registry.d.ts",
26
- "import": "./dist/item-core-registry.es.js",
27
- "require": "./dist/item-core-registry.cjs.js"
23
+ "import": "./dist/survey-ui.js",
24
+ "require": "./dist/survey-ui.cjs"
28
25
  },
29
26
  "./css": {
30
27
  "types": "./dist/survey-ui.css.d.ts",
31
28
  "default": "./dist/survey-ui.css"
32
29
  },
33
- "./editor-defaults.css": {
34
- "types": "./dist/survey-editor-defaults.css.d.ts",
35
- "default": "./dist/survey-editor-defaults.css"
36
- },
37
- "./editor-animations.css": {
38
- "types": "./dist/survey-editor-animations.css.d.ts",
39
- "default": "./dist/survey-editor-animations.css"
40
- },
41
30
  "./package.json": "./package.json"
42
31
  },
43
32
  "dependencies": {
44
- "@dnd-kit/dom": "^0.4.0",
45
- "@dnd-kit/react": "^0.4.0",
46
- "@lexical/extension": "^0.48.0",
47
- "@lexical/link": "^0.48.0",
48
- "@lexical/list": "^0.48.0",
49
- "@lexical/react": "^0.48.0",
50
- "@lexical/selection": "^0.48.0",
51
- "@lexical/utils": "^0.48.0",
52
- "class-variance-authority": "^0.7.1",
53
- "clsx": "^2.1.1",
54
- "cmdk": "^1.1.1",
55
- "date-fns": "^4.1.0",
56
- "lexical": "^0.48.0",
57
- "lucide-react": "^1.11.0",
58
- "next-themes": "^0.4.6",
59
- "radix-ui": "latest",
60
- "react-day-picker": "^9.14.0",
61
- "react-dropzone": "^15.0.0",
62
- "react-resizable-panels": "^4.12.2",
63
- "sonner": "^2.0.7",
64
- "tailwind-merge": "^3.5.0",
65
- "zustand": "^5.0.12",
66
- "@case-framework/survey-assistant": "0.1.0",
67
- "@case-framework/ui-localization": "0.2.0"
33
+ "@case-framework/ui-localization": "0.2.1"
68
34
  },
69
35
  "devDependencies": {
70
- "@eslint/js": "^9.39.4",
71
- "@jest/globals": "30.3.0",
72
36
  "@tailwindcss/vite": "^4.3.2",
73
- "@types/jest": "^30.0.0",
74
37
  "@types/node": "^25.6.0",
75
38
  "@types/react": "^19.2.14",
76
39
  "@types/react-dom": "^19.2.3",
77
40
  "@vitejs/plugin-react": "^6.0.1",
78
- "eslint": "^9.39.4",
79
- "eslint-plugin-react-hooks": "^7.1.1",
80
- "eslint-plugin-react-refresh": "^0.5.2",
81
- "globals": "^17.5.0",
82
- "jest": "^30.3.0",
83
- "shadcn": "^4.5.0",
41
+ "class-variance-authority": "^0.7.1",
42
+ "clsx": "^2.1.1",
43
+ "date-fns": "^4.1.0",
44
+ "lucide-react": "^1.11.0",
45
+ "radix-ui": "^1.6.1",
46
+ "react": "~19.2.5",
47
+ "react-day-picker": "^9.14.0",
48
+ "react-dom": "~19.2.5",
49
+ "tailwind-merge": "^3.5.0",
84
50
  "tailwindcss": "^4.3.2",
85
- "ts-jest": "^29.4.9",
86
- "tw-animate-css": "^1.4.0",
87
51
  "typescript": "~6.0.3",
88
- "typescript-eslint": "^8.59.1",
89
52
  "vite": "^8.0.10",
90
53
  "vite-plugin-dts": "^4.5.4",
91
- "@case-framework/survey-core": "0.4.2"
54
+ "@case-framework/survey-core": "0.6.0"
92
55
  },
93
56
  "peerDependencies": {
94
- "react": "^19.2.3",
95
- "react-dom": "^19.2.3"
57
+ "react": ">=19.2.0",
58
+ "react-dom": ">=19.2.0",
59
+ "@case-framework/survey-core": "0.6.0"
96
60
  },
97
61
  "scripts": {
98
- "dev": "vite",
99
62
  "build": "vite build",
100
- "lint": "eslint .",
101
- "test": "pnpm typecheck:tests && jest --config jest.config.cjs --runInBand",
102
- "typecheck:tests": "tsc --noEmit -p tsconfig.test.json",
103
- "preview": "vite preview"
63
+ "typecheck": "tsc --noEmit -p tsconfig.json",
64
+ "check:bundle": "node scripts/check-player-bundle.mjs",
65
+ "check": "pnpm typecheck && pnpm build && pnpm check:bundle"
104
66
  }
105
67
  }
@@ -1,10 +0,0 @@
1
- function e(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function t(t){let n=e(t);return()=>{n=n+1831565813>>>0;let e=n;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}function n(e,t=Math.random){let n=[...e];for(let e=n.length-1;e>0;e--){let r=Math.floor(t()*(e+1));[n[e],n[r]]=[n[r],n[e]]}return n}function r(e,t=Math.random){return n(Array.from({length:e},(e,t)=>t),t)}function i(e){return typeof structuredClone<`u`?structuredClone(e):JSON.parse(JSON.stringify(e))}var a=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`;function o(){let e=Date.now(),t=``,n=e;for(;n>0;)t=a.charAt(n%62)+t,n=Math.floor(n/62);let r=``;for(let e=0;e<10;e++)r+=a.charAt(Math.floor(Math.random()*62));return r+t}var s=`23456789ABCDEFGHJKLMNPQRSTUVWXYZ`;function c(e=4){let t=``;for(let n=0;n<e;n++)t+=s.charAt(Math.floor(Math.random()*32));return t}var l=`...`,ee=function(e){return e.get=`get`,e.isDefined=`isDefined`,e}({}),u=class e{_itemId;_name;_slotId;constructor(e){let t=e.split(l);if(t.length!==3)throw Error(`Invalid value reference: `+e);this._itemId=t[0],this._name=t[1],this._slotId=t[2]}get itemId(){return this._itemId}get name(){return this._name}get slotId(){return this._slotId}set itemId(e){this._itemId=e}toString(){return`${this._itemId}${l}${this._name}${this._slotId?l+this._slotId:``}`}static fromParts(t,n,r){return new e(`${t}${l}${n}${l}${r}`)}},d={Const:`const`,ResponseVariable:`responseVariable`,ContextVariable:`contextVariable`,Function:`function`},f={Locale:`locale`,ParticipantFlag:`participantFlag`,CustomValue:`customValue`,CustomExpression:`customExpression`},p=class e{type;editorConfig;constructor(e,t){this.type=e,this.editorConfig=t}static deserialize(e){if(e)switch(e.type){case d.Const:return te.deserialize(e);case d.ResponseVariable:return ne.deserialize(e);case d.ContextVariable:return re.deserialize(e);case d.Function:return ae.deserialize(e)}}clone(){return e.deserialize(this.serialize())??(()=>{throw Error(`Failed to clone expression`)})()}},te=class e extends p{value;constructor(e,t){super(d.Const,t),this.value=e,this.type=d.Const}static deserialize(t){if(t.type!==d.Const)throw Error(`Invalid expression type: `+t.type);return new e(t.value,t.editorConfig)}get responseVariableRefs(){return[]}serialize(){return{type:this.type,value:this.value,editorConfig:this.editorConfig}}updateItemKeyReferences(e,t){return!1}},ne=class e extends p{variableRef;constructor(e,t){super(d.ResponseVariable,t),this.variableRef=e,this.type=d.ResponseVariable}static deserialize(t){if(t.type!==d.ResponseVariable)throw Error(`Invalid expression type: `+t.type);return new e(t.variableRef,t.editorConfig)}get responseVariableRefs(){return[new u(this.variableRef)]}get responseVariableRef(){return new u(this.variableRef)}serialize(){return{type:this.type,variableRef:this.variableRef,editorConfig:this.editorConfig}}},re=class e extends p{contextType;key;arguments;asType;constructor(e,t,n,r,i){super(d.ContextVariable,i),this.type=d.ContextVariable,this.contextType=e,this.key=t,this.arguments=n,this.asType=r}static deserialize(t){if(t.type!==d.ContextVariable)throw Error(`Invalid expression type: `+t.type);return new e(t.contextType,p.deserialize(t.key),t.arguments?.map(e=>p.deserialize(e)),t.asType,t.editorConfig)}get responseVariableRefs(){return this.arguments?.flatMap(e=>e?.responseVariableRefs).filter(e=>e!==void 0)??[]}serialize(){return{type:this.type,contextType:this.contextType,key:this.key?.serialize(),arguments:this.arguments?.map(e=>e?.serialize()),asType:this.asType,editorConfig:this.editorConfig}}},ie=function(e){return e.and=`and`,e.or=`or`,e.not=`not`,e.list_contains=`list_contains`,e.eq=`eq`,e.gt=`gt`,e.gte=`gte`,e.lt=`lt`,e.lte=`lte`,e.in_range=`in_range`,e.sum=`sum`,e.min=`min`,e.max=`max`,e.str_eq=`str_eq`,e.date_eq=`date_eq`,e}({}),ae=class e extends p{functionName;arguments;constructor(e,t,n){super(d.Function),this.type=d.Function,this.functionName=e,this.arguments=t,this.editorConfig=n}static deserialize(t){if(t.type!==d.Function)throw Error(`Invalid expression type: `+t.type);let n=t.functionName;if(!Object.values(ie).includes(n))throw Error(`Invalid function name: `+n);let r=new e(n,t.arguments.map(e=>p.deserialize(e)));return r.editorConfig=t.editorConfig,r}get responseVariableRefs(){let e=this.arguments.flatMap(e=>e?.responseVariableRefs).filter(e=>e!==void 0).map(e=>e.toString());return[...new Set(e)].map(e=>new u(e))}serialize(){return{type:this.type,functionName:this.functionName,arguments:this.arguments.map(e=>e?.serialize()),editorConfig:this.editorConfig}}},oe=e=>{let t={type:e.type,returnType:e.returnType,expression:e.expression?.serialize()};return e.type===`date2string`&&(t.dateFormat=e.dateFormat),t},se=e=>{let t={};for(let[n,r]of e.entries())t[n]=oe(r);return t},ce=e=>({type:e.type,expression:e.expression?p.deserialize(e.expression):void 0,returnType:e.returnType,dateFormat:e.dateFormat}),le=e=>new Map(Object.entries(e).map(([e,t])=>[e,ce(t)])),m={string:`string`,duration:`duration`,reference:`reference`,number:`number`,boolean:`boolean`,date:`date`,stringArray:`string[]`,durationArray:`duration[]`,referenceArray:`reference[]`,numberArray:`number[]`,dateArray:`date[]`},ue={seconds:`seconds`,minutes:`minutes`,hours:`hours`,days:`days`,weeks:`weeks`,months:`months`,years:`years`},de={int:`int`,float:`float`};function fe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function h(e){return typeof e==`number`&&Number.isFinite(e)}function pe(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function me(e){return Array.isArray(e)&&e.every(e=>h(e))}function g(e){return e===void 0||e===de.int||e===de.float}function he(e){return typeof e==`string`&&Object.values(ue).includes(e)}function ge(e){if(!fe(e)||typeof e.type!=`string`)return!1;switch(e.type){case m.string:case m.reference:return typeof e.value==`string`;case m.number:return h(e.value)&&g(e.precision);case m.boolean:return typeof e.value==`boolean`;case m.date:return h(e.value);case m.duration:return h(e.value)&&he(e.unit)&&g(e.precision);case m.stringArray:case m.referenceArray:return pe(e.value);case m.numberArray:case m.dateArray:return me(e.value)&&(e.type!==m.numberArray||g(e.precision));case m.durationArray:return me(e.value)&&he(e.unit)&&g(e.precision);default:return!1}}function _e(e,t){if(!ge(e))throw Error(`Invalid response value at '${t}'`)}var ve=e=>({root:e.root?p.deserialize(e.root):void 0,components:e.components?Object.fromEntries(Object.entries(e.components).map(([e,t])=>[e,p.deserialize(t)])):void 0}),ye=e=>({components:e.components?Object.fromEntries(Object.entries(e.components).map(([e,t])=>[e,p.deserialize(t)])):void 0}),be={ifEmpty:`ifEmpty`},_={itemResponse:`itemResponse`,field:`field`,embeddedField:`embeddedField`};function xe(e){switch(e.source.type){case`static`:return{id:e.id,target:e.target,when:p.deserialize(e.when),apply:e.apply,source:{type:`static`,value:e.source.value}};case`expression`:return{id:e.id,target:e.target,when:p.deserialize(e.when),apply:e.apply,source:{type:`expression`,expression:p.deserialize(e.source.expression)??(()=>{throw Error(`Prefill '${e.id}' is missing a valid expression source`)})()}};case`templateValue`:return{id:e.id,target:e.target,when:p.deserialize(e.when),apply:e.apply,source:{type:`templateValue`,key:e.source.key}};case`previousResponse`:return{id:e.id,target:e.target,when:p.deserialize(e.when),apply:e.apply,source:{type:`previousResponse`,ref:e.source.ref,ifUnsupported:e.source.ifUnsupported}};default:throw Error(`Unsupported prefill source type: ${e.source.type}`)}}function Se(e,t){if(e.type!==t.type)return!1;switch(e.type){case _.itemResponse:return!0;case _.field:return e.fieldId===t.fieldId;case _.embeddedField:return e.optionId===t.optionId&&e.fieldId===t.fieldId;default:return!1}}var v=class{id;key;config;_rawItem;displayConditions;disabledConditions;validations;prefills;constructor(e){this._rawItem=e,this.updateExpressions(),this.id=this._rawItem.id,this.key=this._rawItem.key,this.config=this.parseConfig(this._rawItem.config)}getAdditionalResponseValueSlots(){return{}}getAvailableResponseValueSlots(e){let t={};for(let e of this.getResponseSlotDefinitions())t[`${this.id}...get...${e.slotId}`]=e.valueType,t[`${this.id}...isDefined...${e.slotId}`]=m.boolean;return Object.assign(t,this.getAdditionalResponseValueSlots()),e?Object.fromEntries(Object.entries(t).filter(([,t])=>t===e)):t}get rawItem(){return this._rawItem}get metadata(){return this._rawItem.metadata??{}}set metadata(e){this.updateRawItem({...this._rawItem,metadata:e})}get editorMetadata(){return this._rawItem.editorMetadata??{}}setCreatedAt(e){this.updateRawItem({...this._rawItem,editorMetadata:{...this._rawItem.editorMetadata,createdAt:e}})}setModifiedAt(e){this.updateRawItem({...this._rawItem,editorMetadata:{...this._rawItem.editorMetadata,createdAt:this._rawItem.editorMetadata?.createdAt??e,updatedAt:e}})}updateRawItem(e){if(e.id!==this.id)throw Error(`Cannot update raw item with a different id`);this._rawItem=e,this.updateExpressions(),this.key=e.key,this.config=this.parseConfig(e.config)}updateExpressions(){this.displayConditions=this._rawItem.displayConditions?ve(this._rawItem.displayConditions):void 0,this.disabledConditions=this._rawItem.disabledConditions?ye(this._rawItem.disabledConditions):void 0,this.validations=this._rawItem.validations?Object.fromEntries(Object.entries(this._rawItem.validations).map(([e,t])=>[e,p.deserialize(t)])):void 0,this.prefills=this._rawItem.prefills?.map(e=>xe(e))}getReferenceUsages(){let e=[];if(this.displayConditions){for(let t of this.displayConditions.root?.responseVariableRefs||[])e.push({itemId:this.id,usageType:`displayConditions`,valueReference:t});for(let[t,n]of Object.entries(this.displayConditions.components||{}))for(let r of n?.responseVariableRefs||[])e.push({itemId:this.id,fullComponentKey:t,usageType:`displayConditions`,valueReference:r})}if(this.disabledConditions)for(let[t,n]of Object.entries(this.disabledConditions.components||{}))for(let r of n?.responseVariableRefs||[])e.push({itemId:this.id,fullComponentKey:t,usageType:`disabledConditions`,valueReference:r});if(this.validations)for(let[t,n]of Object.entries(this.validations))for(let r of n?.responseVariableRefs||[])e.push({itemId:this.id,fullComponentKey:t,usageType:`validations`,valueReference:r});if(this.prefills)for(let t of this.prefills){for(let n of t.when?.responseVariableRefs||[])e.push({itemId:this.id,fullComponentKey:t.id,usageType:`prefills`,valueReference:n});if(t.source.type===`expression`)for(let n of t.source.expression.responseVariableRefs||[])e.push({itemId:this.id,fullComponentKey:t.id,usageType:`prefills`,valueReference:n})}return e}resolvePrefillTarget(e){let t=this.getResponseSlotDefinitions(),n=t.find(t=>t.prefillTarget!==void 0&&Se(t.prefillTarget,e));if(n)return n;if(e.type===_.itemResponse&&t.length===1)return t[0]}normalizePrefillValue(e,t,n){return n.type===t.valueType?n:void 0}},Ce=function(e){return e.Group=`group`,e.PageBreak=`page-break`,e}({}),we=class{_itemKey;_path;_keySeparator;constructor(e,t,n=`.`){this._itemKey=e,this._path=t??[],this._keySeparator=n}get itemKey(){return this._itemKey}get path(){return this._path}get parentFullKey(){return this._path.join(this._keySeparator)}get fullKey(){return[...this._path,this._itemKey].join(this._keySeparator)}get isRoot(){return this._path.length===0}get keySeparator(){return this._keySeparator}set keySeparator(e){this._keySeparator=e}};function Te(e,t,n){let r=[...e];return[r[t],r[n]]=[r[n],r[t]],r}function Ee(e,t,n){let r=[...e],[i]=r.splice(t,1);return r.splice(n,0,i),r}var y=class extends v{type=`group`;parseConfig(e){let t=e??{};return{items:t.items,shuffleItems:t.shuffleItems,isRoot:t.isRoot}}serializeConfig(){return this.config}isInteractive(){return!1}getResponseSlotDefinitions(){return[]}isRoot(){return this.config.isRoot??!1}get items(){return this.config.items??[]}addChild(e,t){let n=this.config.items??=[],r=t===void 0?n.length:Math.min(t,n.length);n.splice(r,0,e),this.updateRawItem({...this.rawItem,config:{...this.config}})}removeChild(e){let t=this.config.items??=[],n=t.indexOf(e);n!==-1&&(t.splice(n,1),this.updateRawItem({...this.rawItem,config:{...this.config}}))}hasChild(e){return this.items.includes(e)}get shuffleItems(){return this.config.shuffleItems??!1}set shuffleItems(e){this.config.shuffleItems=e,this.updateRawItem({...this.rawItem,config:{...this.config}})}getChildrenIds(){return[...this.items]}swapItemsByIndex(e,t){let n=this.items;if(e<0||e>=n.length||t<0||t>=n.length)throw Error(`Index out of bounds. Valid range is 0-${n.length-1}`);e!==t&&(this.config.items=Te(n,e,t),this.updateRawItem({...this.rawItem,config:{...this.config}}))}swapItemsById(e,t){let n=this.items,r=n.indexOf(e),i=n.indexOf(t);if(r===-1)throw Error(`Item '${e}' not found in group '${this.key}'`);if(i===-1)throw Error(`Item '${t}' not found in group '${this.key}'`);this.swapItemsByIndex(r,i)}moveItemToIndex(e,t){let n=this.items,r=n.indexOf(e);if(r===-1)throw Error(`Item '${e}' not found in group '${this.key}'`);if(t<0||t>=n.length)throw Error(`Index out of bounds. Valid range is 0-${n.length-1}`);r!==t&&(this.config.items=Ee(n,r,t),this.updateRawItem({...this.rawItem,config:{...this.config}}))}},De=class extends v{type=`page-break`;parseConfig(e){return{}}serializeConfig(){}isInteractive(){return!1}getResponseSlotDefinitions(){return[]}},Oe={group:y,"page-break":De},ke=e=>e in Oe;function Ae(e,t){if(ke(e.itemType)){let t=Oe[e.itemType];return new t(e)}if(t&&e.itemType in t){let n=t[e.itemType];return new n(e)}throw Error(`Unknown item type: ${e.itemType}`)}function je(e){return{...Oe,...e}}var Me=`https://github.com/case-framework/case-survey-toolkit/packages/survey-core/schemas/survey-schema.json`,b=e=>{if(e.trim()===``)throw Error(`Locale cannot be empty`)},Ne=class e{_translations;constructor(){this._translations={}}setContent(e,t,n){if(b(e),!this._translations?.[e]){if(!n)return;this._translations[e]={}}n?this._translations[e][t]=n:delete this._translations[e][t]}setAllForLocale(e,t){if(b(e),!this._translations?.[e]){if(!t)return;this._translations[e]={}}this._translations[e]=t||{}}get locales(){return Object.keys(this._translations||{})}getAllForLocale(e){return this._translations?.[e]}getContent(e,t,n){let r=this._translations?.[e]?.[t];if(r)return r;if(n)return this._translations?.[n]?.[t]}clone(){let t=new e;for(let e of this.locales){let n=this.getAllForLocale(e);n&&t.setAllForLocale(e,i(n))}return t}removeContentKey(e){for(let t of this.locales)delete this._translations?.[t]?.[e]}removeContentKeysWithPrefix(e){for(let t of this.locales){let n=this._translations?.[t];if(n)for(let t of Object.keys(n))(t===e||t.startsWith(e+`.`))&&delete n[t]}}compact(){for(let e of this.locales){let t=this._translations?.[e];t&&Object.keys(t).length===0&&delete this._translations?.[e]}return this.locales.length>0?this:void 0}},x=class{_translations;constructor(e){this._translations=e||{}}serialize(){if(this.locales.length!==0)return this._translations}get locales(){return Object.keys(this._translations)}removeLocale(e){b(e),delete this._translations[e]}renameLocale(e,t){b(e),b(t),this._translations[e]&&(this._translations[t]=this._translations[e],delete this._translations[e])}cloneLocaleAs(e,t){b(e),b(t),this._translations[e]&&(this._translations[t]=i(this._translations[e]))}get surveyCardContent(){let e={};for(let t of this.locales){let n=this._translations?.[t]?.surveyCardContent;n&&(e[t]=n)}return e}get navigationContent(){let e={};for(let t of this.locales){let n=this._translations?.[t]?.navigationContent;n&&(e[t]=n)}return e}get validationMessages(){let e={};for(let t of this.locales){let n=this._translations?.[t]?.validationMessages;n&&(e[t]=n)}return e}setSurveyCardContent(e,t){if(b(e),!this._translations[e]){if(!t)return;this._translations[e]={}}this._translations[e].surveyCardContent=t}setNavigationContent(e,t){if(b(e),!this._translations[e]){if(!t)return;this._translations[e]={}}this._translations[e].navigationContent=t}setValidationMessages(e,t){if(b(e),!this._translations[e]){if(!t)return;this._translations[e]={}}this._translations[e].validationMessages=t}getItemTranslations(e){let t=new Ne;for(let n of this.locales){let r=this._translations?.[n].itemTranslations?.[e];t.setAllForLocale(n,r)}return t.locales.length>0?t:void 0}setItemTranslations(e,t){let n=t?.clone().compact();if(n?.locales.forEach(e=>b(e)),n){let t=n.locales;for(let e of t)this.locales.includes(e)||(this._translations[e]={});for(let r of this.locales)t.includes(r)?(this._translations[r]||(this._translations[r]={}),this._translations[r].itemTranslations||(this._translations[r].itemTranslations={}),this._translations[r].itemTranslations[e]=n.getAllForLocale(r)):delete this._translations[r].itemTranslations?.[e]}else for(let t of this.locales)this._translations[t].itemTranslations?.[e]&&delete this._translations[t].itemTranslations?.[e]}onComponentKeyChanged(e,t,n){for(let r of this.locales){let i=this._translations?.[r].itemTranslations?.[e];if(i)for(let e of Object.keys(i))(e.startsWith(t+`.`)||e===t)&&(i[e.replace(t,n)]={...i[e]},delete i[e])}}onComponentDeleted(e,t){for(let n of this.locales){let r=this._translations?.[n].itemTranslations?.[e];if(r)for(let e of Object.keys(r))(e.startsWith(t+`.`)||e===t)&&delete r[e]}}onItemDeleted(e){for(let t of this.locales)delete this._translations[t].itemTranslations?.[e]}},Pe=function(e){return e.richText=`richText`,e.plain=`plain`,e.md=`md`,e}({});function Fe(e){switch(e.type){case`paragraph`:return e.children.length>0;case`heading`:return e.children.length>0;case`bulletList`:return e.items.some(e=>e.children.some(e=>e.children.length>0));case`image`:return!0;case`infoBox`:return!0;case`separator`:return!0;case`blockExtension`:return!0}}function Ie(e){return e.doc.blocks.some(e=>Fe(e))}function Le(e=``){return{type:`richText`,version:1,doc:{type:`doc`,blocks:[{type:`paragraph`,children:e.length>0?e.split(`
2
- `).flatMap((e,t)=>{let n=[];return t>0&&n.push({type:`lineBreak`}),e.length>0&&n.push({type:`text`,text:e}),n}):[]}]}}}function Re(e){return e.map(e=>{switch(e.type){case`text`:return e.text;case`template`:return`{${e.key}}`;case`lineBreak`:return`
3
- `}}).join(``)}function S(e){return e.map(e=>{switch(e.type){case`text`:return e.text;case`template`:return`{${e.key}}`;case`link`:return Re(e.children);case`lineBreak`:return`
4
- `;case`inlineExtension`:return``}}).join(``)}function ze(e){return e.map(e=>S(e.children)).join(`
5
- `)}function Be(e){switch(e.type){case`paragraph`:return S(e.children);case`heading`:return S(e.children);case`bulletList`:return e.items.map(e=>ze(e.children)).join(`
6
- `);case`image`:{let t=e.caption?ze(e.caption):``;return[e.alt??``,t].filter(Boolean).join(`
7
- `)}case`infoBox`:return[e.title?S(e.title):``,ze(e.children)].filter(Boolean).join(`
8
- `);case`separator`:return``;case`blockExtension`:return``}}function Ve(e){return e.doc.blocks.map(e=>Be(e)).filter(e=>e.length>0).join(`
9
- `).trim()}function He(e){return e?e.type===`richText`?Ve(e):e.content??``:``}function Ue(e){return e?e.type===`richText`?!Ie(e):e.content.trim().length===0:!0}function We(e){if(!e||e.type!==`richText`)return[];let t=[];return e.doc.blocks.forEach((e,n)=>{e.type===`image`&&e.source.type===`asset`&&t.push({assetId:e.source.assetId,blockIndex:n})}),t}var Ge=class e{maxItemsPerPage;metadata;surveyItems=new Map;_templateValues=new Map;_assets=new Map;_translations;constructor(e){this.pluginRegistry=e,this._translations=new x}getPluginRegistry(){return this.pluginRegistry}createItemFromRaw(e){return Ae(e,this.pluginRegistry)}static createBlankSurvey(t,n){let r=n??`survey`,i={$schema:Me,surveyItems:[{id:o(),key:r,itemType:`group`,config:{isRoot:!0,items:[],shuffleItems:!1}}]};return e.fromJson(i,t)}static fromJson(t,n){let r=new e(n),i=t;if(i.$schema!==`https://github.com/case-framework/case-survey-toolkit/packages/survey-core/schemas/survey-schema.json`)throw Error(`Unsupported survey schema: ${i.$schema}`);if(r.surveyItems=new Map,!i.surveyItems||i.surveyItems.length===0)throw Error(`surveyItems is required`);return i.surveyItems.forEach(e=>{let t=Ae(e,n);r.surveyItems.set(t.id,t)}),i.templateValues&&(r._templateValues=le(i.templateValues)),i.assets&&(r._assets=new Map(Object.entries(i.assets))),r._translations=new x(i.translations),i.maxItemsPerPage&&(r.maxItemsPerPage=i.maxItemsPerPage),i.metadata&&(r.metadata=i.metadata),r}serialize(){let e={$schema:Me,surveyItems:Array.from(this.surveyItems.values()).map(e=>e.rawItem)};return e.translations=this._translations?.serialize(),this._templateValues&&(e.templateValues=se(this._templateValues)),this._assets&&this._assets.size>0&&(e.assets=Object.fromEntries(this._assets.entries())),this.maxItemsPerPage&&(e.maxItemsPerPage=this.maxItemsPerPage),this.metadata&&(e.metadata=this.metadata),e}get surveyKey(){if(this.rootItem)return this.rootItem.key}get locales(){return this._translations?.locales||[]}get rootItem(){return Array.from(this.surveyItems.values()).find(e=>e instanceof y&&e.isRoot)}get keyIndex(){let e=[];for(let t of this.surveyItems.values()){let n=this.getItemPath(t.id);e.push({itemId:t.id,key:t.key,keyPath:n.map(e=>this.surveyItems.get(e)?.key??``),path:n})}return e}getItemPath(e){let t=this.surveyItems.get(e);if(!t)throw Error(`Item ${e} not found`);if(t instanceof y&&t.isRoot())return[];let n=this.getParentItem(e);if(!n)throw Error(`Parent item for ${e} not found`);return[...this.getItemPath(n.id),n.id]}getItemKey(e){let t=this.surveyItems.get(e);if(!t)return;let n=this.getItemPath(e).map(e=>this.surveyItems.get(e)?.key??``);return new we(t.key,n)}getParentItem(e){let t=this.surveyItems.get(e);if(!t)throw Error(`Item ${e} not found`);if(t instanceof y&&t.isRoot())return;let n=Array.from(this.surveyItems.values()).find(t=>t instanceof y&&t.config.items?.includes(e));if(n)return n}getChildrenItems(e){let t=this.surveyItems.get(e);return!t||!(t instanceof y)?[]:t.config.items?.map(e=>this.surveyItems.get(e))?.filter(e=>e!==void 0)||[]}getSiblings(e){return this.surveyItems.get(e)&&this.getParentItem(e)?.items?.map(e=>this.surveyItems.get(e))?.filter(e=>e!==void 0)||[]}get translations(){return this._translations||=new x,this._translations}getItemTranslations(e){if(!this.surveyItems.get(e))throw Error(`Item ${e} not found`);return this._translations?.getItemTranslations(e)}getTemplateValue(e){return this._templateValues?.get(e)}setTemplateValue(e,t){this._templateValues||=new Map,this._templateValues?.set(e,t)}deleteTemplateValue(e){this._templateValues?.delete(e)}getTemplateValueKeys(){return Array.from(this._templateValues?.keys()||[])}getAsset(e){let t=this._assets?.get(e);return t?i(t):void 0}setAsset(e,t){this._assets||=new Map,this._assets.set(e,i(t))}deleteAsset(e){this._assets?.delete(e)}hasAsset(e){return this._assets?.has(e)??!1}getAssetIds(){return Array.from(this._assets?.keys()||[])}getAssets(){return new Map(Array.from(this._assets?.entries()||[]).map(([e,t])=>[e,i(t)]))}getAssetUsages(e){let t=[],n=(n,r,i,a,o)=>{for(let s of We(n))e&&s.assetId!==e||t.push({assetId:s.assetId,itemId:o,locale:a,contentKey:i,usageScope:r,blockIndex:s.blockIndex})},r=this._translations?.serialize(),i=this.rootItem?.id;if(!r)return t;for(let[e,t]of Object.entries(r)){for(let[r,a]of Object.entries(t.surveyCardContent||{}))n(a,`surveyCard`,r,e,i);for(let[r,a]of Object.entries(t.navigationContent||{}))n(a,`navigation`,r,e,i);for(let[r,a]of Object.entries(t.validationMessages||{}))n(a,`validationMessages`,r,e,i);for(let[r,i]of Object.entries(t.itemTranslations||{}))for(let[t,a]of Object.entries(i||{}))n(a,`itemTranslation`,t,e,r)}return t}getAvailableResponseValueSlots(e){let t={};for(let n of this.surveyItems.values())t={...t,...n.getAvailableResponseValueSlots(e)};return t}getResponseSlotDefinitions(){return Array.from(this.surveyItems.values()).map(e=>({itemId:e.id,slots:e.getResponseSlotDefinitions()}))}getReferenceUsages(e){let t=[];for(let n of this.surveyItems.values())e&&n.id!==e&&!this.isDescendantOf(n.id,e)||t.push(...n.getReferenceUsages());if(this._templateValues)for(let[e,n]of this._templateValues.entries())for(let r of n.expression?.responseVariableRefs||[])t.push({itemId:e,usageType:`templateValues`,valueReference:r});return t}isDescendantOf(e,t){return e===t?!0:this.getItemPath(e).includes(t)}},Ke=365.2425,qe=6048e5,Je=864e5,Ye=43200,Xe=1440,Ze=3600*24;Ze*7,Ze*Ke/12*3;var Qe=Symbol.for(`constructDateFrom`);function C(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&Qe in e?e[Qe](t):e instanceof Date?new e.constructor(t):new Date(t)}function w(e,t){return C(t||e,e)}var $e={};function T(){return $e}function E(e,t){let n=T(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=w(e,t?.in),a=i.getDay(),o=(a<r?7:0)+a-r;return i.setDate(i.getDate()-o),i.setHours(0,0,0,0),i}function D(e,t){return E(e,{...t,weekStartsOn:1})}function et(e,t){let n=w(e,t?.in),r=n.getFullYear(),i=C(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=D(i),o=C(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=D(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function tt(e){let t=w(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}function nt(e,...t){let n=C.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function rt(e,t){let n=w(e,t?.in);return n.setHours(0,0,0,0),n}function it(e,t,n){let[r,i]=nt(n?.in,e,t),a=rt(r),o=rt(i),s=+a-tt(a),c=+o-tt(o);return Math.round((s-c)/Je)}function at(e,t){let n=et(e,t),r=C(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),D(r)}function ot(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function st(e){return!(!ot(e)&&typeof e!=`number`||isNaN(+w(e)))}function ct(e,t){let n=w(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}var lt={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},ut=(e,t,n)=>{let r,i=lt[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function O(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var dt={date:O({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:O({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:O({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},ft={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},pt=(e,t,n,r)=>ft[e];function k(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var mt={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:k({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:k({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:k({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:k({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:k({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function A(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?gt(s,e=>e.test(o)):ht(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let ee=t.slice(o.length);return{value:l,rest:ee}}}function ht(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function gt(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function _t(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var j={code:`en-US`,formatDistance:ut,formatLong:dt,formatRelative:pt,localize:mt,match:{ordinalNumber:_t({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:A({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:A({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:A({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:A({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:A({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function vt(e,t){let n=w(e,t?.in);return it(n,ct(n))+1}function yt(e,t){let n=w(e,t?.in),r=D(n)-+at(n);return Math.round(r/qe)+1}function bt(e,t){let n=w(e,t?.in),r=n.getFullYear(),i=T(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=C(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=E(o,t),c=C(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=E(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function xt(e,t){let n=T(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=bt(e,t),a=C(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),E(a,t)}function St(e,t){let n=w(e,t?.in),r=E(n,t)-+xt(n,t);return Math.round(r/qe)+1}function M(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var N={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return M(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):M(n+1,2)},d(e,t){return M(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return M(e.getHours()%12||12,t.length)},H(e,t){return M(e.getHours(),t.length)},m(e,t){return M(e.getMinutes(),t.length)},s(e,t){return M(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return M(Math.trunc(r*10**(n-3)),t.length)}},P={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},Ct={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return N.y(e,t)},Y:function(e,t,n,r){let i=bt(e,r),a=i>0?i:1-i;return t===`YY`?M(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):M(a,t.length)},R:function(e,t){return M(et(e),t.length)},u:function(e,t){return M(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return M(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return M(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return N.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return M(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=St(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):M(i,t.length)},I:function(e,t,n){let r=yt(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):M(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):N.d(e,t)},D:function(e,t,n){let r=vt(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):M(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return M(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return M(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return M(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?P.noon:r===0?P.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?P.evening:r>=12?P.afternoon:r>=4?P.morning:P.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return N.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):N.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):M(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):M(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):N.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):N.s(e,t)},S:function(e,t){return N.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return Tt(r);case`XXXX`:case`XX`:return F(r);default:return F(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return Tt(r);case`xxxx`:case`xx`:return F(r);default:return F(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+wt(r,`:`);default:return`GMT`+F(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+wt(r,`:`);default:return`GMT`+F(r,`:`)}},t:function(e,t,n){return M(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return M(+e,t.length)}};function wt(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+M(a,2)}function Tt(e,t){return e%60==0?(e>0?`-`:`+`)+M(Math.abs(e)/60,2):F(e,t)}function F(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=M(Math.trunc(r/60),2),a=M(r%60,2);return n+i+t+a}var Et=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},Dt=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},Ot={p:Dt,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return Et(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`});break}return a.replace(`{{date}}`,Et(r,t)).replace(`{{time}}`,Dt(i,t))}},kt=/^D+$/,At=/^Y+$/,jt=[`D`,`DD`,`YY`,`YYYY`];function Mt(e){return kt.test(e)}function Nt(e){return At.test(e)}function Pt(e,t,n){let r=Ft(e,t,n);if(console.warn(r),jt.includes(e))throw RangeError(r)}function Ft(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var It=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Lt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Rt=/^'([^]*?)'?$/,zt=/''/g,Bt=/[a-zA-Z]/;function Vt(e,t,n){let r=T(),i=n?.locale??r.locale??j,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=w(e,n?.in);if(!st(s))throw RangeError(`Invalid time value`);let c=t.match(Lt).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=Ot[t];return n(e,i.formatLong)}return e}).join(``).match(It).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:Ht(e)};if(Ct[t])return{isToken:!0,value:e};if(t.match(Bt))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&Nt(a)||!n?.useAdditionalDayOfYearTokens&&Mt(a))&&Pt(a,t,String(e));let o=Ct[a[0]];return o(s,a,i.localize,l)}).join(``)}function Ht(e){let t=e.match(Rt);return t?t[1].replace(zt,`'`):e}var Ut=class e{itemId;meta;response;itemType;constructor(e,t){this.itemId=e.itemId,this.response=t,this.itemType=e.itemType}serialize(){return{itemId:this.itemId,itemType:this.itemType,meta:this.meta,response:this.response?.serialize()}}static deserialize(t){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`Invalid survey item response payload`);if(typeof t.itemId!=`string`||t.itemId.trim().length===0)throw Error(`Survey item response is missing a valid itemId`);if(typeof t.itemType!=`string`||t.itemType.trim().length===0)throw Error(`Survey item response is missing a valid itemType`);let n=new e({itemId:t.itemId,itemType:t.itemType},t.response?Wt.deserialize(t.response):void 0);return n.meta=t.meta,n}},Wt=class e{_slots;constructor(e){this._slots=new Map(e??[])}get(e){return this._slots.get(e)}setSlotValue(e,t){t?this._slots.set(e,t):this._slots.delete(e)}serialize(){if(this._slots.size!==0)return{slots:Object.fromEntries(this._slots.entries())}}isEmpty(){return this._slots.size===0}clone(){return new e(Array.from(this._slots.entries()))}static deserialize(t){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`Invalid response item payload`);let{slots:n}=t;if(!n||typeof n!=`object`||Array.isArray(n))throw Error(`Invalid response slots payload`);return new e(Object.entries(n).map(([e,t])=>{if(e.trim().length===0)throw Error(`Response slot id cannot be empty`);return _e(t,`response.slots.${e}`),[e,t]}))}},I={openSurvey:`openSurvey`,pageChanged:`pageChanged`,responeChanged:`responeChanged`,languageChanged:`languageChanged`},Gt=class{context;constructor(e){this.context=e}eval(e){if(e!==void 0)switch(e.type){case d.Const:return this.evaluateConst(e);case d.Function:return this.evaluateFunction(e);case d.ResponseVariable:return this.evaluateResponseVariable(e);case d.ContextVariable:return this.evaluateContextVariable(e);default:throw Error(`Unsupported expression type: ${e.type}`)}}setContext(e){this.context=e}evaluateConst(e){return e.value}evaluateResponseVariable(e){let t=e.responseVariableRef;switch(t.name){case`get`:return this.context?.responses[t.itemId]?.response?.get(t.slotId);case`isDefined`:return{type:m.boolean,value:this.context?.responses[t.itemId]?.response?.get(t.slotId)!==void 0};default:throw Error(`Unsupported value reference method: ${t.name}`)}}evaluateFunction(e){switch(e.functionName){case`and`:return this.evaluateAnd(e);case`or`:return this.evaluateOr(e);case`not`:return this.evaluateNot(e);case`str_eq`:return this.evaluateStrEq(e);case`eq`:return this.evaluateEq(e);case`gt`:return this.evaluateGt(e);case`gte`:return this.evaluateGte(e);case`lt`:return this.evaluateLt(e);case`lte`:return this.evaluateLte(e);case`in_range`:return this.evaluateInRange(e);case`sum`:return this.evaluateSum(e);case`min`:return this.evaluateMin(e);case`max`:return this.evaluateMax(e);case`list_contains`:return this.evaluateListContains(e);default:throw Error(`Unsupported function: ${e.functionName}`)}}evaluateContextVariable(e){if(!this.context?.surveyContext)return;let t=this.context.surveyContext;switch(e.contextType){case f.Locale:return{type:m.string,value:t.locale};case f.ParticipantFlag:{if(!e.key)return;let n=this.eval(e.key);if(n?.type!==m.string||n.value===void 0)return;let r=t.participantFlags?.[n.value];switch(e.asType){case m.boolean:return{type:m.boolean,value:r!==void 0};case m.string:return r===void 0?void 0:{type:m.string,value:r};case m.number:{if(r===void 0)return;let e=parseFloat(r);return isNaN(e)?void 0:{type:m.number,value:e}}case m.date:{if(r===void 0)return;let e=parseFloat(r);return isNaN(e)?void 0:{type:m.date,value:e}}default:return r===void 0?void 0:{type:m.string,value:r}}}case f.CustomValue:{if(!e.key)return;let n=this.eval(e.key);if(n?.type!==m.string||n.value===void 0)return;let r=t.customValues?.[n.value];if(r===void 0)return;if(e.asType!==void 0&&r?.type!==e.asType)throw Error(`Custom value type does not match expected type, got ${r?.type} and expected ${e.asType}`);return r}case f.CustomExpression:{if(!e.key)return;let n=this.eval(e.key);if(n?.type!==m.string||n.value===void 0)return;let r=t.customExpressions?.[n.value];if(typeof r!==d.Function||r===void 0)return;try{let t=e.arguments,n=r(t);if(e.asType!==void 0&&n?.type!==e.asType)throw Error(`Custom expression result type does not match expected type, got ${n?.type} and expected ${e.asType}`);return n}catch(e){throw Error(`Error evaluating custom expression: ${e}`)}}}}evaluateAnd(e){return{type:m.boolean,value:e.arguments.every(e=>this.eval(e)?.value===!0)}}evaluateOr(e){return{type:m.boolean,value:e.arguments.some(e=>this.eval(e)?.value===!0)}}evaluateNot(e){if(e.arguments.length!==1||e.arguments[0]===void 0)throw Error(`Not function expects 1 argument, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]);if(t?.type!==m.boolean)throw Error(`Not function expects a boolean argument, got ${t?.type}`);return t===void 0?{type:m.boolean,value:!1}:{type:m.boolean,value:!t.value}}evaluateListContains(e){if(e.arguments.length!==2)throw Error(`List contains function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};let r=[m.stringArray,m.referenceArray],i=[m.string,m.reference],a=t.type,o=n.type;if(!r.includes(a)||!i.includes(o))throw Error(`List contains function expects a string array list and a string item, got ${t?.type} and ${n?.type}`);let s=t.value,c=n.value;return{type:m.boolean,value:s.includes(c)}}evaluateStrEq(e){if(e.arguments.length!==2)throw Error(`String equals function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};if(t?.type!==m.string||n?.type!==m.string)throw Error(`String equals function expects strings for all arguments, got ${t?.type} and ${n?.type}`);return{type:m.boolean,value:t.value===n.value}}evaluateEq(e){if(e.arguments.length!==2)throw Error(`Equals function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};if(t?.type!==n?.type)throw Error(`Equals function expects the same type for all arguments, got ${t?.type} and ${n?.type}`);return{type:m.boolean,value:t.value===n.value}}evaluateGt(e){if(e.arguments.length!==2)throw Error(`Greater than function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};if(t?.type!==n?.type)throw Error(`Greater than function expects the same type for all arguments, got ${t?.type} and ${n?.type}`);return{type:m.boolean,value:t.value>n.value}}evaluateGte(e){if(e.arguments.length!==2)throw Error(`Greater than or equal to function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};if(t?.type!==n?.type)throw Error(`Greater than or equal to function expects the same type for all arguments, got ${t?.type} and ${n?.type}`);return{type:m.boolean,value:t.value>=n.value}}evaluateLt(e){if(e.arguments.length!==2)throw Error(`Less than function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};if(t?.type!==n?.type)throw Error(`Less than function expects the same type for all arguments, got ${t?.type} and ${n?.type}`);return{type:m.boolean,value:t.value<n.value}}evaluateLte(e){if(e.arguments.length!==2)throw Error(`Less than or equal to function expects 2 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]);if(t===void 0||n===void 0)return{type:m.boolean,value:!1};if(t?.type!==n?.type)throw Error(`Less than or equal to function expects the same type for all arguments, got ${t?.type} and ${n?.type}`);return{type:m.boolean,value:t.value<=n.value}}evaluateInRange(e){if(e.arguments.length!==4)throw Error(`In range function expects 4 arguments, got ${e.arguments.length}`);let t=this.eval(e.arguments[0]),n=this.eval(e.arguments[1]),r=this.eval(e.arguments[2]),i=this.eval(e.arguments[3])?.value===!0;if(t===void 0||n===void 0||r===void 0)return{type:m.boolean,value:!1};if(t?.type!==m.number||n?.type!==m.number||r?.type!==m.number)throw Error(`In range function expects numbers for all arguments, got ${t?.type} and ${n?.type} and ${r?.type}`);return i?{type:m.boolean,value:t.value>=n.value&&t.value<=r.value}:{type:m.boolean,value:t.value>n.value&&t.value<r.value}}evaluateSum(e){if(e.arguments.length<1)throw Error(`Sum function expects at least 1 argument, got ${e.arguments.length}`);return e.arguments.reduce((e,t)=>{if(t===void 0)return e;let n=this.eval(t);if(n===void 0)return e;if(n?.type===m.number)return{type:m.number,value:e.value+n.value};throw Error(`Sum function expects all arguments to be numbers, got ${n?.type}`)},{type:m.number,value:0})}evaluateMin(e){if(e.arguments.length<1)throw Error(`Min function expects at least 1 argument, got ${e.arguments.length}`);return e.arguments.reduce((e,t)=>{if(t===void 0)return e;let n=this.eval(t);if(n===void 0)return e;if(n?.type===m.number)return{type:m.number,value:Math.min(e.value,n.value)};throw Error(`Min function expects all arguments to be numbers, got ${typeof n}`)},{type:m.number,value:1/0})}evaluateMax(e){if(e.arguments.length<1)throw Error(`Max function expects at least 1 argument, got ${e.arguments.length}`);return e.arguments.reduce((e,t)=>{if(t===void 0)return e;let n=this.eval(t);if(n===void 0)return e;if(n?.type===m.number)return{type:m.number,value:Math.max(e.value,n.value)};throw Error(`Max function expects all arguments to be numbers, got ${typeof n}`)},{type:m.number,value:-1/0})}},Kt=class{surveyDef;renderedSurveyTree;context;locale;sessionSeedValue;responses;prefills;_events;_openedAt;dateLocales;prefillEnvironment;cache;constructor(e,t,n,r,i){if(this._openedAt=this._getTimestamp(),this.sessionSeedValue=o(),this.surveyDef=e,this.context=t||{locale:`en`},this.locale=this.context.locale,this.prefills=n?n.reduce((e,t)=>(e[t.itemId]=Ut.deserialize(t),e),{}):void 0,this.prefillEnvironment=i?.prefillEnvironment,this.dateLocales=r||[{code:`en`,locale:j}],this.responses=this.initResponseObject(this.surveyDef.surveyItems),this.initCache(),this.applyConfiguredPrefills(),this.evalExpressions(),!e.rootItem)throw Error(`constructor: root item not found`);this.renderedSurveyTree=this.renderGroup(e.rootItem),this._events=[{type:I.openSurvey,timestamp:this._getTimestamp(),value:this.context.locale}]}setContext(e){this.context=e}getDateLocales(){return this.dateLocales.slice()}getCurrentDateLocale(){let e=this.dateLocales.find(e=>e.code===this.locale);return e?e?.locale:(console.warn(`Locale '${this.locale}' is not available. Using default locale.`),this.dateLocales.length>0?this.dateLocales[0].locale:j)}updateContext(e){this.context=e,this.locale=e.locale,this._registerSurveyEvent({type:I.languageChanged,timestamp:this._getTimestamp(),value:e.locale}),this.evalExpressions(),this.reRenderSurveyTree()}setResponse(e,t){let n=this.getResponseItem(e);if(!n)throw Error(`setResponse: target not found for key: `+e);n.response=t,this._registerSurveyEvent({type:I.responeChanged,timestamp:this._getTimestamp(),itemId:e}),this.evalExpressions(),this.reRenderSurveyTree()}get openedAt(){return this._openedAt}get sessionSeed(){return this.sessionSeedValue}get survey(){return this.surveyDef}getSurveyPages(e){let t=L(this.renderedSurveyTree),n=[];e||=`large`;let r=[];return t.forEach(t=>{if(t.type===`page-break`){r.length>0&&(n.push([...r]),r=[]);return}if(r.push(t),!this.surveyDef.maxItemsPerPage)return;let i=0;switch(e){case`large`:i=this.surveyDef.maxItemsPerPage.large;break;case`small`:i=this.surveyDef.maxItemsPerPage.small;break}r.length>=i&&(n.push([...r]),r=[])}),r.length>0&&n.push([...r]),n}getRenderedSurveyItem(e){return L(this.renderedSurveyTree).find(t=>t.id===e)}onPageChanged(e){this._registerSurveyEvent({type:I.pageChanged,timestamp:this._getTimestamp(),value:e})}getEvents(){return this._events.slice()}getResponses(){let e=new Map;L(this.renderedSurveyTree).filter(e=>e.type!==`page-break`).forEach((t,n)=>{this.responses[t.id]&&e.set(t.id,n)});let t=[];return this.surveyDef.surveyItems.forEach((n,r)=>{if(!n.isInteractive())return;let i=this.getResponseItem(r);if(!i)return;let a=e.get(r);i.meta=a===void 0?void 0:{position:a},t.push(i)}),t}getDisplayConditionValue(e,t){return t?this.cache.displayConditions[e]?.components?.[t]?.result:this.cache.displayConditions[e]?.root?.result}getDisabledConditionValue(e,t){return this.cache.disabledConditions[e]?.components?.[t]?.result}getTemplateValue(e){return this.cache.templateValues[e]?.value}getValidationValues(e){let t=this.cache.validations[e];if(t)return Object.keys(t).reduce((e,n)=>(e[n]=t[n].result,e),{})}initCache(){this.cache={validations:{},displayConditions:{},templateValues:{},disabledConditions:{}},this.surveyDef.getTemplateValueKeys().forEach(e=>{this.cache.templateValues[e]={value:void 0,templateDef:this.surveyDef.getTemplateValue(e)}}),this.surveyDef.surveyItems.forEach((e,t)=>{e.validations&&Object.keys(e.validations).length>0&&(this.cache.validations[t]={},Object.keys(e.validations).forEach(n=>{let r=e.validations[n];if(!r){console.warn(`initCache: validation expression not found: `+t+` `+n);return}this.cache.validations[t][n]={expression:r,result:!1}})),e.displayConditions!==void 0&&(e.displayConditions.root||e.displayConditions.components)&&(this.cache.displayConditions[t]={},e.displayConditions.root&&(this.cache.displayConditions[t].root={expression:e.displayConditions.root,result:!1}),e.displayConditions.components&&(this.cache.displayConditions[t].components={},Object.keys(e.displayConditions.components).forEach(n=>{let r=e.displayConditions?.components?.[n];if(!r){console.warn(`initCache: display condition component expression not found: `+t+` `+n);return}this.cache.displayConditions[t].components[n]={expression:r,result:!1}}))),e.disabledConditions!==void 0&&e.disabledConditions.components!==void 0&&(this.cache.disabledConditions[t]={components:{}},Object.keys(e.disabledConditions.components).forEach(n=>{let r=e.disabledConditions?.components?.[n];if(!r){console.warn(`initCache: disabled condition component expression not found: `+t+` `+n);return}this.cache.disabledConditions[t].components[n]={expression:r,result:!1}}))})}initResponseObject(e){let t={};return e.forEach((e,n)=>{if(e.isInteractive){let r=this.prefills?.[n],i=r&&r.itemType===e.type;t[n]=new Ut({itemId:n,itemType:e.type},i?r.response:void 0)}else return}),t}applyConfiguredPrefills(){let e=new Gt({responses:this.responses,surveyContext:this.context}),t=Math.max(this.surveyDef.surveyItems.size,1);for(let n=0;n<t;n++){this.evalTemplateValues(e);let t=!1;if(this.surveyDef.surveyItems.forEach(n=>{n.isInteractive()&&(t=this.applyConfiguredPrefillsForItem(n,e)||t)}),!t)break}this.evalTemplateValues(e)}applyConfiguredPrefillsForItem(e,t){let n=this.responses[e.id];if(!n)return!1;let r=!1;for(let i of e.prefills??[]){let a=e.resolvePrefillTarget(i.target);if(!a||(i.apply??be.ifEmpty)===be.ifEmpty&&n.response?.get(a.slotId)!==void 0||!this.shouldApplyConfiguredPrefill(i,t))continue;let o=this.resolveConfiguredPrefillValue(i,a,t);if(!o)continue;let s=e.normalizePrefillValue(i,a,o);if(!s)continue;let c=n.response?.clone()??new Wt;c.setSlotValue(a.slotId,s),n.response=c.isEmpty()?void 0:c,r=!0}return r}shouldApplyConfiguredPrefill(e,t){if(!e.when)return!0;let n=t.eval(e.when);return n?.type===m.boolean&&n.value===!0}resolveConfiguredPrefillValue(e,t,n){switch(e.source.type){case`static`:return e.source.value;case`expression`:return n.eval(e.source.expression);case`templateValue`:return this.getTemplateValue(e.source.key);case`previousResponse`:{if(!this.prefillEnvironment?.getPreviousResponse)return;let t=e.source.ref.target??e.target;return this.prefillEnvironment.getPreviousResponse({surveyKey:e.source.ref.surveyKey,itemId:e.source.ref.itemId,target:t})||void 0}default:return}}shouldRender(e,t){let n=this.getDisplayConditionValue(e,t);return n===void 0?!0:n}sequentialRender(e){let t=[];for(let n of e.items||[]){if(!this.shouldRender(n))continue;let e=this.surveyDef.surveyItems.get(n);if(!e){console.warn(`sequentialRender: item not found: `+n);continue}if(e.type===`group`){t.push(this.renderGroup(e));continue}t.push({id:n,type:e.type})}return{id:e.id,type:`group`,items:t}}randomizedItemRender(e,t){let n=t.items?.filter(e=>this.shouldRender(e.id))||[],i=e.items||[],a=r(i.length);for(let e of a){let r=i[e];if(t.items?.find(e=>e.id===r)||!this.shouldRender(r))continue;let a=this.surveyDef.surveyItems.get(r);if(!a){console.warn(`randomizedItemRender: item not found: `+r);continue}if(a.type===`group`){n.push(this.renderGroup(a,t));continue}n.push({id:r,type:a.type})}return{id:e.id,type:`group`,items:n}}renderGroup(e,t){return t||={id:e.id,type:`group`,items:[]},e.config.shuffleItems?this.randomizedItemRender(e,t):this.sequentialRender(e)}reRenderSurveyTree(){if(!this.surveyDef.rootItem)throw Error(`reRenderSurveyTree: root item not found`);this.renderedSurveyTree=this.renderGroup(this.surveyDef.rootItem)}_registerSurveyEvent(e){this._events.push(e)}_getTimestamp(){return Math.floor(Date.now()/1e3)}getResponseItem(e){return this.responses[e]}evalExpressions(){let e=new Gt({responses:this.responses,surveyContext:this.context});this.evalTemplateValues(e),this.evalDisplayConditions(e),this.evalDisableConditions(e),this.evalValidations(e)}evalTemplateValues(e){Object.keys(this.cache.templateValues).forEach(t=>{let n=this.cache.templateValues[t];if(this.cache.templateValues[t].value=void 0,!n.templateDef?.expression){console.warn(`evalTemplateValues: template value expression not found: `+t);return}let r=e.eval(n.templateDef.expression);if(r===void 0){console.warn(`evalTemplateValues: template value expression returned undefined: `+t);return}switch(n.templateDef.type){case`date2string`:if(r.type!==m.date){console.warn(`evalTemplateValues: template value expression returned non-date value: `+t);return}r={type:m.string,value:Vt(new Date(r.value*1e3),n.templateDef.dateFormat)};break;default:break}this.cache.templateValues[t].value=r})}evalDisplayConditions(e){Object.keys(this.cache.displayConditions).forEach(t=>{let n=this.cache.displayConditions[t];if(n.root){let r=e.eval(n.root.expression);if(r===void 0||r.type!==m.boolean){console.warn(`evalDisplayConditions: display condition expression returned undefined: `+t);return}this.cache.displayConditions[t].root.result=r.value}n.components&&Object.keys(n.components).forEach(r=>{let i=e.eval(n.components[r].expression);if(i===void 0||i.type!==m.boolean){console.warn(`evalDisplayConditions: display condition component expression returned undefined: `+t+`.`+r);return}this.cache.displayConditions[t].components[r].result=i.value})})}evalDisableConditions(e){Object.keys(this.cache.disabledConditions).forEach(t=>{let n=this.cache.disabledConditions[t];n.components&&Object.keys(n.components).forEach(r=>{let i=e.eval(n.components[r].expression);if(i===void 0||i.type!==m.boolean){console.warn(`evalDisableConditions: disable condition component expression returned undefined: `+t+`.`+r);return}this.cache.disabledConditions[t].components[r].result=i.value})})}evalValidations(e){Object.keys(this.cache.validations).forEach(t=>{let n=this.cache.validations[t];Object.keys(n).forEach(r=>{let i=e.eval(n[r].expression);if(i===void 0||i.type!==m.boolean){console.warn(`evalValidations: validation expression returned undefined: `+t+`.`+r);return}this.cache.validations[t][r].result=i.value})})}},L=e=>{let t=[];return e.items?.forEach(e=>{e.type===`group`?t.push(...L(e)):t.push({...e})}),t},R=class extends Error{constructor(e,t,n,r){super(e),this.code=t,this.path=n,this.operationIndex=r,this.name=`JsonPatchError`}},qt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),z=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Jt=(e,t)=>{if(/~(?![01])/.test(e))throw new R(`Invalid JSON pointer segment "${e}" in "${t}". Only "~0" and "~1" escapes are allowed.`,`invalid-json-pointer`,t)},B=e=>{if(e===``)return[];if(!e.startsWith(`/`))throw new R(`Invalid JSON pointer "${e}". It must be empty or start with "/".`,`invalid-json-pointer`,e);return e.slice(1).split(`/`).map(t=>(Jt(t,e),t.replace(/~1/g,`/`).replace(/~0/g,`~`)))},Yt=({segment:e,arrayLength:t,allowAppend:n,allowEnd:r,path:i})=>{if(e===`-`){if(n)return t;throw new R(`JSON pointer "${i}" uses "-" where an existing array index is required.`,`invalid-array-index`,i)}if(!/^(0|[1-9][0-9]*)$/.test(e))throw new R(`JSON pointer "${i}" uses invalid array index "${e}".`,`invalid-array-index`,i);let a=Number(e),o=r?t:t-1;if(a<0||a>o)throw new R(`JSON pointer "${i}" array index ${a} is out of bounds.`,`array-index-out-of-bounds`,i);return a},V=(e,t,n)=>{let r=e;for(let e of t){if(Array.isArray(r)){let t=Yt({segment:e,arrayLength:r.length,allowAppend:!1,allowEnd:!1,path:n});r=r[t];continue}if(!z(r)||!qt(r,e))throw new R(`JSON pointer "${n}" does not exist.`,`path-not-found`,n);r=r[e]}return r},Xt=(e,t)=>V(e,B(t),t),Zt=(e,t)=>{if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length?!1:e.every((e,n)=>Zt(e,t[n]));if(z(e)||z(t)){if(!z(e)||!z(t))return!1;let n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length?n.every((n,i)=>n===r[i]&&Zt(e[n],t[n])):!1}return!1},H=(e,t,n)=>{let r=B(t);if(r.length===0)return i(n);let a=r.slice(0,-1),o=r[r.length-1],s=V(e,a,t);if(Array.isArray(s)){let r=Yt({segment:o,arrayLength:s.length,allowAppend:!0,allowEnd:!0,path:t});return s.splice(r,0,i(n)),e}if(!z(s))throw new R(`JSON pointer "${t}" parent is not an object or array.`,`invalid-target-parent`,t);return s[o]=i(n),e},Qt=(e,t)=>{let n=B(t);if(n.length===0)throw new R(`Removing the document root is not supported.`,`remove-root`,t);let r=n.slice(0,-1),i=n[n.length-1],a=V(e,r,t);if(Array.isArray(a)){let n=Yt({segment:i,arrayLength:a.length,allowAppend:!1,allowEnd:!1,path:t}),[r]=a.splice(n,1);return{document:e,removedValue:r}}if(!z(a)||!qt(a,i))throw new R(`JSON pointer "${t}" does not exist.`,`path-not-found`,t);let o=a[i];return delete a[i],{document:e,removedValue:o}},$t=(e,t,n)=>{let r=B(t);return r.length===0?i(n):(V(e,r,t),Qt(e,t),H(e,t,n))},en=(e,t)=>{if(!(e===``||t===e||!t.startsWith(`${e}/`)))throw new R(`JSON Patch cannot move "${e}" into its own descendant "${t}".`,`move-into-descendant`,t)},tn=(e,t)=>{let n=i(e);return t.forEach((e,t)=>{try{switch(e.op){case`add`:n=H(n,e.path,e.value);break;case`remove`:n=Qt(n,e.path).document;break;case`replace`:n=$t(n,e.path,e.value);break;case`move`:{if(en(e.from,e.path),e.from===e.path)break;let{document:t,removedValue:r}=Qt(n,e.from);n=H(t,e.path,r);break}case`copy`:{let t=Xt(n,e.from);n=H(n,e.path,t);break}case`test`:if(!Zt(Xt(n,e.path),e.value))throw new R(`JSON Patch test failed at "${e.path}".`,`test-failed`,e.path);break}}catch(e){throw e instanceof R?new R(e.message,e.code,e.path,t):e}}),n};({default:`default`,mask:`mask`,dateFormat:`dateFormat`}).default;var nn=[`year`,`year-month`,`year-month-day`];function rn(e){let t=e.validations.map(e=>({...e,source:`validation`}));return e.required!==!0||t.some(e=>e.type===`required`)?t:[{id:`${e.id}-required`,type:`required`,source:`required`},...t]}function U(e){let t=Y(e);return t?{type:Pe.plain,content:t}:void 0}function W(e,t,n,r){let i=e?.getContent(t,n,r);return He(i).trim()||void 0}var an=`fields`,on=`fieldGroups`;function sn(e,t){return t?.trim()?`${t}.${e}`:e}function cn(e,t){return sn(`${on}.${e}`,t)}function ln(e,t){return`${cn(e,t)}.title`}function un(e,t){return`${cn(e,t)}.description`}function G(e,t){return sn(`${an}.${e}`,t)}function dn(e,t){return`${G(e,t)}.label`}function fn(e,t){return`${G(e,t)}.description`}function pn(e,t){return`${G(e,t)}.error`}function K(e,t){return`${G(e,t)}.placeholder`}function q(e,t){return`${G(e,t)}.unit`}function mn(e,t){return`${G(e,t)}.checkedLabel`}function hn(e,t){return`${G(e,t)}.uncheckedLabel`}function gn(e,t,n){return`${G(e,n)}.options.${t}.label`}function _n(e,t,n){return`${G(e,n)}.validations.${t}.message`}function vn(e,t){let n=[dn(e.id,t),fn(e.id,t),pn(e.id,t),...e.validations.map(n=>_n(e.id,n.id,t))];switch(e.type){case`textarea`:case`datepicker`:case`input`:n.push(K(e.id,t));break;case`number`:n.push(K(e.id,t)),n.push(q(e.id,t));break;case`switch`:n.push(mn(e.id,t)),n.push(hn(e.id,t));break;case`select`:{n.push(K(e.id,t));let r=e.controller;n.push(...r.options.map(n=>gn(e.id,n.id,t)));break}case`slider`:break}return n}function yn(e,t){return[ln(e.id,t),un(e.id,t)]}function bn(e,t,n,r){e.setContent(t,ln(n.id,r),U(n.title)),e.setContent(t,un(n.id,r),U(n.description))}function xn(e,t,n,r){e.setContent(t,dn(n.id,r),U(n.label)),e.setContent(t,fn(n.id,r),U(n.description)),e.setContent(t,pn(n.id,r),U(n.errorMessage));for(let i of n.validations)e.setContent(t,_n(n.id,i.id,r),U(i.message));switch(n.type){case`textarea`:case`datepicker`:case`input`:{let i=n.controller;e.setContent(t,K(n.id,r),U(i.placeholder));break}case`number`:{let i=n.controller;e.setContent(t,K(n.id,r),U(i.placeholder)),e.setContent(t,q(n.id,r),U(i.unit));break}case`switch`:{let i=n.controller;e.setContent(t,mn(n.id,r),U(i.checkedLabel)),e.setContent(t,hn(n.id,r),U(i.uncheckedLabel));break}case`select`:{let i=n.controller;e.setContent(t,K(n.id,r),U(i.placeholder));for(let a of i.options)e.setContent(t,gn(n.id,a.id,r),U(a.label));break}case`slider`:break}}function Sn(e,t,n,r,i){let a={...e,label:W(t,n,dn(e.id,i),r)??e.label,description:W(t,n,fn(e.id,i),r)??e.description,errorMessage:W(t,n,pn(e.id,i),r)??e.errorMessage,validations:e.validations.map(a=>({...a,message:W(t,n,_n(e.id,a.id,i),r)??a.message}))};switch(e.type){case`textarea`:{let o=e.controller;a.controller={...o,placeholder:W(t,n,K(e.id,i),r)??o.placeholder};break}case`number`:{let o=e.controller;a.controller={...o,placeholder:W(t,n,K(e.id,i),r)??o.placeholder,unit:W(t,n,q(e.id,i),r)??o.unit};break}case`datepicker`:{let o=e.controller;a.controller={...o,placeholder:W(t,n,K(e.id,i),r)??o.placeholder};break}case`switch`:{let o=e.controller;a.controller={...o,checkedLabel:W(t,n,mn(e.id,i),r)??o.checkedLabel,uncheckedLabel:W(t,n,hn(e.id,i),r)??o.uncheckedLabel};break}case`select`:{let o=e.controller;a.controller={...o,placeholder:W(t,n,K(e.id,i),r)??o.placeholder,options:o.options.map(a=>({...a,label:W(t,n,gn(e.id,a.id,i),r)??a.label}))};break}case`slider`:break;default:{let o=e.controller;a.controller={...o,placeholder:W(t,n,K(e.id,i),r)??o.placeholder};break}}return a}function Cn(e,t,n,r,i){return{...e,title:W(t,n,ln(e.id,i),r)??e.title,description:W(t,n,un(e.id,i),r)??e.description,fields:e.fields.map(e=>Sn(e,t,n,r,i))}}function wn(e,t,n,r={}){let{fallbackLocale:i,translationNamespace:a}=r;return{...e,fieldGroups:e.fieldGroups.map(e=>Cn(e,t,n,i,a))}}function Tn(e){let t={...e,label:void 0,description:void 0,errorMessage:void 0,required:void 0,hasValidations:void 0,isInvalid:void 0,validations:e.validations.map(e=>({...e,message:void 0}))};switch(e.type){case`textarea`:t.controller={...e.controller,placeholder:void 0};break;case`number`:t.controller={...e.controller,placeholder:void 0,unit:void 0};break;case`datepicker`:t.controller={...e.controller,placeholder:void 0};break;case`switch`:t.controller={...e.controller,checkedLabel:void 0,uncheckedLabel:void 0};break;case`select`:{let n=e.controller;t.controller={...n,placeholder:void 0,options:n.options.map(e=>({...e,label:void 0}))};break}case`slider`:break;default:t.controller={...e.controller,placeholder:void 0};break}return t}function En(e){return{...e,title:void 0,description:void 0,fields:e.fields.map(e=>Tn(e))}}function Dn(e){return{...e,fieldGroups:e.fieldGroups.map(e=>En(e))}}function J(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.min(4,Math.max(1,Math.round(e)))}function On(e){let t=e&&typeof e==`object`?e:{},n=Object.prototype.hasOwnProperty.call(t,`base`),r=Object.prototype.hasOwnProperty.call(t,`xs`);if(!n&&!r&&(t.sm!==void 0||t.md!==void 0||t.lg!==void 0)){let e=J(t.sm);return{base:e,xs:e,sm:J(t.md??t.sm),md:J(t.lg??t.md??t.sm),xl:J(t.lg??t.md??t.sm)}}let i=J(t.xs??t.sm??1),a=J(t.sm??1),o=J(t.md??1),s=J(t.xl??t.lg??1);return{base:J(n?t.base:i),xs:i,sm:a,md:o,xl:s}}function kn(e){return{"--form-group-cols-base":String(e.base),"--form-group-cols-xs":String(e.xs),"--form-group-cols-sm":String(e.sm),"--form-group-cols-md":String(e.md),"--form-group-cols-xl":String(e.xl)}}function Y(e){if(typeof e==`string`)return e.trim()||void 0}function X(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return e}function An(e){return e===!0?!0:e===!1?!1:void 0}function jn(e,t){return t?.trim()||e.replace(/[^a-zA-Z0-9]/g,``).slice(0,4).toUpperCase()||c(4)}function Z(e){switch(e){case`textarea`:return{type:e,rows:3};case`number`:return{type:e,step:1};case`datepicker`:return{type:e,mode:`year-month-day`};case`switch`:return{type:e,defaultChecked:!1};case`select`:return{type:e,options:[]};case`slider`:return{type:e,min:0,max:100,step:1,defaultValue:50,showValue:!0};default:return{type:`input`,inputMode:`text`}}}function Mn(e){switch(e){case`textarea`:return[{type:`required`,label:`Required`,description:`Respondents must provide a value.`,valueKind:`none`},{type:`minLength`,label:`Minimum length`,description:`Require a longer free-text answer.`,valueKind:`number`,defaultValue:10},{type:`maxLength`,label:`Maximum length`,description:`Cap the response length.`,valueKind:`number`,defaultValue:500}];case`number`:return[{type:`required`,label:`Required`,description:`Respondents must provide a value.`,valueKind:`none`},{type:`min`,label:`Minimum value`,description:`Reject values below the threshold.`,valueKind:`number`,defaultValue:0},{type:`max`,label:`Maximum value`,description:`Reject values above the threshold.`,valueKind:`number`,defaultValue:100},{type:`integer`,label:`Integer only`,description:`Allow whole numbers only.`,valueKind:`none`}];case`datepicker`:return[{type:`required`,label:`Required`,description:`Respondents must provide a value.`,valueKind:`none`},{type:`minDate`,label:`Earliest date`,description:`Reject dates before the minimum.`,valueKind:`date`},{type:`maxDate`,label:`Latest date`,description:`Reject dates after the maximum.`,valueKind:`date`}];case`switch`:return[{type:`mustBeTrue`,label:`Must be enabled`,description:`Useful for consent or confirmation switches.`,valueKind:`none`}];case`select`:return[{type:`required`,label:`Required`,description:`Respondents must choose an option.`,valueKind:`none`}];case`slider`:return[{type:`min`,label:`Minimum value`,description:`Reject slider values below the threshold.`,valueKind:`number`,defaultValue:0},{type:`max`,label:`Maximum value`,description:`Reject slider values above the threshold.`,valueKind:`number`,defaultValue:100}];case`input`:return[{type:`required`,label:`Required`,description:`Respondents must provide a value.`,valueKind:`none`},{type:`minLength`,label:`Minimum length`,description:`Require a minimum number of characters.`,valueKind:`number`,defaultValue:2},{type:`maxLength`,label:`Maximum length`,description:`Limit the number of characters.`,valueKind:`number`,defaultValue:120},{type:`pattern`,label:`Pattern`,description:`Validate against a regular expression.`,valueKind:`text`},{type:`email`,label:`Email format`,description:`Require a valid email address.`,valueKind:`none`},{type:`url`,label:`URL format`,description:`Require a valid URL.`,valueKind:`none`}]}}function Nn(e){if(!e||typeof e!=`object`)return null;let t=e,n=Y(t.id)??o(),r=Y(t.value),i=Y(t.label);return!r&&!i?null:{id:n,value:r??i??n,label:i}}function Pn(e){let t=new Set;for(let n of e){let e=n.value.trim().toLowerCase();if(e){if(t.has(e))return!0;t.add(e)}}return!1}function Fn(e){if(!e||typeof e!=`object`)return null;let t=e,n=Y(t.id)??o(),r=Y(t.message);switch(t.type){case`minLength`:case`maxLength`:case`min`:case`max`:{let e=X(t.value);return e===void 0?null:{id:n,type:t.type,value:e,message:r}}case`pattern`:{let e=Y(t.value);return e?{id:n,type:`pattern`,value:e,message:r}:null}case`minDate`:case`maxDate`:{let e=Y(t.value);return e?{id:n,type:t.type,value:e,message:r}:null}case`email`:case`url`:case`integer`:case`required`:case`mustBeTrue`:return{id:n,type:t.type,message:r};default:return null}}function In(e,t){let n=e&&typeof e==`object`?e:{};switch(t){case`textarea`:{let e=Z(t);return{type:t,placeholder:Y(n.placeholder),rows:Math.min(12,Math.max(2,Math.round(X(n.rows)??e.rows??3)))}}case`number`:{let e=Z(t);return{type:t,placeholder:Y(n.placeholder),step:X(n.step)??e.step,unit:Y(n.unit),defaultValue:X(n.defaultValue)}}case`datepicker`:{let e=Z(t);return{type:t,placeholder:Y(n.placeholder),mode:n.mode===`year`||n.mode===`year-month`?n.mode:e.mode}}case`switch`:return{type:t,checkedLabel:Y(n.checkedLabel),uncheckedLabel:Y(n.uncheckedLabel),defaultChecked:An(n.defaultChecked)??!1};case`select`:{let e=Z(t);return{type:t,placeholder:Y(n.placeholder),allowClear:An(n.allowClear),options:Array.isArray(n.options)?n.options.map(e=>Nn(e)).filter(e=>e!==null):e.options}}case`slider`:{let e=Z(t);return{type:t,min:X(n.min)??e.min,max:X(n.max)??e.max,step:X(n.step)??e.step,defaultValue:X(n.defaultValue)??e.defaultValue,showValue:An(n.showValue)??e.showValue??!0}}default:return{type:`input`,placeholder:Y(n.placeholder),inputMode:n.inputMode===`email`||n.inputMode===`tel`||n.inputMode===`url`||n.inputMode===`password`?n.inputMode:`text`,autocomplete:Y(n.autocomplete)}}}function Ln(e){let t=new Set;for(let n of e){if(t.has(n.type))return!0;t.add(n.type)}return!1}function Rn(e){if(!e.key.trim()||Ln(e.validations))return!0;switch(e.type){case`number`:{let t=e.controller;return t.step!==void 0&&t.step<=0}case`datepicker`:{let t=e.validations.find(e=>e.type===`minDate`)?.value,n=e.validations.find(e=>e.type===`maxDate`)?.value;return typeof t==`string`&&typeof n==`string`&&t>n}case`select`:{let t=e.controller;return t.options.length===0||t.options.some(e=>!e.value.trim())||Pn(t.options)}case`slider`:{let t=e.controller;return t.min===void 0||t.max===void 0||t.step===void 0||t.defaultValue===void 0?!0:t.min>=t.max||t.step<=0||t.defaultValue<t.min||t.defaultValue>t.max}default:return e.validations.some(e=>(e.type===`minLength`||e.type===`maxLength`||e.type===`min`||e.type===`max`)&&typeof e.value==`number`?e.value<0:(e.type===`pattern`||e.type===`minDate`||e.type===`maxDate`)&&typeof e.value==`string`?e.value.trim().length===0:!1)}}function zn(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``,r=typeof t.key==`string`?t.key.trim():``;if(!n)return null;let i=jn(n,r),a=t.type===`textarea`||t.type===`number`||t.type===`datepicker`||t.type===`switch`||t.type===`select`||t.type===`slider`?t.type:`input`,o=Array.isArray(t.validations)?t.validations.map(e=>Fn(e)).filter(e=>e!==null):[],s=rn({id:n,required:t.required===!0?!0:void 0,validations:o}).map(e=>({id:e.id,type:e.type,value:e.value,message:e.message})),c=In(t.controller,a),l=rn({id:n,validations:s}).length>0;return{id:n,key:i,type:a,label:Y(t.label),description:Y(t.description),errorMessage:Y(t.errorMessage),required:s.some(e=>e.type===`required`)?!0:void 0,controller:c,validations:s,hasValidations:l?!0:void 0,isInvalid:Rn({key:i,type:a,controller:c,validations:s})?!0:void 0}}function Bn(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``,r=typeof t.title==`string`?t.title.trim():``,i=typeof t.description==`string`?t.description.trim():``;return n?{id:n,title:r||void 0,description:i||void 0,hasDisplayCondition:t.hasDisplayCondition===!0?!0:void 0,layout:On(t.layout),fields:Array.isArray(t.fields)?t.fields.map(e=>zn(e)).filter(e=>e!==null):[]}:null}function Q(e,t){let n=e??{};return{id:typeof n.id==`string`&&n.id.trim()?n.id:t,fieldGroups:Array.isArray(n.fieldGroups)?n.fieldGroups.map(e=>Bn(e)).filter(e=>e!==null):[]}}function Vn(){return{id:o(),layout:{base:1,xs:1,sm:1,md:1,xl:1},fields:[]}}function Hn(e){let t=new Set(e.map(e=>e.key.trim().toLowerCase()).filter(Boolean)),n=1;for(;t.has(`f${n}`);)n+=1;return`F${n}`}function Un(e,t=c(4)){return{id:o(),key:t,type:e,controller:Z(e),validations:[]}}function Wn(e){return e===1}function Gn(e){return{id:e,maxSelection:1,shuffleOptions:!1,options:[]}}function Kn(e){return`options.${e}.label`}function qn(e){return`embeddedForms.${e}`}function Jn(e){return`embedded.${e}`}function Yn(e,t){return`${Jn(e)}.${t}`}function Xn(e){return $(e.key??``)||e.id}function Zn(e){return!!(e.embeddedFormItemId||e.embeddedForm?.fieldGroups.length)}function $(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)}function Qn(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``;if(!n)return null;let r=typeof t.key==`string`?t.key.trim():``,i=typeof t.embeddedFormItemId==`string`?t.embeddedFormItemId.trim():``;return{id:n,key:r||void 0,hasDisplayCondition:t.hasDisplayCondition===!0?!0:void 0,embeddedFormItemId:i||void 0,embeddedForm:t.embeddedForm?Q(t.embeddedForm,n):void 0}}function $n(e){let t=`maxSelection`in e&&e.maxSelection!==void 0,n=e.maxSelection;if(n===null)return null;if(typeof n==`number`&&Number.isFinite(n)){let e=Math.floor(n);return e>=1?e:1}if(typeof n==`string`){let e=Number.parseInt(n.trim(),10);if(Number.isFinite(e)&&e>=1)return e}return!t&&e.mode===`multiple`?null:1}function er(e,t){let n=e??{};return{id:typeof n.id==`string`&&n.id.trim()?n.id:t,maxSelection:$n(n),shuffleOptions:n.shuffleOptions===!0,options:Array.isArray(n.options)?n.options.map(e=>Qn(e)).filter(e=>e!==null):[]}}function tr(e){let t=new Set(e.map(e=>$(e.key??``).match(/^opt_(\d+)$/)?.[1]).filter(e=>e!==void 0).map(e=>Number.parseInt(e,10)).filter(e=>Number.isFinite(e))),n=1;for(;t.has(n);)n+=1;return{id:o(),key:`opt_${n}`}}function nr(e,t){let n=tr(t);return{...e,id:n.id,key:n.key,embeddedForm:e.embeddedForm?i(e.embeddedForm):void 0}}function rr(e){return e.type===`number`||e.type===`slider`?m.number:e.type===`datepicker`?m.date:e.type===`switch`?m.boolean:m.string}var ir=class extends v{type=`infoItem`;parseConfig(e){return e??{}}isInteractive(){return!1}getResponseSlotDefinitions(){return[]}},ar=class extends v{type=`formItem`;parseConfig(e){return Q(e,this.id)}isInteractive(){return!0}getResponseSlotDefinitions(){return this.config.fieldGroups.flatMap(e=>e.fields.map(e=>({slotId:e.key,key:e.key,keyPath:[`response`],valueType:rr(e),prefillTarget:{type:_.field,fieldId:e.id}})))}},or=class extends v{type=`choiceItem`;parseConfig(e){return er(e,this.id)}isInteractive(){return!0}getResponseSlotDefinitions(){let e=this.config.id??this.id,t=this.config.maxSelection===1?m.reference:m.referenceArray,n=this.config.options.flatMap(e=>{let t=e.embeddedForm?Q(e.embeddedForm,e.id):void 0;return t?t.fieldGroups.flatMap(t=>t.fields.map(t=>({slotId:Yn(e.id,t.key),key:t.key,keyPath:[`embedded`,Xn(e)],valueType:rr(t),prefillTarget:{type:_.embeddedField,optionId:e.id,fieldId:t.id}}))):[]});return[{slotId:e,key:`response`,keyPath:[],valueType:t,prefillTarget:{type:_.itemResponse}},...n]}normalizePrefillValue(e,t,n){if(t.prefillTarget?.type!==_.itemResponse)return super.normalizePrefillValue(e,t,n);let r=new Set(this.config.options.map(e=>e.id));if(this.config.maxSelection===1)return n.type!==m.reference||!r.has(n.value)?void 0:n;if(n.type!==m.referenceArray)return;let i=n.value.filter(e=>r.has(e));if(i.length!==0)return i.length===n.value.length?n:{...n,value:i}}};Object.defineProperty(exports,`$`,{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return Kt}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return Hn}}),Object.defineProperty(exports,`Ct`,{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return bn}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return Dn}}),Object.defineProperty(exports,`Et`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,`G`,{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,`H`,{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`J`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`K`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return Vt}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return xn}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return St}}),Object.defineProperty(exports,`Q`,{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return Mn}}),Object.defineProperty(exports,`St`,{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,`Tt`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`U`,{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,`W`,{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,`X`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`Y`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`Z`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return kn}}),Object.defineProperty(exports,`_t`,{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Zn}}),Object.defineProperty(exports,`at`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return vn}}),Object.defineProperty(exports,`bt`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return nr}}),Object.defineProperty(exports,`ct`,{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Kn}}),Object.defineProperty(exports,`dt`,{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,`et`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return er}}),Object.defineProperty(exports,`ft`,{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return Vn}}),Object.defineProperty(exports,`gt`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Un}}),Object.defineProperty(exports,`ht`,{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Wn}}),Object.defineProperty(exports,`it`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return tn}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return Wt}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Yn}}),Object.defineProperty(exports,`lt`,{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return nn}}),Object.defineProperty(exports,`mt`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return ar}}),Object.defineProperty(exports,`nt`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Gn}}),Object.defineProperty(exports,`ot`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`pt`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ir}}),Object.defineProperty(exports,`rt`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return tr}}),Object.defineProperty(exports,`st`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return or}}),Object.defineProperty(exports,`tt`,{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return qn}}),Object.defineProperty(exports,`ut`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return yn}}),Object.defineProperty(exports,`vt`,{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`wt`,{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`xt`,{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return cn}}),Object.defineProperty(exports,`yt`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return k}});
10
- //# sourceMappingURL=default-item-cores-C6VK2LFe.js.map