@prismicio/simulator 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +98 -0
  3. package/dist/SimulatorAPI.cjs +50 -0
  4. package/dist/SimulatorAPI.cjs.map +1 -0
  5. package/dist/SimulatorAPI.d.ts +12 -0
  6. package/dist/SimulatorAPI.js +50 -0
  7. package/dist/SimulatorAPI.js.map +1 -0
  8. package/dist/SimulatorClient.cjs +54 -0
  9. package/dist/SimulatorClient.cjs.map +1 -0
  10. package/dist/SimulatorClient.d.ts +10 -0
  11. package/dist/SimulatorClient.js +54 -0
  12. package/dist/SimulatorClient.js.map +1 -0
  13. package/dist/channel/ChannelEmitter.cjs +146 -0
  14. package/dist/channel/ChannelEmitter.cjs.map +1 -0
  15. package/dist/channel/ChannelEmitter.d.ts +38 -0
  16. package/dist/channel/ChannelEmitter.js +146 -0
  17. package/dist/channel/ChannelEmitter.js.map +1 -0
  18. package/dist/channel/ChannelNetwork.cjs +112 -0
  19. package/dist/channel/ChannelNetwork.cjs.map +1 -0
  20. package/dist/channel/ChannelNetwork.d.ts +24 -0
  21. package/dist/channel/ChannelNetwork.js +112 -0
  22. package/dist/channel/ChannelNetwork.js.map +1 -0
  23. package/dist/channel/ChannelReceiver.cjs +95 -0
  24. package/dist/channel/ChannelReceiver.cjs.map +1 -0
  25. package/dist/channel/ChannelReceiver.d.ts +20 -0
  26. package/dist/channel/ChannelReceiver.js +95 -0
  27. package/dist/channel/ChannelReceiver.js.map +1 -0
  28. package/dist/channel/errors.cjs +54 -0
  29. package/dist/channel/errors.cjs.map +1 -0
  30. package/dist/channel/errors.d.ts +25 -0
  31. package/dist/channel/errors.js +54 -0
  32. package/dist/channel/errors.js.map +1 -0
  33. package/dist/channel/index.d.ts +10 -0
  34. package/dist/channel/messages.cjs +66 -0
  35. package/dist/channel/messages.cjs.map +1 -0
  36. package/dist/channel/messages.d.ts +10 -0
  37. package/dist/channel/messages.js +66 -0
  38. package/dist/channel/messages.js.map +1 -0
  39. package/dist/channel/types.cjs +11 -0
  40. package/dist/channel/types.cjs.map +1 -0
  41. package/dist/channel/types.d.ts +61 -0
  42. package/dist/channel/types.js +13 -0
  43. package/dist/channel/types.js.map +1 -0
  44. package/dist/index.cjs +33 -0
  45. package/dist/index.cjs.map +1 -0
  46. package/dist/index.d.ts +7 -0
  47. package/dist/index.js +27 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/kit/SimulatorManager.cjs +140 -0
  50. package/dist/kit/SimulatorManager.cjs.map +1 -0
  51. package/dist/kit/SimulatorManager.d.ts +15 -0
  52. package/dist/kit/SimulatorManager.js +140 -0
  53. package/dist/kit/SimulatorManager.js.map +1 -0
  54. package/dist/kit/State.cjs +82 -0
  55. package/dist/kit/State.cjs.map +1 -0
  56. package/dist/kit/State.d.ts +25 -0
  57. package/dist/kit/State.js +82 -0
  58. package/dist/kit/State.js.map +1 -0
  59. package/dist/kit/domHelpers.cjs +53 -0
  60. package/dist/kit/domHelpers.cjs.map +1 -0
  61. package/dist/kit/domHelpers.d.ts +9 -0
  62. package/dist/kit/domHelpers.js +53 -0
  63. package/dist/kit/domHelpers.js.map +1 -0
  64. package/dist/kit/eventHandlers.cjs +15 -0
  65. package/dist/kit/eventHandlers.cjs.map +1 -0
  66. package/dist/kit/eventHandlers.d.ts +4 -0
  67. package/dist/kit/eventHandlers.js +15 -0
  68. package/dist/kit/eventHandlers.js.map +1 -0
  69. package/dist/kit/getDefault.cjs +16 -0
  70. package/dist/kit/getDefault.cjs.map +1 -0
  71. package/dist/kit/getDefault.d.ts +8 -0
  72. package/dist/kit/getDefault.js +16 -0
  73. package/dist/kit/getDefault.js.map +1 -0
  74. package/dist/kit/index.cjs +26 -0
  75. package/dist/kit/index.cjs.map +1 -0
  76. package/dist/kit/index.d.ts +8 -0
  77. package/dist/kit/index.js +23 -0
  78. package/dist/kit/index.js.map +1 -0
  79. package/dist/kit/messages.cjs +29 -0
  80. package/dist/kit/messages.cjs.map +1 -0
  81. package/dist/kit/messages.d.ts +1 -0
  82. package/dist/kit/messages.js +29 -0
  83. package/dist/kit/messages.js.map +1 -0
  84. package/dist/kit/types.cjs +9 -0
  85. package/dist/kit/types.cjs.map +1 -0
  86. package/dist/kit/types.d.ts +23 -0
  87. package/dist/kit/types.js +10 -0
  88. package/dist/kit/types.js.map +1 -0
  89. package/dist/lib/EventEmitter.cjs +27 -0
  90. package/dist/lib/EventEmitter.cjs.map +1 -0
  91. package/dist/lib/EventEmitter.d.ts +10 -0
  92. package/dist/lib/EventEmitter.js +27 -0
  93. package/dist/lib/EventEmitter.js.map +1 -0
  94. package/dist/lib/__PRODUCTION__.d.ts +7 -0
  95. package/dist/lib/throttle.cjs +24 -0
  96. package/dist/lib/throttle.cjs.map +1 -0
  97. package/dist/lib/throttle.d.ts +1 -0
  98. package/dist/lib/throttle.js +24 -0
  99. package/dist/lib/throttle.js.map +1 -0
  100. package/dist/types.cjs +14 -0
  101. package/dist/types.cjs.map +1 -0
  102. package/dist/types.d.ts +34 -0
  103. package/dist/types.js +16 -0
  104. package/dist/types.js.map +1 -0
  105. package/package.json +99 -0
  106. package/src/SimulatorAPI.ts +90 -0
  107. package/src/SimulatorClient.ts +96 -0
  108. package/src/channel/ChannelEmitter.ts +278 -0
  109. package/src/channel/ChannelNetwork.ts +216 -0
  110. package/src/channel/ChannelReceiver.ts +184 -0
  111. package/src/channel/errors.ts +53 -0
  112. package/src/channel/index.ts +75 -0
  113. package/src/channel/messages.ts +115 -0
  114. package/src/channel/types.ts +138 -0
  115. package/src/index.ts +42 -0
  116. package/src/kit/SimulatorManager.ts +199 -0
  117. package/src/kit/State.ts +113 -0
  118. package/src/kit/domHelpers.ts +75 -0
  119. package/src/kit/eventHandlers.ts +16 -0
  120. package/src/kit/getDefault.ts +18 -0
  121. package/src/kit/index.ts +33 -0
  122. package/src/kit/messages.ts +25 -0
  123. package/src/kit/types.ts +30 -0
  124. package/src/lib/EventEmitter.ts +41 -0
  125. package/src/lib/__PRODUCTION__.ts +12 -0
  126. package/src/lib/throttle.ts +26 -0
  127. package/src/types.ts +57 -0
@@ -0,0 +1,82 @@
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
+ };
7
+ import { EventEmitter } from "../lib/EventEmitter.js";
8
+ import { throttle } from "../lib/throttle.js";
9
+ import { StateEventType } from "./types.js";
10
+ import { getSliceZoneDOM, getActiveSliceDOM } from "./domHelpers.js";
11
+ import { getDefaultSlices } from "./getDefault.js";
12
+ class State extends EventEmitter {
13
+ constructor(args) {
14
+ super();
15
+ __publicField(this, "_slices");
16
+ __publicField(this, "_activeSlice");
17
+ __publicField(this, "_message");
18
+ __publicField(this, "_mouse");
19
+ __publicField(this, "_setActiveSlice", () => {
20
+ if (this.slices.length === 0) {
21
+ this.activeSlice = null;
22
+ return;
23
+ }
24
+ const $sliceZone = getSliceZoneDOM(this.slices.length);
25
+ if (!$sliceZone) {
26
+ this.activeSlice = null;
27
+ return;
28
+ }
29
+ const $activeSlice = getActiveSliceDOM($sliceZone, this._mouse);
30
+ if (!$activeSlice) {
31
+ this.activeSlice = null;
32
+ return;
33
+ }
34
+ const activeSliceIndex = Array.prototype.indexOf.call($sliceZone.children, $activeSlice);
35
+ this.activeSlice = {
36
+ rect: $activeSlice.getBoundingClientRect(),
37
+ sliceID: this.slices[activeSliceIndex].slice_type,
38
+ variationID: this.slices[activeSliceIndex].variation,
39
+ index: activeSliceIndex
40
+ };
41
+ });
42
+ __publicField(this, "setActiveSlice", throttle(this._setActiveSlice, 16));
43
+ this._slices = (args == null ? void 0 : args.slices) || getDefaultSlices();
44
+ this._activeSlice = null;
45
+ this._message = "";
46
+ this._mouse = { x: 0, y: 0 };
47
+ }
48
+ set slices(slices) {
49
+ this._slices = slices;
50
+ this.message = "";
51
+ this.emit(StateEventType.Slices, slices);
52
+ }
53
+ get slices() {
54
+ return this._slices;
55
+ }
56
+ set activeSlice(activeSlice) {
57
+ this._activeSlice = activeSlice;
58
+ this.emit(StateEventType.ActiveSlice, activeSlice);
59
+ }
60
+ get activeSlice() {
61
+ return this._activeSlice;
62
+ }
63
+ set message(message) {
64
+ this._message = message;
65
+ this.emit(StateEventType.Message, message);
66
+ }
67
+ get message() {
68
+ return this._message;
69
+ }
70
+ async init() {
71
+ window.addEventListener("mousemove", (event) => {
72
+ this._mouse = { x: event.clientX, y: event.clientY };
73
+ });
74
+ }
75
+ setSliceZone(slices) {
76
+ this.slices = slices;
77
+ }
78
+ }
79
+ export {
80
+ State
81
+ };
82
+ //# sourceMappingURL=State.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.js","sources":["../../../src/kit/State.ts"],"sourcesContent":["import type { SharedSlice, SliceZone } from \"@prismicio/client\";\n\nimport { EventEmitter } from \"../lib/EventEmitter\";\nimport { __PRODUCTION__ } from \"../lib/__PRODUCTION__\";\nimport { throttle } from \"../lib/throttle\";\n\nimport type { ActiveSlice } from \"../types\";\nimport { StateEventType, StateEvents } from \"./types\";\n\nimport { getActiveSliceDOM, getSliceZoneDOM } from \"./domHelpers\";\nimport { getDefaultSlices } from \"./getDefault\";\n\ntype StateConstructorArgs = {\n\tslices?: SliceZone;\n};\n\nexport class State extends EventEmitter<StateEvents> {\n\tprivate _slices: SliceZone;\n\tpublic set slices(slices: SliceZone) {\n\t\tthis._slices = slices;\n\t\t// Clean up message\n\t\tthis.message = \"\";\n\t\t// Dispatch event\n\t\tthis.emit(StateEventType.Slices, slices);\n\t}\n\tpublic get slices(): SliceZone {\n\t\treturn this._slices;\n\t}\n\n\tprivate _activeSlice: ActiveSlice | null;\n\tpublic set activeSlice(activeSlice: ActiveSlice | null) {\n\t\tthis._activeSlice = activeSlice;\n\t\tthis.emit(StateEventType.ActiveSlice, activeSlice);\n\t}\n\tpublic get activeSlice(): ActiveSlice | null {\n\t\treturn this._activeSlice;\n\t}\n\n\tprivate _message: string;\n\tpublic set message(message: string) {\n\t\tthis._message = message;\n\t\tthis.emit(StateEventType.Message, message);\n\t}\n\tpublic get message(): string {\n\t\treturn this._message;\n\t}\n\n\tprivate _mouse: { x: number; y: number };\n\n\tconstructor(args?: StateConstructorArgs) {\n\t\tsuper();\n\n\t\tthis._slices = args?.slices || getDefaultSlices();\n\t\tthis._activeSlice = null;\n\t\tthis._message = \"\";\n\n\t\t// StateManager needs to keep track of mouse position for the active slice\n\t\tthis._mouse = { x: 0, y: 0 };\n\t}\n\n\tasync init(): Promise<void> {\n\t\t// Init listener\n\t\twindow.addEventListener(\"mousemove\", (event) => {\n\t\t\tthis._mouse = { x: event.clientX, y: event.clientY };\n\t\t});\n\t}\n\n\tprivate _setActiveSlice = (): void => {\n\t\t// There can't be an active slice if there's no slices displayed\n\t\tif (this.slices.length === 0) {\n\t\t\tthis.activeSlice = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst $sliceZone = getSliceZoneDOM(this.slices.length);\n\n\t\t// SliceZone has not been found, therefore active slice cannot be found\n\t\tif (!$sliceZone) {\n\t\t\tthis.activeSlice = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst $activeSlice = getActiveSliceDOM($sliceZone, this._mouse);\n\n\t\t// Active slice has not been found\n\t\tif (!$activeSlice) {\n\t\t\tthis.activeSlice = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeSliceIndex = Array.prototype.indexOf.call(\n\t\t\t$sliceZone.children,\n\t\t\t$activeSlice,\n\t\t);\n\n\t\t// Active slice has been found\n\t\tthis.activeSlice = {\n\t\t\trect: $activeSlice.getBoundingClientRect(),\n\t\t\tsliceID: this.slices[activeSliceIndex].slice_type,\n\t\t\tvariationID: (this.slices[activeSliceIndex] as SharedSlice).variation,\n\t\t\tindex: activeSliceIndex,\n\t\t};\n\t};\n\tsetActiveSlice = throttle(this._setActiveSlice, 16);\n\n\tsetSliceZone(slices: SliceZone): void {\n\t\t// Set slices\n\t\tthis.slices = slices;\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAgBM,MAAO,cAAc,aAAyB;AAAA,EAiCnD,YAAY,MAA2B;;AAhC/B;AAYA;AASA;AASA;AAoBA,2CAAkB,MAAW;AAEhC,UAAA,KAAK,OAAO,WAAW,GAAG;AAC7B,aAAK,cAAc;AAEnB;AAAA,MACA;AAED,YAAM,aAAa,gBAAgB,KAAK,OAAO,MAAM;AAGrD,UAAI,CAAC,YAAY;AAChB,aAAK,cAAc;AAEnB;AAAA,MACA;AAED,YAAM,eAAe,kBAAkB,YAAY,KAAK,MAAM;AAG9D,UAAI,CAAC,cAAc;AAClB,aAAK,cAAc;AAEnB;AAAA,MACA;AAED,YAAM,mBAAmB,MAAM,UAAU,QAAQ,KAChD,WAAW,UACX,YAAY;AAIb,WAAK,cAAc;AAAA,QAClB,MAAM,aAAa,sBAAuB;AAAA,QAC1C,SAAS,KAAK,OAAO,gBAAgB,EAAE;AAAA,QACvC,aAAc,KAAK,OAAO,gBAAgB,EAAkB;AAAA,QAC5D,OAAO;AAAA,MAAA;AAAA;AAGT,0CAAiB,SAAS,KAAK,iBAAiB,EAAE;AAtD5C,SAAA,WAAU,6BAAM,WAAU,iBAAgB;AAC/C,SAAK,eAAe;AACpB,SAAK,WAAW;AAGhB,SAAK,SAAS,EAAE,GAAG,GAAG,GAAG;EAC1B;AAAA,EAxCA,IAAW,OAAO,QAAiB;AAClC,SAAK,UAAU;AAEf,SAAK,UAAU;AAEV,SAAA,KAAK,eAAe,QAAQ,MAAM;AAAA,EACxC;AAAA,EACA,IAAW,SAAM;AAChB,WAAO,KAAK;AAAA,EACb;AAAA,EAGA,IAAW,YAAY,aAA+B;AACrD,SAAK,eAAe;AACf,SAAA,KAAK,eAAe,aAAa,WAAW;AAAA,EAClD;AAAA,EACA,IAAW,cAAW;AACrB,WAAO,KAAK;AAAA,EACb;AAAA,EAGA,IAAW,QAAQ,SAAe;AACjC,SAAK,WAAW;AACX,SAAA,KAAK,eAAe,SAAS,OAAO;AAAA,EAC1C;AAAA,EACA,IAAW,UAAO;AACjB,WAAO,KAAK;AAAA,EACb;AAAA,EAeA,MAAM,OAAI;AAEF,WAAA,iBAAiB,aAAa,CAAC,UAAS;AAC9C,WAAK,SAAS,EAAE,GAAG,MAAM,SAAS,GAAG,MAAM;KAC3C;AAAA,EACF;AAAA,EA2CA,aAAa,QAAiB;AAE7B,SAAK,SAAS;AAAA,EACf;AACA;"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const simulatorClass = "slice-simulator";
4
+ const simulatorRootClass = "slice-simulator--root";
5
+ const getSimulatorDOM = () => {
6
+ return document.querySelector(`.${simulatorClass}`);
7
+ };
8
+ const getSimulatorRootDOM = () => {
9
+ return document.querySelector(`.${simulatorRootClass}`);
10
+ };
11
+ const getSliceZoneDOM = (expectedNumberOfChildren) => {
12
+ let node = document.querySelector(`.${simulatorClass} [data-slice-zone]`);
13
+ if (node) {
14
+ if (node.children.length !== expectedNumberOfChildren) {
15
+ console.warn(`Flagged SliceZone has an unexpected number of children, found ${node.children.length} but expected ${expectedNumberOfChildren}. This might lead to unexpected behaviors. Are you sure you tagged the right element?`);
16
+ }
17
+ return node;
18
+ }
19
+ node = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`);
20
+ if (!node) {
21
+ return null;
22
+ }
23
+ const searchDepth = 5;
24
+ for (let i = 0; i < searchDepth; i++) {
25
+ if (node.children.length === expectedNumberOfChildren) {
26
+ return node;
27
+ } else if (node.children.length) {
28
+ node = node.children[0];
29
+ } else {
30
+ break;
31
+ }
32
+ }
33
+ return null;
34
+ };
35
+ const getActiveSliceDOM = ($sliceZone, mouse) => {
36
+ const raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse();
37
+ const sliceZoneIndex = raycast.indexOf($sliceZone);
38
+ if (sliceZoneIndex === -1) {
39
+ return null;
40
+ }
41
+ const $slice = raycast[sliceZoneIndex + 1];
42
+ if (!$slice) {
43
+ return null;
44
+ }
45
+ return $slice;
46
+ };
47
+ exports.getActiveSliceDOM = getActiveSliceDOM;
48
+ exports.getSimulatorDOM = getSimulatorDOM;
49
+ exports.getSimulatorRootDOM = getSimulatorRootDOM;
50
+ exports.getSliceZoneDOM = getSliceZoneDOM;
51
+ exports.simulatorClass = simulatorClass;
52
+ exports.simulatorRootClass = simulatorRootClass;
53
+ //# sourceMappingURL=domHelpers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domHelpers.cjs","sources":["../../../src/kit/domHelpers.ts"],"sourcesContent":["export const simulatorClass = \"slice-simulator\";\nexport const simulatorRootClass = \"slice-simulator--root\";\n\nexport const getSimulatorDOM = (): Element | null => {\n\treturn document.querySelector(`.${simulatorClass}`);\n};\n\nexport const getSimulatorRootDOM = (): Element | null => {\n\treturn document.querySelector(`.${simulatorRootClass}`);\n};\n\nexport const getSliceZoneDOM = (\n\texpectedNumberOfChildren: number,\n): Element | null => {\n\t// If SliceZone has been tagged (#5)\n\tlet node = document.querySelector(`.${simulatorClass} [data-slice-zone]`);\n\tif (node) {\n\t\tif (node.children.length !== expectedNumberOfChildren) {\n\t\t\tconsole.warn(\n\t\t\t\t`Flagged SliceZone has an unexpected number of children, found ${node.children.length} but expected ${expectedNumberOfChildren}. This might lead to unexpected behaviors. Are you sure you tagged the right element?`,\n\t\t\t);\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t// Start searching\n\tnode = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`);\n\n\tif (!node) {\n\t\treturn null;\n\t}\n\n\tconst searchDepth = 5;\n\tfor (let i = 0; i < searchDepth; i++) {\n\t\tif (node.children.length === expectedNumberOfChildren) {\n\t\t\t// Return the first node that matches the expected number of children\n\t\t\treturn node;\n\t\t} else if (node.children.length) {\n\t\t\t// Continue searching if current node has children\n\t\t\tnode = node.children[0];\n\t\t} else {\n\t\t\t// Stop searching if current node has no children\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Failed to find SliceZone\n\treturn null;\n};\n\nexport const getActiveSliceDOM = (\n\t$sliceZone: Element,\n\tmouse: { x: number; y: number },\n): Element | null => {\n\t// Raycast cursor position on DOM\n\tconst raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse();\n\n\t// Find SliceZone in raycast\n\tconst sliceZoneIndex = raycast.indexOf($sliceZone);\n\n\t// SliceZone is not part of raycast\n\tif (sliceZoneIndex === -1) {\n\t\treturn null;\n\t}\n\n\tconst $slice = raycast[sliceZoneIndex + 1];\n\n\t// Slice is not part of raycast\n\tif (!$slice) {\n\t\treturn null;\n\t}\n\n\treturn $slice;\n};\n"],"names":[],"mappings":";;AAAO,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAE3B,MAAM,kBAAkB,MAAqB;AAC5C,SAAA,SAAS,cAAc,IAAI,gBAAgB;AACnD;AAEO,MAAM,sBAAsB,MAAqB;AAChD,SAAA,SAAS,cAAc,IAAI,oBAAoB;AACvD;AAEa,MAAA,kBAAkB,CAC9B,6BACmB;AAEnB,MAAI,OAAO,SAAS,cAAc,IAAI,kCAAkC;AACxE,MAAI,MAAM;AACL,QAAA,KAAK,SAAS,WAAW,0BAA0B;AACtD,cAAQ,KACP,iEAAiE,KAAK,SAAS,uBAAuB,+GAA+G;AAAA,IAEtN;AAEM,WAAA;AAAA,EACP;AAGD,SAAO,SAAS,cAAc,IAAI,mBAAmB,oBAAoB;AAEzE,MAAI,CAAC,MAAM;AACH,WAAA;AAAA,EACP;AAED,QAAM,cAAc;AACpB,WAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AACjC,QAAA,KAAK,SAAS,WAAW,0BAA0B;AAE/C,aAAA;AAAA,IAAA,WACG,KAAK,SAAS,QAAQ;AAEzB,aAAA,KAAK,SAAS,CAAC;AAAA,IAAA,OAChB;AAEN;AAAA,IACA;AAAA,EACD;AAGM,SAAA;AACR;AAEa,MAAA,oBAAoB,CAChC,YACA,UACmB;AAEb,QAAA,UAAU,SAAS,kBAAkB,MAAM,GAAG,MAAM,CAAC,EAAE;AAGvD,QAAA,iBAAiB,QAAQ,QAAQ,UAAU;AAGjD,MAAI,mBAAmB,IAAI;AACnB,WAAA;AAAA,EACP;AAEK,QAAA,SAAS,QAAQ,iBAAiB,CAAC;AAGzC,MAAI,CAAC,QAAQ;AACL,WAAA;AAAA,EACP;AAEM,SAAA;AACR;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ export declare const simulatorClass = "slice-simulator";
2
+ export declare const simulatorRootClass = "slice-simulator--root";
3
+ export declare const getSimulatorDOM: () => Element | null;
4
+ export declare const getSimulatorRootDOM: () => Element | null;
5
+ export declare const getSliceZoneDOM: (expectedNumberOfChildren: number) => Element | null;
6
+ export declare const getActiveSliceDOM: ($sliceZone: Element, mouse: {
7
+ x: number;
8
+ y: number;
9
+ }) => Element | null;
@@ -0,0 +1,53 @@
1
+ const simulatorClass = "slice-simulator";
2
+ const simulatorRootClass = "slice-simulator--root";
3
+ const getSimulatorDOM = () => {
4
+ return document.querySelector(`.${simulatorClass}`);
5
+ };
6
+ const getSimulatorRootDOM = () => {
7
+ return document.querySelector(`.${simulatorRootClass}`);
8
+ };
9
+ const getSliceZoneDOM = (expectedNumberOfChildren) => {
10
+ let node = document.querySelector(`.${simulatorClass} [data-slice-zone]`);
11
+ if (node) {
12
+ if (node.children.length !== expectedNumberOfChildren) {
13
+ console.warn(`Flagged SliceZone has an unexpected number of children, found ${node.children.length} but expected ${expectedNumberOfChildren}. This might lead to unexpected behaviors. Are you sure you tagged the right element?`);
14
+ }
15
+ return node;
16
+ }
17
+ node = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`);
18
+ if (!node) {
19
+ return null;
20
+ }
21
+ const searchDepth = 5;
22
+ for (let i = 0; i < searchDepth; i++) {
23
+ if (node.children.length === expectedNumberOfChildren) {
24
+ return node;
25
+ } else if (node.children.length) {
26
+ node = node.children[0];
27
+ } else {
28
+ break;
29
+ }
30
+ }
31
+ return null;
32
+ };
33
+ const getActiveSliceDOM = ($sliceZone, mouse) => {
34
+ const raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse();
35
+ const sliceZoneIndex = raycast.indexOf($sliceZone);
36
+ if (sliceZoneIndex === -1) {
37
+ return null;
38
+ }
39
+ const $slice = raycast[sliceZoneIndex + 1];
40
+ if (!$slice) {
41
+ return null;
42
+ }
43
+ return $slice;
44
+ };
45
+ export {
46
+ getActiveSliceDOM,
47
+ getSimulatorDOM,
48
+ getSimulatorRootDOM,
49
+ getSliceZoneDOM,
50
+ simulatorClass,
51
+ simulatorRootClass
52
+ };
53
+ //# sourceMappingURL=domHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domHelpers.js","sources":["../../../src/kit/domHelpers.ts"],"sourcesContent":["export const simulatorClass = \"slice-simulator\";\nexport const simulatorRootClass = \"slice-simulator--root\";\n\nexport const getSimulatorDOM = (): Element | null => {\n\treturn document.querySelector(`.${simulatorClass}`);\n};\n\nexport const getSimulatorRootDOM = (): Element | null => {\n\treturn document.querySelector(`.${simulatorRootClass}`);\n};\n\nexport const getSliceZoneDOM = (\n\texpectedNumberOfChildren: number,\n): Element | null => {\n\t// If SliceZone has been tagged (#5)\n\tlet node = document.querySelector(`.${simulatorClass} [data-slice-zone]`);\n\tif (node) {\n\t\tif (node.children.length !== expectedNumberOfChildren) {\n\t\t\tconsole.warn(\n\t\t\t\t`Flagged SliceZone has an unexpected number of children, found ${node.children.length} but expected ${expectedNumberOfChildren}. This might lead to unexpected behaviors. Are you sure you tagged the right element?`,\n\t\t\t);\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t// Start searching\n\tnode = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`);\n\n\tif (!node) {\n\t\treturn null;\n\t}\n\n\tconst searchDepth = 5;\n\tfor (let i = 0; i < searchDepth; i++) {\n\t\tif (node.children.length === expectedNumberOfChildren) {\n\t\t\t// Return the first node that matches the expected number of children\n\t\t\treturn node;\n\t\t} else if (node.children.length) {\n\t\t\t// Continue searching if current node has children\n\t\t\tnode = node.children[0];\n\t\t} else {\n\t\t\t// Stop searching if current node has no children\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Failed to find SliceZone\n\treturn null;\n};\n\nexport const getActiveSliceDOM = (\n\t$sliceZone: Element,\n\tmouse: { x: number; y: number },\n): Element | null => {\n\t// Raycast cursor position on DOM\n\tconst raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse();\n\n\t// Find SliceZone in raycast\n\tconst sliceZoneIndex = raycast.indexOf($sliceZone);\n\n\t// SliceZone is not part of raycast\n\tif (sliceZoneIndex === -1) {\n\t\treturn null;\n\t}\n\n\tconst $slice = raycast[sliceZoneIndex + 1];\n\n\t// Slice is not part of raycast\n\tif (!$slice) {\n\t\treturn null;\n\t}\n\n\treturn $slice;\n};\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAE3B,MAAM,kBAAkB,MAAqB;AAC5C,SAAA,SAAS,cAAc,IAAI,gBAAgB;AACnD;AAEO,MAAM,sBAAsB,MAAqB;AAChD,SAAA,SAAS,cAAc,IAAI,oBAAoB;AACvD;AAEa,MAAA,kBAAkB,CAC9B,6BACmB;AAEnB,MAAI,OAAO,SAAS,cAAc,IAAI,kCAAkC;AACxE,MAAI,MAAM;AACL,QAAA,KAAK,SAAS,WAAW,0BAA0B;AACtD,cAAQ,KACP,iEAAiE,KAAK,SAAS,uBAAuB,+GAA+G;AAAA,IAEtN;AAEM,WAAA;AAAA,EACP;AAGD,SAAO,SAAS,cAAc,IAAI,mBAAmB,oBAAoB;AAEzE,MAAI,CAAC,MAAM;AACH,WAAA;AAAA,EACP;AAED,QAAM,cAAc;AACpB,WAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AACjC,QAAA,KAAK,SAAS,WAAW,0BAA0B;AAE/C,aAAA;AAAA,IAAA,WACG,KAAK,SAAS,QAAQ;AAEzB,aAAA,KAAK,SAAS,CAAC;AAAA,IAAA,OAChB;AAEN;AAAA,IACA;AAAA,EACD;AAGM,SAAA;AACR;AAEa,MAAA,oBAAoB,CAChC,YACA,UACmB;AAEb,QAAA,UAAU,SAAS,kBAAkB,MAAM,GAAG,MAAM,CAAC,EAAE;AAGvD,QAAA,iBAAiB,QAAQ,QAAQ,UAAU;AAGjD,MAAI,mBAAmB,IAAI;AACnB,WAAA;AAAA,EACP;AAEK,QAAA,SAAS,QAAQ,iBAAiB,CAAC;AAGzC,MAAI,CAAC,QAAQ;AACL,WAAA;AAAA,EACP;AAEM,SAAA;AACR;"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const disableEventHandler = (event) => {
4
+ event.preventDefault();
5
+ event.stopPropagation();
6
+ };
7
+ const onClickHandler = (event) => {
8
+ if (event.path && event.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)) {
9
+ event.preventDefault();
10
+ event.stopPropagation();
11
+ }
12
+ };
13
+ exports.disableEventHandler = disableEventHandler;
14
+ exports.onClickHandler = onClickHandler;
15
+ //# sourceMappingURL=eventHandlers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventHandlers.cjs","sources":["../../../src/kit/eventHandlers.ts"],"sourcesContent":["export const disableEventHandler = (event: Event): void => {\n\tevent.preventDefault();\n\tevent.stopPropagation();\n};\n\nexport const onClickHandler = (\n\tevent: MouseEvent & { path?: HTMLElement[] },\n): void => {\n\tif (\n\t\tevent.path &&\n\t\tevent.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)\n\t) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n};\n"],"names":[],"mappings":";;AAAa,MAAA,sBAAsB,CAAC,UAAsB;AACzD,QAAM,eAAc;AACpB,QAAM,gBAAe;AACtB;AAEa,MAAA,iBAAiB,CAC7B,UACS;AACT,MACC,MAAM,QACN,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,cAAc,iBAAiB,GAClE;AACD,UAAM,eAAc;AACpB,UAAM,gBAAe;AAAA,EACrB;AACF;;;"}
@@ -0,0 +1,4 @@
1
+ export declare const disableEventHandler: (event: Event) => void;
2
+ export declare const onClickHandler: (event: MouseEvent & {
3
+ path?: HTMLElement[];
4
+ }) => void;
@@ -0,0 +1,15 @@
1
+ const disableEventHandler = (event) => {
2
+ event.preventDefault();
3
+ event.stopPropagation();
4
+ };
5
+ const onClickHandler = (event) => {
6
+ if (event.path && event.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)) {
7
+ event.preventDefault();
8
+ event.stopPropagation();
9
+ }
10
+ };
11
+ export {
12
+ disableEventHandler,
13
+ onClickHandler
14
+ };
15
+ //# sourceMappingURL=eventHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventHandlers.js","sources":["../../../src/kit/eventHandlers.ts"],"sourcesContent":["export const disableEventHandler = (event: Event): void => {\n\tevent.preventDefault();\n\tevent.stopPropagation();\n};\n\nexport const onClickHandler = (\n\tevent: MouseEvent & { path?: HTMLElement[] },\n): void => {\n\tif (\n\t\tevent.path &&\n\t\tevent.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)\n\t) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n};\n"],"names":[],"mappings":"AAAa,MAAA,sBAAsB,CAAC,UAAsB;AACzD,QAAM,eAAc;AACpB,QAAM,gBAAe;AACtB;AAEa,MAAA,iBAAiB,CAC7B,UACS;AACT,MACC,MAAM,QACN,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,cAAc,iBAAiB,GAClE;AACD,UAAM,eAAc;AACpB,UAAM,gBAAe;AAAA,EACrB;AACF;"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getDefaultProps = () => ({
4
+ zIndex: 100,
5
+ background: "#ffffff"
6
+ });
7
+ const getDefaultSlices = () => {
8
+ return [];
9
+ };
10
+ const getDefaultMessage = () => {
11
+ return "";
12
+ };
13
+ exports.getDefaultMessage = getDefaultMessage;
14
+ exports.getDefaultProps = getDefaultProps;
15
+ exports.getDefaultSlices = getDefaultSlices;
16
+ //# sourceMappingURL=getDefault.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDefault.cjs","sources":["../../../src/kit/getDefault.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport { SliceSimulatorProps } from \"./types\";\n\nexport const getDefaultProps = (): Required<{\n\t[K in keyof SliceSimulatorProps]: NonNullable<SliceSimulatorProps[K]>;\n}> => ({\n\tzIndex: 100,\n\tbackground: \"#ffffff\",\n});\n\nexport const getDefaultSlices = (): SliceZone => {\n\treturn [];\n};\n\nexport const getDefaultMessage = (): string => {\n\treturn \"\";\n};\n"],"names":[],"mappings":";;AAIO,MAAM,kBAAkB,OAExB;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AACZ;AAEM,MAAM,mBAAmB,MAAgB;AAC/C,SAAO;AACR;AAEO,MAAM,oBAAoB,MAAa;AACtC,SAAA;AACR;;;;"}
@@ -0,0 +1,8 @@
1
+ import type { SliceZone } from "@prismicio/client";
2
+ import { SliceSimulatorProps } from "./types";
3
+ export declare const getDefaultProps: () => Required<{
4
+ zIndex?: number | undefined;
5
+ background?: string | undefined;
6
+ }>;
7
+ export declare const getDefaultSlices: () => SliceZone;
8
+ export declare const getDefaultMessage: () => string;
@@ -0,0 +1,16 @@
1
+ const getDefaultProps = () => ({
2
+ zIndex: 100,
3
+ background: "#ffffff"
4
+ });
5
+ const getDefaultSlices = () => {
6
+ return [];
7
+ };
8
+ const getDefaultMessage = () => {
9
+ return "";
10
+ };
11
+ export {
12
+ getDefaultMessage,
13
+ getDefaultProps,
14
+ getDefaultSlices
15
+ };
16
+ //# sourceMappingURL=getDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDefault.js","sources":["../../../src/kit/getDefault.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport { SliceSimulatorProps } from \"./types\";\n\nexport const getDefaultProps = (): Required<{\n\t[K in keyof SliceSimulatorProps]: NonNullable<SliceSimulatorProps[K]>;\n}> => ({\n\tzIndex: 100,\n\tbackground: \"#ffffff\",\n});\n\nexport const getDefaultSlices = (): SliceZone => {\n\treturn [];\n};\n\nexport const getDefaultMessage = (): string => {\n\treturn \"\";\n};\n"],"names":[],"mappings":"AAIO,MAAM,kBAAkB,OAExB;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AACZ;AAEM,MAAM,mBAAmB,MAAgB;AAC/C,SAAO;AACR;AAEO,MAAM,oBAAoB,MAAa;AACtC,SAAA;AACR;"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const SimulatorManager = require("./SimulatorManager.cjs");
4
+ const State = require("./State.cjs");
5
+ const getDefault = require("./getDefault.cjs");
6
+ const domHelpers = require("./domHelpers.cjs");
7
+ const eventHandlers = require("./eventHandlers.cjs");
8
+ const messages = require("./messages.cjs");
9
+ const types = require("./types.cjs");
10
+ exports.SimulatorManager = SimulatorManager.SimulatorManager;
11
+ exports.State = State.State;
12
+ exports.getDefaultMessage = getDefault.getDefaultMessage;
13
+ exports.getDefaultProps = getDefault.getDefaultProps;
14
+ exports.getDefaultSlices = getDefault.getDefaultSlices;
15
+ exports.getActiveSliceDOM = domHelpers.getActiveSliceDOM;
16
+ exports.getSliceZoneDOM = domHelpers.getSliceZoneDOM;
17
+ exports.simulatorClass = domHelpers.simulatorClass;
18
+ exports.simulatorRootClass = domHelpers.simulatorRootClass;
19
+ exports.disableEventHandler = eventHandlers.disableEventHandler;
20
+ exports.onClickHandler = eventHandlers.onClickHandler;
21
+ exports.sliceSimulatorAccessedDirectly = messages.sliceSimulatorAccessedDirectly;
22
+ Object.defineProperty(exports, "StateEventType", {
23
+ enumerable: true,
24
+ get: () => types.StateEventType
25
+ });
26
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ export { SimulatorManager } from "./SimulatorManager";
2
+ export { State } from "./State";
3
+ export { getDefaultProps, getDefaultSlices, getDefaultMessage, } from "./getDefault";
4
+ export { simulatorClass, simulatorRootClass, getSliceZoneDOM, getActiveSliceDOM, } from "./domHelpers";
5
+ export { disableEventHandler, onClickHandler } from "./eventHandlers";
6
+ export { sliceSimulatorAccessedDirectly } from "./messages";
7
+ export { StateEventType } from "./types";
8
+ export type { StateEvents, SliceSimulatorProps, SliceSimulatorState, SliceSimulatorOptions, } from "./types";
@@ -0,0 +1,23 @@
1
+ import { SimulatorManager } from "./SimulatorManager.js";
2
+ import { State } from "./State.js";
3
+ import { getDefaultMessage, getDefaultProps, getDefaultSlices } from "./getDefault.js";
4
+ import { getActiveSliceDOM, getSliceZoneDOM, simulatorClass, simulatorRootClass } from "./domHelpers.js";
5
+ import { disableEventHandler, onClickHandler } from "./eventHandlers.js";
6
+ import { sliceSimulatorAccessedDirectly } from "./messages.js";
7
+ import { StateEventType } from "./types.js";
8
+ export {
9
+ SimulatorManager,
10
+ State,
11
+ StateEventType,
12
+ disableEventHandler,
13
+ getActiveSliceDOM,
14
+ getDefaultMessage,
15
+ getDefaultProps,
16
+ getDefaultSlices,
17
+ getSliceZoneDOM,
18
+ onClickHandler,
19
+ simulatorClass,
20
+ simulatorRootClass,
21
+ sliceSimulatorAccessedDirectly
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const div = (content) => `<div style="word-spacing: initial; white-space: pre; line-height: initial; font-family: monospace; color: #ffffff; mix-blend-mode: difference; padding: 1rem; font-size: 1rem;">${content}</div>`;
4
+ const a = (href, label) => `<a href="${href}" style="text-decoration: underline;">${label || href}<a>`;
5
+ const header = " _____ ___ _____ _ __ __ \n / ___// (_)_______ / ___/(_)___ ___ __ __/ /___ _/ /_____ _____\n \\__ \\/ / / ___/ _ \\\\__ \\/ / __ `__ \\/ / / / / __ `/ __/ __ \\/ ___/\n ___/ / / / /__/ __/__/ / / / / / / / /_/ / / /_/ / /_/ /_/ / / \n/____/_/_/\\___/\\___/____/_/_/ /_/ /_/\\__,_/_/\\__,_/\\__/\\____/_/ \n / /_ __ __ / __ \\_____(_)________ ___ (_)____\n / __ \\/ / / / / /_/ / ___/ / ___/ __ `__ \\/ / ___/\n / /_/ / /_/ / / ____/ / / (__ ) / / / / / / /__ \n /_.___/\\__, / /_/ /_/ /_/____/_/ /_/ /_/_/\\___/ \n /____/\n\n";
6
+ const footer = "\n\n\n\n\n\n - The Prismic team";
7
+ const sliceSimulatorAccessedDirectly = div([
8
+ header,
9
+ `You're seeing this page because you're accessing Slice Simulator
10
+ directly, e.g:
11
+
12
+ - ${a("http://localhost:3000/slice-simulator")}
13
+
14
+
15
+
16
+ Slice Simulator is not meant to be accessed this way, to preview your
17
+ slices, head over to Slice Machine UI:
18
+
19
+ - ${a("http://localhost:9999")}
20
+
21
+
22
+
23
+ If you believe this is an error, please reach out to us:
24
+
25
+ - ${a("https://github.com/prismicio/slice-machine/issues/new/choose")}`,
26
+ footer
27
+ ].join(""));
28
+ exports.sliceSimulatorAccessedDirectly = sliceSimulatorAccessedDirectly;
29
+ //# sourceMappingURL=messages.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.cjs","sources":["../../../src/kit/messages.ts"],"sourcesContent":["const div = (content: string) =>\n\t`<div style=\"word-spacing: initial; white-space: pre; line-height: initial; font-family: monospace; color: #ffffff; mix-blend-mode: difference; padding: 1rem; font-size: 1rem;\">${content}</div>`;\n\nconst a = (href: string, label?: string) =>\n\t`<a href=\"${href}\" style=\"text-decoration: underline;\">${label || href}<a>`;\n\nconst header =\n\t\" _____ ___ _____ _ __ __ \\n / ___// (_)_______ / ___/(_)___ ___ __ __/ /___ _/ /_____ _____\\n \\\\__ \\\\/ / / ___/ _ \\\\\\\\__ \\\\/ / __ `__ \\\\/ / / / / __ `/ __/ __ \\\\/ ___/\\n ___/ / / / /__/ __/__/ / / / / / / / /_/ / / /_/ / /_/ /_/ / / \\n/____/_/_/\\\\___/\\\\___/____/_/_/ /_/ /_/\\\\__,_/_/\\\\__,_/\\\\__/\\\\____/_/ \\n / /_ __ __ / __ \\\\_____(_)________ ___ (_)____\\n / __ \\\\/ / / / / /_/ / ___/ / ___/ __ `__ \\\\/ / ___/\\n / /_/ / /_/ / / ____/ / / (__ ) / / / / / / /__ \\n /_.___/\\\\__, / /_/ /_/ /_/____/_/ /_/ /_/_/\\\\___/ \\n /____/\\n\\n\";\n\nconst footer =\n\t\"\\n\\n\\n\\n\\n\\n - The Prismic team\";\n\nexport const sliceSimulatorAccessedDirectly = div(\n\t[\n\t\theader,\n\t\t`You're seeing this page because you're accessing Slice Simulator\\ndirectly, e.g:\\n\\n - ${a(\n\t\t\t\"http://localhost:3000/slice-simulator\",\n\t\t)}\\n\\n\\n\\nSlice Simulator is not meant to be accessed this way, to preview your\\nslices, head over to Slice Machine UI:\\n\\n - ${a(\n\t\t\t\"http://localhost:9999\",\n\t\t)}\\n\\n\\n\\nIf you believe this is an error, please reach out to us:\\n\\n - ${a(\n\t\t\t\"https://github.com/prismicio/slice-machine/issues/new/choose\",\n\t\t)}`,\n\t\tfooter,\n\t].join(\"\"),\n);\n"],"names":[],"mappings":";;AAAA,MAAM,MAAM,CAAC,YACZ,mLAAmL;AAEpL,MAAM,IAAI,CAAC,MAAc,UACxB,YAAY,6CAA6C,SAAS;AAEnE,MAAM,SACL;AAED,MAAM,SACL;AAEM,MAAM,iCAAiC,IAC7C;AAAA,EACC;AAAA,EACA;AAAA;AAAA;AAAA,MAA2F,EAC1F,uCAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACyF,EAChI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACoD,EAC3E,8DAA8D;AAAA,EAE/D;AACA,EAAC,KAAK,EAAE,CAAC;;"}
@@ -0,0 +1 @@
1
+ export declare const sliceSimulatorAccessedDirectly: string;
@@ -0,0 +1,29 @@
1
+ const div = (content) => `<div style="word-spacing: initial; white-space: pre; line-height: initial; font-family: monospace; color: #ffffff; mix-blend-mode: difference; padding: 1rem; font-size: 1rem;">${content}</div>`;
2
+ const a = (href, label) => `<a href="${href}" style="text-decoration: underline;">${label || href}<a>`;
3
+ const header = " _____ ___ _____ _ __ __ \n / ___// (_)_______ / ___/(_)___ ___ __ __/ /___ _/ /_____ _____\n \\__ \\/ / / ___/ _ \\\\__ \\/ / __ `__ \\/ / / / / __ `/ __/ __ \\/ ___/\n ___/ / / / /__/ __/__/ / / / / / / / /_/ / / /_/ / /_/ /_/ / / \n/____/_/_/\\___/\\___/____/_/_/ /_/ /_/\\__,_/_/\\__,_/\\__/\\____/_/ \n / /_ __ __ / __ \\_____(_)________ ___ (_)____\n / __ \\/ / / / / /_/ / ___/ / ___/ __ `__ \\/ / ___/\n / /_/ / /_/ / / ____/ / / (__ ) / / / / / / /__ \n /_.___/\\__, / /_/ /_/ /_/____/_/ /_/ /_/_/\\___/ \n /____/\n\n";
4
+ const footer = "\n\n\n\n\n\n - The Prismic team";
5
+ const sliceSimulatorAccessedDirectly = div([
6
+ header,
7
+ `You're seeing this page because you're accessing Slice Simulator
8
+ directly, e.g:
9
+
10
+ - ${a("http://localhost:3000/slice-simulator")}
11
+
12
+
13
+
14
+ Slice Simulator is not meant to be accessed this way, to preview your
15
+ slices, head over to Slice Machine UI:
16
+
17
+ - ${a("http://localhost:9999")}
18
+
19
+
20
+
21
+ If you believe this is an error, please reach out to us:
22
+
23
+ - ${a("https://github.com/prismicio/slice-machine/issues/new/choose")}`,
24
+ footer
25
+ ].join(""));
26
+ export {
27
+ sliceSimulatorAccessedDirectly
28
+ };
29
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sources":["../../../src/kit/messages.ts"],"sourcesContent":["const div = (content: string) =>\n\t`<div style=\"word-spacing: initial; white-space: pre; line-height: initial; font-family: monospace; color: #ffffff; mix-blend-mode: difference; padding: 1rem; font-size: 1rem;\">${content}</div>`;\n\nconst a = (href: string, label?: string) =>\n\t`<a href=\"${href}\" style=\"text-decoration: underline;\">${label || href}<a>`;\n\nconst header =\n\t\" _____ ___ _____ _ __ __ \\n / ___// (_)_______ / ___/(_)___ ___ __ __/ /___ _/ /_____ _____\\n \\\\__ \\\\/ / / ___/ _ \\\\\\\\__ \\\\/ / __ `__ \\\\/ / / / / __ `/ __/ __ \\\\/ ___/\\n ___/ / / / /__/ __/__/ / / / / / / / /_/ / / /_/ / /_/ /_/ / / \\n/____/_/_/\\\\___/\\\\___/____/_/_/ /_/ /_/\\\\__,_/_/\\\\__,_/\\\\__/\\\\____/_/ \\n / /_ __ __ / __ \\\\_____(_)________ ___ (_)____\\n / __ \\\\/ / / / / /_/ / ___/ / ___/ __ `__ \\\\/ / ___/\\n / /_/ / /_/ / / ____/ / / (__ ) / / / / / / /__ \\n /_.___/\\\\__, / /_/ /_/ /_/____/_/ /_/ /_/_/\\\\___/ \\n /____/\\n\\n\";\n\nconst footer =\n\t\"\\n\\n\\n\\n\\n\\n - The Prismic team\";\n\nexport const sliceSimulatorAccessedDirectly = div(\n\t[\n\t\theader,\n\t\t`You're seeing this page because you're accessing Slice Simulator\\ndirectly, e.g:\\n\\n - ${a(\n\t\t\t\"http://localhost:3000/slice-simulator\",\n\t\t)}\\n\\n\\n\\nSlice Simulator is not meant to be accessed this way, to preview your\\nslices, head over to Slice Machine UI:\\n\\n - ${a(\n\t\t\t\"http://localhost:9999\",\n\t\t)}\\n\\n\\n\\nIf you believe this is an error, please reach out to us:\\n\\n - ${a(\n\t\t\t\"https://github.com/prismicio/slice-machine/issues/new/choose\",\n\t\t)}`,\n\t\tfooter,\n\t].join(\"\"),\n);\n"],"names":[],"mappings":"AAAA,MAAM,MAAM,CAAC,YACZ,mLAAmL;AAEpL,MAAM,IAAI,CAAC,MAAc,UACxB,YAAY,6CAA6C,SAAS;AAEnE,MAAM,SACL;AAED,MAAM,SACL;AAEM,MAAM,iCAAiC,IAC7C;AAAA,EACC;AAAA,EACA;AAAA;AAAA;AAAA,MAA2F,EAC1F,uCAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACyF,EAChI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACoD,EAC3E,8DAA8D;AAAA,EAE/D;AACA,EAAC,KAAK,EAAE,CAAC;"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ exports.StateEventType = void 0;
4
+ (function(StateEventType2) {
5
+ StateEventType2["Slices"] = "slices";
6
+ StateEventType2["ActiveSlice"] = "activeSlice";
7
+ StateEventType2["Message"] = "message";
8
+ })(exports.StateEventType || (exports.StateEventType = {}));
9
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sources":["../../../src/kit/types.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport type { ActiveSlice } from \"../types\";\n\nimport type { SimulatorManager } from \"./SimulatorManager\";\n\nexport enum StateEventType {\n\tSlices = \"slices\",\n\tActiveSlice = \"activeSlice\",\n\tMessage = \"message\",\n}\n\nexport type StateEvents = {\n\t[StateEventType.Slices]: SliceZone;\n\t[StateEventType.ActiveSlice]: ActiveSlice | null;\n\t[StateEventType.Message]: string;\n};\n\nexport interface SliceSimulatorProps {\n\tzIndex?: number;\n\tbackground?: string;\n}\n\nexport interface SliceSimulatorState {\n\tmanager: SimulatorManager;\n\tslices: SliceZone;\n\tmessage: string;\n}\n\nexport type SliceSimulatorOptions = SliceSimulatorProps & SliceSimulatorState;\n"],"names":["StateEventType"],"mappings":";;AAMYA,QAAA,iBAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,QAAA,IAAA;AACAA,kBAAA,aAAA,IAAA;AACAA,kBAAA,SAAA,IAAA;AACD,GAJYA,QAAA,mBAAAA,yBAIX,CAAA,EAAA;"}
@@ -0,0 +1,23 @@
1
+ import type { SliceZone } from "@prismicio/client";
2
+ import type { ActiveSlice } from "../types";
3
+ import type { SimulatorManager } from "./SimulatorManager";
4
+ export declare enum StateEventType {
5
+ Slices = "slices",
6
+ ActiveSlice = "activeSlice",
7
+ Message = "message"
8
+ }
9
+ export type StateEvents = {
10
+ [StateEventType.Slices]: SliceZone;
11
+ [StateEventType.ActiveSlice]: ActiveSlice | null;
12
+ [StateEventType.Message]: string;
13
+ };
14
+ export interface SliceSimulatorProps {
15
+ zIndex?: number;
16
+ background?: string;
17
+ }
18
+ export interface SliceSimulatorState {
19
+ manager: SimulatorManager;
20
+ slices: SliceZone;
21
+ message: string;
22
+ }
23
+ export type SliceSimulatorOptions = SliceSimulatorProps & SliceSimulatorState;
@@ -0,0 +1,10 @@
1
+ var StateEventType;
2
+ (function(StateEventType2) {
3
+ StateEventType2["Slices"] = "slices";
4
+ StateEventType2["ActiveSlice"] = "activeSlice";
5
+ StateEventType2["Message"] = "message";
6
+ })(StateEventType || (StateEventType = {}));
7
+ export {
8
+ StateEventType
9
+ };
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../src/kit/types.ts"],"sourcesContent":["import type { SliceZone } from \"@prismicio/client\";\n\nimport type { ActiveSlice } from \"../types\";\n\nimport type { SimulatorManager } from \"./SimulatorManager\";\n\nexport enum StateEventType {\n\tSlices = \"slices\",\n\tActiveSlice = \"activeSlice\",\n\tMessage = \"message\",\n}\n\nexport type StateEvents = {\n\t[StateEventType.Slices]: SliceZone;\n\t[StateEventType.ActiveSlice]: ActiveSlice | null;\n\t[StateEventType.Message]: string;\n};\n\nexport interface SliceSimulatorProps {\n\tzIndex?: number;\n\tbackground?: string;\n}\n\nexport interface SliceSimulatorState {\n\tmanager: SimulatorManager;\n\tslices: SliceZone;\n\tmessage: string;\n}\n\nexport type SliceSimulatorOptions = SliceSimulatorProps & SliceSimulatorState;\n"],"names":["StateEventType"],"mappings":"AAMY,IAAA;AAAA,CAAZ,SAAYA,iBAAc;AACzBA,kBAAA,QAAA,IAAA;AACAA,kBAAA,aAAA,IAAA;AACAA,kBAAA,SAAA,IAAA;AACD,GAJY,mBAAA,iBAIX,CAAA,EAAA;"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => {
5
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
+ return value;
7
+ };
8
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
+ class EventEmitter {
10
+ constructor() {
11
+ __publicField(this, "_listeners", {});
12
+ }
13
+ on(event, listener, key = null) {
14
+ this._listeners[event] = [
15
+ ...this._listeners[event] ?? [],
16
+ [listener, key]
17
+ ];
18
+ }
19
+ off(event, listenerOrKey) {
20
+ this._listeners[event] = (this._listeners[event] ?? []).filter(([listener, key]) => typeof listenerOrKey === "function" ? listener !== listenerOrKey : key !== listenerOrKey);
21
+ }
22
+ emit(event, payload) {
23
+ (this._listeners[event] ?? []).forEach((listener) => listener[0](payload));
24
+ }
25
+ }
26
+ exports.EventEmitter = EventEmitter;
27
+ //# sourceMappingURL=EventEmitter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.cjs","sources":["../../../src/lib/EventEmitter.ts"],"sourcesContent":["export type Listener<T> = (event: T) => void;\n\nexport type EventMap = {\n\t[K in string]: unknown;\n};\n\nexport abstract class EventEmitter<TEventMap = EventMap> {\n\tprivate _listeners: {\n\t\t[K in keyof TEventMap]?: [Listener<TEventMap[K]>, string | null][];\n\t} = {};\n\n\ton<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tlistener: Listener<TEventMap[TEventType]>,\n\t\tkey: string | null = null,\n\t): void {\n\t\tthis._listeners[event] = [\n\t\t\t...(this._listeners[event] ?? []),\n\t\t\t[listener, key],\n\t\t];\n\t}\n\n\toff<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tlistenerOrKey: Listener<TEventMap[TEventType]> | string,\n\t): void {\n\t\tthis._listeners[event] = (this._listeners[event] ?? []).filter(\n\t\t\t([listener, key]) =>\n\t\t\t\ttypeof listenerOrKey === \"function\"\n\t\t\t\t\t? listener !== listenerOrKey\n\t\t\t\t\t: key !== listenerOrKey,\n\t\t);\n\t}\n\n\temit<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tpayload: TEventMap[TEventType],\n\t): void {\n\t\t(this._listeners[event] ?? []).forEach((listener) => listener[0](payload));\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;MAMsB,aAAY;AAAA;AACzB,sCAEJ,CAAA;AAAA;AAAA,EAEJ,GACC,OACA,UACA,MAAqB,MAAI;AAEpB,SAAA,WAAW,KAAK,IAAI;AAAA,MACxB,GAAI,KAAK,WAAW,KAAK,KAAK,CAAA;AAAA,MAC9B,CAAC,UAAU,GAAG;AAAA,IAAA;AAAA,EAEhB;AAAA,EAEA,IACC,OACA,eAAuD;AAElD,SAAA,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,KAAK,CAAA,GAAI,OACvD,CAAC,CAAC,UAAU,GAAG,MACd,OAAO,kBAAkB,aACtB,aAAa,gBACb,QAAQ,aAAa;AAAA,EAE3B;AAAA,EAEA,KACC,OACA,SAA8B;AAE9B,KAAC,KAAK,WAAW,KAAK,KAAK,CAAA,GAAI,QAAQ,CAAC,aAAa,SAAS,CAAC,EAAE,OAAO,CAAC;AAAA,EAC1E;AACA;;"}
@@ -0,0 +1,10 @@
1
+ export type Listener<T> = (event: T) => void;
2
+ export type EventMap = {
3
+ [K in string]: unknown;
4
+ };
5
+ export declare abstract class EventEmitter<TEventMap = EventMap> {
6
+ private _listeners;
7
+ on<TEventType extends keyof TEventMap>(event: TEventType, listener: Listener<TEventMap[TEventType]>, key?: string | null): void;
8
+ off<TEventType extends keyof TEventMap>(event: TEventType, listenerOrKey: Listener<TEventMap[TEventType]> | string): void;
9
+ emit<TEventType extends keyof TEventMap>(event: TEventType, payload: TEventMap[TEventType]): void;
10
+ }
@@ -0,0 +1,27 @@
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
+ };
7
+ class EventEmitter {
8
+ constructor() {
9
+ __publicField(this, "_listeners", {});
10
+ }
11
+ on(event, listener, key = null) {
12
+ this._listeners[event] = [
13
+ ...this._listeners[event] ?? [],
14
+ [listener, key]
15
+ ];
16
+ }
17
+ off(event, listenerOrKey) {
18
+ this._listeners[event] = (this._listeners[event] ?? []).filter(([listener, key]) => typeof listenerOrKey === "function" ? listener !== listenerOrKey : key !== listenerOrKey);
19
+ }
20
+ emit(event, payload) {
21
+ (this._listeners[event] ?? []).forEach((listener) => listener[0](payload));
22
+ }
23
+ }
24
+ export {
25
+ EventEmitter
26
+ };
27
+ //# sourceMappingURL=EventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.js","sources":["../../../src/lib/EventEmitter.ts"],"sourcesContent":["export type Listener<T> = (event: T) => void;\n\nexport type EventMap = {\n\t[K in string]: unknown;\n};\n\nexport abstract class EventEmitter<TEventMap = EventMap> {\n\tprivate _listeners: {\n\t\t[K in keyof TEventMap]?: [Listener<TEventMap[K]>, string | null][];\n\t} = {};\n\n\ton<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tlistener: Listener<TEventMap[TEventType]>,\n\t\tkey: string | null = null,\n\t): void {\n\t\tthis._listeners[event] = [\n\t\t\t...(this._listeners[event] ?? []),\n\t\t\t[listener, key],\n\t\t];\n\t}\n\n\toff<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tlistenerOrKey: Listener<TEventMap[TEventType]> | string,\n\t): void {\n\t\tthis._listeners[event] = (this._listeners[event] ?? []).filter(\n\t\t\t([listener, key]) =>\n\t\t\t\ttypeof listenerOrKey === \"function\"\n\t\t\t\t\t? listener !== listenerOrKey\n\t\t\t\t\t: key !== listenerOrKey,\n\t\t);\n\t}\n\n\temit<TEventType extends keyof TEventMap>(\n\t\tevent: TEventType,\n\t\tpayload: TEventMap[TEventType],\n\t): void {\n\t\t(this._listeners[event] ?? []).forEach((listener) => listener[0](payload));\n\t}\n}\n"],"names":[],"mappings":";;;;;;MAMsB,aAAY;AAAA;AACzB,sCAEJ,CAAA;AAAA;AAAA,EAEJ,GACC,OACA,UACA,MAAqB,MAAI;AAEpB,SAAA,WAAW,KAAK,IAAI;AAAA,MACxB,GAAI,KAAK,WAAW,KAAK,KAAK,CAAA;AAAA,MAC9B,CAAC,UAAU,GAAG;AAAA,IAAA;AAAA,EAEhB;AAAA,EAEA,IACC,OACA,eAAuD;AAElD,SAAA,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,KAAK,CAAA,GAAI,OACvD,CAAC,CAAC,UAAU,GAAG,MACd,OAAO,kBAAkB,aACtB,aAAa,gBACb,QAAQ,aAAa;AAAA,EAE3B;AAAA,EAEA,KACC,OACA,SAA8B;AAE9B,KAAC,KAAK,WAAW,KAAK,KAAK,CAAA,GAAI,QAAQ,CAAC,aAAa,SAAS,CAAC,EAAE,OAAO,CAAC;AAAA,EAC1E;AACA;"}