@design.estate/dees-wcctools 1.2.1 → 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 +1581 -198
  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 +8 -8
  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
@@ -4,6 +4,12 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
8
+ var __typeError = (msg) => {
9
+ throw TypeError(msg);
10
+ };
11
+ var __defNormalProp = (obj, key2, value2) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key2] = value2;
12
+ var __name = (target, value2) => __defProp(target, "name", { value: value2, configurable: true });
7
13
  var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {
8
14
  get: (a4, b4) => (typeof require !== "undefined" ? require : a4)[b4]
9
15
  }) : x2)(function(x2) {
@@ -33,14 +39,46 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
33
39
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
40
  mod
35
41
  ));
36
- var __decorateClass = (decorators, target, key2, kind) => {
37
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key2) : target;
38
- for (var i9 = decorators.length - 1, decorator; i9 >= 0; i9--)
39
- if (decorator = decorators[i9])
40
- result = (kind ? decorator(target, key2, result) : decorator(result)) || result;
41
- if (kind && result) __defProp(target, key2, result);
42
- return result;
42
+ var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
43
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
44
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
45
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
46
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
47
+ var __runInitializers = (array, flags, self2, value2) => {
48
+ for (var i9 = 0, fns = array[flags >> 1], n12 = fns && fns.length; i9 < n12; i9++) flags & 1 ? fns[i9].call(self2) : value2 = fns[i9].call(self2, value2);
49
+ return value2;
43
50
  };
51
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
52
+ var fn, it, done, ctx, access, k3 = flags & 7, s8 = !!(flags & 8), p6 = !!(flags & 16);
53
+ var j2 = k3 > 3 ? array.length + 1 : k3 ? s8 ? 1 : 2 : 0, key2 = __decoratorStrings[k3 + 5];
54
+ var initializers = k3 > 3 && (array[j2 - 1] = []), extraInitializers = array[j2] || (array[j2] = []);
55
+ var desc = k3 && (!p6 && !s8 && (target = target.prototype), k3 < 5 && (k3 > 3 || !p6) && __getOwnPropDesc(k3 < 4 ? target : { get [name]() {
56
+ return __privateGet(this, extra);
57
+ }, set [name](x2) {
58
+ return __privateSet(this, extra, x2);
59
+ } }, name));
60
+ k3 ? p6 && k3 < 4 && __name(extra, (k3 > 2 ? "set " : k3 > 1 ? "get " : "") + name) : __name(target, name);
61
+ for (var i9 = decorators.length - 1; i9 >= 0; i9--) {
62
+ ctx = __decoratorContext(k3, name, done = {}, array[3], extraInitializers);
63
+ if (k3) {
64
+ ctx.static = s8, ctx.private = p6, access = ctx.access = { has: p6 ? (x2) => __privateIn(target, x2) : (x2) => name in x2 };
65
+ if (k3 ^ 3) access.get = p6 ? (x2) => (k3 ^ 1 ? __privateGet : __privateMethod)(x2, target, k3 ^ 4 ? extra : desc.get) : (x2) => x2[name];
66
+ if (k3 > 2) access.set = p6 ? (x2, y4) => __privateSet(x2, target, y4, k3 ^ 4 ? extra : desc.set) : (x2, y4) => x2[name] = y4;
67
+ }
68
+ it = (0, decorators[i9])(k3 ? k3 < 4 ? p6 ? extra : desc[key2] : k3 > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
69
+ if (k3 ^ 4 || it === void 0) __expectFn(it) && (k3 > 4 ? initializers.unshift(it) : k3 ? p6 ? extra = it : desc[key2] = it : target = it);
70
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
71
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
72
+ }
73
+ return k3 || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p6 ? k3 ^ 4 ? extra : desc : target;
74
+ };
75
+ var __publicField = (obj, key2, value2) => __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value2);
76
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
77
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
78
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
79
+ var __privateAdd = (obj, member, value2) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value2);
80
+ var __privateSet = (obj, member, value2, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value2) : member.set(obj, value2), value2);
81
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
44
82
 
45
83
  // node_modules/.pnpm/@push.rocks+isounique@1.0.5/node_modules/@push.rocks/isounique/dist_ts/index.js
46
84
  var require_dist_ts = __commonJS({
@@ -416,10 +454,10 @@ var require_TreePosition = __commonJS({
416
454
  var require_TreeIterator = __commonJS({
417
455
  "node_modules/.pnpm/symbol-tree@3.2.4/node_modules/symbol-tree/lib/TreeIterator.js"(exports, module) {
418
456
  "use strict";
419
- var TREE = Symbol();
420
- var ROOT = Symbol();
421
- var NEXT = Symbol();
422
- var ITERATE_FUNC = Symbol();
457
+ var TREE = /* @__PURE__ */ Symbol();
458
+ var ROOT = /* @__PURE__ */ Symbol();
459
+ var NEXT = /* @__PURE__ */ Symbol();
460
+ var ITERATE_FUNC = /* @__PURE__ */ Symbol();
423
461
  var TreeIterator = class {
424
462
  constructor(tree, root6, firstResult, iterateFunction) {
425
463
  this[TREE] = tree;
@@ -5557,7 +5595,7 @@ var require_sweet_scroll = __commonJS({
5557
5595
  hash: null
5558
5596
  };
5559
5597
  this.loop = function(time) {
5560
- var _a = _this, $el = _a.$el, ctx = _a.ctx;
5598
+ var _a7 = _this, $el = _a7.$el, ctx = _a7.ctx;
5561
5599
  if (!ctx.start) {
5562
5600
  ctx.start = time;
5563
5601
  }
@@ -5652,7 +5690,7 @@ var require_sweet_scroll = __commonJS({
5652
5690
  if (!canUseDOM) {
5653
5691
  return;
5654
5692
  }
5655
- var _a = this, $el = _a.$el, ctx = _a.ctx, currentOptions = _a.opts;
5693
+ var _a7 = this, $el = _a7.$el, ctx = _a7.ctx, currentOptions = _a7.opts;
5656
5694
  var $trigger = ctx.$trigger;
5657
5695
  var opts = __assign2({}, currentOptions, options || {});
5658
5696
  var optOffset = opts.offset, vertical = opts.vertical, horizontal = opts.horizontal;
@@ -5719,7 +5757,7 @@ var require_sweet_scroll = __commonJS({
5719
5757
  if (gotoEnd === void 0) {
5720
5758
  gotoEnd = false;
5721
5759
  }
5722
- var _a = this, $el = _a.$el, ctx = _a.ctx;
5760
+ var _a7 = this, $el = _a7.$el, ctx = _a7.ctx;
5723
5761
  var pos = ctx.pos;
5724
5762
  if (!$el || !ctx.progress) {
5725
5763
  return;
@@ -5775,7 +5813,7 @@ var require_sweet_scroll = __commonJS({
5775
5813
  ctx.id = SweetScroll4.raf(this.loop);
5776
5814
  };
5777
5815
  SweetScroll4.prototype.complete = function() {
5778
- var _a = this, $el = _a.$el, ctx = _a.ctx;
5816
+ var _a7 = this, $el = _a7.$el, ctx = _a7.ctx;
5779
5817
  var hash = ctx.hash, cancel = ctx.cancel, opts = ctx.opts, pos = ctx.pos, $trigger = ctx.$trigger;
5780
5818
  if (!$el || !opts) {
5781
5819
  return;
@@ -5801,18 +5839,18 @@ var require_sweet_scroll = __commonJS({
5801
5839
  for (var _i = 2; _i < arguments.length; _i++) {
5802
5840
  args[_i - 2] = arguments[_i];
5803
5841
  }
5804
- var _a;
5842
+ var _a7;
5805
5843
  var callback = options[type5];
5806
5844
  var callbackResult;
5807
5845
  var methodResult;
5808
5846
  if (isFunction2(callback)) {
5809
5847
  callbackResult = callback.apply(this, args.concat([this]));
5810
5848
  }
5811
- methodResult = (_a = this)["on" + (type5[0].toUpperCase() + type5.slice(1))].apply(_a, args);
5849
+ methodResult = (_a7 = this)["on" + (type5[0].toUpperCase() + type5.slice(1))].apply(_a7, args);
5812
5850
  return callbackResult !== void 0 ? callbackResult : methodResult;
5813
5851
  };
5814
5852
  SweetScroll4.prototype.bind = function(click, stop) {
5815
- var _a = this, $el = _a.$el, opts = _a.ctx.opts;
5853
+ var _a7 = this, $el = _a7.$el, opts = _a7.ctx.opts;
5816
5854
  if ($el) {
5817
5855
  if (click) {
5818
5856
  addEvent($el, CONTAINER_CLICK_EVENT, this.handleClick, false);
@@ -5823,7 +5861,7 @@ var require_sweet_scroll = __commonJS({
5823
5861
  }
5824
5862
  };
5825
5863
  SweetScroll4.prototype.unbind = function(click, stop) {
5826
- var _a = this, $el = _a.$el, opts = _a.ctx.opts;
5864
+ var _a7 = this, $el = _a7.$el, opts = _a7.ctx.opts;
5827
5865
  if ($el) {
5828
5866
  if (click) {
5829
5867
  removeEvent($el, CONTAINER_CLICK_EVENT, this.handleClick, false);
@@ -5844,7 +5882,7 @@ var require_sweet_scroll = __commonJS({
5844
5882
  });
5845
5883
 
5846
5884
  // node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js
5847
- var t = globalThis, e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, s = Symbol(), o = /* @__PURE__ */ new WeakMap();
5885
+ var t = globalThis, e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, s = /* @__PURE__ */ Symbol(), o = /* @__PURE__ */ new WeakMap();
5848
5886
  var n = class {
5849
5887
  constructor(t8, e10, o12) {
5850
5888
  if (this._$cssResult$ = true, o12 !== s) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
@@ -5912,7 +5950,7 @@ var { is: i2, defineProperty: e2, getOwnPropertyDescriptor: h, getOwnPropertyNam
5912
5950
  }
5913
5951
  return i9;
5914
5952
  } }, f = (t8, s8) => !i2(t8, s8), b = { attribute: true, type: String, converter: u, reflect: false, useDefault: false, hasChanged: f };
5915
- Symbol.metadata ??= Symbol("metadata"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
5953
+ Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
5916
5954
  var y = class extends HTMLElement {
5917
5955
  static addInitializer(t8) {
5918
5956
  this._$Ei(), (this.l ??= []).push(t8);
@@ -5922,7 +5960,7 @@ var y = class extends HTMLElement {
5922
5960
  }
5923
5961
  static createProperty(t8, s8 = b) {
5924
5962
  if (s8.state && (s8.attribute = false), this._$Ei(), this.prototype.hasOwnProperty(t8) && ((s8 = Object.create(s8)).wrapped = true), this.elementProperties.set(t8, s8), !s8.noAccessor) {
5925
- const i9 = Symbol(), h8 = this.getPropertyDescriptor(t8, i9, s8);
5963
+ const i9 = /* @__PURE__ */ Symbol(), h8 = this.getPropertyDescriptor(t8, i9, s8);
5926
5964
  void 0 !== h8 && e2(this.prototype, t8, h8);
5927
5965
  }
5928
5966
  }
@@ -6098,7 +6136,7 @@ y.elementStyles = [], y.shadowRootOptions = { mode: "open" }, y[d("elementProper
6098
6136
 
6099
6137
  // node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js
6100
6138
  var t2 = globalThis, i3 = t2.trustedTypes, s2 = i3 ? i3.createPolicy("lit-html", { createHTML: (t8) => t8 }) : void 0, e3 = "$lit$", h2 = `lit$${Math.random().toFixed(9).slice(2)}$`, o3 = "?" + h2, n3 = `<${o3}>`, r3 = document, l2 = () => r3.createComment(""), c3 = (t8) => null === t8 || "object" != typeof t8 && "function" != typeof t8, a2 = Array.isArray, u2 = (t8) => a2(t8) || "function" == typeof t8?.[Symbol.iterator], d2 = "[ \n\f\r]", f2 = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, v = /-->/g, _ = />/g, m = RegExp(`>|${d2}(?:([^\\s"'>=/]+)(${d2}*=${d2}*(?:[^
6101
- \f\r"'\`<>=]|("|')|))|$)`, "g"), p2 = /'/g, g = /"/g, $ = /^(?:script|style|textarea|title)$/i, y2 = (t8) => (i9, ...s8) => ({ _$litType$: t8, strings: i9, values: s8 }), x = y2(1), b2 = y2(2), w = y2(3), T = Symbol.for("lit-noChange"), E = Symbol.for("lit-nothing"), A = /* @__PURE__ */ new WeakMap(), C = r3.createTreeWalker(r3, 129);
6139
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), p2 = /'/g, g = /"/g, $ = /^(?:script|style|textarea|title)$/i, y2 = (t8) => (i9, ...s8) => ({ _$litType$: t8, strings: i9, values: s8 }), x = y2(1), b2 = y2(2), w = y2(3), T = /* @__PURE__ */ Symbol.for("lit-noChange"), E = /* @__PURE__ */ Symbol.for("lit-nothing"), A = /* @__PURE__ */ new WeakMap(), C = r3.createTreeWalker(r3, 129);
6102
6140
  function P(t8, i9) {
6103
6141
  if (!a2(t8) || !t8.hasOwnProperty("raw")) throw Error("invalid template strings array");
6104
6142
  return void 0 !== s2 ? s2.createHTML(i9) : i9;
@@ -6603,7 +6641,7 @@ function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, e
6603
6641
  done = true;
6604
6642
  }
6605
6643
  ;
6606
- function __runInitializers(thisArg, initializers, value2) {
6644
+ function __runInitializers2(thisArg, initializers, value2) {
6607
6645
  var useValue = arguments.length > 2;
6608
6646
  for (var i9 = 0; i9 < initializers.length; i9++) {
6609
6647
  value2 = useValue ? initializers[i9].call(thisArg, value2) : initializers[i9].call(thisArg);
@@ -6981,7 +7019,7 @@ var tslib_es6_default = {
6981
7019
  __decorate,
6982
7020
  __param,
6983
7021
  __esDecorate,
6984
- __runInitializers,
7022
+ __runInitializers: __runInitializers2,
6985
7023
  __propKey,
6986
7024
  __setFunctionName,
6987
7025
  __metadata,
@@ -7055,7 +7093,7 @@ var Subscription = (function() {
7055
7093
  this._finalizers = null;
7056
7094
  }
7057
7095
  Subscription2.prototype.unsubscribe = function() {
7058
- var e_1, _a, e_2, _b;
7096
+ var e_1, _a7, e_2, _b;
7059
7097
  var errors;
7060
7098
  if (!this.closed) {
7061
7099
  this.closed = true;
@@ -7072,7 +7110,7 @@ var Subscription = (function() {
7072
7110
  e_1 = { error: e_1_1 };
7073
7111
  } finally {
7074
7112
  try {
7075
- if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
7113
+ if (_parentage_1_1 && !_parentage_1_1.done && (_a7 = _parentage_1.return)) _a7.call(_parentage_1);
7076
7114
  } finally {
7077
7115
  if (e_1) throw e_1.error;
7078
7116
  }
@@ -7122,7 +7160,7 @@ var Subscription = (function() {
7122
7160
  }
7123
7161
  };
7124
7162
  Subscription2.prototype.add = function(teardown) {
7125
- var _a;
7163
+ var _a7;
7126
7164
  if (teardown && teardown !== this) {
7127
7165
  if (this.closed) {
7128
7166
  execFinalizer(teardown);
@@ -7133,7 +7171,7 @@ var Subscription = (function() {
7133
7171
  }
7134
7172
  teardown._addParent(this);
7135
7173
  }
7136
- (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);
7174
+ (this._finalizers = (_a7 = this._finalizers) !== null && _a7 !== void 0 ? _a7 : []).push(teardown);
7137
7175
  }
7138
7176
  }
7139
7177
  };
@@ -7252,7 +7290,7 @@ function errorContext(cb) {
7252
7290
  }
7253
7291
  cb();
7254
7292
  if (isRoot) {
7255
- var _a = context, errorThrown = _a.errorThrown, error = _a.error;
7293
+ var _a7 = context, errorThrown = _a7.errorThrown, error = _a7.error;
7256
7294
  context = null;
7257
7295
  if (errorThrown) {
7258
7296
  throw error;
@@ -7483,7 +7521,7 @@ var Observable = (function() {
7483
7521
  var _this = this;
7484
7522
  var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
7485
7523
  errorContext(function() {
7486
- var _a = _this, operator = _a.operator, source = _a.source;
7524
+ var _a7 = _this, operator = _a7.operator, source = _a7.source;
7487
7525
  subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
7488
7526
  });
7489
7527
  return subscriber;
@@ -7515,8 +7553,8 @@ var Observable = (function() {
7515
7553
  });
7516
7554
  };
7517
7555
  Observable2.prototype._subscribe = function(subscriber) {
7518
- var _a;
7519
- return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);
7556
+ var _a7;
7557
+ return (_a7 = this.source) === null || _a7 === void 0 ? void 0 : _a7.subscribe(subscriber);
7520
7558
  };
7521
7559
  Observable2.prototype[observable] = function() {
7522
7560
  return this;
@@ -7548,8 +7586,8 @@ var Observable = (function() {
7548
7586
  return Observable2;
7549
7587
  })();
7550
7588
  function getPromiseCtor(promiseCtor) {
7551
- var _a;
7552
- return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;
7589
+ var _a7;
7590
+ return (_a7 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a7 !== void 0 ? _a7 : Promise;
7553
7591
  }
7554
7592
  function isObserver(value2) {
7555
7593
  return value2 && isFunction(value2.next) && isFunction(value2.error) && isFunction(value2.complete);
@@ -7615,11 +7653,11 @@ var OperatorSubscriber = (function(_super) {
7615
7653
  return _this;
7616
7654
  }
7617
7655
  OperatorSubscriber2.prototype.unsubscribe = function() {
7618
- var _a;
7656
+ var _a7;
7619
7657
  if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
7620
7658
  var closed_1 = this.closed;
7621
7659
  _super.prototype.unsubscribe.call(this);
7622
- !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));
7660
+ !closed_1 && ((_a7 = this.onFinalize) === null || _a7 === void 0 ? void 0 : _a7.call(this));
7623
7661
  }
7624
7662
  };
7625
7663
  return OperatorSubscriber2;
@@ -7660,7 +7698,7 @@ var Subject = (function(_super) {
7660
7698
  Subject2.prototype.next = function(value2) {
7661
7699
  var _this = this;
7662
7700
  errorContext(function() {
7663
- var e_1, _a;
7701
+ var e_1, _a7;
7664
7702
  _this._throwIfClosed();
7665
7703
  if (!_this.isStopped) {
7666
7704
  if (!_this.currentObservers) {
@@ -7675,7 +7713,7 @@ var Subject = (function(_super) {
7675
7713
  e_1 = { error: e_1_1 };
7676
7714
  } finally {
7677
7715
  try {
7678
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
7716
+ if (_c && !_c.done && (_a7 = _b.return)) _a7.call(_b);
7679
7717
  } finally {
7680
7718
  if (e_1) throw e_1.error;
7681
7719
  }
@@ -7716,8 +7754,8 @@ var Subject = (function(_super) {
7716
7754
  };
7717
7755
  Object.defineProperty(Subject2.prototype, "observed", {
7718
7756
  get: function() {
7719
- var _a;
7720
- return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;
7757
+ var _a7;
7758
+ return ((_a7 = this.observers) === null || _a7 === void 0 ? void 0 : _a7.length) > 0;
7721
7759
  },
7722
7760
  enumerable: false,
7723
7761
  configurable: true
@@ -7733,7 +7771,7 @@ var Subject = (function(_super) {
7733
7771
  };
7734
7772
  Subject2.prototype._innerSubscribe = function(subscriber) {
7735
7773
  var _this = this;
7736
- var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;
7774
+ var _a7 = this, hasError = _a7.hasError, isStopped = _a7.isStopped, observers = _a7.observers;
7737
7775
  if (hasError || isStopped) {
7738
7776
  return EMPTY_SUBSCRIPTION;
7739
7777
  }
@@ -7745,7 +7783,7 @@ var Subject = (function(_super) {
7745
7783
  });
7746
7784
  };
7747
7785
  Subject2.prototype._checkFinalizedStatuses = function(subscriber) {
7748
- var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;
7786
+ var _a7 = this, hasError = _a7.hasError, thrownError = _a7.thrownError, isStopped = _a7.isStopped;
7749
7787
  if (hasError) {
7750
7788
  subscriber.error(thrownError);
7751
7789
  } else if (isStopped) {
@@ -7771,20 +7809,20 @@ var AnonymousSubject = (function(_super) {
7771
7809
  return _this;
7772
7810
  }
7773
7811
  AnonymousSubject2.prototype.next = function(value2) {
7774
- var _a, _b;
7775
- (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value2);
7812
+ var _a7, _b;
7813
+ (_b = (_a7 = this.destination) === null || _a7 === void 0 ? void 0 : _a7.next) === null || _b === void 0 ? void 0 : _b.call(_a7, value2);
7776
7814
  };
7777
7815
  AnonymousSubject2.prototype.error = function(err) {
7778
- var _a, _b;
7779
- (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
7816
+ var _a7, _b;
7817
+ (_b = (_a7 = this.destination) === null || _a7 === void 0 ? void 0 : _a7.error) === null || _b === void 0 ? void 0 : _b.call(_a7, err);
7780
7818
  };
7781
7819
  AnonymousSubject2.prototype.complete = function() {
7782
- var _a, _b;
7783
- (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);
7820
+ var _a7, _b;
7821
+ (_b = (_a7 = this.destination) === null || _a7 === void 0 ? void 0 : _a7.complete) === null || _b === void 0 ? void 0 : _b.call(_a7);
7784
7822
  };
7785
7823
  AnonymousSubject2.prototype._subscribe = function(subscriber) {
7786
- var _a, _b;
7787
- return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
7824
+ var _a7, _b;
7825
+ return (_b = (_a7 = this.source) === null || _a7 === void 0 ? void 0 : _a7.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
7788
7826
  };
7789
7827
  return AnonymousSubject2;
7790
7828
  })(Subject);
@@ -7822,7 +7860,7 @@ var ReplaySubject = (function(_super) {
7822
7860
  return _this;
7823
7861
  }
7824
7862
  ReplaySubject2.prototype.next = function(value2) {
7825
- var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;
7863
+ var _a7 = this, isStopped = _a7.isStopped, _buffer = _a7._buffer, _infiniteTimeWindow = _a7._infiniteTimeWindow, _timestampProvider = _a7._timestampProvider, _windowTime = _a7._windowTime;
7826
7864
  if (!isStopped) {
7827
7865
  _buffer.push(value2);
7828
7866
  !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
@@ -7834,7 +7872,7 @@ var ReplaySubject = (function(_super) {
7834
7872
  this._throwIfClosed();
7835
7873
  this._trimBuffer();
7836
7874
  var subscription = this._innerSubscribe(subscriber);
7837
- var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;
7875
+ var _a7 = this, _infiniteTimeWindow = _a7._infiniteTimeWindow, _buffer = _a7._buffer;
7838
7876
  var copy = _buffer.slice();
7839
7877
  for (var i9 = 0; i9 < copy.length && !subscriber.closed; i9 += _infiniteTimeWindow ? 1 : 2) {
7840
7878
  subscriber.next(copy[i9]);
@@ -7843,7 +7881,7 @@ var ReplaySubject = (function(_super) {
7843
7881
  return subscription;
7844
7882
  };
7845
7883
  ReplaySubject2.prototype._trimBuffer = function() {
7846
- var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;
7884
+ var _a7 = this, _bufferSize = _a7._bufferSize, _timestampProvider = _a7._timestampProvider, _buffer = _a7._buffer, _infiniteTimeWindow = _a7._infiniteTimeWindow;
7847
7885
  var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
7848
7886
  _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
7849
7887
  if (!_infiniteTimeWindow) {
@@ -7904,7 +7942,7 @@ var AsyncAction = (function(_super) {
7904
7942
  return _this;
7905
7943
  }
7906
7944
  AsyncAction2.prototype.schedule = function(state, delay2) {
7907
- var _a;
7945
+ var _a7;
7908
7946
  if (delay2 === void 0) {
7909
7947
  delay2 = 0;
7910
7948
  }
@@ -7919,7 +7957,7 @@ var AsyncAction = (function(_super) {
7919
7957
  }
7920
7958
  this.pending = true;
7921
7959
  this.delay = delay2;
7922
- this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay2);
7960
+ this.id = (_a7 = this.id) !== null && _a7 !== void 0 ? _a7 : this.requestAsyncId(scheduler, this.id, delay2);
7923
7961
  return this;
7924
7962
  };
7925
7963
  AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay2) {
@@ -7968,7 +8006,7 @@ var AsyncAction = (function(_super) {
7968
8006
  };
7969
8007
  AsyncAction2.prototype.unsubscribe = function() {
7970
8008
  if (!this.closed) {
7971
- var _a = this, id = _a.id, scheduler = _a.scheduler;
8009
+ var _a7 = this, id = _a7.id, scheduler = _a7.scheduler;
7972
8010
  var actions = scheduler.actions;
7973
8011
  this.work = this.state = this.scheduler = null;
7974
8012
  this.pending = false;
@@ -8103,7 +8141,7 @@ function isIterable(input) {
8103
8141
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js
8104
8142
  function readableStreamLikeToAsyncGenerator(readableStream) {
8105
8143
  return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
8106
- var reader, _a, value2, done;
8144
+ var reader, _a7, value2, done;
8107
8145
  return __generator(this, function(_b) {
8108
8146
  switch (_b.label) {
8109
8147
  case 0:
@@ -8116,7 +8154,7 @@ function readableStreamLikeToAsyncGenerator(readableStream) {
8116
8154
  if (false) return [3, 8];
8117
8155
  return [4, __await(reader.read())];
8118
8156
  case 3:
8119
- _a = _b.sent(), value2 = _a.value, done = _a.done;
8157
+ _a7 = _b.sent(), value2 = _a7.value, done = _a7.done;
8120
8158
  if (!done) return [3, 5];
8121
8159
  return [4, __await(void 0)];
8122
8160
  case 4:
@@ -8201,7 +8239,7 @@ function fromPromise(promise) {
8201
8239
  }
8202
8240
  function fromIterable(iterable) {
8203
8241
  return new Observable(function(subscriber) {
8204
- var e_1, _a;
8242
+ var e_1, _a7;
8205
8243
  try {
8206
8244
  for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
8207
8245
  var value2 = iterable_1_1.value;
@@ -8214,7 +8252,7 @@ function fromIterable(iterable) {
8214
8252
  e_1 = { error: e_1_1 };
8215
8253
  } finally {
8216
8254
  try {
8217
- if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);
8255
+ if (iterable_1_1 && !iterable_1_1.done && (_a7 = iterable_1.return)) _a7.call(iterable_1);
8218
8256
  } finally {
8219
8257
  if (e_1) throw e_1.error;
8220
8258
  }
@@ -8234,7 +8272,7 @@ function fromReadableStreamLike(readableStream) {
8234
8272
  }
8235
8273
  function process2(asyncIterable, subscriber) {
8236
8274
  var asyncIterable_1, asyncIterable_1_1;
8237
- var e_2, _a;
8275
+ var e_2, _a7;
8238
8276
  return __awaiter(this, void 0, void 0, function() {
8239
8277
  var value2, e_2_1;
8240
8278
  return __generator(this, function(_b) {
@@ -8263,8 +8301,8 @@ function process2(asyncIterable, subscriber) {
8263
8301
  return [3, 11];
8264
8302
  case 6:
8265
8303
  _b.trys.push([6, , 9, 10]);
8266
- if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];
8267
- return [4, _a.call(asyncIterable_1)];
8304
+ if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a7 = asyncIterable_1.return))) return [3, 8];
8305
+ return [4, _a7.call(asyncIterable_1)];
8268
8306
  case 7:
8269
8307
  _b.sent();
8270
8308
  _b.label = 8;
@@ -8373,11 +8411,11 @@ function scheduleIterable(input, scheduler) {
8373
8411
  executeSchedule(subscriber, scheduler, function() {
8374
8412
  iterator2 = input[iterator]();
8375
8413
  executeSchedule(subscriber, scheduler, function() {
8376
- var _a;
8414
+ var _a7;
8377
8415
  var value2;
8378
8416
  var done;
8379
8417
  try {
8380
- _a = iterator2.next(), value2 = _a.value, done = _a.done;
8418
+ _a7 = iterator2.next(), value2 = _a7.value, done = _a7.done;
8381
8419
  } catch (err) {
8382
8420
  subscriber.error(err);
8383
8421
  return;
@@ -8600,11 +8638,11 @@ function fromEvent(target, eventName, options, resultSelector) {
8600
8638
  if (resultSelector) {
8601
8639
  return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));
8602
8640
  }
8603
- var _a = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
8641
+ var _a7 = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
8604
8642
  return function(handler2) {
8605
8643
  return target[methodName](eventName, handler2, options);
8606
8644
  };
8607
- }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add2 = _a[0], remove2 = _a[1];
8645
+ }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add2 = _a7[0], remove2 = _a7[1];
8608
8646
  if (!add2) {
8609
8647
  if (isArrayLike(target)) {
8610
8648
  return mergeMap(function(subTarget) {
@@ -8722,7 +8760,7 @@ function bufferCount(bufferSize, startBufferEvery) {
8722
8760
  var buffers = [];
8723
8761
  var count2 = 0;
8724
8762
  source.subscribe(createOperatorSubscriber(subscriber, function(value2) {
8725
- var e_1, _a, e_2, _b;
8763
+ var e_1, _a7, e_2, _b;
8726
8764
  var toEmit = null;
8727
8765
  if (count2++ % startBufferEvery === 0) {
8728
8766
  buffers.push([]);
@@ -8740,7 +8778,7 @@ function bufferCount(bufferSize, startBufferEvery) {
8740
8778
  e_1 = { error: e_1_1 };
8741
8779
  } finally {
8742
8780
  try {
8743
- if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);
8781
+ if (buffers_1_1 && !buffers_1_1.done && (_a7 = buffers_1.return)) _a7.call(buffers_1);
8744
8782
  } finally {
8745
8783
  if (e_1) throw e_1.error;
8746
8784
  }
@@ -8763,7 +8801,7 @@ function bufferCount(bufferSize, startBufferEvery) {
8763
8801
  }
8764
8802
  }
8765
8803
  }, function() {
8766
- var e_3, _a;
8804
+ var e_3, _a7;
8767
8805
  try {
8768
8806
  for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {
8769
8807
  var buffer2 = buffers_2_1.value;
@@ -8773,7 +8811,7 @@ function bufferCount(bufferSize, startBufferEvery) {
8773
8811
  e_3 = { error: e_3_1 };
8774
8812
  } finally {
8775
8813
  try {
8776
- if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);
8814
+ if (buffers_2_1 && !buffers_2_1.done && (_a7 = buffers_2.return)) _a7.call(buffers_2);
8777
8815
  } finally {
8778
8816
  if (e_3) throw e_3.error;
8779
8817
  }
@@ -8787,12 +8825,12 @@ function bufferCount(bufferSize, startBufferEvery) {
8787
8825
 
8788
8826
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js
8789
8827
  function bufferTime(bufferTimeSpan) {
8790
- var _a, _b;
8828
+ var _a7, _b;
8791
8829
  var otherArgs = [];
8792
8830
  for (var _i = 1; _i < arguments.length; _i++) {
8793
8831
  otherArgs[_i - 1] = arguments[_i];
8794
8832
  }
8795
- var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;
8833
+ var scheduler = (_a7 = popScheduler(otherArgs)) !== null && _a7 !== void 0 ? _a7 : asyncScheduler;
8796
8834
  var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
8797
8835
  var maxBufferSize = otherArgs[1] || Infinity;
8798
8836
  return operate(function(source, subscriber) {
@@ -8827,7 +8865,7 @@ function bufferTime(bufferTimeSpan) {
8827
8865
  }
8828
8866
  startBuffer();
8829
8867
  var bufferTimeSubscriber = createOperatorSubscriber(subscriber, function(value2) {
8830
- var e_1, _a2;
8868
+ var e_1, _a8;
8831
8869
  var recordsCopy = bufferRecords.slice();
8832
8870
  try {
8833
8871
  for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {
@@ -8840,7 +8878,7 @@ function bufferTime(bufferTimeSpan) {
8840
8878
  e_1 = { error: e_1_1 };
8841
8879
  } finally {
8842
8880
  try {
8843
- if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a2 = recordsCopy_1.return)) _a2.call(recordsCopy_1);
8881
+ if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a8 = recordsCopy_1.return)) _a8.call(recordsCopy_1);
8844
8882
  } finally {
8845
8883
  if (e_1) throw e_1.error;
8846
8884
  }
@@ -8959,7 +8997,7 @@ function takeUntil(notifier) {
8959
8997
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttle.js
8960
8998
  function throttle(durationSelector, config2) {
8961
8999
  return operate(function(source, subscriber) {
8962
- var _a = config2 !== null && config2 !== void 0 ? config2 : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;
9000
+ var _a7 = config2 !== null && config2 !== void 0 ? config2 : {}, _b = _a7.leading, leading = _b === void 0 ? true : _b, _c = _a7.trailing, trailing = _c === void 0 ? false : _c;
8963
9001
  var hasValue = false;
8964
9002
  var sendValue = null;
8965
9003
  var throttled = null;
@@ -10093,7 +10131,7 @@ var secondsInWeek = secondsInDay * 7;
10093
10131
  var secondsInYear = secondsInDay * daysInYear;
10094
10132
  var secondsInMonth = secondsInYear / 12;
10095
10133
  var secondsInQuarter = secondsInMonth * 3;
10096
- var constructFromSymbol = Symbol.for("constructDateFrom");
10134
+ var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom");
10097
10135
 
10098
10136
  // node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js
10099
10137
  function constructFrom(date, value2) {
@@ -40784,7 +40822,7 @@ var CssManager = class _CssManager {
40784
40822
  };
40785
40823
 
40786
40824
  // node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/static.js
40787
- var a3 = Symbol.for(""), o7 = (t8) => {
40825
+ var a3 = /* @__PURE__ */ Symbol.for(""), o7 = (t8) => {
40788
40826
  if (t8?.r === a3) return t8?._$litStatic$;
40789
40827
  }, s4 = (t8) => ({ _$litStatic$: t8, r: a3 }), i5 = (t8, ...r10) => ({ _$litStatic$: r10.reduce(((r11, e10, a4) => r11 + ((t9) => {
40790
40828
  if (void 0 !== t9._$litStatic$) return t9._$litStatic$;
@@ -40871,8 +40909,8 @@ function e7(e10, r10) {
40871
40909
  return (n12, s8, i9) => {
40872
40910
  const o12 = (t8) => t8.renderRoot?.querySelector(e10) ?? null;
40873
40911
  if (r10) {
40874
- const { get: e11, set: r11 } = "object" == typeof s8 ? n12 : i9 ?? (() => {
40875
- const t8 = Symbol();
40912
+ const { get: e11, set: r11 } = "object" == typeof s8 ? n12 : i9 ?? /* @__PURE__ */ (() => {
40913
+ const t8 = /* @__PURE__ */ Symbol();
40876
40914
  return { get() {
40877
40915
  return this[t8];
40878
40916
  }, set(e12) {
@@ -41326,11 +41364,14 @@ var resolveTemplateFactory = async (factoryArg) => {
41326
41364
  };
41327
41365
 
41328
41366
  // ts_web/elements/wcc-frame.ts
41329
- var WccFrame = class extends DeesElement {
41367
+ var _isFullscreen_dec, _advancedEditorOpen_dec, _viewport_dec, _a, _WccFrame_decorators, _init, _viewport, _advancedEditorOpen, _isFullscreen;
41368
+ _WccFrame_decorators = [t4("wcc-frame")];
41369
+ var WccFrame = class extends (_a = DeesElement, _viewport_dec = [n5()], _advancedEditorOpen_dec = [n5({ type: Boolean })], _isFullscreen_dec = [n5({ type: Boolean })], _a) {
41330
41370
  constructor() {
41331
41371
  super(...arguments);
41332
- this.advancedEditorOpen = false;
41333
- this.isFullscreen = false;
41372
+ __privateAdd(this, _viewport, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
41373
+ __privateAdd(this, _advancedEditorOpen, __runInitializers(_init, 12, this, false)), __runInitializers(_init, 15, this);
41374
+ __privateAdd(this, _isFullscreen, __runInitializers(_init, 16, this, false)), __runInitializers(_init, 19, this);
41334
41375
  }
41335
41376
  render() {
41336
41377
  return x`
@@ -41408,7 +41449,15 @@ var WccFrame = class extends DeesElement {
41408
41449
  return this.shadowRoot.querySelector(".viewport");
41409
41450
  }
41410
41451
  };
41411
- WccFrame.styles = [
41452
+ _init = __decoratorStart(_a);
41453
+ _viewport = new WeakMap();
41454
+ _advancedEditorOpen = new WeakMap();
41455
+ _isFullscreen = new WeakMap();
41456
+ __decorateElement(_init, 4, "viewport", _viewport_dec, WccFrame, _viewport);
41457
+ __decorateElement(_init, 4, "advancedEditorOpen", _advancedEditorOpen_dec, WccFrame, _advancedEditorOpen);
41458
+ __decorateElement(_init, 4, "isFullscreen", _isFullscreen_dec, WccFrame, _isFullscreen);
41459
+ WccFrame = __decorateElement(_init, 0, "WccFrame", _WccFrame_decorators, WccFrame);
41460
+ __publicField(WccFrame, "styles", [
41412
41461
  i`
41413
41462
  :host {
41414
41463
  border: 10px solid #ffaeaf;
@@ -41429,25 +41478,19 @@ WccFrame.styles = [
41429
41478
  min-height: 100%;
41430
41479
  }
41431
41480
  `
41432
- ];
41433
- __decorateClass([
41434
- n5()
41435
- ], WccFrame.prototype, "viewport", 2);
41436
- __decorateClass([
41437
- n5({ type: Boolean })
41438
- ], WccFrame.prototype, "advancedEditorOpen", 2);
41439
- __decorateClass([
41440
- n5({ type: Boolean })
41441
- ], WccFrame.prototype, "isFullscreen", 2);
41442
- WccFrame = __decorateClass([
41443
- t4("wcc-frame")
41444
- ], WccFrame);
41481
+ ]);
41482
+ __runInitializers(_init, 1, WccFrame);
41445
41483
 
41446
41484
  // ts_web/elements/wcc-sidebar.ts
41447
- var WccSidebar = class extends DeesElement {
41485
+ var _isFullscreen_dec2, _dashboardRef_dec, _selectedType_dec, _selectedItem_dec, _a2, _WccSidebar_decorators, _init2, _selectedItem, _selectedType, _dashboardRef, _isFullscreen2;
41486
+ _WccSidebar_decorators = [t4("wcc-sidebar")];
41487
+ var WccSidebar = class extends (_a2 = DeesElement, _selectedItem_dec = [n5({ attribute: false })], _selectedType_dec = [n5({ attribute: false })], _dashboardRef_dec = [n5()], _isFullscreen_dec2 = [n5()], _a2) {
41448
41488
  constructor() {
41449
41489
  super(...arguments);
41450
- this.isFullscreen = false;
41490
+ __privateAdd(this, _selectedItem, __runInitializers(_init2, 8, this)), __runInitializers(_init2, 11, this);
41491
+ __privateAdd(this, _selectedType, __runInitializers(_init2, 12, this)), __runInitializers(_init2, 15, this);
41492
+ __privateAdd(this, _dashboardRef, __runInitializers(_init2, 16, this)), __runInitializers(_init2, 19, this);
41493
+ __privateAdd(this, _isFullscreen2, __runInitializers(_init2, 20, this, false)), __runInitializers(_init2, 23, this);
41451
41494
  }
41452
41495
  render() {
41453
41496
  return x`
@@ -41656,37 +41699,1343 @@ var WccSidebar = class extends DeesElement {
41656
41699
  this.dashboardRef.buildUrl();
41657
41700
  }
41658
41701
  };
41659
- __decorateClass([
41660
- n5({ attribute: false })
41661
- ], WccSidebar.prototype, "selectedItem", 2);
41662
- __decorateClass([
41663
- n5({ attribute: false })
41664
- ], WccSidebar.prototype, "selectedType", 2);
41665
- __decorateClass([
41666
- n5()
41667
- ], WccSidebar.prototype, "dashboardRef", 2);
41668
- __decorateClass([
41669
- n5()
41670
- ], WccSidebar.prototype, "isFullscreen", 2);
41671
- WccSidebar = __decorateClass([
41672
- t4("wcc-sidebar")
41673
- ], WccSidebar);
41702
+ _init2 = __decoratorStart(_a2);
41703
+ _selectedItem = new WeakMap();
41704
+ _selectedType = new WeakMap();
41705
+ _dashboardRef = new WeakMap();
41706
+ _isFullscreen2 = new WeakMap();
41707
+ __decorateElement(_init2, 4, "selectedItem", _selectedItem_dec, WccSidebar, _selectedItem);
41708
+ __decorateElement(_init2, 4, "selectedType", _selectedType_dec, WccSidebar, _selectedType);
41709
+ __decorateElement(_init2, 4, "dashboardRef", _dashboardRef_dec, WccSidebar, _dashboardRef);
41710
+ __decorateElement(_init2, 4, "isFullscreen", _isFullscreen_dec2, WccSidebar, _isFullscreen2);
41711
+ WccSidebar = __decorateElement(_init2, 0, "WccSidebar", _WccSidebar_decorators, WccSidebar);
41712
+ __runInitializers(_init2, 1, WccSidebar);
41713
+
41714
+ // ts_web/elements/wcc-record-button.ts
41715
+ var _duration_dec, _state_dec, _a3, _WccRecordButton_decorators, _init3, _state, _duration;
41716
+ _WccRecordButton_decorators = [t4("wcc-record-button")];
41717
+ var WccRecordButton = class extends (_a3 = DeesElement, _state_dec = [n5({ type: String })], _duration_dec = [n5({ type: Number })], _a3) {
41718
+ constructor() {
41719
+ super(...arguments);
41720
+ __privateAdd(this, _state, __runInitializers(_init3, 8, this, "idle")), __runInitializers(_init3, 11, this);
41721
+ __privateAdd(this, _duration, __runInitializers(_init3, 12, this, 0)), __runInitializers(_init3, 15, this);
41722
+ __publicField(this, "handleClick", () => {
41723
+ this.dispatchEvent(new CustomEvent("record-click", {
41724
+ bubbles: true,
41725
+ composed: true
41726
+ }));
41727
+ });
41728
+ }
41729
+ formatDuration(seconds) {
41730
+ const mins = Math.floor(seconds / 60);
41731
+ const secs = seconds % 60;
41732
+ return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
41733
+ }
41734
+ render() {
41735
+ return x`
41736
+ <div class="content">
41737
+ <div class="rec-icon"></div>
41738
+ ${this.state === "recording" ? x`
41739
+ <span class="recording-timer">${this.formatDuration(this.duration)}</span>
41740
+ ` : null}
41741
+ </div>
41742
+ `;
41743
+ }
41744
+ async connectedCallback() {
41745
+ await super.connectedCallback();
41746
+ this.addEventListener("click", this.handleClick);
41747
+ }
41748
+ async disconnectedCallback() {
41749
+ await super.disconnectedCallback();
41750
+ this.removeEventListener("click", this.handleClick);
41751
+ }
41752
+ updated(changedProperties) {
41753
+ super.updated(changedProperties);
41754
+ if (changedProperties.has("state")) {
41755
+ if (this.state === "recording") {
41756
+ this.classList.add("recording");
41757
+ } else {
41758
+ this.classList.remove("recording");
41759
+ }
41760
+ }
41761
+ }
41762
+ };
41763
+ _init3 = __decoratorStart(_a3);
41764
+ _state = new WeakMap();
41765
+ _duration = new WeakMap();
41766
+ __decorateElement(_init3, 4, "state", _state_dec, WccRecordButton, _state);
41767
+ __decorateElement(_init3, 4, "duration", _duration_dec, WccRecordButton, _duration);
41768
+ WccRecordButton = __decorateElement(_init3, 0, "WccRecordButton", _WccRecordButton_decorators, WccRecordButton);
41769
+ __publicField(WccRecordButton, "styles", [
41770
+ i`
41771
+ :host {
41772
+ display: flex;
41773
+ align-items: center;
41774
+ justify-content: center;
41775
+ background: transparent;
41776
+ cursor: pointer;
41777
+ transition: all 0.15s ease;
41778
+ color: #666;
41779
+ user-select: none;
41780
+ }
41781
+
41782
+ :host(:hover) {
41783
+ background: rgba(239, 68, 68, 0.05);
41784
+ color: #f87171;
41785
+ }
41786
+
41787
+ :host(.recording) {
41788
+ background: rgba(239, 68, 68, 0.15);
41789
+ color: #f87171;
41790
+ }
41791
+
41792
+ .content {
41793
+ display: flex;
41794
+ align-items: center;
41795
+ justify-content: center;
41796
+ gap: 0.25rem;
41797
+ }
41798
+
41799
+ .rec-icon {
41800
+ width: 12px;
41801
+ height: 12px;
41802
+ border-radius: 50%;
41803
+ background: currentColor;
41804
+ }
41805
+
41806
+ :host(.recording) .rec-icon {
41807
+ animation: pulse-recording 1s ease-in-out infinite;
41808
+ }
41809
+
41810
+ @keyframes pulse-recording {
41811
+ 0%, 100% { opacity: 1; transform: scale(1); }
41812
+ 50% { opacity: 0.5; transform: scale(0.9); }
41813
+ }
41814
+
41815
+ .recording-timer {
41816
+ font-family: 'Consolas', 'Monaco', monospace;
41817
+ font-size: 0.7rem;
41818
+ }
41819
+ `
41820
+ ]);
41821
+ __runInitializers(_init3, 1, WccRecordButton);
41822
+
41823
+ // ts_web/services/recorder.service.ts
41824
+ var RecorderService = class {
41825
+ // Recording state
41826
+ mediaRecorder = null;
41827
+ recordedChunks = [];
41828
+ durationInterval = null;
41829
+ _duration = 0;
41830
+ _recordedBlob = null;
41831
+ _isRecording = false;
41832
+ // Audio monitoring state
41833
+ audioContext = null;
41834
+ audioAnalyser = null;
41835
+ audioMonitoringInterval = null;
41836
+ monitoringStream = null;
41837
+ // Current recording stream
41838
+ currentStream = null;
41839
+ // Event callbacks
41840
+ events = {};
41841
+ constructor(events) {
41842
+ if (events) {
41843
+ this.events = events;
41844
+ }
41845
+ }
41846
+ // Public getters
41847
+ get isRecording() {
41848
+ return this._isRecording;
41849
+ }
41850
+ get duration() {
41851
+ return this._duration;
41852
+ }
41853
+ get recordedBlob() {
41854
+ return this._recordedBlob;
41855
+ }
41856
+ // Update event callbacks
41857
+ setEvents(events) {
41858
+ this.events = { ...this.events, ...events };
41859
+ }
41860
+ // ==================== Microphone Management ====================
41861
+ async loadMicrophones(requestPermission = false) {
41862
+ try {
41863
+ if (requestPermission) {
41864
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
41865
+ stream.getTracks().forEach((track2) => track2.stop());
41866
+ }
41867
+ const devices = await navigator.mediaDevices.enumerateDevices();
41868
+ return devices.filter((d5) => d5.kind === "audioinput");
41869
+ } catch (error) {
41870
+ console.error("Error loading microphones:", error);
41871
+ return [];
41872
+ }
41873
+ }
41874
+ async startAudioMonitoring(deviceId) {
41875
+ this.stopAudioMonitoring();
41876
+ if (!deviceId) return;
41877
+ try {
41878
+ const stream = await navigator.mediaDevices.getUserMedia({
41879
+ audio: { deviceId: { exact: deviceId } }
41880
+ });
41881
+ this.monitoringStream = stream;
41882
+ this.audioContext = new AudioContext();
41883
+ const source = this.audioContext.createMediaStreamSource(stream);
41884
+ this.audioAnalyser = this.audioContext.createAnalyser();
41885
+ this.audioAnalyser.fftSize = 256;
41886
+ source.connect(this.audioAnalyser);
41887
+ const dataArray = new Uint8Array(this.audioAnalyser.frequencyBinCount);
41888
+ this.audioMonitoringInterval = window.setInterval(() => {
41889
+ if (this.audioAnalyser) {
41890
+ this.audioAnalyser.getByteFrequencyData(dataArray);
41891
+ const average = dataArray.reduce((a4, b4) => a4 + b4) / dataArray.length;
41892
+ const level = Math.min(100, average / 128 * 100);
41893
+ this.events.onAudioLevelUpdate?.(level);
41894
+ }
41895
+ }, 50);
41896
+ } catch (error) {
41897
+ console.error("Error starting audio monitoring:", error);
41898
+ this.events.onAudioLevelUpdate?.(0);
41899
+ }
41900
+ }
41901
+ stopAudioMonitoring() {
41902
+ if (this.audioMonitoringInterval) {
41903
+ clearInterval(this.audioMonitoringInterval);
41904
+ this.audioMonitoringInterval = null;
41905
+ }
41906
+ if (this.audioContext) {
41907
+ this.audioContext.close();
41908
+ this.audioContext = null;
41909
+ }
41910
+ if (this.monitoringStream) {
41911
+ this.monitoringStream.getTracks().forEach((track2) => track2.stop());
41912
+ this.monitoringStream = null;
41913
+ }
41914
+ this.audioAnalyser = null;
41915
+ }
41916
+ // ==================== Recording Control ====================
41917
+ async startRecording(options) {
41918
+ try {
41919
+ this.stopAudioMonitoring();
41920
+ const displayMediaOptions = {
41921
+ video: {
41922
+ displaySurface: options.mode === "viewport" ? "browser" : "monitor"
41923
+ },
41924
+ audio: false
41925
+ };
41926
+ if (options.mode === "viewport") {
41927
+ displayMediaOptions.preferCurrentTab = true;
41928
+ }
41929
+ const videoStream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
41930
+ if (options.mode === "viewport" && options.viewportElement) {
41931
+ try {
41932
+ if ("CropTarget" in window) {
41933
+ const cropTarget = await window.CropTarget.fromElement(options.viewportElement);
41934
+ const [videoTrack] = videoStream.getVideoTracks();
41935
+ await videoTrack.cropTo(cropTarget);
41936
+ }
41937
+ } catch (e10) {
41938
+ console.warn("Element Capture not supported, recording full tab:", e10);
41939
+ }
41940
+ }
41941
+ let combinedStream = videoStream;
41942
+ if (options.audioDeviceId) {
41943
+ try {
41944
+ const audioStream = await navigator.mediaDevices.getUserMedia({
41945
+ audio: { deviceId: { exact: options.audioDeviceId } }
41946
+ });
41947
+ combinedStream = new MediaStream([
41948
+ ...videoStream.getVideoTracks(),
41949
+ ...audioStream.getAudioTracks()
41950
+ ]);
41951
+ } catch (audioError) {
41952
+ console.warn("Could not add audio:", audioError);
41953
+ }
41954
+ }
41955
+ this.currentStream = combinedStream;
41956
+ const mimeType = MediaRecorder.isTypeSupported("video/webm;codecs=vp9") ? "video/webm;codecs=vp9" : "video/webm";
41957
+ this.mediaRecorder = new MediaRecorder(combinedStream, { mimeType });
41958
+ this.recordedChunks = [];
41959
+ this.mediaRecorder.ondataavailable = (e10) => {
41960
+ if (e10.data.size > 0) {
41961
+ this.recordedChunks.push(e10.data);
41962
+ }
41963
+ };
41964
+ this.mediaRecorder.onstop = () => this.handleRecordingComplete();
41965
+ videoStream.getVideoTracks()[0].onended = () => {
41966
+ if (this._isRecording) {
41967
+ this.stopRecording();
41968
+ this.events.onStreamEnded?.();
41969
+ }
41970
+ };
41971
+ this.mediaRecorder.start(1e3);
41972
+ this._duration = 0;
41973
+ this.durationInterval = window.setInterval(() => {
41974
+ this._duration++;
41975
+ this.events.onDurationUpdate?.(this._duration);
41976
+ }, 1e3);
41977
+ this._isRecording = true;
41978
+ } catch (error) {
41979
+ console.error("Error starting recording:", error);
41980
+ this._isRecording = false;
41981
+ this.events.onError?.(error);
41982
+ throw error;
41983
+ }
41984
+ }
41985
+ stopRecording() {
41986
+ if (this.mediaRecorder && this.mediaRecorder.state !== "inactive") {
41987
+ this.mediaRecorder.stop();
41988
+ }
41989
+ if (this.durationInterval) {
41990
+ clearInterval(this.durationInterval);
41991
+ this.durationInterval = null;
41992
+ }
41993
+ }
41994
+ handleRecordingComplete() {
41995
+ this._recordedBlob = new Blob(this.recordedChunks, { type: "video/webm" });
41996
+ if (this.currentStream) {
41997
+ this.currentStream.getTracks().forEach((track2) => track2.stop());
41998
+ this.currentStream = null;
41999
+ }
42000
+ this._isRecording = false;
42001
+ this.events.onRecordingComplete?.(this._recordedBlob);
42002
+ }
42003
+ // ==================== Trim & Export ====================
42004
+ async exportTrimmedVideo(videoElement, trimStart, trimEnd) {
42005
+ return new Promise((resolve2, reject) => {
42006
+ const canvas = document.createElement("canvas");
42007
+ canvas.width = videoElement.videoWidth || 1280;
42008
+ canvas.height = videoElement.videoHeight || 720;
42009
+ const ctx = canvas.getContext("2d");
42010
+ if (!ctx) {
42011
+ reject(new Error("Could not get canvas context"));
42012
+ return;
42013
+ }
42014
+ const canvasStream = canvas.captureStream(30);
42015
+ let combinedStream;
42016
+ try {
42017
+ const audioCtx = new AudioContext();
42018
+ const source = audioCtx.createMediaElementSource(videoElement);
42019
+ const destination = audioCtx.createMediaStreamDestination();
42020
+ source.connect(destination);
42021
+ source.connect(audioCtx.destination);
42022
+ combinedStream = new MediaStream([
42023
+ ...canvasStream.getVideoTracks(),
42024
+ ...destination.stream.getAudioTracks()
42025
+ ]);
42026
+ const cleanup = () => {
42027
+ audioCtx.close();
42028
+ };
42029
+ this.recordTrimmedStream(videoElement, canvas, ctx, combinedStream, trimStart, trimEnd, cleanup, resolve2, reject);
42030
+ } catch (audioError) {
42031
+ console.warn("Could not capture audio, recording video only:", audioError);
42032
+ combinedStream = canvasStream;
42033
+ this.recordTrimmedStream(videoElement, canvas, ctx, combinedStream, trimStart, trimEnd, () => {
42034
+ }, resolve2, reject);
42035
+ }
42036
+ });
42037
+ }
42038
+ recordTrimmedStream(video, canvas, ctx, stream, trimStart, trimEnd, cleanup, resolve2, reject) {
42039
+ const mimeType = MediaRecorder.isTypeSupported("video/webm;codecs=vp9") ? "video/webm;codecs=vp9" : "video/webm";
42040
+ const recorder = new MediaRecorder(stream, { mimeType });
42041
+ const chunks = [];
42042
+ recorder.ondataavailable = (e10) => {
42043
+ if (e10.data.size > 0) {
42044
+ chunks.push(e10.data);
42045
+ }
42046
+ };
42047
+ recorder.onstop = () => {
42048
+ cleanup();
42049
+ resolve2(new Blob(chunks, { type: "video/webm" }));
42050
+ };
42051
+ recorder.onerror = (e10) => {
42052
+ cleanup();
42053
+ reject(new Error("Recording error: " + e10));
42054
+ };
42055
+ video.currentTime = trimStart;
42056
+ video.onseeked = () => {
42057
+ recorder.start(100);
42058
+ video.play();
42059
+ const drawFrame = () => {
42060
+ if (video.currentTime >= trimEnd || video.paused || video.ended) {
42061
+ video.pause();
42062
+ video.onseeked = null;
42063
+ setTimeout(() => {
42064
+ if (recorder.state === "recording") {
42065
+ recorder.stop();
42066
+ }
42067
+ }, 100);
42068
+ return;
42069
+ }
42070
+ ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
42071
+ requestAnimationFrame(drawFrame);
42072
+ };
42073
+ drawFrame();
42074
+ };
42075
+ }
42076
+ // ==================== Cleanup ====================
42077
+ reset() {
42078
+ this._recordedBlob = null;
42079
+ this.recordedChunks = [];
42080
+ this._duration = 0;
42081
+ this._isRecording = false;
42082
+ }
42083
+ dispose() {
42084
+ this.stopRecording();
42085
+ this.stopAudioMonitoring();
42086
+ this.reset();
42087
+ if (this.currentStream) {
42088
+ this.currentStream.getTracks().forEach((track2) => track2.stop());
42089
+ this.currentStream = null;
42090
+ }
42091
+ }
42092
+ };
42093
+
42094
+ // ts_web/elements/wcc-recording-panel.ts
42095
+ var _isExporting_dec, _isDraggingTrim_dec, _videoDuration_dec, _trimEnd_dec, _trimStart_dec, _previewVideoUrl_dec, _recordingDuration_dec, _audioLevel_dec, _availableMicrophones_dec, _selectedMicrophoneId_dec, _audioEnabled_dec, _recordingMode_dec, _panelState_dec, _dashboardRef_dec2, _a4, _WccRecordingPanel_decorators, _init4, _dashboardRef2, _panelState, _recordingMode, _audioEnabled, _selectedMicrophoneId, _availableMicrophones, _audioLevel, _recordingDuration, _previewVideoUrl, _trimStart, _trimEnd, _videoDuration, _isDraggingTrim, _isExporting;
42096
+ _WccRecordingPanel_decorators = [t4("wcc-recording-panel")];
42097
+ var WccRecordingPanel = class extends (_a4 = DeesElement, _dashboardRef_dec2 = [n5({ attribute: false })], _panelState_dec = [r5()], _recordingMode_dec = [r5()], _audioEnabled_dec = [r5()], _selectedMicrophoneId_dec = [r5()], _availableMicrophones_dec = [r5()], _audioLevel_dec = [r5()], _recordingDuration_dec = [r5()], _previewVideoUrl_dec = [r5()], _trimStart_dec = [r5()], _trimEnd_dec = [r5()], _videoDuration_dec = [r5()], _isDraggingTrim_dec = [r5()], _isExporting_dec = [r5()], _a4) {
42098
+ constructor() {
42099
+ super();
42100
+ __privateAdd(this, _dashboardRef2, __runInitializers(_init4, 8, this)), __runInitializers(_init4, 11, this);
42101
+ __privateAdd(this, _panelState, __runInitializers(_init4, 12, this, "options")), __runInitializers(_init4, 15, this);
42102
+ __privateAdd(this, _recordingMode, __runInitializers(_init4, 16, this, "viewport")), __runInitializers(_init4, 19, this);
42103
+ __privateAdd(this, _audioEnabled, __runInitializers(_init4, 20, this, false)), __runInitializers(_init4, 23, this);
42104
+ __privateAdd(this, _selectedMicrophoneId, __runInitializers(_init4, 24, this, "")), __runInitializers(_init4, 27, this);
42105
+ __privateAdd(this, _availableMicrophones, __runInitializers(_init4, 28, this, [])), __runInitializers(_init4, 31, this);
42106
+ __privateAdd(this, _audioLevel, __runInitializers(_init4, 32, this, 0)), __runInitializers(_init4, 35, this);
42107
+ __privateAdd(this, _recordingDuration, __runInitializers(_init4, 36, this, 0)), __runInitializers(_init4, 39, this);
42108
+ __privateAdd(this, _previewVideoUrl, __runInitializers(_init4, 40, this, "")), __runInitializers(_init4, 43, this);
42109
+ __privateAdd(this, _trimStart, __runInitializers(_init4, 44, this, 0)), __runInitializers(_init4, 47, this);
42110
+ __privateAdd(this, _trimEnd, __runInitializers(_init4, 48, this, 0)), __runInitializers(_init4, 51, this);
42111
+ __privateAdd(this, _videoDuration, __runInitializers(_init4, 52, this, 0)), __runInitializers(_init4, 55, this);
42112
+ __privateAdd(this, _isDraggingTrim, __runInitializers(_init4, 56, this, null)), __runInitializers(_init4, 59, this);
42113
+ __privateAdd(this, _isExporting, __runInitializers(_init4, 60, this, false)), __runInitializers(_init4, 63, this);
42114
+ // Service instance
42115
+ __publicField(this, "recorderService");
42116
+ this.recorderService = new RecorderService({
42117
+ onDurationUpdate: (duration) => {
42118
+ this.recordingDuration = duration;
42119
+ this.dispatchEvent(new CustomEvent("duration-update", {
42120
+ detail: { duration },
42121
+ bubbles: true,
42122
+ composed: true
42123
+ }));
42124
+ },
42125
+ onRecordingComplete: (blob) => {
42126
+ this.handleRecordingComplete(blob);
42127
+ },
42128
+ onAudioLevelUpdate: (level) => {
42129
+ this.audioLevel = level;
42130
+ },
42131
+ onStreamEnded: () => {
42132
+ this.stopRecording();
42133
+ }
42134
+ });
42135
+ }
42136
+ render() {
42137
+ if (this.panelState === "options") {
42138
+ return this.renderOptionsPanel();
42139
+ } else if (this.panelState === "preview") {
42140
+ return this.renderPreviewModal();
42141
+ }
42142
+ return x``;
42143
+ }
42144
+ renderOptionsPanel() {
42145
+ return x`
42146
+ <div class="recording-options-panel">
42147
+ <div class="recording-options-header">
42148
+ <span class="recording-options-title">Recording Settings</span>
42149
+ <button class="recording-options-close" @click=${() => this.close()}>✕</button>
42150
+ </div>
42151
+ <div class="recording-options-content">
42152
+ <div class="recording-option-group">
42153
+ <div class="recording-option-label">Record Area</div>
42154
+ <div class="recording-mode-buttons">
42155
+ <button
42156
+ class="recording-mode-btn ${this.recordingMode === "viewport" ? "selected" : ""}"
42157
+ @click=${() => this.recordingMode = "viewport"}
42158
+ >
42159
+ Viewport Only
42160
+ </button>
42161
+ <button
42162
+ class="recording-mode-btn ${this.recordingMode === "screen" ? "selected" : ""}"
42163
+ @click=${() => this.recordingMode = "screen"}
42164
+ >
42165
+ Entire Screen
42166
+ </button>
42167
+ </div>
42168
+ </div>
42169
+
42170
+ <div class="recording-option-group">
42171
+ <div class="recording-option-label">Audio</div>
42172
+ <div class="audio-toggle">
42173
+ <input
42174
+ type="checkbox"
42175
+ id="audioToggle"
42176
+ ?checked=${this.audioEnabled}
42177
+ @change=${(e10) => this.handleAudioToggle(e10.target.checked)}
42178
+ />
42179
+ <label for="audioToggle">Enable Microphone</label>
42180
+ </div>
42181
+
42182
+ ${this.audioEnabled ? x`
42183
+ <select
42184
+ class="microphone-select"
42185
+ .value=${this.selectedMicrophoneId}
42186
+ @change=${(e10) => this.handleMicrophoneChange(e10.target.value)}
42187
+ >
42188
+ <option value="">Select Microphone...</option>
42189
+ ${this.availableMicrophones.map((mic) => x`
42190
+ <option value=${mic.deviceId}>${mic.label || `Microphone ${mic.deviceId.slice(0, 8)}`}</option>
42191
+ `)}
42192
+ </select>
42193
+
42194
+ ${this.selectedMicrophoneId ? x`
42195
+ <div class="audio-level-container">
42196
+ <div class="audio-level-label">Input Level</div>
42197
+ <div class="audio-level-bar">
42198
+ <div class="audio-level-fill" style="width: ${this.audioLevel}%"></div>
42199
+ </div>
42200
+ </div>
42201
+ ` : null}
42202
+ ` : null}
42203
+ </div>
42204
+
42205
+ <button class="start-recording-btn" @click=${() => this.startRecording()}>
42206
+ <div class="rec-dot"></div>
42207
+ Start Recording
42208
+ </button>
42209
+ </div>
42210
+ </div>
42211
+ `;
42212
+ }
42213
+ renderPreviewModal() {
42214
+ return x`
42215
+ <div class="preview-modal-overlay" @click=${(e10) => {
42216
+ if (e10.target.classList.contains("preview-modal-overlay")) {
42217
+ this.discardRecording();
42218
+ }
42219
+ }}>
42220
+ <div class="preview-modal">
42221
+ <div class="preview-modal-header">
42222
+ <span class="preview-modal-title">Recording Preview</span>
42223
+ <button class="preview-modal-close" @click=${() => this.discardRecording()}>✕</button>
42224
+ </div>
42225
+ <div class="preview-modal-content">
42226
+ <div class="preview-video-container">
42227
+ <video
42228
+ class="preview-video"
42229
+ src=${this.previewVideoUrl}
42230
+ controls
42231
+ @loadedmetadata=${(e10) => this.handleVideoLoaded(e10.target)}
42232
+ ></video>
42233
+ </div>
42234
+
42235
+ <!-- Trim Section -->
42236
+ <div class="trim-section">
42237
+ <div class="trim-section-header">
42238
+ <span class="trim-section-title">Trim Video</span>
42239
+ <span class="trim-duration-info">
42240
+ ${this.formatDuration(Math.floor(this.trimEnd - this.trimStart))}
42241
+ ${this.trimStart > 0 || this.trimEnd < this.videoDuration ? `(trimmed from ${this.formatDuration(Math.floor(this.videoDuration))})` : ""}
42242
+ </span>
42243
+ </div>
42244
+
42245
+ <div
42246
+ class="trim-timeline"
42247
+ @mousedown=${(e10) => this.handleTimelineClick(e10)}
42248
+ @mousemove=${(e10) => this.handleTimelineDrag(e10)}
42249
+ @mouseup=${() => this.handleTimelineDragEnd()}
42250
+ @mouseleave=${() => this.handleTimelineDragEnd()}
42251
+ >
42252
+ <div class="trim-track"></div>
42253
+ <div
42254
+ class="trim-selected"
42255
+ style="left: ${this.getHandlePositionStyle(this.trimStart)}; right: ${this.getHandlePositionFromEndStyle(this.trimEnd)};"
42256
+ ></div>
42257
+ <div
42258
+ class="trim-handle start-handle"
42259
+ style="left: ${this.getHandlePositionStyle(this.trimStart)};"
42260
+ @mousedown=${(e10) => {
42261
+ e10.stopPropagation();
42262
+ this.isDraggingTrim = "start";
42263
+ }}
42264
+ ></div>
42265
+ <div
42266
+ class="trim-handle end-handle"
42267
+ style="left: ${this.getHandlePositionStyle(this.trimEnd)};"
42268
+ @mousedown=${(e10) => {
42269
+ e10.stopPropagation();
42270
+ this.isDraggingTrim = "end";
42271
+ }}
42272
+ ></div>
42273
+ </div>
42274
+
42275
+ <div class="trim-time-labels">
42276
+ <span>${this.formatDuration(Math.floor(this.trimStart))}</span>
42277
+ <span>${this.formatDuration(Math.floor(this.trimEnd))}</span>
42278
+ </div>
42279
+
42280
+ <div class="trim-actions">
42281
+ <button class="trim-action-btn" @click=${() => this.resetTrim()}>
42282
+ Reset Trim
42283
+ </button>
42284
+ <button class="trim-action-btn" @click=${() => this.previewTrimmedSection()}>
42285
+ Preview Selection
42286
+ </button>
42287
+ </div>
42288
+ </div>
42289
+ </div>
42290
+ <div class="preview-modal-actions">
42291
+ <button class="preview-btn secondary" @click=${() => this.discardRecording()}>Discard</button>
42292
+ <button
42293
+ class="preview-btn primary"
42294
+ ?disabled=${this.isExporting}
42295
+ @click=${() => this.downloadRecording()}
42296
+ >
42297
+ ${this.isExporting ? x`<span class="export-spinner"></span>Exporting...` : "Download"}
42298
+ </button>
42299
+ </div>
42300
+ </div>
42301
+ </div>
42302
+ `;
42303
+ }
42304
+ // ==================== Audio Methods ====================
42305
+ async handleAudioToggle(enabled) {
42306
+ this.audioEnabled = enabled;
42307
+ if (enabled) {
42308
+ this.availableMicrophones = await this.recorderService.loadMicrophones(true);
42309
+ if (this.availableMicrophones.length > 0 && !this.selectedMicrophoneId) {
42310
+ this.selectedMicrophoneId = this.availableMicrophones[0].deviceId;
42311
+ await this.recorderService.startAudioMonitoring(this.selectedMicrophoneId);
42312
+ }
42313
+ } else {
42314
+ this.recorderService.stopAudioMonitoring();
42315
+ this.selectedMicrophoneId = "";
42316
+ this.audioLevel = 0;
42317
+ }
42318
+ }
42319
+ async handleMicrophoneChange(deviceId) {
42320
+ this.selectedMicrophoneId = deviceId;
42321
+ if (deviceId) {
42322
+ await this.recorderService.startAudioMonitoring(deviceId);
42323
+ } else {
42324
+ this.recorderService.stopAudioMonitoring();
42325
+ this.audioLevel = 0;
42326
+ }
42327
+ }
42328
+ // ==================== Recording Methods ====================
42329
+ async startRecording() {
42330
+ try {
42331
+ let viewportElement;
42332
+ if (this.recordingMode === "viewport" && this.dashboardRef) {
42333
+ const wccFrame = await this.dashboardRef.wccFrame;
42334
+ viewportElement = await wccFrame.getViewportElement();
42335
+ }
42336
+ await this.recorderService.startRecording({
42337
+ mode: this.recordingMode,
42338
+ audioDeviceId: this.audioEnabled ? this.selectedMicrophoneId : void 0,
42339
+ viewportElement
42340
+ });
42341
+ this.panelState = "recording";
42342
+ this.dispatchEvent(new CustomEvent("recording-start", {
42343
+ bubbles: true,
42344
+ composed: true
42345
+ }));
42346
+ } catch (error) {
42347
+ console.error("Failed to start recording:", error);
42348
+ this.panelState = "options";
42349
+ }
42350
+ }
42351
+ stopRecording() {
42352
+ this.recorderService.stopRecording();
42353
+ }
42354
+ handleRecordingComplete(blob) {
42355
+ if (this.previewVideoUrl) {
42356
+ URL.revokeObjectURL(this.previewVideoUrl);
42357
+ }
42358
+ this.previewVideoUrl = URL.createObjectURL(blob);
42359
+ this.panelState = "preview";
42360
+ this.dispatchEvent(new CustomEvent("recording-stop", {
42361
+ bubbles: true,
42362
+ composed: true
42363
+ }));
42364
+ }
42365
+ discardRecording() {
42366
+ if (this.previewVideoUrl) {
42367
+ URL.revokeObjectURL(this.previewVideoUrl);
42368
+ this.previewVideoUrl = "";
42369
+ }
42370
+ this.recorderService.reset();
42371
+ this.trimStart = 0;
42372
+ this.trimEnd = 0;
42373
+ this.videoDuration = 0;
42374
+ this.isExporting = false;
42375
+ this.recordingDuration = 0;
42376
+ this.close();
42377
+ }
42378
+ async downloadRecording() {
42379
+ const recordedBlob = this.recorderService.recordedBlob;
42380
+ if (!recordedBlob) return;
42381
+ this.isExporting = true;
42382
+ try {
42383
+ let blobToDownload;
42384
+ const needsTrim = this.trimStart > 0.1 || this.trimEnd < this.videoDuration - 0.1;
42385
+ if (needsTrim) {
42386
+ const video = this.shadowRoot?.querySelector(".preview-video");
42387
+ if (video) {
42388
+ blobToDownload = await this.recorderService.exportTrimmedVideo(video, this.trimStart, this.trimEnd);
42389
+ } else {
42390
+ blobToDownload = recordedBlob;
42391
+ }
42392
+ } else {
42393
+ blobToDownload = recordedBlob;
42394
+ }
42395
+ const timestamp2 = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
42396
+ const filename = `wcctools-recording-${timestamp2}.webm`;
42397
+ const url = URL.createObjectURL(blobToDownload);
42398
+ const a4 = document.createElement("a");
42399
+ a4.href = url;
42400
+ a4.download = filename;
42401
+ document.body.appendChild(a4);
42402
+ a4.click();
42403
+ document.body.removeChild(a4);
42404
+ URL.revokeObjectURL(url);
42405
+ this.discardRecording();
42406
+ } catch (error) {
42407
+ console.error("Error exporting video:", error);
42408
+ this.isExporting = false;
42409
+ }
42410
+ }
42411
+ // ==================== Trim Methods ====================
42412
+ handleVideoLoaded(video) {
42413
+ const duration = Number.isFinite(video.duration) ? video.duration : this.recordingDuration;
42414
+ this.videoDuration = duration;
42415
+ this.trimStart = 0;
42416
+ this.trimEnd = duration;
42417
+ }
42418
+ formatDuration(seconds) {
42419
+ const mins = Math.floor(seconds / 60);
42420
+ const secs = seconds % 60;
42421
+ return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
42422
+ }
42423
+ getHandlePositionStyle(time) {
42424
+ if (this.videoDuration === 0) return "12px";
42425
+ const percentage = time / this.videoDuration;
42426
+ return `calc(12px + ${(percentage * 100).toFixed(2)}% - ${(percentage * 24).toFixed(2)}px)`;
42427
+ }
42428
+ getHandlePositionFromEndStyle(time) {
42429
+ if (this.videoDuration === 0) return "12px";
42430
+ const percentage = time / this.videoDuration;
42431
+ const remainingPercentage = 1 - percentage;
42432
+ return `calc(12px + ${(remainingPercentage * 100).toFixed(2)}% - ${(remainingPercentage * 24).toFixed(2)}px)`;
42433
+ }
42434
+ handleTimelineClick(e10) {
42435
+ if (this.isDraggingTrim) return;
42436
+ const timeline = e10.currentTarget;
42437
+ const rect = timeline.getBoundingClientRect();
42438
+ const x2 = e10.clientX - rect.left;
42439
+ const percentage = Math.max(0, Math.min(1, (x2 - 12) / (rect.width - 24)));
42440
+ const time = percentage * this.videoDuration;
42441
+ const video = this.shadowRoot?.querySelector(".preview-video");
42442
+ if (video) {
42443
+ video.currentTime = time;
42444
+ }
42445
+ }
42446
+ handleTimelineDrag(e10) {
42447
+ if (!this.isDraggingTrim) return;
42448
+ const timeline = e10.currentTarget;
42449
+ const rect = timeline.getBoundingClientRect();
42450
+ const x2 = e10.clientX - rect.left;
42451
+ const percentage = Math.max(0, Math.min(1, (x2 - 12) / (rect.width - 24)));
42452
+ const time = percentage * this.videoDuration;
42453
+ const minDuration = 1;
42454
+ if (this.isDraggingTrim === "start") {
42455
+ this.trimStart = Math.min(time, this.trimEnd - minDuration);
42456
+ this.trimStart = Math.max(0, this.trimStart);
42457
+ } else if (this.isDraggingTrim === "end") {
42458
+ this.trimEnd = Math.max(time, this.trimStart + minDuration);
42459
+ this.trimEnd = Math.min(this.videoDuration, this.trimEnd);
42460
+ }
42461
+ const video = this.shadowRoot?.querySelector(".preview-video");
42462
+ if (video) {
42463
+ video.currentTime = this.isDraggingTrim === "start" ? this.trimStart : this.trimEnd;
42464
+ }
42465
+ }
42466
+ handleTimelineDragEnd() {
42467
+ this.isDraggingTrim = null;
42468
+ }
42469
+ resetTrim() {
42470
+ this.trimStart = 0;
42471
+ this.trimEnd = this.videoDuration;
42472
+ const video = this.shadowRoot?.querySelector(".preview-video");
42473
+ if (video) {
42474
+ video.currentTime = 0;
42475
+ }
42476
+ }
42477
+ previewTrimmedSection() {
42478
+ const video = this.shadowRoot?.querySelector(".preview-video");
42479
+ if (!video) return;
42480
+ video.currentTime = this.trimStart;
42481
+ video.play();
42482
+ const checkTime = () => {
42483
+ if (video.currentTime >= this.trimEnd) {
42484
+ video.pause();
42485
+ video.removeEventListener("timeupdate", checkTime);
42486
+ }
42487
+ };
42488
+ video.addEventListener("timeupdate", checkTime);
42489
+ }
42490
+ // ==================== Lifecycle ====================
42491
+ close() {
42492
+ this.recorderService.stopAudioMonitoring();
42493
+ this.dispatchEvent(new CustomEvent("close", {
42494
+ bubbles: true,
42495
+ composed: true
42496
+ }));
42497
+ }
42498
+ async disconnectedCallback() {
42499
+ await super.disconnectedCallback();
42500
+ this.recorderService.dispose();
42501
+ if (this.previewVideoUrl) {
42502
+ URL.revokeObjectURL(this.previewVideoUrl);
42503
+ }
42504
+ }
42505
+ };
42506
+ _init4 = __decoratorStart(_a4);
42507
+ _dashboardRef2 = new WeakMap();
42508
+ _panelState = new WeakMap();
42509
+ _recordingMode = new WeakMap();
42510
+ _audioEnabled = new WeakMap();
42511
+ _selectedMicrophoneId = new WeakMap();
42512
+ _availableMicrophones = new WeakMap();
42513
+ _audioLevel = new WeakMap();
42514
+ _recordingDuration = new WeakMap();
42515
+ _previewVideoUrl = new WeakMap();
42516
+ _trimStart = new WeakMap();
42517
+ _trimEnd = new WeakMap();
42518
+ _videoDuration = new WeakMap();
42519
+ _isDraggingTrim = new WeakMap();
42520
+ _isExporting = new WeakMap();
42521
+ __decorateElement(_init4, 4, "dashboardRef", _dashboardRef_dec2, WccRecordingPanel, _dashboardRef2);
42522
+ __decorateElement(_init4, 4, "panelState", _panelState_dec, WccRecordingPanel, _panelState);
42523
+ __decorateElement(_init4, 4, "recordingMode", _recordingMode_dec, WccRecordingPanel, _recordingMode);
42524
+ __decorateElement(_init4, 4, "audioEnabled", _audioEnabled_dec, WccRecordingPanel, _audioEnabled);
42525
+ __decorateElement(_init4, 4, "selectedMicrophoneId", _selectedMicrophoneId_dec, WccRecordingPanel, _selectedMicrophoneId);
42526
+ __decorateElement(_init4, 4, "availableMicrophones", _availableMicrophones_dec, WccRecordingPanel, _availableMicrophones);
42527
+ __decorateElement(_init4, 4, "audioLevel", _audioLevel_dec, WccRecordingPanel, _audioLevel);
42528
+ __decorateElement(_init4, 4, "recordingDuration", _recordingDuration_dec, WccRecordingPanel, _recordingDuration);
42529
+ __decorateElement(_init4, 4, "previewVideoUrl", _previewVideoUrl_dec, WccRecordingPanel, _previewVideoUrl);
42530
+ __decorateElement(_init4, 4, "trimStart", _trimStart_dec, WccRecordingPanel, _trimStart);
42531
+ __decorateElement(_init4, 4, "trimEnd", _trimEnd_dec, WccRecordingPanel, _trimEnd);
42532
+ __decorateElement(_init4, 4, "videoDuration", _videoDuration_dec, WccRecordingPanel, _videoDuration);
42533
+ __decorateElement(_init4, 4, "isDraggingTrim", _isDraggingTrim_dec, WccRecordingPanel, _isDraggingTrim);
42534
+ __decorateElement(_init4, 4, "isExporting", _isExporting_dec, WccRecordingPanel, _isExporting);
42535
+ WccRecordingPanel = __decorateElement(_init4, 0, "WccRecordingPanel", _WccRecordingPanel_decorators, WccRecordingPanel);
42536
+ __publicField(WccRecordingPanel, "styles", [
42537
+ i`
42538
+ :host {
42539
+ /* CSS Variables */
42540
+ --background: #0a0a0a;
42541
+ --foreground: #e5e5e5;
42542
+ --input: #141414;
42543
+ --primary: #3b82f6;
42544
+ --border: rgba(255, 255, 255, 0.06);
42545
+ --radius-sm: 2px;
42546
+ --radius-md: 4px;
42547
+ --radius-lg: 6px;
42548
+ }
42549
+
42550
+ /* Recording Options Panel */
42551
+ .recording-options-panel {
42552
+ position: fixed;
42553
+ right: 16px;
42554
+ bottom: 116px;
42555
+ width: 360px;
42556
+ background: #0c0c0c;
42557
+ border: 1px solid rgba(255, 255, 255, 0.1);
42558
+ border-radius: var(--radius-md);
42559
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
42560
+ z-index: 1000;
42561
+ overflow: hidden;
42562
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
42563
+ }
42564
+
42565
+ .recording-options-header {
42566
+ padding: 0.75rem 1rem;
42567
+ background: rgba(255, 255, 255, 0.02);
42568
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
42569
+ display: flex;
42570
+ justify-content: space-between;
42571
+ align-items: center;
42572
+ }
42573
+
42574
+ .recording-options-title {
42575
+ font-size: 0.8rem;
42576
+ font-weight: 500;
42577
+ color: #ccc;
42578
+ }
42579
+
42580
+ .recording-options-close {
42581
+ width: 24px;
42582
+ height: 24px;
42583
+ background: transparent;
42584
+ border: none;
42585
+ color: #666;
42586
+ cursor: pointer;
42587
+ display: flex;
42588
+ align-items: center;
42589
+ justify-content: center;
42590
+ border-radius: var(--radius-sm);
42591
+ transition: all 0.15s ease;
42592
+ }
42593
+
42594
+ .recording-options-close:hover {
42595
+ background: rgba(255, 255, 255, 0.05);
42596
+ color: #999;
42597
+ }
42598
+
42599
+ .recording-options-content {
42600
+ padding: 1rem;
42601
+ }
42602
+
42603
+ .recording-option-group {
42604
+ margin-bottom: 1rem;
42605
+ }
42606
+
42607
+ .recording-option-group:last-child {
42608
+ margin-bottom: 0;
42609
+ }
42610
+
42611
+ .recording-option-label {
42612
+ font-size: 0.7rem;
42613
+ font-weight: 500;
42614
+ color: #888;
42615
+ text-transform: uppercase;
42616
+ letter-spacing: 0.05em;
42617
+ margin-bottom: 0.5rem;
42618
+ }
42619
+
42620
+ .recording-mode-buttons {
42621
+ display: flex;
42622
+ gap: 0.5rem;
42623
+ }
42624
+
42625
+ .recording-mode-btn {
42626
+ flex: 1;
42627
+ padding: 0.6rem 0.75rem;
42628
+ background: var(--input);
42629
+ border: 1px solid transparent;
42630
+ border-radius: var(--radius-sm);
42631
+ color: #999;
42632
+ font-size: 0.75rem;
42633
+ cursor: pointer;
42634
+ transition: all 0.15s ease;
42635
+ text-align: center;
42636
+ }
42637
+
42638
+ .recording-mode-btn:hover {
42639
+ border-color: var(--primary);
42640
+ color: #ccc;
42641
+ }
42642
+
42643
+ .recording-mode-btn.selected {
42644
+ background: rgba(59, 130, 246, 0.15);
42645
+ border-color: var(--primary);
42646
+ color: var(--primary);
42647
+ }
42648
+
42649
+ .audio-toggle {
42650
+ display: flex;
42651
+ align-items: center;
42652
+ gap: 0.5rem;
42653
+ margin-bottom: 0.75rem;
42654
+ }
42655
+
42656
+ .audio-toggle input[type="checkbox"] {
42657
+ width: 1rem;
42658
+ height: 1rem;
42659
+ accent-color: var(--primary);
42660
+ }
42661
+
42662
+ .audio-toggle label {
42663
+ font-size: 0.75rem;
42664
+ color: #999;
42665
+ cursor: pointer;
42666
+ }
42667
+
42668
+ .microphone-select {
42669
+ width: 100%;
42670
+ padding: 0.5rem 0.75rem;
42671
+ background: var(--input);
42672
+ border: 1px solid transparent;
42673
+ border-radius: var(--radius-sm);
42674
+ color: var(--foreground);
42675
+ font-size: 0.75rem;
42676
+ outline: none;
42677
+ cursor: pointer;
42678
+ transition: all 0.15s ease;
42679
+ }
42680
+
42681
+ .microphone-select:focus {
42682
+ border-color: var(--primary);
42683
+ }
42684
+
42685
+ .microphone-select:disabled {
42686
+ opacity: 0.5;
42687
+ cursor: not-allowed;
42688
+ }
42689
+
42690
+ .audio-level-container {
42691
+ margin-top: 0.75rem;
42692
+ padding: 0.5rem;
42693
+ background: rgba(255, 255, 255, 0.02);
42694
+ border-radius: var(--radius-sm);
42695
+ }
42696
+
42697
+ .audio-level-label {
42698
+ font-size: 0.65rem;
42699
+ color: #666;
42700
+ margin-bottom: 0.25rem;
42701
+ }
42702
+
42703
+ .audio-level-bar {
42704
+ height: 8px;
42705
+ background: var(--input);
42706
+ border-radius: 4px;
42707
+ overflow: hidden;
42708
+ }
42709
+
42710
+ .audio-level-fill {
42711
+ height: 100%;
42712
+ background: linear-gradient(90deg, #22c55e, #84cc16, #eab308);
42713
+ border-radius: 4px;
42714
+ transition: width 0.1s ease;
42715
+ }
42716
+
42717
+ .start-recording-btn {
42718
+ width: 100%;
42719
+ padding: 0.75rem;
42720
+ background: #dc2626;
42721
+ border: none;
42722
+ border-radius: var(--radius-sm);
42723
+ color: white;
42724
+ font-size: 0.8rem;
42725
+ font-weight: 500;
42726
+ cursor: pointer;
42727
+ transition: all 0.15s ease;
42728
+ margin-top: 1rem;
42729
+ display: flex;
42730
+ align-items: center;
42731
+ justify-content: center;
42732
+ gap: 0.5rem;
42733
+ }
42734
+
42735
+ .start-recording-btn:hover {
42736
+ background: #b91c1c;
42737
+ }
42738
+
42739
+ .start-recording-btn .rec-dot {
42740
+ width: 10px;
42741
+ height: 10px;
42742
+ background: white;
42743
+ border-radius: 50%;
42744
+ }
42745
+
42746
+ /* Preview Modal */
42747
+ .preview-modal-overlay {
42748
+ position: fixed;
42749
+ top: 0;
42750
+ left: 0;
42751
+ right: 0;
42752
+ bottom: 0;
42753
+ background: rgba(0, 0, 0, 0.8);
42754
+ display: flex;
42755
+ align-items: center;
42756
+ justify-content: center;
42757
+ z-index: 1000;
42758
+ backdrop-filter: blur(4px);
42759
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
42760
+ }
42761
+
42762
+ .preview-modal {
42763
+ width: 90%;
42764
+ max-width: 800px;
42765
+ background: #0c0c0c;
42766
+ border: 1px solid rgba(255, 255, 255, 0.1);
42767
+ border-radius: var(--radius-lg);
42768
+ overflow: hidden;
42769
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
42770
+ }
42771
+
42772
+ .preview-modal-header {
42773
+ padding: 1rem 1.25rem;
42774
+ background: rgba(255, 255, 255, 0.02);
42775
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
42776
+ display: flex;
42777
+ justify-content: space-between;
42778
+ align-items: center;
42779
+ }
42780
+
42781
+ .preview-modal-title {
42782
+ font-size: 0.9rem;
42783
+ font-weight: 500;
42784
+ color: #ccc;
42785
+ }
42786
+
42787
+ .preview-modal-close {
42788
+ width: 28px;
42789
+ height: 28px;
42790
+ background: transparent;
42791
+ border: none;
42792
+ color: #666;
42793
+ cursor: pointer;
42794
+ display: flex;
42795
+ align-items: center;
42796
+ justify-content: center;
42797
+ border-radius: var(--radius-sm);
42798
+ font-size: 1.2rem;
42799
+ transition: all 0.15s ease;
42800
+ }
42801
+
42802
+ .preview-modal-close:hover {
42803
+ background: rgba(255, 255, 255, 0.05);
42804
+ color: #999;
42805
+ }
42806
+
42807
+ .preview-modal-content {
42808
+ padding: 1.25rem;
42809
+ }
42810
+
42811
+ .preview-video-container {
42812
+ background: #000;
42813
+ border-radius: var(--radius-sm);
42814
+ overflow: hidden;
42815
+ aspect-ratio: 16 / 9;
42816
+ }
42817
+
42818
+ .preview-video {
42819
+ width: 100%;
42820
+ height: 100%;
42821
+ object-fit: contain;
42822
+ }
42823
+
42824
+ .preview-modal-actions {
42825
+ padding: 1rem 1.25rem;
42826
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
42827
+ display: flex;
42828
+ justify-content: flex-end;
42829
+ gap: 0.75rem;
42830
+ }
42831
+
42832
+ .preview-btn {
42833
+ padding: 0.6rem 1.25rem;
42834
+ border-radius: var(--radius-sm);
42835
+ font-size: 0.8rem;
42836
+ font-weight: 500;
42837
+ cursor: pointer;
42838
+ transition: all 0.15s ease;
42839
+ }
42840
+
42841
+ .preview-btn.secondary {
42842
+ background: transparent;
42843
+ border: 1px solid rgba(255, 255, 255, 0.1);
42844
+ color: #999;
42845
+ }
42846
+
42847
+ .preview-btn.secondary:hover {
42848
+ border-color: rgba(255, 255, 255, 0.2);
42849
+ color: #ccc;
42850
+ }
42851
+
42852
+ .preview-btn.primary {
42853
+ background: var(--primary);
42854
+ border: none;
42855
+ color: white;
42856
+ }
42857
+
42858
+ .preview-btn.primary:hover {
42859
+ background: #2563eb;
42860
+ }
42861
+
42862
+ .preview-btn.primary:disabled {
42863
+ background: #1e3a5f;
42864
+ cursor: not-allowed;
42865
+ opacity: 0.7;
42866
+ }
42867
+
42868
+ /* Trim Timeline Styles */
42869
+ .trim-section {
42870
+ margin-top: 1.25rem;
42871
+ padding-top: 1.25rem;
42872
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
42873
+ }
42874
+
42875
+ .trim-section-header {
42876
+ display: flex;
42877
+ justify-content: space-between;
42878
+ align-items: center;
42879
+ margin-bottom: 0.75rem;
42880
+ }
42881
+
42882
+ .trim-section-title {
42883
+ font-size: 0.75rem;
42884
+ font-weight: 500;
42885
+ color: #888;
42886
+ text-transform: uppercase;
42887
+ letter-spacing: 0.05em;
42888
+ }
42889
+
42890
+ .trim-duration-info {
42891
+ font-size: 0.7rem;
42892
+ color: #666;
42893
+ font-family: 'Consolas', 'Monaco', monospace;
42894
+ }
42895
+
42896
+ .trim-timeline {
42897
+ position: relative;
42898
+ height: 48px;
42899
+ background: var(--input);
42900
+ border-radius: var(--radius-sm);
42901
+ margin-bottom: 0.75rem;
42902
+ user-select: none;
42903
+ }
42904
+
42905
+ .trim-track {
42906
+ position: absolute;
42907
+ top: 50%;
42908
+ left: 12px;
42909
+ right: 12px;
42910
+ height: 6px;
42911
+ background: #333;
42912
+ transform: translateY(-50%);
42913
+ border-radius: 3px;
42914
+ }
42915
+
42916
+ .trim-selected {
42917
+ position: absolute;
42918
+ top: 50%;
42919
+ height: 6px;
42920
+ background: var(--primary);
42921
+ transform: translateY(-50%);
42922
+ border-radius: 3px;
42923
+ pointer-events: none;
42924
+ }
42925
+
42926
+ .trim-handle {
42927
+ position: absolute;
42928
+ top: 50%;
42929
+ width: 16px;
42930
+ height: 36px;
42931
+ background: white;
42932
+ border: 2px solid var(--primary);
42933
+ border-radius: 4px;
42934
+ transform: translate(-50%, -50%);
42935
+ cursor: ew-resize;
42936
+ z-index: 2;
42937
+ display: flex;
42938
+ align-items: center;
42939
+ justify-content: center;
42940
+ transition: background 0.15s ease, transform 0.1s ease;
42941
+ }
42942
+
42943
+ .trim-handle:hover {
42944
+ background: #e0e0e0;
42945
+ }
42946
+
42947
+ .trim-handle:active {
42948
+ background: var(--primary);
42949
+ transform: translate(-50%, -50%) scale(1.05);
42950
+ }
42951
+
42952
+ .trim-handle::before {
42953
+ content: '';
42954
+ width: 2px;
42955
+ height: 16px;
42956
+ background: #666;
42957
+ border-radius: 1px;
42958
+ }
42959
+
42960
+ .trim-handle:active::before {
42961
+ background: white;
42962
+ }
42963
+
42964
+ .trim-time-labels {
42965
+ display: flex;
42966
+ justify-content: space-between;
42967
+ font-size: 0.65rem;
42968
+ color: #666;
42969
+ font-family: 'Consolas', 'Monaco', monospace;
42970
+ padding: 0 12px;
42971
+ }
42972
+
42973
+ .trim-actions {
42974
+ display: flex;
42975
+ gap: 0.5rem;
42976
+ margin-top: 0.75rem;
42977
+ }
42978
+
42979
+ .trim-action-btn {
42980
+ flex: 1;
42981
+ padding: 0.5rem 0.75rem;
42982
+ background: var(--input);
42983
+ border: 1px solid transparent;
42984
+ border-radius: var(--radius-sm);
42985
+ color: #999;
42986
+ font-size: 0.75rem;
42987
+ cursor: pointer;
42988
+ transition: all 0.15s ease;
42989
+ text-align: center;
42990
+ }
42991
+
42992
+ .trim-action-btn:hover {
42993
+ border-color: var(--primary);
42994
+ color: #ccc;
42995
+ }
42996
+
42997
+ .export-spinner {
42998
+ display: inline-block;
42999
+ width: 14px;
43000
+ height: 14px;
43001
+ border: 2px solid rgba(255, 255, 255, 0.3);
43002
+ border-radius: 50%;
43003
+ border-top-color: white;
43004
+ animation: spin 0.8s linear infinite;
43005
+ margin-right: 0.5rem;
43006
+ }
43007
+
43008
+ @keyframes spin {
43009
+ to { transform: rotate(360deg); }
43010
+ }
43011
+ `
43012
+ ]);
43013
+ __runInitializers(_init4, 1, WccRecordingPanel);
41674
43014
 
41675
43015
  // ts_web/elements/wcc-properties.ts
43016
+ var _recordingDuration_dec2, _isRecording_dec, _showRecordingPanel_dec, _editingProperties_dec, _propertyContent_dec, _isFullscreen_dec3, _warning_dec, _selectedTheme_dec, _selectedViewport_dec, _selectedItem_dec2, _dashboardRef_dec3, _a5, _WccProperties_decorators, _init5, _dashboardRef3, _selectedItem2, _selectedViewport, _selectedTheme, _warning, _isFullscreen3, _propertyContent, _editingProperties, _showRecordingPanel, _isRecording, _recordingDuration2;
41676
43017
  var environment = "native";
41677
43018
  var setEnvironment = (envArg) => {
41678
43019
  environment = envArg;
41679
43020
  };
41680
- var WccProperties = class extends DeesElement {
43021
+ _WccProperties_decorators = [t4("wcc-properties")];
43022
+ var WccProperties = class extends (_a5 = DeesElement, _dashboardRef_dec3 = [n5({
43023
+ type: WccDashboard2
43024
+ })], _selectedItem_dec2 = [n5()], _selectedViewport_dec = [n5()], _selectedTheme_dec = [n5()], _warning_dec = [n5()], _isFullscreen_dec3 = [n5()], _propertyContent_dec = [r5()], _editingProperties_dec = [r5()], _showRecordingPanel_dec = [r5()], _isRecording_dec = [r5()], _recordingDuration_dec2 = [r5()], _a5) {
41681
43025
  constructor() {
41682
43026
  super(...arguments);
41683
- this.selectedViewport = "native";
41684
- this.selectedTheme = "dark";
41685
- this.warning = null;
41686
- this.isFullscreen = false;
41687
- this.propertyContent = [];
41688
- this.editingProperties = [];
41689
- this.editorHeight = 300;
43027
+ __privateAdd(this, _dashboardRef3, __runInitializers(_init5, 8, this)), __runInitializers(_init5, 11, this);
43028
+ __privateAdd(this, _selectedItem2, __runInitializers(_init5, 12, this)), __runInitializers(_init5, 15, this);
43029
+ __privateAdd(this, _selectedViewport, __runInitializers(_init5, 16, this, "native")), __runInitializers(_init5, 19, this);
43030
+ __privateAdd(this, _selectedTheme, __runInitializers(_init5, 20, this, "dark")), __runInitializers(_init5, 23, this);
43031
+ __privateAdd(this, _warning, __runInitializers(_init5, 24, this, null)), __runInitializers(_init5, 27, this);
43032
+ __privateAdd(this, _isFullscreen3, __runInitializers(_init5, 28, this, false)), __runInitializers(_init5, 31, this);
43033
+ __privateAdd(this, _propertyContent, __runInitializers(_init5, 32, this, [])), __runInitializers(_init5, 35, this);
43034
+ __privateAdd(this, _editingProperties, __runInitializers(_init5, 36, this, [])), __runInitializers(_init5, 39, this);
43035
+ __privateAdd(this, _showRecordingPanel, __runInitializers(_init5, 40, this, false)), __runInitializers(_init5, 43, this);
43036
+ __privateAdd(this, _isRecording, __runInitializers(_init5, 44, this, false)), __runInitializers(_init5, 47, this);
43037
+ __privateAdd(this, _recordingDuration2, __runInitializers(_init5, 48, this, 0)), __runInitializers(_init5, 51, this);
43038
+ __publicField(this, "editorHeight", 300);
41690
43039
  }
41691
43040
  render() {
41692
43041
  return x`
@@ -41726,7 +43075,7 @@ var WccProperties = class extends DeesElement {
41726
43075
  }
41727
43076
  .grid {
41728
43077
  display: grid;
41729
- grid-template-columns: 1fr 150px 300px 70px;
43078
+ grid-template-columns: 1fr 150px 300px 70px 70px;
41730
43079
  height: 100%;
41731
43080
  }
41732
43081
  .properties {
@@ -42289,9 +43638,36 @@ var WccProperties = class extends DeesElement {
42289
43638
  ${this.isFullscreen ? "fullscreen_exit" : "fullscreen"}
42290
43639
  </i>
42291
43640
  </div>
43641
+ <!-- Recording Button -->
43642
+ <wcc-record-button
43643
+ .state=${this.isRecording ? "recording" : "idle"}
43644
+ .duration=${this.recordingDuration}
43645
+ @record-click=${() => this.handleRecordButtonClick()}
43646
+ ></wcc-record-button>
42292
43647
  </div>
42293
43648
  ${this.warning ? x`<div class="warning">${this.warning}</div>` : null}
42294
43649
  </div>
43650
+
43651
+ <!-- Recording Panel (options + preview) -->
43652
+ ${this.showRecordingPanel ? x`
43653
+ <wcc-recording-panel
43654
+ .dashboardRef=${this.dashboardRef}
43655
+ @recording-start=${() => {
43656
+ this.isRecording = true;
43657
+ }}
43658
+ @recording-stop=${() => {
43659
+ this.isRecording = false;
43660
+ }}
43661
+ @duration-update=${(e10) => {
43662
+ this.recordingDuration = e10.detail.duration;
43663
+ }}
43664
+ @close=${() => {
43665
+ this.showRecordingPanel = false;
43666
+ this.isRecording = false;
43667
+ this.recordingDuration = 0;
43668
+ }}
43669
+ ></wcc-recording-panel>
43670
+ ` : null}
42295
43671
  `;
42296
43672
  }
42297
43673
  async findElementRecursively(container, elementClass, maxDepth = 5) {
@@ -42577,51 +43953,65 @@ var WccProperties = class extends DeesElement {
42577
43953
  })
42578
43954
  );
42579
43955
  }
42580
- };
42581
- __decorateClass([
42582
- n5({
42583
- type: WccDashboard2
42584
- })
42585
- ], WccProperties.prototype, "dashboardRef", 2);
42586
- __decorateClass([
42587
- n5()
42588
- ], WccProperties.prototype, "selectedItem", 2);
42589
- __decorateClass([
42590
- n5()
42591
- ], WccProperties.prototype, "selectedViewport", 2);
42592
- __decorateClass([
42593
- n5()
42594
- ], WccProperties.prototype, "selectedTheme", 2);
42595
- __decorateClass([
42596
- n5()
42597
- ], WccProperties.prototype, "warning", 2);
42598
- __decorateClass([
42599
- n5()
42600
- ], WccProperties.prototype, "isFullscreen", 2);
42601
- __decorateClass([
42602
- r5()
42603
- ], WccProperties.prototype, "propertyContent", 2);
42604
- __decorateClass([
42605
- r5()
42606
- ], WccProperties.prototype, "editingProperties", 2);
42607
- WccProperties = __decorateClass([
42608
- t4("wcc-properties")
42609
- ], WccProperties);
43956
+ // ==================== Recording Methods ====================
43957
+ handleRecordButtonClick() {
43958
+ if (this.isRecording) {
43959
+ const panel = this.shadowRoot?.querySelector("wcc-recording-panel");
43960
+ if (panel && panel.stopRecording) {
43961
+ panel.stopRecording();
43962
+ }
43963
+ } else {
43964
+ this.showRecordingPanel = !this.showRecordingPanel;
43965
+ }
43966
+ }
43967
+ };
43968
+ _init5 = __decoratorStart(_a5);
43969
+ _dashboardRef3 = new WeakMap();
43970
+ _selectedItem2 = new WeakMap();
43971
+ _selectedViewport = new WeakMap();
43972
+ _selectedTheme = new WeakMap();
43973
+ _warning = new WeakMap();
43974
+ _isFullscreen3 = new WeakMap();
43975
+ _propertyContent = new WeakMap();
43976
+ _editingProperties = new WeakMap();
43977
+ _showRecordingPanel = new WeakMap();
43978
+ _isRecording = new WeakMap();
43979
+ _recordingDuration2 = new WeakMap();
43980
+ __decorateElement(_init5, 4, "dashboardRef", _dashboardRef_dec3, WccProperties, _dashboardRef3);
43981
+ __decorateElement(_init5, 4, "selectedItem", _selectedItem_dec2, WccProperties, _selectedItem2);
43982
+ __decorateElement(_init5, 4, "selectedViewport", _selectedViewport_dec, WccProperties, _selectedViewport);
43983
+ __decorateElement(_init5, 4, "selectedTheme", _selectedTheme_dec, WccProperties, _selectedTheme);
43984
+ __decorateElement(_init5, 4, "warning", _warning_dec, WccProperties, _warning);
43985
+ __decorateElement(_init5, 4, "isFullscreen", _isFullscreen_dec3, WccProperties, _isFullscreen3);
43986
+ __decorateElement(_init5, 4, "propertyContent", _propertyContent_dec, WccProperties, _propertyContent);
43987
+ __decorateElement(_init5, 4, "editingProperties", _editingProperties_dec, WccProperties, _editingProperties);
43988
+ __decorateElement(_init5, 4, "showRecordingPanel", _showRecordingPanel_dec, WccProperties, _showRecordingPanel);
43989
+ __decorateElement(_init5, 4, "isRecording", _isRecording_dec, WccProperties, _isRecording);
43990
+ __decorateElement(_init5, 4, "recordingDuration", _recordingDuration_dec2, WccProperties, _recordingDuration2);
43991
+ WccProperties = __decorateElement(_init5, 0, "WccProperties", _WccProperties_decorators, WccProperties);
43992
+ __runInitializers(_init5, 1, WccProperties);
42610
43993
 
42611
43994
  // ts_web/elements/wcc-dashboard.ts
42612
- var WccDashboard2 = class extends DeesElement {
43995
+ var _wccFrame_dec, _warning_dec2, _elements_dec, _pages_dec, _isFullscreen_dec4, _selectedTheme_dec2, _selectedViewport_dec2, _selectedItem_dec3, _selectedItemName_dec, _selectedType_dec2, _a6, _WccDashboard_decorators, _init6, _selectedType2, _selectedItemName, _selectedItem3, _selectedViewport2, _selectedTheme2, _isFullscreen4, _pages, _elements, _warning2, _wccFrame;
43996
+ _WccDashboard_decorators = [t4("wcc-dashboard")];
43997
+ var WccDashboard2 = class extends (_a6 = DeesElement, _selectedType_dec2 = [n5()], _selectedItemName_dec = [n5()], _selectedItem_dec3 = [n5()], _selectedViewport_dec2 = [n5()], _selectedTheme_dec2 = [n5()], _isFullscreen_dec4 = [n5()], _pages_dec = [n5()], _elements_dec = [n5()], _warning_dec2 = [n5()], _wccFrame_dec = [r7("wcc-frame")], _a6) {
42613
43998
  constructor(elementsArg, pagesArg) {
42614
43999
  super();
42615
- this.selectedViewport = "desktop";
42616
- this.selectedTheme = "dark";
42617
- this.isFullscreen = false;
42618
- this.pages = {};
42619
- this.elements = {};
42620
- this.warning = null;
42621
- this.frameScrollY = 0;
42622
- this.sidebarScrollY = 0;
42623
- this.scrollPositionsApplied = false;
42624
- this.scrollListenersAttached = false;
44000
+ __privateAdd(this, _selectedType2, __runInitializers(_init6, 8, this)), __runInitializers(_init6, 11, this);
44001
+ __privateAdd(this, _selectedItemName, __runInitializers(_init6, 12, this)), __runInitializers(_init6, 15, this);
44002
+ __privateAdd(this, _selectedItem3, __runInitializers(_init6, 16, this)), __runInitializers(_init6, 19, this);
44003
+ __privateAdd(this, _selectedViewport2, __runInitializers(_init6, 20, this, "desktop")), __runInitializers(_init6, 23, this);
44004
+ __privateAdd(this, _selectedTheme2, __runInitializers(_init6, 24, this, "dark")), __runInitializers(_init6, 27, this);
44005
+ __privateAdd(this, _isFullscreen4, __runInitializers(_init6, 28, this, false)), __runInitializers(_init6, 31, this);
44006
+ __privateAdd(this, _pages, __runInitializers(_init6, 32, this, {})), __runInitializers(_init6, 35, this);
44007
+ __privateAdd(this, _elements, __runInitializers(_init6, 36, this, {})), __runInitializers(_init6, 39, this);
44008
+ __privateAdd(this, _warning2, __runInitializers(_init6, 40, this, null)), __runInitializers(_init6, 43, this);
44009
+ __publicField(this, "frameScrollY", 0);
44010
+ __publicField(this, "sidebarScrollY", 0);
44011
+ __publicField(this, "scrollPositionsApplied", false);
44012
+ __privateAdd(this, _wccFrame, __runInitializers(_init6, 44, this)), __runInitializers(_init6, 47, this);
44013
+ __publicField(this, "scrollUpdateTimeout");
44014
+ __publicField(this, "scrollListenersAttached", false);
42625
44015
  if (elementsArg) {
42626
44016
  this.elements = elementsArg;
42627
44017
  console.log("got elements:");
@@ -42844,39 +44234,29 @@ var WccDashboard2 = class extends DeesElement {
42844
44234
  this.scrollPositionsApplied = true;
42845
44235
  }
42846
44236
  };
42847
- __decorateClass([
42848
- n5()
42849
- ], WccDashboard2.prototype, "selectedType", 2);
42850
- __decorateClass([
42851
- n5()
42852
- ], WccDashboard2.prototype, "selectedItemName", 2);
42853
- __decorateClass([
42854
- n5()
42855
- ], WccDashboard2.prototype, "selectedItem", 2);
42856
- __decorateClass([
42857
- n5()
42858
- ], WccDashboard2.prototype, "selectedViewport", 2);
42859
- __decorateClass([
42860
- n5()
42861
- ], WccDashboard2.prototype, "selectedTheme", 2);
42862
- __decorateClass([
42863
- n5()
42864
- ], WccDashboard2.prototype, "isFullscreen", 2);
42865
- __decorateClass([
42866
- n5()
42867
- ], WccDashboard2.prototype, "pages", 2);
42868
- __decorateClass([
42869
- n5()
42870
- ], WccDashboard2.prototype, "elements", 2);
42871
- __decorateClass([
42872
- n5()
42873
- ], WccDashboard2.prototype, "warning", 2);
42874
- __decorateClass([
42875
- r7("wcc-frame")
42876
- ], WccDashboard2.prototype, "wccFrame", 2);
42877
- WccDashboard2 = __decorateClass([
42878
- t4("wcc-dashboard")
42879
- ], WccDashboard2);
44237
+ _init6 = __decoratorStart(_a6);
44238
+ _selectedType2 = new WeakMap();
44239
+ _selectedItemName = new WeakMap();
44240
+ _selectedItem3 = new WeakMap();
44241
+ _selectedViewport2 = new WeakMap();
44242
+ _selectedTheme2 = new WeakMap();
44243
+ _isFullscreen4 = new WeakMap();
44244
+ _pages = new WeakMap();
44245
+ _elements = new WeakMap();
44246
+ _warning2 = new WeakMap();
44247
+ _wccFrame = new WeakMap();
44248
+ __decorateElement(_init6, 4, "selectedType", _selectedType_dec2, WccDashboard2, _selectedType2);
44249
+ __decorateElement(_init6, 4, "selectedItemName", _selectedItemName_dec, WccDashboard2, _selectedItemName);
44250
+ __decorateElement(_init6, 4, "selectedItem", _selectedItem_dec3, WccDashboard2, _selectedItem3);
44251
+ __decorateElement(_init6, 4, "selectedViewport", _selectedViewport_dec2, WccDashboard2, _selectedViewport2);
44252
+ __decorateElement(_init6, 4, "selectedTheme", _selectedTheme_dec2, WccDashboard2, _selectedTheme2);
44253
+ __decorateElement(_init6, 4, "isFullscreen", _isFullscreen_dec4, WccDashboard2, _isFullscreen4);
44254
+ __decorateElement(_init6, 4, "pages", _pages_dec, WccDashboard2, _pages);
44255
+ __decorateElement(_init6, 4, "elements", _elements_dec, WccDashboard2, _elements);
44256
+ __decorateElement(_init6, 4, "warning", _warning_dec2, WccDashboard2, _warning2);
44257
+ __decorateElement(_init6, 4, "wccFrame", _wccFrame_dec, WccDashboard2, _wccFrame);
44258
+ WccDashboard2 = __decorateElement(_init6, 0, "WccDashboard", _WccDashboard_decorators, WccDashboard2);
44259
+ __runInitializers(_init6, 1, WccDashboard2);
42880
44260
 
42881
44261
  // ts_web/index.ts
42882
44262
  var setupWccTools = (elementsArg, pagesArg) => {
@@ -42892,6 +44272,9 @@ var setupWccTools = (elementsArg, pagesArg) => {
42892
44272
  runWccToolsSetup();
42893
44273
  };
42894
44274
  export {
44275
+ RecorderService,
44276
+ WccRecordButton,
44277
+ WccRecordingPanel,
42895
44278
  setupWccTools
42896
44279
  };
42897
44280
  /*! Bundled license information: