@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.
- package/bundles/theseam-ui-common-datatable.umd.js +1 -7
- package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
- package/bundles/theseam-ui-common-framework.umd.js +1 -1
- package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
- package/bundles/theseam-ui-common-scrollbar.umd.js +1 -1
- package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-types.umd.js +89 -4
- package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
- package/bundles/theseam-ui-common-tel-input.umd.js +59 -7
- package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
- package/bundles/theseam-ui-common-testing.umd.js.map +1 -1
- package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
- package/bundles/theseam-ui-common-viewers.umd.js +269 -4
- package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
- package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +0 -1
- package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
- package/esm2015/datatable/datatable-column-preferences/datatable-column-preferences.component.js +4 -10
- package/esm2015/datatable/models/columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +1 -1
- package/esm2015/datatable/models/internal-column-props.js +1 -1
- package/esm2015/datatable/services/columns-alterations-manager.service.js +1 -1
- package/esm2015/datatable/utils/map-columns-alterations-states.js +1 -1
- package/esm2015/framework/top-bar/top-bar.component.js +2 -2
- package/esm2015/graphql/models/gql-datatable-accessor.js +1 -1
- package/esm2015/scrollbar/overlay-scrollbar.directive.js +2 -2
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +17 -2
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +16 -2
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +16 -2
- package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string.component.js +32 -4
- package/esm2015/tel-input/tel-input/tel-input.component.js +10 -2
- package/esm2015/tel-input/tel-input.directive.js +50 -5
- package/esm2015/testing/current-tick-time.js +1 -1
- package/esm2015/utils/array-move.js +1 -1
- package/esm2015/utils/router/is-empty-url-route.js +1 -1
- package/esm2015/viewers/html-template-viewer/html-template-viewer.component.js +219 -0
- package/esm2015/viewers/html-template-viewer/html-template-viewer.module.js +23 -0
- package/esm2015/viewers/html-template-viewer/index.js +3 -0
- package/esm2015/viewers/public-api.js +2 -1
- package/fesm2015/theseam-ui-common-datatable.js +1 -7
- package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
- package/fesm2015/theseam-ui-common-framework.js +1 -1
- package/fesm2015/theseam-ui-common-framework.js.map +1 -1
- package/fesm2015/theseam-ui-common-scrollbar.js +1 -1
- package/fesm2015/theseam-ui-common-scrollbar.js.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.js +74 -5
- package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
- package/fesm2015/theseam-ui-common-tel-input.js +58 -6
- package/fesm2015/theseam-ui-common-tel-input.js.map +1 -1
- package/fesm2015/theseam-ui-common-testing.js.map +1 -1
- package/fesm2015/theseam-ui-common-utils.js.map +1 -1
- package/fesm2015/theseam-ui-common-viewers.js +237 -2
- package/fesm2015/theseam-ui-common-viewers.js.map +1 -1
- package/framework/theseam-ui-common-framework.metadata.json +1 -1
- package/package.json +1 -1
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +8 -0
- package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +9 -0
- package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
- package/tel-input/tel-input.directive.d.ts +7 -3
- package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
- package/viewers/html-template-viewer/html-template-viewer.component.d.ts +67 -0
- package/viewers/html-template-viewer/html-template-viewer.module.d.ts +2 -0
- package/viewers/html-template-viewer/index.d.ts +2 -0
- package/viewers/public-api.d.ts +1 -0
- 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
|
-
|
|
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) {
|