@micro-lc/preview 0.5.0-rc4 → 0.5.0-rc6

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.
@@ -1,3 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
1
7
  (function polyfill() {
2
8
  const relList = document.createElement("link").relList;
3
9
  if (relList && relList.supports && relList.supports("modulepreload")) {
@@ -3379,12 +3385,12 @@ function isSubscriber(value) {
3379
3385
  function hasLift(source) {
3380
3386
  return isFunction(source === null || source === void 0 ? void 0 : source.lift);
3381
3387
  }
3382
- function operate(init2) {
3388
+ function operate(init) {
3383
3389
  return function(source) {
3384
3390
  if (hasLift(source)) {
3385
3391
  return source.lift(function(liftedSource) {
3386
3392
  try {
3387
- return init2(liftedSource, this);
3393
+ return init(liftedSource, this);
3388
3394
  } catch (err) {
3389
3395
  this.error(err);
3390
3396
  }
@@ -4275,6 +4281,26 @@ function lastValueFrom(source, config2) {
4275
4281
  });
4276
4282
  });
4277
4283
  }
4284
+ function firstValueFrom(source, config2) {
4285
+ var hasConfig = typeof config2 === "object";
4286
+ return new Promise(function(resolve, reject) {
4287
+ var subscriber = new SafeSubscriber({
4288
+ next: function(value) {
4289
+ resolve(value);
4290
+ subscriber.unsubscribe();
4291
+ },
4292
+ error: reject,
4293
+ complete: function() {
4294
+ if (hasConfig) {
4295
+ resolve(config2.defaultValue);
4296
+ } else {
4297
+ reject(new EmptyError());
4298
+ }
4299
+ }
4300
+ });
4301
+ source.subscribe(subscriber);
4302
+ });
4303
+ }
4278
4304
  function isValidDate(value) {
4279
4305
  return value instanceof Date && !isNaN(value);
4280
4306
  }
@@ -4413,6 +4439,62 @@ function mergeMap(project, resultSelector, concurrent) {
4413
4439
  return mergeInternals(source, subscriber, project, concurrent);
4414
4440
  });
4415
4441
  }
4442
+ var nodeEventEmitterMethods = ["addListener", "removeListener"];
4443
+ var eventTargetMethods = ["addEventListener", "removeEventListener"];
4444
+ var jqueryMethods = ["on", "off"];
4445
+ function fromEvent(target, eventName, options, resultSelector) {
4446
+ if (isFunction(options)) {
4447
+ resultSelector = options;
4448
+ options = void 0;
4449
+ }
4450
+ if (resultSelector) {
4451
+ return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));
4452
+ }
4453
+ var _a2 = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
4454
+ return function(handler2) {
4455
+ return target[methodName](eventName, handler2, options);
4456
+ };
4457
+ }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add = _a2[0], remove = _a2[1];
4458
+ if (!add) {
4459
+ if (isArrayLike(target)) {
4460
+ return mergeMap(function(subTarget) {
4461
+ return fromEvent(subTarget, eventName, options);
4462
+ })(innerFrom(target));
4463
+ }
4464
+ }
4465
+ if (!add) {
4466
+ throw new TypeError("Invalid event target");
4467
+ }
4468
+ return new Observable(function(subscriber) {
4469
+ var handler2 = function() {
4470
+ var args = [];
4471
+ for (var _i = 0; _i < arguments.length; _i++) {
4472
+ args[_i] = arguments[_i];
4473
+ }
4474
+ return subscriber.next(1 < args.length ? args : args[0]);
4475
+ };
4476
+ add(handler2);
4477
+ return function() {
4478
+ return remove(handler2);
4479
+ };
4480
+ });
4481
+ }
4482
+ function toCommonHandlerRegistry(target, eventName) {
4483
+ return function(methodName) {
4484
+ return function(handler2) {
4485
+ return target[methodName](eventName, handler2);
4486
+ };
4487
+ };
4488
+ }
4489
+ function isNodeStyleEventEmitter(target) {
4490
+ return isFunction(target.addListener) && isFunction(target.removeListener);
4491
+ }
4492
+ function isJQueryStyleEventEmitter(target) {
4493
+ return isFunction(target.on) && isFunction(target.off);
4494
+ }
4495
+ function isEventTarget(target) {
4496
+ return isFunction(target.addEventListener) && isFunction(target.removeEventListener);
4497
+ }
4416
4498
  function timer(dueTime, intervalOrScheduler, scheduler) {
4417
4499
  if (dueTime === void 0) {
4418
4500
  dueTime = 0;
@@ -4620,368 +4702,6 @@ function tap(observerOrNext, error2, complete) {
4620
4702
  }));
4621
4703
  }) : identity;
4622
4704
  }
4623
- var __defProp$5 = Object.defineProperty;
4624
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4625
- var __publicField$5 = (obj, key, value) => {
4626
- __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
4627
- return value;
4628
- };
4629
- let Lexer$1 = class Lexer {
4630
- constructor(input) {
4631
- __publicField$5(this, "_input");
4632
- __publicField$5(this, "_length");
4633
- __publicField$5(this, "_idx", 0);
4634
- __publicField$5(
4635
- this,
4636
- "_mode",
4637
- 0
4638
- /* Literal */
4639
- );
4640
- __publicField$5(this, "_literals", []);
4641
- __publicField$5(this, "_variables", []);
4642
- __publicField$5(this, "_braketCount", 0);
4643
- __publicField$5(this, "_done", false);
4644
- this._input = input;
4645
- this._length = input.length;
4646
- }
4647
- concatToLastLiteral(concat) {
4648
- this._literals.push(this._literals.pop().concat(concat));
4649
- }
4650
- concatToLastVariable(concat) {
4651
- this._variables.push(this._variables.pop().concat(concat));
4652
- }
4653
- get() {
4654
- const rawLiterals = [...this._literals];
4655
- const literals = Object.assign([], rawLiterals);
4656
- Object.defineProperty(literals, "raw", { value: rawLiterals, writable: false });
4657
- return {
4658
- literals,
4659
- variables: this._variables
4660
- };
4661
- }
4662
- run() {
4663
- if (this._length === 0) {
4664
- this._literals.push("");
4665
- }
4666
- while (this._idx < this._length) {
4667
- const char = this._input.charAt(this._idx);
4668
- switch (this._mode) {
4669
- case 0: {
4670
- if (this._literals.length === 0) {
4671
- this._literals.push("");
4672
- }
4673
- if (char === "{" && this._idx + 1 !== this._length && this._input.charAt(this._idx + 1) === "{") {
4674
- this._literals.push("");
4675
- this._variables.push("");
4676
- this._mode = 1;
4677
- this._idx += 1;
4678
- } else {
4679
- this.concatToLastLiteral(char);
4680
- }
4681
- break;
4682
- }
4683
- case 1:
4684
- if (char === "}" && this._input.charAt(this._idx + 1) === "}") {
4685
- this._mode = 0;
4686
- this._idx += 1;
4687
- } else {
4688
- this.concatToLastVariable(char);
4689
- }
4690
- break;
4691
- }
4692
- this._idx += 1;
4693
- }
4694
- if (this._mode === 1) {
4695
- this._literals.pop();
4696
- this.concatToLastLiteral(`{{${this._variables.pop()}`);
4697
- }
4698
- this._done = true;
4699
- }
4700
- };
4701
- const isSquareBrakets = (field) => {
4702
- const trimmed = field.trim();
4703
- if (!(trimmed.startsWith("[") && trimmed.endsWith("]"))) {
4704
- return false;
4705
- }
4706
- const inner = trimmed.slice(1).slice(0, -1).trim();
4707
- if (Number.parseInt(inner).toString(10) !== inner) {
4708
- return false;
4709
- }
4710
- return true;
4711
- };
4712
- const getNumber = (field) => {
4713
- return Number.parseInt(field.trim().slice(1).slice(0, -1).trim());
4714
- };
4715
- function interpolate$1(context, path, preserveUnknown) {
4716
- if (!path.trim()) {
4717
- return preserveUnknown ? `{{${path}}}` : "";
4718
- }
4719
- const result = path.trim().split(".").reduce((superctx, field) => {
4720
- if (Array.isArray(superctx) && isSquareBrakets(field)) {
4721
- return superctx[getNumber(field)];
4722
- }
4723
- if (typeof superctx === "object" && superctx !== null && field in superctx) {
4724
- return superctx[field];
4725
- }
4726
- return void 0;
4727
- }, { ...context });
4728
- if (typeof result === "string") {
4729
- return result;
4730
- }
4731
- return preserveUnknown ? `{{${path}}}` : "";
4732
- }
4733
- function parse(input, context, preserveUnknown = false) {
4734
- const lexer2 = new Lexer$1(input);
4735
- lexer2.run();
4736
- const template = lexer2.get();
4737
- let [acc] = template.literals;
4738
- for (let i2 = 0; i2 < template.variables.length; i2++) {
4739
- acc = acc.concat(interpolate$1(context, template.variables[i2], preserveUnknown)).concat(template.literals[i2 + 1]);
4740
- }
4741
- return acc;
4742
- }
4743
- const compileObject = (obj, context) => Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, parse(value, context)]));
4744
- var __defProp$4 = Object.defineProperty;
4745
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4746
- var __publicField$4 = (obj, key, value) => {
4747
- __defNormalProp$4(obj, typeof key !== "symbol" ? key + "" : key, value);
4748
- return value;
4749
- };
4750
- const MIA_PREVIEW_ID = "__mia_preview_id";
4751
- const OVERLAY_Z_INDEX = 1e6;
4752
- const keys = {
4753
- "click-element": 1,
4754
- "ctrl-space": 1,
4755
- "focus-element": 0,
4756
- mousedown: 1,
4757
- mousemove: 1,
4758
- "new-configuration": 0,
4759
- notification: 1,
4760
- options: 1,
4761
- "request-resource": 1,
4762
- "service-worker": 1,
4763
- "set-source-map": 0,
4764
- "tag-info": 1,
4765
- update: 1,
4766
- updated: 1
4767
- /* Skip */
4768
- };
4769
- const isValidKey = (type) => Object.keys(keys).includes(type);
4770
- function isInstanceMessage(input, signature) {
4771
- if (input === null) {
4772
- return false;
4773
- }
4774
- if (typeof input !== "object") {
4775
- return false;
4776
- }
4777
- if (!("type" in input) || typeof input.type !== "string") {
4778
- return false;
4779
- }
4780
- const { type: signedType } = input;
4781
- if (!signedType.startsWith(signature)) {
4782
- return false;
4783
- }
4784
- const type = signedType.substring(signature.length);
4785
- if (!isValidKey(type)) {
4786
- return false;
4787
- }
4788
- return true;
4789
- }
4790
- const sign = (signature, message) => ({ ...message, type: `${signature}${message.type}` });
4791
- const unsign = (signature, message) => {
4792
- let { type } = message;
4793
- if (type.startsWith(signature)) {
4794
- type = type.substring(signature.length);
4795
- }
4796
- return { ...message, type };
4797
- };
4798
- const generateDarkColorHex = () => {
4799
- let color = "#";
4800
- for (let i2 = 0; i2 < 3; i2++) {
4801
- color += `0${Math.floor(Math.random() * Math.pow(16, 2) / 2).toString(16)}`.slice(-2);
4802
- }
4803
- return color;
4804
- };
4805
- class PostChannel {
4806
- constructor(handler2) {
4807
- __publicField$4(this, "__instance");
4808
- __publicField$4(this, "__handler");
4809
- __publicField$4(this, "__window");
4810
- __publicField$4(this, "__randomColor");
4811
- this.__instance = "";
4812
- this.__handler = handler2;
4813
- this.__window = window;
4814
- this.__randomColor = generateDarkColorHex();
4815
- }
4816
- postMessage(to, message, origin) {
4817
- {
4818
- console.assert(to !== this.__window);
4819
- }
4820
- if (
4821
- /* ("development" !== 'production' || this.__window.__BACKOFFICE_CONFIGURATOR_LOG_LEVEL__ === 'debug') && */
4822
- keys[message.type] !== 1
4823
- ) {
4824
- const color = this.__randomColor;
4825
- const background = `${color}22`;
4826
- const style = { background, color };
4827
- const hasTop = this.__window.top !== this.__window;
4828
- console.groupCollapsed(`%c Msg from ${this.__window.origin} ${hasTop ? "(inner)" : "(top)"} `, Object.entries(style).map(([key, val]) => `${key}: ${val}`).join("; "));
4829
- console.info(`window '${this.__window.origin}' is sending a message of type %c ${message.type} `, "background: lightgreen; color: darkgreen");
4830
- console.log("to", to);
4831
- console.log(message.content);
4832
- console.groupEnd();
4833
- }
4834
- to.postMessage(sign(this.__instance, message), origin);
4835
- }
4836
- set instance(str) {
4837
- this.__instance = str;
4838
- }
4839
- get window() {
4840
- return this.__window;
4841
- }
4842
- set window(win) {
4843
- this.__window = win;
4844
- }
4845
- send(to, message, origin = "*") {
4846
- this.__window !== to && this.postMessage(to, message, origin);
4847
- }
4848
- recv(window2, from2 = null) {
4849
- const listener = ({ data, source }) => {
4850
- if ((from2 === null || source === from2) && isInstanceMessage(data, this.__instance)) {
4851
- const message = unsign(this.__instance, data);
4852
- this.__handler(message);
4853
- }
4854
- };
4855
- window2.addEventListener("message", listener);
4856
- return () => window2.removeEventListener("message", listener);
4857
- }
4858
- }
4859
- var __defProp$3 = Object.defineProperty;
4860
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4861
- var __publicField$3 = (obj, key, value) => {
4862
- __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
4863
- return value;
4864
- };
4865
- function registerChannels() {
4866
- return {
4867
- configuration: new ReplaySubject(),
4868
- focus: new BehaviorSubject(void 0),
4869
- infos: new ReplaySubject(),
4870
- mocks: new ReplaySubject(),
4871
- mode: new BehaviorSubject("select"),
4872
- notification: new ReplaySubject(),
4873
- setSourceMap: new ReplaySubject(),
4874
- swReady: new ReplaySubject(1),
4875
- updated: new Subject(),
4876
- uppercaseTags: /* @__PURE__ */ new Set()
4877
- };
4878
- }
4879
- const nextMode = (mode) => {
4880
- let next = 0;
4881
- const currentValue = mode.getValue();
4882
- if (currentValue === "interact") {
4883
- next = "select";
4884
- } else if (currentValue === "select") {
4885
- next = "interact";
4886
- }
4887
- mode.next(next);
4888
- return next;
4889
- };
4890
- const subjects = registerChannels();
4891
- function parentListener(message) {
4892
- switch (message.type) {
4893
- case "options": {
4894
- const { content: { disableOverlay, redirectTo, timeout } } = message;
4895
- if (disableOverlay) {
4896
- Object.defineProperty(this.window, "__BACKOFFICE_CONFIGURATOR_DISABLE_OVERLAY__", { value: true });
4897
- subjects.mode.next("interact");
4898
- }
4899
- if (timeout !== void 0) {
4900
- Object.defineProperty(this.window, "__BACKOFFICE_CONFIGURATOR_PREVIEW_TIMEOUT__", { value: timeout });
4901
- }
4902
- const { window: { history } } = this;
4903
- this.window.navigator.serviceWorker.ready.then(() => redirectTo && history.pushState(history.state, "", redirectTo)).catch(() => {
4904
- });
4905
- break;
4906
- }
4907
- case "ctrl-space":
4908
- nextMode(subjects.mode);
4909
- break;
4910
- case "new-configuration":
4911
- subjects.configuration.next({ ...message.content, type: "reset" });
4912
- break;
4913
- case "update":
4914
- subjects.configuration.next({ ...message.content, type: "update" });
4915
- break;
4916
- case "focus-element":
4917
- subjects.focus.next(message.content);
4918
- break;
4919
- case "set-source-map": {
4920
- const { content: { dictionary } } = message;
4921
- subjects.setSourceMap.next({
4922
- ...message.content,
4923
- dictionary: Object.entries(dictionary).reduce((acc, [from2, to]) => {
4924
- try {
4925
- const { href: fromUrl } = new URL(from2, this.window.location.href);
4926
- const obj = typeof to === "string" ? { headers: {}, query: {}, to } : to;
4927
- acc[fromUrl] = {
4928
- originalFrom: from2,
4929
- ...obj
4930
- };
4931
- } catch (e2) {
4932
- }
4933
- return acc;
4934
- }, {})
4935
- });
4936
- break;
4937
- }
4938
- }
4939
- }
4940
- class ServiceWorkerChannel {
4941
- constructor(handler2) {
4942
- __publicField$3(this, "__handler");
4943
- __publicField$3(this, "__window");
4944
- __publicField$3(this, "__randomColor");
4945
- this.__handler = handler2;
4946
- this.__window = window;
4947
- this.__randomColor = generateDarkColorHex();
4948
- }
4949
- send(to, message) {
4950
- {
4951
- const color = this.__randomColor;
4952
- const background = `${color}22`;
4953
- const style = { background, color };
4954
- console.groupCollapsed(`%c Msg to Service Worker `, Object.entries(style).map(([key, val]) => `${key}: ${val}`).join("; "));
4955
- console.info(`window '${this.__window.origin}' is sending a message of type %c ${message.type} `, "background: lightgreen; color: darkgreen");
4956
- console.log(message.content);
4957
- console.groupEnd();
4958
- }
4959
- to.postMessage(message);
4960
- }
4961
- get window() {
4962
- return this.__window;
4963
- }
4964
- set window(win) {
4965
- this.__window = win;
4966
- }
4967
- recv() {
4968
- const swListener2 = ({ data }) => {
4969
- this.__handler(data);
4970
- };
4971
- const { __window: { navigator: navigator2 } } = this;
4972
- navigator2.serviceWorker.addEventListener("message", swListener2);
4973
- return () => navigator2.serviceWorker.removeEventListener("message", swListener2);
4974
- }
4975
- }
4976
- const swListener = (message) => {
4977
- switch (message.type) {
4978
- case "source-map-ack":
4979
- subjects.swReady.next(0);
4980
- break;
4981
- }
4982
- };
4983
- const postChannel = new PostChannel(parentListener);
4984
- const serviceWorkerChannel = new ServiceWorkerChannel(swListener);
4985
4705
  const DEFAULT_LANGUAGE = "en";
4986
4706
  const localizeText = (input, lang = DEFAULT_LANGUAGE) => {
4987
4707
  if (typeof input === "string") {
@@ -5021,7 +4741,7 @@ function getElementBySelector(selector) {
5021
4741
  return document.querySelector(selector);
5022
4742
  }
5023
4743
  const unfocus = (element, mapping) => {
5024
- const originalStyle = mapping.get(element.getAttribute("__mia_preview_id"));
4744
+ const originalStyle = mapping.get(element);
5025
4745
  if (originalStyle) {
5026
4746
  const { css, rest, subscription } = originalStyle;
5027
4747
  rest.forEach((el) => {
@@ -5033,7 +4753,7 @@ const unfocus = (element, mapping) => {
5033
4753
  Object.assign(el.style, css[idx]);
5034
4754
  });
5035
4755
  }
5036
- mapping.delete(element.getAttribute("__mia_preview_id"));
4756
+ mapping.delete(element);
5037
4757
  };
5038
4758
  const noUndefined = (input) => input !== void 0;
5039
4759
  function focus(document2, obs$, mode$) {
@@ -5096,10 +4816,133 @@ function focus(document2, obs$, mode$) {
5096
4816
  Object.assign(el.style, next.style);
5097
4817
  });
5098
4818
  }));
5099
- stylesMap.set(firstElement.getAttribute("__mia_preview_id"), styles);
4819
+ stylesMap.set(firstElement, styles);
5100
4820
  });
5101
4821
  return () => subscription.unsubscribe();
5102
4822
  }
4823
+ var __defProp$3 = Object.defineProperty;
4824
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4825
+ var __publicField$3 = (obj, key, value) => {
4826
+ __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
4827
+ return value;
4828
+ };
4829
+ let Lexer$1 = class Lexer {
4830
+ constructor(input) {
4831
+ __publicField$3(this, "_input");
4832
+ __publicField$3(this, "_length");
4833
+ __publicField$3(this, "_idx", 0);
4834
+ __publicField$3(
4835
+ this,
4836
+ "_mode",
4837
+ 0
4838
+ /* Literal */
4839
+ );
4840
+ __publicField$3(this, "_literals", []);
4841
+ __publicField$3(this, "_variables", []);
4842
+ __publicField$3(this, "_braketCount", 0);
4843
+ __publicField$3(this, "_done", false);
4844
+ this._input = input;
4845
+ this._length = input.length;
4846
+ }
4847
+ concatToLastLiteral(concat) {
4848
+ this._literals.push(this._literals.pop().concat(concat));
4849
+ }
4850
+ concatToLastVariable(concat) {
4851
+ this._variables.push(this._variables.pop().concat(concat));
4852
+ }
4853
+ get() {
4854
+ const rawLiterals = [...this._literals];
4855
+ const literals = Object.assign([], rawLiterals);
4856
+ Object.defineProperty(literals, "raw", { value: rawLiterals, writable: false });
4857
+ return {
4858
+ literals,
4859
+ variables: this._variables
4860
+ };
4861
+ }
4862
+ run() {
4863
+ if (this._length === 0) {
4864
+ this._literals.push("");
4865
+ }
4866
+ while (this._idx < this._length) {
4867
+ const char = this._input.charAt(this._idx);
4868
+ switch (this._mode) {
4869
+ case 0: {
4870
+ if (this._literals.length === 0) {
4871
+ this._literals.push("");
4872
+ }
4873
+ if (char === "{" && this._idx + 1 !== this._length && this._input.charAt(this._idx + 1) === "{") {
4874
+ this._literals.push("");
4875
+ this._variables.push("");
4876
+ this._mode = 1;
4877
+ this._idx += 1;
4878
+ } else {
4879
+ this.concatToLastLiteral(char);
4880
+ }
4881
+ break;
4882
+ }
4883
+ case 1:
4884
+ if (char === "}" && this._input.charAt(this._idx + 1) === "}") {
4885
+ this._mode = 0;
4886
+ this._idx += 1;
4887
+ } else {
4888
+ this.concatToLastVariable(char);
4889
+ }
4890
+ break;
4891
+ }
4892
+ this._idx += 1;
4893
+ }
4894
+ if (this._mode === 1) {
4895
+ this._literals.pop();
4896
+ this.concatToLastLiteral(`{{${this._variables.pop()}`);
4897
+ }
4898
+ this._done = true;
4899
+ }
4900
+ };
4901
+ const isSquareBrakets = (field) => {
4902
+ const trimmed = field.trim();
4903
+ if (!(trimmed.startsWith("[") && trimmed.endsWith("]"))) {
4904
+ return false;
4905
+ }
4906
+ const inner = trimmed.slice(1).slice(0, -1).trim();
4907
+ if (Number.parseInt(inner).toString(10) !== inner) {
4908
+ return false;
4909
+ }
4910
+ return true;
4911
+ };
4912
+ const getNumber = (field) => {
4913
+ return Number.parseInt(field.trim().slice(1).slice(0, -1).trim());
4914
+ };
4915
+ function interpolate$1(context, path, preserveUnknown) {
4916
+ if (!path.trim()) {
4917
+ return preserveUnknown ? `{{${path}}}` : "";
4918
+ }
4919
+ const result = path.trim().split(".").reduce((superctx, field) => {
4920
+ if (Array.isArray(superctx) && isSquareBrakets(field)) {
4921
+ return superctx[getNumber(field)];
4922
+ }
4923
+ if (typeof superctx === "object" && superctx !== null && field in superctx) {
4924
+ return superctx[field];
4925
+ }
4926
+ return void 0;
4927
+ }, { ...context });
4928
+ if (typeof result === "string") {
4929
+ return result;
4930
+ }
4931
+ return preserveUnknown ? `{{${path}}}` : "";
4932
+ }
4933
+ function parse(input, context, preserveUnknown = false) {
4934
+ const lexer2 = new Lexer$1(input);
4935
+ lexer2.run();
4936
+ const template = lexer2.get();
4937
+ let [acc] = template.literals;
4938
+ for (let i2 = 0; i2 < template.variables.length; i2++) {
4939
+ acc = acc.concat(interpolate$1(context, template.variables[i2], preserveUnknown)).concat(template.literals[i2 + 1]);
4940
+ }
4941
+ return acc;
4942
+ }
4943
+ const compileObject = (obj, context) => Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, parse(value, context)]));
4944
+ const MIA_PREVIEW_ID = "__mia_preview_id";
4945
+ const OVERLAY_Z_INDEX = 1e6;
5103
4946
  var t;
5104
4947
  const i = window, s = i.trustedTypes, e = s ? s.createPolicy("lit-html", { createHTML: (t2) => t2 }) : void 0, o = "$lit$", n = `lit$${(Math.random() + "").slice(9)}$`, l = "?" + n, h = `<${l}>`, r = document, d = () => r.createComment(""), u = (t2) => null === t2 || "object" != typeof t2 && "function" != typeof t2, c = Array.isArray, v = (t2) => c(t2) || "function" == typeof (null == t2 ? void 0 : t2[Symbol.iterator]), a = "[ \n\f\r]", f = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, _ = /-->/g, m = />/g, p = RegExp(`>|${a}(?:([^\\s"'>=/]+)(${a}*=${a}*(?:[^
5105
4948
  \f\r"'\`<>=]|("|')|))|$)`, "g"), g = /'/g, $ = /"/g, y = /^(?:script|style|textarea|title)$/i, w = (t2) => (i2, ...s2) => ({ _$litType$: t2, strings: i2, values: s2 }), x = w(1), T = Symbol.for("lit-noChange"), A = Symbol.for("lit-nothing"), E = /* @__PURE__ */ new WeakMap(), C = r.createTreeWalker(r, 129, null, false), P = (t2, i2) => {
@@ -5179,7 +5022,7 @@ function N(t2, i2, s2 = t2, e2) {
5179
5022
  }
5180
5023
  class S {
5181
5024
  constructor(t2, i2) {
5182
- this.u = [], this._$AN = void 0, this._$AD = t2, this._$AM = i2;
5025
+ this._$AV = [], this._$AN = void 0, this._$AD = t2, this._$AM = i2;
5183
5026
  }
5184
5027
  get parentNode() {
5185
5028
  return this._$AM.parentNode;
@@ -5187,7 +5030,7 @@ class S {
5187
5030
  get _$AU() {
5188
5031
  return this._$AM._$AU;
5189
5032
  }
5190
- v(t2) {
5033
+ u(t2) {
5191
5034
  var i2;
5192
5035
  const { el: { content: s2 }, parts: e2 } = this._$AD, o2 = (null !== (i2 = null == t2 ? void 0 : t2.creationScope) && void 0 !== i2 ? i2 : r).importNode(s2, true);
5193
5036
  C.currentNode = o2;
@@ -5195,26 +5038,26 @@ class S {
5195
5038
  for (; void 0 !== d2; ) {
5196
5039
  if (l2 === d2.index) {
5197
5040
  let i3;
5198
- 2 === d2.type ? i3 = new M(n2, n2.nextSibling, this, t2) : 1 === d2.type ? i3 = new d2.ctor(n2, d2.name, d2.strings, this, t2) : 6 === d2.type && (i3 = new z(n2, this, t2)), this.u.push(i3), d2 = e2[++h2];
5041
+ 2 === d2.type ? i3 = new M(n2, n2.nextSibling, this, t2) : 1 === d2.type ? i3 = new d2.ctor(n2, d2.name, d2.strings, this, t2) : 6 === d2.type && (i3 = new z(n2, this, t2)), this._$AV.push(i3), d2 = e2[++h2];
5199
5042
  }
5200
5043
  l2 !== (null == d2 ? void 0 : d2.index) && (n2 = C.nextNode(), l2++);
5201
5044
  }
5202
- return o2;
5045
+ return C.currentNode = r, o2;
5203
5046
  }
5204
- p(t2) {
5047
+ v(t2) {
5205
5048
  let i2 = 0;
5206
- for (const s2 of this.u)
5049
+ for (const s2 of this._$AV)
5207
5050
  void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t2, s2, i2), i2 += s2.strings.length - 2) : s2._$AI(t2[i2])), i2++;
5208
5051
  }
5209
5052
  }
5210
5053
  class M {
5211
5054
  constructor(t2, i2, s2, e2) {
5212
5055
  var o2;
5213
- this.type = 2, this._$AH = A, this._$AN = void 0, this._$AA = t2, this._$AB = i2, this._$AM = s2, this.options = e2, this._$Cm = null === (o2 = null == e2 ? void 0 : e2.isConnected) || void 0 === o2 || o2;
5056
+ this.type = 2, this._$AH = A, this._$AN = void 0, this._$AA = t2, this._$AB = i2, this._$AM = s2, this.options = e2, this._$Cp = null === (o2 = null == e2 ? void 0 : e2.isConnected) || void 0 === o2 || o2;
5214
5057
  }
5215
5058
  get _$AU() {
5216
5059
  var t2, i2;
5217
- return null !== (i2 = null === (t2 = this._$AM) || void 0 === t2 ? void 0 : t2._$AU) && void 0 !== i2 ? i2 : this._$Cm;
5060
+ return null !== (i2 = null === (t2 = this._$AM) || void 0 === t2 ? void 0 : t2._$AU) && void 0 !== i2 ? i2 : this._$Cp;
5218
5061
  }
5219
5062
  get parentNode() {
5220
5063
  let t2 = this._$AA.parentNode;
@@ -5228,37 +5071,37 @@ class M {
5228
5071
  return this._$AB;
5229
5072
  }
5230
5073
  _$AI(t2, i2 = this) {
5231
- t2 = N(this, t2, i2), u(t2) ? t2 === A || null == t2 || "" === t2 ? (this._$AH !== A && this._$AR(), this._$AH = A) : t2 !== this._$AH && t2 !== T && this.g(t2) : void 0 !== t2._$litType$ ? this.$(t2) : void 0 !== t2.nodeType ? this.T(t2) : v(t2) ? this.k(t2) : this.g(t2);
5074
+ t2 = N(this, t2, i2), u(t2) ? t2 === A || null == t2 || "" === t2 ? (this._$AH !== A && this._$AR(), this._$AH = A) : t2 !== this._$AH && t2 !== T && this._(t2) : void 0 !== t2._$litType$ ? this.g(t2) : void 0 !== t2.nodeType ? this.$(t2) : v(t2) ? this.T(t2) : this._(t2);
5232
5075
  }
5233
- S(t2) {
5076
+ k(t2) {
5234
5077
  return this._$AA.parentNode.insertBefore(t2, this._$AB);
5235
5078
  }
5236
- T(t2) {
5237
- this._$AH !== t2 && (this._$AR(), this._$AH = this.S(t2));
5079
+ $(t2) {
5080
+ this._$AH !== t2 && (this._$AR(), this._$AH = this.k(t2));
5238
5081
  }
5239
- g(t2) {
5240
- this._$AH !== A && u(this._$AH) ? this._$AA.nextSibling.data = t2 : this.T(r.createTextNode(t2)), this._$AH = t2;
5082
+ _(t2) {
5083
+ this._$AH !== A && u(this._$AH) ? this._$AA.nextSibling.data = t2 : this.$(r.createTextNode(t2)), this._$AH = t2;
5241
5084
  }
5242
- $(t2) {
5085
+ g(t2) {
5243
5086
  var i2;
5244
5087
  const { values: s2, _$litType$: e2 } = t2, o2 = "number" == typeof e2 ? this._$AC(t2) : (void 0 === e2.el && (e2.el = V.createElement(e2.h, this.options)), e2);
5245
5088
  if ((null === (i2 = this._$AH) || void 0 === i2 ? void 0 : i2._$AD) === o2)
5246
- this._$AH.p(s2);
5089
+ this._$AH.v(s2);
5247
5090
  else {
5248
- const t3 = new S(o2, this), i3 = t3.v(this.options);
5249
- t3.p(s2), this.T(i3), this._$AH = t3;
5091
+ const t3 = new S(o2, this), i3 = t3.u(this.options);
5092
+ t3.v(s2), this.$(i3), this._$AH = t3;
5250
5093
  }
5251
5094
  }
5252
5095
  _$AC(t2) {
5253
5096
  let i2 = E.get(t2.strings);
5254
5097
  return void 0 === i2 && E.set(t2.strings, i2 = new V(t2)), i2;
5255
5098
  }
5256
- k(t2) {
5099
+ T(t2) {
5257
5100
  c(this._$AH) || (this._$AH = [], this._$AR());
5258
5101
  const i2 = this._$AH;
5259
5102
  let s2, e2 = 0;
5260
5103
  for (const o2 of t2)
5261
- e2 === i2.length ? i2.push(s2 = new M(this.S(d()), this.S(d()), this, this.options)) : s2 = i2[e2], s2._$AI(o2), e2++;
5104
+ e2 === i2.length ? i2.push(s2 = new M(this.k(d()), this.k(d()), this, this.options)) : s2 = i2[e2], s2._$AI(o2), e2++;
5262
5105
  e2 < i2.length && (this._$AR(s2 && s2._$AB.nextSibling, e2), i2.length = e2);
5263
5106
  }
5264
5107
  _$AR(t2 = this._$AA.nextSibling, i2) {
@@ -5270,7 +5113,7 @@ class M {
5270
5113
  }
5271
5114
  setConnected(t2) {
5272
5115
  var i2;
5273
- void 0 === this._$AM && (this._$Cm = t2, null === (i2 = this._$AP) || void 0 === i2 || i2.call(this, t2));
5116
+ void 0 === this._$AM && (this._$Cp = t2, null === (i2 = this._$AP) || void 0 === i2 || i2.call(this, t2));
5274
5117
  }
5275
5118
  }
5276
5119
  class R {
@@ -5345,7 +5188,7 @@ class z {
5345
5188
  }
5346
5189
  }
5347
5190
  const j = i.litHtmlPolyfillSupport;
5348
- null == j || j(V, M), (null !== (t = i.litHtmlVersions) && void 0 !== t ? t : i.litHtmlVersions = []).push("2.7.0");
5191
+ null == j || j(V, M), (null !== (t = i.litHtmlVersions) && void 0 !== t ? t : i.litHtmlVersions = []).push("2.7.4");
5349
5192
  const B = (t2, i2, s2) => {
5350
5193
  var e2, o2;
5351
5194
  const n2 = null !== (e2 = null == s2 ? void 0 : s2.renderBefore) && void 0 !== e2 ? e2 : i2;
@@ -5553,7 +5396,7 @@ const __vitePreload = function preload(baseModule, deps, importerUrl) {
5553
5396
  })).then(() => baseModule());
5554
5397
  };
5555
5398
  function error(message, ...args) {
5556
- __vitePreload(() => import("./assets/errors-5a0ccde7.js"), true ? [] : void 0, import.meta.url).then(({ default: errorMap }) => {
5399
+ __vitePreload(() => import("./errors-5a0ccde7.js"), true ? [] : void 0, import.meta.url).then(({ default: errorMap }) => {
5557
5400
  const handler2 = errorMap[message];
5558
5401
  handler2 ? console.error(handler2(...args)) : console.error(...args);
5559
5402
  }).catch((err) => {
@@ -5567,12 +5410,12 @@ function dynamicImportError(name) {
5567
5410
  error("0", name, err.message);
5568
5411
  };
5569
5412
  }
5570
- const logger$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5413
+ const logger = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5571
5414
  __proto__: null,
5572
5415
  dynamicImportError,
5573
5416
  error
5574
5417
  }, Symbol.toStringTag, { value: "Module" }));
5575
- var logger_default = logger$1;
5418
+ var logger_default = logger;
5576
5419
  var __defProp$2 = Object.defineProperty;
5577
5420
  var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5578
5421
  var __publicField$2 = (obj, key, value) => {
@@ -5807,17 +5650,17 @@ const fromErrorToNotification = (error2) => {
5807
5650
  status: "error"
5808
5651
  };
5809
5652
  };
5810
- const errorHandler = (self2, error2) => postChannel.send(self2.parent, {
5653
+ const errorHandler = (channel, error2) => channel.send({
5811
5654
  content: fromErrorToNotification(error2),
5812
5655
  type: "notification"
5813
5656
  });
5814
5657
  const isRealMouseEvent = (event) => "clientX" in event && "clientY" in event;
5815
- function mouseEventFactory(self2, type) {
5658
+ function mouseEventFactory(channel, type) {
5816
5659
  return (event) => {
5817
5660
  if (!isRealMouseEvent(event)) {
5818
5661
  return;
5819
5662
  }
5820
- postChannel.send(self2.parent, {
5663
+ channel.send({
5821
5664
  content: {
5822
5665
  bubbles: true,
5823
5666
  cancelable: false,
@@ -5829,7 +5672,7 @@ function mouseEventFactory(self2, type) {
5829
5672
  };
5830
5673
  }
5831
5674
  const isControlledElement = (tags, element) => tags.has(element.tagName) && element.hasAttribute(MIA_PREVIEW_ID);
5832
- const mouseOnElementFactory = (self2, channels) => {
5675
+ const mouseOnElementFactory = (self2, postChannel, channels) => {
5833
5676
  const { document: document2 } = self2;
5834
5677
  return (event) => {
5835
5678
  let content;
@@ -5845,13 +5688,287 @@ const mouseOnElementFactory = (self2, channels) => {
5845
5688
  }, { ids: [], selectors: [] });
5846
5689
  }
5847
5690
  if (channels.mode.getValue() === "select" || content === void 0) {
5848
- postChannel.send(self2.parent, {
5691
+ postChannel.send({
5849
5692
  content: content && (content.ids.length > 0 ? content : void 0),
5850
5693
  type: "click-element"
5851
5694
  });
5852
5695
  }
5853
5696
  };
5854
5697
  };
5698
+ var fromWindowToReceiver = (self2, options) => {
5699
+ return {
5700
+ postMessage: (message) => {
5701
+ self2.postMessage(message, (options == null ? void 0 : options.targetOrigin) ?? "*", options == null ? void 0 : options.transfer);
5702
+ }
5703
+ };
5704
+ };
5705
+ var SynAck = /* @__PURE__ */ ((SynAck2) => {
5706
+ SynAck2["Ack"] = "ack";
5707
+ SynAck2["Syn"] = "syn";
5708
+ return SynAck2;
5709
+ })(SynAck || {});
5710
+ var synackKeys = Object.values(SynAck);
5711
+ var getData = (message) => message.data;
5712
+ var synackFilter = (type) => (data) => data.type === type.toString();
5713
+ var isPostChannelMessage = (message) => {
5714
+ const data = message.data;
5715
+ return typeof data === "object" && data !== null && "type" in data && typeof data.type === "string" && "instance" in data && typeof data.instance === "string" && "content" in data;
5716
+ };
5717
+ var generateDarkColorHex = () => {
5718
+ let color = "#";
5719
+ for (let i2 = 0; i2 < 3; i2++) {
5720
+ color += `0${Math.floor(Math.random() * Math.pow(16, 2) / 2).toString(16)}`.slice(-2);
5721
+ }
5722
+ return color;
5723
+ };
5724
+ var PostChannel = class {
5725
+ constructor(listener, from2, to, opts) {
5726
+ __publicField(this, "__generateId");
5727
+ __publicField(this, "__instance");
5728
+ __publicField(this, "__colors");
5729
+ __publicField(this, "__listener");
5730
+ __publicField(this, "__log");
5731
+ __publicField(this, "__receiver");
5732
+ __publicField(this, "__subscription");
5733
+ __publicField(this, "__okToWrite");
5734
+ __publicField(this, "__write$");
5735
+ __publicField(this, "__recv$");
5736
+ this.__generateId = () => globalThis.crypto.randomUUID();
5737
+ const instance = this.__generateId();
5738
+ const messages = new ReplaySubject();
5739
+ const fromSubscription = fromEvent(from2, "message").pipe(filter(isPostChannelMessage)).subscribe(messages);
5740
+ this.__subscription = new Subscription();
5741
+ this.__subscription.add(fromSubscription);
5742
+ this.__okToWrite = new ReplaySubject(1);
5743
+ this.__write$ = this.__okToWrite.pipe(take(1));
5744
+ this.__recv$ = messages.asObservable();
5745
+ this.__listener = listener;
5746
+ this.__log = (opts == null ? void 0 : opts.log) && opts.log.bind(this);
5747
+ this.__instance = instance;
5748
+ const color = generateDarkColorHex();
5749
+ this.__colors = {
5750
+ bg: color,
5751
+ fg: `${color}22`
5752
+ };
5753
+ this.__receiver = to;
5754
+ this.__connect(
5755
+ instance,
5756
+ (opts == null ? void 0 : opts.period) ? opts.period : 10
5757
+ );
5758
+ }
5759
+ __connect(instance, period) {
5760
+ const synSubscription = interval(period).subscribe(() => this.__receiver.postMessage({
5761
+ content: instance,
5762
+ instance,
5763
+ type: "syn".toString()
5764
+ }));
5765
+ this.__subscription.add(synSubscription);
5766
+ this.__subscription.add(
5767
+ this.__recv$.pipe(
5768
+ map(getData),
5769
+ filter(synackFilter(
5770
+ "ack"
5771
+ /* Ack */
5772
+ )),
5773
+ filter(({ content }) => content === instance),
5774
+ take(1)
5775
+ ).subscribe(({ instance: foreignInstance }) => {
5776
+ this.__okToWrite.next(0);
5777
+ this.__subscription.add(
5778
+ this.__recv$.pipe(
5779
+ filter(
5780
+ ({ data: { type, instance: incomingInstance } }) => !synackKeys.includes(type) && incomingInstance === foreignInstance
5781
+ )
5782
+ ).subscribe((message) => {
5783
+ this.__listener(message);
5784
+ const { data } = message;
5785
+ if (data._id !== void 0) {
5786
+ this.__receiver.postMessage({
5787
+ ...data,
5788
+ content: data,
5789
+ instance,
5790
+ type: "ack"
5791
+ /* Ack */
5792
+ });
5793
+ }
5794
+ })
5795
+ );
5796
+ synSubscription.unsubscribe();
5797
+ })
5798
+ );
5799
+ this.__subscription.add(
5800
+ this.__recv$.pipe(
5801
+ map(getData),
5802
+ filter(synackFilter(
5803
+ "syn"
5804
+ /* Syn */
5805
+ )),
5806
+ // must check whether is not short-circuiting
5807
+ // in an infinite loop by syncing with itself
5808
+ filter(({ instance: foreignInstance }) => foreignInstance !== instance),
5809
+ take(1)
5810
+ ).subscribe(({ content }) => {
5811
+ this.__receiver.postMessage({
5812
+ content,
5813
+ instance,
5814
+ type: "ack"
5815
+ /* Ack */
5816
+ });
5817
+ })
5818
+ );
5819
+ }
5820
+ __write(message, messageId) {
5821
+ const extra = {};
5822
+ if (messageId !== void 0) {
5823
+ extra._id = messageId;
5824
+ }
5825
+ this.__subscription.add(
5826
+ this.__write$.subscribe(() => {
5827
+ var _a2;
5828
+ const outgoingMessage = Object.assign(
5829
+ message,
5830
+ {
5831
+ instance: this.__instance,
5832
+ ...extra
5833
+ }
5834
+ );
5835
+ this.__receiver.postMessage(outgoingMessage);
5836
+ (_a2 = this.__log) == null ? void 0 : _a2.call(this, outgoingMessage);
5837
+ })
5838
+ );
5839
+ }
5840
+ disconnect() {
5841
+ this.__subscription.unsubscribe();
5842
+ }
5843
+ send(message) {
5844
+ this.__write(message);
5845
+ }
5846
+ ackSend(message) {
5847
+ let done;
5848
+ const promise = new Promise((resolve) => {
5849
+ done = resolve;
5850
+ });
5851
+ const messageId = this.__generateId();
5852
+ this.__subscription.add(
5853
+ this.__recv$.pipe(
5854
+ map(getData),
5855
+ filter(synackFilter(
5856
+ "ack"
5857
+ /* Ack */
5858
+ )),
5859
+ filter(({ _id }) => _id === messageId),
5860
+ take(1)
5861
+ ).subscribe(() => done())
5862
+ );
5863
+ this.__write(message, messageId);
5864
+ return promise;
5865
+ }
5866
+ get instance() {
5867
+ return this.__instance;
5868
+ }
5869
+ get colors() {
5870
+ return this.__colors;
5871
+ }
5872
+ /**
5873
+ * signals readiness on listening and cannot fail but keeps hanging
5874
+ * if not resolved
5875
+ */
5876
+ get ready() {
5877
+ return firstValueFrom(this.__write$).then(() => {
5878
+ });
5879
+ }
5880
+ };
5881
+ var src_default = PostChannel;
5882
+ const registerChannels = () => ({
5883
+ configuration: new ReplaySubject(),
5884
+ focus: new BehaviorSubject(void 0),
5885
+ infos: new ReplaySubject(),
5886
+ mocks: new ReplaySubject(),
5887
+ mode: new BehaviorSubject("select"),
5888
+ notification: new ReplaySubject(),
5889
+ setSourceMap: new ReplaySubject(1),
5890
+ swSourceMapAck: new ReplaySubject(1),
5891
+ updated: new Subject(),
5892
+ uppercaseTags: /* @__PURE__ */ new Set()
5893
+ });
5894
+ const nextMode = (mode) => {
5895
+ let next = 0;
5896
+ const currentValue = mode.getValue();
5897
+ if (currentValue === "interact") {
5898
+ next = "select";
5899
+ } else if (currentValue === "select") {
5900
+ next = "interact";
5901
+ }
5902
+ mode.next(next);
5903
+ return next;
5904
+ };
5905
+ const swMakeListener = (_2) => (message) => {
5906
+ const { data } = message;
5907
+ switch (data.type) {
5908
+ }
5909
+ };
5910
+ const registerServiceWorker = async (self2, channels) => {
5911
+ const { navigator: { serviceWorker: sw } } = self2;
5912
+ return Promise.all([
5913
+ sw.register("./service-worker.js"),
5914
+ sw.ready.then((registration) => {
5915
+ if (!registration.active) {
5916
+ throw new TypeError("smth went wrong on sw activation");
5917
+ }
5918
+ return new src_default(swMakeListener(), window.navigator.serviceWorker, registration.active);
5919
+ })
5920
+ ]).then(([, channel]) => channel);
5921
+ };
5922
+ const parentMakeListener = (self2, channels) => (message) => {
5923
+ const { data } = message;
5924
+ switch (data.type) {
5925
+ case "options": {
5926
+ const { content: { disableOverlay, redirectTo, timeout, run: run2 } } = data;
5927
+ if (run2) {
5928
+ channels.swSourceMapAck.next(0);
5929
+ }
5930
+ if (disableOverlay) {
5931
+ Object.defineProperty(self2, "__BACKOFFICE_CONFIGURATOR_DISABLE_OVERLAY__", { value: true });
5932
+ channels.mode.next("interact");
5933
+ }
5934
+ if (timeout !== void 0) {
5935
+ Object.defineProperty(self2, "__BACKOFFICE_CONFIGURATOR_PREVIEW_TIMEOUT__", { value: timeout });
5936
+ }
5937
+ const { history } = self2;
5938
+ redirectTo && history.pushState(history.state, "", redirectTo);
5939
+ break;
5940
+ }
5941
+ case "ctrl-space":
5942
+ nextMode(channels.mode);
5943
+ break;
5944
+ case "new-configuration":
5945
+ channels.configuration.next({ ...data.content, type: "reset" });
5946
+ break;
5947
+ case "update":
5948
+ channels.configuration.next({ ...data.content, type: "update" });
5949
+ break;
5950
+ case "focus-element":
5951
+ channels.focus.next(data.content);
5952
+ break;
5953
+ case "set-source-map": {
5954
+ const { content } = data;
5955
+ channels.setSourceMap.next(Object.entries(content).reduce((acc, [from2, to]) => {
5956
+ try {
5957
+ const { href: fromUrl } = new URL(from2, self2.location.href);
5958
+ const obj = typeof to === "string" ? { headers: {}, query: {}, to } : to;
5959
+ acc[fromUrl] = {
5960
+ originalFrom: from2,
5961
+ ...obj
5962
+ };
5963
+ } catch (e2) {
5964
+ }
5965
+ return acc;
5966
+ }, {}));
5967
+ break;
5968
+ }
5969
+ }
5970
+ };
5971
+ const registerParent = (self2, channels) => new src_default(parentMakeListener(self2, channels), self2, fromWindowToReceiver(self2.parent));
5855
5972
  const ctrlSpaceFactory = (channels) => {
5856
5973
  return (evt) => {
5857
5974
  if (evt.ctrlKey && evt.key === " ") {
@@ -5882,49 +5999,42 @@ const requireInfo = (registry, tags) => from(tags.map((tag) => [tag, registry.wh
5882
5999
  mergeMap(extractManifest)
5883
6000
  );
5884
6001
  const BUFFER_TIME = 500;
5885
- function reporter(err) {
6002
+ const reporter = (postChannel, err) => {
5886
6003
  if (err instanceof Error) {
5887
- errorHandler(this, err);
6004
+ errorHandler(postChannel, err);
5888
6005
  }
5889
- }
5890
- function collectInfos(info$, addInfo) {
5891
- const boundReporter = reporter.bind(this);
5892
- return info$.pipe(
5893
- mergeMap(([, { __manifest: { label, description, ...rest }, tag }]) => {
5894
- delete rest.mocks;
5895
- return of({ info: { ...translateObject({ description, label }), ...rest }, tag });
5896
- }),
5897
- bufferTime(BUFFER_TIME),
5898
- filter((newInfos) => newInfos.length > 0)
5899
- ).subscribe({
5900
- error: boundReporter,
5901
- next: (extras) => addInfo(extras)
5902
- });
5903
- }
5904
- function collectMocks(info$) {
5905
- const boundReporter = reporter.bind(this);
5906
- return info$.pipe(
5907
- map(
5908
- ([, { __manifest: { mocks = {} }, tag }]) => [tag, mocks]
5909
- )
5910
- ).subscribe({
5911
- error: boundReporter,
5912
- next: (mockPair) => {
5913
- subjects.mocks.next(mockPair);
5914
- }
5915
- });
5916
- }
5917
- async function bootstrap(config2, {
6006
+ };
6007
+ const collectInfos = (postChannel, info$, addInfo) => info$.pipe(
6008
+ mergeMap(([, { __manifest: { label, description, ...rest }, tag }]) => {
6009
+ delete rest.mocks;
6010
+ return of({ info: { ...translateObject({ description, label }), ...rest }, tag });
6011
+ }),
6012
+ bufferTime(BUFFER_TIME),
6013
+ filter((newInfos) => newInfos.length > 0)
6014
+ ).subscribe({
6015
+ error: (error2) => reporter(postChannel, error2),
6016
+ next: (extras) => addInfo(extras)
6017
+ });
6018
+ const collectMocks = (postChannel, subjects, info$) => info$.pipe(
6019
+ map(
6020
+ ([, { __manifest: { mocks = {} }, tag }]) => [tag, mocks]
6021
+ )
6022
+ ).subscribe({
6023
+ error: (error2) => reporter(postChannel, error2),
6024
+ next: (mockPair) => {
6025
+ subjects.mocks.next(mockPair);
6026
+ }
6027
+ });
6028
+ async function bootstrap(postChannel, channels, config2, {
5918
6029
  addInfo,
5919
6030
  tags
5920
6031
  }) {
5921
6032
  const { subscription } = this;
5922
- const boundReporter = reporter.bind(this);
5923
6033
  if (config2) {
5924
6034
  const info$ = requireInfo(this.customElements, tags);
5925
- return premount(config2, this, boundReporter).then(() => {
5926
- subscription.add(collectInfos.call(this, info$, addInfo));
5927
- subscription.add(collectMocks.call(this, info$));
6035
+ return premount(config2, this, (err) => reporter(postChannel, err)).then(() => {
6036
+ subscription.add(collectInfos(postChannel, info$, addInfo));
6037
+ subscription.add(collectMocks(postChannel, channels, info$));
5928
6038
  });
5929
6039
  }
5930
6040
  }
@@ -5933,9 +6043,7 @@ const getPreviewContainer = (frame, root) => {
5933
6043
  let container = root.firstElementChild;
5934
6044
  if (container === null) {
5935
6045
  container = document2.createElement("div");
5936
- container.style.height = "100%";
5937
- container.style.width = "100%";
5938
- container.style.overflow = "auto";
6046
+ container.style.height = "inherit";
5939
6047
  container.style.display = "flex";
5940
6048
  root.appendChild(container);
5941
6049
  }
@@ -5966,7 +6074,7 @@ function fetchMockFactory(instance, fetchFactory, windowHref) {
5966
6074
  var _a2;
5967
6075
  const info = compileObject({ ...url, method }, context);
5968
6076
  const matcher = new URL(info.pathname, (_a2 = info.origin) != null ? _a2 : windowHref);
5969
- return [matcher.href, method, (injectedInfo, init2) => fetchHandler(injectedInfo, init2).finally(() => {
6077
+ return [matcher.href, method, (injectedInfo, init) => fetchHandler(injectedInfo, init).finally(() => {
5970
6078
  if (notify) {
5971
6079
  this.notify(fetchNotification(method, matcher));
5972
6080
  }
@@ -6043,12 +6151,12 @@ const printHeaders = (headers) => {
6043
6151
  });
6044
6152
  return JSON.stringify(obj);
6045
6153
  };
6046
- const fetchPrint = (window2, url, init2, resHeaders = new Headers()) => {
6154
+ const fetchPrint = (window2, url, init, resHeaders = new Headers()) => {
6047
6155
  var _a2;
6048
6156
  const style = window2.origin === "null" ? { background: "antiquewhite", color: "brown" } : { background: "cyan", color: "blue" };
6049
6157
  console.groupCollapsed(`%c Fetching from ${window2.origin} `, Object.entries(style).map(([key, val]) => `${key}: ${val}`).join("; "));
6050
6158
  console.info(
6051
- `a component fetched with method ${(_a2 = init2 == null ? void 0 : init2.method) != null ? _a2 : "GET"} resource at %c ${url.href} got a response with headers ${printHeaders(resHeaders)}`,
6159
+ `a component fetched with method ${(_a2 = init == null ? void 0 : init.method) != null ? _a2 : "GET"} resource at %c ${url.href} got a response with headers ${printHeaders(resHeaders)}`,
6052
6160
  "background: lightgreen; color: darkgreen"
6053
6161
  );
6054
6162
  console.groupEnd();
@@ -6060,7 +6168,7 @@ const notFoundTagNotification = (tag) => ({
6060
6168
  message: "preview.notifications.no-webcomponent-definition.message",
6061
6169
  status: "warning"
6062
6170
  });
6063
- async function mock(contexts, tags = []) {
6171
+ async function mock(postChannel, subjects, contexts, tags = []) {
6064
6172
  const { location: { href }, fetch: originalFetch } = this;
6065
6173
  const urlMaker = urlMakerFactory(this);
6066
6174
  const store = new FetchMockStore(this.notify.bind(this));
@@ -6084,21 +6192,21 @@ async function mock(contexts, tags = []) {
6084
6192
  const instancesCarryingMocks = (_a2 = contexts.get(tag)) != null ? _a2 : [];
6085
6193
  return handler(store, instancesCarryingMocks, fetchFactory, href);
6086
6194
  })).catch(
6087
- (error2) => error2 instanceof Error && errorHandler(this, error2)
6195
+ (error2) => error2 instanceof Error && errorHandler(postChannel, error2)
6088
6196
  );
6089
- const mockedFetch = async (info, init2) => {
6197
+ const mockedFetch = async (info, init) => {
6090
6198
  var _a2;
6091
6199
  const url = toURL(urlMaker, info);
6092
- const mockImplementation = store.match({ method: (_a2 = init2 == null ? void 0 : init2.method) != null ? _a2 : "GET", url });
6200
+ const mockImplementation = store.match({ method: (_a2 = init == null ? void 0 : init.method) != null ? _a2 : "GET", url });
6093
6201
  if (mockImplementation !== void 0) {
6094
- return mockImplementation(url, init2).then((res) => {
6202
+ return mockImplementation(url, init).then((res) => {
6095
6203
  {
6096
- fetchPrint(this, url, init2, res.headers);
6204
+ fetchPrint(this, url, init, res.headers);
6097
6205
  }
6098
6206
  return res;
6099
6207
  });
6100
6208
  }
6101
- return originalFetch(info, init2);
6209
+ return originalFetch(info, init);
6102
6210
  };
6103
6211
  if (this.proxyWindow) {
6104
6212
  const newFetch = Object.assign(
@@ -6282,10 +6390,10 @@ function wrap(frame, notification) {
6282
6390
  const unpatch = domPatch(sandbox);
6283
6391
  return { sandbox, unpatch };
6284
6392
  }
6285
- var __defProp = Object.defineProperty;
6286
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6287
- var __publicField = (obj, key, value) => {
6288
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6393
+ var __defProp2 = Object.defineProperty;
6394
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6395
+ var __publicField2 = (obj, key, value) => {
6396
+ __defNormalProp2(obj, typeof key !== "symbol" ? key + "" : key, value);
6289
6397
  return value;
6290
6398
  };
6291
6399
  function appendOverlay(self2, mode$) {
@@ -6327,8 +6435,9 @@ function appendOverlay(self2, mode$) {
6327
6435
  }
6328
6436
  const appendRenderRoot = (document2) => {
6329
6437
  const renderRoot = document2.createElement("div");
6438
+ renderRoot.style.display = "flex";
6439
+ renderRoot.style.flexDirection = "column";
6330
6440
  renderRoot.style.height = "inherit";
6331
- renderRoot.style.width = "inherit";
6332
6441
  document2.body.appendChild(renderRoot);
6333
6442
  return renderRoot;
6334
6443
  };
@@ -6344,8 +6453,8 @@ function createLifecycle(frame) {
6344
6453
  }
6345
6454
  class Queue {
6346
6455
  constructor() {
6347
- __publicField(this, "_results", /* @__PURE__ */ new Map());
6348
- __publicField(this, "_queue", Promise.resolve());
6456
+ __publicField2(this, "_results", /* @__PURE__ */ new Map());
6457
+ __publicField2(this, "_queue", Promise.resolve());
6349
6458
  }
6350
6459
  add(args) {
6351
6460
  const fns = [...args];
@@ -6383,12 +6492,9 @@ const addInfoFactory = (channels) => (info) => {
6383
6492
  channels.infos.next(info);
6384
6493
  info.forEach(({ tag }) => channels.uppercaseTags.add(tag.toUpperCase()));
6385
6494
  };
6386
- const run = (frame, renderRoot, channels) => {
6495
+ const run = (frame, renderRoot, postChannel, channels) => {
6387
6496
  const queue = new Queue();
6388
- const subscription = channels.configuration.pipe(
6389
- combineLatestWith(subjects.swReady.pipe(take(1))),
6390
- map(([next]) => next)
6391
- ).subscribe((next) => {
6497
+ const subscription = channels.configuration.pipe(combineLatestWith(channels.swSourceMapAck)).subscribe(([next]) => {
6392
6498
  const { configuration } = next;
6393
6499
  const { content } = configuration;
6394
6500
  let done;
@@ -6396,8 +6502,8 @@ const run = (frame, renderRoot, channels) => {
6396
6502
  const { contexts, tags } = next;
6397
6503
  done = queue.add([
6398
6504
  () => unmount.call(frame, renderRoot),
6399
- () => bootstrap.call(frame, configuration, { addInfo: addInfoFactory(channels), tags }),
6400
- () => mock.call(frame, contexts, next.tags),
6505
+ () => bootstrap.call(frame, postChannel, channels, configuration, { addInfo: addInfoFactory(channels), tags }),
6506
+ () => mock.call(frame, postChannel, channels, contexts, next.tags),
6401
6507
  () => update.call(frame, content, renderRoot).finally(() => channels.updated.next(0))
6402
6508
  ]);
6403
6509
  } else {
@@ -6446,16 +6552,16 @@ const interceptCORSFetch = (self2, notification) => {
6446
6552
  return;
6447
6553
  }
6448
6554
  const originalFetch = self2.fetch.bind(self2);
6449
- self2.fetch = (input, init2) => {
6555
+ self2.fetch = (input, init) => {
6450
6556
  var _a2;
6451
6557
  const url = toURL(urlMaker, input);
6452
6558
  if (isSameDocumentOriginRequest(document2, url)) {
6453
- notification.next(fetchNotification((_a2 = init2 == null ? void 0 : init2.method) != null ? _a2 : "GET", url));
6559
+ notification.next(fetchNotification((_a2 = init == null ? void 0 : init.method) != null ? _a2 : "GET", url));
6454
6560
  }
6455
- return originalFetch(input, init2);
6561
+ return originalFetch(input, init);
6456
6562
  };
6457
6563
  };
6458
- function createComposerApplication(self2, channels) {
6564
+ const createComposerApplication = (self2, postChannel, channels) => {
6459
6565
  applyBodyStyle(self2.document);
6460
6566
  interceptCORSFetch(self2, channels.notification);
6461
6567
  const { cleanup: overlayDisplaySubscriptionCleanup } = appendOverlay(self2, channels.mode.asObservable());
@@ -6463,7 +6569,7 @@ function createComposerApplication(self2, channels) {
6463
6569
  const renderRoot = appendRenderRoot(self2.document);
6464
6570
  const frame = createLifecycle(self2);
6465
6571
  const { sandbox: sandboxedWindow, unpatch } = wrap(frame, channels.notification);
6466
- const updateSubscriptionsCleanup = run(sandboxedWindow, renderRoot, channels);
6572
+ const updateSubscriptionsCleanup = run(sandboxedWindow, renderRoot, postChannel, channels);
6467
6573
  return {
6468
6574
  cleanup: () => {
6469
6575
  updateSubscriptionsCleanup();
@@ -6473,87 +6579,41 @@ function createComposerApplication(self2, channels) {
6473
6579
  },
6474
6580
  sandboxedWindow
6475
6581
  };
6476
- }
6477
- function logger(type, ...args) {
6478
- {
6479
- const color = generateDarkColorHex();
6480
- const background = `${color}22`;
6481
- const style = { background, color };
6482
- console.groupCollapsed(`%c Preview ${this.location.href}`, Object.entries(style).map(([key, val]) => `${key}: ${val}`).join("; "));
6483
- console[type](...args);
6484
- console.groupEnd();
6485
- }
6486
- }
6487
- function logServiceWorkerStatus(registration) {
6488
- const log = logger.bind(this);
6489
- if (registration.installing) {
6490
- log("info", "Service worker installing");
6491
- } else if (registration.waiting) {
6492
- log("info", "Service worker installed");
6493
- } else if (registration.active) {
6494
- log("info", "Service worker active");
6495
- }
6496
- }
6497
- const registerServiceWorker = async (self2) => {
6498
- const { navigator: navigator2 } = self2;
6499
- if ("serviceWorker" in navigator2) {
6500
- navigator2.serviceWorker.register("./service-worker.js", { scope: "./" }).then((reg) => logServiceWorkerStatus.call(self2, reg)).catch((error2) => console.error(error2));
6501
- return navigator2.serviceWorker.ready.then((reg) => {
6502
- var _a2;
6503
- return (_a2 = reg.active) != null ? _a2 : Promise.reject(new TypeError("serviceWorker not active"));
6504
- });
6505
- }
6506
- logger.call(self2, "error", "serviceWorker is not available");
6507
6582
  };
6508
- const init = async (self2) => {
6509
- postChannel.window = self2;
6510
- serviceWorkerChannel.window = self2;
6511
- return registerServiceWorker(self2);
6512
- };
6513
- function registerSenders(chs, sw) {
6583
+ function registerParentWindowSenders(chs) {
6514
6584
  const subscription = new Subscription();
6515
- if (sw) {
6516
- subscription.add(
6517
- chs.setSourceMap.subscribe(
6518
- (next) => serviceWorkerChannel.send(sw, { content: next, type: "set-source-map" })
6519
- )
6520
- );
6521
- }
6522
6585
  subscription.add(
6523
- chs.updated.subscribe(() => {
6524
- postChannel.send(window.parent, {
6525
- content: {},
6526
- type: "updated"
6527
- });
6528
- })
6586
+ chs.updated.subscribe(() => this.send({
6587
+ content: {},
6588
+ type: "updated"
6589
+ }))
6529
6590
  );
6530
6591
  subscription.add(
6531
- chs.infos.subscribe(
6532
- (entries) => {
6533
- postChannel.send(window.parent, {
6534
- content: entries,
6535
- type: "tag-info"
6536
- });
6537
- }
6538
- )
6592
+ chs.infos.subscribe((entries) => this.send({
6593
+ content: entries,
6594
+ type: "tag-info"
6595
+ }))
6539
6596
  );
6540
6597
  subscription.add(
6541
- chs.notification.subscribe(
6542
- (content) => {
6543
- postChannel.send(window.parent, {
6544
- content,
6545
- type: "notification"
6546
- });
6547
- }
6548
- )
6598
+ chs.notification.subscribe((content) => this.send({
6599
+ content,
6600
+ type: "notification"
6601
+ }))
6549
6602
  );
6550
6603
  subscription.add(
6551
- chs.mode.subscribe(
6552
- (mode) => {
6553
- postChannel.send(window.parent, {
6554
- content: { mode },
6555
- type: "ctrl-space"
6556
- });
6604
+ chs.mode.subscribe((mode) => this.send({
6605
+ content: { mode },
6606
+ type: "ctrl-space"
6607
+ }))
6608
+ );
6609
+ return () => subscription.unsubscribe();
6610
+ }
6611
+ function registerServiceWorkerSenders(channels) {
6612
+ const subscription = new Subscription();
6613
+ subscription.add(
6614
+ channels.setSourceMap.subscribe(
6615
+ (message) => {
6616
+ this.ackSend({ content: message, type: "set-source-map" }).then(() => channels.swSourceMapAck.next(0)).catch(noop);
6557
6617
  }
6558
6618
  )
6559
6619
  );
@@ -6575,40 +6635,34 @@ function registerCleanups(window2, fns) {
6575
6635
  });
6576
6636
  }
6577
6637
  (async (self2) => {
6578
- const sw = await init(self2);
6579
- let serviceWorkerChannelCleanup = noop;
6580
- const postChannelCleanup = postChannel.recv(self2, self2.top);
6581
- if (sw) {
6582
- const swCleanup = serviceWorkerChannel.recv();
6583
- const subscription = interval(100).subscribe(() => postChannel.send(self2.parent, { content: { status: "ready" }, type: "service-worker" }));
6584
- serviceWorkerChannelCleanup = () => {
6585
- swCleanup();
6586
- subscription.unsubscribe();
6587
- serviceWorkerChannel.send(sw, { content: {}, type: "unload-client" });
6588
- };
6589
- }
6590
- const senderCleanup = registerSenders(subjects, sw);
6638
+ const channels = registerChannels();
6639
+ const swRegistration = await registerServiceWorker(self2);
6640
+ const parentWindowRegistration = registerParent(self2, channels);
6641
+ const serviceWorkerSenderCleanup = registerServiceWorkerSenders.call(swRegistration, channels);
6642
+ const parentWindowSenderCleanup = registerParentWindowSenders.call(parentWindowRegistration, channels);
6591
6643
  const listenerCleanup = registerEventListeners(
6592
6644
  self2,
6593
- { handler: ctrlSpaceFactory(subjects), type: "keydown" },
6594
- { handler: mouseEventFactory(self2, "mousemove"), type: "mousemove" },
6595
- { handler: mouseEventFactory(self2, "mousedown"), type: "mousedown" },
6596
- { handler: mouseOnElementFactory(self2, subjects), type: "mousedown" }
6645
+ { handler: ctrlSpaceFactory(channels), type: "keydown" },
6646
+ { handler: mouseEventFactory(parentWindowRegistration, "mousemove"), type: "mousemove" },
6647
+ { handler: mouseEventFactory(parentWindowRegistration, "mousedown"), type: "mousedown" },
6648
+ { handler: mouseOnElementFactory(self2, parentWindowRegistration, channels), type: "mousedown" }
6597
6649
  );
6598
6650
  const {
6599
6651
  cleanup: composerApplicationCleanup,
6600
6652
  sandboxedWindow
6601
- } = createComposerApplication(self2, subjects);
6653
+ } = createComposerApplication(self2, parentWindowRegistration, channels);
6602
6654
  registerCleanups(
6603
6655
  sandboxedWindow,
6604
6656
  [
6605
6657
  composerApplicationCleanup,
6606
6658
  listenerCleanup,
6607
- senderCleanup,
6608
- serviceWorkerChannelCleanup,
6609
- postChannelCleanup
6659
+ parentWindowSenderCleanup,
6660
+ serviceWorkerSenderCleanup,
6661
+ () => parentWindowRegistration.disconnect(),
6662
+ () => swRegistration.disconnect()
6610
6663
  ]
6611
6664
  );
6612
- })(window).catch((error2) => {
6613
- throw error2;
6665
+ })(window).catch((err) => {
6666
+ console.error(`[preview] Error Boundary: ${String(err)}`);
6667
+ throw err;
6614
6668
  });