@seniorsistemas/angular-components 19.0.9 → 19.1.1

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 (125) 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/table/public-api.mjs +2 -1
  50. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +18 -8
  51. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +1 -1
  52. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.service.mjs +1 -1
  53. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +11 -3
  54. package/esm2022/tooltip/lib/tooltip/tooltip.component.mjs +17 -11
  55. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +108 -241
  56. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +4 -6
  57. package/esm2022/topbar/lib/topbar/topbar.component.mjs +2 -2
  58. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +1 -1
  59. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  60. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +9 -7
  61. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  62. package/fesm2022/seniorsistemas-angular-components-button.mjs +19 -7
  63. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  64. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +7 -4
  65. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  66. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  68. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  70. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +8 -2
  71. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  72. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +11 -11
  73. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  74. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  76. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  78. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +2 -2
  79. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  80. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  82. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  84. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +2 -2
  85. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  86. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +2 -2
  87. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  88. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  90. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
  91. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  92. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  94. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  96. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  98. package/fesm2022/seniorsistemas-angular-components-select.mjs +133 -21
  99. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  100. package/fesm2022/seniorsistemas-angular-components-shared.mjs +354 -2
  101. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  102. package/fesm2022/seniorsistemas-angular-components-switch.mjs +18 -7
  103. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  104. package/fesm2022/seniorsistemas-angular-components-table.mjs +2 -2
  105. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  106. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +26 -8
  107. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  108. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +125 -254
  109. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  110. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +2 -2
  111. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  112. package/fesm2022/seniorsistemas-angular-components.mjs +12 -1
  113. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  114. package/package.json +1 -1
  115. package/select/lib/select/select.component.d.ts +23 -2
  116. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +30 -0
  117. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +46 -0
  118. package/shared/public-api.d.ts +7 -5
  119. package/switch/lib/switch/switch.component.d.ts +9 -5
  120. package/table/public-api.d.ts +1 -0
  121. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -0
  122. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +4 -2
  123. package/tooltip/lib/tooltip/tooltip.component.d.ts +13 -7
  124. package/tooltip/lib/tooltip/tooltip.directive.d.ts +27 -40
  125. package/tooltip/lib/tooltip/tooltip.module.d.ts +3 -4
@@ -21,7 +21,7 @@ export class ObjectCardFieldComponent {
21
21
  badge = input('');
22
22
  badgeColor = input('blue');
23
23
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ObjectCardFieldComponent, selector: "s-object-card-field", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, imageSource: { classPropertyName: "imageSource", publicName: "imageSource", isSignal: false, isRequired: false, transformFunction: null }, imageAlt: { classPropertyName: "imageAlt", publicName: "imageAlt", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: false, isRequired: false, transformFunction: null }, buttonModel: { classPropertyName: "buttonModel", publicName: "buttonModel", isSignal: false, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick" }, queries: [{ propertyName: "thumbnailComponent", first: true, predicate: ThumbnailComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\n <div class=\"container\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n @if (!thumbnailComponent && (imageSource || iconClass)) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass ?? ''\"\n size=\"small\"\n ></s-thumbnail>\n }\n\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n\n @if (!labelTemplate.children.length) {\n <span\n [id]=\"id + '-label'\"\n class=\"label\"\n [sTooltip]=\"label\"\n >{{ label }}</span\n >\n }\n\n <div #descriptionTemplate>\n @if (!badge()) {\n <ng-content select=\"[descriptionTemplate]\"></ng-content>\n }\n </div>\n @if (!descriptionTemplate.children.length) {\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >{{ description }}</span\n >\n }\n\n @if (badge()) {\n <s-badge\n [text]=\"badge()\"\n [color]=\"badgeColor()\"\n [enableTruncateText]=\"true\"\n >\n </s-badge>\n }\n @if (buttonLabel) {\n <s-button\n [id]=\"id + '-button'\"\n styleClass=\"object-card-button\"\n priority=\"link\"\n [label]=\"buttonLabel\"\n [menuOptions]=\"buttonModel\"\n size=\"small\"\n (clicked)=\"buttonClick.emit($event)\"\n ></s-button>\n }\n </div>\n </div>\n</ng-template>\n\n", styles: [".container{align-items:center;display:flex;height:100%}.info-container{margin-left:10px}.info-container,.info-container span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.info-container .label{color:#999;display:block}.info-container .description{display:block}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.info-container{flex:1}}@media (max-width: 767px){.info-container,.info-container span{white-space:normal}}.info-container:only-child{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i1.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i2.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i3.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: "component", type: i4.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }] });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ObjectCardFieldComponent, selector: "s-object-card-field", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, imageSource: { classPropertyName: "imageSource", publicName: "imageSource", isSignal: false, isRequired: false, transformFunction: null }, imageAlt: { classPropertyName: "imageAlt", publicName: "imageAlt", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: false, isRequired: false, transformFunction: null }, buttonModel: { classPropertyName: "buttonModel", publicName: "buttonModel", isSignal: false, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick" }, queries: [{ propertyName: "thumbnailComponent", first: true, predicate: ThumbnailComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template>\n <div class=\"container\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n @if (!thumbnailComponent && (imageSource || iconClass)) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass ?? ''\"\n size=\"small\"\n ></s-thumbnail>\n }\n\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n\n @if (!labelTemplate.children.length) {\n <span\n [id]=\"id + '-label'\"\n class=\"label\"\n [sTooltip]=\"label\"\n >{{ label }}</span\n >\n }\n\n <div #descriptionTemplate>\n @if (!badge()) {\n <ng-content select=\"[descriptionTemplate]\"></ng-content>\n }\n </div>\n @if (!descriptionTemplate.children.length) {\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >{{ description }}</span\n >\n }\n\n @if (badge()) {\n <s-badge\n [text]=\"badge()\"\n [color]=\"badgeColor()\"\n [enableTruncateText]=\"true\"\n >\n </s-badge>\n }\n @if (buttonLabel) {\n <s-button\n [id]=\"id + '-button'\"\n styleClass=\"object-card-button\"\n priority=\"link\"\n [label]=\"buttonLabel\"\n [menuOptions]=\"buttonModel\"\n size=\"small\"\n (clicked)=\"buttonClick.emit($event)\"\n ></s-button>\n }\n </div>\n </div>\n</ng-template>\n\n", styles: [".container{align-items:center;display:flex;height:100%}.info-container{margin-left:10px}.info-container,.info-container span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.info-container .label{color:#999;display:block}.info-container .description{display:block}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.info-container{flex:1}}@media (max-width: 767px){.info-container,.info-container span{white-space:normal}}.info-container:only-child{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i1.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i2.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i3.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: "component", type: i4.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }] });
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardFieldComponent, decorators: [{
27
27
  type: Component,
@@ -46,7 +46,7 @@ export class ObjectCardMainComponent {
46
46
  this.thumbnailSize = window.innerWidth <= Breakpoints.SM_MAX ? 'small' : 'medium';
47
47
  }
48
48
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardMainComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ObjectCardMainComponent, selector: "s-object-card-main", inputs: { id: "id", imageSource: "imageSource", imageFallback: "imageFallback", imageAlt: "imageAlt", iconClass: "iconClass", hasThumbnail: "hasThumbnail", hasDescription: "hasDescription", isBrand: "isBrand", label: "label", description: "description", buttonLabel: "buttonLabel", buttonModel: "buttonModel" }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "thumbnailComponent", first: true, predicate: ThumbnailComponent, descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"hasThumbnail\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageFallback]=\"imageFallback\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass\"\n [size]=\"thumbnailSize\"\n *ngIf=\"!thumbnailComponent\"\n [isBrand]=\"isBrand\"\n ></s-thumbnail>\n</ng-container>\n\n<ng-container *ngIf=\"hasDescription\">\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n <span\n [id]=\"id + '-label'\"\n *ngIf=\"!labelTemplate.children.length\"\n class=\"label\"\n [sTooltip]=\"label\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n >{{ label }}</span\n >\n\n <div #descriptionTemplate><ng-content select=\"[descriptionTemplate]\"></ng-content></div>\n <span\n [id]=\"id + '-description'\"\n *ngIf=\"!descriptionTemplate.children.length\"\n class=\"description\"\n [sTooltip]=\"description\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n >{{ description }}</span\n >\n <s-button\n [id]=\"id + '-button'\"\n *ngIf=\"buttonLabel\"\n styleClass=\"object-card-button\"\n priority=\"link\"\n [label]=\"buttonLabel\"\n [menuOptions]=\"buttonModel\"\n size=\"small\"\n (clicked)=\"buttonClick.emit($event)\"\n ></s-button>\n </div>\n</ng-container>\n", styles: [":host{align-items:center;display:flex;min-height:70px}.info-container{margin-left:10px;flex:1}.info-container,.info-container span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.info-container .label{display:block;font-weight:700}.info-container .description{color:#999;display:block}@media (max-width: 767px){.info-container,.info-container span{white-space:normal}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i3.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i4.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"] }] });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ObjectCardMainComponent, selector: "s-object-card-main", inputs: { id: "id", imageSource: "imageSource", imageFallback: "imageFallback", imageAlt: "imageAlt", iconClass: "iconClass", hasThumbnail: "hasThumbnail", hasDescription: "hasDescription", isBrand: "isBrand", label: "label", description: "description", buttonLabel: "buttonLabel", buttonModel: "buttonModel" }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "thumbnailComponent", first: true, predicate: ThumbnailComponent, descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"hasThumbnail\">\n <ng-content select=\"s-thumbnail\"></ng-content>\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageFallback]=\"imageFallback\"\n [imageAlt]=\"imageAlt || label\"\n [iconClass]=\"iconClass\"\n [size]=\"thumbnailSize\"\n *ngIf=\"!thumbnailComponent\"\n [isBrand]=\"isBrand\"\n ></s-thumbnail>\n</ng-container>\n\n<ng-container *ngIf=\"hasDescription\">\n <div class=\"info-container\">\n <div #labelTemplate><ng-content select=\"[labelTemplate]\"></ng-content></div>\n <span\n [id]=\"id + '-label'\"\n *ngIf=\"!labelTemplate.children.length\"\n class=\"label\"\n [sTooltip]=\"label\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n >{{ label }}</span\n >\n\n <div #descriptionTemplate><ng-content select=\"[descriptionTemplate]\"></ng-content></div>\n <span\n [id]=\"id + '-description'\"\n *ngIf=\"!descriptionTemplate.children.length\"\n class=\"description\"\n [sTooltip]=\"description\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n >{{ description }}</span\n >\n <s-button\n [id]=\"id + '-button'\"\n *ngIf=\"buttonLabel\"\n styleClass=\"object-card-button\"\n priority=\"link\"\n [label]=\"buttonLabel\"\n [menuOptions]=\"buttonModel\"\n size=\"small\"\n (clicked)=\"buttonClick.emit($event)\"\n ></s-button>\n </div>\n</ng-container>\n", styles: [":host{align-items:center;display:flex;min-height:70px}.info-container{margin-left:10px;flex:1}.info-container,.info-container span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.info-container .label{display:block;font-weight:700}.info-container .description{color:#999;display:block}@media (max-width: 767px){.info-container,.info-container span{white-space:normal}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "component", type: i3.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i4.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"] }] });
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectCardMainComponent, decorators: [{
52
52
  type: Component,
@@ -148,10 +148,10 @@ export class PaginatorComponent {
148
148
  this.currentPage.set(pageIndex);
149
149
  }
150
150
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
151
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginatorComponent, isStandalone: true, selector: "s-paginator", inputs: { totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rows: "rowsChange", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-md border border-grayscale-30\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [disabled]=\"btn.disabled || (btn.validate && btn.validate()) || false\"\n class=\"group h-8 w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "component", type: SelectComponent, selector: "s-select", inputs: ["placeholder", "multiple", "options", "optionLabel", "optionValue", "showClear", "filter", "checkmark", "filterBy", "group", "virtualScroll", "virtualScrollItemSize", "emptyMessage", "disabled", "showOptions"], outputs: ["disabledChange", "showOptionsChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
151
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginatorComponent, isStandalone: true, selector: "s-paginator", inputs: { totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rows: "rowsChange", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-md border border-grayscale-30\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [disabled]=\"btn.disabled || (btn.validate && btn.validate()) || false\"\n class=\"group h-8 w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "component", type: SelectComponent, selector: "s-select", inputs: ["placeholder", "multiple", "options", "optionLabel", "optionValue", "showClear", "filter", "checkmark", "filterBy", "group", "virtualScroll", "virtualScrollItemSize", "emptyMessage", "disabled", "showOptions", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "showOptionsChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
152
152
  }
153
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, decorators: [{
154
154
  type: Component,
155
155
  args: [{ selector: 's-paginator', standalone: true, imports: [InteractiveContentDirective, SelectComponent, FormsModule, TranslateModule], template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-md border border-grayscale-30\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [disabled]=\"btn.disabled || (btn.validate && btn.validate()) || false\"\n class=\"group h-8 w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n" }]
156
156
  }] });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLGlFQUFpRTtJQUNqRSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3hDLG9GQUFvRjtJQUNwRixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLDBGQUEwRjtJQUMxRixrQkFBa0IsR0FBRyxLQUFLLENBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxxRkFBcUY7SUFDckYsVUFBVSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRWpCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxH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QUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxRQUFRLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0FqSlEsa0JBQWtCOzRGQUFsQixrQkFBa0IsOGlCQzdCL0IsMjhEQTZDQSw0Q0RuQmMsMkJBQTJCLDBKQUFFLGVBQWUsa1VBQUUsV0FBVyw4VkFBRSxlQUFlOzs0RkFHM0Usa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQywyQkFBMkIsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9pbnRlcmFjdGl2ZS1jb250ZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBQYWdlQ2hhbmdlLCBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiB9IGZyb20gJy4uL21vZGVscy9wYWdpbmF0b3IubW9kZWxzJztcbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgcGFnaW5hw6fDo28gc3RhbmRhbG9uZSBxdWUgZXhpYmUgYm90w7VlcyBkZSBww6FnaW5hcyxcbiAqIHNlbGV0b3IgZGUgaXRlbnMgcG9yIHDDoWdpbmEgZSBuYXZlZ2HDp8OjbyBwYXJhIHByaW1laXJhL8O6bHRpbWEgcMOhZ2luYS5cbiAqIEVtaXRlIGBwYWdlQ2hhbmdlYCBhIGNhZGEgbXVkYW7Dp2EgZGUgcMOhZ2luYSBvdSB0YW1hbmhvIGRlIHDDoWdpbmEuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLXBhZ2luYXRvclxuICogICBbdG90YWxSZWNvcmRzXT1cInRvdGFsXCJcbiAqICAgWyhyb3dzKV09XCJ0YW1hbmhvUGFnaW5hXCJcbiAqICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdpbmFNdWRvdSgkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBTdHJ1Y3R1cmVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXBhZ2luYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlLCBTZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyB0b3RhbCBkZSByZWdpc3Ryb3MuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cbiAgICB0b3RhbFJlY29yZHMgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIGRlIGl0ZW5zIHBvciBww6FnaW5hLiBTdXBvcnRhIHR3by13YXkgYmluZGluZy4gQGRlZmF1bHQgMTAgKi9cbiAgICByb3dzID0gbW9kZWwoMTApO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3DDp8O1ZXMgZG8gc2VsZXRvciBkZSBpdGVucyBwb3IgcMOhZ2luYS4gQGRlZmF1bHQgWzEwLCAyMCwgNTAsIDEwMCwgMjAwXSAqL1xuICAgIHJvd3NQZXJQYWdlT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPihbMTAsIDIwLCA1MCwgMTAwLCAyMDBdKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gc2VtcHJlIHF1ZSBhIHDDoWdpbmEgb3UgbyBuw7ptZXJvIGRlIGl0ZW5zIHBvciBww6FnaW5hIG11ZGEuICovXG4gICAgcGFnZUNoYW5nZSA9IG91dHB1dDxQYWdlQ2hhbmdlPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50UGFnZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZUNvdW50OiB0aGlzLnRvdGFsUGFnZXMoKSxcbiAgICAgICAgICAgIHJvd3M6IHRoaXMucm93cygpLFxuICAgICAgICAgICAgZmlyc3Q6IHRoaXMucm93cygpICogcGFnZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQVhfUEFHRV9CVVRUT05TID0gNTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc1ByZXZpb3VzUGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpIC0gMTtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzUGFnZSA+PSAxO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBoYXNOZXh0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxO1xuICAgICAgICByZXR1cm4gbmV4dFBhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBzaWduYWwoMSk7XG5cbiAgICBwcm90ZWN0ZWQgYnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvblBhZ2VCdXR0b25zOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbltdID0gW107XG4gICAgICAgIGNvbnN0IG1heFBhZ2VCdXR0b25zID0gdGhpcy5NQVhfUEFHRV9CVVRUT05TO1xuICAgICAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKTtcbiAgICAgICAgY29uc3QgbWlkZGxlID0gTWF0aC5mbG9vcihtYXhQYWdlQnV0dG9ucyAvIDIpO1xuICAgICAgICBjb25zdCBfc3RhcnRQYWdlID0gY3VycmVudFBhZ2UgLSBtaWRkbGU7XG4gICAgICAgIGxldCBzdGFydFBhZ2UgPSBfc3RhcnRQYWdlIDwgMSA/IDEgOiBfc3RhcnRQYWdlO1xuICAgICAgICBjb25zdCBfZW5kUGFnZSA9IHN0YXJ0UGFnZSArIG1heFBhZ2VCdXR0b25zIC0gMTtcbiAgICAgICAgY29uc3QgZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzID0gX2VuZFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMoKTtcblxuICAgICAgICBpZiAoZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gX2VuZFBhZ2UgLSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbk1vZGlmeVN0YXJ0UGFnZSA9IHN0YXJ0UGFnZSAtIGRpZmYgPj0gMTtcbiAgICAgICAgICAgIGlmIChjYW5Nb2RpZnlTdGFydFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBzdGFydFBhZ2UgPSBzdGFydFBhZ2UgLSBkaWZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZFBhZ2UgPSBlbmRQYWdlSXNNb3JlVGhhblRvdGFsUGFnZXMgPyB0aGlzLnRvdGFsUGFnZXMoKSA6IF9lbmRQYWdlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2U7IGkgPD0gZW5kUGFnZTsgaSsrKSB7XG4gICAgICAgICAgICBuYXZpZ2F0aW9uUGFnZUJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2xpY2tlZDogKHBhZ2UpID0+IHRoaXMuZ29Ub1BhZ2UocGFnZS5wYWdlSW5kZXggYXMgbnVtYmVyKSxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IGksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkZJUlNUX1BBR0VfQlVUVE9OLFxuICAgICAgICAgICAgdGhpcy5QUkVWSU9VU19QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIC4uLm5hdmlnYXRpb25QYWdlQnV0dG9ucyxcbiAgICAgICAgICAgIHRoaXMuTkVYVF9QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIHRoaXMuTEFTVF9QQUdFX0JVVFRPTixcbiAgICAgICAgXTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRklSU1RfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvRmlyc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1iYWNrd2FyZCcsXG4gICAgICAgIHZhbGlkYXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaGFzUHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBSRVZJT1VTX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb1ByZXZpb3VzUGFnZS5iaW5kKHRoaXMpLFxuICAgICAgICBpY29uOiAnZmFzIGZhLWNhcmV0LWxlZnQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMQVNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0xhc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1mb3J3YXJkJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0UGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBORVhUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb05leHRQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtcmlnaHQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc05leHRQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsUmVjb3JkcyA9IHRoaXMudG90YWxSZWNvcmRzKCk7XG4gICAgICAgIGNvbnN0IF9wYWdlcyA9IHRvdGFsUmVjb3JkcyAvIHRoaXMucm93cygpO1xuICAgICAgICBjb25zdCBwYWdlcyA9IE1hdGguY2VpbChfcGFnZXMpO1xuICAgICAgICBjb25zdCBpc0V4YWN0UGFnZXMgPSBfcGFnZXMgPT09IHBhZ2VzO1xuICAgICAgICByZXR1cm4gaXNFeGFjdFBhZ2VzID8gcGFnZXMgOiBwYWdlcyArIDE7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VFZmZlY3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByb3dzUGVyUGFnZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSAhPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRCdXR0b24oYnV0dG9uOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbik6IHZvaWQge1xuICAgICAgICBidXR0b24uY2xpY2tlZChidXR0b24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb05leHRQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTmV4dFBhZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlIC0gMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb0xhc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMudG90YWxQYWdlcygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvVG9QYWdlKHBhZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHBhZ2VJbmRleCk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGgtOCBkaXZpZGUteCBkaXZpZGUtZ3JheXNjYWxlLTMwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTMwXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoYnRuIG9mIGJ1dHRvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGxldCBhY3RpdmUgPSBidG4ucGFnZUluZGV4ID09PSBjdXJyZW50UGFnZSgpO1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJnLWNyaXRpY2FsaXR5LWJsdWVdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtZ3JheXNjYWxlLTBdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtY3JpdGljYWxpdHktYmx1ZV09XCIhYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwiYWN0aXZhdGVkQnV0dG9uKGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLmRpc2FibGVkIHx8IChidG4udmFsaWRhdGUgJiYgYnRuLnZhbGlkYXRlKCkpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBoLTggdy04IGhvdmVyOmJnLWdyYXlzY2FsZS0yMCBob3Zlcjp0ZXh0LWdyYXlzY2FsZS0xMDAgZGlzYWJsZWQ6aG92ZXI6YmctW3RyYW5zcGFyZW50XSBkaXNhYmxlZDpob3Zlcjp0ZXh0LWNyaXRpY2FsaXR5LWJsdWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRpc2FibGVkOm9wYWNpdHktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcGFnZSA9IGJ0bi5wYWdlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGljb24gPSBidG4uaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHMtc2VsZWN0XG4gICAgICAgICAgICBbb3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicm93c1BlclBhZ2VDaGFuZ2UoKVwiXG4gICAgICAgID48L3Mtc2VsZWN0PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIEBsZXQgdGV4dCA9XG4gICAgICAgICAgICB0b3RhbFJlY29yZHMoKSA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50b3RhbF9yZWNvcmQnXG4gICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnO1xuICAgICAgICA8cCBjbGFzcz1cInRleHQtWzE0cHhdIHRleHQtWyMyMTI1MzNdXCI+XG4gICAgICAgICAgICB7eyB0ZXh0IHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMoKSB9IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLGlFQUFpRTtJQUNqRSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3hDLG9GQUFvRjtJQUNwRixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLDBGQUEwRjtJQUMxRixrQkFBa0IsR0FBRyxLQUFLLENBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxxRkFBcUY7SUFDckYsVUFBVSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRWpCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxH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QUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxRQUFRLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0FqSlEsa0JBQWtCOzRGQUFsQixrQkFBa0IsOGlCQzdCL0IsMjhEQTZDQSw0Q0RuQmMsMkJBQTJCLDBKQUFFLGVBQWUsaVdBQUUsV0FBVyw4VkFBRSxlQUFlOzs0RkFHM0Usa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQywyQkFBMkIsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9pbnRlcmFjdGl2ZS1jb250ZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBQYWdlQ2hhbmdlLCBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiB9IGZyb20gJy4uL21vZGVscy9wYWdpbmF0b3IubW9kZWxzJztcbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgcGFnaW5hw6fDo28gc3RhbmRhbG9uZSBxdWUgZXhpYmUgYm90w7VlcyBkZSBww6FnaW5hcyxcbiAqIHNlbGV0b3IgZGUgaXRlbnMgcG9yIHDDoWdpbmEgZSBuYXZlZ2HDp8OjbyBwYXJhIHByaW1laXJhL8O6bHRpbWEgcMOhZ2luYS5cbiAqIEVtaXRlIGBwYWdlQ2hhbmdlYCBhIGNhZGEgbXVkYW7Dp2EgZGUgcMOhZ2luYSBvdSB0YW1hbmhvIGRlIHDDoWdpbmEuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLXBhZ2luYXRvclxuICogICBbdG90YWxSZWNvcmRzXT1cInRvdGFsXCJcbiAqICAgWyhyb3dzKV09XCJ0YW1hbmhvUGFnaW5hXCJcbiAqICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdpbmFNdWRvdSgkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBTdHJ1Y3R1cmVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXBhZ2luYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlLCBTZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyB0b3RhbCBkZSByZWdpc3Ryb3MuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cbiAgICB0b3RhbFJlY29yZHMgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIGRlIGl0ZW5zIHBvciBww6FnaW5hLiBTdXBvcnRhIHR3by13YXkgYmluZGluZy4gQGRlZmF1bHQgMTAgKi9cbiAgICByb3dzID0gbW9kZWwoMTApO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3DDp8O1ZXMgZG8gc2VsZXRvciBkZSBpdGVucyBwb3IgcMOhZ2luYS4gQGRlZmF1bHQgWzEwLCAyMCwgNTAsIDEwMCwgMjAwXSAqL1xuICAgIHJvd3NQZXJQYWdlT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPihbMTAsIDIwLCA1MCwgMTAwLCAyMDBdKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gc2VtcHJlIHF1ZSBhIHDDoWdpbmEgb3UgbyBuw7ptZXJvIGRlIGl0ZW5zIHBvciBww6FnaW5hIG11ZGEuICovXG4gICAgcGFnZUNoYW5nZSA9IG91dHB1dDxQYWdlQ2hhbmdlPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50UGFnZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZUNvdW50OiB0aGlzLnRvdGFsUGFnZXMoKSxcbiAgICAgICAgICAgIHJvd3M6IHRoaXMucm93cygpLFxuICAgICAgICAgICAgZmlyc3Q6IHRoaXMucm93cygpICogcGFnZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQVhfUEFHRV9CVVRUT05TID0gNTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc1ByZXZpb3VzUGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpIC0gMTtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzUGFnZSA+PSAxO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBoYXNOZXh0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxO1xuICAgICAgICByZXR1cm4gbmV4dFBhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBzaWduYWwoMSk7XG5cbiAgICBwcm90ZWN0ZWQgYnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvblBhZ2VCdXR0b25zOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbltdID0gW107XG4gICAgICAgIGNvbnN0IG1heFBhZ2VCdXR0b25zID0gdGhpcy5NQVhfUEFHRV9CVVRUT05TO1xuICAgICAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKTtcbiAgICAgICAgY29uc3QgbWlkZGxlID0gTWF0aC5mbG9vcihtYXhQYWdlQnV0dG9ucyAvIDIpO1xuICAgICAgICBjb25zdCBfc3RhcnRQYWdlID0gY3VycmVudFBhZ2UgLSBtaWRkbGU7XG4gICAgICAgIGxldCBzdGFydFBhZ2UgPSBfc3RhcnRQYWdlIDwgMSA/IDEgOiBfc3RhcnRQYWdlO1xuICAgICAgICBjb25zdCBfZW5kUGFnZSA9IHN0YXJ0UGFnZSArIG1heFBhZ2VCdXR0b25zIC0gMTtcbiAgICAgICAgY29uc3QgZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzID0gX2VuZFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMoKTtcblxuICAgICAgICBpZiAoZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gX2VuZFBhZ2UgLSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbk1vZGlmeVN0YXJ0UGFnZSA9IHN0YXJ0UGFnZSAtIGRpZmYgPj0gMTtcbiAgICAgICAgICAgIGlmIChjYW5Nb2RpZnlTdGFydFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBzdGFydFBhZ2UgPSBzdGFydFBhZ2UgLSBkaWZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZFBhZ2UgPSBlbmRQYWdlSXNNb3JlVGhhblRvdGFsUGFnZXMgPyB0aGlzLnRvdGFsUGFnZXMoKSA6IF9lbmRQYWdlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2U7IGkgPD0gZW5kUGFnZTsgaSsrKSB7XG4gICAgICAgICAgICBuYXZpZ2F0aW9uUGFnZUJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2xpY2tlZDogKHBhZ2UpID0+IHRoaXMuZ29Ub1BhZ2UocGFnZS5wYWdlSW5kZXggYXMgbnVtYmVyKSxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IGksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkZJUlNUX1BBR0VfQlVUVE9OLFxuICAgICAgICAgICAgdGhpcy5QUkVWSU9VU19QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIC4uLm5hdmlnYXRpb25QYWdlQnV0dG9ucyxcbiAgICAgICAgICAgIHRoaXMuTkVYVF9QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIHRoaXMuTEFTVF9QQUdFX0JVVFRPTixcbiAgICAgICAgXTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRklSU1RfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvRmlyc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1iYWNrd2FyZCcsXG4gICAgICAgIHZhbGlkYXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaGFzUHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBSRVZJT1VTX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb1ByZXZpb3VzUGFnZS5iaW5kKHRoaXMpLFxuICAgICAgICBpY29uOiAnZmFzIGZhLWNhcmV0LWxlZnQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMQVNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0xhc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1mb3J3YXJkJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0UGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBORVhUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb05leHRQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtcmlnaHQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc05leHRQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsUmVjb3JkcyA9IHRoaXMudG90YWxSZWNvcmRzKCk7XG4gICAgICAgIGNvbnN0IF9wYWdlcyA9IHRvdGFsUmVjb3JkcyAvIHRoaXMucm93cygpO1xuICAgICAgICBjb25zdCBwYWdlcyA9IE1hdGguY2VpbChfcGFnZXMpO1xuICAgICAgICBjb25zdCBpc0V4YWN0UGFnZXMgPSBfcGFnZXMgPT09IHBhZ2VzO1xuICAgICAgICByZXR1cm4gaXNFeGFjdFBhZ2VzID8gcGFnZXMgOiBwYWdlcyArIDE7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VFZmZlY3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByb3dzUGVyUGFnZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSAhPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRCdXR0b24oYnV0dG9uOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbik6IHZvaWQge1xuICAgICAgICBidXR0b24uY2xpY2tlZChidXR0b24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb05leHRQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTmV4dFBhZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlIC0gMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb0xhc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMudG90YWxQYWdlcygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvVG9QYWdlKHBhZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHBhZ2VJbmRleCk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGgtOCBkaXZpZGUteCBkaXZpZGUtZ3JheXNjYWxlLTMwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTMwXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoYnRuIG9mIGJ1dHRvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGxldCBhY3RpdmUgPSBidG4ucGFnZUluZGV4ID09PSBjdXJyZW50UGFnZSgpO1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJnLWNyaXRpY2FsaXR5LWJsdWVdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtZ3JheXNjYWxlLTBdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtY3JpdGljYWxpdHktYmx1ZV09XCIhYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwiYWN0aXZhdGVkQnV0dG9uKGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLmRpc2FibGVkIHx8IChidG4udmFsaWRhdGUgJiYgYnRuLnZhbGlkYXRlKCkpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBoLTggdy04IGhvdmVyOmJnLWdyYXlzY2FsZS0yMCBob3Zlcjp0ZXh0LWdyYXlzY2FsZS0xMDAgZGlzYWJsZWQ6aG92ZXI6YmctW3RyYW5zcGFyZW50XSBkaXNhYmxlZDpob3Zlcjp0ZXh0LWNyaXRpY2FsaXR5LWJsdWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRpc2FibGVkOm9wYWNpdHktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcGFnZSA9IGJ0bi5wYWdlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGljb24gPSBidG4uaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHMtc2VsZWN0XG4gICAgICAgICAgICBbb3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicm93c1BlclBhZ2VDaGFuZ2UoKVwiXG4gICAgICAgID48L3Mtc2VsZWN0PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIEBsZXQgdGV4dCA9XG4gICAgICAgICAgICB0b3RhbFJlY29yZHMoKSA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50b3RhbF9yZWNvcmQnXG4gICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnO1xuICAgICAgICA8cCBjbGFzcz1cInRleHQtWzE0cHhdIHRleHQtWyMyMTI1MzNdXCI+XG4gICAgICAgICAgICB7eyB0ZXh0IHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMoKSB9IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
@@ -257,7 +257,7 @@ export class PicklistComponent {
257
257
  this.selectedItensChange.emit(parseValueEmit(this.selectedItens));
258
258
  }
259
259
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PicklistComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PicklistComponent, selector: "s-picklist", inputs: { itensToSelect: "itensToSelect", selectedItens: "selectedItens", availableItensLabel: "availableItensLabel", availableItensPlaceholder: "availableItensPlaceholder", addSelectedItensLabel: "addSelectedItensLabel", addAllItensLabel: "addAllItensLabel", selectedItensLabel: "selectedItensLabel", selectedItensPlaceholder: "selectedItensPlaceholder", removeSelectedItemsLabel: "removeSelectedItemsLabel", removeAllItemsLabel: "removeAllItemsLabel", showCheckbox: "showCheckbox", filterBy: "filterBy" }, outputs: { selectedItensChange: "selectedItensChange", itensToSelectChange: "itensToSelectChange" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], usesOnChanges: true, ngImport: i0, template: "<ng-template\n #previewRender\n let-itens=\"itens\"\n let-template=\"template\"\n>\n <section class=\"picklist-items\">\n @for (item of itens; track $index) {\n <ng-container *ngTemplateOutlet=\"template; context: { item: item.data }\"></ng-container>\n }\n </section>\n</ng-template>\n\n<ng-template\n #picklistItensRender\n let-id=\"id\"\n let-itens=\"itens\"\n let-template=\"template\"\n let-listConnectedTo=\"listConnectedTo\"\n>\n <div\n class=\"picklist-items\"\n cdkDropList\n [id]=\"id\"\n [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"itens\"\n [cdkDropListConnectedTo]=\"listConnectedTo\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of itens; track $index) {\n <div\n cdkDrag\n [cdkDragDisabled]=\"item.disabled\"\n [cdkDragData]=\"item\"\n (click)=\"toggleSelected(item, id)\"\n (cdkDragStarted)=\"onDragStart($event, id)\"\n (cdkDragReleased)=\"onDragRelease()\"\n class=\"picklist-item\"\n [class.picklist-disabled]=\"item.disabled\"\n [class.picklist-item-invisible]=\"item.invisible\"\n [class.picklist-item-active]=\"item.selected\"\n >\n @if (showCheckbox) {\n <input\n type=\"checkbox\"\n class=\"input-checkbox\"\n [(ngModel)]=\"item.selected\"\n [disabled]=\"item.disabled\"\n />\n }\n <div class=\"picklist-content\">\n <ng-container *ngTemplateOutlet=\"template; context: { item: item.data, selected: item.selected, disabled: item.disabled }\"></ng-container>\n </div>\n <ng-container *cdkDragPreview>\n <ng-container *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"></ng-container>\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template\n #checkboxTitleRender\n let-disabled=\"disabled\"\n let-checked=\"checked\"\n let-changeFn=\"changeFn\"\n>\n @if (showCheckbox) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"changeFn($event.target)\"\n />\n }\n</ng-template>\n\n<div class=\"picklist-container\">\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n }\n \"\n ></ng-container>\n }\n <span class=\"picklist-title\">\n {{ availableItensLabel || 'platform.angular_components.available-items' | translate }}\n </span>\n </div>\n @if (filterBy && showCheckbox) {\n <div class=\"picklist-filter\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"availableItensFilter\"\n (ngModelChange)=\"filterItensToSelect()\"\n [placeholder]=\"availableItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n />\n }\n </div>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: itensToSelectId,\n itens: itensToSelectFilterUtil.filteredItensToSelect,\n template: itemToSelectTemplate,\n listConnectedTo: selectedItensId,\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"addSelectedItensLabel || 'platform.angular_components.add' | translate\"\n priority=\"primary\"\n rightIconClass=\"fa fa-fw fa-arrow-right\"\n [disabled]=\"!canAddItens\"\n (clicked)=\"add()\"\n [auxiliary]=\"false\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"addAllItensLabel || 'platform.angular_components.add_all' | translate\"\n priority=\"link\"\n (clicked)=\"add(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy) {\n <ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n }\n \"\n ></ng-container>\n </ng-container>\n }\n <span class=\"picklist-title\">\n {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n </span>\n </div>\n <div\n class=\"picklist-filter\"\n *ngIf=\"filterBy && showCheckbox\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: { disabled: disableSelectedItensCheckbox, checked: selectedItensAllSelected, changeFn: checkAllSelectedItensChange.bind(this) }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"selectedItensFilter\"\n (ngModelChange)=\"filterSelectedItens()\"\n [placeholder]=\"selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n />\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: selectedItensId,\n itens: selectedItensFilterUtil.filteredSelectedItens,\n template: itemSelectedTemplate,\n listConnectedTo: itensToSelectId,\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"removeSelectedItemsLabel || 'platform.angular_components.remove' | translate\"\n priority=\"primary\"\n iconClass=\"fa fa-fw fa-arrow-left\"\n [disabled]=\"!canRemoveItens\"\n [auxiliary]=\"false\"\n (clicked)=\"remove()\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"removeAllItemsLabel || 'platform.angular_components.remove_all' | translate\"\n priority=\"link\"\n (clicked)=\"remove(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n</div>\n", styles: [".picklist-container{display:flex;flex-wrap:wrap;border-radius:4px solid #dedce5;width:100%;background-color:#fff;gap:20px;padding:8px}.picklist-container .picklist-item-container{display:flex;flex-direction:column;flex:1}.picklist-container .picklist-item-container .picklist-box{border:1px solid #dedce5;padding:8px;height:100%;min-width:200px}.picklist-container .picklist-item-container .picklist-box .picklist-filter{display:flex;width:100%}.picklist-container .picklist-item-container .picklist-box .picklist-filter .input-search{border:1px solid #dedce5;min-height:35px;width:100%;border-radius:3px;margin-bottom:10px;margin-top:10px;padding:0 8px;flex:1}.picklist-container .picklist-item-container .picklist-box .picklist-title-container{width:100%;display:flex;align-items:center}.picklist-container .picklist-item-container .picklist-box .picklist-title-container .picklist-title{font-family:Open Sans;font-size:14px;font-weight:700;line-height:21px;text-underline-position:from-font;text-decoration-skip-ink:none}.picklist-container .picklist-item-container .picklist-box .picklist-items{max-height:23em;overflow:auto;height:100%;min-height:55px}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-content{width:100%;height:100%;padding-right:8px;border-radius:3px;margin-bottom:8px}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item{height:55px;border:3px;display:flex}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item:not(.picklist-disabled){cursor:pointer}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item:hover:not(.picklist-disabled,.picklist-item-active,.picklist-item-invisible){background-color:#f1f7f8}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item-active:not(.picklist-item-invisible){background-color:#d5e8ec}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-disabled{opacity:.5;background-color:#fbfafc}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item-invisible{display:none!important}.picklist-container .picklist-item-container .buttons-container{padding-top:10px;display:flex}.picklist-container .picklist-item-container .input-checkbox{margin:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.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: "pipe", type: i5.TranslatePipe, name: "translate" }] });
260
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PicklistComponent, selector: "s-picklist", inputs: { itensToSelect: "itensToSelect", selectedItens: "selectedItens", availableItensLabel: "availableItensLabel", availableItensPlaceholder: "availableItensPlaceholder", addSelectedItensLabel: "addSelectedItensLabel", addAllItensLabel: "addAllItensLabel", selectedItensLabel: "selectedItensLabel", selectedItensPlaceholder: "selectedItensPlaceholder", removeSelectedItemsLabel: "removeSelectedItemsLabel", removeAllItemsLabel: "removeAllItemsLabel", showCheckbox: "showCheckbox", filterBy: "filterBy" }, outputs: { selectedItensChange: "selectedItensChange", itensToSelectChange: "itensToSelectChange" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], usesOnChanges: true, ngImport: i0, template: "<ng-template\n #previewRender\n let-itens=\"itens\"\n let-template=\"template\"\n>\n <section class=\"picklist-items\">\n @for (item of itens; track $index) {\n <ng-container *ngTemplateOutlet=\"template; context: { item: item.data }\"></ng-container>\n }\n </section>\n</ng-template>\n\n<ng-template\n #picklistItensRender\n let-id=\"id\"\n let-itens=\"itens\"\n let-template=\"template\"\n let-listConnectedTo=\"listConnectedTo\"\n>\n <div\n class=\"picklist-items\"\n cdkDropList\n [id]=\"id\"\n [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"itens\"\n [cdkDropListConnectedTo]=\"listConnectedTo\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of itens; track $index) {\n <div\n cdkDrag\n [cdkDragDisabled]=\"item.disabled\"\n [cdkDragData]=\"item\"\n (click)=\"toggleSelected(item, id)\"\n (cdkDragStarted)=\"onDragStart($event, id)\"\n (cdkDragReleased)=\"onDragRelease()\"\n class=\"picklist-item\"\n [class.picklist-disabled]=\"item.disabled\"\n [class.picklist-item-invisible]=\"item.invisible\"\n [class.picklist-item-active]=\"item.selected\"\n >\n @if (showCheckbox) {\n <input\n type=\"checkbox\"\n class=\"input-checkbox\"\n [(ngModel)]=\"item.selected\"\n [disabled]=\"item.disabled\"\n />\n }\n <div class=\"picklist-content\">\n <ng-container *ngTemplateOutlet=\"template; context: { item: item.data, selected: item.selected, disabled: item.disabled }\"></ng-container>\n </div>\n <ng-container *cdkDragPreview>\n <ng-container *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"></ng-container>\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template\n #checkboxTitleRender\n let-disabled=\"disabled\"\n let-checked=\"checked\"\n let-changeFn=\"changeFn\"\n>\n @if (showCheckbox) {\n <input\n class=\"input-checkbox\"\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"changeFn($event.target)\"\n />\n }\n</ng-template>\n\n<div class=\"picklist-container\">\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy) {\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n }\n \"\n ></ng-container>\n }\n <span class=\"picklist-title\">\n {{ availableItensLabel || 'platform.angular_components.available-items' | translate }}\n </span>\n </div>\n @if (filterBy && showCheckbox) {\n <div class=\"picklist-filter\">\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableItensToSelectCheckbox,\n checked: itensToSelectAllSelected,\n changeFn: checkAllAvailableItensChange.bind(this),\n }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"availableItensFilter\"\n (ngModelChange)=\"filterItensToSelect()\"\n [placeholder]=\"availableItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n />\n }\n </div>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: itensToSelectId,\n itens: itensToSelectFilterUtil.filteredItensToSelect,\n template: itemToSelectTemplate,\n listConnectedTo: selectedItensId,\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"addSelectedItensLabel || 'platform.angular_components.add' | translate\"\n priority=\"primary\"\n rightIconClass=\"fa fa-fw fa-arrow-right\"\n [disabled]=\"!canAddItens\"\n (clicked)=\"add()\"\n [auxiliary]=\"false\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"addAllItensLabel || 'platform.angular_components.add_all' | translate\"\n priority=\"link\"\n (clicked)=\"add(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n <div class=\"picklist-item-container\">\n <div class=\"picklist-box\">\n <div class=\"picklist-title-container\">\n @if (!filterBy) {\n <ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: {\n disabled: disableSelectedItensCheckbox,\n checked: selectedItensAllSelected,\n changeFn: checkAllSelectedItensChange.bind(this),\n }\n \"\n ></ng-container>\n </ng-container>\n }\n <span class=\"picklist-title\">\n {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n </span>\n </div>\n <div\n class=\"picklist-filter\"\n *ngIf=\"filterBy && showCheckbox\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n checkboxTitleRender;\n context: { disabled: disableSelectedItensCheckbox, checked: selectedItensAllSelected, changeFn: checkAllSelectedItensChange.bind(this) }\n \"\n ></ng-container>\n @if (filterBy) {\n <input\n type=\"text\"\n class=\"input-search\"\n [(ngModel)]=\"selectedItensFilter\"\n (ngModelChange)=\"filterSelectedItens()\"\n [placeholder]=\"selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n />\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n picklistItensRender;\n context: {\n id: selectedItensId,\n itens: selectedItensFilterUtil.filteredSelectedItens,\n template: itemSelectedTemplate,\n listConnectedTo: itensToSelectId,\n }\n \"\n >\n </ng-container>\n </div>\n <div class=\"buttons-container\">\n <s-button\n [label]=\"removeSelectedItemsLabel || 'platform.angular_components.remove' | translate\"\n priority=\"primary\"\n iconClass=\"fa fa-fw fa-arrow-left\"\n [disabled]=\"!canRemoveItens\"\n [auxiliary]=\"false\"\n (clicked)=\"remove()\"\n [caret]=\"false\"\n >\n </s-button>\n <s-button\n [label]=\"removeAllItemsLabel || 'platform.angular_components.remove_all' | translate\"\n priority=\"link\"\n (clicked)=\"remove(true)\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n </div>\n</div>\n", styles: [".picklist-container{display:flex;flex-wrap:wrap;border-radius:4px solid #dedce5;width:100%;background-color:#fff;gap:20px;padding:8px}.picklist-container .picklist-item-container{display:flex;flex-direction:column;flex:1}.picklist-container .picklist-item-container .picklist-box{border:1px solid #dedce5;padding:8px;height:100%;min-width:200px}.picklist-container .picklist-item-container .picklist-box .picklist-filter{display:flex;width:100%}.picklist-container .picklist-item-container .picklist-box .picklist-filter .input-search{border:1px solid #dedce5;min-height:35px;width:100%;border-radius:3px;margin-bottom:10px;margin-top:10px;padding:0 8px;flex:1}.picklist-container .picklist-item-container .picklist-box .picklist-title-container{width:100%;display:flex;align-items:center}.picklist-container .picklist-item-container .picklist-box .picklist-title-container .picklist-title{font-family:Open Sans;font-size:14px;font-weight:700;line-height:21px;text-underline-position:from-font;text-decoration-skip-ink:none}.picklist-container .picklist-item-container .picklist-box .picklist-items{max-height:23em;overflow:auto;height:100%;min-height:55px}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-content{width:100%;height:100%;padding-right:8px;border-radius:3px;margin-bottom:8px}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item{height:55px;border:3px;display:flex}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item:not(.picklist-disabled){cursor:pointer}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item:hover:not(.picklist-disabled,.picklist-item-active,.picklist-item-invisible){background-color:#f1f7f8}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item-active:not(.picklist-item-invisible){background-color:#d5e8ec}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-disabled{opacity:.5;background-color:#fbfafc}.picklist-container .picklist-item-container .picklist-box .picklist-items .picklist-item-invisible{display:none!important}.picklist-container .picklist-item-container .buttons-container{padding-top:10px;display:flex}.picklist-container .picklist-item-container .input-checkbox{margin:12px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.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: "pipe", type: i5.TranslatePipe, name: "translate" }] });
261
261
  }
262
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PicklistComponent, decorators: [{
263
263
  type: Component,
@@ -289,7 +289,7 @@ export class ProfilePicturePickerComponent {
289
289
  useExisting: forwardRef(() => ProfilePicturePickerComponent),
290
290
  multi: true,
291
291
  },
292
- ], viewQueries: [{ propertyName: "uploadPicture", first: true, predicate: ["uploadPicture"], descendants: true }, { propertyName: "info", first: true, predicate: ["info"], descendants: true }, { propertyName: "thumbnail", first: true, predicate: ["thumbnail"], descendants: true, read: ElementRef }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<p-confirmDialog></p-confirmDialog>\n\n<input\n #fileInput\n [accept]=\"accept\"\n class=\"file-input\"\n type=\"file\"\n (change)=\"photoSelected($event)\"\n/>\n<div\n #uploadPicture\n class=\"upload-picture\"\n>\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"imageBase64\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\"\n >\n </s-thumbnail>\n <div\n #info\n class=\"info\"\n >\n @if (image) {\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n (clicked)=\"selectPhoto()\"\n >\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n (clicked)=\"removePhoto()\"\n >\n </s-button>\n </div>\n } @else {\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\"\n >\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n }\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n", styles: [".file-input{display:none}.upload-picture{display:flex;flex-wrap:wrap}.upload-picture .info{display:flex;flex-direction:column;padding:12px 20px;align-items:flex-start}.upload-picture .info .title{font-family:Open Sans,sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:Open Sans,sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{align-items:center}.upload-picture--small .info .title,.upload-picture--small .info .subtitle{text-align:center}.upload-picture--small .info .buttons{justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: i4.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: "component", type: i5.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i6.ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
292
+ ], viewQueries: [{ propertyName: "uploadPicture", first: true, predicate: ["uploadPicture"], descendants: true }, { propertyName: "info", first: true, predicate: ["info"], descendants: true }, { propertyName: "thumbnail", first: true, predicate: ["thumbnail"], descendants: true, read: ElementRef }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef }], ngImport: i0, template: "<p-confirmDialog></p-confirmDialog>\n\n<input\n #fileInput\n [accept]=\"accept\"\n class=\"file-input\"\n type=\"file\"\n (change)=\"photoSelected($event)\"\n/>\n<div\n #uploadPicture\n class=\"upload-picture\"\n>\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"imageBase64\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\"\n >\n </s-thumbnail>\n <div\n #info\n class=\"info\"\n >\n @if (image) {\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n (clicked)=\"selectPhoto()\"\n >\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n (clicked)=\"removePhoto()\"\n >\n </s-button>\n </div>\n } @else {\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\"\n >\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n }\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n", styles: [".file-input{display:none}.upload-picture{display:flex;flex-wrap:wrap}.upload-picture .info{display:flex;flex-direction:column;padding:12px 20px;align-items:flex-start}.upload-picture .info .title{font-family:Open Sans,sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:Open Sans,sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{align-items:center}.upload-picture--small .info .title,.upload-picture--small .info .subtitle{text-align:center}.upload-picture--small .info .buttons{justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: i4.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: "component", type: i5.ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "component", type: i6.ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
293
293
  }
294
294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfilePicturePickerComponent, decorators: [{
295
295
  type: Component,
@@ -18,10 +18,10 @@ export class SelectOptionComponent {
18
18
  this.selected.emit();
19
19
  }
20
20
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectOptionComponent, isStandalone: true, selector: "s-select-option", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: true, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: true, transformFunction: null }, isGrouper: { classPropertyName: "isGrouper", publicName: "isGrouper", isSignal: true, isRequired: true, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: true, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isSelected: "isSelectedChange", selected: "selected" }, ngImport: i0, template: "<li\n [attr.id]=\"id()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i class=\"far fa-check text-grayscale-60\"></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <s-checkbox [checked]=\"isSelected()\"></s-checkbox>\n }\n <span\n class=\"text-grayscale-90\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n</li>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label"], outputs: ["disabledChange", "checkedChange"] }] });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SelectOptionComponent, isStandalone: true, selector: "s-select-option", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: true, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: true, transformFunction: null }, isGrouper: { classPropertyName: "isGrouper", publicName: "isGrouper", isSignal: true, isRequired: true, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: true, isRequired: true, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isSelected: "isSelectedChange", selected: "selected" }, ngImport: i0, template: "<div\n [attr.id]=\"id()\"\n [attr.role]=\"isGrouper() ? 'presentation' : 'option'\"\n [attr.aria-selected]=\"isGrouper() ? null : isSelected()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick(); $event.preventDefault()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i\n class=\"far fa-check text-grayscale-60\"\n aria-hidden=\"true\"\n ></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <s-checkbox [checked]=\"isSelected()\"></s-checkbox>\n }\n <span\n [class]=\"isSelected() ? 'text-[#428BCA]' : 'text-grayscale-90'\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "checkedChange"] }] });
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SelectOptionComponent, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 's-select-option', standalone: true, imports: [CommonModule, CheckboxComponent], template: "<li\n [attr.id]=\"id()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i class=\"far fa-check text-grayscale-60\"></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <s-checkbox [checked]=\"isSelected()\"></s-checkbox>\n }\n <span\n class=\"text-grayscale-90\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n</li>\n" }]
25
+ args: [{ selector: 's-select-option', standalone: true, imports: [CommonModule, CheckboxComponent], template: "<div\n [attr.id]=\"id()\"\n [attr.role]=\"isGrouper() ? 'presentation' : 'option'\"\n [attr.aria-selected]=\"isGrouper() ? null : isSelected()\"\n class=\"flex select-none items-center gap-3 px-3 py-2\"\n [class.hover:bg-grayscale-10]=\"!isGrouper()\"\n [class.bg-grayscale-10]=\"!isGrouper() && isFocused()\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick(); $event.preventDefault()\"\n>\n @if (!isGrouper() && checkmark() && !multiple() && isSelected()) {\n <i\n class=\"far fa-check text-grayscale-60\"\n aria-hidden=\"true\"\n ></i>\n }\n\n @if (!isGrouper() && multiple()) {\n <s-checkbox [checked]=\"isSelected()\"></s-checkbox>\n }\n <span\n [class]=\"isSelected() ? 'text-[#428BCA]' : 'text-grayscale-90'\"\n [class.font-bold]=\"isGrouper()\"\n >\n {{ label() }}\n </span>\n</div>\n\n" }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2VsZWN0L3NyYy9saWIvc2VsZWN0L2NvbXBvbmVudHMvc2VsZWN0LW9wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBUWhGLE1BQU0sT0FBTyxxQkFBcUI7SUFDdkIsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUM5QixLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ2pDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7SUFDckMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztJQUN0QyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7SUFFdEMsVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztJQUV2QyxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFcEIsT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBbEJRLHFCQUFxQjs0RkFBckIscUJBQXFCLDhnQ0NWbEMsZ25CQXFCQSwyQ0RiYyxZQUFZLCtCQUFFLGlCQUFpQjs7NEZBRWhDLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxpQkFBaUIsY0FFZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NoZWNrYm94JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXNlbGVjdC1vcHRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENoZWNrYm94Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgaWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIGxhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBtdWx0aXBsZSA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcHVibGljIGNoZWNrbWFyayA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcHVibGljIGlzR3JvdXBlciA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcHVibGljIGlzRm9jdXNlZCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG5cbiAgICBwdWJsaWMgaXNTZWxlY3RlZCA9IG1vZGVsLnJlcXVpcmVkPGJvb2xlYW4+KCk7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBvdXRwdXQoKTtcblxuICAgIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KCk7XG4gICAgfVxufVxuIiwiPGxpXG4gICAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gICAgY2xhc3M9XCJmbGV4IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBnYXAtMyBweC0zIHB5LTJcIlxuICAgIFtjbGFzcy5ob3ZlcjpiZy1ncmF5c2NhbGUtMTBdPVwiIWlzR3JvdXBlcigpXCJcbiAgICBbY2xhc3MuYmctZ3JheXNjYWxlLTEwXT1cIiFpc0dyb3VwZXIoKSAmJiBpc0ZvY3VzZWQoKVwiXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4+XG4gICAgQGlmICghaXNHcm91cGVyKCkgJiYgY2hlY2ttYXJrKCkgJiYgIW11bHRpcGxlKCkgJiYgaXNTZWxlY3RlZCgpKSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrIHRleHQtZ3JheXNjYWxlLTYwXCI+PC9pPlxuICAgIH1cblxuICAgIEBpZiAoIWlzR3JvdXBlcigpICYmIG11bHRpcGxlKCkpIHtcbiAgICAgICAgPHMtY2hlY2tib3ggW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCI+PC9zLWNoZWNrYm94PlxuICAgIH1cbiAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRleHQtZ3JheXNjYWxlLTkwXCJcbiAgICAgICAgW2NsYXNzLmZvbnQtYm9sZF09XCJpc0dyb3VwZXIoKVwiXG4gICAgPlxuICAgICAgICB7eyBsYWJlbCgpIH19XG4gICAgPC9zcGFuPlxuPC9saT5cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2VsZWN0L3NyYy9saWIvc2VsZWN0L2NvbXBvbmVudHMvc2VsZWN0LW9wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBUWhGLE1BQU0sT0FBTyxxQkFBcUI7SUFDdkIsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUM5QixLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ2pDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7SUFDckMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztJQUN0QyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7SUFFdEMsVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztJQUV2QyxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFcEIsT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBbEJRLHFCQUFxQjs0RkFBckIscUJBQXFCLDhnQ0NWbEMsKzZCQTZCQSwyQ0RyQmMsWUFBWSwrQkFBRSxpQkFBaUI7OzRGQUVoQyxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksaUJBQWlCLGNBRWYsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgbW9kZWwsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jaGVja2JveCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1zZWxlY3Qtb3B0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDaGVja2JveENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdE9wdGlvbkNvbXBvbmVudCB7XG4gICAgcHVibGljIGlkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBsYWJlbCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgICBwdWJsaWMgbXVsdGlwbGUgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICAgIHB1YmxpYyBjaGVja21hcmsgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICAgIHB1YmxpYyBpc0dyb3VwZXIgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICAgIHB1YmxpYyBpc0ZvY3VzZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG4gICAgcHVibGljIGlzU2VsZWN0ZWQgPSBtb2RlbC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkID0gb3V0cHV0KCk7XG5cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgICBbYXR0ci5yb2xlXT1cImlzR3JvdXBlcigpID8gJ3ByZXNlbnRhdGlvbicgOiAnb3B0aW9uJ1wiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0dyb3VwZXIoKSA/IG51bGwgOiBpc1NlbGVjdGVkKClcIlxuICAgIGNsYXNzPVwiZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIgZ2FwLTMgcHgtMyBweS0yXCJcbiAgICBbY2xhc3MuaG92ZXI6YmctZ3JheXNjYWxlLTEwXT1cIiFpc0dyb3VwZXIoKVwiXG4gICAgW2NsYXNzLmJnLWdyYXlzY2FsZS0xMF09XCIhaXNHcm91cGVyKCkgJiYgaXNGb2N1c2VkKClcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2xpY2soKVwiXG4gICAgKGtleWRvd24uc3BhY2UpPVwib25DbGljaygpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4+XG4gICAgQGlmICghaXNHcm91cGVyKCkgJiYgY2hlY2ttYXJrKCkgJiYgIW11bHRpcGxlKCkgJiYgaXNTZWxlY3RlZCgpKSB7XG4gICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImZhciBmYS1jaGVjayB0ZXh0LWdyYXlzY2FsZS02MFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+PC9pPlxuICAgIH1cblxuICAgIEBpZiAoIWlzR3JvdXBlcigpICYmIG11bHRpcGxlKCkpIHtcbiAgICAgICAgPHMtY2hlY2tib3ggW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCI+PC9zLWNoZWNrYm94PlxuICAgIH1cbiAgICA8c3BhblxuICAgICAgICBbY2xhc3NdPVwiaXNTZWxlY3RlZCgpID8gJ3RleHQtWyM0MjhCQ0FdJyA6ICd0ZXh0LWdyYXlzY2FsZS05MCdcIlxuICAgICAgICBbY2xhc3MuZm9udC1ib2xkXT1cImlzR3JvdXBlcigpXCJcbiAgICA+XG4gICAgICAgIHt7IGxhYmVsKCkgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cblxuIl19