@tldraw/editor 3.16.0-canary.fa3749606e52 → 3.16.0-internal.51e99e128bd4
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/dist-cjs/index.d.ts +84 -9
- package/dist-cjs/index.js +3 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
- package/dist-cjs/lib/config/TLUserPreferences.js +9 -3
- package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +46 -24
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +9 -4
- package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
- package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
- package/dist-cjs/lib/exports/getSvgJsx.js +1 -2
- package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
- package/dist-cjs/lib/license/Watermark.js +6 -6
- package/dist-cjs/lib/license/Watermark.js.map +1 -1
- package/dist-cjs/lib/options.js +7 -0
- package/dist-cjs/lib/options.js.map +2 -2
- package/dist-cjs/lib/utils/EditorAtom.js +45 -0
- package/dist-cjs/lib/utils/EditorAtom.js.map +7 -0
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +84 -9
- package/dist-esm/index.mjs +3 -1
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
- package/dist-esm/lib/config/TLUserPreferences.mjs +9 -3
- package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +46 -24
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +9 -4
- package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
- package/dist-esm/lib/exports/getSvgJsx.mjs +2 -2
- package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
- package/dist-esm/lib/license/Watermark.mjs +6 -6
- package/dist-esm/lib/license/Watermark.mjs.map +1 -1
- package/dist-esm/lib/options.mjs +7 -0
- package/dist-esm/lib/options.mjs.map +2 -2
- package/dist-esm/lib/utils/EditorAtom.mjs +25 -0
- package/dist-esm/lib/utils/EditorAtom.mjs.map +7 -0
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/editor.css +293 -288
- package/package.json +14 -37
- package/src/index.ts +2 -0
- package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
- package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
- package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
- package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
- package/src/lib/config/TLUserPreferences.ts +8 -1
- package/src/lib/editor/Editor.test.ts +12 -11
- package/src/lib/editor/Editor.ts +70 -47
- package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
- package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
- package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
- package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
- package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
- package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
- package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
- package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
- package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
- package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +34 -26
- package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +6 -1
- package/src/lib/editor/types/misc-types.ts +54 -1
- package/src/lib/exports/getSvgJsx.tsx +2 -2
- package/src/lib/license/LicenseManager.test.ts +3 -1
- package/src/lib/license/Watermark.test.tsx +2 -1
- package/src/lib/license/Watermark.tsx +6 -6
- package/src/lib/options.ts +8 -0
- package/src/lib/utils/EditorAtom.ts +37 -0
- package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
- package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
- package/src/version.ts +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BoxModel } from '@tldraw/tlschema'
|
|
1
|
+
import { BoxModel, TLShape } from '@tldraw/tlschema'
|
|
2
2
|
import { Box } from '../../primitives/Box'
|
|
3
3
|
import { VecLike } from '../../primitives/Vec'
|
|
4
4
|
|
|
@@ -206,3 +206,56 @@ export interface TLUpdatePointerOptions {
|
|
|
206
206
|
isPen?: boolean
|
|
207
207
|
button?: number
|
|
208
208
|
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Options to {@link Editor.getShapeAtPoint}.
|
|
212
|
+
*
|
|
213
|
+
* @public
|
|
214
|
+
*/
|
|
215
|
+
export interface TLGetShapeAtPointOptions {
|
|
216
|
+
/**
|
|
217
|
+
* The margin to apply to the shape.
|
|
218
|
+
* If a number, it will be applied to both the inside and outside of the shape.
|
|
219
|
+
* If an array, the first element will be applied to the inside of the shape, and the second element will be applied to the outside.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```ts
|
|
223
|
+
* // Get the shape at the center of the screen
|
|
224
|
+
* const shape = editor.getShapeAtProps({
|
|
225
|
+
* margin: 10,
|
|
226
|
+
* })
|
|
227
|
+
*
|
|
228
|
+
* // Get the shape at the center of the screen with a 10px inner margin and a 5px outer margin
|
|
229
|
+
* const shape = editor.getShapeAtProps({
|
|
230
|
+
* margin: [10, 5],
|
|
231
|
+
* })
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
margin?: number | [number, number]
|
|
235
|
+
/**
|
|
236
|
+
* Whether to register hits inside of shapes (beyond the margin), such as the inside of a solid shape.
|
|
237
|
+
*/
|
|
238
|
+
hitInside?: boolean
|
|
239
|
+
/**
|
|
240
|
+
* Whether to register hits on locked shapes.
|
|
241
|
+
*/
|
|
242
|
+
hitLocked?: boolean
|
|
243
|
+
/**
|
|
244
|
+
* Whether to register hits on labels.
|
|
245
|
+
*/
|
|
246
|
+
hitLabels?: boolean
|
|
247
|
+
/**
|
|
248
|
+
* Whether to only return hits on shapes that are currently being rendered.
|
|
249
|
+
* todo: rename this to hitCulled or hitNotRendering
|
|
250
|
+
*/
|
|
251
|
+
renderingOnly?: boolean
|
|
252
|
+
/**
|
|
253
|
+
* Whether to register hits on the inside of frame shapes.
|
|
254
|
+
* todo: rename this to hitInsideFrames
|
|
255
|
+
*/
|
|
256
|
+
hitFrameInside?: boolean
|
|
257
|
+
/**
|
|
258
|
+
* A filter function to apply to the shapes.
|
|
259
|
+
*/
|
|
260
|
+
filter?(shape: TLShape): boolean
|
|
261
|
+
}
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
TLGroupShape,
|
|
5
5
|
TLShape,
|
|
6
6
|
TLShapeId,
|
|
7
|
+
getColorValue,
|
|
7
8
|
getDefaultColorTheme,
|
|
8
9
|
} from '@tldraw/tlschema'
|
|
9
10
|
import { hasOwnProperty, promiseWithResolve, uniqueId } from '@tldraw/utils'
|
|
@@ -373,8 +374,7 @@ function SvgExport({
|
|
|
373
374
|
| { options: { showColors: boolean } }
|
|
374
375
|
if (frameShapeUtil?.options.showColors) {
|
|
375
376
|
const shape = editor.getShape(singleFrameShapeId)! as TLFrameShape
|
|
376
|
-
|
|
377
|
-
backgroundColor = color.frame.fill
|
|
377
|
+
backgroundColor = getColorValue(theme, shape.props.color, 'frameFill')
|
|
378
378
|
} else {
|
|
379
379
|
backgroundColor = theme.solid
|
|
380
380
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import crypto from 'crypto'
|
|
2
|
+
import { vi } from 'vitest'
|
|
2
3
|
import { publishDates } from '../../version'
|
|
3
4
|
import { str2ab } from '../utils/licensing'
|
|
4
5
|
import {
|
|
@@ -9,8 +10,9 @@ import {
|
|
|
9
10
|
ValidLicenseKeyResult,
|
|
10
11
|
} from './LicenseManager'
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
vi.mock('../../version', () => {
|
|
13
14
|
return {
|
|
15
|
+
version: '3.15.1',
|
|
14
16
|
publishDates: {
|
|
15
17
|
major: '2024-06-28T10:56:07.893Z',
|
|
16
18
|
minor: '2024-07-02T16:49:50.397Z',
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { act, render, waitFor } from '@testing-library/react'
|
|
2
|
+
import { vi } from 'vitest'
|
|
2
3
|
import { TldrawEditor } from '../TldrawEditor'
|
|
3
4
|
import { LicenseManager } from './LicenseManager'
|
|
4
5
|
|
|
5
6
|
let mockLicenseState = 'unlicensed'
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
vi.mock('./useLicenseManagerState', () => ({
|
|
8
9
|
useLicenseManagerState: () => mockLicenseState,
|
|
9
10
|
}))
|
|
10
11
|
|
|
@@ -86,15 +86,15 @@ To remove the watermark, please purchase a license at tldraw.dev.
|
|
|
86
86
|
|
|
87
87
|
.${className} {
|
|
88
88
|
position: absolute;
|
|
89
|
-
bottom: var(--space-2);
|
|
90
|
-
right: var(--space-2);
|
|
89
|
+
bottom: var(--tl-space-2);
|
|
90
|
+
right: var(--tl-space-2);
|
|
91
91
|
width: 96px;
|
|
92
92
|
height: 32px;
|
|
93
93
|
display: flex;
|
|
94
94
|
align-items: center;
|
|
95
95
|
justify-content: center;
|
|
96
|
-
z-index: var(--layer-watermark) !important;
|
|
97
|
-
background-color: color-mix(in srgb, var(--color-background) 62%, transparent);
|
|
96
|
+
z-index: var(--tl-layer-watermark) !important;
|
|
97
|
+
background-color: color-mix(in srgb, var(--tl-color-background) 62%, transparent);
|
|
98
98
|
opacity: 1;
|
|
99
99
|
border-radius: 5px;
|
|
100
100
|
pointer-events: all;
|
|
@@ -108,7 +108,7 @@ To remove the watermark, please purchase a license at tldraw.dev.
|
|
|
108
108
|
height: 32px;
|
|
109
109
|
pointer-events: all;
|
|
110
110
|
cursor: inherit;
|
|
111
|
-
color: var(--color-text);
|
|
111
|
+
color: var(--tl-color-text);
|
|
112
112
|
opacity: .38;
|
|
113
113
|
border: 0;
|
|
114
114
|
padding: 0;
|
|
@@ -137,7 +137,7 @@ To remove the watermark, please purchase a license at tldraw.dev.
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
.${className}:hover {
|
|
140
|
-
background-color: var(--color-background);
|
|
140
|
+
background-color: var(--tl-color-background);
|
|
141
141
|
transition: background-color 0.2s ease-in-out;
|
|
142
142
|
transition-delay: 0.32s;
|
|
143
143
|
}
|
package/src/lib/options.ts
CHANGED
|
@@ -27,6 +27,8 @@ export interface TldrawOptions {
|
|
|
27
27
|
readonly multiClickDurationMs: number
|
|
28
28
|
readonly coarseDragDistanceSquared: number
|
|
29
29
|
readonly dragDistanceSquared: number
|
|
30
|
+
readonly uiDragDistanceSquared: number
|
|
31
|
+
readonly uiCoarseDragDistanceSquared: number
|
|
30
32
|
readonly defaultSvgPadding: number
|
|
31
33
|
readonly cameraSlideFriction: number
|
|
32
34
|
readonly gridSteps: readonly {
|
|
@@ -53,6 +55,7 @@ export interface TldrawOptions {
|
|
|
53
55
|
readonly flattenImageBoundsPadding: number
|
|
54
56
|
readonly laserDelayMs: number
|
|
55
57
|
readonly maxExportDelayMs: number
|
|
58
|
+
readonly tooltipDelayMs: number
|
|
56
59
|
/**
|
|
57
60
|
* How long should previews created by {@link Editor.createTemporaryAssetPreview} last before
|
|
58
61
|
* they expire? Defaults to 3 minutes.
|
|
@@ -97,6 +100,10 @@ export const defaultTldrawOptions = {
|
|
|
97
100
|
multiClickDurationMs: 200,
|
|
98
101
|
coarseDragDistanceSquared: 36, // 6 squared
|
|
99
102
|
dragDistanceSquared: 16, // 4 squared
|
|
103
|
+
uiDragDistanceSquared: 16, // 4 squared
|
|
104
|
+
// it's really easy to accidentally drag from the toolbar on mobile, so we use a much larger
|
|
105
|
+
// threshold than usual here to try and prevent accidental drags.
|
|
106
|
+
uiCoarseDragDistanceSquared: 625, // 25 squared
|
|
100
107
|
defaultSvgPadding: 32,
|
|
101
108
|
cameraSlideFriction: 0.09,
|
|
102
109
|
gridSteps: [
|
|
@@ -124,6 +131,7 @@ export const defaultTldrawOptions = {
|
|
|
124
131
|
flattenImageBoundsPadding: 16,
|
|
125
132
|
laserDelayMs: 1200,
|
|
126
133
|
maxExportDelayMs: 5000,
|
|
134
|
+
tooltipDelayMs: 700,
|
|
127
135
|
temporaryAssetPreviewLifetimeMs: 180000,
|
|
128
136
|
actionShortcutsLocation: 'swap',
|
|
129
137
|
createTextOnCanvasDoubleClick: true,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { atom, Atom } from '@tldraw/state'
|
|
2
|
+
import { WeakCache } from '@tldraw/utils'
|
|
3
|
+
import { Editor } from '../editor/Editor'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* An Atom that is scoped to the lifetime of an Editor.
|
|
7
|
+
*
|
|
8
|
+
* This is useful for storing UI state for tldraw applications. Keeping state scoped to an editor
|
|
9
|
+
* instead of stored in a global atom can prevent issues with state being shared between editors
|
|
10
|
+
* when navigating between pages, or when multiple editor instances are used on the same page.
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export class EditorAtom<T> {
|
|
15
|
+
private states = new WeakCache<Editor, Atom<T>>()
|
|
16
|
+
|
|
17
|
+
constructor(
|
|
18
|
+
private name: string,
|
|
19
|
+
private getInitialState: (editor: Editor) => T
|
|
20
|
+
) {}
|
|
21
|
+
|
|
22
|
+
getAtom(editor: Editor): Atom<T> {
|
|
23
|
+
return this.states.get(editor, () => atom(this.name, this.getInitialState(editor)))
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get(editor: Editor): T {
|
|
27
|
+
return this.getAtom(editor).get()
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
update(editor: Editor, update: (state: T) => T): T {
|
|
31
|
+
return this.getAtom(editor).update(update)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
set(editor: Editor, state: T): T {
|
|
35
|
+
return this.getAtom(editor).set(state)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createTLSchema } from '@tldraw/tlschema'
|
|
2
2
|
import { openDB } from 'idb'
|
|
3
|
+
import { vi } from 'vitest'
|
|
3
4
|
import { hardReset } from './hardReset'
|
|
4
5
|
import { getAllIndexDbNames, LocalIndexedDb } from './LocalIndexedDb'
|
|
5
6
|
|
|
6
7
|
const schema = createTLSchema({ shapes: {}, bindings: {} })
|
|
7
8
|
describe('LocalIndexedDb', () => {
|
|
8
9
|
beforeEach(() => {
|
|
9
|
-
|
|
10
|
+
vi.useRealTimers()
|
|
10
11
|
})
|
|
11
12
|
afterEach(async () => {
|
|
12
13
|
await hardReset({ shouldReload: false })
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PageRecordType } from '@tldraw/tlschema'
|
|
2
2
|
import { IndexKey, promiseWithResolve } from '@tldraw/utils'
|
|
3
|
-
import {
|
|
3
|
+
import { Mock, vi } from 'vitest'
|
|
4
4
|
import { createTLStore } from '../../config/createTLStore'
|
|
5
5
|
import { TLLocalSyncClient } from './TLLocalSyncClient'
|
|
6
6
|
import { hardReset } from './hardReset'
|
|
@@ -10,20 +10,20 @@ class BroadcastChannelMock {
|
|
|
10
10
|
constructor(_name: string) {
|
|
11
11
|
// noop
|
|
12
12
|
}
|
|
13
|
-
postMessage =
|
|
13
|
+
postMessage = vi.fn((_msg: any) => {
|
|
14
14
|
// noop
|
|
15
15
|
})
|
|
16
|
-
close =
|
|
16
|
+
close = vi.fn(() => {
|
|
17
17
|
// noop
|
|
18
18
|
})
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function testClient(channel = new BroadcastChannelMock('test')) {
|
|
22
22
|
const store = createTLStore({ shapeUtils: [], bindingUtils: [] })
|
|
23
|
-
const onLoad =
|
|
23
|
+
const onLoad = vi.fn(() => {
|
|
24
24
|
return
|
|
25
25
|
})
|
|
26
|
-
const onLoadError =
|
|
26
|
+
const onLoadError = vi.fn(() => {
|
|
27
27
|
return
|
|
28
28
|
})
|
|
29
29
|
const client = new TLLocalSyncClient(
|
|
@@ -36,26 +36,26 @@ function testClient(channel = new BroadcastChannelMock('test')) {
|
|
|
36
36
|
channel
|
|
37
37
|
)
|
|
38
38
|
|
|
39
|
-
client.db.storeSnapshot =
|
|
40
|
-
client.db.storeChanges =
|
|
39
|
+
client.db.storeSnapshot = vi.fn(() => Promise.resolve())
|
|
40
|
+
client.db.storeChanges = vi.fn(() => Promise.resolve())
|
|
41
41
|
|
|
42
42
|
return {
|
|
43
|
-
client: client as { db: { storeSnapshot:
|
|
43
|
+
client: client as { db: { storeSnapshot: Mock; storeChanges: Mock } } & typeof client,
|
|
44
44
|
store,
|
|
45
45
|
onLoad,
|
|
46
46
|
onLoadError,
|
|
47
47
|
channel,
|
|
48
48
|
tick: async () => {
|
|
49
|
-
|
|
49
|
+
vi.advanceTimersByTime(500)
|
|
50
50
|
await Promise.resolve()
|
|
51
51
|
await client.db.pending()
|
|
52
|
-
|
|
52
|
+
vi.advanceTimersByTime(500)
|
|
53
53
|
await Promise.resolve()
|
|
54
54
|
},
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
const reloadMock =
|
|
58
|
+
const reloadMock = vi.fn()
|
|
59
59
|
|
|
60
60
|
beforeAll(() => {
|
|
61
61
|
Object.defineProperty(window, 'location', {
|
|
@@ -65,14 +65,14 @@ beforeAll(() => {
|
|
|
65
65
|
})
|
|
66
66
|
|
|
67
67
|
beforeEach(() => {
|
|
68
|
-
|
|
68
|
+
vi.clearAllMocks()
|
|
69
69
|
})
|
|
70
70
|
|
|
71
71
|
afterEach(async () => {
|
|
72
72
|
await hardReset({ shouldReload: false })
|
|
73
73
|
})
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
vi.useFakeTimers()
|
|
76
76
|
|
|
77
77
|
test('the client connects on instantiation, announcing its schema', async () => {
|
|
78
78
|
const { channel, tick } = testClient()
|
|
@@ -86,7 +86,7 @@ test('the client connects on instantiation, announcing its schema', async () =>
|
|
|
86
86
|
test('when a client receives an announce with a newer schema version it reloads itself', async () => {
|
|
87
87
|
const { client, channel, onLoadError, tick } = testClient()
|
|
88
88
|
await tick()
|
|
89
|
-
|
|
89
|
+
vi.advanceTimersByTime(10000)
|
|
90
90
|
expect(reloadMock).not.toHaveBeenCalled()
|
|
91
91
|
channel.onmessage?.({
|
|
92
92
|
data: {
|
|
@@ -104,7 +104,7 @@ test('when a client receives an announce with a newer schema version it reloads
|
|
|
104
104
|
test('when a client receives an announce with a newer schema version shortly after loading it does not reload but instead reports a loadError', async () => {
|
|
105
105
|
const { client, channel, onLoadError, tick } = testClient()
|
|
106
106
|
await tick()
|
|
107
|
-
|
|
107
|
+
vi.advanceTimersByTime(1000)
|
|
108
108
|
expect(reloadMock).not.toHaveBeenCalled()
|
|
109
109
|
channel.onmessage?.({
|
|
110
110
|
data: {
|
package/src/version.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// This file is automatically generated by internal/scripts/refresh-assets.ts.
|
|
2
2
|
// Do not edit manually. Or do, I'm a comment, not a cop.
|
|
3
3
|
|
|
4
|
-
export const version = '3.16.0-
|
|
4
|
+
export const version = '3.16.0-internal.51e99e128bd4'
|
|
5
5
|
export const publishDates = {
|
|
6
6
|
major: '2024-09-13T14:36:29.063Z',
|
|
7
|
-
minor: '2025-08-
|
|
8
|
-
patch: '2025-08-
|
|
7
|
+
minor: '2025-08-19T10:06:54.740Z',
|
|
8
|
+
patch: '2025-08-19T10:06:54.740Z',
|
|
9
9
|
}
|