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.
- package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
- package/dist/cjs/advanced-search_50.cjs.entry.js +109 -41
- package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
- package/dist/cjs/ag-grid-base_2.cjs.entry.js +2 -2
- package/dist/cjs/api-method-grid.cjs.entry.js +1 -1
- package/dist/cjs/check-box.cjs.entry.js +2 -2
- package/dist/cjs/chip-section.cjs.entry.js +2 -2
- package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/color-preview.cjs.entry.js +1 -1
- 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
- package/dist/cjs/date-time-renderer_5.cjs.entry.js +17 -16
- package/dist/cjs/date-time-renderer_5.cjs.entry.js.map +1 -1
- package/dist/cjs/enums-CA1UjPVU.js +25 -0
- package/dist/cjs/enums-CA1UjPVU.js.map +1 -0
- package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
- package/dist/cjs/file-upload.selectable-list.stencil-field.entry.cjs.js.map +1 -1
- package/dist/cjs/file-upload_3.cjs.entry.js +73 -29
- package/dist/cjs/file-upload_3.cjs.entry.js.map +1 -1
- package/dist/cjs/index-Bu1pSYrV.js +8 -8
- package/dist/cjs/inputs-example.cjs.entry.js +2 -2
- package/dist/cjs/inputs-example.cjs.entry.js.map +1 -1
- package/dist/cjs/inputs-example.entry.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-component_2.cjs.entry.js +2 -2
- package/dist/cjs/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.cjs.js.map +1 -1
- package/dist/cjs/numeric-field_5.cjs.entry.js +194 -19
- package/dist/cjs/numeric-field_5.cjs.entry.js.map +1 -1
- package/dist/cjs/page-renderer.cjs.entry.js +1 -1
- 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
- package/dist/cjs/question-configs-renderer_5.cjs.entry.js +17 -4
- package/dist/cjs/question-configs-renderer_5.cjs.entry.js.map +1 -1
- package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
- package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
- package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.cjs.js.map +1 -0
- package/dist/cjs/{signature-input_4.cjs.entry.js → signature-input_6.cjs.entry.js} +359 -157
- package/dist/cjs/signature-input_6.cjs.entry.js.map +1 -0
- package/dist/cjs/stencil-library.cjs.js +1 -1
- package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
- package/dist/cjs/udp-container.cjs.entry.js +2 -2
- package/dist/cjs/udp-drive-utils-BOyI3h7K.js +180 -0
- package/dist/cjs/udp-drive-utils-BOyI3h7K.js.map +1 -0
- package/dist/cjs/udp-forms-builder.cjs.entry.js +133 -152
- package/dist/cjs/udp-forms-builder.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-list-card_2.cjs.entry.js +5 -5
- package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
- package/dist/cjs/udp-forms-renderer.cjs.entry.js +185 -175
- package/dist/cjs/udp-forms-renderer.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-ui.cjs.entry.js +113 -82
- package/dist/cjs/udp-forms-ui.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-map.cjs.entry.js +3 -3
- package/dist/cjs/udp-page.cjs.entry.js +1 -1
- package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
- package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
- package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
- package/dist/cjs/utils-CdiEmuDf.js +34 -0
- package/dist/cjs/utils-CdiEmuDf.js.map +1 -0
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js +22 -0
- package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js.map +1 -1
- package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.css +269 -0
- package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js +392 -0
- package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js.map +1 -0
- package/dist/collection/components/my-component/UI/forms/form/stencil-field.js +38 -14
- package/dist/collection/components/my-component/UI/forms/form/stencil-field.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +81 -28
- package/dist/collection/components/my-component/UI/forms/form/stencil-form.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js +1 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/types.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js +13 -17
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +135 -159
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card.js +5 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js +1 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js +1 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +188 -172
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.css +175 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js +211 -88
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js.map +1 -1
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.css +166 -0
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js +215 -0
- 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
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js +5 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
- package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
- package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
- package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/api-method-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
- package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js +35 -22
- package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js +202 -10
- package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +6 -6
- package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +52 -22
- package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +99 -3
- package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +99 -3
- package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +132 -6
- package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js.map +1 -1
- package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
- package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
- package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
- package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
- package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +2 -2
- package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
- package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
- package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
- package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
- package/dist/collection/components/test-component/inputs-example/inputs-example.js.map +1 -1
- package/dist/collection/page-renderer/page-renderer.js +1 -1
- package/dist/collection/theme/color-preview/color-preview.js +1 -1
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/add-map-feature-popup.js +1 -1
- package/dist/components/advanced-search-grouped.js +1 -1
- package/dist/components/advanced-search.js +1 -1
- package/dist/components/ag-grid-base.js +1 -1
- package/dist/components/ag-table.js +1 -1
- package/dist/components/ambient-demo-container.js +1 -1
- package/dist/components/ambient-template-grid.js +1 -1
- package/dist/components/api-method-grid.js +4 -4
- package/dist/components/app-bar.js +1 -1
- package/dist/components/chart-container.js +1 -1
- package/dist/components/check-box-group.js +1 -1
- package/dist/components/check-box.js +1 -1
- package/dist/components/chip-section.js +3 -3
- package/dist/components/client-side-grid.js +3 -3
- package/dist/components/color-preview.js +1 -1
- package/dist/components/date-time-renderer.js +1 -1
- package/dist/components/edit-view-form-dialog.js +1 -1
- package/dist/components/feature-details-card.js +1 -1
- package/dist/components/feature-details-popup.js +1 -1
- package/dist/components/file-upload-renderer.js +1 -1
- package/dist/components/file-upload.js +1 -1
- package/dist/components/grid-header.js +1 -1
- package/dist/components/grid-primary-bar.js +1 -1
- package/dist/components/inputs-example.js +15 -15
- package/dist/components/inputs-example.js.map +1 -1
- package/dist/components/list-options-renderer.js +1 -1
- package/dist/components/map-component.js +1 -1
- package/dist/components/map-toolbar.js +1 -1
- package/dist/components/my-component.js +26 -26
- package/dist/components/numeric-field.js +1 -1
- package/dist/components/{p-CfZR5rek.js → p-0F2I6Qvn.js} +3 -3
- package/dist/components/{p-CfZR5rek.js.map → p-0F2I6Qvn.js.map} +1 -1
- package/dist/components/{p-BbC2Itep.js → p-1CPON0Xx.js} +5 -5
- package/dist/components/{p-BbC2Itep.js.map → p-1CPON0Xx.js.map} +1 -1
- package/dist/components/{p-IlXn87Ki.js → p-1Cv4cku0.js} +4 -14
- package/dist/components/p-1Cv4cku0.js.map +1 -0
- package/dist/components/{p-CTn3c76I.js → p-1uly65Sv.js} +3 -3
- package/dist/components/{p-CTn3c76I.js.map → p-1uly65Sv.js.map} +1 -1
- package/dist/components/{p-C8cWVxBF.js → p-26jyxB7s.js} +66 -27
- package/dist/components/p-26jyxB7s.js.map +1 -0
- package/dist/components/{p-GQEOUb0c.js → p-4hWvEEZf.js} +5 -5
- package/dist/components/{p-GQEOUb0c.js.map → p-4hWvEEZf.js.map} +1 -1
- package/dist/components/{p-HrsHnWeG.js → p-6EzLtNtq.js} +6 -6
- package/dist/components/{p-HrsHnWeG.js.map → p-6EzLtNtq.js.map} +1 -1
- package/dist/components/{p-syf9yo9-.js → p-8avkq8Fj.js} +4 -4
- package/dist/components/{p-syf9yo9-.js.map → p-8avkq8Fj.js.map} +1 -1
- package/dist/components/{p-B8k9GGZB.js → p-8paOuPay.js} +4 -4
- package/dist/components/{p-B8k9GGZB.js.map → p-8paOuPay.js.map} +1 -1
- package/dist/components/{p-DntePo7I.js → p-B2mj8zmp.js} +3 -3
- package/dist/components/{p-DntePo7I.js.map → p-B2mj8zmp.js.map} +1 -1
- package/dist/components/{p-Bv1MGbhE.js → p-B3gbGwCE.js} +50 -83
- package/dist/components/p-B3gbGwCE.js.map +1 -0
- package/dist/components/{p-ves_LtSN.js → p-B6A-djr0.js} +4 -4
- package/dist/components/{p-ves_LtSN.js.map → p-B6A-djr0.js.map} +1 -1
- package/dist/components/{p-D0T6NTw2.js → p-BANMRVyZ.js} +3 -3
- package/dist/components/{p-D0T6NTw2.js.map → p-BANMRVyZ.js.map} +1 -1
- package/dist/components/{p-D-JeGky8.js → p-BB2sALAW.js} +3 -3
- package/dist/components/{p-D-JeGky8.js.map → p-BB2sALAW.js.map} +1 -1
- package/dist/components/{p-DehJN46u.js → p-BLWvjl_b.js} +6 -6
- package/dist/components/{p-DehJN46u.js.map → p-BLWvjl_b.js.map} +1 -1
- package/dist/components/{p-y6ddPVSK.js → p-BO3Kzy6x.js} +6 -6
- package/dist/components/{p-y6ddPVSK.js.map → p-BO3Kzy6x.js.map} +1 -1
- package/dist/components/p-BY5RQ-T1.js +16 -0
- package/dist/components/p-BY5RQ-T1.js.map +1 -0
- package/dist/components/{p-ClToknIK.js → p-BbOHuqrJ.js} +5 -5
- package/dist/components/{p-ClToknIK.js.map → p-BbOHuqrJ.js.map} +1 -1
- package/dist/components/{p-CJsnV8uM.js → p-BfT3KUJC.js} +4 -4
- package/dist/components/{p-CJsnV8uM.js.map → p-BfT3KUJC.js.map} +1 -1
- package/dist/components/{p-BdWgc1UD.js → p-Bi8lqIP-.js} +8 -7
- package/dist/components/p-Bi8lqIP-.js.map +1 -0
- package/dist/components/{p-DNxY-i6k.js → p-BpD1NQKC.js} +5 -5
- package/dist/components/{p-DNxY-i6k.js.map → p-BpD1NQKC.js.map} +1 -1
- package/dist/components/p-BtOBW9_N.js +142 -0
- package/dist/components/p-BtOBW9_N.js.map +1 -0
- package/dist/components/{p-Akx0UDMW.js → p-BwPAbBUr.js} +4 -4
- package/dist/components/{p-Akx0UDMW.js.map → p-BwPAbBUr.js.map} +1 -1
- package/dist/components/p-BzH4NpB-.js +301 -0
- package/dist/components/p-BzH4NpB-.js.map +1 -0
- package/dist/components/{p-CSunqYw8.js → p-C-E6e6mL.js} +17 -17
- package/dist/components/{p-CSunqYw8.js.map → p-C-E6e6mL.js.map} +1 -1
- package/dist/components/{p-DWJbhjYR.js → p-C1K2NBql.js} +5 -5
- package/dist/components/{p-DWJbhjYR.js.map → p-C1K2NBql.js.map} +1 -1
- package/dist/components/{p-CNC3rtXm.js → p-C2j9tPIU.js} +4 -4
- package/dist/components/{p-CNC3rtXm.js.map → p-C2j9tPIU.js.map} +1 -1
- package/dist/components/p-C5aOw4Ij.js +168 -0
- package/dist/components/p-C5aOw4Ij.js.map +1 -0
- package/dist/components/{p-CJINZgmD.js → p-C6bm8Rs4.js} +17 -17
- package/dist/components/{p-CJINZgmD.js.map → p-C6bm8Rs4.js.map} +1 -1
- package/dist/components/{p-PqypuW_Q.js → p-CL4gkS6u.js} +22 -84
- package/dist/components/p-CL4gkS6u.js.map +1 -0
- package/dist/components/{p-DeS7YSzc.js → p-CMTLAuz8.js} +3 -3
- package/dist/components/{p-DeS7YSzc.js.map → p-CMTLAuz8.js.map} +1 -1
- package/dist/components/p-CWAWWTnd.js +47 -0
- package/dist/components/p-CWAWWTnd.js.map +1 -0
- package/dist/components/{p-B3-pcvgV.js → p-Cdz5sX_v.js} +38 -25
- package/dist/components/p-Cdz5sX_v.js.map +1 -0
- package/dist/components/{p-byKLubNE.js → p-Coa3kO6W.js} +3 -3
- package/dist/components/{p-byKLubNE.js.map → p-Coa3kO6W.js.map} +1 -1
- package/dist/components/{p-DzaN4l_Y.js → p-Cp1kbBGM.js} +5 -5
- package/dist/components/{p-DzaN4l_Y.js.map → p-Cp1kbBGM.js.map} +1 -1
- package/dist/components/{p-BYsLvu6g.js → p-CpMdhv3j.js} +69 -5
- package/dist/components/p-CpMdhv3j.js.map +1 -0
- package/dist/components/{p-BWI0GtPn.js → p-CpQin4NC.js} +7 -7
- package/dist/components/{p-BWI0GtPn.js.map → p-CpQin4NC.js.map} +1 -1
- package/dist/components/{p-DIPIddaO.js → p-CqiZ9SAU.js} +3 -3
- package/dist/components/{p-DIPIddaO.js.map → p-CqiZ9SAU.js.map} +1 -1
- package/dist/components/{p-DxJCXXmE.js → p-Cr_ifuX-.js} +27 -26
- package/dist/components/p-Cr_ifuX-.js.map +1 -0
- package/dist/components/{p-bLKTEsIH.js → p-CsMmUkoQ.js} +8 -8
- package/dist/components/{p-bLKTEsIH.js.map → p-CsMmUkoQ.js.map} +1 -1
- package/dist/components/{p-Cf-3pInV.js → p-Ct7EvUCI.js} +3 -3
- package/dist/components/{p-Cf-3pInV.js.map → p-Ct7EvUCI.js.map} +1 -1
- package/dist/components/{p-BbHv2Hzb.js → p-CvQ8X76F.js} +8 -8
- package/dist/components/{p-BbHv2Hzb.js.map → p-CvQ8X76F.js.map} +1 -1
- package/dist/components/{p-BEwTqpWE.js → p-CxOYMG-r.js} +4 -4
- package/dist/components/{p-BEwTqpWE.js.map → p-CxOYMG-r.js.map} +1 -1
- package/dist/components/{p-DOKGpXin.js → p-Cyigv-iT.js} +27 -8
- package/dist/components/p-Cyigv-iT.js.map +1 -0
- package/dist/components/{p-hRee3qYx.js → p-D6Wo7quX.js} +7 -2
- package/dist/components/p-D6Wo7quX.js.map +1 -0
- package/dist/components/{p-BUw3R0Ql.js → p-D9A5l8BE.js} +7 -7
- package/dist/components/{p-BUw3R0Ql.js.map → p-D9A5l8BE.js.map} +1 -1
- package/dist/components/{p-CDnOrzs3.js → p-DBtdo56U.js} +4 -4
- package/dist/components/{p-CDnOrzs3.js.map → p-DBtdo56U.js.map} +1 -1
- package/dist/components/{p-BIc3R4fE.js → p-DFKz-3Nr.js} +5 -5
- package/dist/components/{p-BIc3R4fE.js.map → p-DFKz-3Nr.js.map} +1 -1
- package/dist/components/{p-BJerffMg.js → p-DL9uHt-7.js} +5 -5
- package/dist/components/{p-BJerffMg.js.map → p-DL9uHt-7.js.map} +1 -1
- package/dist/components/{p-DIcPqQkn.js → p-DSIcWNUB.js} +5 -4
- package/dist/components/p-DSIcWNUB.js.map +1 -0
- package/dist/components/{p-CRiQA7Cy.js → p-DZaCCOXB.js} +69 -5
- package/dist/components/p-DZaCCOXB.js.map +1 -0
- package/dist/components/{p-BwHEv1Kb.js → p-DaMmzX_J.js} +13 -13
- package/dist/components/{p-BwHEv1Kb.js.map → p-DaMmzX_J.js.map} +1 -1
- package/dist/components/{p-CY0PAhIT.js → p-Dmmz74K2.js} +4 -4
- package/dist/components/{p-CY0PAhIT.js.map → p-Dmmz74K2.js.map} +1 -1
- package/dist/components/{p-DMcaGgHq.js → p-DnMRLbBX.js} +5 -5
- package/dist/components/{p-DMcaGgHq.js.map → p-DnMRLbBX.js.map} +1 -1
- package/dist/components/{p-ChdtzL8Z.js → p-Dpvhge5H.js} +10 -9
- package/dist/components/p-Dpvhge5H.js.map +1 -0
- package/dist/components/p-DtiAfg0X.js +25 -0
- package/dist/components/p-DtiAfg0X.js.map +1 -0
- package/dist/components/{p-XoXMxeuq.js → p-Dwnxv7WO.js} +3 -3
- package/dist/components/{p-XoXMxeuq.js.map → p-Dwnxv7WO.js.map} +1 -1
- package/dist/components/{p-BvSuY3tY.js → p-Dx5ehH3t.js} +7 -7
- package/dist/components/{p-BvSuY3tY.js.map → p-Dx5ehH3t.js.map} +1 -1
- package/dist/components/{p-DueJnVH4.js → p-DyC6jVV8.js} +10 -9
- package/dist/components/p-DyC6jVV8.js.map +1 -0
- package/dist/components/{p-Bdt-oOnd.js → p-Oil5iqFm.js} +120 -8
- package/dist/components/p-Oil5iqFm.js.map +1 -0
- package/dist/components/{p-C6aDnKNm.js → p-P3YTnOWe.js} +5 -5
- package/dist/components/{p-C6aDnKNm.js.map → p-P3YTnOWe.js.map} +1 -1
- package/dist/components/{p-CLvAjrtw.js → p-Qxi-zxd0.js} +8 -8
- package/dist/components/{p-CLvAjrtw.js.map → p-Qxi-zxd0.js.map} +1 -1
- package/dist/components/{p-DRO3I7Mm.js → p-Qxw1cxga.js} +8 -8
- package/dist/components/{p-DRO3I7Mm.js.map → p-Qxw1cxga.js.map} +1 -1
- package/dist/components/{p-DLWUrvpt.js → p-Tu9UB-v3.js} +5 -5
- package/dist/components/{p-DLWUrvpt.js.map → p-Tu9UB-v3.js.map} +1 -1
- package/dist/components/{p-DQIj9UI7.js → p-Ut5zP7nE.js} +5 -5
- package/dist/components/{p-DQIj9UI7.js.map → p-Ut5zP7nE.js.map} +1 -1
- package/dist/components/{p-Thx6k3Xp.js → p-WLd9SWLl.js} +4 -4
- package/dist/components/{p-Thx6k3Xp.js.map → p-WLd9SWLl.js.map} +1 -1
- package/dist/components/{p-BTIWOttf.js → p-W_kxEzVl.js} +6 -6
- package/dist/components/{p-BTIWOttf.js.map → p-W_kxEzVl.js.map} +1 -1
- package/dist/components/{p-BOW03S7b.js → p-XP8tp0pm.js} +5 -5
- package/dist/components/{p-BOW03S7b.js.map → p-XP8tp0pm.js.map} +1 -1
- package/dist/components/{p-w2FTnlQG.js → p-_HuUfybA.js} +3 -3
- package/dist/components/{p-w2FTnlQG.js.map → p-_HuUfybA.js.map} +1 -1
- package/dist/components/{p-BU706xtx.js → p-hWgAmNsF.js} +3 -3
- package/dist/components/{p-BU706xtx.js.map → p-hWgAmNsF.js.map} +1 -1
- package/dist/components/{p-Bykep8mm.js → p-ibwbE8nI.js} +4 -4
- package/dist/components/{p-Bykep8mm.js.map → p-ibwbE8nI.js.map} +1 -1
- package/dist/components/{p-CA-v1fbV.js → p-ill5r6eV.js} +40 -9
- package/dist/components/p-ill5r6eV.js.map +1 -0
- package/dist/components/{p-DqYsDDHy.js → p-jdqTpLxN.js} +4 -4
- package/dist/components/{p-DqYsDDHy.js.map → p-jdqTpLxN.js.map} +1 -1
- package/dist/components/{p-ByM88ZWk.js → p-jpt3zFdi.js} +3 -3
- package/dist/components/{p-ByM88ZWk.js.map → p-jpt3zFdi.js.map} +1 -1
- package/dist/components/{p-BEtm34A3.js → p-ncemY4Wx.js} +37 -36
- package/dist/components/p-ncemY4Wx.js.map +1 -0
- package/dist/components/{p-DqPGCQm2.js → p-s8qXxEgi.js} +3 -3
- package/dist/components/{p-DqPGCQm2.js.map → p-s8qXxEgi.js.map} +1 -1
- package/dist/components/p-vrP9HZiW.js +156 -0
- package/dist/components/p-vrP9HZiW.js.map +1 -0
- package/dist/components/{p-D32jPxWa.js → p-ycrk0Lr4.js} +5 -5
- package/dist/components/{p-D32jPxWa.js.map → p-ycrk0Lr4.js.map} +1 -1
- package/dist/components/page-renderer.js +21 -21
- package/dist/components/primary-action-header.js +1 -1
- package/dist/components/question-configs-renderer.js +1 -1
- package/dist/components/question-specific-configs-renderer.js +1 -1
- package/dist/components/resource-timeline-calendar.js +5 -5
- package/dist/components/resource-timeline-primary-bar.js +1 -1
- package/dist/components/save-view-form-dialog.js +1 -1
- package/dist/components/search-list-item.js +1 -1
- package/dist/components/section-configs-renderer.js +1 -1
- package/dist/components/select-layer-popup.js +1 -1
- package/dist/components/server-side-grid.js +1 -1
- package/dist/components/side-sheet.js +1 -1
- package/dist/components/signature-input.js +1 -1
- package/dist/components/split-line-popup.js +1 -1
- package/dist/components/stencil-field.js +1 -1
- package/dist/components/stencil-form.js +1 -1
- package/dist/components/stencil-icon-button.js +1 -1
- package/dist/components/stencil-toggle.js +1 -1
- package/dist/components/tally-display.js +1 -1
- package/dist/components/text-area.js +1 -1
- package/dist/components/text-field.js +1 -1
- package/dist/components/text-input-renderer.js +1 -1
- package/dist/components/udp-ambient-card.js +1 -1
- package/dist/components/udp-avatar.js +1 -1
- package/dist/components/udp-bar-chart.js +1 -1
- package/dist/components/udp-charts-example.js +7 -7
- package/dist/components/udp-container-query-grid-item.js +1 -1
- package/dist/components/udp-container-query-grid.js +2 -2
- package/dist/components/udp-container-query.js +1 -1
- package/dist/components/udp-container.js +1 -1
- package/dist/components/udp-date-selector.js +1 -1
- package/dist/components/udp-datetime-selector.js +1 -1
- package/dist/components/udp-distribution-chart.js +1 -1
- package/dist/components/udp-donut-chart.js +1 -1
- package/dist/components/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/udp-dynamic-form.js +4 -4
- package/dist/components/udp-forms-builder-menu.js +1 -1
- package/dist/components/udp-forms-builder-question-item.js +1 -1
- package/dist/components/udp-forms-builder-style-override.js +1 -1
- package/dist/components/udp-forms-builder.js +162 -183
- package/dist/components/udp-forms-builder.js.map +1 -1
- package/dist/components/udp-forms-list-card.js +1 -1
- package/dist/components/udp-forms-list.js +10 -10
- package/dist/components/udp-forms-renderer.js +244 -219
- package/dist/components/udp-forms-renderer.js.map +1 -1
- package/dist/components/udp-forms-ui.js +1 -1
- package/dist/components/udp-grid-loader.js +1 -1
- package/dist/components/udp-hotlist-form.js +1 -1
- package/dist/components/udp-icon-button.d.ts +11 -0
- package/dist/components/udp-icon-button.js +9 -0
- package/dist/components/udp-icon-button.js.map +1 -0
- package/dist/components/udp-icon.js +1 -1
- package/dist/components/udp-line-chart.js +1 -1
- package/dist/components/udp-linear-loader.js +1 -1
- package/dist/components/udp-list-item.js +2 -2
- package/dist/components/udp-map-toolbar.js +1 -1
- package/dist/components/udp-map.js +17 -17
- package/dist/components/udp-menu-item.js +1 -1
- package/dist/components/udp-page.js +1 -1
- package/dist/components/udp-question.js +1 -1
- package/dist/components/udp-save-draft-button.d.ts +11 -0
- package/dist/components/udp-save-draft-button.js +9 -0
- package/dist/components/udp-save-draft-button.js.map +1 -0
- package/dist/components/udp-selector.js +1 -1
- package/dist/components/udp-side-sheet.js +1 -1
- package/dist/components/udp-skeleton-loading.js +1 -1
- package/dist/components/udp-split-screen.js +1 -1
- package/dist/components/udp-stepper-demo.js +1 -1
- package/dist/components/udp-tab.js +1 -1
- package/dist/components/udp-tabs.js +1 -1
- package/dist/components/udp-time-selector.js +1 -1
- package/dist/components/udp-vertical-spacer.js +1 -1
- package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
- package/dist/esm/advanced-search_50.entry.js +109 -41
- package/dist/esm/advanced-search_50.entry.js.map +1 -1
- package/dist/esm/ag-grid-base_2.entry.js +2 -2
- package/dist/esm/api-method-grid.entry.js +1 -1
- package/dist/esm/check-box.entry.js +2 -2
- package/dist/esm/chip-section.entry.js +2 -2
- package/dist/esm/client-side-grid.entry.js +1 -1
- package/dist/esm/color-preview.entry.js +1 -1
- package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.js.map +1 -1
- package/dist/esm/date-time-renderer_5.entry.js +17 -16
- package/dist/esm/date-time-renderer_5.entry.js.map +1 -1
- package/dist/esm/enums-DtiAfg0X.js +25 -0
- package/dist/esm/enums-DtiAfg0X.js.map +1 -0
- package/dist/esm/feature-details-card_2.entry.js +5 -5
- package/dist/esm/file-upload.selectable-list.stencil-field.entry.js.map +1 -1
- package/dist/esm/file-upload_3.entry.js +73 -29
- package/dist/esm/file-upload_3.entry.js.map +1 -1
- package/dist/esm/index-CaIWDYyq.js +8 -8
- package/dist/esm/inputs-example.entry.js +2 -2
- package/dist/esm/inputs-example.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-component_2.entry.js +2 -2
- package/dist/esm/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.js.map +1 -1
- package/dist/esm/numeric-field_5.entry.js +195 -20
- package/dist/esm/numeric-field_5.entry.js.map +1 -1
- package/dist/esm/page-renderer.entry.js +1 -1
- 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
- package/dist/esm/question-configs-renderer_5.entry.js +17 -4
- package/dist/esm/question-configs-renderer_5.entry.js.map +1 -1
- package/dist/esm/resource-timeline-calendar.entry.js +1 -1
- package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
- package/dist/esm/server-side-grid.entry.js +1 -1
- package/dist/esm/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.js.map +1 -0
- package/dist/esm/{signature-input_4.entry.js → signature-input_6.entry.js} +315 -115
- package/dist/esm/signature-input_6.entry.js.map +1 -0
- package/dist/esm/stencil-library.js +1 -1
- package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
- package/dist/esm/udp-container-query-grid.entry.js +1 -1
- package/dist/esm/udp-container-query.entry.js +2 -2
- package/dist/esm/udp-container.entry.js +2 -2
- package/dist/esm/udp-drive-utils-Cm3Sms8t.js +168 -0
- package/dist/esm/udp-drive-utils-Cm3Sms8t.js.map +1 -0
- package/dist/esm/udp-forms-builder.entry.js +133 -152
- package/dist/esm/udp-forms-builder.entry.js.map +1 -1
- package/dist/esm/udp-forms-list-card_2.entry.js +5 -5
- package/dist/esm/udp-forms-list.entry.js +1 -1
- package/dist/esm/udp-forms-renderer.entry.js +186 -176
- package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
- package/dist/esm/udp-forms-ui.entry.js +113 -82
- package/dist/esm/udp-forms-ui.entry.js.map +1 -1
- package/dist/esm/udp-map.entry.js +3 -3
- package/dist/esm/udp-page.entry.js +1 -1
- package/dist/esm/udp-split-screen.entry.js +1 -1
- package/dist/esm/udp-stepper-demo.entry.js +1 -1
- package/dist/esm/udp-vertical-spacer.entry.js +1 -1
- package/dist/esm/utils-DZv4MqyU.js +31 -0
- package/dist/esm/utils-DZv4MqyU.js.map +1 -0
- 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
- package/dist/stencil-library/file-upload.selectable-list.stencil-field.entry.esm.js.map +1 -1
- package/dist/stencil-library/inputs-example.entry.esm.js.map +1 -1
- package/dist/stencil-library/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.esm.js.map +1 -1
- package/dist/stencil-library/p-09319660.entry.js +2 -0
- package/dist/stencil-library/p-09319660.entry.js.map +1 -0
- package/dist/stencil-library/p-146bc917.entry.js +2 -0
- package/dist/stencil-library/{p-b3b6310e.entry.js → p-147c4595.entry.js} +2 -2
- package/dist/stencil-library/{p-06ca29e0.entry.js → p-1b001f78.entry.js} +2 -2
- package/dist/stencil-library/{p-762591f6.entry.js → p-2635a6cc.entry.js} +2 -2
- package/dist/stencil-library/p-2f2fd111.entry.js +2 -0
- package/dist/stencil-library/{p-368be454.entry.js → p-2fc495ce.entry.js} +2 -2
- package/dist/stencil-library/{p-fdfa7087.entry.js → p-476c08df.entry.js} +2 -2
- package/dist/stencil-library/{p-ee1610d3.entry.js → p-4ab893a0.entry.js} +2 -2
- package/dist/stencil-library/p-4dac2b6d.entry.js +2 -0
- package/dist/stencil-library/p-4dac2b6d.entry.js.map +1 -0
- package/dist/stencil-library/p-556a182f.entry.js +2 -0
- package/dist/stencil-library/p-556a182f.entry.js.map +1 -0
- package/dist/stencil-library/p-5ac16f81.entry.js +2 -0
- package/dist/stencil-library/p-5ac16f81.entry.js.map +1 -0
- package/dist/stencil-library/p-609236fc.entry.js +2 -0
- package/dist/stencil-library/p-609236fc.entry.js.map +1 -0
- package/dist/stencil-library/{p-9b0b311b.entry.js → p-64330dbb.entry.js} +2 -2
- package/dist/stencil-library/p-65a5cce3.entry.js +2 -0
- package/dist/stencil-library/{p-5a946191.entry.js → p-70d8a0d8.entry.js} +2 -2
- package/dist/stencil-library/{p-79065768.entry.js → p-8119eb18.entry.js} +2 -2
- package/dist/stencil-library/{p-2f99476a.entry.js → p-86cd0134.entry.js} +2 -2
- package/dist/stencil-library/p-89aa56f1.entry.js +2 -0
- package/dist/stencil-library/p-89aa56f1.entry.js.map +1 -0
- package/dist/stencil-library/{p-767b7be7.entry.js → p-8a0b6bd4.entry.js} +2 -2
- package/dist/stencil-library/{p-40127f9f.entry.js → p-90fbca0f.entry.js} +2 -2
- package/dist/stencil-library/p-C5aOw4Ij.js +2 -0
- package/dist/stencil-library/p-C5aOw4Ij.js.map +1 -0
- package/dist/stencil-library/p-DZv4MqyU.js +2 -0
- package/dist/stencil-library/p-DZv4MqyU.js.map +1 -0
- package/dist/stencil-library/p-DtiAfg0X.js +2 -0
- package/dist/stencil-library/p-DtiAfg0X.js.map +1 -0
- package/dist/stencil-library/{p-f4f4ba61.entry.js → p-a98b033e.entry.js} +2 -2
- package/dist/stencil-library/p-a98b033e.entry.js.map +1 -0
- package/dist/stencil-library/{p-2a11c543.entry.js → p-ae167d4b.entry.js} +2 -2
- package/dist/stencil-library/{p-55459135.entry.js → p-b53e1b9a.entry.js} +2 -2
- package/dist/stencil-library/p-c1966f2c.entry.js +2 -0
- package/dist/stencil-library/p-c1966f2c.entry.js.map +1 -0
- package/dist/stencil-library/{p-0de6045a.entry.js → p-c9046d64.entry.js} +2 -2
- package/dist/stencil-library/{p-c1809ef3.entry.js → p-ca53be83.entry.js} +2 -2
- package/dist/stencil-library/p-d46dd16c.entry.js +2 -0
- package/dist/stencil-library/{p-09186dea.entry.js → p-d48b5599.entry.js} +2 -2
- package/dist/stencil-library/p-d4f31146.entry.js +2 -0
- package/dist/stencil-library/p-d4f31146.entry.js.map +1 -0
- package/dist/stencil-library/{p-b0b70c0b.entry.js → p-e7e8a8a3.entry.js} +2 -2
- package/dist/stencil-library/p-ea6e9a24.entry.js +2 -0
- package/dist/stencil-library/p-ea6e9a24.entry.js.map +1 -0
- package/dist/stencil-library/{p-79587009.entry.js → p-f4b5879d.entry.js} +2 -2
- package/dist/stencil-library/p-fbfbbcf1.entry.js +2 -0
- 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
- 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
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
- package/dist/types/components/my-component/UI/buttons/icon-button/stencil-icon-button.d.ts +14 -0
- package/dist/types/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.d.ts +91 -0
- package/dist/types/components/my-component/UI/forms/form/stencil-field.d.ts +2 -1
- package/dist/types/components/my-component/UI/forms/form/stencil-form.d.ts +7 -5
- package/dist/types/components/my-component/UI/forms/udp-forms/types.d.ts +16 -0
- 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
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +16 -19
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +14 -26
- package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.d.ts +21 -7
- 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
- package/dist/types/components/my-component/UI/inputs/file-upload/file-upload.d.ts +1 -1
- package/dist/types/components/my-component/UI/inputs/file-upload/udp-drive-utils.d.ts +68 -1
- package/dist/types/components/my-component/UI/inputs/numeric-field/numeric-field.d.ts +1 -1
- package/dist/types/components/my-component/UI/inputs/signature-input/signature-input.d.ts +1 -1
- package/dist/types/components/my-component/UI/inputs/text-area/text-area.d.ts +21 -0
- package/dist/types/components/my-component/UI/inputs/text-field/text-field.d.ts +21 -0
- package/dist/types/components/my-component/UI/inputs/time-selector/udp-time-selector.d.ts +33 -1
- package/dist/types/components.d.ts +384 -14
- package/package.json +1 -1
- package/dist/cjs/signature-input.stencil-form.tally-display.udp-question.entry.cjs.js.map +0 -1
- package/dist/cjs/signature-input_4.cjs.entry.js.map +0 -1
- package/dist/cjs/utils-DMhqs00g.js +0 -55
- package/dist/cjs/utils-DMhqs00g.js.map +0 -1
- package/dist/collection/components/my-component/UI/forms/form/stencil-field.css +0 -70
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.css +0 -89
- package/dist/components/p-B3-pcvgV.js.map +0 -1
- package/dist/components/p-BEtm34A3.js.map +0 -1
- package/dist/components/p-BYsLvu6g.js.map +0 -1
- package/dist/components/p-BdWgc1UD.js.map +0 -1
- package/dist/components/p-Bdt-oOnd.js.map +0 -1
- package/dist/components/p-Bv1MGbhE.js.map +0 -1
- package/dist/components/p-C8cWVxBF.js.map +0 -1
- package/dist/components/p-C9cEH65u.js +0 -307
- package/dist/components/p-C9cEH65u.js.map +0 -1
- package/dist/components/p-CA-v1fbV.js.map +0 -1
- package/dist/components/p-CRiQA7Cy.js.map +0 -1
- package/dist/components/p-ChdtzL8Z.js.map +0 -1
- package/dist/components/p-DIcPqQkn.js.map +0 -1
- package/dist/components/p-DOKGpXin.js.map +0 -1
- package/dist/components/p-DueJnVH4.js.map +0 -1
- package/dist/components/p-DxJCXXmE.js.map +0 -1
- package/dist/components/p-IlXn87Ki.js.map +0 -1
- package/dist/components/p-PqypuW_Q.js.map +0 -1
- package/dist/components/p-hRee3qYx.js.map +0 -1
- package/dist/esm/signature-input.stencil-form.tally-display.udp-question.entry.js.map +0 -1
- package/dist/esm/signature-input_4.entry.js.map +0 -1
- package/dist/esm/utils-vXSpJxEK.js +0 -52
- package/dist/esm/utils-vXSpJxEK.js.map +0 -1
- package/dist/stencil-library/p-00c1ce44.entry.js +0 -2
- package/dist/stencil-library/p-00c1ce44.entry.js.map +0 -1
- package/dist/stencil-library/p-250a8400.entry.js +0 -2
- package/dist/stencil-library/p-2fda98ee.entry.js +0 -2
- package/dist/stencil-library/p-2fda98ee.entry.js.map +0 -1
- package/dist/stencil-library/p-50f67815.entry.js +0 -2
- package/dist/stencil-library/p-50f67815.entry.js.map +0 -1
- package/dist/stencil-library/p-584552e6.entry.js +0 -2
- package/dist/stencil-library/p-5e96c57a.entry.js +0 -2
- package/dist/stencil-library/p-5e96c57a.entry.js.map +0 -1
- package/dist/stencil-library/p-6a1febc9.entry.js +0 -2
- package/dist/stencil-library/p-6ed5258c.entry.js +0 -2
- package/dist/stencil-library/p-6ed5258c.entry.js.map +0 -1
- package/dist/stencil-library/p-77739d4b.entry.js +0 -2
- package/dist/stencil-library/p-77739d4b.entry.js.map +0 -1
- package/dist/stencil-library/p-7a2202b9.entry.js +0 -2
- package/dist/stencil-library/p-7a2202b9.entry.js.map +0 -1
- package/dist/stencil-library/p-84109194.entry.js +0 -2
- package/dist/stencil-library/p-b1d412a7.entry.js +0 -2
- package/dist/stencil-library/p-b1d412a7.entry.js.map +0 -1
- package/dist/stencil-library/p-f4f4ba61.entry.js.map +0 -1
- package/dist/stencil-library/p-f7c855d0.entry.js +0 -2
- package/dist/stencil-library/p-f889438a.entry.js +0 -2
- package/dist/stencil-library/p-f889438a.entry.js.map +0 -1
- package/dist/stencil-library/p-vXSpJxEK.js +0 -2
- package/dist/stencil-library/p-vXSpJxEK.js.map +0 -1
- package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-question.entry.esm.js.map +0 -1
- /package/dist/stencil-library/{p-84109194.entry.js.map → p-146bc917.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b3b6310e.entry.js.map → p-147c4595.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-06ca29e0.entry.js.map → p-1b001f78.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-762591f6.entry.js.map → p-2635a6cc.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-6a1febc9.entry.js.map → p-2f2fd111.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-368be454.entry.js.map → p-2fc495ce.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-fdfa7087.entry.js.map → p-476c08df.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-ee1610d3.entry.js.map → p-4ab893a0.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-9b0b311b.entry.js.map → p-64330dbb.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-584552e6.entry.js.map → p-65a5cce3.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-5a946191.entry.js.map → p-70d8a0d8.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-79065768.entry.js.map → p-8119eb18.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-2f99476a.entry.js.map → p-86cd0134.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-767b7be7.entry.js.map → p-8a0b6bd4.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-40127f9f.entry.js.map → p-90fbca0f.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-2a11c543.entry.js.map → p-ae167d4b.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-55459135.entry.js.map → p-b53e1b9a.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-0de6045a.entry.js.map → p-c9046d64.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-c1809ef3.entry.js.map → p-ca53be83.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-f7c855d0.entry.js.map → p-d46dd16c.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-09186dea.entry.js.map → p-d48b5599.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b0b70c0b.entry.js.map → p-e7e8a8a3.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-79587009.entry.js.map → p-f4b5879d.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-250a8400.entry.js.map → p-fbfbbcf1.entry.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,c as i,h as e,H as s,a as n}from"./p-CaIWDYyq.js";import{C as r}from"./p-Cn7PuhQz.js";import o from"@carbon/icons/es/close/24";import a from"axios";import{i as l,p}from"./p-C5aOw4Ij.js";const u="#drop-area{height:200px;border:2px dashed #ccc;border-radius:5px;padding:20px;text-align:center;font-family:Arial, sans-serif;overflow-y:auto;margin-top:10px;margin-bottom:10px}#outer-container{padding:10px 5px}#drop-area.highlight{border-color:var(--primary-color)}#error-text{color:var(--error-color-main)}#add-button{border-radius:5}#remove-button{width:10px;height:10px;margin-left:5px;border:'none';background:'none';cursor:'pointer'}.file-container{display:flex;flex-direction:row;align-items:center}.full-width{width:auto}.contained-width{width:300px}.file-text{float:left}.inner-container{display:flex;justify-content:center;flex-direction:row}.container{display:flex;flex-direction:row;justify-content:center;overflow-y:auto}";const h=class{constructor(e){t(this,e);this.change=i(this,"change");this.fullWidth=false;this.dragAndDropMessage="Drag and drop your files here";this.browseFileMessage="Browse Files";this.hideDragAndDrop=false;this.hideButton=false;this.disabled=false;this.readonly=false;this.files=[];this.fileWindowOpen=false;this.existingFileReferences=new Map;this.dragCounter=0;this.isInitialized=false;this.handleDragOver=t=>{if(this.disabled||this.readonly){return}t.preventDefault();t.stopPropagation()};this.handleDragEnter=t=>{if(this.disabled||this.readonly){return}t.preventDefault();t.stopPropagation();const i=t.currentTarget;this.dragCounter++;i.classList.add("highlight")};this.handleDragLeave=t=>{if(this.disabled||this.readonly){return}t.preventDefault();t.stopPropagation();const i=t.currentTarget;this.dragCounter--;if(this.dragCounter===0){i.classList.remove("highlight")}};this.handleDrop=t=>{if(this.disabled||this.readonly){return}t.preventDefault();t.stopPropagation();const i=t.currentTarget;i.classList.remove("highlight");const e=t.dataTransfer.files;this.handleFiles(e)};this.handleFileInput=t=>{const i=t.target;if(i.files&&i.files.length>0){this.handleFiles(i.files)}i.value="";this.fileWindowOpen=false};this.handleFiles=t=>{if(t.length===0)return;const i=[...this.files];const e=[];for(let s=0;s<t.length;s++){const n=t[s];if(!n.name||n.name.trim()===""){continue}const r=i.some((t=>t.name===n.name&&t.size===n.size));if(r){continue}if(!this.isFileTypeAllowed(n)){continue}e.push(n);if(!this.allowMultiple){break}}if(e.length>0){if(this.allowMultiple){this.files=[...i,...e]}else{this.files=[e[0]]}this.emitFileChangeEvents()}};this.handleBrowseFiles=t=>{if(this.disabled||this.readonly){return}t.preventDefault();t.stopPropagation();if(!this.hiddenInput){console.error("File input not initialized yet, attempting to create it now...");try{this.hiddenInput=document.createElement("input");this.hiddenInput.type="file";this.hiddenInput.multiple=this.allowMultiple;this.hiddenInput.style.display="none";this.hiddenInput.addEventListener("change",this.handleFileInput);document.body.appendChild(this.hiddenInput)}catch(t){console.error("Failed to create file input:",t);return}}this.fileWindowOpen=true;this.hiddenInput.click()};this.handleRemoveFile=t=>{if(this.disabled||this.readonly){return}const i=this.files[t];if(this.existingFileReferences.has(i.name)){this.existingFileReferences.delete(i.name)}this.files.splice(t,1);this.files=[...this.files];this.emitFileChangeEvents()}}updateError(){this.errorMessage=this.error}async initialValueChanged(t){if(t&&typeof t==="object"&&"value"in t&&"files"in t){return}if(!t){this.files=[];this.existingFileReferences.clear();return}try{this.existingFileReferences.clear();let i=[];if(typeof t==="string"&&l(t)){i=await p(t);for(const t of i){if(t.driveFileId){const i={driveFileId:t.driveFileId,name:t.name,extension:t.extension||t.name.split(".").pop()||"",tenantId:null,productId:0,path:""};this.existingFileReferences.set(t.name,i)}}}else if(Array.isArray(t)){const e=await Promise.all(t.map((t=>this.processInitialFile(t))));i=e.filter((t=>t!==null))}else if(typeof t==="object"){const e=await this.processInitialFile(t);i=e?[e]:[]}this.files=i;this.updateValueProp()}catch(t){console.error("Error processing initial files:",t);this.files=[];this.existingFileReferences.clear()}}async processInitialFile(t){console.log(t);if(!t){return null}if(this.isUdpDriveFile(t)){try{const i=this.createPlaceholderFileFromUdpDriveFile(t);this.existingFileReferences.set(i.name,t);return i}catch(t){console.error("Error creating placeholder file from UdpDriveFile:",t);return null}}else if(t instanceof File){return t}else{return null}}isUdpDriveFile(t){return t&&typeof t==="object"&&"driveFileId"in t}createPlaceholderFileFromUdpDriveFile(t){const i=t.extension||"bin";const e=t.name||`file.${i}`;const s=new Blob([""],{type:this.getMimeTypeFromExtension(i)});let n=Date.now();if(t.lastUpdated){if(typeof t.lastUpdated==="string"||typeof t.lastUpdated==="number"){n=new Date(t.lastUpdated).getTime()}else if(t.lastUpdated instanceof Date){n=t.lastUpdated.getTime()}}const r=new File([s],e,{type:s.type,lastModified:n});return r}async createFileFromUdpDriveFile(t){try{const i=`${r.tenantV1ApiUrl}/UdpDrive/${t.driveFileId}/stream`;const e=await a({method:"GET",url:i,responseType:"blob",timeout:3e5,headers:{}});const s=e.data;const n=t.name||`file.${t.extension}`;return new File([s],n,{type:s.type||this.getMimeTypeFromExtension(t.extension),lastModified:t.lastUpdated?new Date(t.lastUpdated).getTime():Date.now()})}catch(i){console.error("Error creating file from UdpDriveFile:",i);const e=t.name||`file.${t.extension}`;return new File([""],e,{type:"application/octet-stream"})}}getMimeTypeFromExtension(t){if(!t){return"application/octet-stream"}const i={pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",txt:"text/plain",csv:"text/csv",json:"application/json",xml:"application/xml",html:"text/html",css:"text/css",js:"application/javascript",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml",zip:"application/zip",rar:"application/x-rar-compressed","7z":"application/x-7z-compressed"};return i[t.toLowerCase()]||"application/octet-stream"}async componentWillLoad(){if(this.isInitialized){return}this.dragCounter=0;this.hiddenInput=document.createElement("input");this.hiddenInput.type="file";this.hiddenInput.multiple=this.allowMultiple;this.hiddenInput.style.display="none";this.hiddenInput.addEventListener("change",this.handleFileInput);document.body.appendChild(this.hiddenInput);if(this.allowedFileTypes&&this.disallowedFileTypes){throw new Error("allowedFileTypes and disallowedFileTypes are mutually exlusive, you cannot use both props")}if(this.error){this.errorMessage=this.error}if(this.initialValue!==undefined&&this.initialValue!==null&&this.initialValue!==""){await this.initialValueChanged(this.initialValue)}else if(this.value!==undefined&&this.value!==null){await this.processValueProp(this.value)}this.isInitialized=true}async processValueProp(t){if(t===null||t===undefined){this.files=[];return}if(t&&typeof t==="object"&&"value"in t&&"files"in t&&"toString"in t){return}try{if(Array.isArray(t)){if(t.length===0){this.files=[];return}const i=[];for(const e of t){const t=await this.processInitialFile(e);if(t){i.push(t)}}this.files=i}else{const i=await this.processInitialFile(t);if(i){this.files=[i]}else{this.files=[]}}this.updateValueProp()}catch(t){console.error("Error in processValueProp:",t);this.files=[]}}emitFileChangeEvents(){this.updateValueProp();const t=this.files.filter((t=>!this.existingFileReferences.has(t.name)));const i=this.files.filter((t=>this.existingFileReferences.has(t.name)));if(t.length===0&&i.length===0){this.change.emit(null);return}const e=[];t.forEach((t=>{if(t.name&&t.name.trim()!==""){e.push(t.name.trim())}}));i.forEach((t=>{if(t.name&&t.name.trim()!==""){const i=this.existingFileReferences.get(t.name);if(i){e.push(`${t.name.trim()}|udp:${i.driveFileId}`)}}}));const s=e.join(",");const n={toString:()=>s,valueOf:()=>s,value:s,files:t.filter((t=>t.name&&t.name.trim()!==""))};this.change.emit(n)}updateValueProp(){try{if(this.allowMultiple){this.value=[...this.files]}else{this.value=this.files.length>0?this.files[0]:null}}catch(t){console.error("Error updating value prop:",t)}}isFileTypeAllowed(t){var i;if(!t.name){return false}const e=(i=t.name.split(".").pop())===null||i===void 0?void 0:i.toLowerCase();if(!e){return false}if(this.allowedFileTypes&&this.allowedFileTypes.length>0){return this.allowedFileTypes.map((t=>t.toLowerCase())).includes(e)}if(this.disallowedFileTypes&&this.disallowedFileTypes.length>0){return!this.disallowedFileTypes.map((t=>t.toLowerCase())).includes(e)}return true}async downloadFile(t){if(this.disabled){return}try{const i=this.existingFileReferences.get(t.name);if(i){const t=await this.createFileFromUdpDriveFile(i);const e=URL.createObjectURL(t);const s=document.createElement("a");s.href=e;s.download=t.name;s.style.display="none";document.body.appendChild(s);s.click();document.body.removeChild(s);URL.revokeObjectURL(e)}else{const i=URL.createObjectURL(t);const e=document.createElement("a");e.href=i;e.download=t.name;e.style.display="none";document.body.appendChild(e);e.click();document.body.removeChild(e);URL.revokeObjectURL(i)}}catch(t){console.error("Error downloading file:",t)}}disconnectedCallback(){if(this.hiddenInput){document.body.removeChild(this.hiddenInput);this.hiddenInput=null}}render(){const t=!!this.errorMessage;return e(s,{key:"c1f02a5c917b40937601e2e3884c4fe1936a959d",class:{"udp-input":true,"udp-input--error":t,"udp-input--full-width":this.fullWidth,"udp-input--disabled":this.disabled,"udp-input--readonly":this.readonly},"aria-invalid":t?"true":"false","aria-disabled":this.disabled?"true":"false"},e("div",{key:"1d1a154c1c761076a9dff60d8ba69061d11a13c3",id:!this.hideDragAndDrop?"drop-area":"outer-container",onDragOver:this.handleDragOver,onDrop:this.handleDrop,onDragEnter:this.handleDragEnter,onDragLeave:this.handleDragLeave,class:!this.hideDragAndDrop?this.fullWidth?"full-width":"contained-width":""},!this.hideDragAndDrop?e("unity-typography",null,e("p",null,this.dragAndDropMessage),!this.hideButton?e("p",null,"or"):""):"",!this.hideButton?e("custom-button",{label:this.browseFileMessage,onClick:t=>this.handleBrowseFiles(t),id:"udpRecord-file-upload-"+this.id,disabled:this.disabled||this.readonly,udprecordid:"udpRecord-file-upload-"+this.id}):"",this.files.length>0&&e("div",{key:"f80617fca05ad0020cd6b659b54728dd05d02f8c",class:!this.hideDragAndDrop?"container":""},e("div",{key:"27d4582929098019d177ba87e5e721b1a442cce4",class:!this.hideDragAndDrop?"inner-container":""},this.files.map(((t,i)=>{const s=this.existingFileReferences.has(t.name);return e("div",{class:!this.hideDragAndDrop?"file-container":"",key:i},e("div",{class:"file-text",onClick:()=>this.downloadFile(t),style:{cursor:this.disabled?"not-allowed":"pointer",textDecoration:"underline"}},e("unity-typography",null,t.name,s&&e("span",{style:{fontSize:"0.8em",opacity:"0.7"}}," (saved)"))),e("div",null,e("stencil-icon-button",{showLabel:false,icon:o,onClick:()=>this.handleRemoveFile(i),disabled:this.disabled||this.readonly})))})))),this.errorMessage&&!this.fileWindowOpen?e("div",{id:"error-text"},e("unity-typography",{color:"error"},this.errorMessage)):""))}get el(){return n(this)}static get watchers(){return{error:["updateError"],initialValue:["initialValueChanged"]}}};h.style=u;const d=':host(.udp-input){display:block;box-sizing:border-box;position:relative}:host(.udp-input--full-width){width:100%}:host(.udp-input--error){--input-border-color:var(--input-underline-color-error)}:host(.udp-input--disabled){pointer-events:none;opacity:0.5;cursor:not-allowed}:host(.udp-input--required){position:relative}:host(.udp-input--readonly){--input-background:var(--gray-02)}:host(.udp-input--hidden){display:none}:host(.udp-input--checked){--input-accent-color:var(--primary-color)}:host(.udp-input--multi-select){--list-max-height:200px}:host(.udp-input) .bx--text-input:focus{outline:none;}:host(.udp-input) .bx--form-item{margin-bottom:var(--spacing-05)}:host(.udp-input) .bx--label{display:block;margin-bottom:var(--spacing-03);color:var(--text-main);font-size:var(--caption-text-font-size);font-weight:var(--caption-text-font-weight);line-height:var(--caption-text-line-height)}@media (max-width: var(--breakpoint-xs-max)){:host(.udp-input){margin-bottom:var(--spacing-04)}:host(.udp-input) .bx--form-item{margin-bottom:var(--spacing-04)}}@media (min-width: var(--breakpoint-sm-min)){:host(.udp-input){min-height:2.5rem;}}:host(.udp-input--size-small) .bx--text-input,:host(.udp-input--size-small) textarea,:host(.udp-input--size-small) input[type="text"],:host(.udp-input--size-small) input[type="number"],:host(.udp-input--size-small) input[type="email"],:host(.udp-input--size-small) input[type="password"],:host(.udp-input--size-small) input[type="tel"],:host(.udp-input--size-small) input[type="url"],:host(.udp-input--size-small) input[type="search"]{padding:var(--spacing-02);padding-bottom:6px;font-size:var(--caption-font-size, 0.875rem)}:host(.udp-input--size-normal) .bx--text-input,:host(.udp-input--size-normal) textarea,:host(.udp-input--size-normal) input[type="text"],:host(.udp-input--size-normal) input[type="number"],:host(.udp-input--size-normal) input[type="email"],:host(.udp-input--size-normal) input[type="password"],:host(.udp-input--size-normal) input[type="tel"],:host(.udp-input--size-normal) input[type="url"],:host(.udp-input--size-normal) input[type="search"]{padding:var(--spacing-03);padding-bottom:9px;font-size:var(--body-font-size)}:host(.udp-input--size-large) .bx--text-input,:host(.udp-input--size-large) textarea,:host(.udp-input--size-large) input[type="text"],:host(.udp-input--size-large) input[type="number"],:host(.udp-input--size-large) input[type="email"],:host(.udp-input--size-large) input[type="password"],:host(.udp-input--size-large) input[type="tel"],:host(.udp-input--size-large) input[type="url"],:host(.udp-input--size-large) input[type="search"]{padding:var(--spacing-04);padding-bottom:12px;font-size:var(--body-font-size)}:host(.udp-input--margin-none){margin:0}:host(.udp-input--margin-dense){margin:var(--spacing-02) 0}:host(.udp-input--margin-normal){margin:var(--spacing-03) 0}:host(.udp-input--margin-comfortable){margin:var(--spacing-04) 0}:host(.udp-input--size-small) .bx--label{margin-bottom:var(--spacing-02);font-size:var(--caption-font-size, 0.875rem)}:host(.udp-input--size-normal) .bx--label{margin-bottom:var(--spacing-03);font-size:var(--body-font-size)}:host(.udp-input--size-large) .bx--label{margin-bottom:var(--spacing-04);font-size:var(--body-font-size)}.bx--text-input,textarea,input[type="text"],input[type="number"],input[type="email"],input[type="password"],input[type="tel"],input[type="url"],input[type="search"]{display:inline-block;padding:var(--spacing-03);padding-bottom:9px;box-sizing:border-box;border:none;font-size:var(--body-font-size);background:var(--input-background);border-bottom:var(--underline-standard) solid var(--input-underline-color, var(--gray-08));width:100%;font-family:var(--font-family);transition:border-bottom-color 0.15s ease-in-out}.bx--text-input:focus,textarea:focus,input[type="text"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="password"]:focus,input[type="tel"]:focus,input[type="url"]:focus,input[type="search"]:focus{border-bottom-color:var(--input-underline-color-focus, var(--primary-color));border-bottom-width:2px}.bx--text-input--error,.bx--text-input:user-invalid,:host(.udp-input--error) .bx--text-input,:host(.udp-input--error) textarea,:host(.udp-input--error) input[type="text"],:host(.udp-input--error) input[type="number"],:host(.udp-input--error) input[type="email"],:host(.udp-input--error) input[type="password"],:host(.udp-input--error) input[type="tel"],:host(.udp-input--error) input[type="url"],:host(.udp-input--error) input[type="search"],input[type="text"]:user-invalid,input[type="number"]:user-invalid,input[type="email"]:user-invalid,input[type="password"]:user-invalid,input[type="tel"]:user-invalid,input[type="url"]:user-invalid,input[type="search"]:user-invalid{border-bottom-color:var(--input-underline-color-error, var(--error-color-main)) !important}:host(.udp-input--disabled) .bx--text-input,:host(.udp-input--disabled) textarea,:host(.udp-input--disabled) input[type="text"],:host(.udp-input--disabled) input[type="number"],:host(.udp-input--disabled) input[type="email"],:host(.udp-input--disabled) input[type="password"],:host(.udp-input--disabled) input[type="tel"],:host(.udp-input--disabled) input[type="url"],:host(.udp-input--disabled) input[type="search"]{border-bottom-color:var(--input-underline-color-disabled, var(--gray-08))}textarea.bx--text-input{resize:vertical;min-height:var(--spacing-08)}.bx--text-input::placeholder,textarea::placeholder,input[type="text"]::placeholder,input[type="number"]::placeholder,input[type="email"]::placeholder,input[type="password"]::placeholder,input[type="tel"]::placeholder,input[type="url"]::placeholder,input[type="search"]::placeholder{color:var(--placeholder-color, #999);opacity:1}:host(.udp-input),:host{display:block;width:100%;box-sizing:border-box}.bx--form-item{margin-bottom:var(--spacing-05)}.bx--label{display:block;margin-bottom:var(--spacing-03)}.error-message,.bx--form-requirement,:host(.udp-input--error) .error-message,:host(.udp-input--error) .bx--form-requirement{color:var(--error-color-main, #d32f2f) !important;margin-top:var(--spacing-02);font-size:var(--caption-font-size, 0.875rem);--unity-typography-inherit-color:var(--error-color-main, #d32f2f)}.helper-text{color:var(--text-02, #525252);margin-top:var(--spacing-02);font-size:var(--caption-font-size, 0.875rem)}:host(.udp-input--disabled) .bx--text-input,:host(.udp-input--disabled) textarea,:host(.udp-input--disabled) input,:host(.udp-input--disabled){cursor:not-allowed;opacity:0.6}:host(.udp-input--readonly) .bx--text-input,:host(.udp-input--readonly) textarea,:host(.udp-input--readonly) input{background-color:var(--field-01, #f4f4f4);cursor:default}:host{display:block}:host(.udp-input--size-small) li{padding:var(--spacing-02) var(--spacing-03);font-size:var(--caption-font-size, 0.875rem)}:host(.udp-input--size-normal) li{padding:var(--spacing-03) var(--spacing-04);font-size:var(--body-font-size)}:host(.udp-input--size-large) li{padding:var(--spacing-04) var(--spacing-05);font-size:var(--body-font-size)}ul{list-style:none;padding:0;margin:0}li{padding:var(--spacing-03) var(--spacing-04);cursor:pointer;transition:background-color 0.3s ease}li:hover{background-color:#f0f0f0;color:var(--text-color)}.selected{background-color:var(--primary-color);color:white}label{cursor:pointer}input{cursor:pointer}.error{color:var(--error-color-main)}';const c=class{constructor(e){t(this,e);this.change=i(this,"change");this.disabled=false;this.readonly=false;this.size="normal";this.margin="normal";this.multiSelect=false;this.items=[];this.displayKey="";this.useCheckbox=false;this.valueKey="";this.error="";this.internalItems=[];this.internalValue="";this.handleItemClick=t=>{if(this.disabled||this.readonly)return;let i=[...this.internalItems];const e=this.internalItems.findIndex((i=>this.valueKey&&i[this.valueKey]===t[this.valueKey]||!this.valueKey&&i===t));i.splice(e,1,Object.assign(Object.assign({},t),{selected:!t.selected}));if(!this.multiSelect&&!t.selected){i=i.map(((t,i)=>Object.assign(Object.assign({},t),{selected:i===e})))}this.internalItems=i;const s=this.getValue(i);this.internalValue=s;if(this.value!==undefined){this.value=s}this.change.emit(s)}}updateError(){this.errorMessage=this.error}initialValueChanged(t){if(this.internalValue===""||this.internalValue===undefined||this.value===undefined){if(t!==undefined){this.internalValue=t;this.updateItemSelection(t)}}}valueChanged(){if(this.value!==undefined&&this.value!==this.internalValue){this.internalValue=this.value;this.updateItemSelection(this.value)}}itemsChanged(){this.initializeItems()}componentWillLoad(){this.internalValue=this.value!==undefined?this.value:this.initialValue||"";if(this.error){this.errorMessage=this.error}this.initializeItems()}initializeItems(){if(!this.valueKey){console.error("valueKey is required");this.internalItems=this.items;return}this.updateItemSelection(this.internalValue)}updateItemSelection(t){if(!t||!this.valueKey){this.internalItems=[...this.items];return}const i=this.items.filter((i=>t.split(",").includes(i[this.valueKey])));let e=i;if(i.length>1&&!this.multiSelect){e=[i[0]];console.warn("multiple values are selected, but multiselect is disabled")}const s=this.items.map((t=>Object.assign(Object.assign({},t),{selected:e.some((i=>i[this.valueKey]===t[this.valueKey]))})));this.internalItems=s}getSelectedItems(t=null){var i;const e=t!==null&&t!==void 0?t:this.internalItems;return(i=e.filter((t=>t.selected)))!==null&&i!==void 0?i:[]}getValue(t=null){var i;const e=t!==null&&t!==void 0?t:this.internalItems;return(i=this.getSelectedItems(e).map((t=>{var i;return(i=t[this.valueKey])!==null&&i!==void 0?i:t[this.displayKey]})).join(","))!==null&&i!==void 0?i:""}render(){if(!this.valueKey)return null;const t=!!this.errorMessage;return e(s,{class:{"udp-input":true,"udp-input--error":t,"udp-input--disabled":this.disabled,"udp-input--readonly":this.readonly,"udp-input--required":this.required,"udp-input--multi-select":this.multiSelect,[`udp-input--size-${this.size}`]:true,[`udp-input--margin-${this.margin}`]:true},"aria-invalid":t?"true":"false","aria-required":this.required?"true":"false"},e("ul",null,this.internalItems.map(((t,i)=>{var s,n;return e("li",{key:t.id||t[this.displayKey],onClick:()=>this.handleItemClick(t),class:t.selected&&!this.useCheckbox?"selected":"",id:"udpRecord-selectable-list-input-"+i+"-"+this.id,udprecordid:"udpRecord-selectable-list-input-"+i+"-"+this.id},this.useCheckbox?e("label",null,e("input",{type:this.multiSelect?"checkbox":"radio",name:this.name||(this.valueKey&&t[this.valueKey]||((s=t.id)!==null&&s!==void 0?s:t[this.displayKey])),disabled:this.disabled||this.readonly,value:this.valueKey&&t[this.valueKey]||((n=t.id)!==null&&n!==void 0?n:t[this.displayKey]),checked:t.selected,onChange:()=>this.handleItemClick(t)}),t[this.displayKey]):e("div",null,t[this.displayKey]))})),this.errorMessage&&e("unity-typography",{class:"error",variant:"caption-text",color:"error"},this.errorMessage)))}get el(){return n(this)}static get watchers(){return{error:["updateError"],initialValue:["initialValueChanged"],value:["valueChanged"],items:["itemsChanged"]}}};c.style=d;const f=class{constructor(i){t(this,i);this.required=false;this.registered=false;this.finalFormBlur=()=>{};this.finalFormChange=()=>{};this.finalFormFocus=()=>{}}async setFormApi(t){this.state=t;this.state.api.registerField(this.name,(t=>{const{blur:i,change:e,focus:s,value:n}=t;if(!this.state.registeredFields[this.name]){this.state.registeredFields[this.name]={required:this.required};this.finalFormBlur=()=>{var t;i();const e=(t=this.state.api.getFieldState(this.name))===null||t===void 0?void 0:t.error;if(!this.errorMessage){this.errorMessage=e||""}};this.finalFormChange=t=>{e(t);this.errorMessage="";this.injectPropsIntoSlottedElements()};this.finalFormFocus=s;this.registered=true}this.value=n!==null&&n!==void 0?n:""}),{value:true,error:false,touched:false})}componentDidRender(){this.injectPropsIntoSlottedElements()}componentDidUpdate(){this.injectPropsIntoSlottedElements()}injectPropsIntoSlottedElements(){const t=this.el.children.length>0;if(t){Array.from(this.el.children).forEach((t=>{if(this.value!==undefined&&!t.hasAttribute("data-initial-value-set")){t.initialValue=this.value;t.setAttribute("data-initial-value-set","true")}t.error=this.errorMessage||"";if(this.name)t.name=this.name;if(this.id)t.id=this.id;if(this.label)t.label=this.label;if(!t.hasAttribute("data-field-events-bound")){t.addEventListener("input",this.handleInput.bind(this));t.addEventListener("change",this.handleChange.bind(this));t.addEventListener("blur",this.handleBlur.bind(this));t.addEventListener("focus",this.handleFocus.bind(this));t.addEventListener("error",this.handleError.bind(this));t.setAttribute("data-field-events-bound","true")}}))}}disconnectedCallback(){var t;if(!this.name){return}if(this.state.registeredFields[this.name]){delete this.state.registeredFields[this.name]}try{if((t=this.state.api)===null||t===void 0?void 0:t.change){this.state.api.change(this.name,undefined)}}catch(t){console.debug("Field cleanup warning:",t)}this.registered=false}handleInput(t){var i;let e;if(t instanceof CustomEvent&&t.detail!==undefined){e=t.detail}else{const i=t.target;if(i.shadowRoot){const t=i.shadowRoot.querySelector("input, textarea, select");if(t){e=t.value}}else if(i.tagName==="INPUT"||i.tagName==="TEXTAREA"||i.tagName==="SELECT"){e=i.value}else if("value"in i){e=i.value}}if(e!==undefined){(i=this.finalFormChange)===null||i===void 0?void 0:i.call(this,e)}}handleChange(t){var i,e;let s;if(t instanceof CustomEvent&&t.detail!==undefined){s=t.detail}else{const i=t.target;if(i.shadowRoot){const t=i.shadowRoot.querySelector("input, textarea, select");if(t){s=t.value}}else if(i.tagName==="INPUT"||i.tagName==="TEXTAREA"||i.tagName==="SELECT"){s=i.value}else if("value"in i){s=i.value}}if(s!==undefined){(i=this.finalFormChange)===null||i===void 0?void 0:i.call(this,s);if(t instanceof CustomEvent){(e=this.finalFormBlur)===null||e===void 0?void 0:e.call(this,t)}}}handleFocus(t){var i;(i=this.finalFormFocus)===null||i===void 0?void 0:i.call(this,t)}handleBlur(t){var i;(i=this.finalFormBlur)===null||i===void 0?void 0:i.call(this,t)}handleError(t){var i,e;if(t.detail!==undefined){this.errorMessage=t.detail;if(((i=this.state)===null||i===void 0?void 0:i.registeredFields)&&this.name){if(!this.state.customErrors){this.state.customErrors={}}this.state.customErrors[this.name]=t.detail;if(this.state.api){const t=(e=this.state.api.getFieldState(this.name))===null||e===void 0?void 0:e.value;this.state.api.change(this.name,t)}}this.injectPropsIntoSlottedElements()}}stencilInvalid(t){if(t.detail&&this.name&&t.detail[this.name]){this.errorMessage=t.detail[this.name];this.injectPropsIntoSlottedElements()}}render(){if(!this.registered){return null}return e("slot",null)}get el(){return n(this)}};export{h as file_upload,c as selectable_list,f as stencil_field};
|
|
2
|
+
//# sourceMappingURL=p-89aa56f1.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fileUploadCss","FileUpload","constructor","hostRef","this","fullWidth","dragAndDropMessage","browseFileMessage","hideDragAndDrop","hideButton","disabled","readonly","files","fileWindowOpen","existingFileReferences","Map","dragCounter","isInitialized","handleDragOver","event","preventDefault","stopPropagation","handleDragEnter","dropArea","currentTarget","classList","add","handleDragLeave","remove","handleDrop","dataTransfer","handleFiles","handleFileInput","input","target","length","value","currentFiles","newValidFiles","i","file","name","trim","isDuplicate","some","existingFile","size","isFileTypeAllowed","push","allowMultiple","emitFileChangeEvents","handleBrowseFiles","hiddenInput","console","error","document","createElement","type","multiple","style","display","addEventListener","body","appendChild","click","handleRemoveFile","index","fileToRemove","has","delete","splice","updateError","errorMessage","initialValueChanged","newValue","clear","processedFiles","isFileReference","parseFileReferences","driveFileId","udpFile","extension","split","pop","tenantId","productId","path","set","Array","isArray","Promise","all","map","processInitialFile","filter","updateValueProp","log","isUdpDriveFile","placeholderFile","createPlaceholderFileFromUdpDriveFile","File","fileName","placeholderBlob","Blob","getMimeTypeFromExtension","lastModified","Date","now","lastUpdated","getTime","createFileFromUdpDriveFile","downloadUrl","ConfigService","tenantV1ApiUrl","response","axios","method","url","responseType","timeout","headers","blob","data","mimeTypes","pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","json","xml","html","css","js","png","jpg","jpeg","gif","svg","zip","rar","toLowerCase","componentWillLoad","allowedFileTypes","disallowedFileTypes","Error","initialValue","undefined","processValueProp","item","processedFile","newFiles","existingFiles","change","emit","fileReferences","forEach","udpDriveFile","get","combinedValue","join","detailValue","toString","valueOf","_a","includes","downloadFile","actualFile","URL","createObjectURL","a","href","download","removeChild","revokeObjectURL","disconnectedCallback","render","isError","h","Host","key","class","id","onDragOver","onDrop","onDragEnter","onDragLeave","label","onClick","e","udprecordid","isExistingFile","cursor","textDecoration","fontSize","opacity","showLabel","icon","Close24","color","selectableListCss","SelectableList","margin","multiSelect","items","displayKey","useCheckbox","valueKey","internalItems","internalValue","handleItemClick","newItems","selectedIndex","findIndex","selectedItem","Object","assign","selected","getValue","updateItemSelection","valueChanged","itemsChanged","initializeItems","selectedValue","selectedItems","filteredSelectedItems","warn","getSelectedItems","itemsToCheck","required","_b","checked","onChange","variant","StencilField","registered","finalFormBlur","finalFormChange","finalFormFocus","setFormApi","formApi","state","api","registerField","fieldState","blur","focus","registeredFields","finalFormError","getFieldState","injectPropsIntoSlottedElements","touched","componentDidRender","componentDidUpdate","hasSlottedContent","el","children","from","element","hasAttribute","setAttribute","handleInput","bind","handleChange","handleBlur","handleFocus","handleError","debug","CustomEvent","detail","shadowRoot","querySelector","tagName","call","customErrors","currentValue","stencilInvalid"],"sources":["src/components/my-component/UI/inputs/file-upload/file-upload.css?tag=file-upload&encapsulation=shadow","src/components/my-component/UI/inputs/file-upload/file-upload.tsx","src/components/my-component/UI/inputs/selectable-list/selectable-list.css?tag=selectable-list&encapsulation=shadow","src/components/my-component/UI/inputs/selectable-list/selectable-list.tsx","src/components/my-component/UI/forms/form/stencil-field.tsx"],"sourcesContent":["/* file-upload.css */\n#drop-area {\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 5px;\n padding: 20px;\n text-align: center;\n font-family: Arial, sans-serif;\n overflow-y: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n#outer-container {\n padding: 10px 5px;\n\n}\n\n#drop-area.highlight {\n border-color: var(--primary-color);\n}\n\n#error-text {\n color: var(--error-color-main);\n}\n\n#add-button {\n border-radius: 5;\n}\n\n#remove-button {\n width: 10px;\n height: 10px;\n margin-left: 5px;\n border: 'none';\n background: 'none';\n cursor: 'pointer';\n}\n\n.file-container {\n display: flex; \n flex-direction: row;\n align-items: center;\n}\n\n.full-width {\n width: auto\n}\n\n.contained-width {\n width: 300px;\n\n}\n.file-text {\n float: left\n}\n.inner-container {\n display: flex;\n justify-content: center;\n flex-direction: row;\n}\n.container {\n display: flex;\n flex-direction: row;\n justify-content: center;\n overflow-y: auto;\n}","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","@import '../inputs.css';\n\n/* selectable-list.css */\n\n:host {\n display: block;\n }\n\n/* Size variants for selectable list items */\n:host(.udp-input--size-small) li {\n padding: var(--spacing-02) var(--spacing-03);\n font-size: var(--caption-font-size, 0.875rem);\n}\n\n:host(.udp-input--size-normal) li {\n padding: var(--spacing-03) var(--spacing-04);\n font-size: var(--body-font-size);\n}\n\n:host(.udp-input--size-large) li {\n padding: var(--spacing-04) var(--spacing-05);\n font-size: var(--body-font-size);\n}\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n \n li {\n padding: var(--spacing-03) var(--spacing-04); /* Default padding, overridden by density variants */\n cursor: pointer;\n transition: background-color 0.3s ease;\n }\n \n li:hover {\n background-color: #f0f0f0;\n color: var(--text-color)\n }\n \n .selected {\n background-color: var(--primary-color);\n color: white\n }\n \n label {\n cursor: pointer\n } \n input {\n cursor: pointer\n }\n .error{\n color: var(--error-color-main)\n }","import {\n Component,\n Prop,\n State,\n h,\n Host,\n Element,\n Watch,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { InputSize, InputMargin } from '../input-types';\n/**\n * A standardized selectable list component with single/multi-select support and various display options.\n * Supports both controlled and uncontrolled modes.\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 * @example\n * ```tsx\n * // Uncontrolled component with initial selection\n * <selectable-list\n * items={countries}\n * displayKey=\"name\"\n * valueKey=\"id\"\n * initialValue=\"1,2\"\n * multiSelect={true}\n * onChange={(e) => console.log('Selected:', e.detail)}\n * />\n *\n * // Controlled component\n * <selectable-list\n * items={items}\n * displayKey=\"name\"\n * valueKey=\"id\"\n * value={selectedValue}\n * onChange={(e) => setSelectedValue(e.detail)}\n * />\n *\n * // With checkboxes and validation\n * <selectable-list\n * items={options}\n * displayKey=\"label\"\n * valueKey=\"value\"\n * useCheckbox={true}\n * required={true}\n * error={selectionError}\n * value={selectedOptions}\n * onChange={handleSelectionChange}\n * />\n * ```\n */\n@Component({\n tag: 'selectable-list',\n styleUrl: 'selectable-list.css',\n shadow: true,\n})\nexport class SelectableList {\n @Element() el: HTMLElement;\n\n /**\n * Whether the field is disabled. When true, items cannot be selected or deselected.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Items can be viewed but not selected or deselected.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Size variant controlling the padding and spacing of the list items.\n * - 'small': Compact spacing for data-heavy interfaces\n * - 'normal': Standard spacing (default)\n * - 'large': Generous spacing for accessibility\n */\n @Prop() size: InputSize = 'normal';\n\n /**\n * Margin variant for the input spacing.\n * - 'none': No margin\n * - 'dense': Minimal margin spacing\n * - 'normal': Standard margin spacing (default)\n */\n @Prop() margin: InputMargin = 'normal';\n\n /**\n * Whether multiple items can be selected. When false, only one item can be selected at a time.\n */\n @Prop() multiSelect: boolean = false;\n\n /**\n * Array of items to display in the list. Each item should be an object with properties for display and value.\n */\n @Prop() items: any[] = [];\n\n /**\n * Property name from item objects to use for display text. Required for proper rendering.\n */\n @Prop() displayKey: string = '';\n\n /**\n * Whether to render items with checkboxes/radio buttons instead of plain list items.\n */\n @Prop() useCheckbox: boolean = false;\n\n /**\n * Initial value for the selectable list. Used for uncontrolled components to set the default selection.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * Only used when `value` prop is not provided.\n */\n @Prop() initialValue: string;\n\n /**\n * Current value of the selectable list. When provided, makes this a controlled component.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * The component will use this value and update it through events.\n */\n @Prop({ mutable: true }) value: string;\n\n /**\n * Whether the field is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Property name from item objects to use for the actual value. Required for proper functionality.\n */\n @Prop() valueKey: string = '';\n\n /**\n * Error message to display below the list. Shows validation errors or other issues.\n */\n @Prop() error: string = '';\n\n /**\n * Unique identifier for the list element. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for radio button grouping when useCheckbox is true.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the list. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * Internal items state with selection status. Manages item display and selection state.\n * @internal\n */\n @State() internalItems: any[] = [];\n\n /**\n * Internal value state. Manages the current selected value(s) independently of props.\n * @internal\n */\n @State() internalValue: string = '';\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Emitted when the selection changes (on item click, etc.).\n * Provides the final committed value when user makes a selection.\n *\n * @event change\n * @param {string} value - The current selected value(s), comma-separated for multi-select\n *\n * @example\n * ```tsx\n * <selectable-list onChange={(e) => handleSelectionChange(e.detail)} />\n * ```\n */\n @Event() change: EventEmitter<string>;\n\n\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 * Updates the internal value when initialValue prop changes.\n * Only updates if current value is empty or if this is an uncontrolled component.\n * @internal\n */\n @Watch('initialValue')\n initialValueChanged(newValue: string) {\n // Only update if we don't have a value yet or if this is uncontrolled (no value prop)\n if ((this.internalValue === '' || this.internalValue === undefined) || this.value === undefined) {\n if (newValue !== undefined) {\n this.internalValue = newValue;\n this.updateItemSelection(newValue);\n }\n }\n }\n\n /**\n * Updates the internal value when value prop changes.\n * For controlled components, the value prop takes precedence.\n * @internal\n */\n @Watch('value')\n valueChanged() {\n // If value prop is provided, this is a controlled component\n if (this.value !== undefined && this.value !== this.internalValue) {\n this.internalValue = this.value;\n this.updateItemSelection(this.value);\n }\n }\n\n /**\n * Re-initializes items when the items prop changes.\n * @internal\n */\n @Watch('items')\n itemsChanged() {\n // Re-initialize when items change\n this.initializeItems();\n }\n /**\n * Component lifecycle method. Initializes error message, internal value, and items.\n * @internal\n */\n componentWillLoad() {\n // Initialize value: use value prop if provided (controlled), otherwise use initialValue (uncontrolled)\n this.internalValue = this.value !== undefined ? this.value : (this.initialValue || '');\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n this.initializeItems();\n }\n\n /**\n * Initializes the internal items array with proper selection state.\n * @internal\n */\n private initializeItems() {\n if (!this.valueKey) {\n console.error('valueKey is required');\n this.internalItems = this.items;\n return;\n }\n\n this.updateItemSelection(this.internalValue);\n }\n\n /**\n * Updates the selection state of items based on the provided value.\n * @param selectedValue - Comma-separated string of selected values\n * @internal\n */\n private updateItemSelection(selectedValue: string) {\n if (!selectedValue || !this.valueKey) {\n this.internalItems = [...this.items];\n return;\n }\n\n const selectedItems = this.items.filter(item =>\n selectedValue.split(',').includes(item[this.valueKey])\n );\n\n let filteredSelectedItems = selectedItems;\n if (selectedItems.length > 1 && !this.multiSelect) {\n filteredSelectedItems = [selectedItems[0]];\n console.warn('multiple values are selected, but multiselect is disabled');\n }\n\n const items = this.items.map(item => ({\n ...item,\n selected: filteredSelectedItems.some(selectedItem =>\n selectedItem[this.valueKey] === item[this.valueKey]\n )\n }));\n\n this.internalItems = items;\n }\n /**\n * Gets the currently selected items from the items array.\n * @param items - Optional items array to check, defaults to internal items\n * @returns Array of selected items\n * @internal\n */\n getSelectedItems(items: any[] = null): any[] {\n const itemsToCheck = items ?? this.internalItems;\n return itemsToCheck.filter(item => item.selected) ?? [];\n }\n\n /**\n * Gets the current value as a comma-separated string of selected values.\n * @param items - Optional items array to check, defaults to internal items\n * @returns Comma-separated string of selected values\n * @internal\n */\n getValue(items: any[] = null): string {\n const itemsToCheck = items ?? this.internalItems\n return this.getSelectedItems(itemsToCheck).map(item => item[this.valueKey] ?? item[this.displayKey]).join(',') ?? \"\"\n }\n\n\n /**\n * Handles item click events. Updates selection state and emits events.\n * For controlled components, also updates the value prop.\n * @param item - The clicked item\n * @internal\n */\n private handleItemClick = (item: any) => {\n if (this.disabled || this.readonly) return;\n let newItems = [...this.internalItems];\n const selectedIndex = this.internalItems.findIndex(\n selectedItem => (this.valueKey && selectedItem[this.valueKey] === item[this.valueKey]) || (!this.valueKey && selectedItem === item),\n );\n\n newItems.splice(selectedIndex, 1, {...item, selected: !item.selected});\n if (!this.multiSelect && !item.selected) {\n newItems = newItems.map((item, i) => ({...item, selected: i === selectedIndex}))\n }\n this.internalItems = newItems;\n\n // Update internal value state\n const newValue = this.getValue(newItems);\n this.internalValue = newValue;\n\n // If this is a controlled component (value prop provided), update the value prop\n if (this.value !== undefined) {\n this.value = newValue;\n }\n\n // Emit events for real-time and committed updates\n this.change.emit(newValue);\n }\n /**\n * Renders the selectable list component.\n * @returns JSX element or null if valueKey is not provided\n * @internal\n */\n render() {\n if(!this.valueKey)\n return null;\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n 'udp-input--required': this.required,\n 'udp-input--multi-select': this.multiSelect,\n [`udp-input--size-${this.size}`]: true,\n [`udp-input--margin-${this.margin}`]: true,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-required={this.required ? 'true' : 'false'}\n >\n <ul>\n {this.internalItems.map((item, i) => (\n <li\n key={item.id || item[this.displayKey]}\n onClick={() => this.handleItemClick(item)}\n class={item.selected && !this.useCheckbox ? 'selected' : ''}\n id={'udpRecord-selectable-list-input-' + i + '-' + this.id}\n //@ts-ignore\n udprecordid={'udpRecord-selectable-list-input-' + i + '-' + this.id}\n >\n {this.useCheckbox ? (\n <label>\n <input\n type={this.multiSelect ? 'checkbox' : 'radio'}\n name={this.name || ((this.valueKey && item[this.valueKey]) || (item.id ?? item[this.displayKey]))}\n disabled={this.disabled || this.readonly}\n value={(this.valueKey && item[this.valueKey]) || (item.id ?? item[this.displayKey])}\n checked={item.selected}\n onChange={() => this.handleItemClick(item)}\n />\n {item[this.displayKey]}\n </label>\n ) : (\n <div>{item[this.displayKey]}</div>\n )}\n </li>\n ))}\n {this.errorMessage && <unity-typography class=\"error\" variant='caption-text' color=\"error\">{this.errorMessage}</unity-typography>}\n </ul>\n </Host>\n );\n }\n}\n","/**\n * StencilField - Form field wrapper component that integrates with Final Form\n *\n * This component acts as a bridge between form input components and Final Form state management.\n * It uses slot-based rendering and property injection to work with any child input component.\n *\n * REQUIREMENTS FOR CHILD COMPONENTS:\n *\n * 1. VALUE HANDLING:\n * - SIMPLE INPUTS: Manage own value state, receive initialValue prop from stencil-field\n * - COMPLEX INPUTS: Same approach - internal value management with initialValue\n * - stencil-field reads values from DOM events or custom events, never directly modifies component value\n *\n * 2. ERROR HANDLING:\n * - Child component should have an @Prop() error: string\n * - Use @Watch('error') to react to validation errors\n *\n * 3. EVENT HANDLERS:\n * - Child component must emit standard DOM events (input, change, blur, focus)\n * - SIMPLE INPUTS: Standard HTML input/textarea that emits native events\n * - COMPLEX INPUTS: Emit CustomEvent with detail containing the value\n *\n * 4. STANDARD FORM PROPS:\n * - @Prop() name: string (for form field identification)\n * - @Prop() id: string (for accessibility)\n * - @Prop() label: string (for field labeling)\n * - @Prop() initialValue: string (for setting initial/default values)\n *\n * EXAMPLE SIMPLE INPUT:\n * ```tsx\n * @Component({ tag: 'simple-input' })\n * export class SimpleInput {\n * @Prop() error: string;\n * @Prop() name: string;\n * @Prop() id: string;\n * @Prop() label: string;\n * @Prop() initialValue: string;\n * @State() value: string;\n *\n * componentWillLoad() {\n * this.value = this.initialValue || '';\n * }\n *\n * private onChange = (e: Event) => {\n * this.value = (e.target as HTMLInputElement).value;\n * }\n *\n * render() {\n * return <input name={this.name} id={this.id} value={this.value} onInput={this.onChange} />;\n * }\n * }\n * ```\n *\n * EXAMPLE COMPLEX INPUT:\n * ```tsx\n * @Component({ tag: 'complex-input' })\n * export class ComplexInput {\n * @Prop() error: string;\n * @Prop() name: string;\n * @Prop() id: string;\n * @Prop() label: string;\n * @Prop() initialValue: string;\n * @State() value: string;\n *\n * componentWillLoad() {\n * this.value = this.initialValue || '';\n * }\n *\n * @Watch('error')\n * updateError() {\n * // Handle error display\n * }\n *\n * private onChange = (newValue: string) => {\n * this.value = newValue; // Update internal state\n * // Emit custom event for stencil-field\n * this.el.dispatchEvent(new CustomEvent('input', {\n * detail: newValue,\n * bubbles: true\n * }));\n * }\n * }\n * ```\n *\n * USAGE:\n * ```tsx\n * <!-- Simple input with initial value -->\n * <stencil-field name=\"email\" label=\"Email\" required>\n * <simple-input />\n * </stencil-field>\n *\n * <!-- Complex component -->\n * <stencil-field name=\"tags\" label=\"Tags\" required>\n * <tag-selector />\n * </stencil-field>\n * ```\n */\nimport { Component, Prop, h, State, Listen, Element, Method } from '@stencil/core';\n\n@Component({\n tag: 'stencil-field',\n shadow: false,\n})\nexport class StencilField {\n @Element() el: HTMLElement;\n @Prop() id: string;\n @Prop() defaultValue: string;\n @Prop() name: string;\n @Prop() label: string;\n @Prop() required: boolean = false;\n @Prop({ mutable: true }) value: string;\n @State() errorMessage: string;\n @State() registered: boolean = false;\n @State() finalFormBlur: (e: Event) => void = () => { };\n @State() finalFormChange: (value: any) => void = () => { };\n @State() finalFormFocus: (e: Event) => void = () => { };\n\n private state: any;\n\n @Method()\n async setFormApi(formApi: any) {\n this.state = formApi;\n this.state.api.registerField(\n this.name,\n fieldState => {\n const { blur, change, focus, value } = fieldState;\n if (!this.state.registeredFields[this.name]) {\n this.state.registeredFields[this.name] = { required: this.required };\n // first time, register event listeners\n\n this.finalFormBlur = () => {\n blur();\n // Preserve custom errors - only use Final Form errors if no custom error exists\n const finalFormError = this.state.api.getFieldState(this.name)?.error;\n if (!this.errorMessage) {\n this.errorMessage = finalFormError || '';\n }\n };\n this.finalFormChange = event => {\n change(event);\n // reset the error on change, error state will be re-evaluated when the blur event is triggered\n this.errorMessage = '';\n // // Force re-render to inject cleared error into child components\n this.injectPropsIntoSlottedElements();\n };\n this.finalFormFocus = focus;\n this.registered = true;\n }\n\n // update value\n\n this.value = value ?? \"\";\n },\n {\n value: true,\n error: false,\n touched: false,\n },\n );\n }\n\n componentDidRender() {\n this.injectPropsIntoSlottedElements();\n }\n\n componentDidUpdate() {\n this.injectPropsIntoSlottedElements();\n }\n\n private injectPropsIntoSlottedElements() {\n const hasSlottedContent = this.el.children.length > 0;\n\n if (hasSlottedContent) {\n Array.from(this.el.children).forEach((element: any) => {\n // Inject form field props\n // Pass initial value only, don't control the component's value directly\n if (this.value !== undefined && !element.hasAttribute('data-initial-value-set')) {\n element.initialValue = this.value;\n element.setAttribute('data-initial-value-set', 'true');\n }\n\n // Always update error state (including clearing it)\n element.error = this.errorMessage || '';\n\n if (this.name) element.name = this.name;\n if (this.id) element.id = this.id;\n if (this.label) element.label = this.label;\n\n // Set up event handlers if not already bound\n if (!element.hasAttribute('data-field-events-bound')) {\n element.addEventListener('input', this.handleInput.bind(this));\n element.addEventListener('change', this.handleChange.bind(this));\n element.addEventListener('blur', this.handleBlur.bind(this));\n element.addEventListener('focus', this.handleFocus.bind(this));\n element.addEventListener('error', this.handleError.bind(this));\n element.setAttribute('data-field-events-bound', 'true');\n }\n });\n }\n }\n\n disconnectedCallback() {\n // Clean up the field from the registry when component is unmounted\n if (!this.name) {\n return;\n }\n if (this.state.registeredFields[this.name]) {\n delete this.state.registeredFields[this.name];\n }\n\n // Final Form automatically handles field cleanup when no longer subscribed,\n // but we can also explicitly remove the field value if needed\n try {\n if (this.state.api?.change) {\n this.state.api.change(this.name, undefined);\n }\n } catch (error) {\n // Silently handle any errors during cleanup\n console.debug('Field cleanup warning:', error);\n }\n\n // Reset registration state\n this.registered = false;\n }\n\n @Listen('input')\n handleInput(e: Event) {\n let value;\n\n // Handle custom events from complex components\n if (e instanceof CustomEvent && e.detail !== undefined) {\n value = e.detail;\n } else {\n // Handle standard DOM events - need to find the actual input element\n const target = e.target as HTMLElement;\n\n // If target is a custom component, look for the actual input in its shadow DOM\n if (target.shadowRoot) {\n const input = target.shadowRoot.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n if (input) {\n value = input.value;\n }\n }\n // If target is the actual input element\n else if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n value = (target as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value;\n }\n // Fallback: check if the custom component has a value property\n else if ('value' in target) {\n value = (target as any).value;\n }\n }\n\n if (value !== undefined) {\n this.finalFormChange?.(value);\n }\n }\n\n @Listen('change')\n handleChange(e: Event) {\n let value;\n\n // Handle custom events from complex components\n if (e instanceof CustomEvent && e.detail !== undefined) {\n value = e.detail;\n } else {\n // Handle standard DOM events - need to find the actual input element\n const target = e.target as HTMLElement;\n\n // If target is a custom component, look for the actual input in its shadow DOM\n if (target.shadowRoot) {\n const input = target.shadowRoot.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n if (input) {\n value = input.value;\n }\n }\n // If target is the actual input element\n else if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n value = (target as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value;\n }\n // Fallback: check if the custom component has a value property\n else if ('value' in target) {\n value = (target as any).value;\n }\n }\n\n if (value !== undefined) {\n this.finalFormChange?.(value);\n // For complex components that emit custom events, also trigger blur validation\n if (e instanceof CustomEvent) {\n this.finalFormBlur?.(e);\n }\n }\n }\n\n @Listen('focus')\n handleFocus(e: FocusEvent) {\n this.finalFormFocus?.(e);\n }\n\n @Listen('blur')\n handleBlur(e: FocusEvent) {\n this.finalFormBlur?.(e);\n }\n\n handleError(e: CustomEvent) {\n // Handle error events from slotted child components\n if (e.detail !== undefined) {\n this.errorMessage = e.detail;\n\n // Store the custom error in the form's custom errors registry\n if (this.state?.registeredFields && this.name) {\n if (!this.state.customErrors) {\n this.state.customErrors = {};\n }\n this.state.customErrors[this.name] = e.detail;\n\n // Trigger form validation to include custom errors\n if (this.state.api) {\n // Force re-validation by changing the field value to itself\n const currentValue = this.state.api.getFieldState(this.name)?.value;\n this.state.api.change(this.name, currentValue);\n }\n }\n\n // Force re-render to inject error state\n this.injectPropsIntoSlottedElements();\n }\n }\n\n @Listen('stencilFormInvalidEvent', { target: 'body' })\n stencilInvalid(e: CustomEvent) {\n // Handle form validation errors\n if (e.detail && this.name && e.detail[this.name]) {\n // Set the error message for this specific field\n this.errorMessage = e.detail[this.name];\n // Force re-render to inject error into child components\n this.injectPropsIntoSlottedElements();\n }\n // Don't call finalFormBlur here as it might overwrite custom errors\n }\n render() {\n if (!this.registered) {\n return null;\n }\n\n // Always use slot-based rendering\n return <slot />;\n }\n}\n"],"mappings":"wMAAA,MAAMA,EAAgB,iuB,MC8DTC,EAAU,MALvB,WAAAC,CAAAC,G,uCA4BUC,KAASC,UAAY,MAerBD,KAAkBE,mBAAW,gCAK7BF,KAAiBG,kBAAW,eAK5BH,KAAeI,gBAAY,MAK3BJ,KAAUK,WAAY,MAoBtBL,KAAQM,SAAY,MAKpBN,KAAQO,SAAY,MAwBnBP,KAAKQ,MAAW,GAMhBR,KAAcS,eAAY,MAa1BT,KAAAU,uBAA6D,IAAIC,IA0ClEX,KAAWY,YAAW,EAMtBZ,KAAaa,cAAY,MAmZzBb,KAAAc,eAAkBC,IACxB,GAAIf,KAAKM,UAAYN,KAAKO,SAAU,CAClC,M,CAEFQ,EAAMC,iBACND,EAAME,iBAAiB,EAQjBjB,KAAAkB,gBAAmBH,IACzB,GAAIf,KAAKM,UAAYN,KAAKO,SAAU,CAClC,M,CAEFQ,EAAMC,iBACND,EAAME,kBACN,MAAME,EAAWJ,EAAMK,cACvBpB,KAAKY,cACLO,EAASE,UAAUC,IAAI,YAAY,EAQ7BtB,KAAAuB,gBAAmBR,IACzB,GAAIf,KAAKM,UAAYN,KAAKO,SAAU,CAClC,M,CAEFQ,EAAMC,iBACND,EAAME,kBACN,MAAME,EAAWJ,EAAMK,cACvBpB,KAAKY,cACL,GAAIZ,KAAKY,cAAgB,EAAG,CAC1BO,EAASE,UAAUG,OAAO,Y,GAStBxB,KAAAyB,WAAcV,IACpB,GAAIf,KAAKM,UAAYN,KAAKO,SAAU,CAClC,M,CAEFQ,EAAMC,iBACND,EAAME,kBACN,MAAME,EAAWJ,EAAMK,cACvBD,EAASE,UAAUG,OAAO,aAE1B,MAAMhB,EAAQO,EAAMW,aAAalB,MACjCR,KAAK2B,YAAYnB,EAAM,EAQjBR,KAAA4B,gBAAmBb,IACzB,MAAMc,EAAQd,EAAMe,OAEpB,GAAID,EAAMrB,OAASqB,EAAMrB,MAAMuB,OAAS,EAAG,CACzC/B,KAAK2B,YAAYE,EAAMrB,M,CAIzBqB,EAAMG,MAAQ,GACdhC,KAAKS,eAAiB,KAAK,EASrBT,KAAA2B,YAAenB,IACrB,GAAIA,EAAMuB,SAAW,EAAG,OAExB,MAAME,EAAe,IAAIjC,KAAKQ,OAC9B,MAAM0B,EAAwB,GAE9B,IAAK,IAAIC,EAAI,EAAGA,EAAI3B,EAAMuB,OAAQI,IAAK,CACrC,MAAMC,EAAO5B,EAAM2B,GAGnB,IAAKC,EAAKC,MAAQD,EAAKC,KAAKC,SAAW,GAAI,CACzC,Q,CAIF,MAAMC,EAAcN,EAAaO,MAAKC,GACpCA,EAAaJ,OAASD,EAAKC,MAAQI,EAAaC,OAASN,EAAKM,OAGhE,GAAIH,EAAa,CACf,Q,CAIF,IAAKvC,KAAK2C,kBAAkBP,GAAO,CACjC,Q,CAGFF,EAAcU,KAAKR,GAGnB,IAAKpC,KAAK6C,cAAe,CACvB,K,EAIJ,GAAIX,EAAcH,OAAS,EAAG,CAC5B,GAAI/B,KAAK6C,cAAe,CACtB7C,KAAKQ,MAAQ,IAAIyB,KAAiBC,E,KAC7B,CAELlC,KAAKQ,MAAQ,CAAC0B,EAAc,G,CAI9BlC,KAAK8C,sB,GAwCD9C,KAAA+C,kBAAqBhC,IAC3B,GAAIf,KAAKM,UAAYN,KAAKO,SAAU,CAClC,M,CAEFQ,EAAMC,iBACND,EAAME,kBAGN,IAAKjB,KAAKgD,YAAa,CACrBC,QAAQC,MAAM,kEAEd,IACElD,KAAKgD,YAAcG,SAASC,cAAc,SAC1CpD,KAAKgD,YAAYK,KAAO,OACxBrD,KAAKgD,YAAYM,SAAWtD,KAAK6C,cACjC7C,KAAKgD,YAAYO,MAAMC,QAAU,OACjCxD,KAAKgD,YAAYS,iBAAiB,SAAUzD,KAAK4B,iBACjDuB,SAASO,KAAKC,YAAY3D,KAAKgD,Y,CAC/B,MAAOE,GACPD,QAAQC,MAAM,+BAAgCA,GAC9C,M,EAIJlD,KAAKS,eAAiB,KACtBT,KAAKgD,YAAYY,OAAO,EAQlB5D,KAAA6D,iBAAoBC,IAC1B,GAAI9D,KAAKM,UAAYN,KAAKO,SAAU,CAClC,M,CAEF,MAAMwD,EAAe/D,KAAKQ,MAAMsD,GAGhC,GAAI9D,KAAKU,uBAAuBsD,IAAID,EAAa1B,MAAO,CACtDrC,KAAKU,uBAAuBuD,OAAOF,EAAa1B,K,CAGlDrC,KAAKQ,MAAM0D,OAAOJ,EAAO,GACzB9D,KAAKQ,MAAQ,IAAIR,KAAKQ,OAGtBR,KAAK8C,sBAAsB,CA4J9B,CAjwBC,WAAAqB,GACEnE,KAAKoE,aAAepE,KAAKkD,K,CAU7B,yBAAMmB,CAAoBC,GAExB,GAAIA,UAAmBA,IAAa,UAAY,UAAWA,GAAY,UAAWA,EAAU,CAC1F,M,CAIF,IAAKA,EAAU,CACbtE,KAAKQ,MAAQ,GACbR,KAAKU,uBAAuB6D,QAC5B,M,CAGF,IACEvE,KAAKU,uBAAuB6D,QAC5B,IAAIC,EAAyB,GAG7B,UAAWF,IAAa,UAAYG,EAAgBH,GAAW,CAC7DE,QAAuBE,EAAoBJ,GAG3C,IAAK,MAAMlC,KAAQoC,EAAgB,CACjC,GAAKpC,EAAauC,YAAa,CAC7B,MAAMC,EAAiC,CACrCD,YAAcvC,EAAauC,YAC3BtC,KAAMD,EAAKC,KACXwC,UAAYzC,EAAayC,WAAazC,EAAKC,KAAKyC,MAAM,KAAKC,OAAS,GACpEC,SAAU,KACVC,UAAW,EACXC,KAAM,IAERlF,KAAKU,uBAAuByE,IAAI/C,EAAKC,KAAMuC,E,QAK5C,GAAIQ,MAAMC,QAAQf,GAAW,CAChC,MAAM9D,QAAc8E,QAAQC,IAC1BjB,EAASkB,KAAIpD,GAAQpC,KAAKyF,mBAAmBrD,MAE/CoC,EAAiBhE,EAAMkF,QAAOtD,GAAQA,IAAS,M,MAG5C,UAAWkC,IAAa,SAAU,CACrC,MAAMlC,QAAapC,KAAKyF,mBAAmBnB,GAC3CE,EAAiBpC,EAAO,CAACA,GAAQ,E,CAGnCpC,KAAKQ,MAAQgE,EACbxE,KAAK2F,iB,CAEL,MAAOzC,GACPD,QAAQC,MAAM,kCAAmCA,GACjDlD,KAAKQ,MAAQ,GACbR,KAAKU,uBAAuB6D,O,EAWtB,wBAAMkB,CAAmBrD,GAE/Ba,QAAQ2C,IAAIxD,GACZ,IAAKA,EAAM,CACT,OAAO,I,CAGT,GAAIpC,KAAK6F,eAAezD,GAAO,CAE7B,IACE,MAAM0D,EAAkB9F,KAAK+F,sCAAsC3D,GAEnEpC,KAAKU,uBAAuByE,IAAIW,EAAgBzD,KAAMD,GACtD,OAAO0D,C,CACP,MAAO5C,GACPD,QAAQC,MAAM,qDAAsDA,GACpE,OAAO,I,OAEJ,GAAId,aAAgB4D,KAAM,CAE/B,OAAO5D,C,KACF,CAEL,OAAO,I,EAUH,cAAAyD,CAAezD,GACrB,OAAOA,UAAeA,IAAS,UAAY,gBAAiBA,C,CAUtD,qCAAA2D,CAAsCnB,GAE5C,MAAMC,EAAYD,EAAQC,WAAa,MACvC,MAAMoB,EAAWrB,EAAQvC,MAAQ,QAAQwC,IAEzC,MAAMqB,EAAkB,IAAIC,KAAK,CAAC,IAAK,CAAE9C,KAAMrD,KAAKoG,yBAAyBvB,KAG7E,IAAIwB,EAAeC,KAAKC,MACxB,GAAI3B,EAAQ4B,YAAa,CACvB,UAAW5B,EAAQ4B,cAAgB,iBAAmB5B,EAAQ4B,cAAgB,SAAU,CACtFH,EAAe,IAAIC,KAAK1B,EAAQ4B,aAAaC,S,MACxC,GAAI7B,EAAQ4B,uBAAuBF,KAAM,CAC9CD,EAAezB,EAAQ4B,YAAYC,S,EAIvC,MAAMrE,EAAO,IAAI4D,KAAK,CAACE,GAAkBD,EAAU,CACjD5C,KAAM6C,EAAgB7C,KACtBgD,aAAcA,IAGhB,OAAOjE,C,CAUD,gCAAMsE,CAA2B9B,GACvC,IACE,MAAM+B,EAAc,GAAGC,EAAcC,2BAA2BjC,EAAQD,qBAExE,MAAMmC,QAAiBC,EAAM,CAC3BC,OAAQ,MACRC,IAAKN,EACLO,aAAc,OACdC,QAAS,IACTC,QAAS,CAGR,IAGH,MAAMC,EAAOP,EAASQ,KAItB,MAAMrB,EAAWrB,EAAQvC,MAAQ,QAAQuC,EAAQC,YAEjD,OAAO,IAAImB,KAAK,CAACqB,GAAOpB,EAAU,CAChC5C,KAAMgE,EAAKhE,MAAQrD,KAAKoG,yBAAyBxB,EAAQC,WACzDwB,aAAczB,EAAQ4B,YAAc,IAAIF,KAAK1B,EAAQ4B,aAAaC,UAAYH,KAAKC,O,CAErF,MAAOrD,GACPD,QAAQC,MAAM,yCAA0CA,GAExD,MAAM+C,EAAWrB,EAAQvC,MAAQ,QAAQuC,EAAQC,YACjD,OAAO,IAAImB,KAAK,CAAC,IAAKC,EAAU,CAAE5C,KAAM,4B,EAUpC,wBAAA+C,CAAyBvB,GAE/B,IAAKA,EAAW,CACd,MAAO,0B,CAGT,MAAM0C,EAAuC,CAC3CC,IAAO,kBACPC,IAAO,qBACPC,KAAQ,0EACRC,IAAO,2BACPC,KAAQ,oEACRC,IAAO,gCACPC,KAAQ,4EACRC,IAAO,aACPC,IAAO,WACPC,KAAQ,mBACRC,IAAO,kBACPC,KAAQ,YACRC,IAAO,WACPC,GAAM,yBACNC,IAAO,YACPC,IAAO,aACPC,KAAQ,aACRC,IAAO,YACPC,IAAO,gBACPC,IAAO,kBACPC,IAAO,+BACP,KAAM,+BAGR,OAAOrB,EAAU1C,EAAUgE,gBAAkB,0B,CAO/C,uBAAMC,GAEJ,GAAI9I,KAAKa,cAAe,CACtB,M,CAIFb,KAAKY,YAAc,EACnBZ,KAAKgD,YAAcG,SAASC,cAAc,SAC1CpD,KAAKgD,YAAYK,KAAO,OACxBrD,KAAKgD,YAAYM,SAAWtD,KAAK6C,cACjC7C,KAAKgD,YAAYO,MAAMC,QAAU,OACjCxD,KAAKgD,YAAYS,iBAAiB,SAAUzD,KAAK4B,iBACjDuB,SAASO,KAAKC,YAAY3D,KAAKgD,aAE/B,GAAIhD,KAAK+I,kBAAoB/I,KAAKgJ,oBAAqB,CACrD,MAAM,IAAIC,MAAM,4F,CAGlB,GAAIjJ,KAAKkD,MAAO,CACdlD,KAAKoE,aAAepE,KAAKkD,K,CAM3B,GAAIlD,KAAKkJ,eAAiBC,WAAanJ,KAAKkJ,eAAiB,MAAQlJ,KAAKkJ,eAAiB,GAAI,OACvFlJ,KAAKqE,oBAAoBrE,KAAKkJ,a,MAC/B,GAAIlJ,KAAKgC,QAAUmH,WAAanJ,KAAKgC,QAAU,KAAM,OACpDhC,KAAKoJ,iBAAiBpJ,KAAKgC,M,CAInChC,KAAKa,cAAgB,I,CAQf,sBAAMuI,CAAiB9E,GAC7B,GAAIA,IAAa,MAAQA,IAAa6E,UAAW,CAC/CnJ,KAAKQ,MAAQ,GACb,M,CAKF,GAAI8D,UAAmBA,IAAa,UAAY,UAAWA,GAAY,UAAWA,GAAY,aAAcA,EAAU,CACpH,M,CAGF,IACE,GAAIc,MAAMC,QAAQf,GAAW,CAC3B,GAAIA,EAASvC,SAAW,EAAG,CACzB/B,KAAKQ,MAAQ,GACb,M,CAIF,MAAMgE,EAAyB,GAC/B,IAAK,MAAM6E,KAAQ/E,EAAU,CAE3B,MAAMgF,QAAsBtJ,KAAKyF,mBAAmB4D,GACpD,GAAIC,EAAe,CACjB9E,EAAe5B,KAAK0G,E,EAGxBtJ,KAAKQ,MAAQgE,C,KAER,CAEL,MAAM8E,QAAsBtJ,KAAKyF,mBAAmBnB,GACpD,GAAIgF,EAAe,CACjBtJ,KAAKQ,MAAQ,CAAC8I,E,KACT,CACLtJ,KAAKQ,MAAQ,E,EAKjBR,KAAK2F,iB,CAEL,MAAOzC,GACPD,QAAQC,MAAM,6BAA8BA,GAC5ClD,KAAKQ,MAAQ,E,EAST,oBAAAsC,GAEN9C,KAAK2F,kBAGL,MAAM4D,EAAWvJ,KAAKQ,MAAMkF,QAAOtD,IAASpC,KAAKU,uBAAuBsD,IAAI5B,EAAKC,QACjF,MAAMmH,EAAgBxJ,KAAKQ,MAAMkF,QAAOtD,GAAQpC,KAAKU,uBAAuBsD,IAAI5B,EAAKC,QAGrF,GAAIkH,EAASxH,SAAW,GAAKyH,EAAczH,SAAW,EAAG,CAEvD/B,KAAKyJ,OAAOC,KAAK,MAEjB,M,CAKF,MAAMC,EAA2B,GACjCJ,EAASK,SAAQxH,IAEf,GAAIA,EAAKC,MAAQD,EAAKC,KAAKC,SAAW,GAAI,CACxCqH,EAAe/G,KAAKR,EAAKC,KAAKC,O,KAIlCkH,EAAcI,SAAQxH,IACpB,GAAIA,EAAKC,MAAQD,EAAKC,KAAKC,SAAW,GAAI,CACxC,MAAMuH,EAAe7J,KAAKU,uBAAuBoJ,IAAI1H,EAAKC,MAC1D,GAAIwH,EAAc,CAChBF,EAAe/G,KAAK,GAAGR,EAAKC,KAAKC,cAAcuH,EAAalF,c,MAKlE,MAAMoF,EAAgBJ,EAAeK,KAAK,KAI1C,MAAMC,EAAc,CAClBC,SAAU,IAAMH,EAChBI,QAAS,IAAMJ,EACf/H,MAAO+H,EACPvJ,MAAO+I,EAAS7D,QAAOtD,GAAQA,EAAKC,MAAQD,EAAKC,KAAKC,SAAW,MAInEtC,KAAKyJ,OAAOC,KAAKO,E,CAQX,eAAAtE,GACN,IACE,GAAI3F,KAAK6C,cAAe,CACtB7C,KAAKgC,MAAQ,IAAIhC,KAAKQ,M,KACjB,CACLR,KAAKgC,MAAQhC,KAAKQ,MAAMuB,OAAS,EAAI/B,KAAKQ,MAAM,GAAK,I,EAEvD,MAAO0C,GACPD,QAAQC,MAAM,6BAA8BA,E,EAmJxC,iBAAAP,CAAkBP,G,MACxB,IAAKA,EAAKC,KAAM,CACd,OAAO,K,CAGT,MAAMwC,GAAYuF,EAAAhI,EAAKC,KAAKyC,MAAM,KAAKC,SAAO,MAAAqF,SAAA,SAAAA,EAAAvB,cAE9C,IAAKhE,EAAW,CACd,OAAO,K,CAIT,GAAI7E,KAAK+I,kBAAoB/I,KAAK+I,iBAAiBhH,OAAS,EAAG,CAC7D,OAAO/B,KAAK+I,iBAAiBvD,KAAInC,GAAQA,EAAKwF,gBAAewB,SAASxF,E,CAIxE,GAAI7E,KAAKgJ,qBAAuBhJ,KAAKgJ,oBAAoBjH,OAAS,EAAG,CACnE,OAAQ/B,KAAKgJ,oBAAoBxD,KAAInC,GAAQA,EAAKwF,gBAAewB,SAASxF,E,CAI5E,OAAO,I,CAiET,kBAAMyF,CAAalI,GACjB,GAAIpC,KAAKM,SAAU,CACjB,M,CAEF,IAEE,MAAMuJ,EAAe7J,KAAKU,uBAAuBoJ,IAAI1H,EAAKC,MAE1D,GAAIwH,EAAc,CAEhB,MAAMU,QAAmBvK,KAAK0G,2BAA2BmD,GAGzD,MAAM5C,EAAMuD,IAAIC,gBAAgBF,GAGhC,MAAMG,EAAIvH,SAASC,cAAc,KACjCsH,EAAEC,KAAO1D,EACTyD,EAAEE,SAAWL,EAAWlI,KACxBqI,EAAEnH,MAAMC,QAAU,OAGlBL,SAASO,KAAKC,YAAY+G,GAC1BA,EAAE9G,QACFT,SAASO,KAAKmH,YAAYH,GAG1BF,IAAIM,gBAAgB7D,E,KACf,CAEL,MAAMA,EAAMuD,IAAIC,gBAAgBrI,GAGhC,MAAMsI,EAAIvH,SAASC,cAAc,KACjCsH,EAAEC,KAAO1D,EACTyD,EAAEE,SAAWxI,EAAKC,KAClBqI,EAAEnH,MAAMC,QAAU,OAGlBL,SAASO,KAAKC,YAAY+G,GAC1BA,EAAE9G,QACFT,SAASO,KAAKmH,YAAYH,GAG1BF,IAAIM,gBAAgB7D,E,EAEtB,MAAO/D,GACPD,QAAQC,MAAM,0BAA2BA,E,EAQ7C,oBAAA6H,GACE,GAAI/K,KAAKgD,YAAa,CACpBG,SAASO,KAAKmH,YAAY7K,KAAKgD,aAC/BhD,KAAKgD,YAAc,I,EASvB,MAAAgI,GAIE,MAAMC,IAAYjL,KAAKoE,aACvB,OACE8G,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,YAAa,KACb,mBAAoBJ,EACpB,wBAAyBjL,KAAKC,UAC9B,sBAAuBD,KAAKM,SAC5B,sBAAuBN,KAAKO,UAEhB,eAAA0K,EAAU,OAAS,QAAO,gBACzBjL,KAAKM,SAAW,OAAS,SAExC4K,EAAA,OAAAE,IAAA,2CACEE,IAAKtL,KAAKI,gBAAkB,YAAc,kBAC1CmL,WAAYvL,KAAKc,eACjB0K,OAAQxL,KAAKyB,WACbgK,YAAazL,KAAKkB,gBAClBwK,YAAa1L,KAAKuB,gBAClB8J,OAAQrL,KAAKI,gBAAmBJ,KAAKC,UAAY,aAAe,kBAAqB,KAEnFD,KAAKI,gBACL8K,EAAA,wBACEA,EAAI,SAAAlL,KAAKE,qBACPF,KAAKK,WAAa6K,EAAA,eAAY,IACf,IAKnBlL,KAAKK,WACL6K,EAAA,iBACES,MAAO3L,KAAKG,kBACZyL,QAAUC,GAAM7L,KAAK+C,kBAAkB8I,GACvCP,GAAI,yBAA2BtL,KAAKsL,GACpChL,SAAUN,KAAKM,UAAYN,KAAKO,SAEhCuL,YAAa,yBAA2B9L,KAAKsL,KAC7C,GAKHtL,KAAKQ,MAAMuB,OAAS,GACnBmJ,EAAA,OAAAE,IAAA,2CAAKC,OAAQrL,KAAKI,gBAAkB,YAAc,IAChD8K,EAAK,OAAAE,IAAA,2CAAAC,OAAQrL,KAAKI,gBAAkB,kBAAoB,IACrDJ,KAAKQ,MAAMgF,KAAI,CAACpD,EAAM0B,KACrB,MAAMiI,EAAiB/L,KAAKU,uBAAuBsD,IAAI5B,EAAKC,MAC5D,OACE6I,EAAK,OAAAG,OAAQrL,KAAKI,gBAAkB,iBAAmB,GAAIgL,IAAKtH,GAC9DoH,EAAA,OAAKG,MAAM,YAAYO,QAAS,IAAM5L,KAAKsK,aAAalI,GAAOmB,MAAO,CAAEyI,OAAQhM,KAAKM,SAAW,cAAgB,UAAW2L,eAAgB,cACzIf,EAAA,wBACG9I,EAAKC,KACL0J,GAAkBb,EAAA,QAAM3H,MAAO,CAAE2I,SAAU,QAASC,QAAS,QAAO,cAGzEjB,EAAA,WACEA,EAAA,uBAAqBkB,UAAW,MAAOC,KAAMC,EAASV,QAAS,IAAM5L,KAAK6D,iBAAiBC,GAAQxD,SAAUN,KAAKM,UAAYN,KAAKO,YAEjI,MAMfP,KAAKoE,eAAiBpE,KAAKS,eAC1ByK,EAAK,OAAAI,GAAG,cACNJ,EAAA,oBAAkBqB,MAAM,SAASvM,KAAKoE,eAClC,I,8HCt+BlB,MAAMoI,EAAoB,wtO,MC2DbC,EAAc,MAL3B,WAAA3M,CAAAC,G,uCAWUC,KAAQM,SAAY,MAKpBN,KAAQO,SAAY,MAQpBP,KAAI0C,KAAc,SAQlB1C,KAAM0M,OAAgB,SAKtB1M,KAAW2M,YAAY,MAKvB3M,KAAK4M,MAAU,GAKf5M,KAAU6M,WAAW,GAKrB7M,KAAW8M,YAAY,MAwBvB9M,KAAQ+M,SAAW,GAKnB/M,KAAKkD,MAAW,GAqBflD,KAAagN,cAAU,GAMvBhN,KAAaiN,cAAW,GA+JzBjN,KAAAkN,gBAAmB7D,IACzB,GAAIrJ,KAAKM,UAAYN,KAAKO,SAAU,OACpC,IAAI4M,EAAW,IAAInN,KAAKgN,eACxB,MAAMI,EAAgBpN,KAAKgN,cAAcK,WACvCC,GAAiBtN,KAAK+M,UAAYO,EAAatN,KAAK+M,YAAc1D,EAAKrJ,KAAK+M,YAAgB/M,KAAK+M,UAAYO,IAAiBjE,IAGhI8D,EAASjJ,OAAOkJ,EAAe,EAAOG,OAAAC,OAAAD,OAAAC,OAAA,GAAAnE,GAAM,CAAAoE,UAAWpE,EAAKoE,YAC5D,IAAKzN,KAAK2M,cAAgBtD,EAAKoE,SAAU,CACvCN,EAAWA,EAAS3H,KAAI,CAAC6D,EAAMlH,IAAWoL,OAAAC,OAAAD,OAAAC,OAAA,GAAAnE,GAAI,CAAEoE,SAAUtL,IAAMiL,K,CAElEpN,KAAKgN,cAAgBG,EAGrB,MAAM7I,EAAWtE,KAAK0N,SAASP,GAC/BnN,KAAKiN,cAAgB3I,EAGrB,GAAItE,KAAKgC,QAAUmH,UAAW,CAC5BnJ,KAAKgC,MAAQsC,C,CAIftE,KAAKyJ,OAAOC,KAAKpF,EAAS,CA0D7B,CApNC,WAAAH,GACEnE,KAAKoE,aAAepE,KAAKkD,K,CAS3B,mBAAAmB,CAAoBC,GAElB,GAAKtE,KAAKiN,gBAAkB,IAAMjN,KAAKiN,gBAAkB9D,WAAcnJ,KAAKgC,QAAUmH,UAAW,CAC/F,GAAI7E,IAAa6E,UAAW,CAC1BnJ,KAAKiN,cAAgB3I,EACrBtE,KAAK2N,oBAAoBrJ,E,GAW/B,YAAAsJ,GAEE,GAAI5N,KAAKgC,QAAUmH,WAAanJ,KAAKgC,QAAUhC,KAAKiN,cAAe,CACjEjN,KAAKiN,cAAgBjN,KAAKgC,MAC1BhC,KAAK2N,oBAAoB3N,KAAKgC,M,EASlC,YAAA6L,GAEE7N,KAAK8N,iB,CAMP,iBAAAhF,GAEE9I,KAAKiN,cAAgBjN,KAAKgC,QAAUmH,UAAYnJ,KAAKgC,MAAShC,KAAKkJ,cAAgB,GAEnF,GAAIlJ,KAAKkD,MAAO,CACdlD,KAAKoE,aAAepE,KAAKkD,K,CAG3BlD,KAAK8N,iB,CAOC,eAAAA,GACN,IAAK9N,KAAK+M,SAAU,CAClB9J,QAAQC,MAAM,wBACdlD,KAAKgN,cAAgBhN,KAAK4M,MAC1B,M,CAGF5M,KAAK2N,oBAAoB3N,KAAKiN,c,CAQxB,mBAAAU,CAAoBI,GAC1B,IAAKA,IAAkB/N,KAAK+M,SAAU,CACpC/M,KAAKgN,cAAgB,IAAIhN,KAAK4M,OAC9B,M,CAGF,MAAMoB,EAAgBhO,KAAK4M,MAAMlH,QAAO2D,GACtC0E,EAAcjJ,MAAM,KAAKuF,SAAShB,EAAKrJ,KAAK+M,aAG9C,IAAIkB,EAAwBD,EAC5B,GAAIA,EAAcjM,OAAS,IAAM/B,KAAK2M,YAAa,CACjDsB,EAAwB,CAACD,EAAc,IACvC/K,QAAQiL,KAAK,4D,CAGf,MAAMtB,EAAQ5M,KAAK4M,MAAMpH,KAAI6D,GACxBkE,OAAAC,OAAAD,OAAAC,OAAA,GAAAnE,GAAI,CACPoE,SAAUQ,EAAsBzL,MAAK8K,GACnCA,EAAatN,KAAK+M,YAAc1D,EAAKrJ,KAAK+M,gBAI9C/M,KAAKgN,cAAgBJ,C,CAQvB,gBAAAuB,CAAiBvB,EAAe,M,MAC9B,MAAMwB,EAAexB,IAAA,MAAAA,SAAA,EAAAA,EAAS5M,KAAKgN,cACnC,OAAO5C,EAAAgE,EAAa1I,QAAO2D,GAAQA,EAAKoE,cAAS,MAAArD,SAAA,EAAAA,EAAI,E,CASvD,QAAAsD,CAASd,EAAe,M,MACtB,MAAMwB,EAAexB,IAAA,MAAAA,SAAA,EAAAA,EAAS5M,KAAKgN,cACnC,OAAO5C,EAAApK,KAAKmO,iBAAiBC,GAAc5I,KAAI6D,IAAI,IAAAe,EAAI,OAAAA,EAAAf,EAAKrJ,KAAK+M,aAAa,MAAA3C,SAAA,EAAAA,EAAAf,EAAKrJ,KAAK6M,WAAW,IAAE7C,KAAK,QAAI,MAAAI,SAAA,EAAAA,EAAI,E,CAwCpH,MAAAY,GACE,IAAIhL,KAAK+M,SACP,OAAO,KACT,MAAM9B,IAAYjL,KAAKoE,aACvB,OACE8G,EAACC,EAAI,CACHE,MAAO,CACL,YAAa,KACb,mBAAoBJ,EACpB,sBAAuBjL,KAAKM,SAC5B,sBAAuBN,KAAKO,SAC5B,sBAAuBP,KAAKqO,SAC5B,0BAA2BrO,KAAK2M,YAChC,CAAC,mBAAmB3M,KAAK0C,QAAS,KAClC,CAAC,qBAAqB1C,KAAK0M,UAAW,MAE1B,eAAAzB,EAAU,OAAS,QAAO,gBACzBjL,KAAKqO,SAAW,OAAS,SAExCnD,EAAA,UACGlL,KAAKgN,cAAcxH,KAAI,CAAC6D,EAAMlH,K,QAAM,OACnC+I,EACE,MAAAE,IAAK/B,EAAKiC,IAAMjC,EAAKrJ,KAAK6M,YAC1BjB,QAAS,IAAM5L,KAAKkN,gBAAgB7D,GACpCgC,MAAOhC,EAAKoE,WAAazN,KAAK8M,YAAc,WAAa,GACzDxB,GAAI,mCAAqCnJ,EAAI,IAAMnC,KAAKsL,GAExDQ,YAAa,mCAAqC3J,EAAI,IAAMnC,KAAKsL,IAEhEtL,KAAK8M,YACJ5B,EAAA,aACEA,EACE,SAAA7H,KAAMrD,KAAK2M,YAAc,WAAa,QACtCtK,KAAMrC,KAAKqC,OAAUrC,KAAK+M,UAAY1D,EAAKrJ,KAAK+M,aAAe3C,EAAAf,EAAKiC,MAAM,MAAAlB,SAAA,EAAAA,EAAAf,EAAKrJ,KAAK6M,cACpFvM,SAAUN,KAAKM,UAAYN,KAAKO,SAChCyB,MAAQhC,KAAK+M,UAAY1D,EAAKrJ,KAAK+M,aAAeuB,EAAAjF,EAAKiC,MAAE,MAAAgD,SAAA,EAAAA,EAAIjF,EAAKrJ,KAAK6M,aACvE0B,QAASlF,EAAKoE,SACde,SAAU,IAAMxO,KAAKkN,gBAAgB7D,KAEtCA,EAAKrJ,KAAK6M,aAGb3B,EAAA,WAAM7B,EAAKrJ,KAAK6M,aAEf,IAEN7M,KAAKoE,cAAgB8G,EAAA,oBAAkBG,MAAM,QAAQoD,QAAQ,eAAelC,MAAM,SAASvM,KAAKoE,e,kLCtS9FsK,EAAY,MAJzB,WAAA5O,CAAAC,G,UAUUC,KAAQqO,SAAY,MAGnBrO,KAAU2O,WAAY,MACtB3O,KAAA4O,cAAoC,OACpC5O,KAAA6O,gBAAwC,OACxC7O,KAAA8O,eAAqC,MA0O/C,CArOC,gBAAMC,CAAWC,GACfhP,KAAKiP,MAAQD,EACbhP,KAAKiP,MAAMC,IAAIC,cACbnP,KAAKqC,MACL+M,IACE,MAAMC,KAAEA,EAAI5F,OAAEA,EAAM6F,MAAEA,EAAKtN,MAAEA,GAAUoN,EACvC,IAAKpP,KAAKiP,MAAMM,iBAAiBvP,KAAKqC,MAAO,CAC3CrC,KAAKiP,MAAMM,iBAAiBvP,KAAKqC,MAAQ,CAAEgM,SAAUrO,KAAKqO,UAG1DrO,KAAK4O,cAAgB,K,MACnBS,IAEA,MAAMG,GAAiBpF,EAAApK,KAAKiP,MAAMC,IAAIO,cAAczP,KAAKqC,SAAK,MAAA+H,SAAA,SAAAA,EAAElH,MAChE,IAAKlD,KAAKoE,aAAc,CACtBpE,KAAKoE,aAAeoL,GAAkB,E,GAG1CxP,KAAK6O,gBAAkB9N,IACrB0I,EAAO1I,GAENf,KAAKoE,aAAe,GAErBpE,KAAK0P,gCAAgC,EAEvC1P,KAAK8O,eAAiBQ,EACtBtP,KAAK2O,WAAa,I,CAKpB3O,KAAKgC,MAAQA,IAAK,MAALA,SAAA,EAAAA,EAAS,EAAE,GAE1B,CACEA,MAAO,KACPkB,MAAO,MACPyM,QAAS,O,CAKf,kBAAAC,GACE5P,KAAK0P,gC,CAGP,kBAAAG,GACE7P,KAAK0P,gC,CAGC,8BAAAA,GACN,MAAMI,EAAoB9P,KAAK+P,GAAGC,SAASjO,OAAS,EAEpD,GAAI+N,EAAmB,CACrB1K,MAAM6K,KAAKjQ,KAAK+P,GAAGC,UAAUpG,SAASsG,IAGpC,GAAIlQ,KAAKgC,QAAUmH,YAAc+G,EAAQC,aAAa,0BAA2B,CAC/ED,EAAQhH,aAAelJ,KAAKgC,MAC5BkO,EAAQE,aAAa,yBAA0B,O,CAIjDF,EAAQhN,MAAQlD,KAAKoE,cAAgB,GAErC,GAAIpE,KAAKqC,KAAM6N,EAAQ7N,KAAOrC,KAAKqC,KACnC,GAAIrC,KAAKsL,GAAI4E,EAAQ5E,GAAKtL,KAAKsL,GAC/B,GAAItL,KAAK2L,MAAOuE,EAAQvE,MAAQ3L,KAAK2L,MAGrC,IAAKuE,EAAQC,aAAa,2BAA4B,CACpDD,EAAQzM,iBAAiB,QAASzD,KAAKqQ,YAAYC,KAAKtQ,OACxDkQ,EAAQzM,iBAAiB,SAAUzD,KAAKuQ,aAAaD,KAAKtQ,OAC1DkQ,EAAQzM,iBAAiB,OAAQzD,KAAKwQ,WAAWF,KAAKtQ,OACtDkQ,EAAQzM,iBAAiB,QAASzD,KAAKyQ,YAAYH,KAAKtQ,OACxDkQ,EAAQzM,iBAAiB,QAASzD,KAAK0Q,YAAYJ,KAAKtQ,OACxDkQ,EAAQE,aAAa,0BAA2B,O,MAMxD,oBAAArF,G,MAEE,IAAK/K,KAAKqC,KAAM,CACd,M,CAEF,GAAIrC,KAAKiP,MAAMM,iBAAiBvP,KAAKqC,MAAO,QACnCrC,KAAKiP,MAAMM,iBAAiBvP,KAAKqC,K,CAK1C,IACE,IAAI+H,EAAApK,KAAKiP,MAAMC,OAAG,MAAA9E,SAAA,SAAAA,EAAEX,OAAQ,CAC1BzJ,KAAKiP,MAAMC,IAAIzF,OAAOzJ,KAAKqC,KAAM8G,U,EAEnC,MAAOjG,GAEPD,QAAQ0N,MAAM,yBAA0BzN,E,CAI1ClD,KAAK2O,WAAa,K,CAIpB,WAAA0B,CAAYxE,G,MACV,IAAI7J,EAGJ,GAAI6J,aAAa+E,aAAe/E,EAAEgF,SAAW1H,UAAW,CACtDnH,EAAQ6J,EAAEgF,M,KACL,CAEL,MAAM/O,EAAS+J,EAAE/J,OAGjB,GAAIA,EAAOgP,WAAY,CACrB,MAAMjP,EAAQC,EAAOgP,WAAWC,cAAc,2BAC9C,GAAIlP,EAAO,CACTG,EAAQH,EAAMG,K,OAIb,GAAIF,EAAOkP,UAAY,SAAWlP,EAAOkP,UAAY,YAAclP,EAAOkP,UAAY,SAAU,CACnGhP,EAASF,EAAsEE,K,MAG5E,GAAI,UAAWF,EAAQ,CAC1BE,EAASF,EAAeE,K,EAI5B,GAAIA,IAAUmH,UAAW,EACvBiB,EAAApK,KAAK6O,mBAAkB,MAAAzE,SAAA,SAAAA,EAAA6G,KAAAjR,KAAAgC,E,EAK3B,YAAAuO,CAAa1E,G,QACX,IAAI7J,EAGJ,GAAI6J,aAAa+E,aAAe/E,EAAEgF,SAAW1H,UAAW,CACtDnH,EAAQ6J,EAAEgF,M,KACL,CAEL,MAAM/O,EAAS+J,EAAE/J,OAGjB,GAAIA,EAAOgP,WAAY,CACrB,MAAMjP,EAAQC,EAAOgP,WAAWC,cAAc,2BAC9C,GAAIlP,EAAO,CACTG,EAAQH,EAAMG,K,OAIb,GAAIF,EAAOkP,UAAY,SAAWlP,EAAOkP,UAAY,YAAclP,EAAOkP,UAAY,SAAU,CACnGhP,EAASF,EAAsEE,K,MAG5E,GAAI,UAAWF,EAAQ,CAC1BE,EAASF,EAAeE,K,EAI5B,GAAIA,IAAUmH,UAAW,EACvBiB,EAAApK,KAAK6O,mBAAkB,MAAAzE,SAAA,SAAAA,EAAA6G,KAAAjR,KAAAgC,GAEvB,GAAI6J,aAAa+E,YAAa,EAC5BtC,EAAAtO,KAAK4O,iBAAgB,MAAAN,SAAA,SAAAA,EAAA2C,KAAAjR,KAAA6L,E,GAM3B,WAAA4E,CAAY5E,G,OACVzB,EAAApK,KAAK8O,kBAAiB,MAAA1E,SAAA,SAAAA,EAAA6G,KAAAjR,KAAA6L,E,CAIxB,UAAA2E,CAAW3E,G,OACTzB,EAAApK,KAAK4O,iBAAgB,MAAAxE,SAAA,SAAAA,EAAA6G,KAAAjR,KAAA6L,E,CAGvB,WAAA6E,CAAY7E,G,QAEV,GAAIA,EAAEgF,SAAW1H,UAAW,CAC1BnJ,KAAKoE,aAAeyH,EAAEgF,OAGtB,KAAIzG,EAAApK,KAAKiP,SAAK,MAAA7E,SAAA,SAAAA,EAAEmF,mBAAoBvP,KAAKqC,KAAM,CAC7C,IAAKrC,KAAKiP,MAAMiC,aAAc,CAC5BlR,KAAKiP,MAAMiC,aAAe,E,CAE5BlR,KAAKiP,MAAMiC,aAAalR,KAAKqC,MAAQwJ,EAAEgF,OAGvC,GAAI7Q,KAAKiP,MAAMC,IAAK,CAElB,MAAMiC,GAAe7C,EAAAtO,KAAKiP,MAAMC,IAAIO,cAAczP,KAAKqC,SAAK,MAAAiM,SAAA,SAAAA,EAAEtM,MAC9DhC,KAAKiP,MAAMC,IAAIzF,OAAOzJ,KAAKqC,KAAM8O,E,EAKrCnR,KAAK0P,gC,EAKT,cAAA0B,CAAevF,GAEb,GAAIA,EAAEgF,QAAU7Q,KAAKqC,MAAQwJ,EAAEgF,OAAO7Q,KAAKqC,MAAO,CAEhDrC,KAAKoE,aAAeyH,EAAEgF,OAAO7Q,KAAKqC,MAElCrC,KAAK0P,gC,EAIT,MAAA1E,GACE,IAAKhL,KAAK2O,WAAY,CACpB,OAAO,I,CAIT,OAAOzD,EAAA,Y","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,c as i,h as s}from"./p-CaIWDYyq.js";const e=class{constructor(s){t(this,s);this.gridReady=i(this,"gridReady");this.rowData=[];this.columnDefs=[];this.clientConfig={rowModelType:"clientSide"};this.headerConfig={title:"Client-Side"}}updateRowData(){if(this.gridApi){this.gridApi.setGridOption("rowData",this.rowData)}}updateColumnDefs(){if(this.gridApi){this.gridApi.setGridOption("columnDefs",this.columnDefs)}}handleGridReady(t){this.gridApi=t.detail;this.gridReady.emit(this.gridApi)}render(){return s("ag-grid-base",{key:"
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,c as i,h as s}from"./p-CaIWDYyq.js";const e=class{constructor(s){t(this,s);this.gridReady=i(this,"gridReady");this.rowData=[];this.columnDefs=[];this.clientConfig={rowModelType:"clientSide"};this.headerConfig={title:"Client-Side"}}updateRowData(){if(this.gridApi){this.gridApi.setGridOption("rowData",this.rowData)}}updateColumnDefs(){if(this.gridApi){this.gridApi.setGridOption("columnDefs",this.columnDefs)}}handleGridReady(t){this.gridApi=t.detail;this.gridReady.emit(this.gridApi)}render(){return s("ag-grid-base",{key:"d3e3fd50702ca15925cc540a1cc182c4049b3338",gridConfig:this.clientConfig,headerConfig:this.headerConfig,onGridReady:t=>this.handleGridReady(t)})}static get watchers(){return{rowData:["updateRowData"],columnDefs:["updateColumnDefs"]}}};export{e as client_side_grid};
|
|
2
|
+
//# sourceMappingURL=p-8a0b6bd4.entry.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,c as i,h as t,H as s}from"./p-CaIWDYyq.js";const h='.checkbox-container{display:flex;align-items:center}.checkbox-container input[type="checkbox"]{margin-right:8px}';const a=class{constructor(t){e(this,t);this.change=i(this,"change");this.checked=false;this.disabled=false;this.internalChecked=false;this.handleChange=e=>{const i=e.target.checked;this.internalChecked=i;if(this.checked!==undefined){this.checked=i}const t=i?"true":"false";this.change.emit(t)}}updateError(){this.errorMessage=this.error}initialValueChanged(e){if(!this.internalChecked||this.checked===undefined){if(e!==undefined){this.internalChecked=e==="true"||e==="1"||e==="on"}}}checkedChanged(){if(this.checked!==undefined&&this.checked!==this.internalChecked){this.internalChecked=this.checked}}componentWillLoad(){if(this.checked!==undefined){this.internalChecked=this.checked}else if(this.initialValue!==undefined){this.internalChecked=this.initialValue==="true"||this.initialValue==="1"||this.initialValue==="on"}else{this.internalChecked=false}if(this.error){this.errorMessage=this.error}}render(){const e=!!this.errorMessage;return t(s,{key:"
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,c as i,h as t,H as s}from"./p-CaIWDYyq.js";const h='.checkbox-container{display:flex;align-items:center}.checkbox-container input[type="checkbox"]{margin-right:8px}';const a=class{constructor(t){e(this,t);this.change=i(this,"change");this.checked=false;this.disabled=false;this.internalChecked=false;this.handleChange=e=>{const i=e.target.checked;this.internalChecked=i;if(this.checked!==undefined){this.checked=i}const t=i?"true":"false";this.change.emit(t)}}updateError(){this.errorMessage=this.error}initialValueChanged(e){if(!this.internalChecked||this.checked===undefined){if(e!==undefined){this.internalChecked=e==="true"||e==="1"||e==="on"}}}checkedChanged(){if(this.checked!==undefined&&this.checked!==this.internalChecked){this.internalChecked=this.checked}}componentWillLoad(){if(this.checked!==undefined){this.internalChecked=this.checked}else if(this.initialValue!==undefined){this.internalChecked=this.initialValue==="true"||this.initialValue==="1"||this.initialValue==="on"}else{this.internalChecked=false}if(this.error){this.errorMessage=this.error}}render(){const e=!!this.errorMessage;return t(s,{key:"6a72c791032998e93962150c25179d3ab0ad8f0e",class:{"udp-input":true,"udp-input--error":e,"udp-input--disabled":this.disabled,"udp-input--required":this.required,"udp-input--checked":this.internalChecked},"aria-invalid":e?"true":"false","aria-required":this.required?"true":"false"},t("div",{key:"029405ece44c0cb25b42b3406ec599581c1f706a",class:"checkbox-container"},t("input",{key:"23b50a35d2007a7fe4b2f01d8456540799dbb7eb",type:"checkbox",checked:this.internalChecked,onChange:this.handleChange,id:this.id,name:this.name,disabled:this.disabled,required:this.required}),this.label&&t("label",{key:"4da1f4c5f0beba9cf3d1e0bda5023e1080c8ccd1",htmlFor:this.id},this.label),this.errorMessage&&t("div",{key:"36ff104bc3567de0c4416f703695be3a3f330d16",class:"error-message"},this.errorMessage)))}static get watchers(){return{error:["updateError"],initialValue:["initialValueChanged"],checked:["checkedChanged"]}}};a.style=h;export{a as check_box};
|
|
2
|
+
//# sourceMappingURL=p-90fbca0f.entry.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as t}from"./p-Cn7PuhQz.js";import e from"axios";function n(t){return t&&typeof t==="object"&&"driveFileId"in t}function o(t){return t instanceof File}function i(t){const e={pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",txt:"text/plain",csv:"text/csv",json:"application/json",xml:"application/xml",html:"text/html",css:"text/css",js:"application/javascript",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml",webp:"image/webp",bmp:"image/bmp",tiff:"image/tiff",zip:"application/zip",rar:"application/x-rar-compressed","7z":"application/x-7z-compressed"};const n=t.trim().toLowerCase();return e[n]||"application/octet-stream"}async function a(n){try{const o=`${t.tenantV1ApiUrl}/UdpDrive/${n.driveFileId}/stream`;const a=await e({method:"GET",url:o,responseType:"blob",timeout:3e5,headers:{}});const c=a.data;const r=n.name||`file.${n.extension}`;return new File([c],r,{type:c.type||i(n.extension),lastModified:n.lastUpdated?new Date(n.lastUpdated).getTime():Date.now()})}catch(t){console.error("Error downloading file from UdpDriveFile:",t);const e=n.name||`file.${n.extension}`;return new File([""],e,{type:"application/octet-stream"})}}async function c(t,e="file"){try{if(t.startsWith("data:")){const n=await fetch(t);const o=await n.blob();return new File([o],e,{type:o.type})}else{const n=await fetch(t);const o=await n.blob();const i=t.split("/").pop()||e;return new File([o],i,{type:o.type})}}catch(t){console.error("Error creating file from string:",t);return new File([""],e,{type:"application/octet-stream"})}}function r(t){return typeof t==="string"&&t.includes("|")&&(t.includes("udp:")||t.includes("b64:"))}async function s(t){const e=t.split(",").map((t=>t.trim())).filter((t=>t));const n=[];for(const t of e){try{const e=await p(t);if(e){n.push(e)}}catch(e){console.error("Error parsing file reference:",t,e)}}return n}async function p(t){const e=t.split("|");if(e.length!==2){console.warn("Invalid file reference format:",t);return null}const[n,o]=e;if(o.startsWith("udp:")){const t=n.split(".").pop()||"";const e=i(t);const a=new Blob([""],{type:e});const c=new File([a],n,{type:e});c.driveFileId=o.substring(4);c.extension=t;return c}else if(o.startsWith("b64:")){const t=o.substring(4);const e=`data:application/octet-stream;base64,${t}`;try{return await c(e,n)}catch(t){console.error("Error processing base64 file:",t);return null}}console.warn("Unknown file reference format:",o);return null}export{p as a,n as b,c,a as d,o as e,r as i,s as p};
|
|
2
|
+
//# sourceMappingURL=p-C5aOw4Ij.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p-C5aOw4Ij.js","sources":["src/components/my-component/UI/inputs/file-upload/udp-drive-utils.ts"],"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"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const i=(i,o)=>{var l,v,d,n;if((l=i===null||i===void 0?void 0:i.shadowRoot)===null||l===void 0?void 0:l.lastElementChild){(n=(d=(v=i===null||i===void 0?void 0:i.shadowRoot)===null||v===void 0?void 0:v.lastElementChild)===null||d===void 0?void 0:d.setAttribute)===null||n===void 0?void 0:n.call(d,"style",`font-family: var(${o})`);return}const t=new MutationObserver(((i,l)=>{i.forEach((i=>{if(i.type==="childList"&&i.addedNodes.length>0){i.addedNodes.forEach((i=>{var v;if(i.nodeType===Node.ELEMENT_NODE){(v=i===null||i===void 0?void 0:i.setAttribute)===null||v===void 0?void 0:v.call(i,"style",`font-family: var(${o})`);l.disconnect()}}))}}))}));if(i===null||i===void 0?void 0:i.shadowRoot){t.observe(i.shadowRoot,{childList:true})}};const o={Arial:"--font-override-arial"};export{o as f,i as o};
|
|
2
|
+
//# sourceMappingURL=p-DZv4MqyU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p-DZv4MqyU.js","sources":["src/components/my-component/UI/forms/udp-forms/utils.ts"],"sourcesContent":["export const overrideFont = (element: HTMLElement, cssVariable) => {\n if(element?.shadowRoot?.lastElementChild){ // this returns null in react for some instances\n element?.shadowRoot?.lastElementChild?.setAttribute?.('style', `font-family: var(${cssVariable})`)\n return;\n }\n const observer = new MutationObserver((mutationsList, observer) => {\n mutationsList.forEach(mutation => {\n if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach(node => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n (node as HTMLElement)?.setAttribute?.('style', `font-family: var(${cssVariable})`);\n observer.disconnect(); // Stop observing once the target is found\n }\n });\n }\n });\n });\n\n if (element?.shadowRoot) {\n observer.observe(element.shadowRoot, { childList: true });\n }\n };\n\n\nexport const fontOverrideMapping = {\n Arial: \"--font-override-arial\"\n}"],"names":[],"mappings":"MAAa,YAAY,GAAG,CAAC,OAAoB,EAAE,WAAW,KAAI;;AAC9D,IAAA,IAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,gBAAgB,EAAC;QACrC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,mDAAG,OAAO,EAAE,oBAAoB,WAAW,CAAA,CAAA,CAAG,CAAC;QAClG;;IAEJ,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,aAAa,EAAE,QAAQ,KAAI;AAChE,QAAA,aAAa,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC/B,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACnE,gBAAA,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;;oBACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;AACvC,wBAAA,CAAA,EAAA,GAAC,IAAoB,KAAA,IAAA,IAApB,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAkB,YAAY,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,OAAO,EAAE,CAAA,iBAAA,EAAoB,WAAW,CAAA,CAAA,CAAG,CAAC;AAClF,wBAAA,QAAQ,CAAC,UAAU,EAAE,CAAC;;AAE1B,iBAAC,CAAC;;AAEN,SAAC,CAAC;AACJ,KAAC,CAAC;IAEF,IAAI,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,UAAU,EAAE;AACvB,QAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;AAE7D;AAGW,MAAA,mBAAmB,GAAG;AACjC,IAAA,KAAK,EAAE;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e;(function(e){e[e["Hidden"]=1]="Hidden";e[e["SingleLineText"]=2]="SingleLineText";e[e["MultiLineText"]=3]="MultiLineText";e[e["Checkbox"]=4]="Checkbox";e[e["RadioButton"]=5]="RadioButton";e[e["DropdownSingleSelect"]=6]="DropdownSingleSelect";e[e["DropdownMultipleSelect"]=7]="DropdownMultipleSelect";e[e["ListMultiSelect"]=8]="ListMultiSelect";e[e["DateSelector"]=9]="DateSelector";e[e["TimeSelector"]=10]="TimeSelector";e[e["DateTimeSelector"]=11]="DateTimeSelector";e[e["FileUpload"]=12]="FileUpload";e[e["YesNo"]=13]="YesNo";e[e["Signature"]=14]="Signature";e[e["Tally"]=15]="Tally";e[e["Number"]=16]="Number";e[e["Paragraph"]=17]="Paragraph"})(e||(e={}));export{e as U};
|
|
2
|
+
//# sourceMappingURL=p-DtiAfg0X.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p-DtiAfg0X.js","sources":["src/components/my-component/UI/forms/udp-forms/enums.ts"],"sourcesContent":["export enum UdpFormsFieldTypeEnum {\n Hidden = 1,\n SingleLineText = 2,\n MultiLineText = 3,\n Checkbox = 4,\n RadioButton = 5,\n DropdownSingleSelect = 6,\n DropdownMultipleSelect = 7,\n ListMultiSelect = 8,\n DateSelector = 9,\n TimeSelector = 10,\n DateTimeSelector = 11,\n FileUpload = 12,\n YesNo = 13,\n Signature = 14,\n Tally = 15,\n Number = 16,\n Paragraph = 17\n }\n"],"names":[],"mappings":"IAAY;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,qBAAA,CAAA,qBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,qBAAA,CAAA,qBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB;AACjB,IAAA,qBAAA,CAAA,qBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe;AACf,IAAA,qBAAA,CAAA,qBAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAwB;AACxB,IAAA,qBAAA,CAAA,qBAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAA0B;AAC1B,IAAA,qBAAA,CAAA,qBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAmB;AACnB,IAAA,qBAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAChB,IAAA,qBAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB;AACjB,IAAA,qBAAA,CAAA,qBAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAqB;AACrB,IAAA,qBAAA,CAAA,qBAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAe;AACf,IAAA,qBAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAU;AACV,IAAA,qBAAA,CAAA,qBAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAc;AACd,IAAA,qBAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAU;AACV,IAAA,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAW;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAc;AAChB,CAAC,EAlBS,qBAAqB,KAArB,qBAAqB,GAkB9B,EAAA,CAAA,CAAA;;;;"}
|