@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
@@ -3,10 +3,10 @@ import { WccDashboard } from './wcc-dashboard.js';
3
3
  import type { TTemplateFactory } from './wcctools.helpers.js';
4
4
  export type TElementType = 'element' | 'page';
5
5
  export declare class WccSidebar extends DeesElement {
6
- selectedItem: DeesElement | TTemplateFactory;
7
- selectedType: TElementType;
8
- dashboardRef: WccDashboard;
9
- isFullscreen: boolean;
6
+ accessor selectedItem: DeesElement | TTemplateFactory;
7
+ accessor selectedType: TElementType;
8
+ accessor dashboardRef: WccDashboard;
9
+ accessor isFullscreen: boolean;
10
10
  render(): TemplateResult;
11
11
  selectItem(typeArg: TElementType, itemNameArg: string, itemArg: TTemplateFactory | DeesElement): void;
12
12
  }
@@ -1,22 +1,89 @@
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 * as plugins from '../wcctools.plugins.js';
11
36
  import { DeesElement, property, html, customElement } from '@design.estate/dees-element';
12
37
  import { WccDashboard } from './wcc-dashboard.js';
13
- let WccSidebar = class WccSidebar extends DeesElement {
14
- constructor() {
15
- super(...arguments);
16
- this.isFullscreen = false;
17
- }
18
- render() {
19
- return html `
38
+ let WccSidebar = (() => {
39
+ let _classDecorators = [customElement('wcc-sidebar')];
40
+ let _classDescriptor;
41
+ let _classExtraInitializers = [];
42
+ let _classThis;
43
+ let _classSuper = DeesElement;
44
+ let _selectedItem_decorators;
45
+ let _selectedItem_initializers = [];
46
+ let _selectedItem_extraInitializers = [];
47
+ let _selectedType_decorators;
48
+ let _selectedType_initializers = [];
49
+ let _selectedType_extraInitializers = [];
50
+ let _dashboardRef_decorators;
51
+ let _dashboardRef_initializers = [];
52
+ let _dashboardRef_extraInitializers = [];
53
+ let _isFullscreen_decorators;
54
+ let _isFullscreen_initializers = [];
55
+ let _isFullscreen_extraInitializers = [];
56
+ var WccSidebar = class extends _classSuper {
57
+ static { _classThis = this; }
58
+ static {
59
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
60
+ _selectedItem_decorators = [property({ attribute: false })];
61
+ _selectedType_decorators = [property({ attribute: false })];
62
+ _dashboardRef_decorators = [property()];
63
+ _isFullscreen_decorators = [property()];
64
+ __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);
65
+ __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);
66
+ __esDecorate(this, null, _dashboardRef_decorators, { kind: "accessor", name: "dashboardRef", static: false, private: false, access: { has: obj => "dashboardRef" in obj, get: obj => obj.dashboardRef, set: (obj, value) => { obj.dashboardRef = value; } }, metadata: _metadata }, _dashboardRef_initializers, _dashboardRef_extraInitializers);
67
+ __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);
68
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
69
+ WccSidebar = _classThis = _classDescriptor.value;
70
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
71
+ __runInitializers(_classThis, _classExtraInitializers);
72
+ }
73
+ #selectedItem_accessor_storage = __runInitializers(this, _selectedItem_initializers, void 0);
74
+ get selectedItem() { return this.#selectedItem_accessor_storage; }
75
+ set selectedItem(value) { this.#selectedItem_accessor_storage = value; }
76
+ #selectedType_accessor_storage = (__runInitializers(this, _selectedItem_extraInitializers), __runInitializers(this, _selectedType_initializers, void 0));
77
+ get selectedType() { return this.#selectedType_accessor_storage; }
78
+ set selectedType(value) { this.#selectedType_accessor_storage = value; }
79
+ #dashboardRef_accessor_storage = (__runInitializers(this, _selectedType_extraInitializers), __runInitializers(this, _dashboardRef_initializers, void 0));
80
+ get dashboardRef() { return this.#dashboardRef_accessor_storage; }
81
+ set dashboardRef(value) { this.#dashboardRef_accessor_storage = value; }
82
+ #isFullscreen_accessor_storage = (__runInitializers(this, _dashboardRef_extraInitializers), __runInitializers(this, _isFullscreen_initializers, false));
83
+ get isFullscreen() { return this.#isFullscreen_accessor_storage; }
84
+ set isFullscreen(value) { this.#isFullscreen_accessor_storage = value; }
85
+ render() {
86
+ return html `
20
87
  <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" />
21
88
  <style>
22
89
  :host {
@@ -159,81 +226,68 @@ let WccSidebar = class WccSidebar extends DeesElement {
159
226
  <div class="menu">
160
227
  <h3>Pages</h3>
161
228
  ${(() => {
162
- const pages = Object.keys(this.dashboardRef.pages);
163
- return pages.map(pageName => {
164
- const item = this.dashboardRef.pages[pageName];
165
- return html `
229
+ const pages = Object.keys(this.dashboardRef.pages);
230
+ return pages.map(pageName => {
231
+ const item = this.dashboardRef.pages[pageName];
232
+ return html `
166
233
  <div
167
234
  class="selectOption ${this.selectedItem === item ? 'selected' : null}"
168
235
  @click=${async () => {
169
- const domtools = await plugins.deesDomtools.DomTools.setupDomTools();
170
- this.selectItem('page', pageName, item);
171
- }}
236
+ const domtools = await plugins.deesDomtools.DomTools.setupDomTools();
237
+ this.selectItem('page', pageName, item);
238
+ }}
172
239
  >
173
240
  <i class="material-symbols-outlined">insert_drive_file</i>
174
241
  <div class="text">${pageName}</div>
175
242
  </div>
176
243
  `;
177
- });
178
- })()}
244
+ });
245
+ })()}
179
246
  <h3>Elements</h3>
180
247
  ${(() => {
181
- const elements = Object.keys(this.dashboardRef.elements);
182
- return elements.map(elementName => {
183
- const item = this.dashboardRef.elements[elementName];
184
- return html `
248
+ const elements = Object.keys(this.dashboardRef.elements);
249
+ return elements.map(elementName => {
250
+ const item = this.dashboardRef.elements[elementName];
251
+ return html `
185
252
  <div
186
253
  class="selectOption ${this.selectedItem === item ? 'selected' : null}"
187
254
  @click=${async () => {
188
- const domtools = await plugins.deesDomtools.DomTools.setupDomTools();
189
- this.selectItem('element', elementName, item);
190
- }}
255
+ const domtools = await plugins.deesDomtools.DomTools.setupDomTools();
256
+ this.selectItem('element', elementName, item);
257
+ }}
191
258
  >
192
259
  <i class="material-symbols-outlined">featured_video</i>
193
260
  <div class="text">${elementName}</div>
194
261
  </div>
195
262
  `;
196
- });
197
- })()}
263
+ });
264
+ })()}
198
265
  </div>
199
266
  `;
200
- }
201
- selectItem(typeArg, itemNameArg, itemArg) {
202
- console.log('selected item');
203
- console.log(itemNameArg);
204
- console.log(itemArg);
205
- this.selectedItem = itemArg;
206
- this.selectedType = typeArg;
207
- this.dispatchEvent(new CustomEvent('selectedType', {
208
- detail: typeArg
209
- }));
210
- this.dispatchEvent(new CustomEvent('selectedItemName', {
211
- detail: itemNameArg
212
- }));
213
- this.dispatchEvent(new CustomEvent('selectedItem', {
214
- detail: itemArg
215
- }));
216
- this.dashboardRef.buildUrl();
217
- }
218
- };
219
- __decorate([
220
- property({ attribute: false }),
221
- __metadata("design:type", Object)
222
- ], WccSidebar.prototype, "selectedItem", void 0);
223
- __decorate([
224
- property({ attribute: false }),
225
- __metadata("design:type", String)
226
- ], WccSidebar.prototype, "selectedType", void 0);
227
- __decorate([
228
- property(),
229
- __metadata("design:type", WccDashboard)
230
- ], WccSidebar.prototype, "dashboardRef", void 0);
231
- __decorate([
232
- property(),
233
- __metadata("design:type", Boolean)
234
- ], WccSidebar.prototype, "isFullscreen", void 0);
235
- WccSidebar = __decorate([
236
- customElement('wcc-sidebar')
237
- ], WccSidebar);
267
+ }
268
+ selectItem(typeArg, itemNameArg, itemArg) {
269
+ console.log('selected item');
270
+ console.log(itemNameArg);
271
+ console.log(itemArg);
272
+ this.selectedItem = itemArg;
273
+ this.selectedType = typeArg;
274
+ this.dispatchEvent(new CustomEvent('selectedType', {
275
+ detail: typeArg
276
+ }));
277
+ this.dispatchEvent(new CustomEvent('selectedItemName', {
278
+ detail: itemNameArg
279
+ }));
280
+ this.dispatchEvent(new CustomEvent('selectedItem', {
281
+ detail: itemArg
282
+ }));
283
+ this.dashboardRef.buildUrl();
284
+ }
285
+ constructor() {
286
+ super(...arguments);
287
+ __runInitializers(this, _isFullscreen_extraInitializers);
288
+ }
289
+ };
290
+ return WccSidebar = _classThis;
291
+ })();
238
292
  export { WccSidebar };
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU0zQyxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFXLFNBQVEsV0FBVztJQUFwQzs7UUFXRSxpQkFBWSxHQUFZLEtBQUssQ0FBQztJQWtOdkMsQ0FBQztJQWhOUSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQW9CTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBMEgvQyxDQUFDLEdBQUcsRUFBRTtZQUNOLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQTs7c0NBRWUsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxD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
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7SUFNckMsVUFBVTs0QkFEdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7OzBCQUFuQixTQUFRLFdBQVc7Ozs7d0NBQ3hDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3dDQUc5QixRQUFRLEVBQUU7d0NBR1YsUUFBUSxFQUFFO1lBUlgseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFpQztZQUd0RCx5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQWU7WUFHcEMseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBa0I7WUFYekMsNktBNk5DOzs7WUE3TlksdURBQVU7O1FBRXJCLDZGQUFzRDtRQUF0RCxJQUFTLFlBQVksa0RBQWlDO1FBQXRELElBQVMsWUFBWSx3REFBaUM7UUFHdEQseUpBQW9DO1FBQXBDLElBQVMsWUFBWSxrREFBZTtRQUFwQyxJQUFTLFlBQVksd0RBQWU7UUFHcEMseUpBQW9DO1FBQXBDLElBQVMsWUFBWSxrREFBZTtRQUFwQyxJQUFTLFlBQVksd0RBQWU7UUFHcEMsZ0pBQWlDLEtBQUssR0FBQztRQUF2QyxJQUFTLFlB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
@@ -1,5 +1,8 @@
1
1
  import { LitElement } from 'lit';
2
2
  import type { TTemplateFactory } from './elements/wcctools.helpers.js';
3
+ export { RecorderService, type IRecorderEvents, type IRecordingOptions } from './services/recorder.service.js';
4
+ export { WccRecordButton } from './elements/wcc-record-button.js';
5
+ export { WccRecordingPanel } from './elements/wcc-recording-panel.js';
3
6
  declare const setupWccTools: (elementsArg?: {
4
7
  [key: string]: LitElement;
5
8
  }, pagesArg?: Record<string, TTemplateFactory>) => void;
@@ -1,5 +1,9 @@
1
1
  import { WccDashboard } from './elements/wcc-dashboard.js';
2
2
  import { LitElement } from 'lit';
3
+ // Export recording components and service
4
+ export { RecorderService } from './services/recorder.service.js';
5
+ export { WccRecordButton } from './elements/wcc-record-button.js';
6
+ export { WccRecordingPanel } from './elements/wcc-recording-panel.js';
3
7
  const setupWccTools = (elementsArg, pagesArg) => {
4
8
  let hasRun = false;
5
9
  const runWccToolsSetup = async () => {
@@ -13,4 +17,4 @@ const setupWccTools = (elementsArg, pagesArg) => {
13
17
  runWccToolsSetup();
14
18
  };
15
19
  export { setupWccTools };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c193ZWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHakMsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsV0FBMkMsRUFDM0MsUUFBMkMsRUFDM0MsRUFBRTtJQUNGLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixNQUFNLGdCQUFnQixHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ2xDLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsV0FBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0YsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEUsZ0JBQWdCLEVBQUUsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsYUFBYSxFQUNkLENBQUMifQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c193ZWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHakMsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQWdELE1BQU0sZ0NBQWdDLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE1BQU0sYUFBYSxHQUFHLENBQ3BCLFdBQTJDLEVBQzNDLFFBQTJDLEVBQzNDLEVBQUU7SUFDRixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNsQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEQsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLFdBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hFLGdCQUFnQixFQUFFLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLGFBQWEsRUFDZCxDQUFDIn0=
@@ -0,0 +1,44 @@
1
+ /**
2
+ * RecorderService - Handles all MediaRecorder, audio monitoring, and video export logic
3
+ */
4
+ export interface IRecorderEvents {
5
+ onDurationUpdate?: (duration: number) => void;
6
+ onRecordingComplete?: (blob: Blob) => void;
7
+ onAudioLevelUpdate?: (level: number) => void;
8
+ onError?: (error: Error) => void;
9
+ onStreamEnded?: () => void;
10
+ }
11
+ export interface IRecordingOptions {
12
+ mode: 'viewport' | 'screen';
13
+ audioDeviceId?: string;
14
+ viewportElement?: HTMLElement;
15
+ }
16
+ export declare class RecorderService {
17
+ private mediaRecorder;
18
+ private recordedChunks;
19
+ private durationInterval;
20
+ private _duration;
21
+ private _recordedBlob;
22
+ private _isRecording;
23
+ private audioContext;
24
+ private audioAnalyser;
25
+ private audioMonitoringInterval;
26
+ private monitoringStream;
27
+ private currentStream;
28
+ private events;
29
+ constructor(events?: IRecorderEvents);
30
+ get isRecording(): boolean;
31
+ get duration(): number;
32
+ get recordedBlob(): Blob | null;
33
+ setEvents(events: IRecorderEvents): void;
34
+ loadMicrophones(requestPermission?: boolean): Promise<MediaDeviceInfo[]>;
35
+ startAudioMonitoring(deviceId: string): Promise<void>;
36
+ stopAudioMonitoring(): void;
37
+ startRecording(options: IRecordingOptions): Promise<void>;
38
+ stopRecording(): void;
39
+ private handleRecordingComplete;
40
+ exportTrimmedVideo(videoElement: HTMLVideoElement, trimStart: number, trimEnd: number): Promise<Blob>;
41
+ private recordTrimmedStream;
42
+ reset(): void;
43
+ dispose(): void;
44
+ }