@jinntec/fore 2.1.1 → 2.3.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.
Files changed (88) hide show
  1. package/README.md +2 -2
  2. package/dist/fore-dev.js +2 -2
  3. package/dist/fore-dev.js.map +1 -1
  4. package/dist/fore.js +2 -2
  5. package/dist/fore.js.map +1 -1
  6. package/index.js +4 -2
  7. package/package.json +10 -38
  8. package/resources/fore.css +263 -262
  9. package/resources/vars.css +8 -0
  10. package/src/DependencyNotifyingDomFacade.js +1 -0
  11. package/src/ForeElementMixin.js +243 -228
  12. package/src/actions/abstract-action.js +407 -398
  13. package/src/actions/fx-action.js +6 -6
  14. package/src/actions/fx-append.js +1 -1
  15. package/src/actions/fx-call.js +63 -62
  16. package/src/actions/fx-confirm.js +11 -11
  17. package/src/actions/fx-construct-done.js +4 -4
  18. package/src/actions/fx-copy.js +36 -36
  19. package/src/actions/fx-delete.js +77 -79
  20. package/src/actions/fx-dispatch.js +14 -14
  21. package/src/actions/fx-hide.js +15 -15
  22. package/src/actions/fx-insert.js +9 -12
  23. package/src/actions/fx-insertchild.js +88 -0
  24. package/src/actions/fx-load.js +188 -185
  25. package/src/actions/fx-message.js +18 -19
  26. package/src/actions/fx-refresh.js +10 -10
  27. package/src/actions/fx-reload.js +16 -14
  28. package/src/actions/fx-replace.js +0 -1
  29. package/src/actions/fx-reset.js +31 -31
  30. package/src/actions/fx-send.js +59 -52
  31. package/src/actions/fx-setattribute.js +48 -49
  32. package/src/actions/fx-setfocus.js +54 -58
  33. package/src/actions/fx-setvalue.js +85 -81
  34. package/src/actions/fx-show.js +11 -11
  35. package/src/actions/fx-toggle.js +2 -2
  36. package/src/actions/fx-toggleboolean.js +38 -39
  37. package/src/actions/fx-unmodified.js +27 -0
  38. package/src/actions/fx-update.js +6 -6
  39. package/src/dep_graph.js +1 -1
  40. package/src/drawdown.js +23 -30
  41. package/src/events.js +19 -19
  42. package/src/fore.js +143 -125
  43. package/src/functions/common-function.js +24 -25
  44. package/src/functions/fx-function.js +6 -99
  45. package/src/functions/fx-functionlib.js +56 -0
  46. package/src/functions/registerFunction.js +112 -0
  47. package/src/fx-bind.js +19 -24
  48. package/src/fx-connection.js +226 -0
  49. package/src/fx-fore.js +844 -815
  50. package/src/fx-header.js +4 -4
  51. package/src/fx-instance.js +25 -29
  52. package/src/fx-model.js +405 -380
  53. package/src/fx-submission.js +399 -397
  54. package/src/fx-var.js +13 -12
  55. package/src/getInScopeContext.js +102 -89
  56. package/src/json-util.js +24 -24
  57. package/src/lab/fore-component.js +48 -52
  58. package/src/lab/instance-inspector.js +13 -16
  59. package/src/modelitem.js +48 -10
  60. package/src/relevance.js +12 -16
  61. package/src/tools/adi.js +858 -812
  62. package/src/tools/fx-action-log.js +377 -295
  63. package/src/tools/fx-devtools.js +210 -210
  64. package/src/tools/fx-dom-inspector.js +123 -122
  65. package/src/tools/fx-json-instance.js +262 -253
  66. package/src/tools/fx-log-item.js +6 -11
  67. package/src/tools/fx-log-settings.js +358 -301
  68. package/src/tools/fx-minimap.js +186 -177
  69. package/src/tools/helpers.js +1 -1
  70. package/src/ui/abstract-control.js +73 -53
  71. package/src/ui/fx-case.js +59 -7
  72. package/src/ui/fx-container.js +13 -14
  73. package/src/ui/fx-control.js +572 -538
  74. package/src/ui/fx-dialog.js +3 -3
  75. package/src/ui/fx-droptarget.js +3 -4
  76. package/src/ui/fx-group.js +4 -2
  77. package/src/ui/fx-hint.js +3 -0
  78. package/src/ui/fx-inspector.js +5 -5
  79. package/src/ui/fx-items.js +11 -11
  80. package/src/ui/fx-output.js +10 -12
  81. package/src/ui/fx-repeat-attributes.js +23 -27
  82. package/src/ui/fx-repeat.js +347 -344
  83. package/src/ui/fx-repeatitem.js +75 -68
  84. package/src/ui/fx-switch.js +39 -14
  85. package/src/ui/fx-trigger.js +4 -4
  86. package/src/withDraggability.js +193 -191
  87. package/src/xpath-evaluation.js +969 -958
  88. package/src/xpath-util.js +161 -134
@@ -1,16 +1,16 @@
1
- import {XPathUtil} from "../xpath-util";
2
- import "./fx-log-item.js";
1
+ import { XPathUtil } from '../xpath-util';
2
+ import './fx-log-item.js';
3
3
 
4
4
  export class FxLogSettings extends HTMLElement {
5
- constructor() {
6
- super();
7
- this.attachShadow({mode: 'open'});
8
- this.listenTo = [];
9
- this.listeners = [];
10
- }
11
-
12
- connectedCallback() {
13
- const style = `
5
+ constructor() {
6
+ super();
7
+ this.attachShadow({ mode: 'open' });
8
+ this.listenTo = [];
9
+ this.listeners = [];
10
+ }
11
+
12
+ connectedCallback() {
13
+ const style = `
14
14
  :host {
15
15
  display:block;
16
16
  position:relative;
@@ -65,13 +65,12 @@ export class FxLogSettings extends HTMLElement {
65
65
 
66
66
  `;
67
67
 
68
- if (localStorage.getItem('fx-log-settings')) {
69
- this.listenTo = JSON.parse(localStorage.getItem('fx-log-settings'));
70
- } else {
71
- // this._defaultSettings();
72
- this.listenTo = FxLogSettings.defaultSettings();
73
- }
74
-
68
+ if (localStorage.getItem('fx-log-settings')) {
69
+ this.listenTo = JSON.parse(localStorage.getItem('fx-log-settings'));
70
+ } else {
71
+ // this._defaultSettings();
72
+ this.listenTo = FxLogSettings.defaultSettings();
73
+ }
75
74
 
76
75
  const html = `
77
76
  <section id="settings">
@@ -80,228 +79,276 @@ export class FxLogSettings extends HTMLElement {
80
79
  </section>
81
80
  `;
82
81
 
83
- this.shadowRoot.innerHTML = `
82
+ this.shadowRoot.innerHTML = `
84
83
  <style>
85
84
  ${style}
86
85
  </style>
87
86
  ${html}
88
87
  `;
89
88
 
90
- const fore = window.document.querySelector('fx-fore');
91
- if (!fore) {
92
- console.error('fx-fore element not found in this page.');
93
- }
89
+ const fore = window.document.querySelector('fx-fore');
90
+ if (!fore) {
91
+ console.error('fx-fore element not found in this page.');
92
+ }
94
93
 
95
- const boxes = this.shadowRoot.querySelector('.boxes');
94
+ const boxes = this.shadowRoot.querySelector('.boxes');
96
95
 
97
- /*
96
+ /*
98
97
  build the list of checkboxes for the filtering settings
99
98
  */
100
- this.listenTo.forEach(item => {
101
- const wrapper = document.createElement('span');
102
- boxes.append(wrapper);
103
-
104
- const lbl = document.createElement('label');
105
- lbl.setAttribute('title', item.description);
106
- lbl.setAttribute('for', item.name);
107
- lbl.innerText = item.name;
108
-
109
- const cbx = document.createElement('input');
110
- cbx.setAttribute('type', 'checkbox');
111
- cbx.setAttribute('name', item.name);
112
- cbx.setAttribute('id', item.name);
113
- if (item.show) {
114
- cbx.setAttribute('checked', '');
115
- }
116
- wrapper.append(cbx);
117
- wrapper.append(lbl);
118
-
119
- cbx.addEventListener('click', e => {
120
- // console.log('filter box ticked', e);
121
- if (!e.target.checked) {
122
- // remove event listener
123
- const fore = document.querySelector('fx-fore');
124
- fore.removeEventListener(item.name, this._log);
125
- // e.preventDefault();
126
- // e.stopPropagation();
127
- }
128
- const t = this.listenTo.find(evt => evt.name === item.name);
129
- e.target.checked ? t.show = true : t.show = false;
130
- // console.log('filter', this.listenTo);
131
- localStorage.setItem('fx-log-settings', JSON.stringify(this.listenTo));
132
- })
133
- // boxes.appendChild(lbl);
134
- });
135
-
136
- // buttons
137
- const reset = this.shadowRoot.querySelector('#reset');
138
- reset.addEventListener('click', e => {
139
- // this._defaultSettings();
140
- localStorage.removeItem('fx-log-settings');
141
- window.location.reload();
142
- });
143
-
144
- }
145
-
146
- static defaultSettings() {
147
- return [
148
- {name: "action-performed", show: false, description: 'fires after an action has been performed'},
149
- {name: "click", show: false, description: ''},
150
- {name: "deleted", show: false, description: 'fires after a delete action has been executed'},
151
- {name: "deselect", show: false, description: 'fires when fx-case is deselected'},
152
- {name: "dialog-hidden", show: false, description: 'fires after fx-dialog has been hidden'},
153
- {name: "dialog-shown", show: false, description: 'fired when a dialog has been shown'},
154
- {name: "error", show: false, description: 'fires after an error occurred'},
155
- {name: "execute-action", show: true, description: 'fires when an action executes'},
156
- {name: "init", show: false, description: 'fires when a control initializes'},
157
- {name: "index-changed", show: false, description: 'fires when the repeat index changes'},
158
- {name: "insert", show: false, description: 'fires when an fx-insert is executed'},
159
- {name: "instance-loaded", show: false, description: 'fires after an fx-instance has been loaded'},
160
- {name: "invalid", show: false, description: 'fires after a control became invalid'},
161
- {name: "item-changed", show: false, description: 'fires when a repeat item was changed'},
162
- {name: "item-created", show: false, description: 'fires when a repeat item was created'},
163
- {name: "loaded", show: false, description: 'fires after a fx-load has loaded'},
164
- {name: "model-construct", show: false, description: 'fires when a model gets constructed'},
165
- {name: "model-construct-done", show: false, description: 'fires after model initialization'},
166
- {name: "nonrelevant", show: false, description: 'fires after an fx-control became nonrelevant'},
167
- {name: "optional", show: false, description: 'fires after an fx-control became optional'},
168
- {
169
- name: "outermost-action-end",
170
- show: false,
171
- description: 'fires when an outermost action block is finished'
172
- },
173
- {
174
- name: "outermost-action-start",
175
- show: false,
176
- description: 'fires when an outermost action block is started'
177
- },
178
- {name: "path-mutated", show: false, description: 'fires when a path in a repeat has been mutated'},
179
- {name: "readonly", show: false, description: 'fires after an fx-control became readonly'},
180
- {name: "readwrite", show: false, description: 'fires after an fx-control became readwrite'},
181
- {name: "ready", show: false, description: 'fires after a fx-fore page has been completely initialized'},
182
- {name: "rebuild-done", show: false, description: 'fires after a rebuild has taken place'},
183
- {name: "recalculate-done", show: false, description: 'fires after a recalculate has taken place'},
184
- {name: "refresh-done", show: false, description: 'fires after a refresh has been done'},
185
- {name: "relevant", show: false, description: 'fires after a fx-control has become relevant'},
186
- {name: "reload", show: false, description: 'fires when a fx-reload action executes'},
187
- {name: "required", show: false, description: 'fires after an fx-control has become required'},
188
- {name: "return", show: false, description: 'fires after a fx-return returned'},
189
- {name: "select", show: false, description: 'fires when an fx-case has been selected'},
190
- {name: "submit", show: false, description: 'fires before a submission takes place'},
191
- {name: "submit-done", show: false, description: 'fires after a submission has successfully been executed'},
192
- {name: "submit-error", show: false, description: 'fires when a submission returned an error'},
193
- {name: "valid", show: false, description: 'fires after a fx-control has become valid'},
194
- {name: "value-changed", show: false, description: 'fires after a fx-control has changed its value'}
195
- ];
196
- }
197
-
198
- _log(e, log) {
199
- const elementName = e.target.nodeName;
200
- if (elementName === 'FX-ACTION-LOG') return;
201
- // e.preventDefault();
202
- // e.stopPropagation();
203
-
204
- const row = document.createElement('div');
205
- row.classList.add('log-row');
206
- const logRow = this._logDetails(e);
207
- if (e.detail &&
208
- Object.keys(e.detail).length === 0 &&
209
- Object.getPrototypeOf(e.detail) === Object.prototype) {
210
- row.classList.add('no-detail');
99
+ this.listenTo.forEach(item => {
100
+ const wrapper = document.createElement('span');
101
+ boxes.append(wrapper);
102
+
103
+ const lbl = document.createElement('label');
104
+ lbl.setAttribute('title', item.description);
105
+ lbl.setAttribute('for', item.name);
106
+ lbl.innerText = item.name;
107
+
108
+ const cbx = document.createElement('input');
109
+ cbx.setAttribute('type', 'checkbox');
110
+ cbx.setAttribute('name', item.name);
111
+ cbx.setAttribute('id', item.name);
112
+ if (item.show) {
113
+ cbx.setAttribute('checked', '');
114
+ }
115
+ wrapper.append(cbx);
116
+ wrapper.append(lbl);
117
+
118
+ cbx.addEventListener('click', e => {
119
+ // console.log('filter box ticked', e);
120
+ if (!e.target.checked) {
121
+ // remove event listener
122
+ const fore = document.querySelector('fx-fore');
123
+ fore.removeEventListener(item.name, this._log);
124
+ // e.preventDefault();
125
+ // e.stopPropagation();
211
126
  }
127
+ const t = this.listenTo.find(evt => evt.name === item.name);
128
+ e.target.checked ? (t.show = true) : (t.show = false);
129
+ // console.log('filter', this.listenTo);
130
+ localStorage.setItem('fx-log-settings', JSON.stringify(this.listenTo));
131
+ });
132
+ // boxes.appendChild(lbl);
133
+ });
134
+
135
+ // buttons
136
+ const reset = this.shadowRoot.querySelector('#reset');
137
+ reset.addEventListener('click', e => {
138
+ // this._defaultSettings();
139
+ localStorage.removeItem('fx-log-settings');
140
+ window.location.reload();
141
+ });
142
+ }
143
+
144
+ static defaultSettings() {
145
+ return [
146
+ {
147
+ name: 'action-performed',
148
+ show: false,
149
+ description: 'fires after an action has been performed',
150
+ },
151
+ { name: 'click', show: false, description: '' },
152
+ {
153
+ name: 'deleted',
154
+ show: false,
155
+ description: 'fires after a delete action has been executed',
156
+ },
157
+ { name: 'deselect', show: false, description: 'fires when fx-case is deselected' },
158
+ { name: 'dialog-hidden', show: false, description: 'fires after fx-dialog has been hidden' },
159
+ { name: 'dialog-shown', show: false, description: 'fired when a dialog has been shown' },
160
+ { name: 'error', show: false, description: 'fires after an error occurred' },
161
+ { name: 'execute-action', show: true, description: 'fires when an action executes' },
162
+ { name: 'init', show: false, description: 'fires when a control initializes' },
163
+ { name: 'index-changed', show: false, description: 'fires when the repeat index changes' },
164
+ { name: 'insert', show: false, description: 'fires when an fx-insert is executed' },
165
+ {
166
+ name: 'instance-loaded',
167
+ show: false,
168
+ description: 'fires after an fx-instance has been loaded',
169
+ },
170
+ { name: 'invalid', show: false, description: 'fires after a control became invalid' },
171
+ { name: 'item-changed', show: false, description: 'fires when a repeat item was changed' },
172
+ { name: 'item-created', show: false, description: 'fires when a repeat item was created' },
173
+ { name: 'loaded', show: false, description: 'fires after a fx-load has loaded' },
174
+ { name: 'model-construct', show: false, description: 'fires when a model gets constructed' },
175
+ {
176
+ name: 'model-construct-done',
177
+ show: false,
178
+ description: 'fires after model initialization',
179
+ },
180
+ {
181
+ name: 'nonrelevant',
182
+ show: false,
183
+ description: 'fires after an fx-control became nonrelevant',
184
+ },
185
+ { name: 'optional', show: false, description: 'fires after an fx-control became optional' },
186
+ {
187
+ name: 'outermost-action-end',
188
+ show: false,
189
+ description: 'fires when an outermost action block is finished',
190
+ },
191
+ {
192
+ name: 'outermost-action-start',
193
+ show: false,
194
+ description: 'fires when an outermost action block is started',
195
+ },
196
+ {
197
+ name: 'path-mutated',
198
+ show: false,
199
+ description: 'fires when a path in a repeat has been mutated',
200
+ },
201
+ { name: 'readonly', show: false, description: 'fires after an fx-control became readonly' },
202
+ { name: 'readwrite', show: false, description: 'fires after an fx-control became readwrite' },
203
+ {
204
+ name: 'ready',
205
+ show: false,
206
+ description: 'fires after a fx-fore page has been completely initialized',
207
+ },
208
+ { name: 'rebuild-done', show: false, description: 'fires after a rebuild has taken place' },
209
+ {
210
+ name: 'recalculate-done',
211
+ show: false,
212
+ description: 'fires after a recalculate has taken place',
213
+ },
214
+ { name: 'refresh-done', show: false, description: 'fires after a refresh has been done' },
215
+ {
216
+ name: 'relevant',
217
+ show: false,
218
+ description: 'fires after a fx-control has become relevant',
219
+ },
220
+ { name: 'reload', show: false, description: 'fires when a fx-reload action executes' },
221
+ {
222
+ name: 'required',
223
+ show: false,
224
+ description: 'fires after an fx-control has become required',
225
+ },
226
+ { name: 'return', show: false, description: 'fires after a fx-return returned' },
227
+ { name: 'select', show: false, description: 'fires when an fx-case has been selected' },
228
+ { name: 'submit', show: false, description: 'fires before a submission takes place' },
229
+ {
230
+ name: 'submit-done',
231
+ show: false,
232
+ description: 'fires after a submission has successfully been executed',
233
+ },
234
+ {
235
+ name: 'submit-error',
236
+ show: false,
237
+ description: 'fires when a submission returned an error',
238
+ },
239
+ { name: 'valid', show: false, description: 'fires after a fx-control has become valid' },
240
+ {
241
+ name: 'value-changed',
242
+ show: false,
243
+ description: 'fires after a fx-control has changed its value',
244
+ },
245
+ ];
246
+ }
247
+
248
+ _log(e, log) {
249
+ const elementName = e.target.nodeName;
250
+ if (elementName === 'FX-ACTION-LOG') return;
251
+ // e.preventDefault();
252
+ // e.stopPropagation();
253
+
254
+ const row = document.createElement('div');
255
+ row.classList.add('log-row');
256
+ const logRow = this._logDetails(e);
257
+ if (
258
+ e.detail &&
259
+ Object.keys(e.detail).length === 0 &&
260
+ Object.getPrototypeOf(e.detail) === Object.prototype
261
+ ) {
262
+ row.classList.add('no-detail');
263
+ }
212
264
 
213
- row.innerHTML = logRow;
214
- if (this.outermost) {
215
- /*
265
+ row.innerHTML = logRow;
266
+ if (this.outermost) {
267
+ /*
216
268
  outermost-action-start and outermost-action-end are use as marker events only to start/end a list.
217
269
  They don't have aditional information to log.
218
270
  */
219
- if (e.type === 'outermost-action-start') return; // we don't want this event to actualy log something
220
- if (!this.outermostAppender) {
221
- this.outermostAppender = document.createElement('ul');
222
- log.append(this.outermostAppender);
223
- }
224
- const li = document.createElement('li');
225
- // li.innerHTML = logRow;
226
- li.append(row);
227
- this.outermostAppender.append(li);
228
- } else {
229
- log.append(row);
230
- }
231
-
232
- if (this.parentPath && elementName !== 'FX-ACTION') {
233
- row.classList.add('nested');
234
- }
235
-
236
- const targetElement = e.target;
237
- row.addEventListener('click', (ev) =>{
238
- // console.log('clicked inspect item', targetElement);
239
- // console.log('clicked inspect item', ev.target.getAttribute('xpath'));
240
-
241
- this._highlight(targetElement);
242
-
243
- });
244
-
245
-
246
- const logRowTarget = row.querySelector('.event-target');
247
- if (!logRowTarget) return;
248
-
249
- logRowTarget.addEventListener('click', e => {
250
- const alreadyLogged = document.querySelectorAll('.fx-action-log-debug');
251
- alreadyLogged.forEach(logged => {
252
- logged.classList.remove('fx-action-log-debug')
253
- });
254
-
255
- targetElement.dispatchEvent(
256
- new CustomEvent('log-action', {
257
- composed: false,
258
- bubbles: true,
259
- cancelable: true,
260
- detail: {target: targetElement},
261
- }),
262
- );
263
-
271
+ if (e.type === 'outermost-action-start') return; // we don't want this event to actualy log something
272
+ if (!this.outermostAppender) {
273
+ this.outermostAppender = document.createElement('ul');
274
+ log.append(this.outermostAppender);
275
+ }
276
+ const li = document.createElement('li');
277
+ // li.innerHTML = logRow;
278
+ li.append(row);
279
+ this.outermostAppender.append(li);
280
+ } else {
281
+ log.append(row);
282
+ }
264
283
 
265
- targetElement.classList.add('fx-action-log-debug');
266
- targetElement.setAttribute('data-name', targetElement.nodeName)
267
- this._highlight(targetElement);
284
+ if (this.parentPath && elementName !== 'FX-ACTION') {
285
+ row.classList.add('nested');
286
+ }
268
287
 
269
- });
270
- // log.append(logElements);
288
+ const targetElement = e.target;
289
+ row.addEventListener('click', ev => {
290
+ // console.log('clicked inspect item', targetElement);
291
+ // console.log('clicked inspect item', ev.target.getAttribute('xpath'));
292
+
293
+ this._highlight(targetElement);
294
+ });
295
+
296
+ const logRowTarget = row.querySelector('.event-target');
297
+ if (!logRowTarget) return;
298
+
299
+ logRowTarget.addEventListener('click', e => {
300
+ const alreadyLogged = document.querySelectorAll('.fx-action-log-debug');
301
+ alreadyLogged.forEach(logged => {
302
+ logged.classList.remove('fx-action-log-debug');
303
+ });
304
+
305
+ targetElement.dispatchEvent(
306
+ new CustomEvent('log-action', {
307
+ composed: false,
308
+ bubbles: true,
309
+ cancelable: true,
310
+ detail: { target: targetElement },
311
+ }),
312
+ );
313
+
314
+ targetElement.classList.add('fx-action-log-debug');
315
+ targetElement.setAttribute('data-name', targetElement.nodeName);
316
+ this._highlight(targetElement);
317
+ });
318
+ // log.append(logElements);
319
+ }
320
+
321
+ /**
322
+ * logs all configured events.
323
+ * Special treatment is given to action-execute event to log out all actions that
324
+ * are triggered.
325
+ *
326
+ * @param e the event to log
327
+ * @returns {string}
328
+ * @private
329
+ */
330
+ _logDetails(e) {
331
+ const eventType = e.type;
332
+ // console.log('>>>> event type', type)
333
+ const path = XPathUtil.getPath(e.target);
334
+ const cut = path.substring(path.indexOf('/fx-fore'), path.length);
335
+
336
+ const xpath = `/${cut}`;
337
+ const short = cut.replaceAll('fx-', '');
338
+
339
+ if (this.parentPath && !xpath.startsWith(this.parentPath)) {
340
+ this.parentPath = null;
271
341
  }
342
+ switch (eventType) {
343
+ case 'deleted':
344
+ const { deletedNodes } = e.detail;
345
+ const s = new XMLSerializer();
346
+ let serialized = '';
347
+ deletedNodes.forEach(node => {
348
+ serialized += s.serializeToString(node);
349
+ });
272
350
 
273
- /**
274
- * logs all configured events.
275
- * Special treatment is given to action-execute event to log out all actions that
276
- * are triggered.
277
- *
278
- * @param e the event to log
279
- * @returns {string}
280
- * @private
281
- */
282
- _logDetails(e) {
283
- const eventType = e.type;
284
- // console.log('>>>> event type', type)
285
- const path = XPathUtil.getPath(e.target);
286
- const cut = path.substring(path.indexOf('/fx-fore'), path.length);
287
- ;
288
- const xpath = `/${ cut}`;
289
- const short = cut.replaceAll('fx-', '');
290
-
291
-
292
- if (this.parentPath && !xpath.startsWith(this.parentPath)) {
293
- this.parentPath = null;
294
- }
295
- switch (eventType) {
296
- case 'deleted':
297
- const {deletedNodes} = e.detail;
298
- const s = new XMLSerializer();
299
- let serialized = '';
300
- deletedNodes.forEach(node => {
301
- serialized += s.serializeToString(node);
302
- });
303
-
304
- return `
351
+ return `
305
352
  <fx-log-item event-name="${eventType}"
306
353
  xpath="${xpath}"
307
354
  short-info="${e.detail.ref}"
@@ -315,20 +362,20 @@ export class FxLogSettings extends HTMLElement {
315
362
  </section>
316
363
  </fx-log-item>
317
364
  `;
318
- break;
319
- case 'outermost-action-start':
320
- return `start`;
321
- break;
322
- case 'outermost-action-end':
323
- return ``;
324
- break;
325
- case 'execute-action':
326
- // ##### here actions will be handled
327
- const actionElement = e.detail.action;
328
- return this._renderAction(actionElement, xpath, short, e);
329
- break;
330
- default:
331
- return `
365
+ break;
366
+ case 'outermost-action-start':
367
+ return 'start';
368
+ break;
369
+ case 'outermost-action-end':
370
+ return '';
371
+ break;
372
+ case 'execute-action':
373
+ // ##### here actions will be handled
374
+ const actionElement = e.detail.action;
375
+ return this._renderAction(actionElement, xpath, short, e);
376
+ break;
377
+ default:
378
+ return `
332
379
  <fx-log-item event-name="${eventType}"
333
380
  xpath="${xpath}"
334
381
  short-name="${e.target.nodeName.toLowerCase()}">
@@ -338,35 +385,39 @@ export class FxLogSettings extends HTMLElement {
338
385
  </section>
339
386
  </fx-log-item>
340
387
  `;
341
- }
342
-
343
- // }
344
388
  }
345
389
 
346
- _renderAction(actionElement, xpath, short, e) {
347
- const stripped = actionElement.nodeName.split('-')[1];
348
- switch (actionElement.nodeName) {
349
- case 'FX-ACTION':
350
- this.parentPath = xpath;
351
- return `
390
+ // }
391
+ }
392
+
393
+ _renderAction(actionElement, xpath, short, e) {
394
+ const stripped = actionElement.nodeName.split('-')[1];
395
+ switch (actionElement.nodeName) {
396
+ case 'FX-ACTION':
397
+ this.parentPath = xpath;
398
+ return `
352
399
  <fx-log-item event-name="${e.detail.event}"
353
400
  xpath="${xpath}"
354
401
  short-name="ACTION" class="action">
355
402
  <section class="details">
356
403
  <header>Attributes</header>
357
404
  <section>
358
- ${Array.from(actionElement.attributes).map((item) => `
405
+ ${Array.from(actionElement.attributes)
406
+ .map(
407
+ item => `
359
408
  <span class="key">${item.nodeName}</span>
360
409
  <span class="value">${item.nodeValue}</span>
361
- `).join('')}
410
+ `,
411
+ )
412
+ .join('')}
362
413
  </section>
363
414
  </section>
364
415
  </fx-log-item>
365
416
  `;
366
- // break;
367
- case 'FX-MESSAGE':
368
- const message = e.detail.action.messageTextContent;
369
- return `
417
+ // break;
418
+ case 'FX-MESSAGE':
419
+ const message = e.detail.action.messageTextContent;
420
+ return `
370
421
  <fx-log-item event-name="${e.detail.event}"
371
422
  xpath="${xpath}"
372
423
  short-name="MESSAGE"
@@ -376,10 +427,10 @@ export class FxLogSettings extends HTMLElement {
376
427
  </section>
377
428
  </fx-log-item>
378
429
  `;
379
- // break;
380
- case 'FX-SEND':
381
- const submission = document.querySelector(`#${ e.detail.action.getAttribute('submission')}`);
382
- return `
430
+ // break;
431
+ case 'FX-SEND':
432
+ const submission = document.querySelector(`#${e.detail.action.getAttribute('submission')}`);
433
+ return `
383
434
  <fx-log-item short-name="SEND"
384
435
  short-info="${submission.id}"
385
436
  event-name="${e.detail.event}"
@@ -387,19 +438,24 @@ export class FxLogSettings extends HTMLElement {
387
438
  <section class="details">
388
439
  <header>Submission</header>
389
440
  <section class="attributes">
390
- ${Array.from(submission.attributes).map((item) => `
441
+ ${Array.from(submission.attributes)
442
+ .map(
443
+ item => `
391
444
  <span class="key">${item.nodeName}</span>
392
445
  <span class="value">${item.nodeValue}</span>
393
- `).join('')}
446
+ `,
447
+ )
448
+ .join('')}
394
449
  </section>
395
450
  </section>
396
451
  </fx-log-item>
397
452
  `;
398
- // break;
399
- case 'FX-SETVALUE':
400
- const instPath = XPathUtil.getPath(e.target.nodeset);
401
- const listensOn = e.target.nodeName === 'FX-CONTROL' ? e.target.updateEvent : e.detail.event;
402
- return `
453
+ // break;
454
+ case 'FX-SETVALUE':
455
+ const instPath = XPathUtil.getPath(e.target.nodeset);
456
+ const listensOn =
457
+ e.target.nodeName === 'FX-CONTROL' ? e.target.updateEvent : e.detail.event;
458
+ return `
403
459
  <fx-log-item short-name="SETVALUE"
404
460
  short-info="${instPath}"
405
461
  event-name="${listensOn}"
@@ -410,9 +466,9 @@ export class FxLogSettings extends HTMLElement {
410
466
  </section>
411
467
  </fx-log-item>
412
468
  `;
413
- // break;
414
- default:
415
- return `
469
+ // break;
470
+ default:
471
+ return `
416
472
  <fx-log-item event-name="${e.detail.event}"
417
473
  short-name="${e.target.nodeName}"
418
474
  xpath="${xpath}"
@@ -421,24 +477,25 @@ export class FxLogSettings extends HTMLElement {
421
477
  </section>
422
478
  </fx-log-item>
423
479
  `;
424
- }
425
480
  }
426
-
427
- _listEventDetails(e) {
428
- if (e.detail &&
429
- Object.keys(e.detail).length === 0 &&
430
- Object.getPrototypeOf(e.detail) === Object.prototype) {
431
- return ``;
432
- }
433
- return `${Object.keys(e.detail).map((item) => `<span>${item}</span>`)}`;
434
-
481
+ }
482
+
483
+ _listEventDetails(e) {
484
+ if (
485
+ e.detail &&
486
+ Object.keys(e.detail).length === 0 &&
487
+ Object.getPrototypeOf(e.detail) === Object.prototype
488
+ ) {
489
+ return '';
435
490
  }
436
-
437
- _listAttributes(e) {
438
- // console.log('_listAttributes', e)
439
- return ``;
440
- // return `${e.detail.model.id}`;
441
- /*
491
+ return `${Object.keys(e.detail).map(item => `<span>${item}</span>`)}`;
492
+ }
493
+
494
+ _listAttributes(e) {
495
+ // console.log('_listAttributes', e)
496
+ return '';
497
+ // return `${e.detail.model.id}`;
498
+ /*
442
499
  if(e.detail &&
443
500
  Object.keys(e.detail).length === 0 &&
444
501
  Object.getPrototypeOf(e.detail) === Object.prototype){
@@ -447,28 +504,28 @@ export class FxLogSettings extends HTMLElement {
447
504
  return `${e.detail.map((item) => `<span>${item}</span>`)}`;
448
505
  }
449
506
  */
450
- }
451
-
452
- _highlight(element) {
453
- const defaultBG = element.style.backgroundColor;
454
- const defaultTransition = element.style.transition;
455
-
456
- element.style.transition = "background 1s";
457
- element.style.backgroundColor = "#FFA500";
458
-
459
- setTimeout(() => {
460
- element.style.backgroundColor = defaultBG;
461
- setTimeout(() => {
462
- element.style.transition = defaultTransition;
463
- }, 400);
464
- }, 400);
465
-
466
- window.document.dispatchEvent(new CustomEvent('log-active-element', {detail:{target: element}}));
467
-
468
- }
469
-
507
+ }
508
+
509
+ _highlight(element) {
510
+ const defaultBG = element.style.backgroundColor;
511
+ const defaultTransition = element.style.transition;
512
+
513
+ element.style.transition = 'background 1s';
514
+ element.style.backgroundColor = '#FFA500';
515
+
516
+ setTimeout(() => {
517
+ element.style.backgroundColor = defaultBG;
518
+ setTimeout(() => {
519
+ element.style.transition = defaultTransition;
520
+ }, 400);
521
+ }, 400);
522
+
523
+ window.document.dispatchEvent(
524
+ new CustomEvent('log-active-element', { detail: { target: element } }),
525
+ );
526
+ }
470
527
  }
471
528
 
472
529
  if (!customElements.get('fx-log-settings')) {
473
- customElements.define('fx-log-settings', FxLogSettings);
530
+ customElements.define('fx-log-settings', FxLogSettings);
474
531
  }