@prismicio/simulator 0.1.2 → 0.1.4-pr.19.ac70eee

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 (149) hide show
  1. package/README.md +9 -13
  2. package/dist/SimulatorAPI.cjs +38 -46
  3. package/dist/SimulatorAPI.cjs.map +1 -1
  4. package/dist/SimulatorAPI.d.cts +18 -0
  5. package/dist/SimulatorAPI.d.ts +16 -10
  6. package/dist/SimulatorAPI.js +37 -46
  7. package/dist/SimulatorAPI.js.map +1 -1
  8. package/dist/SimulatorClient.cjs +41 -51
  9. package/dist/SimulatorClient.cjs.map +1 -1
  10. package/dist/SimulatorClient.d.cts +16 -0
  11. package/dist/SimulatorClient.d.ts +15 -9
  12. package/dist/SimulatorClient.js +40 -51
  13. package/dist/SimulatorClient.js.map +1 -1
  14. package/dist/channel/ChannelEmitter.cjs +112 -143
  15. package/dist/channel/ChannelEmitter.cjs.map +1 -1
  16. package/dist/channel/ChannelEmitter.d.cts +38 -0
  17. package/dist/channel/ChannelEmitter.d.ts +36 -36
  18. package/dist/channel/ChannelEmitter.js +110 -141
  19. package/dist/channel/ChannelEmitter.js.map +1 -1
  20. package/dist/channel/ChannelNetwork.cjs +81 -109
  21. package/dist/channel/ChannelNetwork.cjs.map +1 -1
  22. package/dist/channel/ChannelNetwork.d.cts +28 -0
  23. package/dist/channel/ChannelNetwork.d.ts +25 -21
  24. package/dist/channel/ChannelNetwork.js +81 -109
  25. package/dist/channel/ChannelNetwork.js.map +1 -1
  26. package/dist/channel/ChannelReceiver.cjs +69 -92
  27. package/dist/channel/ChannelReceiver.cjs.map +1 -1
  28. package/dist/channel/ChannelReceiver.d.cts +20 -0
  29. package/dist/channel/ChannelReceiver.d.ts +18 -18
  30. package/dist/channel/ChannelReceiver.js +67 -90
  31. package/dist/channel/ChannelReceiver.js.map +1 -1
  32. package/dist/channel/errors.cjs +41 -46
  33. package/dist/channel/errors.cjs.map +1 -1
  34. package/dist/channel/errors.d.cts +28 -0
  35. package/dist/channel/errors.d.ts +22 -19
  36. package/dist/channel/errors.js +40 -52
  37. package/dist/channel/errors.js.map +1 -1
  38. package/dist/channel/messages.cjs +48 -43
  39. package/dist/channel/messages.cjs.map +1 -1
  40. package/dist/channel/messages.d.cts +12 -0
  41. package/dist/channel/messages.d.ts +12 -10
  42. package/dist/channel/messages.js +50 -53
  43. package/dist/channel/messages.js.map +1 -1
  44. package/dist/channel/types.cjs +15 -11
  45. package/dist/channel/types.cjs.map +1 -1
  46. package/dist/channel/types.d.cts +53 -0
  47. package/dist/channel/types.d.ts +42 -50
  48. package/dist/channel/types.js +13 -13
  49. package/dist/channel/types.js.map +1 -1
  50. package/dist/globalExtensions.d.cts +15 -0
  51. package/dist/globalExtensions.d.ts +15 -0
  52. package/dist/index.cjs +24 -33
  53. package/dist/index.d.cts +10 -0
  54. package/dist/index.d.ts +10 -7
  55. package/dist/index.js +5 -25
  56. package/dist/kit/SimulatorManager.cjs +106 -138
  57. package/dist/kit/SimulatorManager.cjs.map +1 -1
  58. package/dist/kit/SimulatorManager.d.cts +19 -0
  59. package/dist/kit/SimulatorManager.d.ts +16 -12
  60. package/dist/kit/SimulatorManager.js +103 -135
  61. package/dist/kit/SimulatorManager.js.map +1 -1
  62. package/dist/kit/State.cjs +82 -80
  63. package/dist/kit/State.cjs.map +1 -1
  64. package/dist/kit/State.d.cts +29 -0
  65. package/dist/kit/State.d.ts +26 -22
  66. package/dist/kit/State.js +80 -78
  67. package/dist/kit/State.js.map +1 -1
  68. package/dist/kit/domHelpers.cjs +25 -37
  69. package/dist/kit/domHelpers.cjs.map +1 -1
  70. package/dist/kit/domHelpers.d.cts +11 -0
  71. package/dist/kit/domHelpers.d.ts +10 -8
  72. package/dist/kit/domHelpers.js +25 -43
  73. package/dist/kit/domHelpers.js.map +1 -1
  74. package/dist/kit/eventHandlers.cjs +11 -9
  75. package/dist/kit/eventHandlers.cjs.map +1 -1
  76. package/dist/kit/eventHandlers.d.cts +8 -0
  77. package/dist/kit/eventHandlers.d.ts +7 -3
  78. package/dist/kit/eventHandlers.js +11 -11
  79. package/dist/kit/eventHandlers.js.map +1 -1
  80. package/dist/kit/getDefault.cjs +9 -7
  81. package/dist/kit/getDefault.cjs.map +1 -1
  82. package/dist/kit/getDefault.d.cts +10 -0
  83. package/dist/kit/getDefault.d.ts +10 -8
  84. package/dist/kit/getDefault.js +9 -10
  85. package/dist/kit/getDefault.js.map +1 -1
  86. package/dist/kit/messages.cjs +8 -22
  87. package/dist/kit/messages.cjs.map +1 -1
  88. package/dist/kit/messages.d.cts +5 -0
  89. package/dist/kit/messages.d.ts +5 -1
  90. package/dist/kit/messages.js +8 -23
  91. package/dist/kit/messages.js.map +1 -1
  92. package/dist/kit/types.cjs +12 -9
  93. package/dist/kit/types.cjs.map +1 -1
  94. package/dist/kit/types.d.cts +28 -0
  95. package/dist/kit/types.d.ts +24 -19
  96. package/dist/kit/types.js +11 -10
  97. package/dist/kit/types.js.map +1 -1
  98. package/dist/kit.cjs +21 -26
  99. package/dist/kit.d.cts +8 -0
  100. package/dist/kit.d.ts +8 -0
  101. package/dist/kit.js +7 -21
  102. package/dist/lib/EventEmitter.cjs +16 -25
  103. package/dist/lib/EventEmitter.cjs.map +1 -1
  104. package/dist/lib/EventEmitter.d.cts +12 -0
  105. package/dist/lib/EventEmitter.d.ts +11 -9
  106. package/dist/lib/EventEmitter.js +16 -26
  107. package/dist/lib/EventEmitter.js.map +1 -1
  108. package/dist/lib/throttle.cjs +21 -21
  109. package/dist/lib/throttle.cjs.map +1 -1
  110. package/dist/lib/throttle.js +21 -22
  111. package/dist/lib/throttle.js.map +1 -1
  112. package/dist/types.cjs +18 -14
  113. package/dist/types.cjs.map +1 -1
  114. package/dist/types.d.cts +39 -0
  115. package/dist/types.d.ts +33 -28
  116. package/dist/types.js +16 -16
  117. package/dist/types.js.map +1 -1
  118. package/package.json +25 -59
  119. package/src/SimulatorAPI.ts +24 -28
  120. package/src/SimulatorClient.ts +24 -31
  121. package/src/channel/ChannelEmitter.ts +71 -74
  122. package/src/channel/ChannelNetwork.ts +53 -55
  123. package/src/channel/ChannelReceiver.ts +46 -48
  124. package/src/channel/errors.ts +14 -14
  125. package/src/channel/index.ts +10 -10
  126. package/src/channel/messages.ts +38 -30
  127. package/src/channel/types.ts +40 -40
  128. package/src/globalExtensions.ts +13 -0
  129. package/src/index.ts +9 -7
  130. package/src/kit/SimulatorManager.ts +64 -64
  131. package/src/kit/State.ts +45 -44
  132. package/src/kit/domHelpers.ts +24 -24
  133. package/src/kit/eventHandlers.ts +6 -6
  134. package/src/kit/getDefault.ts +8 -8
  135. package/src/kit/index.ts +8 -8
  136. package/src/kit/messages.ts +5 -5
  137. package/src/kit/types.ts +13 -13
  138. package/src/lib/EventEmitter.ts +8 -8
  139. package/src/lib/__PRODUCTION__.ts +2 -2
  140. package/src/lib/throttle.ts +12 -12
  141. package/src/types.ts +21 -21
  142. package/dist/channel/index.d.ts +0 -10
  143. package/dist/index.cjs.map +0 -1
  144. package/dist/index.js.map +0 -1
  145. package/dist/kit/index.d.ts +0 -8
  146. package/dist/kit.cjs.map +0 -1
  147. package/dist/kit.js.map +0 -1
  148. package/dist/lib/__PRODUCTION__.d.ts +0 -7
  149. package/dist/lib/throttle.d.ts +0 -1
package/src/index.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export {
2
2
  SimulatorClient,
3
3
  simulatorClientDefaultOptions,
4
- } from "./SimulatorClient";
4
+ } from "./SimulatorClient"
5
5
 
6
- export { SimulatorAPI, simulatorAPIDefaultOptions } from "./SimulatorAPI";
7
- export type { SimulatorAPIOptions } from "./SimulatorAPI";
6
+ export { SimulatorAPI, simulatorAPIDefaultOptions } from "./SimulatorAPI"
7
+ export type { SimulatorAPIOptions } from "./SimulatorAPI"
8
8
 
9
9
  export {
10
10
  // Validators
@@ -21,7 +21,7 @@ export {
21
21
  NotReadyError,
22
22
  PortNotSetError,
23
23
  ChannelNotSetError,
24
- } from "./channel";
24
+ } from "./channel"
25
25
  export type {
26
26
  RequestMessage,
27
27
  ResponseMessage,
@@ -29,12 +29,14 @@ export type {
29
29
  SuccessResponseMessage,
30
30
  AllChannelEmitterOptions,
31
31
  AllChannelReceiverOptions,
32
- } from "./channel";
32
+ } from "./channel"
33
33
 
34
- export { APIRequestType, ClientRequestType } from "./types";
34
+ export { APIRequestType, ClientRequestType } from "./types"
35
35
  export type {
36
36
  ActiveSlice,
37
37
  SliceZoneSize,
38
38
  APITransactions,
39
39
  ClientTransactions,
40
- } from "./types";
40
+ } from "./types"
41
+
42
+ export * from "./globalExtensions"
@@ -1,49 +1,49 @@
1
- import type { SliceZone } from "@prismicio/client";
1
+ import type { SliceZone } from "@prismicio/client"
2
2
 
3
- import { throttle } from "../lib/throttle";
3
+ import { throttle } from "../lib/throttle"
4
4
 
5
- import { ClientRequestType } from "../types";
6
- import { StateEventType } from "./types";
5
+ import { ClientRequestType } from "../types"
6
+ import { StateEventType } from "./types"
7
7
 
8
- import { SimulatorAPI } from "../SimulatorAPI";
9
- import { ResponseError } from "../channel";
8
+ import { SimulatorAPI } from "../SimulatorAPI"
9
+ import { ResponseError } from "../channel"
10
10
 
11
- import { State } from "./State";
11
+ import { State } from "./State"
12
12
  import {
13
13
  getSimulatorDOM,
14
14
  getSimulatorRootDOM,
15
15
  getSliceZoneDOM,
16
- } from "./domHelpers";
17
- import { sliceSimulatorAccessedDirectly } from "./messages";
16
+ } from "./domHelpers"
17
+ import { sliceSimulatorAccessedDirectly } from "./messages"
18
18
 
19
19
  type ManagerConstructorArgs = {
20
- slices?: SliceZone;
21
- };
20
+ slices?: SliceZone
21
+ }
22
22
 
23
23
  export class SimulatorManager {
24
- public state: State;
25
- private _api: SimulatorAPI | null;
26
- private _initialized: boolean;
24
+ public state: State
25
+ private _api: SimulatorAPI | null
26
+ private _initialized: boolean
27
27
 
28
28
  constructor(args?: ManagerConstructorArgs) {
29
- this.state = new State(args);
30
- this._api = null;
31
- this._initialized = false;
29
+ this.state = new State(args)
30
+ this._api = null
31
+ this._initialized = false
32
32
  }
33
33
 
34
34
  async init(): Promise<void> {
35
35
  if (this._initialized) {
36
- return;
36
+ return
37
37
  } else {
38
- this._initialized = true;
38
+ this._initialized = true
39
39
  }
40
40
 
41
41
  // Init state manager
42
- await this.state.init();
42
+ await this.state.init()
43
43
 
44
44
  // Init API
45
45
  try {
46
- await this._initAPI();
46
+ await this._initAPI()
47
47
  } catch (error) {
48
48
  if (
49
49
  error instanceof Error &&
@@ -51,50 +51,50 @@ export class SimulatorManager {
51
51
  !this.state.slices.length
52
52
  ) {
53
53
  // Catch not embedded error and display message
54
- this.state.message = sliceSimulatorAccessedDirectly;
54
+ this.state.message = sliceSimulatorAccessedDirectly
55
55
  }
56
- console.error(error);
56
+ console.error(error)
57
57
 
58
- return;
58
+ return
59
59
  }
60
60
 
61
61
  // Init listeners
62
- this._initListeners();
62
+ this._initListeners()
63
63
  }
64
64
 
65
65
  private async _initAPI(): Promise<void> {
66
66
  // Register SimulatorAPI request handlers
67
67
  this._api = new SimulatorAPI({
68
68
  [ClientRequestType.SetSliceZone]: (req, res) => {
69
- this.state.setSliceZone(req.data);
69
+ this.state.setSliceZone(req.data)
70
70
 
71
- return res.success();
71
+ return res.success()
72
72
  },
73
73
  [ClientRequestType.ScrollToSlice]: (req, res) => {
74
74
  // Error if `sliceIndex` is invalid
75
75
  if (req.data.sliceIndex < 0) {
76
- return res.error("`sliceIndex` must be > 0", 400);
76
+ return res.error("`sliceIndex` must be > 0", 400)
77
77
  } else if (req.data.sliceIndex >= this.state.slices.length) {
78
78
  return res.error(
79
79
  `\`sliceIndex\` must be < ${this.state.slices.length} (\`<SliceZone />\` current length)`,
80
80
  400,
81
- );
81
+ )
82
82
  }
83
83
 
84
- const $sliceZone = getSliceZoneDOM(this.state.slices.length);
84
+ const $sliceZone = getSliceZoneDOM(this.state.slices.length)
85
85
  if (!$sliceZone) {
86
- return res.error("Failed to find `<SliceZone />`", 500);
86
+ return res.error("Failed to find `<SliceZone />`", 500)
87
87
  }
88
88
 
89
89
  // Destroy existing active slice as we're about to scroll
90
- this.state.activeSlice = null;
90
+ this.state.activeSlice = null
91
91
 
92
- const $slice = $sliceZone.children[req.data.sliceIndex];
92
+ const $slice = $sliceZone.children[req.data.sliceIndex]
93
93
  if (!$slice) {
94
94
  return res.error(
95
95
  `Failed fo find slice at index $\`{req.data.sliceIndex}\` in \`<SliceZone />\``,
96
96
  500,
97
- );
97
+ )
98
98
  }
99
99
 
100
100
  // Scroll to Slice
@@ -102,98 +102,98 @@ export class SimulatorManager {
102
102
  behavior: req.data.behavior,
103
103
  block: req.data.block,
104
104
  inline: req.data.inline,
105
- });
105
+ })
106
106
 
107
107
  // Update active slice after scrolling
108
- this._api?.options.activeSliceAPI &&
109
- setTimeout(this.state.setActiveSlice, 750);
108
+ if (this._api?.options.activeSliceAPI) {
109
+ setTimeout(this.state.setActiveSlice, 750)
110
+ }
110
111
 
111
- return res.success();
112
+ return res.success()
112
113
  },
113
- });
114
+ })
114
115
 
115
116
  // Mark API as ready
116
- await this._api.ready();
117
+ await this._api.ready()
117
118
  }
118
119
 
119
120
  private _initListeners(): void {
120
121
  if (this._api?.options.activeSliceAPI) {
121
122
  // Update active slice on mouse move
122
123
  window.addEventListener("mousemove", () => {
123
- this.state.setActiveSlice();
124
- });
124
+ this.state.setActiveSlice()
125
+ })
125
126
  // Update active slice on events impacting slices rendering
126
127
  window.addEventListener("resize", () => {
127
- this.state.setActiveSlice();
128
- });
128
+ this.state.setActiveSlice()
129
+ })
129
130
  window.addEventListener("mousewheel", () => {
130
- this._api?.options.activeSliceAPI &&
131
- setTimeout(this.state.setActiveSlice, 200);
132
- });
131
+ setTimeout(this.state.setActiveSlice, 200)
132
+ })
133
133
 
134
134
  // Update active slice when slices are set
135
135
  this.state.on(StateEventType.Slices, () => {
136
- this.state.setActiveSlice();
137
- });
136
+ this.state.setActiveSlice()
137
+ })
138
138
  // Send active slices to renderer
139
139
  this.state.on(StateEventType.ActiveSlice, async (activeSlice) => {
140
140
  if (this._api) {
141
141
  try {
142
- await this._api.setActiveSlice(activeSlice);
142
+ await this._api.setActiveSlice(activeSlice)
143
143
  } catch (error) {
144
144
  // Just log bad requests, throw everything else
145
145
  if (
146
146
  error instanceof ResponseError &&
147
147
  error.response.status === 400
148
148
  ) {
149
- console.error(error.response);
149
+ console.error(error.response)
150
150
  } else {
151
- throw error;
151
+ throw error
152
152
  }
153
153
  }
154
154
  }
155
- });
155
+ })
156
156
  }
157
157
 
158
158
  if (this._api?.options.sliceZoneSizeAPI) {
159
159
  // Monitor Simulator root node size
160
160
  const resizeObserver = new ResizeObserver(
161
161
  throttle(async (entries) => {
162
- const [entry] = entries;
162
+ const [entry] = entries
163
163
 
164
164
  if (this._api && entry) {
165
165
  try {
166
- await this._api.setSliceZoneSize({ rect: entry.contentRect });
166
+ await this._api.setSliceZoneSize({ rect: entry.contentRect })
167
167
  } catch (error) {
168
168
  // Just log bad requests, throw everything else
169
169
  if (
170
170
  error instanceof ResponseError &&
171
171
  error.response.status === 400
172
172
  ) {
173
- console.error(error.response);
173
+ console.error(error.response)
174
174
  } else {
175
- throw error;
175
+ throw error
176
176
  }
177
177
  }
178
178
  }
179
179
  }, 16),
180
- );
180
+ )
181
181
  const observeSimulatorRoot = () => {
182
- const simulatorRootDOM = getSimulatorRootDOM();
182
+ const simulatorRootDOM = getSimulatorRootDOM()
183
+ resizeObserver.disconnect()
183
184
  if (simulatorRootDOM) {
184
- resizeObserver.disconnect();
185
- resizeObserver.observe(simulatorRootDOM);
185
+ resizeObserver.observe(simulatorRootDOM)
186
186
  }
187
- };
187
+ }
188
188
 
189
189
  // Monitor Simulator root node in DOM
190
- const mutationObserver = new MutationObserver(observeSimulatorRoot);
190
+ const mutationObserver = new MutationObserver(observeSimulatorRoot)
191
191
  // We want it to fail if not found
192
192
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
193
193
  mutationObserver.observe(getSimulatorDOM()!, {
194
194
  subtree: false,
195
195
  childList: true,
196
- });
196
+ })
197
197
  }
198
198
  }
199
199
  }
package/src/kit/State.ts CHANGED
@@ -1,100 +1,101 @@
1
- import type { SharedSlice, SliceZone } from "@prismicio/client";
1
+ import type { SharedSlice, SliceZone } from "@prismicio/client"
2
2
 
3
- import { EventEmitter } from "../lib/EventEmitter";
4
- import { __PRODUCTION__ } from "../lib/__PRODUCTION__";
5
- import { throttle } from "../lib/throttle";
3
+ import { EventEmitter } from "../lib/EventEmitter"
4
+ import { __PRODUCTION__ } from "../lib/__PRODUCTION__"
5
+ import { throttle } from "../lib/throttle"
6
6
 
7
- import type { ActiveSlice } from "../types";
8
- import { StateEventType, StateEvents } from "./types";
7
+ import type { ActiveSlice } from "../types"
8
+ import type { StateEvents } from "./types";
9
+ import { StateEventType } from "./types"
9
10
 
10
- import { getActiveSliceDOM, getSliceZoneDOM } from "./domHelpers";
11
- import { getDefaultSlices } from "./getDefault";
11
+ import { getActiveSliceDOM, getSliceZoneDOM } from "./domHelpers"
12
+ import { getDefaultSlices } from "./getDefault"
12
13
 
13
14
  type StateConstructorArgs = {
14
- slices?: SliceZone;
15
- };
15
+ slices?: SliceZone
16
+ }
16
17
 
17
18
  export class State extends EventEmitter<StateEvents> {
18
- private _slices: SliceZone;
19
+ private _slices: SliceZone
19
20
  public set slices(slices: SliceZone) {
20
- this._slices = slices;
21
+ this._slices = slices
21
22
  // Clean up message
22
- this.message = "";
23
+ this.message = ""
23
24
  // Dispatch event
24
- this.emit(StateEventType.Slices, slices);
25
+ this.emit(StateEventType.Slices, slices)
25
26
  }
26
27
  public get slices(): SliceZone {
27
- return this._slices;
28
+ return this._slices
28
29
  }
29
30
 
30
- private _activeSlice: ActiveSlice | null;
31
+ private _activeSlice: ActiveSlice | null
31
32
  public set activeSlice(activeSlice: ActiveSlice | null) {
32
- this._activeSlice = activeSlice;
33
- this.emit(StateEventType.ActiveSlice, activeSlice);
33
+ this._activeSlice = activeSlice
34
+ this.emit(StateEventType.ActiveSlice, activeSlice)
34
35
  }
35
36
  public get activeSlice(): ActiveSlice | null {
36
- return this._activeSlice;
37
+ return this._activeSlice
37
38
  }
38
39
 
39
- private _message: string;
40
+ private _message: string
40
41
  public set message(message: string) {
41
- this._message = message;
42
- this.emit(StateEventType.Message, message);
42
+ this._message = message
43
+ this.emit(StateEventType.Message, message)
43
44
  }
44
45
  public get message(): string {
45
- return this._message;
46
+ return this._message
46
47
  }
47
48
 
48
- private _mouse: { x: number; y: number };
49
+ private _mouse: { x: number; y: number }
49
50
 
50
51
  constructor(args?: StateConstructorArgs) {
51
- super();
52
+ super()
52
53
 
53
- this._slices = args?.slices || getDefaultSlices();
54
- this._activeSlice = null;
55
- this._message = "";
54
+ this._slices = args?.slices || getDefaultSlices()
55
+ this._activeSlice = null
56
+ this._message = ""
56
57
 
57
58
  // StateManager needs to keep track of mouse position for the active slice
58
- this._mouse = { x: 0, y: 0 };
59
+ this._mouse = { x: 0, y: 0 }
59
60
  }
60
61
 
61
62
  async init(): Promise<void> {
62
63
  // Init listener
63
64
  window.addEventListener("mousemove", (event) => {
64
- this._mouse = { x: event.clientX, y: event.clientY };
65
- });
65
+ this._mouse = { x: event.clientX, y: event.clientY }
66
+ })
66
67
  }
67
68
 
68
69
  private _setActiveSlice = (): void => {
69
70
  // There can't be an active slice if there's no slice displayed
70
71
  if (this.slices.length === 0) {
71
- this.activeSlice = null;
72
+ this.activeSlice = null
72
73
 
73
- return;
74
+ return
74
75
  }
75
76
 
76
- const $sliceZone = getSliceZoneDOM(this.slices.length);
77
+ const $sliceZone = getSliceZoneDOM(this.slices.length)
77
78
 
78
79
  // SliceZone has not been found, therefore active slice cannot be found
79
80
  if (!$sliceZone) {
80
- this.activeSlice = null;
81
+ this.activeSlice = null
81
82
 
82
- return;
83
+ return
83
84
  }
84
85
 
85
- const $activeSlice = getActiveSliceDOM($sliceZone, this._mouse);
86
+ const $activeSlice = getActiveSliceDOM($sliceZone, this._mouse)
86
87
 
87
88
  // Active slice has not been found
88
89
  if (!$activeSlice) {
89
- this.activeSlice = null;
90
+ this.activeSlice = null
90
91
 
91
- return;
92
+ return
92
93
  }
93
94
 
94
95
  const activeSliceIndex = Array.prototype.indexOf.call(
95
96
  $sliceZone.children,
96
97
  $activeSlice,
97
- );
98
+ )
98
99
 
99
100
  // Active slice has been found
100
101
  this.activeSlice = {
@@ -102,12 +103,12 @@ export class State extends EventEmitter<StateEvents> {
102
103
  sliceID: this.slices[activeSliceIndex].slice_type,
103
104
  variationID: (this.slices[activeSliceIndex] as SharedSlice).variation,
104
105
  index: activeSliceIndex,
105
- };
106
- };
107
- setActiveSlice = throttle(this._setActiveSlice, 16);
106
+ }
107
+ }
108
+ setActiveSlice = throttle(this._setActiveSlice, 16)
108
109
 
109
110
  setSliceZone(slices: SliceZone): void {
110
111
  // Set slices
111
- this.slices = slices;
112
+ this.slices = slices
112
113
  }
113
114
  }
@@ -1,75 +1,75 @@
1
- export const simulatorClass = "slice-simulator";
2
- export const simulatorRootClass = "slice-simulator--root";
1
+ export const simulatorClass = "slice-simulator"
2
+ export const simulatorRootClass = "slice-simulator--root"
3
3
 
4
4
  export const getSimulatorDOM = (): Element | null => {
5
- return document.querySelector(`.${simulatorClass}`);
6
- };
5
+ return document.querySelector(`.${simulatorClass}`)
6
+ }
7
7
 
8
8
  export const getSimulatorRootDOM = (): Element | null => {
9
- return document.querySelector(`.${simulatorRootClass}`);
10
- };
9
+ return document.querySelector(`.${simulatorRootClass}`)
10
+ }
11
11
 
12
12
  export const getSliceZoneDOM = (
13
13
  expectedNumberOfChildren: number,
14
14
  ): Element | null => {
15
15
  // If SliceZone has been tagged (#5)
16
- let node = document.querySelector(`.${simulatorClass} [data-slice-zone]`);
16
+ let node = document.querySelector(`.${simulatorClass} [data-slice-zone]`)
17
17
  if (node) {
18
18
  if (node.children.length !== expectedNumberOfChildren) {
19
19
  console.warn(
20
20
  `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?`,
21
- );
21
+ )
22
22
  }
23
23
 
24
- return node;
24
+ return node
25
25
  }
26
26
 
27
27
  // Start searching
28
- node = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`);
28
+ node = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`)
29
29
 
30
30
  if (!node) {
31
- return null;
31
+ return null
32
32
  }
33
33
 
34
- const searchDepth = 5;
34
+ const searchDepth = 5
35
35
  for (let i = 0; i < searchDepth; i++) {
36
36
  if (node.children.length === expectedNumberOfChildren) {
37
37
  // Return the first node that matches the expected number of children
38
- return node;
38
+ return node
39
39
  } else if (node.children.length) {
40
40
  // Continue searching if current node has children
41
- node = node.children[0];
41
+ node = node.children[0]
42
42
  } else {
43
43
  // Stop searching if current node has no children
44
- break;
44
+ break
45
45
  }
46
46
  }
47
47
 
48
48
  // Failed to find SliceZone
49
- return null;
50
- };
49
+ return null
50
+ }
51
51
 
52
52
  export const getActiveSliceDOM = (
53
53
  $sliceZone: Element,
54
54
  mouse: { x: number; y: number },
55
55
  ): Element | null => {
56
56
  // Raycast cursor position on DOM
57
- const raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse();
57
+ const raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse()
58
58
 
59
59
  // Find SliceZone in raycast
60
- const sliceZoneIndex = raycast.indexOf($sliceZone);
60
+ const sliceZoneIndex = raycast.indexOf($sliceZone)
61
61
 
62
62
  // SliceZone is not part of raycast
63
63
  if (sliceZoneIndex === -1) {
64
- return null;
64
+ return null
65
65
  }
66
66
 
67
- const $slice = raycast[sliceZoneIndex + 1];
67
+ const $slice = raycast[sliceZoneIndex + 1]
68
68
 
69
69
  // Slice is not part of raycast
70
70
  if (!$slice) {
71
- return null;
71
+ return null
72
72
  }
73
73
 
74
- return $slice;
75
- };
74
+ return $slice
75
+ }
@@ -1,7 +1,7 @@
1
1
  export const disableEventHandler = (event: Event): void => {
2
- event.preventDefault();
3
- event.stopPropagation();
4
- };
2
+ event.preventDefault()
3
+ event.stopPropagation()
4
+ }
5
5
 
6
6
  export const onClickHandler = (
7
7
  event: MouseEvent & { path?: HTMLElement[] },
@@ -10,7 +10,7 @@ export const onClickHandler = (
10
10
  event.path &&
11
11
  event.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)
12
12
  ) {
13
- event.preventDefault();
14
- event.stopPropagation();
13
+ event.preventDefault()
14
+ event.stopPropagation()
15
15
  }
16
- };
16
+ }
@@ -1,18 +1,18 @@
1
- import type { SliceZone } from "@prismicio/client";
1
+ import type { SliceZone } from "@prismicio/client"
2
2
 
3
- import { SliceSimulatorProps } from "./types";
3
+ import type { SliceSimulatorProps } from "./types"
4
4
 
5
5
  export const getDefaultProps = (): Required<{
6
- [K in keyof SliceSimulatorProps]: NonNullable<SliceSimulatorProps[K]>;
6
+ [K in keyof SliceSimulatorProps]: NonNullable<SliceSimulatorProps[K]>
7
7
  }> => ({
8
8
  zIndex: 100,
9
9
  background: "#ffffff",
10
- });
10
+ })
11
11
 
12
12
  export const getDefaultSlices = (): SliceZone => {
13
- return [];
14
- };
13
+ return []
14
+ }
15
15
 
16
16
  export const getDefaultMessage = (): string => {
17
- return "";
18
- };
17
+ return ""
18
+ }
package/src/kit/index.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  // Main
2
- export { SimulatorManager } from "./SimulatorManager";
3
- export { State } from "./State";
2
+ export { SimulatorManager } from "./SimulatorManager"
3
+ export { State } from "./State"
4
4
 
5
5
  // Defaults
6
6
  export {
7
7
  getDefaultProps,
8
8
  getDefaultSlices,
9
9
  getDefaultMessage,
10
- } from "./getDefault";
10
+ } from "./getDefault"
11
11
 
12
12
  // DOM helpers
13
13
  export {
@@ -15,19 +15,19 @@ export {
15
15
  simulatorRootClass,
16
16
  getSliceZoneDOM,
17
17
  getActiveSliceDOM,
18
- } from "./domHelpers";
18
+ } from "./domHelpers"
19
19
 
20
20
  // Events
21
- export { disableEventHandler, onClickHandler } from "./eventHandlers";
21
+ export { disableEventHandler, onClickHandler } from "./eventHandlers"
22
22
 
23
23
  // Messages
24
- export { sliceSimulatorAccessedDirectly } from "./messages";
24
+ export { sliceSimulatorAccessedDirectly } from "./messages"
25
25
 
26
26
  // Types
27
- export { StateEventType } from "./types";
27
+ export { StateEventType } from "./types"
28
28
  export type {
29
29
  StateEvents,
30
30
  SliceSimulatorProps,
31
31
  SliceSimulatorState,
32
32
  SliceSimulatorOptions,
33
- } from "./types";
33
+ } from "./types"