@theseam/ui-common 0.2.15 → 0.3.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 (73) hide show
  1. package/bundles/theseam-ui-common-datatable.umd.js +1 -7
  2. package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
  3. package/bundles/theseam-ui-common-framework.umd.js +1 -1
  4. package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
  5. package/bundles/theseam-ui-common-scrollbar.umd.js +1 -1
  6. package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
  7. package/bundles/theseam-ui-common-table-cell-types.umd.js +89 -4
  8. package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
  9. package/bundles/theseam-ui-common-tel-input.umd.js +59 -7
  10. package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
  11. package/bundles/theseam-ui-common-testing.umd.js.map +1 -1
  12. package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
  13. package/bundles/theseam-ui-common-viewers.umd.js +269 -4
  14. package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
  15. package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +0 -1
  16. package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
  17. package/esm2015/datatable/datatable-column-preferences/datatable-column-preferences.component.js +4 -10
  18. package/esm2015/datatable/models/columns-alteration.js +1 -1
  19. package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +1 -1
  20. package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +1 -1
  21. package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +1 -1
  22. package/esm2015/datatable/models/internal-column-props.js +1 -1
  23. package/esm2015/datatable/services/columns-alterations-manager.service.js +1 -1
  24. package/esm2015/datatable/utils/map-columns-alterations-states.js +1 -1
  25. package/esm2015/framework/top-bar/top-bar.component.js +2 -2
  26. package/esm2015/graphql/models/gql-datatable-accessor.js +1 -1
  27. package/esm2015/scrollbar/overlay-scrollbar.directive.js +2 -2
  28. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +1 -1
  29. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +17 -2
  30. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
  31. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +16 -2
  32. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
  33. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +16 -2
  34. package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string-config.js +1 -1
  35. package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string.component.js +32 -4
  36. package/esm2015/tel-input/tel-input/tel-input.component.js +10 -2
  37. package/esm2015/tel-input/tel-input.directive.js +50 -5
  38. package/esm2015/testing/current-tick-time.js +1 -1
  39. package/esm2015/utils/array-move.js +1 -1
  40. package/esm2015/utils/router/is-empty-url-route.js +1 -1
  41. package/esm2015/viewers/html-template-viewer/html-template-viewer.component.js +219 -0
  42. package/esm2015/viewers/html-template-viewer/html-template-viewer.module.js +23 -0
  43. package/esm2015/viewers/html-template-viewer/index.js +3 -0
  44. package/esm2015/viewers/public-api.js +2 -1
  45. package/fesm2015/theseam-ui-common-datatable.js +1 -7
  46. package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
  47. package/fesm2015/theseam-ui-common-framework.js +1 -1
  48. package/fesm2015/theseam-ui-common-framework.js.map +1 -1
  49. package/fesm2015/theseam-ui-common-scrollbar.js +1 -1
  50. package/fesm2015/theseam-ui-common-scrollbar.js.map +1 -1
  51. package/fesm2015/theseam-ui-common-table-cell-types.js +74 -5
  52. package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
  53. package/fesm2015/theseam-ui-common-tel-input.js +58 -6
  54. package/fesm2015/theseam-ui-common-tel-input.js.map +1 -1
  55. package/fesm2015/theseam-ui-common-testing.js.map +1 -1
  56. package/fesm2015/theseam-ui-common-utils.js.map +1 -1
  57. package/fesm2015/theseam-ui-common-viewers.js +237 -2
  58. package/fesm2015/theseam-ui-common-viewers.js.map +1 -1
  59. package/framework/theseam-ui-common-framework.metadata.json +1 -1
  60. package/package.json +1 -1
  61. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +5 -0
  62. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +5 -0
  63. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +5 -0
  64. package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +8 -0
  65. package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +9 -0
  66. package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
  67. package/tel-input/tel-input.directive.d.ts +7 -3
  68. package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
  69. package/viewers/html-template-viewer/html-template-viewer.component.d.ts +67 -0
  70. package/viewers/html-template-viewer/html-template-viewer.module.d.ts +2 -0
  71. package/viewers/html-template-viewer/index.d.ts +2 -0
  72. package/viewers/public-api.d.ts +1 -0
  73. package/viewers/theseam-ui-common-viewers.metadata.json +1 -1
@@ -0,0 +1,219 @@
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectorRef, Component, ElementRef, Input, NgZone, ViewChild } from '@angular/core';
3
+ import { InputBoolean } from '@theseam/ui-common/core';
4
+ var TemplateMessageType;
5
+ (function (TemplateMessageType) {
6
+ TemplateMessageType["TplData"] = "theseam_tpl_data";
7
+ TemplateMessageType["TplResize"] = "theseam_tpl_resize";
8
+ })(TemplateMessageType || (TemplateMessageType = {}));
9
+ export class TheSeamHtmlTemplateViewerComponent {
10
+ constructor(_ngZone, _cdr, _elementRef) {
11
+ this._ngZone = _ngZone;
12
+ this._cdr = _cdr;
13
+ this._elementRef = _elementRef;
14
+ this._dataVersion = 0;
15
+ this._scrollHandleObserver = null;
16
+ this._scrollable = false;
17
+ this._scrollbarOptions = {
18
+ callbacks: {
19
+ onInitialized: () => this._initScrollHandleObserver(),
20
+ // Only scrollbar handles from OverlayScrollbars are currently observed,
21
+ // so we can just disable the observer for native scrollbars.
22
+ onInitializationWithdrawn: () => this._destroyScrollHandleObserver(),
23
+ onDestroyed: () => this._destroyScrollHandleObserver(),
24
+ }
25
+ };
26
+ this._mouseBlockActive = false;
27
+ this._mouseBlockWidth = '100%';
28
+ this._mouseBlockHeight = '100%';
29
+ this._onMessageFromTemplate = (e) => {
30
+ const type = e.data.type;
31
+ if (this._templateMessageHandlers[type]) {
32
+ this._ngZone.run(() => this._templateMessageHandlers[type](e.data.payload));
33
+ }
34
+ };
35
+ this._onResizeMessageFromTemplate = (payload) => {
36
+ const iframeNativeElement = this._getIFrameNativeElement();
37
+ if (iframeNativeElement) {
38
+ iframeNativeElement.style.height = `${payload.height}px`;
39
+ }
40
+ };
41
+ this._templateMessageHandlers = {
42
+ [TemplateMessageType.TplData]: () => { },
43
+ [TemplateMessageType.TplResize]: this._onResizeMessageFromTemplate
44
+ };
45
+ }
46
+ get src() { return this._src; }
47
+ set src(val) {
48
+ this._src = val;
49
+ this._updateSrc();
50
+ }
51
+ set dataVersion(value) {
52
+ const dv = value || 0;
53
+ const sendData = this._dataVersion !== dv;
54
+ this._dataVersion = dv;
55
+ if (sendData) {
56
+ this.postMessage(this._message);
57
+ }
58
+ }
59
+ set data(value) {
60
+ this.postMessage((value !== null && value !== undefined) ? JSON.stringify(value) : value);
61
+ }
62
+ set scrollable(value) {
63
+ this._scrollable = value;
64
+ if (this._scrollable) {
65
+ this._initScrollHandleObserver();
66
+ }
67
+ else {
68
+ this._destroyScrollHandleObserver();
69
+ }
70
+ }
71
+ set iframeElementRef(val) {
72
+ this._iframeElementRef = val;
73
+ const iframeNativeElement = this._getIFrameNativeElement();
74
+ if (iframeNativeElement) {
75
+ this._updateSrc();
76
+ iframeNativeElement.onload = () => this.postMessage(this._message);
77
+ }
78
+ }
79
+ ngOnInit() {
80
+ this._ngZone.runOutsideAngular(() => window.addEventListener('message', this._onMessageFromTemplate));
81
+ }
82
+ ngOnDestroy() {
83
+ window.removeEventListener('message', this._onMessageFromTemplate);
84
+ this._destroyScrollHandleObserver();
85
+ }
86
+ _updateSrc() {
87
+ const iframeNativeElement = this._getIFrameNativeElement();
88
+ if (iframeNativeElement) {
89
+ iframeNativeElement.src = this._src || '';
90
+ }
91
+ }
92
+ postMessage(msg) {
93
+ this._message = msg;
94
+ let _msg = msg;
95
+ const contentWindow = this._getIFrameContentWindow();
96
+ if (contentWindow && _msg) {
97
+ if (this._dataVersion === 2) {
98
+ const wrapper = { type: TemplateMessageType.TplData, payload: undefined };
99
+ try {
100
+ wrapper.payload = JSON.parse(_msg);
101
+ }
102
+ catch (_a) {
103
+ wrapper.payload = _msg;
104
+ }
105
+ _msg = JSON.stringify(wrapper);
106
+ }
107
+ contentWindow.postMessage(_msg, '*');
108
+ }
109
+ }
110
+ reload() {
111
+ this._updateSrc();
112
+ }
113
+ _onResized(event) {
114
+ // This ensures the iframe scales itself if it isn't listening to or misses
115
+ // the resize event.
116
+ this.reload();
117
+ }
118
+ _getIFrameNativeElement() {
119
+ var _a;
120
+ return ((_a = this._iframeElementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) || null;
121
+ }
122
+ _getIFrameContentWindow() {
123
+ var _a, _b;
124
+ return ((_b = (_a = this._iframeElementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.contentWindow) || null;
125
+ }
126
+ /**
127
+ * Initializes a MutationObserver to detect the 'active' class added to a
128
+ * scroll handle, because OverlayScrollbars does not seem to provide an event
129
+ * for scrollbar handle activation/deactivation.
130
+ *
131
+ * TODO: Do we need this to work for native scrollbars also?
132
+ */
133
+ _initScrollHandleObserver() {
134
+ if (this._scrollHandleObserver !== null) {
135
+ return;
136
+ }
137
+ this._ngZone.runOutsideAngular(() => {
138
+ const observer = new MutationObserver(() => {
139
+ this._ngZone.run(() => {
140
+ if (this._isScrollbarHandleActive()) {
141
+ this._enableMouseBlock();
142
+ }
143
+ else {
144
+ this._disableMouseBlock();
145
+ }
146
+ });
147
+ });
148
+ observer.observe(this._elementRef.nativeElement, {
149
+ attributes: true,
150
+ attributeFilter: ['class'],
151
+ childList: true,
152
+ subtree: true,
153
+ characterData: false,
154
+ });
155
+ this._scrollHandleObserver = observer;
156
+ });
157
+ }
158
+ _destroyScrollHandleObserver() {
159
+ if (this._scrollHandleObserver === null) {
160
+ return;
161
+ }
162
+ this._scrollHandleObserver.disconnect();
163
+ this._scrollHandleObserver = null;
164
+ }
165
+ /**
166
+ * Enables a transparent div to cover the iframe.
167
+ *
168
+ * When the mouse is over an iframe the browser stops letting the parent
169
+ * document receive mouse events. Anything actively tracking mouse movement or
170
+ * button pressed will think the mouse has left the page. So the scrollbar
171
+ * handle would deactivate, when the mouse hovers the iframe. This adds an
172
+ * element to cover the iframe, which prevents mouse events getting sent to
173
+ * the iframe.
174
+ */
175
+ _enableMouseBlock() {
176
+ this._mouseBlockActive = true;
177
+ const iframeElement = this._getIFrameNativeElement();
178
+ if (iframeElement) {
179
+ const rect = iframeElement.getBoundingClientRect();
180
+ this._mouseBlockWidth = `${rect.width}px`;
181
+ this._mouseBlockHeight = `${rect.height}px`;
182
+ }
183
+ else {
184
+ this._mouseBlockWidth = '100%';
185
+ this._mouseBlockHeight = '100%';
186
+ }
187
+ this._cdr.detectChanges();
188
+ }
189
+ _disableMouseBlock() {
190
+ this._mouseBlockActive = false;
191
+ this._cdr.detectChanges();
192
+ }
193
+ _isScrollbarHandleActive() {
194
+ return this._elementRef.nativeElement.querySelector('.os-scrollbar-handle.active') !== null;
195
+ }
196
+ }
197
+ TheSeamHtmlTemplateViewerComponent.decorators = [
198
+ { type: Component, args: [{
199
+ selector: 'seam-html-template-viewer',
200
+ template: "<div (seamElemResized)=\"_onResized($any($event))\">\n <div class=\"embed-responsive embed-responsive-4by3\"\n [seamOverlayScrollbar]=\"_scrollbarOptions\"\n [overlayScrollbarEnabled]=\"_scrollable\">\n <iframe #iframeElement class=\"embed-responsive-item\" allowfullscreen></iframe>\n <div *ngIf=\"_mouseBlockActive\"\n class=\"iframe-mouse-block\"\n [style.width]=\"_mouseBlockWidth\"\n [style.height]=\"_mouseBlockHeight\">\n </div>\n </div>\n</div>\n",
201
+ styles: [":host{display:block}.iframe-mouse-block{position:absolute;top:0;right:0;height:100%;width:100%}\n"]
202
+ },] }
203
+ ];
204
+ TheSeamHtmlTemplateViewerComponent.ctorParameters = () => [
205
+ { type: NgZone },
206
+ { type: ChangeDetectorRef },
207
+ { type: ElementRef }
208
+ ];
209
+ TheSeamHtmlTemplateViewerComponent.propDecorators = {
210
+ src: [{ type: Input }],
211
+ dataVersion: [{ type: Input }],
212
+ data: [{ type: Input }],
213
+ scrollable: [{ type: Input }],
214
+ iframeElementRef: [{ type: ViewChild, args: ['iframeElement', { static: true },] }]
215
+ };
216
+ __decorate([
217
+ InputBoolean()
218
+ ], TheSeamHtmlTemplateViewerComponent.prototype, "scrollable", null);
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10ZW1wbGF0ZS12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3ZpZXdlcnMvaHRtbC10ZW1wbGF0ZS12aWV3ZXIvaHRtbC10ZW1wbGF0ZS12aWV3ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBT3RELElBQUssbUJBR0o7QUFIRCxXQUFLLG1CQUFtQjtJQUN0QixtREFBNEIsQ0FBQTtJQUM1Qix1REFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBSEksbUJBQW1CLEtBQW5CLG1CQUFtQixRQUd2QjtBQVlELE1BQU0sT0FBTyxrQ0FBa0M7SUFxRTdDLFlBQ21CLE9BQWUsRUFDZixJQUF1QixFQUN2QixXQUF1QjtRQUZ2QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFsRWxDLGlCQUFZLEdBQVcsQ0FBQyxDQUFBO1FBQ3hCLDBCQUFxQixHQUE0QixJQUFJLENBQUE7UUFtQzdELGdCQUFXLEdBQVksS0FBSyxDQUFBO1FBYTVCLHNCQUFpQixHQUFHO1lBQ2xCLFNBQVMsRUFBRTtnQkFDVCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFO2dCQUNyRCx3RUFBd0U7Z0JBQ3hFLDZEQUE2RDtnQkFDN0QseUJBQXlCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2dCQUNwRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0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LENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLElBQUksQ0FBQTtJQUM3RixDQUFDOzs7WUFsT0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLGtmQUFvRDs7YUFFckQ7OztZQXZCeUQsTUFBTTtZQUF2RCxpQkFBaUI7WUFBYSxVQUFVOzs7a0JBaUM5QyxLQUFLOzBCQVFMLEtBQUs7bUJBVUwsS0FBSzt5QkFLTCxLQUFLOytCQVlMLFNBQVMsU0FBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztBQVg1QztJQURVLFlBQVksRUFBRTtvRUFRdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbmludGVyZmFjZSBUZW1wbGF0ZVJlc2l6ZU1lc3NhZ2VQYXlsb2FkIHtcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxufVxuXG5lbnVtIFRlbXBsYXRlTWVzc2FnZVR5cGUge1xuICBUcGxEYXRhID0gJ3RoZXNlYW1fdHBsX2RhdGEnLFxuICBUcGxSZXNpemUgPSAndGhlc2VhbV90cGxfcmVzaXplJyxcbn1cblxuaW50ZXJmYWNlIFRlbXBsYXRlTWVzc2FnZTxUVHlwZSwgVFBheWxvYWQ+IHtcbiAgdHlwZTogVFR5cGVcbiAgcGF5bG9hZDogVFBheWxvYWRcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1odG1sLXRlbXBsYXRlLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLXRlbXBsYXRlLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2h0bWwtdGVtcGxhdGUtdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbUh0bWxUZW1wbGF0ZVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Njcm9sbGFibGU6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbXBsYXRlTWVzc2FnZUhhbmRsZXJzOiB7IFtrZXkgaW4gVGVtcGxhdGVNZXNzYWdlVHlwZV06IChwYXlsb2FkOiBhbnkpID0+IHZvaWQgfVxuXG4gIHByaXZhdGUgX21lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgcHJpdmF0ZSBfZGF0YVZlcnNpb246IG51bWJlciA9IDBcbiAgcHJpdmF0ZSBfc2Nyb2xsSGFuZGxlT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCBzcmMoKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9zcmMgfVxuICBzZXQgc3JjKHZhbDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3NyYyA9IHZhbFxuICAgIHRoaXMuX3VwZGF0ZVNyYygpXG4gIH1cbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGFWZXJzaW9uKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgY29uc3QgZHYgPSB2YWx1ZSB8fCAwXG4gICAgY29uc3Qgc2VuZERhdGEgPSB0aGlzLl9kYXRhVmVyc2lvbiAhPT0gZHZcbiAgICB0aGlzLl9kYXRhVmVyc2lvbiA9IGR2XG4gICAgaWYgKHNlbmREYXRhKSB7XG4gICAgICB0aGlzLnBvc3RNZXNzYWdlKHRoaXMuX21lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGEodmFsdWU6IGFueSkge1xuICAgIHRoaXMucG9zdE1lc3NhZ2UoKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWUpXG4gIH1cblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcbiAgc2V0IHNjcm9sbGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zY3JvbGxhYmxlID0gdmFsdWVcbiAgICBpZiAodGhpcy5fc2Nyb2xsYWJsZSkge1xuICAgICAgdGhpcy5faW5pdFNjcm9sbEhhbmRsZU9ic2VydmVyKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGVzdHJveVNjcm9sbEhhbmRsZU9ic2VydmVyKClcbiAgICB9XG4gIH1cblxuICBfc2Nyb2xsYWJsZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQFZpZXdDaGlsZCgnaWZyYW1lRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNldCBpZnJhbWVFbGVtZW50UmVmKHZhbDogRWxlbWVudFJlZjxIVE1MSUZyYW1lRWxlbWVudD4pIHtcbiAgICB0aGlzLl9pZnJhbWVFbGVtZW50UmVmID0gdmFsXG4gICAgY29uc3QgaWZyYW1lTmF0aXZlRWxlbWVudCA9IHRoaXMuX2dldElGcmFtZU5hdGl2ZUVsZW1lbnQoKVxuICAgIGlmIChpZnJhbWVOYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLl91cGRhdGVTcmMoKVxuICAgICAgaWZyYW1lTmF0aXZlRWxlbWVudC5vbmxvYWQgPSAoKSA9PiB0aGlzLnBvc3RNZXNzYWdlKHRoaXMuX21lc3NhZ2UpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2lmcmFtZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PlxuXG4gIF9zY3JvbGxiYXJPcHRpb25zID0ge1xuICAgIGNhbGxiYWNrczoge1xuICAgICAgb25Jbml0aWFsaXplZDogKCkgPT4gdGhpcy5faW5pdFNjcm9sbEhhbmRsZU9ic2VydmVyKCksXG4gICAgICAvLyBPbmx5IHNjcm9sbGJhciBoYW5kbGVzIGZyb20gT3ZlcmxheVNjcm9sbGJhcnMgYXJlIGN1cnJlbnRseSBvYnNlcnZlZCxcbiAgICAgIC8vIHNvIHdlIGNhbiBqdXN0IGRpc2FibGUgdGhlIG9ic2VydmVyIGZvciBuYXRpdmUgc2Nyb2xsYmFycy5cbiAgICAgIG9uSW5pdGlhbGl6YXRpb25XaXRoZHJhd246ICgpID0+IHRoaXMuX2Rlc3Ryb3lTY3JvbGxIYW5kbGVPYnNlcnZlcigpLFxuICAgICAgb25EZXN0cm95ZWQ6ICgpID0+IHRoaXMuX2Rlc3Ryb3lTY3JvbGxIYW5kbGVPYnNlcnZlcigpLFxuICAgIH1cbiAgfVxuXG4gIF9tb3VzZUJsb2NrQWN0aXZlOiBib29sZWFuID0gZmFsc2VcbiAgX21vdXNlQmxvY2tXaWR0aDogc3RyaW5nID0gJzEwMCUnXG4gIF9tb3VzZUJsb2NrSGVpZ2h0OiBzdHJpbmcgPSAnMTAwJSdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5fdGVtcGxhdGVNZXNzYWdlSGFuZGxlcnMgPSB7XG4gICAgICBbVGVtcGxhdGVNZXNzYWdlVHlwZS5UcGxEYXRhXTogKCkgPT4geyB9LCAvLyBOb3QgbGlzdGVuaW5nIGZvciBtZXNzYWdlIGZyb20gdGVtcGxhdGVcbiAgICAgIFtUZW1wbGF0ZU1lc3NhZ2VUeXBlLlRwbFJlc2l6ZV06IHRoaXMuX29uUmVzaXplTWVzc2FnZUZyb21UZW1wbGF0ZVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX29uTWVzc2FnZUZyb21UZW1wbGF0ZSkpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX29uTWVzc2FnZUZyb21UZW1wbGF0ZSlcbiAgICB0aGlzLl9kZXN0cm95U2Nyb2xsSGFuZGxlT2JzZXJ2ZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBfb25NZXNzYWdlRnJvbVRlbXBsYXRlID0gKGU6IGFueSkgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBlLmRhdGEudHlwZSBhcyBUZW1wbGF0ZU1lc3NhZ2VUeXBlXG4gICAgaWYgKHRoaXMuX3RlbXBsYXRlTWVzc2FnZUhhbmRsZXJzW3R5cGVdKSB7XG4gICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuX3RlbXBsYXRlTWVzc2FnZUhhbmRsZXJzW3R5cGVdKGUuZGF0YS5wYXlsb2FkKSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblJlc2l6ZU1lc3NhZ2VGcm9tVGVtcGxhdGUgPSAocGF5bG9hZDogVGVtcGxhdGVSZXNpemVNZXNzYWdlUGF5bG9hZCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGlmcmFtZU5hdGl2ZUVsZW1lbnQgPSB0aGlzLl9nZXRJRnJhbWVOYXRpdmVFbGVtZW50KClcbiAgICBpZiAoaWZyYW1lTmF0aXZlRWxlbWVudCkge1xuICAgICAgaWZyYW1lTmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtwYXlsb2FkLmhlaWdodH1weGBcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTcmMoKTogdm9pZCB7XG4gICAgY29uc3QgaWZyYW1lTmF0aXZlRWxlbWVudCA9IHRoaXMuX2dldElGcmFtZU5hdGl2ZUVsZW1lbnQoKVxuICAgIGlmIChpZnJhbWVOYXRpdmVFbGVtZW50KSB7XG4gICAgICBpZnJhbWVOYXRpdmVFbGVtZW50LnNyYyA9IHRoaXMuX3NyYyB8fCAnJ1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwb3N0TWVzc2FnZShtc2c6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlID0gbXNnXG5cbiAgICBsZXQgX21zZyA9IG1zZ1xuICAgIGNvbnN0IGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9nZXRJRnJhbWVDb250ZW50V2luZG93KClcbiAgICBpZiAoY29udGVudFdpbmRvdyAmJiBfbXNnKSB7XG4gICAgICBpZiAodGhpcy5fZGF0YVZlcnNpb24gPT09IDIpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlcjogVGVtcGxhdGVNZXNzYWdlPFRlbXBsYXRlTWVzc2FnZVR5cGUsIGFueT4gPSB7IHR5cGU6IFRlbXBsYXRlTWVzc2FnZVR5cGUuVHBsRGF0YSwgcGF5bG9hZDogdW5kZWZpbmVkIH1cbiAgICAgICAgdHJ5IHsgd3JhcHBlci5wYXlsb2FkID0gSlNPTi5wYXJzZShfbXNnKSB9IGNhdGNoIHsgd3JhcHBlci5wYXlsb2FkID0gX21zZyB9XG4gICAgICAgIF9tc2cgPSBKU09OLnN0cmluZ2lmeSh3cmFwcGVyKVxuICAgICAgfVxuXG4gICAgICBjb250ZW50V2luZG93LnBvc3RNZXNzYWdlKF9tc2csICcqJylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVNyYygpXG4gIH1cblxuICBfb25SZXNpemVkKGV2ZW50OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0pIHtcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIGlmcmFtZSBzY2FsZXMgaXRzZWxmIGlmIGl0IGlzbid0IGxpc3RlbmluZyB0byBvciBtaXNzZXNcbiAgICAvLyB0aGUgcmVzaXplIGV2ZW50LlxuICAgIHRoaXMucmVsb2FkKClcbiAgfVxuXG4gIHByaXZhdGUgX2dldElGcmFtZU5hdGl2ZUVsZW1lbnQoKTogSFRNTElGcmFtZUVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKHRoaXMuX2lmcmFtZUVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHx8IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2dldElGcmFtZUNvbnRlbnRXaW5kb3coKTogV2luZG93IHwgbnVsbCB7XG4gICAgcmV0dXJuICh0aGlzLl9pZnJhbWVFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5jb250ZW50V2luZG93KSB8fCBudWxsXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSBNdXRhdGlvbk9ic2VydmVyIHRvIGRldGVjdCB0aGUgJ2FjdGl2ZScgY2xhc3MgYWRkZWQgdG8gYVxuICAgKiBzY3JvbGwgaGFuZGxlLCBiZWNhdXNlIE92ZXJsYXlTY3JvbGxiYXJzIGRvZXMgbm90IHNlZW0gdG8gcHJvdmlkZSBhbiBldmVudFxuICAgKiBmb3Igc2Nyb2xsYmFyIGhhbmRsZSBhY3RpdmF0aW9uL2RlYWN0aXZhdGlvbi5cbiAgICpcbiAgICogVE9ETzogRG8gd2UgbmVlZCB0aGlzIHRvIHdvcmsgZm9yIG5hdGl2ZSBzY3JvbGxiYXJzIGFsc28/XG4gICAqL1xuICBwcml2YXRlIF9pbml0U2Nyb2xsSGFuZGxlT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEhhbmRsZU9ic2VydmVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9pc1Njcm9sbGJhckhhbmRsZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbmFibGVNb3VzZUJsb2NrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZU1vdXNlQmxvY2soKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWyAnY2xhc3MnIF0sXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgY2hhcmFjdGVyRGF0YTogZmFsc2UsXG4gICAgICB9KVxuXG4gICAgICB0aGlzLl9zY3JvbGxIYW5kbGVPYnNlcnZlciA9IG9ic2VydmVyXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc3Ryb3lTY3JvbGxIYW5kbGVPYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsSGFuZGxlT2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZU9ic2VydmVyID0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYSB0cmFuc3BhcmVudCBkaXYgdG8gY292ZXIgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogV2hlbiB0aGUgbW91c2UgaXMgb3ZlciBhbiBpZnJhbWUgdGhlIGJyb3dzZXIgc3RvcHMgbGV0dGluZyB0aGUgcGFyZW50XG4gICAqIGRvY3VtZW50IHJlY2VpdmUgbW91c2UgZXZlbnRzLiBBbnl0aGluZyBhY3RpdmVseSB0cmFja2luZyBtb3VzZSBtb3ZlbWVudCBvclxuICAgKiBidXR0b24gcHJlc3NlZCB3aWxsIHRoaW5rIHRoZSBtb3VzZSBoYXMgbGVmdCB0aGUgcGFnZS4gU28gdGhlIHNjcm9sbGJhclxuICAgKiBoYW5kbGUgd291bGQgZGVhY3RpdmF0ZSwgd2hlbiB0aGUgbW91c2UgaG92ZXJzIHRoZSBpZnJhbWUuIFRoaXMgYWRkcyBhblxuICAgKiBlbGVtZW50IHRvIGNvdmVyIHRoZSBpZnJhbWUsIHdoaWNoIHByZXZlbnRzIG1vdXNlIGV2ZW50cyBnZXR0aW5nIHNlbnQgdG9cbiAgICogdGhlIGlmcmFtZS5cbiAgICovXG4gIHByaXZhdGUgX2VuYWJsZU1vdXNlQmxvY2soKTogdm9pZCB7XG4gICAgdGhpcy5fbW91c2VCbG9ja0FjdGl2ZSA9IHRydWVcblxuICAgIGNvbnN0IGlmcmFtZUVsZW1lbnQgPSB0aGlzLl9nZXRJRnJhbWVOYXRpdmVFbGVtZW50KClcbiAgICBpZiAoaWZyYW1lRWxlbWVudCkge1xuICAgICAgY29uc3QgcmVjdCA9IGlmcmFtZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIHRoaXMuX21vdXNlQmxvY2tXaWR0aCA9IGAke3JlY3Qud2lkdGh9cHhgXG4gICAgICB0aGlzLl9tb3VzZUJsb2NrSGVpZ2h0ID0gYCR7cmVjdC5oZWlnaHR9cHhgXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21vdXNlQmxvY2tXaWR0aCA9ICcxMDAlJ1xuICAgICAgdGhpcy5fbW91c2VCbG9ja0hlaWdodCA9ICcxMDAlJ1xuICAgIH1cblxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVNb3VzZUJsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMuX21vdXNlQmxvY2tBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2Nyb2xsYmFySGFuZGxlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm9zLXNjcm9sbGJhci1oYW5kbGUuYWN0aXZlJykgIT09IG51bGxcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar';
4
+ import { TheSeamSharedModule } from '@theseam/ui-common/shared';
5
+ import { TheSeamHtmlTemplateViewerComponent } from './html-template-viewer.component';
6
+ export class TheSeamHtmlTemplateViewerModule {
7
+ }
8
+ TheSeamHtmlTemplateViewerModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ imports: [
11
+ CommonModule,
12
+ TheSeamScrollbarModule,
13
+ TheSeamSharedModule,
14
+ ],
15
+ declarations: [
16
+ TheSeamHtmlTemplateViewerComponent,
17
+ ],
18
+ exports: [
19
+ TheSeamHtmlTemplateViewerComponent,
20
+ ]
21
+ },] }
22
+ ];
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10ZW1wbGF0ZS12aWV3ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3ZpZXdlcnMvaHRtbC10ZW1wbGF0ZS12aWV3ZXIvaHRtbC10ZW1wbGF0ZS12aWV3ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9ELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBZXJGLE1BQU0sT0FBTywrQkFBK0I7OztZQWIzQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osc0JBQXNCO29CQUN0QixtQkFBbUI7aUJBQ3BCO2dCQUNELFlBQVksRUFBRTtvQkFDWixrQ0FBa0M7aUJBQ25DO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxrQ0FBa0M7aUJBQ25DO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IFRoZVNlYW1TY3JvbGxiYXJNb2R1bGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vc2Nyb2xsYmFyJ1xuaW1wb3J0IHsgVGhlU2VhbVNoYXJlZE1vZHVsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9zaGFyZWQnXG5cbmltcG9ydCB7IFRoZVNlYW1IdG1sVGVtcGxhdGVWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2h0bWwtdGVtcGxhdGUtdmlld2VyLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUaGVTZWFtU2Nyb2xsYmFyTW9kdWxlLFxuICAgIFRoZVNlYW1TaGFyZWRNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRoZVNlYW1IdG1sVGVtcGxhdGVWaWV3ZXJDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUaGVTZWFtSHRtbFRlbXBsYXRlVmlld2VyQ29tcG9uZW50LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1IdG1sVGVtcGxhdGVWaWV3ZXJNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './html-template-viewer.component';
2
+ export * from './html-template-viewer.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdmlld2Vycy9odG1sLXRlbXBsYXRlLXZpZXdlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsK0JBQStCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2h0bWwtdGVtcGxhdGUtdmlld2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC10ZW1wbGF0ZS12aWV3ZXIubW9kdWxlJ1xuIl19
@@ -1,2 +1,3 @@
1
1
  export * from './pdf-viewer';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi92aWV3ZXJzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BkZi12aWV3ZXInXG4iXX0=
2
+ export * from './html-template-viewer';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi92aWV3ZXJzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGRmLXZpZXdlcidcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC10ZW1wbGF0ZS12aWV3ZXInXG4iXX0=
@@ -1915,19 +1915,13 @@ class DatatableColumnPreferencesComponent {
1915
1915
  this._datatable = _datatable;
1916
1916
  this._columnsAlterationsManager = _columnsAlterationsManager;
1917
1917
  this._filterControl = new FormControl();
1918
- this._alphabeticalColumnCompareFn = (a, b) => {
1919
- const aProp = getColumnProp(a);
1920
- const bProp = getColumnProp(b);
1921
- return aProp === bProp ? 0 : aProp > bProp ? 1 : -1;
1922
- };
1923
1918
  this._columns$ = combineLatest([
1924
1919
  (_a = this._datatable.columns$) !== null && _a !== void 0 ? _a : of([]),
1925
1920
  observeControlValue(this._filterControl)
1926
1921
  ]).pipe(map(([columns, filter]) => {
1927
1922
  const _filter = (filter || '').trim().toLowerCase();
1928
1923
  return columns
1929
- .filter(c => this._canToggleColumn(c, _filter))
1930
- .sort(this._alphabeticalColumnCompareFn);
1924
+ .filter(c => this._canToggleColumn(c, _filter));
1931
1925
  }));
1932
1926
  }
1933
1927
  _canToggleColumn(column, filter, omitInternalColumns = true) {