@node-projects/web-component-designer-visualization-addons 0.1.108 → 0.1.110

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.
@@ -4,7 +4,7 @@ import { VisualizationShell } from '../interfaces/VisualizationShell.js';
4
4
  export declare class BindingsEditor extends BaseCustomWebComponentConstructorAppend {
5
5
  static readonly template: HTMLTemplateElement;
6
6
  static readonly style: CSSStyleSheet;
7
- static readonly is = "node-projects-visualization-bindings-editor";
7
+ static readonly is: string;
8
8
  static readonly properties: {
9
9
  twoWayPossible: BooleanConstructor;
10
10
  twoWay: BooleanConstructor;
@@ -44,10 +44,30 @@ export declare class BindingsHelper {
44
44
  serializeBinding(element: Element, targetName: string, binding: VisualizationBinding): [name: string, value: string];
45
45
  getBindingAttributeName(element: Element, propertyName: string, propertyTarget: BindingTarget): string;
46
46
  getBindings(element: Element): Generator<namedBinding, void, unknown>;
47
- applyAllBindings(rootElement: ParentNode, relativeSignalPath: string, root: HTMLElement): (() => void)[];
47
+ applyAllBindings(rootElement: ParentNode, relativeSignalPath: string, root: HTMLElement, specialValueHandler?: {
48
+ valueProvider: (propertyName: string) => any;
49
+ valueChangedCallbacks: Map<string, (() => void)[]>;
50
+ }): (() => void)[];
48
51
  parseCssBindings(sheet: string, element: Element, relativeSignalPath: string, root: HTMLElement): Promise<[stylesheet: CSSStyleSheet, unsub: (() => void)[]]>;
49
- parseCssBinding(value: string, element: Element, relativeSignalPath: string, root: HTMLElement): [name: string, unsub: (() => void)[]];
50
- applyBinding(element: Element, binding: namedBinding, relativeSignalPath: string, root: HTMLElement): () => void;
52
+ parseCssBinding(value: string, element: Element, relativeSignalPath: string, root: HTMLElement, specialValueHandler?: {
53
+ valueProvider: (propertyName: string) => any;
54
+ valueChangedCallbacks: Map<string, (() => void)[]>;
55
+ }): [name: string, unsub: (() => void)[]];
56
+ /**
57
+ * ? = bind to signals in properties
58
+ * ?? = binding to a property
59
+ * $ = bind to a signal configuration
60
+ * § = bind to a special value
61
+ * @param element
62
+ * @param binding
63
+ * @param relativeSignalPath
64
+ * @param root
65
+ * @returns
66
+ */
67
+ applyBinding(element: Element, binding: namedBinding, relativeSignalPath: string, root: HTMLElement, specialValueHandler?: {
68
+ valueProvider: (propertyName: string) => any;
69
+ valueChangedCallbacks: Map<string, (() => void)[]>;
70
+ }): () => void;
51
71
  private addTwoWayBinding;
52
72
  private static parseValueWithType;
53
73
  handleValueChanged(element: Element, binding: namedBinding, value: any, valuesObject: any[], index: number, signalVarNames: string[], noParse: boolean, relativeSignalPath: string): void;
@@ -405,7 +405,7 @@ export class BindingsHelper {
405
405
  }
406
406
  }
407
407
  }
408
- applyAllBindings(rootElement, relativeSignalPath, root) {
408
+ applyAllBindings(rootElement, relativeSignalPath, root, specialValueHandler) {
409
409
  let retVal = [];
410
410
  const tw = document.createTreeWalker(rootElement, NodeFilter.SHOW_ELEMENT);
411
411
  let e;
@@ -413,7 +413,7 @@ export class BindingsHelper {
413
413
  const bindings = this.getBindings(e);
414
414
  for (let b of bindings) {
415
415
  try {
416
- let applied = this.applyBinding(e, b, relativeSignalPath, root);
416
+ let applied = this.applyBinding(e, b, relativeSignalPath, root, specialValueHandler);
417
417
  retVal.push(applied);
418
418
  if (b[1].maybeLitElement && e.localName.includes('-') && !customElements.get(e.localName)) {
419
419
  const el = e;
@@ -422,7 +422,7 @@ export class BindingsHelper {
422
422
  if (isLit(el)) {
423
423
  applied();
424
424
  bnd[1].events = bnd[1].litEventNames;
425
- retVal.push(this.applyBinding(el, bnd, relativeSignalPath, root));
425
+ retVal.push(this.applyBinding(el, bnd, relativeSignalPath, root, specialValueHandler));
426
426
  }
427
427
  });
428
428
  }
@@ -460,7 +460,7 @@ export class BindingsHelper {
460
460
  const newStyle = parser.stringify(ast, { indent: '', compress: true });
461
461
  return [cssFromString(newStyle), unsub];
462
462
  }
463
- parseCssBinding(value, element, relativeSignalPath, root) {
463
+ parseCssBinding(value, element, relativeSignalPath, root, specialValueHandler) {
464
464
  value = value.trim();
465
465
  let res = '';
466
466
  let tmp = '';
@@ -485,7 +485,7 @@ export class BindingsHelper {
485
485
  if (binding.startsWith('{')) {
486
486
  bnd = JSON.parse(binding);
487
487
  }
488
- unsub.push(this.applyBinding(element, bnd, relativeSignalPath, root));
488
+ unsub.push(this.applyBinding(element, bnd, relativeSignalPath, root, specialValueHandler));
489
489
  res += 'var(' + varName + ')';
490
490
  inBind = false;
491
491
  binding = '';
@@ -520,7 +520,18 @@ export class BindingsHelper {
520
520
  }
521
521
  return [res + tmp, unsub];
522
522
  }
523
- applyBinding(element, binding, relativeSignalPath, root) {
523
+ /**
524
+ * ? = bind to signals in properties
525
+ * ?? = binding to a property
526
+ * $ = bind to a signal configuration
527
+ * § = bind to a special value
528
+ * @param element
529
+ * @param binding
530
+ * @param relativeSignalPath
531
+ * @param root
532
+ * @returns
533
+ */
534
+ applyBinding(element, binding, relativeSignalPath, root, specialValueHandler) {
524
535
  let unsubscribeList = [];
525
536
  let cleanupCalls;
526
537
  const cleanUp = () => {
@@ -558,7 +569,7 @@ export class BindingsHelper {
558
569
  }
559
570
  let evtCallback = () => {
560
571
  cleanUp();
561
- this.applyBinding(element, binding, relativeSignalPath, root);
572
+ this.applyBinding(element, binding, relativeSignalPath, root, specialValueHandler);
562
573
  };
563
574
  const evtNm = getChangeEventName(element, PropertiesHelper.camelToDashCase(s));
564
575
  root.addEventListener(evtNm, evtCallback);
@@ -575,7 +586,7 @@ export class BindingsHelper {
575
586
  let valuesObject = new Array(signals.length);
576
587
  for (let i = 0; i < signals.length; i++) {
577
588
  const s = signals[i];
578
- if (s[0] == '?') {
589
+ if (s[0] === '?') {
579
590
  if (root) {
580
591
  const nm = s.substring(1);
581
592
  let evtCallback = () => {
@@ -601,7 +612,7 @@ export class BindingsHelper {
601
612
  }
602
613
  }
603
614
  }
604
- else if (s[0] == '$') {
615
+ else if (s[0] === '$') {
605
616
  let mS = s.substring(1);
606
617
  if (mS[0] === '.') {
607
618
  mS = this._visualizationHandler.getNormalizedSignalName(mS, relativeSignalPath, element);
@@ -610,6 +621,22 @@ export class BindingsHelper {
610
621
  this.handleValueChanged(element, binding, x, valuesObject, i, signalVars, true, relativeSignalPath);
611
622
  });
612
623
  }
624
+ else if (s[0] === '§') {
625
+ const mS = s.substring(1);
626
+ const value = specialValueHandler.valueProvider(mS);
627
+ this.handleValueChanged(element, binding, value, valuesObject, i, signalVars, true, relativeSignalPath);
628
+ if (!specialValueHandler.valueChangedCallbacks)
629
+ specialValueHandler.valueChangedCallbacks = new Map();
630
+ let changeList = specialValueHandler.valueChangedCallbacks.get(mS);
631
+ if (changeList != null) {
632
+ changeList = [];
633
+ specialValueHandler.valueChangedCallbacks.set(mS, changeList);
634
+ }
635
+ changeList.push(() => {
636
+ const value = specialValueHandler.valueProvider(mS);
637
+ this.handleValueChanged(element, binding, value, valuesObject, i, signalVars, true, relativeSignalPath);
638
+ });
639
+ }
613
640
  else {
614
641
  if (s.includes('{')) {
615
642
  let indirectSignal = new IndirectSignal(this._visualizationHandler, s, (value) => this.handleValueChanged(element, binding, value.val, valuesObject, i, signalVars, false, relativeSignalPath), element, relativeSignalPath, root);
@@ -1,5 +1,5 @@
1
1
  export interface VisualisationElementScript {
2
- init?(instance: HTMLElement): any;
3
- connectedCallback?(instance: HTMLElement): any;
4
- disconnectedCallback?(instance: HTMLElement): any;
2
+ init?(instance: HTMLElement, shadowRoot: ShadowRoot): any;
3
+ connectedCallback?(instance: HTMLElement, shadowRoot: ShadowRoot): any;
4
+ disconnectedCallback?(instance: HTMLElement, shadowRoot: ShadowRoot): any;
5
5
  }
@@ -23,5 +23,5 @@ export declare class ScriptSystem {
23
23
  getSignaName(name: string, outerContext: contextType): string;
24
24
  static extractPart(obj: any, propertyPath: string): any;
25
25
  createScriptContext(root: HTMLElement, event: Event, element: Element, parameters: Record<string, any>, relativeSignalsPath: string): any;
26
- assignAllScripts(source: string, javascriptCode: string, shadowRoot: ShadowRoot, instance: HTMLElement, visualizationHandler: VisualizationHandler, contextCreator?: (root: HTMLElement, event: Event, element: Element, parameters: Record<string, any>, relativeSignalsPath: string) => any, assignExternalScript?: (element: Element, event: string, scriptData: any) => void): Promise<VisualisationElementScript>;
26
+ assignAllScripts(source: string, javascriptCode: string, shadowRoot: ShadowRoot, instance: HTMLElement, visualizationHandler: VisualizationHandler, contextCreator?: (root: HTMLElement, event: Event, element: Element, parameters: Record<string, any>, relativeSignalsPath: string) => any, assignExternalScript?: (element: Element, event: string, scriptData: any) => void, runInitalization?: (jsObject: VisualisationElementScript) => void): Promise<VisualisationElementScript>;
27
27
  }
@@ -405,7 +405,7 @@ export class ScriptSystem {
405
405
  createScriptContext(root, event, element, parameters, relativeSignalsPath) {
406
406
  return { root, event, element, parameters, relativeSignalsPath };
407
407
  }
408
- async assignAllScripts(source, javascriptCode, shadowRoot, instance, visualizationHandler, contextCreator, assignExternalScript) {
408
+ async assignAllScripts(source, javascriptCode, shadowRoot, instance, visualizationHandler, contextCreator, assignExternalScript, runInitalization) {
409
409
  const allElements = shadowRoot.querySelectorAll('*');
410
410
  contextCreator ??= this.createScriptContext;
411
411
  let jsObject = null;
@@ -413,8 +413,12 @@ export class ScriptSystem {
413
413
  try {
414
414
  const scriptUrl = URL.createObjectURL(new Blob([javascriptCode], { type: 'application/javascript' }));
415
415
  jsObject = await import(scriptUrl);
416
- if (jsObject.init) {
417
- jsObject.init(instance);
416
+ if (runInitalization)
417
+ runInitalization(jsObject);
418
+ else {
419
+ if (jsObject.init) {
420
+ jsObject.init(instance, shadowRoot);
421
+ }
418
422
  }
419
423
  }
420
424
  catch (err) {
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.108",
4
+ "version": "0.1.110",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",