@node-projects/web-component-designer-visualization-addons 0.1.21 → 0.1.23

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.
@@ -1,2 +1,2 @@
1
1
  import './components/components.js';
2
- export declare function generateEventCodeFromBlockly(data: any): Promise<(event: Event, shadowRoot: ShadowRoot, parameters: Record<string, any>) => void>;
2
+ export declare function generateEventCodeFromBlockly(data: any): Promise<(event: Event, shadowRoot: ShadowRoot, parameters: Record<string, any>, relativeSignalsPath: string) => void>;
@@ -9,7 +9,7 @@ const prefix = `function extractPart(obj, propertyPath) {
9
9
  return retVal;
10
10
  }
11
11
 
12
- export async function run(eventData, shadowRoot, parameters) {
12
+ export async function run(eventData, shadowRoot, parameters, relativeSignalsPath) {
13
13
  `;
14
14
  const postfix = `}`;
15
15
  export async function generateEventCodeFromBlockly(data) {
@@ -26,6 +26,8 @@ export async function generateEventCodeFromBlockly(data) {
26
26
  //@ts-ignore
27
27
  Blockly.JavaScript.addReservedWords('parameters');
28
28
  //@ts-ignore
29
+ Blockly.JavaScript.addReservedWords('relativeSignalsPath');
30
+ //@ts-ignore
29
31
  Blockly.JavaScript.addReservedWords('IOB');
30
32
  //@ts-ignore
31
33
  Blockly.JavaScript.addReservedWords('RUNTIME');
@@ -15,7 +15,7 @@ Blockly.Blocks['get_parameter'] = {
15
15
  Blockly.JavaScript['get_parameter'] = function (block, generator) {
16
16
  //@ts-ignore
17
17
  const name = Blockly.JavaScript.valueToCode(block, 'NAME', Blockly.JavaScript.ORDER_ATOMIC);
18
- const code = `parameters[${name}]`;
18
+ const code = `context.parameters[${name}]`;
19
19
  //@ts-ignore
20
20
  return [code, Blockly.JavaScript.ORDER_NONE];
21
21
  };
@@ -15,7 +15,7 @@ Blockly.Blocks['get_state'] = {
15
15
  Blockly.JavaScript['get_state'] = function (block, generator) {
16
16
  //@ts-ignore
17
17
  const id = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
18
- const code = `(await IOB.getState(${id})).val`;
18
+ const code = `(await IOB.getState((${id}[0] === '.' ? relativeSignalsPath : '') + ${id})).val`;
19
19
  //@ts-ignore
20
20
  return [code, Blockly.JavaScript.ORDER_NONE];
21
21
  };
@@ -21,6 +21,6 @@ Blockly.JavaScript['set_state'] = function (block) {
21
21
  const id = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
22
22
  //@ts-ignore
23
23
  const value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
24
- const code = `await IOB.setState(${id}, ${value});\n`;
24
+ const code = `await IOB.setState((${id}[0] === '.' ? relativeSignalsPath : '') + ${id}, ${value});\n`;
25
25
  return code;
26
26
  };
@@ -122,20 +122,28 @@ export class BindingsHelper {
122
122
  if (value[0] === '=') {
123
123
  value = value.substring(1);
124
124
  binding.signal = value;
125
+ if (value.includes('::')) {
126
+ const parts = value.split('::');
127
+ value = parts[0];
128
+ binding.signal = value;
129
+ binding.events = parts[1].split(',');
130
+ }
125
131
  binding.twoWay = true;
126
- if (element instanceof HTMLInputElement)
127
- binding.events = ['change'];
128
- else if (element instanceof HTMLSelectElement)
129
- binding.events = ['change'];
130
- else {
131
- if (isLit(element)) {
132
- binding.events = [propname];
133
- }
132
+ if (!binding.events) {
133
+ if (element instanceof HTMLInputElement)
134
+ binding.events = ['change'];
135
+ else if (element instanceof HTMLSelectElement)
136
+ binding.events = ['change'];
134
137
  else {
135
- binding.events = [propname + '-changed'];
136
- //Binding could be a lit elemnt but not yet loaded
137
- binding.maybeLitElement = true;
138
- binding.litEventNames = [propname];
138
+ if (isLit(element)) {
139
+ binding.events = [propname];
140
+ }
141
+ else {
142
+ binding.events = [propname + '-changed'];
143
+ //Binding could be a lit elemnt but not yet loaded
144
+ binding.maybeLitElement = true;
145
+ binding.litEventNames = [propname];
146
+ }
139
147
  }
140
148
  }
141
149
  }
@@ -183,17 +191,17 @@ export class BindingsHelper {
183
191
  else if (!isLit(element) && binding.events?.[0] == targetName + '-changed')
184
192
  delete bindingCopy.events;
185
193
  }
194
+ const eventsString = binding.events?.length > 0 ? binding.events.join(',') : '';
186
195
  if (binding.target == BindingTarget.property &&
187
196
  !binding.expression && !binding.expressionTwoWay &&
188
197
  binding.converter == null &&
189
198
  !binding.type &&
190
- !binding.historic &&
191
- (bindingCopy.events == null || bindingCopy.events.length == 0)) {
199
+ !binding.historic) {
192
200
  if (targetName == 'textContent')
193
- return [bindingPrefixContent + 'text', (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
201
+ return [bindingPrefixContent + 'text', (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
194
202
  if (targetName == 'innerHTML')
195
- return [bindingPrefixContent + 'html', (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
196
- return [bindingPrefixProperty + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
203
+ return [bindingPrefixContent + 'html', (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
204
+ return [bindingPrefixProperty + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
197
205
  }
198
206
  //Multi Var Expressions
199
207
  if (binding.target == BindingTarget.property &&
@@ -201,21 +209,19 @@ export class BindingsHelper {
201
209
  !binding.expressionTwoWay &&
202
210
  binding.converter == null &&
203
211
  !binding.type &&
204
- !binding.historic &&
205
- (bindingCopy.events == null || bindingCopy.events.length == 0)) {
212
+ !binding.historic) {
206
213
  if (targetName == 'textContent')
207
- return [bindingPrefixContent + 'text', (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
214
+ return [bindingPrefixContent + 'text', (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
208
215
  if (targetName == 'innerHTML')
209
- return [bindingPrefixContent + 'html', (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
210
- return [bindingPrefixProperty + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
216
+ return [bindingPrefixContent + 'html', (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
217
+ return [bindingPrefixProperty + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
211
218
  }
212
219
  if (binding.target == BindingTarget.attribute &&
213
220
  !binding.expression && !binding.expressionTwoWay &&
214
221
  binding.converter == null &&
215
222
  !binding.type &&
216
- !binding.historic &&
217
- (binding.events == null || binding.events.length == 0)) {
218
- return [bindingPrefixAttribute + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
223
+ !binding.historic) {
224
+ return [bindingPrefixAttribute + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
219
225
  }
220
226
  //Multi Var Expressions
221
227
  if (binding.target == BindingTarget.attribute &&
@@ -223,17 +229,15 @@ export class BindingsHelper {
223
229
  !binding.expressionTwoWay &&
224
230
  binding.converter == null &&
225
231
  !binding.type &&
226
- !binding.historic &&
227
- (binding.events == null || binding.events.length == 0)) {
228
- return [bindingPrefixAttribute + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
232
+ !binding.historic) {
233
+ return [bindingPrefixAttribute + PropertiesHelper.camelToDashCase(targetName), (binding.twoWay ? '=' : '') + (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
229
234
  }
230
235
  if (binding.target == BindingTarget.class &&
231
236
  !binding.expression && !binding.expressionTwoWay &&
232
237
  binding.converter == null &&
233
238
  !binding.type &&
234
- !binding.historic &&
235
- (binding.events == null || binding.events.length == 0)) {
236
- return [bindingPrefixClass + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
239
+ !binding.historic) {
240
+ return [bindingPrefixClass + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
237
241
  }
238
242
  //Multi Var Expressions
239
243
  if (binding.target == BindingTarget.class &&
@@ -241,17 +245,15 @@ export class BindingsHelper {
241
245
  !binding.expressionTwoWay &&
242
246
  binding.converter == null &&
243
247
  !binding.type &&
244
- !binding.historic &&
245
- (binding.events == null || binding.events.length == 0)) {
246
- return [bindingPrefixClass + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
248
+ !binding.historic) {
249
+ return [bindingPrefixClass + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
247
250
  }
248
251
  if (binding.target == BindingTarget.css &&
249
252
  !binding.expression && !binding.expressionTwoWay &&
250
253
  binding.converter == null &&
251
254
  !binding.type &&
252
- !binding.historic &&
253
- (binding.events == null || binding.events.length == 0)) {
254
- return [bindingPrefixCss + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
255
+ !binding.historic) {
256
+ return [bindingPrefixCss + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
255
257
  }
256
258
  //Multi Var Expressions
257
259
  if (binding.target == BindingTarget.css &&
@@ -259,17 +261,15 @@ export class BindingsHelper {
259
261
  !binding.expressionTwoWay &&
260
262
  binding.converter == null &&
261
263
  !binding.type &&
262
- !binding.historic &&
263
- (binding.events == null || binding.events.length == 0)) {
264
- return [bindingPrefixCss + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
264
+ !binding.historic) {
265
+ return [bindingPrefixCss + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
265
266
  }
266
267
  if (binding.target == BindingTarget.cssvar &&
267
268
  !binding.expression && !binding.expressionTwoWay &&
268
269
  binding.converter == null &&
269
270
  !binding.type &&
270
- !binding.historic &&
271
- (binding.events == null || binding.events.length == 0)) {
272
- return [bindingPrefixCssVar + BindingsHelper.camelToDotCase(targetName.substring(2)), (binding.inverted ? '!' : '') + binding.signal + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
271
+ !binding.historic) {
272
+ return [bindingPrefixCssVar + BindingsHelper.camelToDotCase(targetName.substring(2)), (binding.inverted ? '!' : '') + binding.signal + eventsString + (!binding.twoWay && binding.signal.includes(';') ? ';' : '')];
273
273
  }
274
274
  //Multi Var Expressions
275
275
  if (binding.target == BindingTarget.cssvar &&
@@ -277,9 +277,8 @@ export class BindingsHelper {
277
277
  !binding.expressionTwoWay &&
278
278
  binding.converter == null &&
279
279
  !binding.type &&
280
- !binding.historic &&
281
- (binding.events == null || binding.events.length == 0)) {
282
- return [bindingPrefixCssVar + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + ';' + binding.expression];
280
+ !binding.historic) {
281
+ return [bindingPrefixCssVar + PropertiesHelper.camelToDashCase(targetName), (binding.inverted ? '!' : '') + binding.signal + eventsString + ';' + binding.expression];
283
282
  }
284
283
  if (binding.inverted === null || binding.inverted === false) {
285
284
  delete bindingCopy.inverted;
@@ -2,7 +2,7 @@ import { IScriptMultiplexValue } from "../interfaces/IScriptMultiplexValue.js";
2
2
  import { VisualisationElementScript } from "../interfaces/VisualisationElementScript.js";
3
3
  import { VisualizationHandler } from "../interfaces/VisualizationHandler.js";
4
4
  import { ScriptCommands } from "./ScriptCommands.js";
5
- type contextType = {
5
+ export type contextType = {
6
6
  event: Event;
7
7
  element: Element;
8
8
  root: HTMLElement;
@@ -21,4 +21,3 @@ export declare class ScriptSystem {
21
21
  static extractPart(obj: any, propertyPath: string): any;
22
22
  assignAllScripts(source: string, javascriptCode: string, shadowRoot: ShadowRoot, instance: HTMLElement, assignExternalScript?: (element: Element, event: string, scriptData: any) => void): Promise<VisualisationElementScript>;
23
23
  }
24
- export {};
@@ -225,7 +225,7 @@ export class ScriptSystem {
225
225
  e.addEventListener(evtName, async (evt) => {
226
226
  if (!compiledFunc)
227
227
  compiledFunc = await generateEventCodeFromBlockly(scriptObj);
228
- compiledFunc(evt, shadowRoot, scriptObj.parameters);
228
+ compiledFunc(evt, shadowRoot, scriptObj.parameters, scriptObj.relativeSignalsPath ?? '');
229
229
  });
230
230
  }
231
231
  else {
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.21",
4
+ "version": "0.1.23",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",