@node-projects/web-component-designer-visualization-addons 0.1.8 → 0.1.9

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.
@@ -10,6 +10,7 @@ export declare const bindingPrefixContent = "bind-content:";
10
10
  export declare const bindingsInCssRegex: RegExp;
11
11
  export type namedBinding = [name: string, binding: VisualizationBinding];
12
12
  export declare function isLit(element: Element): boolean;
13
+ export declare function getChangeEventName(element: Element, propertyName: string): string;
13
14
  export declare function parseBindingString(id: string): {
14
15
  parts: string[];
15
16
  signals: string[];
@@ -13,6 +13,11 @@ export function isLit(element) {
13
13
  //@ts-ignore
14
14
  return element.constructor?.elementProperties != null;
15
15
  }
16
+ export function getChangeEventName(element, propertyName) {
17
+ if (isLit(element))
18
+ return propertyName;
19
+ return propertyName + '-changed';
20
+ }
16
21
  export function parseBindingString(id) {
17
22
  let parts = [];
18
23
  let signals = [];
@@ -157,12 +162,7 @@ export class BindingsHelper {
157
162
  else if (element instanceof HTMLSelectElement)
158
163
  binding.events = ['change'];
159
164
  else {
160
- if (isLit(element)) {
161
- binding.events = [propname];
162
- }
163
- else {
164
- binding.events = [propname + '-changed'];
165
- }
165
+ binding.events = [getChangeEventName(element, propname)];
166
166
  }
167
167
  }
168
168
  if (bindingTarget === BindingTarget.cssvar || bindingTarget === BindingTarget.class)
@@ -393,6 +393,18 @@ export class BindingsHelper {
393
393
  return retVal;
394
394
  }
395
395
  applyBinding(element, binding, relativeSignalPath, root) {
396
+ let unsubscribeList = [];
397
+ let cleanupCalls;
398
+ const cleanUp = () => {
399
+ for (const u of unsubscribeList) {
400
+ this._visualizationHandler.unsubscribeState(u[0], u[1]);
401
+ }
402
+ if (cleanupCalls) {
403
+ for (let e of cleanupCalls) {
404
+ e();
405
+ }
406
+ }
407
+ };
396
408
  const signals = binding[1].signal.split(';');
397
409
  const signalVars = new Array(signals.length);
398
410
  for (let i = 0; i < signals.length; i++) {
@@ -412,6 +424,15 @@ export class BindingsHelper {
412
424
  }
413
425
  else {
414
426
  signals[i] = root[s];
427
+ let evtCallback = () => {
428
+ cleanUp();
429
+ this.applyBinding(element, binding, relativeSignalPath, root);
430
+ };
431
+ const evtNm = getChangeEventName(element, PropertiesHelper.camelToDashCase(s));
432
+ root.addEventListener(evtNm, evtCallback);
433
+ if (!cleanupCalls)
434
+ cleanupCalls = [];
435
+ cleanupCalls.push(() => root.removeEventListener(evtNm, evtCallback));
415
436
  }
416
437
  }
417
438
  }
@@ -419,8 +440,6 @@ export class BindingsHelper {
419
440
  signals[i] = relativeSignalPath + sng;
420
441
  }
421
442
  }
422
- let unsubscribeList = [];
423
- let cleanupCalls;
424
443
  let valuesObject = new Array(signals.length);
425
444
  for (let i = 0; i < signals.length; i++) {
426
445
  const s = signals[i];
@@ -491,16 +510,7 @@ export class BindingsHelper {
491
510
  }
492
511
  }
493
512
  }
494
- return () => {
495
- for (const u of unsubscribeList) {
496
- this._visualizationHandler.unsubscribeState(u[0], u[1]);
497
- }
498
- if (cleanupCalls) {
499
- for (let e of cleanupCalls) {
500
- e();
501
- }
502
- }
503
- };
513
+ return cleanUp;
504
514
  }
505
515
  addTwoWayBinding(binding, element, setter) {
506
516
  if (binding[1].expressionTwoWay) {
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.8",
4
+ "version": "0.1.9",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",