@skyux/layout 8.7.0 → 9.0.0-alpha.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 (149) hide show
  1. package/esm2022/lib/modules/action-button/action-button-adapter-service.mjs +44 -0
  2. package/esm2022/lib/modules/action-button/action-button-container.component.mjs +138 -0
  3. package/{esm2020 → esm2022}/lib/modules/action-button/action-button-details.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/modules/action-button/action-button-header.component.mjs +4 -4
  5. package/esm2022/lib/modules/action-button/action-button-icon.component.mjs +40 -0
  6. package/esm2022/lib/modules/action-button/action-button.component.mjs +50 -0
  7. package/{esm2020 → esm2022}/lib/modules/action-button/action-button.module.mjs +23 -23
  8. package/{esm2020 → esm2022}/lib/modules/back-to-top/back-to-top-adapter.service.mjs +19 -22
  9. package/esm2022/lib/modules/back-to-top/back-to-top.component.mjs +25 -0
  10. package/esm2022/lib/modules/back-to-top/back-to-top.directive.mjs +119 -0
  11. package/{esm2020 → esm2022}/lib/modules/back-to-top/back-to-top.module.mjs +13 -13
  12. package/{esm2020 → esm2022}/lib/modules/box/box-content.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/modules/box/box-controls.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/modules/box/box-header.component.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/modules/box/box.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/modules/box/box.module.mjs +11 -11
  17. package/{esm2020 → esm2022}/lib/modules/card/card-actions.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/modules/card/card-content.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/modules/card/card-title.component.mjs +4 -4
  20. package/esm2022/lib/modules/card/card.component.mjs +107 -0
  21. package/{esm2020 → esm2022}/lib/modules/card/card.module.mjs +21 -21
  22. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list-content.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list-heading.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list-label.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list-value.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list.component.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list.module.mjs +13 -13
  28. package/{esm2020 → esm2022}/lib/modules/definition-list/definition-list.service.mjs +4 -4
  29. package/esm2022/lib/modules/description-list/description-list-adapter-service.mjs +44 -0
  30. package/{esm2020 → esm2022}/lib/modules/description-list/description-list-content.component.mjs +4 -4
  31. package/esm2022/lib/modules/description-list/description-list-description.component.mjs +52 -0
  32. package/{esm2020 → esm2022}/lib/modules/description-list/description-list-term.component.mjs +4 -4
  33. package/esm2022/lib/modules/description-list/description-list.component.mjs +95 -0
  34. package/{esm2020 → esm2022}/lib/modules/description-list/description-list.module.mjs +19 -19
  35. package/esm2022/lib/modules/description-list/description-list.service.mjs +24 -0
  36. package/esm2022/lib/modules/fluid-grid/column.component.mjs +66 -0
  37. package/esm2022/lib/modules/fluid-grid/fluid-grid.component.mjs +40 -0
  38. package/{esm2020 → esm2022}/lib/modules/fluid-grid/fluid-grid.module.mjs +5 -5
  39. package/{esm2020 → esm2022}/lib/modules/fluid-grid/row.component.mjs +4 -4
  40. package/esm2022/lib/modules/format/format.component.mjs +64 -0
  41. package/{esm2020 → esm2022}/lib/modules/format/format.module.mjs +5 -5
  42. package/esm2022/lib/modules/inline-delete/inline-delete-adapter.service.mjs +123 -0
  43. package/esm2022/lib/modules/inline-delete/inline-delete.component.mjs +164 -0
  44. package/{esm2020 → esm2022}/lib/modules/inline-delete/inline-delete.module.mjs +11 -11
  45. package/esm2022/lib/modules/page/page-theme-adapter.service.mjs +40 -0
  46. package/esm2022/lib/modules/page/page.component.mjs +49 -0
  47. package/{esm2020 → esm2022}/lib/modules/page/page.module.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-adapter.service.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-alert.component.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-content.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-image.component.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-key-info.component.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-status.component.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-subtitle.component.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary-title.component.mjs +4 -4
  56. package/esm2022/lib/modules/page-summary/page-summary.component.mjs +73 -0
  57. package/{esm2020 → esm2022}/lib/modules/page-summary/page-summary.module.mjs +19 -19
  58. package/esm2022/lib/modules/shared/sky-layout-resources.module.mjs +60 -0
  59. package/esm2022/lib/modules/text-expand/text-expand-adapter.service.mjs +26 -0
  60. package/{esm2020 → esm2022}/lib/modules/text-expand/text-expand-modal.component.mjs +4 -4
  61. package/esm2022/lib/modules/text-expand/text-expand.component.mjs +315 -0
  62. package/{esm2020 → esm2022}/lib/modules/text-expand/text-expand.module.mjs +11 -11
  63. package/esm2022/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.mjs +32 -0
  64. package/esm2022/lib/modules/text-expand-repeater/text-expand-repeater.component.mjs +216 -0
  65. package/{esm2020 → esm2022}/lib/modules/text-expand-repeater/text-expand-repeater.module.mjs +5 -5
  66. package/{esm2020 → esm2022}/lib/modules/toolbar/toolbar-item.component.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/modules/toolbar/toolbar-section.component.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/modules/toolbar/toolbar-view-actions.component.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/modules/toolbar/toolbar.component.mjs +4 -4
  70. package/{esm2020 → esm2022}/lib/modules/toolbar/toolbar.module.mjs +11 -11
  71. package/esm2022/testing/action-button-fixture.mjs +48 -0
  72. package/esm2022/testing/box/box-harness.mjs +34 -0
  73. package/esm2022/testing/card-fixture.mjs +65 -0
  74. package/esm2022/testing/page-summary-fixture.mjs +31 -0
  75. package/fesm2022/skyux-layout-testing.mjs +181 -0
  76. package/{fesm2015 → fesm2022}/skyux-layout-testing.mjs.map +1 -1
  77. package/fesm2022/skyux-layout.mjs +2957 -0
  78. package/{fesm2020 → fesm2022}/skyux-layout.mjs.map +1 -1
  79. package/lib/modules/action-button/action-button-container.component.d.ts +1 -1
  80. package/lib/modules/action-button/action-button-icon.component.d.ts +1 -1
  81. package/lib/modules/action-button/action-button.component.d.ts +1 -1
  82. package/lib/modules/back-to-top/back-to-top.directive.d.ts +1 -1
  83. package/lib/modules/box/box.component.d.ts +1 -1
  84. package/lib/modules/card/card.component.d.ts +1 -1
  85. package/lib/modules/definition-list/definition-list.component.d.ts +1 -1
  86. package/lib/modules/description-list/description-list.component.d.ts +1 -1
  87. package/lib/modules/fluid-grid/column.component.d.ts +1 -1
  88. package/lib/modules/fluid-grid/fluid-grid.component.d.ts +1 -1
  89. package/lib/modules/fluid-grid/row.component.d.ts +1 -1
  90. package/lib/modules/format/format.component.d.ts +1 -1
  91. package/lib/modules/inline-delete/inline-delete.component.d.ts +1 -1
  92. package/lib/modules/page/page.component.d.ts +1 -1
  93. package/lib/modules/text-expand/text-expand.component.d.ts +1 -1
  94. package/lib/modules/text-expand-repeater/text-expand-repeater.component.d.ts +1 -1
  95. package/package.json +23 -31
  96. package/esm2020/lib/modules/action-button/action-button-adapter-service.mjs +0 -47
  97. package/esm2020/lib/modules/action-button/action-button-container.component.mjs +0 -139
  98. package/esm2020/lib/modules/action-button/action-button-icon.component.mjs +0 -43
  99. package/esm2020/lib/modules/action-button/action-button.component.mjs +0 -53
  100. package/esm2020/lib/modules/back-to-top/back-to-top.component.mjs +0 -30
  101. package/esm2020/lib/modules/back-to-top/back-to-top.directive.mjs +0 -118
  102. package/esm2020/lib/modules/card/card.component.mjs +0 -109
  103. package/esm2020/lib/modules/description-list/description-list-adapter-service.mjs +0 -47
  104. package/esm2020/lib/modules/description-list/description-list-description.component.mjs +0 -55
  105. package/esm2020/lib/modules/description-list/description-list.component.mjs +0 -98
  106. package/esm2020/lib/modules/description-list/description-list.service.mjs +0 -29
  107. package/esm2020/lib/modules/fluid-grid/column.component.mjs +0 -71
  108. package/esm2020/lib/modules/fluid-grid/fluid-grid.component.mjs +0 -42
  109. package/esm2020/lib/modules/format/format.component.mjs +0 -67
  110. package/esm2020/lib/modules/inline-delete/inline-delete-adapter.service.mjs +0 -122
  111. package/esm2020/lib/modules/inline-delete/inline-delete.component.mjs +0 -167
  112. package/esm2020/lib/modules/page/page-theme-adapter.service.mjs +0 -43
  113. package/esm2020/lib/modules/page/page.component.mjs +0 -52
  114. package/esm2020/lib/modules/page-summary/page-summary.component.mjs +0 -75
  115. package/esm2020/lib/modules/shared/sky-layout-resources.module.mjs +0 -60
  116. package/esm2020/lib/modules/text-expand/text-expand-adapter.service.mjs +0 -29
  117. package/esm2020/lib/modules/text-expand/text-expand.component.mjs +0 -306
  118. package/esm2020/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.mjs +0 -35
  119. package/esm2020/lib/modules/text-expand-repeater/text-expand-repeater.component.mjs +0 -214
  120. package/esm2020/testing/action-button-fixture.mjs +0 -51
  121. package/esm2020/testing/box/box-harness.mjs +0 -40
  122. package/esm2020/testing/card-fixture.mjs +0 -67
  123. package/esm2020/testing/page-summary-fixture.mjs +0 -34
  124. package/fesm2015/skyux-layout-testing.mjs +0 -198
  125. package/fesm2015/skyux-layout.mjs +0 -2996
  126. package/fesm2015/skyux-layout.mjs.map +0 -1
  127. package/fesm2020/skyux-layout-testing.mjs +0 -192
  128. package/fesm2020/skyux-layout-testing.mjs.map +0 -1
  129. package/fesm2020/skyux-layout.mjs +0 -2982
  130. /package/{esm2020 → esm2022}/index.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/modules/action-button/action-button-permalink.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/modules/action-button/types/action-button-container-align-items-type.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/modules/action-button/types/action-button-container-align-items.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/modules/back-to-top/models/back-to-top-message-type.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/modules/back-to-top/models/back-to-top-message.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/modules/back-to-top/models/back-to-top-options.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/modules/description-list/types/description-list-mode-type.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/modules/description-list/types/description-list-mode.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/modules/fluid-grid/types/fluid-grid-gutter-size-type.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/modules/format/format-item.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/modules/inline-delete/inline-delete-type.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/modules/page/page-layout-type.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/modules/text-expand/text-expand-modal-context-token.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/modules/text-expand/text-expand-modal-context.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/modules/text-expand-repeater/types/text-expand-repeater-list-style-type.mjs +0 -0
  146. /package/{esm2020 → esm2022}/skyux-layout.mjs +0 -0
  147. /package/{esm2020 → esm2022}/testing/box/box-harness.filters.mjs +0 -0
  148. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  149. /package/{esm2020 → esm2022}/testing/skyux-layout-testing.mjs +0 -0
@@ -1,306 +0,0 @@
1
- var _SkyTextExpandComponent_instances, _SkyTextExpandComponent_collapsedText, _SkyTextExpandComponent_newlineCount, _SkyTextExpandComponent_seeMoreText, _SkyTextExpandComponent_seeLessText, _SkyTextExpandComponent_textToShow, _SkyTextExpandComponent__maxExpandedLength, _SkyTextExpandComponent__maxExpandedNewlines, _SkyTextExpandComponent__maxLength, _SkyTextExpandComponent__text, _SkyTextExpandComponent__textEl, _SkyTextExpandComponent_resources, _SkyTextExpandComponent_modalSvc, _SkyTextExpandComponent_textExpandAdapter, _SkyTextExpandComponent_setup, _SkyTextExpandComponent_getNewlineCount, _SkyTextExpandComponent_getTruncatedText, _SkyTextExpandComponent_animateText;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { animate, state, style, transition, trigger, } from '@angular/animations';
4
- import { Component, ElementRef, Input, ViewChild, } from '@angular/core';
5
- import { forkJoin as observableForkJoin } from 'rxjs';
6
- import { take } from 'rxjs/operators';
7
- import { SkyTextExpandAdapterService } from './text-expand-adapter.service';
8
- import { SKY_TEXT_EXPAND_MODAL_CONTEXT } from './text-expand-modal-context-token';
9
- import { SkyTextExpandModalComponent } from './text-expand-modal.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@skyux/i18n";
12
- import * as i2 from "@skyux/modals";
13
- import * as i3 from "./text-expand-adapter.service";
14
- import * as i4 from "@angular/common";
15
- /**
16
- * Auto-incrementing integer used to generate unique ids for text expand components.
17
- */
18
- let nextId = 0;
19
- export class SkyTextExpandComponent {
20
- /**
21
- * The maximum number of text characters to display inline when users select the link
22
- * to expand the full text. If the text exceeds this limit, then the component expands
23
- * the full text in a modal instead.
24
- * @default 600
25
- */
26
- set maxExpandedLength(value) {
27
- if (value) {
28
- __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedLength, value, "f");
29
- }
30
- else {
31
- __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedLength, 600, "f");
32
- }
33
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
34
- }
35
- get maxExpandedLength() {
36
- return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxExpandedLength, "f");
37
- }
38
- /**
39
- * The maximum number of newline characters to display inline when users select
40
- * the link to expand the full text. If the text exceeds this limit, then
41
- * the component expands the full text in a modal view instead.
42
- * @default 2
43
- */
44
- set maxExpandedNewlines(value) {
45
- if (value) {
46
- __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedNewlines, value, "f");
47
- }
48
- else {
49
- __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedNewlines, 2, "f");
50
- }
51
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
52
- }
53
- get maxExpandedNewlines() {
54
- return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxExpandedNewlines, "f");
55
- }
56
- /**
57
- * The number of text characters to display before truncating the text.
58
- * To avoid truncating text in the middle of a word, the component looks for a space
59
- * in the 10 characters before the last character.
60
- * @default 200
61
- */
62
- set maxLength(value) {
63
- if (value) {
64
- __classPrivateFieldSet(this, _SkyTextExpandComponent__maxLength, value, "f");
65
- }
66
- else {
67
- __classPrivateFieldSet(this, _SkyTextExpandComponent__maxLength, 200, "f");
68
- }
69
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
70
- }
71
- get maxLength() {
72
- return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxLength, "f");
73
- }
74
- /**
75
- * The text to truncate.
76
- */
77
- set text(value) {
78
- __classPrivateFieldSet(this, _SkyTextExpandComponent__text, value ?? '', "f");
79
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, __classPrivateFieldGet(this, _SkyTextExpandComponent__text, "f"));
80
- }
81
- get text() {
82
- return __classPrivateFieldGet(this, _SkyTextExpandComponent__text, "f");
83
- }
84
- set textEl(value) {
85
- __classPrivateFieldSet(this, _SkyTextExpandComponent__textEl, value, "f");
86
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
87
- }
88
- get textEl() {
89
- return __classPrivateFieldGet(this, _SkyTextExpandComponent__textEl, "f");
90
- }
91
- constructor(resources, modalSvc, textExpandAdapter) {
92
- _SkyTextExpandComponent_instances.add(this);
93
- /**
94
- * Whether to replace newline characters in truncated text with spaces.
95
- */
96
- this.truncateNewlines = true;
97
- this.buttonText = '';
98
- this.contentSectionId = `sky-text-expand-content-${++nextId}`;
99
- this.expandable = false;
100
- this.isModal = false;
101
- this.transitionHeight = 1;
102
- _SkyTextExpandComponent_collapsedText.set(this, '');
103
- _SkyTextExpandComponent_newlineCount.set(this, 0);
104
- _SkyTextExpandComponent_seeMoreText.set(this, '');
105
- _SkyTextExpandComponent_seeLessText.set(this, '');
106
- _SkyTextExpandComponent_textToShow.set(this, '');
107
- _SkyTextExpandComponent__maxExpandedLength.set(this, 600);
108
- _SkyTextExpandComponent__maxExpandedNewlines.set(this, 2);
109
- _SkyTextExpandComponent__maxLength.set(this, 200);
110
- _SkyTextExpandComponent__text.set(this, '');
111
- _SkyTextExpandComponent__textEl.set(this, void 0);
112
- _SkyTextExpandComponent_resources.set(this, void 0);
113
- _SkyTextExpandComponent_modalSvc.set(this, void 0);
114
- _SkyTextExpandComponent_textExpandAdapter.set(this, void 0);
115
- __classPrivateFieldSet(this, _SkyTextExpandComponent_resources, resources, "f");
116
- __classPrivateFieldSet(this, _SkyTextExpandComponent_modalSvc, modalSvc, "f");
117
- __classPrivateFieldSet(this, _SkyTextExpandComponent_textExpandAdapter, textExpandAdapter, "f");
118
- }
119
- textExpand() {
120
- if (this.isModal) {
121
- // Modal View
122
- /* istanbul ignore else */
123
- /* sanity check */
124
- if (!this.isExpanded) {
125
- __classPrivateFieldGet(this, _SkyTextExpandComponent_modalSvc, "f").open(SkyTextExpandModalComponent, [
126
- {
127
- provide: SKY_TEXT_EXPAND_MODAL_CONTEXT,
128
- useValue: {
129
- header: this.expandModalTitle,
130
- text: this.text,
131
- },
132
- },
133
- ]);
134
- }
135
- }
136
- else {
137
- // Normal View
138
- if (!this.isExpanded) {
139
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_animateText).call(this, true);
140
- }
141
- else {
142
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_animateText).call(this, false);
143
- }
144
- }
145
- }
146
- animationEnd() {
147
- if (this.textEl && this.containerEl) {
148
- // Ensure the correct text is displayed
149
- __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_textToShow, "f"));
150
- setTimeout(() => {
151
- if (this.containerEl) {
152
- // Set height back to auto so the browser can change the height as needed with window changes
153
- __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").removeContainerMaxHeight(this.containerEl);
154
- }
155
- });
156
- }
157
- }
158
- ngAfterContentInit() {
159
- observableForkJoin([
160
- __classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f").getString('skyux_text_expand_see_more'),
161
- __classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f").getString('skyux_text_expand_see_less'),
162
- ])
163
- .pipe(take(1))
164
- .subscribe((resources) => {
165
- __classPrivateFieldSet(this, _SkyTextExpandComponent_seeMoreText, resources[0], "f");
166
- __classPrivateFieldSet(this, _SkyTextExpandComponent_seeLessText, resources[1], "f");
167
- __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
168
- /* istanbul ignore else */
169
- if (!this.expandModalTitle) {
170
- __classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f")
171
- .getString('skyux_text_expand_modal_title')
172
- .pipe(take(1))
173
- .subscribe((resource) => {
174
- this.expandModalTitle = resource;
175
- });
176
- }
177
- });
178
- }
179
- }
180
- _SkyTextExpandComponent_collapsedText = new WeakMap(), _SkyTextExpandComponent_newlineCount = new WeakMap(), _SkyTextExpandComponent_seeMoreText = new WeakMap(), _SkyTextExpandComponent_seeLessText = new WeakMap(), _SkyTextExpandComponent_textToShow = new WeakMap(), _SkyTextExpandComponent__maxExpandedLength = new WeakMap(), _SkyTextExpandComponent__maxExpandedNewlines = new WeakMap(), _SkyTextExpandComponent__maxLength = new WeakMap(), _SkyTextExpandComponent__text = new WeakMap(), _SkyTextExpandComponent__textEl = new WeakMap(), _SkyTextExpandComponent_resources = new WeakMap(), _SkyTextExpandComponent_modalSvc = new WeakMap(), _SkyTextExpandComponent_textExpandAdapter = new WeakMap(), _SkyTextExpandComponent_instances = new WeakSet(), _SkyTextExpandComponent_setup = function _SkyTextExpandComponent_setup(value) {
181
- if (value) {
182
- __classPrivateFieldSet(this, _SkyTextExpandComponent_newlineCount, __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_getNewlineCount).call(this, value), "f");
183
- __classPrivateFieldSet(this, _SkyTextExpandComponent_collapsedText, __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_getTruncatedText).call(this, value, this.maxLength), "f");
184
- if (__classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f") !== value) {
185
- this.buttonText = __classPrivateFieldGet(this, _SkyTextExpandComponent_seeMoreText, "f");
186
- this.isExpanded = false;
187
- this.expandable = true;
188
- this.isModal =
189
- __classPrivateFieldGet(this, _SkyTextExpandComponent_newlineCount, "f") > this.maxExpandedNewlines ||
190
- this.text.length > this.maxExpandedLength;
191
- }
192
- else {
193
- this.expandable = false;
194
- }
195
- __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"), "f");
196
- }
197
- else {
198
- __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, '', "f");
199
- this.expandable = false;
200
- }
201
- if (this.textEl) {
202
- __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_textToShow, "f"));
203
- }
204
- }, _SkyTextExpandComponent_getNewlineCount = function _SkyTextExpandComponent_getNewlineCount(value) {
205
- const matches = value.match(/\n/gi);
206
- if (matches) {
207
- return matches.length;
208
- }
209
- return 0;
210
- }, _SkyTextExpandComponent_getTruncatedText = function _SkyTextExpandComponent_getTruncatedText(value, length) {
211
- let i;
212
- if (this.truncateNewlines) {
213
- value = value.replace(/\n+/gi, ' ');
214
- }
215
- // Jump ahead one character and see if it's a space, and if it isn't,
216
- // back up to the first space and break there so a word doesn't get cut
217
- // in half.
218
- if (length < value.length) {
219
- for (i = length; i > length - 10; i--) {
220
- if (/\s/.test(value.charAt(i))) {
221
- length = i;
222
- break;
223
- }
224
- }
225
- }
226
- return value.substring(0, length);
227
- }, _SkyTextExpandComponent_animateText = function _SkyTextExpandComponent_animateText(expanding) {
228
- if (this.containerEl && this.textEl) {
229
- const adapter = __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f");
230
- const container = this.containerEl;
231
- if (expanding) {
232
- adapter.setText(this.textEl, this.text);
233
- __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, this.text, "f");
234
- }
235
- else {
236
- adapter.setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"));
237
- __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"), "f");
238
- }
239
- this.buttonText = expanding ? __classPrivateFieldGet(this, _SkyTextExpandComponent_seeLessText, "f") : __classPrivateFieldGet(this, _SkyTextExpandComponent_seeMoreText, "f");
240
- // Measure the new height so we can animate to it.
241
- const newHeight = adapter.getContainerHeight(container);
242
- this.transitionHeight = newHeight;
243
- // Always show all text while animating so that the animation is smooth. The animation callback will set this back if needed.
244
- if (!expanding) {
245
- adapter.setText(this.textEl, this.text);
246
- }
247
- this.isExpanded = expanding;
248
- }
249
- };
250
- SkyTextExpandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextExpandComponent, deps: [{ token: i1.SkyLibResourcesService }, { token: i2.SkyModalService }, { token: i3.SkyTextExpandAdapterService }], target: i0.ɵɵFactoryTarget.Component });
251
- SkyTextExpandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTextExpandComponent, selector: "sky-text-expand", inputs: { expandModalTitle: "expandModalTitle", maxExpandedLength: "maxExpandedLength", maxExpandedNewlines: "maxExpandedNewlines", maxLength: "maxLength", text: "text", truncateNewlines: "truncateNewlines" }, providers: [SkyTextExpandAdapterService], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "textEl", first: true, predicate: ["text"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n [@expansionAnimation]=\"{\n value: isExpanded,\n params: { transitionHeight: transitionHeight }\n }\"\n (@expansionAnimation.done)=\"animationEnd()\"\n class=\"sky-text-expand-container\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : !!isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
252
- trigger('expansionAnimation', [
253
- transition(':enter', []),
254
- state('true', style({
255
- maxHeight: '{{transitionHeight}}px',
256
- }), { params: { transitionHeight: 0 } }),
257
- state('false', style({
258
- maxHeight: '{{transitionHeight}}px',
259
- }), { params: { transitionHeight: 0 } }),
260
- transition('true => false', animate('250ms ease')),
261
- transition('false => true', animate('250ms ease')),
262
- transition('void => *', []),
263
- ]),
264
- ] });
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextExpandComponent, decorators: [{
266
- type: Component,
267
- args: [{ animations: [
268
- trigger('expansionAnimation', [
269
- transition(':enter', []),
270
- state('true', style({
271
- maxHeight: '{{transitionHeight}}px',
272
- }), { params: { transitionHeight: 0 } }),
273
- state('false', style({
274
- maxHeight: '{{transitionHeight}}px',
275
- }), { params: { transitionHeight: 0 } }),
276
- transition('true => false', animate('250ms ease')),
277
- transition('false => true', animate('250ms ease')),
278
- transition('void => *', []),
279
- ]),
280
- ], selector: 'sky-text-expand', providers: [SkyTextExpandAdapterService], template: "<div\n [@expansionAnimation]=\"{\n value: isExpanded,\n params: { transitionHeight: transitionHeight }\n }\"\n (@expansionAnimation.done)=\"animationEnd()\"\n class=\"sky-text-expand-container\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : !!isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"] }]
281
- }], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }, { type: i2.SkyModalService }, { type: i3.SkyTextExpandAdapterService }]; }, propDecorators: { expandModalTitle: [{
282
- type: Input
283
- }], maxExpandedLength: [{
284
- type: Input
285
- }], maxExpandedNewlines: [{
286
- type: Input
287
- }], maxLength: [{
288
- type: Input
289
- }], text: [{
290
- type: Input
291
- }], truncateNewlines: [{
292
- type: Input
293
- }], containerEl: [{
294
- type: ViewChild,
295
- args: ['container', {
296
- read: ElementRef,
297
- static: true,
298
- }]
299
- }], textEl: [{
300
- type: ViewChild,
301
- args: ['text', {
302
- read: ElementRef,
303
- static: true,
304
- }]
305
- }] } });
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUU1RTs7R0FFRztBQUNILElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQThCZixNQUFNLE9BQU8sc0JBQXNCO0lBUWpDOzs7OztPQUtHO0lBQ0gsSUFDVyxpQkFBaUIsQ0FBQyxLQUF5QjtRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULHVCQUFBLElBQUksOENBQXVCLEtBQUssTUFBQSxDQUFDO1NBQ2xDO2FBQU07WUFDTCx1QkFBQSxJQUFJLDhDQUF1QixHQUFH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LEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDcEM7NEJBQ0QsS0FBSyxDQUNILE9BQU8sRUFDUCxLQUFLLENBQUM7Z0NBQ0osU0FBUyxFQUFFLHdCQUF3Qjs2QkFDcEMsQ0FBQyxFQUNGLEVBQUUsTUFBTSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDcEM7NEJBQ0QsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ2xELFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDOzRCQUNsRCxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQzt5QkFDNUIsQ0FBQztxQkFDSCxZQUNTLGlCQUFpQixhQUdoQixDQUFDLDJCQUEyQixDQUFDO3FMQVFqQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBVUssaUJBQWlCO3NCQUQzQixLQUFLO2dCQXFCSyxtQkFBbUI7c0JBRDdCLEtBQUs7Z0JBcUJLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBa0JLLElBQUk7c0JBRGQsS0FBSztnQkFjQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBbUJDLFdBQVc7c0JBSmpCLFNBQVM7dUJBQUMsV0FBVyxFQUFFO3dCQUN0QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT1UsTUFBTTtzQkFKaEIsU0FBUzt1QkFBQyxNQUFNLEVBQUU7d0JBQ2pCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vdGV4dC1leHBhbmQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNLWV9URVhUX0VYUEFORF9NT0RBTF9DT05URVhUIH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1tb2RhbC1jb250ZXh0LXRva2VuJztcbmltcG9ydCB7IFNreVRleHRFeHBhbmRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1leHBhbmQtbW9kYWwuY29tcG9uZW50JztcblxuLyoqXG4gKiBBdXRvLWluY3JlbWVudGluZyBpbnRlZ2VyIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGlkcyBmb3IgdGV4dCBleHBhbmQgY29tcG9uZW50cy5cbiAqL1xubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZXhwYW5zaW9uQW5pbWF0aW9uJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW10pLFxuICAgICAgc3RhdGUoXG4gICAgICAgICd0cnVlJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG1heEhlaWdodDogJ3t7dHJhbnNpdGlvbkhlaWdodH19cHgnLFxuICAgICAgICB9KSxcbiAgICAgICAgeyBwYXJhbXM6IHsgdHJhbnNpdGlvbkhlaWdodDogMCB9IH1cbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2ZhbHNlJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG1heEhlaWdodDogJ3t7dHJhbnNpdGlvbkhlaWdodH19cHgnLFxuICAgICAgICB9KSxcbiAgICAgICAgeyBwYXJhbXM6IHsgdHJhbnNpdGlvbkhlaWdodDogMCB9IH1cbiAgICAgICksXG4gICAgICB0cmFuc2l0aW9uKCd0cnVlID0+IGZhbHNlJywgYW5pbWF0ZSgnMjUwbXMgZWFzZScpKSxcbiAgICAgIHRyYW5zaXRpb24oJ2ZhbHNlID0+IHRydWUnLCBhbmltYXRlKCcyNTBtcyBlYXNlJykpLFxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW10pLFxuICAgIF0pLFxuICBdLFxuICBzZWxlY3RvcjogJ3NreS10ZXh0LWV4cGFuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWV4cGFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZXhwYW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFeHBhbmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSB0byBkaXNwbGF5IHdoZW4gdGhlIGNvbXBvbmVudCBleHBhbmRzIHRoZSBmdWxsIHRleHQgaW4gYSBtb2RhbC5cbiAgICogQGRlZmF1bHQgXCJFeHBhbmRlZCB2aWV3XCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBleHBhbmRNb2RhbFRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZXh0IGNoYXJhY3RlcnMgdG8gZGlzcGxheSBpbmxpbmUgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGxpbmtcbiAgICogdG8gZXhwYW5kIHRoZSBmdWxsIHRleHQuIElmIHRoZSB0ZXh0IGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlbiB0aGUgY29tcG9uZW50IGV4cGFuZHNcbiAgICogdGhlIGZ1bGwgdGV4dCBpbiBhIG1vZGFsIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IDYwMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXhFeHBhbmRlZExlbmd0aCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfbWF4RXhwYW5kZWRMZW5ndGggPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTGVuZ3RoID0gNjAwO1xuICAgIH1cbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhFeHBhbmRlZExlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfbWF4RXhwYW5kZWRMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG5ld2xpbmUgY2hhcmFjdGVycyB0byBkaXNwbGF5IGlubGluZSB3aGVuIHVzZXJzIHNlbGVjdFxuICAgKiB0aGUgbGluayB0byBleHBhbmQgdGhlIGZ1bGwgdGV4dC4gSWYgdGhlIHRleHQgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGVuXG4gICAqIHRoZSBjb21wb25lbnQgZXhwYW5kcyB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwgdmlldyBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEV4cGFuZGVkTmV3bGluZXModmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTmV3bGluZXMgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTmV3bGluZXMgPSAyO1xuICAgIH1cbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhFeHBhbmRlZE5ld2xpbmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhFeHBhbmRlZE5ld2xpbmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGV4dCBjaGFyYWN0ZXJzIHRvIGRpc3BsYXkgYmVmb3JlIHRydW5jYXRpbmcgdGhlIHRleHQuXG4gICAqIFRvIGF2b2lkIHRydW5jYXRpbmcgdGV4dCBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCwgdGhlIGNvbXBvbmVudCBsb29rcyBmb3IgYSBzcGFjZVxuICAgKiBpbiB0aGUgMTAgY2hhcmFjdGVycyBiZWZvcmUgdGhlIGxhc3QgY2hhcmFjdGVyLlxuICAgKiBAZGVmYXVsdCAyMDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4TGVuZ3RoKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19tYXhMZW5ndGggPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX21heExlbmd0aCA9IDIwMDtcbiAgICB9XG4gICAgdGhpcy4jc2V0dXAodGhpcy50ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gdHJ1bmNhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190ZXh0ID0gdmFsdWUgPz8gJyc7XG4gICAgdGhpcy4jc2V0dXAodGhpcy4jX3RleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI190ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVwbGFjZSBuZXdsaW5lIGNoYXJhY3RlcnMgaW4gdHJ1bmNhdGVkIHRleHQgd2l0aCBzcGFjZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdHJ1bmNhdGVOZXdsaW5lcyA9IHRydWU7XG5cbiAgcHVibGljIGJ1dHRvblRleHQgPSAnJztcblxuICBwdWJsaWMgY29udGVudFNlY3Rpb25JZCA9IGBza3ktdGV4dC1leHBhbmQtY29udGVudC0keysrbmV4dElkfWA7XG5cbiAgcHVibGljIGV4cGFuZGFibGUgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNFeHBhbmRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaXNNb2RhbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0cmFuc2l0aW9uSGVpZ2h0ID0gMTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBjb250YWluZXJFbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0ZXh0Jywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2V0IHRleHRFbCh2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190ZXh0RWwgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0RWwoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190ZXh0RWw7XG4gIH1cblxuICAjY29sbGFwc2VkVGV4dCA9ICcnO1xuXG4gICNuZXdsaW5lQ291bnQgPSAwO1xuXG4gICNzZWVNb3JlVGV4dCA9ICcnO1xuXG4gICNzZWVMZXNzVGV4dCA9ICcnO1xuXG4gICN0ZXh0VG9TaG93ID0gJyc7XG5cbiAgI19tYXhFeHBhbmRlZExlbmd0aCA9IDYwMDtcblxuICAjX21heEV4cGFuZGVkTmV3bGluZXMgPSAyO1xuXG4gICNfbWF4TGVuZ3RoID0gMjAwO1xuXG4gICNfdGV4dCA9ICcnO1xuXG4gICNfdGV4dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNyZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG4gICNtb2RhbFN2YzogU2t5TW9kYWxTZXJ2aWNlO1xuICAjdGV4dEV4cGFuZEFkYXB0ZXI6IFNreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgbW9kYWxTdmM6IFNreU1vZGFsU2VydmljZSxcbiAgICB0ZXh0RXhwYW5kQWRhcHRlcjogU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcbiAgICB0aGlzLiNtb2RhbFN2YyA9IG1vZGFsU3ZjO1xuICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyID0gdGV4dEV4cGFuZEFkYXB0ZXI7XG4gIH1cblxuICBwdWJsaWMgdGV4dEV4cGFuZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vZGFsKSB7XG4gICAgICAvLyBNb2RhbCBWaWV3XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLiNtb2RhbFN2Yy5vcGVuKFNreVRleHRFeHBhbmRNb2RhbENvbXBvbmVudCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNLWV9URVhUX0VYUEFORF9NT0RBTF9DT05URVhULFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLmV4cGFuZE1vZGFsVGl0bGUsXG4gICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vcm1hbCBWaWV3XG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLiNhbmltYXRlVGV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2FuaW1hdGVUZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYW5pbWF0aW9uRW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRleHRFbCAmJiB0aGlzLmNvbnRhaW5lckVsKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIGNvcnJlY3QgdGV4dCBpcyBkaXNwbGF5ZWRcbiAgICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI3RleHRUb1Nob3cpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyRWwpIHtcbiAgICAgICAgICAvLyBTZXQgaGVpZ2h0IGJhY2sgdG8gYXV0byBzbyB0aGUgYnJvd3NlciBjYW4gY2hhbmdlIHRoZSBoZWlnaHQgYXMgbmVlZGVkIHdpdGggd2luZG93IGNoYW5nZXNcbiAgICAgICAgICB0aGlzLiN0ZXh0RXhwYW5kQWRhcHRlci5yZW1vdmVDb250YWluZXJNYXhIZWlnaHQodGhpcy5jb250YWluZXJFbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgb2JzZXJ2YWJsZUZvcmtKb2luKFtcbiAgICAgIHRoaXMuI3Jlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZXhwYW5kX3NlZV9tb3JlJyksXG4gICAgICB0aGlzLiNyZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2V4cGFuZF9zZWVfbGVzcycpLFxuICAgIF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzKSA9PiB7XG4gICAgICAgIHRoaXMuI3NlZU1vcmVUZXh0ID0gcmVzb3VyY2VzWzBdO1xuICAgICAgICB0aGlzLiNzZWVMZXNzVGV4dCA9IHJlc291cmNlc1sxXTtcbiAgICAgICAgdGhpcy4jc2V0dXAodGhpcy50ZXh0KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kTW9kYWxUaXRsZSkge1xuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1xuICAgICAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfbW9kYWxfdGl0bGUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwYW5kTW9kYWxUaXRsZSA9IHJlc291cmNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3NldHVwKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI25ld2xpbmVDb3VudCA9IHRoaXMuI2dldE5ld2xpbmVDb3VudCh2YWx1ZSk7XG4gICAgICB0aGlzLiNjb2xsYXBzZWRUZXh0ID0gdGhpcy4jZ2V0VHJ1bmNhdGVkVGV4dCh2YWx1ZSwgdGhpcy5tYXhMZW5ndGgpO1xuICAgICAgaWYgKHRoaXMuI2NvbGxhcHNlZFRleHQgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IHRoaXMuI3NlZU1vcmVUZXh0O1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5leHBhbmRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc01vZGFsID1cbiAgICAgICAgICB0aGlzLiNuZXdsaW5lQ291bnQgPiB0aGlzLm1heEV4cGFuZGVkTmV3bGluZXMgfHxcbiAgICAgICAgICB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhFeHBhbmRlZExlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy4jdGV4dFRvU2hvdyA9IHRoaXMuI2NvbGxhcHNlZFRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3RleHRUb1Nob3cgPSAnJztcbiAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy50ZXh0RWwpIHtcbiAgICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI3RleHRUb1Nob3cpO1xuICAgIH1cbiAgfVxuXG4gICNnZXROZXdsaW5lQ291bnQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9cXG4vZ2kpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gICNnZXRUcnVuY2F0ZWRUZXh0KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGlmICh0aGlzLnRydW5jYXRlTmV3bGluZXMpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxuKy9naSwgJyAnKTtcbiAgICB9XG4gICAgLy8gSnVtcCBhaGVhZCBvbmUgY2hhcmFjdGVyIGFuZCBzZWUgaWYgaXQncyBhIHNwYWNlLCBhbmQgaWYgaXQgaXNuJ3QsXG4gICAgLy8gYmFjayB1cCB0byB0aGUgZmlyc3Qgc3BhY2UgYW5kIGJyZWFrIHRoZXJlIHNvIGEgd29yZCBkb2Vzbid0IGdldCBjdXRcbiAgICAvLyBpbiBoYWxmLlxuICAgIGlmIChsZW5ndGggPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaSA+IGxlbmd0aCAtIDEwOyBpLS0pIHtcbiAgICAgICAgaWYgKC9cXHMvLnRlc3QodmFsdWUuY2hhckF0KGkpKSkge1xuICAgICAgICAgIGxlbmd0aCA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgI2FuaW1hdGVUZXh0KGV4cGFuZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lckVsICYmIHRoaXMudGV4dEVsKSB7XG4gICAgICBjb25zdCBhZGFwdGVyID0gdGhpcy4jdGV4dEV4cGFuZEFkYXB0ZXI7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgICAgaWYgKGV4cGFuZGluZykge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dCk7XG4gICAgICAgIHRoaXMuI3RleHRUb1Nob3cgPSB0aGlzLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI2NvbGxhcHNlZFRleHQpO1xuICAgICAgICB0aGlzLiN0ZXh0VG9TaG93ID0gdGhpcy4jY29sbGFwc2VkVGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IGV4cGFuZGluZyA/IHRoaXMuI3NlZUxlc3NUZXh0IDogdGhpcy4jc2VlTW9yZVRleHQ7XG4gICAgICAvLyBNZWFzdXJlIHRoZSBuZXcgaGVpZ2h0IHNvIHdlIGNhbiBhbmltYXRlIHRvIGl0LlxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gYWRhcHRlci5nZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbkhlaWdodCA9IG5ld0hlaWdodDtcbiAgICAgIC8vIEFsd2F5cyBzaG93IGFsbCB0ZXh0IHdoaWxlIGFuaW1hdGluZyBzbyB0aGF0IHRoZSBhbmltYXRpb24gaXMgc21vb3RoLiBUaGUgYW5pbWF0aW9uIGNhbGxiYWNrIHdpbGwgc2V0IHRoaXMgYmFjayBpZiBuZWVkZWQuXG4gICAgICBpZiAoIWV4cGFuZGluZykge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBleHBhbmRpbmc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtAZXhwYW5zaW9uQW5pbWF0aW9uXT1cIntcbiAgICB2YWx1ZTogaXNFeHBhbmRlZCxcbiAgICBwYXJhbXM6IHsgdHJhbnNpdGlvbkhlaWdodDogdHJhbnNpdGlvbkhlaWdodCB9XG4gIH1cIlxuICAoQGV4cGFuc2lvbkFuaW1hdGlvbi5kb25lKT1cImFuaW1hdGlvbkVuZCgpXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtY29udGFpbmVyXCJcbiAgI2NvbnRhaW5lclxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10ZXh0LWV4cGFuZC10ZXh0XCIgW2lkXT1cImNvbnRlbnRTZWN0aW9uSWRcIiAjdGV4dD48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRleHQtZXhwYW5kLWVsbGlwc2lzXCIgKm5nSWY9XCIhaXNFeHBhbmRlZCAmJiBleHBhbmRhYmxlXCJcbiAgICA+Li4uXG4gIDwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiZXhwYW5kYWJsZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluay1pbmxpbmUgc2t5LXRleHQtZXhwYW5kLXNlZS1tb3JlXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTW9kYWwgPyB1bmRlZmluZWQgOiAhIWlzRXhwYW5kZWRcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGNvbnRlbnRTZWN0aW9uSWRcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXNNb2RhbCA/ICdkaWFsb2cnIDogdW5kZWZpbmVkXCJcbiAgICAoY2xpY2spPVwidGV4dEV4cGFuZCgpXCJcbiAgPlxuICAgIHt7IGJ1dHRvblRleHQgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -1,35 +0,0 @@
1
- var _SkyTextExpandRepeaterAdapterService_renderer;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Injectable, } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * @internal
7
- */
8
- export class SkyTextExpandRepeaterAdapterService {
9
- constructor(rendererFactory) {
10
- _SkyTextExpandRepeaterAdapterService_renderer.set(this, void 0);
11
- __classPrivateFieldSet(this, _SkyTextExpandRepeaterAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
12
- }
13
- getItems(elRef) {
14
- return elRef.nativeElement.querySelectorAll('.sky-text-expand-repeater-item');
15
- }
16
- hideItem(item) {
17
- __classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").setStyle(item, 'display', 'none');
18
- }
19
- showItem(item) {
20
- __classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").removeStyle(item, 'display');
21
- }
22
- getContainerHeight(containerEl) {
23
- return containerEl.nativeElement.offsetHeight;
24
- }
25
- removeContainerMaxHeight(containerEl) {
26
- __classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").removeStyle(containerEl.nativeElement, 'max-height');
27
- }
28
- }
29
- _SkyTextExpandRepeaterAdapterService_renderer = new WeakMap();
30
- SkyTextExpandRepeaterAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextExpandRepeaterAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
31
- SkyTextExpandRepeaterAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextExpandRepeaterAdapterService });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextExpandRepeaterAdapterService, decorators: [{
33
- type: Injectable
34
- }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQtcmVwZWF0ZXIvdGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUNBQW1DO0lBRzlDLFlBQVksZUFBaUM7UUFGN0MsZ0VBQXFCO1FBR25CLHVCQUFBLElBQUksaURBQWEsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQUEsQ0FBQztJQUNuRSxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWlCO1FBQy9CLE9BQVEsS0FBSyxDQUFDLGFBQTZCLENBQUMsZ0JBQWdCLENBQzFELGdDQUFnQyxDQUNOLENBQUM7SUFDL0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFpQjtRQUMvQix1QkFBQSxJQUFJLHFEQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFpQjtRQUMvQix1QkFBQSxJQUFJLHFEQUFVLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsV0FBdUI7UUFDL0MsT0FBTyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRU0sd0JBQXdCLENBQUMsV0FBdUI7UUFDckQsdUJBQUEsSUFBSSxxREFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OztnSUEzQlUsbUNBQW1DO29JQUFuQyxtQ0FBbUM7MkZBQW5DLG1DQUFtQztrQkFEL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJGYWN0b3J5Mixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RXhwYW5kUmVwZWF0ZXJBZGFwdGVyU2VydmljZSB7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHVuZGVmaW5lZCwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbXMoZWxSZWY6IEVsZW1lbnRSZWYpOiBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PiB7XG4gICAgcmV0dXJuIChlbFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgJy5za3ktdGV4dC1leHBhbmQtcmVwZWF0ZXItaXRlbSdcbiAgICApIGFzIE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+O1xuICB9XG5cbiAgcHVibGljIGhpZGVJdGVtKGl0ZW06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUoaXRlbSwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICB9XG5cbiAgcHVibGljIHNob3dJdGVtKGl0ZW06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlU3R5bGUoaXRlbSwgJ2Rpc3BsYXknKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyRWw6IEVsZW1lbnRSZWYpOiBudW1iZXIge1xuICAgIHJldHVybiBjb250YWluZXJFbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDb250YWluZXJNYXhIZWlnaHQoY29udGFpbmVyRWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVTdHlsZShjb250YWluZXJFbC5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcpO1xuICB9XG59XG4iXX0=