udp-stencil-component-library 25.18.1 → 25.18.2-beta.2
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 +12 -12
- package/dist/cjs/advanced-search_12.cjs.entry.js +5 -5
- package/dist/cjs/ag-grid-base_6.cjs.entry.js +2 -2
- package/dist/cjs/ambient-template-grid.cjs.entry.js +16 -16
- package/dist/cjs/api-method-instance-grid.cjs.entry.js +1 -1
- package/dist/cjs/app-bar.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_2.cjs.entry.js +3 -3
- package/dist/cjs/date-time-renderer.file-upload-renderer.form-metadata-display-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.cjs.js.map +1 -0
- package/dist/cjs/{date-time-renderer_6.cjs.entry.js → date-time-renderer_7.cjs.entry.js} +43 -9
- package/dist/cjs/entity-maintenance-grid.cjs.entry.js +1 -1
- package/dist/cjs/{enums-ibNZ4cZ4.js → enums-DVbZnzL8.js} +3 -2
- package/dist/cjs/enums-DVbZnzL8.js.map +1 -0
- package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
- package/dist/cjs/filter-conditions_7.cjs.entry.js +2 -2
- package/dist/cjs/form-metadata-display.image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.cjs.js.map +1 -0
- package/dist/cjs/{image-upload_7.cjs.entry.js → form-metadata-display_8.cjs.entry.js} +70 -12
- package/dist/cjs/index-CGCOXUJE.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-component_2.cjs.entry.js +2 -2
- package/dist/cjs/numeric-field_5.cjs.entry.js +15 -15
- package/dist/cjs/primary-action-header_3.cjs.entry.js +2 -2
- package/dist/cjs/question-configs-renderer_4.cjs.entry.js +12 -12
- package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
- package/dist/cjs/search-method-grid.cjs.entry.js +2 -1
- package/dist/cjs/search-method-grid.entry.cjs.js.map +1 -1
- package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/side-sheet-container.cjs.entry.js +1 -1
- package/dist/cjs/stencil-library.cjs.js +1 -1
- package/dist/cjs/stencil-toggle.cjs.entry.js +4 -4
- package/dist/cjs/text-field_2.cjs.entry.js +7 -7
- package/dist/cjs/udp-chip_3.cjs.entry.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_2.cjs.entry.js +3 -3
- package/dist/cjs/udp-date-range-selector.cjs.entry.js +1 -1
- package/dist/cjs/udp-dynamic-container-with-menu.cjs.entry.js +1 -1
- package/dist/cjs/{udp-forms-builder-question-template-BlgDh7P5.js → udp-forms-builder-question-template-CNONS2l5.js} +10 -3
- package/dist/cjs/{udp-forms-builder-question-template-BlgDh7P5.js.map → udp-forms-builder-question-template-CNONS2l5.js.map} +1 -1
- package/dist/cjs/udp-forms-builder-style-override.cjs.entry.js +1 -1
- package/dist/cjs/udp-forms-builder.cjs.entry.js +3 -3
- package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-follow-up-list-card.cjs.entry.js +3 -3
- package/dist/cjs/udp-forms-list-card.cjs.entry.js +5 -5
- package/dist/cjs/udp-forms-list.cjs.entry.js +2 -2
- package/dist/cjs/udp-forms-renderer.cjs.entry.js +21 -18
- package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-forms-ui.cjs.entry.js +7 -4
- 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-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/udp-page.cjs.entry.js +1 -1
- package/dist/cjs/udp-skeleton-loading.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-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/udp-tab.cjs.entry.js +1 -1
- package/dist/cjs/udp-timeline-connector.cjs.entry.js +1 -1
- package/dist/cjs/udp-timeline-dot.cjs.entry.js +1 -1
- package/dist/cjs/udp-timeline-item.cjs.entry.js +2 -2
- package/dist/cjs/udp-timeline-separator.cjs.entry.js +1 -1
- package/dist/cjs/udp-timeline.cjs.entry.js +1 -1
- package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.css +8 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.js +173 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.js.map +1 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/list-option-renderer/list-options-renderer.js +3 -3
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-configs-renderer/question-configs-renderer.js +5 -5
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer/question-specific-configs-renderer.js +2 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer/question-specific-configs-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/section-configs-renderer/section-configs-renderer.js +3 -3
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.js +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/text-input-renderer/text-input-renderer.js +2 -2
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-menu/udp-forms-builder-menu.js +2 -2
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-question-template.js +7 -0
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-question-template.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-style-override/udp-forms-builder-style-override.js +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +2 -2
- package/dist/collection/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.js +4 -4
- package/dist/collection/components/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-follow-up-list-card/udp-forms-follow-up-list-card.js +2 -2
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-ui/udp-forms-ui.js +12 -37
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-ui/udp-forms-ui.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +19 -17
- package/dist/collection/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/udp-question/udp-question.js +40 -26
- package/dist/collection/components/forms/udp-forms/udp-question/udp-question.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/utils/classes/UdpFormSubmission.js +1 -0
- package/dist/collection/components/forms/udp-forms/utils/classes/UdpFormSubmission.js.map +1 -1
- package/dist/collection/components/forms/udp-forms/utils/enums.js +1 -0
- package/dist/collection/components/forms/udp-forms/utils/enums.js.map +1 -1
- package/dist/collection/components/grid/ag-table/ag-table.js +1 -1
- package/dist/collection/components/grid/ambient-template-grid/ambient-template-grid.js +16 -16
- package/dist/collection/components/grid/grid-primary-bar/grid-primary-bar.js +2 -2
- package/dist/collection/components/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
- package/dist/collection/components/grid/new-grid/ag-grid-base.js +1 -1
- package/dist/collection/components/grid/new-grid/api-method-instance-grid.js +1 -1
- package/dist/collection/components/grid/new-grid/client-side-grid.js +1 -1
- package/dist/collection/components/grid/new-grid/entity-maintenance-grid.js +1 -1
- package/dist/collection/components/grid/new-grid/search-method-grid.js +2 -1
- package/dist/collection/components/grid/new-grid/search-method-grid.js.map +1 -1
- package/dist/collection/components/grid/new-grid/server-side-grid.js +1 -1
- package/dist/collection/components/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
- package/dist/collection/components/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +2 -2
- package/dist/collection/components/inputs/checkbox/check-box.js +2 -2
- package/dist/collection/components/inputs/date-range-selector/udp-date-range-selector.js +1 -1
- package/dist/collection/components/inputs/date-selector/udp-date-selector.js +3 -3
- package/dist/collection/components/inputs/date-time-selector/udp-datetime-selector.js +3 -3
- package/dist/collection/components/inputs/form metadata display/form-metadata-display.css +37 -0
- package/dist/collection/components/inputs/form metadata display/form-metadata-display.js +191 -0
- package/dist/collection/components/inputs/form metadata display/form-metadata-display.js.map +1 -0
- package/dist/collection/components/inputs/image-upload/image-upload.js +1 -1
- package/dist/collection/components/inputs/numeric-field/numeric-field.js +3 -3
- package/dist/collection/components/inputs/signature-input/signature-input.js +2 -2
- package/dist/collection/components/inputs/tally/tally.js +2 -2
- package/dist/collection/components/inputs/text-area/text-area.js +3 -3
- package/dist/collection/components/inputs/text-field/text-field.js +3 -3
- package/dist/collection/components/inputs/time-selector/udp-time-selector.js +3 -3
- package/dist/collection/components/inputs/toggle/stencil-toggle.js +4 -4
- package/dist/collection/components/inputs/udp-selector/udp-selector.js +4 -4
- package/dist/collection/components/layout/udp-container/udp-container.js +2 -2
- package/dist/collection/components/layout/udp-container-query/udp-container-query.js +2 -2
- package/dist/collection/components/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
- package/dist/collection/components/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
- package/dist/collection/components/layout/udp-page/udp-page.js +1 -1
- package/dist/collection/components/layout/udp-split-screen/udp-split-screen.js +1 -1
- package/dist/collection/components/layout/udp-vertical-spacer.js +1 -1
- package/dist/collection/components/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
- package/dist/collection/components/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
- package/dist/collection/components/loaders/udp-skeleton-loading.js +1 -1
- package/dist/collection/components/map/udp-map/map-component.js +1 -1
- package/dist/collection/components/map/udp-map/popups/add-map-feature-popup.js +3 -3
- package/dist/collection/components/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
- package/dist/collection/components/map/udp-map/popups/feature-details-popup.js +1 -1
- package/dist/collection/components/map/udp-map/popups/select-layer-popup.js +2 -2
- package/dist/collection/components/map/udp-map/popups/split-line-popup.js +1 -1
- package/dist/collection/components/map/udp-map/toolbar/map-toolbar.js +6 -6
- package/dist/collection/components/map/udp-map/udp-map-toolbar.js +1 -1
- package/dist/collection/components/map/udp-map/udp-map.js +3 -3
- package/dist/collection/components/menu/menu-item/udp-menu-item.js +1 -1
- package/dist/collection/components/menu/udp-menu.js +1 -1
- package/dist/collection/components/stepper/udp-stepper-demo.js +1 -1
- package/dist/collection/components/tabs/tab/tabs/udp-tabs.js +2 -2
- package/dist/collection/components/tabs/tab/udp-tab.js +1 -1
- package/dist/collection/components/tabs/udp-tab-panel/udp-tab-panel.js +2 -2
- package/dist/collection/components/timeline/udp-timeline-connector.js +1 -1
- package/dist/collection/components/timeline/udp-timeline-dot.js +1 -1
- package/dist/collection/components/timeline/udp-timeline-item.js +2 -2
- package/dist/collection/components/timeline/udp-timeline-separator.js +1 -1
- package/dist/collection/components/timeline/udp-timeline.js +1 -1
- package/dist/collection/components/toolbars/app-bar/app-bar.js +1 -1
- package/dist/collection/components/util/ghost-render/ghost-render.js +1 -1
- package/dist/collection/deprecated/components/side-sheet/side-sheet-container.js +1 -1
- package/dist/collection/deprecated/components/side-sheet/side-sheet.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-popup2.js +3 -3
- package/dist/components/ag-grid-base2.js +1 -1
- package/dist/components/ag-table2.js +1 -1
- package/dist/components/ambient-template-grid.js +16 -16
- package/dist/components/api-method-instance-grid.js +1 -1
- package/dist/components/app-bar.js +1 -1
- package/dist/components/check-box.js +2 -2
- package/dist/components/chip-section.js +2 -2
- package/dist/components/client-side-grid2.js +1 -1
- package/dist/components/entity-maintenance-grid.js +1 -1
- package/dist/components/enums.js +1 -0
- package/dist/components/enums.js.map +1 -1
- package/dist/components/feature-details-card2.js +4 -4
- package/dist/components/feature-details-popup2.js +1 -1
- package/dist/components/form-metadata-display-renderer.d.ts +11 -0
- package/dist/components/form-metadata-display-renderer.js +9 -0
- package/dist/components/form-metadata-display-renderer.js.map +1 -0
- package/dist/components/form-metadata-display-renderer2.js +74 -0
- package/dist/components/form-metadata-display-renderer2.js.map +1 -0
- package/dist/components/form-metadata-display.d.ts +11 -0
- package/dist/components/form-metadata-display.js +9 -0
- package/dist/components/form-metadata-display.js.map +1 -0
- package/dist/components/form-metadata-display2.js +77 -0
- package/dist/components/form-metadata-display2.js.map +1 -0
- package/dist/components/ghost-render2.js +1 -1
- package/dist/components/grid-primary-bar2.js +2 -2
- package/dist/components/image-upload2.js +1 -1
- package/dist/components/list-options-renderer2.js +3 -3
- package/dist/components/map-component2.js +1 -1
- package/dist/components/map-toolbar2.js +6 -6
- package/dist/components/numeric-field2.js +3 -3
- package/dist/components/question-configs-renderer2.js +15 -9
- package/dist/components/question-configs-renderer2.js.map +1 -1
- package/dist/components/question-specific-configs-renderer2.js +19 -4
- package/dist/components/question-specific-configs-renderer2.js.map +1 -1
- package/dist/components/resource-timeline-calendar.js +1 -1
- package/dist/components/resource-timeline-primary-bar2.js +2 -2
- package/dist/components/search-method-grid2.js +2 -1
- package/dist/components/search-method-grid2.js.map +1 -1
- package/dist/components/section-configs-renderer2.js +3 -3
- package/dist/components/select-layer-popup2.js +2 -2
- package/dist/components/server-side-grid2.js +1 -1
- package/dist/components/side-sheet-container2.js +1 -1
- package/dist/components/side-sheet2.js +1 -1
- package/dist/components/signature-input2.js +2 -2
- package/dist/components/signature-renderer2.js +1 -1
- package/dist/components/split-line-popup2.js +1 -1
- package/dist/components/stencil-toggle2.js +4 -4
- package/dist/components/tally.js +2 -2
- package/dist/components/text-area2.js +3 -3
- package/dist/components/text-field2.js +3 -3
- package/dist/components/text-input-renderer2.js +2 -2
- package/dist/components/udp-container-query-grid-item.js +1 -1
- package/dist/components/udp-container-query-grid.js +1 -1
- package/dist/components/udp-container-query2.js +2 -2
- package/dist/components/udp-container2.js +2 -2
- package/dist/components/udp-date-range-selector.js +1 -1
- package/dist/components/udp-date-selector2.js +3 -3
- package/dist/components/udp-datetime-selector2.js +3 -3
- package/dist/components/udp-dynamic-container-with-menu2.js +1 -1
- package/dist/components/udp-forms-builder-menu2.js +2 -2
- package/dist/components/udp-forms-builder-style-override.js +1 -1
- package/dist/components/udp-forms-builder.js +15 -9
- package/dist/components/udp-forms-builder.js.map +1 -1
- package/dist/components/udp-forms-follow-up-list-card.js +2 -2
- package/dist/components/udp-forms-list-card2.js +4 -4
- package/dist/components/udp-forms-list.js +1 -1
- package/dist/components/udp-forms-renderer.js +32 -23
- package/dist/components/udp-forms-renderer.js.map +1 -1
- package/dist/components/udp-forms-ui2.js +19 -11
- package/dist/components/udp-forms-ui2.js.map +1 -1
- package/dist/components/udp-grid-loader2.js +2 -2
- package/dist/components/udp-hotlist-form2.js +1 -1
- package/dist/components/udp-linear-loader2.js +1 -1
- package/dist/components/udp-map-toolbar2.js +1 -1
- package/dist/components/udp-map.js +3 -3
- package/dist/components/udp-menu-item2.js +1 -1
- package/dist/components/udp-menu2.js +1 -1
- package/dist/components/udp-page.js +1 -1
- package/dist/components/udp-question2.js +33 -10
- package/dist/components/udp-question2.js.map +1 -1
- package/dist/components/udp-selector2.js +4 -4
- package/dist/components/udp-skeleton-loading2.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-panel.js +2 -2
- package/dist/components/udp-tab.js +1 -1
- package/dist/components/udp-tabs2.js +2 -2
- package/dist/components/udp-time-selector2.js +3 -3
- package/dist/components/udp-timeline-connector.js +1 -1
- package/dist/components/udp-timeline-dot.js +1 -1
- package/dist/components/udp-timeline-item.js +2 -2
- package/dist/components/udp-timeline-separator.js +1 -1
- package/dist/components/udp-timeline.js +1 -1
- package/dist/components/udp-vertical-spacer.js +1 -1
- package/dist/docs.json +487 -103
- package/dist/esm/add-map-feature-popup_4.entry.js +12 -12
- package/dist/esm/advanced-search_12.entry.js +5 -5
- package/dist/esm/ag-grid-base_6.entry.js +2 -2
- package/dist/esm/ambient-template-grid.entry.js +16 -16
- package/dist/esm/api-method-instance-grid.entry.js +1 -1
- package/dist/esm/app-bar.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_2.entry.js +3 -3
- package/dist/esm/date-time-renderer.file-upload-renderer.form-metadata-display-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.js.map +1 -0
- package/dist/esm/{date-time-renderer_6.entry.js → date-time-renderer_7.entry.js} +43 -10
- package/dist/esm/entity-maintenance-grid.entry.js +1 -1
- package/dist/esm/{enums-BnKmfKJT.js → enums-CHxgVY-B.js} +3 -2
- package/dist/esm/enums-CHxgVY-B.js.map +1 -0
- package/dist/esm/feature-details-card_2.entry.js +5 -5
- package/dist/esm/filter-conditions_7.entry.js +2 -2
- package/dist/esm/form-metadata-display.image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.js.map +1 -0
- package/dist/esm/{image-upload_7.entry.js → form-metadata-display_8.entry.js} +71 -14
- package/dist/esm/index-CaZq3YdB.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-component_2.entry.js +2 -2
- package/dist/esm/numeric-field_5.entry.js +15 -15
- package/dist/esm/primary-action-header_3.entry.js +2 -2
- package/dist/esm/question-configs-renderer_4.entry.js +12 -12
- package/dist/esm/resource-timeline-calendar.entry.js +1 -1
- package/dist/esm/search-method-grid.entry.js +2 -1
- package/dist/esm/search-method-grid.entry.js.map +1 -1
- package/dist/esm/server-side-grid.entry.js +1 -1
- package/dist/esm/side-sheet-container.entry.js +1 -1
- package/dist/esm/stencil-library.js +1 -1
- package/dist/esm/stencil-toggle.entry.js +4 -4
- package/dist/esm/text-field_2.entry.js +7 -7
- package/dist/esm/udp-chip_3.entry.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_2.entry.js +3 -3
- package/dist/esm/udp-date-range-selector.entry.js +1 -1
- package/dist/esm/udp-dynamic-container-with-menu.entry.js +1 -1
- package/dist/esm/{udp-forms-builder-question-template-C60LMUS4.js → udp-forms-builder-question-template-DQJb7f4Y.js} +10 -3
- package/dist/{stencil-library/udp-forms-builder-question-template-C60LMUS4.js.map → esm/udp-forms-builder-question-template-DQJb7f4Y.js.map} +1 -1
- package/dist/esm/udp-forms-builder-style-override.entry.js +1 -1
- package/dist/esm/udp-forms-builder.entry.js +3 -3
- package/dist/esm/udp-forms-builder.entry.js.map +1 -1
- package/dist/esm/udp-forms-follow-up-list-card.entry.js +3 -3
- package/dist/esm/udp-forms-list-card.entry.js +5 -5
- package/dist/esm/udp-forms-list.entry.js +2 -2
- package/dist/esm/udp-forms-renderer.entry.js +21 -18
- package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
- package/dist/esm/udp-forms-ui.entry.js +7 -4
- package/dist/esm/udp-forms-ui.entry.js.map +1 -1
- package/dist/esm/udp-map.entry.js +3 -3
- package/dist/esm/udp-menu-item.entry.js +1 -1
- package/dist/esm/udp-page.entry.js +1 -1
- package/dist/esm/udp-skeleton-loading.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-tab-panel.entry.js +2 -2
- package/dist/esm/udp-tab.entry.js +1 -1
- package/dist/esm/udp-timeline-connector.entry.js +1 -1
- package/dist/esm/udp-timeline-dot.entry.js +1 -1
- package/dist/esm/udp-timeline-item.entry.js +2 -2
- package/dist/esm/udp-timeline-separator.entry.js +1 -1
- package/dist/esm/udp-timeline.entry.js +1 -1
- package/dist/esm/udp-vertical-spacer.entry.js +1 -1
- package/dist/stencil-library/add-map-feature-popup_4.entry.js +1 -1
- package/dist/stencil-library/advanced-search_12.entry.js +1 -1
- package/dist/stencil-library/ag-grid-base_6.entry.js +1 -1
- package/dist/stencil-library/ambient-template-grid.entry.js +1 -1
- package/dist/stencil-library/api-method-instance-grid.entry.js +1 -1
- package/dist/stencil-library/app-bar.entry.js +1 -1
- package/dist/stencil-library/check-box.entry.js +1 -1
- package/dist/stencil-library/chip-section.entry.js +1 -1
- package/dist/stencil-library/client-side-grid_2.entry.js +1 -1
- package/dist/stencil-library/date-time-renderer.file-upload-renderer.form-metadata-display-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.esm.js.map +1 -0
- package/dist/stencil-library/date-time-renderer_7.entry.js +2 -0
- package/dist/stencil-library/date-time-renderer_7.entry.js.map +1 -0
- package/dist/stencil-library/entity-maintenance-grid.entry.js +1 -1
- package/dist/stencil-library/enums-CHxgVY-B.js +2 -0
- package/dist/stencil-library/enums-CHxgVY-B.js.map +1 -0
- package/dist/stencil-library/feature-details-card_2.entry.js +1 -1
- package/dist/stencil-library/filter-conditions_7.entry.js +1 -1
- package/dist/stencil-library/form-metadata-display.image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.esm.js.map +1 -0
- package/dist/stencil-library/form-metadata-display_8.entry.js +2 -0
- package/dist/stencil-library/form-metadata-display_8.entry.js.map +1 -0
- package/dist/stencil-library/map-component_2.entry.js +1 -1
- package/dist/stencil-library/numeric-field_5.entry.js +1 -1
- package/dist/stencil-library/primary-action-header_3.entry.js +1 -1
- package/dist/stencil-library/question-configs-renderer_4.entry.js +1 -1
- package/dist/stencil-library/resource-timeline-calendar.entry.js +1 -1
- package/dist/stencil-library/search-method-grid.entry.esm.js.map +1 -1
- package/dist/stencil-library/search-method-grid.entry.js +1 -1
- package/dist/stencil-library/search-method-grid.entry.js.map +1 -1
- package/dist/stencil-library/server-side-grid.entry.js +1 -1
- package/dist/stencil-library/side-sheet-container.entry.js +1 -1
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/stencil-library/stencil-toggle.entry.js +1 -1
- package/dist/stencil-library/text-field_2.entry.js +1 -1
- package/dist/stencil-library/udp-chip_3.entry.js +1 -1
- package/dist/stencil-library/udp-container-query-grid-item.entry.js +1 -1
- package/dist/stencil-library/udp-container-query-grid.entry.js +1 -1
- package/dist/stencil-library/udp-container-query.entry.js +1 -1
- package/dist/stencil-library/udp-container_2.entry.js +1 -1
- package/dist/stencil-library/udp-date-range-selector.entry.js +1 -1
- package/dist/stencil-library/udp-dynamic-container-with-menu.entry.js +1 -1
- package/dist/stencil-library/{udp-forms-builder-question-template-C60LMUS4.js → udp-forms-builder-question-template-DQJb7f4Y.js} +2 -2
- package/dist/{esm/udp-forms-builder-question-template-C60LMUS4.js.map → stencil-library/udp-forms-builder-question-template-DQJb7f4Y.js.map} +1 -1
- package/dist/stencil-library/udp-forms-builder-style-override.entry.js +1 -1
- package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-builder.entry.js +1 -1
- package/dist/stencil-library/udp-forms-builder.entry.js.map +1 -1
- package/dist/stencil-library/udp-forms-follow-up-list-card.entry.js +1 -1
- package/dist/stencil-library/udp-forms-list-card.entry.js +1 -1
- package/dist/stencil-library/udp-forms-list-card.entry.js.map +1 -1
- package/dist/stencil-library/udp-forms-list.entry.js +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.js.map +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.js +1 -1
- package/dist/stencil-library/udp-forms-ui.entry.js.map +1 -1
- package/dist/stencil-library/udp-map.entry.js +1 -1
- package/dist/stencil-library/udp-menu-item.entry.js +1 -1
- package/dist/stencil-library/udp-page.entry.js +1 -1
- package/dist/stencil-library/udp-skeleton-loading.entry.js +1 -1
- package/dist/stencil-library/udp-split-screen.entry.js +1 -1
- package/dist/stencil-library/udp-stepper-demo.entry.js +1 -1
- package/dist/stencil-library/udp-tab-panel.entry.js +1 -1
- package/dist/stencil-library/udp-tab.entry.js +1 -1
- package/dist/stencil-library/udp-timeline-connector.entry.js +1 -1
- package/dist/stencil-library/udp-timeline-dot.entry.js +1 -1
- package/dist/stencil-library/udp-timeline-item.entry.js +1 -1
- package/dist/stencil-library/udp-timeline-item.entry.js.map +1 -1
- package/dist/stencil-library/udp-timeline-separator.entry.js +1 -1
- package/dist/stencil-library/udp-timeline.entry.js +1 -1
- package/dist/stencil-library/udp-vertical-spacer.entry.js +1 -1
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/form-metadata-display-renderer/form-metadata-display-renderer.d.ts +11 -0
- package/dist/types/components/forms/udp-forms/udp-forms-builder/udp-forms-builder-question-template.d.ts +70 -0
- package/dist/types/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-ui/udp-forms-ui.d.ts +5 -2
- package/dist/types/components/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +1 -3
- package/dist/types/components/forms/udp-forms/udp-question/udp-question.d.ts +8 -3
- package/dist/types/components/forms/udp-forms/utils/classes/UdpFormSubmission.d.ts +1 -0
- package/dist/types/components/forms/udp-forms/utils/enums.d.ts +2 -1
- package/dist/types/components/inputs/form metadata display/form-metadata-display.d.ts +62 -0
- package/dist/types/components.d.ts +178 -28
- package/package.json +2 -2
- package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.cjs.js.map +0 -1
- package/dist/cjs/enums-ibNZ4cZ4.js.map +0 -1
- package/dist/cjs/image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.cjs.js.map +0 -1
- package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.js.map +0 -1
- package/dist/esm/enums-BnKmfKJT.js.map +0 -1
- package/dist/esm/image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.js.map +0 -1
- package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.signature-renderer.text-input-renderer.entry.esm.js.map +0 -1
- package/dist/stencil-library/date-time-renderer_6.entry.js +0 -2
- package/dist/stencil-library/date-time-renderer_6.entry.js.map +0 -1
- package/dist/stencil-library/enums-BnKmfKJT.js +0 -2
- package/dist/stencil-library/enums-BnKmfKJT.js.map +0 -1
- package/dist/stencil-library/image-upload.signature-input.stencil-form.tally-display.udp-question.udp-question-comments.udp-save-draft-button.entry.esm.js.map +0 -1
- package/dist/stencil-library/image-upload_7.entry.js +0 -2
- package/dist/stencil-library/image-upload_7.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp-forms-builder.entry.js","sources":["src/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.css?tag=udp-forms-builder&encapsulation=shadow","src/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.tsx"],"sourcesContent":[":host {\n display: block;\n --udp-form-primary-color: #007bff; /* Example primary color */\n --udp-form-spacing-unit: 16px;\n\n}\n\n/* ################### FORM PAGE ################### */\n.udp-forms-page {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-06, 32px);\n /* background-color: white; */\n padding: var(--spacing-06, 32px);\n padding-bottom: var(--spacing-12);\n}\n\n\n.form-section-questions-container {\n display: flex;\n flex-direction: column;\n}\n\n\n/* ################### FORM METADATA ################### */\n\n\n.form-details-container {\n display: flex;\n flex-direction: column;\n /* align-items: flex-start; */\n /* margin: 0 2rem; */\n /* gap: var(--spacing-05, 24px); */\n padding: var(--spacing-05, 24px);\n background-color: var(--card-background-color, white);\n}\n\n.form-details-version-container {\n margin-bottom: var(--spacing-05)\n}\n\n.udp-form-builder-field-container,\n.udp-forms-builder-item-generic-configs,\n.udp-forms-builder-item-specific-configs {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-04, 16px);\n}\n\n/* ################### SECTIONS ################### */\n.form-section {\n /* background-color: var(--primary-color-alpha-15); */\n /* border: 2px solid var(--primary-color-alpha-50); */\n /* border-radius: 8px; */\n /* padding: var(--spacing-04); */\n}\n\n\n.form-section-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background-color: var(--primary-color-dark, #000);\n color: var(--primary-contrast-text, #FFF);\n padding: var(--spacing-04, 16px) var(--spacing-05, 24px);\n /* margin-bottom: var(--spacing-04); */\n align-items: center;\n}\n\n.add-question-button-container {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.question-editor-container {\n padding: var(--spacing-05, 24px);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-05, 24px);\n}\n\n.add-question-to-section-button-container {\n padding: var(--spacing-02, 8px) 0;\n margin: auto;\n}\n\n.sortable-ghost {\n opacity: 0.5;\n transform: scale(0.98);\n background: #f4f4f4;\n border: 1px dashed #ccc;\n}\n\n.sortable-chosen {\n background: #eef6ff;\n box-shadow: 0 0 4px 2px rgba(51, 153, 255, 0.3);\n}\n\n.form-question-drag-handle {\n transform: rotate(90deg);\n cursor: grab;\n}\n\n.form-question-drag-handle:active {\n cursor: grabbing;\n}\n\n.form-question-drag-handle .drag-wrapper {\n cursor: inherit;\n}\n\n.form-question-drag-handle stencil-icon-button {\n pointer-events: none; /* disables click so cursor applies from parent */\n}\n\n\n","import { Component, h, State, Prop, Watch } from '@stencil/core';\nimport { Guid } from '../utils/types';\nimport { makeApiCall } from '../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport questionsTemplate from './udp-forms-builder-question-template';\nimport { getIconFromName } from '../../../data-display/icons/iconUtils';\nimport { ConfigService } from '../../../../udp-utilities/api-config';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport Sortable from 'sortablejs';\nimport { Element } from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { styleOverrideDefault, formSectionDefault, formMetadataDefault, deepCloneFormSections } from './forms-builder-utils';\nimport { UdpFormsPageIdEnum, UdpFormsTypeEnum } from '../utils/enums';\nimport { UdpFormMetadata } from '../utils/types';\n\n@Component({\n tag: 'udp-forms-builder',\n styleUrl: 'udp-forms-builder.css',\n shadow: true,\n})\nexport class UdpFormsBuilder {\n @Element() private hostEl: HTMLElement;\n\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() enqueueSnackbar: Function;\n @Prop() closeSnackbar: Function;\n @Prop() history: { push: (path: string) => void };\n @Prop() isFollowUpFormConfigOn: boolean = false; // allow form engine to use follow-up forms feature\n @Prop() isPublicFormConfigOn: boolean = false; // allow form engine to use public forms feature\n @Prop() isCommentingConfigOn: boolean = false; // allow form engine to use commenting feature\n @Prop() formsBuilderUrlPath: string = ''; // alternative path for redirect to the form builder page. If not provided, use default path.\n\n\n @State() formMetadata: UdpFormMetadata = formMetadataDefault as UdpFormMetadata;\n @State() formSections: any[] = [];\n @State() formSectionsDraft: any[] = [];\n @State() isNewForm: boolean = true;\n @State() isMostRecentFormVersion: boolean = false;\n\n @State() isError: boolean = false;\n @State() isLoading: boolean = false;\n\n @State() isShowStyleOverrides: boolean = false;\n @State() isStyleSheetOpen: boolean = false;\n @State() isDialogOpen: boolean = false;\n @State() showMenuAtIndex: { sIndex: number; qIndex: number } | null = null;\n @State() editingQuestion: { sIndex: number; qIndex: number } | null = null;\n @State() editingSection: { sIndex: number } | null = null;\n @State() isQuestionEditorOpen: boolean = false;\n @State() isSectionEditorOpen: boolean = false;\n @State() lookupOptionsDataProcessed: any[] = [];\n\n\n @State() dialogAction: (() => void) | null = null;\n @State() dialogMessage: string = 'Are you sure you want to delete this?';\n\n\n\n private sortableInstances: Sortable[] = [];\n private formsBuilderPageId = UdpFormsPageIdEnum.FormBuilderPageId;\n private formTypeOptions: { value: string; label: string }[] = Object.keys(UdpFormsTypeEnum)\n .filter(key => isNaN(Number(key))) // only keep the named keys\n .map(key => ({\n value: String(UdpFormsTypeEnum[key as keyof typeof UdpFormsTypeEnum]), // cast to string\n label: key,\n }));\n\n // ********************************** API CALLS **********************************\n\n async initializeForm() {\n // set default form values\n this.formMetadata.isPrivate = formMetadataDefault.isPrivate;\n this.formMetadata.tenantId = getCurrentTenantId();\n this.formMetadata.type = formMetadataDefault.type;\n this.formMetadata.version = formMetadataDefault.version;\n this.formMetadata.name = formMetadataDefault.name;\n this.formMetadata.description = formMetadataDefault.description;\n this.formMetadata.styleOverrides = styleOverrideDefault;\n\n try {\n this.isLoading = true;\n\n // get lookup options\n const lookupResponse = await makeApiCall('GET', ConfigService.productV1ApiUrl + '/UdpLookup');\n\n if (!lookupResponse) {\n throw new Error(`Error fetching lookup data`);\n }\n\n\n this.lookupOptionsDataProcessed = lookupResponse.map(lookupObj => {\n return { ...lookupObj, value: lookupObj.id, label: lookupObj.name };\n });\n\n // determine if it's to create a new form, view an old form, or create a new version\n if (this.formId && this.version) {\n const formDataResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.version}/describe`);\n const formLatestVersionResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe`);\n\n this.isNewForm = false;\n\n if (!formDataResponse || !formLatestVersionResponse || !formDataResponse.id || !formLatestVersionResponse) {\n throw new Error(`Error fetching form data`);\n }\n\n // view only mode\n if (formDataResponse.id == formLatestVersionResponse.id && formDataResponse.version == formLatestVersionResponse.version) {\n this.isMostRecentFormVersion = true;\n }\n\n // Clone formSections and initialize empty question arrays\n const tempSections = structuredClone(formDataResponse.udpFormUdpFormSection).map(section => ({ ...section, formQuestions: [] }));\n tempSections.forEach(section => {\n if(!section.sectionProperties) {\n section.sectionProperties = {}\n } else {\n section.sectionProperties = JSON.parse(section.sectionProperties)\n }\n })\n\n\n // Map questions into their respective sections\n formDataResponse.formQuestions.forEach(question => {\n const section = tempSections.find(s => s.id === question.formSectionId);\n if (section) {\n const fieldProps = { ...question.fieldProperties };\n\n // Remove items if lookupId exists\n if ('lookupId' in fieldProps && 'items' in fieldProps) {\n delete fieldProps.items;\n }\n\n section.formQuestions.push({\n ...question,\n fieldProperties: fieldProps,\n questionTypeName: this.getQuestionTypeName(question.fieldTypeId),\n isContainsOptionItems: this.getIsContainsOptionItems(question.fieldTypeId),\n icon: this.getIconForQuestion(question.fieldTypeId),\n });\n\n\n }\n });\n\n // Sort questions within each section\n tempSections.forEach(section => {\n section.formQuestions.sort((a, b) => a.questionOrder - b.questionOrder);\n });\n\n // Sort sections\n tempSections.sort((a, b) => a.order - b.order)\n\n\n const { ...metadata } = formDataResponse;\n\n // Merge fetched styleOverrides with defaults\n metadata.styleOverrides = this.deepMerge(styleOverrideDefault, JSON.parse(metadata.styleOverrides) || {});\n\n // Set form metadata and sections\n this.formMetadata = metadata;\n this.formSections = tempSections;\n this.isLoading = false;\n }\n } catch (e) {\n this.isError = true;\n\n this.enqueueSnackbar('Error loading form data', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n async submitForm() {\n if (!this.isValidForm()) {\n return;\n }\n\n this.isLoading = true;\n\n try {\n // Prepare and send form metadata\n const processedFormMetadata = {\n name: this.formMetadata.name,\n description: this.formMetadata.description,\n tenantId: this.formMetadata.tenantId,\n isPrivate: this.formMetadata.isPrivate,\n type: this.formMetadata.type,\n styleOverrides: JSON.stringify(this.formMetadata.styleOverrides),\n id: this.formMetadata.id,\n version: this.formMetadata.version,\n };\n\n\n const formUrl = `${ConfigService.productV1ApiUrl}/UdpForm${this.isMostRecentFormVersion ? '/versions' : ''}`;\n const formResponse = await makeApiCall('POST', formUrl, processedFormMetadata);\n\n const formId = formResponse.id;\n const formVersion = formResponse.version;\n\n if (!formResponse || !formResponse.id || !formResponse.version) {\n throw new Error(`Invalid form response: ${JSON.stringify(formResponse)}`);\n }\n\n // Prepare and send questions in order\n let sectionOrder = 0;\n let questionOrder = 0;\n const questionRequests: Promise<any>[] = [];\n\n for (const [sIndex, section] of this.formSections.entries()) {\n sectionOrder += 1;\n\n const processedSectionData = {\n ...section,\n formId,\n formVersion,\n order: sectionOrder,\n sectionProperties: JSON.stringify(section.sectionProperties),\n name: `section${sectionOrder}`\n };\n\n const sectionResponse = await makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormSection`, processedSectionData);\n\n if (!sectionResponse || !sectionResponse.id) {\n throw new Error(`Invalid section response: ${JSON.stringify(sectionResponse)}`);\n }\n\n const sectionId = sectionResponse.id;\n\n for (const question of section.formQuestions) {\n questionOrder += 1;\n\n const processedQuestionData = {\n ...question,\n formId,\n formVersion,\n section: sIndex + 1,\n questionOrder,\n formSectionId: sectionId,\n name: `question${questionOrder}`,\n };\n\n const questionRequest = makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormQuestion`, processedQuestionData);\n questionRequests.push(questionRequest);\n }\n }\n\n // Wait for all questions to be submitted\n await Promise.all(questionRequests);\n\n this.enqueueSnackbar('Success', {\n variant: 'success',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n if(this.formsBuilderUrlPath) {\n this.history.push(`${this.formsBuilderUrlPath}&udpf_formId=${formId}&udpf_version=${formVersion}`);\n return \n }\n\n this.history.push(`/page/${this.formsBuilderPageId}?udpf_formId=${formId}&udpf_version=${formVersion}`);\n } catch (error) {\n console.error('Form submission error:', error);\n this.enqueueSnackbar('Error saving form', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n // ********************************** STENCIL RELATED **********************************\n\n componentDidLoad() {\n this.initializeSortable();\n }\n\n componentDidUpdate() {\n this.initializeSortable();\n }\n\n componentWillLoad() {\n this.initializeForm();\n }\n\n // @Watch('formSections')\n // onFormSectionsChange(newValue: any[]) {\n // console.log(newValue);\n // }\n\n // @Watch('formMetadata')\n // onFormMetadataChange(newValue) {\n // console.log(newValue);\n // }\n\n @Watch('formId')\n @Watch('version')\n onFormIdOrVersionChange() {\n this.initializeForm();\n }\n\n // ********************************** SORTABLE LOGIC **********************************\n\n private initializeSortable() {\n // sortable only if the form is editable\n if (!(this.isNewForm || this.isMostRecentFormVersion)) {\n return;\n }\n\n this.sortableInstances.forEach(instance => instance.destroy());\n this.sortableInstances = [];\n\n this.formSections.forEach((_, sIndex) => {\n const el = this.hostEl.shadowRoot.querySelector(`#section-${sIndex}`);\n if (el) {\n const sortable = new Sortable(el, {\n animation: 200,\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n draggable: 'udp-forms-builder-question-item',\n handle: '.form-question-drag-handle',\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n direction: 'vertical',\n forceFallback: false,\n dragoverBubble: false,\n swapThreshold: 0.6,\n onEnd: evt => this.handleDragEnd(evt, sIndex),\n });\n this.sortableInstances.push(sortable);\n }\n });\n }\n\n private handleDragEnd(evt: Sortable.SortableEvent, sIndex: number) {\n const oldIndex = evt.oldIndex;\n const newIndex = evt.newIndex;\n if (oldIndex === newIndex || oldIndex == null || newIndex == null) return;\n\n const sectionCopy = structuredClone(this.formSections[sIndex]);\n const [moved] = sectionCopy.formQuestions.splice(oldIndex, 1);\n sectionCopy.formQuestions.splice(newIndex, 0, moved);\n\n // const newFormSections = [...this.formSections];\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections[sIndex] = sectionCopy;\n\n this.formSections = newFormSections;\n }\n\n // ********************************** SIDE SHEET LOGIC **********************************\n\n private toggleStyleSheet = () => {\n this.isStyleSheetOpen = !this.isStyleSheetOpen;\n };\n\n // ********************************** QUESTION HANDLERS **********************************\n private getQuestionTypeName = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.questionTypeName : 'Unknown';\n };\n\n private getIsContainsOptionItems = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.isContainsOptionItems || false : false;\n };\n\n private getIconForQuestion = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.icon : null;\n };\n\n private handleQuestionDelete = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n sectionsCopy[sIndex].formQuestions.splice(qIndex, 1);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionCopy = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n const targetQuestion = this.formSections[sIndex].formQuestions[qIndex];\n\n const newQuestion = {\n ...targetQuestion,\n questionText: (targetQuestion.questionText || '') + ' (Copy)',\n id: uuidv4(),\n };\n\n sectionsCopy[sIndex].formQuestions.splice(qIndex + 1, 0, newQuestion);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionClick = (sIndex: number, qIndex: number) => {\n this.editingQuestion = { sIndex, qIndex };\n this.isQuestionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeQuestionEditor = () => {\n this.isQuestionEditorOpen = false;\n this.editingQuestion = null;\n this.formSectionsDraft = null;\n };\n\n private addQuestionOfType = (defaultQuestionObj, sIndex?: number, qIndex?: number): { sIndex: number; qIndex: number } => {\n const newQuestion = {\n questionTypeName: defaultQuestionObj.questionTypeName,\n fieldTypeId: defaultQuestionObj.fieldTypeId,\n fieldProperties: defaultQuestionObj.defaultFieldProperties,\n helperText: '',\n questionText: '',\n section: sIndex !== undefined ? sIndex + 1 : this.formSections.length > 0 ? this.formSections[this.formSections.length - 1].formQuestions[0].section : 1, // Assign section based on sIndex or last section\n isContainsOptionItems: defaultQuestionObj.isContainsOptionItems,\n icon: defaultQuestionObj.icon,\n required: false,\n form: null,\n isPrivate: true,\n id: uuidv4(),\n };\n\n const newFormSections = deepCloneFormSections(this.formSections); // Use helper to get a deep copy\n\n let actualSIndex = sIndex;\n let actualQIndex = qIndex;\n\n if (sIndex !== undefined && qIndex !== undefined) {\n // Insert at specific index\n if (newFormSections[sIndex].formQuestions) {\n newFormSections[sIndex].formQuestions.splice(qIndex, 0, newQuestion);\n } else {\n // fallback\n const lastSectionIdx = newFormSections.length - 1;\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n } else {\n // Append to the last section or create a new one\n const lastSectionIdx = newFormSections.length - 1;\n if (lastSectionIdx < 0 || newFormSections[lastSectionIdx].formQuestions.length === 0) {\n newFormSections.push({ ...formSectionDefault, formQuestions: [newQuestion] });\n actualSIndex = newFormSections.length - 1;\n actualQIndex = 0;\n } else {\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n }\n\n // this.formSections = newFormSections;\n this.formSectionsDraft = newFormSections;\n if (this.showMenuAtIndex) this.showMenuAtIndex = null;\n\n return { sIndex: actualSIndex, qIndex: actualQIndex };\n };\n\n private deepMerge(target: any, source: any): any {\n const output = { ...target };\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n output[key] = this.deepMerge(target[key] || {}, source[key]);\n } else {\n output[key] = source[key];\n }\n }\n return output;\n }\n\n // ********************************** SECTION HANDLERS **********************************\n\n private handleSectionMoveDown = (sIndex: number) => {\n if (sIndex >= this.formSections.length - 1) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex + 1]] = [sectionsCopy[sIndex + 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionMoveUp = (sIndex: number) => {\n if (sIndex <= 0) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex - 1]] = [sectionsCopy[sIndex - 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionDelete = (sIndex: number) => {\n const newFormSections = [...this.formSections];\n newFormSections.splice(sIndex, 1);\n this.formSections = newFormSections;\n };\n\n private updateFormSectionsWithDraft = () => {\n this.formSections = this.formSectionsDraft;\n this.formSectionsDraft = null;\n };\n\n private hasUnsavedFormSectionsChanges = (): boolean => {\n // return !isEqual(this.formSections, this.formSectionsDraft); // NEED TO INSTALL PACKAGE\n return JSON.stringify(this.formSections) !== JSON.stringify(this.formSectionsDraft); // Breaks on circular refs or non-serializable types (like Dates, Maps, etc.)\n };\n\n private handleSectionEditClick = (sIndex: number) => {\n this.editingSection = { sIndex };\n this.isSectionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeSectionEditor = () => {\n this.isSectionEditorOpen = false;\n this.editingSection = null;\n this.formSectionsDraft = null;\n };\n\n // ********************************** FORM VALIDATION HELPERS **********************************\n\n private isValidForm(): boolean {\n return this.validateFormMetadata() && this.validateFormSections() && this.validateAllQuestions() ;\n }\n\n private validateFormMetadata(): boolean {\n if (!this.formMetadata.name?.trim()) {\n this.enqueueSnackbar('Please enter a form name.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n\n return true;\n }\n\n private validateFormSections(): boolean {\n if (this.formSections.length < 1) {\n this.enqueueSnackbar('Please add at least one section to the form.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n return false;\n }\n\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n\n if (questions.length < 1) {\n const sectionTitle = formSection?.title ? `\"${formSection.title}\"` : `#${sIndex + 1}`;\n this.enqueueSnackbar(`Section ${sectionTitle} must contain at least one question.`, {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n\n return true;\n }\n\n private validateAllQuestions(): boolean {\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n for (let qIndex = 0; qIndex < questions.length; qIndex++) {\n const isValid = this.validateQuestionItem(sIndex, qIndex);\n if (!isValid) {\n this.enqueueSnackbar('Please validate all questions.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n }\n return true;\n }\n\n private validateQuestionItem(sIndex: number, qIndex: number): boolean {\n const questionItem = this.formSections[sIndex].formQuestions[qIndex];\n // Respect template metadata for optional question text (e.g., Paragraph)\n const template = questionsTemplate.find(q => q.fieldTypeId === questionItem.fieldTypeId);\n const requiresQuestionText = !(template && (template as any).questionTextOptional);\n if (requiresQuestionText && !questionItem.questionText) {\n return false;\n }\n\n if (questionItem.isContainsOptionItems) {\n const fieldProps = questionItem.fieldProperties;\n\n // If there's a lookupId, assume it's valid and skip item validation\n if (!fieldProps?.lookupId) {\n // If no items or empty, invalid\n if (!Array.isArray(fieldProps?.items) || fieldProps.items.length === 0) {\n return false;\n }\n\n // Check that each item has both display and value\n const invalidItemExists = fieldProps.items.some(item => !item.display || !item.value);\n\n if (invalidItemExists) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n\n render() {\n if (this.isError) {\n return <div> There is an Error With the Form Builder</div>;\n }\n\n const isEditable = this.isNewForm || this.isMostRecentFormVersion;\n\n return (\n <div>\n {/* FIXME: Review this */}\n <primary-action-header\n title={'UDP Form Builder'}\n actionButtonLabel={isEditable ? (this.isMostRecentFormVersion ? `Create New Version (v.${this.version + 1})` : 'Create New Form') : ''}\n primaryActionClick={isEditable ? () => this.submitForm() : null}\n // HIDE STYLE OVERRIDE IN UI\n defaultActionButtons={\n isEditable ? [{ label: 'Style Overrides', clickHandler: this.toggleStyleSheet, tooltip: 'Style Overrides', visible: false, icon: getIconFromName('settings') }] : []\n }\n tabs={false}\n />\n {/* <udp-side-sheet open={this.isStyleSheetOpen} onUdpSideSheetClose={() => (this.isStyleSheetOpen = false)} title=\"Style Overrides\" position=\"right\" width=\"md\">\n <udp-forms-builder-style-override formMetadata={this.formMetadata} onFormMetadataChange={updated => (this.formMetadata = updated)}></udp-forms-builder-style-override>\n </udp-side-sheet> */}\n\n <udp-side-sheet\n open={this.isQuestionEditorOpen}\n onUdpSideSheetClose={() => this.closeQuestionEditor()}\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeQuestionEditor();\n }}\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n title=\"Edit Question\"\n position=\"right\"\n width=\"md\"\n primaryButtonLabel=\"Update\"\n >\n {this.isQuestionEditorOpen && (\n <div class=\"question-editor-container\">\n <question-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingQuestion.sIndex}\n qIndex={this.editingQuestion.qIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n lookupOptions={this.lookupOptionsDataProcessed}\n formType={this.formMetadata.type}\n isFollowUpFormConfigOn={this.isFollowUpFormConfigOn}\n isCommentingConfigOn={this.isCommentingConfigOn}\n />\n </div>\n )}\n </udp-side-sheet>\n\n <udp-side-sheet\n open={this.isSectionEditorOpen}\n onUdpSideSheetClose={() => this.closeSectionEditor()}\n title=\"Edit Section Fields\"\n position=\"right\"\n width=\"md\"\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n primaryButtonLabel=\"Update\"\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeSectionEditor();\n }}\n >\n {this.isSectionEditorOpen && (\n <div class=\"section-editor-container\">\n <section-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingSection.sIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n />\n </div>\n )}\n </udp-side-sheet>\n <fluent-dialog\n open={this.isDialogOpen}\n message={this.dialogMessage}\n labelOne={'Confirm'}\n labelTwo={'Cancel'}\n actionOne={() => {\n if (typeof this.dialogAction === 'function') {\n this.dialogAction();\n }\n }}\n actionTwo={() => (this.isDialogOpen = false)}\n />\n\n {this.isLoading && <udp-linear-loader />}\n {!this.isLoading && (\n <udp-container maxWidth=\"lg\">\n <div class=\"udp-forms-page\">\n <div class=\"form-details-container\">\n <div class=\"form-details-name-container\">\n {isEditable ? (\n <div class=\"form-details-name-input\">\n <text-field\n label=\"Form Name\"\n value={this.formMetadata.name}\n placeholder=\"Form Name\"\n disabled={!isEditable}\n required={true}\n margin=\"none\"\n maxCharacter={128}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n name: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-field>\n </div>\n ) : (\n <div class=\"form-details-name-display\">\n <unity-typography variant={'h2'}>{this.formMetadata.name + ' (View Only)'}</unity-typography>\n </div>\n )}\n </div>\n\n <div class=\"form-details-description-container\">\n {isEditable ? (\n <div class=\"form-details-details-input\">\n <text-area\n label=\"Form Description\"\n value={this.formMetadata.description}\n placeholder=\"Form Description\"\n disabled={!isEditable}\n required={false}\n margin=\"none\"\n maxCharacter={256}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n description: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-area>\n </div>\n ) : (\n <div class=\"form-details-description-display\">\n <unity-typography>{this.formMetadata.description}</unity-typography>\n </div>\n )}\n </div>\n {this.isFollowUpFormConfigOn && (\n this.isNewForm ? \n <udp-selector\n label=\"Form Type\"\n key=\"udo-form-type-selector\"\n initialValue={this.formMetadata.type}\n options={this.formTypeOptions}\n disabled={!isEditable || !this.isNewForm}\n required={true}\n onChange={(e: CustomEvent) => {\n this.formMetadata = {\n ...this.formMetadata,\n type: e.detail,\n };\n }}\n /> :\n <div class=\"form-details-version-container\">\n <unity-typography>Form Type: {UdpFormsTypeEnum[this.formMetadata.type]}</unity-typography>\n </div>\n )}\n <div class=\"form-details-version-container\">\n <unity-typography>Version: {this.formMetadata.version}</unity-typography>\n </div>\n {this.isPublicFormConfigOn && (\n <div class=\"form-details-private-container\">\n <div class=\"toggle-container\">\n <stencil-toggle\n label=\"Private Form\"\n margin=\"none\"\n disabled={!isEditable}\n checked={this.formMetadata.isPrivate === true}\n labelPosition=\"right\"\n onToggledChange={() => {\n let newIsPrivate = !this.formMetadata.isPrivate;\n this.formMetadata = {\n ...this.formMetadata,\n isPrivate: newIsPrivate,\n };\n }}\n ></stencil-toggle>\n </div>\n </div>\n )}\n </div>\n\n {isEditable && (\n <div class=\"add-question-button-container\">\n <udp-button\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n onClick={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex + 1, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n }}\n >\n Add a Section\n </udp-button>\n </div>\n )}\n\n {this.formSections.map((section, sIndex) => {\n return (\n <div key={sIndex} class=\"form-section\">\n <div class=\"form-section-header\">\n <div class=\"form-section-header-title\">\n <unity-typography variant=\"h6\" color=\"inherit\">\n {section.title}\n </unity-typography>\n </div>\n\n {isEditable && (\n <div class=\"form-section-header-actions\">\n {sIndex > 0 && (\n <stencil-icon-button\n icon={getIconFromName('arrowUp')}\n tooltip=\"Move Section Up\"\n onClick={() => {\n this.handleSectionMoveUp(sIndex);\n }}\n />\n )}\n {sIndex < this.formSections.length - 1 && (\n <stencil-icon-button\n icon={getIconFromName('arrowDown')}\n tooltip=\"Move Section Down\"\n onClick={() => {\n this.handleSectionMoveDown(sIndex);\n }}\n />\n )}\n <stencil-icon-button icon={getIconFromName('edit')} tooltip={`Edit Section Fields`} onClick={() => this.handleSectionEditClick(sIndex)} />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Section\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this section?';\n this.dialogAction = () => {\n this.handleSectionDelete(sIndex);\n this.isDialogOpen = false;\n };\n\n this.isDialogOpen = true;\n }}\n />\n </div>\n )}\n </div>\n\n <div class=\"form-section-questions-container\">\n {(this.isNewForm || this.isMostRecentFormVersion) && this.showMenuAtIndex && this.showMenuAtIndex.sIndex === sIndex && this.showMenuAtIndex.qIndex === 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n this.showMenuAtIndex = { sIndex: newSectionIndex, qIndex: 0 };\n }}\n onAddQuestion={e => {\n const indices = this.showMenuAtIndex\n ? this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex)\n : this.addQuestionOfType(e.detail);\n\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n <div class=\"form-section-questions-draggable-container\" id={`section-${sIndex}`}>\n {section.formQuestions.map((questionItem, qIndex) => {\n return (\n <udp-forms-builder-question-item\n key={questionItem.id}\n iconName={questionItem.icon}\n primaryText={`${questionItem.questionText}`}\n secondaryText={questionItem.helperText ? questionItem.helperText : null}\n avatarBackgroundColor={this.validateQuestionItem(sIndex, qIndex) ? 'info' : 'warning'}\n >\n <stencil-chip slot=\"status-chip\" text=\"Required\" showDelete={false} clickable={false} hidden={!questionItem.required} />\n {isEditable && (\n <div slot=\"drag-and-drop\">\n <div class=\"form-question-drag-handle\">\n <div class=\"drag-wrapper\">\n <stencil-icon-button icon={getIconFromName('draggable')} tooltip=\"Move Question\" noBackground={true} />\n </div>\n </div>\n </div>\n )}\n\n <div slot=\"actions\">\n {isEditable ? (\n <fragment>\n <stencil-icon-button\n icon={getIconFromName('edit')}\n tooltip=\"Edit Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('copy')}\n tooltip=\"Duplicate Question\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionCopy(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Question\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this question?';\n this.dialogAction = () => {\n this.handleQuestionDelete(sIndex, qIndex);\n this.isDialogOpen = false;\n };\n this.isDialogOpen = true;\n }}\n noBackground={true}\n />\n </fragment>\n ) : (\n <stencil-icon-button\n icon={getIconFromName('view')}\n tooltip=\"View Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n )}\n </div>\n </udp-forms-builder-question-item>\n );\n })}\n </div>\n\n {isEditable &&\n !this.showMenuAtIndex && ( // Only show button if no menu is active\n <div class=\"add-question-to-section-button-container\">\n <udp-button\n variant=\"text\"\n onClick={() => {\n this.showMenuAtIndex = { sIndex: sIndex, qIndex: section.formQuestions.length };\n }}\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n >\n Add a Question\n </udp-button>\n </div>\n )}\n\n {isEditable &&\n this.showMenuAtIndex?.sIndex === sIndex &&\n this.showMenuAtIndex?.qIndex === section.formQuestions.length &&\n section.formQuestions.length > 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.splice(sIndex + 1, 0, []);\n this.formSections = newFormSections;\n this.showMenuAtIndex = null;\n }}\n onAddQuestion={e => {\n if (this.showMenuAtIndex) {\n const indices = this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex);\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </udp-container>\n )}\n </div>\n );\n }\n}\n"],"names":["uuidv4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"udp-forms-builder.entry.js","sources":["src/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.css?tag=udp-forms-builder&encapsulation=shadow","src/components/forms/udp-forms/udp-forms-builder/udp-forms-builder.tsx"],"sourcesContent":[":host {\n display: block;\n --udp-form-primary-color: #007bff; /* Example primary color */\n --udp-form-spacing-unit: 16px;\n\n}\n\n/* ################### FORM PAGE ################### */\n.udp-forms-page {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-06, 32px);\n /* background-color: white; */\n padding: var(--spacing-06, 32px);\n padding-bottom: var(--spacing-12);\n}\n\n\n.form-section-questions-container {\n display: flex;\n flex-direction: column;\n}\n\n\n/* ################### FORM METADATA ################### */\n\n\n.form-details-container {\n display: flex;\n flex-direction: column;\n /* align-items: flex-start; */\n /* margin: 0 2rem; */\n /* gap: var(--spacing-05, 24px); */\n padding: var(--spacing-05, 24px);\n background-color: var(--card-background-color, white);\n}\n\n.form-details-version-container {\n margin-bottom: var(--spacing-05)\n}\n\n.udp-form-builder-field-container,\n.udp-forms-builder-item-generic-configs,\n.udp-forms-builder-item-specific-configs {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-04, 16px);\n}\n\n/* ################### SECTIONS ################### */\n.form-section {\n /* background-color: var(--primary-color-alpha-15); */\n /* border: 2px solid var(--primary-color-alpha-50); */\n /* border-radius: 8px; */\n /* padding: var(--spacing-04); */\n}\n\n\n.form-section-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background-color: var(--primary-color-dark, #000);\n color: var(--primary-contrast-text, #FFF);\n padding: var(--spacing-04, 16px) var(--spacing-05, 24px);\n /* margin-bottom: var(--spacing-04); */\n align-items: center;\n}\n\n.add-question-button-container {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.question-editor-container {\n padding: var(--spacing-05, 24px);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-05, 24px);\n}\n\n.add-question-to-section-button-container {\n padding: var(--spacing-02, 8px) 0;\n margin: auto;\n}\n\n.sortable-ghost {\n opacity: 0.5;\n transform: scale(0.98);\n background: #f4f4f4;\n border: 1px dashed #ccc;\n}\n\n.sortable-chosen {\n background: #eef6ff;\n box-shadow: 0 0 4px 2px rgba(51, 153, 255, 0.3);\n}\n\n.form-question-drag-handle {\n transform: rotate(90deg);\n cursor: grab;\n}\n\n.form-question-drag-handle:active {\n cursor: grabbing;\n}\n\n.form-question-drag-handle .drag-wrapper {\n cursor: inherit;\n}\n\n.form-question-drag-handle stencil-icon-button {\n pointer-events: none; /* disables click so cursor applies from parent */\n}\n\n\n","import { Component, h, State, Prop, Watch } from '@stencil/core';\nimport { Guid } from '../utils/types';\nimport { makeApiCall } from '../../../../udp-utilities/api/makeApiCall/makeApiCall';\nimport questionsTemplate from './udp-forms-builder-question-template';\nimport { getIconFromName } from '../../../data-display/icons/iconUtils';\nimport { ConfigService } from '../../../../udp-utilities/api-config';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\nimport Sortable from 'sortablejs';\nimport { Element } from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { styleOverrideDefault, formSectionDefault, formMetadataDefault, deepCloneFormSections } from './forms-builder-utils';\nimport { UdpFormsPageIdEnum, UdpFormsTypeEnum } from '../utils/enums';\nimport { UdpFormMetadata } from '../utils/types';\n\n@Component({\n tag: 'udp-forms-builder',\n styleUrl: 'udp-forms-builder.css',\n shadow: true,\n})\nexport class UdpFormsBuilder {\n @Element() private hostEl: HTMLElement;\n\n @Prop() formId: Guid;\n @Prop() version: number;\n @Prop() enqueueSnackbar: Function;\n @Prop() closeSnackbar: Function;\n @Prop() history: { push: (path: string) => void };\n @Prop() isFollowUpFormConfigOn: boolean = false; // allow form engine to use follow-up forms feature\n @Prop() isPublicFormConfigOn: boolean = false; // allow form engine to use public forms feature\n @Prop() isCommentingConfigOn: boolean = true; // allow form engine to use commenting feature\n @Prop() formsBuilderUrlPath: string = ''; // alternative path for redirect to the form builder page. If not provided, use default path.\n\n\n @State() formMetadata: UdpFormMetadata = formMetadataDefault as UdpFormMetadata;\n @State() formSections: any[] = [];\n @State() formSectionsDraft: any[] = [];\n @State() isNewForm: boolean = true;\n @State() isMostRecentFormVersion: boolean = false;\n\n @State() isError: boolean = false;\n @State() isLoading: boolean = false;\n\n @State() isShowStyleOverrides: boolean = false;\n @State() isStyleSheetOpen: boolean = false;\n @State() isDialogOpen: boolean = false;\n @State() showMenuAtIndex: { sIndex: number; qIndex: number } | null = null;\n @State() editingQuestion: { sIndex: number; qIndex: number } | null = null;\n @State() editingSection: { sIndex: number } | null = null;\n @State() isQuestionEditorOpen: boolean = false;\n @State() isSectionEditorOpen: boolean = false;\n @State() lookupOptionsDataProcessed: any[] = [];\n\n\n @State() dialogAction: (() => void) | null = null;\n @State() dialogMessage: string = 'Are you sure you want to delete this?';\n\n\n\n private sortableInstances: Sortable[] = [];\n private formsBuilderPageId = UdpFormsPageIdEnum.FormBuilderPageId;\n private formTypeOptions: { value: string; label: string }[] = Object.keys(UdpFormsTypeEnum)\n .filter(key => isNaN(Number(key))) // only keep the named keys\n .map(key => ({\n value: String(UdpFormsTypeEnum[key as keyof typeof UdpFormsTypeEnum]), // cast to string\n label: key,\n }));\n\n // ********************************** API CALLS **********************************\n\n async initializeForm() {\n // set default form values\n this.formMetadata.isPrivate = formMetadataDefault.isPrivate;\n this.formMetadata.tenantId = getCurrentTenantId();\n this.formMetadata.type = formMetadataDefault.type;\n this.formMetadata.version = formMetadataDefault.version;\n this.formMetadata.name = formMetadataDefault.name;\n this.formMetadata.description = formMetadataDefault.description;\n this.formMetadata.styleOverrides = styleOverrideDefault;\n\n try {\n this.isLoading = true;\n\n // get lookup options\n const lookupResponse = await makeApiCall('GET', ConfigService.productV1ApiUrl + '/UdpLookup');\n\n if (!lookupResponse) {\n throw new Error(`Error fetching lookup data`);\n }\n\n\n this.lookupOptionsDataProcessed = lookupResponse.map(lookupObj => {\n return { ...lookupObj, value: lookupObj.id, label: lookupObj.name };\n });\n\n // determine if it's to create a new form, view an old form, or create a new version\n if (this.formId && this.version) {\n const formDataResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/${this.version}/describe`);\n const formLatestVersionResponse = await makeApiCall('GET', `${ConfigService.productV1ApiUrl}/UdpForm/${this.formId}/describe`);\n\n this.isNewForm = false;\n\n if (!formDataResponse || !formLatestVersionResponse || !formDataResponse.id || !formLatestVersionResponse) {\n throw new Error(`Error fetching form data`);\n }\n\n // view only mode\n if (formDataResponse.id == formLatestVersionResponse.id && formDataResponse.version == formLatestVersionResponse.version) {\n this.isMostRecentFormVersion = true;\n }\n\n // Clone formSections and initialize empty question arrays\n const tempSections = structuredClone(formDataResponse.udpFormUdpFormSection).map(section => ({ ...section, formQuestions: [] }));\n tempSections.forEach(section => {\n if(!section.sectionProperties) {\n section.sectionProperties = {}\n } else {\n section.sectionProperties = JSON.parse(section.sectionProperties)\n }\n })\n\n\n // Map questions into their respective sections\n formDataResponse.formQuestions.forEach(question => {\n const section = tempSections.find(s => s.id === question.formSectionId);\n if (section) {\n const fieldProps = { ...question.fieldProperties };\n\n // Remove items if lookupId exists\n if ('lookupId' in fieldProps && 'items' in fieldProps) {\n delete fieldProps.items;\n }\n\n section.formQuestions.push({\n ...question,\n fieldProperties: fieldProps,\n questionTypeName: this.getQuestionTypeName(question.fieldTypeId),\n isContainsOptionItems: this.getIsContainsOptionItems(question.fieldTypeId),\n icon: this.getIconForQuestion(question.fieldTypeId),\n });\n\n\n }\n });\n\n // Sort questions within each section\n tempSections.forEach(section => {\n section.formQuestions.sort((a, b) => a.questionOrder - b.questionOrder);\n });\n\n // Sort sections\n tempSections.sort((a, b) => a.order - b.order)\n\n\n const { ...metadata } = formDataResponse;\n\n // Merge fetched styleOverrides with defaults\n metadata.styleOverrides = this.deepMerge(styleOverrideDefault, JSON.parse(metadata.styleOverrides) || {});\n\n // Set form metadata and sections\n this.formMetadata = metadata;\n this.formSections = tempSections;\n this.isLoading = false;\n }\n } catch (e) {\n this.isError = true;\n\n this.enqueueSnackbar('Error loading form data', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n async submitForm() {\n if (!this.isValidForm()) {\n return;\n }\n\n this.isLoading = true;\n\n try {\n // Prepare and send form metadata\n const processedFormMetadata = {\n name: this.formMetadata.name,\n description: this.formMetadata.description,\n tenantId: this.formMetadata.tenantId,\n isPrivate: this.formMetadata.isPrivate,\n type: this.formMetadata.type,\n styleOverrides: JSON.stringify(this.formMetadata.styleOverrides),\n id: this.formMetadata.id,\n version: this.formMetadata.version,\n };\n\n\n const formUrl = `${ConfigService.productV1ApiUrl}/UdpForm${this.isMostRecentFormVersion ? '/versions' : ''}`;\n const formResponse = await makeApiCall('POST', formUrl, processedFormMetadata);\n\n const formId = formResponse.id;\n const formVersion = formResponse.version;\n\n if (!formResponse || !formResponse.id || !formResponse.version) {\n throw new Error(`Invalid form response: ${JSON.stringify(formResponse)}`);\n }\n\n // Prepare and send questions in order\n let sectionOrder = 0;\n let questionOrder = 0;\n const questionRequests: Promise<any>[] = [];\n\n for (const [sIndex, section] of this.formSections.entries()) {\n sectionOrder += 1;\n\n const processedSectionData = {\n ...section,\n formId,\n formVersion,\n order: sectionOrder,\n sectionProperties: JSON.stringify(section.sectionProperties),\n name: `section${sectionOrder}`\n };\n\n const sectionResponse = await makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormSection`, processedSectionData);\n\n if (!sectionResponse || !sectionResponse.id) {\n throw new Error(`Invalid section response: ${JSON.stringify(sectionResponse)}`);\n }\n\n const sectionId = sectionResponse.id;\n\n for (const question of section.formQuestions) {\n questionOrder += 1;\n\n const processedQuestionData = {\n ...question,\n formId,\n formVersion,\n section: sIndex + 1,\n questionOrder,\n formSectionId: sectionId,\n name: `question${questionOrder}`,\n };\n\n const questionRequest = makeApiCall('POST', `${ConfigService.productV1ApiUrl}/UdpFormQuestion`, processedQuestionData);\n questionRequests.push(questionRequest);\n }\n }\n\n // Wait for all questions to be submitted\n await Promise.all(questionRequests);\n\n this.enqueueSnackbar('Success', {\n variant: 'success',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n if(this.formsBuilderUrlPath) {\n this.history.push(`${this.formsBuilderUrlPath}&udpf_formId=${formId}&udpf_version=${formVersion}`);\n return \n }\n\n this.history.push(`/page/${this.formsBuilderPageId}?udpf_formId=${formId}&udpf_version=${formVersion}`);\n } catch (error) {\n console.error('Form submission error:', error);\n this.enqueueSnackbar('Error saving form', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n } finally {\n this.isLoading = false;\n }\n }\n\n // ********************************** STENCIL RELATED **********************************\n\n componentDidLoad() {\n this.initializeSortable();\n }\n\n componentDidUpdate() {\n this.initializeSortable();\n }\n\n componentWillLoad() {\n this.initializeForm();\n }\n\n // @Watch('formSections')\n // onFormSectionsChange(newValue: any[]) {\n // console.log(newValue);\n // }\n\n // @Watch('formMetadata')\n // onFormMetadataChange(newValue) {\n // console.log(newValue);\n // }\n\n @Watch('formId')\n @Watch('version')\n onFormIdOrVersionChange() {\n this.initializeForm();\n }\n\n // ********************************** SORTABLE LOGIC **********************************\n\n private initializeSortable() {\n // sortable only if the form is editable\n if (!(this.isNewForm || this.isMostRecentFormVersion)) {\n return;\n }\n\n this.sortableInstances.forEach(instance => instance.destroy());\n this.sortableInstances = [];\n\n this.formSections.forEach((_, sIndex) => {\n const el = this.hostEl.shadowRoot.querySelector(`#section-${sIndex}`);\n if (el) {\n const sortable = new Sortable(el, {\n animation: 200,\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n draggable: 'udp-forms-builder-question-item',\n handle: '.form-question-drag-handle',\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n direction: 'vertical',\n forceFallback: false,\n dragoverBubble: false,\n swapThreshold: 0.6,\n onEnd: evt => this.handleDragEnd(evt, sIndex),\n });\n this.sortableInstances.push(sortable);\n }\n });\n }\n\n private handleDragEnd(evt: Sortable.SortableEvent, sIndex: number) {\n const oldIndex = evt.oldIndex;\n const newIndex = evt.newIndex;\n if (oldIndex === newIndex || oldIndex == null || newIndex == null) return;\n\n const sectionCopy = structuredClone(this.formSections[sIndex]);\n const [moved] = sectionCopy.formQuestions.splice(oldIndex, 1);\n sectionCopy.formQuestions.splice(newIndex, 0, moved);\n\n // const newFormSections = [...this.formSections];\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections[sIndex] = sectionCopy;\n\n this.formSections = newFormSections;\n }\n\n // ********************************** SIDE SHEET LOGIC **********************************\n\n private toggleStyleSheet = () => {\n this.isStyleSheetOpen = !this.isStyleSheetOpen;\n };\n\n // ********************************** QUESTION HANDLERS **********************************\n private getQuestionTypeName = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.questionTypeName : 'Unknown';\n };\n\n private getIsContainsOptionItems = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.isContainsOptionItems || false : false;\n };\n\n private getIconForQuestion = fieldTypeId => {\n const question = questionsTemplate.find(q => q.fieldTypeId === fieldTypeId);\n return question ? question.icon : null;\n };\n\n private handleQuestionDelete = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n sectionsCopy[sIndex].formQuestions.splice(qIndex, 1);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionCopy = (sIndex: number, qIndex: number) => {\n const sectionsCopy = deepCloneFormSections(this.formSections);\n const targetQuestion = this.formSections[sIndex].formQuestions[qIndex];\n\n const newQuestion = {\n ...targetQuestion,\n questionText: (targetQuestion.questionText || '') + ' (Copy)',\n id: uuidv4(),\n };\n\n sectionsCopy[sIndex].formQuestions.splice(qIndex + 1, 0, newQuestion);\n this.formSections = sectionsCopy;\n };\n\n private handleQuestionClick = (sIndex: number, qIndex: number) => {\n this.editingQuestion = { sIndex, qIndex };\n this.isQuestionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeQuestionEditor = () => {\n this.isQuestionEditorOpen = false;\n this.editingQuestion = null;\n this.formSectionsDraft = null;\n };\n\n private addQuestionOfType = (defaultQuestionObj, sIndex?: number, qIndex?: number): { sIndex: number; qIndex: number } => {\n const newQuestion = {\n questionTypeName: defaultQuestionObj.questionTypeName,\n fieldTypeId: defaultQuestionObj.fieldTypeId,\n fieldProperties: defaultQuestionObj.defaultFieldProperties,\n helperText: '',\n questionText: '',\n section: sIndex !== undefined ? sIndex + 1 : this.formSections.length > 0 ? this.formSections[this.formSections.length - 1].formQuestions[0].section : 1, // Assign section based on sIndex or last section\n isContainsOptionItems: defaultQuestionObj.isContainsOptionItems,\n icon: defaultQuestionObj.icon,\n required: false,\n form: null,\n isPrivate: true,\n id: uuidv4(),\n };\n\n const newFormSections = deepCloneFormSections(this.formSections); // Use helper to get a deep copy\n\n let actualSIndex = sIndex;\n let actualQIndex = qIndex;\n\n if (sIndex !== undefined && qIndex !== undefined) {\n // Insert at specific index\n if (newFormSections[sIndex].formQuestions) {\n newFormSections[sIndex].formQuestions.splice(qIndex, 0, newQuestion);\n } else {\n // fallback\n const lastSectionIdx = newFormSections.length - 1;\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n } else {\n // Append to the last section or create a new one\n const lastSectionIdx = newFormSections.length - 1;\n if (lastSectionIdx < 0 || newFormSections[lastSectionIdx].formQuestions.length === 0) {\n newFormSections.push({ ...formSectionDefault, formQuestions: [newQuestion] });\n actualSIndex = newFormSections.length - 1;\n actualQIndex = 0;\n } else {\n newFormSections[lastSectionIdx].formQuestions.push(newQuestion);\n actualSIndex = lastSectionIdx;\n actualQIndex = newFormSections[lastSectionIdx].formQuestions.length - 1;\n }\n }\n\n // this.formSections = newFormSections;\n this.formSectionsDraft = newFormSections;\n if (this.showMenuAtIndex) this.showMenuAtIndex = null;\n\n return { sIndex: actualSIndex, qIndex: actualQIndex };\n };\n\n private deepMerge(target: any, source: any): any {\n const output = { ...target };\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n output[key] = this.deepMerge(target[key] || {}, source[key]);\n } else {\n output[key] = source[key];\n }\n }\n return output;\n }\n\n // ********************************** SECTION HANDLERS **********************************\n\n private handleSectionMoveDown = (sIndex: number) => {\n if (sIndex >= this.formSections.length - 1) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex + 1]] = [sectionsCopy[sIndex + 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionMoveUp = (sIndex: number) => {\n if (sIndex <= 0) return;\n\n const sectionsCopy = [...this.formSections];\n [sectionsCopy[sIndex], sectionsCopy[sIndex - 1]] = [sectionsCopy[sIndex - 1], sectionsCopy[sIndex]];\n this.formSections = sectionsCopy;\n };\n\n private handleSectionDelete = (sIndex: number) => {\n const newFormSections = [...this.formSections];\n newFormSections.splice(sIndex, 1);\n this.formSections = newFormSections;\n };\n\n private updateFormSectionsWithDraft = () => {\n this.formSections = this.formSectionsDraft;\n this.formSectionsDraft = null;\n };\n\n private hasUnsavedFormSectionsChanges = (): boolean => {\n // return !isEqual(this.formSections, this.formSectionsDraft); // NEED TO INSTALL PACKAGE\n return JSON.stringify(this.formSections) !== JSON.stringify(this.formSectionsDraft); // Breaks on circular refs or non-serializable types (like Dates, Maps, etc.)\n };\n\n private handleSectionEditClick = (sIndex: number) => {\n this.editingSection = { sIndex };\n this.isSectionEditorOpen = true;\n this.formSectionsDraft = deepCloneFormSections(this.formSections);\n };\n\n private closeSectionEditor = () => {\n this.isSectionEditorOpen = false;\n this.editingSection = null;\n this.formSectionsDraft = null;\n };\n\n // ********************************** FORM VALIDATION HELPERS **********************************\n\n private isValidForm(): boolean {\n return this.validateFormMetadata() && this.validateFormSections() && this.validateAllQuestions() ;\n }\n\n private validateFormMetadata(): boolean {\n if (!this.formMetadata.name?.trim()) {\n this.enqueueSnackbar('Please enter a form name.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n\n return true;\n }\n\n private validateFormSections(): boolean {\n if (this.formSections.length < 1) {\n this.enqueueSnackbar('Please add at least one section to the form.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n\n return false;\n }\n\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n\n if (questions.length < 1) {\n const sectionTitle = formSection?.title ? `\"${formSection.title}\"` : `#${sIndex + 1}`;\n this.enqueueSnackbar(`Section ${sectionTitle} must contain at least one question.`, {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n\n return true;\n }\n\n private validateAllQuestions(): boolean {\n for (let sIndex = 0; sIndex < this.formSections.length; sIndex++) {\n const formSection = this.formSections[sIndex];\n const questions = formSection?.formQuestions || [];\n for (let qIndex = 0; qIndex < questions.length; qIndex++) {\n const isValid = this.validateQuestionItem(sIndex, qIndex);\n if (!isValid) {\n this.enqueueSnackbar('Please validate all questions.', {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' },\n });\n return false;\n }\n }\n }\n return true;\n }\n\n private validateQuestionItem(sIndex: number, qIndex: number): boolean {\n const questionItem = this.formSections[sIndex].formQuestions[qIndex];\n // Respect template metadata for optional question text (e.g., Paragraph)\n const template = questionsTemplate.find(q => q.fieldTypeId === questionItem.fieldTypeId);\n const requiresQuestionText = !(template && (template as any).questionTextOptional);\n if (requiresQuestionText && !questionItem.questionText) {\n return false;\n }\n\n if (questionItem.isContainsOptionItems) {\n const fieldProps = questionItem.fieldProperties;\n\n // If there's a lookupId, assume it's valid and skip item validation\n if (!fieldProps?.lookupId) {\n // If no items or empty, invalid\n if (!Array.isArray(fieldProps?.items) || fieldProps.items.length === 0) {\n return false;\n }\n\n // Check that each item has both display and value\n const invalidItemExists = fieldProps.items.some(item => !item.display || !item.value);\n\n if (invalidItemExists) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n\n render() {\n if (this.isError) {\n return <div> There is an Error With the Form Builder</div>;\n }\n\n const isEditable = this.isNewForm || this.isMostRecentFormVersion;\n\n return (\n <div>\n {/* FIXME: Review this */}\n <primary-action-header\n title={'UDP Form Builder'}\n actionButtonLabel={isEditable ? (this.isMostRecentFormVersion ? `Create New Version (v.${this.version + 1})` : 'Create New Form') : ''}\n primaryActionClick={isEditable ? () => this.submitForm() : null}\n // HIDE STYLE OVERRIDE IN UI\n defaultActionButtons={\n isEditable ? [{ label: 'Style Overrides', clickHandler: this.toggleStyleSheet, tooltip: 'Style Overrides', visible: false, icon: getIconFromName('settings') }] : []\n }\n tabs={false}\n />\n {/* <udp-side-sheet open={this.isStyleSheetOpen} onUdpSideSheetClose={() => (this.isStyleSheetOpen = false)} title=\"Style Overrides\" position=\"right\" width=\"md\">\n <udp-forms-builder-style-override formMetadata={this.formMetadata} onFormMetadataChange={updated => (this.formMetadata = updated)}></udp-forms-builder-style-override>\n </udp-side-sheet> */}\n\n <udp-side-sheet\n open={this.isQuestionEditorOpen}\n onUdpSideSheetClose={() => this.closeQuestionEditor()}\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeQuestionEditor();\n }}\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n title=\"Edit Question\"\n position=\"right\"\n width=\"md\"\n primaryButtonLabel=\"Update\"\n >\n {this.isQuestionEditorOpen && (\n <div class=\"question-editor-container\">\n <question-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingQuestion.sIndex}\n qIndex={this.editingQuestion.qIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n lookupOptions={this.lookupOptionsDataProcessed}\n formType={this.formMetadata.type}\n isFollowUpFormConfigOn={this.isFollowUpFormConfigOn}\n isCommentingConfigOn={this.isCommentingConfigOn}\n />\n </div>\n )}\n </udp-side-sheet>\n\n <udp-side-sheet\n open={this.isSectionEditorOpen}\n onUdpSideSheetClose={() => this.closeSectionEditor()}\n title=\"Edit Section Fields\"\n position=\"right\"\n width=\"md\"\n primaryButtonDisabled={!this.hasUnsavedFormSectionsChanges()}\n primaryButtonLabel=\"Update\"\n onUdpPrimaryButtonClick={() => {\n // don't do anything if no changes are made.\n // it'll close the side sheet without this\n if (!this.hasUnsavedFormSectionsChanges()) {\n return;\n }\n this.updateFormSectionsWithDraft();\n this.closeSectionEditor();\n }}\n >\n {this.isSectionEditorOpen && (\n <div class=\"section-editor-container\">\n <section-configs-renderer\n formSectionsDraft={this.formSectionsDraft}\n sIndex={this.editingSection.sIndex}\n isViewOnly={!isEditable}\n onFormSectionsDraftChange={updated => (this.formSectionsDraft = updated)}\n />\n </div>\n )}\n </udp-side-sheet>\n <fluent-dialog\n open={this.isDialogOpen}\n message={this.dialogMessage}\n labelOne={'Confirm'}\n labelTwo={'Cancel'}\n actionOne={() => {\n if (typeof this.dialogAction === 'function') {\n this.dialogAction();\n }\n }}\n actionTwo={() => (this.isDialogOpen = false)}\n />\n\n {this.isLoading && <udp-linear-loader />}\n {!this.isLoading && (\n <udp-container maxWidth=\"lg\">\n <div class=\"udp-forms-page\">\n <div class=\"form-details-container\">\n <div class=\"form-details-name-container\">\n {isEditable ? (\n <div class=\"form-details-name-input\">\n <text-field\n label=\"Form Name\"\n value={this.formMetadata.name}\n placeholder=\"Form Name\"\n disabled={!isEditable}\n required={true}\n margin=\"none\"\n maxCharacter={128}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n name: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-field>\n </div>\n ) : (\n <div class=\"form-details-name-display\">\n <unity-typography variant={'h2'}>{this.formMetadata.name + ' (View Only)'}</unity-typography>\n </div>\n )}\n </div>\n\n <div class=\"form-details-description-container\">\n {isEditable ? (\n <div class=\"form-details-details-input\">\n <text-area\n label=\"Form Description\"\n value={this.formMetadata.description}\n placeholder=\"Form Description\"\n disabled={!isEditable}\n required={false}\n margin=\"none\"\n maxCharacter={256}\n onInput={e => {\n this.formMetadata = {\n ...this.formMetadata,\n description: (e.target as HTMLInputElement).value,\n };\n }}\n ></text-area>\n </div>\n ) : (\n <div class=\"form-details-description-display\">\n <unity-typography>{this.formMetadata.description}</unity-typography>\n </div>\n )}\n </div>\n {this.isFollowUpFormConfigOn && (\n this.isNewForm ? \n <udp-selector\n label=\"Form Type\"\n key=\"udo-form-type-selector\"\n initialValue={this.formMetadata.type}\n options={this.formTypeOptions}\n disabled={!isEditable || !this.isNewForm}\n required={true}\n onChange={(e: CustomEvent) => {\n this.formMetadata = {\n ...this.formMetadata,\n type: e.detail,\n };\n }}\n /> :\n <div class=\"form-details-version-container\">\n <unity-typography>Form Type: {UdpFormsTypeEnum[this.formMetadata.type]}</unity-typography>\n </div>\n )}\n <div class=\"form-details-version-container\">\n <unity-typography>Version: {this.formMetadata.version}</unity-typography>\n </div>\n {this.isPublicFormConfigOn && (\n <div class=\"form-details-private-container\">\n <div class=\"toggle-container\">\n <stencil-toggle\n label=\"Private Form\"\n margin=\"none\"\n disabled={!isEditable}\n checked={this.formMetadata.isPrivate === true}\n labelPosition=\"right\"\n onToggledChange={() => {\n let newIsPrivate = !this.formMetadata.isPrivate;\n this.formMetadata = {\n ...this.formMetadata,\n isPrivate: newIsPrivate,\n };\n }}\n ></stencil-toggle>\n </div>\n </div>\n )}\n </div>\n\n {isEditable && (\n <div class=\"add-question-button-container\">\n <udp-button\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n onClick={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex + 1, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n }}\n >\n Add a Section\n </udp-button>\n </div>\n )}\n\n {this.formSections.map((section, sIndex) => {\n return (\n <div key={sIndex} class=\"form-section\">\n <div class=\"form-section-header\">\n <div class=\"form-section-header-title\">\n <unity-typography variant=\"h6\" color=\"inherit\">\n {section.title}\n </unity-typography>\n </div>\n\n {isEditable && (\n <div class=\"form-section-header-actions\">\n {sIndex > 0 && (\n <stencil-icon-button\n icon={getIconFromName('arrowUp')}\n tooltip=\"Move Section Up\"\n onClick={() => {\n this.handleSectionMoveUp(sIndex);\n }}\n />\n )}\n {sIndex < this.formSections.length - 1 && (\n <stencil-icon-button\n icon={getIconFromName('arrowDown')}\n tooltip=\"Move Section Down\"\n onClick={() => {\n this.handleSectionMoveDown(sIndex);\n }}\n />\n )}\n <stencil-icon-button icon={getIconFromName('edit')} tooltip={`Edit Section Fields`} onClick={() => this.handleSectionEditClick(sIndex)} />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Section\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this section?';\n this.dialogAction = () => {\n this.handleSectionDelete(sIndex);\n this.isDialogOpen = false;\n };\n\n this.isDialogOpen = true;\n }}\n />\n </div>\n )}\n </div>\n\n <div class=\"form-section-questions-container\">\n {(this.isNewForm || this.isMostRecentFormVersion) && this.showMenuAtIndex && this.showMenuAtIndex.sIndex === sIndex && this.showMenuAtIndex.qIndex === 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newSectionIndex = this.formSections.length;\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.push({ ...formSectionDefault, order: newSectionIndex, title: `Section ${newSectionIndex + 1}` });\n this.formSections = newFormSections;\n this.showMenuAtIndex = { sIndex: newSectionIndex, qIndex: 0 };\n }}\n onAddQuestion={e => {\n const indices = this.showMenuAtIndex\n ? this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex)\n : this.addQuestionOfType(e.detail);\n\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n <div class=\"form-section-questions-draggable-container\" id={`section-${sIndex}`}>\n {section.formQuestions.map((questionItem, qIndex) => {\n return (\n <udp-forms-builder-question-item\n key={questionItem.id}\n iconName={questionItem.icon}\n primaryText={`${questionItem.questionText}`}\n secondaryText={questionItem.helperText ? questionItem.helperText : null}\n avatarBackgroundColor={this.validateQuestionItem(sIndex, qIndex) ? 'info' : 'warning'}\n >\n <stencil-chip slot=\"status-chip\" text=\"Required\" showDelete={false} clickable={false} hidden={!questionItem.required} />\n {isEditable && (\n <div slot=\"drag-and-drop\">\n <div class=\"form-question-drag-handle\">\n <div class=\"drag-wrapper\">\n <stencil-icon-button icon={getIconFromName('draggable')} tooltip=\"Move Question\" noBackground={true} />\n </div>\n </div>\n </div>\n )}\n\n <div slot=\"actions\">\n {isEditable ? (\n <fragment>\n <stencil-icon-button\n icon={getIconFromName('edit')}\n tooltip=\"Edit Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('copy')}\n tooltip=\"Duplicate Question\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionCopy(sIndex, qIndex);\n }}\n noBackground={true}\n />\n <stencil-icon-button\n icon={getIconFromName('trashCan')}\n tooltip=\"Delete Question\"\n onClick={e => {\n e.stopPropagation();\n this.dialogMessage = 'Are you sure you want to delete this question?';\n this.dialogAction = () => {\n this.handleQuestionDelete(sIndex, qIndex);\n this.isDialogOpen = false;\n };\n this.isDialogOpen = true;\n }}\n noBackground={true}\n />\n </fragment>\n ) : (\n <stencil-icon-button\n icon={getIconFromName('view')}\n tooltip=\"View Question Details\"\n onClick={e => {\n e.stopPropagation();\n this.handleQuestionClick(sIndex, qIndex);\n }}\n noBackground={true}\n />\n )}\n </div>\n </udp-forms-builder-question-item>\n );\n })}\n </div>\n\n {isEditable &&\n !this.showMenuAtIndex && ( // Only show button if no menu is active\n <div class=\"add-question-to-section-button-container\">\n <udp-button\n variant=\"text\"\n onClick={() => {\n this.showMenuAtIndex = { sIndex: sIndex, qIndex: section.formQuestions.length };\n }}\n startIcon={<udp-icon iconName={'add'} color={'inherit'} />}\n >\n Add a Question\n </udp-button>\n </div>\n )}\n\n {isEditable &&\n this.showMenuAtIndex?.sIndex === sIndex &&\n this.showMenuAtIndex?.qIndex === section.formQuestions.length &&\n section.formQuestions.length > 0 && (\n <udp-forms-builder-menu\n isVisible={true}\n questionsTemplate={questionsTemplate}\n onAddSection={() => {\n const newFormSections = deepCloneFormSections(this.formSections);\n newFormSections.splice(sIndex + 1, 0, []);\n this.formSections = newFormSections;\n this.showMenuAtIndex = null;\n }}\n onAddQuestion={e => {\n if (this.showMenuAtIndex) {\n const indices = this.addQuestionOfType(e.detail, this.showMenuAtIndex.sIndex, this.showMenuAtIndex.qIndex);\n this.editingQuestion = { ...indices };\n this.isQuestionEditorOpen = true;\n }\n }}\n onCancelClick={() => (this.showMenuAtIndex = null)}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </udp-container>\n )}\n </div>\n );\n }\n}\n"],"names":["uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAM,kBAAkB,GAAG,qnDAAqnD;;;;;;;;;;;;;;MCmBnoD,eAAe,GAAA,MAAA;AAL5B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAaU,QAAA,IAAA,CAAA,sBAAsB,GAAY,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,oBAAoB,GAAY,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,oBAAoB,GAAY,IAAI,CAAC;AACrC,QAAA,IAAA,CAAA,mBAAmB,GAAW,EAAE,CAAC;AAGhC,QAAA,IAAY,CAAA,YAAA,GAAoB,mBAAsC;AACtE,QAAA,IAAY,CAAA,YAAA,GAAU,EAAE;AACxB,QAAA,IAAiB,CAAA,iBAAA,GAAU,EAAE;AAC7B,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI;AACzB,QAAA,IAAuB,CAAA,uBAAA,GAAY,KAAK;AAExC,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK;AACxB,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK;AAE1B,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK;AACrC,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK;AACjC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;AAC7B,QAAA,IAAe,CAAA,eAAA,GAA8C,IAAI;AACjE,QAAA,IAAe,CAAA,eAAA,GAA8C,IAAI;AACjE,QAAA,IAAc,CAAA,cAAA,GAA8B,IAAI;AAChD,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK;AACrC,QAAA,IAAmB,CAAA,mBAAA,GAAY,KAAK;AACpC,QAAA,IAA0B,CAAA,0BAAA,GAAU,EAAE;AAGtC,QAAA,IAAY,CAAA,YAAA,GAAyB,IAAI;AACzC,QAAA,IAAa,CAAA,aAAA,GAAW,uCAAuC;AAIhE,QAAA,IAAiB,CAAA,iBAAA,GAAe,EAAE;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,kBAAkB,CAAC,iBAAiB;QACzD,IAAA,CAAA,eAAe,GAAuC,MAAM,CAAC,IAAI,CAAC,gBAAgB;AACvF,aAAA,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,aAAA,GAAG,CAAC,GAAG,KAAK;YACX,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAoC,CAAC,CAAC;AACrE,YAAA,KAAK,EAAE,GAAG;AACX,SAAA,CAAC,CAAC;;AAiSG,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;AAChD,SAAC;;AAGO,QAAA,IAAmB,CAAA,mBAAA,GAAG,WAAW,IAAG;AAC1C,YAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC;YAC3E,OAAO,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,GAAG,SAAS;AACzD,SAAC;AAEO,QAAA,IAAwB,CAAA,wBAAA,GAAG,WAAW,IAAG;AAC/C,YAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC;AAC3E,YAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,qBAAqB,IAAI,KAAK,GAAG,KAAK;AACnE,SAAC;AAEO,QAAA,IAAkB,CAAA,kBAAA,GAAG,WAAW,IAAG;AACzC,YAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC;YAC3E,OAAO,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI;AACxC,SAAC;QAEO,IAAA,CAAA,oBAAoB,GAAG,CAAC,MAAc,EAAE,MAAc,KAAI;YAChE,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7D,YAAA,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAClC,SAAC;QAEO,IAAA,CAAA,kBAAkB,GAAG,CAAC,MAAc,EAAE,MAAc,KAAI;YAC9D,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7D,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;AAEtE,YAAA,MAAM,WAAW,mCACZ,cAAc,CAAA,EAAA,EACjB,YAAY,EAAE,CAAC,cAAc,CAAC,YAAY,IAAI,EAAE,IAAI,SAAS,EAC7D,EAAE,EAAEA,EAAM,EAAE,EAAA,CACb;AAED,YAAA,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AACrE,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAClC,SAAC;QAEO,IAAA,CAAA,mBAAmB,GAAG,CAAC,MAAc,EAAE,MAAc,KAAI;YAC/D,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;YAChC,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AACnE,SAAC;AAEO,QAAA,IAAmB,CAAA,mBAAA,GAAG,MAAK;AACjC,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC/B,SAAC;QAEO,IAAiB,CAAA,iBAAA,GAAG,CAAC,kBAAkB,EAAE,MAAe,EAAE,MAAe,KAAwC;AACvH,YAAA,MAAM,WAAW,GAAG;gBAClB,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;gBACrD,WAAW,EAAE,kBAAkB,CAAC,WAAW;gBAC3C,eAAe,EAAE,kBAAkB,CAAC,sBAAsB;AAC1D,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;gBACxJ,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB;gBAC/D,IAAI,EAAE,kBAAkB,CAAC,IAAI;AAC7B,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,SAAS,EAAE,IAAI;gBACf,EAAE,EAAEA,EAAM,EAAE;aACb;YAED,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjE,IAAI,YAAY,GAAG,MAAM;YACzB,IAAI,YAAY,GAAG,MAAM;YAEzB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;;AAEhD,gBAAA,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE;AACzC,oBAAA,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC;;qBAC/D;;AAEL,oBAAA,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;oBACjD,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC/D,YAAY,GAAG,cAAc;oBAC7B,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;;;iBAEpE;;AAEL,gBAAA,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;AACjD,gBAAA,IAAI,cAAc,GAAG,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;oBACpF,eAAe,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,kBAAkB,CAAA,EAAA,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,EAAA,CAAA,CAAG;AAC7E,oBAAA,YAAY,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;oBACzC,YAAY,GAAG,CAAC;;qBACX;oBACL,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC/D,YAAY,GAAG,cAAc;oBAC7B,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;;;;AAK3E,YAAA,IAAI,CAAC,iBAAiB,GAAG,eAAe;YACxC,IAAI,IAAI,CAAC,eAAe;AAAE,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAErD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;AACvD,SAAC;;AAgBO,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,MAAc,KAAI;YACjD,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE;YAE5C,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3C,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACnG,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAClC,SAAC;AAEO,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,MAAc,KAAI;YAC/C,IAAI,MAAM,IAAI,CAAC;gBAAE;YAEjB,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3C,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACnG,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAClC,SAAC;AAEO,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,MAAc,KAAI;YAC/C,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9C,YAAA,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe;AACrC,SAAC;AAEO,QAAA,IAA2B,CAAA,2BAAA,GAAG,MAAK;AACzC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB;AAC1C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC/B,SAAC;AAEO,QAAA,IAA6B,CAAA,6BAAA,GAAG,MAAc;;AAEpD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACtF,SAAC;AAEO,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,MAAc,KAAI;AAClD,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,MAAM,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AACnE,SAAC;AAEO,QAAA,IAAkB,CAAA,kBAAA,GAAG,MAAK;AAChC,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC/B,SAAC;AA6fF;;AA37BC,IAAA,MAAM,cAAc,GAAA;;QAElB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS;AAC3D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,kBAAkB,EAAE;QACjD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI;QACjD,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO;QACvD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI;QACjD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW;AAC/D,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,oBAAoB;AAEvD,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAGrB,YAAA,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC;YAE7F,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;;YAI/C,IAAI,CAAC,0BAA0B,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,IAAG;gBAC/D,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,SAAS,CAAA,EAAA,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAG,CAAA;AACtE,aAAC,CAAC;;YAGF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,eAAe,CAAY,SAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAW,SAAA,CAAA,CAAC;AACrI,gBAAA,MAAM,yBAAyB,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAA,EAAG,aAAa,CAAC,eAAe,CAAY,SAAA,EAAA,IAAI,CAAC,MAAM,CAAA,SAAA,CAAW,CAAC;AAE9H,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,gBAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,yBAAyB,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE;AACzG,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;;;AAI7C,gBAAA,IAAI,gBAAgB,CAAC,EAAE,IAAI,yBAAyB,CAAC,EAAE,IAAI,gBAAgB,CAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE;AACxH,oBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;;;AAIrC,gBAAA,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,OAAO,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,OAAO,CAAA,EAAA,EAAE,aAAa,EAAE,EAAE,EAAG,CAAA,CAAA,CAAC;AAChI,gBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,IAAG;AAC5B,oBAAA,IAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC5B,wBAAA,OAAO,CAAC,iBAAiB,GAAG,EAAE;;yBACzB;wBACL,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;;AAEvE,iBAAC,CAAC;;AAIF,gBAAA,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,IAAG;AAChD,oBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,aAAa,CAAC;oBACvE,IAAI,OAAO,EAAE;AACX,wBAAA,MAAM,UAAU,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAQ,CAAC,eAAe,CAAE;;wBAGlD,IAAI,UAAU,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,EAAE;4BACrD,OAAO,UAAU,CAAC,KAAK;;wBAGzB,OAAO,CAAC,aAAa,CAAC,IAAI,iCACrB,QAAQ,CAAA,EAAA,EACX,eAAe,EAAE,UAAU,EAC3B,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAChE,qBAAqB,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC1E,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,IACnD;;AAIN,iBAAC,CAAC;;AAGF,gBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,IAAG;oBAC7B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;AACzE,iBAAC,CAAC;;AAGF,gBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBAG9C,MAAW,QAAQ,GAAK,MAAA,CAAA,gBAAgB,EAAlC,EAAe,CAAmB;;gBAGxC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;;AAGzG,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;QAExB,OAAO,CAAC,EAAE;AACV,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAEnB,YAAA,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE;AAC9C,gBAAA,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,aAAA,CAAC;;gBACM;AACR,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;AAI1B,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB;;AAGF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,IAAI;;AAEF,YAAA,MAAM,qBAAqB,GAAG;AAC5B,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;AAC1C,gBAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;AACpC,gBAAA,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;AACtC,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;gBAC5B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;AAChE,gBAAA,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;AACxB,gBAAA,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;aACnC;AAGD,YAAA,MAAM,OAAO,GAAG,CAAA,EAAG,aAAa,CAAC,eAAe,WAAW,IAAI,CAAC,uBAAuB,GAAG,WAAW,GAAG,EAAE,EAAE;YAC5G,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC;AAE9E,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE;AAC9B,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO;AAExC,YAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC9D,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAE,CAAA,CAAC;;;YAI3E,IAAI,YAAY,GAAG,CAAC;YACpB,IAAI,aAAa,GAAG,CAAC;YACrB,MAAM,gBAAgB,GAAmB,EAAE;AAE3C,YAAA,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;gBAC3D,YAAY,IAAI,CAAC;AAEjB,gBAAA,MAAM,oBAAoB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACrB,OAAO,CAAA,EAAA,EACV,MAAM;oBACN,WAAW,EACX,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAC5D,IAAI,EAAE,UAAU,YAAY,CAAA,CAAE,EAAA,CAC/B;AAED,gBAAA,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAG,EAAA,aAAa,CAAC,eAAe,CAAA,eAAA,CAAiB,EAAE,oBAAoB,CAAC;gBAE1H,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE;AAC3C,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAA,CAAC;;AAGjF,gBAAA,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE;AAEpC,gBAAA,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE;oBAC5C,aAAa,IAAI,CAAC;AAElB,oBAAA,MAAM,qBAAqB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACtB,QAAQ,CAAA,EAAA,EACX,MAAM;wBACN,WAAW,EACX,OAAO,EAAE,MAAM,GAAG,CAAC,EACnB,aAAa,EACb,aAAa,EAAE,SAAS,EACxB,IAAI,EAAE,CAAA,QAAA,EAAW,aAAa,CAAE,CAAA,GACjC;AAED,oBAAA,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,CAAA,EAAG,aAAa,CAAC,eAAe,CAAA,gBAAA,CAAkB,EAAE,qBAAqB,CAAC;AACtH,oBAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;;;;AAK1C,YAAA,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAEnC,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;AAC9B,gBAAA,OAAO,EAAE,SAAS;gBAClB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,aAAA,CAAC;AAEF,YAAA,IAAG,IAAI,CAAC,mBAAmB,EAAE;AAC3B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,mBAAmB,gBAAgB,MAAM,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAC;gBAClG;;AAGF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,kBAAkB,gBAAgB,MAAM,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAC;;QACvG,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE;AACxC,gBAAA,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,aAAA,CAAC;;gBACM;AACR,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;;IAM1B,gBAAgB,GAAA;QACd,IAAI,CAAC,kBAAkB,EAAE;;IAG3B,kBAAkB,GAAA;QAChB,IAAI,CAAC,kBAAkB,EAAE;;IAG3B,iBAAiB,GAAA;QACf,IAAI,CAAC,cAAc,EAAE;;;;;;;;;;IAevB,uBAAuB,GAAA;QACrB,IAAI,CAAC,cAAc,EAAE;;;IAKf,kBAAkB,GAAA;;QAExB,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE;YACrD;;AAGF,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC9D,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAE3B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAI;AACtC,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA,SAAA,EAAY,MAAM,CAAA,CAAE,CAAC;YACrE,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;AAChC,oBAAA,SAAS,EAAE,GAAG;AACd,oBAAA,MAAM,EAAE,+BAA+B;AACvC,oBAAA,SAAS,EAAE,iCAAiC;AAC5C,oBAAA,MAAM,EAAE,4BAA4B;AACpC,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,WAAW,EAAE,iBAAiB;AAC9B,oBAAA,SAAS,EAAE,UAAU;AACrB,oBAAA,aAAa,EAAE,KAAK;AACpB,oBAAA,cAAc,EAAE,KAAK;AACrB,oBAAA,aAAa,EAAE,GAAG;AAClB,oBAAA,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;AAC9C,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAEzC,SAAC,CAAC;;IAGI,aAAa,CAAC,GAA2B,EAAE,MAAc,EAAA;AAC/D,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC7B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;QAC7B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI;YAAE;QAEnE,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC;;QAGpD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAChE,QAAA,eAAe,CAAC,MAAM,CAAC,GAAG,WAAW;AAErC,QAAA,IAAI,CAAC,YAAY,GAAG,eAAe;;IA8G7B,SAAS,CAAC,MAAW,EAAE,MAAW,EAAA;QACxC,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,MAAM,CAAE;AAC5B,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACjF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;iBACvD;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;;;AAG7B,QAAA,OAAO,MAAM;;;IAmDP,WAAW,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE;;IAG1F,oBAAoB,GAAA;;AAC3B,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAI,EAAE,CAAA,EAAE;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,2BAA2B,EAAE;AAChD,gBAAA,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,aAAA,CAAC;AACD,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;IAGL,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,CAAC,8CAA8C,EAAE;AACnE,gBAAA,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,aAAA,CAAC;AAEF,YAAA,OAAO,KAAK;;AAGd,QAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC7C,MAAM,SAAS,GAAG,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,MAAA,GAAA,MAAA,GAAA,WAAW,CAAE,aAAa,KAAI,EAAE;AAElD,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,gBAAA,MAAM,YAAY,GAAG,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,KAAK,IAAG,CAAA,CAAA,EAAI,WAAW,CAAC,KAAK,CAAG,CAAA,CAAA,GAAG,CAAA,CAAA,EAAI,MAAM,GAAG,CAAC,EAAE;AACrF,gBAAA,IAAI,CAAC,eAAe,CAAC,CAAW,QAAA,EAAA,YAAY,sCAAsC,EAAE;AAClF,oBAAA,OAAO,EAAE,OAAO;oBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,iBAAA,CAAC;AACF,gBAAA,OAAO,KAAK;;;AAIhB,QAAA,OAAO,IAAI;;IAGL,oBAAoB,GAAA;AAC1B,QAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC7C,MAAM,SAAS,GAAG,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,MAAA,GAAA,MAAA,GAAA,WAAW,CAAE,aAAa,KAAI,EAAE;AAClD,YAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACxD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;gBACzD,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,CAAC,eAAe,CAAC,gCAAgC,EAAE;AACrD,wBAAA,OAAO,EAAE,OAAO;wBAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxD,qBAAA,CAAC;AACF,oBAAA,OAAO,KAAK;;;;AAIlB,QAAA,OAAO,IAAI;;IAGL,oBAAoB,CAAC,MAAc,EAAE,MAAc,EAAA;AACzD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;;AAEpE,QAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,CAAC;QACxF,MAAM,oBAAoB,GAAG,EAAE,QAAQ,IAAK,QAAgB,CAAC,oBAAoB,CAAC;AAClF,QAAA,IAAI,oBAAoB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AACtD,YAAA,OAAO,KAAK;;AAGd,QAAA,IAAI,YAAY,CAAC,qBAAqB,EAAE;AACtC,YAAA,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe;;YAG/C,IAAI,EAAC,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,MAAA,GAAA,MAAA,GAAA,UAAU,CAAE,QAAQ,CAAA,EAAE;;AAEzB,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtE,oBAAA,OAAO,KAAK;;;gBAId,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAErF,IAAI,iBAAiB,EAAE;AACrB,oBAAA,OAAO,KAAK;;;;AAKlB,QAAA,OAAO,IAAI;;IAIb,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,0DAAmD;;QAG5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB;AAEjE,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,IAAA,EAEE,CACE,CAAA,uBAAA,EAAA,EAAA,KAAK,EAAE,kBAAkB,EACzB,iBAAiB,EAAE,UAAU,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAyB,sBAAA,EAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAG,CAAA,CAAA,GAAG,iBAAiB,IAAI,EAAE,EACtI,kBAAkB,EAAE,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;;AAE/D,YAAA,oBAAoB,EAClB,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,EAEtK,IAAI,EAAE,KAAK,EACX,CAAA,EAKF,CAAA,CAAA,gBAAA,EAAA,EACE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAC/B,mBAAmB,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE,EACrD,uBAAuB,EAAE,MAAK;;;AAG5B,gBAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE;oBACzC;;gBAEF,IAAI,CAAC,2BAA2B,EAAE;gBAClC,IAAI,CAAC,mBAAmB,EAAE;AAC5B,aAAC,EACD,qBAAqB,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAC5D,KAAK,EAAC,eAAe,EACrB,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAC,IAAI,EACV,kBAAkB,EAAC,QAAQ,EAAA,EAE1B,IAAI,CAAC,oBAAoB,KACxB,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAA,CAAA,2BAAA,EAAA,EACE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EACnC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EACnC,UAAU,EAAE,CAAC,UAAU,EACvB,yBAAyB,EAAE,OAAO,KAAK,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,EACxE,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAC9C,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAChC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,CAAA,CACE,CACP,CACc,EAEjB,CAAA,CAAA,gBAAA,EAAA,EACE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAC9B,mBAAmB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,EACpD,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAC,IAAI,EACV,qBAAqB,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAC5D,kBAAkB,EAAC,QAAQ,EAC3B,uBAAuB,EAAE,MAAK;;;AAG5B,gBAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE;oBACzC;;gBAEF,IAAI,CAAC,2BAA2B,EAAE;gBAClC,IAAI,CAAC,kBAAkB,EAAE;AAC3B,aAAC,EAAA,EAEA,IAAI,CAAC,mBAAmB,KACvB,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,0BAA0B,EAAA,EACnC,CAAA,CAAA,0BAAA,EAAA,EACE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAClC,UAAU,EAAE,CAAC,UAAU,EACvB,yBAAyB,EAAE,OAAO,KAAK,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,EACxE,CAAA,CACE,CACP,CACc,EACjB,CACE,CAAA,eAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAK;AACd,gBAAA,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE;oBAC3C,IAAI,CAAC,YAAY,EAAE;;AAEvB,aAAC,EACD,SAAS,EAAE,OAAO,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,EAC5C,CAAA,EAED,IAAI,CAAC,SAAS,IAAI,CAAqB,CAAA,mBAAA,EAAA,IAAA,CAAA,EACvC,CAAC,IAAI,CAAC,SAAS,KACd,CAAe,CAAA,eAAA,EAAA,EAAA,QAAQ,EAAC,IAAI,EAAA,EAC1B,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,gBAAgB,EAAA,EACzB,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,wBAAwB,EAAA,EACjC,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,6BAA6B,EAAA,EACrC,UAAU,IACT,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,yBAAyB,EAAA,EAClC,CAAA,CAAA,YAAA,EAAA,EACE,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAC7B,WAAW,EAAC,WAAW,EACvB,QAAQ,EAAE,CAAC,UAAU,EACrB,QAAQ,EAAE,IAAI,EACd,MAAM,EAAC,MAAM,EACb,YAAY,EAAE,GAAG,EACjB,OAAO,EAAE,CAAC,IAAG;AACX,gBAAA,IAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,YAAY,CAAA,EAAA,EACpB,IAAI,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,GAC3C;aACF,EAAA,CACW,CACV,KAEN,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAA,CAAA,kBAAA,EAAA,EAAkB,OAAO,EAAE,IAAI,EAAA,EAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,cAAc,CAAoB,CACzF,CACP,CACG,EAEN,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,oCAAoC,EAAA,EAC5C,UAAU,IACT,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,4BAA4B,EAAA,EACrC,CAAA,CAAA,WAAA,EAAA,EACE,KAAK,EAAC,kBAAkB,EACxB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EACpC,WAAW,EAAC,kBAAkB,EAC9B,QAAQ,EAAE,CAAC,UAAU,EACrB,QAAQ,EAAE,KAAK,EACf,MAAM,EAAC,MAAM,EACb,YAAY,EAAE,GAAG,EACjB,OAAO,EAAE,CAAC,IAAG;AACX,gBAAA,IAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,YAAY,CAAA,EAAA,EACpB,WAAW,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,GAClD;AACH,aAAC,EAAA,CACU,CACT,KAEN,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,kCAAkC,EAAA,EAC3C,CAAmB,CAAA,kBAAA,EAAA,IAAA,EAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAoB,CAChE,CACP,CACG,EACL,IAAI,CAAC,sBAAsB,KACxB,IAAI,CAAC,SAAS;YACZ,CAAA,CAAA,cAAA,EAAA,EACA,KAAK,EAAC,WAAW,EACnB,GAAG,EAAC,wBAAwB,EAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EACpC,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,QAAQ,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EACxC,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,CAAC,CAAc,KAAI;oBAC3B,IAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,YAAY,CACpB,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,MAAM,GACf;iBACF,EAAA,CACC;YACF,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,gCAAgC,EAAA,EACzC,CAAA,CAAA,kBAAA,EAAA,IAAA,iBAA8B,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAoB,CACtF,CACT,EACD,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,gCAAgC,EAAA,EACzC,CAAA,CAAA,kBAAA,EAAA,IAAA,eAA4B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAoB,CACrE,EACL,IAAI,CAAC,oBAAoB,KACxB,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,gCAAgC,EAAA,EAC3C,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,kBAAkB,EAAA,EAC3B,CAAA,CAAA,gBAAA,EAAA,EACE,KAAK,EAAC,cAAc,EACpB,MAAM,EAAC,MAAM,EACb,QAAQ,EAAE,CAAC,UAAU,EACrB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,EAC7C,aAAa,EAAC,OAAO,EACrB,eAAe,EAAE,MAAK;gBACpB,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS;gBAC/C,IAAI,CAAC,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,IAAI,CAAC,YAAY,CAAA,EAAA,EACpB,SAAS,EAAE,YAAY,EAAA,CACxB;aACF,EACiB,CAAA,CAChB,CACF,CACL,CACG,EAEL,UAAU,KACT,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,+BAA+B,EAAA,EACxC,CAAA,CAAA,YAAA,EAAA,EACE,SAAS,EAAE,CAAU,CAAA,UAAA,EAAA,EAAA,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAI,CAAA,EAC1D,OAAO,EAAE,MAAK;AACZ,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAChE,gBAAA,eAAe,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,kBAAkB,CAAE,EAAA,EAAA,KAAK,EAAE,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,CAAW,QAAA,EAAA,eAAe,GAAG,CAAC,CAAA,CAAE,IAAG;AACpH,gBAAA,IAAI,CAAC,YAAY,GAAG,eAAe;AACrC,aAAC,EAAA,EAAA,eAAA,CAGU,CACT,CACP,EAEA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;YACzC,QACE,WAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC,cAAc,EAAA,EACpC,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,qBAAqB,EAAA,EAC9B,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAA,CAAA,kBAAA,EAAA,EAAkB,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAA,EAC3C,OAAO,CAAC,KAAK,CACG,CACf,EAEL,UAAU,KACT,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,6BAA6B,EAAA,EACrC,MAAM,GAAG,CAAC,KACT,CACE,CAAA,qBAAA,EAAA,EAAA,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,EAChC,OAAO,EAAC,iBAAiB,EACzB,OAAO,EAAE,MAAK;AACZ,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAClC,iBAAC,GACD,CACH,EACA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,KACpC,CACE,CAAA,qBAAA,EAAA,EAAA,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAClC,OAAO,EAAC,mBAAmB,EAC3B,OAAO,EAAE,MAAK;AACZ,oBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;iBACnC,GACD,CACH,EACD,CAAqB,CAAA,qBAAA,EAAA,EAAA,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA,mBAAA,CAAqB,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAI,CAAA,EAC1I,CAAA,CAAA,qBAAA,EAAA,EACE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EACjC,OAAO,EAAC,gBAAgB,EACxB,OAAO,EAAE,CAAC,IAAG;oBACX,CAAC,CAAC,eAAe,EAAE;AACnB,oBAAA,IAAI,CAAC,aAAa,GAAG,+CAA+C;AACpE,oBAAA,IAAI,CAAC,YAAY,GAAG,MAAK;AACvB,wBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAChC,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC3B,qBAAC;AAED,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAC1B,iBAAC,EAAA,CACD,CACE,CACP,CACG,EAEN,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,kCAAkC,EAAA,EAC1C,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,KACtJ,CACE,CAAA,wBAAA,EAAA,EAAA,SAAS,EAAE,IAAI,EACf,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,MAAK;AACjB,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;oBAChD,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAChE,oBAAA,eAAe,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,kBAAkB,CAAA,EAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAA,QAAA,EAAW,eAAe,GAAG,CAAC,CAAA,CAAE,IAAG;AAChH,oBAAA,IAAI,CAAC,YAAY,GAAG,eAAe;AACnC,oBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE;AAC/D,iBAAC,EACD,aAAa,EAAE,CAAC,IAAG;AACjB,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC;0BACjB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;0BACzF,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC;oBAEpC,IAAI,CAAC,eAAe,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAE;AACrC,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;iBACjC,EACD,aAAa,EAAE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAClD,CACH,EACD,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,4CAA4C,EAAC,EAAE,EAAE,WAAW,MAAM,CAAA,CAAE,EAAA,EAC5E,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAI;gBAClD,QACE,CACE,CAAA,iCAAA,EAAA,EAAA,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,QAAQ,EAAE,YAAY,CAAC,IAAI,EAC3B,WAAW,EAAE,CAAG,EAAA,YAAY,CAAC,YAAY,CAAA,CAAE,EAC3C,aAAa,EAAE,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,GAAG,IAAI,EACvE,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,EAAA,EAErF,CAAc,CAAA,cAAA,EAAA,EAAA,IAAI,EAAC,aAAa,EAAC,IAAI,EAAC,UAAU,EAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAI,CAAA,EACvH,UAAU,KACT,CAAK,CAAA,KAAA,EAAA,EAAA,IAAI,EAAC,eAAe,EAAA,EACvB,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACvB,CAAA,CAAA,qBAAA,EAAA,EAAqB,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,OAAO,EAAC,eAAe,EAAC,YAAY,EAAE,IAAI,GAAI,CACnG,CACF,CACF,CACP,EAED,CAAK,CAAA,KAAA,EAAA,EAAA,IAAI,EAAC,SAAS,EAAA,EAChB,UAAU,IACT,CAAA,CAAA,UAAA,EAAA,IAAA,EACE,CAAA,CAAA,qBAAA,EAAA,EACE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAC,uBAAuB,EAC/B,OAAO,EAAE,CAAC,IAAG;wBACX,CAAC,CAAC,eAAe,EAAE;AACnB,wBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;qBACzC,EACD,YAAY,EAAE,IAAI,EAClB,CAAA,EACF,CAAA,CAAA,qBAAA,EAAA,EACE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAC,oBAAoB,EAC5B,OAAO,EAAE,CAAC,IAAG;wBACX,CAAC,CAAC,eAAe,EAAE;AACnB,wBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC;qBACxC,EACD,YAAY,EAAE,IAAI,EAClB,CAAA,EACF,CAAA,CAAA,qBAAA,EAAA,EACE,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,EACjC,OAAO,EAAC,iBAAiB,EACzB,OAAO,EAAE,CAAC,IAAG;wBACX,CAAC,CAAC,eAAe,EAAE;AACnB,wBAAA,IAAI,CAAC,aAAa,GAAG,gDAAgD;AACrE,wBAAA,IAAI,CAAC,YAAY,GAAG,MAAK;AACvB,4BAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;AACzC,4BAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC3B,yBAAC;AACD,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAC1B,qBAAC,EACD,YAAY,EAAE,IAAI,EAAA,CAClB,CACO,KAEX,CACE,CAAA,qBAAA,EAAA,EAAA,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,OAAO,EAAC,uBAAuB,EAC/B,OAAO,EAAE,CAAC,IAAG;wBACX,CAAC,CAAC,eAAe,EAAE;AACnB,wBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;qBACzC,EACD,YAAY,EAAE,IAAI,GAClB,CACH,CACG,CAC0B;aAErC,CAAC,CACE,EAEL,UAAU;AACT,gBAAA,CAAC,IAAI,CAAC,eAAe;YACnB,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,0CAA0C,EAAA,EACnD,CAAA,CAAA,YAAA,EAAA,EACE,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,MAAK;AACZ,oBAAA,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE;iBAChF,EACD,SAAS,EAAE,CAAA,CAAA,UAAA,EAAA,EAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAI,CAAA,EAAA,EAAA,gBAAA,CAG/C,CACT,CACP,EAEF,UAAU;gBACT,CAAA,MAAA,IAAI,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,MAAM,MAAK,MAAM;AACvC,gBAAA,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,MAAK,OAAO,CAAC,aAAa,CAAC,MAAM;gBAC7D,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,KAC9B,CACE,CAAA,wBAAA,EAAA,EAAA,SAAS,EAAE,IAAI,EACf,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,MAAK;oBACjB,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;oBAChE,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC,oBAAA,IAAI,CAAC,YAAY,GAAG,eAAe;AACnC,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC7B,iBAAC,EACD,aAAa,EAAE,CAAC,IAAG;AACjB,oBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;wBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;wBAC1G,IAAI,CAAC,eAAe,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAE;AACrC,wBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;;AAEpC,iBAAC,EACD,aAAa,EAAE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,EAAA,CAClD,CACH,CACC,CACF;AAEV,SAAC,CAAC,CACE,CACQ,CACjB,CACG;;;;;;;;;;;;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as registerInstance, h, F as Fragment } from './index-CaZq3YdB.js';
|
|
2
|
-
import { a as UdpFormsTypeEnum } from './enums-
|
|
2
|
+
import { a as UdpFormsTypeEnum } from './enums-CHxgVY-B.js';
|
|
3
3
|
|
|
4
4
|
const UdpFormsFollowUpListCard = class {
|
|
5
5
|
constructor(hostRef) {
|
|
6
6
|
registerInstance(this, hostRef);
|
|
7
7
|
}
|
|
8
8
|
render() {
|
|
9
|
-
const contentJsx = (h(Fragment, { key: '
|
|
10
|
-
return (h("udp-card", { key: '
|
|
9
|
+
const contentJsx = (h(Fragment, { key: 'af4d232501675041c5634dec614cb7e1d85306e8' }, h("unity-typography", { key: 'dcbe122b7125db4985ef56e2b3dfdc43aa8d3dff', variant: "body1", color: "textSecondary" }, "Version: ", this.listItemData.version), h("unity-typography", { key: '3e979696dceff562c3877fb4301a80e7e8284018', variant: "body1", color: "textSecondary" }, "Form Type: ", UdpFormsTypeEnum[this.listItemData.type])));
|
|
10
|
+
return (h("udp-card", { key: '5a232f80f8e4ad9b1bc2953d14c894c4ceff0c1f', cardTitle: this.listItemData.name, subheader: this.listItemData.description, onTitleClick: () => this.handleLaunchFollowUpForm(), disableContentPadding: true, adornmentStatus: 'info' }, contentJsx));
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, F as Fragment } from './index-CaZq3YdB.js';
|
|
2
|
-
import { U as UdpFormsPageIdEnum, a as UdpFormsTypeEnum } from './enums-
|
|
2
|
+
import { U as UdpFormsPageIdEnum, a as UdpFormsTypeEnum } from './enums-CHxgVY-B.js';
|
|
3
3
|
import { d as dateFormatter } from './utils-CiUp9KGZ.js';
|
|
4
4
|
import ChevronRight24 from '@carbon/icons/es/chevron--right/16';
|
|
5
5
|
import Edit16 from '@carbon/icons/es/edit/16';
|
|
@@ -75,16 +75,16 @@ const UdpFormsListCard = class {
|
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
render() {
|
|
78
|
-
const contentJsx = (h(Fragment, { key: '
|
|
79
|
-
const actionsJsx = (h(Fragment, { key: '
|
|
78
|
+
const contentJsx = (h(Fragment, { key: 'd147cd365334db16baab195c839a13069337eb0e' }, h("unity-typography", { key: '63bf9ba3ded1002d17ef846254c8f6174f325c69', variant: "body1", color: "textSecondary" }, "Version: ", this.data.version), !this.isSideSheetList && (h("unity-typography", { key: 'aa8d6c66f6e34b18ce0f1b38d5dbba82dc14c7cd', variant: "body1", color: "textSecondary" }, "Last Modified: ", dateFormatter(this.data.lastModifiedOn))), h("unity-typography", { key: '8aa407465e6fbf43cc1ade9e5a98ea68109f7321', variant: "body1", color: "textSecondary" }, "Created On: ", this.isSideSheetList ? dateFormatter(this.data.createdOn) : dateFormatter(this.data.initialCreatedOn)), this.isFollowUpFormConfigOn && (h("unity-typography", { key: '69e11f19e5554ff8cd9ff59e4a948bd3c81a4c08', variant: "body1", color: "textSecondary" }, "Form Type: ", UdpFormsTypeEnum[this.data.type]))));
|
|
79
|
+
const actionsJsx = (h(Fragment, { key: '913b413f01a2f7bf78b9a8a90fa9540dbd30c80e' }, h("stencil-icon-button", { key: '60aeffc4db6eb3b309e2f2f63fa83130b1017cb1', icon: Edit16, tooltip: "Edit Form Template", onClick: (e) => this.handleEditOrTitleClick(e) }), !this.isSideSheetList && this.isRendererRedirectConfigOn && (h("stencil-icon-button", { key: 'd7e4876e82883ce69315cbea065cc55302e18ebe', icon: DocumentAdd16, tooltip: "View Form", onClick: e => {
|
|
80
80
|
e.stopPropagation();
|
|
81
81
|
this.formRendererHandler();
|
|
82
|
-
} })), !this.isSideSheetList && (h("stencil-icon-button", { key: '
|
|
82
|
+
} })), !this.isSideSheetList && (h("stencil-icon-button", { key: '831140171eb3783a8f21a7b9570b696fde1ce3ea', icon: ChevronRight24, tooltip: "See Form Version History", onClick: e => {
|
|
83
83
|
var _a;
|
|
84
84
|
e.stopPropagation();
|
|
85
85
|
(_a = this.openSideSheet) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
86
86
|
} }))));
|
|
87
|
-
return (h("udp-card", { key: '
|
|
87
|
+
return (h("udp-card", { key: 'ac261f525899bd85f3360fb781af5956eac882b9', cardTitle: this.data.name, subheader: this.data.description, actions: actionsJsx, onTitleClick: this.handleEditOrTitleClick, disableContentPadding: true, adornmentStatus: 'info' }, contentJsx));
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as registerInstance, h, a as getElement } from './index-CaZq3YdB.js';
|
|
2
2
|
import { f as fetchLatestForms, a as fetchFormVersions } from './udp-form-api-utils-vPSYCvIA.js';
|
|
3
|
-
import { U as UdpFormsPageIdEnum } from './enums-
|
|
3
|
+
import { U as UdpFormsPageIdEnum } from './enums-CHxgVY-B.js';
|
|
4
4
|
import 'axios';
|
|
5
5
|
import './tenantUtils-Basdb1b1.js';
|
|
6
6
|
import './configService-BqLfkVKh.js';
|
|
@@ -222,7 +222,7 @@ const UdpFormsList = class {
|
|
|
222
222
|
return this.errorMessage ? (h("div", { class: "error-banner" }, h("unity-typography", { variant: "body2" }, this.errorMessage))) : null;
|
|
223
223
|
}
|
|
224
224
|
render() {
|
|
225
|
-
return (h("div", { key: '
|
|
225
|
+
return (h("div", { key: 'e73a567c697644cb26d5ea3eb12c40347917ea74', class: "udp-forms-list-container" }, this.isCreateNewFormHeaderActionConfigOn ? (h("primary-action-header", { title: "UDP Forms", primaryActionClick: () => this.handleHeaderPrimaryActionClick(), actionButtonLabel: "Create New Form", tabs: false })) : (h("primary-action-header", { title: "UDP Forms", tabs: false })), this.isLoading && h("udp-linear-loader", { key: '65c7818ef8ec9adce0855bccf674d7d1d59d15c1' }), this.renderSideSheet(), h("udp-container", { key: '5d57f227d1743af987227e1f9af4c4a326b988d9', maxWidth: "lg" }, this.renderErrorMessage(), this.renderFilters(), h("udp-list-renderer", { key: '974973524dbc459391bd38a323cbec764c1af5e0', itemComponent: "udp-forms-list-card", data: this.mainFormsList, pagination: true, isServerSide: true, isLoading: this.isLoading, itemsPerPage: this.MAIN_PAGE_SIZE, currentPage: this.mainListPageNumber, totalItems: this.mainTotalItems, onPageChange: e => this.handleMainPageChange(e.detail), componentDataMap: this.componentMap, spacing: "md" })), h("udp-forms-list-card", { key: '887d870d0cec70391e04ce9739a3af4ee5404fce', style: { display: 'none' } }), h("div", { key: 'c3e09b6ecdf501ec37d31a91dc7de007efb95e3e', style: { height: '60px' } })));
|
|
226
226
|
}
|
|
227
227
|
get el() { return getElement(this); }
|
|
228
228
|
static get watchers() { return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as registerInstance, h, a as getElement } from './index-CaZq3YdB.js';
|
|
2
2
|
import { throttle } from 'lodash';
|
|
3
|
-
import { b as UdpFormsFieldTypeEnum, U as UdpFormsPageIdEnum, a as UdpFormsTypeEnum } from './enums-
|
|
3
|
+
import { b as UdpFormsFieldTypeEnum, U as UdpFormsPageIdEnum, a as UdpFormsTypeEnum } from './enums-CHxgVY-B.js';
|
|
4
4
|
import { g as getCurrentTenantId } from './tenantUtils-Basdb1b1.js';
|
|
5
5
|
import { f as fetchLatestForms } from './udp-form-api-utils-vPSYCvIA.js';
|
|
6
6
|
import { b as buildEmptyInitialValues } from './utils-CiUp9KGZ.js';
|
|
@@ -102,6 +102,7 @@ class UdpFormSubmission {
|
|
|
102
102
|
this.generic1 = null;
|
|
103
103
|
this.generic2 = null;
|
|
104
104
|
this.generic3 = null;
|
|
105
|
+
this.userEmail = null;
|
|
105
106
|
Object.assign(this, initialData);
|
|
106
107
|
}
|
|
107
108
|
// =============================
|
|
@@ -557,8 +558,12 @@ const UdpFormsRenderer = class {
|
|
|
557
558
|
handleLaunchFollowUpForm: 'handleLaunchFollowUpForm'
|
|
558
559
|
};
|
|
559
560
|
this.tenantId = getCurrentTenantId();
|
|
560
|
-
|
|
561
|
-
this.
|
|
561
|
+
// info for the current logged in user on the client side
|
|
562
|
+
this.clientUserInfo = {
|
|
563
|
+
id: null,
|
|
564
|
+
displayName: null,
|
|
565
|
+
email: null,
|
|
566
|
+
};
|
|
562
567
|
this.followUpParentSectionKey = ''; // used for follow up forms.
|
|
563
568
|
this.followUpParentQuestionKey = ''; // used for follow up forms.
|
|
564
569
|
this.handleLaunchFollowUpFormSideSheet = async (e) => {
|
|
@@ -834,8 +839,8 @@ const UdpFormsRenderer = class {
|
|
|
834
839
|
}
|
|
835
840
|
}
|
|
836
841
|
};
|
|
837
|
-
const followUpFormSubmission = new UdpFormSubmission({ formId: followUpFormId, formVersion: followUpFormVersion, unityUserId: this.
|
|
838
|
-
const followUpFormSubmissionHandler = FormSubmissionHandlerFactory.create(false, this.
|
|
842
|
+
const followUpFormSubmission = new UdpFormSubmission({ formId: followUpFormId, formVersion: followUpFormVersion, unityUserId: this.clientUserInfo.id, data: followUpSubmissionData });
|
|
843
|
+
const followUpFormSubmissionHandler = FormSubmissionHandlerFactory.create(false, this.clientUserInfo.id);
|
|
839
844
|
const response = await followUpFormSubmissionHandler.createNewLinkedFollowUpFormSubmission(followUpFormSubmission);
|
|
840
845
|
// update the current form submission state with the follow up form submission id in the metadata
|
|
841
846
|
const itemMetadata = this.udpFormSubmission.data.submissionResponseData[sectionKey][questionKey].metadata;
|
|
@@ -870,14 +875,15 @@ const UdpFormsRenderer = class {
|
|
|
870
875
|
var _a;
|
|
871
876
|
this.isLoading = true;
|
|
872
877
|
try {
|
|
873
|
-
// Get user info if available
|
|
878
|
+
// Get client user info if available
|
|
874
879
|
const user = (_a = this.getUserCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
875
880
|
if (user) {
|
|
876
|
-
this.
|
|
877
|
-
this.
|
|
881
|
+
this.clientUserInfo.id = user.id || null;
|
|
882
|
+
this.clientUserInfo.displayName = user.name || null;
|
|
883
|
+
this.clientUserInfo.email = user.email || null;
|
|
878
884
|
}
|
|
879
|
-
this.formSubmissionHandler = FormSubmissionHandlerFactory.create(this.isPublic, this.
|
|
880
|
-
this.udpFormSubmission = new UdpFormSubmission({ id: this.submissionId, formId: this.formId, formVersion: this.version, unityUserId: this.
|
|
885
|
+
this.formSubmissionHandler = FormSubmissionHandlerFactory.create(this.isPublic, this.clientUserInfo.id);
|
|
886
|
+
this.udpFormSubmission = new UdpFormSubmission({ id: this.submissionId, formId: this.formId, formVersion: this.version, unityUserId: this.clientUserInfo.id, generic1: this.generic1, generic2: this.generic2, generic3: this.generic3 });
|
|
881
887
|
// fetch existing submission from Udp.FormSubmission if submissionId is provided
|
|
882
888
|
// take exisitng object, and populate with db values, and return new obj with updated values
|
|
883
889
|
if (this.submissionId) {
|
|
@@ -1159,7 +1165,7 @@ const UdpFormsRenderer = class {
|
|
|
1159
1165
|
return;
|
|
1160
1166
|
const draft = draftsArr[draftIdx];
|
|
1161
1167
|
const saveTimestamp = draft.timestamp || new Date().toISOString();
|
|
1162
|
-
const savedComment = Object.assign(Object.assign({}, draft), { timestamp: saveTimestamp, editedTimestamp: new Date().toISOString(), userId: this.
|
|
1168
|
+
const savedComment = Object.assign(Object.assign({}, draft), { timestamp: saveTimestamp, editedTimestamp: new Date().toISOString(), userId: this.clientUserInfo.id, userDisplayName: this.clientUserInfo.displayName, isDraftComment: false });
|
|
1163
1169
|
// If a saved comment with same id exists, replace it. Otherwise append.
|
|
1164
1170
|
const existingIdx = commentsArr.findIndex(c => c.commentId === commentId);
|
|
1165
1171
|
if (existingIdx !== -1) {
|
|
@@ -1255,20 +1261,17 @@ const UdpFormsRenderer = class {
|
|
|
1255
1261
|
}
|
|
1256
1262
|
isShowManualSaveIcon() {
|
|
1257
1263
|
// return (this.isFormDirty || this.isUserUpdatedSections) && !this.isSubmitted && !!this.userId;
|
|
1258
|
-
const showSaveIcon = (this.isFormDirty || this.isUserUpdatedSections) && !!this.
|
|
1264
|
+
const showSaveIcon = (this.isFormDirty || this.isUserUpdatedSections) && !!this.clientUserInfo.id;
|
|
1259
1265
|
return showSaveIcon;
|
|
1260
1266
|
}
|
|
1261
1267
|
;
|
|
1262
1268
|
get isReadOnlyMode() {
|
|
1263
|
-
return this.isSubmitted || this.udpFormSubmission.unityUserId !== this.
|
|
1264
|
-
}
|
|
1265
|
-
get isShowCommentUI() {
|
|
1266
|
-
return this.isSubmitted;
|
|
1269
|
+
return this.isSubmitted || this.udpFormSubmission.unityUserId !== this.clientUserInfo.id;
|
|
1267
1270
|
}
|
|
1268
1271
|
render() {
|
|
1269
|
-
return (h("div", { key: '
|
|
1272
|
+
return (h("div", { key: 'c0adb1a4f78f6ff15ce946b44677820f716e8a86', class: "forms-renderer-container", style: this.isLoading ? { minHeight: '100vh' } : {} }, this.renderFollowUpSideSheet(), h("udp-forms-ui", { udpForm: this.udpForm, initialValues: this.initialValues, udpFormSubmission: this.udpFormSubmission, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveErrorMessage: this.saveErrorMessage,
|
|
1270
1273
|
// showAutoSaveStatus={this.formSubmissionHandler.supportsAutoSave() && !!this.userId}
|
|
1271
|
-
readonly: this.isReadOnlyMode, handleSubmit: this.handleSubmit.bind(this), handleSave: values => Promise.resolve(this.debouncedManualSave(values)), handleChange: this.handleFormChange, handleAction: this.triggerAction, handleFinish: this.handleFinish,
|
|
1274
|
+
readonly: this.isReadOnlyMode, handleSubmit: this.handleSubmit.bind(this), handleSave: values => Promise.resolve(this.debouncedManualSave(values)), handleChange: this.handleFormChange, handleAction: this.triggerAction, handleFinish: this.handleFinish, clientUserInfo: this.clientUserInfo, isSubmitted: this.isSubmitted, dynamicSections: this.dynamicSections, duplicateRepeatableSection: this.duplicateRepeatableSection, deleteRepeatableSection: this.deleteRepeatableSection, key: `form-rerender-key-${this.reRenderKey}`, isShowManualSaveIcon: this.isShowManualSaveIcon(), isLoading: this.isLoading, performBackgroundSaveAndUpdateLocalSubmissionState: this.performBackgroundSaveAndUpdateLocalSubmissionState })));
|
|
1272
1275
|
}
|
|
1273
1276
|
get el() { return getElement(this); }
|
|
1274
1277
|
};
|