@entake/particle 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +396 -0
  3. package/app/modules/accordion/accordion.component.d.ts +26 -0
  4. package/app/modules/accordion/accordion.module.d.ts +11 -0
  5. package/app/modules/accordion/directives/accordion-content.directive.d.ts +8 -0
  6. package/app/modules/accordion/directives/accordion-header.directive.d.ts +8 -0
  7. package/app/modules/accordion/directives/accordion-item.directive.d.ts +13 -0
  8. package/app/modules/background-carousel/background-carousel.directive.d.ts +42 -0
  9. package/app/modules/background-carousel/carousel-options.model.d.ts +30 -0
  10. package/app/modules/background-carousel/particle-background-carousel.module.d.ts +8 -0
  11. package/app/modules/checkbox/checkbox.component.d.ts +43 -0
  12. package/app/modules/checkbox/checkbox.module.d.ts +9 -0
  13. package/app/modules/color-picker/color-picker.component.d.ts +149 -0
  14. package/app/modules/color-picker/color-picker.module.d.ts +9 -0
  15. package/app/modules/date-picker/components/calendar/calendar.component.d.ts +211 -0
  16. package/app/modules/date-picker/components/date-range-picker/date-range-picker.component.d.ts +95 -0
  17. package/app/modules/date-picker/date-picker.component.d.ts +259 -0
  18. package/app/modules/date-picker/date-picker.module.d.ts +15 -0
  19. package/app/modules/dialog/dialog.component.d.ts +87 -0
  20. package/app/modules/dialog/dialog.module.d.ts +9 -0
  21. package/app/modules/dropdown/dropdown.component.d.ts +288 -0
  22. package/app/modules/dropdown/dropdown.module.d.ts +9 -0
  23. package/app/modules/dropdown/models/dropdown-option-group.model.d.ts +16 -0
  24. package/app/modules/dropdown/models/dropdown-option.model.d.ts +25 -0
  25. package/app/modules/endpoint-state/components/endpoint-state.component.d.ts +46 -0
  26. package/app/modules/endpoint-state/endpoint-state.module.d.ts +8 -0
  27. package/app/modules/icons/components/icon-select.component.d.ts +229 -0
  28. package/app/modules/icons/models/fontawesome-icons-brands.model.d.ts +13 -0
  29. package/app/modules/icons/models/fontawesome-icons-regular.model.d.ts +13 -0
  30. package/app/modules/icons/models/fontawesome-icons-solid.model.d.ts +13 -0
  31. package/app/modules/icons/models/particle-icons-light.model.d.ts +197 -0
  32. package/app/modules/icons/models/particle-icons-regular.model.d.ts +205 -0
  33. package/app/modules/icons/models/particle-icons-solid.model.d.ts +365 -0
  34. package/app/modules/icons/particle-icons.module.d.ts +13 -0
  35. package/app/modules/icons/services/icons.service.d.ts +44 -0
  36. package/app/modules/idle-timeout/idle-timeout.component.d.ts +35 -0
  37. package/app/modules/idle-timeout/idle-timer.d.ts +14 -0
  38. package/app/modules/idle-timeout/particle-idle-timeout.module.d.ts +9 -0
  39. package/app/modules/input-mask/input-mask.component.d.ts +86 -0
  40. package/app/modules/input-mask/input-mask.module.d.ts +8 -0
  41. package/app/modules/keyfilter/keyfilter.directive.d.ts +60 -0
  42. package/app/modules/keyfilter/keyfilter.module.d.ts +8 -0
  43. package/app/modules/layout/components/layout-full-framing/layout-full-framing.component.d.ts +27 -0
  44. package/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +23 -0
  45. package/app/modules/layout/layout.module.d.ts +10 -0
  46. package/app/modules/loader/components/loader.component.d.ts +11 -0
  47. package/app/modules/loader/loader.module.d.ts +8 -0
  48. package/app/modules/multi-select/models/multi-select-option-group.model.d.ts +16 -0
  49. package/app/modules/multi-select/models/multi-select-option.model.d.ts +25 -0
  50. package/app/modules/multi-select/multi-select.component.d.ts +279 -0
  51. package/app/modules/multi-select/multi-select.module.d.ts +8 -0
  52. package/app/modules/notification/models/notification.model.d.ts +21 -0
  53. package/app/modules/notification/notification.component.d.ts +46 -0
  54. package/app/modules/notification/notification.module.d.ts +8 -0
  55. package/app/modules/notification/services/notification.service.d.ts +54 -0
  56. package/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.d.ts +8 -0
  57. package/app/modules/ordinal-number-pipe/ordinal-number.pipe.d.ts +15 -0
  58. package/app/modules/paginator/pagination-event.model.d.ts +24 -0
  59. package/app/modules/paginator/paginator.component.d.ts +103 -0
  60. package/app/modules/paginator/particle-paginator.module.d.ts +13 -0
  61. package/app/modules/popover/popover.component.d.ts +140 -0
  62. package/app/modules/popover/popover.module.d.ts +9 -0
  63. package/app/modules/profile-pic/particle-profile-pic.module.d.ts +9 -0
  64. package/app/modules/profile-pic/profile-pic.component.d.ts +32 -0
  65. package/app/modules/progress-bar/progress-bar.component.d.ts +16 -0
  66. package/app/modules/progress-bar/progress-bar.module.d.ts +8 -0
  67. package/app/modules/push-container/particle-push-container.module.d.ts +9 -0
  68. package/app/modules/push-container/push-container-state.model.d.ts +7 -0
  69. package/app/modules/push-container/push-container.component.d.ts +137 -0
  70. package/app/modules/rich-text/particle-rich-text.module.d.ts +15 -0
  71. package/app/modules/rich-text/render-rich-text.component.d.ts +6 -0
  72. package/app/modules/rich-text/rich-text-capabilities.model.d.ts +7 -0
  73. package/app/modules/rich-text/rich-text.component.d.ts +48 -0
  74. package/app/modules/scroll-to-top/particle-scroll-to-top.module.d.ts +8 -0
  75. package/app/modules/scroll-to-top/scroll-to-top.component.d.ts +19 -0
  76. package/app/modules/slideover/particle-slideover.module.d.ts +8 -0
  77. package/app/modules/slideover/slideover.component.d.ts +35 -0
  78. package/app/modules/slider/slider.component.d.ts +143 -0
  79. package/app/modules/slider/slider.module.d.ts +9 -0
  80. package/app/modules/theming/components/theming.component.d.ts +43 -0
  81. package/app/modules/theming/models/theme.model.d.ts +88 -0
  82. package/app/modules/theming/services/theme-change-detection.service.d.ts +26 -0
  83. package/app/modules/theming/services/theming.service.d.ts +142 -0
  84. package/app/modules/theming/theming.module.d.ts +12 -0
  85. package/app/modules/toggle-switch/models/toggle-options.model.d.ts +11 -0
  86. package/app/modules/toggle-switch/toggle-switch.component.d.ts +43 -0
  87. package/app/modules/toggle-switch/toggle-switch.module.d.ts +8 -0
  88. package/app/modules/tooltip/tooltip.directive.d.ts +157 -0
  89. package/app/modules/tooltip/tooltip.module.d.ts +8 -0
  90. package/app/modules/week-picker/week-picker.component.d.ts +289 -0
  91. package/app/modules/week-picker/week-picker.module.d.ts +13 -0
  92. package/app/shared/enums/endpoint-status.enum.d.ts +9 -0
  93. package/app/shared/interceptors/json.interceptor.d.ts +17 -0
  94. package/app/shared/models/auditable.model.d.ts +21 -0
  95. package/app/shared/models/data-list.model.d.ts +9 -0
  96. package/app/shared/models/id.model.d.ts +9 -0
  97. package/app/shared/models/observable-container.d.ts +8 -0
  98. package/app/shared/models/particle-component-text.model.d.ts +211 -0
  99. package/app/shared/services/base-data.service.d.ts +130 -0
  100. package/app/shared/services/dialog.service.d.ts +10 -0
  101. package/app/shared/services/local-storage.service.d.ts +41 -0
  102. package/esm2022/app/modules/accordion/accordion.component.mjs +101 -0
  103. package/esm2022/app/modules/accordion/accordion.module.mjs +37 -0
  104. package/esm2022/app/modules/accordion/directives/accordion-content.directive.mjs +17 -0
  105. package/esm2022/app/modules/accordion/directives/accordion-header.directive.mjs +17 -0
  106. package/esm2022/app/modules/accordion/directives/accordion-item.directive.mjs +36 -0
  107. package/esm2022/app/modules/background-carousel/background-carousel.directive.mjs +91 -0
  108. package/esm2022/app/modules/background-carousel/carousel-options.model.mjs +36 -0
  109. package/esm2022/app/modules/background-carousel/particle-background-carousel.module.mjs +24 -0
  110. package/esm2022/app/modules/checkbox/checkbox.component.mjs +108 -0
  111. package/esm2022/app/modules/checkbox/checkbox.module.mjs +28 -0
  112. package/esm2022/app/modules/color-picker/color-picker.component.mjs +306 -0
  113. package/esm2022/app/modules/color-picker/color-picker.module.mjs +19 -0
  114. package/esm2022/app/modules/date-picker/components/calendar/calendar.component.mjs +496 -0
  115. package/esm2022/app/modules/date-picker/components/date-range-picker/date-range-picker.component.mjs +250 -0
  116. package/esm2022/app/modules/date-picker/date-picker.component.mjs +538 -0
  117. package/esm2022/app/modules/date-picker/date-picker.module.mjs +56 -0
  118. package/esm2022/app/modules/dialog/dialog.component.mjs +177 -0
  119. package/esm2022/app/modules/dialog/dialog.module.mjs +28 -0
  120. package/esm2022/app/modules/dropdown/dropdown.component.mjs +682 -0
  121. package/esm2022/app/modules/dropdown/dropdown.module.mjs +28 -0
  122. package/esm2022/app/modules/dropdown/models/dropdown-option-group.model.mjs +2 -0
  123. package/esm2022/app/modules/dropdown/models/dropdown-option.model.mjs +2 -0
  124. package/esm2022/app/modules/endpoint-state/components/endpoint-state.component.mjs +75 -0
  125. package/esm2022/app/modules/endpoint-state/endpoint-state.module.mjs +22 -0
  126. package/esm2022/app/modules/icons/components/icon-select.component.mjs +377 -0
  127. package/esm2022/app/modules/icons/models/fontawesome-icons-brands.model.mjs +471 -0
  128. package/esm2022/app/modules/icons/models/fontawesome-icons-regular.model.mjs +166 -0
  129. package/esm2022/app/modules/icons/models/fontawesome-icons-solid.model.mjs +1016 -0
  130. package/esm2022/app/modules/icons/models/particle-icons-light.model.mjs +310 -0
  131. package/esm2022/app/modules/icons/models/particle-icons-regular.model.mjs +324 -0
  132. package/esm2022/app/modules/icons/models/particle-icons-solid.model.mjs +581 -0
  133. package/esm2022/app/modules/icons/particle-icons.module.mjs +66 -0
  134. package/esm2022/app/modules/icons/services/icons.service.mjs +86 -0
  135. package/esm2022/app/modules/idle-timeout/idle-timeout.component.mjs +85 -0
  136. package/esm2022/app/modules/idle-timeout/idle-timer.mjs +66 -0
  137. package/esm2022/app/modules/idle-timeout/particle-idle-timeout.module.mjs +28 -0
  138. package/esm2022/app/modules/input-mask/input-mask.component.mjs +594 -0
  139. package/esm2022/app/modules/input-mask/input-mask.module.mjs +18 -0
  140. package/esm2022/app/modules/keyfilter/keyfilter.directive.mjs +158 -0
  141. package/esm2022/app/modules/keyfilter/keyfilter.module.mjs +18 -0
  142. package/esm2022/app/modules/layout/components/layout-full-framing/layout-full-framing.component.mjs +79 -0
  143. package/esm2022/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.mjs +65 -0
  144. package/esm2022/app/modules/layout/layout.module.mjs +33 -0
  145. package/esm2022/app/modules/loader/components/loader.component.mjs +30 -0
  146. package/esm2022/app/modules/loader/loader.module.mjs +24 -0
  147. package/esm2022/app/modules/multi-select/models/multi-select-option-group.model.mjs +2 -0
  148. package/esm2022/app/modules/multi-select/models/multi-select-option.model.mjs +2 -0
  149. package/esm2022/app/modules/multi-select/multi-select.component.mjs +665 -0
  150. package/esm2022/app/modules/multi-select/multi-select.module.mjs +18 -0
  151. package/esm2022/app/modules/notification/models/notification.model.mjs +2 -0
  152. package/esm2022/app/modules/notification/notification.component.mjs +122 -0
  153. package/esm2022/app/modules/notification/notification.module.mjs +18 -0
  154. package/esm2022/app/modules/notification/services/notification.service.mjs +84 -0
  155. package/esm2022/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.mjs +20 -0
  156. package/esm2022/app/modules/ordinal-number-pipe/ordinal-number.pipe.mjs +49 -0
  157. package/esm2022/app/modules/paginator/pagination-event.model.mjs +29 -0
  158. package/esm2022/app/modules/paginator/paginator.component.mjs +207 -0
  159. package/esm2022/app/modules/paginator/particle-paginator.module.mjs +48 -0
  160. package/esm2022/app/modules/popover/popover.component.mjs +352 -0
  161. package/esm2022/app/modules/popover/popover.module.mjs +24 -0
  162. package/esm2022/app/modules/profile-pic/particle-profile-pic.module.mjs +28 -0
  163. package/esm2022/app/modules/profile-pic/profile-pic.component.mjs +74 -0
  164. package/esm2022/app/modules/progress-bar/progress-bar.component.mjs +43 -0
  165. package/esm2022/app/modules/progress-bar/progress-bar.module.mjs +24 -0
  166. package/esm2022/app/modules/push-container/particle-push-container.module.mjs +26 -0
  167. package/esm2022/app/modules/push-container/push-container-state.model.mjs +2 -0
  168. package/esm2022/app/modules/push-container/push-container.component.mjs +363 -0
  169. package/esm2022/app/modules/rich-text/particle-rich-text.module.mjs +64 -0
  170. package/esm2022/app/modules/rich-text/render-rich-text.component.mjs +18 -0
  171. package/esm2022/app/modules/rich-text/rich-text-capabilities.model.mjs +2 -0
  172. package/esm2022/app/modules/rich-text/rich-text.component.mjs +187 -0
  173. package/esm2022/app/modules/scroll-to-top/particle-scroll-to-top.module.mjs +24 -0
  174. package/esm2022/app/modules/scroll-to-top/scroll-to-top.component.mjs +49 -0
  175. package/esm2022/app/modules/slideover/particle-slideover.module.mjs +24 -0
  176. package/esm2022/app/modules/slideover/slideover.component.mjs +115 -0
  177. package/esm2022/app/modules/slider/slider.component.mjs +243 -0
  178. package/esm2022/app/modules/slider/slider.module.mjs +26 -0
  179. package/esm2022/app/modules/theming/components/theming.component.mjs +86 -0
  180. package/esm2022/app/modules/theming/models/theme.model.mjs +9 -0
  181. package/esm2022/app/modules/theming/services/theme-change-detection.service.mjs +38 -0
  182. package/esm2022/app/modules/theming/services/theming.service.mjs +507 -0
  183. package/esm2022/app/modules/theming/theming.module.mjs +55 -0
  184. package/esm2022/app/modules/toggle-switch/models/toggle-options.model.mjs +2 -0
  185. package/esm2022/app/modules/toggle-switch/toggle-switch.component.mjs +107 -0
  186. package/esm2022/app/modules/toggle-switch/toggle-switch.module.mjs +24 -0
  187. package/esm2022/app/modules/tooltip/tooltip.directive.mjs +381 -0
  188. package/esm2022/app/modules/tooltip/tooltip.module.mjs +18 -0
  189. package/esm2022/app/modules/week-picker/week-picker.component.mjs +511 -0
  190. package/esm2022/app/modules/week-picker/week-picker.module.mjs +40 -0
  191. package/esm2022/app/shared/enums/endpoint-status.enum.mjs +11 -0
  192. package/esm2022/app/shared/interceptors/json.interceptor.mjs +23 -0
  193. package/esm2022/app/shared/models/auditable.model.mjs +2 -0
  194. package/esm2022/app/shared/models/data-list.model.mjs +2 -0
  195. package/esm2022/app/shared/models/id.model.mjs +2 -0
  196. package/esm2022/app/shared/models/observable-container.mjs +15 -0
  197. package/esm2022/app/shared/models/particle-component-text.model.mjs +2 -0
  198. package/esm2022/app/shared/services/base-data.service.mjs +190 -0
  199. package/esm2022/app/shared/services/dialog.service.mjs +50 -0
  200. package/esm2022/app/shared/services/local-storage.service.mjs +60 -0
  201. package/esm2022/entake-particle.mjs +5 -0
  202. package/esm2022/public_api.mjs +98 -0
  203. package/fesm2022/entake-particle.mjs +12477 -0
  204. package/fesm2022/entake-particle.mjs.map +1 -0
  205. package/index.d.ts +5 -0
  206. package/package.json +65 -0
  207. package/particle.css +1 -0
  208. package/public_api.d.ts +97 -0
@@ -0,0 +1,187 @@
1
+ import { Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { Editor } from '@tiptap/core';
3
+ import StarterKit from '@tiptap/starter-kit';
4
+ import Link from '@tiptap/extension-link';
5
+ import Placeholder from '@tiptap/extension-placeholder';
6
+ import TextAlign from '@tiptap/extension-text-align';
7
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "../tooltip/tooltip.directive";
11
+ import * as i3 from "ngx-tiptap";
12
+ import * as i4 from "@angular/forms";
13
+ import * as i5 from "../dialog/dialog.component";
14
+ export const RICH_TEXT_VALUE_ACCESSOR = {
15
+ provide: NG_VALUE_ACCESSOR,
16
+ useExisting: forwardRef(() => RichTextComponent),
17
+ multi: true
18
+ };
19
+ export class RichTextComponent {
20
+ placeholder = '';
21
+ hideControls = false;
22
+ height = '100px';
23
+ get readonly() {
24
+ return this._editable;
25
+ }
26
+ set readonly(readonly) {
27
+ this._editable = !readonly;
28
+ this.editor.setEditable(this._editable);
29
+ }
30
+ text = {
31
+ heading1: 'Heading 1',
32
+ heading2: 'Heading 2',
33
+ bold: 'Bold',
34
+ italic: 'Italic',
35
+ strike: 'Strike',
36
+ bulletedList: 'Bulleted List',
37
+ orderedList: 'Ordered List',
38
+ leftAlign: 'Left Align',
39
+ centerAlign: 'Center Align',
40
+ rightAlign: 'Right Align',
41
+ justifyAlign: 'Justify Align',
42
+ setLink: 'Set Link',
43
+ removeLink: 'Remove Link',
44
+ clearFormat: 'Clear Format',
45
+ modifyLink: 'Modify Link',
46
+ cancel: 'Cancel',
47
+ update: 'Update',
48
+ url: 'URL'
49
+ };
50
+ capabilities = {
51
+ heading: true,
52
+ textDecoration: true,
53
+ list: true,
54
+ alignment: true,
55
+ link: true
56
+ };
57
+ borderRadius = '0px';
58
+ textChanged = new EventEmitter();
59
+ showDialog = null;
60
+ dialogLink = null;
61
+ /**
62
+ * Function called on change
63
+ */
64
+ onChange;
65
+ /**
66
+ * Function called on touch
67
+ */
68
+ onTouched;
69
+ _value = null;
70
+ _editable = true;
71
+ window = window;
72
+ editor = new Editor({
73
+ extensions: [
74
+ StarterKit,
75
+ Link.configure({
76
+ openOnClick: false,
77
+ HTMLAttributes: {
78
+ class: 'rich-text-link',
79
+ target: '_blank'
80
+ },
81
+ }),
82
+ TextAlign.configure({
83
+ types: ['heading', 'paragraph'],
84
+ }),
85
+ Placeholder.configure({
86
+ placeholder: () => this.placeholder
87
+ })
88
+ ],
89
+ editorProps: {
90
+ attributes: {
91
+ class: '',
92
+ spellcheck: 'true',
93
+ },
94
+ },
95
+ enablePasteRules: [Link, StarterKit, TextAlign]
96
+ });
97
+ get value() {
98
+ return this._value;
99
+ }
100
+ set value(value) {
101
+ if (value === '<p></p>') {
102
+ return;
103
+ }
104
+ if (value !== this._value) {
105
+ this._value = value;
106
+ if (this.onChange) {
107
+ this.onChange(value);
108
+ }
109
+ }
110
+ }
111
+ ngAfterViewInit() {
112
+ this.editor.setEditable(this._editable);
113
+ this.editor.on('update', ({ editor }) => {
114
+ this.textChanged.emit({
115
+ textValue: editor.getText(),
116
+ htmlValue: this._value
117
+ });
118
+ });
119
+ }
120
+ onBlur() {
121
+ if (this.onTouched) {
122
+ this.onTouched();
123
+ }
124
+ }
125
+ writeValue(value) {
126
+ if (value !== this._value) {
127
+ this._value = value;
128
+ }
129
+ }
130
+ registerOnChange(fn) {
131
+ this.onChange = fn;
132
+ }
133
+ registerOnTouched(fn) {
134
+ this.onTouched = fn;
135
+ }
136
+ setDisabledState(isDisabled) {
137
+ this.editor.setEditable(isDisabled);
138
+ }
139
+ openLinkDialog() {
140
+ const previousUrl = this.editor.getAttributes('link').href;
141
+ this.showDialog = {};
142
+ this.dialogLink = previousUrl;
143
+ }
144
+ changeEditorLink(action) {
145
+ switch (action) {
146
+ case 'remove':
147
+ this.editor.chain().focus().extendMarkRange('link').unsetLink().run();
148
+ break;
149
+ case 'save':
150
+ this.editor.chain().focus().extendMarkRange('link').setLink({ href: this.dialogLink, target: '_blank' }).run();
151
+ break;
152
+ default:
153
+ console.log(action);
154
+ }
155
+ this.dialogLink = null;
156
+ this.showDialog = null;
157
+ }
158
+ focus(position) {
159
+ if (!position) {
160
+ position = 'start';
161
+ }
162
+ this.editor.commands.focus(position);
163
+ }
164
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: RichTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
165
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: RichTextComponent, selector: "particle-rich-text", inputs: { placeholder: "placeholder", hideControls: "hideControls", height: "height", readonly: "readonly", text: "text", capabilities: "capabilities", borderRadius: "borderRadius" }, outputs: { textChanged: "textChanged" }, providers: [RICH_TEXT_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\" *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.heading\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.textDecoration\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.list\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.alignment\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center pad_5\" *ngIf=\"capabilities.link\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"text.modifyLink\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".ProseMirror:focus{outline:none}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;pointer-events:none}.chip_size{display:flex;align-items:center;justify-content:center;width:22px;height:22px;max-width:22px;max-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[particleTooltip]", inputs: ["particleTooltip", "tooltipPosition", "tooltipDisabled"] }, { kind: "directive", type: i3.EditorDirective, selector: "tiptap[editor], [tiptap][editor], tiptap-editor[editor], [tiptapEditor][editor]", inputs: ["editor", "outputFormat"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.DialogComponent, selector: "particle-dialog", inputs: ["object", "title", "titleClass", "showTitle", "allowClose", "bodyClass", "height", "width", "borderRadius", "text"], outputs: ["closed", "opened"] }], encapsulation: i0.ViewEncapsulation.None });
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: RichTextComponent, decorators: [{
168
+ type: Component,
169
+ args: [{ selector: 'particle-rich-text', providers: [RICH_TEXT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<div class=\"row_block width100 content_color ptl_brdr_radius ptl_brdr_color ptl_brdr_size\" style=\"overflow: hidden\">\r\n <div class=\"row ptl_input_bg_color ptl_brdr_color ptl_brdr_size border_bottom wrap hide_element\" *ngIf=\"!this.hideControls && this.editor.isEditable\">\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.heading\">\r\n <button\r\n id=\"heading1\"\r\n [attr.aria-label]=\"text.heading1\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading1\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 1 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 1 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>1\r\n </button>\r\n <button\r\n id=\"heading2\"\r\n [attr.aria-label]=\"text.heading2\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right5 mar_left5 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.heading2\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleHeading({ level: 2 }).run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('heading', { level: 2 }) }\"\r\n >\r\n <i class=\"fas fa-header fa-fw\"></i>2\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.textDecoration\">\r\n <button\r\n id=\"bold\"\r\n [attr.aria-label]=\"text.bold\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bold\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBold().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bold') }\"\r\n >\r\n <i class=\"fas fa-bold fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"italic\"\r\n [attr.aria-label]=\"text.italic\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.italic\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleItalic().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('italic') }\"\r\n >\r\n <i class=\"fas fa-italic fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"strike\"\r\n [attr.aria-label]=\"text.strike\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.strike\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleStrike().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('strike') }\"\r\n >\r\n <i class=\"fas fa-strikethrough fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.list\">\r\n <button\r\n id=\"bullet-list\"\r\n [attr.aria-label]=\"text.bulletedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.bulletedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleBulletList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('bullet-list') }\"\r\n >\r\n <i class=\"fas fa-list fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"ordered-list\"\r\n [attr.aria-label]=\"text.orderedList\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.orderedList\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().toggleOrderedList().run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('ordered-list') }\"\r\n >\r\n <i class=\"fas fa-list-ol fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center ptl_brdr_color ptl_brdr_size border_right pad_5\" *ngIf=\"capabilities.alignment\">\r\n <button\r\n id=\"left-align\"\r\n [attr.aria-label]=\"text.leftAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.leftAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('left').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'left' }) }\"\r\n >\r\n <i class=\"fas fa-align-left fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"center-align\"\r\n [attr.aria-label]=\"text.centerAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.centerAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('center').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'center' }) }\"\r\n >\r\n <i class=\"fas fa-align-center fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"right-align\"\r\n [attr.aria-label]=\"text.rightAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.rightAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('right').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'right' }) }\"\r\n >\r\n <i class=\"fas fa-align-right fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"justify-align\"\r\n [attr.aria-label]=\"text.justifyAlign\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.justifyAlign\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().setTextAlign('justify').run()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive({ textAlign: 'justify' }) }\"\r\n >\r\n <i class=\"fas fa-align-justify fa-fw\"></i>\r\n </button>\r\n </div>\r\n <div class=\"col v_center pad_5\" *ngIf=\"capabilities.link\">\r\n <button\r\n id=\"link\"\r\n [attr.aria-label]=\"text.setLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.setLink\" tooltipPosition=\"top\"\r\n (click)=\"openLinkDialog()\"\r\n [ngClass]=\"{ 'ok_button_color': this.editor.isActive('link') }\"\r\n >\r\n <i class=\"fas fa-link fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"unlink\"\r\n [attr.aria-label]=\"text.removeLink\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.removeLink\" tooltipPosition=\"top\"\r\n (click)=\"this.editor.isActive('link') ? changeEditorLink('remove') : null\"\r\n [disabled]=\"!this.editor.isActive('link')\"\r\n >\r\n <i class=\"fas fa-unlink fa-fw\"></i>\r\n </button>\r\n <button\r\n id=\"clear-format\"\r\n [attr.aria-label]=\"text.clearFormat\"\r\n class=\"access btnset chip_size content_color_dark_1 mar_right3 mar_left3 ptl_brdr_radius hov_darken\"\r\n [particleTooltip]=\"text.clearFormat\" tooltipPosition=\"top\"\r\n (click)=\"editor.chain().focus().clearNodes().unsetAllMarks().run()\"\r\n >\r\n <i class=\"fas fa-text-slash fa-fw\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"pad_10 ptl_input_text_size scroll_yauto\" [style.height]=\"this.height\">\r\n <tiptap-editor [editor]=\"editor\" [(ngModel)]=\"value\"></tiptap-editor>\r\n </div>\r\n</div>\r\n\r\n<particle-dialog\r\n [title]=\"text.modifyLink\"\r\n titleClass=\"header_color min_h40\"\r\n [object]=\"showDialog\"\r\n [allowClose]=\"false\"\r\n [borderRadius]=\"borderRadius\"\r\n width=\"400px\"\r\n height=\"150px\"\r\n>\r\n <div class=\"pad_15 ptl_input_text_size\" [style.height]=\"window.innerWidth > 768 ? '70px' : 'calc(100% - 40px)'\">\r\n <input class=\"access input md\"\r\n [(ngModel)]=\"dialogLink\"\r\n [attr.aria-label]=\"text.url\"\r\n placeholder=\"eg. https://www.google.com\"\r\n (keyup.enter)=\"changeEditorLink('save')\"\r\n />\r\n </div>\r\n <div class=\"col min_h40 footer_color\">\r\n <div class=\"row center_right pad_right15 pad_left15\">\r\n <div class=\"col\">\r\n <button class=\"access btnset clear\" [attr.aria-label]=\"text.cancel\" (click)=\"changeEditorLink('cancel')\">\r\n <div class=\" pad_5\">{{text.cancel}}</div>\r\n </button>\r\n <div class=\"mar_lr5 ptl_brdr_size ptl_brdr_color border_left\">\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow ok_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.update\"\r\n (click)=\"changeEditorLink('save')\"\r\n >\r\n <div class=\"brdr border_right mar_right5 pad_right5\"><i class=\"fas fa-check\"></i></div>\r\n <div>{{text.update}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".ProseMirror:focus{outline:none}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;pointer-events:none}.chip_size{display:flex;align-items:center;justify-content:center;width:22px;height:22px;max-width:22px;max-height:22px}\n"] }]
170
+ }], propDecorators: { placeholder: [{
171
+ type: Input
172
+ }], hideControls: [{
173
+ type: Input
174
+ }], height: [{
175
+ type: Input
176
+ }], readonly: [{
177
+ type: Input
178
+ }], text: [{
179
+ type: Input
180
+ }], capabilities: [{
181
+ type: Input
182
+ }], borderRadius: [{
183
+ type: Input
184
+ }], textChanged: [{
185
+ type: Output
186
+ }] } });
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9yaWNoLXRleHQvcmljaC10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9yaWNoLXRleHQvcmljaC10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sSUFBSSxNQUFNLHdCQUF3QixDQUFDO0FBQzFDLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sU0FBUyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUt2RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBUTtJQUMzQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBR2pCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFHckIsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUVqQixJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQWlCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FB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QkFEVixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0VkaXRvcn0gZnJvbSAnQHRpcHRhcC9jb3JlJztcclxuaW1wb3J0IFN0YXJ0ZXJLaXQgZnJvbSAnQHRpcHRhcC9zdGFydGVyLWtpdCc7XHJcbmltcG9ydCBMaW5rIGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLWxpbmsnO1xyXG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tcGxhY2Vob2xkZXInO1xyXG5pbXBvcnQgVGV4dEFsaWduIGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtYWxpZ24nO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1JpY2hUZXh0RWRpdG9yVGV4dH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9wYXJ0aWNsZS1jb21wb25lbnQtdGV4dC5tb2RlbCc7XHJcbmltcG9ydCB7UmljaFRleHRDYXBhYmlsaXRpZXN9IGZyb20gJy4vcmljaC10ZXh0LWNhcGFiaWxpdGllcy5tb2RlbCc7XHJcbmltcG9ydCB7VGhlbWluZ1NlcnZpY2V9IGZyb20gJy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWluZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSSUNIX1RFWFRfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSaWNoVGV4dENvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGFydGljbGUtcmljaC10ZXh0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmljaC10ZXh0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yaWNoLXRleHQuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1JJQ0hfVEVYVF9WQUxVRV9BQ0NFU1NPUl0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFJpY2hUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUNvbnRyb2xzID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0ID0gJzEwMHB4JztcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWRpdGFibGU7XHJcbiAgfVxyXG5cclxuICBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2VkaXRhYmxlID0gIXJlYWRvbmx5O1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0RWRpdGFibGUodGhpcy5fZWRpdGFibGUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB0ZXh0OiBSaWNoVGV4dEVkaXRvclRleHQgPSB7XHJcbiAgICBoZWFkaW5nMTogJ0hlYWRpbmcgMScsXHJcbiAgICBoZWFkaW5nMjogJ0hlYWRpbmcgMicsXHJcbiAgICBib2xkOiAnQm9sZCcsXHJcbiAgICBpdGFsaWM6ICdJdGFsaWMnLFxyXG4gICAgc3RyaWtlOiAnU3RyaWtlJyxcclxuICAgIGJ1bGxldGVkTGlzdDogJ0J1bGxldGVkIExpc3QnLFxyXG4gICAgb3JkZXJlZExpc3Q6ICdPcmRlcmVkIExpc3QnLFxyXG4gICAgbGVmdEFsaWduOiAnTGVmdCBBbGlnbicsXHJcbiAgICBjZW50ZXJBbGlnbjogJ0NlbnRlciBBbGlnbicsXHJcbiAgICByaWdodEFsaWduOiAnUmlnaHQgQWxpZ24nLFxyXG4gICAganVzdGlmeUFsaWduOiAnSnVzdGlmeSBBbGlnbicsXHJcbiAgICBzZXRMaW5rOiAnU2V0IExpbmsnLFxyXG4gICAgcmVtb3ZlTGluazogJ1JlbW92ZSBMaW5rJyxcclxuICAgIGNsZWFyRm9ybWF0OiAnQ2xlYXIgRm9ybWF0JyxcclxuICAgIG1vZGlmeUxpbms6ICdNb2RpZnkgTGluaycsXHJcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxyXG4gICAgdXBkYXRlOiAnVXBkYXRlJyxcclxuICAgIHVybDogJ1VSTCdcclxuICB9IGFzIFJpY2hUZXh0RWRpdG9yVGV4dDtcclxuXHJcbiAgQElucHV0KClcclxuICBjYXBhYmlsaXRpZXMgPSB7XHJcbiAgICBoZWFkaW5nOiB0cnVlLFxyXG4gICAgdGV4dERlY29yYXRpb246IHRydWUsXHJcbiAgICBsaXN0OiB0cnVlLFxyXG4gICAgYWxpZ25tZW50OiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZVxyXG4gIH0gYXMgUmljaFRleHRDYXBhYmlsaXRpZXM7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9yZGVyUmFkaXVzID0gJzBweCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHRleHRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBodG1sVmFsdWU6IHN0cmluZyxcclxuICAgIHRleHRWYWx1ZTogc3RyaW5nXHJcbiAgfT4oKTtcclxuXHJcbiAgc2hvd0RpYWxvZzogYW55ID0gbnVsbDtcclxuICBkaWFsb2dMaW5rOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIG9uIGNoYW5nZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlOiAoKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgb24gdG91Y2hcclxuICAgKi9cclxuICBvblRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG4gIHByaXZhdGUgX2VkaXRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvdyA9IHdpbmRvdztcclxuXHJcbiAgZWRpdG9yID0gbmV3IEVkaXRvcih7XHJcbiAgICBleHRlbnNpb25zOiBbXHJcbiAgICAgIFN0YXJ0ZXJLaXQsXHJcbiAgICAgIExpbmsuY29uZmlndXJlKHtcclxuICAgICAgICBvcGVuT25DbGljazogZmFsc2UsXHJcbiAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGNsYXNzOiAncmljaC10ZXh0LWxpbmsnLFxyXG4gICAgICAgICAgdGFyZ2V0OiAnX2JsYW5rJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pLFxyXG4gICAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcclxuICAgICAgICB0eXBlczogWydoZWFkaW5nJywgJ3BhcmFncmFwaCddLFxyXG5cclxuICAgICAgfSksXHJcbiAgICAgIFBsYWNlaG9sZGVyLmNvbmZpZ3VyZSh7XHJcbiAgICAgICAgcGxhY2Vob2xkZXI6ICgpID0+IHRoaXMucGxhY2Vob2xkZXJcclxuICAgICAgfSlcclxuICAgIF0sXHJcbiAgICBlZGl0b3JQcm9wczoge1xyXG4gICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgY2xhc3M6ICcnLFxyXG4gICAgICAgIHNwZWxsY2hlY2s6ICd0cnVlJyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBlbmFibGVQYXN0ZVJ1bGVzOiBbTGluaywgU3RhcnRlcktpdCwgVGV4dEFsaWduXVxyXG4gIH0pO1xyXG5cclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgPT09ICc8cD48L3A+Jykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRFZGl0YWJsZSh0aGlzLl9lZGl0YWJsZSk7XHJcblxyXG4gICAgdGhpcy5lZGl0b3Iub24oJ3VwZGF0ZScsICh7ZWRpdG9yfSkgPT4ge1xyXG4gICAgICB0aGlzLnRleHRDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgIHRleHRWYWx1ZTogZWRpdG9yLmdldFRleHQoKSxcclxuICAgICAgICBodG1sVmFsdWU6IHRoaXMuX3ZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRFZGl0YWJsZShpc0Rpc2FibGVkKTtcclxuICB9XHJcblxyXG4gIG9wZW5MaW5rRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcHJldmlvdXNVcmwgPSB0aGlzLmVkaXRvci5nZXRBdHRyaWJ1dGVzKCdsaW5rJykuaHJlZjtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHt9O1xyXG4gICAgdGhpcy5kaWFsb2dMaW5rID0gcHJldmlvdXNVcmw7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFZGl0b3JMaW5rKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlICdyZW1vdmUnOlxyXG4gICAgICAgIHRoaXMuZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5leHRlbmRNYXJrUmFuZ2UoJ2xpbmsnKS51bnNldExpbmsoKS5ydW4oKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc2F2ZSc6XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuY2hhaW4oKS5mb2N1cygpLmV4dGVuZE1hcmtSYW5nZSgnbGluaycpLnNldExpbmsoeyBocmVmOiB0aGlzLmRpYWxvZ0xpbmssIHRhcmdldDogJ19ibGFuaycgfSkucnVuKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5sb2coYWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0xpbmsgPSBudWxsIGFzIGFueTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IG51bGwgYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgZm9jdXMocG9zaXRpb24/OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghcG9zaXRpb24pIHtcclxuICAgICAgcG9zaXRpb24gPSAnc3RhcnQnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yLmNvbW1hbmRzLmZvY3VzKHBvc2l0aW9uKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dfYmxvY2sgd2lkdGgxMDAgY29udGVudF9jb2xvciBwdGxfYnJkcl9yYWRpdXMgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZVwiIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgcHRsX2lucHV0X2JnX2NvbG9yIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX2JvdHRvbSB3cmFwIGhpZGVfZWxlbWVudFwiICAqbmdJZj1cIiF0aGlzLmhpZGVDb250cm9scyAmJiB0aGlzLmVkaXRvci5pc0VkaXRhYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX3JpZ2h0IHBhZF81XCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMuaGVhZGluZ1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaWQ9XCJoZWFkaW5nMVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmhlYWRpbmcxXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDUgbWFyX2xlZnQ1IHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuaGVhZGluZzFcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgIChjbGljayk9XCJlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbDogMSB9KS5ydW4oKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAxIH0pIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaGVhZGVyIGZhLWZ3XCI+PC9pPjFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cImhlYWRpbmcyXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuaGVhZGluZzJcIlxyXG4gICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0NSBtYXJfbGVmdDUgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5oZWFkaW5nMlwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSGVhZGluZyh7IGxldmVsOiAyIH0pLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDIgfSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1oZWFkZXIgZmEtZndcIj48L2k+MlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLnRleHREZWNvcmF0aW9uXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cImJvbGRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5ib2xkXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuYm9sZFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnYm9sZCcpIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYm9sZCBmYS1md1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cIml0YWxpY1wiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0Lml0YWxpY1wiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lml0YWxpY1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSXRhbGljKCkucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdpdGFsaWMnKSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWl0YWxpYyBmYS1md1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cInN0cmlrZVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnN0cmlrZVwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LnN0cmlrZVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3RyaWtlKCkucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdzdHJpa2UnKSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXN0cmlrZXRocm91Z2ggZmEtZndcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgYm9yZGVyX3JpZ2h0IHBhZF81XCIgKm5nSWY9XCJjYXBhYmlsaXRpZXMubGlzdFwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaWQ9XCJidWxsZXQtbGlzdFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmJ1bGxldGVkTGlzdFwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LmJ1bGxldGVkTGlzdFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnYnVsbGV0LWxpc3QnKSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWxpc3QgZmEtZndcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaWQ9XCJvcmRlcmVkLWxpc3RcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5vcmRlcmVkTGlzdFwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lm9yZGVyZWRMaXN0XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgICAgICAoY2xpY2spPVwiZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVPcmRlcmVkTGlzdCgpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSgnb3JkZXJlZC1saXN0JykgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1saXN0LW9sIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIGJvcmRlcl9yaWdodCBwYWRfNVwiICAqbmdJZj1cImNhcGFiaWxpdGllcy5hbGlnbm1lbnRcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwibGVmdC1hbGlnblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmxlZnRBbGlnblwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LmxlZnRBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdsZWZ0JykucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKHsgdGV4dEFsaWduOiAnbGVmdCcgfSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbGlnbi1sZWZ0IGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwiY2VudGVyLWFsaWduXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY2VudGVyQWxpZ25cIlxyXG4gICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5jZW50ZXJBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdjZW50ZXInKS5ydW4oKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnb2tfYnV0dG9uX2NvbG9yJzogdGhpcy5lZGl0b3IuaXNBY3RpdmUoeyB0ZXh0QWxpZ246ICdjZW50ZXInIH0pIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYWxpZ24tY2VudGVyIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwicmlnaHQtYWxpZ25cIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5yaWdodEFsaWduXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQucmlnaHRBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdyaWdodCcpLnJ1bigpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdva19idXR0b25fY29sb3InOiB0aGlzLmVkaXRvci5pc0FjdGl2ZSh7IHRleHRBbGlnbjogJ3JpZ2h0JyB9KSB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFsaWduLXJpZ2h0IGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwianVzdGlmeS1hbGlnblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0Lmp1c3RpZnlBbGlnblwiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0Lmp1c3RpZnlBbGlnblwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKCdqdXN0aWZ5JykucnVuKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKHsgdGV4dEFsaWduOiAnanVzdGlmeScgfSkgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbGlnbi1qdXN0aWZ5IGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBwYWRfNVwiICAqbmdJZj1cImNhcGFiaWxpdGllcy5saW5rXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBpZD1cImxpbmtcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zZXRMaW5rXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2hpcF9zaXplIGNvbnRlbnRfY29sb3JfZGFya18xIG1hcl9yaWdodDMgbWFyX2xlZnQzIHB0bF9icmRyX3JhZGl1cyBob3ZfZGFya2VuXCJcclxuICAgICAgICBbcGFydGljbGVUb29sdGlwXT1cInRleHQuc2V0TGlua1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5MaW5rRGlhbG9nKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ29rX2J1dHRvbl9jb2xvcic6IHRoaXMuZWRpdG9yLmlzQWN0aXZlKCdsaW5rJykgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1saW5rIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwidW5saW5rXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQucmVtb3ZlTGlua1wiXHJcbiAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNoaXBfc2l6ZSBjb250ZW50X2NvbG9yX2RhcmtfMSBtYXJfcmlnaHQzIG1hcl9sZWZ0MyBwdGxfYnJkcl9yYWRpdXMgaG92X2RhcmtlblwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCJ0ZXh0LnJlbW92ZUxpbmtcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmVkaXRvci5pc0FjdGl2ZSgnbGluaycpID8gY2hhbmdlRWRpdG9yTGluaygncmVtb3ZlJykgOiBudWxsXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRoaXMuZWRpdG9yLmlzQWN0aXZlKCdsaW5rJylcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdW5saW5rIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGlkPVwiY2xlYXItZm9ybWF0XCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY2xlYXJGb3JtYXRcIlxyXG4gICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBjaGlwX3NpemUgY29udGVudF9jb2xvcl9kYXJrXzEgbWFyX3JpZ2h0MyBtYXJfbGVmdDMgcHRsX2JyZHJfcmFkaXVzIGhvdl9kYXJrZW5cIlxyXG4gICAgICAgIFtwYXJ0aWNsZVRvb2x0aXBdPVwidGV4dC5jbGVhckZvcm1hdFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvci5jaGFpbigpLmZvY3VzKCkuY2xlYXJOb2RlcygpLnVuc2V0QWxsTWFya3MoKS5ydW4oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10ZXh0LXNsYXNoIGZhLWZ3XCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRfMTAgcHRsX2lucHV0X3RleHRfc2l6ZSBzY3JvbGxfeWF1dG9cIiBbc3R5bGUuaGVpZ2h0XT1cInRoaXMuaGVpZ2h0XCI+XHJcbiAgICA8dGlwdGFwLWVkaXRvciBbZWRpdG9yXT1cImVkaXRvclwiIFsobmdNb2RlbCldPVwidmFsdWVcIj48L3RpcHRhcC1lZGl0b3I+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHBhcnRpY2xlLWRpYWxvZ1xyXG4gIFt0aXRsZV09XCJ0ZXh0Lm1vZGlmeUxpbmtcIlxyXG4gIHRpdGxlQ2xhc3M9XCJoZWFkZXJfY29sb3IgbWluX2g0MFwiXHJcbiAgW29iamVjdF09XCJzaG93RGlhbG9nXCJcclxuICBbYWxsb3dDbG9zZV09XCJmYWxzZVwiXHJcbiAgW2JvcmRlclJhZGl1c109XCJib3JkZXJSYWRpdXNcIlxyXG4gIHdpZHRoPVwiNDAwcHhcIlxyXG4gIGhlaWdodD1cIjE1MHB4XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRfMTUgcHRsX2lucHV0X3RleHRfc2l6ZVwiIFtzdHlsZS5oZWlnaHRdPVwid2luZG93LmlubmVyV2lkdGggPiA3NjggPyAnNzBweCcgOiAnY2FsYygxMDAlIC0gNDBweCknXCI+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJhY2Nlc3MgaW5wdXQgbWRcIlxyXG4gICAgICAgICAgIFsobmdNb2RlbCldPVwiZGlhbG9nTGlua1wiXHJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnVybFwiXHJcbiAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlZy4gaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbVwiXHJcbiAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNoYW5nZUVkaXRvckxpbmsoJ3NhdmUnKVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wgbWluX2g0MCBmb290ZXJfY29sb3JcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyX3JpZ2h0IHBhZF9yaWdodDE1IHBhZF9sZWZ0MTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNsZWFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmNhbmNlbFwiIChjbGljayk9XCJjaGFuZ2VFZGl0b3JMaW5rKCdjYW5jZWwnKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBwYWRfNVwiPnt7dGV4dC5jYW5jZWx9fTwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfbHI1IHB0bF9icmRyX3NpemUgcHRsX2JyZHJfY29sb3IgYm9yZGVyX2xlZnRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBzcGFjZWQgbWQgaG92X2dsb3cgb2tfYnV0dG9uX2NvbG9yIHB0bF9icmRyX3JhZGl1c1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQudXBkYXRlXCJcclxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VFZGl0b3JMaW5rKCdzYXZlJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmRyIGJvcmRlcl9yaWdodCBtYXJfcmlnaHQ1IHBhZF9yaWdodDVcIj48aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiPjwvaT48L2Rpdj5cclxuICAgICAgICAgIDxkaXY+e3t0ZXh0LnVwZGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvcGFydGljbGUtZGlhbG9nPlxyXG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ScrollToTopComponent } from './scroll-to-top.component';
4
+ import * as i0 from "@angular/core";
5
+ export class ParticleScrollToTopModule {
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParticleScrollToTopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: ParticleScrollToTopModule, declarations: [ScrollToTopComponent], imports: [CommonModule], exports: [ScrollToTopComponent] });
8
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParticleScrollToTopModule, imports: [CommonModule] });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParticleScrollToTopModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [
14
+ ScrollToTopComponent
15
+ ],
16
+ exports: [
17
+ ScrollToTopComponent
18
+ ],
19
+ imports: [
20
+ CommonModule,
21
+ ]
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUtc2Nyb2xsLXRvLXRvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2Nyb2xsLXRvLXRvcC9wYXJ0aWNsZS1zY3JvbGwtdG8tdG9wLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFhL0QsTUFBTSxPQUFPLHlCQUF5Qjt1R0FBekIseUJBQXlCO3dHQUF6Qix5QkFBeUIsaUJBVGxDLG9CQUFvQixhQU1wQixZQUFZLGFBSFosb0JBQW9CO3dHQU1YLHlCQUF5QixZQUhsQyxZQUFZOzsyRkFHSCx5QkFBeUI7a0JBWHJDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7U2Nyb2xsVG9Ub3BDb21wb25lbnR9IGZyb20gJy4vc2Nyb2xsLXRvLXRvcC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNjcm9sbFRvVG9wQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTY3JvbGxUb1RvcENvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhcnRpY2xlU2Nyb2xsVG9Ub3BNb2R1bGUge1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class ScrollToTopComponent {
6
+ renderer;
7
+ content = null;
8
+ scrollDistance = 500;
9
+ bottomOffset = 50;
10
+ text = {
11
+ scrollToTop: 'Scroll back to the top of the page'
12
+ };
13
+ $scrollTop = new BehaviorSubject(0);
14
+ _listener;
15
+ constructor(renderer) {
16
+ this.renderer = renderer;
17
+ }
18
+ ngAfterViewInit() {
19
+ this._listener = this.renderer.listen(this.content, 'scroll', () => {
20
+ this.$scrollTop.next(this.content.scrollTop);
21
+ });
22
+ }
23
+ ngOnDestroy() {
24
+ this._listener();
25
+ }
26
+ scrollToTop() {
27
+ if (this.content) {
28
+ this.content.scroll({
29
+ top: 0,
30
+ behavior: 'smooth'
31
+ });
32
+ }
33
+ }
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ScrollToTopComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: ScrollToTopComponent, selector: "particle-scroll-to-top", inputs: { content: "content", scrollDistance: "scrollDistance", bottomOffset: "bottomOffset", text: "text" }, ngImport: i0, template: "<ng-container *ngIf=\"$scrollTop | async as scrollTop\">\r\n <div [style.visibility]=\"scrollTop > scrollDistance ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"scrollTop > scrollDistance ? '1' : '0'\"\r\n [style.bottom]=\"bottomOffset + 'px'\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button (click)=\"scrollToTop()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\"\r\n [attr.aria-label]=\"text.scrollToTop\">\r\n <span class=\"icon slide_up\"><i class=\"fas fa-chevron-up\"></i></span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ScrollToTopComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'particle-scroll-to-top', template: "<ng-container *ngIf=\"$scrollTop | async as scrollTop\">\r\n <div [style.visibility]=\"scrollTop > scrollDistance ? 'visible' : 'hidden'\"\r\n [style.opacity]=\"scrollTop > scrollDistance ? '1' : '0'\"\r\n [style.bottom]=\"bottomOffset + 'px'\"\r\n class=\"particle_scroll_button mar_right10 mar_bot15\">\r\n <button (click)=\"scrollToTop()\"\r\n class=\"access btn pad_10 brad_3 brdr content_color\"\r\n type=\"button\"\r\n [attr.aria-label]=\"text.scrollToTop\">\r\n <span class=\"icon slide_up\"><i class=\"fas fa-chevron-up\"></i></span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n" }]
40
+ }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { content: [{
41
+ type: Input
42
+ }], scrollDistance: [{
43
+ type: Input
44
+ }], bottomOffset: [{
45
+ type: Input
46
+ }], text: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLXRvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc2Nyb2xsLXRvLXRvcC9zY3JvbGwtdG8tdG9wLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zY3JvbGwtdG8tdG9wL3Njcm9sbC10by10b3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFPckMsTUFBTSxPQUFPLG9CQUFvQjtJQXFCdEI7SUFsQlQsT0FBTyxHQUFnQixJQUFXLENBQUM7SUFHbkMsY0FBYyxHQUFHLEdBQUcsQ0FBQztJQUdyQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBR2xCLElBQUksR0FBb0I7UUFDdEIsV0FBVyxFQUFFLG9DQUFvQztLQUMvQixDQUFDO0lBRXJCLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUVwQyxTQUFTLENBQU07SUFFdkIsWUFDUyxRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ3pCLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ2xCLEdBQUcsRUFBRSxDQUFDO2dCQUNOLFFBQVEsRUFBRSxRQUFRO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO3VHQXpDVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiw0S0NSakMsK29CQWFBOzsyRkRMYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usd0JBQXdCOzhFQU1sQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1Njcm9sbFRvVG9wVGV4dH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9wYXJ0aWNsZS1jb21wb25lbnQtdGV4dC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BhcnRpY2xlLXNjcm9sbC10by10b3AnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGwtdG8tdG9wLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2Nyb2xsVG9Ub3BDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbnRlbnQ6IEhUTUxFbGVtZW50ID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2Nyb2xsRGlzdGFuY2UgPSA1MDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm90dG9tT2Zmc2V0ID0gNTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGV4dDogU2Nyb2xsVG9Ub3BUZXh0ID0ge1xyXG4gICAgc2Nyb2xsVG9Ub3A6ICdTY3JvbGwgYmFjayB0byB0aGUgdG9wIG9mIHRoZSBwYWdlJ1xyXG4gIH0gYXMgU2Nyb2xsVG9Ub3BUZXh0O1xyXG5cclxuICAkc2Nyb2xsVG9wID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG5cclxuICBwcml2YXRlIF9saXN0ZW5lcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9saXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuY29udGVudCwgJ3Njcm9sbCcsICgpID0+IHtcclxuICAgICAgdGhpcy4kc2Nyb2xsVG9wLm5leHQodGhpcy5jb250ZW50LnNjcm9sbFRvcCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xyXG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsKHtcclxuICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRzY3JvbGxUb3AgfCBhc3luYyBhcyBzY3JvbGxUb3BcIj5cclxuICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cInNjcm9sbFRvcCA+IHNjcm9sbERpc3RhbmNlID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxyXG4gICAgICAgW3N0eWxlLm9wYWNpdHldPVwic2Nyb2xsVG9wID4gc2Nyb2xsRGlzdGFuY2UgPyAnMScgOiAnMCdcIlxyXG4gICAgICAgW3N0eWxlLmJvdHRvbV09XCJib3R0b21PZmZzZXQgKyAncHgnXCJcclxuICAgICAgIGNsYXNzPVwicGFydGljbGVfc2Nyb2xsX2J1dHRvbiBtYXJfcmlnaHQxMCBtYXJfYm90MTVcIj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cInNjcm9sbFRvVG9wKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG4gcGFkXzEwIGJyYWRfMyBicmRyIGNvbnRlbnRfY29sb3JcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnNjcm9sbFRvVG9wXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBzbGlkZV91cFwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tdXBcIj48L2k+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { SlideoverComponent } from './slideover.component';
4
+ import * as i0 from "@angular/core";
5
+ export class ParticleSlideoverModule {
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParticleSlideoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: ParticleSlideoverModule, declarations: [SlideoverComponent], imports: [CommonModule], exports: [SlideoverComponent] });
8
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParticleSlideoverModule, imports: [CommonModule] });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: ParticleSlideoverModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [
14
+ SlideoverComponent
15
+ ],
16
+ exports: [
17
+ SlideoverComponent
18
+ ],
19
+ imports: [
20
+ CommonModule
21
+ ]
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUtc2xpZGVvdmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zbGlkZW92ZXIvcGFydGljbGUtc2xpZGVvdmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFhM0QsTUFBTSxPQUFPLHVCQUF1Qjt1R0FBdkIsdUJBQXVCO3dHQUF2Qix1QkFBdUIsaUJBVGhDLGtCQUFrQixhQU1sQixZQUFZLGFBSFosa0JBQWtCO3dHQU1ULHVCQUF1QixZQUhoQyxZQUFZOzsyRkFHSCx1QkFBdUI7a0JBWG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNsaWRlb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vc2xpZGVvdmVyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgU2xpZGVvdmVyQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTbGlkZW92ZXJDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhcnRpY2xlU2xpZGVvdmVyTW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -0,0 +1,115 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class SlideoverComponent {
5
+ _position = 'right';
6
+ slideoverOpen = false;
7
+ visible = false;
8
+ set position(position) {
9
+ if (position && ['left', 'right', 'top', 'bottom'].indexOf(position.toLowerCase()) > -1) {
10
+ this._position = position.toLowerCase();
11
+ }
12
+ else {
13
+ this._position = 'right';
14
+ }
15
+ }
16
+ get position() {
17
+ return this._position;
18
+ }
19
+ modal = true;
20
+ width = '300px';
21
+ height = '100px';
22
+ bgClass = 'content_color';
23
+ text = {
24
+ close: 'Close Slideover'
25
+ };
26
+ /**
27
+ * Breakpoint that will make the container take over the screen when it's crossed.
28
+ */
29
+ breakpoint = 769;
30
+ opened = new EventEmitter();
31
+ closed = new EventEmitter();
32
+ overlay = null;
33
+ breakpointExceeded = false;
34
+ constructor() {
35
+ }
36
+ onResize(event) {
37
+ this._determineBreakpointExceeded(event.target.innerWidth);
38
+ }
39
+ _determineBreakpointExceeded(innerWidth) {
40
+ if (this.breakpoint) {
41
+ this.breakpointExceeded = innerWidth < this.breakpoint || innerWidth < +this.width.substring(0, this.width.length - 2);
42
+ }
43
+ }
44
+ open() {
45
+ this.addModalMask();
46
+ this.slideoverOpen = true;
47
+ this.visible = true;
48
+ this.opened.emit();
49
+ }
50
+ close() {
51
+ this.removeModalMask();
52
+ this.slideoverOpen = false;
53
+ this.closed.emit();
54
+ setTimeout(() => this.visible = false, 200);
55
+ }
56
+ toggle() {
57
+ if (this.slideoverOpen) {
58
+ this.close();
59
+ }
60
+ else {
61
+ this.open();
62
+ }
63
+ }
64
+ addModalMask() {
65
+ if (this.modal) {
66
+ this.overlay.nativeElement.classList.add('particle_dialog_overlay');
67
+ document.body.classList.add('scroll_none');
68
+ }
69
+ }
70
+ removeModalMask() {
71
+ if (this.modal) {
72
+ this.overlay.nativeElement.classList.remove('particle_dialog_overlay');
73
+ document.body.classList.remove('scroll_none');
74
+ }
75
+ }
76
+ ngOnDestroy() {
77
+ this.removeModalMask();
78
+ }
79
+ ngAfterViewInit() {
80
+ setTimeout(() => {
81
+ this._determineBreakpointExceeded(window.innerWidth);
82
+ }, 100);
83
+ }
84
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: SlideoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: SlideoverComponent, selector: "particle-slideover", inputs: { position: "position", modal: "modal", width: "width", height: "height", bgClass: "bgClass", text: "text", breakpoint: "breakpoint" }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["overlay"], descendants: true }], ngImport: i0, template: "<div #overlay (click)=\"close()\"></div>\r\n<div\r\n [ngClass]=\"bgClass + ' ' + (slideoverOpen ? 'slideover_active_' + position : 'slideover_inactive_' + position) + ' slideover-panel ' + position\"\r\n [style.width]=\"position === 'right' || position === 'left' ? (breakpointExceeded ? '100%' : width) : null\"\r\n [style.height]=\"position === 'top' || position === 'bottom' ? (breakpointExceeded ? '100%' : height) : null\"\r\n [style.left]=\"position === 'left' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.right]=\"position === 'right' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.bottom]=\"position === 'bottom' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.top]=\"position === 'top' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.visibility]=\"!visible ? 'hidden': 'visible'\"\r\n [attr.aria-hidden]=\"!slideoverOpen\"\r\n>\r\n <div class=\"push_close_bar\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"close()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".slideover-panel{position:fixed;transition:transform .3s;display:flex;flex-direction:column;z-index:var(--z-dialog)}.slideover-panel.left{top:0;left:0;height:100%}.slideover-panel.right{top:0;right:0;height:100%}.slideover-panel.top{top:0;left:0;width:100%}.slideover-panel.bottom{bottom:0;left:0;width:100%}.slideover_inactive_left,.slideover_active_left{transition:left .2s ease-in-out}.slideover_inactive_right,.slideover_active_right{transition:right .2s ease-in-out}.slideover_inactive_top,.slideover_active_top{transition:top .2s ease-in-out}.slideover_inactive_bottom,.slideover_active_bottom{transition:bottom .2s ease-in-out}.push_close_bar{position:absolute;right:0;top:0;width:45px;height:45px;z-index:var(--z-dialog);display:flex;justify-content:center;align-items:center}.data_hide_button{float:right;display:flex;align-items:center;justify-content:center;font-size:9pt;min-height:20px;height:20px;min-width:20px;width:20px;border-radius:50%;cursor:pointer;padding:0;transition:all .2s ease-in-out;background-color:#ffffffe6;color:#0006;border:1px solid rgba(0,0,0,.1)}.data_hide_button:hover{background-color:#0000004d;color:#fffc;border:1px solid rgba(0,0,0,.1)}.particle_dialog_overlay{position:fixed;display:block;width:100%;height:100%;inset:0;background-color:#78787866;z-index:var(--z-dialog)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: SlideoverComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'particle-slideover', template: "<div #overlay (click)=\"close()\"></div>\r\n<div\r\n [ngClass]=\"bgClass + ' ' + (slideoverOpen ? 'slideover_active_' + position : 'slideover_inactive_' + position) + ' slideover-panel ' + position\"\r\n [style.width]=\"position === 'right' || position === 'left' ? (breakpointExceeded ? '100%' : width) : null\"\r\n [style.height]=\"position === 'top' || position === 'bottom' ? (breakpointExceeded ? '100%' : height) : null\"\r\n [style.left]=\"position === 'left' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.right]=\"position === 'right' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : width) : null\"\r\n [style.bottom]=\"position === 'bottom' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.top]=\"position === 'top' && !slideoverOpen ? '-' + (breakpointExceeded ? '100%' : height) : null\"\r\n [style.visibility]=\"!visible ? 'hidden': 'visible'\"\r\n [attr.aria-hidden]=\"!slideoverOpen\"\r\n>\r\n <div class=\"push_close_bar\">\r\n <button class=\"access btnset clear\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"close()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".slideover-panel{position:fixed;transition:transform .3s;display:flex;flex-direction:column;z-index:var(--z-dialog)}.slideover-panel.left{top:0;left:0;height:100%}.slideover-panel.right{top:0;right:0;height:100%}.slideover-panel.top{top:0;left:0;width:100%}.slideover-panel.bottom{bottom:0;left:0;width:100%}.slideover_inactive_left,.slideover_active_left{transition:left .2s ease-in-out}.slideover_inactive_right,.slideover_active_right{transition:right .2s ease-in-out}.slideover_inactive_top,.slideover_active_top{transition:top .2s ease-in-out}.slideover_inactive_bottom,.slideover_active_bottom{transition:bottom .2s ease-in-out}.push_close_bar{position:absolute;right:0;top:0;width:45px;height:45px;z-index:var(--z-dialog);display:flex;justify-content:center;align-items:center}.data_hide_button{float:right;display:flex;align-items:center;justify-content:center;font-size:9pt;min-height:20px;height:20px;min-width:20px;width:20px;border-radius:50%;cursor:pointer;padding:0;transition:all .2s ease-in-out;background-color:#ffffffe6;color:#0006;border:1px solid rgba(0,0,0,.1)}.data_hide_button:hover{background-color:#0000004d;color:#fffc;border:1px solid rgba(0,0,0,.1)}.particle_dialog_overlay{position:fixed;display:block;width:100%;height:100%;inset:0;background-color:#78787866;z-index:var(--z-dialog)}\n"] }]
90
+ }], ctorParameters: () => [], propDecorators: { position: [{
91
+ type: Input
92
+ }], modal: [{
93
+ type: Input
94
+ }], width: [{
95
+ type: Input
96
+ }], height: [{
97
+ type: Input
98
+ }], bgClass: [{
99
+ type: Input
100
+ }], text: [{
101
+ type: Input
102
+ }], breakpoint: [{
103
+ type: Input
104
+ }], opened: [{
105
+ type: Output
106
+ }], closed: [{
107
+ type: Output
108
+ }], overlay: [{
109
+ type: ViewChild,
110
+ args: ['overlay']
111
+ }], onResize: [{
112
+ type: HostListener,
113
+ args: ['window:resize', ['$event']]
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVvdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zbGlkZW92ZXIvc2xpZGVvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zbGlkZW92ZXIvc2xpZGVvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7O0FBUXZCLE1BQU0sT0FBTyxrQkFBa0I7SUFFckIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUU1QixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFaEIsSUFDSSxRQUFRLENBQUMsUUFBZ0I7UUFDM0IsSUFBSSxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBR2IsS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUdoQixNQUFNLEdBQUcsT0FBTyxDQUFDO0lBR2pCLE9BQU8sR0FBRyxlQUFlLENBQUM7SUFHMUIsSUFBSSxHQUFrQjtRQUNwQixLQUFLLEVBQUUsaUJBQWlCO0tBQ1IsQ0FBQztJQUVuQjs7T0FFRztJQUVILFVBQVUsR0FBRyxHQUFHLENBQUM7SUFHakIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFHakMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFHakMsT0FBTyxHQUFlLElBQVcsQ0FBQztJQUVsQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFFM0I7SUFDQSxDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVPLDRCQUE0QixDQUFDLFVBQWtCO1FBQ3JELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekgsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNwRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3ZFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO3VHQWpIVSxrQkFBa0I7MkZBQWxCLGtCQUFrQiw2WkNuQi9CLG0yQ0F1QkE7OzJGREphLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxvQkFBb0I7d0RBWTFCLFFBQVE7c0JBRFgsS0FBSztnQkFjTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQVNOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixNQUFNO3NCQURMLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNO2dCQUlQLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTO2dCQVNwQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U2xpZGVvdmVyVGV4dH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9wYXJ0aWNsZS1jb21wb25lbnQtdGV4dC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BhcnRpY2xlLXNsaWRlb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlb3Zlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVvdmVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpZGVvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSBfcG9zaXRpb24gPSAncmlnaHQnO1xyXG5cclxuICBzbGlkZW92ZXJPcGVuID0gZmFsc2U7XHJcbiAgdmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAocG9zaXRpb24gJiYgWydsZWZ0JywgJ3JpZ2h0JywgJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBvc2l0aW9uLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcclxuICAgICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fcG9zaXRpb24gPSAncmlnaHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBvc2l0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIG1vZGFsID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICB3aWR0aCA9ICczMDBweCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0ID0gJzEwMHB4JztcclxuXHJcbiAgQElucHV0KClcclxuICBiZ0NsYXNzID0gJ2NvbnRlbnRfY29sb3InO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHQ6IFNsaWRlb3ZlclRleHQgPSB7XHJcbiAgICBjbG9zZTogJ0Nsb3NlIFNsaWRlb3ZlcidcclxuICB9IGFzIFNsaWRlb3ZlclRleHQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJyZWFrcG9pbnQgdGhhdCB3aWxsIG1ha2UgdGhlIGNvbnRhaW5lciB0YWtlIG92ZXIgdGhlIHNjcmVlbiB3aGVuIGl0J3MgY3Jvc3NlZC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGJyZWFrcG9pbnQgPSA3Njk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheScpXHJcbiAgb3ZlcmxheTogRWxlbWVudFJlZiA9IG51bGwgYXMgYW55O1xyXG5cclxuICBicmVha3BvaW50RXhjZWVkZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXRlcm1pbmVCcmVha3BvaW50RXhjZWVkZWQoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGV0ZXJtaW5lQnJlYWtwb2ludEV4Y2VlZGVkKGlubmVyV2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYnJlYWtwb2ludCkge1xyXG4gICAgICB0aGlzLmJyZWFrcG9pbnRFeGNlZWRlZCA9IGlubmVyV2lkdGggPCB0aGlzLmJyZWFrcG9pbnQgfHwgaW5uZXJXaWR0aCA8ICt0aGlzLndpZHRoLnN1YnN0cmluZygwLCB0aGlzLndpZHRoLmxlbmd0aCAtIDIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbigpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkTW9kYWxNYXNrKCk7XHJcbiAgICB0aGlzLnNsaWRlb3Zlck9wZW4gPSB0cnVlO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVNb2RhbE1hc2soKTtcclxuICAgIHRoaXMuc2xpZGVvdmVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy52aXNpYmxlID0gZmFsc2UsIDIwMCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbGlkZW92ZXJPcGVuKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRNb2RhbE1hc2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tb2RhbCkge1xyXG4gICAgICB0aGlzLm92ZXJsYXkubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwYXJ0aWNsZV9kaWFsb2dfb3ZlcmxheScpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3Njcm9sbF9ub25lJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZU1vZGFsTWFzaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGFsKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3BhcnRpY2xlX2RpYWxvZ19vdmVybGF5Jyk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnc2Nyb2xsX25vbmUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVNb2RhbE1hc2soKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9kZXRlcm1pbmVCcmVha3BvaW50RXhjZWVkZWQod2luZG93LmlubmVyV2lkdGgpXHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjb3ZlcmxheSAoY2xpY2spPVwiY2xvc2UoKVwiPjwvZGl2PlxyXG48ZGl2XHJcbiAgW25nQ2xhc3NdPVwiYmdDbGFzcyArICcgJyArIChzbGlkZW92ZXJPcGVuID8gJ3NsaWRlb3Zlcl9hY3RpdmVfJyArIHBvc2l0aW9uIDogJ3NsaWRlb3Zlcl9pbmFjdGl2ZV8nICsgcG9zaXRpb24pICsgJyBzbGlkZW92ZXItcGFuZWwgJyArIHBvc2l0aW9uXCJcclxuICBbc3R5bGUud2lkdGhdPVwicG9zaXRpb24gPT09ICdyaWdodCcgfHwgcG9zaXRpb24gPT09ICdsZWZ0JyA/IChicmVha3BvaW50RXhjZWVkZWQgPyAnMTAwJScgOiB3aWR0aCkgOiBudWxsXCJcclxuICBbc3R5bGUuaGVpZ2h0XT1cInBvc2l0aW9uID09PSAndG9wJyB8fCBwb3NpdGlvbiA9PT0gJ2JvdHRvbScgPyAoYnJlYWtwb2ludEV4Y2VlZGVkID8gJzEwMCUnIDogaGVpZ2h0KSA6IG51bGxcIlxyXG4gIFtzdHlsZS5sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCcgJiYgIXNsaWRlb3Zlck9wZW4gPyAnLScgKyAoYnJlYWtwb2ludEV4Y2VlZGVkID8gJzEwMCUnIDogd2lkdGgpIDogbnVsbFwiXHJcbiAgW3N0eWxlLnJpZ2h0XT1cInBvc2l0aW9uID09PSAncmlnaHQnICYmICFzbGlkZW92ZXJPcGVuID8gJy0nICsgKGJyZWFrcG9pbnRFeGNlZWRlZCA/ICcxMDAlJyA6IHdpZHRoKSA6IG51bGxcIlxyXG4gIFtzdHlsZS5ib3R0b21dPVwicG9zaXRpb24gPT09ICdib3R0b20nICYmICFzbGlkZW92ZXJPcGVuID8gJy0nICsgKGJyZWFrcG9pbnRFeGNlZWRlZCA/ICcxMDAlJyA6IGhlaWdodCkgOiBudWxsXCJcclxuICBbc3R5bGUudG9wXT1cInBvc2l0aW9uID09PSAndG9wJyAmJiAhc2xpZGVvdmVyT3BlbiA/ICctJyArIChicmVha3BvaW50RXhjZWVkZWQgPyAnMTAwJScgOiBoZWlnaHQpIDogbnVsbFwiXHJcbiAgW3N0eWxlLnZpc2liaWxpdHldPVwiIXZpc2libGUgPyAnaGlkZGVuJzogJ3Zpc2libGUnXCJcclxuICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhc2xpZGVvdmVyT3BlblwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwicHVzaF9jbG9zZV9iYXJcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNsZWFyXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmNsb3NlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8yMHB4IHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgcHRsX2lucHV0X2JnX2NvbG9yXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19