@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,330 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { DomSanitizer } from '@angular/platform-browser';
5
+ import { GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';
6
+ import { BUILDER_CONTROL_STYLES } from './builder-styles';
7
+ import { DistributionService, } from './distribution.service';
8
+ import { textToQrSvg } from './qr-code';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/forms";
11
+ const _forTrack0 = ($index, $item) => $item.ID;
12
+ function DistributionManagerComponent_For_11_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "option", 8);
14
+ i0.ɵɵtext(1);
15
+ i0.ɵɵelementEnd();
16
+ } if (rf & 2) {
17
+ const ch_r1 = ctx.$implicit;
18
+ i0.ɵɵproperty("value", ch_r1);
19
+ i0.ɵɵadvance();
20
+ i0.ɵɵtextInterpolate(ch_r1);
21
+ } }
22
+ function DistributionManagerComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "p", 11);
24
+ i0.ɵɵtext(1, "Loading distributions\u2026");
25
+ i0.ɵɵelementEnd();
26
+ } }
27
+ function DistributionManagerComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "p", 11);
29
+ i0.ɵɵtext(1, "No distributions yet. Create one above to share this form.");
30
+ i0.ɵɵelementEnd();
31
+ } }
32
+ function DistributionManagerComponent_Conditional_17_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
33
+ const _r5 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "span", 28);
35
+ i0.ɵɵtext(1, "Embed snippet");
36
+ i0.ɵɵelementEnd();
37
+ i0.ɵɵelementStart(2, "div", 20)(3, "code");
38
+ i0.ɵɵtext(4);
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(5, "button", 29);
41
+ i0.ɵɵlistener("click", function DistributionManagerComponent_Conditional_17_For_2_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const dist_r3 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.copy(ctx_r3.embedSnippet(dist_r3))); });
42
+ i0.ɵɵelement(6, "i", 22);
43
+ i0.ɵɵelementEnd()();
44
+ } if (rf & 2) {
45
+ const dist_r3 = i0.ɵɵnextContext().$implicit;
46
+ const ctx_r3 = i0.ɵɵnextContext(2);
47
+ i0.ɵɵadvance(4);
48
+ i0.ɵɵtextInterpolate(ctx_r3.embedSnippet(dist_r3));
49
+ } }
50
+ function DistributionManagerComponent_Conditional_17_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelement(0, "div", 23);
52
+ } if (rf & 2) {
53
+ const dist_r3 = i0.ɵɵnextContext().$implicit;
54
+ const ctx_r3 = i0.ɵɵnextContext(2);
55
+ i0.ɵɵproperty("innerHTML", ctx_r3.qrSvg(dist_r3), i0.ɵɵsanitizeHtml);
56
+ } }
57
+ function DistributionManagerComponent_Conditional_17_For_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelement(0, "i", 30);
59
+ i0.ɵɵtext(1, " Close ");
60
+ } }
61
+ function DistributionManagerComponent_Conditional_17_For_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelement(0, "i", 31);
63
+ i0.ɵɵtext(1, " Open ");
64
+ } }
65
+ function DistributionManagerComponent_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
66
+ const _r2 = i0.ɵɵgetCurrentView();
67
+ i0.ɵɵelementStart(0, "div", 13)(1, "div", 14)(2, "span", 15);
68
+ i0.ɵɵtext(3);
69
+ i0.ɵɵelementEnd();
70
+ i0.ɵɵelementStart(4, "span", 16);
71
+ i0.ɵɵtext(5);
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵelementStart(6, "span");
74
+ i0.ɵɵtext(7);
75
+ i0.ɵɵelementEnd()();
76
+ i0.ɵɵelementStart(8, "div", 17)(9, "div", 18)(10, "span", 19);
77
+ i0.ɵɵtext(11, "Public link");
78
+ i0.ɵɵelementEnd();
79
+ i0.ɵɵelementStart(12, "div", 20)(13, "code");
80
+ i0.ɵɵtext(14);
81
+ i0.ɵɵelementEnd();
82
+ i0.ɵɵelementStart(15, "button", 21);
83
+ i0.ɵɵlistener("click", function DistributionManagerComponent_Conditional_17_For_2_Template_button_click_15_listener() { const dist_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.copy(ctx_r3.publicUrl(dist_r3))); });
84
+ i0.ɵɵelement(16, "i", 22);
85
+ i0.ɵɵelementEnd()();
86
+ i0.ɵɵconditionalCreate(17, DistributionManagerComponent_Conditional_17_For_2_Conditional_17_Template, 7, 1);
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵconditionalCreate(18, DistributionManagerComponent_Conditional_17_For_2_Conditional_18_Template, 1, 1, "div", 23);
89
+ i0.ɵɵelementEnd();
90
+ i0.ɵɵelementStart(19, "div", 24)(20, "label");
91
+ i0.ɵɵtext(21, " Max responses ");
92
+ i0.ɵɵelementStart(22, "input", 25, 0);
93
+ i0.ɵɵlistener("change", function DistributionManagerComponent_Conditional_17_For_2_Template_input_change_22_listener() { const dist_r3 = i0.ɵɵrestoreView(_r2).$implicit; const maxInput_r6 = i0.ɵɵreference(23); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.setMax(dist_r3, maxInput_r6.value)); });
94
+ i0.ɵɵelementEnd()();
95
+ i0.ɵɵelementStart(24, "span");
96
+ i0.ɵɵtext(25);
97
+ i0.ɵɵelementEnd()();
98
+ i0.ɵɵelementStart(26, "div", 26)(27, "button", 27);
99
+ i0.ɵɵlistener("click", function DistributionManagerComponent_Conditional_17_For_2_Template_button_click_27_listener() { const dist_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.toggleOpen(dist_r3)); });
100
+ i0.ɵɵconditionalCreate(28, DistributionManagerComponent_Conditional_17_For_2_Conditional_28_Template, 2, 0)(29, DistributionManagerComponent_Conditional_17_For_2_Conditional_29_Template, 2, 0);
101
+ i0.ɵɵelementEnd()()();
102
+ } if (rf & 2) {
103
+ const dist_r3 = ctx.$implicit;
104
+ const ctx_r3 = i0.ɵɵnextContext(2);
105
+ i0.ɵɵadvance(3);
106
+ i0.ɵɵtextInterpolate(dist_r3.Name);
107
+ i0.ɵɵadvance(2);
108
+ i0.ɵɵtextInterpolate(dist_r3.ChannelType);
109
+ i0.ɵɵadvance();
110
+ i0.ɵɵclassMap(ctx_r3.statusClass(dist_r3));
111
+ i0.ɵɵadvance();
112
+ i0.ɵɵtextInterpolate(dist_r3.Status);
113
+ i0.ɵɵadvance(7);
114
+ i0.ɵɵtextInterpolate(ctx_r3.publicUrl(dist_r3));
115
+ i0.ɵɵadvance(3);
116
+ i0.ɵɵconditional(dist_r3.ChannelType === "Embed" ? 17 : -1);
117
+ i0.ɵɵadvance();
118
+ i0.ɵɵconditional(dist_r3.ChannelType === "QR" && ctx_r3.qrSvg(dist_r3) ? 18 : -1);
119
+ i0.ɵɵadvance(4);
120
+ i0.ɵɵproperty("value", dist_r3.MaxResponses ?? "");
121
+ i0.ɵɵadvance(3);
122
+ i0.ɵɵtextInterpolate1("", dist_r3.ResponseCount, " received");
123
+ i0.ɵɵadvance(2);
124
+ i0.ɵɵclassProp("mjf-btn--primary", dist_r3.Status !== "Active")("mjf-btn--ghost", dist_r3.Status === "Active");
125
+ i0.ɵɵadvance();
126
+ i0.ɵɵconditional(dist_r3.Status === "Active" ? 28 : 29);
127
+ } }
128
+ function DistributionManagerComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
129
+ i0.ɵɵelementStart(0, "div", 12);
130
+ i0.ɵɵrepeaterCreate(1, DistributionManagerComponent_Conditional_17_For_2_Template, 30, 15, "div", 13, _forTrack0);
131
+ i0.ɵɵelementEnd();
132
+ } if (rf & 2) {
133
+ const ctx_r3 = i0.ɵɵnextContext();
134
+ i0.ɵɵadvance();
135
+ i0.ɵɵrepeater(ctx_r3.distributions);
136
+ } }
137
+ const DISTRIBUTION_CSS = /* css */ `
138
+ .dm { display: flex; flex-direction: column; gap: 16px; }
139
+ .dm-create { display: grid; grid-template-columns: 1fr 160px auto; gap: 10px; align-items: end; }
140
+ .dm-list { display: flex; flex-direction: column; gap: 12px; }
141
+ .dm-card { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-lg, 12px); padding: 14px 16px; background: var(--mj-bg-surface-card, var(--mj-bg-surface)); }
142
+ .dm-card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
143
+ .dm-card-name { font-weight: 700; color: var(--mj-text-primary); }
144
+ .dm-card-body { margin-top: 10px; display: flex; gap: 16px; flex-wrap: wrap; }
145
+ .dm-artifact { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
146
+ .dm-code { display: flex; gap: 6px; align-items: stretch; }
147
+ .dm-code code { flex: 1; min-width: 0; overflow-x: auto; white-space: nowrap; font-size: 0.8125rem; padding: 8px 10px; border-radius: var(--mj-radius-md, 8px); background: var(--mj-bg-surface-sunken); border: 1px solid var(--mj-border-subtle); color: var(--mj-text-primary); }
148
+ .dm-copy { flex: none; }
149
+ .dm-qr { width: 132px; height: 132px; border: 1px solid var(--mj-border-subtle); border-radius: var(--mj-radius-md, 8px); padding: 6px; background: var(--mj-bg-surface); }
150
+ .dm-qr svg { width: 100%; height: 100%; display: block; }
151
+ .dm-meta { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; font-size: 0.8125rem; color: var(--mj-text-secondary); align-items: center; }
152
+ .dm-actions { display: flex; gap: 8px; margin-top: 10px; }
153
+ .dm-status { font-weight: 700; }
154
+ .dm-status--active { color: var(--mj-status-success, var(--mj-color-success-600)); }
155
+ .dm-status--closed { color: var(--mj-status-error, var(--mj-color-error-600)); }
156
+ .dm-status--draft { color: var(--mj-text-muted); }
157
+ .dm-empty { font-size: 0.875rem; color: var(--mj-text-muted); }
158
+ .dm-num { width: 90px; }
159
+ `;
160
+ /**
161
+ * FormDistribution management surface: create distributions (PublicLink / Embed /
162
+ * QR), list them, and show the shareable artifacts — public URL, `<iframe>` embed
163
+ * snippet, and a scannable QR. Open/close the response window and cap MaxResponses.
164
+ */
165
+ export class DistributionManagerComponent {
166
+ formId;
167
+ /** Public base URL where the respondent widget is hosted (slug appended as /f/:slug). */
168
+ publicBaseUrl = '';
169
+ service = inject(DistributionService);
170
+ sanitizer = inject(DomSanitizer);
171
+ cdr = inject(ChangeDetectorRef);
172
+ distributions = [];
173
+ loading = true;
174
+ creating = false;
175
+ newName = '';
176
+ newChannel = 'PublicLink';
177
+ channels = ['PublicLink', 'Embed', 'QR'];
178
+ qrCache = new Map();
179
+ async ngOnInit() {
180
+ await this.reload();
181
+ }
182
+ async reload() {
183
+ this.loading = true;
184
+ this.distributions = await this.service.list(this.formId);
185
+ this.qrCache.clear();
186
+ this.loading = false;
187
+ this.cdr.markForCheck();
188
+ }
189
+ async create() {
190
+ const name = this.newName.trim();
191
+ if (name.length === 0 || this.creating) {
192
+ return;
193
+ }
194
+ this.creating = true;
195
+ const input = {
196
+ formId: this.formId,
197
+ name,
198
+ channelType: this.newChannel,
199
+ };
200
+ const created = await this.service.create(input);
201
+ this.creating = false;
202
+ if (created) {
203
+ this.newName = '';
204
+ await this.reload();
205
+ }
206
+ }
207
+ async toggleOpen(dist) {
208
+ const ok = dist.Status === 'Active' ? await this.service.close(dist) : await this.service.open(dist);
209
+ if (ok) {
210
+ this.cdr.markForCheck();
211
+ }
212
+ }
213
+ async setMax(dist, raw) {
214
+ const value = raw.trim() === '' ? null : Number(raw);
215
+ const next = value === null || Number.isNaN(value) ? null : value;
216
+ await this.service.setMaxResponses(dist, next);
217
+ this.cdr.markForCheck();
218
+ }
219
+ publicUrl(dist) {
220
+ return this.service.publicUrl(dist, this.effectiveBaseUrl);
221
+ }
222
+ embedSnippet(dist) {
223
+ return this.service.embedSnippet(dist, this.effectiveBaseUrl);
224
+ }
225
+ /** Render the QR for a distribution's public URL; returns null if encoding fails. */
226
+ qrSvg(dist) {
227
+ const url = this.publicUrl(dist);
228
+ const cached = this.qrCache.get(url);
229
+ if (cached) {
230
+ return cached;
231
+ }
232
+ try {
233
+ const svg = this.sanitizer.bypassSecurityTrustHtml(textToQrSvg(url));
234
+ this.qrCache.set(url, svg);
235
+ return svg;
236
+ }
237
+ catch {
238
+ return null;
239
+ }
240
+ }
241
+ async copy(text) {
242
+ if (navigator.clipboard) {
243
+ try {
244
+ await navigator.clipboard.writeText(text);
245
+ }
246
+ catch {
247
+ // Clipboard may be blocked; the value is visible for manual copy.
248
+ }
249
+ }
250
+ }
251
+ statusClass(dist) {
252
+ return `dm-status dm-status--${dist.Status.toLowerCase()}`;
253
+ }
254
+ /**
255
+ * Base URL the public `/f/:slug` link is built against. This MUST be the **MJAPI
256
+ * origin** (where the anonymous respondent host page is served) — NOT the Explorer
257
+ * origin this builder runs under. Using `window.location.origin` here was the bug
258
+ * that produced `http://localhost:4321/f/:slug` (Explorer → login page) instead of
259
+ * `http://localhost:4121/f/:slug` (the shell-free respondent host).
260
+ *
261
+ * Resolution order: an explicit `publicBaseUrl` input → the configured GraphQL API
262
+ * origin (`GraphQLDataProvider.Instance.ConfigData.URL`) → `window.location.origin`
263
+ * as a last resort.
264
+ */
265
+ get effectiveBaseUrl() {
266
+ if (this.publicBaseUrl.length > 0) {
267
+ return this.publicBaseUrl;
268
+ }
269
+ const apiOrigin = this.resolveApiOrigin();
270
+ if (apiOrigin) {
271
+ return apiOrigin;
272
+ }
273
+ return typeof window !== 'undefined' ? window.location.origin : '';
274
+ }
275
+ /** Origin of the configured MJAPI GraphQL endpoint, or '' if unavailable. */
276
+ resolveApiOrigin() {
277
+ try {
278
+ const url = GraphQLDataProvider.Instance?.ConfigData?.URL;
279
+ return url ? new URL(url).origin : '';
280
+ }
281
+ catch {
282
+ return '';
283
+ }
284
+ }
285
+ static ɵfac = function DistributionManagerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DistributionManagerComponent)(); };
286
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DistributionManagerComponent, selectors: [["mjf-distribution-manager"]], inputs: { formId: "formId", publicBaseUrl: "publicBaseUrl" }, features: [i0.ɵɵProvidersFeature([DistributionService])], decls: 18, vars: 4, consts: [["maxInput", ""], [1, "dm"], [1, "dm-create"], [1, "mjf-field", 2, "margin", "0"], ["for", "dm-name", 1, "mjf-field-label"], ["id", "dm-name", "type", "text", "placeholder", "e.g. Public link \u2014 homepage", 1, "mjf-input", 3, "ngModelChange", "ngModel"], ["for", "dm-channel", 1, "mjf-field-label"], ["id", "dm-channel", 1, "mjf-input", 3, "ngModelChange", "ngModel"], [3, "value"], ["type", "button", 1, "mjf-btn", "mjf-btn--primary", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], [1, "dm-empty"], [1, "dm-list"], [1, "dm-card"], [1, "dm-card-head"], [1, "dm-card-name"], [1, "mjf-pill"], [1, "dm-card-body"], [1, "dm-artifact"], [1, "mjf-field-label"], [1, "dm-code"], ["type", "button", "aria-label", "Copy public link", 1, "mjf-btn", "mjf-btn--ghost", "dm-copy", 3, "click"], ["aria-hidden", "true", 1, "fa-regular", "fa-copy"], [1, "dm-qr", 3, "innerHTML"], [1, "dm-meta"], ["type", "number", "min", "0", "placeholder", "\u221E", 1, "mjf-input", "dm-num", 3, "change", "value"], [1, "dm-actions"], ["type", "button", 1, "mjf-btn", 3, "click"], [1, "mjf-field-label", 2, "margin-top", "8px"], ["type", "button", "aria-label", "Copy embed snippet", 1, "mjf-btn", "mjf-btn--ghost", "dm-copy", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-lock"], ["aria-hidden", "true", 1, "fa-solid", "fa-lock-open"]], template: function DistributionManagerComponent_Template(rf, ctx) { if (rf & 1) {
287
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "label", 4);
288
+ i0.ɵɵtext(4, "New distribution name");
289
+ i0.ɵɵelementEnd();
290
+ i0.ɵɵelementStart(5, "input", 5);
291
+ i0.ɵɵtwoWayListener("ngModelChange", function DistributionManagerComponent_Template_input_ngModelChange_5_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.newName, $event) || (ctx.newName = $event); return $event; });
292
+ i0.ɵɵelementEnd()();
293
+ i0.ɵɵelementStart(6, "div", 3)(7, "label", 6);
294
+ i0.ɵɵtext(8, "Channel");
295
+ i0.ɵɵelementEnd();
296
+ i0.ɵɵelementStart(9, "select", 7);
297
+ i0.ɵɵtwoWayListener("ngModelChange", function DistributionManagerComponent_Template_select_ngModelChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.newChannel, $event) || (ctx.newChannel = $event); return $event; });
298
+ i0.ɵɵrepeaterCreate(10, DistributionManagerComponent_For_11_Template, 2, 2, "option", 8, i0.ɵɵrepeaterTrackByIdentity);
299
+ i0.ɵɵelementEnd()();
300
+ i0.ɵɵelementStart(12, "button", 9);
301
+ i0.ɵɵlistener("click", function DistributionManagerComponent_Template_button_click_12_listener() { return ctx.create(); });
302
+ i0.ɵɵelement(13, "i", 10);
303
+ i0.ɵɵtext(14, " Create ");
304
+ i0.ɵɵelementEnd()();
305
+ i0.ɵɵconditionalCreate(15, DistributionManagerComponent_Conditional_15_Template, 2, 0, "p", 11)(16, DistributionManagerComponent_Conditional_16_Template, 2, 0, "p", 11)(17, DistributionManagerComponent_Conditional_17_Template, 3, 0, "div", 12);
306
+ i0.ɵɵelementEnd();
307
+ } if (rf & 2) {
308
+ i0.ɵɵadvance(5);
309
+ i0.ɵɵtwoWayProperty("ngModel", ctx.newName);
310
+ i0.ɵɵadvance(4);
311
+ i0.ɵɵtwoWayProperty("ngModel", ctx.newChannel);
312
+ i0.ɵɵadvance();
313
+ i0.ɵɵrepeater(ctx.channels);
314
+ i0.ɵɵadvance(2);
315
+ i0.ɵɵproperty("disabled", ctx.creating || ctx.newName.trim().length === 0);
316
+ i0.ɵɵadvance(3);
317
+ i0.ɵɵconditional(ctx.loading ? 15 : ctx.distributions.length === 0 ? 16 : 17);
318
+ } }, dependencies: [CommonModule, FormsModule, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel], 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; }", ".dm[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 16px; }\n.dm-create[_ngcontent-%COMP%] { display: grid; grid-template-columns: 1fr 160px auto; gap: 10px; align-items: end; }\n.dm-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 12px; }\n.dm-card[_ngcontent-%COMP%] { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-lg, 12px); padding: 14px 16px; background: var(--mj-bg-surface-card, var(--mj-bg-surface)); }\n.dm-card-head[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n.dm-card-name[_ngcontent-%COMP%] { font-weight: 700; color: var(--mj-text-primary); }\n.dm-card-body[_ngcontent-%COMP%] { margin-top: 10px; display: flex; gap: 16px; flex-wrap: wrap; }\n.dm-artifact[_ngcontent-%COMP%] { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }\n.dm-code[_ngcontent-%COMP%] { display: flex; gap: 6px; align-items: stretch; }\n.dm-code[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { flex: 1; min-width: 0; overflow-x: auto; white-space: nowrap; font-size: 0.8125rem; padding: 8px 10px; border-radius: var(--mj-radius-md, 8px); background: var(--mj-bg-surface-sunken); border: 1px solid var(--mj-border-subtle); color: var(--mj-text-primary); }\n.dm-copy[_ngcontent-%COMP%] { flex: none; }\n.dm-qr[_ngcontent-%COMP%] { width: 132px; height: 132px; border: 1px solid var(--mj-border-subtle); border-radius: var(--mj-radius-md, 8px); padding: 6px; background: var(--mj-bg-surface); }\n.dm-qr[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] { width: 100%; height: 100%; display: block; }\n.dm-meta[_ngcontent-%COMP%] { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; font-size: 0.8125rem; color: var(--mj-text-secondary); align-items: center; }\n.dm-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; margin-top: 10px; }\n.dm-status[_ngcontent-%COMP%] { font-weight: 700; }\n.dm-status--active[_ngcontent-%COMP%] { color: var(--mj-status-success, var(--mj-color-success-600)); }\n.dm-status--closed[_ngcontent-%COMP%] { color: var(--mj-status-error, var(--mj-color-error-600)); }\n.dm-status--draft[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n.dm-empty[_ngcontent-%COMP%] { font-size: 0.875rem; color: var(--mj-text-muted); }\n.dm-num[_ngcontent-%COMP%] { width: 90px; }"], changeDetection: 0 });
319
+ }
320
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DistributionManagerComponent, [{
321
+ type: Component,
322
+ args: [{ selector: 'mjf-distribution-manager', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule], providers: [DistributionService], template: "<div class=\"dm\">\n <div class=\"dm-create\">\n <div class=\"mjf-field\" style=\"margin:0\">\n <label class=\"mjf-field-label\" for=\"dm-name\">New distribution name</label>\n <input\n id=\"dm-name\"\n type=\"text\"\n class=\"mjf-input\"\n [(ngModel)]=\"newName\"\n placeholder=\"e.g. Public link \u2014 homepage\"\n />\n </div>\n <div class=\"mjf-field\" style=\"margin:0\">\n <label class=\"mjf-field-label\" for=\"dm-channel\">Channel</label>\n <select id=\"dm-channel\" class=\"mjf-input\" [(ngModel)]=\"newChannel\">\n @for (ch of channels; track ch) {\n <option [value]=\"ch\">{{ ch }}</option>\n }\n </select>\n </div>\n <button\n type=\"button\"\n class=\"mjf-btn mjf-btn--primary\"\n [disabled]=\"creating || newName.trim().length === 0\"\n (click)=\"create()\"\n >\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i> Create\n </button>\n </div>\n\n @if (loading) {\n <p class=\"dm-empty\">Loading distributions&hellip;</p>\n } @else if (distributions.length === 0) {\n <p class=\"dm-empty\">No distributions yet. Create one above to share this form.</p>\n } @else {\n <div class=\"dm-list\">\n @for (dist of distributions; track dist.ID) {\n <div class=\"dm-card\">\n <div class=\"dm-card-head\">\n <span class=\"dm-card-name\">{{ dist.Name }}</span>\n <span class=\"mjf-pill\">{{ dist.ChannelType }}</span>\n <span [class]=\"statusClass(dist)\">{{ dist.Status }}</span>\n </div>\n\n <div class=\"dm-card-body\">\n <div class=\"dm-artifact\">\n <span class=\"mjf-field-label\">Public link</span>\n <div class=\"dm-code\">\n <code>{{ publicUrl(dist) }}</code>\n <button\n type=\"button\"\n class=\"mjf-btn mjf-btn--ghost dm-copy\"\n (click)=\"copy(publicUrl(dist))\"\n aria-label=\"Copy public link\"\n >\n <i class=\"fa-regular fa-copy\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n @if (dist.ChannelType === 'Embed') {\n <span class=\"mjf-field-label\" style=\"margin-top:8px\">Embed snippet</span>\n <div class=\"dm-code\">\n <code>{{ embedSnippet(dist) }}</code>\n <button\n type=\"button\"\n class=\"mjf-btn mjf-btn--ghost dm-copy\"\n (click)=\"copy(embedSnippet(dist))\"\n aria-label=\"Copy embed snippet\"\n >\n <i class=\"fa-regular fa-copy\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n </div>\n\n @if (dist.ChannelType === 'QR' && qrSvg(dist)) {\n <div class=\"dm-qr\" [innerHTML]=\"qrSvg(dist)\"></div>\n }\n </div>\n\n <div class=\"dm-meta\">\n <label>\n Max responses\n <input\n #maxInput\n type=\"number\"\n min=\"0\"\n class=\"mjf-input dm-num\"\n [value]=\"dist.MaxResponses ?? ''\"\n (change)=\"setMax(dist, maxInput.value)\"\n placeholder=\"\u221E\"\n />\n </label>\n <span>{{ dist.ResponseCount }} received</span>\n </div>\n\n <div class=\"dm-actions\">\n <button\n type=\"button\"\n class=\"mjf-btn\"\n [class.mjf-btn--primary]=\"dist.Status !== 'Active'\"\n [class.mjf-btn--ghost]=\"dist.Status === 'Active'\"\n (click)=\"toggleOpen(dist)\"\n >\n @if (dist.Status === 'Active') {\n <i class=\"fa-solid fa-lock\" aria-hidden=\"true\"></i> Close\n } @else {\n <i class=\"fa-solid fa-lock-open\" aria-hidden=\"true\"></i> Open\n }\n </button>\n </div>\n </div>\n }\n </div>\n }\n</div>\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.dm { display: flex; flex-direction: column; gap: 16px; }\n.dm-create { display: grid; grid-template-columns: 1fr 160px auto; gap: 10px; align-items: end; }\n.dm-list { display: flex; flex-direction: column; gap: 12px; }\n.dm-card { border: 1px solid var(--mj-border-default); border-radius: var(--mj-radius-lg, 12px); padding: 14px 16px; background: var(--mj-bg-surface-card, var(--mj-bg-surface)); }\n.dm-card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n.dm-card-name { font-weight: 700; color: var(--mj-text-primary); }\n.dm-card-body { margin-top: 10px; display: flex; gap: 16px; flex-wrap: wrap; }\n.dm-artifact { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }\n.dm-code { display: flex; gap: 6px; align-items: stretch; }\n.dm-code code { flex: 1; min-width: 0; overflow-x: auto; white-space: nowrap; font-size: 0.8125rem; padding: 8px 10px; border-radius: var(--mj-radius-md, 8px); background: var(--mj-bg-surface-sunken); border: 1px solid var(--mj-border-subtle); color: var(--mj-text-primary); }\n.dm-copy { flex: none; }\n.dm-qr { width: 132px; height: 132px; border: 1px solid var(--mj-border-subtle); border-radius: var(--mj-radius-md, 8px); padding: 6px; background: var(--mj-bg-surface); }\n.dm-qr svg { width: 100%; height: 100%; display: block; }\n.dm-meta { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; font-size: 0.8125rem; color: var(--mj-text-secondary); align-items: center; }\n.dm-actions { display: flex; gap: 8px; margin-top: 10px; }\n.dm-status { font-weight: 700; }\n.dm-status--active { color: var(--mj-status-success, var(--mj-color-success-600)); }\n.dm-status--closed { color: var(--mj-status-error, var(--mj-color-error-600)); }\n.dm-status--draft { color: var(--mj-text-muted); }\n.dm-empty { font-size: 0.875rem; color: var(--mj-text-muted); }\n.dm-num { width: 90px; }\n"] }]
323
+ }], null, { formId: [{
324
+ type: Input,
325
+ args: [{ required: true }]
326
+ }], publicBaseUrl: [{
327
+ type: Input
328
+ }] }); })();
329
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DistributionManagerComponent, { className: "DistributionManagerComponent", filePath: "lib/builder/distribution-manager.component.ts", lineNumber: 60 }); })();
330
+ //# sourceMappingURL=distribution-manager.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution-manager.component.js","sourceRoot":"","sources":["../../../src/lib/builder/distribution-manager.component.ts","../../../src/lib/builder/distribution-manager.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { mjBizAppsFormsFormDistributionEntity, mjBizAppsFormsFormDistributionEntityType } from '@mj-biz-apps/forms-entities';
2
+ import * as i0 from "@angular/core";
3
+ /** The channel kinds the builder can mint (Phase 1: PublicLink / Embed / QR). */
4
+ export type DistributionChannel = mjBizAppsFormsFormDistributionEntityType['ChannelType'];
5
+ /** Inputs for creating a distribution. */
6
+ export interface CreateDistributionInput {
7
+ formId: string;
8
+ name: string;
9
+ channelType: DistributionChannel;
10
+ slug?: string;
11
+ maxResponses?: number | null;
12
+ openAt?: Date | null;
13
+ closeAt?: Date | null;
14
+ captchaRequired?: boolean;
15
+ }
16
+ /**
17
+ * Create + list FormDistribution records and derive the public artifacts (slug,
18
+ * public URL, embed snippet). The magic-link wiring behind a distribution
19
+ * (`MagicLinkInviteID`) is provisioned server-side by WP-B/WP-A; the builder mints
20
+ * the distribution row and its slug, and surfaces the shareable artifacts.
21
+ */
22
+ export declare class DistributionService {
23
+ private readonly md;
24
+ private get user();
25
+ /** List all distributions for a form, newest first. */
26
+ list(formId: string): Promise<mjBizAppsFormsFormDistributionEntity[]>;
27
+ /**
28
+ * Create + save a new distribution, generating a unique slug when none supplied.
29
+ *
30
+ * Slug uniqueness is ultimately enforced by a DB unique index on
31
+ * `FormDistribution.Slug` (authored in the WP-A/WP-B schema). The pre-probe here is
32
+ * best-effort; the authoritative guard is `Save()` failing on the unique violation,
33
+ * so we retry with a fresh suffix on failure rather than trusting the check alone.
34
+ */
35
+ create(input: CreateDistributionInput): Promise<mjBizAppsFormsFormDistributionEntity | undefined>;
36
+ /** First attempt probes for a free slug; later attempts append a fresh random suffix. */
37
+ private candidateSlug;
38
+ /** Open a distribution for responses (Status -> Active). */
39
+ open(dist: mjBizAppsFormsFormDistributionEntity): Promise<boolean>;
40
+ /** Close a distribution (Status -> Closed). */
41
+ close(dist: mjBizAppsFormsFormDistributionEntity): Promise<boolean>;
42
+ /** Persist a max-responses cap change. */
43
+ setMaxResponses(dist: mjBizAppsFormsFormDistributionEntity, max: number | null): Promise<boolean>;
44
+ private setStatus;
45
+ private saveDist;
46
+ /**
47
+ * The shareable public URL for a distribution: the `/f/:slug` host page, which
48
+ * redeems the distribution's anonymous magic-link token server-side and renders the
49
+ * shell-free widget. (NOT the raw `/magic-link/redeem?token=` URL — that bounces a
50
+ * browser to the Explorer login shell.)
51
+ */
52
+ publicUrl(dist: mjBizAppsFormsFormDistributionEntity, baseUrl: string): string;
53
+ /** An `<iframe>` embed snippet pointing at the distribution's `/f/:slug` public URL. */
54
+ embedSnippet(dist: mjBizAppsFormsFormDistributionEntity, baseUrl: string): string;
55
+ /** Slugify a name to a URL-friendly token. */
56
+ slugify(name: string): string;
57
+ /** Whether any distribution already uses this slug. Read failure => assume taken. */
58
+ private slugExists;
59
+ static ɵfac: i0.ɵɵFactoryDeclaration<DistributionService, never>;
60
+ static ɵprov: i0.ɵɵInjectableDeclaration<DistributionService>;
61
+ }
62
+ //# sourceMappingURL=distribution.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.service.d.ts","sourceRoot":"","sources":["../../../src/lib/builder/distribution.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EACpC,wCAAwC,EACzC,MAAM,6BAA6B,CAAC;;AASrC,iFAAiF;AACjF,MAAM,MAAM,mBAAmB,GAAG,wCAAwC,CAAC,aAAa,CAAC,CAAC;AAE1F,0CAA0C;AAC1C,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,qBACa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAkB;IAErC,OAAO,KAAK,IAAI,GAEf;IAED,uDAAuD;IAC1C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,EAAE,CAAC;IAkBlF;;;;;;;OAOG;IACU,MAAM,CACjB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,oCAAoC,GAAG,SAAS,CAAC;IAwC5D,yFAAyF;YAC3E,aAAa;IAO3B,4DAA4D;IAC/C,IAAI,CAAC,IAAI,EAAE,oCAAoC,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/E,+CAA+C;IAClC,KAAK,CAAC,IAAI,EAAE,oCAAoC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhF,0CAA0C;IAC7B,eAAe,CAC1B,IAAI,EAAE,oCAAoC,EAC1C,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,OAAO,CAAC,OAAO,CAAC;YAKL,SAAS;YAQT,QAAQ;IAWtB;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAIrF,wFAAwF;IACjF,YAAY,CAAC,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAIxF,8CAA8C;IACvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC,qFAAqF;YACvE,UAAU;yCA/Ib,mBAAmB;6CAAnB,mBAAmB;CA8J/B"}
@@ -0,0 +1,140 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Metadata, RunView, LogError } from '@memberjunction/core';
3
+ import { FORMS_ENTITY } from './entity-names';
4
+ import { shareUrl as buildShareUrl, embedSnippet as buildEmbedSnippet, slugify as buildSlug, randomSuffix, } from './distribution-links';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Create + list FormDistribution records and derive the public artifacts (slug,
8
+ * public URL, embed snippet). The magic-link wiring behind a distribution
9
+ * (`MagicLinkInviteID`) is provisioned server-side by WP-B/WP-A; the builder mints
10
+ * the distribution row and its slug, and surfaces the shareable artifacts.
11
+ */
12
+ export class DistributionService {
13
+ md = new Metadata();
14
+ get user() {
15
+ return this.md.CurrentUser;
16
+ }
17
+ /** List all distributions for a form, newest first. */
18
+ async list(formId) {
19
+ const rv = new RunView();
20
+ const result = await rv.RunView({
21
+ EntityName: FORMS_ENTITY.FormDistribution,
22
+ ExtraFilter: `FormID='${formId}'`,
23
+ OrderBy: '__mj_CreatedAt DESC',
24
+ ResultType: 'entity_object',
25
+ }, this.user);
26
+ if (!result.Success) {
27
+ LogError(`Failed to load distributions: ${result.ErrorMessage}`);
28
+ return [];
29
+ }
30
+ return result.Results ?? [];
31
+ }
32
+ /**
33
+ * Create + save a new distribution, generating a unique slug when none supplied.
34
+ *
35
+ * Slug uniqueness is ultimately enforced by a DB unique index on
36
+ * `FormDistribution.Slug` (authored in the WP-A/WP-B schema). The pre-probe here is
37
+ * best-effort; the authoritative guard is `Save()` failing on the unique violation,
38
+ * so we retry with a fresh suffix on failure rather than trusting the check alone.
39
+ */
40
+ async create(input) {
41
+ const base = input.slug ?? this.slugify(input.name);
42
+ const dist = await this.md.GetEntityObject(FORMS_ENTITY.FormDistribution, this.user);
43
+ dist.NewRecord();
44
+ dist.FormID = input.formId;
45
+ dist.Name = input.name;
46
+ dist.ChannelType = input.channelType;
47
+ // Create live, not Draft. A distribution is created to be shared, and the anonymous
48
+ // magic-link token is only minted by the server-side lifecycle hook once the record
49
+ // is Active (see provisioning-decision.ts). Leaving it Draft produces a public link
50
+ // (`/f/:slug`) that 409s ("not ready yet") because no token was ever minted — a
51
+ // footgun. Staff can Close it anytime; this just makes the link work on creation.
52
+ dist.Status = 'Active';
53
+ dist.ResponseCount = 0;
54
+ dist.IsActive = true;
55
+ // Captcha is OPT-IN: default off so public forms work out of the box. Turnstile is
56
+ // fail-closed (a submit is rejected if captcha is on but no Turnstile secret is
57
+ // configured), so defaulting on would silently break every submission until an admin
58
+ // wires Cloudflare Turnstile. Matches the form-level `captchaRequired` default (false).
59
+ dist.CaptchaRequired = input.captchaRequired ?? false;
60
+ dist.MaxResponses = input.maxResponses ?? null;
61
+ dist.OpenAt = input.openAt ?? null;
62
+ dist.CloseAt = input.closeAt ?? null;
63
+ const maxAttempts = 5;
64
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
65
+ dist.Slug = await this.candidateSlug(base, attempt);
66
+ if (await dist.Save()) {
67
+ return dist;
68
+ }
69
+ LogError(`Failed to save distribution (attempt ${attempt + 1}): ${dist.LatestResult?.CompleteMessage ?? 'unknown'}`);
70
+ }
71
+ return undefined;
72
+ }
73
+ /** First attempt probes for a free slug; later attempts append a fresh random suffix. */
74
+ async candidateSlug(base, attempt) {
75
+ if (attempt === 0) {
76
+ return (await this.slugExists(base)) ? `${base}-${randomSuffix()}` : base;
77
+ }
78
+ return `${base}-${randomSuffix()}`;
79
+ }
80
+ /** Open a distribution for responses (Status -> Active). */
81
+ async open(dist) {
82
+ return this.setStatus(dist, 'Active');
83
+ }
84
+ /** Close a distribution (Status -> Closed). */
85
+ async close(dist) {
86
+ return this.setStatus(dist, 'Closed');
87
+ }
88
+ /** Persist a max-responses cap change. */
89
+ async setMaxResponses(dist, max) {
90
+ dist.MaxResponses = max;
91
+ return this.saveDist(dist, 'set max responses');
92
+ }
93
+ async setStatus(dist, status) {
94
+ dist.Status = status;
95
+ return this.saveDist(dist, `set status ${status}`);
96
+ }
97
+ async saveDist(dist, action) {
98
+ const ok = await dist.Save();
99
+ if (!ok) {
100
+ LogError(`Failed to ${action}: ${dist.LatestResult?.CompleteMessage ?? 'unknown'}`);
101
+ }
102
+ return ok;
103
+ }
104
+ /**
105
+ * The shareable public URL for a distribution: the `/f/:slug` host page, which
106
+ * redeems the distribution's anonymous magic-link token server-side and renders the
107
+ * shell-free widget. (NOT the raw `/magic-link/redeem?token=` URL — that bounces a
108
+ * browser to the Explorer login shell.)
109
+ */
110
+ publicUrl(dist, baseUrl) {
111
+ return buildShareUrl(dist.Slug ?? '', baseUrl);
112
+ }
113
+ /** An `<iframe>` embed snippet pointing at the distribution's `/f/:slug` public URL. */
114
+ embedSnippet(dist, baseUrl) {
115
+ return buildEmbedSnippet(dist.Slug ?? '', baseUrl);
116
+ }
117
+ /** Slugify a name to a URL-friendly token. */
118
+ slugify(name) {
119
+ return buildSlug(name, randomSuffix);
120
+ }
121
+ /** Whether any distribution already uses this slug. Read failure => assume taken. */
122
+ async slugExists(slug) {
123
+ const rv = new RunView();
124
+ const result = await rv.RunView({
125
+ EntityName: FORMS_ENTITY.FormDistribution,
126
+ ExtraFilter: `Slug='${slug.replace(/'/g, "''")}'`,
127
+ ResultType: 'count_only',
128
+ }, this.user);
129
+ if (!result.Success) {
130
+ return true;
131
+ }
132
+ return (result.TotalRowCount ?? 0) > 0;
133
+ }
134
+ static ɵfac = function DistributionService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DistributionService)(); };
135
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DistributionService, factory: DistributionService.ɵfac });
136
+ }
137
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DistributionService, [{
138
+ type: Injectable
139
+ }], null, null); })();
140
+ //# sourceMappingURL=distribution.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.service.js","sourceRoot":"","sources":["../../../src/lib/builder/distribution.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Canonical Forms entity names (PHASE1_DECOMPOSITION entity-name table).
3
+ *
4
+ * Always pass these EXACT strings to `Metadata.GetEntityObject<T>(name, contextUser)`
5
+ * and `RunView({ EntityName })`. Centralised here so the builder never hard-codes a
6
+ * stray string literal that could drift from the metadata.
7
+ */
8
+ export declare const FORMS_ENTITY: {
9
+ readonly Form: "MJ_BizApps_Forms: Forms";
10
+ readonly FormCategory: "MJ_BizApps_Forms: Form Categories";
11
+ readonly FormStyle: "MJ_BizApps_Forms: Form Styles";
12
+ readonly FormVersion: "MJ_BizApps_Forms: Form Versions";
13
+ readonly FormPage: "MJ_BizApps_Forms: Form Pages";
14
+ readonly FormQuestion: "MJ_BizApps_Forms: Form Questions";
15
+ readonly FormQuestionOption: "MJ_BizApps_Forms: Form Question Options";
16
+ readonly FormResponse: "MJ_BizApps_Forms: Form Responses";
17
+ readonly FormResponseAnswer: "MJ_BizApps_Forms: Form Response Answers";
18
+ readonly FormDistribution: "MJ_BizApps_Forms: Form Distributions";
19
+ };
20
+ //# sourceMappingURL=entity-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-names.d.ts","sourceRoot":"","sources":["../../../src/lib/builder/entity-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;CAWf,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Canonical Forms entity names (PHASE1_DECOMPOSITION entity-name table).
3
+ *
4
+ * Always pass these EXACT strings to `Metadata.GetEntityObject<T>(name, contextUser)`
5
+ * and `RunView({ EntityName })`. Centralised here so the builder never hard-codes a
6
+ * stray string literal that could drift from the metadata.
7
+ */
8
+ export const FORMS_ENTITY = {
9
+ Form: 'MJ_BizApps_Forms: Forms',
10
+ FormCategory: 'MJ_BizApps_Forms: Form Categories',
11
+ FormStyle: 'MJ_BizApps_Forms: Form Styles',
12
+ FormVersion: 'MJ_BizApps_Forms: Form Versions',
13
+ FormPage: 'MJ_BizApps_Forms: Form Pages',
14
+ FormQuestion: 'MJ_BizApps_Forms: Form Questions',
15
+ FormQuestionOption: 'MJ_BizApps_Forms: Form Question Options',
16
+ FormResponse: 'MJ_BizApps_Forms: Form Responses',
17
+ FormResponseAnswer: 'MJ_BizApps_Forms: Form Response Answers',
18
+ FormDistribution: 'MJ_BizApps_Forms: Form Distributions',
19
+ };
20
+ //# sourceMappingURL=entity-names.js.map