@ifsworld/granite-components 15.0.1 → 15.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/date-picker/lib/date-picker-base.d.ts +3 -3
  2. package/date-picker/lib/date-picker.module.d.ts +2 -2
  3. package/esm2022/carousel/ifsworld-granite-components-carousel.mjs +5 -0
  4. package/esm2022/carousel/index.mjs +3 -0
  5. package/esm2022/carousel/lib/carousel.component.mjs +156 -0
  6. package/esm2022/carousel/lib/carousel.module.mjs +31 -0
  7. package/esm2022/date-picker/ifsworld-granite-components-date-picker.mjs +5 -0
  8. package/esm2022/date-picker/index.mjs +5 -0
  9. package/esm2022/date-picker/lib/date-picker-base.mjs +53 -0
  10. package/esm2022/date-picker/lib/date-picker-trigger-for.directive.mjs +228 -0
  11. package/esm2022/date-picker/lib/date-picker.component.mjs +30 -0
  12. package/esm2022/date-picker/lib/date-picker.module.mjs +58 -0
  13. package/esm2022/date-picker/lib/date-range-picker.component.mjs +46 -0
  14. package/esm2022/file-upload/ifsworld-granite-components-file-upload.mjs +5 -0
  15. package/esm2022/file-upload/index.mjs +3 -0
  16. package/esm2022/file-upload/lib/directives/file-drag-and-drop.directive.mjs +102 -0
  17. package/esm2022/file-upload/lib/file-upload.component.mjs +182 -0
  18. package/esm2022/file-upload/lib/file-upload.constants.mjs +45 -0
  19. package/esm2022/file-upload/lib/file-upload.module.mjs +32 -0
  20. package/esm2022/file-upload/lib/file-upload.utils.mjs +13 -0
  21. package/esm2022/ifsworld-granite-components.mjs +5 -0
  22. package/esm2022/index.mjs +90 -0
  23. package/esm2022/lib/arrange-grid/arrange-grid-item.component.mjs +44 -0
  24. package/esm2022/lib/arrange-grid/arrange-grid.component.mjs +125 -0
  25. package/esm2022/lib/arrange-grid/arrange-grid.module.mjs +19 -0
  26. package/esm2022/lib/avatar/avatar-default-status/avatar-default-status.component.mjs +36 -0
  27. package/esm2022/lib/avatar/avatar.component.mjs +68 -0
  28. package/esm2022/lib/avatar/avatar.component.public-types.mjs +7 -0
  29. package/esm2022/lib/avatar/avatar.module.mjs +37 -0
  30. package/esm2022/lib/avatar/custom-avatar-status.directive.mjs +18 -0
  31. package/esm2022/lib/avatar/empty-avatar/empty-avatar.component.mjs +37 -0
  32. package/esm2022/lib/badge/badge.component.mjs +39 -0
  33. package/esm2022/lib/badge/badge.module.mjs +18 -0
  34. package/esm2022/lib/badge/testing/badge.harness.mjs +25 -0
  35. package/esm2022/lib/button/button.component.mjs +87 -0
  36. package/esm2022/lib/button/button.module.mjs +16 -0
  37. package/esm2022/lib/card-list/card/card-avatar.component.mjs +11 -0
  38. package/esm2022/lib/card-list/card/card-content/card-actions.component.mjs +11 -0
  39. package/esm2022/lib/card-list/card/card-content/card-body.component.mjs +11 -0
  40. package/esm2022/lib/card-list/card/card-content/card-content.component.mjs +11 -0
  41. package/esm2022/lib/card-list/card/card-content/card-footer.component.mjs +11 -0
  42. package/esm2022/lib/card-list/card/card-content/card-header-subtitle.component.mjs +11 -0
  43. package/esm2022/lib/card-list/card/card-content/card-header-title.component.mjs +11 -0
  44. package/esm2022/lib/card-list/card/card-content/card-header.component.mjs +11 -0
  45. package/esm2022/lib/card-list/card/card.component.mjs +11 -0
  46. package/esm2022/lib/card-list/card-list.component.mjs +24 -0
  47. package/esm2022/lib/card-list/card-list.module.mjs +68 -0
  48. package/esm2022/lib/checkbox/checkbox-group.component.mjs +17 -0
  49. package/esm2022/lib/checkbox/checkbox.component.mjs +99 -0
  50. package/esm2022/lib/checkbox/checkbox.module.mjs +17 -0
  51. package/esm2022/lib/chips/chip-input.mjs +195 -0
  52. package/esm2022/lib/chips/chip-list.component.mjs +567 -0
  53. package/esm2022/lib/chips/chip.component.mjs +288 -0
  54. package/esm2022/lib/chips/chips.module.mjs +31 -0
  55. package/esm2022/lib/collapsible-group/collapsible-group-body.directive.mjs +17 -0
  56. package/esm2022/lib/collapsible-group/collapsible-group-header.directive.mjs +17 -0
  57. package/esm2022/lib/collapsible-group/collapsible-group.component.mjs +46 -0
  58. package/esm2022/lib/collapsible-group/collapsible-group.module.mjs +33 -0
  59. package/esm2022/lib/contacts/contact-item/contact-item.component.mjs +27 -0
  60. package/esm2022/lib/contacts/contact-item-default-status/contact-item-default-status.component.mjs +20 -0
  61. package/esm2022/lib/contacts/contact-item-title/contact-item-title.component.mjs +15 -0
  62. package/esm2022/lib/contacts/contacts-profile/contacts-profile.component.mjs +18 -0
  63. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-data.mjs +24 -0
  64. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-for.directive.mjs +231 -0
  65. package/esm2022/lib/contacts/contacts-types/contacts.component.private-types.mjs +2 -0
  66. package/esm2022/lib/contacts/contacts-types/contacts.component.public-types.mjs +9 -0
  67. package/esm2022/lib/contacts/contacts.component.mjs +92 -0
  68. package/esm2022/lib/contacts/contacts.module.mjs +53 -0
  69. package/esm2022/lib/contacts/custom-profile.directive.mjs +16 -0
  70. package/esm2022/lib/contacts/custom-status.directive.mjs +18 -0
  71. package/esm2022/lib/core/animation.mjs +34 -0
  72. package/esm2022/lib/core/client-environment.mjs +20 -0
  73. package/esm2022/lib/core/common-behaviors/disabled.mjs +27 -0
  74. package/esm2022/lib/core/core.module.mjs +44 -0
  75. package/esm2022/lib/core/devices/client-input-desktop.directive.mjs +29 -0
  76. package/esm2022/lib/core/devices/client-input-touch.directive.mjs +29 -0
  77. package/esm2022/lib/core/devices/client-output-desktop.directive.mjs +29 -0
  78. package/esm2022/lib/core/devices/client-output-touch.directive.mjs +29 -0
  79. package/esm2022/lib/core/hide-on-overflow.directive.mjs +83 -0
  80. package/esm2022/lib/core/overlay-base.mjs +18 -0
  81. package/esm2022/lib/core/overlay-position-config.mjs +2 -0
  82. package/esm2022/lib/core/overlay-trigger-for-base.directive.mjs +121 -0
  83. package/esm2022/lib/core/overlay.service.mjs +90 -0
  84. package/esm2022/lib/core/pipes/pure-pipes.module.mjs +16 -0
  85. package/esm2022/lib/core/pipes/title.pipe.mjs +21 -0
  86. package/esm2022/lib/core/radio-checkbox-base.mjs +19 -0
  87. package/esm2022/lib/core/services/names-utils-service.mjs +51 -0
  88. package/esm2022/lib/core/theme.library.mjs +59 -0
  89. package/esm2022/lib/core/types.mjs +2 -0
  90. package/esm2022/lib/grid/grid.component.mjs +128 -0
  91. package/esm2022/lib/grid/grid.module.mjs +18 -0
  92. package/esm2022/lib/icon/icon.component.mjs +43 -0
  93. package/esm2022/lib/icon/icon.module.mjs +16 -0
  94. package/esm2022/lib/input-field/input-field.component.mjs +167 -0
  95. package/esm2022/lib/input-field/input-field.module.mjs +20 -0
  96. package/esm2022/lib/label/label.component.mjs +31 -0
  97. package/esm2022/lib/label/label.module.mjs +18 -0
  98. package/esm2022/lib/menu/divider.directive.mjs +23 -0
  99. package/esm2022/lib/menu/menu-base.mjs +364 -0
  100. package/esm2022/lib/menu/menu-desktop-animations.mjs +23 -0
  101. package/esm2022/lib/menu/menu-errors.mjs +37 -0
  102. package/esm2022/lib/menu/menu-item.component.mjs +89 -0
  103. package/esm2022/lib/menu/menu-panel.mjs +7 -0
  104. package/esm2022/lib/menu/menu-positions.mjs +9 -0
  105. package/esm2022/lib/menu/menu-touch-animations.mjs +137 -0
  106. package/esm2022/lib/menu/menu-touch-close.component.mjs +13 -0
  107. package/esm2022/lib/menu/menu-touch-title.component.mjs +59 -0
  108. package/esm2022/lib/menu/menu-trigger-for.directive.mjs +738 -0
  109. package/esm2022/lib/menu/menu.component.mjs +30 -0
  110. package/esm2022/lib/menu/menu.module.mjs +55 -0
  111. package/esm2022/lib/menu/testing/menu.harness.mjs +109 -0
  112. package/esm2022/lib/menu/title.directive.mjs +17 -0
  113. package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +19 -0
  114. package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +17 -0
  115. package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +54 -0
  116. package/esm2022/lib/progress-bar/progress-bar.component.mjs +92 -0
  117. package/esm2022/lib/progress-bar/progress-bar.model.mjs +2 -0
  118. package/esm2022/lib/progress-bar/progress-bar.module.mjs +44 -0
  119. package/esm2022/lib/radio-button/radio-button.component.mjs +119 -0
  120. package/esm2022/lib/radio-button/radio-button.module.mjs +17 -0
  121. package/esm2022/lib/radio-button/radio-group.component.mjs +17 -0
  122. package/esm2022/lib/toggle-switch/toggle-switch.component.mjs +100 -0
  123. package/esm2022/lib/toggle-switch/toggle-switch.module.mjs +16 -0
  124. package/esm2022/table/ifsworld-granite-components-table.mjs +5 -0
  125. package/esm2022/table/index.mjs +5 -0
  126. package/esm2022/table/lib/cell/cell-align/cell-align-classes.directive.mjs +26 -0
  127. package/esm2022/table/lib/cell/cell.mjs +15 -0
  128. package/esm2022/table/lib/cell/table-data-cell.component.mjs +25 -0
  129. package/esm2022/table/lib/cell/table-header-cell.component.mjs +14 -0
  130. package/esm2022/table/lib/column/table-column.directive.mjs +33 -0
  131. package/esm2022/table/lib/column-size/column-size.directive.mjs +34 -0
  132. package/esm2022/table/lib/table-constants.library.mjs +7 -0
  133. package/esm2022/table/lib/table.component.mjs +62 -0
  134. package/esm2022/table/lib/table.model.mjs +2 -0
  135. package/esm2022/table/lib/table.module.mjs +38 -0
  136. package/esm2022/tooltip/ifsworld-granite-components-tooltip.mjs +5 -0
  137. package/esm2022/tooltip/index.mjs +4 -0
  138. package/esm2022/tooltip/lib/Services/granite-tooltip.service.mjs +28 -0
  139. package/esm2022/tooltip/lib/tooltip-constants.library.mjs +4 -0
  140. package/esm2022/tooltip/lib/tooltip-trigger-for.directive.mjs +147 -0
  141. package/esm2022/tooltip/lib/tooltip.component.mjs +14 -0
  142. package/esm2022/tooltip/lib/tooltip.module.mjs +19 -0
  143. package/fesm2022/ifsworld-granite-components-carousel.mjs +9 -9
  144. package/fesm2022/ifsworld-granite-components-carousel.mjs.map +1 -1
  145. package/fesm2022/ifsworld-granite-components-date-picker.mjs +30 -34
  146. package/fesm2022/ifsworld-granite-components-date-picker.mjs.map +1 -1
  147. package/fesm2022/ifsworld-granite-components-file-upload.mjs +12 -13
  148. package/fesm2022/ifsworld-granite-components-file-upload.mjs.map +1 -1
  149. package/fesm2022/ifsworld-granite-components-table.mjs +29 -32
  150. package/fesm2022/ifsworld-granite-components-table.mjs.map +1 -1
  151. package/fesm2022/ifsworld-granite-components-tooltip.mjs +15 -16
  152. package/fesm2022/ifsworld-granite-components-tooltip.mjs.map +1 -1
  153. package/fesm2022/ifsworld-granite-components.mjs +321 -340
  154. package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
  155. package/lib/contacts/contacts-trigger/contacts-trigger-data.d.ts +1 -1
  156. package/lib/core/overlay-base.d.ts +1 -1
  157. package/lib/core/radio-checkbox-base.d.ts +1 -1
  158. package/lib/menu/menu-base.d.ts +1 -1
  159. package/lib/progress-bar/progress-bar-legend-base.d.ts +1 -1
  160. package/package.json +21 -9
  161. package/src/lib/core/style/_mixins.scss +9 -10
  162. package/src/lib/core/style/_range-functions.scss +4 -6
  163. package/src/lib/core/style/_z-index.scss +4 -6
  164. package/table/lib/cell/cell.d.ts +1 -1
@@ -0,0 +1,99 @@
1
+ import { FocusMonitor } from '@angular/cdk/a11y';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter, ElementRef, ViewChild, } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/cdk/a11y";
6
+ export class GraniteCheckboxComponent {
7
+ constructor(_focusMonitor) {
8
+ this._focusMonitor = _focusMonitor;
9
+ this.id = null;
10
+ this.checked = false;
11
+ this.disabled = false;
12
+ this.readonly = false;
13
+ this.labelPosition = 'after';
14
+ this.ariaLabel = null;
15
+ this.ariaLabelledby = null;
16
+ this.valueChange = new EventEmitter();
17
+ this.checkboxChange = new EventEmitter();
18
+ this.checkboxBlur = new EventEmitter();
19
+ this._positionBefore = false;
20
+ this._checkboxDisabled = false;
21
+ }
22
+ ngOnChanges(changes) {
23
+ if (changes.checked) {
24
+ this.checked = coerceBooleanProperty(changes.checked.currentValue);
25
+ }
26
+ if (changes.disabled) {
27
+ this.disabled = coerceBooleanProperty(changes.disabled.currentValue);
28
+ }
29
+ if (changes.readonly) {
30
+ this.readonly = coerceBooleanProperty(changes.readonly.currentValue);
31
+ }
32
+ if (changes.labelPosition != null) {
33
+ this._positionBefore =
34
+ changes.labelPosition.currentValue != null &&
35
+ changes.labelPosition.currentValue === 'before';
36
+ }
37
+ if (changes.disabled || changes.readonly) {
38
+ if (this.disabled || this.readonly) {
39
+ this._checkboxDisabled = true;
40
+ }
41
+ else
42
+ this._checkboxDisabled = false;
43
+ }
44
+ }
45
+ focus(origin = 'program', options) {
46
+ this._focusMonitor.focusVia(this._getInputElement(), origin, options);
47
+ }
48
+ _onBlur() {
49
+ this.checkboxBlur.emit();
50
+ }
51
+ _checkboxChange() {
52
+ this.checked = this._getInputElement().checked;
53
+ this.valueChange.emit(this.checked);
54
+ }
55
+ _checkboxClick() {
56
+ this.checkboxChange.emit();
57
+ }
58
+ _getInputElement() {
59
+ return this._inputElement.nativeElement;
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCheckboxComponent, deps: [{ token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteCheckboxComponent, selector: "granite-checkbox", inputs: { id: "id", checked: "checked", disabled: "disabled", readonly: "readonly", labelPosition: "labelPosition", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"] }, outputs: { valueChange: "valueChange", checkboxChange: "checkboxChange", checkboxBlur: "checkboxBlur" }, host: { properties: { "class.granite-checkbox-checked": "checked", "class.granite-checkbox-disabled": "disabled", "class.granite-checkbox-readonly": "readonly", "class.granite-checkbox-label-before": "_positionBefore" }, classAttribute: "granite-checkbox" }, viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["graniteCheckbox"], usesOnChanges: true, ngImport: i0, template: "<label [attr.for]=\"id\" class=\"granite-checkbox-label\">\n <div class=\"granite-checkbox-box\">\n <input\n #input\n [id]=\"id\"\n class=\"granite-checkbox-input cdk-visually-hidden\"\n role=\"checkbox\"\n type=\"checkbox\"\n [attr.aria-checked]=\"checked.toString()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [checked]=\"checked\"\n [disabled]=\"_checkboxDisabled\"\n [readonly]=\"readonly\"\n (click)=\"_checkboxClick()\"\n (change)=\"_checkboxChange()\"\n (blur)=\"_onBlur()\"\n />\n <div class=\"granite-checkbox-check\"></div>\n </div>\n <span class=\"granite-checkbox-text\"><ng-content></ng-content></span>\n</label>\n", styles: [".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}:host{box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:inherit;cursor:pointer}:host(.granite-checkbox){color:var(--granite-color-text)}:host(.granite-checkbox):not(.granite-checkbox-checked):not(.granite-checkbox-readonly):not(.granite-checkbox-disabled) .granite-checkbox-label:hover .granite-checkbox-box{border-color:var(--granite-color-background-active)}:host(.granite-checkbox-checked):not(.granite-checkbox-readonly):not(.granite-checkbox-disabled) .granite-checkbox-box{animation:fade-in-animation .2s;animation-iteration-count:1}:host(.granite-checkbox-checked):not(.granite-checkbox-readonly):not(.granite-checkbox-disabled) .granite-checkbox-label:hover .granite-checkbox-box{background-color:var(--granite-color-background-active-hover);border-color:var(--granite-color-background-active-hover)}:host(.granite-checkbox-checked) .granite-checkbox-box{border-color:var(--granite-color-background-active);background-color:var(--granite-color-background-active)}:host(.granite-checkbox-checked) .granite-checkbox-box:focus-within{border-color:var(--granite-color-focus)}:host(.granite-checkbox-checked) .granite-checkbox-check{display:flex}:host(:not(.granite-checkbox-checked)) .granite-checkbox-box{animation:fade-out-animation .2s;animation-iteration-count:1}:host(.granite-checkbox-readonly.granite-checkbox-checked) .granite-checkbox-box{background-color:var(--granite-color-text);border-color:var(--granite-color-text)}:host(.granite-checkbox-readonly.granite-checkbox-checked) .granite-checkbox-box .granite-checkbox-check{border-color:var(--granite-color-background)}:host(.granite-checkbox-disabled) .granite-checkbox-box{opacity:.3;background-color:var(--granite-color-border-soft)}:host(.granite-checkbox-disabled) .granite-checkbox-label{opacity:.6}:host(.granite-checkbox-disabled) *{cursor:default}:host(.granite-checkbox-readonly) *{cursor:default}:host(.granite-checkbox-label-before) .granite-checkbox-label{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.granite-checkbox-label-before) .granite-checkbox-text{padding-inline-start:0;padding-inline-end:var(--granite-spacing-8)}.granite-checkbox-label{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;align-items:center;width:max-content;margin-inline-end:var(--granite-spacing-32);margin-block-end:var(--granite-spacing-4)}.granite-checkbox-box{width:1rem;height:1rem;border:solid var(--granite-color-background-inactive);border-width:.0625rem;border-radius:.25rem;display:flex;justify-content:center;position:relative}.granite-checkbox-box:focus-within{border:.0625rem solid var(--granite-color-focus)}.granite-checkbox-check{position:relative;display:none;width:.5625rem;height:.3125rem;background-color:transparent;border:solid var(--granite-color-text-static-light);transform:rotate(-45deg);margin-top:var(--granite-spacing-4);border-width:0 0 .125rem .125rem}.granite-checkbox-text{padding-inline-start:var(--granite-spacing-8);font-size:var(--granite-font-size-body-small)}.granite-checkbox-text:empty{display:none}@keyframes fade-in-animation{0%{opacity:0}to{opacity:1}}@keyframes fade-out-animation{0%{opacity:1}to{opacity:0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCheckboxComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'granite-checkbox', exportAs: 'graniteCheckbox', host: {
67
+ class: 'granite-checkbox',
68
+ '[class.granite-checkbox-checked]': 'checked',
69
+ '[class.granite-checkbox-disabled]': 'disabled',
70
+ '[class.granite-checkbox-readonly]': 'readonly',
71
+ '[class.granite-checkbox-label-before]': '_positionBefore',
72
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label [attr.for]=\"id\" class=\"granite-checkbox-label\">\n <div class=\"granite-checkbox-box\">\n <input\n #input\n [id]=\"id\"\n class=\"granite-checkbox-input cdk-visually-hidden\"\n role=\"checkbox\"\n type=\"checkbox\"\n [attr.aria-checked]=\"checked.toString()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [checked]=\"checked\"\n [disabled]=\"_checkboxDisabled\"\n [readonly]=\"readonly\"\n (click)=\"_checkboxClick()\"\n (change)=\"_checkboxChange()\"\n (blur)=\"_onBlur()\"\n />\n <div class=\"granite-checkbox-check\"></div>\n </div>\n <span class=\"granite-checkbox-text\"><ng-content></ng-content></span>\n</label>\n", styles: [".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}:host{box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:inherit;cursor:pointer}:host(.granite-checkbox){color:var(--granite-color-text)}:host(.granite-checkbox):not(.granite-checkbox-checked):not(.granite-checkbox-readonly):not(.granite-checkbox-disabled) .granite-checkbox-label:hover .granite-checkbox-box{border-color:var(--granite-color-background-active)}:host(.granite-checkbox-checked):not(.granite-checkbox-readonly):not(.granite-checkbox-disabled) .granite-checkbox-box{animation:fade-in-animation .2s;animation-iteration-count:1}:host(.granite-checkbox-checked):not(.granite-checkbox-readonly):not(.granite-checkbox-disabled) .granite-checkbox-label:hover .granite-checkbox-box{background-color:var(--granite-color-background-active-hover);border-color:var(--granite-color-background-active-hover)}:host(.granite-checkbox-checked) .granite-checkbox-box{border-color:var(--granite-color-background-active);background-color:var(--granite-color-background-active)}:host(.granite-checkbox-checked) .granite-checkbox-box:focus-within{border-color:var(--granite-color-focus)}:host(.granite-checkbox-checked) .granite-checkbox-check{display:flex}:host(:not(.granite-checkbox-checked)) .granite-checkbox-box{animation:fade-out-animation .2s;animation-iteration-count:1}:host(.granite-checkbox-readonly.granite-checkbox-checked) .granite-checkbox-box{background-color:var(--granite-color-text);border-color:var(--granite-color-text)}:host(.granite-checkbox-readonly.granite-checkbox-checked) .granite-checkbox-box .granite-checkbox-check{border-color:var(--granite-color-background)}:host(.granite-checkbox-disabled) .granite-checkbox-box{opacity:.3;background-color:var(--granite-color-border-soft)}:host(.granite-checkbox-disabled) .granite-checkbox-label{opacity:.6}:host(.granite-checkbox-disabled) *{cursor:default}:host(.granite-checkbox-readonly) *{cursor:default}:host(.granite-checkbox-label-before) .granite-checkbox-label{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.granite-checkbox-label-before) .granite-checkbox-text{padding-inline-start:0;padding-inline-end:var(--granite-spacing-8)}.granite-checkbox-label{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;align-items:center;width:max-content;margin-inline-end:var(--granite-spacing-32);margin-block-end:var(--granite-spacing-4)}.granite-checkbox-box{width:1rem;height:1rem;border:solid var(--granite-color-background-inactive);border-width:.0625rem;border-radius:.25rem;display:flex;justify-content:center;position:relative}.granite-checkbox-box:focus-within{border:.0625rem solid var(--granite-color-focus)}.granite-checkbox-check{position:relative;display:none;width:.5625rem;height:.3125rem;background-color:transparent;border:solid var(--granite-color-text-static-light);transform:rotate(-45deg);margin-top:var(--granite-spacing-4);border-width:0 0 .125rem .125rem}.granite-checkbox-text{padding-inline-start:var(--granite-spacing-8);font-size:var(--granite-font-size-body-small)}.granite-checkbox-text:empty{display:none}@keyframes fade-in-animation{0%{opacity:0}to{opacity:1}}@keyframes fade-out-animation{0%{opacity:1}to{opacity:0}}\n"] }]
73
+ }], ctorParameters: () => [{ type: i1.FocusMonitor }], propDecorators: { id: [{
74
+ type: Input
75
+ }], checked: [{
76
+ type: Input
77
+ }], disabled: [{
78
+ type: Input
79
+ }], readonly: [{
80
+ type: Input
81
+ }], labelPosition: [{
82
+ type: Input
83
+ }], ariaLabel: [{
84
+ type: Input,
85
+ args: ['aria-label']
86
+ }], ariaLabelledby: [{
87
+ type: Input,
88
+ args: ['aria-labelledby']
89
+ }], valueChange: [{
90
+ type: Output
91
+ }], checkboxChange: [{
92
+ type: Output
93
+ }], checkboxBlur: [{
94
+ type: Output
95
+ }], _inputElement: [{
96
+ type: ViewChild,
97
+ args: ['input']
98
+ }] } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUdOLFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7QUFpQnZCLE1BQU0sT0FBTyx3QkFBd0I7SUFxQ25DLFlBQW9CLGFBQTJCO1FBQTNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBbkMvQyxPQUFFLEdBQWtCLElBQUksQ0FBQztRQUd6QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixrQkFBYSxHQUFhLE9BQU8sQ0FBQztRQUdsQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUdoQyxtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFHNUIsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUdqRSxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzlELGlCQUFZLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFLckUsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO0lBRWUsQ0FBQztJQUVuRCxX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bml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgRXZlbnRFbWl0dGVyLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1jaGVja2JveCcsXG4gIGV4cG9ydEFzOiAnZ3Jhbml0ZUNoZWNrYm94JyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ3Jhbml0ZS1jaGVja2JveCcsXG4gICAgJ1tjbGFzcy5ncmFuaXRlLWNoZWNrYm94LWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGVja2JveC1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGVja2JveC1yZWFkb25seV0nOiAncmVhZG9ubHknLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGVja2JveC1sYWJlbC1iZWZvcmVdJzogJ19wb3NpdGlvbkJlZm9yZScsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBpZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBsYWJlbFBvc2l0aW9uOiBQb3NpdGlvbiA9ICdhZnRlcic7XG5cbiAgQElucHV0KCdhcmlhLWxhYmVsJylcbiAgYXJpYUxhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoJ2FyaWEtbGFiZWxsZWRieScpXG4gIGFyaWFMYWJlbGxlZGJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgY2hlY2tib3hDaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgY2hlY2tib3hCbHVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgX3Bvc2l0aW9uQmVmb3JlOiBib29sZWFuID0gZmFsc2U7XG4gIF9jaGVja2JveERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuY2hlY2tlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShjaGFuZ2VzLmNoZWNrZWQuY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShjaGFuZ2VzLmRpc2FibGVkLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMucmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmxhYmVsUG9zaXRpb24gIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcG9zaXRpb25CZWZvcmUgPVxuICAgICAgICBjaGFuZ2VzLmxhYmVsUG9zaXRpb24uY3VycmVudFZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgY2hhbmdlcy5sYWJlbFBvc2l0aW9uLmN1cnJlbnRWYWx1ZSA9PT0gJ2JlZm9yZSc7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZGlzYWJsZWQgfHwgY2hhbmdlcy5yZWFkb25seSkge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICB0aGlzLl9jaGVja2JveERpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB0aGlzLl9jaGVja2JveERpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJywgb3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRJbnB1dEVsZW1lbnQoKSwgb3JpZ2luLCBvcHRpb25zKTtcbiAgfVxuXG4gIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2JveEJsdXIuZW1pdCgpO1xuICB9XG5cbiAgX2NoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuX2dldElucHV0RWxlbWVudCgpLmNoZWNrZWQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCk7XG4gIH1cblxuICBfY2hlY2tib3hDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrYm94Q2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldElucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiIsIjxsYWJlbCBbYXR0ci5mb3JdPVwiaWRcIiBjbGFzcz1cImdyYW5pdGUtY2hlY2tib3gtbGFiZWxcIj5cbiAgPGRpdiBjbGFzcz1cImdyYW5pdGUtY2hlY2tib3gtYm94XCI+XG4gICAgPGlucHV0XG4gICAgICAjaW5wdXRcbiAgICAgIFtpZF09XCJpZFwiXG4gICAgICBjbGFzcz1cImdyYW5pdGUtY2hlY2tib3gtaW5wdXQgY2RrLXZpc3VhbGx5LWhpZGRlblwiXG4gICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkLnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcbiAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cIl9jaGVja2JveERpc2FibGVkXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAoY2xpY2spPVwiX2NoZWNrYm94Q2xpY2soKVwiXG4gICAgICAoY2hhbmdlKT1cIl9jaGVja2JveENoYW5nZSgpXCJcbiAgICAgIChibHVyKT1cIl9vbkJsdXIoKVwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZ3Jhbml0ZS1jaGVja2JveC1jaGVja1wiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJncmFuaXRlLWNoZWNrYm94LXRleHRcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuPC9sYWJlbD5cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { GraniteCheckboxComponent } from './checkbox.component';
3
+ import { GraniteCheckboxGroupComponent } from './checkbox-group.component';
4
+ import * as i0 from "@angular/core";
5
+ export class GraniteCheckboxModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteCheckboxModule, declarations: [GraniteCheckboxComponent, GraniteCheckboxGroupComponent], exports: [GraniteCheckboxComponent, GraniteCheckboxGroupComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCheckboxModule }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCheckboxModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [GraniteCheckboxComponent, GraniteCheckboxGroupComponent],
14
+ exports: [GraniteCheckboxComponent, GraniteCheckboxGroupComponent],
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFNM0UsTUFBTSxPQUFPLHFCQUFxQjsrR0FBckIscUJBQXFCO2dIQUFyQixxQkFBcUIsaUJBSGpCLHdCQUF3QixFQUFFLDZCQUE2QixhQUM1RCx3QkFBd0IsRUFBRSw2QkFBNkI7Z0hBRXRELHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFKakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDdkUsT0FBTyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsNkJBQTZCLENBQUM7aUJBQ25FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyYW5pdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDaGVja2JveEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHcmFuaXRlQ2hlY2tib3hDb21wb25lbnQsIEdyYW5pdGVDaGVja2JveEdyb3VwQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0dyYW5pdGVDaGVja2JveENvbXBvbmVudCwgR3Jhbml0ZUNoZWNrYm94R3JvdXBDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlQ2hlY2tib3hNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,195 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { BACKSPACE, ENTER, hasModifierKey, TAB } from '@angular/cdk/keycodes';
3
+ import { Directive, ElementRef, EventEmitter, Input, Output, } from '@angular/core';
4
+ import { GraniteChipListComponent } from './chip-list.component';
5
+ import * as i0 from "@angular/core";
6
+ let nextUniqueId = 0;
7
+ export class GraniteChipInputDirective {
8
+ /** Register input for chip list */
9
+ set graniteChipInputFor(value) {
10
+ if (value) {
11
+ this._chipList = value;
12
+ this._chipList.registerInput(this);
13
+ }
14
+ }
15
+ /**
16
+ * Whether or not the chipEnd event will be emitted when the input is blurred.
17
+ */
18
+ get graniteChipInputAddOnBlur() {
19
+ return this._addOnBlur;
20
+ }
21
+ set graniteChipInputAddOnBlur(value) {
22
+ this._addOnBlur = coerceBooleanProperty(value);
23
+ }
24
+ /**
25
+ * Whether this is a required field, currently we use it only for setting aria-required.
26
+ */
27
+ get required() {
28
+ return this._required;
29
+ }
30
+ set required(value) {
31
+ this._required = coerceBooleanProperty(value);
32
+ }
33
+ /** Whether the input is disabled. */
34
+ get disabled() {
35
+ return this._disabled || (this._chipList && this._chipList.disabled);
36
+ }
37
+ set disabled(value) {
38
+ this._disabled = coerceBooleanProperty(value);
39
+ }
40
+ /** Whether the input is empty. */
41
+ get empty() {
42
+ return !this.inputElement.value;
43
+ }
44
+ constructor(_elementRef) {
45
+ this._elementRef = _elementRef;
46
+ /** Unique id for the input. */
47
+ this.id = `granite-chip-list-input-${nextUniqueId++}`;
48
+ /** The input's placeholder text. */
49
+ this.placeholder = '';
50
+ /** Emitted when a chip is to be added. */
51
+ this.graniteChipInputTokenEnd = new EventEmitter();
52
+ /**
53
+ * The list of key codes that will trigger a chipEnd event.
54
+ *
55
+ * Defaults to `[ENTER]`.
56
+ */
57
+ this.graniteChipInputSeparatorKeyCodes = [
58
+ ENTER,
59
+ ];
60
+ this._addOnBlur = true;
61
+ this.focused = false;
62
+ this._disabled = false;
63
+ this.inputElement = this._elementRef.nativeElement;
64
+ }
65
+ ngOnChanges() {
66
+ this._chipList.stateChanges.next();
67
+ }
68
+ ngOnDestroy() {
69
+ this.graniteChipInputTokenEnd.complete();
70
+ }
71
+ ngAfterContentInit() {
72
+ this._focusLastChipOnBackspace = this.empty;
73
+ }
74
+ /** Utility method to make host definition/tests more clear. */
75
+ _keydown(event) {
76
+ if (event) {
77
+ // Allow the user's focus to escape when they're tabbing forward. Note that we don't
78
+ // want to do this when going backwards, because focus should go back to the first chip.
79
+ if (event.keyCode === TAB && !hasModifierKey(event, 'shiftKey')) {
80
+ this._chipList._allowFocusEscape();
81
+ }
82
+ // To prevent the user from accidentally deleting chips when pressing BACKSPACE continuously,
83
+ // We focus the last chip on backspace only after the user has released the backspace button,
84
+ // and the input is empty (see behaviour in _keyup)
85
+ if (event.keyCode === BACKSPACE && this._focusLastChipOnBackspace) {
86
+ this._chipList._keyManager.setLastItemActive();
87
+ event.preventDefault();
88
+ return;
89
+ }
90
+ else {
91
+ this._focusLastChipOnBackspace = false;
92
+ }
93
+ }
94
+ this._emitChipEnd(event);
95
+ }
96
+ /**
97
+ * Pass events to the keyboard manager. Available here for tests.
98
+ */
99
+ _keyup(event) {
100
+ // Allow user to move focus to chips next time he presses backspace
101
+ if (!this._focusLastChipOnBackspace &&
102
+ event.keyCode === BACKSPACE &&
103
+ this.empty) {
104
+ this._focusLastChipOnBackspace = true;
105
+ event.preventDefault();
106
+ }
107
+ }
108
+ /** Checks to see if the blur should emit the (chipEnd) event. */
109
+ _blur() {
110
+ if (this.graniteChipInputAddOnBlur) {
111
+ this._emitChipEnd();
112
+ }
113
+ this.focused = false;
114
+ // Blur the chip list if it is not focused
115
+ if (!this._chipList.focused) {
116
+ this._chipList._blur();
117
+ }
118
+ this._chipList.stateChanges.next();
119
+ }
120
+ _focus() {
121
+ this.focused = true;
122
+ this._focusLastChipOnBackspace = this.empty;
123
+ this._chipList.stateChanges.next();
124
+ }
125
+ /** Checks to see if the (chipEnd) event needs to be emitted. */
126
+ _emitChipEnd(event) {
127
+ if (!this.inputElement.value && !!event) {
128
+ this._chipList._keydown(event);
129
+ }
130
+ if (!event || this._isSeparatorKey(event)) {
131
+ this.graniteChipInputTokenEnd.emit({
132
+ input: this.inputElement,
133
+ value: this.inputElement.value,
134
+ chipInput: this,
135
+ });
136
+ event?.preventDefault();
137
+ }
138
+ }
139
+ _onInput() {
140
+ // Let chip list know whenever the value changes.
141
+ this._chipList.stateChanges.next();
142
+ }
143
+ /** Focuses the input (called from parent level). */
144
+ setFocus(options) {
145
+ this.inputElement.focus(options);
146
+ }
147
+ /** Clears the input */
148
+ clear() {
149
+ this.inputElement.value = '';
150
+ this._focusLastChipOnBackspace = true;
151
+ }
152
+ /** Checks whether a keycode is one of the configured separators. */
153
+ _isSeparatorKey(event) {
154
+ return (!hasModifierKey(event) &&
155
+ new Set(this.graniteChipInputSeparatorKeyCodes).has(event.keyCode));
156
+ }
157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipInputDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
158
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GraniteChipInputDirective, selector: "input[graniteChipInputFor]", inputs: { id: "id", placeholder: "placeholder", graniteChipInputFor: "graniteChipInputFor", graniteChipInputSeparatorKeyCodes: "graniteChipInputSeparatorKeyCodes", graniteChipInputAddOnBlur: "graniteChipInputAddOnBlur", required: "required", disabled: "disabled" }, outputs: { graniteChipInputTokenEnd: "graniteChipInputTokenEnd" }, host: { listeners: { "keydown": "_keydown($event)", "keyup": "_keyup($event)", "blur": "_blur()", "focus": "_focus()", "input": "_onInput()" }, properties: { "id": "id", "attr.disabled": "disabled || null", "attr.placeholder": "placeholder || null", "attr.aria-required": "required || null" }, classAttribute: "granite-chip-input" }, exportAs: ["graniteChipInput", "graniteChipInputFor"], usesOnChanges: true, ngImport: i0 }); }
159
+ }
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipInputDirective, decorators: [{
161
+ type: Directive,
162
+ args: [{
163
+ selector: 'input[graniteChipInputFor]',
164
+ exportAs: 'graniteChipInput, graniteChipInputFor',
165
+ host: {
166
+ class: 'granite-chip-input',
167
+ '[id]': 'id',
168
+ '[attr.disabled]': 'disabled || null',
169
+ '[attr.placeholder]': 'placeholder || null',
170
+ '[attr.aria-required]': 'required || null',
171
+ '(keydown)': '_keydown($event)',
172
+ '(keyup)': '_keyup($event)',
173
+ '(blur)': '_blur()',
174
+ '(focus)': '_focus()',
175
+ '(input)': '_onInput()',
176
+ },
177
+ }]
178
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { id: [{
179
+ type: Input
180
+ }], placeholder: [{
181
+ type: Input
182
+ }], graniteChipInputTokenEnd: [{
183
+ type: Output
184
+ }], graniteChipInputFor: [{
185
+ type: Input
186
+ }], graniteChipInputSeparatorKeyCodes: [{
187
+ type: Input
188
+ }], graniteChipInputAddOnBlur: [{
189
+ type: Input
190
+ }], required: [{
191
+ type: Input
192
+ }], disabled: [{
193
+ type: Input
194
+ }] } });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY2hpcHMvY2hpcC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUUsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBeUJqRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFrQnJCLE1BQU0sT0FBTyx5QkFBeUI7SUFhcEMsbUNBQW1DO0lBQ25DLElBQ0ksbUJBQW1CLENBQUMsS0FBK0I7UUFDckQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBWUQ7O09BRUc7SUFDSCxJQUNJLHlCQUF5QjtRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUkseUJBQXlCLENBQUMsS0FBYztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFHRDs7T0FFRztJQUNILElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENB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QkFEaEMsS0FBSztnQkFTRix5QkFBeUI7c0JBRDVCLEtBQUs7Z0JBYUYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQkFDS1NQQUNFLCBFTlRFUiwgaGFzTW9kaWZpZXJLZXksIFRBQiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3Jhbml0ZUNoaXBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGlwLWxpc3QuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBHcmFuaXRlQ2hpcFRleHRDb250cm9sIHtcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGV4dCBjb250cm9sLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogVGhlIHRleHQgY29udHJvbCdzIHBsYWNlaG9sZGVyIHRleHQuICovXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSB0ZXh0IGNvbnRyb2wgaGFzIGJyb3dzZXIgZm9jdXMuICovXG4gIGZvY3VzZWQ6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSB0ZXh0IGNvbnRyb2wgaXMgZW1wdHkuICovXG4gIGVtcHR5OiBib29sZWFuO1xuICAvKiogRm9jdXNlcyB0aGUgdGV4dCBjb250cm9sLiAqL1xuICBzZXRGb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gaW5wdXQgZXZlbnQgb24gYSBgZ3Jhbml0ZUNoaXBJbnB1dGAuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYW5pdGVDaGlwSW5wdXRFdmVudCB7XG4gIC8qKiBUaGUgbmF0aXZlIGA8aW5wdXQ+YCBlbGVtZW50IHRoYXQgdGhlIGV2ZW50IGlzIGJlaW5nIGZpcmVkIGZvci4gKi9cbiAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LiAqL1xuICB2YWx1ZTogc3RyaW5nO1xuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBjaGlwIGlucHV0IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuICovXG4gIGNoaXBJbnB1dDogR3Jhbml0ZUNoaXBJbnB1dERpcmVjdGl2ZTtcbn1cblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W2dyYW5pdGVDaGlwSW5wdXRGb3JdJyxcbiAgZXhwb3J0QXM6ICdncmFuaXRlQ2hpcElucHV0LCBncmFuaXRlQ2hpcElucHV0Rm9yJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ3Jhbml0ZS1jaGlwLWlucHV0JyxcbiAgICAnW2lkXSc6ICdpZCcsXG4gICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyIHx8IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLXJlcXVpcmVkXSc6ICdyZXF1aXJlZCB8fCBudWxsJyxcbiAgICAnKGtleWRvd24pJzogJ19rZXlkb3duKCRldmVudCknLFxuICAgICcoa2V5dXApJzogJ19rZXl1cCgkZXZlbnQpJyxcbiAgICAnKGJsdXIpJzogJ19ibHVyKCknLFxuICAgICcoZm9jdXMpJzogJ19mb2N1cygpJyxcbiAgICAnKGlucHV0KSc6ICdfb25JbnB1dCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNoaXBJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIEdyYW5pdGVDaGlwVGV4dENvbnRyb2wsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0XG57XG4gIC8qKiBVbmlxdWUgaWQgZm9yIHRoZSBpbnB1dC4gKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBncmFuaXRlLWNoaXAtbGlzdC1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgLyoqIFRoZSBpbnB1dCdzIHBsYWNlaG9sZGVyIHRleHQuICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAvKiogRW1pdHRlZCB3aGVuIGEgY2hpcCBpcyB0byBiZSBhZGRlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGdyYW5pdGVDaGlwSW5wdXRUb2tlbkVuZCA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcElucHV0RXZlbnQ+KCk7XG5cbiAgLyoqIFJlZ2lzdGVyIGlucHV0IGZvciBjaGlwIGxpc3QgKi9cbiAgQElucHV0KClcbiAgc2V0IGdyYW5pdGVDaGlwSW5wdXRGb3IodmFsdWU6IEdyYW5pdGVDaGlwTGlzdENvbXBvbmVudCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fY2hpcExpc3QgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX2NoaXBMaXN0LnJlZ2lzdGVySW5wdXQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGtleSBjb2RlcyB0aGF0IHdpbGwgdHJpZ2dlciBhIGNoaXBFbmQgZXZlbnQuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBbRU5URVJdYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdyYW5pdGVDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlczogcmVhZG9ubHkgbnVtYmVyW10gfCBSZWFkb25seVNldDxudW1iZXI+ID0gW1xuICAgIEVOVEVSLFxuICBdIGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2hpcEVuZCBldmVudCB3aWxsIGJlIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgaXMgYmx1cnJlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBncmFuaXRlQ2hpcElucHV0QWRkT25CbHVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hZGRPbkJsdXI7XG4gIH1cbiAgc2V0IGdyYW5pdGVDaGlwSW5wdXRBZGRPbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hZGRPbkJsdXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF9hZGRPbkJsdXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSByZXF1aXJlZCBmaWVsZCwgY3VycmVudGx5IHdlIHVzZSBpdCBvbmx5IGZvciBzZXR0aW5nIGFyaWEtcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgdG8gd2hpY2ggdGhpcyBkaXJlY3RpdmUgaXMgYXR0YWNoZWQuICovXG4gIHJlYWRvbmx5IGlucHV0RWxlbWVudCE6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIF9jaGlwTGlzdDogR3Jhbml0ZUNoaXBMaXN0Q29tcG9uZW50O1xuICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgKHRoaXMuX2NoaXBMaXN0ICYmIHRoaXMuX2NoaXBMaXN0LmRpc2FibGVkKTtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgZW1wdHkuICovXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBwcmV2ZW50IGZvY3VzIG1vdmluZyB0byBjaGlwcyB3aGlsZSB1c2VyIGlzIGhvbGRpbmcgYmFja3NwYWNlICovXG4gIHByaXZhdGUgX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pIHtcbiAgICB0aGlzLmlucHV0RWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZ3Jhbml0ZUNoaXBJbnB1dFRva2VuRW5kLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlID0gdGhpcy5lbXB0eTtcbiAgfVxuXG4gIC8qKiBVdGlsaXR5IG1ldGhvZCB0byBtYWtlIGhvc3QgZGVmaW5pdGlvbi90ZXN0cyBtb3JlIGNsZWFyLiAqL1xuICBfa2V5ZG93bihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIC8vIEFsbG93IHRoZSB1c2VyJ3MgZm9jdXMgdG8gZXNjYXBlIHdoZW4gdGhleSdyZSB0YWJiaW5nIGZvcndhcmQuIE5vdGUgdGhhdCB3ZSBkb24ndFxuICAgICAgLy8gd2FudCB0byBkbyB0aGlzIHdoZW4gZ29pbmcgYmFja3dhcmRzLCBiZWNhdXNlIGZvY3VzIHNob3VsZCBnbyBiYWNrIHRvIHRoZSBmaXJzdCBjaGlwLlxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFRBQiAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdzaGlmdEtleScpKSB7XG4gICAgICAgIHRoaXMuX2NoaXBMaXN0Ll9hbGxvd0ZvY3VzRXNjYXBlKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgZGVsZXRpbmcgY2hpcHMgd2hlbiBwcmVzc2luZyBCQUNLU1BBQ0UgY29udGludW91c2x5LFxuICAgICAgLy8gV2UgZm9jdXMgdGhlIGxhc3QgY2hpcCBvbiBiYWNrc3BhY2Ugb25seSBhZnRlciB0aGUgdXNlciBoYXMgcmVsZWFzZWQgdGhlIGJhY2tzcGFjZSBidXR0b24sXG4gICAgICAvLyBhbmQgdGhlIGlucHV0IGlzIGVtcHR5IChzZWUgYmVoYXZpb3VyIGluIF9rZXl1cClcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBCQUNLU1BBQ0UgJiYgdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlKSB7XG4gICAgICAgIHRoaXMuX2NoaXBMaXN0Ll9rZXlNYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2VtaXRDaGlwRW5kKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXNzIGV2ZW50cyB0byB0aGUga2V5Ym9hcmQgbWFuYWdlci4gQXZhaWxhYmxlIGhlcmUgZm9yIHRlc3RzLlxuICAgKi9cbiAgX2tleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gQWxsb3cgdXNlciB0byBtb3ZlIGZvY3VzIHRvIGNoaXBzIG5leHQgdGltZSBoZSBwcmVzc2VzIGJhY2tzcGFjZVxuICAgIGlmIChcbiAgICAgICF0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2UgJiZcbiAgICAgIGV2ZW50LmtleUNvZGUgPT09IEJBQ0tTUEFDRSAmJlxuICAgICAgdGhpcy5lbXB0eVxuICAgICkge1xuICAgICAgdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlID0gdHJ1ZTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIGJsdXIgc2hvdWxkIGVtaXQgdGhlIChjaGlwRW5kKSBldmVudC4gKi9cbiAgX2JsdXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ3Jhbml0ZUNoaXBJbnB1dEFkZE9uQmx1cikge1xuICAgICAgdGhpcy5fZW1pdENoaXBFbmQoKTtcbiAgICB9XG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgLy8gQmx1ciB0aGUgY2hpcCBsaXN0IGlmIGl0IGlzIG5vdCBmb2N1c2VkXG4gICAgaWYgKCF0aGlzLl9jaGlwTGlzdC5mb2N1c2VkKSB7XG4gICAgICB0aGlzLl9jaGlwTGlzdC5fYmx1cigpO1xuICAgIH1cbiAgICB0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgX2ZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlID0gdGhpcy5lbXB0eTtcbiAgICB0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqIENoZWNrcyB0byBzZWUgaWYgdGhlIChjaGlwRW5kKSBldmVudCBuZWVkcyB0byBiZSBlbWl0dGVkLiAqL1xuICBfZW1pdENoaXBFbmQoZXZlbnQ/OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSAmJiAhIWV2ZW50KSB7XG4gICAgICB0aGlzLl9jaGlwTGlzdC5fa2V5ZG93bihldmVudCk7XG4gICAgfVxuXG4gICAgaWYgKCFldmVudCB8fCB0aGlzLl9pc1NlcGFyYXRvcktleShldmVudCkpIHtcbiAgICAgIHRoaXMuZ3Jhbml0ZUNoaXBJbnB1dFRva2VuRW5kLmVtaXQoe1xuICAgICAgICBpbnB1dDogdGhpcy5pbnB1dEVsZW1lbnQsXG4gICAgICAgIHZhbHVlOiB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSxcbiAgICAgICAgY2hpcElucHV0OiB0aGlzLFxuICAgICAgfSk7XG5cbiAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIF9vbklucHV0KCk6IHZvaWQge1xuICAgIC8vIExldCBjaGlwIGxpc3Qga25vdyB3aGVuZXZlciB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICB0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGlucHV0IChjYWxsZWQgZnJvbSBwYXJlbnQgbGV2ZWwpLiAqL1xuICBzZXRGb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKiogQ2xlYXJzIHRoZSBpbnB1dCAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZSA9IHRydWU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgYSBrZXljb2RlIGlzIG9uZSBvZiB0aGUgY29uZmlndXJlZCBzZXBhcmF0b3JzLiAqL1xuICBwcml2YXRlIF9pc1NlcGFyYXRvcktleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpICYmXG4gICAgICBuZXcgU2V0KHRoaXMuZ3Jhbml0ZUNoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzKS5oYXMoZXZlbnQua2V5Q29kZSlcbiAgICApO1xuICB9XG59XG4iXX0=