@mj-biz-apps/forms-ng 0.0.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/dist/lib/builder/builder-models.d.ts +27 -0
  2. package/dist/lib/builder/builder-models.d.ts.map +1 -0
  3. package/dist/lib/builder/builder-models.js +15 -0
  4. package/dist/lib/builder/builder-models.js.map +1 -0
  5. package/dist/lib/builder/builder-state.service.d.ts +48 -0
  6. package/dist/lib/builder/builder-state.service.d.ts.map +1 -0
  7. package/dist/lib/builder/builder-state.service.js +231 -0
  8. package/dist/lib/builder/builder-state.service.js.map +1 -0
  9. package/dist/lib/builder/builder-styles.d.ts +12 -0
  10. package/dist/lib/builder/builder-styles.d.ts.map +1 -0
  11. package/dist/lib/builder/builder-styles.js +74 -0
  12. package/dist/lib/builder/builder-styles.js.map +1 -0
  13. package/dist/lib/builder/conditional-rule-editor.component.d.ts +53 -0
  14. package/dist/lib/builder/conditional-rule-editor.component.d.ts.map +1 -0
  15. package/dist/lib/builder/conditional-rule-editor.component.js +282 -0
  16. package/dist/lib/builder/conditional-rule-editor.component.js.map +1 -0
  17. package/dist/lib/builder/design-panel.component.d.ts +71 -0
  18. package/dist/lib/builder/design-panel.component.d.ts.map +1 -0
  19. package/dist/lib/builder/design-panel.component.js +530 -0
  20. package/dist/lib/builder/design-panel.component.js.map +1 -0
  21. package/dist/lib/builder/design-panel.styles.d.ts +10 -0
  22. package/dist/lib/builder/design-panel.styles.d.ts.map +1 -0
  23. package/dist/lib/builder/design-panel.styles.js +78 -0
  24. package/dist/lib/builder/design-panel.styles.js.map +1 -0
  25. package/dist/lib/builder/design-state.service.d.ts +51 -0
  26. package/dist/lib/builder/design-state.service.d.ts.map +1 -0
  27. package/dist/lib/builder/design-state.service.js +108 -0
  28. package/dist/lib/builder/design-state.service.js.map +1 -0
  29. package/dist/lib/builder/distribution-links.d.ts +29 -0
  30. package/dist/lib/builder/distribution-links.d.ts.map +1 -0
  31. package/dist/lib/builder/distribution-links.js +53 -0
  32. package/dist/lib/builder/distribution-links.js.map +1 -0
  33. package/dist/lib/builder/distribution-manager.component.d.ts +53 -0
  34. package/dist/lib/builder/distribution-manager.component.d.ts.map +1 -0
  35. package/dist/lib/builder/distribution-manager.component.js +330 -0
  36. package/dist/lib/builder/distribution-manager.component.js.map +1 -0
  37. package/dist/lib/builder/distribution.service.d.ts +62 -0
  38. package/dist/lib/builder/distribution.service.d.ts.map +1 -0
  39. package/dist/lib/builder/distribution.service.js +140 -0
  40. package/dist/lib/builder/distribution.service.js.map +1 -0
  41. package/dist/lib/builder/entity-names.d.ts +20 -0
  42. package/dist/lib/builder/entity-names.d.ts.map +1 -0
  43. package/dist/lib/builder/entity-names.js +20 -0
  44. package/dist/lib/builder/entity-names.js.map +1 -0
  45. package/dist/lib/builder/form-builder.component.d.ts +92 -0
  46. package/dist/lib/builder/form-builder.component.d.ts.map +1 -0
  47. package/dist/lib/builder/form-builder.component.js +627 -0
  48. package/dist/lib/builder/form-builder.component.js.map +1 -0
  49. package/dist/lib/builder/form-builder.styles.d.ts +3 -0
  50. package/dist/lib/builder/form-builder.styles.d.ts.map +1 -0
  51. package/dist/lib/builder/form-builder.styles.js +94 -0
  52. package/dist/lib/builder/form-builder.styles.js.map +1 -0
  53. package/dist/lib/builder/form-preview-modal.component.d.ts +25 -0
  54. package/dist/lib/builder/form-preview-modal.component.d.ts.map +1 -0
  55. package/dist/lib/builder/form-preview-modal.component.js +90 -0
  56. package/dist/lib/builder/form-preview-modal.component.js.map +1 -0
  57. package/dist/lib/builder/index.d.ts +31 -0
  58. package/dist/lib/builder/index.d.ts.map +1 -0
  59. package/dist/lib/builder/index.js +32 -0
  60. package/dist/lib/builder/index.js.map +1 -0
  61. package/dist/lib/builder/json-fields.d.ts +14 -0
  62. package/dist/lib/builder/json-fields.d.ts.map +1 -0
  63. package/dist/lib/builder/json-fields.js +100 -0
  64. package/dist/lib/builder/json-fields.js.map +1 -0
  65. package/dist/lib/builder/publish.service.d.ts +34 -0
  66. package/dist/lib/builder/publish.service.d.ts.map +1 -0
  67. package/dist/lib/builder/publish.service.js +110 -0
  68. package/dist/lib/builder/publish.service.js.map +1 -0
  69. package/dist/lib/builder/qr-code.d.ts +26 -0
  70. package/dist/lib/builder/qr-code.d.ts.map +1 -0
  71. package/dist/lib/builder/qr-code.js +361 -0
  72. package/dist/lib/builder/qr-code.js.map +1 -0
  73. package/dist/lib/builder/question-editor.component.d.ts +41 -0
  74. package/dist/lib/builder/question-editor.component.d.ts.map +1 -0
  75. package/dist/lib/builder/question-editor.component.js +228 -0
  76. package/dist/lib/builder/question-editor.component.js.map +1 -0
  77. package/dist/lib/builder/question-type-catalog.d.ts +29 -0
  78. package/dist/lib/builder/question-type-catalog.d.ts.map +1 -0
  79. package/dist/lib/builder/question-type-catalog.js +43 -0
  80. package/dist/lib/builder/question-type-catalog.js.map +1 -0
  81. package/dist/lib/builder/reorder.d.ts +10 -0
  82. package/dist/lib/builder/reorder.d.ts.map +1 -0
  83. package/dist/lib/builder/reorder.js +18 -0
  84. package/dist/lib/builder/reorder.js.map +1 -0
  85. package/dist/lib/builder/snapshot-builder.d.ts +16 -0
  86. package/dist/lib/builder/snapshot-builder.d.ts.map +1 -0
  87. package/dist/lib/builder/snapshot-builder.js +93 -0
  88. package/dist/lib/builder/snapshot-builder.js.map +1 -0
  89. package/dist/lib/builder/style-tokens.d.ts +54 -0
  90. package/dist/lib/builder/style-tokens.d.ts.map +1 -0
  91. package/dist/lib/builder/style-tokens.js +71 -0
  92. package/dist/lib/builder/style-tokens.js.map +1 -0
  93. package/dist/lib/builder/validation-rule-editor.component.d.ts +27 -0
  94. package/dist/lib/builder/validation-rule-editor.component.d.ts.map +1 -0
  95. package/dist/lib/builder/validation-rule-editor.component.js +179 -0
  96. package/dist/lib/builder/validation-rule-editor.component.js.map +1 -0
  97. package/dist/lib/dashboard/components/distribution-chart.component.d.ts +14 -0
  98. package/dist/lib/dashboard/components/distribution-chart.component.d.ts.map +1 -0
  99. package/dist/lib/dashboard/components/distribution-chart.component.js +85 -0
  100. package/dist/lib/dashboard/components/distribution-chart.component.js.map +1 -0
  101. package/dist/lib/dashboard/components/funnel-chart.component.d.ts +14 -0
  102. package/dist/lib/dashboard/components/funnel-chart.component.d.ts.map +1 -0
  103. package/dist/lib/dashboard/components/funnel-chart.component.js +101 -0
  104. package/dist/lib/dashboard/components/funnel-chart.component.js.map +1 -0
  105. package/dist/lib/dashboard/components/question-breakdown.component.d.ts +16 -0
  106. package/dist/lib/dashboard/components/question-breakdown.component.d.ts.map +1 -0
  107. package/dist/lib/dashboard/components/question-breakdown.component.js +213 -0
  108. package/dist/lib/dashboard/components/question-breakdown.component.js.map +1 -0
  109. package/dist/lib/dashboard/components/response-detail.component.d.ts +11 -0
  110. package/dist/lib/dashboard/components/response-detail.component.d.ts.map +1 -0
  111. package/dist/lib/dashboard/components/response-detail.component.js +113 -0
  112. package/dist/lib/dashboard/components/response-detail.component.js.map +1 -0
  113. package/dist/lib/dashboard/components/response-list.component.d.ts +27 -0
  114. package/dist/lib/dashboard/components/response-list.component.d.ts.map +1 -0
  115. package/dist/lib/dashboard/components/response-list.component.js +196 -0
  116. package/dist/lib/dashboard/components/response-list.component.js.map +1 -0
  117. package/dist/lib/dashboard/components/summary-stats.component.d.ts +12 -0
  118. package/dist/lib/dashboard/components/summary-stats.component.d.ts.map +1 -0
  119. package/dist/lib/dashboard/components/summary-stats.component.js +112 -0
  120. package/dist/lib/dashboard/components/summary-stats.component.js.map +1 -0
  121. package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts +64 -0
  122. package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts.map +1 -0
  123. package/dist/lib/dashboard/forms-reporting-dashboard.component.js +397 -0
  124. package/dist/lib/dashboard/forms-reporting-dashboard.component.js.map +1 -0
  125. package/dist/lib/dashboard/index.d.ts +19 -0
  126. package/dist/lib/dashboard/index.d.ts.map +1 -0
  127. package/dist/lib/dashboard/index.js +19 -0
  128. package/dist/lib/dashboard/index.js.map +1 -0
  129. package/dist/lib/dashboard/models/reporting.model.d.ts +125 -0
  130. package/dist/lib/dashboard/models/reporting.model.d.ts.map +1 -0
  131. package/dist/lib/dashboard/models/reporting.model.js +2 -0
  132. package/dist/lib/dashboard/models/reporting.model.js.map +1 -0
  133. package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts +21 -0
  134. package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts.map +1 -0
  135. package/dist/lib/dashboard/services/forms-reporting-export.service.js +83 -0
  136. package/dist/lib/dashboard/services/forms-reporting-export.service.js.map +1 -0
  137. package/dist/lib/dashboard/services/forms-reporting-mock.d.ts +18 -0
  138. package/dist/lib/dashboard/services/forms-reporting-mock.d.ts.map +1 -0
  139. package/dist/lib/dashboard/services/forms-reporting-mock.js +147 -0
  140. package/dist/lib/dashboard/services/forms-reporting-mock.js.map +1 -0
  141. package/dist/lib/dashboard/services/forms-reporting.service.d.ts +45 -0
  142. package/dist/lib/dashboard/services/forms-reporting.service.d.ts.map +1 -0
  143. package/dist/lib/dashboard/services/forms-reporting.service.js +230 -0
  144. package/dist/lib/dashboard/services/forms-reporting.service.js.map +1 -0
  145. package/dist/lib/dashboard/services/reporting-aggregations.d.ts +40 -0
  146. package/dist/lib/dashboard/services/reporting-aggregations.d.ts.map +1 -0
  147. package/dist/lib/dashboard/services/reporting-aggregations.js +379 -0
  148. package/dist/lib/dashboard/services/reporting-aggregations.js.map +1 -0
  149. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts +10 -0
  150. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts.map +1 -0
  151. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js +104 -0
  152. package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js.map +1 -0
  153. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts +10 -0
  154. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts.map +1 -0
  155. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js +83 -0
  156. package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js.map +1 -0
  157. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts +10 -0
  158. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts.map +1 -0
  159. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js +96 -0
  160. package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js.map +1 -0
  161. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts +10 -0
  162. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts.map +1 -0
  163. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js +83 -0
  164. package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js.map +1 -0
  165. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts +10 -0
  166. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts.map +1 -0
  167. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js +96 -0
  168. package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js.map +1 -0
  169. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts +10 -0
  170. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts.map +1 -0
  171. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +172 -0
  172. package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -0
  173. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts +10 -0
  174. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts.map +1 -0
  175. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js +90 -0
  176. package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js.map +1 -0
  177. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts +10 -0
  178. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -0
  179. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +274 -0
  180. package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -0
  181. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts +10 -0
  182. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -0
  183. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +91 -0
  184. package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -0
  185. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts +10 -0
  186. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts.map +1 -0
  187. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js +100 -0
  188. package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js.map +1 -0
  189. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts +10 -0
  190. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts.map +1 -0
  191. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js +174 -0
  192. package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js.map +1 -0
  193. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts +10 -0
  194. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts.map +1 -0
  195. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js +118 -0
  196. package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js.map +1 -0
  197. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts +10 -0
  198. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts.map +1 -0
  199. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js +93 -0
  200. package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js.map +1 -0
  201. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts +10 -0
  202. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts.map +1 -0
  203. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js +96 -0
  204. package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js.map +1 -0
  205. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts +10 -0
  206. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts.map +1 -0
  207. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js +132 -0
  208. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js.map +1 -0
  209. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts +10 -0
  210. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts.map +1 -0
  211. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js +77 -0
  212. package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js.map +1 -0
  213. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts +10 -0
  214. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts.map +1 -0
  215. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js +108 -0
  216. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js.map +1 -0
  217. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts +10 -0
  218. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts.map +1 -0
  219. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js +99 -0
  220. package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js.map +1 -0
  221. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts +10 -0
  222. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts.map +1 -0
  223. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js +100 -0
  224. package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js.map +1 -0
  225. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts +10 -0
  226. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts.map +1 -0
  227. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js +96 -0
  228. package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js.map +1 -0
  229. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts +10 -0
  230. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts.map +1 -0
  231. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js +274 -0
  232. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js.map +1 -0
  233. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts +10 -0
  234. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts.map +1 -0
  235. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js +67 -0
  236. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js.map +1 -0
  237. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts +10 -0
  238. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts.map +1 -0
  239. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js +90 -0
  240. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js.map +1 -0
  241. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts +10 -0
  242. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts.map +1 -0
  243. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js +124 -0
  244. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js.map +1 -0
  245. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts +10 -0
  246. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts.map +1 -0
  247. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js +86 -0
  248. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js.map +1 -0
  249. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts +10 -0
  250. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts.map +1 -0
  251. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js +67 -0
  252. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js.map +1 -0
  253. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts +10 -0
  254. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts.map +1 -0
  255. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js +86 -0
  256. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js.map +1 -0
  257. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts +10 -0
  258. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts.map +1 -0
  259. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js +61 -0
  260. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js.map +1 -0
  261. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts +10 -0
  262. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts.map +1 -0
  263. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js +63 -0
  264. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js.map +1 -0
  265. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts +10 -0
  266. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts.map +1 -0
  267. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js +69 -0
  268. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js.map +1 -0
  269. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts +10 -0
  270. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts.map +1 -0
  271. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js +63 -0
  272. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js.map +1 -0
  273. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts +10 -0
  274. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts.map +1 -0
  275. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js +98 -0
  276. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js.map +1 -0
  277. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts +10 -0
  278. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts.map +1 -0
  279. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js +80 -0
  280. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js.map +1 -0
  281. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts +10 -0
  282. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts.map +1 -0
  283. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js +59 -0
  284. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js.map +1 -0
  285. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts +10 -0
  286. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts.map +1 -0
  287. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js +84 -0
  288. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js.map +1 -0
  289. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts +10 -0
  290. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts.map +1 -0
  291. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js +146 -0
  292. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js.map +1 -0
  293. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts +10 -0
  294. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts.map +1 -0
  295. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js +61 -0
  296. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js.map +1 -0
  297. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts +10 -0
  298. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts.map +1 -0
  299. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js +59 -0
  300. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js.map +1 -0
  301. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts +10 -0
  302. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts.map +1 -0
  303. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js +132 -0
  304. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js.map +1 -0
  305. package/dist/lib/generated/class-registrations-manifest.d.ts +6 -0
  306. package/dist/lib/generated/class-registrations-manifest.d.ts.map +1 -0
  307. package/dist/lib/generated/class-registrations-manifest.js +6 -0
  308. package/dist/lib/generated/class-registrations-manifest.js.map +1 -0
  309. package/dist/lib/generated/generated-forms.module.d.ts +61 -0
  310. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -0
  311. package/dist/lib/generated/generated-forms.module.js +207 -0
  312. package/dist/lib/generated/generated-forms.module.js.map +1 -0
  313. package/dist/lib/home/forms-home-dashboard.component.d.ts +61 -0
  314. package/dist/lib/home/forms-home-dashboard.component.d.ts.map +1 -0
  315. package/dist/lib/home/forms-home-dashboard.component.js +379 -0
  316. package/dist/lib/home/forms-home-dashboard.component.js.map +1 -0
  317. package/dist/lib/home/forms-home.service.d.ts +24 -0
  318. package/dist/lib/home/forms-home.service.d.ts.map +1 -0
  319. package/dist/lib/home/forms-home.service.js +92 -0
  320. package/dist/lib/home/forms-home.service.js.map +1 -0
  321. package/dist/lib/home/home-aggregations.d.ts +23 -0
  322. package/dist/lib/home/home-aggregations.d.ts.map +1 -0
  323. package/dist/lib/home/home-aggregations.js +64 -0
  324. package/dist/lib/home/home-aggregations.js.map +1 -0
  325. package/dist/lib/home/home-models.d.ts +60 -0
  326. package/dist/lib/home/home-models.d.ts.map +1 -0
  327. package/dist/lib/home/home-models.js +34 -0
  328. package/dist/lib/home/home-models.js.map +1 -0
  329. package/dist/lib/home/index.d.ts +13 -0
  330. package/dist/lib/home/index.d.ts.map +1 -0
  331. package/dist/lib/home/index.js +13 -0
  332. package/dist/lib/home/index.js.map +1 -0
  333. package/dist/lib/widget/api/form-upload.service.d.ts +41 -0
  334. package/dist/lib/widget/api/form-upload.service.d.ts.map +1 -0
  335. package/dist/lib/widget/api/form-upload.service.js +124 -0
  336. package/dist/lib/widget/api/form-upload.service.js.map +1 -0
  337. package/dist/lib/widget/api/forms-api.config.d.ts +55 -0
  338. package/dist/lib/widget/api/forms-api.config.d.ts.map +1 -0
  339. package/dist/lib/widget/api/forms-api.config.js +40 -0
  340. package/dist/lib/widget/api/forms-api.config.js.map +1 -0
  341. package/dist/lib/widget/api/forms-api.graphql.service.d.ts +20 -0
  342. package/dist/lib/widget/api/forms-api.graphql.service.d.ts.map +1 -0
  343. package/dist/lib/widget/api/forms-api.graphql.service.js +96 -0
  344. package/dist/lib/widget/api/forms-api.graphql.service.js.map +1 -0
  345. package/dist/lib/widget/api/forms-api.interface.d.ts +45 -0
  346. package/dist/lib/widget/api/forms-api.interface.d.ts.map +1 -0
  347. package/dist/lib/widget/api/forms-api.interface.js +8 -0
  348. package/dist/lib/widget/api/forms-api.interface.js.map +1 -0
  349. package/dist/lib/widget/api/forms-api.mock.service.d.ts +12 -0
  350. package/dist/lib/widget/api/forms-api.mock.service.d.ts.map +1 -0
  351. package/dist/lib/widget/api/forms-api.mock.service.js +41 -0
  352. package/dist/lib/widget/api/forms-api.mock.service.js.map +1 -0
  353. package/dist/lib/widget/api/mock-form.data.d.ts +8 -0
  354. package/dist/lib/widget/api/mock-form.data.d.ts.map +1 -0
  355. package/dist/lib/widget/api/mock-form.data.js +192 -0
  356. package/dist/lib/widget/api/mock-form.data.js.map +1 -0
  357. package/dist/lib/widget/api/submission-mapping.d.ts +60 -0
  358. package/dist/lib/widget/api/submission-mapping.d.ts.map +1 -0
  359. package/dist/lib/widget/api/submission-mapping.js +47 -0
  360. package/dist/lib/widget/api/submission-mapping.js.map +1 -0
  361. package/dist/lib/widget/components/form-one-question.component.d.ts +43 -0
  362. package/dist/lib/widget/components/form-one-question.component.d.ts.map +1 -0
  363. package/dist/lib/widget/components/form-one-question.component.js +194 -0
  364. package/dist/lib/widget/components/form-one-question.component.js.map +1 -0
  365. package/dist/lib/widget/components/form-progress.component.d.ts +9 -0
  366. package/dist/lib/widget/components/form-progress.component.d.ts.map +1 -0
  367. package/dist/lib/widget/components/form-progress.component.js +47 -0
  368. package/dist/lib/widget/components/form-progress.component.js.map +1 -0
  369. package/dist/lib/widget/components/form-scroll.component.d.ts +23 -0
  370. package/dist/lib/widget/components/form-scroll.component.d.ts.map +1 -0
  371. package/dist/lib/widget/components/form-scroll.component.js +132 -0
  372. package/dist/lib/widget/components/form-scroll.component.js.map +1 -0
  373. package/dist/lib/widget/components/questions/form-question.component.d.ts +68 -0
  374. package/dist/lib/widget/components/questions/form-question.component.d.ts.map +1 -0
  375. package/dist/lib/widget/components/questions/form-question.component.js +541 -0
  376. package/dist/lib/widget/components/questions/form-question.component.js.map +1 -0
  377. package/dist/lib/widget/components/questions/input-mode.d.ts +13 -0
  378. package/dist/lib/widget/components/questions/input-mode.d.ts.map +1 -0
  379. package/dist/lib/widget/components/questions/input-mode.js +42 -0
  380. package/dist/lib/widget/components/questions/input-mode.js.map +1 -0
  381. package/dist/lib/widget/components/turnstile-challenge.component.d.ts +52 -0
  382. package/dist/lib/widget/components/turnstile-challenge.component.d.ts.map +1 -0
  383. package/dist/lib/widget/components/turnstile-challenge.component.js +123 -0
  384. package/dist/lib/widget/components/turnstile-challenge.component.js.map +1 -0
  385. package/dist/lib/widget/core/answer-value.d.ts +17 -0
  386. package/dist/lib/widget/core/answer-value.d.ts.map +1 -0
  387. package/dist/lib/widget/core/answer-value.js +41 -0
  388. package/dist/lib/widget/core/answer-value.js.map +1 -0
  389. package/dist/lib/widget/core/autosave-controller.d.ts +65 -0
  390. package/dist/lib/widget/core/autosave-controller.d.ts.map +1 -0
  391. package/dist/lib/widget/core/autosave-controller.js +134 -0
  392. package/dist/lib/widget/core/autosave-controller.js.map +1 -0
  393. package/dist/lib/widget/core/client-id.d.ts +17 -0
  394. package/dist/lib/widget/core/client-id.d.ts.map +1 -0
  395. package/dist/lib/widget/core/client-id.js +52 -0
  396. package/dist/lib/widget/core/client-id.js.map +1 -0
  397. package/dist/lib/widget/core/form-runtime.d.ts +34 -0
  398. package/dist/lib/widget/core/form-runtime.d.ts.map +1 -0
  399. package/dist/lib/widget/core/form-runtime.js +123 -0
  400. package/dist/lib/widget/core/form-runtime.js.map +1 -0
  401. package/dist/lib/widget/core/one-question-stepper.d.ts +20 -0
  402. package/dist/lib/widget/core/one-question-stepper.d.ts.map +1 -0
  403. package/dist/lib/widget/core/one-question-stepper.js +23 -0
  404. package/dist/lib/widget/core/one-question-stepper.js.map +1 -0
  405. package/dist/lib/widget/core/submit-phase.d.ts +31 -0
  406. package/dist/lib/widget/core/submit-phase.d.ts.map +1 -0
  407. package/dist/lib/widget/core/submit-phase.js +21 -0
  408. package/dist/lib/widget/core/submit-phase.js.map +1 -0
  409. package/dist/lib/widget/core/theming.d.ts +17 -0
  410. package/dist/lib/widget/core/theming.d.ts.map +1 -0
  411. package/dist/lib/widget/core/theming.js +36 -0
  412. package/dist/lib/widget/core/theming.js.map +1 -0
  413. package/dist/lib/widget/core/turnstile-gate.d.ts +42 -0
  414. package/dist/lib/widget/core/turnstile-gate.d.ts.map +1 -0
  415. package/dist/lib/widget/core/turnstile-gate.js +61 -0
  416. package/dist/lib/widget/core/turnstile-gate.js.map +1 -0
  417. package/dist/lib/widget/core/turnstile-loader.d.ts +34 -0
  418. package/dist/lib/widget/core/turnstile-loader.d.ts.map +1 -0
  419. package/dist/lib/widget/core/turnstile-loader.js +68 -0
  420. package/dist/lib/widget/core/turnstile-loader.js.map +1 -0
  421. package/dist/lib/widget/core/validation.d.ts +19 -0
  422. package/dist/lib/widget/core/validation.d.ts.map +1 -0
  423. package/dist/lib/widget/core/validation.js +105 -0
  424. package/dist/lib/widget/core/validation.js.map +1 -0
  425. package/dist/lib/widget/index.d.ts +27 -0
  426. package/dist/lib/widget/index.d.ts.map +1 -0
  427. package/dist/lib/widget/index.js +30 -0
  428. package/dist/lib/widget/index.js.map +1 -0
  429. package/dist/lib/widget/mj-form.component.d.ts +114 -0
  430. package/dist/lib/widget/mj-form.component.d.ts.map +1 -0
  431. package/dist/lib/widget/mj-form.component.js +428 -0
  432. package/dist/lib/widget/mj-form.component.js.map +1 -0
  433. package/dist/lib/widget/register-element.d.ts +8 -0
  434. package/dist/lib/widget/register-element.d.ts.map +1 -0
  435. package/dist/lib/widget/register-element.js +98 -0
  436. package/dist/lib/widget/register-element.js.map +1 -0
  437. package/dist/public-api.d.ts +23 -0
  438. package/dist/public-api.d.ts.map +1 -0
  439. package/dist/public-api.js +33 -0
  440. package/dist/public-api.js.map +1 -0
  441. package/dist/widget-entry.d.ts +2 -0
  442. package/dist/widget-entry.d.ts.map +1 -0
  443. package/dist/widget-entry.js +20 -0
  444. package/dist/widget-entry.js.map +1 -0
  445. package/package.json +53 -5
  446. package/README.md +0 -3
@@ -0,0 +1,228 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { BUILDER_CONTROL_STYLES } from './builder-styles';
5
+ import { questionTypeHasOptions, questionTypeMeta } from './question-type-catalog';
6
+ import { ConditionalRuleEditorComponent, } from './conditional-rule-editor.component';
7
+ import { ValidationRuleEditorComponent } from './validation-rule-editor.component';
8
+ import { parseConditionalRule, parseValidationRule, serializeConditionalRule, serializeValidationRule, } from './json-fields';
9
+ import * as i0 from "@angular/core";
10
+ const _forTrack0 = ($index, $item) => $item.ID;
11
+ function QuestionEditorComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementStart(0, "div", 3);
13
+ i0.ɵɵtext(1, "Select a question to edit its settings.");
14
+ i0.ɵɵelementEnd();
15
+ } }
16
+ function QuestionEditorComponent_Conditional_1_Conditional_19_For_5_Template(rf, ctx) { if (rf & 1) {
17
+ const _r6 = i0.ɵɵgetCurrentView();
18
+ i0.ɵɵelementStart(0, "div", 20)(1, "input", 23, 2);
19
+ i0.ɵɵlistener("change", function QuestionEditorComponent_Conditional_1_Conditional_19_For_5_Template_input_change_1_listener() { const $index_r7 = i0.ɵɵrestoreView(_r6).$index; const optInput_r8 = i0.ɵɵreference(2); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.setOptionLabel($index_r7, optInput_r8.value)); });
20
+ i0.ɵɵelementEnd();
21
+ i0.ɵɵelementStart(3, "button", 24);
22
+ i0.ɵɵlistener("click", function QuestionEditorComponent_Conditional_1_Conditional_19_For_5_Template_button_click_3_listener() { const $index_r7 = i0.ɵɵrestoreView(_r6).$index; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.removeOption($index_r7)); });
23
+ i0.ɵɵelement(4, "i", 25);
24
+ i0.ɵɵelementEnd()();
25
+ } if (rf & 2) {
26
+ const opt_r9 = ctx.$implicit;
27
+ const $index_r7 = ctx.$index;
28
+ i0.ɵɵadvance();
29
+ i0.ɵɵproperty("value", opt_r9.Label);
30
+ i0.ɵɵattribute("aria-label", "Option " + ($index_r7 + 1));
31
+ } }
32
+ function QuestionEditorComponent_Conditional_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
33
+ const _r5 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "div", 15)(1, "p", 16);
35
+ i0.ɵɵtext(2, "Options");
36
+ i0.ɵɵelementEnd();
37
+ i0.ɵɵelementStart(3, "div", 19);
38
+ i0.ɵɵrepeaterCreate(4, QuestionEditorComponent_Conditional_1_Conditional_19_For_5_Template, 5, 2, "div", 20, _forTrack0);
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(6, "button", 21);
41
+ i0.ɵɵlistener("click", function QuestionEditorComponent_Conditional_1_Conditional_19_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addOption()); });
42
+ i0.ɵɵelement(7, "i", 22);
43
+ i0.ɵɵtext(8, " Add option ");
44
+ i0.ɵɵelementEnd()();
45
+ } if (rf & 2) {
46
+ const ctx_r2 = i0.ɵɵnextContext(2);
47
+ i0.ɵɵadvance(4);
48
+ i0.ɵɵrepeater(ctx_r2.node.options);
49
+ } }
50
+ function QuestionEditorComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
51
+ const _r1 = i0.ɵɵgetCurrentView();
52
+ i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "span", 6);
53
+ i0.ɵɵelement(3, "i", 7);
54
+ i0.ɵɵtext(4);
55
+ i0.ɵɵelementEnd()();
56
+ i0.ɵɵelementStart(5, "div", 8)(6, "label", 9);
57
+ i0.ɵɵtext(7, "Question");
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(8, "textarea", 10, 0);
60
+ i0.ɵɵlistener("change", function QuestionEditorComponent_Conditional_1_Template_textarea_change_8_listener() { i0.ɵɵrestoreView(_r1); const promptInput_r2 = i0.ɵɵreference(9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setPrompt(promptInput_r2.value)); });
61
+ i0.ɵɵelementEnd()();
62
+ i0.ɵɵelementStart(10, "div", 8)(11, "label", 11);
63
+ i0.ɵɵtext(12, "Help text");
64
+ i0.ɵɵelementEnd();
65
+ i0.ɵɵelementStart(13, "input", 12, 1);
66
+ i0.ɵɵlistener("change", function QuestionEditorComponent_Conditional_1_Template_input_change_13_listener() { i0.ɵɵrestoreView(_r1); const helpInput_r4 = i0.ɵɵreference(14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setHelpText(helpInput_r4.value)); });
67
+ i0.ɵɵelementEnd()();
68
+ i0.ɵɵelementStart(15, "div", 13)(16, "span");
69
+ i0.ɵɵtext(17, "Required");
70
+ i0.ɵɵelementEnd();
71
+ i0.ɵɵelementStart(18, "button", 14);
72
+ i0.ɵɵlistener("click", function QuestionEditorComponent_Conditional_1_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleRequired()); });
73
+ i0.ɵɵelementEnd()();
74
+ i0.ɵɵconditionalCreate(19, QuestionEditorComponent_Conditional_1_Conditional_19_Template, 9, 0, "div", 15);
75
+ i0.ɵɵelementStart(20, "div", 15)(21, "p", 16);
76
+ i0.ɵɵtext(22, "Validation");
77
+ i0.ɵɵelementEnd();
78
+ i0.ɵɵelementStart(23, "mjf-validation-rule-editor", 17);
79
+ i0.ɵɵlistener("ruleChange", function QuestionEditorComponent_Conditional_1_Template_mjf_validation_rule_editor_ruleChange_23_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onValidationChange($event)); });
80
+ i0.ɵɵelementEnd()();
81
+ i0.ɵɵelementStart(24, "div", 15)(25, "p", 16);
82
+ i0.ɵɵtext(26, "Conditional logic");
83
+ i0.ɵɵelementEnd();
84
+ i0.ɵɵelementStart(27, "mjf-conditional-rule-editor", 18);
85
+ i0.ɵɵlistener("ruleChange", function QuestionEditorComponent_Conditional_1_Template_mjf_conditional_rule_editor_ruleChange_27_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConditionalChange($event)); });
86
+ i0.ɵɵelementEnd()()();
87
+ } if (rf & 2) {
88
+ const ctx_r2 = i0.ɵɵnextContext();
89
+ i0.ɵɵadvance(3);
90
+ i0.ɵɵclassMap(ctx_r2.typeIcon);
91
+ i0.ɵɵadvance();
92
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.typeLabel);
93
+ i0.ɵɵadvance(4);
94
+ i0.ɵɵproperty("value", ctx_r2.node.entity.Prompt);
95
+ i0.ɵɵadvance(5);
96
+ i0.ɵɵproperty("value", ctx_r2.node.entity.HelpText ?? "");
97
+ i0.ɵɵadvance(5);
98
+ i0.ɵɵclassProp("is-on", ctx_r2.node.entity.IsRequired);
99
+ i0.ɵɵattribute("aria-checked", ctx_r2.node.entity.IsRequired);
100
+ i0.ɵɵadvance();
101
+ i0.ɵɵconditional(ctx_r2.hasOptions ? 19 : -1);
102
+ i0.ɵɵadvance(4);
103
+ i0.ɵɵproperty("questionType", ctx_r2.node.entity.QuestionType)("rule", ctx_r2.validationRule);
104
+ i0.ɵɵadvance(4);
105
+ i0.ɵɵproperty("sources", ctx_r2.conditionalSources)("rule", ctx_r2.conditionalRule);
106
+ } }
107
+ const QUESTION_EDITOR_CSS = /* css */ `
108
+ .qe { display: flex; flex-direction: column; gap: 4px; }
109
+ .qe-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
110
+ .qe-section { border-top: 1px solid var(--mj-border-subtle); padding-top: 14px; margin-top: 6px; }
111
+ .qe-section-title { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--mj-text-muted); margin: 0 0 10px; }
112
+ .qe-required { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
113
+ .qe-required span { font-size: 0.8125rem; font-weight: 600; color: var(--mj-text-secondary); }
114
+ .qe-options { display: flex; flex-direction: column; gap: 6px; }
115
+ .qe-option { display: flex; align-items: center; gap: 6px; }
116
+ .qe-option .mjf-input { flex: 1; }
117
+ .qe-opt-remove { flex: none; width: 30px; height: 30px; cursor: pointer; border-radius: var(--mj-radius-md, 8px); border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); color: var(--mj-text-muted); }
118
+ .qe-opt-remove:hover { background: var(--mj-bg-surface-hover); color: var(--mj-status-error, var(--mj-color-error-600)); }
119
+ .qe-empty { font-size: 0.875rem; color: var(--mj-text-muted); padding: 24px 0; text-align: center; }
120
+ `;
121
+ /**
122
+ * The right-hand properties panel for the selected question. Edits prompt, help
123
+ * text, required, options (for choice types), the conditional-show rule and the
124
+ * validation rule. All edits are written onto the live entity object and announced
125
+ * via {@link questionChanged}; the parent persists.
126
+ */
127
+ export class QuestionEditorComponent {
128
+ node = null;
129
+ /** Questions preceding the selected one — valid sources for a conditional rule. */
130
+ conditionalSources = [];
131
+ /** Emitted whenever a field on the question entity changed (parent persists). */
132
+ questionChanged = new EventEmitter();
133
+ /** Emitted when an option is added (parent persists via the state service). */
134
+ addOptionRequested = new EventEmitter();
135
+ /** Emitted when an option should be removed. */
136
+ removeOptionRequested = new EventEmitter();
137
+ get hasOptions() {
138
+ return this.node ? questionTypeHasOptions(this.node.entity.QuestionType) : false;
139
+ }
140
+ get typeLabel() {
141
+ return this.node ? questionTypeMeta(this.node.entity.QuestionType).label : '';
142
+ }
143
+ get typeIcon() {
144
+ return this.node ? questionTypeMeta(this.node.entity.QuestionType).icon : '';
145
+ }
146
+ get conditionalRule() {
147
+ return this.node ? parseConditionalRule(this.node.entity.ConditionalRule) : undefined;
148
+ }
149
+ get validationRule() {
150
+ return this.node ? parseValidationRule(this.node.entity.ValidationRule) : undefined;
151
+ }
152
+ setPrompt(value) {
153
+ if (!this.node)
154
+ return;
155
+ this.node.entity.Prompt = value;
156
+ this.questionChanged.emit(this.node);
157
+ }
158
+ setHelpText(value) {
159
+ if (!this.node)
160
+ return;
161
+ this.node.entity.HelpText = value.trim() === '' ? null : value;
162
+ this.questionChanged.emit(this.node);
163
+ }
164
+ toggleRequired() {
165
+ if (!this.node)
166
+ return;
167
+ this.node.entity.IsRequired = !this.node.entity.IsRequired;
168
+ this.questionChanged.emit(this.node);
169
+ }
170
+ setOptionLabel(index, value) {
171
+ if (!this.node)
172
+ return;
173
+ this.node.options[index].Label = value;
174
+ this.questionChanged.emit(this.node);
175
+ }
176
+ addOption() {
177
+ if (!this.node)
178
+ return;
179
+ this.addOptionRequested.emit(this.node);
180
+ }
181
+ removeOption(index) {
182
+ if (!this.node)
183
+ return;
184
+ this.removeOptionRequested.emit({ node: this.node, optionIndex: index });
185
+ }
186
+ onConditionalChange(rule) {
187
+ if (!this.node)
188
+ return;
189
+ this.node.entity.ConditionalRule = serializeConditionalRule(rule);
190
+ this.questionChanged.emit(this.node);
191
+ }
192
+ onValidationChange(rule) {
193
+ if (!this.node)
194
+ return;
195
+ this.node.entity.ValidationRule = serializeValidationRule(rule);
196
+ this.questionChanged.emit(this.node);
197
+ }
198
+ static ɵfac = function QuestionEditorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QuestionEditorComponent)(); };
199
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QuestionEditorComponent, selectors: [["mjf-question-editor"]], inputs: { node: "node", conditionalSources: "conditionalSources" }, outputs: { questionChanged: "questionChanged", addOptionRequested: "addOptionRequested", removeOptionRequested: "removeOptionRequested" }, decls: 2, vars: 1, consts: [["promptInput", ""], ["helpInput", ""], ["optInput", ""], [1, "qe-empty"], [1, "qe"], [1, "qe-head"], [1, "mjf-pill"], ["aria-hidden", "true"], [1, "mjf-field"], ["for", "qe-prompt", 1, "mjf-field-label"], ["id", "qe-prompt", "rows", "2", 1, "mjf-input", 3, "change", "value"], ["for", "qe-help", 1, "mjf-field-label"], ["id", "qe-help", "type", "text", "placeholder", "Optional guidance shown under the question", 1, "mjf-input", 3, "change", "value"], [1, "qe-required"], ["type", "button", "role", "switch", "aria-label", "Required", 1, "mjf-switch", 3, "click"], [1, "qe-section"], [1, "qe-section-title"], [3, "ruleChange", "questionType", "rule"], [3, "ruleChange", "sources", "rule"], [1, "qe-options"], [1, "qe-option"], ["type", "button", 1, "mjf-btn", "mjf-btn--ghost", 2, "margin-top", "8px", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["type", "text", 1, "mjf-input", 3, "change", "value"], ["type", "button", "aria-label", "Remove option", 1, "qe-opt-remove", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-xmark"]], template: function QuestionEditorComponent_Template(rf, ctx) { if (rf & 1) {
200
+ i0.ɵɵconditionalCreate(0, QuestionEditorComponent_Conditional_0_Template, 2, 0, "div", 3)(1, QuestionEditorComponent_Conditional_1_Template, 28, 13, "div", 4);
201
+ } if (rf & 2) {
202
+ i0.ɵɵconditional(!ctx.node ? 0 : 1);
203
+ } }, dependencies: [CommonModule,
204
+ FormsModule,
205
+ ConditionalRuleEditorComponent,
206
+ ValidationRuleEditorComponent], styles: ["[_nghost-%COMP%] {\n --mjf-builder-gap: 16px;\n --mjf-builder-radius: var(--mj-radius-md, 8px);\n}\n.mjf-input[_ngcontent-%COMP%] {\n width: 100%;\n box-sizing: border-box;\n padding: 8px 10px;\n font: inherit;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mjf-builder-radius);\n transition: border-color var(--mj-transition-base, 0.15s ease);\n}\n.mjf-input[_ngcontent-%COMP%]:focus {\n outline: 2px solid var(--mjf-focus-ring, var(--mj-brand-primary));\n outline-offset: 1px;\n border-color: var(--mj-brand-primary);\n}\ntextarea.mjf-input[_ngcontent-%COMP%] { min-height: 64px; resize: vertical; }\n.mjf-field[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; margin-bottom: var(--mjf-builder-gap); }\n.mjf-field-label[_ngcontent-%COMP%] { font-size: 0.8125rem; font-weight: 600; color: var(--mj-text-secondary); }\n.mjf-field-hint[_ngcontent-%COMP%] { font-size: 0.75rem; color: var(--mj-text-muted); }\n.mjf-row[_ngcontent-%COMP%] { display: flex; gap: 8px; align-items: center; }\n.mjf-btn[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 8px 14px; font: inherit; font-weight: 600; cursor: pointer;\n border-radius: var(--mjf-btn-radius, var(--mjf-builder-radius));\n border: 1px solid transparent;\n transition: background var(--mj-transition-base, 0.15s ease), border-color var(--mj-transition-base, 0.15s ease);\n}\n.mjf-btn[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--mjf-focus-ring, var(--mj-brand-primary)); outline-offset: 2px; }\n.mjf-btn[_ngcontent-%COMP%]:disabled { opacity: 0.5; cursor: not-allowed; }\n.mjf-btn--primary[_ngcontent-%COMP%] { color: var(--mj-brand-on-primary, var(--mj-text-inverse)); background: var(--mj-brand-primary); }\n.mjf-btn--primary[_ngcontent-%COMP%]:hover:not(:disabled) { background: var(--mj-brand-primary-hover, var(--mj-brand-primary)); }\n.mjf-btn--ghost[_ngcontent-%COMP%] { color: var(--mj-text-secondary); background: transparent; border-color: var(--mj-border-default); }\n.mjf-btn--ghost[_ngcontent-%COMP%]:hover:not(:disabled) { background: var(--mj-bg-surface-hover); }\n.mjf-btn--danger[_ngcontent-%COMP%] { color: var(--mj-status-error, var(--mj-color-error-600)); background: transparent; border-color: var(--mj-border-default); }\n.mjf-btn--danger[_ngcontent-%COMP%]:hover:not(:disabled) { background: var(--mj-bg-surface-hover); }\n.mjf-pill[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center; gap: 5px;\n padding: 3px 9px; font-size: 0.75rem; font-weight: 600;\n border-radius: var(--mjf-pill-radius, var(--mj-radius-full, 999px));\n color: var(--mj-text-secondary); background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n}\n.mjf-switch[_ngcontent-%COMP%] {\n position: relative; display: inline-block; width: 38px; height: 22px; flex: none; cursor: pointer;\n border-radius: var(--mj-radius-full, 999px); background: var(--mj-border-strong);\n transition: background var(--mj-transition-base, 0.15s ease);\n border: none; padding: 0;\n}\n.mjf-switch[_ngcontent-%COMP%]::after {\n content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px;\n border-radius: 50%; background: var(--mj-bg-surface);\n transition: transform var(--mj-transition-base, 0.15s ease);\n}\n.mjf-switch.is-on[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.mjf-switch.is-on[_ngcontent-%COMP%]::after { transform: translateX(16px); }\n.mjf-switch[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--mjf-focus-ring, var(--mj-brand-primary)); outline-offset: 2px; }", ".qe[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; }\n.qe-head[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }\n.qe-section[_ngcontent-%COMP%] { border-top: 1px solid var(--mj-border-subtle); padding-top: 14px; margin-top: 6px; }\n.qe-section-title[_ngcontent-%COMP%] { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--mj-text-muted); margin: 0 0 10px; }\n.qe-required[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: space-between; gap: 10px; }\n.qe-required[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 0.8125rem; font-weight: 600; color: var(--mj-text-secondary); }\n.qe-options[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 6px; }\n.qe-option[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 6px; }\n.qe-option[_ngcontent-%COMP%] .mjf-input[_ngcontent-%COMP%] { flex: 1; }\n.qe-opt-remove[_ngcontent-%COMP%] { flex: none; width: 30px; height: 30px; cursor: pointer; border-radius: var(--mj-radius-md, 8px); border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); color: var(--mj-text-muted); }\n.qe-opt-remove[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-status-error, var(--mj-color-error-600)); }\n.qe-empty[_ngcontent-%COMP%] { font-size: 0.875rem; color: var(--mj-text-muted); padding: 24px 0; text-align: center; }"], changeDetection: 0 });
207
+ }
208
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QuestionEditorComponent, [{
209
+ type: Component,
210
+ args: [{ selector: 'mjf-question-editor', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
211
+ CommonModule,
212
+ FormsModule,
213
+ ConditionalRuleEditorComponent,
214
+ ValidationRuleEditorComponent,
215
+ ], template: "@if (!node) {\n <div class=\"qe-empty\">Select a question to edit its settings.</div>\n} @else {\n <div class=\"qe\">\n <div class=\"qe-head\">\n <span class=\"mjf-pill\"><i [class]=\"typeIcon\" aria-hidden=\"true\"></i> {{ typeLabel }}</span>\n </div>\n\n <div class=\"mjf-field\">\n <label class=\"mjf-field-label\" for=\"qe-prompt\">Question</label>\n <textarea\n #promptInput\n id=\"qe-prompt\"\n class=\"mjf-input\"\n rows=\"2\"\n [value]=\"node.entity.Prompt\"\n (change)=\"setPrompt(promptInput.value)\"\n ></textarea>\n </div>\n\n <div class=\"mjf-field\">\n <label class=\"mjf-field-label\" for=\"qe-help\">Help text</label>\n <input\n #helpInput\n id=\"qe-help\"\n type=\"text\"\n class=\"mjf-input\"\n [value]=\"node.entity.HelpText ?? ''\"\n (change)=\"setHelpText(helpInput.value)\"\n placeholder=\"Optional guidance shown under the question\"\n />\n </div>\n\n <div class=\"qe-required\">\n <span>Required</span>\n <button\n type=\"button\"\n class=\"mjf-switch\"\n [class.is-on]=\"node.entity.IsRequired\"\n role=\"switch\"\n [attr.aria-checked]=\"node.entity.IsRequired\"\n aria-label=\"Required\"\n (click)=\"toggleRequired()\"\n ></button>\n </div>\n\n @if (hasOptions) {\n <div class=\"qe-section\">\n <p class=\"qe-section-title\">Options</p>\n <div class=\"qe-options\">\n @for (opt of node.options; track opt.ID) {\n <div class=\"qe-option\">\n <input\n #optInput\n type=\"text\"\n class=\"mjf-input\"\n [value]=\"opt.Label\"\n (change)=\"setOptionLabel($index, optInput.value)\"\n [attr.aria-label]=\"'Option ' + ($index + 1)\"\n />\n <button\n type=\"button\"\n class=\"qe-opt-remove\"\n (click)=\"removeOption($index)\"\n aria-label=\"Remove option\"\n >\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n </div>\n <button type=\"button\" class=\"mjf-btn mjf-btn--ghost\" style=\"margin-top:8px\" (click)=\"addOption()\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i> Add option\n </button>\n </div>\n }\n\n <div class=\"qe-section\">\n <p class=\"qe-section-title\">Validation</p>\n <mjf-validation-rule-editor\n [questionType]=\"node.entity.QuestionType\"\n [rule]=\"validationRule\"\n (ruleChange)=\"onValidationChange($event)\"\n ></mjf-validation-rule-editor>\n </div>\n\n <div class=\"qe-section\">\n <p class=\"qe-section-title\">Conditional logic</p>\n <mjf-conditional-rule-editor\n [sources]=\"conditionalSources\"\n [rule]=\"conditionalRule\"\n (ruleChange)=\"onConditionalChange($event)\"\n ></mjf-conditional-rule-editor>\n </div>\n </div>\n}\n", styles: ["\n:host {\n --mjf-builder-gap: 16px;\n --mjf-builder-radius: var(--mj-radius-md, 8px);\n}\n.mjf-input {\n width: 100%;\n box-sizing: border-box;\n padding: 8px 10px;\n font: inherit;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mjf-builder-radius);\n transition: border-color var(--mj-transition-base, 0.15s ease);\n}\n.mjf-input:focus {\n outline: 2px solid var(--mjf-focus-ring, var(--mj-brand-primary));\n outline-offset: 1px;\n border-color: var(--mj-brand-primary);\n}\ntextarea.mjf-input { min-height: 64px; resize: vertical; }\n.mjf-field { display: flex; flex-direction: column; gap: 4px; margin-bottom: var(--mjf-builder-gap); }\n.mjf-field-label { font-size: 0.8125rem; font-weight: 600; color: var(--mj-text-secondary); }\n.mjf-field-hint { font-size: 0.75rem; color: var(--mj-text-muted); }\n.mjf-row { display: flex; gap: 8px; align-items: center; }\n.mjf-btn {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 8px 14px; font: inherit; font-weight: 600; cursor: pointer;\n border-radius: var(--mjf-btn-radius, var(--mjf-builder-radius));\n border: 1px solid transparent;\n transition: background var(--mj-transition-base, 0.15s ease), border-color var(--mj-transition-base, 0.15s ease);\n}\n.mjf-btn:focus-visible { outline: 2px solid var(--mjf-focus-ring, var(--mj-brand-primary)); outline-offset: 2px; }\n.mjf-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n.mjf-btn--primary { color: var(--mj-brand-on-primary, var(--mj-text-inverse)); background: var(--mj-brand-primary); }\n.mjf-btn--primary:hover:not(:disabled) { background: var(--mj-brand-primary-hover, var(--mj-brand-primary)); }\n.mjf-btn--ghost { color: var(--mj-text-secondary); background: transparent; border-color: var(--mj-border-default); }\n.mjf-btn--ghost:hover:not(:disabled) { background: var(--mj-bg-surface-hover); }\n.mjf-btn--danger { color: var(--mj-status-error, var(--mj-color-error-600)); background: transparent; border-color: var(--mj-border-default); }\n.mjf-btn--danger:hover:not(:disabled) { background: var(--mj-bg-surface-hover); }\n.mjf-pill {\n display: inline-flex; align-items: center; gap: 5px;\n padding: 3px 9px; font-size: 0.75rem; font-weight: 600;\n border-radius: var(--mjf-pill-radius, var(--mj-radius-full, 999px));\n color: var(--mj-text-secondary); background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n}\n.mjf-switch {\n position: relative; display: inline-block; width: 38px; height: 22px; flex: none; cursor: pointer;\n border-radius: var(--mj-radius-full, 999px); background: var(--mj-border-strong);\n transition: background var(--mj-transition-base, 0.15s ease);\n border: none; padding: 0;\n}\n.mjf-switch::after {\n content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px;\n border-radius: 50%; background: var(--mj-bg-surface);\n transition: transform var(--mj-transition-base, 0.15s ease);\n}\n.mjf-switch.is-on { background: var(--mj-brand-primary); }\n.mjf-switch.is-on::after { transform: translateX(16px); }\n.mjf-switch:focus-visible { outline: 2px solid var(--mjf-focus-ring, var(--mj-brand-primary)); outline-offset: 2px; }\n", "\n.qe { display: flex; flex-direction: column; gap: 4px; }\n.qe-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }\n.qe-section { border-top: 1px solid var(--mj-border-subtle); padding-top: 14px; margin-top: 6px; }\n.qe-section-title { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--mj-text-muted); margin: 0 0 10px; }\n.qe-required { display: flex; align-items: center; justify-content: space-between; gap: 10px; }\n.qe-required span { font-size: 0.8125rem; font-weight: 600; color: var(--mj-text-secondary); }\n.qe-options { display: flex; flex-direction: column; gap: 6px; }\n.qe-option { display: flex; align-items: center; gap: 6px; }\n.qe-option .mjf-input { flex: 1; }\n.qe-opt-remove { flex: none; width: 30px; height: 30px; cursor: pointer; border-radius: var(--mj-radius-md, 8px); border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface); color: var(--mj-text-muted); }\n.qe-opt-remove:hover { background: var(--mj-bg-surface-hover); color: var(--mj-status-error, var(--mj-color-error-600)); }\n.qe-empty { font-size: 0.875rem; color: var(--mj-text-muted); padding: 24px 0; text-align: center; }\n"] }]
216
+ }], null, { node: [{
217
+ type: Input
218
+ }], conditionalSources: [{
219
+ type: Input
220
+ }], questionChanged: [{
221
+ type: Output
222
+ }], addOptionRequested: [{
223
+ type: Output
224
+ }], removeOptionRequested: [{
225
+ type: Output
226
+ }] }); })();
227
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QuestionEditorComponent, { className: "QuestionEditorComponent", filePath: "lib/builder/question-editor.component.ts", lineNumber: 60 }); })();
228
+ //# sourceMappingURL=question-editor.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-editor.component.js","sourceRoot":"","sources":["../../../src/lib/builder/question-editor.component.ts","../../../src/lib/builder/question-editor.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { FormQuestionType } from '@mj-biz-apps/forms-entities';
2
+ /** UI grouping for the "Add question" palette. */
3
+ export type QuestionPaletteGroup = 'Text' | 'Choice' | 'Scale' | 'Advanced';
4
+ /** Static metadata for one Phase-1 question type, driving the palette + preview. */
5
+ export interface QuestionTypeMeta {
6
+ type: FormQuestionType;
7
+ label: string;
8
+ /** Font Awesome icon class (icons only — no hardcoded colors). */
9
+ icon: string;
10
+ group: QuestionPaletteGroup;
11
+ /** Whether this type carries selectable options (Single/Multi/Dropdown). */
12
+ hasOptions: boolean;
13
+ }
14
+ /**
15
+ * The exhaustive Phase-1 question taxonomy (FORMS_BUILD_PLAN §5.3). Order within a
16
+ * group is the palette display order. Kept in lockstep with the `FormQuestionType`
17
+ * union from the shared contract — adding a type to the union without adding it here
18
+ * is a compile error via {@link assertCatalogExhaustive}.
19
+ */
20
+ export declare const QUESTION_TYPE_CATALOG: ReadonlyArray<QuestionTypeMeta>;
21
+ /** Palette groups in display order. */
22
+ export declare const QUESTION_PALETTE_GROUPS: ReadonlyArray<QuestionPaletteGroup>;
23
+ /** Look up the metadata for a question type. Always defined for valid Phase-1 types. */
24
+ export declare function questionTypeMeta(type: FormQuestionType): QuestionTypeMeta;
25
+ /** Whether a question type carries selectable options. */
26
+ export declare function questionTypeHasOptions(type: FormQuestionType): boolean;
27
+ /** The catalog entries belonging to one palette group, in display order. */
28
+ export declare function questionTypesInGroup(group: QuestionPaletteGroup): QuestionTypeMeta[];
29
+ //# sourceMappingURL=question-type-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-type-catalog.d.ts","sourceRoot":"","sources":["../../../src/lib/builder/question-type-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,kDAAkD;AAClD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5E,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,oBAAoB,CAAC;IAC5B,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,gBAAgB,CAgBjE,CAAC;AAMF,uCAAuC;AACvC,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,oBAAoB,CAA2C,CAAC;AAEpH,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAMzE;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEtE;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,EAAE,CAEpF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The exhaustive Phase-1 question taxonomy (FORMS_BUILD_PLAN §5.3). Order within a
3
+ * group is the palette display order. Kept in lockstep with the `FormQuestionType`
4
+ * union from the shared contract — adding a type to the union without adding it here
5
+ * is a compile error via {@link assertCatalogExhaustive}.
6
+ */
7
+ export const QUESTION_TYPE_CATALOG = [
8
+ { type: 'ShortText', label: 'Short text', icon: 'fa-solid fa-font', group: 'Text', hasOptions: false },
9
+ { type: 'LongText', label: 'Long text', icon: 'fa-solid fa-align-left', group: 'Text', hasOptions: false },
10
+ { type: 'Email', label: 'Email', icon: 'fa-solid fa-envelope', group: 'Text', hasOptions: false },
11
+ { type: 'Phone', label: 'Phone', icon: 'fa-solid fa-phone', group: 'Text', hasOptions: false },
12
+ { type: 'Number', label: 'Number', icon: 'fa-solid fa-hashtag', group: 'Text', hasOptions: false },
13
+ { type: 'SingleChoice', label: 'Single choice', icon: 'fa-regular fa-circle-dot', group: 'Choice', hasOptions: true },
14
+ { type: 'MultiChoice', label: 'Multi choice', icon: 'fa-regular fa-square-check', group: 'Choice', hasOptions: true },
15
+ { type: 'Dropdown', label: 'Dropdown', icon: 'fa-solid fa-caret-down', group: 'Choice', hasOptions: true },
16
+ { type: 'Rating', label: 'Rating', icon: 'fa-solid fa-star', group: 'Scale', hasOptions: false },
17
+ { type: 'NPS', label: 'NPS', icon: 'fa-solid fa-gauge-high', group: 'Scale', hasOptions: false },
18
+ { type: 'YesNo', label: 'Yes / No', icon: 'fa-solid fa-toggle-on', group: 'Scale', hasOptions: false },
19
+ { type: 'Date', label: 'Date', icon: 'fa-regular fa-calendar', group: 'Advanced', hasOptions: false },
20
+ { type: 'Time', label: 'Time', icon: 'fa-regular fa-clock', group: 'Advanced', hasOptions: false },
21
+ { type: 'FileUpload', label: 'File upload', icon: 'fa-solid fa-paperclip', group: 'Advanced', hasOptions: false },
22
+ { type: 'Statement', label: 'Statement', icon: 'fa-solid fa-quote-left', group: 'Advanced', hasOptions: false },
23
+ ];
24
+ const CATALOG_BY_TYPE = new Map(QUESTION_TYPE_CATALOG.map((m) => [m.type, m]));
25
+ /** Palette groups in display order. */
26
+ export const QUESTION_PALETTE_GROUPS = ['Text', 'Choice', 'Scale', 'Advanced'];
27
+ /** Look up the metadata for a question type. Always defined for valid Phase-1 types. */
28
+ export function questionTypeMeta(type) {
29
+ const meta = CATALOG_BY_TYPE.get(type);
30
+ if (!meta) {
31
+ throw new Error(`Unknown FormQuestionType: ${String(type)}`);
32
+ }
33
+ return meta;
34
+ }
35
+ /** Whether a question type carries selectable options. */
36
+ export function questionTypeHasOptions(type) {
37
+ return questionTypeMeta(type).hasOptions;
38
+ }
39
+ /** The catalog entries belonging to one palette group, in display order. */
40
+ export function questionTypesInGroup(group) {
41
+ return QUESTION_TYPE_CATALOG.filter((m) => m.group === group);
42
+ }
43
+ //# sourceMappingURL=question-type-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-type-catalog.js","sourceRoot":"","sources":["../../../src/lib/builder/question-type-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Pure reorder guard shared by the builder's arrow-button and drag-drop reorder paths.
3
+ *
4
+ * Both `moveQuestion` (keyboard/arrows) and `dropQuestion` (CDK drag) compute a source
5
+ * and target index, then persist the page's question order the same way. This decides
6
+ * whether a proposed move is a real, in-bounds reorder before we touch the array or the
7
+ * database — keeping the two entry points behaviourally identical.
8
+ */
9
+ export declare function isValidReorder(from: number, to: number, length: number): boolean;
10
+ //# sourceMappingURL=reorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../../../src/lib/builder/reorder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAUhF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Pure reorder guard shared by the builder's arrow-button and drag-drop reorder paths.
3
+ *
4
+ * Both `moveQuestion` (keyboard/arrows) and `dropQuestion` (CDK drag) compute a source
5
+ * and target index, then persist the page's question order the same way. This decides
6
+ * whether a proposed move is a real, in-bounds reorder before we touch the array or the
7
+ * database — keeping the two entry points behaviourally identical.
8
+ */
9
+ export function isValidReorder(from, to, length) {
10
+ return (Number.isInteger(from) &&
11
+ Number.isInteger(to) &&
12
+ from >= 0 &&
13
+ from < length &&
14
+ to >= 0 &&
15
+ to < length &&
16
+ from !== to);
17
+ }
18
+ //# sourceMappingURL=reorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reorder.js","sourceRoot":"","sources":["../../../src/lib/builder/reorder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,EAAU,EAAE,MAAc;IACrE,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACtB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC;QACT,IAAI,GAAG,MAAM;QACb,EAAE,IAAI,CAAC;QACP,EAAE,GAAG,MAAM;QACX,IAAI,KAAK,EAAE,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { mjBizAppsFormsFormStyleEntity, FormStyleTokens, PublishedFormDefinition } from '@mj-biz-apps/forms-entities';
2
+ import type { FormTree } from './builder-models';
3
+ /**
4
+ * Pure transform from the live builder tree to the immutable
5
+ * {@link PublishedFormDefinition} stored in `FormVersion.DefinitionSnapshot` (the S1
6
+ * contract). No I/O, no MJ services — so it is the unit-testable core of publish.
7
+ *
8
+ * Pages and questions are re-numbered to a dense 0-based `displayOrder` reflecting
9
+ * their sorted position, so the snapshot order is canonical regardless of any gaps
10
+ * in the stored DisplayOrder values.
11
+ *
12
+ * `styleTokensOverride` lets the builder's live Preview reflect UNSAVED theme edits: when
13
+ * supplied it is used verbatim instead of deriving tokens from `style`.
14
+ */
15
+ export declare function buildPublishedDefinition(tree: FormTree, style: mjBizAppsFormsFormStyleEntity | undefined, formVersionId: string, styleTokensOverride?: FormStyleTokens): PublishedFormDefinition;
16
+ //# sourceMappingURL=snapshot-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/builder/snapshot-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EAKxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,kBAAkB,CAAC;AASzE;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,6BAA6B,GAAG,SAAS,EAChD,aAAa,EAAE,MAAM,EACrB,mBAAmB,CAAC,EAAE,eAAe,GACpC,uBAAuB,CAoBzB"}
@@ -0,0 +1,93 @@
1
+ import { parseConditionalRule, parseValidationRule, parseQuestionSettings, parseFormSettings, buildStyleTokens, } from './json-fields';
2
+ /**
3
+ * Pure transform from the live builder tree to the immutable
4
+ * {@link PublishedFormDefinition} stored in `FormVersion.DefinitionSnapshot` (the S1
5
+ * contract). No I/O, no MJ services — so it is the unit-testable core of publish.
6
+ *
7
+ * Pages and questions are re-numbered to a dense 0-based `displayOrder` reflecting
8
+ * their sorted position, so the snapshot order is canonical regardless of any gaps
9
+ * in the stored DisplayOrder values.
10
+ *
11
+ * `styleTokensOverride` lets the builder's live Preview reflect UNSAVED theme edits: when
12
+ * supplied it is used verbatim instead of deriving tokens from `style`.
13
+ */
14
+ export function buildPublishedDefinition(tree, style, formVersionId, styleTokensOverride) {
15
+ const form = tree.form;
16
+ return {
17
+ formId: form.ID,
18
+ formVersionId,
19
+ name: form.Name,
20
+ description: form.Description ?? undefined,
21
+ renderMode: form.RenderMode,
22
+ settings: parseFormSettings(form.Settings),
23
+ styleTokens: styleTokensOverride ??
24
+ buildStyleTokens(style?.CSSVariables ?? null, style?.CustomCSS ?? null, style?.LogoURL ?? null),
25
+ pages: [...tree.pages]
26
+ .sort((a, b) => a.entity.DisplayOrder - b.entity.DisplayOrder)
27
+ .map((p, index) => buildPage(p, index)),
28
+ };
29
+ }
30
+ function buildPage(page, displayOrder) {
31
+ const result = {
32
+ id: page.entity.ID,
33
+ displayOrder,
34
+ questions: [...page.questions]
35
+ .sort((a, b) => a.entity.DisplayOrder - b.entity.DisplayOrder)
36
+ .map((q, index) => buildQuestion(q, index)),
37
+ };
38
+ if (page.entity.Title) {
39
+ result.title = page.entity.Title;
40
+ }
41
+ if (page.entity.Description) {
42
+ result.description = page.entity.Description;
43
+ }
44
+ const conditional = parseConditionalRule(page.entity.ConditionalRule);
45
+ if (conditional) {
46
+ result.conditionalRule = conditional;
47
+ }
48
+ return result;
49
+ }
50
+ function buildQuestion(node, displayOrder) {
51
+ const q = node.entity;
52
+ const result = {
53
+ id: q.ID,
54
+ type: q.QuestionType,
55
+ prompt: q.Prompt,
56
+ isRequired: q.IsRequired,
57
+ displayOrder,
58
+ options: buildOptions(node),
59
+ };
60
+ if (q.HelpText) {
61
+ result.helpText = q.HelpText;
62
+ }
63
+ const conditional = parseConditionalRule(q.ConditionalRule);
64
+ if (conditional) {
65
+ result.conditionalRule = conditional;
66
+ }
67
+ const validation = parseValidationRule(q.ValidationRule);
68
+ if (validation) {
69
+ result.validationRule = validation;
70
+ }
71
+ const settings = parseQuestionSettings(q.Settings);
72
+ if (Object.keys(settings).length > 0) {
73
+ result.settings = settings;
74
+ }
75
+ return result;
76
+ }
77
+ function buildOptions(node) {
78
+ return [...node.options]
79
+ .sort((a, b) => a.DisplayOrder - b.DisplayOrder)
80
+ .map((opt, index) => {
81
+ const built = {
82
+ id: opt.ID,
83
+ label: opt.Label,
84
+ value: opt.Value ?? opt.Label,
85
+ displayOrder: index,
86
+ };
87
+ if (opt.IsDefault) {
88
+ built.isDefault = true;
89
+ }
90
+ return built;
91
+ });
92
+ }
93
+ //# sourceMappingURL=snapshot-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-builder.js","sourceRoot":"","sources":["../../../src/lib/builder/snapshot-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Branding-editor helpers over the `MJ_BizApps_Forms: Form Styles` entity.
3
+ *
4
+ * The entity stores `CSSVariables` as a JSON `--token: value` map. The Design panel's
5
+ * branding-basics editor reads/writes individual brand tokens in that map so the live
6
+ * preview and the published widget share the exact same token contract — no hardcoded
7
+ * colors anywhere. Parsing/serialization reuse the existing {@link parseStyleTokens} /
8
+ * {@link buildStyleTokens} helpers (DRY — no parallel JSON logic).
9
+ *
10
+ * These operate on the raw `CSSVariables` string (not the entity) so they stay pure and
11
+ * unit-testable; the Design panel passes `style.CSSVariables`.
12
+ */
13
+ import type { FormStyleTokens, mjBizAppsFormsFormStyleEntity } from '@mj-biz-apps/forms-entities';
14
+ /** Semantic token names the theme editor writes into `CSSVariables`. */
15
+ export declare const BRAND_TOKENS: {
16
+ /** Primary brand color (buttons, active choice, progress fill). */
17
+ readonly primary: "--mjf-accent";
18
+ /** Darker shade used for hover / pressed / strong states. */
19
+ readonly primaryStrong: "--mjf-accent-strong";
20
+ /** Page background behind the form cards. */
21
+ readonly pageBg: "--mjf-page-bg";
22
+ /** Card / field surface background. */
23
+ readonly cardBg: "--mjf-card-bg";
24
+ /** Body font stack. */
25
+ readonly fontBody: "--mjf-font-body";
26
+ /** Display / heading font stack. */
27
+ readonly fontDisplay: "--mjf-font-display";
28
+ };
29
+ /** The four corner-radius tokens set together so the theme's rounding stays coherent. */
30
+ export declare const RADIUS_TOKENS: readonly ["--mjf-card-radius", "--mjf-input-radius", "--mjf-choice-radius", "--mjf-btn-radius"];
31
+ /** Curated font choices for the theme editor (label → CSS font-family stack). */
32
+ export declare const FONT_OPTIONS: ReadonlyArray<{
33
+ label: string;
34
+ stack: string;
35
+ }>;
36
+ /** Serialize a `--token → value` map back to a `CSSVariables` JSON string. */
37
+ export declare function serializeCssVariables(map: Record<string, string>): string;
38
+ /** Build the runtime {@link FormStyleTokens} the preview + widget apply from a style entity. */
39
+ export declare function toStyleTokens(style: mjBizAppsFormsFormStyleEntity): FormStyleTokens;
40
+ /** Read a brand token's current value from a raw `CSSVariables` JSON (empty if unset). */
41
+ export declare function readBrandToken(cssVariablesRaw: string | null | undefined, token: string): string;
42
+ /**
43
+ * Return an updated `CSSVariables` JSON with `token` set to `value` (or removed when
44
+ * `value` is blank), preserving every other token. Pure — mutates nothing.
45
+ */
46
+ export declare function withBrandToken(cssVariablesRaw: string | null | undefined, token: string, value: string): string;
47
+ /** Read the theme's corner radius (from `--mjf-card-radius`) as a number of px; 0 if unset. */
48
+ export declare function readRadiusPx(cssVariablesRaw: string | null | undefined): number;
49
+ /**
50
+ * Return an updated `CSSVariables` JSON with all four {@link RADIUS_TOKENS} set to `px`,
51
+ * preserving every other token. Keeps card/input/choice/button rounding coherent. Pure.
52
+ */
53
+ export declare function withRadiusPx(cssVariablesRaw: string | null | undefined, px: number): string;
54
+ //# sourceMappingURL=style-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-tokens.d.ts","sourceRoot":"","sources":["../../../src/lib/builder/style-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGlG,wEAAwE;AACxE,eAAO,MAAM,YAAY;IACvB,mEAAmE;;IAEnE,6DAA6D;;IAE7D,6CAA6C;;IAE7C,uCAAuC;;IAEvC,uBAAuB;;IAEvB,oCAAoC;;CAE5B,CAAC;AAEX,yFAAyF;AACzF,eAAO,MAAM,aAAa,iGAAkG,CAAC;AAE7H,iFAAiF;AACjF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMxE,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAEzE;AAED,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,KAAK,EAAE,6BAA6B,GAAG,eAAe,CAEnF;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAI/E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAM3F"}