@metapages/metapage 1.8.19 → 1.8.22
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/index.js +1030 -1011
- package/dist/index.js.map +1 -1
- package/dist/metapage/Metapage.d.ts +4 -0
- package/dist/metapage/Metapage.d.ts.map +1 -1
- package/dist/metapage/metapageRenderer.d.ts +4 -3
- package/dist/metapage/metapageRenderer.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/metapage/Metapage.ts +28 -0
- package/src/metapage/metapageRenderer.ts +35 -21
|
@@ -53,6 +53,9 @@ export declare class Metapage extends MetapageShared {
|
|
|
53
53
|
constructor(opts?: MetapageOptionsV1);
|
|
54
54
|
isDisposed(): boolean;
|
|
55
55
|
addListenerReturnDisposer(event: MetapageEvents, listener: ListenerFn<any[]>): () => void;
|
|
56
|
+
onInputs(cb: (inputs: MetapageInstanceInputs) => () => void): () => void;
|
|
57
|
+
onOutputs(cb: (outputs: MetapageInstanceInputs) => void): () => void;
|
|
58
|
+
onState(cb: (state: MetapageState) => void): () => void;
|
|
56
59
|
setDebugFromUrlParams(): Metapage;
|
|
57
60
|
getState(): MetapageState;
|
|
58
61
|
setState(newState: MetapageState): void;
|
|
@@ -93,6 +96,7 @@ export declare class Metapage extends MetapageShared {
|
|
|
93
96
|
_setStateOnlyMetaframeInputMap(isInputs: boolean, metaframeId: MetaframeId, metaframeValuesNew: MetaframeInputMap): void;
|
|
94
97
|
_setStateOnlyMetaframes(isInputs: boolean, inputsMetaframesNew: MetapageInstanceInputs): void;
|
|
95
98
|
setMetaframeOutputs(metaframeId: MetaframeId, outputs: MetaframeInputMap): void;
|
|
99
|
+
setOutputs(outputs: MetapageInstanceInputs): void;
|
|
96
100
|
onMessage(e: MessageEvent): void;
|
|
97
101
|
onMessageJsonRpc(jsonrpc: MinimumClientMessage<any>): void;
|
|
98
102
|
logInternal(o: any, color?: string, backgroundColor?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Metapage.d.ts","sourceRoot":"","sources":["../../src/metapage/Metapage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS3C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAElE,OAAO,EAEL,cAAc,EAEf,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,oBAAoB,EAErB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,OAAO,EAAoC,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,SAAS,EACT,cAAc,EACf,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,oBAAoB,CAAC;CAClC;AAYD,eAAO,MAAM,yBAAyB,YAC3B,MAAM,KACd,gBAEF,CAAC;AAEF,eAAO,MAAM,SAAS,eAAgB,MAAM,WAAW,MAAM,KAAG,OA+B/D,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,CAAC,GAAG,EAAE,WAAW,GAAG,+BAA+B,EAAE,CAAC;KACvD,CAAC;CACH,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,CAAC,GAAG,EAAE,WAAW,GAAG,uBAAuB,CAAC;CAC7C,CAAC;AAIF,qBAAa,QAAS,SAAQ,cAAc;IAE1C,gBAAuB,OAAO,4BAAoB;IAGlD,gBAAuB,UAAU,6BAA6B;IAC9D,gBAAuB,KAAK,wBAAwB;IACpD,gBAAuB,MAAM,yBAAyB;IACtD,gBAAuB,OAAO,0BAA0B;IACxD,gBAAuB,OAAO,0BAA0B;IACxD,gBAAuB,KAAK,wBAAwB;IAEpD,OAAc,iBAAiB,4DAAqB;IACpD,OAAc,eAAe,4DAAmB;WAE5B,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgB3E,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,aAAa,CAAc;IACnC,WAAW,EAAE,gBAAgB,CAAgC;IAE7D,KAAK,EAAE,OAAO,CAA2B;IACzC,uBAAuB,EAAE,MAAM,CAAC;IAGhC,+BAA+B,EAAE,MAAM,CAAK;IAG5C,qBAAqB,EAAE,oBAAoB,CAGzC;IACF,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;KAC5B,CAAM;gBA4BK,IAAI,CAAC,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"Metapage.d.ts","sourceRoot":"","sources":["../../src/metapage/Metapage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Metapage } from
|
|
2
|
-
import { MetapageInstanceInputs } from
|
|
3
|
-
import { MetapageDefinitionV2 } from
|
|
1
|
+
import { Metapage } from "./Metapage.js";
|
|
2
|
+
import { MetapageInstanceInputs } from "./v0_4/index.js";
|
|
3
|
+
import { MetapageDefinitionV2 } from "./v2/metapage.js";
|
|
4
4
|
export interface RenderingOptions {
|
|
5
5
|
hideBorder?: boolean;
|
|
6
6
|
hideFrameBorders?: boolean;
|
|
@@ -11,6 +11,7 @@ export interface RenderingOptions {
|
|
|
11
11
|
}
|
|
12
12
|
export interface MetapageRendererResult {
|
|
13
13
|
setInputs: (inputs: MetapageInstanceInputs) => void;
|
|
14
|
+
setOutputs: (outputs: MetapageInstanceInputs) => void;
|
|
14
15
|
dispose: () => void;
|
|
15
16
|
metapage: Metapage;
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metapageRenderer.d.ts","sourceRoot":"","sources":["../../src/metapage/metapageRenderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metapageRenderer.d.ts","sourceRoot":"","sources":["../../src/metapage/metapageRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAqB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACtD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AA6FD,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACtD,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAyRlC"}
|
package/package.json
CHANGED
package/src/metapage/Metapage.ts
CHANGED
|
@@ -219,6 +219,11 @@ export class Metapage extends MetapageShared {
|
|
|
219
219
|
this.setDefinition = this.setDefinition.bind(this);
|
|
220
220
|
this.setInput = this.setInput.bind(this);
|
|
221
221
|
this.setInputs = this.setInputs.bind(this);
|
|
222
|
+
this.setOutputs = this.setOutputs.bind(this);
|
|
223
|
+
this.onInputs = this.onInputs.bind(this);
|
|
224
|
+
this.onOutputs = this.onOutputs.bind(this);
|
|
225
|
+
this.onState = this.onState.bind(this);
|
|
226
|
+
this.setMetaframeOutputs = this.setMetaframeOutputs.bind(this);
|
|
222
227
|
this.setInputStateOnlyMetaframeInputValue =
|
|
223
228
|
this.setInputStateOnlyMetaframeInputValue.bind(this);
|
|
224
229
|
this.setInputStateOnlyMetaframeInputMap =
|
|
@@ -264,6 +269,18 @@ export class Metapage extends MetapageShared {
|
|
|
264
269
|
return disposer;
|
|
265
270
|
}
|
|
266
271
|
|
|
272
|
+
onInputs(cb: (inputs: MetapageInstanceInputs) => () => void) {
|
|
273
|
+
return this.addListenerReturnDisposer(MetapageEvents.Inputs, cb);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
onOutputs(cb: (outputs: MetapageInstanceInputs) => void) {
|
|
277
|
+
return this.addListenerReturnDisposer(MetapageEvents.Outputs, cb);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
onState(cb: (state: MetapageState) => void) {
|
|
281
|
+
return this.addListenerReturnDisposer(MetapageEvents.State, cb);
|
|
282
|
+
}
|
|
283
|
+
|
|
267
284
|
public setDebugFromUrlParams(): Metapage {
|
|
268
285
|
const url = new URL(window.location.href);
|
|
269
286
|
this.debug = ["debug", "mp_debug"].reduce((exists, flag) => {
|
|
@@ -971,6 +988,17 @@ export class Metapage extends MetapageShared {
|
|
|
971
988
|
});
|
|
972
989
|
}
|
|
973
990
|
|
|
991
|
+
/**
|
|
992
|
+
* Set the outputs manually, useful for when the
|
|
993
|
+
* parent wants to modify the outputs directly
|
|
994
|
+
* @param outputs
|
|
995
|
+
*/
|
|
996
|
+
setOutputs(outputs: MetapageInstanceInputs) {
|
|
997
|
+
for (const metaframeId in outputs) {
|
|
998
|
+
this.setMetaframeOutputs(metaframeId, outputs[metaframeId]);
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
|
|
974
1002
|
onMessage(e: MessageEvent) {
|
|
975
1003
|
// any other type of messages are ignored
|
|
976
1004
|
// maybe in the future we can pass around strings or ArrayBuffers
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { MetaframeId } from "./core.js";
|
|
2
|
+
import { MetapageEvents } from "./events.js";
|
|
3
|
+
import { Metapage } from "./Metapage.js";
|
|
4
|
+
import { pageLoaded } from "./MetapageTools.js";
|
|
5
|
+
import { getMetapageDefinitionFromUrl } from "./util.js";
|
|
6
|
+
import { MetaframeInputMap, MetapageInstanceInputs } from "./v0_4/index.js";
|
|
7
|
+
import { MetapageDefinitionV2 } from "./v2/metapage.js";
|
|
7
8
|
|
|
8
9
|
// Types for the pure function
|
|
9
10
|
export interface RenderingOptions {
|
|
@@ -17,6 +18,7 @@ export interface RenderingOptions {
|
|
|
17
18
|
|
|
18
19
|
export interface MetapageRendererResult {
|
|
19
20
|
setInputs: (inputs: MetapageInstanceInputs) => void;
|
|
21
|
+
setOutputs: (outputs: MetapageInstanceInputs) => void;
|
|
20
22
|
dispose: () => void;
|
|
21
23
|
metapage: Metapage;
|
|
22
24
|
}
|
|
@@ -172,7 +174,7 @@ export async function renderMetapage(props: {
|
|
|
172
174
|
|
|
173
175
|
// Find dividers and determine which metaframes to hide
|
|
174
176
|
const metaframesToHide = new Set<string>();
|
|
175
|
-
|
|
177
|
+
|
|
176
178
|
// Find all dividers and their y positions
|
|
177
179
|
const dividers = layout
|
|
178
180
|
.map((item: LayoutItem, index: number) => {
|
|
@@ -215,7 +217,7 @@ export async function renderMetapage(props: {
|
|
|
215
217
|
let visibleLayoutItems = layout.filter((item: LayoutItem) =>
|
|
216
218
|
visibleMetaframeIds.includes(item.i)
|
|
217
219
|
);
|
|
218
|
-
|
|
220
|
+
|
|
219
221
|
// Handle case where no metaframes are visible
|
|
220
222
|
if (visibleLayoutItems.length === 0) {
|
|
221
223
|
// Return early with empty result
|
|
@@ -226,6 +228,11 @@ export async function renderMetapage(props: {
|
|
|
226
228
|
metapage.setInputs(inputs);
|
|
227
229
|
}
|
|
228
230
|
},
|
|
231
|
+
setOutputs: (outputs: MetapageInstanceInputs) => {
|
|
232
|
+
if (!metapage.isDisposed()) {
|
|
233
|
+
metapage.setOutputs(outputs);
|
|
234
|
+
}
|
|
235
|
+
},
|
|
229
236
|
dispose: () => {
|
|
230
237
|
disposers.forEach((disposer) => disposer());
|
|
231
238
|
metapage.dispose();
|
|
@@ -233,7 +240,7 @@ export async function renderMetapage(props: {
|
|
|
233
240
|
},
|
|
234
241
|
};
|
|
235
242
|
}
|
|
236
|
-
|
|
243
|
+
|
|
237
244
|
// Sort visible layout items by y position to ensure proper grid layout
|
|
238
245
|
visibleLayoutItems.sort((a, b) => {
|
|
239
246
|
if (a.y !== b.y) {
|
|
@@ -241,7 +248,7 @@ export async function renderMetapage(props: {
|
|
|
241
248
|
}
|
|
242
249
|
return a.x - b.x;
|
|
243
250
|
});
|
|
244
|
-
|
|
251
|
+
|
|
245
252
|
// Create grid container style (will be updated after we know the actual dimensions)
|
|
246
253
|
const gridStyle = {
|
|
247
254
|
display: "grid",
|
|
@@ -280,18 +287,17 @@ export async function renderMetapage(props: {
|
|
|
280
287
|
|
|
281
288
|
// Add visible metaframes to the grid
|
|
282
289
|
const renderedMetaframes: LayoutItem[] = [];
|
|
283
|
-
|
|
290
|
+
|
|
284
291
|
for (const metaframeId of visibleMetaframeIds) {
|
|
285
|
-
|
|
286
292
|
const layoutItem = layout.find(
|
|
287
293
|
(item: LayoutItem) => item.i === metaframeId
|
|
288
294
|
);
|
|
289
295
|
if (!layoutItem) continue;
|
|
290
296
|
|
|
291
297
|
const metaframe = metapage.getMetaframes()[metaframeId];
|
|
292
|
-
const iframe = await metaframe.iframe
|
|
298
|
+
const iframe = await metaframe.iframe;
|
|
293
299
|
if (!metaframe) continue;
|
|
294
|
-
|
|
300
|
+
|
|
295
301
|
// Track this metaframe for grid dimension calculation
|
|
296
302
|
renderedMetaframes.push(layoutItem);
|
|
297
303
|
|
|
@@ -306,12 +312,12 @@ export async function renderMetapage(props: {
|
|
|
306
312
|
alignSelf: "stretch", // Stretch to fill the grid cell height
|
|
307
313
|
justifySelf: "stretch", // Stretch to fill the grid cell width
|
|
308
314
|
};
|
|
309
|
-
|
|
315
|
+
|
|
310
316
|
// Create wrapper div for proper grid positioning
|
|
311
317
|
const wrapper = document.createElement("div");
|
|
312
318
|
Object.assign(wrapper.style, itemStyle);
|
|
313
319
|
wrapper.appendChild(iframe);
|
|
314
|
-
|
|
320
|
+
|
|
315
321
|
gridContainer.appendChild(wrapper);
|
|
316
322
|
}
|
|
317
323
|
|
|
@@ -320,14 +326,15 @@ export async function renderMetapage(props: {
|
|
|
320
326
|
...renderedMetaframes.map((item: LayoutItem) => item.x + item.w)
|
|
321
327
|
);
|
|
322
328
|
|
|
323
|
-
|
|
324
329
|
const maxRow = Math.max(
|
|
325
330
|
...renderedMetaframes.map((item: LayoutItem) => item.y + item.h)
|
|
326
331
|
);
|
|
327
|
-
|
|
328
|
-
|
|
332
|
+
|
|
329
333
|
// Update the grid container with the correct dimensions
|
|
330
|
-
gridContainer.style.gridTemplateColumns = `repeat(${Math.max(
|
|
334
|
+
gridContainer.style.gridTemplateColumns = `repeat(${Math.max(
|
|
335
|
+
1,
|
|
336
|
+
maxCol
|
|
337
|
+
)}, 1fr)`;
|
|
331
338
|
|
|
332
339
|
// Create hidden container for hidden metaframes
|
|
333
340
|
const hiddenContainer = document.createElement("div");
|
|
@@ -340,7 +347,9 @@ export async function renderMetapage(props: {
|
|
|
340
347
|
hiddenContainer.style.pointerEvents = "none";
|
|
341
348
|
|
|
342
349
|
// Add hidden metaframes
|
|
343
|
-
for (const metaframeId of Object.keys(metapage.getMetaframes()).filter((id) =>
|
|
350
|
+
for (const metaframeId of Object.keys(metapage.getMetaframes()).filter((id) =>
|
|
351
|
+
metaframesToHide.has(id)
|
|
352
|
+
)) {
|
|
344
353
|
const metaframe = metapage.getMetaframes()[metaframeId];
|
|
345
354
|
if (!metaframe) continue;
|
|
346
355
|
|
|
@@ -378,6 +387,11 @@ export async function renderMetapage(props: {
|
|
|
378
387
|
metapage.setInputs(inputs);
|
|
379
388
|
}
|
|
380
389
|
},
|
|
390
|
+
setOutputs: (outputs: MetapageInstanceInputs) => {
|
|
391
|
+
if (!metapage.isDisposed()) {
|
|
392
|
+
metapage.setOutputs(outputs);
|
|
393
|
+
}
|
|
394
|
+
},
|
|
381
395
|
dispose: () => {
|
|
382
396
|
// Clean up event listeners
|
|
383
397
|
disposers.forEach((disposer) => disposer());
|