mage-obsidian 2.4.1 → 2.6.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.
- package/README.md +2 -0
- package/dist/cli/buildThemes.js +6 -0
- package/dist/cli/buildThemes.js.map +1 -1
- package/dist/cli/islandSsr.d.ts +2 -0
- package/dist/cli/islandSsr.d.ts.map +1 -0
- package/dist/cli/islandSsr.js +68 -0
- package/dist/cli/islandSsr.js.map +1 -0
- package/dist/config/default.d.ts +3 -0
- package/dist/config/default.d.ts.map +1 -1
- package/dist/config/default.js +8 -0
- package/dist/config/default.js.map +1 -1
- package/dist/core/cmsBaseline.d.ts +16 -0
- package/dist/core/cmsBaseline.d.ts.map +1 -0
- package/dist/core/cmsBaseline.js +36 -0
- package/dist/core/cmsBaseline.js.map +1 -0
- package/dist/core/cssResolver.d.ts.map +1 -1
- package/dist/core/cssResolver.js +19 -1
- package/dist/core/cssResolver.js.map +1 -1
- package/dist/core/islandSsr.d.ts +40 -0
- package/dist/core/islandSsr.d.ts.map +1 -0
- package/dist/core/islandSsr.js +58 -0
- package/dist/core/islandSsr.js.map +1 -0
- package/dist/runtime/activity.d.ts +31 -0
- package/dist/runtime/activity.d.ts.map +1 -0
- package/dist/runtime/activity.js +89 -0
- package/dist/runtime/activity.js.map +1 -0
- package/dist/runtime/eventManager.d.ts +49 -0
- package/dist/runtime/eventManager.d.ts.map +1 -0
- package/dist/runtime/eventManager.js +124 -0
- package/dist/runtime/eventManager.js.map +1 -0
- package/dist/runtime/hydrationDiff.d.ts +28 -0
- package/dist/runtime/hydrationDiff.d.ts.map +1 -0
- package/dist/runtime/hydrationDiff.js +53 -0
- package/dist/runtime/hydrationDiff.js.map +1 -0
- package/dist/runtime/islands.d.ts +34 -9
- package/dist/runtime/islands.d.ts.map +1 -1
- package/dist/runtime/islands.js +48 -15
- package/dist/runtime/islands.js.map +1 -1
- package/dist/runtime/lifecycleEvents.d.ts +44 -0
- package/dist/runtime/lifecycleEvents.d.ts.map +1 -0
- package/dist/runtime/lifecycleEvents.js +13 -0
- package/dist/runtime/lifecycleEvents.js.map +1 -0
- package/dist/runtime/mutationEvent.d.ts +20 -0
- package/dist/runtime/mutationEvent.d.ts.map +1 -0
- package/dist/runtime/mutationEvent.js +10 -0
- package/dist/runtime/mutationEvent.js.map +1 -0
- package/dist/runtime/sectionStoreCore.d.ts +1 -0
- package/dist/runtime/sectionStoreCore.d.ts.map +1 -1
- package/dist/runtime/sectionStoreCore.js +7 -0
- package/dist/runtime/sectionStoreCore.js.map +1 -1
- package/dist/runtime/uxConfig.d.ts +19 -0
- package/dist/runtime/uxConfig.d.ts.map +1 -0
- package/dist/runtime/uxConfig.js +15 -0
- package/dist/runtime/uxConfig.js.map +1 -0
- package/package.json +7 -3
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
const DEFAULT_SORT_ORDER = 10;
|
|
2
|
+
const SLOW_OBSERVER_MS = 16;
|
|
3
|
+
export class EventManager {
|
|
4
|
+
observers = {};
|
|
5
|
+
hooks = [];
|
|
6
|
+
stickyData = new Map();
|
|
7
|
+
deps;
|
|
8
|
+
debugging;
|
|
9
|
+
constructor(deps = {}) {
|
|
10
|
+
this.deps = deps;
|
|
11
|
+
this.debugging = deps.debug ?? false;
|
|
12
|
+
}
|
|
13
|
+
observe(event, observer, { name, sortOrder = DEFAULT_SORT_ORDER } = {}) {
|
|
14
|
+
const entry = {
|
|
15
|
+
name: name ?? `${event}_${(this.observers[event]?.length ?? 0) + 1}`,
|
|
16
|
+
observer,
|
|
17
|
+
sortOrder,
|
|
18
|
+
};
|
|
19
|
+
const entries = (this.observers[event] ??= []);
|
|
20
|
+
entries.push(entry);
|
|
21
|
+
entries.sort((a, b) => a.sortOrder - b.sortOrder);
|
|
22
|
+
const remembered = this.stickyData.get(event);
|
|
23
|
+
if (remembered) {
|
|
24
|
+
void this.invoke(event, entry, remembered);
|
|
25
|
+
}
|
|
26
|
+
return () => {
|
|
27
|
+
const at = entries.indexOf(entry);
|
|
28
|
+
if (at > -1) {
|
|
29
|
+
entries.splice(at, 1);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
observeOnce(event, observer, options = {}) {
|
|
34
|
+
let spent = false;
|
|
35
|
+
let off = () => {
|
|
36
|
+
spent = true;
|
|
37
|
+
};
|
|
38
|
+
const remove = this.observe(event, ((data) => {
|
|
39
|
+
off();
|
|
40
|
+
return observer(data);
|
|
41
|
+
}), options);
|
|
42
|
+
if (spent) {
|
|
43
|
+
remove();
|
|
44
|
+
}
|
|
45
|
+
off = remove;
|
|
46
|
+
return remove;
|
|
47
|
+
}
|
|
48
|
+
async dispatch(event, data, options = {}) {
|
|
49
|
+
if (options.sticky) {
|
|
50
|
+
this.stickyData.set(event, data);
|
|
51
|
+
}
|
|
52
|
+
this.runHooks("start", event, data, options);
|
|
53
|
+
if (this.debugging) {
|
|
54
|
+
console.debug(`[MageObsidian] → ${event}`, data);
|
|
55
|
+
}
|
|
56
|
+
// Snapshot: an observer may unsubscribe mid-dispatch, and splicing the
|
|
57
|
+
// live array would make the loop skip the entry that follows it.
|
|
58
|
+
for (const entry of (this.observers[event] ?? []).slice()) {
|
|
59
|
+
await this.invoke(event, entry, data);
|
|
60
|
+
}
|
|
61
|
+
this.runHooks("end", event, data, options);
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
sticky(event) {
|
|
65
|
+
return this.stickyData.get(event);
|
|
66
|
+
}
|
|
67
|
+
onDispatch(hook) {
|
|
68
|
+
this.hooks.push(hook);
|
|
69
|
+
return () => {
|
|
70
|
+
const at = this.hooks.indexOf(hook);
|
|
71
|
+
if (at > -1) {
|
|
72
|
+
this.hooks.splice(at, 1);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
debug(enabled = true) {
|
|
77
|
+
this.debugging = enabled;
|
|
78
|
+
}
|
|
79
|
+
observersOf(event) {
|
|
80
|
+
return (this.observers[event] ?? []).map((entry) => entry.name);
|
|
81
|
+
}
|
|
82
|
+
async invoke(event, entry, data) {
|
|
83
|
+
const startedAt = this.debugging ? this.clock() : 0;
|
|
84
|
+
try {
|
|
85
|
+
await entry.observer(data);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
this.report(event, entry.name, error);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (!this.debugging) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const elapsed = this.clock() - startedAt;
|
|
95
|
+
if (elapsed > SLOW_OBSERVER_MS) {
|
|
96
|
+
console.warn(`[MageObsidian] Observer "${entry.name}" of "${event}" took ` +
|
|
97
|
+
`${elapsed.toFixed(1)}ms and delayed the interaction that dispatched it.`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
runHooks(phase, event, data, options) {
|
|
101
|
+
for (const hook of this.hooks.slice()) {
|
|
102
|
+
try {
|
|
103
|
+
hook[phase]?.(event, data, options);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
this.report(event, `hook:${phase}`, error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
clock() {
|
|
111
|
+
if (this.deps.now) {
|
|
112
|
+
return this.deps.now();
|
|
113
|
+
}
|
|
114
|
+
return typeof performance !== "undefined" ? performance.now() : 0;
|
|
115
|
+
}
|
|
116
|
+
report(event, name, error) {
|
|
117
|
+
if (this.deps.onError) {
|
|
118
|
+
this.deps.onError(event, name, error);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
console.error(`[MageObsidian] Observer "${name}" of "${event}" threw and was skipped.`, error);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=eventManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../src/runtime/eventManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares an island's markup either side of hydration.
|
|
3
|
+
*
|
|
4
|
+
* A hydration that matched leaves the DOM untouched: Vue compares `class` as a
|
|
5
|
+
* set and `style` as a map, and a difference there only logs. Anything Vue
|
|
6
|
+
* cannot adopt goes through `handleMismatch`, which removes the server node and
|
|
7
|
+
* patches the right one in — so the server markup having changed IS the
|
|
8
|
+
* mismatch, exactly and without fixtures.
|
|
9
|
+
*
|
|
10
|
+
* Pure string work, so the browser side stays in the module's bootstrap and this
|
|
11
|
+
* is unit-testable in Node.
|
|
12
|
+
*/
|
|
13
|
+
export interface HydrationMismatch {
|
|
14
|
+
/** Index of the first differing character. */
|
|
15
|
+
offset: number;
|
|
16
|
+
/** Excerpt of the server markup around the divergence. */
|
|
17
|
+
server: string;
|
|
18
|
+
/** The same window of the markup Vue ended up with. */
|
|
19
|
+
client: string;
|
|
20
|
+
/** Where the divergence sits inside both excerpts. */
|
|
21
|
+
column: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function diffHydration(server: string, client: string, context?: number): HydrationMismatch | null;
|
|
24
|
+
/**
|
|
25
|
+
* Render a mismatch as the aligned three-line block a console shows best.
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatMismatch(mismatch: HydrationMismatch, label: string): string;
|
|
28
|
+
//# sourceMappingURL=hydrationDiff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrationDiff.d.ts","sourceRoot":"","sources":["../../src/runtime/hydrationDiff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,iBAAiB;IAC9B,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;CAClB;AAeD,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,SAAU,GAClB,iBAAiB,GAAG,IAAI,CAoB1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASjF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares an island's markup either side of hydration.
|
|
3
|
+
*
|
|
4
|
+
* A hydration that matched leaves the DOM untouched: Vue compares `class` as a
|
|
5
|
+
* set and `style` as a map, and a difference there only logs. Anything Vue
|
|
6
|
+
* cannot adopt goes through `handleMismatch`, which removes the server node and
|
|
7
|
+
* patches the right one in — so the server markup having changed IS the
|
|
8
|
+
* mismatch, exactly and without fixtures.
|
|
9
|
+
*
|
|
10
|
+
* Pure string work, so the browser side stays in the module's bootstrap and this
|
|
11
|
+
* is unit-testable in Node.
|
|
12
|
+
*/
|
|
13
|
+
const CONTEXT = 60;
|
|
14
|
+
/**
|
|
15
|
+
* Back up to the tag the divergence sits in, so an excerpt starts somewhere a
|
|
16
|
+
* reader can orient on instead of mid-attribute.
|
|
17
|
+
*/
|
|
18
|
+
function tagBoundary(text, offset, context) {
|
|
19
|
+
const floor = Math.max(0, offset - context);
|
|
20
|
+
const opening = text.lastIndexOf("<", offset);
|
|
21
|
+
return opening >= floor ? opening : floor;
|
|
22
|
+
}
|
|
23
|
+
export function diffHydration(server, client, context = CONTEXT) {
|
|
24
|
+
if (server === client) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const shared = Math.min(server.length, client.length);
|
|
28
|
+
let offset = 0;
|
|
29
|
+
while (offset < shared && server[offset] === client[offset]) {
|
|
30
|
+
offset += 1;
|
|
31
|
+
}
|
|
32
|
+
const start = tagBoundary(server, offset, context);
|
|
33
|
+
const end = offset + context;
|
|
34
|
+
return {
|
|
35
|
+
offset,
|
|
36
|
+
column: offset - start,
|
|
37
|
+
server: server.slice(start, end),
|
|
38
|
+
client: client.slice(start, end),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Render a mismatch as the aligned three-line block a console shows best.
|
|
43
|
+
*/
|
|
44
|
+
export function formatMismatch(mismatch, label) {
|
|
45
|
+
const caret = `${" ".repeat("server: ".length + mismatch.column)}^ first difference at offset ${mismatch.offset}`;
|
|
46
|
+
return [
|
|
47
|
+
`[MageObsidian] Island "${label}" hydrated with a mismatch — Vue replaced the server markup.`,
|
|
48
|
+
`server: ${mismatch.server}`,
|
|
49
|
+
`client: ${mismatch.client}`,
|
|
50
|
+
caret,
|
|
51
|
+
].join("\n");
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=hydrationDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrationDiff.js","sourceRoot":"","sources":["../../src/runtime/hydrationDiff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,MAAc,EAAE,OAAe;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE9C,OAAO,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CACzB,MAAc,EACd,MAAc,EACd,OAAO,GAAG,OAAO;IAEjB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;IAE7B,OAAO;QACH,MAAM;QACN,MAAM,EAAE,MAAM,GAAG,KAAK;QACtB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;KACnC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAA2B,EAAE,KAAa;IACrE,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAElH,OAAO;QACH,0BAA0B,KAAK,8DAA8D;QAC7F,WAAW,QAAQ,CAAC,MAAM,EAAE;QAC5B,WAAW,QAAQ,CAAC,MAAM,EAAE;QAC5B,KAAK;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -1,30 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Framework island runtime — the browser side of `renderVueComponent`.
|
|
3
3
|
*
|
|
4
|
-
* PHP emits
|
|
5
|
-
* (`<div data-mage-island data-component data-props data-strategy>`)
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* PHP emits a marker per component
|
|
5
|
+
* (`<div data-mage-island data-component data-props data-strategy>`), optionally
|
|
6
|
+
* carrying the component's server-rendered initial state; this module turns each
|
|
7
|
+
* marker into a mounted Vue app. Every island is its own app (preserving
|
|
8
|
+
* isolation), but the Vue runtime and the i18n plugin are loaded once per page
|
|
9
|
+
* and shared, and "visible" islands hydrate only when they enter the viewport —
|
|
10
|
+
* so below-the-fold components cost nothing until scrolled to.
|
|
10
11
|
*
|
|
11
12
|
* All side effects (dynamic import, app creation, plugin wiring, viewport
|
|
12
13
|
* observation) are injected, so the discovery/hydration logic is unit-testable
|
|
13
14
|
* in Node without a DOM, a bundler, or Vue. The concrete wiring lives in the
|
|
14
|
-
* module's `web/js/islands.
|
|
15
|
+
* module's `web/js/islands.ts`.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
import { MutationPhase } from "./mutationEvent.ts";
|
|
18
|
+
export declare const IslandStrategy: {
|
|
19
|
+
readonly Eager: "eager";
|
|
20
|
+
readonly Visible: "visible";
|
|
21
|
+
};
|
|
22
|
+
export type IslandStrategy = (typeof IslandStrategy)[keyof typeof IslandStrategy];
|
|
23
|
+
export interface IslandElement {
|
|
17
24
|
dataset: Record<string, string | undefined>;
|
|
18
25
|
}
|
|
19
26
|
interface AppLike {
|
|
20
27
|
mount(el: unknown): unknown;
|
|
21
28
|
}
|
|
29
|
+
export interface IslandAnnouncement {
|
|
30
|
+
component: string;
|
|
31
|
+
strategy: string;
|
|
32
|
+
element: IslandElement;
|
|
33
|
+
durationMs?: number;
|
|
34
|
+
error?: unknown;
|
|
35
|
+
}
|
|
22
36
|
interface HydrateDeps {
|
|
23
37
|
importComponent(source: string): Promise<{
|
|
24
38
|
default?: unknown;
|
|
25
39
|
}>;
|
|
26
|
-
|
|
40
|
+
/**
|
|
41
|
+
* `hydrate` tells the factory which Vue entry point to use. Adopting server
|
|
42
|
+
* markup needs `createSSRApp`; a container about to be cleared needs
|
|
43
|
+
* `createApp`, which otherwise warns that it found nothing to hydrate.
|
|
44
|
+
*/
|
|
45
|
+
createApp(component: unknown, props: Record<string, unknown>, hydrate: boolean): AppLike;
|
|
27
46
|
configureApp(app: AppLike): void;
|
|
47
|
+
clearContainer?(element: IslandElement): void;
|
|
48
|
+
/** Opaque state captured before mounting, handed back to `onMounted`. */
|
|
49
|
+
snapshot?(element: IslandElement): unknown;
|
|
50
|
+
onMounted?(element: IslandElement, snapshot: unknown): void;
|
|
51
|
+
announce?(phase: MutationPhase, detail: IslandAnnouncement): void;
|
|
52
|
+
now?(): number;
|
|
28
53
|
}
|
|
29
54
|
interface DiscoverDeps extends HydrateDeps {
|
|
30
55
|
observe(element: IslandElement, onVisible: () => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"islands.d.ts","sourceRoot":"","sources":["../../src/runtime/islands.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"islands.d.ts","sourceRoot":"","sources":["../../src/runtime/islands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAElF,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC/C;AAED,UAAU,OAAO;IACb,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,WAAW;IACjB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChE;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IACzF,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IAC3C,SAAS,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClE,GAAG,CAAC,IAAI,MAAM,CAAC;CAClB;AAED,UAAU,YAAa,SAAQ,WAAW;IACtC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAChE;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAC/B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAgD9B;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAWtF"}
|
package/dist/runtime/islands.js
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Framework island runtime — the browser side of `renderVueComponent`.
|
|
3
3
|
*
|
|
4
|
-
* PHP emits
|
|
5
|
-
* (`<div data-mage-island data-component data-props data-strategy>`)
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* PHP emits a marker per component
|
|
5
|
+
* (`<div data-mage-island data-component data-props data-strategy>`), optionally
|
|
6
|
+
* carrying the component's server-rendered initial state; this module turns each
|
|
7
|
+
* marker into a mounted Vue app. Every island is its own app (preserving
|
|
8
|
+
* isolation), but the Vue runtime and the i18n plugin are loaded once per page
|
|
9
|
+
* and shared, and "visible" islands hydrate only when they enter the viewport —
|
|
10
|
+
* so below-the-fold components cost nothing until scrolled to.
|
|
10
11
|
*
|
|
11
12
|
* All side effects (dynamic import, app creation, plugin wiring, viewport
|
|
12
13
|
* observation) are injected, so the discovery/hydration logic is unit-testable
|
|
13
14
|
* in Node without a DOM, a bundler, or Vue. The concrete wiring lives in the
|
|
14
|
-
* module's `web/js/islands.
|
|
15
|
+
* module's `web/js/islands.ts`.
|
|
15
16
|
*/
|
|
17
|
+
import { MutationPhase } from "./mutationEvent.js";
|
|
16
18
|
// Set synchronously before the async import so a second observer callback for
|
|
17
19
|
// the same element is a no-op (dataset key for `data-mage-island-mounted`).
|
|
18
20
|
const MOUNTED_FLAG = "mageIslandMounted";
|
|
21
|
+
export const IslandStrategy = {
|
|
22
|
+
Eager: "eager",
|
|
23
|
+
Visible: "visible",
|
|
24
|
+
};
|
|
19
25
|
/**
|
|
20
26
|
* Mount a single island. Idempotent: the first call claims the element and
|
|
21
27
|
* later calls return immediately, so re-observation never double-mounts.
|
|
@@ -31,12 +37,39 @@ export async function hydrateIsland(element, deps) {
|
|
|
31
37
|
if (!source) {
|
|
32
38
|
throw new Error("Island marker is missing data-component.");
|
|
33
39
|
}
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
const strategy = element.dataset.strategy ?? IslandStrategy.Visible;
|
|
41
|
+
const clock = deps.now ?? (() => (typeof performance !== "undefined" ? performance.now() : 0));
|
|
42
|
+
const startedAt = deps.announce ? clock() : 0;
|
|
43
|
+
deps.announce?.(MutationPhase.Before, { component: source, strategy, element });
|
|
44
|
+
let app;
|
|
45
|
+
try {
|
|
46
|
+
const module = await deps.importComponent(source);
|
|
47
|
+
const component = module.default ?? module;
|
|
48
|
+
const props = element.dataset.props ? JSON.parse(element.dataset.props) : {};
|
|
49
|
+
const hydrate = Boolean(element.dataset.hydrate);
|
|
50
|
+
// Captured before the container is cleared: the baseline is what the page
|
|
51
|
+
// painted, not what is left after a placeholder is thrown away.
|
|
52
|
+
const snapshot = deps.snapshot?.(element);
|
|
53
|
+
if (!hydrate) {
|
|
54
|
+
deps.clearContainer?.(element);
|
|
55
|
+
}
|
|
56
|
+
app = deps.createApp(component, props, hydrate);
|
|
57
|
+
deps.configureApp(app);
|
|
58
|
+
app.mount(element);
|
|
59
|
+
// Read back before yielding to the event loop, so what is compared is what
|
|
60
|
+
// hydration did and not what a later reactive effect changed.
|
|
61
|
+
deps.onMounted?.(element, snapshot);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
deps.announce?.(MutationPhase.Failed, { component: source, strategy, element, error });
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
deps.announce?.(MutationPhase.After, {
|
|
68
|
+
component: source,
|
|
69
|
+
strategy,
|
|
70
|
+
element,
|
|
71
|
+
durationMs: clock() - startedAt,
|
|
72
|
+
});
|
|
40
73
|
return app;
|
|
41
74
|
}
|
|
42
75
|
/**
|
|
@@ -45,8 +78,8 @@ export async function hydrateIsland(element, deps) {
|
|
|
45
78
|
*/
|
|
46
79
|
export function hydrateAll(elements, deps) {
|
|
47
80
|
for (const element of elements) {
|
|
48
|
-
const strategy = element.dataset.strategy ??
|
|
49
|
-
if (strategy ===
|
|
81
|
+
const strategy = element.dataset.strategy ?? IslandStrategy.Visible;
|
|
82
|
+
if (strategy === IslandStrategy.Eager) {
|
|
50
83
|
void hydrateIsland(element, deps);
|
|
51
84
|
}
|
|
52
85
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"islands.js","sourceRoot":"","sources":["../../src/runtime/islands.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"islands.js","sourceRoot":"","sources":["../../src/runtime/islands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare const LifecycleEvent: {
|
|
2
|
+
readonly IslandMountBefore: "island_mount_before";
|
|
3
|
+
readonly IslandMountAfter: "island_mount_after";
|
|
4
|
+
readonly IslandMountFailed: "island_mount_failed";
|
|
5
|
+
readonly PageReady: "page_ready";
|
|
6
|
+
readonly PageHidden: "page_hidden";
|
|
7
|
+
readonly PageVisible: "page_visible";
|
|
8
|
+
readonly PageLeave: "page_leave";
|
|
9
|
+
readonly SectionReloadBefore: "section_reload_before";
|
|
10
|
+
readonly SectionReloadAfter: "section_reload_after";
|
|
11
|
+
readonly SectionReloadFailed: "section_reload_failed";
|
|
12
|
+
};
|
|
13
|
+
export type LifecycleEvent = (typeof LifecycleEvent)[keyof typeof LifecycleEvent];
|
|
14
|
+
export interface IslandEvent {
|
|
15
|
+
component: string;
|
|
16
|
+
strategy: string;
|
|
17
|
+
element: unknown;
|
|
18
|
+
durationMs?: number;
|
|
19
|
+
error?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface PageEvent {
|
|
22
|
+
url: string;
|
|
23
|
+
islands?: number;
|
|
24
|
+
persisted?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface SectionEvent {
|
|
27
|
+
names: string[];
|
|
28
|
+
changed?: string[];
|
|
29
|
+
}
|
|
30
|
+
declare module "./eventManager.ts" {
|
|
31
|
+
interface StorefrontEventMap {
|
|
32
|
+
[LifecycleEvent.IslandMountBefore]: IslandEvent;
|
|
33
|
+
[LifecycleEvent.IslandMountAfter]: IslandEvent;
|
|
34
|
+
[LifecycleEvent.IslandMountFailed]: IslandEvent;
|
|
35
|
+
[LifecycleEvent.PageReady]: PageEvent;
|
|
36
|
+
[LifecycleEvent.PageHidden]: PageEvent;
|
|
37
|
+
[LifecycleEvent.PageVisible]: PageEvent;
|
|
38
|
+
[LifecycleEvent.PageLeave]: PageEvent;
|
|
39
|
+
[LifecycleEvent.SectionReloadBefore]: SectionEvent;
|
|
40
|
+
[LifecycleEvent.SectionReloadAfter]: SectionEvent;
|
|
41
|
+
[LifecycleEvent.SectionReloadFailed]: SectionEvent;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=lifecycleEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycleEvents.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycleEvents.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAElF,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,OAAO,QAAQ,mBAAmB,CAAC;IAC/B,UAAU,kBAAkB;QACxB,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC;QAChD,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;QAC/C,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC;QAChD,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;QACvC,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;QACxC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtC,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC;QACnD,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC;QAClD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC;KACtD;CACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const LifecycleEvent = {
|
|
2
|
+
IslandMountBefore: "island_mount_before",
|
|
3
|
+
IslandMountAfter: "island_mount_after",
|
|
4
|
+
IslandMountFailed: "island_mount_failed",
|
|
5
|
+
PageReady: "page_ready",
|
|
6
|
+
PageHidden: "page_hidden",
|
|
7
|
+
PageVisible: "page_visible",
|
|
8
|
+
PageLeave: "page_leave",
|
|
9
|
+
SectionReloadBefore: "section_reload_before",
|
|
10
|
+
SectionReloadAfter: "section_reload_after",
|
|
11
|
+
SectionReloadFailed: "section_reload_failed",
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=lifecycleEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycleEvents.js","sourceRoot":"","sources":["../../src/runtime/lifecycleEvents.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,iBAAiB,EAAE,qBAAqB;IACxC,gBAAgB,EAAE,oBAAoB;IACtC,iBAAiB,EAAE,qBAAqB;IACxC,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,YAAY;IACvB,mBAAmB,EAAE,uBAAuB;IAC5C,kBAAkB,EAAE,sBAAsB;IAC1C,mBAAmB,EAAE,uBAAuB;CACtC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const MutationPhase: {
|
|
2
|
+
readonly Before: "before";
|
|
3
|
+
readonly After: "after";
|
|
4
|
+
readonly Failed: "failed";
|
|
5
|
+
};
|
|
6
|
+
export type MutationPhase = (typeof MutationPhase)[keyof typeof MutationPhase];
|
|
7
|
+
export declare const MUTATION_PHASES: readonly MutationPhase[];
|
|
8
|
+
export interface FlowEvent<Operation extends string = string, Result = unknown> {
|
|
9
|
+
operation: Operation;
|
|
10
|
+
cancelled: boolean;
|
|
11
|
+
message?: string;
|
|
12
|
+
result?: Result;
|
|
13
|
+
}
|
|
14
|
+
export interface MutationEvent<Operation extends string = string, Result = unknown> extends FlowEvent<Operation, Result> {
|
|
15
|
+
action: string;
|
|
16
|
+
body: FormData;
|
|
17
|
+
}
|
|
18
|
+
export type MutationEventName<Domain extends string, Operation extends string, Phase extends MutationPhase = MutationPhase> = `${Domain}_${Operation}_${Phase}`;
|
|
19
|
+
export declare function mutationEvent<Domain extends string, Operation extends string, Phase extends MutationPhase>(domain: Domain, operation: Operation, phase: Phase): MutationEventName<Domain, Operation, Phase>;
|
|
20
|
+
//# sourceMappingURL=mutationEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutationEvent.d.ts","sourceRoot":"","sources":["../../src/runtime/mutationEvent.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE/E,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAAiC,CAAC;AAEtF,MAAM,WAAW,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO;IAC1E,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO,CAC9E,SAAQ,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,CACzB,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM,EACxB,KAAK,SAAS,aAAa,GAAG,aAAa,IAC3C,GAAG,MAAM,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;AAEtC,wBAAgB,aAAa,CACzB,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM,EACxB,KAAK,SAAS,aAAa,EAC7B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAEjG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const MutationPhase = {
|
|
2
|
+
Before: "before",
|
|
3
|
+
After: "after",
|
|
4
|
+
Failed: "failed",
|
|
5
|
+
};
|
|
6
|
+
export const MUTATION_PHASES = Object.values(MutationPhase);
|
|
7
|
+
export function mutationEvent(domain, operation, phase) {
|
|
8
|
+
return `${domain}_${operation}_${phase}`;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=mutationEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutationEvent.js","sourceRoot":"","sources":["../../src/runtime/mutationEvent.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAIX,MAAM,CAAC,MAAM,eAAe,GAA6B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAqBtF,MAAM,UAAU,aAAa,CAI3B,MAAc,EAAE,SAAoB,EAAE,KAAY;IAChD,OAAO,GAAG,MAAM,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -50,6 +50,7 @@ export declare function selectSection(sections: SectionMap | null | undefined, n
|
|
|
50
50
|
* merges per section; non-object values are ignored).
|
|
51
51
|
*/
|
|
52
52
|
export declare function mergeSections(current: SectionMap | null | undefined, incoming: SectionMap | null | undefined): SectionMap;
|
|
53
|
+
export declare function patchSection(sections: SectionMap | null | undefined, name: string, partial: SectionData): SectionMap;
|
|
53
54
|
/**
|
|
54
55
|
* Whether a section should be (re)fetched. A missing section is stale; a
|
|
55
56
|
* section without a positive `data_id` is a client-side section that never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectionStoreCore.d.ts","sourceRoot":"","sources":["../../src/runtime/sectionStoreCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,UAAU,mBAAmB;IACzB,0BAA0B,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5E;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,0BAA0B,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC5E;CACJ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,CAa9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAQpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CACzB,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACxC,UAAU,CAEZ;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACvC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACnB,OAAO,CAcT;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE,kBAAuB,GACjC,MAAM,CAaR;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAcxF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACvB,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,iBAAiB,EAAE,MAAM,GAC1B,OAAO,CAKT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,GACnB,MAAM,EAAE,CAiBV;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,GAAE,mBAAmB,GAAG,SAA8D,GAC5F,oBAAoB,CAUtB"}
|
|
1
|
+
{"version":3,"file":"sectionStoreCore.d.ts","sourceRoot":"","sources":["../../src/runtime/sectionStoreCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,UAAU,mBAAmB;IACzB,0BAA0B,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5E;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,0BAA0B,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC5E;CACJ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,CAa9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAQpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CACzB,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACxC,UAAU,CAEZ;AAED,wBAAgB,YAAY,CACxB,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,GACrB,UAAU,CAMZ;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACvC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACnB,OAAO,CAcT;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE,kBAAuB,GACjC,MAAM,CAaR;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAcxF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACvB,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,iBAAiB,EAAE,MAAM,GAC1B,OAAO,CAKT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,GACnB,MAAM,EAAE,CAiBV;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,GAAE,mBAAmB,GAAG,SAA8D,GAC5F,oBAAoB,CAUtB"}
|
|
@@ -48,6 +48,13 @@ export function selectSection(sections, name) {
|
|
|
48
48
|
export function mergeSections(current, incoming) {
|
|
49
49
|
return { ...pickObjectEntries(current), ...pickObjectEntries(incoming) };
|
|
50
50
|
}
|
|
51
|
+
export function patchSection(sections, name, partial) {
|
|
52
|
+
const current = pickObjectEntries(sections);
|
|
53
|
+
if (!name) {
|
|
54
|
+
return current;
|
|
55
|
+
}
|
|
56
|
+
return { ...current, [name]: { ...(selectSection(current, name) ?? {}), ...partial } };
|
|
57
|
+
}
|
|
51
58
|
/**
|
|
52
59
|
* Whether a section should be (re)fetched. A missing section is stale; a
|
|
53
60
|
* section without a positive `data_id` is a client-side section that never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectionStoreCore.js","sourceRoot":"","sources":["../../src/runtime/sectionStoreCore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sectionStoreCore.js","sourceRoot":"","sources":["../../src/runtime/sectionStoreCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface UxRuntimeConfig {
|
|
2
|
+
optimistic: boolean;
|
|
3
|
+
summaryCountsQty: boolean;
|
|
4
|
+
}
|
|
5
|
+
type UxRuntimeGlobal = {
|
|
6
|
+
optimistic?: unknown;
|
|
7
|
+
summaryCountsQty?: unknown;
|
|
8
|
+
};
|
|
9
|
+
interface UxRuntimeScope {
|
|
10
|
+
__MAGE_OBSIDIAN_UX__?: UxRuntimeGlobal;
|
|
11
|
+
}
|
|
12
|
+
declare global {
|
|
13
|
+
interface Window {
|
|
14
|
+
__MAGE_OBSIDIAN_UX__?: UxRuntimeGlobal;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export declare function readUxRuntimeConfig(scope?: UxRuntimeScope | undefined): UxRuntimeConfig;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=uxConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uxConfig.d.ts","sourceRoot":"","sources":["../../src/runtime/uxConfig.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED,KAAK,eAAe,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5E,UAAU,cAAc;IACpB,oBAAoB,CAAC,EAAE,eAAe,CAAC;CAC1C;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,oBAAoB,CAAC,EAAE,eAAe,CAAC;KAC1C;CACJ;AAID,wBAAgB,mBAAmB,CAC/B,KAAK,GAAE,cAAc,GAAG,SAA8D,GACvF,eAAe,CASjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const DEFAULTS = { optimistic: true, summaryCountsQty: true };
|
|
2
|
+
export function readUxRuntimeConfig(scope = typeof window !== "undefined" ? window : undefined) {
|
|
3
|
+
const config = scope && scope.__MAGE_OBSIDIAN_UX__;
|
|
4
|
+
if (!config || typeof config !== "object") {
|
|
5
|
+
return DEFAULTS;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
optimistic: bool(config.optimistic, DEFAULTS.optimistic),
|
|
9
|
+
summaryCountsQty: bool(config.summaryCountsQty, DEFAULTS.summaryCountsQty),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function bool(value, fallback) {
|
|
13
|
+
return typeof value === "boolean" ? value : fallback;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=uxConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uxConfig.js","sourceRoot":"","sources":["../../src/runtime/uxConfig.ts"],"names":[],"mappings":"AAiBA,MAAM,QAAQ,GAAoB,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AAE/E,MAAM,UAAU,mBAAmB,CAC/B,QAAoC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;IAEtF,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,oBAAoB,CAAC;IACnD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO;QACH,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QACxD,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;KAC7E,CAAC;AACN,CAAC;AAED,SAAS,IAAI,CAAC,KAAc,EAAE,QAAiB;IAC3C,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzD,CAAC"}
|