@micro-lc/preview 0.5.0-rc3 → 0.5.0-rc5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,290 @@ 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 { dictionary, ...rest } = data.content;
5955
+ channels.setSourceMap.next({
5956
+ ...rest,
5957
+ dictionary: Object.entries(dictionary).reduce((acc, [from2, to]) => {
5958
+ try {
5959
+ const { href: fromUrl } = new URL(from2, self2.location.href);
5960
+ const obj = typeof to === "string" ? { headers: {}, query: {}, to } : to;
5961
+ acc[fromUrl] = {
5962
+ originalFrom: from2,
5963
+ ...obj
5964
+ };
5965
+ } catch (e2) {
5966
+ }
5967
+ return acc;
5968
+ }, {})
5969
+ });
5970
+ break;
5971
+ }
5972
+ }
5973
+ };
5974
+ const registerParent = (self2, channels) => new src_default(parentMakeListener(self2, channels), self2, fromWindowToReceiver(self2.parent));
5855
5975
  const ctrlSpaceFactory = (channels) => {
5856
5976
  return (evt) => {
5857
5977
  if (evt.ctrlKey && evt.key === " ") {
@@ -5882,49 +6002,42 @@ const requireInfo = (registry, tags) => from(tags.map((tag) => [tag, registry.wh
5882
6002
  mergeMap(extractManifest)
5883
6003
  );
5884
6004
  const BUFFER_TIME = 500;
5885
- function reporter(err) {
6005
+ const reporter = (postChannel, err) => {
5886
6006
  if (err instanceof Error) {
5887
- errorHandler(this, err);
6007
+ errorHandler(postChannel, err);
5888
6008
  }
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, {
6009
+ };
6010
+ const collectInfos = (postChannel, info$, addInfo) => info$.pipe(
6011
+ mergeMap(([, { __manifest: { label, description, ...rest }, tag }]) => {
6012
+ delete rest.mocks;
6013
+ return of({ info: { ...translateObject({ description, label }), ...rest }, tag });
6014
+ }),
6015
+ bufferTime(BUFFER_TIME),
6016
+ filter((newInfos) => newInfos.length > 0)
6017
+ ).subscribe({
6018
+ error: (error2) => reporter(postChannel, error2),
6019
+ next: (extras) => addInfo(extras)
6020
+ });
6021
+ const collectMocks = (postChannel, subjects, info$) => info$.pipe(
6022
+ map(
6023
+ ([, { __manifest: { mocks = {} }, tag }]) => [tag, mocks]
6024
+ )
6025
+ ).subscribe({
6026
+ error: (error2) => reporter(postChannel, error2),
6027
+ next: (mockPair) => {
6028
+ subjects.mocks.next(mockPair);
6029
+ }
6030
+ });
6031
+ async function bootstrap(postChannel, channels, config2, {
5918
6032
  addInfo,
5919
6033
  tags
5920
6034
  }) {
5921
6035
  const { subscription } = this;
5922
- const boundReporter = reporter.bind(this);
5923
6036
  if (config2) {
5924
6037
  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$));
6038
+ return premount(config2, this, (err) => reporter(postChannel, err)).then(() => {
6039
+ subscription.add(collectInfos(postChannel, info$, addInfo));
6040
+ subscription.add(collectMocks(postChannel, channels, info$));
5928
6041
  });
5929
6042
  }
5930
6043
  }
@@ -5933,9 +6046,7 @@ const getPreviewContainer = (frame, root) => {
5933
6046
  let container = root.firstElementChild;
5934
6047
  if (container === null) {
5935
6048
  container = document2.createElement("div");
5936
- container.style.height = "100%";
5937
- container.style.width = "100%";
5938
- container.style.overflow = "auto";
6049
+ container.style.height = "inherit";
5939
6050
  container.style.display = "flex";
5940
6051
  root.appendChild(container);
5941
6052
  }
@@ -5966,7 +6077,7 @@ function fetchMockFactory(instance, fetchFactory, windowHref) {
5966
6077
  var _a2;
5967
6078
  const info = compileObject({ ...url, method }, context);
5968
6079
  const matcher = new URL(info.pathname, (_a2 = info.origin) != null ? _a2 : windowHref);
5969
- return [matcher.href, method, (injectedInfo, init2) => fetchHandler(injectedInfo, init2).finally(() => {
6080
+ return [matcher.href, method, (injectedInfo, init) => fetchHandler(injectedInfo, init).finally(() => {
5970
6081
  if (notify) {
5971
6082
  this.notify(fetchNotification(method, matcher));
5972
6083
  }
@@ -6043,12 +6154,12 @@ const printHeaders = (headers) => {
6043
6154
  });
6044
6155
  return JSON.stringify(obj);
6045
6156
  };
6046
- const fetchPrint = (window2, url, init2, resHeaders = new Headers()) => {
6157
+ const fetchPrint = (window2, url, init, resHeaders = new Headers()) => {
6047
6158
  var _a2;
6048
6159
  const style = window2.origin === "null" ? { background: "antiquewhite", color: "brown" } : { background: "cyan", color: "blue" };
6049
6160
  console.groupCollapsed(`%c Fetching from ${window2.origin} `, Object.entries(style).map(([key, val]) => `${key}: ${val}`).join("; "));
6050
6161
  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)}`,
6162
+ `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
6163
  "background: lightgreen; color: darkgreen"
6053
6164
  );
6054
6165
  console.groupEnd();
@@ -6060,7 +6171,7 @@ const notFoundTagNotification = (tag) => ({
6060
6171
  message: "preview.notifications.no-webcomponent-definition.message",
6061
6172
  status: "warning"
6062
6173
  });
6063
- async function mock(contexts, tags = []) {
6174
+ async function mock(postChannel, subjects, contexts, tags = []) {
6064
6175
  const { location: { href }, fetch: originalFetch } = this;
6065
6176
  const urlMaker = urlMakerFactory(this);
6066
6177
  const store = new FetchMockStore(this.notify.bind(this));
@@ -6084,21 +6195,21 @@ async function mock(contexts, tags = []) {
6084
6195
  const instancesCarryingMocks = (_a2 = contexts.get(tag)) != null ? _a2 : [];
6085
6196
  return handler(store, instancesCarryingMocks, fetchFactory, href);
6086
6197
  })).catch(
6087
- (error2) => error2 instanceof Error && errorHandler(this, error2)
6198
+ (error2) => error2 instanceof Error && errorHandler(postChannel, error2)
6088
6199
  );
6089
- const mockedFetch = async (info, init2) => {
6200
+ const mockedFetch = async (info, init) => {
6090
6201
  var _a2;
6091
6202
  const url = toURL(urlMaker, info);
6092
- const mockImplementation = store.match({ method: (_a2 = init2 == null ? void 0 : init2.method) != null ? _a2 : "GET", url });
6203
+ const mockImplementation = store.match({ method: (_a2 = init == null ? void 0 : init.method) != null ? _a2 : "GET", url });
6093
6204
  if (mockImplementation !== void 0) {
6094
- return mockImplementation(url, init2).then((res) => {
6205
+ return mockImplementation(url, init).then((res) => {
6095
6206
  {
6096
- fetchPrint(this, url, init2, res.headers);
6207
+ fetchPrint(this, url, init, res.headers);
6097
6208
  }
6098
6209
  return res;
6099
6210
  });
6100
6211
  }
6101
- return originalFetch(info, init2);
6212
+ return originalFetch(info, init);
6102
6213
  };
6103
6214
  if (this.proxyWindow) {
6104
6215
  const newFetch = Object.assign(
@@ -6282,10 +6393,10 @@ function wrap(frame, notification) {
6282
6393
  const unpatch = domPatch(sandbox);
6283
6394
  return { sandbox, unpatch };
6284
6395
  }
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);
6396
+ var __defProp2 = Object.defineProperty;
6397
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6398
+ var __publicField2 = (obj, key, value) => {
6399
+ __defNormalProp2(obj, typeof key !== "symbol" ? key + "" : key, value);
6289
6400
  return value;
6290
6401
  };
6291
6402
  function appendOverlay(self2, mode$) {
@@ -6327,8 +6438,9 @@ function appendOverlay(self2, mode$) {
6327
6438
  }
6328
6439
  const appendRenderRoot = (document2) => {
6329
6440
  const renderRoot = document2.createElement("div");
6441
+ renderRoot.style.display = "flex";
6442
+ renderRoot.style.flexDirection = "column";
6330
6443
  renderRoot.style.height = "inherit";
6331
- renderRoot.style.width = "inherit";
6332
6444
  document2.body.appendChild(renderRoot);
6333
6445
  return renderRoot;
6334
6446
  };
@@ -6344,8 +6456,8 @@ function createLifecycle(frame) {
6344
6456
  }
6345
6457
  class Queue {
6346
6458
  constructor() {
6347
- __publicField(this, "_results", /* @__PURE__ */ new Map());
6348
- __publicField(this, "_queue", Promise.resolve());
6459
+ __publicField2(this, "_results", /* @__PURE__ */ new Map());
6460
+ __publicField2(this, "_queue", Promise.resolve());
6349
6461
  }
6350
6462
  add(args) {
6351
6463
  const fns = [...args];
@@ -6383,12 +6495,9 @@ const addInfoFactory = (channels) => (info) => {
6383
6495
  channels.infos.next(info);
6384
6496
  info.forEach(({ tag }) => channels.uppercaseTags.add(tag.toUpperCase()));
6385
6497
  };
6386
- const run = (frame, renderRoot, channels) => {
6498
+ const run = (frame, renderRoot, postChannel, channels) => {
6387
6499
  const queue = new Queue();
6388
- const subscription = channels.configuration.pipe(
6389
- combineLatestWith(subjects.swReady.pipe(take(1))),
6390
- map(([next]) => next)
6391
- ).subscribe((next) => {
6500
+ const subscription = channels.configuration.pipe(combineLatestWith(channels.swSourceMapAck)).subscribe(([next]) => {
6392
6501
  const { configuration } = next;
6393
6502
  const { content } = configuration;
6394
6503
  let done;
@@ -6396,8 +6505,8 @@ const run = (frame, renderRoot, channels) => {
6396
6505
  const { contexts, tags } = next;
6397
6506
  done = queue.add([
6398
6507
  () => unmount.call(frame, renderRoot),
6399
- () => bootstrap.call(frame, configuration, { addInfo: addInfoFactory(channels), tags }),
6400
- () => mock.call(frame, contexts, next.tags),
6508
+ () => bootstrap.call(frame, postChannel, channels, configuration, { addInfo: addInfoFactory(channels), tags }),
6509
+ () => mock.call(frame, postChannel, channels, contexts, next.tags),
6401
6510
  () => update.call(frame, content, renderRoot).finally(() => channels.updated.next(0))
6402
6511
  ]);
6403
6512
  } else {
@@ -6446,16 +6555,16 @@ const interceptCORSFetch = (self2, notification) => {
6446
6555
  return;
6447
6556
  }
6448
6557
  const originalFetch = self2.fetch.bind(self2);
6449
- self2.fetch = (input, init2) => {
6558
+ self2.fetch = (input, init) => {
6450
6559
  var _a2;
6451
6560
  const url = toURL(urlMaker, input);
6452
6561
  if (isSameDocumentOriginRequest(document2, url)) {
6453
- notification.next(fetchNotification((_a2 = init2 == null ? void 0 : init2.method) != null ? _a2 : "GET", url));
6562
+ notification.next(fetchNotification((_a2 = init == null ? void 0 : init.method) != null ? _a2 : "GET", url));
6454
6563
  }
6455
- return originalFetch(input, init2);
6564
+ return originalFetch(input, init);
6456
6565
  };
6457
6566
  };
6458
- function createComposerApplication(self2, channels) {
6567
+ const createComposerApplication = (self2, postChannel, channels) => {
6459
6568
  applyBodyStyle(self2.document);
6460
6569
  interceptCORSFetch(self2, channels.notification);
6461
6570
  const { cleanup: overlayDisplaySubscriptionCleanup } = appendOverlay(self2, channels.mode.asObservable());
@@ -6463,7 +6572,7 @@ function createComposerApplication(self2, channels) {
6463
6572
  const renderRoot = appendRenderRoot(self2.document);
6464
6573
  const frame = createLifecycle(self2);
6465
6574
  const { sandbox: sandboxedWindow, unpatch } = wrap(frame, channels.notification);
6466
- const updateSubscriptionsCleanup = run(sandboxedWindow, renderRoot, channels);
6575
+ const updateSubscriptionsCleanup = run(sandboxedWindow, renderRoot, postChannel, channels);
6467
6576
  return {
6468
6577
  cleanup: () => {
6469
6578
  updateSubscriptionsCleanup();
@@ -6473,87 +6582,41 @@ function createComposerApplication(self2, channels) {
6473
6582
  },
6474
6583
  sandboxedWindow
6475
6584
  };
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
- };
6508
- const init = async (self2) => {
6509
- postChannel.window = self2;
6510
- serviceWorkerChannel.window = self2;
6511
- return registerServiceWorker(self2);
6512
6585
  };
6513
- function registerSenders(chs, sw) {
6586
+ function registerParentWindowSenders(chs) {
6514
6587
  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
6588
  subscription.add(
6523
- chs.updated.subscribe(() => {
6524
- postChannel.send(window.parent, {
6525
- content: {},
6526
- type: "updated"
6527
- });
6528
- })
6589
+ chs.updated.subscribe(() => this.send({
6590
+ content: {},
6591
+ type: "updated"
6592
+ }))
6529
6593
  );
6530
6594
  subscription.add(
6531
- chs.infos.subscribe(
6532
- (entries) => {
6533
- postChannel.send(window.parent, {
6534
- content: entries,
6535
- type: "tag-info"
6536
- });
6537
- }
6538
- )
6595
+ chs.infos.subscribe((entries) => this.send({
6596
+ content: entries,
6597
+ type: "tag-info"
6598
+ }))
6539
6599
  );
6540
6600
  subscription.add(
6541
- chs.notification.subscribe(
6542
- (content) => {
6543
- postChannel.send(window.parent, {
6544
- content,
6545
- type: "notification"
6546
- });
6547
- }
6548
- )
6601
+ chs.notification.subscribe((content) => this.send({
6602
+ content,
6603
+ type: "notification"
6604
+ }))
6549
6605
  );
6550
6606
  subscription.add(
6551
- chs.mode.subscribe(
6552
- (mode) => {
6553
- postChannel.send(window.parent, {
6554
- content: { mode },
6555
- type: "ctrl-space"
6556
- });
6607
+ chs.mode.subscribe((mode) => this.send({
6608
+ content: { mode },
6609
+ type: "ctrl-space"
6610
+ }))
6611
+ );
6612
+ return () => subscription.unsubscribe();
6613
+ }
6614
+ function registerServiceWorkerSenders(channels) {
6615
+ const subscription = new Subscription();
6616
+ subscription.add(
6617
+ channels.setSourceMap.subscribe(
6618
+ (message) => {
6619
+ this.ackSend({ content: message, type: "set-source-map" }).then(() => channels.swSourceMapAck.next(0)).catch(noop);
6557
6620
  }
6558
6621
  )
6559
6622
  );
@@ -6575,40 +6638,34 @@ function registerCleanups(window2, fns) {
6575
6638
  });
6576
6639
  }
6577
6640
  (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);
6641
+ const channels = registerChannels();
6642
+ const swRegistration = await registerServiceWorker(self2);
6643
+ const parentWindowRegistration = registerParent(self2, channels);
6644
+ const serviceWorkerSenderCleanup = registerServiceWorkerSenders.call(swRegistration, channels);
6645
+ const parentWindowSenderCleanup = registerParentWindowSenders.call(parentWindowRegistration, channels);
6591
6646
  const listenerCleanup = registerEventListeners(
6592
6647
  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" }
6648
+ { handler: ctrlSpaceFactory(channels), type: "keydown" },
6649
+ { handler: mouseEventFactory(parentWindowRegistration, "mousemove"), type: "mousemove" },
6650
+ { handler: mouseEventFactory(parentWindowRegistration, "mousedown"), type: "mousedown" },
6651
+ { handler: mouseOnElementFactory(self2, parentWindowRegistration, channels), type: "mousedown" }
6597
6652
  );
6598
6653
  const {
6599
6654
  cleanup: composerApplicationCleanup,
6600
6655
  sandboxedWindow
6601
- } = createComposerApplication(self2, subjects);
6656
+ } = createComposerApplication(self2, parentWindowRegistration, channels);
6602
6657
  registerCleanups(
6603
6658
  sandboxedWindow,
6604
6659
  [
6605
6660
  composerApplicationCleanup,
6606
6661
  listenerCleanup,
6607
- senderCleanup,
6608
- serviceWorkerChannelCleanup,
6609
- postChannelCleanup
6662
+ parentWindowSenderCleanup,
6663
+ serviceWorkerSenderCleanup,
6664
+ () => parentWindowRegistration.disconnect(),
6665
+ () => swRegistration.disconnect()
6610
6666
  ]
6611
6667
  );
6612
- })(window).catch((error2) => {
6613
- throw error2;
6668
+ })(window).catch((err) => {
6669
+ console.error(`[preview] Error Boundary: ${String(err)}`);
6670
+ throw err;
6614
6671
  });