@seniorsistemas/angular-components 19.0.9 → 19.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/breadcrumb/lib/breadcrumb/breadcrumb-models.d.ts +2 -0
  2. package/button/lib/button/button.component.d.ts +8 -2
  3. package/checkbox/lib/checkbox/checkbox.component.d.ts +5 -1
  4. package/dialog/lib/src/dialog/dialog.component.d.ts +7 -1
  5. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +2 -2
  6. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-models.mjs +1 -1
  7. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +3 -3
  8. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +8 -6
  9. package/esm2022/button/lib/button/button.component.mjs +20 -8
  10. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +8 -5
  11. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +2 -2
  12. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +1 -1
  13. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +9 -3
  14. package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +1 -1
  15. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
  16. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +1 -1
  17. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
  18. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +2 -2
  19. package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
  20. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +1 -1
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +1 -1
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +1 -1
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
  24. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +1 -1
  25. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +1 -1
  26. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +1 -1
  27. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
  28. package/esm2022/global-search/lib/global-search/global-search.component.mjs +1 -1
  29. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -1
  30. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +1 -1
  31. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  32. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
  33. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +1 -1
  34. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +1 -1
  35. package/esm2022/lib/locale/fallback.mjs +13 -2
  36. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +1 -1
  37. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +1 -1
  38. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
  39. package/esm2022/paginator/lib/paginator/paginator.component.mjs +2 -2
  40. package/esm2022/picklist/lib/picklist/picklist.component.mjs +1 -1
  41. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +1 -1
  42. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +3 -3
  43. package/esm2022/select/lib/select/select.component.mjs +132 -20
  44. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +182 -0
  45. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +174 -0
  46. package/esm2022/shared/public-api.mjs +6 -4
  47. package/esm2022/switch/lib/switch/switch.component.mjs +19 -8
  48. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +1 -1
  49. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +18 -8
  50. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +1 -1
  51. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.service.mjs +1 -1
  52. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +11 -3
  53. package/esm2022/tooltip/lib/tooltip/tooltip.component.mjs +17 -11
  54. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +108 -241
  55. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +4 -6
  56. package/esm2022/topbar/lib/topbar/topbar.component.mjs +2 -2
  57. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +1 -1
  58. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  59. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +9 -7
  60. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  61. package/fesm2022/seniorsistemas-angular-components-button.mjs +19 -7
  62. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  63. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +7 -4
  64. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  65. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +1 -1
  66. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +1 -1
  68. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +8 -2
  70. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  71. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +11 -11
  72. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +1 -1
  74. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +1 -1
  76. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +2 -2
  78. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  79. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +1 -1
  80. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +1 -1
  82. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +2 -2
  84. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  85. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +2 -2
  86. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  87. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +1 -1
  88. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
  90. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  91. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +1 -1
  92. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +1 -1
  94. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +1 -1
  96. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-select.mjs +133 -21
  98. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  99. package/fesm2022/seniorsistemas-angular-components-shared.mjs +354 -2
  100. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  101. package/fesm2022/seniorsistemas-angular-components-switch.mjs +18 -7
  102. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  103. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  104. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  105. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +26 -8
  106. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  107. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +125 -254
  108. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +2 -2
  110. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components.mjs +12 -1
  112. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  113. package/package.json +1 -1
  114. package/select/lib/select/select.component.d.ts +23 -2
  115. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +30 -0
  116. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +46 -0
  117. package/shared/public-api.d.ts +7 -5
  118. package/switch/lib/switch/switch.component.d.ts +9 -5
  119. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -0
  120. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +4 -2
  121. package/tooltip/lib/tooltip/tooltip.component.d.ts +13 -7
  122. package/tooltip/lib/tooltip/tooltip.directive.d.ts +27 -40
  123. package/tooltip/lib/tooltip/tooltip.module.d.ts +3 -4
@@ -66,6 +66,12 @@ export class DialogComponent {
66
66
  * @default true
67
67
  */
68
68
  destroyClickOutside = input(true);
69
+ /**
70
+ * @description Valor do aria-label do botão de fechar a dialog.
71
+ *
72
+ * @default 'Fechar'
73
+ */
74
+ closeAriaLabel = input('Fechar');
69
75
  viewContainerRef = inject(ViewContainerRef);
70
76
  dialogService = inject(InternalDialogService);
71
77
  template = viewChild('dialogTemplate');
@@ -128,10 +134,10 @@ export class DialogComponent {
128
134
  });
129
135
  }
130
136
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DialogComponent, isStandalone: true, selector: "s-dialog", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentClassName: { classPropertyName: "contentClassName", publicName: "contentClassName", isSignal: true, isRequired: false, transformFunction: null }, escapeOnEsc: { classPropertyName: "escapeOnEsc", publicName: "escapeOnEsc", isSignal: true, isRequired: false, transformFunction: null }, destroyClickOutside: { classPropertyName: "destroyClickOutside", publicName: "destroyClickOutside", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, providers: [{ provide: ActiveDialog, useValue: null }], queries: [{ propertyName: "templateDiretives", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["dialogTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n <div\n [class]=\"contentClassName()\"\n class=\"flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md max-sm:h-screen max-sm:w-screen\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3>{{ header() }}</h3>\n }\n <div\n class=\"flex cursor-pointer items-center justify-center\"\n (sInteractiveContent)=\"onDismiss()\"\n >\n <i class=\"fas fa-times\"></i>\n </div>\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n </header>\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DialogComponent, isStandalone: true, selector: "s-dialog", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentClassName: { classPropertyName: "contentClassName", publicName: "contentClassName", isSignal: true, isRequired: false, transformFunction: null }, escapeOnEsc: { classPropertyName: "escapeOnEsc", publicName: "escapeOnEsc", isSignal: true, isRequired: false, transformFunction: null }, destroyClickOutside: { classPropertyName: "destroyClickOutside", publicName: "destroyClickOutside", isSignal: true, isRequired: false, transformFunction: null }, closeAriaLabel: { classPropertyName: "closeAriaLabel", publicName: "closeAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, providers: [{ provide: ActiveDialog, useValue: null }], queries: [{ propertyName: "templateDiretives", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["dialogTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n\n <div\n [class]=\"contentClassName()\"\n class=\"max-sm:h-screen max-sm:w-screen flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog-main-title\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3 id=\"dialog-main-title\">{{ header() }}</h3>\n }\n\n <button\n type=\"button\"\n class=\"rounded flex cursor-pointer items-center justify-center border-none bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-primary\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"onDismiss()\"\n >\n <i\n class=\"fas fa-times\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </header>\n <hr class=\"mt-4 h-[1px] w-full bg-grayscale-20\" />\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
132
138
  }
133
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogComponent, decorators: [{
134
140
  type: Component,
135
- args: [{ selector: 's-dialog', standalone: true, imports: [NgTemplateOutlet, InteractiveContentDirective, NgClass], providers: [{ provide: ActiveDialog, useValue: null }], template: "@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n <div\n [class]=\"contentClassName()\"\n class=\"flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md max-sm:h-screen max-sm:w-screen\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3>{{ header() }}</h3>\n }\n <div\n class=\"flex cursor-pointer items-center justify-center\"\n (sInteractiveContent)=\"onDismiss()\"\n >\n <i class=\"fas fa-times\"></i>\n </div>\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n </header>\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n" }]
141
+ args: [{ selector: 's-dialog', standalone: true, imports: [NgTemplateOutlet, InteractiveContentDirective, NgClass], providers: [{ provide: ActiveDialog, useValue: null }], template: "@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n\n <div\n [class]=\"contentClassName()\"\n class=\"max-sm:h-screen max-sm:w-screen flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog-main-title\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3 id=\"dialog-main-title\">{{ header() }}</h3>\n }\n\n <button\n type=\"button\"\n class=\"rounded flex cursor-pointer items-center justify-center border-none bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-primary\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"onDismiss()\"\n >\n <i\n class=\"fas fa-times\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </header>\n <hr class=\"mt-4 h-[1px] w-full bg-grayscale-20\" />\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n" }]
136
142
  }], ctorParameters: () => [] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9kaWFsb2cvc3JjL2xpYi9zcmMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZGlhbG9nL3NyYy9saWIvc3JjL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFFSCxTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUczRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFRSCxNQUFNLE9BQU8sZUFBZTtJQUN4Qix5SEFBeUg7SUFDekgsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBRWpCOzs7O09BSUc7SUFDSCxPQUFPLEdBQUcsS0FBSyxDQUFzQixTQUFTLENBQUMsQ0FBQztJQUVoRDs7Ozs7OztPQU9HO0lBQ0gs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LE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZHJlbixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgT25EZXN0cm95LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29udGVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3RpdmVEaWFsb2cgfSBmcm9tICcuL21vZGVscy9hY3RpdmUtZGlhbG9nJztcbmltcG9ydCB7IEludGVybmFsRGlhbG9nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW50ZXJuYWwtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2l6ZSB9IGZyb20gJy4vbW9kZWxzL2RpYWxvZy1tb2RlbHMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIGRpw6Fsb2dvIG1vZGFsIHF1ZSBleGliZSBjb250ZcO6ZG8gZW0gdW1hIGphbmVsYSBzb2JyZXBvc3RhLlxuICogU3Vwb3J0YSB0ZW1wbGF0ZXMgY3VzdG9taXphZG9zIHBhcmEgY2FiZcOnYWxobywgY29ycG8gZSByb2RhcMOpIHZpYSBgc1RlbXBsYXRlYC5cbiAqIFBvZGUgc2VyIHV0aWxpemFkbyBkZSBmb3JtYSBkZWNsYXJhdGl2YSAodmlhIGB2aXNpYmxlYCkgb3UgcHJvZ3JhbcOhdGljYSAodmlhIGBEaWFsb2dTZXJ2aWNlYCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gTW9kbyBkZWNsYXJhdGl2byAtLT5cbiAqIDxzLWRpYWxvZyBoZWFkZXI9XCJUw610dWxvXCIgWyh2aXNpYmxlKV09XCJzaG93RGlhbG9nXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJib2R5XCI+Q29udGXDumRvPC9uZy10ZW1wbGF0ZT5cbiAqICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPjxidXR0b24gKGNsaWNrKT1cInNob3dEaWFsb2cgPSBmYWxzZVwiPkZlY2hhcjwvYnV0dG9uPjwvbmctdGVtcGxhdGU+XG4gKiA8L3MtZGlhbG9nPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IE92ZXJsYXlcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWRpYWxvZycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlLCBOZ0NsYXNzXSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFjdGl2ZURpYWxvZywgdXNlVmFsdWU6IG51bGwgfV0sXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIG5vIGNhYmXDp2FsaG8gZG8gZGnDoWxvZ28uIFBvZGUgc2VyIHN1YnN0aXR1w61kbyBwb3IgdW0gdGVtcGxhdGUgY29tIGBzVGVtcGxhdGU9XCJoZWFkZXJcImAuICovXG4gICAgaGVhZGVyID0gaW5wdXQoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBhIHZpc2liaWxpZGFkZSBkbyBkacOhbG9nby4gU3Vwb3J0YSB0d28td2F5IGJpbmRpbmcgdmlhIGBbKHZpc2libGUpXWAuXG4gICAgICogQW8gZGVmaW5pciBgdHJ1ZWAsIG8gZGnDoWxvZ28gw6kgYWJlcnRvOyBhbyBkZWZpbmlyIGBmYWxzZWAsIMOpIGZlY2hhZG8uXG4gICAgICogTsOjbyBkZXZlIHNlciB1c2FkbyBlbSBjb25qdW50byBjb20gYERpYWxvZ1NlcnZpY2VgIChtb2RvIHByb2dyYW3DoXRpY28pLlxuICAgICAqL1xuICAgIHZpc2libGUgPSBtb2RlbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluc3TDom5jaWEgZG8gZGnDoWxvZ28gYXRpdm8uXG4gICAgICogRW0gbW9kbyBwcm9ncmFtw6F0aWNvIChhYmVydG8gdmlhIGBEaWFsb2dTZXJ2aWNlYCk6IGluamV0YWRvIGRvIHBhaSB2aWEgYHNraXBTZWxmYC5cbiAgICAgKiBFbSBtb2RvIGRlY2xhcmF0aXZvICh2aWEgYHZpc2libGVgKTogYXRyaWJ1w61kbyBpbnRlcm5hbWVudGUgYW8gYWJyaXIuXG4gICAgICpcbiAgICAgKiBPIGBwcm92aWRlcnNgIGRvIGNvbXBvbmVudGUgc29icmVzY3JldmUgbyB0b2tlbiBjb20gYG51bGxgIHBhcmEgcXVlIGRlc2NlbmRlbnRlc1xuICAgICAqIChleDogYHMtZGlhbG9nYCBkZW50cm8gZGUgdW0gbG9va3VwIGRlbnRybyBkZXN0ZSBkacOhbG9nbykgbsOjbyBoZXJkZW0gZXN0YSBpbnN0w6JuY2lhLlxuICAgICAqL1xuICAgIGFjdGl2ZURpYWxvZyA9IGluamVjdChBY3RpdmVEaWFsb2csIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRhbWFuaG8gZG8gZGnDoWxvZ28uXG4gICAgICogVmFsb3JlcyBhY2VpdG9zOiBgJ3NtJ2AsIGAnbWQnYCAocGFkcsOjbyksIGAnbGcnYCwgYCd4bCdgLCBgJ2Z1bGxzY3JlZW4nYC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdtZCdcbiAgICAgKi9cbiAgICBzaXplID0gaW5wdXQ8RGlhbG9nU2l6ZT4oJ21kJyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2xhc3NlcyBDU1MgYWRpY2lvbmFpcyBhcGxpY2FkYXMgYW8gY29udGFpbmVyIGRlIGNvbnRlw7pkbyBkbyBkacOhbG9nby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgY29udGVudENsYXNzTmFtZSA9IGlucHV0KCcnKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBwcmVzc2lvbmFyIGEgdGVjbGEgRXNjYXBlIGZlY2hhIG8gZGnDoWxvZ28uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZXNjYXBlT25Fc2MgPSBpbnB1dCh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBjbGljYXIgZm9yYSBkbyBkacOhbG9nbyAobm8gYmFja2Ryb3ApIGZlY2hhIG8gZGnDoWxvZ28uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZGVzdHJveUNsaWNrT3V0c2lkZSA9IGlucHV0KHRydWUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoSW50ZXJuYWxEaWFsb2dTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPGFueT4+KCdkaWFsb2dUZW1wbGF0ZScpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVEaXJldGl2ZXMgPSBjb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgaGVhZGVyVGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlbXBsYXRlKCdoZWFkZXInKTtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBib2R5VGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlbXBsYXRlKCdib2R5Jyk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgZm9vdGVyVGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlbXBsYXRlKCdmb290ZXInKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0b09ic2VydmFibGUodGhpcy52aXNpYmxlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2aXNpYmxlID0gdGhpcy52aXNpYmxlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHZpc2libGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZz8uZGlzbWlzcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhlYWRlcigpICYmICF0aGlzLmhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlYWRlciBpcyByZXF1aXJlZC4gcHJvdmlkZSBoZWFkZXIgdmlhIGlucHV0IG9yIHNUZW1wbGF0ZT1cImhlYWRlclwiJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVEaWFsb2cgJiYgdGhpcy52aXNpYmxlKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdbcy1kaWFsb2ddIE8gaW5wdXQgXCJ2aXNpYmxlXCIgbsOjbyBwb2RlIHNlciB1c2FkbyBlbSB1bSBjb21wb25lbnRlIGFiZXJ0byB2aWEgRGlhbG9nU2VydmljZS4gJyArXG4gICAgICAgICAgICAgICAgICAgICdSZW1vdmEgbyBiaW5kaW5nIFwiW3Zpc2libGVdXCIg4oCUIG8gY2ljbG8gZGUgdmlkYSBkZXN0ZSBkacOhbG9nbyBqw6Egw6kgY29udHJvbGFkbyBwZWxvIEFjdGl2ZURpYWxvZyBpbmpldGFkby4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EaXNtaXNzKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZz8uZGlzbWlzcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGVtcGxhdGUodGVtcGxhdGVUeXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVEaXJldGl2ZXMoKS5maW5kKCh0ZW1wbGF0ZSkgPT4gdGVtcGxhdGUudHlwZSA9PT0gdGVtcGxhdGVUeXBlKT8udGVtcGxhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQnlUZW1wbGF0ZSh0aGlzLnRlbXBsYXRlKCkhLCB0aGlzLnZpZXdDb250YWluZXJSZWYsIHtcbiAgICAgICAgICAgIHNpemU6IHRoaXMuc2l6ZSgpLFxuICAgICAgICAgICAgZGVzdHJveUNsaWNrT3V0c2lkZTogdGhpcy5kZXN0cm95Q2xpY2tPdXRzaWRlKCksXG4gICAgICAgICAgICBlc2NhcGVPbkVzYzogdGhpcy5lc2NhcGVPbkVzYygpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cub25DbG9zZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nLm9uRGlzbWlzcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuIiwiQGxldCBhY3RpdmVEaWFsb2dDb250ZXh0ID0geyBhY3RpdmVEaWFsb2c6IGFjdGl2ZURpYWxvZyB9O1xuPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZT5cbiAgICBAaWYgKGFjdGl2ZURpYWxvZykge1xuICAgICAgICBAbGV0IGlzU20gPSBhY3RpdmVEaWFsb2cuZGlhbG9nU2l6ZSA9PT0gJ3NtJztcbiAgICAgICAgQGxldCBpc01kID0gYWN0aXZlRGlhbG9nLmRpYWxvZ1NpemUgPT09ICdtZCc7XG4gICAgICAgIEBsZXQgaXNMZyA9IGFjdGl2ZURpYWxvZy5kaWFsb2dTaXplID09PSAnbGcnO1xuICAgICAgICBAbGV0IGlzWGwgPSBhY3RpdmVEaWFsb2cuZGlhbG9nU2l6ZSA9PT0gJ3hsJztcbiAgICAgICAgQGxldCBpc0Z1bGxzY3JlZW4gPSBhY3RpdmVEaWFsb2cuZGlhbG9nU2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nO1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3NdPVwiY29udGVudENsYXNzTmFtZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBoLW1pbiBtYXgtaC1zY3JlZW4gdy1zY3JlZW4gZmxleC1jb2wgYmctZ3JheXNjYWxlLTAgc2hhZG93LW1kIG1heC1zbTpoLXNjcmVlbiBtYXgtc206dy1zY3JlZW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdtYXgtdy1bMzAwcHhdJzogaXNTbSxcbiAgICAgICAgICAgICAgICAnbWF4LXctWzUwMHB4XSc6IGlzTWQsXG4gICAgICAgICAgICAgICAgJ21heC13LVs4MDBweF0nOiBpc0xnLFxuICAgICAgICAgICAgICAgICdtYXgtdy1bMTE0MHB4XSc6IGlzWGwsXG4gICAgICAgICAgICAgICAgJ2gtc2NyZWVuJzogaXNGdWxsc2NyZWVuLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMgcC00IHBiLTBcIj5cbiAgICAgICAgICAgICAgICBAbGV0IF9oZWFkZXIgPSBoZWFkZXJUZW1wbGF0ZSgpO1xuICAgICAgICAgICAgICAgIEBpZiAoX2hlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2hlYWRlcjsgY29udGV4dDogYWN0aXZlRGlhbG9nQ29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8aDM+e3sgaGVhZGVyKCkgfX08L2gzPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoc0ludGVyYWN0aXZlQ29udGVudCk9XCJvbkRpc21pc3MoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJoLVsxcHhdIHctZnVsbCBiZy1ncmF5c2NhbGUtMjBcIiAvPlxuICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgIDxtYWluIGNsYXNzPVwiZmxleC0xIHAtNFwiPlxuICAgICAgICAgICAgICAgIEBsZXQgX2JvZHlUZW1wbGF0ZSA9IGJvZHlUZW1wbGF0ZSgpO1xuICAgICAgICAgICAgICAgIEBpZiAoX2JvZHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2JvZHlUZW1wbGF0ZTsgY29udGV4dDogYWN0aXZlRGlhbG9nQ29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYWluPlxuXG4gICAgICAgICAgICBAbGV0IGZvb3RlciA9IGZvb3RlclRlbXBsYXRlKCk7XG4gICAgICAgICAgICBAaWYgKGZvb3Rlcikge1xuICAgICAgICAgICAgICAgIDxmb290ZXIgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMyBwLTQgcHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJoLVsxcHhdIHctZnVsbCBiZy1ncmF5c2NhbGUtMjBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyOyBjb250ZXh0OiBhY3RpdmVEaWFsb2dDb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuXG5AaWYgKHZpc2libGUoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9kaWFsb2cvc3JjL2xpYi9zcmMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZGlhbG9nL3NyYy9saWIvc3JjL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFFSCxTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUczRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFRSCxNQUFNLE9BQU8sZUFBZTtJQUN4Qix5SEFBeUg7SUFDekgsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBRWpCOzs7O09BSUc7SUFDSCxPQUFPLEdBQUcsS0FBSyxDQUFzQixTQUFTLENBQUMsQ0FBQztJQUVoRDs7Ozs7OztPQU9HO0lBQ0gs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RUFBRSwyQkFBMkIsRUFBRSxPQUFPLENBQUMsYUFDdEQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZHJlbixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgT25EZXN0cm95LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29udGVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3RpdmVEaWFsb2cgfSBmcm9tICcuL21vZGVscy9hY3RpdmUtZGlhbG9nJztcbmltcG9ydCB7IEludGVybmFsRGlhbG9nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW50ZXJuYWwtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2l6ZSB9IGZyb20gJy4vbW9kZWxzL2RpYWxvZy1tb2RlbHMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIGRpw6Fsb2dvIG1vZGFsIHF1ZSBleGliZSBjb250ZcO6ZG8gZW0gdW1hIGphbmVsYSBzb2JyZXBvc3RhLlxuICogU3Vwb3J0YSB0ZW1wbGF0ZXMgY3VzdG9taXphZG9zIHBhcmEgY2FiZcOnYWxobywgY29ycG8gZSByb2RhcMOpIHZpYSBgc1RlbXBsYXRlYC5cbiAqIFBvZGUgc2VyIHV0aWxpemFkbyBkZSBmb3JtYSBkZWNsYXJhdGl2YSAodmlhIGB2aXNpYmxlYCkgb3UgcHJvZ3JhbcOhdGljYSAodmlhIGBEaWFsb2dTZXJ2aWNlYCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gTW9kbyBkZWNsYXJhdGl2byAtLT5cbiAqIDxzLWRpYWxvZyBoZWFkZXI9XCJUw610dWxvXCIgWyh2aXNpYmxlKV09XCJzaG93RGlhbG9nXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJib2R5XCI+Q29udGXDumRvPC9uZy10ZW1wbGF0ZT5cbiAqICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPjxidXR0b24gKGNsaWNrKT1cInNob3dEaWFsb2cgPSBmYWxzZVwiPkZlY2hhcjwvYnV0dG9uPjwvbmctdGVtcGxhdGU+XG4gKiA8L3MtZGlhbG9nPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IE92ZXJsYXlcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWRpYWxvZycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlLCBOZ0NsYXNzXSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFjdGl2ZURpYWxvZywgdXNlVmFsdWU6IG51bGwgfV0sXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIG5vIGNhYmXDp2FsaG8gZG8gZGnDoWxvZ28uIFBvZGUgc2VyIHN1YnN0aXR1w61kbyBwb3IgdW0gdGVtcGxhdGUgY29tIGBzVGVtcGxhdGU9XCJoZWFkZXJcImAuICovXG4gICAgaGVhZGVyID0gaW5wdXQoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBhIHZpc2liaWxpZGFkZSBkbyBkacOhbG9nby4gU3Vwb3J0YSB0d28td2F5IGJpbmRpbmcgdmlhIGBbKHZpc2libGUpXWAuXG4gICAgICogQW8gZGVmaW5pciBgdHJ1ZWAsIG8gZGnDoWxvZ28gw6kgYWJlcnRvOyBhbyBkZWZpbmlyIGBmYWxzZWAsIMOpIGZlY2hhZG8uXG4gICAgICogTsOjbyBkZXZlIHNlciB1c2FkbyBlbSBjb25qdW50byBjb20gYERpYWxvZ1NlcnZpY2VgIChtb2RvIHByb2dyYW3DoXRpY28pLlxuICAgICAqL1xuICAgIHZpc2libGUgPSBtb2RlbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluc3TDom5jaWEgZG8gZGnDoWxvZ28gYXRpdm8uXG4gICAgICogRW0gbW9kbyBwcm9ncmFtw6F0aWNvIChhYmVydG8gdmlhIGBEaWFsb2dTZXJ2aWNlYCk6IGluamV0YWRvIGRvIHBhaSB2aWEgYHNraXBTZWxmYC5cbiAgICAgKiBFbSBtb2RvIGRlY2xhcmF0aXZvICh2aWEgYHZpc2libGVgKTogYXRyaWJ1w61kbyBpbnRlcm5hbWVudGUgYW8gYWJyaXIuXG4gICAgICpcbiAgICAgKiBPIGBwcm92aWRlcnNgIGRvIGNvbXBvbmVudGUgc29icmVzY3JldmUgbyB0b2tlbiBjb20gYG51bGxgIHBhcmEgcXVlIGRlc2NlbmRlbnRlc1xuICAgICAqIChleDogYHMtZGlhbG9nYCBkZW50cm8gZGUgdW0gbG9va3VwIGRlbnRybyBkZXN0ZSBkacOhbG9nbykgbsOjbyBoZXJkZW0gZXN0YSBpbnN0w6JuY2lhLlxuICAgICAqL1xuICAgIGFjdGl2ZURpYWxvZyA9IGluamVjdChBY3RpdmVEaWFsb2csIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRhbWFuaG8gZG8gZGnDoWxvZ28uXG4gICAgICogVmFsb3JlcyBhY2VpdG9zOiBgJ3NtJ2AsIGAnbWQnYCAocGFkcsOjbyksIGAnbGcnYCwgYCd4bCdgLCBgJ2Z1bGxzY3JlZW4nYC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdtZCdcbiAgICAgKi9cbiAgICBzaXplID0gaW5wdXQ8RGlhbG9nU2l6ZT4oJ21kJyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2xhc3NlcyBDU1MgYWRpY2lvbmFpcyBhcGxpY2FkYXMgYW8gY29udGFpbmVyIGRlIGNvbnRlw7pkbyBkbyBkacOhbG9nby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgY29udGVudENsYXNzTmFtZSA9IGlucHV0KCcnKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBwcmVzc2lvbmFyIGEgdGVjbGEgRXNjYXBlIGZlY2hhIG8gZGnDoWxvZ28uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZXNjYXBlT25Fc2MgPSBpbnB1dCh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBjbGljYXIgZm9yYSBkbyBkacOhbG9nbyAobm8gYmFja2Ryb3ApIGZlY2hhIG8gZGnDoWxvZ28uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZGVzdHJveUNsaWNrT3V0c2lkZSA9IGlucHV0KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFZhbG9yIGRvIGFyaWEtbGFiZWwgZG8gYm90w6NvIGRlIGZlY2hhciBhIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdGZWNoYXInXG4gICAgICovXG4gICAgY2xvc2VBcmlhTGFiZWwgPSBpbnB1dCgnRmVjaGFyJyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEludGVybmFsRGlhbG9nU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjxhbnk+PignZGlhbG9nVGVtcGxhdGUnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlRGlyZXRpdmVzID0gY29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIGhlYWRlclRlbXBsYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZW1wbGF0ZSgnaGVhZGVyJyk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgYm9keVRlbXBsYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZW1wbGF0ZSgnYm9keScpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIGZvb3RlclRlbXBsYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZW1wbGF0ZSgnZm9vdGVyJyk7XG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMudmlzaWJsZSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZSA9IHRoaXMudmlzaWJsZSgpO1xuICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2c/LmRpc21pc3MoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oZWFkZXIoKSAmJiAhdGhpcy5oZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdIZWFkZXIgaXMgcmVxdWlyZWQuIHByb3ZpZGUgaGVhZGVyIHZpYSBpbnB1dCBvciBzVGVtcGxhdGU9XCJoZWFkZXJcIicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGlhbG9nICYmIHRoaXMudmlzaWJsZSgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnW3MtZGlhbG9nXSBPIGlucHV0IFwidmlzaWJsZVwiIG7Do28gcG9kZSBzZXIgdXNhZG8gZW0gdW0gY29tcG9uZW50ZSBhYmVydG8gdmlhIERpYWxvZ1NlcnZpY2UuICcgK1xuICAgICAgICAgICAgICAgICAgICAnUmVtb3ZhIG8gYmluZGluZyBcIlt2aXNpYmxlXVwiIOKAlCBvIGNpY2xvIGRlIHZpZGEgZGVzdGUgZGnDoWxvZ28gasOhIMOpIGNvbnRyb2xhZG8gcGVsbyBBY3RpdmVEaWFsb2cgaW5qZXRhZG8uJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGlzbWlzcygpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2c/LmRpc21pc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRlbXBsYXRlKHRlbXBsYXRlVHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlRGlyZXRpdmVzKCkuZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLnR5cGUgPT09IHRlbXBsYXRlVHlwZSk/LnRlbXBsYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2cgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkJ5VGVtcGxhdGUodGhpcy50ZW1wbGF0ZSgpISwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB7XG4gICAgICAgICAgICBzaXplOiB0aGlzLnNpemUoKSxcbiAgICAgICAgICAgIGRlc3Ryb3lDbGlja091dHNpZGU6IHRoaXMuZGVzdHJveUNsaWNrT3V0c2lkZSgpLFxuICAgICAgICAgICAgZXNjYXBlT25Fc2M6IHRoaXMuZXNjYXBlT25Fc2MoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nLm9uQ2xvc2UkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZy5vbkRpc21pc3MkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbiIsIkBsZXQgYWN0aXZlRGlhbG9nQ29udGV4dCA9IHsgYWN0aXZlRGlhbG9nOiBhY3RpdmVEaWFsb2cgfTtcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGU+XG4gICAgQGlmIChhY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgQGxldCBpc1NtID0gYWN0aXZlRGlhbG9nLmRpYWxvZ1NpemUgPT09ICdzbSc7XG4gICAgICAgIEBsZXQgaXNNZCA9IGFjdGl2ZURpYWxvZy5kaWFsb2dTaXplID09PSAnbWQnO1xuICAgICAgICBAbGV0IGlzTGcgPSBhY3RpdmVEaWFsb2cuZGlhbG9nU2l6ZSA9PT0gJ2xnJztcbiAgICAgICAgQGxldCBpc1hsID0gYWN0aXZlRGlhbG9nLmRpYWxvZ1NpemUgPT09ICd4bCc7XG4gICAgICAgIEBsZXQgaXNGdWxsc2NyZWVuID0gYWN0aXZlRGlhbG9nLmRpYWxvZ1NpemUgPT09ICdmdWxsc2NyZWVuJztcblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3NdPVwiY29udGVudENsYXNzTmFtZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF4LXNtOmgtc2NyZWVuIG1heC1zbTp3LXNjcmVlbiBmbGV4IGgtbWluIG1heC1oLXNjcmVlbiB3LXNjcmVlbiBmbGV4LWNvbCBiZy1ncmF5c2NhbGUtMCBzaGFkb3ctbWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdtYXgtdy1bMzAwcHhdJzogaXNTbSxcbiAgICAgICAgICAgICAgICAnbWF4LXctWzUwMHB4XSc6IGlzTWQsXG4gICAgICAgICAgICAgICAgJ21heC13LVs4MDBweF0nOiBpc0xnLFxuICAgICAgICAgICAgICAgICdtYXgtdy1bMTE0MHB4XSc6IGlzWGwsXG4gICAgICAgICAgICAgICAgJ2gtc2NyZWVuJzogaXNGdWxsc2NyZWVuLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZy1tYWluLXRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGhlYWRlciBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAtMyBwLTQgcGItMFwiPlxuICAgICAgICAgICAgICAgIEBsZXQgX2hlYWRlciA9IGhlYWRlclRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgICAgQGlmIChfaGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaGVhZGVyOyBjb250ZXh0OiBhY3RpdmVEaWFsb2dDb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cImRpYWxvZy1tYWluLXRpdGxlXCI+e3sgaGVhZGVyKCkgfX08L2gzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZCBmbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItbm9uZSBiZy10cmFuc3BhcmVudCBvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNsb3NlQXJpYUxhYmVsKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EaXNtaXNzKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgICAgIDxociBjbGFzcz1cIm10LTQgaC1bMXB4XSB3LWZ1bGwgYmctZ3JheXNjYWxlLTIwXCIgLz5cblxuICAgICAgICAgICAgPG1haW4gY2xhc3M9XCJmbGV4LTEgcC00XCI+XG4gICAgICAgICAgICAgICAgQGxldCBfYm9keVRlbXBsYXRlID0gYm9keVRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgICAgQGlmIChfYm9keVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfYm9keVRlbXBsYXRlOyBjb250ZXh0OiBhY3RpdmVEaWFsb2dDb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21haW4+XG5cbiAgICAgICAgICAgIEBsZXQgZm9vdGVyID0gZm9vdGVyVGVtcGxhdGUoKTtcbiAgICAgICAgICAgIEBpZiAoZm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0zIHAtNCBwdC0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cImgtWzFweF0gdy1mdWxsIGJnLWdyYXlzY2FsZS0yMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXI7IGNvbnRleHQ6IGFjdGl2ZURpYWxvZ0NvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG5cbkBpZiAodmlzaWJsZSgpID09PSB1bmRlZmluZWQpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlhbG9nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbn1cbiJdfQ==
@@ -41,7 +41,7 @@ export class RowComponent {
41
41
  return '';
42
42
  }
43
43
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowComponent, isStandalone: true, selector: "s-row", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"w-full\"\n [formGroup]=\"group()\"\n>\n @let rowConfig = config();\n @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n @if (rowIsVisible) {\n <div class=\"grid w-screen max-w-full grid-cols-12 gap-4\">\n @for (field of config().fields; let i = $index; track i) {\n @let fieldName = getName(field);\n @if (fieldIsExpandedDynamicType(field)) {\n @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n @if (fieldVisible) {\n <div\n class=\"p-1\"\n [ngClass]=\"fieldGridClass(field)\"\n >\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n @if (fieldName) {\n <s-control-errors\n [form]=\"group\"\n [control]=\"group().controls[fieldName]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n }\n\n @if (field.footer) {\n @if (field.footer.help) {\n @let footerHelpVisible =\n field.footer.help.visible?.({\n abstractControl: group().controls[fieldName],\n formField: field,\n });\n @if (fieldName && field.footer.help.visible ? footerHelpVisible : true) {\n <span style=\"color: #888b99\">\n {{ field.footer.help.text }}\n </span>\n }\n }\n }\n\n @if (field.footer) {\n @let footerLinkVisible =\n field.footer.link?.visible?.({\n abstractControl: group().controls[fieldName],\n formField: field,\n });\n @if (fieldName && field.footer.link?.visible ? footerLinkVisible : true) {\n <div style=\"margin-left: -17px\">\n <s-button\n [label]=\"field.footer.link?.label\"\n priority=\"link\"\n (clicked)=\"\n field.footer.link?.onClick({\n abstractControl: group().controls[fieldName],\n formField: field,\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n }\n }\n @if (field.bottomTemplate) {\n <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n }\n </div>\n }\n } @else {\n @let gridClass = fieldGridClass(field);\n <div [ngClass]=\"gridClass\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n </div>\n }\n }\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: ControlErrorsModule }, { kind: "component", type: i1.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }] });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowComponent, isStandalone: true, selector: "s-row", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"w-full\"\n [formGroup]=\"group()\"\n>\n @let rowConfig = config();\n @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n @if (rowIsVisible) {\n <div class=\"grid w-screen max-w-full grid-cols-12 gap-4\">\n @for (field of config().fields; let i = $index; track i) {\n @let fieldName = getName(field);\n @if (fieldIsExpandedDynamicType(field)) {\n @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n @if (fieldVisible) {\n <div\n class=\"p-1\"\n [ngClass]=\"fieldGridClass(field)\"\n >\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n @if (fieldName) {\n <s-control-errors\n [form]=\"group\"\n [control]=\"group().controls[fieldName]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n }\n\n @if (field.footer) {\n @if (field.footer.help) {\n @let footerHelpVisible =\n field.footer.help.visible?.({\n abstractControl: group().controls[fieldName],\n formField: field,\n });\n @if (fieldName && field.footer.help.visible ? footerHelpVisible : true) {\n <span style=\"color: #888b99\">\n {{ field.footer.help.text }}\n </span>\n }\n }\n }\n\n @if (field.footer) {\n @let footerLinkVisible =\n field.footer.link?.visible?.({\n abstractControl: group().controls[fieldName],\n formField: field,\n });\n @if (fieldName && field.footer.link?.visible ? footerLinkVisible : true) {\n <div style=\"margin-left: -17px\">\n <s-button\n [label]=\"field.footer.link?.label\"\n priority=\"link\"\n (clicked)=\"\n field.footer.link?.onClick({\n abstractControl: group().controls[fieldName],\n formField: field,\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n }\n }\n @if (field.bottomTemplate) {\n <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n }\n </div>\n }\n } @else {\n @let gridClass = fieldGridClass(field);\n <div [ngClass]=\"gridClass\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n </div>\n }\n }\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: ControlErrorsModule }, { kind: "component", type: i1.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }, { kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }] });
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowComponent, decorators: [{
47
47
  type: Component,