@quandis/qbo4.configuration 4.0.1-CI-20240604-223557 → 4.0.1-CI-20240610-201642

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quandis/qbo4.configuration",
3
- "version": "4.0.1-CI-20240604-223557",
3
+ "version": "4.0.1-CI-20240610-201642",
4
4
  "type": "module",
5
5
  "types": "./src/Program.d.ts",
6
6
  "exports": {
@@ -15,7 +15,13 @@
15
15
  "scss/"
16
16
  ],
17
17
  "dependencies": {
18
+ "@codemirror/autocomplete": "^6.16.2",
19
+ "@codemirror/commands": "^6.6.0",
20
+ "@codemirror/lang-html": "^6.4.9",
21
+ "@codemirror/state": "^6.4.1",
22
+ "@codemirror/view": "^6.27.0",
18
23
  "bootstrap": "^5.3.3",
24
+ "codemirror": "^6.0.1",
19
25
  "lit": "^3.1.2",
20
26
  "reflect-metadata": "^0.2.1",
21
27
  "tsyringe": "^4.8.0"
package/readme.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Overview
2
2
 
3
3
  The `@quandis/qbo4.Configuration.Web` package offers javascript classes to manage configuration settings for a web application.
4
- It is pattered on Microsoft's `IConfiguration` patterns and extensions.
4
+ It is similar to Microsoft's `IConfiguration` patterns and extensions.
5
5
 
6
6
  Including the `qbo4.Configuration.js` script will provide:
7
7
 
@@ -0,0 +1,56 @@
1
+ @import "../node_modules/bootstrap/scss/bootstrap";
2
+
3
+ .popup-editor {
4
+ position: fixed;
5
+ top: 100px;
6
+ left: 100px;
7
+ width: 60%;
8
+ height: 50%;
9
+ background: white;
10
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
11
+ border: 1px solid #ddd;
12
+ @extend .modal-content;
13
+ z-index: 1000;
14
+ resize: both;
15
+ overflow: auto;
16
+ }
17
+
18
+ .popup-editor header {
19
+ /*background: #f0f0f0;
20
+ padding: 10px;*/
21
+ cursor: move;
22
+ @extend .modal-header;
23
+ }
24
+
25
+ .popup-editor section {
26
+ /*padding: 10px;*/
27
+ @extend .modal-body;
28
+ }
29
+
30
+ .popup-editor footer {
31
+ @extend .modal-footer;
32
+ }
33
+
34
+ .popup-editor input {
35
+ @extend .form-control;
36
+ }
37
+
38
+ .popup-editor button {
39
+ @extend .btn;
40
+ }
41
+ .popup-editor button[type="submit"]
42
+ {
43
+ @extend .btn-primary;
44
+ }
45
+
46
+ .popup-editor button[type="reset"] {
47
+ @extend .btn-light;
48
+ }
49
+
50
+ /*.popup-editor .resize-handle {
51
+ @extend .modal-footer;
52
+ }*/
53
+ .error {
54
+ @extend .alert;
55
+ @extend .alert-danger;
56
+ }
package/src/Program.d.ts CHANGED
@@ -4,6 +4,7 @@ declare global {
4
4
  }
5
5
  }
6
6
  import 'reflect-metadata';
7
+ export { html } from 'lit';
7
8
  export * from './Services.js';
8
9
  export * from './IConfiguration.js';
9
10
  export * from './Configuration.js';
package/src/Program.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import 'reflect-metadata';
2
+ export { html } from 'lit';
2
3
  export * from './Services.js';
3
4
  export * from './IConfiguration.js';
4
5
  export * from './Configuration.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Program.js","sourceRoot":"","sources":["Program.ts"],"names":[],"mappings":"AAOA,OAAO,kBAAkB,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"Program.js","sourceRoot":"","sources":["Program.ts"],"names":[],"mappings":"AAOA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC"}
package/src/Program.ts CHANGED
@@ -6,6 +6,7 @@ declare global {
6
6
  }
7
7
 
8
8
  import 'reflect-metadata';
9
+ export { html } from 'lit';
9
10
  export * from './Services.js';
10
11
  export * from './IConfiguration.js';
11
12
  export * from './Configuration.js';
@@ -7,18 +7,50 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { LitElement } from 'lit';
10
+ import { LitElement, css, html } from 'lit';
11
11
  import { property } from 'lit/decorators.js';
12
+ import { basicSetup } from "codemirror";
13
+ import { EditorView, keymap } from "@codemirror/view";
14
+ import { html as htmlcode } from "@codemirror/lang-html";
15
+ import { indentWithTab } from "@codemirror/commands";
16
+ import { configurationCss } from './styles.js';
12
17
  const scriptCache = {};
13
18
  export const templates = new Map();
14
19
  export const QboTemplateMixin = (superClass) => {
15
20
  class QboTemplateClass extends superClass {
21
+ static { this.styles = [
22
+ configurationCss,
23
+ css `
24
+ :host {
25
+ display: block;
26
+ position: relative;
27
+ }
28
+
29
+ :host-context(.qbo-design):host(:hover) {
30
+ outline: 1px dashed #0078d4;
31
+ background-color: #f0f8ff;
32
+ cursor: pointer;
33
+ }`
34
+ ]; }
16
35
  constructor(...args) {
17
36
  super(...args);
18
- this.type = '';
19
- this.templateEndpoint = '/configuration/templates';
37
+ this.dragging = false;
38
+ this.resizing = false;
39
+ this.offsetX = 0;
40
+ this.offsetY = 0;
41
+ this.startWidth = 0;
42
+ this.startHeight = 0;
43
+ this.regex = /`(.*?)`/s;
44
+ // when true, the editor will show the error class
45
+ this.editorError = null;
46
+ this.type = null;
47
+ this.editing = false;
48
+ this.defaultTemplate = (component) => html `<span>Template matching ${component.type} not defined</span>`;
49
+ this.templateEndpoint = '/template';
20
50
  this.prefix = null;
21
51
  this.map = undefined;
52
+ this.editor = null;
53
+ this.editorType = this.type;
22
54
  }
23
55
  async connectedCallback() {
24
56
  super.connectedCallback();
@@ -32,9 +64,99 @@ export const QboTemplateMixin = (superClass) => {
32
64
  if (this.map === undefined)
33
65
  console.error(`The prefix ${this.prefix} is not defined in the templates map.`);
34
66
  // Don't bother with the API call if we already have the template.
35
- if (this.map && !this.map.has(this.type)) {
67
+ if (this.map && this.type && !this.map.has(this.type)) {
36
68
  await this.loadScript(this.prefix);
37
69
  }
70
+ this.addEventListener('dblclick', this.requestEdit.bind(this));
71
+ this.shadowRoot?.addEventListener('mousedown', this._onMouseDown.bind(this));
72
+ this.shadowRoot?.addEventListener('mousedown', this._onResizeMouseDown.bind(this), true);
73
+ window.addEventListener('mousemove', this._onMouseMove.bind(this));
74
+ window.addEventListener('mouseup', this._onMouseUp.bind(this));
75
+ }
76
+ async disconnectedCallback() {
77
+ this.removeEventListener('dblclick', this.requestEdit.bind(this));
78
+ this.shadowRoot?.removeEventListener('mousedown', this._onMouseDown.bind(this));
79
+ this.shadowRoot?.removeEventListener('mousedown', this._onResizeMouseDown.bind(this), true);
80
+ window.removeEventListener('mousemove', this._onMouseMove.bind(this));
81
+ window.removeEventListener('mouseup', this._onMouseUp.bind(this));
82
+ }
83
+ _onMouseDown(event) {
84
+ if (!event.target.closest('.popup-editor header'))
85
+ return;
86
+ this.dragging = true;
87
+ const editor = this.shadowRoot?.querySelector('.popup-editor');
88
+ if (editor) {
89
+ this.offsetX = event.clientX - editor.getBoundingClientRect().left;
90
+ this.offsetY = event.clientY - editor.getBoundingClientRect().top;
91
+ }
92
+ }
93
+ _onResizeMouseDown(event) {
94
+ if (!event.target.closest('.popup-editor .resize-handle'))
95
+ return;
96
+ this.resizing = true;
97
+ const editor = this.shadowRoot?.querySelector('.popup-editor');
98
+ if (editor) {
99
+ this.startWidth = editor.offsetWidth;
100
+ this.startHeight = editor.offsetHeight;
101
+ this.offsetX = event.clientX;
102
+ this.offsetY = event.clientY;
103
+ }
104
+ }
105
+ _onMouseMove(event) {
106
+ if (this.dragging) {
107
+ const editor = this.shadowRoot?.querySelector('.popup-editor');
108
+ const x = event.clientX - this.offsetX;
109
+ const y = event.clientY - this.offsetY;
110
+ if (editor) {
111
+ editor.style.left = `${x}px`;
112
+ editor.style.top = `${y}px`;
113
+ }
114
+ }
115
+ else if (this.resizing) {
116
+ const editor = this.shadowRoot?.querySelector('.popup-editor');
117
+ if (editor) {
118
+ editor.style.width = `${this.startWidth + (event.clientX - this.offsetX)}px`;
119
+ editor.style.height = `${this.startHeight + (event.clientY - this.offsetY)}px`;
120
+ }
121
+ }
122
+ }
123
+ _onMouseUp() {
124
+ this.dragging = false;
125
+ this.resizing = false;
126
+ }
127
+ // Function to flatten JSON object keys for use in autocomplete
128
+ flattenObjectKeys(obj, prefix = '') {
129
+ return Object.keys(obj).reduce((res, k) => {
130
+ const pre = prefix.length ? `${prefix}.` : '';
131
+ if (typeof obj[k] === 'object' && obj[k] !== null) {
132
+ res = res.concat(this.flattenObjectKeys(obj[k], `${pre}${k}`));
133
+ }
134
+ else {
135
+ res.push(`${pre}${k}`);
136
+ }
137
+ return res;
138
+ }, []);
139
+ }
140
+ // Function to flatten properties of a LitElement-derived component for use in autocomplete
141
+ flattenComponentKeys(component) {
142
+ const keys = [];
143
+ const proto = Object.getPrototypeOf(component);
144
+ // Use Reflect API to get metadata if available
145
+ const propertyKeys = Object.getOwnPropertyNames(proto);
146
+ propertyKeys.forEach((key) => {
147
+ if (key === 'constructor' || key.startsWith('_'))
148
+ return; // Skip constructor and private fields
149
+ const metadata = Reflect.getMetadata('design:type', proto, key);
150
+ if (metadata) {
151
+ if (typeof component[key] === 'object' && component[key] !== null) {
152
+ keys.push(...this.flattenObjectKeys(component[key], key));
153
+ }
154
+ else {
155
+ keys.push(key);
156
+ }
157
+ }
158
+ });
159
+ return keys.map(key => ({ label: key, type: 'variable' }));
38
160
  }
39
161
  async loadScript(prefix) {
40
162
  if (!scriptCache[prefix]) {
@@ -44,15 +166,16 @@ export const QboTemplateMixin = (superClass) => {
44
166
  const scriptText = await scriptCache[prefix];
45
167
  this.appendScriptToHead(scriptText);
46
168
  console.log(`Template script for ${this.prefix} loaded and executed.`);
169
+ this.requestUpdate();
47
170
  }
48
171
  catch (error) {
49
172
  console.error(`Template script for ${this.prefix} failed to load:`, error);
50
173
  }
51
174
  }
52
175
  async fetchScript(prefix) {
53
- const response = await fetch(`${this.templateEndpoint}/${prefix}`);
176
+ const response = await fetch(`${this.templateEndpoint}/search/${prefix}`);
54
177
  if (!response.ok) {
55
- throw new Error('Network response was not ok');
178
+ throw new Error(`Failed to fetch templates from: ${this.templateEndpoint}/search/${prefix}`);
56
179
  }
57
180
  return response.text();
58
181
  }
@@ -62,11 +185,153 @@ export const QboTemplateMixin = (superClass) => {
62
185
  scriptElement.text = scriptText;
63
186
  document.head.appendChild(scriptElement);
64
187
  }
188
+ requestEdit(event) {
189
+ if (event.ctrlKey && this.closest('.qbo-design')) {
190
+ this.toggleEdit(!this.editing);
191
+ }
192
+ }
193
+ toggleEdit(editing) {
194
+ this.editing = editing;
195
+ if (!this.editing) {
196
+ this.testTemplate = undefined;
197
+ this.editor?.destroy();
198
+ this.editor = null;
199
+ }
200
+ }
201
+ // Creates a function from the user's input.
202
+ setTemplate(content) {
203
+ const test = new Function('component', `return qbo4.configuration.html\`${content}\``);
204
+ try {
205
+ test(this);
206
+ this.editorError = undefined;
207
+ this.testTemplate = test;
208
+ }
209
+ catch (e) {
210
+ this.editorError = e;
211
+ console.error(`Error rendering ${content}`, e);
212
+ }
213
+ }
214
+ // resets the template, ignoring the user's input.
215
+ resetTemplate(event) {
216
+ this.editorType = event.target.value;
217
+ if (this.map?.has(event.target.value))
218
+ this.testTemplate = this.map.get(event.target.value) ?? this.defaultTemplate;
219
+ let expression = '<span>Template not defined</span>';
220
+ if (this.testTemplate !== undefined) {
221
+ const matches = this.testTemplate.toString().match(this.regex);
222
+ if (matches) {
223
+ expression = matches[1];
224
+ }
225
+ }
226
+ this.editor?.dispatch(this.editor.state.update({
227
+ changes: { from: 0, to: this.editor.state.doc.length, insert: expression }
228
+ }));
229
+ }
230
+ updated(changedProperties) {
231
+ super.update(changedProperties);
232
+ let expression = '<span>Template not defined</span>';
233
+ if (this.testTemplate !== undefined) {
234
+ const matches = this.testTemplate.toString().match(this.regex);
235
+ if (matches) {
236
+ expression = matches[1];
237
+ }
238
+ }
239
+ if (this.editing) {
240
+ // const componentKeys = this.flattenComponentKeys(this);
241
+ // todo: create a custom autocomplete source
242
+ this.editor ??= new EditorView({
243
+ doc: expression,
244
+ extensions: [
245
+ basicSetup,
246
+ htmlcode(),
247
+ keymap.of([indentWithTab]),
248
+ EditorView.updateListener.of((e) => {
249
+ this.setTemplate(e.state.doc.toString());
250
+ // this.dispatchEvent(new CustomEvent('change', { detail: { code: this.value } }));
251
+ })
252
+ ],
253
+ parent: this.shadowRoot?.querySelector('div.editor')
254
+ // parent: <DocumentFragment>this.shadowRoot,
255
+ });
256
+ }
257
+ }
258
+ edit() {
259
+ this.testTemplate ??= this.type ? this.map?.get(this.type) : this.defaultTemplate;
260
+ const id = Math.random().toString(36).substring(2, 15);
261
+ return html `
262
+ <dialog class="popup-editor" open>
263
+ <header>
264
+ <h5>Edit Template</h5>
265
+ </header>
266
+ <section class="content">
267
+ <input list="${id}" .value=${this.type} @change=${this.resetTemplate}>
268
+ <datalist id="${id}">
269
+ ${Array.from(this.map?.keys() ?? []).map((key) => html `<option>${key}</option>`)}
270
+ </datalist>
271
+ <div class="editor"></div>
272
+ ${this.editorError ? html `<hr/><span class="error">${this.editorError.message}<span>` : html ``}
273
+ </section>
274
+ <footer >
275
+ <button type="submit" @click=${this.save}>Save</button>
276
+ <button type="reset" @click=${this.cancel}>Cancel</button>
277
+ </footer>
278
+ </dialog>`;
279
+ }
280
+ cancel() {
281
+ this.toggleEdit(false);
282
+ }
283
+ async save() {
284
+ try {
285
+ if (this.editor == null)
286
+ return;
287
+ const formData = new FormData();
288
+ formData.append('htmlTemplate', this.editor.state.doc.toString());
289
+ const response = await fetch(`${this.templateEndpoint}/save/${this.prefix}/${this.editorType}`, {
290
+ method: 'POST',
291
+ body: formData
292
+ });
293
+ if (response.ok) {
294
+ this.map?.set(this.editorType, this.testTemplate);
295
+ this.type = this.editorType;
296
+ this.toggleEdit(false);
297
+ return;
298
+ }
299
+ throw new Error(`Failed to save template: ${response.statusText}`);
300
+ }
301
+ catch (e) {
302
+ throw e;
303
+ }
304
+ }
305
+ render() {
306
+ let template = this.defaultTemplate;
307
+ if (this.type && this.map?.has(this.type))
308
+ template = this.map.get(this.type);
309
+ return (this.editing)
310
+ ? html `${this.edit()}${this.testTemplate(this)}`
311
+ : template(this);
312
+ // return html`${this.editing ? this.edit() : html``}${this.editing ? this.testTemplate(this) : template(this)}`
313
+ }
65
314
  }
315
+ __decorate([
316
+ property({ attribute: false }),
317
+ __metadata("design:type", Object)
318
+ ], QboTemplateClass.prototype, "editorError", void 0);
66
319
  __decorate([
67
320
  property(),
68
321
  __metadata("design:type", Object)
69
322
  ], QboTemplateClass.prototype, "type", void 0);
323
+ __decorate([
324
+ property(),
325
+ __metadata("design:type", Object)
326
+ ], QboTemplateClass.prototype, "editing", void 0);
327
+ __decorate([
328
+ property({ attribute: false }),
329
+ __metadata("design:type", Function)
330
+ ], QboTemplateClass.prototype, "defaultTemplate", void 0);
331
+ __decorate([
332
+ property({ attribute: false }),
333
+ __metadata("design:type", Object)
334
+ ], QboTemplateClass.prototype, "testTemplate", void 0);
70
335
  __decorate([
71
336
  property(),
72
337
  __metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"qbo-template.js","sourceRoot":"","sources":["qbo-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qbo-template.js","sourceRoot":"","sources":["qbo-template.ts"],"names":[],"mappings":"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"}