@nova-design-system/nova-angular 3.15.0 → 3.17.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/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render/context.mjs +6 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render/flags.mjs +42 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render/flex-render-component-ref.mjs +171 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render/flex-render-component.mjs +39 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render/view.mjs +101 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render.mjs +211 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/index.mjs +49 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/lazy-signal-initializer.mjs +43 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/proxy.mjs +87 -0
- package/dist/nova-components/esm2022/lib/components/index.mjs +2 -0
- package/dist/nova-components/esm2022/lib/components/nv-datatable.component.mjs +158 -0
- package/dist/nova-components/esm2022/lib/nova-components.module.mjs +7 -5
- package/dist/nova-components/esm2022/lib/stencil-generated/component-value-accessors.mjs +73 -1
- package/dist/nova-components/esm2022/lib/stencil-generated/components.mjs +33 -34
- package/dist/nova-components/esm2022/lib/stencil-generated/index.mjs +2 -2
- package/dist/nova-components/esm2022/public-api.mjs +2 -1
- package/dist/nova-components/fesm2022/nova-components.mjs +990 -39
- package/dist/nova-components/fesm2022/nova-components.mjs.map +1 -1
- package/dist/nova-components/lib/components/datatable.utils/flex-render/context.d.ts +3 -0
- package/dist/nova-components/lib/components/datatable.utils/flex-render/flags.d.ts +40 -0
- package/dist/nova-components/lib/components/datatable.utils/flex-render/flex-render-component-ref.d.ts +39 -0
- package/dist/nova-components/lib/components/datatable.utils/flex-render/flex-render-component.d.ts +60 -0
- package/dist/nova-components/lib/components/datatable.utils/flex-render/view.d.ts +49 -0
- package/dist/nova-components/lib/components/datatable.utils/flex-render.d.ts +26 -0
- package/dist/nova-components/lib/components/datatable.utils/index.d.ts +6 -0
- package/dist/nova-components/lib/components/datatable.utils/lazy-signal-initializer.d.ts +5 -0
- package/dist/nova-components/lib/components/datatable.utils/proxy.d.ts +3 -0
- package/dist/nova-components/lib/components/index.d.ts +1 -0
- package/dist/nova-components/lib/components/nv-datatable.component.d.ts +46 -0
- package/dist/nova-components/lib/nova-components.module.d.ts +6 -5
- package/dist/nova-components/lib/stencil-generated/component-value-accessors.d.ts +15 -1
- package/dist/nova-components/lib/stencil-generated/components.d.ts +16 -21
- package/dist/nova-components/lib/stencil-generated/index.d.ts +1 -1
- package/dist/nova-components/public-api.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { inject, InjectionToken } from '@angular/core';
|
|
2
|
+
export const FlexRenderComponentProps = new InjectionToken('[@tanstack/angular-table] Flex render component context props');
|
|
3
|
+
export function injectFlexRenderContext() {
|
|
4
|
+
return inject(FlexRenderComponentProps);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlLnV0aWxzL2ZsZXgtcmVuZGVyL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBRXhELCtEQUErRCxDQUFDLENBQUE7QUFFbEUsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxPQUFPLE1BQU0sQ0FBSSx3QkFBd0IsQ0FBQyxDQUFBO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuZXhwb3J0IGNvbnN0IEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgTm9uTnVsbGFibGU8dW5rbm93bj5cbj4oJ1tAdGFuc3RhY2svYW5ndWxhci10YWJsZV0gRmxleCByZW5kZXIgY29tcG9uZW50IGNvbnRleHQgcHJvcHMnKVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RmxleFJlbmRlckNvbnRleHQ8VCBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PigpOiBUIHtcbiAgcmV0dXJuIGluamVjdDxUPihGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMpXG59XG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flags used to manage and optimize the rendering lifecycle of content of the cell,
|
|
3
|
+
* while using FlexRenderDirective.
|
|
4
|
+
*/
|
|
5
|
+
export var FlexRenderFlags;
|
|
6
|
+
(function (FlexRenderFlags) {
|
|
7
|
+
/**
|
|
8
|
+
* Indicates that the view is being created for the first time or will be cleared during the next update phase.
|
|
9
|
+
* This is the initial state and will transition after the first ngDoCheck.
|
|
10
|
+
*/
|
|
11
|
+
FlexRenderFlags[FlexRenderFlags["ViewFirstRender"] = 1] = "ViewFirstRender";
|
|
12
|
+
/**
|
|
13
|
+
* Represents a state where the view is not dirty, meaning no changes require rendering updates.
|
|
14
|
+
*/
|
|
15
|
+
FlexRenderFlags[FlexRenderFlags["Pristine"] = 2] = "Pristine";
|
|
16
|
+
/**
|
|
17
|
+
* Indicates the `content` property has been modified or the view requires a complete re-render.
|
|
18
|
+
* When this flag is enabled, the view will be cleared and recreated from scratch.
|
|
19
|
+
*/
|
|
20
|
+
FlexRenderFlags[FlexRenderFlags["ContentChanged"] = 4] = "ContentChanged";
|
|
21
|
+
/**
|
|
22
|
+
* Indicates that the `props` property reference has changed.
|
|
23
|
+
* When this flag is enabled, the view context is updated based on the type of the content.
|
|
24
|
+
*
|
|
25
|
+
* For Component view, inputs will be updated and view will be marked as dirty.
|
|
26
|
+
* For TemplateRef and primitive values, view will be marked as dirty
|
|
27
|
+
*/
|
|
28
|
+
FlexRenderFlags[FlexRenderFlags["PropsReferenceChanged"] = 8] = "PropsReferenceChanged";
|
|
29
|
+
/**
|
|
30
|
+
* Indicates that the current rendered view needs to be checked for changes.
|
|
31
|
+
*/
|
|
32
|
+
FlexRenderFlags[FlexRenderFlags["DirtyCheck"] = 16] = "DirtyCheck";
|
|
33
|
+
/**
|
|
34
|
+
* Indicates that a signal within the `content(props)` result has changed
|
|
35
|
+
*/
|
|
36
|
+
FlexRenderFlags[FlexRenderFlags["DirtySignal"] = 32] = "DirtySignal";
|
|
37
|
+
/**
|
|
38
|
+
* Indicates that the first render effect has been checked at least one time.
|
|
39
|
+
*/
|
|
40
|
+
FlexRenderFlags[FlexRenderFlags["RenderEffectChecked"] = 64] = "RenderEffectChecked";
|
|
41
|
+
})(FlexRenderFlags || (FlexRenderFlags = {}));
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGF0YWJsZS51dGlscy9mbGV4LXJlbmRlci9mbGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxlQW1DWDtBQW5DRCxXQUFZLGVBQWU7SUFDekI7OztPQUdHO0lBQ0gsMkVBQXdCLENBQUE7SUFDeEI7O09BRUc7SUFDSCw2REFBaUIsQ0FBQTtJQUNqQjs7O09BR0c7SUFDSCx5RUFBdUIsQ0FBQTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCx1RkFBOEIsQ0FBQTtJQUM5Qjs7T0FFRztJQUNILGtFQUFtQixDQUFBO0lBQ25COztPQUVHO0lBQ0gsb0VBQW9CLENBQUE7SUFDcEI7O09BRUc7SUFDSCxvRkFBNEIsQ0FBQTtBQUM5QixDQUFDLEVBbkNXLGVBQWUsS0FBZixlQUFlLFFBbUMxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRmxhZ3MgdXNlZCB0byBtYW5hZ2UgYW5kIG9wdGltaXplIHRoZSByZW5kZXJpbmcgbGlmZWN5Y2xlIG9mIGNvbnRlbnQgb2YgdGhlIGNlbGwsXG4gKiB3aGlsZSB1c2luZyBGbGV4UmVuZGVyRGlyZWN0aXZlLlxuICovXG5leHBvcnQgZW51bSBGbGV4UmVuZGVyRmxhZ3Mge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHZpZXcgaXMgYmVpbmcgY3JlYXRlZCBmb3IgdGhlIGZpcnN0IHRpbWUgb3Igd2lsbCBiZSBjbGVhcmVkIGR1cmluZyB0aGUgbmV4dCB1cGRhdGUgcGhhc2UuXG4gICAqIFRoaXMgaXMgdGhlIGluaXRpYWwgc3RhdGUgYW5kIHdpbGwgdHJhbnNpdGlvbiBhZnRlciB0aGUgZmlyc3QgbmdEb0NoZWNrLlxuICAgKi9cbiAgVmlld0ZpcnN0UmVuZGVyID0gMSA8PCAwLFxuICAvKipcbiAgICogUmVwcmVzZW50cyBhIHN0YXRlIHdoZXJlIHRoZSB2aWV3IGlzIG5vdCBkaXJ0eSwgbWVhbmluZyBubyBjaGFuZ2VzIHJlcXVpcmUgcmVuZGVyaW5nIHVwZGF0ZXMuXG4gICAqL1xuICBQcmlzdGluZSA9IDEgPDwgMSxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgYGNvbnRlbnRgIHByb3BlcnR5IGhhcyBiZWVuIG1vZGlmaWVkIG9yIHRoZSB2aWV3IHJlcXVpcmVzIGEgY29tcGxldGUgcmUtcmVuZGVyLlxuICAgKiBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgdmlldyB3aWxsIGJlIGNsZWFyZWQgYW5kIHJlY3JlYXRlZCBmcm9tIHNjcmF0Y2guXG4gICAqL1xuICBDb250ZW50Q2hhbmdlZCA9IDEgPDwgMixcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBgcHJvcHNgIHByb3BlcnR5IHJlZmVyZW5jZSBoYXMgY2hhbmdlZC5cbiAgICogV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIHZpZXcgY29udGV4dCBpcyB1cGRhdGVkIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBjb250ZW50LlxuICAgKlxuICAgKiBGb3IgQ29tcG9uZW50IHZpZXcsIGlucHV0cyB3aWxsIGJlIHVwZGF0ZWQgYW5kIHZpZXcgd2lsbCBiZSBtYXJrZWQgYXMgZGlydHkuXG4gICAqIEZvciBUZW1wbGF0ZVJlZiBhbmQgcHJpbWl0aXZlIHZhbHVlcywgdmlldyB3aWxsIGJlIG1hcmtlZCBhcyBkaXJ0eVxuICAgKi9cbiAgUHJvcHNSZWZlcmVuY2VDaGFuZ2VkID0gMSA8PCAzLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgcmVuZGVyZWQgdmlldyBuZWVkcyB0byBiZSBjaGVja2VkIGZvciBjaGFuZ2VzLlxuICAgKi9cbiAgRGlydHlDaGVjayA9IDEgPDwgNCxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGEgc2lnbmFsIHdpdGhpbiB0aGUgYGNvbnRlbnQocHJvcHMpYCByZXN1bHQgaGFzIGNoYW5nZWRcbiAgICovXG4gIERpcnR5U2lnbmFsID0gMSA8PCA1LFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZpcnN0IHJlbmRlciBlZmZlY3QgaGFzIGJlZW4gY2hlY2tlZCBhdCBsZWFzdCBvbmUgdGltZS5cbiAgICovXG4gIFJlbmRlckVmZmVjdENoZWNrZWQgPSAxIDw8IDYsXG59XG4iXX0=
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { ChangeDetectorRef, inject, Injectable, KeyValueDiffers, OutputEmitterRef, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FlexRenderComponentFactory {
|
|
4
|
+
#viewContainerRef = inject(ViewContainerRef);
|
|
5
|
+
createComponent(flexRenderComponent, componentInjector) {
|
|
6
|
+
const componentRef = this.#viewContainerRef.createComponent(flexRenderComponent.component, {
|
|
7
|
+
injector: componentInjector,
|
|
8
|
+
});
|
|
9
|
+
const view = new FlexRenderComponentRef(componentRef, flexRenderComponent, componentInjector);
|
|
10
|
+
const { inputs, outputs } = flexRenderComponent;
|
|
11
|
+
if (inputs)
|
|
12
|
+
view.setInputs(inputs);
|
|
13
|
+
if (outputs)
|
|
14
|
+
view.setOutputs(outputs);
|
|
15
|
+
return view;
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: FlexRenderComponentFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: FlexRenderComponentFactory }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: FlexRenderComponentFactory, decorators: [{
|
|
21
|
+
type: Injectable
|
|
22
|
+
}] });
|
|
23
|
+
export class FlexRenderComponentRef {
|
|
24
|
+
#keyValueDiffersFactory;
|
|
25
|
+
#componentData;
|
|
26
|
+
#inputValueDiffer;
|
|
27
|
+
#outputRegistry;
|
|
28
|
+
constructor(componentRef, componentData, componentInjector) {
|
|
29
|
+
this.componentRef = componentRef;
|
|
30
|
+
this.componentInjector = componentInjector;
|
|
31
|
+
this.#componentData = componentData;
|
|
32
|
+
this.#keyValueDiffersFactory = componentInjector.get(KeyValueDiffers);
|
|
33
|
+
this.#outputRegistry = new FlexRenderComponentOutputManager(this.#keyValueDiffersFactory, this.outputs);
|
|
34
|
+
this.#inputValueDiffer = this.#keyValueDiffersFactory
|
|
35
|
+
.find(this.inputs)
|
|
36
|
+
.create();
|
|
37
|
+
this.#inputValueDiffer.diff(this.inputs);
|
|
38
|
+
this.componentRef.onDestroy(() => this.#outputRegistry.unsubscribeAll());
|
|
39
|
+
}
|
|
40
|
+
get component() {
|
|
41
|
+
return this.#componentData.component;
|
|
42
|
+
}
|
|
43
|
+
get inputs() {
|
|
44
|
+
return this.#componentData.inputs ?? {};
|
|
45
|
+
}
|
|
46
|
+
get outputs() {
|
|
47
|
+
return this.#componentData.outputs ?? {};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get component input and output diff by the given item
|
|
51
|
+
*/
|
|
52
|
+
diff(item) {
|
|
53
|
+
return {
|
|
54
|
+
inputDiff: this.#inputValueDiffer.diff(item.inputs ?? {}),
|
|
55
|
+
outputDiff: this.#outputRegistry.diff(item.outputs ?? {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @param compare Whether the current ref component instance is the same as the given one
|
|
61
|
+
*/
|
|
62
|
+
eqType(compare) {
|
|
63
|
+
return compare.component === this.component;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Tries to update current component refs input by the new given content component.
|
|
67
|
+
*/
|
|
68
|
+
update(content) {
|
|
69
|
+
const eq = this.eqType(content);
|
|
70
|
+
if (!eq)
|
|
71
|
+
return;
|
|
72
|
+
const { inputDiff, outputDiff } = this.diff(content);
|
|
73
|
+
if (inputDiff) {
|
|
74
|
+
inputDiff.forEachAddedItem(item => this.setInput(item.key, item.currentValue));
|
|
75
|
+
inputDiff.forEachChangedItem(item => this.setInput(item.key, item.currentValue));
|
|
76
|
+
inputDiff.forEachRemovedItem(item => this.setInput(item.key, undefined));
|
|
77
|
+
}
|
|
78
|
+
if (outputDiff) {
|
|
79
|
+
outputDiff.forEachAddedItem(item => {
|
|
80
|
+
this.setOutput(item.key, item.currentValue);
|
|
81
|
+
});
|
|
82
|
+
outputDiff.forEachChangedItem(item => {
|
|
83
|
+
if (item.currentValue) {
|
|
84
|
+
this.#outputRegistry.setListener(item.key, item.currentValue);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.#outputRegistry.unsubscribe(item.key);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
outputDiff.forEachRemovedItem(item => {
|
|
91
|
+
this.#outputRegistry.unsubscribe(item.key);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
this.#componentData = content;
|
|
95
|
+
}
|
|
96
|
+
markAsDirty() {
|
|
97
|
+
this.componentRef.injector.get(ChangeDetectorRef).markForCheck();
|
|
98
|
+
}
|
|
99
|
+
setInputs(inputs) {
|
|
100
|
+
for (const prop in inputs) {
|
|
101
|
+
this.setInput(prop, inputs[prop]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
setInput(key, value) {
|
|
105
|
+
if (this.#componentData.allowedInputNames.includes(key)) {
|
|
106
|
+
this.componentRef.setInput(key, value);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setOutputs(outputs) {
|
|
110
|
+
this.#outputRegistry.unsubscribeAll();
|
|
111
|
+
for (const prop in outputs) {
|
|
112
|
+
this.setOutput(prop, outputs[prop]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
setOutput(outputName, emit) {
|
|
116
|
+
if (!this.#componentData.allowedOutputNames.includes(outputName))
|
|
117
|
+
return;
|
|
118
|
+
if (!emit) {
|
|
119
|
+
this.#outputRegistry.unsubscribe(outputName);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const hasListener = this.#outputRegistry.hasListener(outputName);
|
|
123
|
+
this.#outputRegistry.setListener(outputName, emit);
|
|
124
|
+
if (hasListener) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const instance = this.componentRef.instance;
|
|
128
|
+
const output = instance[outputName];
|
|
129
|
+
if (output && output instanceof OutputEmitterRef) {
|
|
130
|
+
output.subscribe(value => {
|
|
131
|
+
this.#outputRegistry.getListener(outputName)?.(value);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
class FlexRenderComponentOutputManager {
|
|
137
|
+
#outputSubscribers = {};
|
|
138
|
+
#outputListeners = {};
|
|
139
|
+
#valueDiffer;
|
|
140
|
+
constructor(keyValueDiffers, initialOutputs) {
|
|
141
|
+
this.#valueDiffer = keyValueDiffers.find(initialOutputs).create();
|
|
142
|
+
if (initialOutputs) {
|
|
143
|
+
this.#valueDiffer.diff(initialOutputs);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
hasListener(outputName) {
|
|
147
|
+
return outputName in this.#outputListeners;
|
|
148
|
+
}
|
|
149
|
+
setListener(outputName, callback) {
|
|
150
|
+
this.#outputListeners[outputName] = callback;
|
|
151
|
+
}
|
|
152
|
+
getListener(outputName) {
|
|
153
|
+
return this.#outputListeners[outputName];
|
|
154
|
+
}
|
|
155
|
+
unsubscribeAll() {
|
|
156
|
+
for (const prop in this.#outputSubscribers) {
|
|
157
|
+
this.unsubscribe(prop);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
unsubscribe(outputName) {
|
|
161
|
+
if (outputName in this.#outputSubscribers) {
|
|
162
|
+
this.#outputSubscribers[outputName]?.unsubscribe();
|
|
163
|
+
delete this.#outputSubscribers[outputName];
|
|
164
|
+
delete this.#outputListeners[outputName];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
diff(outputs) {
|
|
168
|
+
return this.#valueDiffer.diff(outputs ?? {});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXItY29tcG9uZW50LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlLnV0aWxzL2ZsZXgtcmVuZGVyL2ZsZXgtcmVuZGVyLWNvbXBvbmVudC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixNQUFNLEVBQ04sVUFBVSxFQUdWLGVBQWUsRUFDZixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBOztBQUl0QixNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTVDLGVBQWUsQ0FDYixtQkFBMkMsRUFDM0MsaUJBQTJCO1FBRTNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3pELG1CQUFtQixDQUFDLFNBQVMsRUFDN0I7WUFDRSxRQUFRLEVBQUUsaUJBQWlCO1NBQzVCLENBQ0YsQ0FBQTtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksc0JBQXNCLENBQ3JDLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsaUJBQWlCLENBQ2xCLENBQUE7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLG1CQUFtQixDQUFBO1FBRS9DLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEMsSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVyQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7OEdBekJVLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOztBQTZCWCxNQUFNLE9BQU8sc0JBQXNCO0lB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LENBQUE7WUFDMUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsT0FBc0U7UUFDekUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUE7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgT3V0cHV0UmVmU3Vic2NyaXB0aW9uLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRmxleFJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vZmxleC1yZW5kZXItY29tcG9uZW50J1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudEZhY3Rvcnkge1xuICAjdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuXG4gIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFQ+LFxuICAgIGNvbXBvbmVudEluamVjdG9yOiBJbmplY3RvclxuICApOiBGbGV4UmVuZGVyQ29tcG9uZW50UmVmPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLiN2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIGZsZXhSZW5kZXJDb21wb25lbnQuY29tcG9uZW50LFxuICAgICAge1xuICAgICAgICBpbmplY3RvcjogY29tcG9uZW50SW5qZWN0b3IsXG4gICAgICB9XG4gICAgKVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgRmxleFJlbmRlckNvbXBvbmVudFJlZihcbiAgICAgIGNvbXBvbmVudFJlZixcbiAgICAgIGZsZXhSZW5kZXJDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRJbmplY3RvclxuICAgIClcblxuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzIH0gPSBmbGV4UmVuZGVyQ29tcG9uZW50XG5cbiAgICBpZiAoaW5wdXRzKSB2aWV3LnNldElucHV0cyhpbnB1dHMpXG4gICAgaWYgKG91dHB1dHMpIHZpZXcuc2V0T3V0cHV0cyhvdXRwdXRzKVxuXG4gICAgcmV0dXJuIHZpZXdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudFJlZjxUPiB7XG4gIHJlYWRvbmx5ICNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5OiBLZXlWYWx1ZURpZmZlcnNcbiAgI2NvbXBvbmVudERhdGE6IEZsZXhSZW5kZXJDb21wb25lbnQ8VD5cbiAgI2lucHV0VmFsdWVEaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgdW5rbm93bj5cblxuICByZWFkb25seSAjb3V0cHV0UmVnaXN0cnk6IEZsZXhSZW5kZXJDb21wb25lbnRPdXRwdXRNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sXG4gICAgY29tcG9uZW50RGF0YTogRmxleFJlbmRlckNvbXBvbmVudDxUPixcbiAgICByZWFkb25seSBjb21wb25lbnRJbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy4jY29tcG9uZW50RGF0YSA9IGNvbXBvbmVudERhdGFcbiAgICB0aGlzLiNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5ID0gY29tcG9uZW50SW5qZWN0b3IuZ2V0KEtleVZhbHVlRGlmZmVycylcblxuICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5ID0gbmV3IEZsZXhSZW5kZXJDb21wb25lbnRPdXRwdXRNYW5hZ2VyKFxuICAgICAgdGhpcy4ja2V5VmFsdWVEaWZmZXJzRmFjdG9yeSxcbiAgICAgIHRoaXMub3V0cHV0c1xuICAgIClcblxuICAgIHRoaXMuI2lucHV0VmFsdWVEaWZmZXIgPSB0aGlzLiNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5XG4gICAgICAuZmluZCh0aGlzLmlucHV0cylcbiAgICAgIC5jcmVhdGUoKVxuICAgIHRoaXMuI2lucHV0VmFsdWVEaWZmZXIuZGlmZih0aGlzLmlucHV0cylcblxuICAgIHRoaXMuY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLiNvdXRwdXRSZWdpc3RyeS51bnN1YnNjcmliZUFsbCgpKVxuICB9XG5cbiAgZ2V0IGNvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50RGF0YS5jb21wb25lbnRcbiAgfVxuXG4gIGdldCBpbnB1dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbXBvbmVudERhdGEuaW5wdXRzID8/IHt9XG4gIH1cblxuICBnZXQgb3V0cHV0cygpIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50RGF0YS5vdXRwdXRzID8/IHt9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbXBvbmVudCBpbnB1dCBhbmQgb3V0cHV0IGRpZmYgYnkgdGhlIGdpdmVuIGl0ZW1cbiAgICovXG4gIGRpZmYoaXRlbTogRmxleFJlbmRlckNvbXBvbmVudDxUPikge1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dERpZmY6IHRoaXMuI2lucHV0VmFsdWVEaWZmZXIuZGlmZihpdGVtLmlucHV0cyA/PyB7fSksXG4gICAgICBvdXRwdXREaWZmOiB0aGlzLiNvdXRwdXRSZWdpc3RyeS5kaWZmKGl0ZW0ub3V0cHV0cyA/PyB7fSksXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29tcGFyZSBXaGV0aGVyIHRoZSBjdXJyZW50IHJlZiBjb21wb25lbnQgaW5zdGFuY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGdpdmVuIG9uZVxuICAgKi9cbiAgZXFUeXBlKGNvbXBhcmU6IEZsZXhSZW5kZXJDb21wb25lbnQ8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29tcGFyZS5jb21wb25lbnQgPT09IHRoaXMuY29tcG9uZW50XG4gIH1cblxuICAvKipcbiAgICogVHJpZXMgdG8gdXBkYXRlIGN1cnJlbnQgY29tcG9uZW50IHJlZnMgaW5wdXQgYnkgdGhlIG5ldyBnaXZlbiBjb250ZW50IGNvbXBvbmVudC5cbiAgICovXG4gIHVwZGF0ZShjb250ZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFQ+KSB7XG4gICAgY29uc3QgZXEgPSB0aGlzLmVxVHlwZShjb250ZW50KVxuICAgIGlmICghZXEpIHJldHVyblxuICAgIGNvbnN0IHsgaW5wdXREaWZmLCBvdXRwdXREaWZmIH0gPSB0aGlzLmRpZmYoY29udGVudClcbiAgICBpZiAoaW5wdXREaWZmKSB7XG4gICAgICBpbnB1dERpZmYuZm9yRWFjaEFkZGVkSXRlbShpdGVtID0+XG4gICAgICAgIHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgKVxuICAgICAgaW5wdXREaWZmLmZvckVhY2hDaGFuZ2VkSXRlbShpdGVtID0+XG4gICAgICAgIHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgKVxuICAgICAgaW5wdXREaWZmLmZvckVhY2hSZW1vdmVkSXRlbShpdGVtID0+IHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIHVuZGVmaW5lZCkpXG4gICAgfVxuICAgIGlmIChvdXRwdXREaWZmKSB7XG4gICAgICBvdXRwdXREaWZmLmZvckVhY2hBZGRlZEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3V0cHV0KGl0ZW0ua2V5LCBpdGVtLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH0pXG4gICAgICBvdXRwdXREaWZmLmZvckVhY2hDaGFuZ2VkSXRlbShpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkuc2V0TGlzdGVuZXIoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKGl0ZW0ua2V5KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgb3V0cHV0RGlmZi5mb3JFYWNoUmVtb3ZlZEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKGl0ZW0ua2V5KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLiNjb21wb25lbnREYXRhID0gY29udGVudFxuICB9XG5cbiAgbWFya0FzRGlydHkoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgc2V0SW5wdXRzKGlucHV0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gaW5wdXRzKSB7XG4gICAgICB0aGlzLnNldElucHV0KHByb3AsIGlucHV0c1twcm9wXSlcbiAgICB9XG4gIH1cblxuICBzZXRJbnB1dChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAodGhpcy4jY29tcG9uZW50RGF0YS5hbGxvd2VkSW5wdXROYW1lcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHNldE91dHB1dHMoXG4gICAgb3V0cHV0czogUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgT3V0cHV0RW1pdHRlclJlZjx1bmtub3duPlsnZW1pdCddIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgID5cbiAgKSB7XG4gICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkudW5zdWJzY3JpYmVBbGwoKVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvdXRwdXRzKSB7XG4gICAgICB0aGlzLnNldE91dHB1dChwcm9wLCBvdXRwdXRzW3Byb3BdKVxuICAgIH1cbiAgfVxuXG4gIHNldE91dHB1dChcbiAgICBvdXRwdXROYW1lOiBzdHJpbmcsXG4gICAgZW1pdDogT3V0cHV0RW1pdHRlclJlZjx1bmtub3duPlsnZW1pdCddIHwgdW5kZWZpbmVkIHwgbnVsbFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2NvbXBvbmVudERhdGEuYWxsb3dlZE91dHB1dE5hbWVzLmluY2x1ZGVzKG91dHB1dE5hbWUpKSByZXR1cm5cbiAgICBpZiAoIWVtaXQpIHtcbiAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKG91dHB1dE5hbWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBoYXNMaXN0ZW5lciA9IHRoaXMuI291dHB1dFJlZ2lzdHJ5Lmhhc0xpc3RlbmVyKG91dHB1dE5hbWUpXG4gICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkuc2V0TGlzdGVuZXIob3V0cHV0TmFtZSwgZW1pdClcblxuICAgIGlmIChoYXNMaXN0ZW5lcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVxuICAgIGNvbnN0IG91dHB1dCA9IGluc3RhbmNlW291dHB1dE5hbWUgYXMga2V5b2YgdHlwZW9mIGluc3RhbmNlXVxuICAgIGlmIChvdXRwdXQgJiYgb3V0cHV0IGluc3RhbmNlb2YgT3V0cHV0RW1pdHRlclJlZikge1xuICAgICAgb3V0cHV0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LmdldExpc3RlbmVyKG91dHB1dE5hbWUpPy4odmFsdWUpXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50T3V0cHV0TWFuYWdlciB7XG4gIHJlYWRvbmx5ICNvdXRwdXRTdWJzY3JpYmVyczogUmVjb3JkPHN0cmluZywgT3V0cHV0UmVmU3Vic2NyaXB0aW9uPiA9IHt9XG4gIHJlYWRvbmx5ICNvdXRwdXRMaXN0ZW5lcnM6IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4gPSB7fVxuXG4gIHJlYWRvbmx5ICN2YWx1ZURpZmZlcjogS2V5VmFsdWVEaWZmZXI8XG4gICAgc3RyaW5nLFxuICAgIHVuZGVmaW5lZCB8IG51bGwgfCBPdXRwdXRFbWl0dGVyUmVmPHVua25vd24+WydlbWl0J11cbiAgPlxuXG4gIGNvbnN0cnVjdG9yKGtleVZhbHVlRGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLCBpbml0aWFsT3V0cHV0czogYW55KSB7XG4gICAgdGhpcy4jdmFsdWVEaWZmZXIgPSBrZXlWYWx1ZURpZmZlcnMuZmluZChpbml0aWFsT3V0cHV0cykuY3JlYXRlKClcbiAgICBpZiAoaW5pdGlhbE91dHB1dHMpIHtcbiAgICAgIHRoaXMuI3ZhbHVlRGlmZmVyLmRpZmYoaW5pdGlhbE91dHB1dHMpXG4gICAgfVxuICB9XG5cbiAgaGFzTGlzdGVuZXIob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG91dHB1dE5hbWUgaW4gdGhpcy4jb3V0cHV0TGlzdGVuZXJzXG4gIH1cblxuICBzZXRMaXN0ZW5lcihvdXRwdXROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICB0aGlzLiNvdXRwdXRMaXN0ZW5lcnNbb3V0cHV0TmFtZV0gPSBjYWxsYmFja1xuICB9XG5cbiAgZ2V0TGlzdGVuZXIob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI291dHB1dExpc3RlbmVyc1tvdXRwdXROYW1lXVxuICB9XG5cbiAgdW5zdWJzY3JpYmVBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMuI291dHB1dFN1YnNjcmliZXJzKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHByb3ApXG4gICAgfVxuICB9XG5cbiAgdW5zdWJzY3JpYmUob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKG91dHB1dE5hbWUgaW4gdGhpcy4jb3V0cHV0U3Vic2NyaWJlcnMpIHtcbiAgICAgIHRoaXMuI291dHB1dFN1YnNjcmliZXJzW291dHB1dE5hbWVdPy51bnN1YnNjcmliZSgpXG4gICAgICBkZWxldGUgdGhpcy4jb3V0cHV0U3Vic2NyaWJlcnNbb3V0cHV0TmFtZV1cbiAgICAgIGRlbGV0ZSB0aGlzLiNvdXRwdXRMaXN0ZW5lcnNbb3V0cHV0TmFtZV1cbiAgICB9XG4gIH1cblxuICBkaWZmKG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIE91dHB1dEVtaXR0ZXJSZWY8dW5rbm93bj5bJ2VtaXQnXSB8IHVuZGVmaW5lZD4pIHtcbiAgICByZXR1cm4gdGhpcy4jdmFsdWVEaWZmZXIuZGlmZihvdXRwdXRzID8/IHt9KVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { reflectComponentType, } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Helper function to create a [@link FlexRenderComponent] instance, with better type-safety.
|
|
4
|
+
*
|
|
5
|
+
* - options object must be passed when the given component instance contains at least one required signal input.
|
|
6
|
+
* - options/inputs is typed with the given component inputs
|
|
7
|
+
* - options/outputs is typed with the given component outputs
|
|
8
|
+
*/
|
|
9
|
+
export function flexRenderComponent(component, ...options) {
|
|
10
|
+
const { inputs, injector, outputs } = options?.[0] ?? {};
|
|
11
|
+
return new FlexRenderComponent(component, inputs, injector, outputs);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Wrapper class for a component that will be used as content for {@link FlexRenderDirective}
|
|
15
|
+
*
|
|
16
|
+
* Prefer {@link flexRenderComponent} helper for better type-safety
|
|
17
|
+
*/
|
|
18
|
+
export class FlexRenderComponent {
|
|
19
|
+
constructor(component, inputs, injector, outputs) {
|
|
20
|
+
this.component = component;
|
|
21
|
+
this.inputs = inputs;
|
|
22
|
+
this.injector = injector;
|
|
23
|
+
this.outputs = outputs;
|
|
24
|
+
this.allowedInputNames = [];
|
|
25
|
+
this.allowedOutputNames = [];
|
|
26
|
+
const mirror = reflectComponentType(component);
|
|
27
|
+
if (!mirror) {
|
|
28
|
+
throw new Error(`[@tanstack-table/angular] The provided symbol is not a component`);
|
|
29
|
+
}
|
|
30
|
+
this.mirror = mirror;
|
|
31
|
+
for (const input of this.mirror.inputs) {
|
|
32
|
+
this.allowedInputNames.push(input.propName);
|
|
33
|
+
}
|
|
34
|
+
for (const output of this.mirror.outputs) {
|
|
35
|
+
this.allowedOutputNames.push(output.propName);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92YS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRhdGFibGUudXRpbHMvZmxleC1yZW5kZXIvZmxleC1yZW5kZXItY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxvQkFBb0IsR0FFckIsTUFBTSxlQUFlLENBQUE7QUE0RHRCOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FLakMsU0FBMkIsRUFDM0IsR0FBRyxPQUUrQztJQUVsRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEQsT0FBTyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3RFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUNXLFNBQTJCLEVBQzNCLE1BQTJCLEVBQzNCLFFBQW1CLEVBQ25CLE9BQTZCO1FBSDdCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFQL0Isc0JBQWlCLEdBQWEsRUFBRSxDQUFBO1FBQ2hDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQTtRQVF4QyxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFBO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9DLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRNaXJyb3IsXG4gIEluamVjdG9yLFxuICBJbnB1dFNpZ25hbCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgcmVmbGVjdENvbXBvbmVudFR5cGUsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbnR5cGUgSW5wdXRzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyBJbnB1dFNpZ25hbDxpbmZlciBSPlxuICAgID8gS1xuICAgIDogbmV2ZXJdPzogVFtLXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFI+ID8gUiA6IG5ldmVyXG59XG5cbnR5cGUgT3V0cHV0czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCBhcyBUW0tdIGV4dGVuZHMgT3V0cHV0RW1pdHRlclJlZjxpbmZlciBSPlxuICAgID8gS1xuICAgIDogbmV2ZXJdPzogVFtLXSBleHRlbmRzIE91dHB1dEVtaXR0ZXJSZWY8aW5mZXIgUj5cbiAgICA/IE91dHB1dEVtaXR0ZXJSZWY8Uj5bJ2VtaXQnXVxuICAgIDogbmV2ZXJcbn1cblxudHlwZSBPcHRpb25hbEtleXM8VCwgSyA9IGtleW9mIFQ+ID0gSyBleHRlbmRzIGtleW9mIFRcbiAgPyBUW0tdIGV4dGVuZHMgUmVxdWlyZWQ8VD5bS11cbiAgICA/IHVuZGVmaW5lZCBleHRlbmRzIFRbS11cbiAgICAgID8gS1xuICAgICAgOiBuZXZlclxuICAgIDogS1xuICA6IG5ldmVyXG5cbmludGVyZmFjZSBGbGV4UmVuZGVyUmVxdWlyZWRPcHRpb25zPFxuICBUSW5wdXRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVE91dHB1dHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuPiB7XG4gIC8qKlxuICAgKiBDb21wb25lbnQgaW5zdGFuY2UgaW5wdXRzLiBUaGV5IHdpbGwgYmUgc2V0IHZpYSBbY29tcG9uZW50UmVmLnNldElucHV0IEFQSV0oaHR0cHM6Ly9hbmd1bGFyLmRldi9hcGkvY29yZS9Db21wb25lbnRSZWYjc2V0SW5wdXQpXG4gICAqL1xuICBpbnB1dHM6IFRJbnB1dHNcbiAgLyoqXG4gICAqIENvbXBvbmVudCBpbnN0YW5jZSBvdXRwdXRzLlxuICAgKi9cbiAgb3V0cHV0cz86IFRPdXRwdXRzXG4gIC8qKlxuICAgKiBPcHRpb25hbCB7QGxpbmsgSW5qZWN0b3J9IHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gcmVuZGVyaW5nIHRoZSBjb21wb25lbnRcbiAgICovXG4gIGluamVjdG9yPzogSW5qZWN0b3Jcbn1cblxuaW50ZXJmYWNlIEZsZXhSZW5kZXJPcHRpb25zPFxuICBUSW5wdXRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVE91dHB1dHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuPiB7XG4gIC8qKlxuICAgKiBDb21wb25lbnQgaW5zdGFuY2UgaW5wdXRzLiBUaGV5IHdpbGwgYmUgc2V0IHZpYSBbY29tcG9uZW50UmVmLnNldElucHV0IEFQSV0oaHR0cHM6Ly9hbmd1bGFyLmRldi9hcGkvY29yZS9Db21wb25lbnRSZWYjc2V0SW5wdXQpXG4gICAqL1xuICBpbnB1dHM/OiBUSW5wdXRzXG4gIC8qKlxuICAgKiBDb21wb25lbnQgaW5zdGFuY2Ugb3V0cHV0cy5cbiAgICovXG4gIG91dHB1dHM/OiBUT3V0cHV0c1xuICAvKipcbiAgICogT3B0aW9uYWwge0BsaW5rIEluamVjdG9yfSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyB0aGUgY29tcG9uZW50XG4gICAqL1xuICBpbmplY3Rvcj86IEluamVjdG9yXG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFtAbGluayBGbGV4UmVuZGVyQ29tcG9uZW50XSBpbnN0YW5jZSwgd2l0aCBiZXR0ZXIgdHlwZS1zYWZldHkuXG4gKlxuICogLSBvcHRpb25zIG9iamVjdCBtdXN0IGJlIHBhc3NlZCB3aGVuIHRoZSBnaXZlbiBjb21wb25lbnQgaW5zdGFuY2UgY29udGFpbnMgYXQgbGVhc3Qgb25lIHJlcXVpcmVkIHNpZ25hbCBpbnB1dC5cbiAqIC0gb3B0aW9ucy9pbnB1dHMgaXMgdHlwZWQgd2l0aCB0aGUgZ2l2ZW4gY29tcG9uZW50IGlucHV0c1xuICogLSBvcHRpb25zL291dHB1dHMgaXMgdHlwZWQgd2l0aCB0aGUgZ2l2ZW4gY29tcG9uZW50IG91dHB1dHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsZXhSZW5kZXJDb21wb25lbnQ8XG4gIFRDb21wb25lbnQgPSBhbnksXG4gIFRJbnB1dHMgZXh0ZW5kcyBJbnB1dHM8VENvbXBvbmVudD4gPSBJbnB1dHM8VENvbXBvbmVudD4sXG4gIFRPdXRwdXRzIGV4dGVuZHMgT3V0cHV0czxUQ29tcG9uZW50PiA9IE91dHB1dHM8VENvbXBvbmVudD4sXG4+KFxuICBjb21wb25lbnQ6IFR5cGU8VENvbXBvbmVudD4sXG4gIC4uLm9wdGlvbnM6IE9wdGlvbmFsS2V5czxUSW5wdXRzPiBleHRlbmRzIG5ldmVyXG4gICAgPyBbRmxleFJlbmRlck9wdGlvbnM8VElucHV0cywgVE91dHB1dHM+P11cbiAgICA6IFtGbGV4UmVuZGVyUmVxdWlyZWRPcHRpb25zPFRJbnB1dHMsIFRPdXRwdXRzPl1cbikge1xuICBjb25zdCB7IGlucHV0cywgaW5qZWN0b3IsIG91dHB1dHMgfSA9IG9wdGlvbnM/LlswXSA/PyB7fVxuICByZXR1cm4gbmV3IEZsZXhSZW5kZXJDb21wb25lbnQoY29tcG9uZW50LCBpbnB1dHMsIGluamVjdG9yLCBvdXRwdXRzKVxufVxuXG4vKipcbiAqIFdyYXBwZXIgY2xhc3MgZm9yIGEgY29tcG9uZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzIGNvbnRlbnQgZm9yIHtAbGluayBGbGV4UmVuZGVyRGlyZWN0aXZlfVxuICpcbiAqIFByZWZlciB7QGxpbmsgZmxleFJlbmRlckNvbXBvbmVudH0gaGVscGVyIGZvciBiZXR0ZXIgdHlwZS1zYWZldHlcbiAqL1xuZXhwb3J0IGNsYXNzIEZsZXhSZW5kZXJDb21wb25lbnQ8VENvbXBvbmVudCA9IGFueT4ge1xuICByZWFkb25seSBtaXJyb3I6IENvbXBvbmVudE1pcnJvcjxUQ29tcG9uZW50PlxuICByZWFkb25seSBhbGxvd2VkSW5wdXROYW1lczogc3RyaW5nW10gPSBbXVxuICByZWFkb25seSBhbGxvd2VkT3V0cHV0TmFtZXM6IHN0cmluZ1tdID0gW11cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8VENvbXBvbmVudD4sXG4gICAgcmVhZG9ubHkgaW5wdXRzPzogSW5wdXRzPFRDb21wb25lbnQ+LFxuICAgIHJlYWRvbmx5IGluamVjdG9yPzogSW5qZWN0b3IsXG4gICAgcmVhZG9ubHkgb3V0cHV0cz86IE91dHB1dHM8VENvbXBvbmVudD5cbiAgKSB7XG4gICAgY29uc3QgbWlycm9yID0gcmVmbGVjdENvbXBvbmVudFR5cGUoY29tcG9uZW50KVxuICAgIGlmICghbWlycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBbQHRhbnN0YWNrLXRhYmxlL2FuZ3VsYXJdIFRoZSBwcm92aWRlZCBzeW1ib2wgaXMgbm90IGEgY29tcG9uZW50YFxuICAgICAgKVxuICAgIH1cbiAgICB0aGlzLm1pcnJvciA9IG1pcnJvclxuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdGhpcy5taXJyb3IuaW5wdXRzKSB7XG4gICAgICB0aGlzLmFsbG93ZWRJbnB1dE5hbWVzLnB1c2goaW5wdXQucHJvcE5hbWUpXG4gICAgfVxuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRoaXMubWlycm9yLm91dHB1dHMpIHtcbiAgICAgIHRoaXMuYWxsb3dlZE91dHB1dE5hbWVzLnB1c2gob3V0cHV0LnByb3BOYW1lKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { TemplateRef, Type } from '@angular/core';
|
|
2
|
+
import { FlexRenderComponent } from './flex-render-component';
|
|
3
|
+
export function mapToFlexRenderTypedContent(content) {
|
|
4
|
+
if (content === null || content === undefined) {
|
|
5
|
+
return { kind: 'null' };
|
|
6
|
+
}
|
|
7
|
+
if (typeof content === 'string' || typeof content === 'number') {
|
|
8
|
+
return { kind: 'primitive', content };
|
|
9
|
+
}
|
|
10
|
+
if (content instanceof FlexRenderComponent) {
|
|
11
|
+
return { kind: 'flexRenderComponent', content };
|
|
12
|
+
}
|
|
13
|
+
else if (content instanceof TemplateRef) {
|
|
14
|
+
return { kind: 'templateRef', content };
|
|
15
|
+
}
|
|
16
|
+
else if (content instanceof Type) {
|
|
17
|
+
return { kind: 'component', content };
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return { kind: 'primitive', content };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class FlexRenderView {
|
|
24
|
+
#previousContent;
|
|
25
|
+
#content;
|
|
26
|
+
constructor(initialContent, view) {
|
|
27
|
+
this.#content = initialContent;
|
|
28
|
+
this.view = view;
|
|
29
|
+
}
|
|
30
|
+
get previousContent() {
|
|
31
|
+
return this.#previousContent ?? { kind: 'null' };
|
|
32
|
+
}
|
|
33
|
+
get content() {
|
|
34
|
+
return this.#content;
|
|
35
|
+
}
|
|
36
|
+
set content(content) {
|
|
37
|
+
this.#previousContent = this.#content;
|
|
38
|
+
this.#content = content;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class FlexRenderTemplateView extends FlexRenderView {
|
|
42
|
+
constructor(initialContent, view) {
|
|
43
|
+
super(initialContent, view);
|
|
44
|
+
}
|
|
45
|
+
updateProps(props) {
|
|
46
|
+
this.view.markForCheck();
|
|
47
|
+
}
|
|
48
|
+
dirtyCheck() {
|
|
49
|
+
// Basically a no-op. When the view is created via EmbeddedViewRef, we don't need to do any manual update
|
|
50
|
+
// since this type of content has a proxy as a context, then every time the root component is checked for changes,
|
|
51
|
+
// the property getter will be re-evaluated.
|
|
52
|
+
//
|
|
53
|
+
// If in a future we need to manually mark the view as dirty, just uncomment next line
|
|
54
|
+
// this.view.markForCheck()
|
|
55
|
+
}
|
|
56
|
+
onDestroy(callback) {
|
|
57
|
+
this.view.onDestroy(callback);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export class FlexRenderComponentView extends FlexRenderView {
|
|
61
|
+
constructor(initialContent, view) {
|
|
62
|
+
super(initialContent, view);
|
|
63
|
+
}
|
|
64
|
+
updateProps(props) {
|
|
65
|
+
switch (this.content.kind) {
|
|
66
|
+
case 'component': {
|
|
67
|
+
this.view.setInputs(props);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case 'flexRenderComponent': {
|
|
71
|
+
// No-op. When FlexRenderFlags.PropsReferenceChanged is set,
|
|
72
|
+
// FlexRenderComponent will be updated into `dirtyCheck`.
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
dirtyCheck() {
|
|
78
|
+
switch (this.content.kind) {
|
|
79
|
+
case 'component': {
|
|
80
|
+
// Component context is currently valuated with the cell context. Since it's reference
|
|
81
|
+
// shouldn't change, we force mark the component as dirty in order to re-evaluate function invocation in view.
|
|
82
|
+
// NOTE: this should behave like having a component with ChangeDetectionStrategy.Default
|
|
83
|
+
this.view.markAsDirty();
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'flexRenderComponent': {
|
|
87
|
+
// Given context instance will always have a different reference than the previous one,
|
|
88
|
+
// so instead of recreating the entire view, we will only update the current view
|
|
89
|
+
if (this.view.eqType(this.content.content)) {
|
|
90
|
+
this.view.update(this.content.content);
|
|
91
|
+
}
|
|
92
|
+
this.view.markAsDirty();
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
onDestroy(callback) {
|
|
98
|
+
this.view.componentRef.onDestroy(callback);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlLnV0aWxzL2ZsZXgtcmVuZGVyL3ZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFtQixXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBWTdELE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsT0FBK0I7SUFFL0IsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMvRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUN2QyxDQUFDO0lBQ0QsSUFBSSxPQUFPLFlBQVksbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ2pELENBQUM7U0FBTSxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUN6QyxDQUFDO1NBQU0sSUFBSSxPQUFPLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDbkMsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUE7SUFDdkMsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUs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O0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsZXhSZW5kZXJDb21wb25lbnRSZWYgfSBmcm9tICcuL2ZsZXgtcmVuZGVyLWNvbXBvbmVudC1yZWYnXG5pbXBvcnQgeyBFbWJlZGRlZFZpZXdSZWYsIFRlbXBsYXRlUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHsgRmxleFJlbmRlckNvbnRlbnQgfSBmcm9tICcuLi9mbGV4LXJlbmRlcidcbmltcG9ydCB7IEZsZXhSZW5kZXJDb21wb25lbnQgfSBmcm9tICcuL2ZsZXgtcmVuZGVyLWNvbXBvbmVudCdcblxuZXhwb3J0IHR5cGUgRmxleFJlbmRlclR5cGVkQ29udGVudCA9XG4gIHwgeyBraW5kOiAnbnVsbCcgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdwcmltaXRpdmUnXG4gICAgICBjb250ZW50OiBzdHJpbmcgfCBudW1iZXIgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgfVxuICB8IHsga2luZDogJ2ZsZXhSZW5kZXJDb21wb25lbnQnOyBjb250ZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PHVua25vd24+IH1cbiAgfCB7IGtpbmQ6ICd0ZW1wbGF0ZVJlZic7IGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHVua25vd24+IH1cbiAgfCB7IGtpbmQ6ICdjb21wb25lbnQnOyBjb250ZW50OiBUeXBlPHVua25vd24+IH1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvRmxleFJlbmRlclR5cGVkQ29udGVudChcbiAgY29udGVudDogRmxleFJlbmRlckNvbnRlbnQ8YW55PlxuKTogRmxleFJlbmRlclR5cGVkQ29udGVudCB7XG4gIGlmIChjb250ZW50ID09PSBudWxsIHx8IGNvbnRlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IGtpbmQ6ICdudWxsJyB9XG4gIH1cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4geyBraW5kOiAncHJpbWl0aXZlJywgY29udGVudCB9XG4gIH1cbiAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBGbGV4UmVuZGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHsga2luZDogJ2ZsZXhSZW5kZXJDb21wb25lbnQnLCBjb250ZW50IH1cbiAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICByZXR1cm4geyBraW5kOiAndGVtcGxhdGVSZWYnLCBjb250ZW50IH1cbiAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgVHlwZSkge1xuICAgIHJldHVybiB7IGtpbmQ6ICdjb21wb25lbnQnLCBjb250ZW50IH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBraW5kOiAncHJpbWl0aXZlJywgY29udGVudCB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZsZXhSZW5kZXJWaWV3PFxuICBUVmlldyBleHRlbmRzIEZsZXhSZW5kZXJDb21wb25lbnRSZWY8YW55PiB8IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPiB8IG51bGwsXG4+IHtcbiAgcmVhZG9ubHkgdmlldzogVFZpZXdcbiAgI3ByZXZpb3VzQ29udGVudDogRmxleFJlbmRlclR5cGVkQ29udGVudCB8IHVuZGVmaW5lZFxuICAjY29udGVudDogRmxleFJlbmRlclR5cGVkQ29udGVudFxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBpbml0aWFsQ29udGVudDogRXhjbHVkZTxGbGV4UmVuZGVyVHlwZWRDb250ZW50LCB7IGtpbmQ6ICdudWxsJyB9PixcbiAgICB2aWV3OiBUVmlld1xuICApIHtcbiAgICB0aGlzLiNjb250ZW50ID0gaW5pdGlhbENvbnRlbnRcbiAgICB0aGlzLnZpZXcgPSB2aWV3XG4gIH1cblxuICBnZXQgcHJldmlvdXNDb250ZW50KCk6IEZsZXhSZW5kZXJUeXBlZENvbnRlbnQge1xuICAgIHJldHVybiB0aGlzLiNwcmV2aW91c0NvbnRlbnQgPz8geyBraW5kOiAnbnVsbCcgfVxuICB9XG5cbiAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbnRlbnRcbiAgfVxuXG4gIHNldCBjb250ZW50KGNvbnRlbnQ6IEZsZXhSZW5kZXJUeXBlZENvbnRlbnQpIHtcbiAgICB0aGlzLiNwcmV2aW91c0NvbnRlbnQgPSB0aGlzLiNjb250ZW50XG4gICAgdGhpcy4jY29udGVudCA9IGNvbnRlbnRcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZVByb3BzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZFxuXG4gIGFic3RyYWN0IGRpcnR5Q2hlY2soKTogdm9pZFxuXG4gIGFic3RyYWN0IG9uRGVzdHJveShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkXG59XG5cbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyVGVtcGxhdGVWaWV3IGV4dGVuZHMgRmxleFJlbmRlclZpZXc8XG4gIEVtYmVkZGVkVmlld1JlZjx1bmtub3duPlxuPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGluaXRpYWxDb250ZW50OiBFeHRyYWN0PFxuICAgICAgRmxleFJlbmRlclR5cGVkQ29udGVudCxcbiAgICAgIHsga2luZDogJ3ByaW1pdGl2ZScgfCAndGVtcGxhdGVSZWYnIH1cbiAgICA+LFxuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPlxuICApIHtcbiAgICBzdXBlcihpbml0aWFsQ29udGVudCwgdmlldylcbiAgfVxuXG4gIG92ZXJyaWRlIHVwZGF0ZVByb3BzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy52aWV3Lm1hcmtGb3JDaGVjaygpXG4gIH1cblxuICBvdmVycmlkZSBkaXJ0eUNoZWNrKCkge1xuICAgIC8vIEJhc2ljYWxseSBhIG5vLW9wLiBXaGVuIHRoZSB2aWV3IGlzIGNyZWF0ZWQgdmlhIEVtYmVkZGVkVmlld1JlZiwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgbWFudWFsIHVwZGF0ZVxuICAgIC8vIHNpbmNlIHRoaXMgdHlwZSBvZiBjb250ZW50IGhhcyBhIHByb3h5IGFzIGEgY29udGV4dCwgdGhlbiBldmVyeSB0aW1lIHRoZSByb290IGNvbXBvbmVudCBpcyBjaGVja2VkIGZvciBjaGFuZ2VzLFxuICAgIC8vIHRoZSBwcm9wZXJ0eSBnZXR0ZXIgd2lsbCBiZSByZS1ldmFsdWF0ZWQuXG4gICAgLy9cbiAgICAvLyBJZiBpbiBhIGZ1dHVyZSB3ZSBuZWVkIHRvIG1hbnVhbGx5IG1hcmsgdGhlIHZpZXcgYXMgZGlydHksIGp1c3QgdW5jb21tZW50IG5leHQgbGluZVxuICAgIC8vIHRoaXMudmlldy5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMudmlldy5vbkRlc3Ryb3koY2FsbGJhY2spXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsZXhSZW5kZXJDb21wb25lbnRWaWV3IGV4dGVuZHMgRmxleFJlbmRlclZpZXc8XG4gIEZsZXhSZW5kZXJDb21wb25lbnRSZWY8dW5rbm93bj5cbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBpbml0aWFsQ29udGVudDogRXh0cmFjdDxcbiAgICAgIEZsZXhSZW5kZXJUeXBlZENvbnRlbnQsXG4gICAgICB7IGtpbmQ6ICdjb21wb25lbnQnIHwgJ2ZsZXhSZW5kZXJDb21wb25lbnQnIH1cbiAgICA+LFxuICAgIHZpZXc6IEZsZXhSZW5kZXJDb21wb25lbnRSZWY8dW5rbm93bj5cbiAgKSB7XG4gICAgc3VwZXIoaW5pdGlhbENvbnRlbnQsIHZpZXcpXG4gIH1cblxuICBvdmVycmlkZSB1cGRhdGVQcm9wcyhwcm9wczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN3aXRjaCAodGhpcy5jb250ZW50LmtpbmQpIHtcbiAgICAgIGNhc2UgJ2NvbXBvbmVudCc6IHtcbiAgICAgICAgdGhpcy52aWV3LnNldElucHV0cyhwcm9wcylcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ZsZXhSZW5kZXJDb21wb25lbnQnOiB7XG4gICAgICAgIC8vIE5vLW9wLiBXaGVuIEZsZXhSZW5kZXJGbGFncy5Qcm9wc1JlZmVyZW5jZUNoYW5nZWQgaXMgc2V0LFxuICAgICAgICAvLyBGbGV4UmVuZGVyQ29tcG9uZW50IHdpbGwgYmUgdXBkYXRlZCBpbnRvIGBkaXJ0eUNoZWNrYC5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBkaXJ0eUNoZWNrKCkge1xuICAgIHN3aXRjaCAodGhpcy5jb250ZW50LmtpbmQpIHtcbiAgICAgIGNhc2UgJ2NvbXBvbmVudCc6IHtcbiAgICAgICAgLy8gQ29tcG9uZW50IGNvbnRleHQgaXMgY3VycmVudGx5IHZhbHVhdGVkIHdpdGggdGhlIGNlbGwgY29udGV4dC4gU2luY2UgaXQncyByZWZlcmVuY2VcbiAgICAgICAgLy8gc2hvdWxkbid0IGNoYW5nZSwgd2UgZm9yY2UgbWFyayB0aGUgY29tcG9uZW50IGFzIGRpcnR5IGluIG9yZGVyIHRvIHJlLWV2YWx1YXRlIGZ1bmN0aW9uIGludm9jYXRpb24gaW4gdmlldy5cbiAgICAgICAgLy8gTk9URTogdGhpcyBzaG91bGQgYmVoYXZlIGxpa2UgaGF2aW5nIGEgY29tcG9uZW50IHdpdGggQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxuICAgICAgICB0aGlzLnZpZXcubWFya0FzRGlydHkoKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnZmxleFJlbmRlckNvbXBvbmVudCc6IHtcbiAgICAgICAgLy8gR2l2ZW4gY29udGV4dCBpbnN0YW5jZSB3aWxsIGFsd2F5cyBoYXZlIGEgZGlmZmVyZW50IHJlZmVyZW5jZSB0aGFuIHRoZSBwcmV2aW91cyBvbmUsXG4gICAgICAgIC8vIHNvIGluc3RlYWQgb2YgcmVjcmVhdGluZyB0aGUgZW50aXJlIHZpZXcsIHdlIHdpbGwgb25seSB1cGRhdGUgdGhlIGN1cnJlbnQgdmlld1xuICAgICAgICBpZiAodGhpcy52aWV3LmVxVHlwZSh0aGlzLmNvbnRlbnQuY29udGVudCkpIHtcbiAgICAgICAgICB0aGlzLnZpZXcudXBkYXRlKHRoaXMuY29udGVudC5jb250ZW50KVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlldy5tYXJrQXNEaXJ0eSgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIHRoaXMudmlldy5jb21wb25lbnRSZWYub25EZXN0cm95KGNhbGxiYWNrKVxuICB9XG59XG4iXX0=
|