@wavemaker/app-ng-runtime 12.0.0-next.44004 → 12.0.0-next.45001
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.
- app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +2 -0
- app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +2 -0
- app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +2 -0
- app-ng-runtime/build-task/bundles/index.umd.js +477 -404
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +15 -0
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +10 -0
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +26 -0
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +3 -2
- app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +14 -2
- app-ng-runtime/build-task/esm2022/public_api.mjs +4 -1
- app-ng-runtime/build-task/fesm2022/index.mjs +479 -405
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/build-task/public_api.d.ts +3 -0
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +275 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +14 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +20 -0
- app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +19 -0
- app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +11 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +73 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +9 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +70 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +8 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +68 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +39 -0
- app-ng-runtime/components/advanced/custom/esm2022/index.mjs +5 -0
- app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +5 -0
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +256 -0
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -0
- app-ng-runtime/components/advanced/custom/index.d.ts +5 -0
- app-ng-runtime/components/advanced/custom/package.json +23 -0
- app-ng-runtime/components/advanced/custom/public_api.d.ts +4 -0
- app-ng-runtime/components/base/bundles/index.umd.js +65 -9
- app-ng-runtime/components/base/components.module.d.ts +12 -11
- app-ng-runtime/components/base/esm2022/components.module.mjs +5 -1
- app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +28 -10
- app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +39 -0
- app-ng-runtime/components/base/fesm2022/index.mjs +65 -10
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/public_api.d.ts +1 -0
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +9 -3
- app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +14 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +5 -4
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +6 -5
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +5 -4
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +3 -2
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +4 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -3
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +5 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +46 -53
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +2 -3
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +44 -53
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +47 -54
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/select/select.component.d.ts +1 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +19 -7
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +9 -3
- app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +8 -2
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +19 -7
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +10 -0
- app-ng-runtime/core/enums/enums.d.ts +2 -1
- app-ng-runtime/core/esm2022/enums/enums.mjs +2 -1
- app-ng-runtime/core/esm2022/types/types.mjs +4 -1
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +6 -1
- app-ng-runtime/core/fesm2022/index.mjs +10 -1
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/types/types.d.ts +5 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +254 -4
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +71 -0
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +253 -0
- app-ng-runtime/runtime/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +6 -1
- app-ng-runtime/runtime/base/esm2022/types/types.mjs +2 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs +251 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/public_api.d.ts +1 -0
- app-ng-runtime/runtime/base/runtime-base.module.d.ts +9 -8
- app-ng-runtime/runtime/base/types/types.d.ts +2 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +26 -9
- app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +5 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +22 -7
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +25 -7
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +1 -0
- app-ng-runtime/transpiler/bundles/index.umd.js +5 -0
- app-ng-runtime/transpiler/esm2022/build.mjs +4 -1
- app-ng-runtime/transpiler/esm2022/imports.mjs +3 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs +5 -0
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
|
@@ -105,5 +105,8 @@ export * as tableBuild from './data/table/table.build';
|
|
|
105
105
|
export * as videoBuild from './basic/default/video/video.build';
|
|
106
106
|
export * as linearLayoutBuild from './containers/linear-layout/linear-layout.build';
|
|
107
107
|
export * as linearLayoutItemBuild from './containers/linear-layout/linear-layout-item/linear-layout-item.build';
|
|
108
|
+
export * as customWidgetBuild from './advanced/custom-widget-container/custom-widget-container.build';
|
|
109
|
+
export * as customWidgetPropBuild from './advanced/custom-widget-prop/custom-widget-prop.build';
|
|
110
|
+
export * as customWidgetWrapperBuild from './advanced/custom-widget-wrapper/custom-widget-wrapper.build';
|
|
108
111
|
export * from '@wm/transpiler';
|
|
109
112
|
export declare const initComponentsBuildTask: () => void;
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@wm/components/base'), require('@wm/core'), require('rxjs')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/common', '@wm/components/base', '@wm/core', 'rxjs'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.advanced = global.wm.components.advanced || {}, global.wm.components.advanced.custom = {}), global.ng.core, global.ng.common, global.wm.components.base, global.wm.core, global.rxjs));
|
|
5
|
+
})(this, (function (exports, i0, common, base, i1, rxjs) { 'use strict';
|
|
6
|
+
|
|
7
|
+
function _interopNamespaceDefault(e) {
|
|
8
|
+
var n = Object.create(null);
|
|
9
|
+
if (e) {
|
|
10
|
+
Object.keys(e).forEach(function (k) {
|
|
11
|
+
if (k !== 'default') {
|
|
12
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return e[k]; }
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
n.default = e;
|
|
21
|
+
return Object.freeze(n);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
|
|
25
|
+
var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
|
|
26
|
+
|
|
27
|
+
const customWidgetProps = new Map([
|
|
28
|
+
['class', base.PROP_STRING],
|
|
29
|
+
['hint', base.PROP_STRING],
|
|
30
|
+
['name', base.PROP_STRING],
|
|
31
|
+
['widgetname', base.PROP_STRING],
|
|
32
|
+
['show', { value: true, ...base.PROP_BOOLEAN }]
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
const registeredPropsSet = new Set();
|
|
36
|
+
const DEFAULT_CLS$1 = 'app-html-container';
|
|
37
|
+
const WIDGET_CONFIG$1 = {
|
|
38
|
+
widgetType: 'wm-custom-widget',
|
|
39
|
+
hostClass: DEFAULT_CLS$1
|
|
40
|
+
};
|
|
41
|
+
class CustomWidgetContainerDirective extends base.StylableComponent {
|
|
42
|
+
constructor(inj, elRef, widgetname) {
|
|
43
|
+
let resolveFn = i1.noop;
|
|
44
|
+
super(inj, WIDGET_CONFIG$1, new Promise(res => resolveFn = res));
|
|
45
|
+
this.propsReady = resolveFn;
|
|
46
|
+
this.widgetType = WIDGET_CONFIG$1.widgetType;
|
|
47
|
+
this.widgetName = widgetname;
|
|
48
|
+
this.name = elRef.nativeElement.getAttribute('name');
|
|
49
|
+
base.styler(this.nativeElement, this);
|
|
50
|
+
// Call on property change on name to set name attribute on element.
|
|
51
|
+
this.registerReadyStateListener(() => {
|
|
52
|
+
super.onPropertyChange('name', this.name);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
setProps(config, resolveFn) {
|
|
56
|
+
if (!config || !config.properties) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (!registeredPropsSet.has(this.widgetType)) {
|
|
60
|
+
base.register(this.widgetType, this.prepareProps(config.properties));
|
|
61
|
+
}
|
|
62
|
+
this.propsReady(resolveFn);
|
|
63
|
+
}
|
|
64
|
+
prepareProps(props = {}) {
|
|
65
|
+
const propsMap = new Map(customWidgetProps);
|
|
66
|
+
// propsMap.set('widgetname', this.widgetName);
|
|
67
|
+
Object.entries(props).forEach(([k, v]) => {
|
|
68
|
+
let type = base.PROP_TYPE.STRING;
|
|
69
|
+
if (v.type === 'boolean') {
|
|
70
|
+
type = base.PROP_TYPE.BOOLEAN;
|
|
71
|
+
}
|
|
72
|
+
else if (v.type === 'number') {
|
|
73
|
+
type = base.PROP_TYPE.NUMBER;
|
|
74
|
+
}
|
|
75
|
+
else if (v.type !== 'string') {
|
|
76
|
+
type = v.type;
|
|
77
|
+
}
|
|
78
|
+
// Do not set the 'bind:*' values
|
|
79
|
+
propsMap.set(k, { type, value: _.startsWith(v.value, 'bind:') ? undefined : v.value });
|
|
80
|
+
});
|
|
81
|
+
registeredPropsSet.add(this.widgetType);
|
|
82
|
+
return propsMap;
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = function CustomWidgetContainerDirective_Factory(t) { return new (t || CustomWidgetContainerDirective)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵinjectAttribute('widgetname')); }; }
|
|
85
|
+
static { this.ɵdir = /*@__PURE__*/ i0__namespace.ɵɵdefineDirective({ type: CustomWidgetContainerDirective, selectors: [["", "wmWidgetContainer", ""]], exportAs: ["wmWidgetContainer"], features: [i0__namespace.ɵɵProvidersFeature([
|
|
86
|
+
base.provideAsWidgetRef(CustomWidgetContainerDirective)
|
|
87
|
+
]), i0__namespace.ɵɵInheritDefinitionFeature] }); }
|
|
88
|
+
}
|
|
89
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomWidgetContainerDirective, [{
|
|
90
|
+
type: i0.Directive,
|
|
91
|
+
args: [{
|
|
92
|
+
selector: '[wmWidgetContainer]',
|
|
93
|
+
providers: [
|
|
94
|
+
base.provideAsWidgetRef(CustomWidgetContainerDirective)
|
|
95
|
+
],
|
|
96
|
+
exportAs: 'wmWidgetContainer'
|
|
97
|
+
}]
|
|
98
|
+
}], function () { return [{ type: i0__namespace.Injector }, { type: i0__namespace.ElementRef }, { type: undefined, decorators: [{
|
|
99
|
+
type: i0.Attribute,
|
|
100
|
+
args: ['widgetname']
|
|
101
|
+
}] }]; }, null); })();
|
|
102
|
+
|
|
103
|
+
class CustomWidgetPropHandlerDirective {
|
|
104
|
+
constructor(widgetRef) {
|
|
105
|
+
this.widgetRef = widgetRef;
|
|
106
|
+
this.widgetRef.props = {};
|
|
107
|
+
this.widgetRef.pageParams = this.widgetRef.props;
|
|
108
|
+
this.widgetRef.params$ = new rxjs.Subject();
|
|
109
|
+
}
|
|
110
|
+
registerParams(name, value, bindExpr, type) {
|
|
111
|
+
this.widgetRef.props[name] = value;
|
|
112
|
+
if (!value && bindExpr) {
|
|
113
|
+
this.widgetRef.registerDestroyListener(
|
|
114
|
+
//[Todo-CSP]: expr fn should be generated be default
|
|
115
|
+
i1.$watch(bindExpr, this.widgetRef.getViewParent(), _.get(this.widgetRef, 'context'), nv => {
|
|
116
|
+
this.widgetRef.props[name] = nv;
|
|
117
|
+
// notify the partial container of the param changes
|
|
118
|
+
this.widgetRef.params$.next();
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.widgetRef.params$.next();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
static { this.ɵfac = function CustomWidgetPropHandlerDirective_Factory(t) { return new (t || CustomWidgetPropHandlerDirective)(i0__namespace.ɵɵdirectiveInject(base.WidgetRef, 2)); }; }
|
|
126
|
+
static { this.ɵdir = /*@__PURE__*/ i0__namespace.ɵɵdefineDirective({ type: CustomWidgetPropHandlerDirective, selectors: [["", "customWidgetContainer", ""]] }); }
|
|
127
|
+
}
|
|
128
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomWidgetPropHandlerDirective, [{
|
|
129
|
+
type: i0.Directive,
|
|
130
|
+
args: [{
|
|
131
|
+
selector: '[customWidgetContainer]',
|
|
132
|
+
}]
|
|
133
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
134
|
+
type: i0.Self
|
|
135
|
+
}, {
|
|
136
|
+
type: i0.Inject,
|
|
137
|
+
args: [base.WidgetRef]
|
|
138
|
+
}] }]; }, null); })();
|
|
139
|
+
class CustomWidgetPropDirective {
|
|
140
|
+
constructor(bindValue, type, customWidgetPropsProvider) {
|
|
141
|
+
this.bindValue = bindValue;
|
|
142
|
+
this.type = type;
|
|
143
|
+
this.customWidgetPropsProvider = customWidgetPropsProvider;
|
|
144
|
+
}
|
|
145
|
+
ngOnInit() {
|
|
146
|
+
this.customWidgetPropsProvider.registerParams(this.name, this.value, this.bindValue, this.type);
|
|
147
|
+
}
|
|
148
|
+
static { this.ɵfac = function CustomWidgetPropDirective_Factory(t) { return new (t || CustomWidgetPropDirective)(i0__namespace.ɵɵinjectAttribute('value.bind'), i0__namespace.ɵɵinjectAttribute('type'), i0__namespace.ɵɵdirectiveInject(CustomWidgetPropHandlerDirective)); }; }
|
|
149
|
+
static { this.ɵdir = /*@__PURE__*/ i0__namespace.ɵɵdefineDirective({ type: CustomWidgetPropDirective, selectors: [["", "wmProp", ""]], inputs: { name: "name", value: "value" } }); }
|
|
150
|
+
}
|
|
151
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomWidgetPropDirective, [{
|
|
152
|
+
type: i0.Directive,
|
|
153
|
+
args: [{
|
|
154
|
+
selector: '[wmProp]',
|
|
155
|
+
}]
|
|
156
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
157
|
+
type: i0.Attribute,
|
|
158
|
+
args: ['value.bind']
|
|
159
|
+
}] }, { type: undefined, decorators: [{
|
|
160
|
+
type: i0.Attribute,
|
|
161
|
+
args: ['type']
|
|
162
|
+
}] }, { type: CustomWidgetPropHandlerDirective }]; }, { name: [{
|
|
163
|
+
type: i0.Input
|
|
164
|
+
}], value: [{
|
|
165
|
+
type: i0.Input
|
|
166
|
+
}] }); })();
|
|
167
|
+
|
|
168
|
+
const registerProps = () => {
|
|
169
|
+
base.register('wm-custom-widget-container', new Map([
|
|
170
|
+
['name', base.PROP_STRING],
|
|
171
|
+
['class', base.PROP_STRING]
|
|
172
|
+
]));
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
const DEFAULT_CLS = 'app-custom-widget-container clearfix';
|
|
176
|
+
const WIDGET_CONFIG = { widgetType: 'wm-custom-widget-container', hostClass: DEFAULT_CLS };
|
|
177
|
+
class CustomWidgetDirective extends base.StylableComponent {
|
|
178
|
+
static { this.initializeProps = registerProps(); }
|
|
179
|
+
constructor(inj, viewport) {
|
|
180
|
+
super(inj, WIDGET_CONFIG);
|
|
181
|
+
this.viewport = viewport;
|
|
182
|
+
this.registerDestroyListener(this.viewport.subscribe("resize" /* ViewportEvent.RESIZE */, data => this.callback('resize', data)));
|
|
183
|
+
this.registerDestroyListener(this.viewport.subscribe("orientationchange" /* ViewportEvent.ORIENTATION_CHANGE */, data => this.callback('orientationchange', data)));
|
|
184
|
+
}
|
|
185
|
+
ngAfterContentInit() {
|
|
186
|
+
let customWidget = this.nativeElement.closest('[customwidgetcontainer]'), inheritedProps = {}, customWidgetProps = Array.from(base.getWidgetPropsByType("wm-custom-widget-container").keys());
|
|
187
|
+
for (let i = 0; i < customWidget.attributes.length; i++) {
|
|
188
|
+
let attr = customWidget.attributes.item(i);
|
|
189
|
+
if (attr.value && attr.value !== '' && !customWidgetProps.includes(attr.name))
|
|
190
|
+
inheritedProps[attr.name] = attr.value;
|
|
191
|
+
}
|
|
192
|
+
this.processChildren(this.nativeElement.children, inheritedProps);
|
|
193
|
+
}
|
|
194
|
+
processChildren(children, inheritedProps) {
|
|
195
|
+
Array.from(children).forEach((child) => {
|
|
196
|
+
if (!child.hasAttribute('base-widget'))
|
|
197
|
+
this.processChildren(child.children, inheritedProps);
|
|
198
|
+
else {
|
|
199
|
+
for (const [key, value] of Object.entries(inheritedProps)) {
|
|
200
|
+
if (key.includes(".event"))
|
|
201
|
+
this.processChildAttr(key, value, { widget: child.widget, nativeElement: child });
|
|
202
|
+
else
|
|
203
|
+
child.widget[key] = value;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
callback(eventName, locals) {
|
|
209
|
+
locals = _.assign({ widget: this }, locals);
|
|
210
|
+
this.invokeEventCallback(eventName, locals);
|
|
211
|
+
}
|
|
212
|
+
ngOnAttach() {
|
|
213
|
+
this.callback('attach');
|
|
214
|
+
}
|
|
215
|
+
ngOnDetach() {
|
|
216
|
+
this.callback('detach');
|
|
217
|
+
}
|
|
218
|
+
ngOnDestroy() {
|
|
219
|
+
this.callback('destroy');
|
|
220
|
+
super.ngOnDestroy();
|
|
221
|
+
}
|
|
222
|
+
static { this.ɵfac = function CustomWidgetDirective_Factory(t) { return new (t || CustomWidgetDirective)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject(i1__namespace.Viewport)); }; }
|
|
223
|
+
static { this.ɵdir = /*@__PURE__*/ i0__namespace.ɵɵdefineDirective({ type: CustomWidgetDirective, selectors: [["", "wmCustomWidget", ""]], features: [i0__namespace.ɵɵProvidersFeature([
|
|
224
|
+
base.provideAsWidgetRef(CustomWidgetDirective)
|
|
225
|
+
]), i0__namespace.ɵɵInheritDefinitionFeature] }); }
|
|
226
|
+
}
|
|
227
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomWidgetDirective, [{
|
|
228
|
+
type: i0.Directive,
|
|
229
|
+
args: [{
|
|
230
|
+
selector: '[wmCustomWidget]',
|
|
231
|
+
providers: [
|
|
232
|
+
base.provideAsWidgetRef(CustomWidgetDirective)
|
|
233
|
+
]
|
|
234
|
+
}]
|
|
235
|
+
}], function () { return [{ type: i0__namespace.Injector }, { type: i1__namespace.Viewport }]; }, null); })();
|
|
236
|
+
|
|
237
|
+
const components = [
|
|
238
|
+
CustomWidgetContainerDirective,
|
|
239
|
+
CustomWidgetPropDirective,
|
|
240
|
+
CustomWidgetPropHandlerDirective,
|
|
241
|
+
CustomWidgetDirective
|
|
242
|
+
];
|
|
243
|
+
class CustomModule {
|
|
244
|
+
static { this.ɵfac = function CustomModule_Factory(t) { return new (t || CustomModule)(); }; }
|
|
245
|
+
static { this.ɵmod = /*@__PURE__*/ i0__namespace.ɵɵdefineNgModule({ type: CustomModule }); }
|
|
246
|
+
static { this.ɵinj = /*@__PURE__*/ i0__namespace.ɵɵdefineInjector({ imports: [common.CommonModule,
|
|
247
|
+
base.WmComponentsModule] }); }
|
|
248
|
+
}
|
|
249
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(CustomModule, [{
|
|
250
|
+
type: i0.NgModule,
|
|
251
|
+
args: [{
|
|
252
|
+
imports: [
|
|
253
|
+
common.CommonModule,
|
|
254
|
+
base.WmComponentsModule
|
|
255
|
+
],
|
|
256
|
+
declarations: [...components],
|
|
257
|
+
exports: [...components]
|
|
258
|
+
}]
|
|
259
|
+
}], null, null); })();
|
|
260
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0__namespace.ɵɵsetNgModuleScope(CustomModule, { declarations: [CustomWidgetContainerDirective,
|
|
261
|
+
CustomWidgetPropDirective,
|
|
262
|
+
CustomWidgetPropHandlerDirective,
|
|
263
|
+
CustomWidgetDirective], imports: [common.CommonModule,
|
|
264
|
+
base.WmComponentsModule], exports: [CustomWidgetContainerDirective,
|
|
265
|
+
CustomWidgetPropDirective,
|
|
266
|
+
CustomWidgetPropHandlerDirective,
|
|
267
|
+
CustomWidgetDirective] }); })();
|
|
268
|
+
|
|
269
|
+
exports.CustomModule = CustomModule;
|
|
270
|
+
exports.CustomWidgetContainerDirective = CustomWidgetContainerDirective;
|
|
271
|
+
exports.CustomWidgetDirective = CustomWidgetDirective;
|
|
272
|
+
exports.CustomWidgetPropDirective = CustomWidgetPropDirective;
|
|
273
|
+
exports.CustomWidgetPropHandlerDirective = CustomWidgetPropHandlerDirective;
|
|
274
|
+
|
|
275
|
+
}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ElementRef, Injector, OnInit } from '@angular/core';
|
|
2
|
+
import { StylableComponent } from '@wm/components/base';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CustomWidgetContainerDirective extends StylableComponent implements OnInit {
|
|
5
|
+
widgetType: string;
|
|
6
|
+
name: string;
|
|
7
|
+
propsReady: Function;
|
|
8
|
+
widgetName: string;
|
|
9
|
+
constructor(inj: Injector, elRef: ElementRef, widgetname: string);
|
|
10
|
+
setProps(config: any, resolveFn: Function): void;
|
|
11
|
+
private prepareProps;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomWidgetContainerDirective, [null, null, { attribute: "widgetname"; }]>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomWidgetContainerDirective, "[wmWidgetContainer]", ["wmWidgetContainer"], {}, {}, never, never, false, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const customWidgetProps: Map<string, any>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CustomWidgetPropHandlerDirective {
|
|
4
|
+
private widgetRef;
|
|
5
|
+
constructor(widgetRef: any);
|
|
6
|
+
registerParams(name: string, value: string, bindExpr: string, type: string): void;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomWidgetPropHandlerDirective, [{ self: true; }]>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomWidgetPropHandlerDirective, "[customWidgetContainer]", never, {}, {}, never, never, false, never>;
|
|
9
|
+
}
|
|
10
|
+
export declare class CustomWidgetPropDirective implements OnInit {
|
|
11
|
+
bindValue: any;
|
|
12
|
+
type: any;
|
|
13
|
+
private customWidgetPropsProvider;
|
|
14
|
+
name: string;
|
|
15
|
+
value: any;
|
|
16
|
+
constructor(bindValue: any, type: any, customWidgetPropsProvider: CustomWidgetPropHandlerDirective);
|
|
17
|
+
ngOnInit(): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomWidgetPropDirective, [{ attribute: "value.bind"; }, { attribute: "type"; }, null]>;
|
|
19
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomWidgetPropDirective, "[wmProp]", never, { "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, false, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const registerProps: () => void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AfterContentInit, Injector, OnDestroy } from '@angular/core';
|
|
2
|
+
import { Viewport } from '@wm/core';
|
|
3
|
+
import { StylableComponent } from '@wm/components/base';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class CustomWidgetDirective extends StylableComponent implements OnDestroy, AfterContentInit {
|
|
6
|
+
private viewport;
|
|
7
|
+
static initializeProps: void;
|
|
8
|
+
constructor(inj: Injector, viewport: Viewport);
|
|
9
|
+
ngAfterContentInit(): void;
|
|
10
|
+
processChildren(children: any, inheritedProps: {
|
|
11
|
+
[key: string]: string;
|
|
12
|
+
}): void;
|
|
13
|
+
private callback;
|
|
14
|
+
ngOnAttach(): void;
|
|
15
|
+
ngOnDetach(): void;
|
|
16
|
+
ngOnDestroy(): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomWidgetDirective, never>;
|
|
18
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomWidgetDirective, "[wmCustomWidget]", never, {}, {}, never, never, false, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./custom-widget-container/custom-widget-container.directive";
|
|
3
|
+
import * as i2 from "./custom-widget-container-prop/custom-widget-container-prop.directive";
|
|
4
|
+
import * as i3 from "./custom-widget.directive";
|
|
5
|
+
import * as i4 from "@angular/common";
|
|
6
|
+
import * as i5 from "@wm/components/base";
|
|
7
|
+
export declare class CustomModule {
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomModule, never>;
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CustomModule, [typeof i1.CustomWidgetContainerDirective, typeof i2.CustomWidgetPropDirective, typeof i2.CustomWidgetPropHandlerDirective, typeof i3.CustomWidgetDirective], [typeof i4.CommonModule, typeof i5.WmComponentsModule], [typeof i1.CustomWidgetContainerDirective, typeof i2.CustomWidgetPropDirective, typeof i2.CustomWidgetPropHandlerDirective, typeof i3.CustomWidgetDirective]>;
|
|
10
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CustomModule>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Attribute, Directive, ElementRef, Injector } from '@angular/core';
|
|
2
|
+
import { noop } from '@wm/core';
|
|
3
|
+
import { PROP_TYPE, provideAsWidgetRef, register, StylableComponent, styler } from '@wm/components/base';
|
|
4
|
+
import { customWidgetProps } from './custom-widget.props';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
const registeredPropsSet = new Set();
|
|
7
|
+
const DEFAULT_CLS = 'app-html-container';
|
|
8
|
+
const WIDGET_CONFIG = {
|
|
9
|
+
widgetType: 'wm-custom-widget',
|
|
10
|
+
hostClass: DEFAULT_CLS
|
|
11
|
+
};
|
|
12
|
+
export class CustomWidgetContainerDirective extends StylableComponent {
|
|
13
|
+
constructor(inj, elRef, widgetname) {
|
|
14
|
+
let resolveFn = noop;
|
|
15
|
+
super(inj, WIDGET_CONFIG, new Promise(res => resolveFn = res));
|
|
16
|
+
this.propsReady = resolveFn;
|
|
17
|
+
this.widgetType = WIDGET_CONFIG.widgetType;
|
|
18
|
+
this.widgetName = widgetname;
|
|
19
|
+
this.name = elRef.nativeElement.getAttribute('name');
|
|
20
|
+
styler(this.nativeElement, this);
|
|
21
|
+
// Call on property change on name to set name attribute on element.
|
|
22
|
+
this.registerReadyStateListener(() => {
|
|
23
|
+
super.onPropertyChange('name', this.name);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
setProps(config, resolveFn) {
|
|
27
|
+
if (!config || !config.properties) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (!registeredPropsSet.has(this.widgetType)) {
|
|
31
|
+
register(this.widgetType, this.prepareProps(config.properties));
|
|
32
|
+
}
|
|
33
|
+
this.propsReady(resolveFn);
|
|
34
|
+
}
|
|
35
|
+
prepareProps(props = {}) {
|
|
36
|
+
const propsMap = new Map(customWidgetProps);
|
|
37
|
+
// propsMap.set('widgetname', this.widgetName);
|
|
38
|
+
Object.entries(props).forEach(([k, v]) => {
|
|
39
|
+
let type = PROP_TYPE.STRING;
|
|
40
|
+
if (v.type === 'boolean') {
|
|
41
|
+
type = PROP_TYPE.BOOLEAN;
|
|
42
|
+
}
|
|
43
|
+
else if (v.type === 'number') {
|
|
44
|
+
type = PROP_TYPE.NUMBER;
|
|
45
|
+
}
|
|
46
|
+
else if (v.type !== 'string') {
|
|
47
|
+
type = v.type;
|
|
48
|
+
}
|
|
49
|
+
// Do not set the 'bind:*' values
|
|
50
|
+
propsMap.set(k, { type, value: _.startsWith(v.value, 'bind:') ? undefined : v.value });
|
|
51
|
+
});
|
|
52
|
+
registeredPropsSet.add(this.widgetType);
|
|
53
|
+
return propsMap;
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = function CustomWidgetContainerDirective_Factory(t) { return new (t || CustomWidgetContainerDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵinjectAttribute('widgetname')); }; }
|
|
56
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: CustomWidgetContainerDirective, selectors: [["", "wmWidgetContainer", ""]], exportAs: ["wmWidgetContainer"], features: [i0.ɵɵProvidersFeature([
|
|
57
|
+
provideAsWidgetRef(CustomWidgetContainerDirective)
|
|
58
|
+
]), i0.ɵɵInheritDefinitionFeature] }); }
|
|
59
|
+
}
|
|
60
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomWidgetContainerDirective, [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: '[wmWidgetContainer]',
|
|
64
|
+
providers: [
|
|
65
|
+
provideAsWidgetRef(CustomWidgetContainerDirective)
|
|
66
|
+
],
|
|
67
|
+
exportAs: 'wmWidgetContainer'
|
|
68
|
+
}]
|
|
69
|
+
}], function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
70
|
+
type: Attribute,
|
|
71
|
+
args: ['widgetname']
|
|
72
|
+
}] }]; }, null); })();
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXdpZGdldC1jb250YWluZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2FkdmFuY2VkL2N1c3RvbS9zcmMvY3VzdG9tLXdpZGdldC1jb250YWluZXIvY3VzdG9tLXdpZGdldC1jb250YWluZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFpQixTQUFTLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFnQixpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFMUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRTdDLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDO0FBQ3pDLE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsa0JBQWtCO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFXRixNQUFNLE9BQU8sOEJBQStCLFNBQVEsaUJBQWlCO0lBTWpFLFlBQ0ksR0FBYSxFQUFFLEtBQWlCLEVBQ1AsVUFBa0I7UUFFM0MsSUFBSSxTQUFTLEdBQWEsSUFBSSxDQUFDO1FBQy9CLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakMsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFtQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUMsK0NBQStDO1FBQy9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFnQixFQUFFLEVBQUU7WUFDcEQsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUU1QixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUN0QixJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQzthQUM1QjtpQkFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUM1QixJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQzthQUMzQjtpQkFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUM1QixJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNqQjtZQUVELGlDQUFpQztZQUNqQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOytGQXpEUSw4QkFBOEIsK0ZBUXhCLFlBQVk7b0VBUmxCLDhCQUE4QixnSEFMNUI7Z0JBQ1Asa0JBQWtCLENBQUMsOEJBQThCLENBQUM7YUFDckQ7O3VGQUdRLDhCQUE4QjtjQVAxQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsU0FBUyxFQUFFO29CQUNQLGtCQUFrQixnQ0FBZ0M7aUJBQ3JEO2dCQUNELFFBQVEsRUFBRSxtQkFBbUI7YUFDaEM7O3NCQVNRLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25Jbml0LCBPcHRpb25hbCwgU2VjdXJpdHlDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBJV2lkZ2V0Q29uZmlnLCBQUk9QX1RZUEUsIHByb3ZpZGVBc1dpZGdldFJlZiwgcmVnaXN0ZXIsIFNhbml0aXplUGlwZSwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyBjdXN0b21XaWRnZXRQcm9wcyB9IGZyb20gJy4vY3VzdG9tLXdpZGdldC5wcm9wcyc7XG5cbmNvbnN0IHJlZ2lzdGVyZWRQcm9wc1NldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtaHRtbC1jb250YWluZXInO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tY3VzdG9tLXdpZGdldCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bVdpZGdldENvbnRhaW5lcl0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoQ3VzdG9tV2lkZ2V0Q29udGFpbmVyRGlyZWN0aXZlKVxuICAgIF0sXG4gICAgZXhwb3J0QXM6ICd3bVdpZGdldENvbnRhaW5lcidcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tV2lkZ2V0Q29udGFpbmVyRGlyZWN0aXZlIGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHdpZGdldFR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcHJvcHNSZWFkeTogRnVuY3Rpb247XG4gICAgd2lkZ2V0TmFtZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAQXR0cmlidXRlKCd3aWRnZXRuYW1lJykgd2lkZ2V0bmFtZTogc3RyaW5nLFxuICAgICkge1xuICAgICAgICBsZXQgcmVzb2x2ZUZuOiBGdW5jdGlvbiA9IG5vb3A7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgbmV3IFByb21pc2UocmVzID0+IHJlc29sdmVGbiA9IHJlcykpO1xuICAgICAgICB0aGlzLnByb3BzUmVhZHkgPSByZXNvbHZlRm47XG4gICAgICAgIHRoaXMud2lkZ2V0VHlwZSA9IFdJREdFVF9DT05GSUcud2lkZ2V0VHlwZTtcbiAgICAgICAgdGhpcy53aWRnZXROYW1lID0gd2lkZ2V0bmFtZTtcbiAgICAgICAgdGhpcy5uYW1lID0gZWxSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcblxuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICAvLyBDYWxsIG9uIHByb3BlcnR5IGNoYW5nZSBvbiBuYW1lIHRvIHNldCBuYW1lIGF0dHJpYnV0ZSBvbiBlbGVtZW50LlxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2UoJ25hbWUnLCB0aGlzLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UHJvcHMoY29uZmlnLCByZXNvbHZlRm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIGlmICghY29uZmlnIHx8ICFjb25maWcucHJvcGVydGllcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVnaXN0ZXJlZFByb3BzU2V0Lmhhcyh0aGlzLndpZGdldFR5cGUpKSB7XG4gICAgICAgICAgICByZWdpc3Rlcih0aGlzLndpZGdldFR5cGUsIHRoaXMucHJlcGFyZVByb3BzKGNvbmZpZy5wcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb3BzUmVhZHkocmVzb2x2ZUZuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmVQcm9wcyhwcm9wcyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHByb3BzTWFwID0gbmV3IE1hcChjdXN0b21XaWRnZXRQcm9wcyk7XG4gICAgICAgIC8vIHByb3BzTWFwLnNldCgnd2lkZ2V0bmFtZScsIHRoaXMud2lkZ2V0TmFtZSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzKS5mb3JFYWNoKChbaywgdl06IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gUFJPUF9UWVBFLlNUUklORztcblxuICAgICAgICAgICAgaWYgKHYudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IFBST1BfVFlQRS5CT09MRUFOO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IFBST1BfVFlQRS5OVU1CRVI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYudHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gdi50eXBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEbyBub3Qgc2V0IHRoZSAnYmluZDoqJyB2YWx1ZXNcbiAgICAgICAgICAgIHByb3BzTWFwLnNldChrLCB7IHR5cGUsIHZhbHVlOiBfLnN0YXJ0c1dpdGgodi52YWx1ZSwgJ2JpbmQ6JykgPyB1bmRlZmluZWQgOiB2LnZhbHVlIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZWdpc3RlcmVkUHJvcHNTZXQuYWRkKHRoaXMud2lkZ2V0VHlwZSk7XG5cbiAgICAgICAgcmV0dXJuIHByb3BzTWFwO1xuICAgIH1cbn1cbiJdfQ==
|
app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PROP_BOOLEAN, PROP_STRING } from '@wm/components/base';
|
|
2
|
+
export const customWidgetProps = new Map([
|
|
3
|
+
['class', PROP_STRING],
|
|
4
|
+
['hint', PROP_STRING],
|
|
5
|
+
['name', PROP_STRING],
|
|
6
|
+
['widgetname', PROP_STRING],
|
|
7
|
+
['show', { value: true, ...PROP_BOOLEAN }]
|
|
8
|
+
]);
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXdpZGdldC5wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9hZHZhbmNlZC9jdXN0b20vc3JjL2N1c3RvbS13aWRnZXQtY29udGFpbmVyL2N1c3RvbS13aWRnZXQucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FDMUIsSUFBSSxHQUFHLENBQ0g7SUFDSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7SUFDdEIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3JCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNyQixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7SUFDM0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7Q0FDN0MsQ0FDSixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUFJPUF9CT09MRUFOLCBQUk9QX1NUUklORyB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgY3VzdG9tV2lkZ2V0UHJvcHMgPVxuICAgIG5ldyBNYXAoXG4gICAgICAgIFtcbiAgICAgICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ2hpbnQnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ25hbWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ3dpZGdldG5hbWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgICAgICBbJ3Nob3cnLCB7IHZhbHVlOiB0cnVlLCAuLi5QUk9QX0JPT0xFQU4gfV1cbiAgICAgICAgXVxuICAgIClcbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Attribute, Directive, Inject, Self, Input } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { $watch } from '@wm/core';
|
|
4
|
+
import { WidgetRef } from '@wm/components/base';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CustomWidgetPropHandlerDirective {
|
|
7
|
+
constructor(widgetRef) {
|
|
8
|
+
this.widgetRef = widgetRef;
|
|
9
|
+
this.widgetRef.props = {};
|
|
10
|
+
this.widgetRef.pageParams = this.widgetRef.props;
|
|
11
|
+
this.widgetRef.params$ = new Subject();
|
|
12
|
+
}
|
|
13
|
+
registerParams(name, value, bindExpr, type) {
|
|
14
|
+
this.widgetRef.props[name] = value;
|
|
15
|
+
if (!value && bindExpr) {
|
|
16
|
+
this.widgetRef.registerDestroyListener(
|
|
17
|
+
//[Todo-CSP]: expr fn should be generated be default
|
|
18
|
+
$watch(bindExpr, this.widgetRef.getViewParent(), _.get(this.widgetRef, 'context'), nv => {
|
|
19
|
+
this.widgetRef.props[name] = nv;
|
|
20
|
+
// notify the partial container of the param changes
|
|
21
|
+
this.widgetRef.params$.next();
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.widgetRef.params$.next();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = function CustomWidgetPropHandlerDirective_Factory(t) { return new (t || CustomWidgetPropHandlerDirective)(i0.ɵɵdirectiveInject(WidgetRef, 2)); }; }
|
|
29
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: CustomWidgetPropHandlerDirective, selectors: [["", "customWidgetContainer", ""]] }); }
|
|
30
|
+
}
|
|
31
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomWidgetPropHandlerDirective, [{
|
|
32
|
+
type: Directive,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: '[customWidgetContainer]',
|
|
35
|
+
}]
|
|
36
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
37
|
+
type: Self
|
|
38
|
+
}, {
|
|
39
|
+
type: Inject,
|
|
40
|
+
args: [WidgetRef]
|
|
41
|
+
}] }]; }, null); })();
|
|
42
|
+
export class CustomWidgetPropDirective {
|
|
43
|
+
constructor(bindValue, type, customWidgetPropsProvider) {
|
|
44
|
+
this.bindValue = bindValue;
|
|
45
|
+
this.type = type;
|
|
46
|
+
this.customWidgetPropsProvider = customWidgetPropsProvider;
|
|
47
|
+
}
|
|
48
|
+
ngOnInit() {
|
|
49
|
+
this.customWidgetPropsProvider.registerParams(this.name, this.value, this.bindValue, this.type);
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = function CustomWidgetPropDirective_Factory(t) { return new (t || CustomWidgetPropDirective)(i0.ɵɵinjectAttribute('value.bind'), i0.ɵɵinjectAttribute('type'), i0.ɵɵdirectiveInject(CustomWidgetPropHandlerDirective)); }; }
|
|
52
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: CustomWidgetPropDirective, selectors: [["", "wmProp", ""]], inputs: { name: "name", value: "value" } }); }
|
|
53
|
+
}
|
|
54
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomWidgetPropDirective, [{
|
|
55
|
+
type: Directive,
|
|
56
|
+
args: [{
|
|
57
|
+
selector: '[wmProp]',
|
|
58
|
+
}]
|
|
59
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
60
|
+
type: Attribute,
|
|
61
|
+
args: ['value.bind']
|
|
62
|
+
}] }, { type: undefined, decorators: [{
|
|
63
|
+
type: Attribute,
|
|
64
|
+
args: ['type']
|
|
65
|
+
}] }, { type: CustomWidgetPropHandlerDirective }]; }, { name: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], value: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] }); })();
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXdpZGdldC1jb250YWluZXItcHJvcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYWR2YW5jZWQvY3VzdG9tL3NyYy9jdXN0b20td2lkZ2V0LWNvbnRhaW5lci1wcm9wL2N1c3RvbS13aWRnZXQtY29udGFpbmVyLXByb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBUWhELE1BQU0sT0FBTyxnQ0FBZ0M7SUFDekMsWUFBZ0QsU0FBUztRQUFULGNBQVMsR0FBVCxTQUFTLENBQUE7UUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLFFBQWdCLEVBQUUsSUFBWTtRQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUI7WUFDbEMsb0RBQW9EO1lBQ3BELE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFFaEMsb0RBQW9EO2dCQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7YUFBTTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pDO0lBRUwsQ0FBQztpR0F2QlEsZ0NBQWdDLHVCQUNaLFNBQVM7b0VBRDdCLGdDQUFnQzs7dUZBQWhDLGdDQUFnQztjQUg1QyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjthQUN0Qzs7c0JBRWlCLElBQUk7O3NCQUFJLE1BQU07dUJBQUMsU0FBUzs7QUE0QjFDLE1BQU0sT0FBTyx5QkFBeUI7SUFLbEMsWUFDb0MsU0FBUyxFQUNmLElBQUksRUFDdEIseUJBQTJEO1FBRm5DLGNBQVMsR0FBVCxTQUFTLENBQUE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQ3RCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBa0M7SUFFdkUsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRyxDQUFDOzBGQWRRLHlCQUF5Qix1QkFNbkIsWUFBWSx3QkFDWixNQUFNO29FQVBaLHlCQUF5Qjs7dUZBQXpCLHlCQUF5QjtjQUhyQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7YUFDdkI7O3NCQU9RLFNBQVM7dUJBQUMsWUFBWTs7c0JBQ3RCLFNBQVM7dUJBQUMsTUFBTTtvRUFMWixJQUFJO2tCQUFaLEtBQUs7WUFDRyxLQUFLO2tCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIERpcmVjdGl2ZSwgSW5qZWN0LCBTZWxmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgJHdhdGNoIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0UmVmIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cblxuZGVjbGFyZSBjb25zdCBfO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tjdXN0b21XaWRnZXRDb250YWluZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tV2lkZ2V0UHJvcEhhbmRsZXJEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yIChAU2VsZigpIEBJbmplY3QoV2lkZ2V0UmVmKSBwcml2YXRlIHdpZGdldFJlZikge1xuICAgICAgICB0aGlzLndpZGdldFJlZi5wcm9wcyA9IHt9O1xuICAgICAgICB0aGlzLndpZGdldFJlZi5wYWdlUGFyYW1zID0gdGhpcy53aWRnZXRSZWYucHJvcHM7XG4gICAgICAgIHRoaXMud2lkZ2V0UmVmLnBhcmFtcyQgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyUGFyYW1zKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgYmluZEV4cHI6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0UmVmLnByb3BzW25hbWVdID0gdmFsdWU7XG4gICAgICAgIGlmICghdmFsdWUgJiYgYmluZEV4cHIpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0UmVmLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogZXhwciBmbiBzaG91bGQgYmUgZ2VuZXJhdGVkIGJlIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAkd2F0Y2goYmluZEV4cHIsIHRoaXMud2lkZ2V0UmVmLmdldFZpZXdQYXJlbnQoKSwgXy5nZXQodGhpcy53aWRnZXRSZWYsICdjb250ZXh0JyksIG52ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRSZWYucHJvcHNbbmFtZV0gPSBudjtcblxuICAgICAgICAgICAgICAgICAgICAvLyBub3RpZnkgdGhlIHBhcnRpYWwgY29udGFpbmVyIG9mIHRoZSBwYXJhbSBjaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0UmVmLnBhcmFtcyQubmV4dCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy53aWRnZXRSZWYucGFyYW1zJC5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbd21Qcm9wXScsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVdpZGdldFByb3BEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEF0dHJpYnV0ZSgndmFsdWUuYmluZCcpIHB1YmxpYyBiaW5kVmFsdWUsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3R5cGUnKSBwdWJsaWMgdHlwZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21XaWRnZXRQcm9wc1Byb3ZpZGVyOiBDdXN0b21XaWRnZXRQcm9wSGFuZGxlckRpcmVjdGl2ZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmN1c3RvbVdpZGdldFByb3BzUHJvdmlkZXIucmVnaXN0ZXJQYXJhbXModGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLmJpbmRWYWx1ZSwgdGhpcy50eXBlKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PROP_STRING, register } from '@wm/components/base';
|
|
2
|
+
export const registerProps = () => {
|
|
3
|
+
register('wm-custom-widget-container', new Map([
|
|
4
|
+
['name', PROP_STRING],
|
|
5
|
+
['class', PROP_STRING]
|
|
6
|
+
]));
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXdpZGdldC1wcm9wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2FkdmFuY2VkL2N1c3RvbS9zcmMvY3VzdG9tLXdpZGdldC1wcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUUsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixRQUFRLENBQ0osNEJBQTRCLEVBQzVCLElBQUksR0FBRyxDQUNIO1FBQ0ksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQ3JCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztLQUN6QixDQUNKLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UFJPUF9TVFJJTkcsIHJlZ2lzdGVyfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUHJvcHMgPSAoKSA9PiB7XG4gICAgcmVnaXN0ZXIoXG4gICAgICAgICd3bS1jdXN0b20td2lkZ2V0LWNvbnRhaW5lcicsXG4gICAgICAgIG5ldyBNYXAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWyduYW1lJywgUFJPUF9TVFJJTkddLFxuICAgICAgICAgICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICk7XG59O1xuIl19
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Directive, Injector } from '@angular/core';
|
|
2
|
+
import { Viewport } from '@wm/core';
|
|
3
|
+
import { registerProps } from './custom-widget-prop';
|
|
4
|
+
import { StylableComponent, provideAsWidgetRef, getWidgetPropsByType } from '@wm/components/base';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@wm/core";
|
|
7
|
+
const DEFAULT_CLS = 'app-custom-widget-container clearfix';
|
|
8
|
+
const WIDGET_CONFIG = { widgetType: 'wm-custom-widget-container', hostClass: DEFAULT_CLS };
|
|
9
|
+
export class CustomWidgetDirective extends StylableComponent {
|
|
10
|
+
static { this.initializeProps = registerProps(); }
|
|
11
|
+
constructor(inj, viewport) {
|
|
12
|
+
super(inj, WIDGET_CONFIG);
|
|
13
|
+
this.viewport = viewport;
|
|
14
|
+
this.registerDestroyListener(this.viewport.subscribe("resize" /* ViewportEvent.RESIZE */, data => this.callback('resize', data)));
|
|
15
|
+
this.registerDestroyListener(this.viewport.subscribe("orientationchange" /* ViewportEvent.ORIENTATION_CHANGE */, data => this.callback('orientationchange', data)));
|
|
16
|
+
}
|
|
17
|
+
ngAfterContentInit() {
|
|
18
|
+
let customWidget = this.nativeElement.closest('[customwidgetcontainer]'), inheritedProps = {}, customWidgetProps = Array.from(getWidgetPropsByType("wm-custom-widget-container").keys());
|
|
19
|
+
for (let i = 0; i < customWidget.attributes.length; i++) {
|
|
20
|
+
let attr = customWidget.attributes.item(i);
|
|
21
|
+
if (attr.value && attr.value !== '' && !customWidgetProps.includes(attr.name))
|
|
22
|
+
inheritedProps[attr.name] = attr.value;
|
|
23
|
+
}
|
|
24
|
+
this.processChildren(this.nativeElement.children, inheritedProps);
|
|
25
|
+
}
|
|
26
|
+
processChildren(children, inheritedProps) {
|
|
27
|
+
Array.from(children).forEach((child) => {
|
|
28
|
+
if (!child.hasAttribute('base-widget'))
|
|
29
|
+
this.processChildren(child.children, inheritedProps);
|
|
30
|
+
else {
|
|
31
|
+
for (const [key, value] of Object.entries(inheritedProps)) {
|
|
32
|
+
if (key.includes(".event"))
|
|
33
|
+
this.processChildAttr(key, value, { widget: child.widget, nativeElement: child });
|
|
34
|
+
else
|
|
35
|
+
child.widget[key] = value;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
callback(eventName, locals) {
|
|
41
|
+
locals = _.assign({ widget: this }, locals);
|
|
42
|
+
this.invokeEventCallback(eventName, locals);
|
|
43
|
+
}
|
|
44
|
+
ngOnAttach() {
|
|
45
|
+
this.callback('attach');
|
|
46
|
+
}
|
|
47
|
+
ngOnDetach() {
|
|
48
|
+
this.callback('detach');
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
this.callback('destroy');
|
|
52
|
+
super.ngOnDestroy();
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = function CustomWidgetDirective_Factory(t) { return new (t || CustomWidgetDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.Viewport)); }; }
|
|
55
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: CustomWidgetDirective, selectors: [["", "wmCustomWidget", ""]], features: [i0.ɵɵProvidersFeature([
|
|
56
|
+
provideAsWidgetRef(CustomWidgetDirective)
|
|
57
|
+
]), i0.ɵɵInheritDefinitionFeature] }); }
|
|
58
|
+
}
|
|
59
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomWidgetDirective, [{
|
|
60
|
+
type: Directive,
|
|
61
|
+
args: [{
|
|
62
|
+
selector: '[wmCustomWidget]',
|
|
63
|
+
providers: [
|
|
64
|
+
provideAsWidgetRef(CustomWidgetDirective)
|
|
65
|
+
]
|
|
66
|
+
}]
|
|
67
|
+
}], function () { return [{ type: i0.Injector }, { type: i1.Viewport }]; }, null); })();
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXdpZGdldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYWR2YW5jZWQvY3VzdG9tL3NyYy9jdXN0b20td2lkZ2V0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBYyxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBQyxRQUFRLEVBQWdCLE1BQU0sVUFBVSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRWxHLE1BQU0sV0FBVyxHQUFHLHNDQUFzQyxDQUFDO0FBQzNELE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLDRCQUE0QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQztBQVN6RixNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQWlCO2FBQ2pELG9CQUFlLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFekMsWUFBWSxHQUFhLEVBQVUsUUFBa0I7UUFDakQsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQURLLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFakQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxzQ0FBdUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyw2REFBbUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SSxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2QsSUFBSSxZQUFZLEdBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsRUFDM0UsY0FBYyxHQUFRLEVBQUUsRUFDeEIsaUJBQWlCLEdBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEcsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BELElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN4RSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDOUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBYSxFQUFFLGNBQXlDO1FBQ3BFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDeEMsSUFBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7aUJBQ3BEO2dCQUNELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO29CQUN2RCxJQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO3dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDOzt3QkFFaEYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQ2pDO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQWU7UUFDdkMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQztzRkFuRFEscUJBQXFCO29FQUFyQixxQkFBcUIsNEVBSm5CO2dCQUNQLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDO2FBQzVDOzt1RkFFUSxxQkFBcUI7Y0FOakMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFNBQVMsRUFBRTtvQkFDUCxrQkFBa0IsdUJBQXVCO2lCQUM1QzthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1ZpZXdwb3J0LCBWaWV3cG9ydEV2ZW50fSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9jdXN0b20td2lkZ2V0LXByb3AnO1xuaW1wb3J0IHsgU3R5bGFibGVDb21wb25lbnQsIHByb3ZpZGVBc1dpZGdldFJlZiwgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWN1c3RvbS13aWRnZXQtY29udGFpbmVyIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLWN1c3RvbS13aWRnZXQtY29udGFpbmVyJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5kZWNsYXJlIGNvbnN0IF87XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3dtQ3VzdG9tV2lkZ2V0XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDdXN0b21XaWRnZXREaXJlY3RpdmUpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21XaWRnZXREaXJlY3RpdmUgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIHByaXZhdGUgdmlld3BvcnQ6IFZpZXdwb3J0KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIodGhpcy52aWV3cG9ydC5zdWJzY3JpYmUoVmlld3BvcnRFdmVudC5SRVNJWkUsIGRhdGEgPT4gdGhpcy5jYWxsYmFjaygncmVzaXplJywgZGF0YSkpKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcih0aGlzLnZpZXdwb3J0LnN1YnNjcmliZShWaWV3cG9ydEV2ZW50Lk9SSUVOVEFUSU9OX0NIQU5HRSwgZGF0YSA9PiB0aGlzLmNhbGxiYWNrKCdvcmllbnRhdGlvbmNoYW5nZScsIGRhdGEpKSk7XG4gICAgfVxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgbGV0IGN1c3RvbVdpZGdldCAgICAgICAgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnW2N1c3RvbXdpZGdldGNvbnRhaW5lcl0nKSxcbiAgICAgICAgICAgIGluaGVyaXRlZFByb3BzICAgICAgPSB7fSxcbiAgICAgICAgICAgIGN1c3RvbVdpZGdldFByb3BzICAgPSBBcnJheS5mcm9tKGdldFdpZGdldFByb3BzQnlUeXBlKFwid20tY3VzdG9tLXdpZGdldC1jb250YWluZXJcIikua2V5cygpKTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGN1c3RvbVdpZGdldC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYXR0ciA9IGN1c3RvbVdpZGdldC5hdHRyaWJ1dGVzLml0ZW0oaSk7XG4gICAgICAgICAgICBpZihhdHRyLnZhbHVlICYmIGF0dHIudmFsdWUgIT09ICcnICYmICFjdXN0b21XaWRnZXRQcm9wcy5pbmNsdWRlcyhhdHRyLm5hbWUpKVxuICAgICAgICAgICAgICAgIGluaGVyaXRlZFByb3BzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuKHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZHJlbiwgaW5oZXJpdGVkUHJvcHMpO1xuICAgIH1cblxuICAgIHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbjogYW55LCBpbmhlcml0ZWRQcm9wczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZighY2hpbGQuaGFzQXR0cmlidXRlKCdiYXNlLXdpZGdldCcpKVxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuKGNoaWxkLmNoaWxkcmVuLCBpbmhlcml0ZWRQcm9wcyk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpbmhlcml0ZWRQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoa2V5LmluY2x1ZGVzKFwiLmV2ZW50XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQ2hpbGRBdHRyKGtleSwgdmFsdWUsIHt3aWRnZXQ6IGNoaWxkLndpZGdldCwgbmF0aXZlRWxlbWVudDogY2hpbGR9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQud2lkZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxsYmFjayhldmVudE5hbWUsIGxvY2Fscz86IG9iamVjdCkge1xuICAgICAgICBsb2NhbHMgPSBfLmFzc2lnbih7IHdpZGdldDogdGhpcyB9LCBsb2NhbHMpO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lLCBsb2NhbHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQXR0YWNoKCkge1xuICAgICAgICB0aGlzLmNhbGxiYWNrKCdhdHRhY2gnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgdGhpcy5jYWxsYmFjaygnZGV0YWNoJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNhbGxiYWNrKCdkZXN0cm95Jyk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG59XG4iXX0=
|