udp-stencil-component-library 1.0.2 → 1.0.3

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 (638) hide show
  1. package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
  2. package/dist/cjs/advanced-search_50.cjs.entry.js +109 -41
  3. package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ag-grid-base_2.cjs.entry.js +2 -2
  5. package/dist/cjs/api-method-grid.cjs.entry.js +1 -1
  6. package/dist/cjs/check-box.cjs.entry.js +2 -2
  7. package/dist/cjs/chip-section.cjs.entry.js +2 -2
  8. package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
  9. package/dist/cjs/color-preview.cjs.entry.js +1 -1
  10. package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.cjs.js.map +1 -1
  11. package/dist/cjs/date-time-renderer_5.cjs.entry.js +17 -16
  12. package/dist/cjs/date-time-renderer_5.cjs.entry.js.map +1 -1
  13. package/dist/cjs/enums-CA1UjPVU.js +25 -0
  14. package/dist/cjs/enums-CA1UjPVU.js.map +1 -0
  15. package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
  16. package/dist/cjs/file-upload.selectable-list.stencil-field.entry.cjs.js.map +1 -1
  17. package/dist/cjs/file-upload_3.cjs.entry.js +73 -29
  18. package/dist/cjs/file-upload_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/index-Bu1pSYrV.js +8 -8
  20. package/dist/cjs/inputs-example.cjs.entry.js +2 -2
  21. package/dist/cjs/inputs-example.cjs.entry.js.map +1 -1
  22. package/dist/cjs/inputs-example.entry.cjs.js.map +1 -1
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/cjs/map-component_2.cjs.entry.js +2 -2
  25. package/dist/cjs/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.cjs.js.map +1 -1
  26. package/dist/cjs/numeric-field_5.cjs.entry.js +194 -19
  27. package/dist/cjs/numeric-field_5.cjs.entry.js.map +1 -1
  28. package/dist/cjs/page-renderer.cjs.entry.js +1 -1
  29. package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.cjs.js.map +1 -1
  30. package/dist/cjs/question-configs-renderer_5.cjs.entry.js +17 -4
  31. package/dist/cjs/question-configs-renderer_5.cjs.entry.js.map +1 -1
  32. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
  33. package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
  34. package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
  35. package/dist/cjs/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.cjs.js.map +1 -0
  36. package/dist/cjs/{signature-input_4.cjs.entry.js → signature-input_6.cjs.entry.js} +359 -157
  37. package/dist/cjs/signature-input_6.cjs.entry.js.map +1 -0
  38. package/dist/cjs/stencil-library.cjs.js +1 -1
  39. package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
  40. package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
  41. package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
  42. package/dist/cjs/udp-container.cjs.entry.js +2 -2
  43. package/dist/cjs/udp-drive-utils-BOyI3h7K.js +180 -0
  44. package/dist/cjs/udp-drive-utils-BOyI3h7K.js.map +1 -0
  45. package/dist/cjs/udp-forms-builder.cjs.entry.js +133 -152
  46. package/dist/cjs/udp-forms-builder.cjs.entry.js.map +1 -1
  47. package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
  48. package/dist/cjs/udp-forms-list-card_2.cjs.entry.js +5 -5
  49. package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
  50. package/dist/cjs/udp-forms-renderer.cjs.entry.js +185 -175
  51. package/dist/cjs/udp-forms-renderer.cjs.entry.js.map +1 -1
  52. package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
  53. package/dist/cjs/udp-forms-ui.cjs.entry.js +113 -82
  54. package/dist/cjs/udp-forms-ui.cjs.entry.js.map +1 -1
  55. package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
  56. package/dist/cjs/udp-map.cjs.entry.js +3 -3
  57. package/dist/cjs/udp-page.cjs.entry.js +1 -1
  58. package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
  59. package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
  60. package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
  61. package/dist/cjs/utils-CdiEmuDf.js +34 -0
  62. package/dist/cjs/utils-CdiEmuDf.js.map +1 -0
  63. package/dist/collection/collection-manifest.json +2 -0
  64. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js +22 -0
  65. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js.map +1 -1
  66. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.css +269 -0
  67. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js +392 -0
  68. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js.map +1 -0
  69. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js +38 -14
  70. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js.map +1 -1
  71. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +81 -28
  72. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js.map +1 -1
  73. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js +1 -0
  74. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js.map +1 -1
  75. package/dist/collection/components/my-component/UI/forms/udp-forms/types.js.map +1 -1
  76. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js +13 -17
  77. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js.map +1 -1
  78. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js +4 -3
  79. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js.map +1 -1
  80. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.css +0 -1
  81. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js +16 -3
  82. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js.map +1 -1
  83. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/text-input-renderer.js +2 -2
  84. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +135 -159
  85. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
  86. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card.js +5 -5
  87. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
  88. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js +1 -5
  89. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js.map +1 -1
  90. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js +1 -0
  91. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js.map +1 -1
  92. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +188 -172
  93. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
  94. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.css +175 -0
  95. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js +211 -88
  96. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js.map +1 -1
  97. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.css +166 -0
  98. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js +215 -0
  99. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js.map +1 -0
  100. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js +5 -5
  101. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js.map +1 -1
  102. package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
  103. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
  104. package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
  105. package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
  106. package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
  107. package/dist/collection/components/my-component/UI/grid/new-grid/api-method-grid.js +1 -1
  108. package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
  109. package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +1 -1
  110. package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
  111. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
  112. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
  113. package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
  114. package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
  115. package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
  116. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js +35 -22
  117. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js.map +1 -1
  118. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js +202 -10
  119. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js.map +1 -1
  120. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +6 -6
  121. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js.map +1 -1
  122. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +52 -22
  123. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js.map +1 -1
  124. package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
  125. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +99 -3
  126. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js.map +1 -1
  127. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +99 -3
  128. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js.map +1 -1
  129. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +132 -6
  130. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js.map +1 -1
  131. package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
  132. package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
  133. package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
  134. package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
  135. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
  136. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
  137. package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
  138. package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
  139. package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
  140. package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
  141. package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
  142. package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
  143. package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
  144. package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
  145. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
  146. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
  147. package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
  148. package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
  149. package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
  150. package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
  151. package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
  152. package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +2 -2
  153. package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
  154. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
  155. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
  156. package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
  157. package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
  158. package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
  159. package/dist/collection/components/test-component/inputs-example/inputs-example.js.map +1 -1
  160. package/dist/collection/page-renderer/page-renderer.js +1 -1
  161. package/dist/collection/theme/color-preview/color-preview.js +1 -1
  162. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
  163. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
  164. package/dist/components/add-map-feature-popup.js +1 -1
  165. package/dist/components/advanced-search-grouped.js +1 -1
  166. package/dist/components/advanced-search.js +1 -1
  167. package/dist/components/ag-grid-base.js +1 -1
  168. package/dist/components/ag-table.js +1 -1
  169. package/dist/components/ambient-demo-container.js +1 -1
  170. package/dist/components/ambient-template-grid.js +1 -1
  171. package/dist/components/api-method-grid.js +4 -4
  172. package/dist/components/app-bar.js +1 -1
  173. package/dist/components/chart-container.js +1 -1
  174. package/dist/components/check-box-group.js +1 -1
  175. package/dist/components/check-box.js +1 -1
  176. package/dist/components/chip-section.js +3 -3
  177. package/dist/components/client-side-grid.js +3 -3
  178. package/dist/components/color-preview.js +1 -1
  179. package/dist/components/date-time-renderer.js +1 -1
  180. package/dist/components/edit-view-form-dialog.js +1 -1
  181. package/dist/components/feature-details-card.js +1 -1
  182. package/dist/components/feature-details-popup.js +1 -1
  183. package/dist/components/file-upload-renderer.js +1 -1
  184. package/dist/components/file-upload.js +1 -1
  185. package/dist/components/grid-header.js +1 -1
  186. package/dist/components/grid-primary-bar.js +1 -1
  187. package/dist/components/inputs-example.js +15 -15
  188. package/dist/components/inputs-example.js.map +1 -1
  189. package/dist/components/list-options-renderer.js +1 -1
  190. package/dist/components/map-component.js +1 -1
  191. package/dist/components/map-toolbar.js +1 -1
  192. package/dist/components/my-component.js +26 -26
  193. package/dist/components/numeric-field.js +1 -1
  194. package/dist/components/{p-CfZR5rek.js → p-0F2I6Qvn.js} +3 -3
  195. package/dist/components/{p-CfZR5rek.js.map → p-0F2I6Qvn.js.map} +1 -1
  196. package/dist/components/{p-BbC2Itep.js → p-1CPON0Xx.js} +5 -5
  197. package/dist/components/{p-BbC2Itep.js.map → p-1CPON0Xx.js.map} +1 -1
  198. package/dist/components/{p-IlXn87Ki.js → p-1Cv4cku0.js} +4 -14
  199. package/dist/components/p-1Cv4cku0.js.map +1 -0
  200. package/dist/components/{p-CTn3c76I.js → p-1uly65Sv.js} +3 -3
  201. package/dist/components/{p-CTn3c76I.js.map → p-1uly65Sv.js.map} +1 -1
  202. package/dist/components/{p-C8cWVxBF.js → p-26jyxB7s.js} +66 -27
  203. package/dist/components/p-26jyxB7s.js.map +1 -0
  204. package/dist/components/{p-GQEOUb0c.js → p-4hWvEEZf.js} +5 -5
  205. package/dist/components/{p-GQEOUb0c.js.map → p-4hWvEEZf.js.map} +1 -1
  206. package/dist/components/{p-HrsHnWeG.js → p-6EzLtNtq.js} +6 -6
  207. package/dist/components/{p-HrsHnWeG.js.map → p-6EzLtNtq.js.map} +1 -1
  208. package/dist/components/{p-syf9yo9-.js → p-8avkq8Fj.js} +4 -4
  209. package/dist/components/{p-syf9yo9-.js.map → p-8avkq8Fj.js.map} +1 -1
  210. package/dist/components/{p-B8k9GGZB.js → p-8paOuPay.js} +4 -4
  211. package/dist/components/{p-B8k9GGZB.js.map → p-8paOuPay.js.map} +1 -1
  212. package/dist/components/{p-DntePo7I.js → p-B2mj8zmp.js} +3 -3
  213. package/dist/components/{p-DntePo7I.js.map → p-B2mj8zmp.js.map} +1 -1
  214. package/dist/components/{p-Bv1MGbhE.js → p-B3gbGwCE.js} +50 -83
  215. package/dist/components/p-B3gbGwCE.js.map +1 -0
  216. package/dist/components/{p-ves_LtSN.js → p-B6A-djr0.js} +4 -4
  217. package/dist/components/{p-ves_LtSN.js.map → p-B6A-djr0.js.map} +1 -1
  218. package/dist/components/{p-D0T6NTw2.js → p-BANMRVyZ.js} +3 -3
  219. package/dist/components/{p-D0T6NTw2.js.map → p-BANMRVyZ.js.map} +1 -1
  220. package/dist/components/{p-D-JeGky8.js → p-BB2sALAW.js} +3 -3
  221. package/dist/components/{p-D-JeGky8.js.map → p-BB2sALAW.js.map} +1 -1
  222. package/dist/components/{p-DehJN46u.js → p-BLWvjl_b.js} +6 -6
  223. package/dist/components/{p-DehJN46u.js.map → p-BLWvjl_b.js.map} +1 -1
  224. package/dist/components/{p-y6ddPVSK.js → p-BO3Kzy6x.js} +6 -6
  225. package/dist/components/{p-y6ddPVSK.js.map → p-BO3Kzy6x.js.map} +1 -1
  226. package/dist/components/p-BY5RQ-T1.js +16 -0
  227. package/dist/components/p-BY5RQ-T1.js.map +1 -0
  228. package/dist/components/{p-ClToknIK.js → p-BbOHuqrJ.js} +5 -5
  229. package/dist/components/{p-ClToknIK.js.map → p-BbOHuqrJ.js.map} +1 -1
  230. package/dist/components/{p-CJsnV8uM.js → p-BfT3KUJC.js} +4 -4
  231. package/dist/components/{p-CJsnV8uM.js.map → p-BfT3KUJC.js.map} +1 -1
  232. package/dist/components/{p-BdWgc1UD.js → p-Bi8lqIP-.js} +8 -7
  233. package/dist/components/p-Bi8lqIP-.js.map +1 -0
  234. package/dist/components/{p-DNxY-i6k.js → p-BpD1NQKC.js} +5 -5
  235. package/dist/components/{p-DNxY-i6k.js.map → p-BpD1NQKC.js.map} +1 -1
  236. package/dist/components/p-BtOBW9_N.js +142 -0
  237. package/dist/components/p-BtOBW9_N.js.map +1 -0
  238. package/dist/components/{p-Akx0UDMW.js → p-BwPAbBUr.js} +4 -4
  239. package/dist/components/{p-Akx0UDMW.js.map → p-BwPAbBUr.js.map} +1 -1
  240. package/dist/components/p-BzH4NpB-.js +301 -0
  241. package/dist/components/p-BzH4NpB-.js.map +1 -0
  242. package/dist/components/{p-CSunqYw8.js → p-C-E6e6mL.js} +17 -17
  243. package/dist/components/{p-CSunqYw8.js.map → p-C-E6e6mL.js.map} +1 -1
  244. package/dist/components/{p-DWJbhjYR.js → p-C1K2NBql.js} +5 -5
  245. package/dist/components/{p-DWJbhjYR.js.map → p-C1K2NBql.js.map} +1 -1
  246. package/dist/components/{p-CNC3rtXm.js → p-C2j9tPIU.js} +4 -4
  247. package/dist/components/{p-CNC3rtXm.js.map → p-C2j9tPIU.js.map} +1 -1
  248. package/dist/components/p-C5aOw4Ij.js +168 -0
  249. package/dist/components/p-C5aOw4Ij.js.map +1 -0
  250. package/dist/components/{p-CJINZgmD.js → p-C6bm8Rs4.js} +17 -17
  251. package/dist/components/{p-CJINZgmD.js.map → p-C6bm8Rs4.js.map} +1 -1
  252. package/dist/components/{p-PqypuW_Q.js → p-CL4gkS6u.js} +22 -84
  253. package/dist/components/p-CL4gkS6u.js.map +1 -0
  254. package/dist/components/{p-DeS7YSzc.js → p-CMTLAuz8.js} +3 -3
  255. package/dist/components/{p-DeS7YSzc.js.map → p-CMTLAuz8.js.map} +1 -1
  256. package/dist/components/p-CWAWWTnd.js +47 -0
  257. package/dist/components/p-CWAWWTnd.js.map +1 -0
  258. package/dist/components/{p-B3-pcvgV.js → p-Cdz5sX_v.js} +38 -25
  259. package/dist/components/p-Cdz5sX_v.js.map +1 -0
  260. package/dist/components/{p-byKLubNE.js → p-Coa3kO6W.js} +3 -3
  261. package/dist/components/{p-byKLubNE.js.map → p-Coa3kO6W.js.map} +1 -1
  262. package/dist/components/{p-DzaN4l_Y.js → p-Cp1kbBGM.js} +5 -5
  263. package/dist/components/{p-DzaN4l_Y.js.map → p-Cp1kbBGM.js.map} +1 -1
  264. package/dist/components/{p-BYsLvu6g.js → p-CpMdhv3j.js} +69 -5
  265. package/dist/components/p-CpMdhv3j.js.map +1 -0
  266. package/dist/components/{p-BWI0GtPn.js → p-CpQin4NC.js} +7 -7
  267. package/dist/components/{p-BWI0GtPn.js.map → p-CpQin4NC.js.map} +1 -1
  268. package/dist/components/{p-DIPIddaO.js → p-CqiZ9SAU.js} +3 -3
  269. package/dist/components/{p-DIPIddaO.js.map → p-CqiZ9SAU.js.map} +1 -1
  270. package/dist/components/{p-DxJCXXmE.js → p-Cr_ifuX-.js} +27 -26
  271. package/dist/components/p-Cr_ifuX-.js.map +1 -0
  272. package/dist/components/{p-bLKTEsIH.js → p-CsMmUkoQ.js} +8 -8
  273. package/dist/components/{p-bLKTEsIH.js.map → p-CsMmUkoQ.js.map} +1 -1
  274. package/dist/components/{p-Cf-3pInV.js → p-Ct7EvUCI.js} +3 -3
  275. package/dist/components/{p-Cf-3pInV.js.map → p-Ct7EvUCI.js.map} +1 -1
  276. package/dist/components/{p-BbHv2Hzb.js → p-CvQ8X76F.js} +8 -8
  277. package/dist/components/{p-BbHv2Hzb.js.map → p-CvQ8X76F.js.map} +1 -1
  278. package/dist/components/{p-BEwTqpWE.js → p-CxOYMG-r.js} +4 -4
  279. package/dist/components/{p-BEwTqpWE.js.map → p-CxOYMG-r.js.map} +1 -1
  280. package/dist/components/{p-DOKGpXin.js → p-Cyigv-iT.js} +27 -8
  281. package/dist/components/p-Cyigv-iT.js.map +1 -0
  282. package/dist/components/{p-hRee3qYx.js → p-D6Wo7quX.js} +7 -2
  283. package/dist/components/p-D6Wo7quX.js.map +1 -0
  284. package/dist/components/{p-BUw3R0Ql.js → p-D9A5l8BE.js} +7 -7
  285. package/dist/components/{p-BUw3R0Ql.js.map → p-D9A5l8BE.js.map} +1 -1
  286. package/dist/components/{p-CDnOrzs3.js → p-DBtdo56U.js} +4 -4
  287. package/dist/components/{p-CDnOrzs3.js.map → p-DBtdo56U.js.map} +1 -1
  288. package/dist/components/{p-BIc3R4fE.js → p-DFKz-3Nr.js} +5 -5
  289. package/dist/components/{p-BIc3R4fE.js.map → p-DFKz-3Nr.js.map} +1 -1
  290. package/dist/components/{p-BJerffMg.js → p-DL9uHt-7.js} +5 -5
  291. package/dist/components/{p-BJerffMg.js.map → p-DL9uHt-7.js.map} +1 -1
  292. package/dist/components/{p-DIcPqQkn.js → p-DSIcWNUB.js} +5 -4
  293. package/dist/components/p-DSIcWNUB.js.map +1 -0
  294. package/dist/components/{p-CRiQA7Cy.js → p-DZaCCOXB.js} +69 -5
  295. package/dist/components/p-DZaCCOXB.js.map +1 -0
  296. package/dist/components/{p-BwHEv1Kb.js → p-DaMmzX_J.js} +13 -13
  297. package/dist/components/{p-BwHEv1Kb.js.map → p-DaMmzX_J.js.map} +1 -1
  298. package/dist/components/{p-CY0PAhIT.js → p-Dmmz74K2.js} +4 -4
  299. package/dist/components/{p-CY0PAhIT.js.map → p-Dmmz74K2.js.map} +1 -1
  300. package/dist/components/{p-DMcaGgHq.js → p-DnMRLbBX.js} +5 -5
  301. package/dist/components/{p-DMcaGgHq.js.map → p-DnMRLbBX.js.map} +1 -1
  302. package/dist/components/{p-ChdtzL8Z.js → p-Dpvhge5H.js} +10 -9
  303. package/dist/components/p-Dpvhge5H.js.map +1 -0
  304. package/dist/components/p-DtiAfg0X.js +25 -0
  305. package/dist/components/p-DtiAfg0X.js.map +1 -0
  306. package/dist/components/{p-XoXMxeuq.js → p-Dwnxv7WO.js} +3 -3
  307. package/dist/components/{p-XoXMxeuq.js.map → p-Dwnxv7WO.js.map} +1 -1
  308. package/dist/components/{p-BvSuY3tY.js → p-Dx5ehH3t.js} +7 -7
  309. package/dist/components/{p-BvSuY3tY.js.map → p-Dx5ehH3t.js.map} +1 -1
  310. package/dist/components/{p-DueJnVH4.js → p-DyC6jVV8.js} +10 -9
  311. package/dist/components/p-DyC6jVV8.js.map +1 -0
  312. package/dist/components/{p-Bdt-oOnd.js → p-Oil5iqFm.js} +120 -8
  313. package/dist/components/p-Oil5iqFm.js.map +1 -0
  314. package/dist/components/{p-C6aDnKNm.js → p-P3YTnOWe.js} +5 -5
  315. package/dist/components/{p-C6aDnKNm.js.map → p-P3YTnOWe.js.map} +1 -1
  316. package/dist/components/{p-CLvAjrtw.js → p-Qxi-zxd0.js} +8 -8
  317. package/dist/components/{p-CLvAjrtw.js.map → p-Qxi-zxd0.js.map} +1 -1
  318. package/dist/components/{p-DRO3I7Mm.js → p-Qxw1cxga.js} +8 -8
  319. package/dist/components/{p-DRO3I7Mm.js.map → p-Qxw1cxga.js.map} +1 -1
  320. package/dist/components/{p-DLWUrvpt.js → p-Tu9UB-v3.js} +5 -5
  321. package/dist/components/{p-DLWUrvpt.js.map → p-Tu9UB-v3.js.map} +1 -1
  322. package/dist/components/{p-DQIj9UI7.js → p-Ut5zP7nE.js} +5 -5
  323. package/dist/components/{p-DQIj9UI7.js.map → p-Ut5zP7nE.js.map} +1 -1
  324. package/dist/components/{p-Thx6k3Xp.js → p-WLd9SWLl.js} +4 -4
  325. package/dist/components/{p-Thx6k3Xp.js.map → p-WLd9SWLl.js.map} +1 -1
  326. package/dist/components/{p-BTIWOttf.js → p-W_kxEzVl.js} +6 -6
  327. package/dist/components/{p-BTIWOttf.js.map → p-W_kxEzVl.js.map} +1 -1
  328. package/dist/components/{p-BOW03S7b.js → p-XP8tp0pm.js} +5 -5
  329. package/dist/components/{p-BOW03S7b.js.map → p-XP8tp0pm.js.map} +1 -1
  330. package/dist/components/{p-w2FTnlQG.js → p-_HuUfybA.js} +3 -3
  331. package/dist/components/{p-w2FTnlQG.js.map → p-_HuUfybA.js.map} +1 -1
  332. package/dist/components/{p-BU706xtx.js → p-hWgAmNsF.js} +3 -3
  333. package/dist/components/{p-BU706xtx.js.map → p-hWgAmNsF.js.map} +1 -1
  334. package/dist/components/{p-Bykep8mm.js → p-ibwbE8nI.js} +4 -4
  335. package/dist/components/{p-Bykep8mm.js.map → p-ibwbE8nI.js.map} +1 -1
  336. package/dist/components/{p-CA-v1fbV.js → p-ill5r6eV.js} +40 -9
  337. package/dist/components/p-ill5r6eV.js.map +1 -0
  338. package/dist/components/{p-DqYsDDHy.js → p-jdqTpLxN.js} +4 -4
  339. package/dist/components/{p-DqYsDDHy.js.map → p-jdqTpLxN.js.map} +1 -1
  340. package/dist/components/{p-ByM88ZWk.js → p-jpt3zFdi.js} +3 -3
  341. package/dist/components/{p-ByM88ZWk.js.map → p-jpt3zFdi.js.map} +1 -1
  342. package/dist/components/{p-BEtm34A3.js → p-ncemY4Wx.js} +37 -36
  343. package/dist/components/p-ncemY4Wx.js.map +1 -0
  344. package/dist/components/{p-DqPGCQm2.js → p-s8qXxEgi.js} +3 -3
  345. package/dist/components/{p-DqPGCQm2.js.map → p-s8qXxEgi.js.map} +1 -1
  346. package/dist/components/p-vrP9HZiW.js +156 -0
  347. package/dist/components/p-vrP9HZiW.js.map +1 -0
  348. package/dist/components/{p-D32jPxWa.js → p-ycrk0Lr4.js} +5 -5
  349. package/dist/components/{p-D32jPxWa.js.map → p-ycrk0Lr4.js.map} +1 -1
  350. package/dist/components/page-renderer.js +21 -21
  351. package/dist/components/primary-action-header.js +1 -1
  352. package/dist/components/question-configs-renderer.js +1 -1
  353. package/dist/components/question-specific-configs-renderer.js +1 -1
  354. package/dist/components/resource-timeline-calendar.js +5 -5
  355. package/dist/components/resource-timeline-primary-bar.js +1 -1
  356. package/dist/components/save-view-form-dialog.js +1 -1
  357. package/dist/components/search-list-item.js +1 -1
  358. package/dist/components/section-configs-renderer.js +1 -1
  359. package/dist/components/select-layer-popup.js +1 -1
  360. package/dist/components/server-side-grid.js +1 -1
  361. package/dist/components/side-sheet.js +1 -1
  362. package/dist/components/signature-input.js +1 -1
  363. package/dist/components/split-line-popup.js +1 -1
  364. package/dist/components/stencil-field.js +1 -1
  365. package/dist/components/stencil-form.js +1 -1
  366. package/dist/components/stencil-icon-button.js +1 -1
  367. package/dist/components/stencil-toggle.js +1 -1
  368. package/dist/components/tally-display.js +1 -1
  369. package/dist/components/text-area.js +1 -1
  370. package/dist/components/text-field.js +1 -1
  371. package/dist/components/text-input-renderer.js +1 -1
  372. package/dist/components/udp-ambient-card.js +1 -1
  373. package/dist/components/udp-avatar.js +1 -1
  374. package/dist/components/udp-bar-chart.js +1 -1
  375. package/dist/components/udp-charts-example.js +7 -7
  376. package/dist/components/udp-container-query-grid-item.js +1 -1
  377. package/dist/components/udp-container-query-grid.js +2 -2
  378. package/dist/components/udp-container-query.js +1 -1
  379. package/dist/components/udp-container.js +1 -1
  380. package/dist/components/udp-date-selector.js +1 -1
  381. package/dist/components/udp-datetime-selector.js +1 -1
  382. package/dist/components/udp-distribution-chart.js +1 -1
  383. package/dist/components/udp-donut-chart.js +1 -1
  384. package/dist/components/udp-dynamic-container-with-menu.js +1 -1
  385. package/dist/components/udp-dynamic-form.js +4 -4
  386. package/dist/components/udp-forms-builder-menu.js +1 -1
  387. package/dist/components/udp-forms-builder-question-item.js +1 -1
  388. package/dist/components/udp-forms-builder-style-override.js +1 -1
  389. package/dist/components/udp-forms-builder.js +162 -183
  390. package/dist/components/udp-forms-builder.js.map +1 -1
  391. package/dist/components/udp-forms-list-card.js +1 -1
  392. package/dist/components/udp-forms-list.js +10 -10
  393. package/dist/components/udp-forms-renderer.js +244 -219
  394. package/dist/components/udp-forms-renderer.js.map +1 -1
  395. package/dist/components/udp-forms-ui.js +1 -1
  396. package/dist/components/udp-grid-loader.js +1 -1
  397. package/dist/components/udp-hotlist-form.js +1 -1
  398. package/dist/components/udp-icon-button.d.ts +11 -0
  399. package/dist/components/udp-icon-button.js +9 -0
  400. package/dist/components/udp-icon-button.js.map +1 -0
  401. package/dist/components/udp-icon.js +1 -1
  402. package/dist/components/udp-line-chart.js +1 -1
  403. package/dist/components/udp-linear-loader.js +1 -1
  404. package/dist/components/udp-list-item.js +2 -2
  405. package/dist/components/udp-map-toolbar.js +1 -1
  406. package/dist/components/udp-map.js +17 -17
  407. package/dist/components/udp-menu-item.js +1 -1
  408. package/dist/components/udp-page.js +1 -1
  409. package/dist/components/udp-question.js +1 -1
  410. package/dist/components/udp-save-draft-button.d.ts +11 -0
  411. package/dist/components/udp-save-draft-button.js +9 -0
  412. package/dist/components/udp-save-draft-button.js.map +1 -0
  413. package/dist/components/udp-selector.js +1 -1
  414. package/dist/components/udp-side-sheet.js +1 -1
  415. package/dist/components/udp-skeleton-loading.js +1 -1
  416. package/dist/components/udp-split-screen.js +1 -1
  417. package/dist/components/udp-stepper-demo.js +1 -1
  418. package/dist/components/udp-tab.js +1 -1
  419. package/dist/components/udp-tabs.js +1 -1
  420. package/dist/components/udp-time-selector.js +1 -1
  421. package/dist/components/udp-vertical-spacer.js +1 -1
  422. package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
  423. package/dist/esm/advanced-search_50.entry.js +109 -41
  424. package/dist/esm/advanced-search_50.entry.js.map +1 -1
  425. package/dist/esm/ag-grid-base_2.entry.js +2 -2
  426. package/dist/esm/api-method-grid.entry.js +1 -1
  427. package/dist/esm/check-box.entry.js +2 -2
  428. package/dist/esm/chip-section.entry.js +2 -2
  429. package/dist/esm/client-side-grid.entry.js +1 -1
  430. package/dist/esm/color-preview.entry.js +1 -1
  431. package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.js.map +1 -1
  432. package/dist/esm/date-time-renderer_5.entry.js +17 -16
  433. package/dist/esm/date-time-renderer_5.entry.js.map +1 -1
  434. package/dist/esm/enums-DtiAfg0X.js +25 -0
  435. package/dist/esm/enums-DtiAfg0X.js.map +1 -0
  436. package/dist/esm/feature-details-card_2.entry.js +5 -5
  437. package/dist/esm/file-upload.selectable-list.stencil-field.entry.js.map +1 -1
  438. package/dist/esm/file-upload_3.entry.js +73 -29
  439. package/dist/esm/file-upload_3.entry.js.map +1 -1
  440. package/dist/esm/index-CaIWDYyq.js +8 -8
  441. package/dist/esm/inputs-example.entry.js +2 -2
  442. package/dist/esm/inputs-example.entry.js.map +1 -1
  443. package/dist/esm/loader.js +1 -1
  444. package/dist/esm/map-component_2.entry.js +2 -2
  445. package/dist/esm/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.js.map +1 -1
  446. package/dist/esm/numeric-field_5.entry.js +195 -20
  447. package/dist/esm/numeric-field_5.entry.js.map +1 -1
  448. package/dist/esm/page-renderer.entry.js +1 -1
  449. package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.js.map +1 -1
  450. package/dist/esm/question-configs-renderer_5.entry.js +17 -4
  451. package/dist/esm/question-configs-renderer_5.entry.js.map +1 -1
  452. package/dist/esm/resource-timeline-calendar.entry.js +1 -1
  453. package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
  454. package/dist/esm/server-side-grid.entry.js +1 -1
  455. package/dist/esm/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.js.map +1 -0
  456. package/dist/esm/{signature-input_4.entry.js → signature-input_6.entry.js} +315 -115
  457. package/dist/esm/signature-input_6.entry.js.map +1 -0
  458. package/dist/esm/stencil-library.js +1 -1
  459. package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
  460. package/dist/esm/udp-container-query-grid.entry.js +1 -1
  461. package/dist/esm/udp-container-query.entry.js +2 -2
  462. package/dist/esm/udp-container.entry.js +2 -2
  463. package/dist/esm/udp-drive-utils-Cm3Sms8t.js +168 -0
  464. package/dist/esm/udp-drive-utils-Cm3Sms8t.js.map +1 -0
  465. package/dist/esm/udp-forms-builder.entry.js +133 -152
  466. package/dist/esm/udp-forms-builder.entry.js.map +1 -1
  467. package/dist/esm/udp-forms-list-card_2.entry.js +5 -5
  468. package/dist/esm/udp-forms-list.entry.js +1 -1
  469. package/dist/esm/udp-forms-renderer.entry.js +186 -176
  470. package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
  471. package/dist/esm/udp-forms-ui.entry.js +113 -82
  472. package/dist/esm/udp-forms-ui.entry.js.map +1 -1
  473. package/dist/esm/udp-map.entry.js +3 -3
  474. package/dist/esm/udp-page.entry.js +1 -1
  475. package/dist/esm/udp-split-screen.entry.js +1 -1
  476. package/dist/esm/udp-stepper-demo.entry.js +1 -1
  477. package/dist/esm/udp-vertical-spacer.entry.js +1 -1
  478. package/dist/esm/utils-DZv4MqyU.js +31 -0
  479. package/dist/esm/utils-DZv4MqyU.js.map +1 -0
  480. package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.esm.js.map +1 -1
  481. package/dist/stencil-library/file-upload.selectable-list.stencil-field.entry.esm.js.map +1 -1
  482. package/dist/stencil-library/inputs-example.entry.esm.js.map +1 -1
  483. package/dist/stencil-library/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.esm.js.map +1 -1
  484. package/dist/stencil-library/p-09319660.entry.js +2 -0
  485. package/dist/stencil-library/p-09319660.entry.js.map +1 -0
  486. package/dist/stencil-library/p-146bc917.entry.js +2 -0
  487. package/dist/stencil-library/{p-b3b6310e.entry.js → p-147c4595.entry.js} +2 -2
  488. package/dist/stencil-library/{p-06ca29e0.entry.js → p-1b001f78.entry.js} +2 -2
  489. package/dist/stencil-library/{p-762591f6.entry.js → p-2635a6cc.entry.js} +2 -2
  490. package/dist/stencil-library/p-2f2fd111.entry.js +2 -0
  491. package/dist/stencil-library/{p-368be454.entry.js → p-2fc495ce.entry.js} +2 -2
  492. package/dist/stencil-library/{p-fdfa7087.entry.js → p-476c08df.entry.js} +2 -2
  493. package/dist/stencil-library/{p-ee1610d3.entry.js → p-4ab893a0.entry.js} +2 -2
  494. package/dist/stencil-library/p-4dac2b6d.entry.js +2 -0
  495. package/dist/stencil-library/p-4dac2b6d.entry.js.map +1 -0
  496. package/dist/stencil-library/p-556a182f.entry.js +2 -0
  497. package/dist/stencil-library/p-556a182f.entry.js.map +1 -0
  498. package/dist/stencil-library/p-5ac16f81.entry.js +2 -0
  499. package/dist/stencil-library/p-5ac16f81.entry.js.map +1 -0
  500. package/dist/stencil-library/p-609236fc.entry.js +2 -0
  501. package/dist/stencil-library/p-609236fc.entry.js.map +1 -0
  502. package/dist/stencil-library/{p-9b0b311b.entry.js → p-64330dbb.entry.js} +2 -2
  503. package/dist/stencil-library/p-65a5cce3.entry.js +2 -0
  504. package/dist/stencil-library/{p-5a946191.entry.js → p-70d8a0d8.entry.js} +2 -2
  505. package/dist/stencil-library/{p-79065768.entry.js → p-8119eb18.entry.js} +2 -2
  506. package/dist/stencil-library/{p-2f99476a.entry.js → p-86cd0134.entry.js} +2 -2
  507. package/dist/stencil-library/p-89aa56f1.entry.js +2 -0
  508. package/dist/stencil-library/p-89aa56f1.entry.js.map +1 -0
  509. package/dist/stencil-library/{p-767b7be7.entry.js → p-8a0b6bd4.entry.js} +2 -2
  510. package/dist/stencil-library/{p-40127f9f.entry.js → p-90fbca0f.entry.js} +2 -2
  511. package/dist/stencil-library/p-C5aOw4Ij.js +2 -0
  512. package/dist/stencil-library/p-C5aOw4Ij.js.map +1 -0
  513. package/dist/stencil-library/p-DZv4MqyU.js +2 -0
  514. package/dist/stencil-library/p-DZv4MqyU.js.map +1 -0
  515. package/dist/stencil-library/p-DtiAfg0X.js +2 -0
  516. package/dist/stencil-library/p-DtiAfg0X.js.map +1 -0
  517. package/dist/stencil-library/{p-f4f4ba61.entry.js → p-a98b033e.entry.js} +2 -2
  518. package/dist/stencil-library/p-a98b033e.entry.js.map +1 -0
  519. package/dist/stencil-library/{p-2a11c543.entry.js → p-ae167d4b.entry.js} +2 -2
  520. package/dist/stencil-library/{p-55459135.entry.js → p-b53e1b9a.entry.js} +2 -2
  521. package/dist/stencil-library/p-c1966f2c.entry.js +2 -0
  522. package/dist/stencil-library/p-c1966f2c.entry.js.map +1 -0
  523. package/dist/stencil-library/{p-0de6045a.entry.js → p-c9046d64.entry.js} +2 -2
  524. package/dist/stencil-library/{p-c1809ef3.entry.js → p-ca53be83.entry.js} +2 -2
  525. package/dist/stencil-library/p-d46dd16c.entry.js +2 -0
  526. package/dist/stencil-library/{p-09186dea.entry.js → p-d48b5599.entry.js} +2 -2
  527. package/dist/stencil-library/p-d4f31146.entry.js +2 -0
  528. package/dist/stencil-library/p-d4f31146.entry.js.map +1 -0
  529. package/dist/stencil-library/{p-b0b70c0b.entry.js → p-e7e8a8a3.entry.js} +2 -2
  530. package/dist/stencil-library/p-ea6e9a24.entry.js +2 -0
  531. package/dist/stencil-library/p-ea6e9a24.entry.js.map +1 -0
  532. package/dist/stencil-library/{p-79587009.entry.js → p-f4b5879d.entry.js} +2 -2
  533. package/dist/stencil-library/p-fbfbbcf1.entry.js +2 -0
  534. package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.esm.js.map +1 -1
  535. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.esm.js.map +1 -0
  536. package/dist/stencil-library/stencil-library.esm.js +1 -1
  537. package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
  538. package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
  539. package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
  540. package/dist/types/components/my-component/UI/buttons/icon-button/stencil-icon-button.d.ts +14 -0
  541. package/dist/types/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.d.ts +91 -0
  542. package/dist/types/components/my-component/UI/forms/form/stencil-field.d.ts +2 -1
  543. package/dist/types/components/my-component/UI/forms/form/stencil-form.d.ts +7 -5
  544. package/dist/types/components/my-component/UI/forms/udp-forms/types.d.ts +16 -0
  545. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.d.ts +1 -0
  546. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +16 -19
  547. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +14 -26
  548. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.d.ts +21 -7
  549. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.d.ts +20 -0
  550. package/dist/types/components/my-component/UI/inputs/file-upload/file-upload.d.ts +1 -1
  551. package/dist/types/components/my-component/UI/inputs/file-upload/udp-drive-utils.d.ts +68 -1
  552. package/dist/types/components/my-component/UI/inputs/numeric-field/numeric-field.d.ts +1 -1
  553. package/dist/types/components/my-component/UI/inputs/signature-input/signature-input.d.ts +1 -1
  554. package/dist/types/components/my-component/UI/inputs/text-area/text-area.d.ts +21 -0
  555. package/dist/types/components/my-component/UI/inputs/text-field/text-field.d.ts +21 -0
  556. package/dist/types/components/my-component/UI/inputs/time-selector/udp-time-selector.d.ts +33 -1
  557. package/dist/types/components.d.ts +384 -14
  558. package/package.json +1 -1
  559. package/dist/cjs/signature-input.stencil-form.tally-display.udp-question.entry.cjs.js.map +0 -1
  560. package/dist/cjs/signature-input_4.cjs.entry.js.map +0 -1
  561. package/dist/cjs/utils-DMhqs00g.js +0 -55
  562. package/dist/cjs/utils-DMhqs00g.js.map +0 -1
  563. package/dist/collection/components/my-component/UI/forms/form/stencil-field.css +0 -70
  564. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.css +0 -89
  565. package/dist/components/p-B3-pcvgV.js.map +0 -1
  566. package/dist/components/p-BEtm34A3.js.map +0 -1
  567. package/dist/components/p-BYsLvu6g.js.map +0 -1
  568. package/dist/components/p-BdWgc1UD.js.map +0 -1
  569. package/dist/components/p-Bdt-oOnd.js.map +0 -1
  570. package/dist/components/p-Bv1MGbhE.js.map +0 -1
  571. package/dist/components/p-C8cWVxBF.js.map +0 -1
  572. package/dist/components/p-C9cEH65u.js +0 -307
  573. package/dist/components/p-C9cEH65u.js.map +0 -1
  574. package/dist/components/p-CA-v1fbV.js.map +0 -1
  575. package/dist/components/p-CRiQA7Cy.js.map +0 -1
  576. package/dist/components/p-ChdtzL8Z.js.map +0 -1
  577. package/dist/components/p-DIcPqQkn.js.map +0 -1
  578. package/dist/components/p-DOKGpXin.js.map +0 -1
  579. package/dist/components/p-DueJnVH4.js.map +0 -1
  580. package/dist/components/p-DxJCXXmE.js.map +0 -1
  581. package/dist/components/p-IlXn87Ki.js.map +0 -1
  582. package/dist/components/p-PqypuW_Q.js.map +0 -1
  583. package/dist/components/p-hRee3qYx.js.map +0 -1
  584. package/dist/esm/signature-input.stencil-form.tally-display.udp-question.entry.js.map +0 -1
  585. package/dist/esm/signature-input_4.entry.js.map +0 -1
  586. package/dist/esm/utils-vXSpJxEK.js +0 -52
  587. package/dist/esm/utils-vXSpJxEK.js.map +0 -1
  588. package/dist/stencil-library/p-00c1ce44.entry.js +0 -2
  589. package/dist/stencil-library/p-00c1ce44.entry.js.map +0 -1
  590. package/dist/stencil-library/p-250a8400.entry.js +0 -2
  591. package/dist/stencil-library/p-2fda98ee.entry.js +0 -2
  592. package/dist/stencil-library/p-2fda98ee.entry.js.map +0 -1
  593. package/dist/stencil-library/p-50f67815.entry.js +0 -2
  594. package/dist/stencil-library/p-50f67815.entry.js.map +0 -1
  595. package/dist/stencil-library/p-584552e6.entry.js +0 -2
  596. package/dist/stencil-library/p-5e96c57a.entry.js +0 -2
  597. package/dist/stencil-library/p-5e96c57a.entry.js.map +0 -1
  598. package/dist/stencil-library/p-6a1febc9.entry.js +0 -2
  599. package/dist/stencil-library/p-6ed5258c.entry.js +0 -2
  600. package/dist/stencil-library/p-6ed5258c.entry.js.map +0 -1
  601. package/dist/stencil-library/p-77739d4b.entry.js +0 -2
  602. package/dist/stencil-library/p-77739d4b.entry.js.map +0 -1
  603. package/dist/stencil-library/p-7a2202b9.entry.js +0 -2
  604. package/dist/stencil-library/p-7a2202b9.entry.js.map +0 -1
  605. package/dist/stencil-library/p-84109194.entry.js +0 -2
  606. package/dist/stencil-library/p-b1d412a7.entry.js +0 -2
  607. package/dist/stencil-library/p-b1d412a7.entry.js.map +0 -1
  608. package/dist/stencil-library/p-f4f4ba61.entry.js.map +0 -1
  609. package/dist/stencil-library/p-f7c855d0.entry.js +0 -2
  610. package/dist/stencil-library/p-f889438a.entry.js +0 -2
  611. package/dist/stencil-library/p-f889438a.entry.js.map +0 -1
  612. package/dist/stencil-library/p-vXSpJxEK.js +0 -2
  613. package/dist/stencil-library/p-vXSpJxEK.js.map +0 -1
  614. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-question.entry.esm.js.map +0 -1
  615. /package/dist/stencil-library/{p-84109194.entry.js.map → p-146bc917.entry.js.map} +0 -0
  616. /package/dist/stencil-library/{p-b3b6310e.entry.js.map → p-147c4595.entry.js.map} +0 -0
  617. /package/dist/stencil-library/{p-06ca29e0.entry.js.map → p-1b001f78.entry.js.map} +0 -0
  618. /package/dist/stencil-library/{p-762591f6.entry.js.map → p-2635a6cc.entry.js.map} +0 -0
  619. /package/dist/stencil-library/{p-6a1febc9.entry.js.map → p-2f2fd111.entry.js.map} +0 -0
  620. /package/dist/stencil-library/{p-368be454.entry.js.map → p-2fc495ce.entry.js.map} +0 -0
  621. /package/dist/stencil-library/{p-fdfa7087.entry.js.map → p-476c08df.entry.js.map} +0 -0
  622. /package/dist/stencil-library/{p-ee1610d3.entry.js.map → p-4ab893a0.entry.js.map} +0 -0
  623. /package/dist/stencil-library/{p-9b0b311b.entry.js.map → p-64330dbb.entry.js.map} +0 -0
  624. /package/dist/stencil-library/{p-584552e6.entry.js.map → p-65a5cce3.entry.js.map} +0 -0
  625. /package/dist/stencil-library/{p-5a946191.entry.js.map → p-70d8a0d8.entry.js.map} +0 -0
  626. /package/dist/stencil-library/{p-79065768.entry.js.map → p-8119eb18.entry.js.map} +0 -0
  627. /package/dist/stencil-library/{p-2f99476a.entry.js.map → p-86cd0134.entry.js.map} +0 -0
  628. /package/dist/stencil-library/{p-767b7be7.entry.js.map → p-8a0b6bd4.entry.js.map} +0 -0
  629. /package/dist/stencil-library/{p-40127f9f.entry.js.map → p-90fbca0f.entry.js.map} +0 -0
  630. /package/dist/stencil-library/{p-2a11c543.entry.js.map → p-ae167d4b.entry.js.map} +0 -0
  631. /package/dist/stencil-library/{p-55459135.entry.js.map → p-b53e1b9a.entry.js.map} +0 -0
  632. /package/dist/stencil-library/{p-0de6045a.entry.js.map → p-c9046d64.entry.js.map} +0 -0
  633. /package/dist/stencil-library/{p-c1809ef3.entry.js.map → p-ca53be83.entry.js.map} +0 -0
  634. /package/dist/stencil-library/{p-f7c855d0.entry.js.map → p-d46dd16c.entry.js.map} +0 -0
  635. /package/dist/stencil-library/{p-09186dea.entry.js.map → p-d48b5599.entry.js.map} +0 -0
  636. /package/dist/stencil-library/{p-b0b70c0b.entry.js.map → p-e7e8a8a3.entry.js.map} +0 -0
  637. /package/dist/stencil-library/{p-79587009.entry.js.map → p-f4b5879d.entry.js.map} +0 -0
  638. /package/dist/stencil-library/{p-250a8400.entry.js.map → p-fbfbbcf1.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../../../../../src/components/my-component/UI/inputs/file-upload/file-upload.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAErG,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAMH,MAAM,OAAO,UAAU;IALvB;QAyBE;;WAEG;QACK,cAAS,GAAY,KAAK,CAAC;QAYnC;;WAEG;QACK,uBAAkB,GAAW,+BAA+B,CAAC;QAErE;;WAEG;QACK,sBAAiB,GAAW,cAAc,CAAC;QAEnD;;WAEG;QACK,oBAAe,GAAY,KAAK,CAAC;QAEzC;;WAEG;QACK,eAAU,GAAY,KAAK,CAAC;QAiBpC;;WAEG;QACK,aAAQ,GAAY,KAAK,CAAC;QAElC;;WAEG;QACK,aAAQ,GAAY,KAAK,CAAC;QAoBlC;;;WAGG;QACM,UAAK,GAAW,EAAE,CAAC;QAE5B;;;WAGG;QACM,mBAAc,GAAY,KAAK,CAAC;QAQzC;;;;WAIG;QACM,2BAAsB,GAA8B,IAAI,GAAG,EAAE,CAAC;QAsCvE;;;WAGG;QACK,gBAAW,GAAW,CAAC,CAAC;QAEhC;;;WAGG;QACK,kBAAa,GAAY,KAAK,CAAC;QA8XvC;;;;WAIG;QACK,mBAAc,GAAG,CAAC,KAAgB,EAAE,EAAE;YAC5C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEF;;;;WAIG;QACK,oBAAe,GAAG,CAAC,KAAgB,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,aAA4B,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF;;;;WAIG;QACK,oBAAe,GAAG,CAAC,KAAgB,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,aAA4B,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAEF;;;;WAIG;QACK,eAAU,GAAG,CAAC,KAAgB,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,aAA4B,CAAC;YACpD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF;;;;WAIG;QACK,oBAAe,GAAG,CAAC,KAAY,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;YAE/C,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,+DAA+D;YAC/D,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC;QAEF;;;;;WAKG;QACK,gBAAW,GAAG,CAAC,KAAe,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAE/B,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,aAAa,GAAW,EAAE,CAAC;YAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEtB,qBAAqB;gBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC1C,SAAS;gBACX,CAAC;gBAED,uBAAuB;gBACvB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CACnD,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CACnE,CAAC;gBAEF,IAAI,WAAW,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,SAAS;gBACX,CAAC;gBAED,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEzB,iEAAiE;gBACjE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,kDAAkD;oBAClD,IAAI,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;gBAED,qEAAqE;gBACrE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAA;QAiCD;;;;WAIG;QACK,sBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YAExB,4DAA4D;YAC5D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,2CAA2C;gBAC3C,IAAI,CAAC;oBACH,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACnD,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC;oBAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC/C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;oBACxC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBAClE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;oBACrD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF;;;;WAIG;QACK,qBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEvC,gDAAgD;YAChD,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAE7B,qEAAqE;YACrE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAA;KA2JF;IAtvBC;;;OAGG;IAEH,WAAW;QACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IAEH,KAAK,CAAC,mBAAmB,CAAC,QAAgE;QACxF,mGAAmG;QACnG,0FAA0F;QAC1F,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YACrH,OAAO,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;YAC5G,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACnE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,sDAAsD;YACtD,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YAEpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,4DAA4D;gBAC5D,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,mDAAmD;gBACnD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;gBACF,2CAA2C;gBAC3C,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,CAAC;YAED,iEAAiE;YACjE,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAyB;QACxD,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,sEAAsE;YACtE,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC;gBACzE,kEAAkE;gBAClE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5D,OAAO,eAAe,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YAChC,6CAA6C;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,IAAS;QAC9B,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC;IACnE,CAAC;IAED;;;;;;OAMG;IACK,qCAAqC,CAAC,OAAqB;QACjE,oDAAoD;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,SAAS,EAAE,CAAC;QAErD,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE3F,uDAAuD;QACvD,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACvF,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;YACzD,CAAC;iBAAM,IAAI,OAAO,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC;gBAC/C,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE;YACjD,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,0BAA0B,CAAC,OAAqB;QAC5D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,aAAa,CAAC,cAAc,aAAa,OAAO,CAAC,WAAW,SAAS,CAAC;YAE7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC;gBAC3B,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,WAAW;gBAChB,YAAY,EAAE,MAAM;gBACpB,OAAO,EAAE,MAAM,EAAE,YAAY;gBAC7B,OAAO,EAAE;gBACP,uCAAuC;gBACvC,2CAA2C;iBAC5C;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAE3B,mDAAmD;YACnD,mDAAmD;YACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;YAE7D,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE;gBAChC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,CAAC;gBACnE,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;aACzF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7D,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAAC,SAAiB;QAChD,kCAAkC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,0BAA0B,CAAC;QACpC,CAAC;QAED,MAAM,SAAS,GAA8B;YAC3C,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,yEAAyE;YACjF,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,mEAAmE;YAC3E,KAAK,EAAE,+BAA+B;YACtC,MAAM,EAAE,2EAA2E;YACnF,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,8BAA8B;YACrC,IAAI,EAAE,6BAA6B;SACpC,CAAC;QAEF,OAAO,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,0BAA0B,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,gEAAgE;QAChE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC/G,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,CAAC;QAED,qDAAqD;QACrD,kFAAkF;QAClF,yCAAyC;QACzC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YAC9F,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3D,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAAC,QAA0E;QACvG,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,mGAAmG;QACnG,2FAA2F;QAC3F,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YACrH,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBAChB,OAAO;gBACT,CAAC;gBAED,iCAAiC;gBACjC,MAAM,cAAc,GAAW,EAAE,CAAC;gBAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,6DAA6D;oBAC7D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAC1D,IAAI,aAAa,EAAE,CAAC;wBAClB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;YAE9B,CAAC;iBAAM,CAAC;gBACN,eAAe;gBACf,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAA+B,CAAC,CAAC;gBACrF,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,oBAAoB;QAC1B,4DAA4D;QAC5D,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5F,wDAAwD;QACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,iCAAiC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,wBAAwB;YACxB,OAAO;QACT,CAAC;QAED,sFAAsF;QACtF,2FAA2F;QAC3F,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,2DAA2D;YAC3D,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChE,IAAI,YAAY,EAAE,CAAC;oBACjB,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/C,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,WAAW,GAAG;YAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,EAAG,2BAA2B;YAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAI,2BAA2B;YAC3D,KAAK,EAAE,aAAa,EAAY,wBAAwB;YACxD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,sCAAsC;SAC5G,CAAC;QAEF,2DAA2D;QAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACK,eAAe;QACrB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IA2ID;;;;;OAKG;IACK,iBAAiB,CAAC,IAAU;;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,WAAW,EAAE,CAAC;QAE5D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC;QAED,oDAAoD;QACpD,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvF,CAAC;QAED,sCAAsC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IA0DD;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,IAAU;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,oDAAoD;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhE,IAAI,YAAY,EAAE,CAAC;gBACjB,iDAAiD;gBACjD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;gBAEvE,iDAAiD;gBACjD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAE5C,wDAAwD;gBACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;gBACb,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;gBAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAEzB,gCAAgC;gBAChC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAE7B,6BAA6B;gBAC7B,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,0CAA0C;gBAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAEtC,wDAAwD;gBACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;gBACb,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAEzB,gCAAgC;gBAChC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAE7B,6BAA6B;gBAC7B,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,2BAA2B;QAC3B,iBAAiB;QACjB,IAAI;QACJ,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QACpC,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,WAAW,EAAE,IAAI;gBACjB,kBAAkB,EAAE,OAAO;gBAC3B,uBAAuB,EAAE,IAAI,CAAC,SAAS;gBACvC,qBAAqB,EAAE,IAAI,CAAC,QAAQ;gBACpC,qBAAqB,EAAE,IAAI,CAAC,QAAQ;aACrC,kBACa,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBACzB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YAE/C,4DACE,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,EAC3D,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,WAAW,EAAE,IAAI,CAAC,eAAe,EACjC,WAAW,EAAE,IAAI,CAAC,eAAe,EACjC,KAAK,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAEtF,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACvB;oBACE,aAAI,IAAI,CAAC,kBAAkB,CAAK;oBAC/B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAS,CAAC,CAAC,CAAC,EAAE,CACjB,CACpB,CAAC,CAAC,CAAC,CACF,EAAE,CACH;gBAEA,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAClB,qBACE,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAC7B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EACzC,EAAE,EAAE,wBAAwB,GAAG,IAAI,CAAC,EAAE,EACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;oBACxC,YAAY;oBACZ,WAAW,EAAE,wBAAwB,GAAG,IAAI,CAAC,EAAE,GAC/C,CACH,CAAC,CAAC,CAAC,CACF,EAAE,CACH;gBAEA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACxB,4DAAK,KAAK,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBAClD,4DAAK,KAAK,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAClE,OAAO,CACL,WAAK,KAAK,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK;4BACnE,WAAK,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE;gCACtJ;oCACG,IAAI,CAAC,IAAI;oCACT,cAAc,IAAI,YAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,eAAiB,CACrE,CACf;4BACN;gCACE,2BAAqB,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAI,CAC3I,CACF,CACP,CAAC;oBACJ,CAAC,CAAC,CACE,CACF,CACP;gBACA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CACnB,WAAK,EAAE,EAAC,YAAY;oBAClB,4BAAmB,IAAI,CAAC,YAAY,CAAoB,CACpD,CACP,CAAC,CAAC,CAAC,CACF,EAAE,CACH,CACG,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, State, h, Host, Prop, Watch, Element, Event, EventEmitter } from '@stencil/core';\nimport { UdpDriveFile } from '../../../../../global/types';\nimport { ConfigService } from '../../../../../udp-utilities/api-config';\nimport Close24 from '@carbon/icons/es/close/24';\nimport axios from 'axios';\n\n/**\n * A comprehensive file upload component with drag-and-drop support, file type validation,\n * and integration with UDP Drive for existing file management.\n * Supports both new file uploads and existing file management with download capabilities.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * **File Handling Modes:**\n * - **New Files**: Regular File objects that need to be uploaded\n * - **Existing Files**: UdpDriveFile objects that are already stored on the server\n * - **Mixed Mode**: Combination of new and existing files\n *\n * **Value Patterns:**\n * - `initialValue`: For setting default files (UdpDriveFile[], File[], or mixed)\n * - `value`: For direct file access (always File[] for consistency)\n *\n * @example\n * ```tsx\n * // Basic file upload\n * <file-upload\n * allowMultiple={true}\n * onChange={(e) => console.log('Files:', e.detail.files)}\n * />\n *\n * // With existing UDP Drive files\n * <file-upload\n * initialValue={existingUdpFiles}\n * allowMultiple={true}\n * onChange={(e) => handleFileChange(e.detail)}\n * />\n *\n * // With file type restrictions\n * <file-upload\n * allowedFileTypes={['pdf', 'doc', 'docx']}\n * required={true}\n * error={fileError}\n * onChange={handleDocumentUpload}\n * />\n *\n * // Drag and drop disabled\n * <file-upload\n * hideDragAndDrop={true}\n * browseFileMessage=\"Select Images\"\n * allowedFileTypes={['jpg', 'png', 'gif']}\n * onChange={handleImageUpload}\n * />\n * ```\n */\n@Component({\n tag: 'file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n})\nexport class FileUpload {\n /**\n * Whether multiple files can be selected. When false, only one file can be uploaded at a time.\n */\n @Prop() allowMultiple: boolean;\n\n /**\n * Array of allowed file extensions (without dots). When specified, only these file types are accepted.\n * Example: ['pdf', 'doc', 'docx', 'jpg', 'png']\n * Mutually exclusive with disallowedFileTypes.\n */\n @Prop() allowedFileTypes: Array<string>;\n\n /**\n * Array of disallowed file extensions (without dots). When specified, these file types are rejected.\n * Example: ['exe', 'bat', 'scr']\n * Mutually exclusive with allowedFileTypes.\n */\n @Prop() disallowedFileTypes: Array<string>;\n\n /**\n * Whether the component should take the full width of its container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * Whether file selection is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Error message to display below the component. Shows validation errors or upload issues.\n */\n @Prop() error: string;\n\n /**\n * Message displayed in the drag-and-drop area. Customizes the user guidance text.\n */\n @Prop() dragAndDropMessage: string = 'Drag and drop your files here';\n\n /**\n * Text displayed on the browse files button. Customizes the button label.\n */\n @Prop() browseFileMessage: string = 'Browse Files';\n\n /**\n * Whether to hide the drag-and-drop area. When true, only the browse button is shown.\n */\n @Prop() hideDragAndDrop: boolean = false;\n\n /**\n * Whether to hide the browse files button. When true, only drag-and-drop is available.\n */\n @Prop() hideButton: boolean = false;\n\n /**\n * Unique identifier for the component. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for form data collection.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the component. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * When true, all interactions with the component are disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Files can be viewed and downloaded, but not added or removed.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Initial files to display in the component. Supports multiple formats:\n * - UdpDriveFile: Existing files stored on UDP Drive (displayed with \"(saved)\" indicator)\n * - File: New file objects ready for upload\n * - string: Legacy support for file references\n * - Arrays: Multiple files of any supported type\n *\n * UdpDriveFiles are converted to placeholder File objects for consistent handling.\n */\n @Prop() initialValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string;\n\n /**\n * Current files in the component. Always contains File objects for consistent API.\n * When files are added/removed, this prop is updated automatically.\n * For external access to uploaded files, use the change/input events.\n */\n @Prop({ mutable: true }) value: File | File[];\n\n /**\n * Array of currently selected/uploaded files. Managed internally by the component.\n * @internal\n */\n @State() files: File[] = [];\n\n /**\n * Whether the file browser window is currently open. Used for UI state management.\n * @internal\n */\n @State() fileWindowOpen: boolean = false;\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Map of file names to their original UdpDriveFile references.\n * Tracks which files are existing (saved) vs new (to be uploaded).\n * @internal\n */\n @State() existingFileReferences: Map<string, UdpDriveFile> = new Map();\n\n /**\n * Emitted when files are added, removed, or changed.\n * Provides both string representation and File objects for flexible handling.\n *\n * @event change\n * @param {object} detail - File change details\n * @param {string} detail.value - Comma-separated file references with UDP Drive IDs\n * @param {File[]} detail.files - Array of new File objects that need to be uploaded\n * @param {string} detail.toString() - String representation for form serialization\n *\n * @example\n * ```tsx\n * <file-upload onChange={(e) => {\n * console.log('String value:', e.detail.value);\n * console.log('Files to upload:', e.detail.files);\n * console.log('Form value:', e.detail.toString());\n * }} />\n * ```\n */\n @Event() change: EventEmitter<{\n value: string;\n files: File[];\n toString(): string;\n valueOf(): string;\n }>;\n\n\n\n @Element() el: HTMLElement;\n\n /**\n * Hidden file input element for triggering file browser. Created programmatically.\n * @internal\n */\n private hiddenInput: HTMLInputElement;\n\n /**\n * Counter for drag events to properly handle drag enter/leave. Prevents flickering.\n * @internal\n */\n private dragCounter: number = 0;\n\n /**\n * Flag to track if the component has been initialized to prevent re-processing during lifecycle events.\n * @internal\n */\n private isInitialized: boolean = false;\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Watches for changes to initialValue prop and processes the new files.\n * Handles conversion of UdpDriveFile objects to File objects.\n * @param newValue - New initial value containing files to process\n * @internal\n */\n @Watch('initialValue')\n async initialValueChanged(newValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string) {\n // Check if this looks like an event detail object (has value, files, toString, valueOf properties)\n // If so, ignore it since this is from our own event emission, not external initialization\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue && 'toString' in newValue) {\n console.log('initialValueChanged received an event detail object, ignoring to prevent circular processing');\n return;\n }\n\n if (newValue === '' || newValue === undefined || newValue === null) {\n this.files = [];\n this.existingFileReferences.clear();\n return;\n }\n\n try {\n // Clear existing references when initialValue changes\n this.existingFileReferences.clear();\n\n if (typeof newValue === 'string') {\n // For backward compatibility - clear files if just a string\n this.files = [];\n } else if (Array.isArray(newValue)) {\n // Handle array of files (UdpDriveFile[] or File[])\n const processedFiles = await Promise.all(\n newValue.map(file => this.processInitialFile(file))\n );\n // Filter out null results after processing\n this.files = processedFiles.filter(file => file !== null);\n } else {\n // Handle single file (UdpDriveFile or File)\n const processedFile = await this.processInitialFile(newValue);\n this.files = processedFile ? [processedFile] : [];\n }\n\n // Update value prop after initialization (but don't emit events)\n this.updateValueProp();\n } catch (error) {\n console.error('Error processing initial files:', error);\n this.files = [];\n this.existingFileReferences.clear();\n }\n }\n\n /**\n * Process an initial file, converting UdpDriveFile to File if needed.\n * Creates placeholder File objects for existing UDP Drive files.\n * @param file - File to process (UdpDriveFile or File)\n * @returns Promise resolving to a File object or null if invalid\n * @internal\n */\n private async processInitialFile(file: UdpDriveFile | File): Promise<File | null> {\n // Handle null/undefined input\n console.log(file)\n if (!file) {\n return null;\n }\n\n if (this.isUdpDriveFile(file)) {\n // For UdpDriveFile, create a placeholder File and track the reference\n try {\n const placeholderFile = this.createPlaceholderFileFromUdpDriveFile(file);\n // Track this as an existing file that doesn't need to be uploaded\n this.existingFileReferences.set(placeholderFile.name, file);\n return placeholderFile;\n } catch (error) {\n console.error('Error creating placeholder file from UdpDriveFile:', error);\n return null;\n }\n } else if (file instanceof File) {\n // Already a File object - this is a new file\n return file;\n } else {\n // Invalid object, return null\n return null;\n }\n }\n\n /**\n * Type guard to check if a file is a UdpDriveFile.\n * @param file - File object to check\n * @returns True if the file is a UdpDriveFile\n * @internal\n */\n private isUdpDriveFile(file: any): file is UdpDriveFile {\n return file && typeof file === 'object' && 'driveFileId' in file;\n }\n\n /**\n * Create a placeholder File object from UdpDriveFile without downloading content.\n * Used for display purposes and consistent File API.\n * @param udpFile - UdpDriveFile to convert\n * @returns Placeholder File object\n * @internal\n */\n private createPlaceholderFileFromUdpDriveFile(udpFile: UdpDriveFile): File {\n // Ensure we have required properties with fallbacks\n const extension = udpFile.extension || 'bin';\n const fileName = udpFile.name || `file.${extension}`;\n\n const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });\n\n // Handle lastUpdated as either Date, string, or number\n let lastModified = Date.now();\n if (udpFile.lastUpdated) {\n if (typeof udpFile.lastUpdated === 'string' || typeof udpFile.lastUpdated === 'number') {\n lastModified = new Date(udpFile.lastUpdated).getTime();\n } else if (udpFile.lastUpdated instanceof Date) {\n lastModified = udpFile.lastUpdated.getTime();\n }\n }\n\n const file = new File([placeholderBlob], fileName, {\n type: placeholderBlob.type,\n lastModified: lastModified\n });\n\n return file;\n }\n\n /**\n * Create a File object from UdpDriveFile by downloading the content from the server.\n * Used when downloading existing files for user access.\n * @param udpFile - UdpDriveFile to download and convert\n * @returns Promise resolving to a File object with downloaded content\n * @internal\n */\n private async createFileFromUdpDriveFile(udpFile: UdpDriveFile): Promise<File> {\n try {\n const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;\n\n const response = await axios({\n method: 'GET',\n url: downloadUrl,\n responseType: 'blob',\n timeout: 300000, // 5 minutes\n headers: {\n // Add authentication headers if needed\n // 'Authorization': `Bearer ${accessToken}`\n }\n });\n\n const blob = response.data;\n\n // Create a File object with the downloaded content\n // Use the udpFile.name or construct from extension\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n\n return new File([blob], fileName, {\n type: blob.type || this.getMimeTypeFromExtension(udpFile.extension),\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n } catch (error) {\n console.error('Error creating file from UdpDriveFile:', error);\n // Return a placeholder file if download fails\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([''], fileName, { type: 'application/octet-stream' });\n }\n }\n\n /**\n * Get MIME type from file extension for proper file type handling.\n * @param extension - File extension without dot (e.g., \"pdf\", \"jpg\")\n * @returns MIME type string\n * @internal\n */\n private getMimeTypeFromExtension(extension: string): string {\n // Handle null/undefined extension\n if (!extension) {\n return 'application/octet-stream';\n }\n\n const mimeTypes: { [key: string]: string } = {\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'zip': 'application/zip',\n 'rar': 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';\n }\n\n /**\n * Component lifecycle method. Initializes the component and sets up file input.\n * @internal\n */\n async componentWillLoad() {\n // Prevent re-initialization if component is already initialized\n if (this.isInitialized) {\n return;\n }\n\n // Initialize hidden file input FIRST before any async operations\n this.dragCounter = 0;\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n\n if (this.allowedFileTypes && this.disallowedFileTypes) {\n throw new Error('allowedFileTypes and disallowedFileTypes are mutually exlusive, you cannot use both props');\n }\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n // Now do async operations after hiddenInput is ready\n // Initialize from initialValue (stencil-field usage) or value prop (direct usage)\n // Priority: initialValue > value > empty\n if (this.initialValue !== undefined && this.initialValue !== null && this.initialValue !== '') {\n await this.initialValueChanged(this.initialValue);\n } else if (this.value !== undefined && this.value !== null) {\n await this.processValueProp(this.value);\n }\n\n // Mark as initialized\n this.isInitialized = true;\n }\n\n /**\n * Process the value prop (used during initialization only)\n * @param newValue - Value prop content\n * @internal\n */\n private async processValueProp(newValue: File | File[] | UdpDriveFile | UdpDriveFile[] | null | undefined) {\n if (newValue === null || newValue === undefined) {\n this.files = [];\n return;\n }\n\n // Check if this looks like an event detail object (has value, files, toString, valueOf properties)\n // If so, ignore it since this is from our own updateValueProp, not external initialization\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue && 'toString' in newValue) {\n return;\n }\n\n try {\n if (Array.isArray(newValue)) {\n if (newValue.length === 0) {\n this.files = [];\n return;\n }\n\n // Process each item in the array\n const processedFiles: File[] = [];\n for (const item of newValue) {\n // Process the item and filter out nulls from invalid objects\n const processedFile = await this.processInitialFile(item);\n if (processedFile) {\n processedFiles.push(processedFile);\n }\n }\n this.files = processedFiles;\n\n } else {\n // Single value\n const processedFile = await this.processInitialFile(newValue as UdpDriveFile | File);\n if (processedFile) {\n this.files = [processedFile];\n } else {\n this.files = [];\n }\n }\n\n // Update value prop after initialization (but don't emit events)\n this.updateValueProp();\n\n } catch (error) {\n console.error('Error in processValueProp:', error);\n this.files = [];\n }\n }\n\n /**\n * Manually emit events when files change due to user interaction.\n * This replaces the automatic @Watch('files') to avoid circular updates.\n * @internal\n */\n private emitFileChangeEvents() {\n // Update the mutable value prop for non-stencil-field usage\n this.updateValueProp();\n\n // Separate new files (to be uploaded) from existing files (already on server)\n const newFiles = this.files.filter(file => !this.existingFileReferences.has(file.name));\n const existingFiles = this.files.filter(file => this.existingFileReferences.has(file.name));\n\n // If no files at all, emit null instead of empty string\n if (newFiles.length === 0 && existingFiles.length === 0) {\n // Emit null to indicate no files\n this.change.emit(null);\n //this.input.emit(null);\n return;\n }\n\n // Create a structured value that includes both string representation and File objects\n // This allows the form handler to extract the files while maintaining string serialization\n const fileReferences: string[] = [];\n newFiles.forEach(file => {\n // Ensure file has a valid name before adding to references\n if (file.name && file.name.trim() !== '') {\n fileReferences.push(file.name.trim());\n }\n });\n\n existingFiles.forEach(file => {\n if (file.name && file.name.trim() !== '') {\n const udpDriveFile = this.existingFileReferences.get(file.name);\n if (udpDriveFile) {\n fileReferences.push(`${file.name.trim()}|udp:${udpDriveFile.driveFileId}`);\n }\n }\n });\n\n const combinedValue = fileReferences.join(',');\n\n // Create a special value object that contains both the string and the files\n // This allows generic handling while preserving File objects for upload\n const detailValue = {\n toString: () => combinedValue, // For string serialization\n valueOf: () => combinedValue, // For primitive conversion\n value: combinedValue, // Explicit string value\n files: newFiles.filter(file => file.name && file.name.trim() !== '') // Only include files with valid names\n };\n\n // Emit standard events using Stencil's @Event() decorators\n this.change.emit(detailValue);\n }\n\n /**\n * Update the mutable value prop to reflect current files.\n * For direct usage, we want to include all files (new and existing).\n * @internal\n */\n private updateValueProp() {\n try {\n if (this.allowMultiple) {\n this.value = [...this.files];\n } else {\n this.value = this.files.length > 0 ? this.files[0] : null;\n }\n } catch (error) {\n console.error('Error updating value prop:', error);\n }\n }\n\n /**\n * Handles drag over events. Prevents default behavior to allow drop.\n * @param event - Drag event\n * @internal\n */\n private handleDragOver = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n /**\n * Handles drag enter events. Adds highlight styling to drop area.\n * @param event - Drag event\n * @internal\n */\n private handleDragEnter = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter++;\n dropArea.classList.add('highlight');\n };\n\n /**\n * Handles drag leave events. Removes highlight styling when drag exits.\n * @param event - Drag event\n * @internal\n */\n private handleDragLeave = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter--;\n if (this.dragCounter === 0) {\n dropArea.classList.remove('highlight');\n }\n };\n\n /**\n * Handles drop events. Processes dropped files and adds them to the component.\n * @param event - Drop event\n * @internal\n */\n private handleDrop = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n dropArea.classList.remove('highlight');\n\n const files = event.dataTransfer.files;\n this.handleFiles(files);\n };\n\n /**\n * Handles file input change events from the hidden input element.\n * @param event - Input change event\n * @internal\n */\n private handleFileInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n\n if (input.files && input.files.length > 0) {\n this.handleFiles(input.files);\n }\n\n // Reset the input value so the same file can be selected again\n input.value = '';\n this.fileWindowOpen = false;\n };\n\n /**\n * Processes a FileList and adds valid files to the component.\n * Handles validation and multiple file constraints.\n * @param files - FileList from input or drop event\n * @internal\n */\n private handleFiles = (files: FileList) => {\n if (files.length === 0) return;\n\n const currentFiles = [...this.files];\n const newValidFiles: File[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n // Validate file name\n if (!file.name || file.name.trim() === '') {\n continue;\n }\n\n // Check for duplicates\n const isDuplicate = currentFiles.some(existingFile =>\n existingFile.name === file.name && existingFile.size === file.size\n );\n\n if (isDuplicate) {\n continue;\n }\n\n // Validate file type if restrictions are set\n if (!this.isFileTypeAllowed(file)) {\n continue;\n }\n\n newValidFiles.push(file);\n\n // If not allowing multiple files, only take the first valid file\n if (!this.allowMultiple) {\n break;\n }\n }\n\n if (newValidFiles.length > 0) {\n if (this.allowMultiple) {\n this.files = [...currentFiles, ...newValidFiles];\n } else {\n // Replace existing files if not allowing multiple\n this.files = [newValidFiles[0]];\n }\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n }\n\n /**\n * Validates if a file type is allowed based on component configuration.\n * @param file - File to validate\n * @returns True if file type is allowed\n * @internal\n */\n private isFileTypeAllowed(file: File): boolean {\n if (!file.name) {\n return false;\n }\n\n const extension = file.name.split('.').pop()?.toLowerCase();\n\n if (!extension) {\n return false;\n }\n\n // If allowedFileTypes is set, only allow those types\n if (this.allowedFileTypes && this.allowedFileTypes.length > 0) {\n return this.allowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If disallowedFileTypes is set, reject those types\n if (this.disallowedFileTypes && this.disallowedFileTypes.length > 0) {\n return !this.disallowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If no restrictions, allow all types\n return true;\n }\n\n /**\n * Handles browse files button click. Opens the file browser dialog.\n * @param event - Click event\n * @internal\n */\n private handleBrowseFiles = (event: Event) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n // Ensure hiddenInput is initialized before trying to use it\n if (!this.hiddenInput) {\n console.error('File input not initialized yet, attempting to create it now...');\n // Try to create it on-demand as a fallback\n try {\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n } catch (error) {\n console.error('Failed to create file input:', error);\n return;\n }\n }\n\n this.fileWindowOpen = true;\n this.hiddenInput.click();\n };\n\n /**\n * Removes a file from the component by index. Updates internal state and cleans up references.\n * @param index - Index of file to remove\n * @internal\n */\n private handleRemoveFile = (index: number) => {\n if (this.disabled || this.readonly) {\n return;\n }\n const fileToRemove = this.files[index];\n\n // Clean up existing file reference if it exists\n if (this.existingFileReferences.has(fileToRemove.name)) {\n this.existingFileReferences.delete(fileToRemove.name);\n }\n\n this.files.splice(index, 1);\n this.files = [...this.files];\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n\n /**\n * Triggers download of a file. Handles both new files and existing UDP Drive files.\n * For UDP Drive files, downloads the content from the server first.\n * @param file - File to download\n * @internal\n */\n async downloadFile(file: File) {\n if (this.disabled) {\n return;\n }\n try {\n // Check if this is a placeholder for a UdpDriveFile\n const udpDriveFile = this.existingFileReferences.get(file.name);\n\n if (udpDriveFile) {\n // Download the actual file content from UdpDrive\n const actualFile = await this.createFileFromUdpDriveFile(udpDriveFile);\n\n // Create a temporary URL for the downloaded file\n const url = URL.createObjectURL(actualFile);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = actualFile.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n } else {\n // Regular file - create download directly\n const url = URL.createObjectURL(file);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = file.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n }\n } catch (error) {\n console.error('Error downloading file:', error);\n }\n }\n\n /**\n * Component lifecycle method. Cleans up the hidden file input.\n * @internal\n */\n disconnectedCallback() {\n if (this.hiddenInput) {\n document.body.removeChild(this.hiddenInput);\n this.hiddenInput = null;\n }\n }\n\n /**\n * Renders the file upload component with drag-and-drop area, browse button, and file list.\n * @returns JSX element or null if not ready\n * @internal\n */\n render() {\n // if (!this.hiddenInput) {\n // return null;\n // }\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--full-width': this.fullWidth,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n <div\n id={!this.hideDragAndDrop ? 'drop-area' : 'outer-container'}\n onDragOver={this.handleDragOver}\n onDrop={this.handleDrop}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n class={!this.hideDragAndDrop ? (this.fullWidth ? 'full-width' : 'contained-width') : ''}\n >\n {!this.hideDragAndDrop ? (\n <unity-typography>\n <p>{this.dragAndDropMessage}</p>\n {!this.hideButton ? <p>or</p> : ''}\n </unity-typography>\n ) : (\n ''\n )}\n\n {!this.hideButton ? (\n <custom-button\n label={this.browseFileMessage}\n onClick={(e) => this.handleBrowseFiles(e)}\n id={'udpRecord-file-upload-' + this.id}\n disabled={this.disabled || this.readonly}\n //@ts-ignore\n udprecordid={'udpRecord-file-upload-' + this.id}\n />\n ) : (\n ''\n )}\n\n {this.files.length > 0 && (\n <div class={!this.hideDragAndDrop ? 'container' : ''}>\n <div class={!this.hideDragAndDrop ? 'inner-container' : ''}>\n {this.files.map((file, index) => {\n const isExistingFile = this.existingFileReferences.has(file.name);\n return (\n <div class={!this.hideDragAndDrop ? 'file-container' : ''} key={index}>\n <div class=\"file-text\" onClick={() => this.downloadFile(file)} style={{ cursor: this.disabled ? 'not-allowed' : 'pointer', textDecoration: 'underline' }}>\n <unity-typography>\n {file.name}\n {isExistingFile && <span style={{ fontSize: '0.8em', opacity: '0.7' }}> (saved)</span>}\n </unity-typography>\n </div>\n <div>\n <stencil-icon-button showLabel={false} icon={Close24} onClick={() => this.handleRemoveFile(index)} disabled={this.disabled || this.readonly} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n {this.errorMessage ? (\n <div id=\"error-text\">\n <unity-typography>{this.errorMessage}</unity-typography>\n </div>\n ) : (\n ''\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../../../../../src/components/my-component/UI/inputs/file-upload/file-upload.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, h, Host, Prop, Watch, Element, Event, EventEmitter } from '@stencil/core';\nimport { UdpDriveFile } from '../../../../../global/types';\nimport { ConfigService } from '../../../../../udp-utilities/api-config';\nimport Close24 from '@carbon/icons/es/close/24';\nimport axios from 'axios';\nimport { isFileReference, parseFileReferences } from './udp-drive-utils';\n\n/**\n * A comprehensive file upload component with drag-and-drop support, file type validation,\n * and integration with UDP Drive for existing file management.\n * Supports both new file uploads and existing file management with download capabilities.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * **File Handling Modes:**\n * - **New Files**: Regular File objects that need to be uploaded\n * - **Existing Files**: UdpDriveFile objects that are already stored on the server\n * - **Mixed Mode**: Combination of new and existing files\n *\n * **Value Patterns:**\n * - `initialValue`: For setting default files (UdpDriveFile[], File[], or mixed)\n * - `value`: For direct file access (always File[] for consistency)\n *\n * @example\n * ```tsx\n * // Basic file upload\n * <file-upload\n * allowMultiple={true}\n * onChange={(e) => console.log('Files:', e.detail.files)}\n * />\n *\n * // With existing UDP Drive files\n * <file-upload\n * initialValue={existingUdpFiles}\n * allowMultiple={true}\n * onChange={(e) => handleFileChange(e.detail)}\n * />\n *\n * // With file type restrictions\n * <file-upload\n * allowedFileTypes={['pdf', 'doc', 'docx']}\n * required={true}\n * error={fileError}\n * onChange={handleDocumentUpload}\n * />\n *\n * // Drag and drop disabled\n * <file-upload\n * hideDragAndDrop={true}\n * browseFileMessage=\"Select Images\"\n * allowedFileTypes={['jpg', 'png', 'gif']}\n * onChange={handleImageUpload}\n * />\n * ```\n */\n@Component({\n tag: 'file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n})\nexport class FileUpload {\n /**\n * Whether multiple files can be selected. When false, only one file can be uploaded at a time.\n */\n @Prop() allowMultiple: boolean;\n\n /**\n * Array of allowed file extensions (without dots). When specified, only these file types are accepted.\n * Example: ['pdf', 'doc', 'docx', 'jpg', 'png']\n * Mutually exclusive with disallowedFileTypes.\n */\n @Prop() allowedFileTypes: Array<string>;\n\n /**\n * Array of disallowed file extensions (without dots). When specified, these file types are rejected.\n * Example: ['exe', 'bat', 'scr']\n * Mutually exclusive with allowedFileTypes.\n */\n @Prop() disallowedFileTypes: Array<string>;\n\n /**\n * Whether the component should take the full width of its container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * Whether file selection is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Error message to display below the component. Shows validation errors or upload issues.\n */\n @Prop() error: string;\n\n /**\n * Message displayed in the drag-and-drop area. Customizes the user guidance text.\n */\n @Prop() dragAndDropMessage: string = 'Drag and drop your files here';\n\n /**\n * Text displayed on the browse files button. Customizes the button label.\n */\n @Prop() browseFileMessage: string = 'Browse Files';\n\n /**\n * Whether to hide the drag-and-drop area. When true, only the browse button is shown.\n */\n @Prop() hideDragAndDrop: boolean = false;\n\n /**\n * Whether to hide the browse files button. When true, only drag-and-drop is available.\n */\n @Prop() hideButton: boolean = false;\n\n /**\n * Unique identifier for the component. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for form data collection.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the component. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * When true, all interactions with the component are disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Files can be viewed and downloaded, but not added or removed.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Initial files to display in the component. Supports multiple formats:\n * - UdpDriveFile: Existing files stored on UDP Drive (displayed with \"(saved)\" indicator)\n * - File: New file objects ready for upload\n * - string: Legacy support for file references\n * - Arrays: Multiple files of any supported type\n *\n * UdpDriveFiles are converted to placeholder File objects for consistent handling.\n */\n @Prop() initialValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string;\n\n /**\n * Current files in the component. Always contains File objects for consistent API.\n * When files are added/removed, this prop is updated automatically.\n * For external access to uploaded files, use the change/input events.\n */\n @Prop({ mutable: true }) value: File | File[];\n\n /**\n * Array of currently selected/uploaded files. Managed internally by the component.\n * @internal\n */\n @State() files: File[] = [];\n\n /**\n * Whether the file browser window is currently open. Used for UI state management.\n * @internal\n */\n @State() fileWindowOpen: boolean = false;\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Map of file names to their original UdpDriveFile references.\n * Tracks which files are existing (saved) vs new (to be uploaded).\n * @internal\n */\n @State() existingFileReferences: Map<string, Partial<UdpDriveFile>> = new Map();\n\n /**\n * Emitted when files are added, removed, or changed.\n * Provides both string representation and File objects for flexible handling.\n *\n * @event change\n * @param {object} detail - File change details\n * @param {string} detail.value - Comma-separated file references with UDP Drive IDs\n * @param {File[]} detail.files - Array of new File objects that need to be uploaded\n * @param {string} detail.toString() - String representation for form serialization\n *\n * @example\n * ```tsx\n * <file-upload onChange={(e) => {\n * console.log('String value:', e.detail.value);\n * console.log('Files to upload:', e.detail.files);\n * console.log('Form value:', e.detail.toString());\n * }} />\n * ```\n */\n @Event() change: EventEmitter<{\n value: string;\n files: File[];\n toString(): string;\n valueOf(): string;\n }>;\n\n\n\n @Element() el: HTMLElement;\n\n /**\n * Hidden file input element for triggering file browser. Created programmatically.\n * @internal\n */\n private hiddenInput: HTMLInputElement;\n\n /**\n * Counter for drag events to properly handle drag enter/leave. Prevents flickering.\n * @internal\n */\n private dragCounter: number = 0;\n\n /**\n * Flag to track if the component has been initialized to prevent re-processing during lifecycle events.\n * @internal\n */\n private isInitialized: boolean = false;\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Watches for changes to initialValue prop and processes the new files.\n * Handles conversion of UdpDriveFile objects to File objects.\n * @param newValue - New initial value containing files to process\n * @internal\n */\n @Watch('initialValue')\nasync initialValueChanged(newValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string) {\n // Ignore event detail objects from self-emission to prevent cycles\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue) {\n return;\n }\n\n // Handle empty or null values by clearing the component\n if (!newValue) {\n this.files = [];\n this.existingFileReferences.clear();\n return;\n }\n\n try {\n this.existingFileReferences.clear();\n let processedFiles: File[] = [];\n\n // Case 1: The value is a special reference string\n if (typeof newValue === 'string' && isFileReference(newValue)) {\n processedFiles = await parseFileReferences(newValue);\n\n // After parsing, populate the map of existing UDP files so they are marked as \"(saved)\"\n for (const file of processedFiles) {\n if ((file as any).driveFileId) {\n const udpFile: Partial<UdpDriveFile> = {\n driveFileId: (file as any).driveFileId,\n name: file.name,\n extension: (file as any).extension || file.name.split('.').pop() || '',\n tenantId: null, // Dummy value, not needed for display\n productId: 0, // Dummy value\n path: '', // Dummy value\n };\n this.existingFileReferences.set(file.name, udpFile);\n }\n }\n }\n // Case 2: The value is an array of File or UdpDriveFile objects\n else if (Array.isArray(newValue)) {\n const files = await Promise.all(\n newValue.map(file => this.processInitialFile(file))\n );\n processedFiles = files.filter(file => file !== null);\n }\n // Case 3: The value is a single File or UdpDriveFile object\n else if (typeof newValue === 'object') {\n const file = await this.processInitialFile(newValue as File | UdpDriveFile);\n processedFiles = file ? [file] : [];\n }\n\n this.files = processedFiles;\n this.updateValueProp();\n\n } catch (error) {\n console.error('Error processing initial files:', error);\n this.files = [];\n this.existingFileReferences.clear();\n }\n}\n\n /**\n * Process an initial file, converting UdpDriveFile to File if needed.\n * Creates placeholder File objects for existing UDP Drive files.\n * @param file - File to process (UdpDriveFile or File)\n * @returns Promise resolving to a File object or null if invalid\n * @internal\n */\n private async processInitialFile(file: UdpDriveFile | File): Promise<File | null> {\n // Handle null/undefined input\n console.log(file)\n if (!file) {\n return null;\n }\n\n if (this.isUdpDriveFile(file)) {\n // For UdpDriveFile, create a placeholder File and track the reference\n try {\n const placeholderFile = this.createPlaceholderFileFromUdpDriveFile(file);\n // Track this as an existing file that doesn't need to be uploaded\n this.existingFileReferences.set(placeholderFile.name, file);\n return placeholderFile;\n } catch (error) {\n console.error('Error creating placeholder file from UdpDriveFile:', error);\n return null;\n }\n } else if (file instanceof File) {\n // Already a File object - this is a new file\n return file;\n } else {\n // Invalid object, return null\n return null;\n }\n }\n\n /**\n * Type guard to check if a file is a UdpDriveFile.\n * @param file - File object to check\n * @returns True if the file is a UdpDriveFile\n * @internal\n */\n private isUdpDriveFile(file: any): file is UdpDriveFile {\n return file && typeof file === 'object' && 'driveFileId' in file;\n }\n\n /**\n * Create a placeholder File object from UdpDriveFile without downloading content.\n * Used for display purposes and consistent File API.\n * @param udpFile - UdpDriveFile to convert\n * @returns Placeholder File object\n * @internal\n */\n private createPlaceholderFileFromUdpDriveFile(udpFile: UdpDriveFile): File {\n // Ensure we have required properties with fallbacks\n const extension = udpFile.extension || 'bin';\n const fileName = udpFile.name || `file.${extension}`;\n\n const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });\n\n // Handle lastUpdated as either Date, string, or number\n let lastModified = Date.now();\n if (udpFile.lastUpdated) {\n if (typeof udpFile.lastUpdated === 'string' || typeof udpFile.lastUpdated === 'number') {\n lastModified = new Date(udpFile.lastUpdated).getTime();\n } else if (udpFile.lastUpdated instanceof Date) {\n lastModified = udpFile.lastUpdated.getTime();\n }\n }\n\n const file = new File([placeholderBlob], fileName, {\n type: placeholderBlob.type,\n lastModified: lastModified\n });\n\n return file;\n }\n\n /**\n * Create a File object from UdpDriveFile by downloading the content from the server.\n * Used when downloading existing files for user access.\n * @param udpFile - UdpDriveFile to download and convert\n * @returns Promise resolving to a File object with downloaded content\n * @internal\n */\n private async createFileFromUdpDriveFile(udpFile: Partial<UdpDriveFile>): Promise<File> {\n try {\n const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;\n\n const response = await axios({\n method: 'GET',\n url: downloadUrl,\n responseType: 'blob',\n timeout: 300000, // 5 minutes\n headers: {\n // Add authentication headers if needed\n // 'Authorization': `Bearer ${accessToken}`\n }\n });\n\n const blob = response.data;\n\n // Create a File object with the downloaded content\n // Use the udpFile.name or construct from extension\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n\n return new File([blob], fileName, {\n type: blob.type || this.getMimeTypeFromExtension(udpFile.extension),\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n } catch (error) {\n console.error('Error creating file from UdpDriveFile:', error);\n // Return a placeholder file if download fails\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([''], fileName, { type: 'application/octet-stream' });\n }\n }\n\n /**\n * Get MIME type from file extension for proper file type handling.\n * @param extension - File extension without dot (e.g., \"pdf\", \"jpg\")\n * @returns MIME type string\n * @internal\n */\n private getMimeTypeFromExtension(extension: string): string {\n // Handle null/undefined extension\n if (!extension) {\n return 'application/octet-stream';\n }\n\n const mimeTypes: { [key: string]: string } = {\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'zip': 'application/zip',\n 'rar': 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';\n }\n\n /**\n * Component lifecycle method. Initializes the component and sets up file input.\n * @internal\n */\n async componentWillLoad() {\n // Prevent re-initialization if component is already initialized\n if (this.isInitialized) {\n return;\n }\n\n // Initialize hidden file input FIRST before any async operations\n this.dragCounter = 0;\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n\n if (this.allowedFileTypes && this.disallowedFileTypes) {\n throw new Error('allowedFileTypes and disallowedFileTypes are mutually exlusive, you cannot use both props');\n }\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n // Now do async operations after hiddenInput is ready\n // Initialize from initialValue (stencil-field usage) or value prop (direct usage)\n // Priority: initialValue > value > empty\n if (this.initialValue !== undefined && this.initialValue !== null && this.initialValue !== '') {\n await this.initialValueChanged(this.initialValue);\n } else if (this.value !== undefined && this.value !== null) {\n await this.processValueProp(this.value);\n }\n\n // Mark as initialized\n this.isInitialized = true;\n }\n\n /**\n * Process the value prop (used during initialization only)\n * @param newValue - Value prop content\n * @internal\n */\n private async processValueProp(newValue: File | File[] | UdpDriveFile | UdpDriveFile[] | null | undefined) {\n if (newValue === null || newValue === undefined) {\n this.files = [];\n return;\n }\n\n // Check if this looks like an event detail object (has value, files, toString, valueOf properties)\n // If so, ignore it since this is from our own updateValueProp, not external initialization\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue && 'toString' in newValue) {\n return;\n }\n\n try {\n if (Array.isArray(newValue)) {\n if (newValue.length === 0) {\n this.files = [];\n return;\n }\n\n // Process each item in the array\n const processedFiles: File[] = [];\n for (const item of newValue) {\n // Process the item and filter out nulls from invalid objects\n const processedFile = await this.processInitialFile(item);\n if (processedFile) {\n processedFiles.push(processedFile);\n }\n }\n this.files = processedFiles;\n\n } else {\n // Single value\n const processedFile = await this.processInitialFile(newValue as UdpDriveFile | File);\n if (processedFile) {\n this.files = [processedFile];\n } else {\n this.files = [];\n }\n }\n\n // Update value prop after initialization (but don't emit events)\n this.updateValueProp();\n\n } catch (error) {\n console.error('Error in processValueProp:', error);\n this.files = [];\n }\n }\n\n /**\n * Manually emit events when files change due to user interaction.\n * This replaces the automatic @Watch('files') to avoid circular updates.\n * @internal\n */\n private emitFileChangeEvents() {\n // Update the mutable value prop for non-stencil-field usage\n this.updateValueProp();\n\n // Separate new files (to be uploaded) from existing files (already on server)\n const newFiles = this.files.filter(file => !this.existingFileReferences.has(file.name));\n const existingFiles = this.files.filter(file => this.existingFileReferences.has(file.name));\n\n // If no files at all, emit null instead of empty string\n if (newFiles.length === 0 && existingFiles.length === 0) {\n // Emit null to indicate no files\n this.change.emit(null);\n //this.input.emit(null);\n return;\n }\n\n // Create a structured value that includes both string representation and File objects\n // This allows the form handler to extract the files while maintaining string serialization\n const fileReferences: string[] = [];\n newFiles.forEach(file => {\n // Ensure file has a valid name before adding to references\n if (file.name && file.name.trim() !== '') {\n fileReferences.push(file.name.trim());\n }\n });\n\n existingFiles.forEach(file => {\n if (file.name && file.name.trim() !== '') {\n const udpDriveFile = this.existingFileReferences.get(file.name);\n if (udpDriveFile) {\n fileReferences.push(`${file.name.trim()}|udp:${udpDriveFile.driveFileId}`);\n }\n }\n });\n\n const combinedValue = fileReferences.join(',');\n\n // Create a special value object that contains both the string and the files\n // This allows generic handling while preserving File objects for upload\n const detailValue = {\n toString: () => combinedValue, // For string serialization\n valueOf: () => combinedValue, // For primitive conversion\n value: combinedValue, // Explicit string value\n files: newFiles.filter(file => file.name && file.name.trim() !== '') // Only include files with valid names\n };\n\n // Emit standard events using Stencil's @Event() decorators\n this.change.emit(detailValue);\n }\n\n /**\n * Update the mutable value prop to reflect current files.\n * For direct usage, we want to include all files (new and existing).\n * @internal\n */\n private updateValueProp() {\n try {\n if (this.allowMultiple) {\n this.value = [...this.files];\n } else {\n this.value = this.files.length > 0 ? this.files[0] : null;\n }\n } catch (error) {\n console.error('Error updating value prop:', error);\n }\n }\n\n /**\n * Handles drag over events. Prevents default behavior to allow drop.\n * @param event - Drag event\n * @internal\n */\n private handleDragOver = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n /**\n * Handles drag enter events. Adds highlight styling to drop area.\n * @param event - Drag event\n * @internal\n */\n private handleDragEnter = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter++;\n dropArea.classList.add('highlight');\n };\n\n /**\n * Handles drag leave events. Removes highlight styling when drag exits.\n * @param event - Drag event\n * @internal\n */\n private handleDragLeave = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter--;\n if (this.dragCounter === 0) {\n dropArea.classList.remove('highlight');\n }\n };\n\n /**\n * Handles drop events. Processes dropped files and adds them to the component.\n * @param event - Drop event\n * @internal\n */\n private handleDrop = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n dropArea.classList.remove('highlight');\n\n const files = event.dataTransfer.files;\n this.handleFiles(files);\n };\n\n /**\n * Handles file input change events from the hidden input element.\n * @param event - Input change event\n * @internal\n */\n private handleFileInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n\n if (input.files && input.files.length > 0) {\n this.handleFiles(input.files);\n }\n\n // Reset the input value so the same file can be selected again\n input.value = '';\n this.fileWindowOpen = false;\n };\n\n /**\n * Processes a FileList and adds valid files to the component.\n * Handles validation and multiple file constraints.\n * @param files - FileList from input or drop event\n * @internal\n */\n private handleFiles = (files: FileList) => {\n if (files.length === 0) return;\n\n const currentFiles = [...this.files];\n const newValidFiles: File[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n // Validate file name\n if (!file.name || file.name.trim() === '') {\n continue;\n }\n\n // Check for duplicates\n const isDuplicate = currentFiles.some(existingFile =>\n existingFile.name === file.name && existingFile.size === file.size\n );\n\n if (isDuplicate) {\n continue;\n }\n\n // Validate file type if restrictions are set\n if (!this.isFileTypeAllowed(file)) {\n continue;\n }\n\n newValidFiles.push(file);\n\n // If not allowing multiple files, only take the first valid file\n if (!this.allowMultiple) {\n break;\n }\n }\n\n if (newValidFiles.length > 0) {\n if (this.allowMultiple) {\n this.files = [...currentFiles, ...newValidFiles];\n } else {\n // Replace existing files if not allowing multiple\n this.files = [newValidFiles[0]];\n }\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n }\n\n /**\n * Validates if a file type is allowed based on component configuration.\n * @param file - File to validate\n * @returns True if file type is allowed\n * @internal\n */\n private isFileTypeAllowed(file: File): boolean {\n if (!file.name) {\n return false;\n }\n\n const extension = file.name.split('.').pop()?.toLowerCase();\n\n if (!extension) {\n return false;\n }\n\n // If allowedFileTypes is set, only allow those types\n if (this.allowedFileTypes && this.allowedFileTypes.length > 0) {\n return this.allowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If disallowedFileTypes is set, reject those types\n if (this.disallowedFileTypes && this.disallowedFileTypes.length > 0) {\n return !this.disallowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If no restrictions, allow all types\n return true;\n }\n\n /**\n * Handles browse files button click. Opens the file browser dialog.\n * @param event - Click event\n * @internal\n */\n private handleBrowseFiles = (event: Event) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n // Ensure hiddenInput is initialized before trying to use it\n if (!this.hiddenInput) {\n console.error('File input not initialized yet, attempting to create it now...');\n // Try to create it on-demand as a fallback\n try {\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n } catch (error) {\n console.error('Failed to create file input:', error);\n return;\n }\n }\n\n this.fileWindowOpen = true;\n this.hiddenInput.click();\n };\n\n /**\n * Removes a file from the component by index. Updates internal state and cleans up references.\n * @param index - Index of file to remove\n * @internal\n */\n private handleRemoveFile = (index: number) => {\n if (this.disabled || this.readonly) {\n return;\n }\n const fileToRemove = this.files[index];\n\n // Clean up existing file reference if it exists\n if (this.existingFileReferences.has(fileToRemove.name)) {\n this.existingFileReferences.delete(fileToRemove.name);\n }\n\n this.files.splice(index, 1);\n this.files = [...this.files];\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n\n /**\n * Triggers download of a file. Handles both new files and existing UDP Drive files.\n * For UDP Drive files, downloads the content from the server first.\n * @param file - File to download\n * @internal\n */\n async downloadFile(file: File) {\n if (this.disabled) {\n return;\n }\n try {\n // Check if this is a placeholder for a UdpDriveFile\n const udpDriveFile = this.existingFileReferences.get(file.name);\n\n if (udpDriveFile) {\n // Download the actual file content from UdpDrive\n const actualFile = await this.createFileFromUdpDriveFile(udpDriveFile);\n\n // Create a temporary URL for the downloaded file\n const url = URL.createObjectURL(actualFile);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = actualFile.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n } else {\n // Regular file - create download directly\n const url = URL.createObjectURL(file);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = file.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n }\n } catch (error) {\n console.error('Error downloading file:', error);\n }\n }\n\n /**\n * Component lifecycle method. Cleans up the hidden file input.\n * @internal\n */\n disconnectedCallback() {\n if (this.hiddenInput) {\n document.body.removeChild(this.hiddenInput);\n this.hiddenInput = null;\n }\n }\n\n /**\n * Renders the file upload component with drag-and-drop area, browse button, and file list.\n * @returns JSX element or null if not ready\n * @internal\n */\n render() {\n // if (!this.hiddenInput) {\n // return null;\n // }\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--full-width': this.fullWidth,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n <div\n id={!this.hideDragAndDrop ? 'drop-area' : 'outer-container'}\n onDragOver={this.handleDragOver}\n onDrop={this.handleDrop}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n class={!this.hideDragAndDrop ? (this.fullWidth ? 'full-width' : 'contained-width') : ''}\n >\n {!this.hideDragAndDrop ? (\n <unity-typography>\n <p>{this.dragAndDropMessage}</p>\n {!this.hideButton ? <p>or</p> : ''}\n </unity-typography>\n ) : (\n ''\n )}\n\n {!this.hideButton ? (\n <custom-button\n label={this.browseFileMessage}\n onClick={(e) => this.handleBrowseFiles(e)}\n id={'udpRecord-file-upload-' + this.id}\n disabled={this.disabled || this.readonly}\n //@ts-ignore\n udprecordid={'udpRecord-file-upload-' + this.id}\n />\n ) : (\n ''\n )}\n\n {this.files.length > 0 && (\n <div class={!this.hideDragAndDrop ? 'container' : ''}>\n <div class={!this.hideDragAndDrop ? 'inner-container' : ''}>\n {this.files.map((file, index) => {\n const isExistingFile = this.existingFileReferences.has(file.name);\n return (\n <div class={!this.hideDragAndDrop ? 'file-container' : ''} key={index}>\n <div class=\"file-text\" onClick={() => this.downloadFile(file)} style={{ cursor: this.disabled ? 'not-allowed' : 'pointer', textDecoration: 'underline' }}>\n <unity-typography>\n {file.name}\n {isExistingFile && <span style={{ fontSize: '0.8em', opacity: '0.7' }}> (saved)</span>}\n </unity-typography>\n </div>\n <div>\n <stencil-icon-button showLabel={false} icon={Close24} onClick={() => this.handleRemoveFile(index)} disabled={this.disabled || this.readonly} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n {this.errorMessage && !this.fileWindowOpen ? (\n <div id=\"error-text\">\n <unity-typography color=\"error\">{this.errorMessage}</unity-typography>\n </div>\n ) : (\n ''\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -1,10 +1,27 @@
1
1
  import { ConfigService } from "../../../../../udp-utilities/api-config";
2
2
  import axios from "axios";
3
+ /**
4
+ * Type guard to check if a value is a UdpDriveFile
5
+ */
3
6
  export function isUdpDriveFile(file) {
4
7
  return file && typeof file === 'object' && 'driveFileId' in file;
5
8
  }
9
+ /**
10
+ * Type guard to check if a value is a File object
11
+ */
12
+ export function isFile(file) {
13
+ return file instanceof File;
14
+ }
15
+ /**
16
+ * Type guard to check if a value is a string (URL or base64)
17
+ */
18
+ export function isFileString(file) {
19
+ return typeof file === 'string' && file.length > 0;
20
+ }
21
+ /**
22
+ * Get MIME type from file extension
23
+ */
6
24
  export function getMimeTypeFromExtension(extension) {
7
- // Use a static map for common types, fallback to browser's lookup if available
8
25
  const mimeTypes = {
9
26
  pdf: 'application/pdf',
10
27
  doc: 'application/msword',
@@ -25,20 +42,20 @@ export function getMimeTypeFromExtension(extension) {
25
42
  jpeg: 'image/jpeg',
26
43
  gif: 'image/gif',
27
44
  svg: 'image/svg+xml',
45
+ webp: 'image/webp',
46
+ bmp: 'image/bmp',
47
+ tiff: 'image/tiff',
28
48
  zip: 'application/zip',
29
49
  rar: 'application/x-rar-compressed',
30
50
  '7z': 'application/x-7z-compressed'
31
51
  };
32
52
  const ext = extension.trim().toLowerCase();
33
- if (mimeTypes[ext])
34
- return mimeTypes[ext];
35
- // Try browser lookup if available
36
- if (typeof window !== 'undefined' && window.navigator.mimeTypes) {
37
- // This is not reliable, but included for completeness
38
- // Most browsers do not expose a direct lookup
39
- }
40
- return 'application/octet-stream';
53
+ return mimeTypes[ext] || 'application/octet-stream';
41
54
  }
55
+ /**
56
+ * Create a placeholder File object from UdpDriveFile (for display purposes only)
57
+ * This creates a lightweight File object without downloading the actual content
58
+ */
42
59
  export function createPlaceholderFileFromUdpDriveFile(udpFile) {
43
60
  const fileName = udpFile.name || `file.${udpFile.extension}`;
44
61
  const placeholderBlob = new Blob([''], { type: getMimeTypeFromExtension(udpFile.extension) });
@@ -47,6 +64,10 @@ export function createPlaceholderFileFromUdpDriveFile(udpFile) {
47
64
  lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()
48
65
  });
49
66
  }
67
+ /**
68
+ * Download and create a File object from UdpDriveFile (downloads actual content)
69
+ * Use this when you need the actual file content (e.g., for signature editing)
70
+ */
50
71
  export async function downloadFileFromUdpDriveFile(udpFile) {
51
72
  try {
52
73
  const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;
@@ -65,9 +86,180 @@ export async function downloadFileFromUdpDriveFile(udpFile) {
65
86
  });
66
87
  }
67
88
  catch (error) {
68
- console.error('Error creating file from UdpDriveFile:', error);
89
+ console.error('Error downloading file from UdpDriveFile:', error);
69
90
  const fileName = udpFile.name || `file.${udpFile.extension}`;
70
91
  return new File([''], fileName, { type: 'application/octet-stream' });
71
92
  }
72
93
  }
94
+ /**
95
+ * Convert a string (URL or base64) to a File object
96
+ */
97
+ export async function createFileFromString(fileString, defaultFileName = 'file') {
98
+ try {
99
+ if (fileString.startsWith('data:')) {
100
+ // Handle base64 data URLs
101
+ const response = await fetch(fileString);
102
+ const blob = await response.blob();
103
+ return new File([blob], defaultFileName, { type: blob.type });
104
+ }
105
+ else {
106
+ // Handle regular URLs
107
+ const response = await fetch(fileString);
108
+ const blob = await response.blob();
109
+ const fileName = fileString.split('/').pop() || defaultFileName;
110
+ return new File([blob], fileName, { type: blob.type });
111
+ }
112
+ }
113
+ catch (error) {
114
+ console.error('Error creating file from string:', error);
115
+ return new File([''], defaultFileName, { type: 'application/octet-stream' });
116
+ }
117
+ }
118
+ /**
119
+ * Normalize a single initialValue to an array of Files
120
+ * For file-upload component (supports arrays)
121
+ */
122
+ export async function normalizeFileArrayInitialValue(initialValue, downloadContent = false) {
123
+ if (!initialValue)
124
+ return [];
125
+ // Convert to array if not already
126
+ const values = Array.isArray(initialValue) ? initialValue : [initialValue];
127
+ const files = [];
128
+ for (const value of values) {
129
+ if (isUdpDriveFile(value)) {
130
+ if (downloadContent) {
131
+ files.push(await downloadFileFromUdpDriveFile(value));
132
+ }
133
+ else {
134
+ files.push(createPlaceholderFileFromUdpDriveFile(value));
135
+ }
136
+ }
137
+ else if (isFile(value)) {
138
+ files.push(value);
139
+ }
140
+ else if (isFileString(value)) {
141
+ files.push(await createFileFromString(value));
142
+ }
143
+ }
144
+ return files;
145
+ }
146
+ /**
147
+ * Normalize a single initialValue to a single File
148
+ * For signature component (single file only)
149
+ */
150
+ export async function normalizeFileInitialValue(initialValue, downloadContent = true) {
151
+ if (!initialValue)
152
+ return null;
153
+ // Handle array case (take first item)
154
+ let value = initialValue;
155
+ if (Array.isArray(value)) {
156
+ value = value[0];
157
+ if (!value)
158
+ return null;
159
+ }
160
+ if (isUdpDriveFile(value)) {
161
+ if (downloadContent) {
162
+ return await downloadFileFromUdpDriveFile(value);
163
+ }
164
+ else {
165
+ return createPlaceholderFileFromUdpDriveFile(value);
166
+ }
167
+ }
168
+ else if (isFile(value)) {
169
+ return value;
170
+ }
171
+ else if (isFileString(value)) {
172
+ return await createFileFromString(value);
173
+ }
174
+ return null;
175
+ }
176
+ /**
177
+ * Utility function for file-upload component to handle initialValue changes
178
+ * Creates placeholder files by default (download on demand)
179
+ */
180
+ export async function processFileUploadInitialValue(initialValue) {
181
+ return await normalizeFileArrayInitialValue(initialValue, false);
182
+ }
183
+ /**
184
+ * Utility function for signature component to handle initialValue changes
185
+ * Downloads content immediately for editing
186
+ */
187
+ export async function processSignatureInitialValue(initialValue) {
188
+ return await normalizeFileInitialValue(initialValue, true);
189
+ }
190
+ /**
191
+ * Check if a string value is a file reference (contains | and udp: or b64:)
192
+ */
193
+ export function isFileReference(value) {
194
+ return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));
195
+ }
196
+ /**
197
+ * Parse file references from the special format: "filename|udp:driveFileId" or "filename|b64:base64data"
198
+ * Returns an array of File objects for use with input components
199
+ */
200
+ export async function parseFileReferences(value) {
201
+ const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);
202
+ const files = [];
203
+ for (const reference of references) {
204
+ try {
205
+ const file = await parseFileReference(reference);
206
+ if (file) {
207
+ files.push(file);
208
+ }
209
+ }
210
+ catch (error) {
211
+ console.error('Error parsing file reference:', reference, error);
212
+ }
213
+ }
214
+ return files;
215
+ }
216
+ /**
217
+ * Parse a single file reference from the format "filename|udp:driveFileId" or "filename|b64:base64data"
218
+ * Returns a File object that can be used by input components
219
+ */
220
+ export async function parseFileReference(reference) {
221
+ const parts = reference.split('|');
222
+ if (parts.length !== 2) {
223
+ console.warn('Invalid file reference format:', reference);
224
+ return null;
225
+ }
226
+ const [filename, dataRef] = parts;
227
+ if (dataRef.startsWith('udp:')) {
228
+ // Handle UDP Drive file reference - create placeholder File
229
+ const extension = filename.split('.').pop() || '';
230
+ const mimeType = getMimeTypeFromExtension(extension);
231
+ const placeholderBlob = new Blob([''], { type: mimeType });
232
+ const file = new File([placeholderBlob], filename, { type: mimeType });
233
+ // Add UDP-specific metadata as custom properties
234
+ file.driveFileId = dataRef.substring(4); // Remove 'udp:' prefix
235
+ file.extension = extension;
236
+ return file;
237
+ }
238
+ else if (dataRef.startsWith('b64:')) {
239
+ // Handle base64 encoded file - convert to actual File
240
+ const base64Data = dataRef.substring(4); // Remove 'b64:' prefix
241
+ const dataUrl = `data:application/octet-stream;base64,${base64Data}`;
242
+ try {
243
+ return await createFileFromString(dataUrl, filename);
244
+ }
245
+ catch (error) {
246
+ console.error('Error processing base64 file:', error);
247
+ return null;
248
+ }
249
+ }
250
+ console.warn('Unknown file reference format:', dataRef);
251
+ return null;
252
+ }
253
+ /**
254
+ * Process form initial values that may contain file references
255
+ * This function should be called by input components when they receive initialValue
256
+ */
257
+ export async function processFormFileInitialValue(initialValue) {
258
+ // If it's a string that looks like file references, parse it
259
+ if (typeof initialValue === 'string' && isFileReference(initialValue)) {
260
+ return await parseFileReferences(initialValue);
261
+ }
262
+ // Otherwise, use the standard normalization
263
+ return await normalizeFileArrayInitialValue(initialValue, false);
264
+ }
73
265
  //# sourceMappingURL=udp-drive-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"udp-drive-utils.js","sourceRoot":"","sources":["../../../../../../src/components/my-component/UI/inputs/file-upload/udp-drive-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { UdpDriveFile } from '../../../../../global/types';\nimport { ConfigService } from '../../../../../udp-utilities/api-config';\nimport axios from 'axios';\n\nexport function isUdpDriveFile(file: any): file is UdpDriveFile {\n return file && typeof file === 'object' && 'driveFileId' in file;\n}\n\nexport function getMimeTypeFromExtension(extension: string): string {\n // Use a static map for common types, fallback to browser's lookup if available\n const mimeTypes: Record<string, string> = {\n pdf: 'application/pdf',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n txt: 'text/plain',\n csv: 'text/csv',\n json: 'application/json',\n xml: 'application/xml',\n html: 'text/html',\n css: 'text/css',\n js: 'application/javascript',\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n svg: 'image/svg+xml',\n zip: 'application/zip',\n rar: 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n const ext = extension.trim().toLowerCase();\n if (mimeTypes[ext]) return mimeTypes[ext];\n\n // Try browser lookup if available\n if (typeof window !== 'undefined' && window.navigator.mimeTypes) {\n // This is not reliable, but included for completeness\n // Most browsers do not expose a direct lookup\n }\n\n return 'application/octet-stream';\n}\n\nexport function createPlaceholderFileFromUdpDriveFile(udpFile: UdpDriveFile): File {\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n const placeholderBlob = new Blob([''], { type: getMimeTypeFromExtension(udpFile.extension) });\n return new File([placeholderBlob], fileName, {\n type: placeholderBlob.type,\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n}\n\nexport async function downloadFileFromUdpDriveFile(udpFile: UdpDriveFile): Promise<File> {\n try {\n const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;\n const response = await axios({\n method: 'GET',\n url: downloadUrl,\n responseType: 'blob',\n timeout: 300000,\n headers: {}\n });\n const blob = response.data;\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([blob], fileName, {\n type: blob.type || getMimeTypeFromExtension(udpFile.extension),\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n } catch (error) {\n console.error('Error creating file from UdpDriveFile:', error);\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([''], fileName, { type: 'application/octet-stream' });\n }\n}\n"]}
1
+ {"version":3,"file":"udp-drive-utils.js","sourceRoot":"","sources":["../../../../../../src/components/my-component/UI/inputs/file-upload/udp-drive-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { UdpDriveFile } from '../../../../../global/types';\nimport { ConfigService } from '../../../../../udp-utilities/api-config';\nimport axios from 'axios';\n\n// Type definitions for consistent initialValue handling\nexport type FileInitialValue = UdpDriveFile | File | string;\nexport type FileArrayInitialValue = UdpDriveFile[] | UdpDriveFile | File[] | File | string;\n\n/**\n * Type guard to check if a value is a UdpDriveFile\n */\nexport function isUdpDriveFile(file: any): file is UdpDriveFile {\n return file && typeof file === 'object' && 'driveFileId' in file;\n}\n\n/**\n * Type guard to check if a value is a File object\n */\nexport function isFile(file: any): file is File {\n return file instanceof File;\n}\n\n/**\n * Type guard to check if a value is a string (URL or base64)\n */\nexport function isFileString(file: any): file is string {\n return typeof file === 'string' && file.length > 0;\n}\n\n/**\n * Get MIME type from file extension\n */\nexport function getMimeTypeFromExtension(extension: string): string {\n const mimeTypes: Record<string, string> = {\n pdf: 'application/pdf',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n txt: 'text/plain',\n csv: 'text/csv',\n json: 'application/json',\n xml: 'application/xml',\n html: 'text/html',\n css: 'text/css',\n js: 'application/javascript',\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n bmp: 'image/bmp',\n tiff: 'image/tiff',\n zip: 'application/zip',\n rar: 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n const ext = extension.trim().toLowerCase();\n return mimeTypes[ext] || 'application/octet-stream';\n}\n\n/**\n * Create a placeholder File object from UdpDriveFile (for display purposes only)\n * This creates a lightweight File object without downloading the actual content\n */\nexport function createPlaceholderFileFromUdpDriveFile(udpFile: UdpDriveFile): File {\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n const placeholderBlob = new Blob([''], { type: getMimeTypeFromExtension(udpFile.extension) });\n return new File([placeholderBlob], fileName, {\n type: placeholderBlob.type,\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n}\n\n/**\n * Download and create a File object from UdpDriveFile (downloads actual content)\n * Use this when you need the actual file content (e.g., for signature editing)\n */\nexport async function downloadFileFromUdpDriveFile(udpFile: Partial<UdpDriveFile>): Promise<File> {\n try {\n const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;\n const response = await axios({\n method: 'GET',\n url: downloadUrl,\n responseType: 'blob',\n timeout: 300000,\n headers: {}\n });\n const blob = response.data;\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([blob], fileName, {\n type: blob.type || getMimeTypeFromExtension(udpFile.extension),\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n } catch (error) {\n console.error('Error downloading file from UdpDriveFile:', error);\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([''], fileName, { type: 'application/octet-stream' });\n }\n}\n\n/**\n * Convert a string (URL or base64) to a File object\n */\nexport async function createFileFromString(fileString: string, defaultFileName: string = 'file'): Promise<File> {\n try {\n if (fileString.startsWith('data:')) {\n // Handle base64 data URLs\n const response = await fetch(fileString);\n const blob = await response.blob();\n return new File([blob], defaultFileName, { type: blob.type });\n } else {\n // Handle regular URLs\n const response = await fetch(fileString);\n const blob = await response.blob();\n const fileName = fileString.split('/').pop() || defaultFileName;\n return new File([blob], fileName, { type: blob.type });\n }\n } catch (error) {\n console.error('Error creating file from string:', error);\n return new File([''], defaultFileName, { type: 'application/octet-stream' });\n }\n}\n\n/**\n * Normalize a single initialValue to an array of Files\n * For file-upload component (supports arrays)\n */\nexport async function normalizeFileArrayInitialValue(\n initialValue: FileArrayInitialValue,\n downloadContent: boolean = false\n): Promise<File[]> {\n if (!initialValue) return [];\n\n // Convert to array if not already\n const values = Array.isArray(initialValue) ? initialValue : [initialValue];\n const files: File[] = [];\n\n for (const value of values) {\n if (isUdpDriveFile(value)) {\n if (downloadContent) {\n files.push(await downloadFileFromUdpDriveFile(value));\n } else {\n files.push(createPlaceholderFileFromUdpDriveFile(value));\n }\n } else if (isFile(value)) {\n files.push(value);\n } else if (isFileString(value)) {\n files.push(await createFileFromString(value));\n }\n }\n\n return files;\n}\n\n/**\n * Normalize a single initialValue to a single File\n * For signature component (single file only)\n */\nexport async function normalizeFileInitialValue(\n initialValue: FileInitialValue,\n downloadContent: boolean = true\n): Promise<File | null> {\n if (!initialValue) return null;\n\n // Handle array case (take first item)\n let value = initialValue;\n if (Array.isArray(value)) {\n value = value[0];\n if (!value) return null;\n }\n\n if (isUdpDriveFile(value)) {\n if (downloadContent) {\n return await downloadFileFromUdpDriveFile(value);\n } else {\n return createPlaceholderFileFromUdpDriveFile(value);\n }\n } else if (isFile(value)) {\n return value;\n } else if (isFileString(value)) {\n return await createFileFromString(value);\n }\n\n return null;\n}\n\n/**\n * Utility function for file-upload component to handle initialValue changes\n * Creates placeholder files by default (download on demand)\n */\nexport async function processFileUploadInitialValue(\n initialValue: FileArrayInitialValue\n): Promise<File[]> {\n return await normalizeFileArrayInitialValue(initialValue, false);\n}\n\n/**\n * Utility function for signature component to handle initialValue changes\n * Downloads content immediately for editing\n */\nexport async function processSignatureInitialValue(\n initialValue: FileInitialValue\n): Promise<File | null> {\n return await normalizeFileInitialValue(initialValue, true);\n}\n\n/**\n * Check if a string value is a file reference (contains | and udp: or b64:)\n */\nexport function isFileReference(value: string): boolean {\n return typeof value === 'string' && value.includes('|') && (value.includes('udp:') || value.includes('b64:'));\n}\n\n/**\n * Parse file references from the special format: \"filename|udp:driveFileId\" or \"filename|b64:base64data\"\n * Returns an array of File objects for use with input components\n */\nexport async function parseFileReferences(value: string): Promise<File[]> {\n const references = value.split(',').map(ref => ref.trim()).filter(ref => ref);\n const files: File[] = [];\n\n for (const reference of references) {\n try {\n const file = await parseFileReference(reference);\n if (file) {\n files.push(file);\n }\n } catch (error) {\n console.error('Error parsing file reference:', reference, error);\n }\n }\n\n return files;\n}\n\n/**\n * Parse a single file reference from the format \"filename|udp:driveFileId\" or \"filename|b64:base64data\"\n * Returns a File object that can be used by input components\n */\nexport async function parseFileReference(reference: string): Promise<File | null> {\n const parts = reference.split('|');\n if (parts.length !== 2) {\n console.warn('Invalid file reference format:', reference);\n return null;\n }\n\n const [filename, dataRef] = parts;\n\n if (dataRef.startsWith('udp:')) {\n // Handle UDP Drive file reference - create placeholder File\n const extension = filename.split('.').pop() || '';\n const mimeType = getMimeTypeFromExtension(extension);\n const placeholderBlob = new Blob([''], { type: mimeType });\n const file = new File([placeholderBlob], filename, { type: mimeType });\n\n // Add UDP-specific metadata as custom properties\n (file as any).driveFileId = dataRef.substring(4); // Remove 'udp:' prefix\n (file as any).extension = extension;\n\n return file;\n } else if (dataRef.startsWith('b64:')) {\n // Handle base64 encoded file - convert to actual File\n const base64Data = dataRef.substring(4); // Remove 'b64:' prefix\n const dataUrl = `data:application/octet-stream;base64,${base64Data}`;\n\n try {\n return await createFileFromString(dataUrl, filename);\n } catch (error) {\n console.error('Error processing base64 file:', error);\n return null;\n }\n }\n\n console.warn('Unknown file reference format:', dataRef);\n return null;\n}\n\n/**\n * Process form initial values that may contain file references\n * This function should be called by input components when they receive initialValue\n */\nexport async function processFormFileInitialValue(\n initialValue: FileArrayInitialValue | string\n): Promise<File[]> {\n // If it's a string that looks like file references, parse it\n if (typeof initialValue === 'string' && isFileReference(initialValue)) {\n return await parseFileReferences(initialValue);\n }\n\n // Otherwise, use the standard normalization\n return await normalizeFileArrayInitialValue(initialValue as FileArrayInitialValue, false);\n}\n\n\n"]}
@@ -159,18 +159,18 @@ export class NumericField {
159
159
  'bx--text-input--error': isError,
160
160
  'text-field--disabled': this.disabled,
161
161
  };
162
- return (h(Host, { key: '7d776c36ad5501bb3f374e944ffe45e9eeec6c23', class: {
162
+ return (h(Host, { key: '32ef2570f39039046ca11f41eca52febeae693ec', class: {
163
163
  'udp-input': true,
164
164
  'udp-input--error': isError,
165
165
  'udp-input--disabled': this.disabled,
166
166
  'udp-input--hidden': this.hidden,
167
167
  'udp-input--required': this.required,
168
- 'udp-input--readonly': this.readOnly,
168
+ 'udp-input--readonly': this.readonly,
169
169
  [`udp-input--size-${this.size}`]: true,
170
170
  [`udp-input--margin-${this.margin}`]: true,
171
- }, "aria-invalid": isError ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false' }, h("div", { key: 'be538a9c56bd08eab7223fef6ee9da24403c718b', class: "bx--form-item" }, h("unity-typography", { key: '46d18c808bbe451b4190acc8ee311e3bfbffd730', variant: "caption-text" }, h("label", { key: '263cf55793ddfa48b0673f56e21e0f1b0baaae32', htmlFor: this.id, class: "bx--label" }, this.label, this.required ? '*' : '')), this.hidden ? (h("input", { id: this.id, type: "hidden", value: this.internalValue, name: this.name })) : (h("input", { id: this.id, name: this.name, type: "number", class: Object.assign({}, inputClass), placeholder: this.placeholder, value: this.internalValue, required: this.required, disabled: this.disabled, readOnly: this.readOnly, onFocus: this.onFocus, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, inputMode: this.inputMode, min: this.min, max: this.max, step: this.step,
171
+ }, "aria-invalid": isError ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false' }, h("div", { key: '0e7a7e10a09c8f9884eca3156897cacb6e0dde56', class: "bx--form-item" }, h("unity-typography", { key: 'e277cf047ef5a7ecf0a886406ad6043b0a0f6112', variant: "caption-text" }, h("label", { key: '522fb1b279e0a6bbb1370ce3fe8f3862222af545', htmlFor: this.id, class: "bx--label" }, this.label, this.required ? '*' : '')), this.hidden ? (h("input", { id: this.id, type: "hidden", value: this.internalValue, name: this.name })) : (h("input", { id: this.id, name: this.name, type: "number", class: Object.assign({}, inputClass), placeholder: this.placeholder, value: this.internalValue, required: this.required, disabled: this.disabled, readOnly: this.readonly, onFocus: this.onFocus, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, inputMode: this.inputMode, min: this.min, max: this.max, step: this.step,
172
172
  //@ts-ignore
173
- udprecordid: 'udpRecord-number-field-' + this.id })), isError && (h("div", { key: '9a374f9fe28eded7695ddf789ef1228aff14e493', class: "error-message" }, h("unity-typography", { key: '1cdcd1f2fb2cf057c6b3b39fedc7daa79534cfb4', variant: "caption-text", color: "error" }, this.errorMessage))))));
173
+ udprecordid: 'udpRecord-number-field-' + this.id })), isError && (h("div", { key: 'fcd472c0b004963ec052c3d9a00d52aaf008fbd2', class: "error-message" }, h("unity-typography", { key: 'e864b6079624297f1bd9e837579e24132a3390d9', variant: "caption-text", color: "error" }, this.errorMessage))))));
174
174
  }
175
175
  static get is() { return "numeric-field"; }
176
176
  static get encapsulation() { return "shadow"; }
@@ -281,9 +281,9 @@ export class NumericField {
281
281
  "setter": false,
282
282
  "reflect": false
283
283
  },
284
- "readOnly": {
284
+ "readonly": {
285
285
  "type": "boolean",
286
- "attribute": "read-only",
286
+ "attribute": "readonly",
287
287
  "mutable": false,
288
288
  "complexType": {
289
289
  "original": "boolean",