@node-projects/web-component-designer-visualization-addons 0.1.115 → 0.1.117
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.
|
@@ -8,7 +8,7 @@ export class BindingsEditor extends BaseCustomWebComponentConstructorAppend {
|
|
|
8
8
|
<div style="grid-column: 1/3">
|
|
9
9
|
<div style="display: flex; flex-direction: column;">
|
|
10
10
|
<div class="row">
|
|
11
|
-
<span style="cursor: pointer;" title="to use multiple objects, seprate them with semicolon (;)
|
|
11
|
+
<span style="cursor: pointer;" title="to use multiple objects, seprate them with semicolon (;).
Access signal objects in properties via ?propertyName, access the propertyValue via ??propertyName.
Access signal objects in properties of the target via #propertyName, access the propertyValue via ##propertyName.
Bind to signal configurations via $objectId.
You could also use signals inside of a Signal Name via {name}">objects</span>
|
|
12
12
|
</div>
|
|
13
13
|
<div id="groupObjectName" style="display:flex;align-items: flex-end;">
|
|
14
14
|
<input id="objectName" class="row" value="{{?this.objectNames::change}}" style="flex-grow: 1;">
|
|
@@ -2,7 +2,13 @@ import { VisualizationBinding } from "../interfaces/VisualizationBinding.js";
|
|
|
2
2
|
import { State, VisualizationHandler } from "../interfaces/VisualizationHandler.js";
|
|
3
3
|
import { BindingTarget } from "@node-projects/web-component-designer/dist/elements/item/BindingTarget.js";
|
|
4
4
|
export type SpecialValueHandler = {
|
|
5
|
-
valueProvider: (propertyName: string
|
|
5
|
+
valueProvider: (propertyName: string, context: {
|
|
6
|
+
element: Element;
|
|
7
|
+
binding: namedBinding;
|
|
8
|
+
relativeSignalPath: string;
|
|
9
|
+
root: HTMLElement;
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}) => any;
|
|
6
12
|
valueChangedCallbacks: Map<string, (() => void)[]>;
|
|
7
13
|
};
|
|
8
14
|
export declare const bindingPrefixProperty = "bind-prop:";
|
|
@@ -65,9 +65,16 @@ export class IndirectSignal {
|
|
|
65
65
|
this.handleValueChanged(root[nm.substring(2)], i);
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
68
|
+
else if (nm[0] === '#' && nm[1] === '#') {
|
|
69
|
+
this.handleValueChanged(element[nm.substring(2)], i);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
68
72
|
else if (nm[0] === '?') {
|
|
69
73
|
nm = root[nm.substring(1)];
|
|
70
74
|
}
|
|
75
|
+
else if (nm[0] === '#') {
|
|
76
|
+
nm = element[nm.substring(1)];
|
|
77
|
+
}
|
|
71
78
|
let cb = (id, value) => this.handleValueChanged(value.val, i);
|
|
72
79
|
this.unsubscribeList.push([cb, this.visualizationHandler.subscribeState(nm, cb)]);
|
|
73
80
|
}
|
|
@@ -578,6 +585,28 @@ export class BindingsHelper {
|
|
|
578
585
|
}
|
|
579
586
|
}
|
|
580
587
|
}
|
|
588
|
+
else if (sng[0] === '#') { //access object path in target element
|
|
589
|
+
let s = sng.substring(1);
|
|
590
|
+
if (s[0] == '#') {
|
|
591
|
+
signals[i] = s;
|
|
592
|
+
}
|
|
593
|
+
else {
|
|
594
|
+
signals[i] = root[s];
|
|
595
|
+
if (s[0] === '$') {
|
|
596
|
+
s = s.substring(1);
|
|
597
|
+
signals[i] = '$' + root[s];
|
|
598
|
+
}
|
|
599
|
+
let evtCallback = () => {
|
|
600
|
+
cleanUp();
|
|
601
|
+
this.applyBinding(element, binding, relativeSignalPath, root, specialValueHandler);
|
|
602
|
+
};
|
|
603
|
+
const evtNm = getChangeEventName(element, PropertiesHelper.camelToDashCase(s));
|
|
604
|
+
root.addEventListener(evtNm, evtCallback);
|
|
605
|
+
if (!cleanupCalls)
|
|
606
|
+
cleanupCalls = [];
|
|
607
|
+
cleanupCalls.push(() => root.removeEventListener(evtNm, evtCallback));
|
|
608
|
+
}
|
|
609
|
+
}
|
|
581
610
|
if (sng[0] === '.') {
|
|
582
611
|
signals[i] = this._visualizationHandler.getNormalizedSignalName(sng, relativeSignalPath, element);
|
|
583
612
|
}
|
|
@@ -611,6 +640,30 @@ export class BindingsHelper {
|
|
|
611
640
|
}
|
|
612
641
|
}
|
|
613
642
|
}
|
|
643
|
+
else if (s[0] === '#') { //Binding to element properties
|
|
644
|
+
const nm = s.substring(1);
|
|
645
|
+
let evtCallback = () => {
|
|
646
|
+
let disableValueChanged = false;
|
|
647
|
+
if (!disableValueChanged) {
|
|
648
|
+
disableValueChanged = true;
|
|
649
|
+
this.handleValueChanged(element, binding, element[nm], valuesObject, i, signalVars, false, relativeSignalPath);
|
|
650
|
+
disableValueChanged = false;
|
|
651
|
+
}
|
|
652
|
+
};
|
|
653
|
+
element.addEventListener(PropertiesHelper.camelToDashCase(nm) + '-changed', evtCallback);
|
|
654
|
+
if (!cleanupCalls)
|
|
655
|
+
cleanupCalls = [];
|
|
656
|
+
cleanupCalls.push(() => element.removeEventListener(PropertiesHelper.camelToDashCase(nm) + '-changed', evtCallback));
|
|
657
|
+
try {
|
|
658
|
+
this.handleValueChanged(element, binding, element[nm], valuesObject, i, signalVars, false, relativeSignalPath);
|
|
659
|
+
}
|
|
660
|
+
catch (err) {
|
|
661
|
+
console.error(err);
|
|
662
|
+
}
|
|
663
|
+
if (binding[1].twoWay && i == 0) {
|
|
664
|
+
this.addTwoWayBinding(binding, element, v => element[nm] = v);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
614
667
|
else if (s[0] === '$') {
|
|
615
668
|
let mS = s.substring(1);
|
|
616
669
|
if (mS[0] === '.') {
|
|
@@ -622,7 +675,7 @@ export class BindingsHelper {
|
|
|
622
675
|
}
|
|
623
676
|
else if (s[0] === '§') {
|
|
624
677
|
const mS = s.substring(1);
|
|
625
|
-
const value = specialValueHandler.valueProvider(mS);
|
|
678
|
+
const value = specialValueHandler.valueProvider(mS, { element, binding, relativeSignalPath, root });
|
|
626
679
|
this.handleValueChanged(element, binding, value, valuesObject, i, signalVars, true, relativeSignalPath);
|
|
627
680
|
if (!specialValueHandler.valueChangedCallbacks)
|
|
628
681
|
specialValueHandler.valueChangedCallbacks = new Map();
|
|
@@ -632,7 +685,7 @@ export class BindingsHelper {
|
|
|
632
685
|
specialValueHandler.valueChangedCallbacks.set(mS, changeList);
|
|
633
686
|
}
|
|
634
687
|
changeList.push(() => {
|
|
635
|
-
const value = specialValueHandler.valueProvider(mS);
|
|
688
|
+
const value = specialValueHandler.valueProvider(mS, { element, binding, relativeSignalPath, root });
|
|
636
689
|
this.handleValueChanged(element, binding, value, valuesObject, i, signalVars, true, relativeSignalPath);
|
|
637
690
|
});
|
|
638
691
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"description": "web-component-designer addon for visualizations",
|
|
3
3
|
"name": "@node-projects/web-component-designer-visualization-addons",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.117",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"author": "jochen.kuehner@gmx.de",
|