@design.estate/dees-wcctools 1.2.0 → 1.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 (35) hide show
  1. package/dist_bundle/bundle.js +1700 -264
  2. package/dist_bundle/bundle.js.map +4 -4
  3. package/dist_ts_demotools/demotools.d.ts +1 -1
  4. package/dist_ts_demotools/demotools.js +86 -38
  5. package/dist_ts_web/00_commitinfo_data.js +1 -1
  6. package/dist_ts_web/elements/wcc-dashboard.d.ts +10 -10
  7. package/dist_ts_web/elements/wcc-dashboard.js +317 -245
  8. package/dist_ts_web/elements/wcc-frame.d.ts +3 -3
  9. package/dist_ts_web/elements/wcc-frame.js +108 -57
  10. package/dist_ts_web/elements/wcc-properties.d.ts +14 -8
  11. package/dist_ts_web/elements/wcc-properties.js +442 -323
  12. package/dist_ts_web/elements/wcc-record-button.d.ts +12 -0
  13. package/dist_ts_web/elements/wcc-record-button.js +165 -0
  14. package/dist_ts_web/elements/wcc-recording-panel.d.ts +42 -0
  15. package/dist_ts_web/elements/wcc-recording-panel.js +1063 -0
  16. package/dist_ts_web/elements/wcc-sidebar.d.ts +4 -4
  17. package/dist_ts_web/elements/wcc-sidebar.js +125 -71
  18. package/dist_ts_web/index.d.ts +3 -0
  19. package/dist_ts_web/index.js +5 -1
  20. package/dist_ts_web/services/recorder.service.d.ts +44 -0
  21. package/dist_ts_web/services/recorder.service.js +306 -0
  22. package/dist_watch/bundle.js +1939 -521
  23. package/dist_watch/bundle.js.map +4 -4
  24. package/package.json +10 -10
  25. package/readme.md +133 -141
  26. package/ts_web/00_commitinfo_data.ts +1 -1
  27. package/ts_web/elements/wcc-dashboard.ts +10 -10
  28. package/ts_web/elements/wcc-frame.ts +3 -3
  29. package/ts_web/elements/wcc-properties.ts +53 -9
  30. package/ts_web/elements/wcc-record-button.ts +108 -0
  31. package/ts_web/elements/wcc-recording-panel.ts +974 -0
  32. package/ts_web/elements/wcc-sidebar.ts +4 -4
  33. package/ts_web/index.ts +5 -0
  34. package/ts_web/readme.md +123 -0
  35. package/ts_web/services/recorder.service.ts +391 -0
@@ -1,11 +1,36 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
6
27
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
9
34
  };
10
35
  import { DeesElement, property, html, customElement, queryAsync, render, domtools } from '@design.estate/dees-element';
11
36
  import { resolveTemplateFactory } from './wcctools.helpers.js';
@@ -18,30 +43,117 @@ import {} from './wcc-properties.js';
18
43
  import {} from './wcc-sidebar.js';
19
44
  import { breakpoints } from '@design.estate/dees-domtools';
20
45
  import { WccFrame } from './wcc-frame.js';
21
- let WccDashboard = class WccDashboard extends DeesElement {
22
- constructor(elementsArg, pagesArg) {
23
- super();
24
- this.selectedViewport = 'desktop';
25
- this.selectedTheme = 'dark';
26
- this.isFullscreen = false;
27
- this.pages = {};
28
- this.elements = {};
29
- this.warning = null;
30
- this.frameScrollY = 0;
31
- this.sidebarScrollY = 0;
32
- this.scrollPositionsApplied = false;
33
- this.scrollListenersAttached = false;
34
- if (elementsArg) {
35
- this.elements = elementsArg;
36
- console.log('got elements:');
37
- console.log(this.elements);
46
+ let WccDashboard = (() => {
47
+ let _classDecorators = [customElement('wcc-dashboard')];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ let _classSuper = DeesElement;
52
+ let _selectedType_decorators;
53
+ let _selectedType_initializers = [];
54
+ let _selectedType_extraInitializers = [];
55
+ let _selectedItemName_decorators;
56
+ let _selectedItemName_initializers = [];
57
+ let _selectedItemName_extraInitializers = [];
58
+ let _selectedItem_decorators;
59
+ let _selectedItem_initializers = [];
60
+ let _selectedItem_extraInitializers = [];
61
+ let _selectedViewport_decorators;
62
+ let _selectedViewport_initializers = [];
63
+ let _selectedViewport_extraInitializers = [];
64
+ let _selectedTheme_decorators;
65
+ let _selectedTheme_initializers = [];
66
+ let _selectedTheme_extraInitializers = [];
67
+ let _isFullscreen_decorators;
68
+ let _isFullscreen_initializers = [];
69
+ let _isFullscreen_extraInitializers = [];
70
+ let _pages_decorators;
71
+ let _pages_initializers = [];
72
+ let _pages_extraInitializers = [];
73
+ let _elements_decorators;
74
+ let _elements_initializers = [];
75
+ let _elements_extraInitializers = [];
76
+ let _warning_decorators;
77
+ let _warning_initializers = [];
78
+ let _warning_extraInitializers = [];
79
+ let _wccFrame_decorators;
80
+ let _wccFrame_initializers = [];
81
+ let _wccFrame_extraInitializers = [];
82
+ var WccDashboard = class extends _classSuper {
83
+ static { _classThis = this; }
84
+ static {
85
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
86
+ _selectedType_decorators = [property()];
87
+ _selectedItemName_decorators = [property()];
88
+ _selectedItem_decorators = [property()];
89
+ _selectedViewport_decorators = [property()];
90
+ _selectedTheme_decorators = [property()];
91
+ _isFullscreen_decorators = [property()];
92
+ _pages_decorators = [property()];
93
+ _elements_decorators = [property()];
94
+ _warning_decorators = [property()];
95
+ _wccFrame_decorators = [queryAsync('wcc-frame')];
96
+ __esDecorate(this, null, _selectedType_decorators, { kind: "accessor", name: "selectedType", static: false, private: false, access: { has: obj => "selectedType" in obj, get: obj => obj.selectedType, set: (obj, value) => { obj.selectedType = value; } }, metadata: _metadata }, _selectedType_initializers, _selectedType_extraInitializers);
97
+ __esDecorate(this, null, _selectedItemName_decorators, { kind: "accessor", name: "selectedItemName", static: false, private: false, access: { has: obj => "selectedItemName" in obj, get: obj => obj.selectedItemName, set: (obj, value) => { obj.selectedItemName = value; } }, metadata: _metadata }, _selectedItemName_initializers, _selectedItemName_extraInitializers);
98
+ __esDecorate(this, null, _selectedItem_decorators, { kind: "accessor", name: "selectedItem", static: false, private: false, access: { has: obj => "selectedItem" in obj, get: obj => obj.selectedItem, set: (obj, value) => { obj.selectedItem = value; } }, metadata: _metadata }, _selectedItem_initializers, _selectedItem_extraInitializers);
99
+ __esDecorate(this, null, _selectedViewport_decorators, { kind: "accessor", name: "selectedViewport", static: false, private: false, access: { has: obj => "selectedViewport" in obj, get: obj => obj.selectedViewport, set: (obj, value) => { obj.selectedViewport = value; } }, metadata: _metadata }, _selectedViewport_initializers, _selectedViewport_extraInitializers);
100
+ __esDecorate(this, null, _selectedTheme_decorators, { kind: "accessor", name: "selectedTheme", static: false, private: false, access: { has: obj => "selectedTheme" in obj, get: obj => obj.selectedTheme, set: (obj, value) => { obj.selectedTheme = value; } }, metadata: _metadata }, _selectedTheme_initializers, _selectedTheme_extraInitializers);
101
+ __esDecorate(this, null, _isFullscreen_decorators, { kind: "accessor", name: "isFullscreen", static: false, private: false, access: { has: obj => "isFullscreen" in obj, get: obj => obj.isFullscreen, set: (obj, value) => { obj.isFullscreen = value; } }, metadata: _metadata }, _isFullscreen_initializers, _isFullscreen_extraInitializers);
102
+ __esDecorate(this, null, _pages_decorators, { kind: "accessor", name: "pages", static: false, private: false, access: { has: obj => "pages" in obj, get: obj => obj.pages, set: (obj, value) => { obj.pages = value; } }, metadata: _metadata }, _pages_initializers, _pages_extraInitializers);
103
+ __esDecorate(this, null, _elements_decorators, { kind: "accessor", name: "elements", static: false, private: false, access: { has: obj => "elements" in obj, get: obj => obj.elements, set: (obj, value) => { obj.elements = value; } }, metadata: _metadata }, _elements_initializers, _elements_extraInitializers);
104
+ __esDecorate(this, null, _warning_decorators, { kind: "accessor", name: "warning", static: false, private: false, access: { has: obj => "warning" in obj, get: obj => obj.warning, set: (obj, value) => { obj.warning = value; } }, metadata: _metadata }, _warning_initializers, _warning_extraInitializers);
105
+ __esDecorate(this, null, _wccFrame_decorators, { kind: "accessor", name: "wccFrame", static: false, private: false, access: { has: obj => "wccFrame" in obj, get: obj => obj.wccFrame, set: (obj, value) => { obj.wccFrame = value; } }, metadata: _metadata }, _wccFrame_initializers, _wccFrame_extraInitializers);
106
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
107
+ WccDashboard = _classThis = _classDescriptor.value;
108
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
109
+ __runInitializers(_classThis, _classExtraInitializers);
38
110
  }
39
- if (pagesArg) {
40
- this.pages = pagesArg;
111
+ #selectedType_accessor_storage = __runInitializers(this, _selectedType_initializers, void 0);
112
+ get selectedType() { return this.#selectedType_accessor_storage; }
113
+ set selectedType(value) { this.#selectedType_accessor_storage = value; }
114
+ #selectedItemName_accessor_storage = (__runInitializers(this, _selectedType_extraInitializers), __runInitializers(this, _selectedItemName_initializers, void 0));
115
+ get selectedItemName() { return this.#selectedItemName_accessor_storage; }
116
+ set selectedItemName(value) { this.#selectedItemName_accessor_storage = value; }
117
+ #selectedItem_accessor_storage = (__runInitializers(this, _selectedItemName_extraInitializers), __runInitializers(this, _selectedItem_initializers, void 0));
118
+ get selectedItem() { return this.#selectedItem_accessor_storage; }
119
+ set selectedItem(value) { this.#selectedItem_accessor_storage = value; }
120
+ #selectedViewport_accessor_storage = (__runInitializers(this, _selectedItem_extraInitializers), __runInitializers(this, _selectedViewport_initializers, 'desktop'));
121
+ get selectedViewport() { return this.#selectedViewport_accessor_storage; }
122
+ set selectedViewport(value) { this.#selectedViewport_accessor_storage = value; }
123
+ #selectedTheme_accessor_storage = (__runInitializers(this, _selectedViewport_extraInitializers), __runInitializers(this, _selectedTheme_initializers, 'dark'));
124
+ get selectedTheme() { return this.#selectedTheme_accessor_storage; }
125
+ set selectedTheme(value) { this.#selectedTheme_accessor_storage = value; }
126
+ #isFullscreen_accessor_storage = (__runInitializers(this, _selectedTheme_extraInitializers), __runInitializers(this, _isFullscreen_initializers, false));
127
+ get isFullscreen() { return this.#isFullscreen_accessor_storage; }
128
+ set isFullscreen(value) { this.#isFullscreen_accessor_storage = value; }
129
+ #pages_accessor_storage = (__runInitializers(this, _isFullscreen_extraInitializers), __runInitializers(this, _pages_initializers, {}));
130
+ get pages() { return this.#pages_accessor_storage; }
131
+ set pages(value) { this.#pages_accessor_storage = value; }
132
+ #elements_accessor_storage = (__runInitializers(this, _pages_extraInitializers), __runInitializers(this, _elements_initializers, {}));
133
+ get elements() { return this.#elements_accessor_storage; }
134
+ set elements(value) { this.#elements_accessor_storage = value; }
135
+ #warning_accessor_storage = (__runInitializers(this, _elements_extraInitializers), __runInitializers(this, _warning_initializers, null));
136
+ get warning() { return this.#warning_accessor_storage; }
137
+ set warning(value) { this.#warning_accessor_storage = value; }
138
+ frameScrollY = (__runInitializers(this, _warning_extraInitializers), 0);
139
+ sidebarScrollY = 0;
140
+ scrollPositionsApplied = false;
141
+ #wccFrame_accessor_storage = __runInitializers(this, _wccFrame_initializers, void 0);
142
+ get wccFrame() { return this.#wccFrame_accessor_storage; }
143
+ set wccFrame(value) { this.#wccFrame_accessor_storage = value; }
144
+ constructor(elementsArg, pagesArg) {
145
+ super();
146
+ if (elementsArg) {
147
+ this.elements = elementsArg;
148
+ console.log('got elements:');
149
+ console.log(this.elements);
150
+ }
151
+ if (pagesArg) {
152
+ this.pages = pagesArg;
153
+ }
41
154
  }
42
- }
43
- render() {
44
- return html `
155
+ render() {
156
+ return html `
45
157
  <style>
46
158
  :host {
47
159
  background: #fcfcfc;
@@ -57,14 +169,14 @@ let WccDashboard = class WccDashboard extends DeesElement {
57
169
  .selectedItem=${this.selectedItem}
58
170
  .isFullscreen=${this.isFullscreen}
59
171
  @selectedType=${(eventArg) => {
60
- this.selectedType = eventArg.detail;
61
- }}
172
+ this.selectedType = eventArg.detail;
173
+ }}
62
174
  @selectedItemName=${(eventArg) => {
63
- this.selectedItemName = eventArg.detail;
64
- }}
175
+ this.selectedItemName = eventArg.detail;
176
+ }}
65
177
  @selectedItem=${(eventArg) => {
66
- this.selectedItem = eventArg.detail;
67
- }}
178
+ this.selectedItem = eventArg.detail;
179
+ }}
68
180
  ></wcc-sidebar>
69
181
  <wcc-properties
70
182
  .dashboardRef=${this}
@@ -74,239 +186,199 @@ let WccDashboard = class WccDashboard extends DeesElement {
74
186
  .selectedTheme=${this.selectedTheme}
75
187
  .isFullscreen=${this.isFullscreen}
76
188
  @selectedViewport=${(eventArg) => {
77
- this.selectedViewport = eventArg.detail;
78
- this.scheduleUpdate();
79
- }}
189
+ this.selectedViewport = eventArg.detail;
190
+ this.scheduleUpdate();
191
+ }}
80
192
  @selectedTheme=${(eventArg) => {
81
- this.selectedTheme = eventArg.detail;
82
- }}
193
+ this.selectedTheme = eventArg.detail;
194
+ }}
83
195
  @editorStateChanged=${async (eventArg) => {
84
- const frame = await this.wccFrame;
85
- if (frame) {
86
- frame.advancedEditorOpen = eventArg.detail.isOpen;
87
- frame.requestUpdate();
88
- }
89
- }}
196
+ const frame = await this.wccFrame;
197
+ if (frame) {
198
+ frame.advancedEditorOpen = eventArg.detail.isOpen;
199
+ frame.requestUpdate();
200
+ }
201
+ }}
90
202
  @toggleFullscreen=${() => {
91
- this.toggleFullscreen();
92
- }}
203
+ this.toggleFullscreen();
204
+ }}
93
205
  ></wcc-properties>
94
206
  <wcc-frame id="wccFrame" viewport=${this.selectedViewport} .isFullscreen=${this.isFullscreen}>
95
207
  </wcc-frame>
96
208
  `;
97
- }
98
- setWarning(warningTextArg) {
99
- if (this.warning !== warningTextArg) {
100
- console.log(warningTextArg);
101
- this.warning = warningTextArg;
102
- setTimeout(() => {
103
- this.scheduleUpdate();
104
- }, 0);
105
209
  }
106
- }
107
- toggleFullscreen() {
108
- this.isFullscreen = !this.isFullscreen;
109
- }
110
- async firstUpdated() {
111
- this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
112
- // Add ESC key handler for fullscreen mode
113
- document.addEventListener('keydown', (event) => {
114
- if (event.key === 'Escape' && this.isFullscreen) {
115
- this.isFullscreen = false;
210
+ setWarning(warningTextArg) {
211
+ if (this.warning !== warningTextArg) {
212
+ console.log(warningTextArg);
213
+ this.warning = warningTextArg;
214
+ setTimeout(() => {
215
+ this.scheduleUpdate();
216
+ }, 0);
116
217
  }
117
- });
118
- // Set up scroll listeners after DOM is ready
119
- setTimeout(() => {
120
- this.setupScrollListeners();
121
- }, 500);
122
- this.domtools.router.on('/wcctools-route/:itemType/:itemName/:viewport/:theme', async (routeInfo) => {
123
- this.selectedType = routeInfo.params.itemType;
124
- this.selectedItemName = routeInfo.params.itemName;
125
- this.selectedViewport = routeInfo.params.viewport;
126
- this.selectedTheme = routeInfo.params.theme;
127
- if (routeInfo.params.itemType === 'element') {
128
- this.selectedItem = this.elements[routeInfo.params.itemName];
218
+ }
219
+ toggleFullscreen() {
220
+ this.isFullscreen = !this.isFullscreen;
221
+ }
222
+ async firstUpdated() {
223
+ this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
224
+ // Add ESC key handler for fullscreen mode
225
+ document.addEventListener('keydown', (event) => {
226
+ if (event.key === 'Escape' && this.isFullscreen) {
227
+ this.isFullscreen = false;
228
+ }
229
+ });
230
+ // Set up scroll listeners after DOM is ready
231
+ setTimeout(() => {
232
+ this.setupScrollListeners();
233
+ }, 500);
234
+ this.domtools.router.on('/wcctools-route/:itemType/:itemName/:viewport/:theme', async (routeInfo) => {
235
+ this.selectedType = routeInfo.params.itemType;
236
+ this.selectedItemName = routeInfo.params.itemName;
237
+ this.selectedViewport = routeInfo.params.viewport;
238
+ this.selectedTheme = routeInfo.params.theme;
239
+ if (routeInfo.params.itemType === 'element') {
240
+ this.selectedItem = this.elements[routeInfo.params.itemName];
241
+ }
242
+ else if (routeInfo.params.itemType === 'page') {
243
+ this.selectedItem = this.pages[routeInfo.params.itemName];
244
+ }
245
+ // Restore scroll positions from query parameters
246
+ if (routeInfo.queryParams) {
247
+ const frameScrollY = routeInfo.queryParams.frameScrollY;
248
+ const sidebarScrollY = routeInfo.queryParams.sidebarScrollY;
249
+ if (frameScrollY) {
250
+ this.frameScrollY = parseInt(frameScrollY);
251
+ }
252
+ if (sidebarScrollY) {
253
+ this.sidebarScrollY = parseInt(sidebarScrollY);
254
+ }
255
+ // Apply scroll positions after a short delay to ensure DOM is ready
256
+ setTimeout(() => {
257
+ this.applyScrollPositions();
258
+ }, 100);
259
+ }
260
+ const domtoolsInstance = await plugins.deesDomtools.elementBasic.setup();
261
+ this.selectedTheme === 'bright'
262
+ ? domtoolsInstance.themeManager.goBright()
263
+ : domtoolsInstance.themeManager.goDark();
264
+ });
265
+ }
266
+ async updated(changedPropertiesArg) {
267
+ this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
268
+ await this.domtools.router._handleRouteState();
269
+ const wccFrame = this.shadowRoot.querySelector('wcc-frame');
270
+ if (changedPropertiesArg.has('selectedItemName')) {
271
+ document.title = this.selectedItemName;
129
272
  }
130
- else if (routeInfo.params.itemType === 'page') {
131
- this.selectedItem = this.pages[routeInfo.params.itemName];
273
+ ;
274
+ if (this.selectedType === 'page' && this.selectedItem) {
275
+ if (typeof this.selectedItem === 'function') {
276
+ console.log('slotting page.');
277
+ const viewport = await wccFrame.getViewportElement();
278
+ const pageFactory = this.selectedItem;
279
+ const pageTemplate = await resolveTemplateFactory(pageFactory);
280
+ render(pageTemplate, viewport);
281
+ console.log('rendered page.');
282
+ }
283
+ else {
284
+ console.error('The selected item looks strange:');
285
+ console.log(this.selectedItem);
286
+ }
132
287
  }
133
- // Restore scroll positions from query parameters
134
- if (routeInfo.queryParams) {
135
- const frameScrollY = routeInfo.queryParams.frameScrollY;
136
- const sidebarScrollY = routeInfo.queryParams.sidebarScrollY;
137
- if (frameScrollY) {
138
- this.frameScrollY = parseInt(frameScrollY);
288
+ else if (this.selectedType === 'element' && this.selectedItem) {
289
+ console.log('slotting element.');
290
+ const anonItem = this.selectedItem;
291
+ if (!anonItem.demo) {
292
+ this.setWarning(`component ${anonItem.name} does not expose a demo property.`);
293
+ return;
139
294
  }
140
- if (sidebarScrollY) {
141
- this.sidebarScrollY = parseInt(sidebarScrollY);
295
+ if (!(typeof anonItem.demo === 'function')) {
296
+ this.setWarning(`component ${anonItem.name} has demo property, but it is not of type function`);
297
+ return;
142
298
  }
143
- // Apply scroll positions after a short delay to ensure DOM is ready
144
- setTimeout(() => {
145
- this.applyScrollPositions();
146
- }, 100);
299
+ this.setWarning(null);
300
+ const viewport = await wccFrame.getViewportElement();
301
+ const demoTemplate = await resolveTemplateFactory(() => anonItem.demo());
302
+ render(demoTemplate, viewport);
147
303
  }
148
- const domtoolsInstance = await plugins.deesDomtools.elementBasic.setup();
149
- this.selectedTheme === 'bright'
150
- ? domtoolsInstance.themeManager.goBright()
151
- : domtoolsInstance.themeManager.goDark();
152
- });
153
- }
154
- async updated(changedPropertiesArg) {
155
- this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
156
- await this.domtools.router._handleRouteState();
157
- const wccFrame = this.shadowRoot.querySelector('wcc-frame');
158
- if (changedPropertiesArg.has('selectedItemName')) {
159
- document.title = this.selectedItemName;
160
304
  }
161
- ;
162
- if (this.selectedType === 'page' && this.selectedItem) {
163
- if (typeof this.selectedItem === 'function') {
164
- console.log('slotting page.');
165
- const viewport = await wccFrame.getViewportElement();
166
- const pageFactory = this.selectedItem;
167
- const pageTemplate = await resolveTemplateFactory(pageFactory);
168
- render(pageTemplate, viewport);
169
- console.log('rendered page.');
305
+ buildUrl() {
306
+ const baseUrl = `/wcctools-route/${this.selectedType}/${this.selectedItemName}/${this.selectedViewport}/${this.selectedTheme}`;
307
+ const queryParams = new URLSearchParams();
308
+ if (this.frameScrollY > 0) {
309
+ queryParams.set('frameScrollY', this.frameScrollY.toString());
170
310
  }
171
- else {
172
- console.error('The selected item looks strange:');
173
- console.log(this.selectedItem);
311
+ if (this.sidebarScrollY > 0) {
312
+ queryParams.set('sidebarScrollY', this.sidebarScrollY.toString());
174
313
  }
314
+ const queryString = queryParams.toString();
315
+ const fullUrl = queryString ? `${baseUrl}?${queryString}` : baseUrl;
316
+ this.domtools.router.pushUrl(fullUrl);
175
317
  }
176
- else if (this.selectedType === 'element' && this.selectedItem) {
177
- console.log('slotting element.');
178
- const anonItem = this.selectedItem;
179
- if (!anonItem.demo) {
180
- this.setWarning(`component ${anonItem.name} does not expose a demo property.`);
318
+ scrollUpdateTimeout = __runInitializers(this, _wccFrame_extraInitializers);
319
+ scrollListenersAttached = false;
320
+ async setupScrollListeners() {
321
+ // Prevent duplicate listeners
322
+ if (this.scrollListenersAttached) {
181
323
  return;
182
324
  }
183
- if (!(typeof anonItem.demo === 'function')) {
184
- this.setWarning(`component ${anonItem.name} has demo property, but it is not of type function`);
185
- return;
325
+ const wccFrame = await this.wccFrame;
326
+ const wccSidebar = this.shadowRoot.querySelector('wcc-sidebar');
327
+ if (wccFrame) {
328
+ // The frame element itself is the scrollable container
329
+ wccFrame.addEventListener('scroll', () => {
330
+ this.frameScrollY = wccFrame.scrollTop;
331
+ this.debouncedScrollUpdate();
332
+ });
333
+ this.scrollListenersAttached = true;
334
+ }
335
+ if (wccSidebar) {
336
+ // The sidebar element itself is the scrollable container
337
+ wccSidebar.addEventListener('scroll', () => {
338
+ this.sidebarScrollY = wccSidebar.scrollTop;
339
+ this.debouncedScrollUpdate();
340
+ });
186
341
  }
187
- this.setWarning(null);
188
- const viewport = await wccFrame.getViewportElement();
189
- const demoTemplate = await resolveTemplateFactory(() => anonItem.demo());
190
- render(demoTemplate, viewport);
191
- }
192
- }
193
- buildUrl() {
194
- const baseUrl = `/wcctools-route/${this.selectedType}/${this.selectedItemName}/${this.selectedViewport}/${this.selectedTheme}`;
195
- const queryParams = new URLSearchParams();
196
- if (this.frameScrollY > 0) {
197
- queryParams.set('frameScrollY', this.frameScrollY.toString());
198
- }
199
- if (this.sidebarScrollY > 0) {
200
- queryParams.set('sidebarScrollY', this.sidebarScrollY.toString());
201
- }
202
- const queryString = queryParams.toString();
203
- const fullUrl = queryString ? `${baseUrl}?${queryString}` : baseUrl;
204
- this.domtools.router.pushUrl(fullUrl);
205
- }
206
- async setupScrollListeners() {
207
- // Prevent duplicate listeners
208
- if (this.scrollListenersAttached) {
209
- return;
210
- }
211
- const wccFrame = await this.wccFrame;
212
- const wccSidebar = this.shadowRoot.querySelector('wcc-sidebar');
213
- if (wccFrame) {
214
- // The frame element itself is the scrollable container
215
- wccFrame.addEventListener('scroll', () => {
216
- this.frameScrollY = wccFrame.scrollTop;
217
- this.debouncedScrollUpdate();
218
- });
219
- this.scrollListenersAttached = true;
220
- }
221
- if (wccSidebar) {
222
- // The sidebar element itself is the scrollable container
223
- wccSidebar.addEventListener('scroll', () => {
224
- this.sidebarScrollY = wccSidebar.scrollTop;
225
- this.debouncedScrollUpdate();
226
- });
227
- }
228
- }
229
- debouncedScrollUpdate() {
230
- clearTimeout(this.scrollUpdateTimeout);
231
- this.scrollUpdateTimeout = setTimeout(() => {
232
- this.updateUrlWithScrollState();
233
- }, 300);
234
- }
235
- updateUrlWithScrollState() {
236
- const baseUrl = `/wcctools-route/${this.selectedType}/${this.selectedItemName}/${this.selectedViewport}/${this.selectedTheme}`;
237
- const queryParams = new URLSearchParams();
238
- if (this.frameScrollY > 0) {
239
- queryParams.set('frameScrollY', this.frameScrollY.toString());
240
- }
241
- if (this.sidebarScrollY > 0) {
242
- queryParams.set('sidebarScrollY', this.sidebarScrollY.toString());
243
342
  }
244
- const queryString = queryParams.toString();
245
- const fullUrl = queryString ? `${baseUrl}?${queryString}` : baseUrl;
246
- // Use replaceState to update URL without navigation
247
- window.history.replaceState(null, '', fullUrl);
248
- }
249
- async applyScrollPositions() {
250
- // Only apply scroll positions once to avoid interfering with user scrolling
251
- if (this.scrollPositionsApplied) {
252
- return;
343
+ debouncedScrollUpdate() {
344
+ clearTimeout(this.scrollUpdateTimeout);
345
+ this.scrollUpdateTimeout = setTimeout(() => {
346
+ this.updateUrlWithScrollState();
347
+ }, 300);
253
348
  }
254
- const wccFrame = await this.wccFrame;
255
- const wccSidebar = this.shadowRoot.querySelector('wcc-sidebar');
256
- if (wccFrame && this.frameScrollY > 0) {
257
- // The frame element itself is the scrollable container
258
- wccFrame.scrollTop = this.frameScrollY;
349
+ updateUrlWithScrollState() {
350
+ const baseUrl = `/wcctools-route/${this.selectedType}/${this.selectedItemName}/${this.selectedViewport}/${this.selectedTheme}`;
351
+ const queryParams = new URLSearchParams();
352
+ if (this.frameScrollY > 0) {
353
+ queryParams.set('frameScrollY', this.frameScrollY.toString());
354
+ }
355
+ if (this.sidebarScrollY > 0) {
356
+ queryParams.set('sidebarScrollY', this.sidebarScrollY.toString());
357
+ }
358
+ const queryString = queryParams.toString();
359
+ const fullUrl = queryString ? `${baseUrl}?${queryString}` : baseUrl;
360
+ // Use replaceState to update URL without navigation
361
+ window.history.replaceState(null, '', fullUrl);
259
362
  }
260
- if (wccSidebar && this.sidebarScrollY > 0) {
261
- // The sidebar element itself is the scrollable container
262
- wccSidebar.scrollTop = this.sidebarScrollY;
363
+ async applyScrollPositions() {
364
+ // Only apply scroll positions once to avoid interfering with user scrolling
365
+ if (this.scrollPositionsApplied) {
366
+ return;
367
+ }
368
+ const wccFrame = await this.wccFrame;
369
+ const wccSidebar = this.shadowRoot.querySelector('wcc-sidebar');
370
+ if (wccFrame && this.frameScrollY > 0) {
371
+ // The frame element itself is the scrollable container
372
+ wccFrame.scrollTop = this.frameScrollY;
373
+ }
374
+ if (wccSidebar && this.sidebarScrollY > 0) {
375
+ // The sidebar element itself is the scrollable container
376
+ wccSidebar.scrollTop = this.sidebarScrollY;
377
+ }
378
+ this.scrollPositionsApplied = true;
263
379
  }
264
- this.scrollPositionsApplied = true;
265
- }
266
- };
267
- __decorate([
268
- property(),
269
- __metadata("design:type", String)
270
- ], WccDashboard.prototype, "selectedType", void 0);
271
- __decorate([
272
- property(),
273
- __metadata("design:type", String)
274
- ], WccDashboard.prototype, "selectedItemName", void 0);
275
- __decorate([
276
- property(),
277
- __metadata("design:type", Object)
278
- ], WccDashboard.prototype, "selectedItem", void 0);
279
- __decorate([
280
- property(),
281
- __metadata("design:type", String)
282
- ], WccDashboard.prototype, "selectedViewport", void 0);
283
- __decorate([
284
- property(),
285
- __metadata("design:type", String)
286
- ], WccDashboard.prototype, "selectedTheme", void 0);
287
- __decorate([
288
- property(),
289
- __metadata("design:type", Boolean)
290
- ], WccDashboard.prototype, "isFullscreen", void 0);
291
- __decorate([
292
- property(),
293
- __metadata("design:type", Object)
294
- ], WccDashboard.prototype, "pages", void 0);
295
- __decorate([
296
- property(),
297
- __metadata("design:type", Object)
298
- ], WccDashboard.prototype, "elements", void 0);
299
- __decorate([
300
- property(),
301
- __metadata("design:type", String)
302
- ], WccDashboard.prototype, "warning", void 0);
303
- __decorate([
304
- queryAsync('wcc-frame'),
305
- __metadata("design:type", Promise)
306
- ], WccDashboard.prototype, "wccFrame", void 0);
307
- WccDashboard = __decorate([
308
- customElement('wcc-dashboard'),
309
- __metadata("design:paramtypes", [Object, Object])
310
- ], WccDashboard);
380
+ };
381
+ return WccDashboard = _classThis;
382
+ })();
311
383
  export { WccDashboard };
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLWRhc2hib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy93Y2MtZGFzaGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQXVCLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHL0QsT0FBTyxLQUFLLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxZQUFZO0FBQ1osT0FBTyxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFlLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLFdBQVc7SUFvQzNDLFlBQ0UsV0FBNEMsRUFDNUMsUUFBMkM7UUFFM0MsS0FBSyxFQUFFLENBQUM7UUE1QkgscUJBQWdCLEdBQStDLFNBQVMsQ0FBQztRQUd6RSxrQkFBYSxHQUFXLE1BQU0sQ0FBQztRQUcvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5QixVQUFLLEdBQXFDLEVBQUUsQ0FBQztRQUc3QyxhQUFRLEdBQW1DLEVBQUUsQ0FBQztRQUc5QyxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBRXRCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQTRN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
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLWRhc2hib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy93Y2MtZGFzaGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRy9ELE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsWUFBWTtBQUNaLE9BQU8sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0lBRzdCLFlBQVk7NEJBRHhCLGFBQWEsQ0FBQyxlQUFlLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QkFBbkIsU0FBUSxXQUFXOzs7O3dDQUUxQyxRQUFRLEVBQUU7NENBR1YsUUFBUSxFQUFFO3dDQUdWLFFBQVEsRUFBRTs0Q0FHVixRQUFRLEVBQUU7eUNBR1YsUUFBUSxFQUFFO3dDQUdWLFFBQVEsRUFBRTtpQ0FHVixRQUFRLEVBQUU7b0NBR1YsUUFBUSxFQUFFO21DQUdWLFFBQVEsRUFBRTtvQ0FPVixVQUFVLENBQUMsV0FBVyxDQUFDO1lBOUJ4Qix5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQWU7WUFHcEMscU1B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