@prismicio/simulator 0.1.4 → 0.2.0-pr.22.b846d30
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.
- package/README.md +7 -18
- package/dist/SimulatorAPI.cjs +36 -46
- package/dist/SimulatorAPI.cjs.map +1 -1
- package/dist/SimulatorAPI.d.cts +18 -0
- package/dist/SimulatorAPI.d.cts.map +1 -0
- package/dist/SimulatorAPI.d.ts +16 -10
- package/dist/SimulatorAPI.d.ts.map +1 -0
- package/dist/SimulatorAPI.js +35 -46
- package/dist/SimulatorAPI.js.map +1 -1
- package/dist/SimulatorClient.cjs +39 -51
- package/dist/SimulatorClient.cjs.map +1 -1
- package/dist/SimulatorClient.d.cts +16 -0
- package/dist/SimulatorClient.d.cts.map +1 -0
- package/dist/SimulatorClient.d.ts +15 -9
- package/dist/SimulatorClient.d.ts.map +1 -0
- package/dist/SimulatorClient.js +39 -52
- package/dist/SimulatorClient.js.map +1 -1
- package/dist/channel/ChannelEmitter.cjs +109 -143
- package/dist/channel/ChannelEmitter.cjs.map +1 -1
- package/dist/channel/ChannelEmitter.d.cts +36 -0
- package/dist/channel/ChannelEmitter.d.cts.map +1 -0
- package/dist/channel/ChannelEmitter.d.ts +34 -36
- package/dist/channel/ChannelEmitter.d.ts.map +1 -0
- package/dist/channel/ChannelEmitter.js +107 -141
- package/dist/channel/ChannelEmitter.js.map +1 -1
- package/dist/channel/ChannelNetwork.cjs +80 -109
- package/dist/channel/ChannelNetwork.cjs.map +1 -1
- package/dist/channel/ChannelNetwork.d.cts +28 -0
- package/dist/channel/ChannelNetwork.d.cts.map +1 -0
- package/dist/channel/ChannelNetwork.d.ts +25 -21
- package/dist/channel/ChannelNetwork.d.ts.map +1 -0
- package/dist/channel/ChannelNetwork.js +80 -109
- package/dist/channel/ChannelNetwork.js.map +1 -1
- package/dist/channel/ChannelReceiver.cjs +68 -92
- package/dist/channel/ChannelReceiver.cjs.map +1 -1
- package/dist/channel/ChannelReceiver.d.cts +20 -0
- package/dist/channel/ChannelReceiver.d.cts.map +1 -0
- package/dist/channel/ChannelReceiver.d.ts +18 -18
- package/dist/channel/ChannelReceiver.d.ts.map +1 -0
- package/dist/channel/ChannelReceiver.js +66 -90
- package/dist/channel/ChannelReceiver.js.map +1 -1
- package/dist/channel/errors.cjs +40 -46
- package/dist/channel/errors.cjs.map +1 -1
- package/dist/channel/errors.d.cts +28 -0
- package/dist/channel/errors.d.cts.map +1 -0
- package/dist/channel/errors.d.ts +22 -19
- package/dist/channel/errors.d.ts.map +1 -0
- package/dist/channel/errors.js +40 -52
- package/dist/channel/errors.js.map +1 -1
- package/dist/channel/messages.cjs +47 -43
- package/dist/channel/messages.cjs.map +1 -1
- package/dist/channel/messages.d.cts +11 -0
- package/dist/channel/messages.d.cts.map +1 -0
- package/dist/channel/messages.d.ts +11 -10
- package/dist/channel/messages.d.ts.map +1 -0
- package/dist/channel/messages.js +50 -53
- package/dist/channel/messages.js.map +1 -1
- package/dist/channel/types.cjs +14 -11
- package/dist/channel/types.cjs.map +1 -1
- package/dist/channel/types.d.cts +53 -0
- package/dist/channel/types.d.cts.map +1 -0
- package/dist/channel/types.d.ts +42 -50
- package/dist/channel/types.d.ts.map +1 -0
- package/dist/channel/types.js +13 -13
- package/dist/channel/types.js.map +1 -1
- package/dist/globalExtensions.d.cts +15 -0
- package/dist/globalExtensions.d.cts.map +1 -0
- package/dist/globalExtensions.d.ts +14 -11
- package/dist/globalExtensions.d.ts.map +1 -0
- package/dist/index.cjs +23 -32
- package/dist/index.d.cts +9 -0
- package/dist/index.d.ts +9 -8
- package/dist/index.js +3 -24
- package/dist/kit/SimulatorManager.cjs +103 -137
- package/dist/kit/SimulatorManager.cjs.map +1 -1
- package/dist/kit/SimulatorManager.d.cts +19 -0
- package/dist/kit/SimulatorManager.d.cts.map +1 -0
- package/dist/kit/SimulatorManager.d.ts +16 -12
- package/dist/kit/SimulatorManager.d.ts.map +1 -0
- package/dist/kit/SimulatorManager.js +101 -135
- package/dist/kit/SimulatorManager.js.map +1 -1
- package/dist/kit/State.cjs +81 -80
- package/dist/kit/State.cjs.map +1 -1
- package/dist/kit/State.d.cts +29 -0
- package/dist/kit/State.d.cts.map +1 -0
- package/dist/kit/State.d.ts +26 -22
- package/dist/kit/State.d.ts.map +1 -0
- package/dist/kit/State.js +80 -79
- package/dist/kit/State.js.map +1 -1
- package/dist/kit/domHelpers.cjs +24 -37
- package/dist/kit/domHelpers.cjs.map +1 -1
- package/dist/kit/domHelpers.d.cts +11 -0
- package/dist/kit/domHelpers.d.cts.map +1 -0
- package/dist/kit/domHelpers.d.ts +10 -8
- package/dist/kit/domHelpers.d.ts.map +1 -0
- package/dist/kit/domHelpers.js +25 -43
- package/dist/kit/domHelpers.js.map +1 -1
- package/dist/kit/eventHandlers.cjs +10 -9
- package/dist/kit/eventHandlers.cjs.map +1 -1
- package/dist/kit/eventHandlers.d.cts +8 -0
- package/dist/kit/eventHandlers.d.cts.map +1 -0
- package/dist/kit/eventHandlers.d.ts +7 -3
- package/dist/kit/eventHandlers.d.ts.map +1 -0
- package/dist/kit/eventHandlers.js +11 -11
- package/dist/kit/eventHandlers.js.map +1 -1
- package/dist/kit/getDefault.cjs +8 -7
- package/dist/kit/getDefault.cjs.map +1 -1
- package/dist/kit/getDefault.d.cts +10 -0
- package/dist/kit/getDefault.d.cts.map +1 -0
- package/dist/kit/getDefault.d.ts +10 -8
- package/dist/kit/getDefault.d.ts.map +1 -0
- package/dist/kit/getDefault.js +9 -10
- package/dist/kit/getDefault.js.map +1 -1
- package/dist/kit/messages.cjs +7 -24
- package/dist/kit/messages.cjs.map +1 -1
- package/dist/kit/messages.d.cts +5 -0
- package/dist/kit/messages.d.cts.map +1 -0
- package/dist/kit/messages.d.ts +5 -1
- package/dist/kit/messages.d.ts.map +1 -0
- package/dist/kit/messages.js +8 -25
- package/dist/kit/messages.js.map +1 -1
- package/dist/kit/types.cjs +11 -9
- package/dist/kit/types.cjs.map +1 -1
- package/dist/kit/types.d.cts +28 -0
- package/dist/kit/types.d.cts.map +1 -0
- package/dist/kit/types.d.ts +24 -19
- package/dist/kit/types.d.ts.map +1 -0
- package/dist/kit/types.js +11 -10
- package/dist/kit/types.js.map +1 -1
- package/dist/kit.cjs +20 -25
- package/dist/kit.d.cts +8 -0
- package/dist/kit.d.ts +8 -0
- package/dist/kit.js +5 -20
- package/dist/lib/EventEmitter.cjs +15 -25
- package/dist/lib/EventEmitter.cjs.map +1 -1
- package/dist/lib/EventEmitter.d.cts +12 -0
- package/dist/lib/EventEmitter.d.cts.map +1 -0
- package/dist/lib/EventEmitter.d.ts +11 -9
- package/dist/lib/EventEmitter.d.ts.map +1 -0
- package/dist/lib/EventEmitter.js +16 -26
- package/dist/lib/EventEmitter.js.map +1 -1
- package/dist/lib/throttle.cjs +20 -21
- package/dist/lib/throttle.cjs.map +1 -1
- package/dist/lib/throttle.js +21 -22
- package/dist/lib/throttle.js.map +1 -1
- package/dist/types.cjs +17 -14
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +39 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.ts +32 -27
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -16
- package/dist/types.js.map +1 -1
- package/package.json +44 -87
- package/src/SimulatorAPI.ts +26 -40
- package/src/SimulatorClient.ts +25 -43
- package/src/channel/ChannelEmitter.ts +75 -110
- package/src/channel/ChannelNetwork.ts +71 -98
- package/src/channel/ChannelReceiver.ts +45 -78
- package/src/channel/errors.ts +16 -21
- package/src/channel/index.ts +10 -25
- package/src/channel/messages.ts +43 -44
- package/src/channel/types.ts +51 -67
- package/src/globalExtensions.ts +6 -6
- package/src/index.ts +8 -16
- package/src/kit/SimulatorManager.ts +66 -78
- package/src/kit/State.ts +45 -49
- package/src/kit/domHelpers.ts +25 -27
- package/src/kit/eventHandlers.ts +8 -13
- package/src/kit/getDefault.ts +8 -8
- package/src/kit/index.ts +8 -12
- package/src/kit/messages.ts +5 -6
- package/src/kit/types.ts +13 -14
- package/src/lib/EventEmitter.ts +10 -16
- package/src/lib/__PRODUCTION__.ts +3 -4
- package/src/lib/throttle.ts +12 -12
- package/src/types.ts +20 -20
- package/dist/channel/index.d.ts +0 -10
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kit/index.d.ts +0 -8
- package/dist/kit.cjs.map +0 -1
- package/dist/kit.js.map +0 -1
- package/dist/lib/__PRODUCTION__.d.ts +0 -7
- package/dist/lib/throttle.d.ts +0 -1
package/src/kit/State.ts
CHANGED
|
@@ -1,100 +1,96 @@
|
|
|
1
|
-
import type { SharedSlice, SliceZone } from "@prismicio/client"
|
|
1
|
+
import type { SharedSlice, SliceZone } from "@prismicio/client"
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { throttle } from "../lib/throttle"
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
import { getDefaultSlices } from "./getDefault";
|
|
3
|
+
import { __PRODUCTION__ } from "../lib/__PRODUCTION__"
|
|
4
|
+
import { EventEmitter } from "../lib/EventEmitter"
|
|
5
|
+
import { throttle } from "../lib/throttle"
|
|
6
|
+
import type { ActiveSlice } from "../types"
|
|
7
|
+
import { getActiveSliceDOM, getSliceZoneDOM } from "./domHelpers"
|
|
8
|
+
import { getDefaultSlices } from "./getDefault"
|
|
9
|
+
import type { StateEvents } from "./types"
|
|
10
|
+
import { StateEventType } from "./types"
|
|
12
11
|
|
|
13
12
|
type StateConstructorArgs = {
|
|
14
|
-
slices?: SliceZone
|
|
15
|
-
}
|
|
13
|
+
slices?: SliceZone
|
|
14
|
+
}
|
|
16
15
|
|
|
17
16
|
export class State extends EventEmitter<StateEvents> {
|
|
18
|
-
private _slices: SliceZone
|
|
17
|
+
private _slices: SliceZone
|
|
19
18
|
public set slices(slices: SliceZone) {
|
|
20
|
-
this._slices = slices
|
|
19
|
+
this._slices = slices
|
|
21
20
|
// Clean up message
|
|
22
|
-
this.message = ""
|
|
21
|
+
this.message = ""
|
|
23
22
|
// Dispatch event
|
|
24
|
-
this.emit(StateEventType.Slices, slices)
|
|
23
|
+
this.emit(StateEventType.Slices, slices)
|
|
25
24
|
}
|
|
26
25
|
public get slices(): SliceZone {
|
|
27
|
-
return this._slices
|
|
26
|
+
return this._slices
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
private _activeSlice: ActiveSlice | null
|
|
29
|
+
private _activeSlice: ActiveSlice | null
|
|
31
30
|
public set activeSlice(activeSlice: ActiveSlice | null) {
|
|
32
|
-
this._activeSlice = activeSlice
|
|
33
|
-
this.emit(StateEventType.ActiveSlice, activeSlice)
|
|
31
|
+
this._activeSlice = activeSlice
|
|
32
|
+
this.emit(StateEventType.ActiveSlice, activeSlice)
|
|
34
33
|
}
|
|
35
34
|
public get activeSlice(): ActiveSlice | null {
|
|
36
|
-
return this._activeSlice
|
|
35
|
+
return this._activeSlice
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
private _message: string
|
|
38
|
+
private _message: string
|
|
40
39
|
public set message(message: string) {
|
|
41
|
-
this._message = message
|
|
42
|
-
this.emit(StateEventType.Message, message)
|
|
40
|
+
this._message = message
|
|
41
|
+
this.emit(StateEventType.Message, message)
|
|
43
42
|
}
|
|
44
43
|
public get message(): string {
|
|
45
|
-
return this._message
|
|
44
|
+
return this._message
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
private _mouse: { x: number; y: number }
|
|
47
|
+
private _mouse: { x: number; y: number }
|
|
49
48
|
|
|
50
49
|
constructor(args?: StateConstructorArgs) {
|
|
51
|
-
super()
|
|
50
|
+
super()
|
|
52
51
|
|
|
53
|
-
this._slices = args?.slices || getDefaultSlices()
|
|
54
|
-
this._activeSlice = null
|
|
55
|
-
this._message = ""
|
|
52
|
+
this._slices = args?.slices || getDefaultSlices()
|
|
53
|
+
this._activeSlice = null
|
|
54
|
+
this._message = ""
|
|
56
55
|
|
|
57
56
|
// StateManager needs to keep track of mouse position for the active slice
|
|
58
|
-
this._mouse = { x: 0, y: 0 }
|
|
57
|
+
this._mouse = { x: 0, y: 0 }
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
async init(): Promise<void> {
|
|
62
61
|
// Init listener
|
|
63
62
|
window.addEventListener("mousemove", (event) => {
|
|
64
|
-
this._mouse = { x: event.clientX, y: event.clientY }
|
|
65
|
-
})
|
|
63
|
+
this._mouse = { x: event.clientX, y: event.clientY }
|
|
64
|
+
})
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
private _setActiveSlice = (): void => {
|
|
69
68
|
// There can't be an active slice if there's no slice displayed
|
|
70
69
|
if (this.slices.length === 0) {
|
|
71
|
-
this.activeSlice = null
|
|
70
|
+
this.activeSlice = null
|
|
72
71
|
|
|
73
|
-
return
|
|
72
|
+
return
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
const $sliceZone = getSliceZoneDOM(this.slices.length)
|
|
75
|
+
const $sliceZone = getSliceZoneDOM(this.slices.length)
|
|
77
76
|
|
|
78
77
|
// SliceZone has not been found, therefore active slice cannot be found
|
|
79
78
|
if (!$sliceZone) {
|
|
80
|
-
this.activeSlice = null
|
|
79
|
+
this.activeSlice = null
|
|
81
80
|
|
|
82
|
-
return
|
|
81
|
+
return
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
const $activeSlice = getActiveSliceDOM($sliceZone, this._mouse)
|
|
84
|
+
const $activeSlice = getActiveSliceDOM($sliceZone, this._mouse)
|
|
86
85
|
|
|
87
86
|
// Active slice has not been found
|
|
88
87
|
if (!$activeSlice) {
|
|
89
|
-
this.activeSlice = null
|
|
88
|
+
this.activeSlice = null
|
|
90
89
|
|
|
91
|
-
return
|
|
90
|
+
return
|
|
92
91
|
}
|
|
93
92
|
|
|
94
|
-
const activeSliceIndex = Array.prototype.indexOf.call(
|
|
95
|
-
$sliceZone.children,
|
|
96
|
-
$activeSlice,
|
|
97
|
-
);
|
|
93
|
+
const activeSliceIndex = Array.prototype.indexOf.call($sliceZone.children, $activeSlice)
|
|
98
94
|
|
|
99
95
|
// Active slice has been found
|
|
100
96
|
this.activeSlice = {
|
|
@@ -102,12 +98,12 @@ export class State extends EventEmitter<StateEvents> {
|
|
|
102
98
|
sliceID: this.slices[activeSliceIndex].slice_type,
|
|
103
99
|
variationID: (this.slices[activeSliceIndex] as SharedSlice).variation,
|
|
104
100
|
index: activeSliceIndex,
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
setActiveSlice = throttle(this._setActiveSlice, 16)
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
setActiveSlice = throttle(this._setActiveSlice, 16)
|
|
108
104
|
|
|
109
105
|
setSliceZone(slices: SliceZone): void {
|
|
110
106
|
// Set slices
|
|
111
|
-
this.slices = slices
|
|
107
|
+
this.slices = slices
|
|
112
108
|
}
|
|
113
109
|
}
|
package/src/kit/domHelpers.ts
CHANGED
|
@@ -1,75 +1,73 @@
|
|
|
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
|
-
export const getSliceZoneDOM = (
|
|
13
|
-
expectedNumberOfChildren: number,
|
|
14
|
-
): Element | null => {
|
|
12
|
+
export const getSliceZoneDOM = (expectedNumberOfChildren: number): Element | null => {
|
|
15
13
|
// If SliceZone has been tagged (#5)
|
|
16
|
-
let node = document.querySelector(`.${simulatorClass} [data-slice-zone]`)
|
|
14
|
+
let node = document.querySelector(`.${simulatorClass} [data-slice-zone]`)
|
|
17
15
|
if (node) {
|
|
18
16
|
if (node.children.length !== expectedNumberOfChildren) {
|
|
19
17
|
console.warn(
|
|
20
18
|
`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
|
-
)
|
|
19
|
+
)
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
return node
|
|
22
|
+
return node
|
|
25
23
|
}
|
|
26
24
|
|
|
27
25
|
// Start searching
|
|
28
|
-
node = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`)
|
|
26
|
+
node = document.querySelector(`.${simulatorClass} .${simulatorRootClass}`)
|
|
29
27
|
|
|
30
28
|
if (!node) {
|
|
31
|
-
return null
|
|
29
|
+
return null
|
|
32
30
|
}
|
|
33
31
|
|
|
34
|
-
const searchDepth = 5
|
|
32
|
+
const searchDepth = 5
|
|
35
33
|
for (let i = 0; i < searchDepth; i++) {
|
|
36
34
|
if (node.children.length === expectedNumberOfChildren) {
|
|
37
35
|
// Return the first node that matches the expected number of children
|
|
38
|
-
return node
|
|
36
|
+
return node
|
|
39
37
|
} else if (node.children.length) {
|
|
40
38
|
// Continue searching if current node has children
|
|
41
|
-
node = node.children[0]
|
|
39
|
+
node = node.children[0]
|
|
42
40
|
} else {
|
|
43
41
|
// Stop searching if current node has no children
|
|
44
|
-
break
|
|
42
|
+
break
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
// Failed to find SliceZone
|
|
49
|
-
return null
|
|
50
|
-
}
|
|
47
|
+
return null
|
|
48
|
+
}
|
|
51
49
|
|
|
52
50
|
export const getActiveSliceDOM = (
|
|
53
51
|
$sliceZone: Element,
|
|
54
52
|
mouse: { x: number; y: number },
|
|
55
53
|
): Element | null => {
|
|
56
54
|
// Raycast cursor position on DOM
|
|
57
|
-
const raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse()
|
|
55
|
+
const raycast = document.elementsFromPoint(mouse.x, mouse.y).reverse()
|
|
58
56
|
|
|
59
57
|
// Find SliceZone in raycast
|
|
60
|
-
const sliceZoneIndex = raycast.indexOf($sliceZone)
|
|
58
|
+
const sliceZoneIndex = raycast.indexOf($sliceZone)
|
|
61
59
|
|
|
62
60
|
// SliceZone is not part of raycast
|
|
63
61
|
if (sliceZoneIndex === -1) {
|
|
64
|
-
return null
|
|
62
|
+
return null
|
|
65
63
|
}
|
|
66
64
|
|
|
67
|
-
const $slice = raycast[sliceZoneIndex + 1]
|
|
65
|
+
const $slice = raycast[sliceZoneIndex + 1]
|
|
68
66
|
|
|
69
67
|
// Slice is not part of raycast
|
|
70
68
|
if (!$slice) {
|
|
71
|
-
return null
|
|
69
|
+
return null
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
return $slice
|
|
75
|
-
}
|
|
72
|
+
return $slice
|
|
73
|
+
}
|
package/src/kit/eventHandlers.ts
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
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
|
-
export const onClickHandler = (
|
|
7
|
-
event
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
event.path &&
|
|
11
|
-
event.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)
|
|
12
|
-
) {
|
|
13
|
-
event.preventDefault();
|
|
14
|
-
event.stopPropagation();
|
|
6
|
+
export const onClickHandler = (event: MouseEvent & { path?: HTMLElement[] }): void => {
|
|
7
|
+
if (event.path && event.path.slice(0, 5).some((el) => el instanceof HTMLAnchorElement)) {
|
|
8
|
+
event.preventDefault()
|
|
9
|
+
event.stopPropagation()
|
|
15
10
|
}
|
|
16
|
-
}
|
|
11
|
+
}
|
package/src/kit/getDefault.ts
CHANGED
|
@@ -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,9 @@
|
|
|
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
|
-
export {
|
|
7
|
-
getDefaultProps,
|
|
8
|
-
getDefaultSlices,
|
|
9
|
-
getDefaultMessage,
|
|
10
|
-
} from "./getDefault";
|
|
6
|
+
export { getDefaultProps, getDefaultSlices, getDefaultMessage } from "./getDefault"
|
|
11
7
|
|
|
12
8
|
// DOM helpers
|
|
13
9
|
export {
|
|
@@ -15,19 +11,19 @@ export {
|
|
|
15
11
|
simulatorRootClass,
|
|
16
12
|
getSliceZoneDOM,
|
|
17
13
|
getActiveSliceDOM,
|
|
18
|
-
} from "./domHelpers"
|
|
14
|
+
} from "./domHelpers"
|
|
19
15
|
|
|
20
16
|
// Events
|
|
21
|
-
export { disableEventHandler, onClickHandler } from "./eventHandlers"
|
|
17
|
+
export { disableEventHandler, onClickHandler } from "./eventHandlers"
|
|
22
18
|
|
|
23
19
|
// Messages
|
|
24
|
-
export { sliceSimulatorAccessedDirectly } from "./messages"
|
|
20
|
+
export { sliceSimulatorAccessedDirectly } from "./messages"
|
|
25
21
|
|
|
26
22
|
// Types
|
|
27
|
-
export { StateEventType } from "./types"
|
|
23
|
+
export { StateEventType } from "./types"
|
|
28
24
|
export type {
|
|
29
25
|
StateEvents,
|
|
30
26
|
SliceSimulatorProps,
|
|
31
27
|
SliceSimulatorState,
|
|
32
28
|
SliceSimulatorOptions,
|
|
33
|
-
} from "./types"
|
|
29
|
+
} from "./types"
|
package/src/kit/messages.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
const div = (content: string) =>
|
|
2
|
-
`<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
|
+
`<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>`
|
|
3
3
|
|
|
4
4
|
const a = (href: string, label?: string) =>
|
|
5
|
-
`<a href="${href}" style="text-decoration: underline;">${label || href}<a
|
|
5
|
+
`<a href="${href}" style="text-decoration: underline;">${label || href}<a>`
|
|
6
6
|
|
|
7
7
|
const header =
|
|
8
|
-
" _____ ___ _____ _ __ __ \n / ___// (_)_______ / ___/(_)___ ___ __ __/ /___ _/ /_____ _____\n \\__ \\/ / / ___/ _ \\\\__ \\/ / __ `__ \\/ / / / / __ `/ __/ __ \\/ ___/\n ___/ / / / /__/ __/__/ / / / / / / / /_/ / / /_/ / /_/ /_/ / / \n/____/_/_/\\___/\\___/____/_/_/ /_/ /_/\\__,_/_/\\__,_/\\__/\\____/_/ \n / /_ __ __ / __ \\_____(_)________ ___ (_)____\n / __ \\/ / / / / /_/ / ___/ / ___/ __ `__ \\/ / ___/\n / /_/ / /_/ / / ____/ / / (__ ) / / / / / / /__ \n /_.___/\\__, / /_/ /_/ /_/____/_/ /_/ /_/_/\\___/ \n /____/\n\n"
|
|
8
|
+
" _____ ___ _____ _ __ __ \n / ___// (_)_______ / ___/(_)___ ___ __ __/ /___ _/ /_____ _____\n \\__ \\/ / / ___/ _ \\\\__ \\/ / __ `__ \\/ / / / / __ `/ __/ __ \\/ ___/\n ___/ / / / /__/ __/__/ / / / / / / / /_/ / / /_/ / /_/ /_/ / / \n/____/_/_/\\___/\\___/____/_/_/ /_/ /_/\\__,_/_/\\__,_/\\__/\\____/_/ \n / /_ __ __ / __ \\_____(_)________ ___ (_)____\n / __ \\/ / / / / /_/ / ___/ / ___/ __ `__ \\/ / ___/\n / /_/ / /_/ / / ____/ / / (__ ) / / / / / / /__ \n /_.___/\\__, / /_/ /_/ /_/____/_/ /_/ /_/_/\\___/ \n /____/\n\n"
|
|
9
9
|
|
|
10
|
-
const footer =
|
|
11
|
-
"\n\n\n\n\n\n - The Prismic team";
|
|
10
|
+
const footer = "\n\n\n\n\n\n - The Prismic team"
|
|
12
11
|
|
|
13
12
|
export const sliceSimulatorAccessedDirectly = div(
|
|
14
13
|
[
|
|
@@ -22,4 +21,4 @@ export const sliceSimulatorAccessedDirectly = div(
|
|
|
22
21
|
)}`,
|
|
23
22
|
footer,
|
|
24
23
|
].join(""),
|
|
25
|
-
)
|
|
24
|
+
)
|
package/src/kit/types.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { SliceZone } from "@prismicio/client"
|
|
1
|
+
import type { SliceZone } from "@prismicio/client"
|
|
2
2
|
|
|
3
|
-
import type { ActiveSlice } from "../types"
|
|
4
|
-
|
|
5
|
-
import type { SimulatorManager } from "./SimulatorManager";
|
|
3
|
+
import type { ActiveSlice } from "../types"
|
|
4
|
+
import type { SimulatorManager } from "./SimulatorManager"
|
|
6
5
|
|
|
7
6
|
export enum StateEventType {
|
|
8
7
|
Slices = "slices",
|
|
@@ -11,20 +10,20 @@ export enum StateEventType {
|
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
export type StateEvents = {
|
|
14
|
-
[StateEventType.Slices]: SliceZone
|
|
15
|
-
[StateEventType.ActiveSlice]: ActiveSlice | null
|
|
16
|
-
[StateEventType.Message]: string
|
|
17
|
-
}
|
|
13
|
+
[StateEventType.Slices]: SliceZone
|
|
14
|
+
[StateEventType.ActiveSlice]: ActiveSlice | null
|
|
15
|
+
[StateEventType.Message]: string
|
|
16
|
+
}
|
|
18
17
|
|
|
19
18
|
export interface SliceSimulatorProps {
|
|
20
|
-
zIndex?: number
|
|
21
|
-
background?: string
|
|
19
|
+
zIndex?: number
|
|
20
|
+
background?: string
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
export interface SliceSimulatorState {
|
|
25
|
-
manager: SimulatorManager
|
|
26
|
-
slices: SliceZone
|
|
27
|
-
message: string
|
|
24
|
+
manager: SimulatorManager
|
|
25
|
+
slices: SliceZone
|
|
26
|
+
message: string
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
export type SliceSimulatorOptions = SliceSimulatorProps & SliceSimulatorState
|
|
29
|
+
export type SliceSimulatorOptions = SliceSimulatorProps & SliceSimulatorState
|
package/src/lib/EventEmitter.ts
CHANGED
|
@@ -1,41 +1,35 @@
|
|
|
1
|
-
export type Listener<T> = (event: T) => void
|
|
1
|
+
export type Listener<T> = (event: T) => void
|
|
2
2
|
|
|
3
3
|
export type EventMap = {
|
|
4
|
-
[K in string]: unknown
|
|
5
|
-
}
|
|
4
|
+
[K in string]: unknown
|
|
5
|
+
}
|
|
6
6
|
|
|
7
7
|
export abstract class EventEmitter<TEventMap = EventMap> {
|
|
8
8
|
private _listeners: {
|
|
9
|
-
[K in keyof TEventMap]?: [Listener<TEventMap[K]>, string | null][]
|
|
10
|
-
} = {}
|
|
9
|
+
[K in keyof TEventMap]?: [Listener<TEventMap[K]>, string | null][]
|
|
10
|
+
} = {}
|
|
11
11
|
|
|
12
12
|
on<TEventType extends keyof TEventMap>(
|
|
13
13
|
event: TEventType,
|
|
14
14
|
listener: Listener<TEventMap[TEventType]>,
|
|
15
15
|
key: string | null = null,
|
|
16
16
|
): void {
|
|
17
|
-
this._listeners[event] = [
|
|
18
|
-
...(this._listeners[event] ?? []),
|
|
19
|
-
[listener, key],
|
|
20
|
-
];
|
|
17
|
+
this._listeners[event] = [...(this._listeners[event] ?? []), [listener, key]]
|
|
21
18
|
}
|
|
22
19
|
|
|
23
20
|
off<TEventType extends keyof TEventMap>(
|
|
24
21
|
event: TEventType,
|
|
25
22
|
listenerOrKey: Listener<TEventMap[TEventType]> | string,
|
|
26
23
|
): void {
|
|
27
|
-
this._listeners[event] = (this._listeners[event] ?? []).filter(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
? listener !== listenerOrKey
|
|
31
|
-
: key !== listenerOrKey,
|
|
32
|
-
);
|
|
24
|
+
this._listeners[event] = (this._listeners[event] ?? []).filter(([listener, key]) =>
|
|
25
|
+
typeof listenerOrKey === "function" ? listener !== listenerOrKey : key !== listenerOrKey,
|
|
26
|
+
)
|
|
33
27
|
}
|
|
34
28
|
|
|
35
29
|
emit<TEventType extends keyof TEventMap>(
|
|
36
30
|
event: TEventType,
|
|
37
31
|
payload: TEventMap[TEventType],
|
|
38
32
|
): void {
|
|
39
|
-
(this._listeners[event] ?? []).forEach((listener) => listener[0](payload))
|
|
33
|
+
;(this._listeners[event] ?? []).forEach((listener) => listener[0](payload))
|
|
40
34
|
}
|
|
41
35
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// We need to polyfill process if it doesn't exist, such as in the browser.
|
|
2
2
|
if (typeof process === "undefined") {
|
|
3
|
-
globalThis.process = { env: {} } as typeof process
|
|
3
|
+
globalThis.process = { env: {} } as typeof process
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* `true` if in the production environment, `false` otherwise.
|
|
8
8
|
*
|
|
9
|
-
* This boolean can be used to perform actions only in development environments,
|
|
10
|
-
* such as logging.
|
|
9
|
+
* This boolean can be used to perform actions only in development environments, such as logging.
|
|
11
10
|
*/
|
|
12
|
-
export const __PRODUCTION__ = process.env.NODE_ENV === "production"
|
|
11
|
+
export const __PRODUCTION__ = process.env.NODE_ENV === "production"
|
package/src/lib/throttle.ts
CHANGED
|
@@ -3,24 +3,24 @@ export const throttle = <TFn extends (...args: any[]) => any>(
|
|
|
3
3
|
fn: TFn,
|
|
4
4
|
delay = 16,
|
|
5
5
|
): ((...args: Parameters<TFn>) => void) => {
|
|
6
|
-
let lastExec = 0
|
|
7
|
-
let timer: NodeJS.Timeout | null = null
|
|
6
|
+
let lastExec = 0
|
|
7
|
+
let timer: NodeJS.Timeout | null = null
|
|
8
8
|
|
|
9
9
|
return function (this: unknown, ...args: Parameters<TFn>) {
|
|
10
|
-
const now = Date.now()
|
|
11
|
-
const delta = now - lastExec
|
|
10
|
+
const now = Date.now()
|
|
11
|
+
const delta = now - lastExec
|
|
12
12
|
|
|
13
13
|
if (delta >= delay) {
|
|
14
|
-
fn.apply(this, args)
|
|
15
|
-
lastExec = now
|
|
14
|
+
fn.apply(this, args)
|
|
15
|
+
lastExec = now
|
|
16
16
|
} else {
|
|
17
17
|
if (timer) {
|
|
18
|
-
clearTimeout(timer)
|
|
18
|
+
clearTimeout(timer)
|
|
19
19
|
}
|
|
20
20
|
timer = setTimeout(() => {
|
|
21
|
-
fn.apply(this, args)
|
|
22
|
-
lastExec = Date.now()
|
|
23
|
-
}, delay - delta)
|
|
21
|
+
fn.apply(this, args)
|
|
22
|
+
lastExec = Date.now()
|
|
23
|
+
}, delay - delta)
|
|
24
24
|
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { SliceZone } from "@prismicio/client"
|
|
1
|
+
import type { SliceZone } from "@prismicio/client"
|
|
2
2
|
|
|
3
|
-
import { RequestMessage, ResponseMessage, Transaction } from "./channel"
|
|
3
|
+
import type { RequestMessage, ResponseMessage, Transaction } from "./channel"
|
|
4
4
|
|
|
5
5
|
export type ActiveSlice = {
|
|
6
|
-
rect: DOMRect
|
|
7
|
-
sliceID: string
|
|
8
|
-
variationID: string
|
|
9
|
-
index: number
|
|
10
|
-
}
|
|
6
|
+
rect: DOMRect
|
|
7
|
+
sliceID: string
|
|
8
|
+
variationID: string
|
|
9
|
+
index: number
|
|
10
|
+
}
|
|
11
11
|
|
|
12
12
|
export type SliceZoneSize = {
|
|
13
|
-
rect: DOMRect
|
|
14
|
-
}
|
|
13
|
+
rect: DOMRect
|
|
14
|
+
}
|
|
15
15
|
|
|
16
16
|
export enum APIRequestType {
|
|
17
17
|
SetActiveSlice = "setActiveSlice",
|
|
@@ -21,11 +21,11 @@ export enum APIRequestType {
|
|
|
21
21
|
export type APITransactions = {
|
|
22
22
|
[APIRequestType.SetActiveSlice]: Transaction<
|
|
23
23
|
RequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>
|
|
24
|
-
|
|
24
|
+
>
|
|
25
25
|
[APIRequestType.SetSliceZoneSize]: Transaction<
|
|
26
26
|
RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>
|
|
27
|
-
|
|
28
|
-
}
|
|
27
|
+
>
|
|
28
|
+
}
|
|
29
29
|
|
|
30
30
|
export enum ClientRequestType {
|
|
31
31
|
Ping = "ping",
|
|
@@ -37,21 +37,21 @@ export type ClientTransactions = {
|
|
|
37
37
|
[ClientRequestType.Ping]: Transaction<
|
|
38
38
|
RequestMessage<ClientRequestType.Ping>,
|
|
39
39
|
ResponseMessage<"pong">
|
|
40
|
-
|
|
40
|
+
>
|
|
41
41
|
|
|
42
42
|
[ClientRequestType.SetSliceZone]: Transaction<
|
|
43
43
|
RequestMessage<ClientRequestType.SetSliceZone, SliceZone>
|
|
44
|
-
|
|
44
|
+
>
|
|
45
45
|
|
|
46
46
|
[ClientRequestType.ScrollToSlice]: Transaction<
|
|
47
47
|
RequestMessage<
|
|
48
48
|
ClientRequestType.ScrollToSlice,
|
|
49
49
|
{
|
|
50
|
-
sliceIndex: number
|
|
51
|
-
behavior?: "auto" | "smooth"
|
|
52
|
-
block?: "start" | "center" | "end" | "nearest"
|
|
53
|
-
inline?: "start" | "center" | "end" | "nearest"
|
|
50
|
+
sliceIndex: number
|
|
51
|
+
behavior?: "auto" | "smooth"
|
|
52
|
+
block?: "start" | "center" | "end" | "nearest"
|
|
53
|
+
inline?: "start" | "center" | "end" | "nearest"
|
|
54
54
|
}
|
|
55
55
|
>
|
|
56
|
-
|
|
57
|
-
}
|
|
56
|
+
>
|
|
57
|
+
}
|
package/dist/channel/index.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { ChannelNetwork, channelNetworkDefaultOptions } from "./ChannelNetwork";
|
|
2
|
-
export type { PostRequestOptions, ChannelNetworkOptions, } from "./ChannelNetwork";
|
|
3
|
-
export { ChannelEmitter, channelEmitterDefaultOptions } from "./ChannelEmitter";
|
|
4
|
-
export type { ChannelEmitterOptions, AllChannelEmitterOptions, } from "./ChannelEmitter";
|
|
5
|
-
export { ChannelReceiver, channelReceiverDefaultOptions, } from "./ChannelReceiver";
|
|
6
|
-
export type { ChannelReceiverOptions, AllChannelReceiverOptions, } from "./ChannelReceiver";
|
|
7
|
-
export { createRequestMessage, createSuccessResponseMessage, createErrorResponseMessage, validateMessage, isRequestMessage, isResponseMessage, isSuccessResponseMessage, isErrorResponseMessage, } from "./messages";
|
|
8
|
-
export { ResponseError, ConnectionTimeoutError, TooManyConcurrentRequestsError, RequestTimeoutError, NotReadyError, PortNotSetError, ChannelNotSetError, } from "./errors";
|
|
9
|
-
export { InternalEmitterRequestType, InternalReceiverRequestType, } from "./types";
|
|
10
|
-
export type { RequestMessage, ResponseMessage, ErrorResponseMessage, SuccessResponseMessage, ExtractSuccessResponseMessage, ExtractErrorResponseMessage, UnknownRequestMessage, UnknownSuccessResponseMessage, UnknownErrorResponseMessage, UnknownResponseMessage, UnknownMessage, Transaction, TransactionMethod, TransactionHandler, TransactionsMethods, TransactionsHandlers, UnknownTransaction, UnknownTransactionMethod, UnknownTransactionHandler, InternalEmitterTransactions, InternalReceiverTransactions, } from "./types";
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/dist/kit/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
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";
|
package/dist/kit.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kit.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/kit.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kit.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
package/dist/lib/throttle.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const throttle: <TFn extends (...args: any[]) => any>(fn: TFn, delay?: number) => (...args: Parameters<TFn>) => void;
|