@next-core/storyboard 0.6.7 → 0.6.9
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/interfaces.js.map +1 -1
- package/dist/cjs/parseStoryboard.js +29 -2
- package/dist/cjs/parseStoryboard.js.map +1 -1
- package/dist/cjs/traverseStoryboard.js +7 -0
- package/dist/cjs/traverseStoryboard.js.map +1 -1
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/parseStoryboard.js +29 -2
- package/dist/esm/parseStoryboard.js.map +1 -1
- package/dist/esm/traverseStoryboard.js +7 -0
- package/dist/esm/traverseStoryboard.js.map +1 -1
- package/dist/types/interfaces.d.ts +13 -2
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","names":[],"sources":["../../src/interfaces.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n BrickMenuConf,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MessageConf,\n ResolveConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\n\nexport type StoryboardNode =\n | StoryboardNodeRoot\n | StoryboardNodeRoute\n | StoryboardNodeTemplate\n | StoryboardNodeBrick\n | StoryboardNodeSlot\n | StoryboardNodeContext\n | StoryboardNodeResolvable\n | StoryboardNodeMenu\n | StoryboardNodeLifeCycle\n | StoryboardNodeEvent\n | StoryboardNodeEventHandler\n | StoryboardNodeConditionalEvent\n | StoryboardNodeEventCallback\n | StoryboardNodeCondition\n | StoryboardNodeUseBrickEntry\n | StoryboardNodeUseBackendEntry;\n\nexport interface StoryboardNodeRoot {\n type: \"Root\";\n raw: Storyboard;\n routes: StoryboardNodeRoute[];\n templates: StoryboardNodeTemplate[];\n}\n\nexport interface StoryboardNodeTemplate {\n type: \"Template\";\n raw: CustomTemplate | CustomTemplateConstructor;\n bricks?: StoryboardNodeBrick[];\n context?: StoryboardNodeContext[];\n}\n\nexport interface StoryboardNodeRoute {\n type: \"Route\";\n raw: RouteConf;\n context?: StoryboardNodeContext[];\n redirect?: StoryboardNodeResolvable;\n menu?: StoryboardNodeMenu;\n providers?: StoryboardNodeBrick[];\n defineResolves?: StoryboardNodeResolvable[];\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeBrick =\n | StoryboardNodeNormalBrick\n | StoryboardNodeUseBrick;\n\nexport interface StoryboardNodeBrickBase {\n type: \"Brick\";\n raw: BrickConf | UseSingleBrickConf;\n isUseBrick?: boolean;\n if?: StoryboardNodeCondition;\n events?: StoryboardNodeEvent[];\n lifeCycle?: StoryboardNodeLifeCycle[];\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n context?: StoryboardNodeContext[];\n children: StoryboardNodeSlot[];\n}\n\nexport interface StoryboardNodeNormalBrick extends StoryboardNodeBrickBase {\n raw: BrickConf;\n isUseBrick?: false;\n}\n\nexport interface StoryboardNodeUseBrick extends StoryboardNodeBrickBase {\n raw: UseSingleBrickConf;\n isUseBrick: true;\n}\n\nexport interface StoryboardNodeUseBrickEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBrickEntry\";\n rawKey: \"useBrick\";\n}\n\nexport interface StoryboardNodeUseBackendEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBackendEntry\";\n rawKey: \"useBackend\";\n}\n\nexport interface StoryboardNodeUseEntryBase {\n rawContainer: Record<string, unknown>;\n children: StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeCondition =\n | StoryboardNodeLiteralCondition\n | StoryboardNodeResolvableCondition;\n\nexport interface StoryboardNodeLiteralCondition {\n type: \"LiteralCondition\";\n}\n\nexport interface StoryboardNodeResolvableCondition {\n type: \"ResolvableCondition\";\n resolve: StoryboardNodeResolvable | undefined;\n}\n\nexport interface StoryboardNodeSlot {\n type: \"Slot\";\n raw: SlotConf;\n slot: string;\n childrenType: \"Route\" | \"Brick\";\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport interface StoryboardNodeContext {\n type: \"Context\";\n raw: ContextConf | CustomTemplateState;\n resolve?: StoryboardNodeResolvable;\n onChange?: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeResolvable {\n type: \"Resolvable\";\n raw: ResolveConf;\n isConditional?: boolean;\n}\n\nexport type StoryboardNodeMenu =\n | StoryboardNodeFalseMenu\n | StoryboardNodeStaticMenu\n | StoryboardNodeBrickMenu\n | StoryboardNodeResolvableMenu;\n\nexport interface StoryboardNodeFalseMenu {\n type: \"FalseMenu\";\n}\n\nexport interface StoryboardNodeStaticMenu {\n type: \"StaticMenu\";\n}\n\nexport interface StoryboardNodeBrickMenu {\n type: \"BrickMenu\";\n raw: BrickMenuConf;\n brick: StoryboardNodeBrick;\n}\n\nexport interface StoryboardNodeResolvableMenu {\n type: \"ResolvableMenu\";\n resolve: StoryboardNodeResolvable;\n}\n\nexport type StoryboardNodeLifeCycle =\n | StoryboardNodeResolveLifeCycle\n | StoryboardNodeSimpleLifeCycle\n | StoryboardNodeConditionalLifeCycle\n | StoryboardNodeUnknownLifeCycle;\n\nexport interface StoryboardNodeResolveLifeCycle {\n type: \"ResolveLifeCycle\";\n rawContainer: BrickLifeCycle;\n rawKey: \"useResolves\";\n resolves: StoryboardNodeResolvable[] | undefined;\n}\n\nexport interface StoryboardNodeSimpleLifeCycle {\n type: \"SimpleLifeCycle\";\n name:\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMessageClose\"\n | \"onBeforePageLoad\"\n | \"onBeforePageLeave\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMediaChange\";\n rawContainer: BrickLifeCycle;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeConditionalLifeCycle {\n type: \"ConditionalLifeCycle\";\n name: \"onMessage\" | \"onScrollIntoView\";\n events: StoryboardNodeConditionalEvent[] | undefined;\n}\n\nexport interface StoryboardNodeUnknownLifeCycle {\n type: \"UnknownLifeCycle\";\n}\n\nexport interface StoryboardNodeEvent {\n type: \"Event\";\n rawContainer: BrickEventsMap;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventHandler {\n type: \"EventHandler\";\n raw: BrickEventHandler;\n callback: StoryboardNodeEventCallback[] | undefined;\n then: StoryboardNodeEventHandler[] | undefined;\n else: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeConditionalEvent {\n type: \"ConditionalEvent\";\n rawContainer: MessageConf | ScrollIntoViewConf;\n rawKey: \"handlers\";\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventCallback {\n type: \"EventCallback\";\n rawContainer: BrickEventHandlerCallback;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../src/interfaces.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n BrickMenuConf,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuItemRawData,\n MenuRawData,\n MessageConf,\n ResolveConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\n\nexport type StoryboardNode =\n | StoryboardNodeRoot\n | StoryboardNodeRoute\n | StoryboardNodeTemplate\n | StoryboardNodeBrick\n | StoryboardNodeSlot\n | StoryboardNodeContext\n | StoryboardNodeResolvable\n | StoryboardNodeMenu\n | StoryboardNodeLifeCycle\n | StoryboardNodeEvent\n | StoryboardNodeEventHandler\n | StoryboardNodeConditionalEvent\n | StoryboardNodeEventCallback\n | StoryboardNodeCondition\n | StoryboardNodeUseBrickEntry\n | StoryboardNodeUseBackendEntry\n | StoryboardNodeMetaMenu\n | StoryboardNodeMetaMenuItem;\n\nexport interface StoryboardNodeRoot {\n type: \"Root\";\n raw: Storyboard;\n routes: StoryboardNodeRoute[];\n templates: StoryboardNodeTemplate[];\n menus: StoryboardNodeMetaMenu[];\n}\n\nexport interface StoryboardNodeTemplate {\n type: \"Template\";\n raw: CustomTemplate | CustomTemplateConstructor;\n bricks?: StoryboardNodeBrick[];\n context?: StoryboardNodeContext[];\n}\n\nexport interface StoryboardNodeRoute {\n type: \"Route\";\n raw: RouteConf;\n context?: StoryboardNodeContext[];\n redirect?: StoryboardNodeResolvable;\n menu?: StoryboardNodeMenu;\n providers?: StoryboardNodeBrick[];\n defineResolves?: StoryboardNodeResolvable[];\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeBrick =\n | StoryboardNodeNormalBrick\n | StoryboardNodeUseBrick;\n\nexport interface StoryboardNodeBrickBase {\n type: \"Brick\";\n raw: BrickConf | UseSingleBrickConf;\n isUseBrick?: boolean;\n if?: StoryboardNodeCondition;\n events?: StoryboardNodeEvent[];\n lifeCycle?: StoryboardNodeLifeCycle[];\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n context?: StoryboardNodeContext[];\n children: StoryboardNodeSlot[];\n}\n\nexport interface StoryboardNodeNormalBrick extends StoryboardNodeBrickBase {\n raw: BrickConf;\n isUseBrick?: false;\n}\n\nexport interface StoryboardNodeUseBrick extends StoryboardNodeBrickBase {\n raw: UseSingleBrickConf;\n isUseBrick: true;\n}\n\nexport interface StoryboardNodeUseBrickEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBrickEntry\";\n rawKey: \"useBrick\";\n}\n\nexport interface StoryboardNodeUseBackendEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBackendEntry\";\n rawKey: \"useBackend\";\n}\n\nexport interface StoryboardNodeUseEntryBase {\n rawContainer: Record<string, unknown>;\n children: StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeCondition =\n | StoryboardNodeLiteralCondition\n | StoryboardNodeResolvableCondition;\n\nexport interface StoryboardNodeLiteralCondition {\n type: \"LiteralCondition\";\n}\n\nexport interface StoryboardNodeResolvableCondition {\n type: \"ResolvableCondition\";\n resolve: StoryboardNodeResolvable | undefined;\n}\n\nexport interface StoryboardNodeSlot {\n type: \"Slot\";\n raw: SlotConf;\n slot: string;\n childrenType: \"Route\" | \"Brick\";\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport interface StoryboardNodeContext {\n type: \"Context\";\n raw: ContextConf | CustomTemplateState;\n resolve?: StoryboardNodeResolvable;\n onChange?: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeResolvable {\n type: \"Resolvable\";\n raw: ResolveConf;\n isConditional?: boolean;\n}\n\nexport type StoryboardNodeMenu =\n | StoryboardNodeFalseMenu\n | StoryboardNodeStaticMenu\n | StoryboardNodeBrickMenu\n | StoryboardNodeResolvableMenu;\n\nexport interface StoryboardNodeFalseMenu {\n type: \"FalseMenu\";\n}\n\nexport interface StoryboardNodeStaticMenu {\n type: \"StaticMenu\";\n}\n\nexport interface StoryboardNodeBrickMenu {\n type: \"BrickMenu\";\n raw: BrickMenuConf;\n brick: StoryboardNodeBrick;\n}\n\nexport interface StoryboardNodeResolvableMenu {\n type: \"ResolvableMenu\";\n resolve: StoryboardNodeResolvable;\n}\n\nexport type StoryboardNodeLifeCycle =\n | StoryboardNodeResolveLifeCycle\n | StoryboardNodeSimpleLifeCycle\n | StoryboardNodeConditionalLifeCycle\n | StoryboardNodeUnknownLifeCycle;\n\nexport interface StoryboardNodeResolveLifeCycle {\n type: \"ResolveLifeCycle\";\n rawContainer: BrickLifeCycle;\n rawKey: \"useResolves\";\n resolves: StoryboardNodeResolvable[] | undefined;\n}\n\nexport interface StoryboardNodeSimpleLifeCycle {\n type: \"SimpleLifeCycle\";\n name:\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMessageClose\"\n | \"onBeforePageLoad\"\n | \"onBeforePageLeave\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMediaChange\";\n rawContainer: BrickLifeCycle;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeConditionalLifeCycle {\n type: \"ConditionalLifeCycle\";\n name: \"onMessage\" | \"onScrollIntoView\";\n events: StoryboardNodeConditionalEvent[] | undefined;\n}\n\nexport interface StoryboardNodeUnknownLifeCycle {\n type: \"UnknownLifeCycle\";\n}\n\nexport interface StoryboardNodeEvent {\n type: \"Event\";\n rawContainer: BrickEventsMap;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventHandler {\n type: \"EventHandler\";\n raw: BrickEventHandler;\n callback: StoryboardNodeEventCallback[] | undefined;\n then: StoryboardNodeEventHandler[] | undefined;\n else: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeConditionalEvent {\n type: \"ConditionalEvent\";\n rawContainer: MessageConf | ScrollIntoViewConf;\n rawKey: \"handlers\";\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventCallback {\n type: \"EventCallback\";\n rawContainer: BrickEventHandlerCallback;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeMetaMenu {\n type: \"MetaMenu\";\n raw: MenuRawData;\n items?: StoryboardNodeMetaMenuItem[];\n}\n\nexport interface StoryboardNodeMetaMenuItem {\n type: \"MetaMenuItem\";\n raw: MenuItemRawData;\n children?: StoryboardNodeMetaMenuItem[];\n}\n"],"mappings":""}
|
|
@@ -10,12 +10,13 @@ exports.parseTemplate = parseTemplate;
|
|
|
10
10
|
exports.parseTemplates = parseTemplates;
|
|
11
11
|
/** Parse storyboard as AST. */
|
|
12
12
|
function parseStoryboard(storyboard) {
|
|
13
|
-
var _storyboard$meta;
|
|
13
|
+
var _storyboard$meta, _storyboard$meta2;
|
|
14
14
|
return {
|
|
15
15
|
type: "Root",
|
|
16
16
|
raw: storyboard,
|
|
17
17
|
routes: parseRoutes(storyboard.routes),
|
|
18
|
-
templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates)
|
|
18
|
+
templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates),
|
|
19
|
+
menus: parseMetaMenus((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.menus)
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
/** Parse storyboard routes as AST. */
|
|
@@ -304,4 +305,30 @@ function isObject(value) {
|
|
|
304
305
|
const type = typeof value;
|
|
305
306
|
return value != null && (type == "object" || type == "function");
|
|
306
307
|
}
|
|
308
|
+
function parseMetaMenus(menus) {
|
|
309
|
+
if (Array.isArray(menus)) {
|
|
310
|
+
return menus.map(parseMetaMenu);
|
|
311
|
+
}
|
|
312
|
+
return [];
|
|
313
|
+
}
|
|
314
|
+
function parseMetaMenu(menu) {
|
|
315
|
+
return {
|
|
316
|
+
type: "MetaMenu",
|
|
317
|
+
raw: menu,
|
|
318
|
+
items: parseMetaItems(menu.items)
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
function parseMetaItems(menuItems) {
|
|
322
|
+
if (Array.isArray(menuItems)) {
|
|
323
|
+
return menuItems.map(parseMetaItem);
|
|
324
|
+
}
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
function parseMetaItem(menuItem) {
|
|
328
|
+
return {
|
|
329
|
+
type: "MetaMenuItem",
|
|
330
|
+
raw: menuItem,
|
|
331
|
+
children: parseMetaItems(menuItem.children)
|
|
332
|
+
};
|
|
333
|
+
}
|
|
307
334
|
//# sourceMappingURL=parseStoryboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","childrenToSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","originalSlots","newSlots","process","env","NODE_ENV","console","warn","child","slot","prototype","hasOwnProperty","call","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","then","else","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ConditionalEventHandler,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotConfOfBricks,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(\n childrenToSlots(\n (brick as { children?: BrickConf[] }).children,\n brick.slots as SlotsConf\n ),\n options\n ),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n): SlotsConf | undefined {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = (child as { slot?: string }).slot ?? \"\";\n if (!Object.prototype.hasOwnProperty.call(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n then: parseEventHandlers((handler as ConditionalEventHandler).then),\n else: parseEventHandlers((handler as ConditionalEventHandler).else),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","menus","parseMetaMenus","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","childrenToSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","originalSlots","newSlots","process","env","NODE_ENV","console","warn","child","slot","prototype","hasOwnProperty","call","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","then","else","callbackType","parseMetaMenu","items","parseMetaItems","menuItems","parseMetaItem","menuItem"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ConditionalEventHandler,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MenuItemRawData,\n MenuRawData,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotConfOfBricks,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeMetaMenu,\n StoryboardNodeMetaMenuItem,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n menus: parseMetaMenus(storyboard.meta?.menus),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(\n childrenToSlots(\n (brick as { children?: BrickConf[] }).children,\n brick.slots as SlotsConf\n ),\n options\n ),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n): SlotsConf | undefined {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = (child as { slot?: string }).slot ?? \"\";\n if (!Object.prototype.hasOwnProperty.call(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n then: parseEventHandlers((handler as ConditionalEventHandler).then),\n else: parseEventHandlers((handler as ConditionalEventHandler).else),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n\nfunction parseMetaMenus(menus: MenuRawData[]): StoryboardNodeMetaMenu[] {\n if (Array.isArray(menus)) {\n return menus.map<StoryboardNodeMetaMenu>(parseMetaMenu);\n }\n return [];\n}\n\nfunction parseMetaMenu(menu: MenuRawData): StoryboardNodeMetaMenu {\n return {\n type: \"MetaMenu\",\n raw: menu,\n items: parseMetaItems(menu.items),\n };\n}\n\nfunction parseMetaItems(\n menuItems: MenuItemRawData[]\n): StoryboardNodeMetaMenuItem[] {\n if (Array.isArray(menuItems)) {\n return menuItems.map<StoryboardNodeMetaMenuItem>(parseMetaItem);\n }\n return [];\n}\n\nfunction parseMetaItem(menuItem: MenuItemRawData): StoryboardNodeMetaMenuItem {\n return {\n type: \"MetaMenuItem\",\n raw: menuItem,\n children: parseMetaItems(menuItem.children),\n };\n}\n"],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ function traverseNode(node, callback, path) {
|
|
|
36
36
|
case "Root":
|
|
37
37
|
traverseNodes(node.routes, callback, childPath);
|
|
38
38
|
traverseNodes(node.templates, callback, childPath);
|
|
39
|
+
traverseNodes(node.menus, callback, childPath);
|
|
39
40
|
break;
|
|
40
41
|
case "Route":
|
|
41
42
|
traverseNodes(node.context, callback, childPath);
|
|
@@ -91,6 +92,12 @@ function traverseNode(node, callback, path) {
|
|
|
91
92
|
case "BrickMenu":
|
|
92
93
|
traverseNode(node.brick, callback, childPath);
|
|
93
94
|
break;
|
|
95
|
+
case "MetaMenu":
|
|
96
|
+
traverseNodes(node.items, callback, childPath);
|
|
97
|
+
break;
|
|
98
|
+
case "MetaMenuItem":
|
|
99
|
+
traverseNodes(node.children, callback, childPath);
|
|
100
|
+
break;
|
|
94
101
|
case "Resolvable":
|
|
95
102
|
case "FalseMenu":
|
|
96
103
|
case "StaticMenu":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","path","node","childPath","concat","type","routes","templates","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","then","else","brick","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (\n node: StoryboardNode,\n path: StoryboardNode[]\n) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback, []);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback, []);\n } else {\n traverseNode(nodeOrNodes, callback, []);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback, path);\n }\n}\n\nfunction traverseNode(\n node: StoryboardNode,\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!node) {\n return;\n }\n callback(node, path);\n const childPath = path.concat(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback, childPath);\n traverseNodes(node.templates, callback, childPath);\n break;\n case \"Route\":\n traverseNodes(node.context, callback, childPath);\n traverseNode(node.redirect, callback, childPath);\n traverseNode(node.menu, callback, childPath);\n traverseNodes(node.providers, callback, childPath);\n traverseNodes(node.defineResolves, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n break;\n case \"Brick\":\n traverseNode(node.if, callback, childPath);\n traverseNodes(node.events, callback, childPath);\n traverseNodes(node.lifeCycle, callback, childPath);\n traverseNodes(node.useBrick, callback, childPath);\n traverseNodes(node.useBackend, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback, childPath);\n traverseNodes(node.onChange, callback, childPath);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback, childPath);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback, childPath);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback, childPath);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback, childPath);\n traverseNodes(node.then, callback, childPath);\n traverseNodes(node.else, callback, childPath);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback, childPath);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback, childPath);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":";;;;;;;AAOA;AACO,SAASA,kBAAkB,CAChCC,GAAuB,EACvBC,QAA0B,EACpB;EACNC,YAAY,CAACF,GAAG,EAAEC,QAAQ,EAAE,EAAE,CAAC;AACjC;;AAEA;AACO,SAASE,QAAQ,CACtBC,WAA8C,EAC9CH,QAA0B,EACpB;EACN,IAAII,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAAE;IAC9BG,aAAa,CAACH,WAAW,EAAEH,QAAQ,EAAE,EAAE,CAAC;EAC1C,CAAC,MAAM;IACLC,YAAY,CAACE,WAAW,EAAEH,QAAQ,EAAE,EAAE,CAAC;EACzC;AACF;AAEA,SAASM,aAAa,CACpBC,KAAuB,EACvBP,QAA0B,EAC1BQ,IAAsB,EAChB;EACN,IAAI,CAACD,KAAK,EAAE;IACV;EACF;EACA,KAAK,MAAME,IAAI,IAAIF,KAAK,EAAE;IACxBN,YAAY,CAACQ,IAAI,EAAET,QAAQ,EAAEQ,IAAI,CAAC;EACpC;AACF;AAEA,SAASP,YAAY,CACnBQ,IAAoB,EACpBT,QAA0B,EAC1BQ,IAAsB,EAChB;EACN,IAAI,CAACC,IAAI,EAAE;IACT;EACF;EACAT,QAAQ,CAACS,IAAI,EAAED,IAAI,CAAC;EACpB,MAAME,SAAS,GAAGF,IAAI,CAACG,MAAM,CAACF,IAAI,CAAC;EACnC,QAAQA,IAAI,CAACG,IAAI;IACf,KAAK,MAAM;MACTN,aAAa,CAACG,IAAI,CAACI,MAAM,EAAEb,QAAQ,EAAEU,SAAS,CAAC;MAC/CJ,aAAa,CAACG,IAAI,CAACK,SAAS,EAAEd,QAAQ,EAAEU,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","path","node","childPath","concat","type","routes","templates","menus","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","then","else","brick","items","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (\n node: StoryboardNode,\n path: StoryboardNode[]\n) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback, []);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback, []);\n } else {\n traverseNode(nodeOrNodes, callback, []);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback, path);\n }\n}\n\nfunction traverseNode(\n node: StoryboardNode,\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!node) {\n return;\n }\n callback(node, path);\n const childPath = path.concat(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback, childPath);\n traverseNodes(node.templates, callback, childPath);\n traverseNodes(node.menus, callback, childPath);\n break;\n case \"Route\":\n traverseNodes(node.context, callback, childPath);\n traverseNode(node.redirect, callback, childPath);\n traverseNode(node.menu, callback, childPath);\n traverseNodes(node.providers, callback, childPath);\n traverseNodes(node.defineResolves, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n break;\n case \"Brick\":\n traverseNode(node.if, callback, childPath);\n traverseNodes(node.events, callback, childPath);\n traverseNodes(node.lifeCycle, callback, childPath);\n traverseNodes(node.useBrick, callback, childPath);\n traverseNodes(node.useBackend, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback, childPath);\n traverseNodes(node.onChange, callback, childPath);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback, childPath);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback, childPath);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback, childPath);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback, childPath);\n traverseNodes(node.then, callback, childPath);\n traverseNodes(node.else, callback, childPath);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback, childPath);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback, childPath);\n break;\n case \"MetaMenu\":\n traverseNodes(node.items, callback, childPath);\n break;\n case \"MetaMenuItem\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","names":[],"sources":["../../src/interfaces.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n BrickMenuConf,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MessageConf,\n ResolveConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\n\nexport type StoryboardNode =\n | StoryboardNodeRoot\n | StoryboardNodeRoute\n | StoryboardNodeTemplate\n | StoryboardNodeBrick\n | StoryboardNodeSlot\n | StoryboardNodeContext\n | StoryboardNodeResolvable\n | StoryboardNodeMenu\n | StoryboardNodeLifeCycle\n | StoryboardNodeEvent\n | StoryboardNodeEventHandler\n | StoryboardNodeConditionalEvent\n | StoryboardNodeEventCallback\n | StoryboardNodeCondition\n | StoryboardNodeUseBrickEntry\n | StoryboardNodeUseBackendEntry;\n\nexport interface StoryboardNodeRoot {\n type: \"Root\";\n raw: Storyboard;\n routes: StoryboardNodeRoute[];\n templates: StoryboardNodeTemplate[];\n}\n\nexport interface StoryboardNodeTemplate {\n type: \"Template\";\n raw: CustomTemplate | CustomTemplateConstructor;\n bricks?: StoryboardNodeBrick[];\n context?: StoryboardNodeContext[];\n}\n\nexport interface StoryboardNodeRoute {\n type: \"Route\";\n raw: RouteConf;\n context?: StoryboardNodeContext[];\n redirect?: StoryboardNodeResolvable;\n menu?: StoryboardNodeMenu;\n providers?: StoryboardNodeBrick[];\n defineResolves?: StoryboardNodeResolvable[];\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeBrick =\n | StoryboardNodeNormalBrick\n | StoryboardNodeUseBrick;\n\nexport interface StoryboardNodeBrickBase {\n type: \"Brick\";\n raw: BrickConf | UseSingleBrickConf;\n isUseBrick?: boolean;\n if?: StoryboardNodeCondition;\n events?: StoryboardNodeEvent[];\n lifeCycle?: StoryboardNodeLifeCycle[];\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n context?: StoryboardNodeContext[];\n children: StoryboardNodeSlot[];\n}\n\nexport interface StoryboardNodeNormalBrick extends StoryboardNodeBrickBase {\n raw: BrickConf;\n isUseBrick?: false;\n}\n\nexport interface StoryboardNodeUseBrick extends StoryboardNodeBrickBase {\n raw: UseSingleBrickConf;\n isUseBrick: true;\n}\n\nexport interface StoryboardNodeUseBrickEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBrickEntry\";\n rawKey: \"useBrick\";\n}\n\nexport interface StoryboardNodeUseBackendEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBackendEntry\";\n rawKey: \"useBackend\";\n}\n\nexport interface StoryboardNodeUseEntryBase {\n rawContainer: Record<string, unknown>;\n children: StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeCondition =\n | StoryboardNodeLiteralCondition\n | StoryboardNodeResolvableCondition;\n\nexport interface StoryboardNodeLiteralCondition {\n type: \"LiteralCondition\";\n}\n\nexport interface StoryboardNodeResolvableCondition {\n type: \"ResolvableCondition\";\n resolve: StoryboardNodeResolvable | undefined;\n}\n\nexport interface StoryboardNodeSlot {\n type: \"Slot\";\n raw: SlotConf;\n slot: string;\n childrenType: \"Route\" | \"Brick\";\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport interface StoryboardNodeContext {\n type: \"Context\";\n raw: ContextConf | CustomTemplateState;\n resolve?: StoryboardNodeResolvable;\n onChange?: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeResolvable {\n type: \"Resolvable\";\n raw: ResolveConf;\n isConditional?: boolean;\n}\n\nexport type StoryboardNodeMenu =\n | StoryboardNodeFalseMenu\n | StoryboardNodeStaticMenu\n | StoryboardNodeBrickMenu\n | StoryboardNodeResolvableMenu;\n\nexport interface StoryboardNodeFalseMenu {\n type: \"FalseMenu\";\n}\n\nexport interface StoryboardNodeStaticMenu {\n type: \"StaticMenu\";\n}\n\nexport interface StoryboardNodeBrickMenu {\n type: \"BrickMenu\";\n raw: BrickMenuConf;\n brick: StoryboardNodeBrick;\n}\n\nexport interface StoryboardNodeResolvableMenu {\n type: \"ResolvableMenu\";\n resolve: StoryboardNodeResolvable;\n}\n\nexport type StoryboardNodeLifeCycle =\n | StoryboardNodeResolveLifeCycle\n | StoryboardNodeSimpleLifeCycle\n | StoryboardNodeConditionalLifeCycle\n | StoryboardNodeUnknownLifeCycle;\n\nexport interface StoryboardNodeResolveLifeCycle {\n type: \"ResolveLifeCycle\";\n rawContainer: BrickLifeCycle;\n rawKey: \"useResolves\";\n resolves: StoryboardNodeResolvable[] | undefined;\n}\n\nexport interface StoryboardNodeSimpleLifeCycle {\n type: \"SimpleLifeCycle\";\n name:\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMessageClose\"\n | \"onBeforePageLoad\"\n | \"onBeforePageLeave\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMediaChange\";\n rawContainer: BrickLifeCycle;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeConditionalLifeCycle {\n type: \"ConditionalLifeCycle\";\n name: \"onMessage\" | \"onScrollIntoView\";\n events: StoryboardNodeConditionalEvent[] | undefined;\n}\n\nexport interface StoryboardNodeUnknownLifeCycle {\n type: \"UnknownLifeCycle\";\n}\n\nexport interface StoryboardNodeEvent {\n type: \"Event\";\n rawContainer: BrickEventsMap;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventHandler {\n type: \"EventHandler\";\n raw: BrickEventHandler;\n callback: StoryboardNodeEventCallback[] | undefined;\n then: StoryboardNodeEventHandler[] | undefined;\n else: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeConditionalEvent {\n type: \"ConditionalEvent\";\n rawContainer: MessageConf | ScrollIntoViewConf;\n rawKey: \"handlers\";\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventCallback {\n type: \"EventCallback\";\n rawContainer: BrickEventHandlerCallback;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../src/interfaces.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n BrickMenuConf,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuItemRawData,\n MenuRawData,\n MessageConf,\n ResolveConf,\n RouteConf,\n ScrollIntoViewConf,\n SlotConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\n\nexport type StoryboardNode =\n | StoryboardNodeRoot\n | StoryboardNodeRoute\n | StoryboardNodeTemplate\n | StoryboardNodeBrick\n | StoryboardNodeSlot\n | StoryboardNodeContext\n | StoryboardNodeResolvable\n | StoryboardNodeMenu\n | StoryboardNodeLifeCycle\n | StoryboardNodeEvent\n | StoryboardNodeEventHandler\n | StoryboardNodeConditionalEvent\n | StoryboardNodeEventCallback\n | StoryboardNodeCondition\n | StoryboardNodeUseBrickEntry\n | StoryboardNodeUseBackendEntry\n | StoryboardNodeMetaMenu\n | StoryboardNodeMetaMenuItem;\n\nexport interface StoryboardNodeRoot {\n type: \"Root\";\n raw: Storyboard;\n routes: StoryboardNodeRoute[];\n templates: StoryboardNodeTemplate[];\n menus: StoryboardNodeMetaMenu[];\n}\n\nexport interface StoryboardNodeTemplate {\n type: \"Template\";\n raw: CustomTemplate | CustomTemplateConstructor;\n bricks?: StoryboardNodeBrick[];\n context?: StoryboardNodeContext[];\n}\n\nexport interface StoryboardNodeRoute {\n type: \"Route\";\n raw: RouteConf;\n context?: StoryboardNodeContext[];\n redirect?: StoryboardNodeResolvable;\n menu?: StoryboardNodeMenu;\n providers?: StoryboardNodeBrick[];\n defineResolves?: StoryboardNodeResolvable[];\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeBrick =\n | StoryboardNodeNormalBrick\n | StoryboardNodeUseBrick;\n\nexport interface StoryboardNodeBrickBase {\n type: \"Brick\";\n raw: BrickConf | UseSingleBrickConf;\n isUseBrick?: boolean;\n if?: StoryboardNodeCondition;\n events?: StoryboardNodeEvent[];\n lifeCycle?: StoryboardNodeLifeCycle[];\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n context?: StoryboardNodeContext[];\n children: StoryboardNodeSlot[];\n}\n\nexport interface StoryboardNodeNormalBrick extends StoryboardNodeBrickBase {\n raw: BrickConf;\n isUseBrick?: false;\n}\n\nexport interface StoryboardNodeUseBrick extends StoryboardNodeBrickBase {\n raw: UseSingleBrickConf;\n isUseBrick: true;\n}\n\nexport interface StoryboardNodeUseBrickEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBrickEntry\";\n rawKey: \"useBrick\";\n}\n\nexport interface StoryboardNodeUseBackendEntry\n extends StoryboardNodeUseEntryBase {\n type: \"UseBackendEntry\";\n rawKey: \"useBackend\";\n}\n\nexport interface StoryboardNodeUseEntryBase {\n rawContainer: Record<string, unknown>;\n children: StoryboardNodeBrick[];\n}\n\nexport type StoryboardNodeCondition =\n | StoryboardNodeLiteralCondition\n | StoryboardNodeResolvableCondition;\n\nexport interface StoryboardNodeLiteralCondition {\n type: \"LiteralCondition\";\n}\n\nexport interface StoryboardNodeResolvableCondition {\n type: \"ResolvableCondition\";\n resolve: StoryboardNodeResolvable | undefined;\n}\n\nexport interface StoryboardNodeSlot {\n type: \"Slot\";\n raw: SlotConf;\n slot: string;\n childrenType: \"Route\" | \"Brick\";\n children: StoryboardNodeRoute[] | StoryboardNodeBrick[];\n}\n\nexport interface StoryboardNodeContext {\n type: \"Context\";\n raw: ContextConf | CustomTemplateState;\n resolve?: StoryboardNodeResolvable;\n onChange?: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeResolvable {\n type: \"Resolvable\";\n raw: ResolveConf;\n isConditional?: boolean;\n}\n\nexport type StoryboardNodeMenu =\n | StoryboardNodeFalseMenu\n | StoryboardNodeStaticMenu\n | StoryboardNodeBrickMenu\n | StoryboardNodeResolvableMenu;\n\nexport interface StoryboardNodeFalseMenu {\n type: \"FalseMenu\";\n}\n\nexport interface StoryboardNodeStaticMenu {\n type: \"StaticMenu\";\n}\n\nexport interface StoryboardNodeBrickMenu {\n type: \"BrickMenu\";\n raw: BrickMenuConf;\n brick: StoryboardNodeBrick;\n}\n\nexport interface StoryboardNodeResolvableMenu {\n type: \"ResolvableMenu\";\n resolve: StoryboardNodeResolvable;\n}\n\nexport type StoryboardNodeLifeCycle =\n | StoryboardNodeResolveLifeCycle\n | StoryboardNodeSimpleLifeCycle\n | StoryboardNodeConditionalLifeCycle\n | StoryboardNodeUnknownLifeCycle;\n\nexport interface StoryboardNodeResolveLifeCycle {\n type: \"ResolveLifeCycle\";\n rawContainer: BrickLifeCycle;\n rawKey: \"useResolves\";\n resolves: StoryboardNodeResolvable[] | undefined;\n}\n\nexport interface StoryboardNodeSimpleLifeCycle {\n type: \"SimpleLifeCycle\";\n name:\n | \"onPageLoad\"\n | \"onPageLeave\"\n | \"onAnchorLoad\"\n | \"onAnchorUnload\"\n | \"onMessageClose\"\n | \"onBeforePageLoad\"\n | \"onBeforePageLeave\"\n | \"onMount\"\n | \"onUnmount\"\n | \"onMediaChange\";\n rawContainer: BrickLifeCycle;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[];\n}\n\nexport interface StoryboardNodeConditionalLifeCycle {\n type: \"ConditionalLifeCycle\";\n name: \"onMessage\" | \"onScrollIntoView\";\n events: StoryboardNodeConditionalEvent[] | undefined;\n}\n\nexport interface StoryboardNodeUnknownLifeCycle {\n type: \"UnknownLifeCycle\";\n}\n\nexport interface StoryboardNodeEvent {\n type: \"Event\";\n rawContainer: BrickEventsMap;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventHandler {\n type: \"EventHandler\";\n raw: BrickEventHandler;\n callback: StoryboardNodeEventCallback[] | undefined;\n then: StoryboardNodeEventHandler[] | undefined;\n else: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeConditionalEvent {\n type: \"ConditionalEvent\";\n rawContainer: MessageConf | ScrollIntoViewConf;\n rawKey: \"handlers\";\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeEventCallback {\n type: \"EventCallback\";\n rawContainer: BrickEventHandlerCallback;\n rawKey: string;\n handlers: StoryboardNodeEventHandler[] | undefined;\n}\n\nexport interface StoryboardNodeMetaMenu {\n type: \"MetaMenu\";\n raw: MenuRawData;\n items?: StoryboardNodeMetaMenuItem[];\n}\n\nexport interface StoryboardNodeMetaMenuItem {\n type: \"MetaMenuItem\";\n raw: MenuItemRawData;\n children?: StoryboardNodeMetaMenuItem[];\n}\n"],"mappings":""}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
2
|
/** Parse storyboard as AST. */
|
|
3
3
|
export function parseStoryboard(storyboard) {
|
|
4
|
-
var _storyboard$meta;
|
|
4
|
+
var _storyboard$meta, _storyboard$meta2;
|
|
5
5
|
return {
|
|
6
6
|
type: "Root",
|
|
7
7
|
raw: storyboard,
|
|
8
8
|
routes: parseRoutes(storyboard.routes),
|
|
9
|
-
templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates)
|
|
9
|
+
templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates),
|
|
10
|
+
menus: parseMetaMenus((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.menus)
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
/** Parse storyboard routes as AST. */
|
|
@@ -305,4 +306,30 @@ function isObject(value) {
|
|
|
305
306
|
var type = typeof value;
|
|
306
307
|
return value != null && (type == "object" || type == "function");
|
|
307
308
|
}
|
|
309
|
+
function parseMetaMenus(menus) {
|
|
310
|
+
if (Array.isArray(menus)) {
|
|
311
|
+
return menus.map(parseMetaMenu);
|
|
312
|
+
}
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
function parseMetaMenu(menu) {
|
|
316
|
+
return {
|
|
317
|
+
type: "MetaMenu",
|
|
318
|
+
raw: menu,
|
|
319
|
+
items: parseMetaItems(menu.items)
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
function parseMetaItems(menuItems) {
|
|
323
|
+
if (Array.isArray(menuItems)) {
|
|
324
|
+
return menuItems.map(parseMetaItem);
|
|
325
|
+
}
|
|
326
|
+
return [];
|
|
327
|
+
}
|
|
328
|
+
function parseMetaItem(menuItem) {
|
|
329
|
+
return {
|
|
330
|
+
type: "MetaMenuItem",
|
|
331
|
+
raw: menuItem,
|
|
332
|
+
children: parseMetaItems(menuItem.children)
|
|
333
|
+
};
|
|
334
|
+
}
|
|
308
335
|
//# sourceMappingURL=parseStoryboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","childrenToSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","originalSlots","newSlots","process","env","NODE_ENV","console","warn","child","slot","prototype","hasOwnProperty","call","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","then","else","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ConditionalEventHandler,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotConfOfBricks,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(\n childrenToSlots(\n (brick as { children?: BrickConf[] }).children,\n brick.slots as SlotsConf\n ),\n options\n ),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n): SlotsConf | undefined {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = (child as { slot?: string }).slot ?? \"\";\n if (!Object.prototype.hasOwnProperty.call(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n then: parseEventHandlers((handler as ConditionalEventHandler).then),\n else: parseEventHandlers((handler as ConditionalEventHandler).else),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","menus","parseMetaMenus","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","childrenToSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","originalSlots","newSlots","process","env","NODE_ENV","console","warn","child","slot","prototype","hasOwnProperty","call","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","then","else","callbackType","parseMetaMenu","items","parseMetaItems","menuItems","parseMetaItem","menuItem"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ConditionalEventHandler,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MenuItemRawData,\n MenuRawData,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotConfOfBricks,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeMetaMenu,\n StoryboardNodeMetaMenuItem,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n menus: parseMetaMenus(storyboard.meta?.menus),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(\n childrenToSlots(\n (brick as { children?: BrickConf[] }).children,\n brick.slots as SlotsConf\n ),\n options\n ),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n): SlotsConf | undefined {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = (child as { slot?: string }).slot ?? \"\";\n if (!Object.prototype.hasOwnProperty.call(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n then: parseEventHandlers((handler as ConditionalEventHandler).then),\n else: parseEventHandlers((handler as ConditionalEventHandler).else),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n\nfunction parseMetaMenus(menus: MenuRawData[]): StoryboardNodeMetaMenu[] {\n if (Array.isArray(menus)) {\n return menus.map<StoryboardNodeMetaMenu>(parseMetaMenu);\n }\n return [];\n}\n\nfunction parseMetaMenu(menu: MenuRawData): StoryboardNodeMetaMenu {\n return {\n type: \"MetaMenu\",\n raw: menu,\n items: parseMetaItems(menu.items),\n };\n}\n\nfunction parseMetaItems(\n menuItems: MenuItemRawData[]\n): StoryboardNodeMetaMenuItem[] {\n if (Array.isArray(menuItems)) {\n return menuItems.map<StoryboardNodeMetaMenuItem>(parseMetaItem);\n }\n return [];\n}\n\nfunction parseMetaItem(menuItem: MenuItemRawData): StoryboardNodeMetaMenuItem {\n return {\n type: \"MetaMenuItem\",\n raw: menuItem,\n children: parseMetaItems(menuItem.children),\n };\n}\n"],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ function traverseNode(node, callback, path) {
|
|
|
29
29
|
case "Root":
|
|
30
30
|
traverseNodes(node.routes, callback, childPath);
|
|
31
31
|
traverseNodes(node.templates, callback, childPath);
|
|
32
|
+
traverseNodes(node.menus, callback, childPath);
|
|
32
33
|
break;
|
|
33
34
|
case "Route":
|
|
34
35
|
traverseNodes(node.context, callback, childPath);
|
|
@@ -84,6 +85,12 @@ function traverseNode(node, callback, path) {
|
|
|
84
85
|
case "BrickMenu":
|
|
85
86
|
traverseNode(node.brick, callback, childPath);
|
|
86
87
|
break;
|
|
88
|
+
case "MetaMenu":
|
|
89
|
+
traverseNodes(node.items, callback, childPath);
|
|
90
|
+
break;
|
|
91
|
+
case "MetaMenuItem":
|
|
92
|
+
traverseNodes(node.children, callback, childPath);
|
|
93
|
+
break;
|
|
87
94
|
case "Resolvable":
|
|
88
95
|
case "FalseMenu":
|
|
89
96
|
case "StaticMenu":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","path","node","childPath","concat","type","routes","templates","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","then","else","brick","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (\n node: StoryboardNode,\n path: StoryboardNode[]\n) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback, []);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback, []);\n } else {\n traverseNode(nodeOrNodes, callback, []);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback, path);\n }\n}\n\nfunction traverseNode(\n node: StoryboardNode,\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!node) {\n return;\n }\n callback(node, path);\n const childPath = path.concat(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback, childPath);\n traverseNodes(node.templates, callback, childPath);\n break;\n case \"Route\":\n traverseNodes(node.context, callback, childPath);\n traverseNode(node.redirect, callback, childPath);\n traverseNode(node.menu, callback, childPath);\n traverseNodes(node.providers, callback, childPath);\n traverseNodes(node.defineResolves, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n break;\n case \"Brick\":\n traverseNode(node.if, callback, childPath);\n traverseNodes(node.events, callback, childPath);\n traverseNodes(node.lifeCycle, callback, childPath);\n traverseNodes(node.useBrick, callback, childPath);\n traverseNodes(node.useBackend, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback, childPath);\n traverseNodes(node.onChange, callback, childPath);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback, childPath);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback, childPath);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback, childPath);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback, childPath);\n traverseNodes(node.then, callback, childPath);\n traverseNodes(node.else, callback, childPath);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback, childPath);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback, childPath);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":"AAOA;AACA,OAAO,SAASA,kBAAkB,CAChCC,GAAuB,EACvBC,QAA0B,EACpB;EACNC,YAAY,CAACF,GAAG,EAAEC,QAAQ,EAAE,EAAE,CAAC;AACjC;;AAEA;AACA,OAAO,SAASE,QAAQ,CACtBC,WAA8C,EAC9CH,QAA0B,EACpB;EACN,IAAII,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAAE;IAC9BG,aAAa,CAACH,WAAW,EAAEH,QAAQ,EAAE,EAAE,CAAC;EAC1C,CAAC,MAAM;IACLC,YAAY,CAACE,WAAW,EAAEH,QAAQ,EAAE,EAAE,CAAC;EACzC;AACF;AAEA,SAASM,aAAa,CACpBC,KAAuB,EACvBP,QAA0B,EAC1BQ,IAAsB,EAChB;EACN,IAAI,CAACD,KAAK,EAAE;IACV;EACF;EACA,KAAK,IAAME,KAAI,IAAIF,KAAK,EAAE;IACxBN,YAAY,CAACQ,KAAI,EAAET,QAAQ,EAAEQ,IAAI,CAAC;EACpC;AACF;AAEA,SAASP,YAAY,CACnBQ,IAAoB,EACpBT,QAA0B,EAC1BQ,IAAsB,EAChB;EACN,IAAI,CAACC,IAAI,EAAE;IACT;EACF;EACAT,QAAQ,CAACS,IAAI,EAAED,IAAI,CAAC;EACpB,IAAME,SAAS,GAAGF,IAAI,CAACG,MAAM,CAACF,IAAI,CAAC;EACnC,QAAQA,IAAI,CAACG,IAAI;IACf,KAAK,MAAM;MACTN,aAAa,CAACG,IAAI,CAACI,MAAM,EAAEb,QAAQ,EAAEU,SAAS,CAAC;MAC/CJ,aAAa,CAACG,IAAI,CAACK,SAAS,EAAEd,QAAQ,EAAEU,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","path","node","childPath","concat","type","routes","templates","menus","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","then","else","brick","items","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (\n node: StoryboardNode,\n path: StoryboardNode[]\n) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback, []);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback, []);\n } else {\n traverseNode(nodeOrNodes, callback, []);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback, path);\n }\n}\n\nfunction traverseNode(\n node: StoryboardNode,\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!node) {\n return;\n }\n callback(node, path);\n const childPath = path.concat(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback, childPath);\n traverseNodes(node.templates, callback, childPath);\n traverseNodes(node.menus, callback, childPath);\n break;\n case \"Route\":\n traverseNodes(node.context, callback, childPath);\n traverseNode(node.redirect, callback, childPath);\n traverseNode(node.menu, callback, childPath);\n traverseNodes(node.providers, callback, childPath);\n traverseNodes(node.defineResolves, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n break;\n case \"Brick\":\n traverseNode(node.if, callback, childPath);\n traverseNodes(node.events, callback, childPath);\n traverseNodes(node.lifeCycle, callback, childPath);\n traverseNodes(node.useBrick, callback, childPath);\n traverseNodes(node.useBackend, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback, childPath);\n traverseNodes(node.onChange, callback, childPath);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback, childPath);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback, childPath);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback, childPath);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback, childPath);\n traverseNodes(node.then, callback, childPath);\n traverseNodes(node.else, callback, childPath);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback, childPath);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback, childPath);\n break;\n case \"MetaMenu\":\n traverseNodes(node.items, callback, childPath);\n break;\n case \"MetaMenuItem\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { BrickConf, BrickEventHandler, BrickEventHandlerCallback, BrickEventsMap, BrickLifeCycle, BrickMenuConf, ContextConf, CustomTemplate, CustomTemplateConstructor, CustomTemplateState, MessageConf, ResolveConf, RouteConf, ScrollIntoViewConf, SlotConf, Storyboard, UseSingleBrickConf } from "@next-core/brick-types";
|
|
2
|
-
export declare type StoryboardNode = StoryboardNodeRoot | StoryboardNodeRoute | StoryboardNodeTemplate | StoryboardNodeBrick | StoryboardNodeSlot | StoryboardNodeContext | StoryboardNodeResolvable | StoryboardNodeMenu | StoryboardNodeLifeCycle | StoryboardNodeEvent | StoryboardNodeEventHandler | StoryboardNodeConditionalEvent | StoryboardNodeEventCallback | StoryboardNodeCondition | StoryboardNodeUseBrickEntry | StoryboardNodeUseBackendEntry;
|
|
1
|
+
import type { BrickConf, BrickEventHandler, BrickEventHandlerCallback, BrickEventsMap, BrickLifeCycle, BrickMenuConf, ContextConf, CustomTemplate, CustomTemplateConstructor, CustomTemplateState, MenuItemRawData, MenuRawData, MessageConf, ResolveConf, RouteConf, ScrollIntoViewConf, SlotConf, Storyboard, UseSingleBrickConf } from "@next-core/brick-types";
|
|
2
|
+
export declare type StoryboardNode = StoryboardNodeRoot | StoryboardNodeRoute | StoryboardNodeTemplate | StoryboardNodeBrick | StoryboardNodeSlot | StoryboardNodeContext | StoryboardNodeResolvable | StoryboardNodeMenu | StoryboardNodeLifeCycle | StoryboardNodeEvent | StoryboardNodeEventHandler | StoryboardNodeConditionalEvent | StoryboardNodeEventCallback | StoryboardNodeCondition | StoryboardNodeUseBrickEntry | StoryboardNodeUseBackendEntry | StoryboardNodeMetaMenu | StoryboardNodeMetaMenuItem;
|
|
3
3
|
export interface StoryboardNodeRoot {
|
|
4
4
|
type: "Root";
|
|
5
5
|
raw: Storyboard;
|
|
6
6
|
routes: StoryboardNodeRoute[];
|
|
7
7
|
templates: StoryboardNodeTemplate[];
|
|
8
|
+
menus: StoryboardNodeMetaMenu[];
|
|
8
9
|
}
|
|
9
10
|
export interface StoryboardNodeTemplate {
|
|
10
11
|
type: "Template";
|
|
@@ -144,3 +145,13 @@ export interface StoryboardNodeEventCallback {
|
|
|
144
145
|
rawKey: string;
|
|
145
146
|
handlers: StoryboardNodeEventHandler[] | undefined;
|
|
146
147
|
}
|
|
148
|
+
export interface StoryboardNodeMetaMenu {
|
|
149
|
+
type: "MetaMenu";
|
|
150
|
+
raw: MenuRawData;
|
|
151
|
+
items?: StoryboardNodeMetaMenuItem[];
|
|
152
|
+
}
|
|
153
|
+
export interface StoryboardNodeMetaMenuItem {
|
|
154
|
+
type: "MetaMenuItem";
|
|
155
|
+
raw: MenuItemRawData;
|
|
156
|
+
children?: StoryboardNodeMetaMenuItem[];
|
|
157
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/storyboard",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.9",
|
|
4
4
|
"description": "Parse storyboard as AST",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-core/tree/master/packages/storyboard",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
},
|
|
30
30
|
"sideEffects": false,
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@next-core/brick-types": "^2.
|
|
32
|
+
"@next-core/brick-types": "^2.93.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@next-core/build-next-libs": "^0.2.16"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "a9d10b4cd075155a7863441e25a859e4db85c37a"
|
|
38
38
|
}
|