@next-core/storyboard 0.2.4 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +0 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces.js.map +1 -1
- package/dist/cjs/parseStoryboard.js +7 -40
- package/dist/cjs/parseStoryboard.js.map +1 -1
- package/dist/cjs/traverseStoryboard.js +1 -22
- package/dist/cjs/traverseStoryboard.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/parseStoryboard.js +7 -39
- package/dist/esm/parseStoryboard.js.map +1 -1
- package/dist/esm/traverseStoryboard.js +1 -20
- package/dist/esm/traverseStoryboard.js.map +1 -1
- package/dist/types/interfaces.d.ts +1 -1
- package/package.json +4 -4
package/dist/cjs/index.js
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _interfaces = require("./interfaces");
|
|
8
|
-
|
|
9
7
|
Object.keys(_interfaces).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _interfaces[key]) return;
|
|
@@ -16,9 +14,7 @@ Object.keys(_interfaces).forEach(function (key) {
|
|
|
16
14
|
}
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
|
-
|
|
20
17
|
var _parseStoryboard = require("./parseStoryboard");
|
|
21
|
-
|
|
22
18
|
Object.keys(_parseStoryboard).forEach(function (key) {
|
|
23
19
|
if (key === "default" || key === "__esModule") return;
|
|
24
20
|
if (key in exports && exports[key] === _parseStoryboard[key]) return;
|
|
@@ -29,9 +25,7 @@ Object.keys(_parseStoryboard).forEach(function (key) {
|
|
|
29
25
|
}
|
|
30
26
|
});
|
|
31
27
|
});
|
|
32
|
-
|
|
33
28
|
var _traverseStoryboard = require("./traverseStoryboard");
|
|
34
|
-
|
|
35
29
|
Object.keys(_traverseStoryboard).forEach(function (key) {
|
|
36
30
|
if (key === "default" || key === "__esModule") return;
|
|
37
31
|
if (key in exports && exports[key] === _traverseStoryboard[key]) return;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -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 | \"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}\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 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}\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":""}
|
|
@@ -8,11 +8,9 @@ exports.parseRoutes = parseRoutes;
|
|
|
8
8
|
exports.parseStoryboard = parseStoryboard;
|
|
9
9
|
exports.parseTemplate = parseTemplate;
|
|
10
10
|
exports.parseTemplates = parseTemplates;
|
|
11
|
-
|
|
12
11
|
/** Parse storyboard as AST. */
|
|
13
12
|
function parseStoryboard(storyboard) {
|
|
14
13
|
var _storyboard$meta;
|
|
15
|
-
|
|
16
14
|
return {
|
|
17
15
|
type: "Root",
|
|
18
16
|
raw: storyboard,
|
|
@@ -20,7 +18,6 @@ function parseStoryboard(storyboard) {
|
|
|
20
18
|
templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates)
|
|
21
19
|
};
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
/** Parse storyboard routes as AST. */
|
|
25
22
|
function parseRoutes(routes, options) {
|
|
26
23
|
if (Array.isArray(routes)) {
|
|
@@ -37,22 +34,18 @@ function parseRoutes(routes, options) {
|
|
|
37
34
|
children: route.type === "routes" ? parseRoutes(route.routes, options) : parseBricks(route.bricks, options)
|
|
38
35
|
}));
|
|
39
36
|
}
|
|
40
|
-
|
|
41
37
|
return [];
|
|
42
38
|
}
|
|
43
|
-
/** Parse storyboard templates as AST. */
|
|
44
|
-
|
|
45
39
|
|
|
40
|
+
/** Parse storyboard templates as AST. */
|
|
46
41
|
function parseTemplates(templates) {
|
|
47
42
|
if (Array.isArray(templates)) {
|
|
48
43
|
return templates.map(parseTemplate);
|
|
49
44
|
}
|
|
50
|
-
|
|
51
45
|
return [];
|
|
52
46
|
}
|
|
53
|
-
/** Parse a storyboard template as AST. */
|
|
54
|
-
|
|
55
47
|
|
|
48
|
+
/** Parse a storyboard template as AST. */
|
|
56
49
|
function parseTemplate(tpl) {
|
|
57
50
|
return {
|
|
58
51
|
type: "Template",
|
|
@@ -61,17 +54,14 @@ function parseTemplate(tpl) {
|
|
|
61
54
|
context: parseContext(tpl.state)
|
|
62
55
|
};
|
|
63
56
|
}
|
|
64
|
-
|
|
65
57
|
function parseBricks(bricks, options) {
|
|
66
58
|
if (Array.isArray(bricks)) {
|
|
67
59
|
return bricks.map(brick => parseBrick(brick, options));
|
|
68
60
|
}
|
|
69
|
-
|
|
70
61
|
return [];
|
|
71
62
|
}
|
|
72
|
-
/** Parse a storyboard brick as AST. */
|
|
73
|
-
|
|
74
63
|
|
|
64
|
+
/** Parse a storyboard brick as AST. */
|
|
75
65
|
function parseBrick(brick, options) {
|
|
76
66
|
return {
|
|
77
67
|
type: "Brick",
|
|
@@ -87,7 +77,6 @@ function parseBrick(brick, options) {
|
|
|
87
77
|
children: parseSlots(brick.slots, options)
|
|
88
78
|
};
|
|
89
79
|
}
|
|
90
|
-
|
|
91
80
|
function parseCondition(condition) {
|
|
92
81
|
if (isObject(condition)) {
|
|
93
82
|
return {
|
|
@@ -95,16 +84,13 @@ function parseCondition(condition) {
|
|
|
95
84
|
resolve: parseResolvable(condition)
|
|
96
85
|
};
|
|
97
86
|
}
|
|
98
|
-
|
|
99
87
|
return {
|
|
100
88
|
type: "LiteralCondition"
|
|
101
89
|
};
|
|
102
90
|
}
|
|
103
|
-
|
|
104
91
|
function parseBrickProperties(props) {
|
|
105
92
|
const useBrick = [];
|
|
106
93
|
const useBackend = [];
|
|
107
|
-
|
|
108
94
|
function walkBrickProperties(value) {
|
|
109
95
|
if (Array.isArray(value)) {
|
|
110
96
|
for (const item of value) {
|
|
@@ -113,7 +99,6 @@ function parseBrickProperties(props) {
|
|
|
113
99
|
} else if (isObject(value)) {
|
|
114
100
|
if (value.useBrick || value.useBackend) {
|
|
115
101
|
var _value$useBackend;
|
|
116
|
-
|
|
117
102
|
if (value.useBrick) {
|
|
118
103
|
useBrick.push({
|
|
119
104
|
type: "UseBrickEntry",
|
|
@@ -124,9 +109,7 @@ function parseBrickProperties(props) {
|
|
|
124
109
|
})
|
|
125
110
|
});
|
|
126
111
|
}
|
|
127
|
-
|
|
128
112
|
const provider = (_value$useBackend = value.useBackend) === null || _value$useBackend === void 0 ? void 0 : _value$useBackend.provider;
|
|
129
|
-
|
|
130
113
|
if (typeof provider === "string") {
|
|
131
114
|
useBackend.push({
|
|
132
115
|
type: "UseBackendEntry",
|
|
@@ -144,14 +127,12 @@ function parseBrickProperties(props) {
|
|
|
144
127
|
}
|
|
145
128
|
}
|
|
146
129
|
}
|
|
147
|
-
|
|
148
130
|
walkBrickProperties(props);
|
|
149
131
|
return {
|
|
150
132
|
useBrick,
|
|
151
133
|
useBackend
|
|
152
134
|
};
|
|
153
135
|
}
|
|
154
|
-
|
|
155
136
|
function parseLifeCycles(lifeCycle) {
|
|
156
137
|
if (isObject(lifeCycle)) {
|
|
157
138
|
return Object.entries(lifeCycle).map(([name, conf]) => {
|
|
@@ -163,7 +144,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
163
144
|
rawKey: name,
|
|
164
145
|
resolves: Array.isArray(conf) ? conf.map(item => parseResolvable(item, true)).filter(Boolean) : undefined
|
|
165
146
|
};
|
|
166
|
-
|
|
167
147
|
case "onPageLoad":
|
|
168
148
|
case "onPageLeave":
|
|
169
149
|
case "onAnchorLoad":
|
|
@@ -171,6 +151,8 @@ function parseLifeCycles(lifeCycle) {
|
|
|
171
151
|
case "onMessageClose":
|
|
172
152
|
case "onBeforePageLoad":
|
|
173
153
|
case "onBeforePageLeave":
|
|
154
|
+
case "onMount":
|
|
155
|
+
case "onUnmount":
|
|
174
156
|
case "onMediaChange":
|
|
175
157
|
return {
|
|
176
158
|
type: "SimpleLifeCycle",
|
|
@@ -179,7 +161,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
179
161
|
rawKey: name,
|
|
180
162
|
handlers: parseEventHandlers(conf)
|
|
181
163
|
};
|
|
182
|
-
|
|
183
164
|
case "onMessage":
|
|
184
165
|
case "onScrollIntoView":
|
|
185
166
|
return {
|
|
@@ -192,7 +173,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
192
173
|
handlers: parseEventHandlers(item.handlers)
|
|
193
174
|
}))
|
|
194
175
|
};
|
|
195
|
-
|
|
196
176
|
default:
|
|
197
177
|
return {
|
|
198
178
|
type: "UnknownLifeCycle"
|
|
@@ -201,7 +181,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
201
181
|
});
|
|
202
182
|
}
|
|
203
183
|
}
|
|
204
|
-
|
|
205
184
|
function parseSlots(slots, options) {
|
|
206
185
|
if (isObject(slots)) {
|
|
207
186
|
return Object.entries(slots).map(([slot, conf]) => ({
|
|
@@ -212,10 +191,8 @@ function parseSlots(slots, options) {
|
|
|
212
191
|
children: conf.type === "routes" ? parseRoutes(conf.routes, options) : parseBricks(conf.bricks, options)
|
|
213
192
|
}));
|
|
214
193
|
}
|
|
215
|
-
|
|
216
194
|
return [];
|
|
217
195
|
}
|
|
218
|
-
|
|
219
196
|
function parseEvents(events) {
|
|
220
197
|
if (isObject(events)) {
|
|
221
198
|
return Object.entries(events).map(([eventType, handlers]) => ({
|
|
@@ -226,7 +203,6 @@ function parseEvents(events) {
|
|
|
226
203
|
}));
|
|
227
204
|
}
|
|
228
205
|
}
|
|
229
|
-
|
|
230
206
|
function parseContext(contexts) {
|
|
231
207
|
if (Array.isArray(contexts)) {
|
|
232
208
|
return contexts.map(context => ({
|
|
@@ -237,18 +213,15 @@ function parseContext(contexts) {
|
|
|
237
213
|
}));
|
|
238
214
|
}
|
|
239
215
|
}
|
|
240
|
-
|
|
241
216
|
function parseMenu(menu) {
|
|
242
217
|
if (menu === false) {
|
|
243
218
|
return {
|
|
244
219
|
type: "FalseMenu"
|
|
245
220
|
};
|
|
246
221
|
}
|
|
247
|
-
|
|
248
222
|
if (!menu) {
|
|
249
223
|
return;
|
|
250
224
|
}
|
|
251
|
-
|
|
252
225
|
switch (menu.type) {
|
|
253
226
|
case "brick":
|
|
254
227
|
return {
|
|
@@ -256,20 +229,17 @@ function parseMenu(menu) {
|
|
|
256
229
|
raw: menu,
|
|
257
230
|
brick: parseBrick(menu)
|
|
258
231
|
};
|
|
259
|
-
|
|
260
232
|
case "resolve":
|
|
261
233
|
return {
|
|
262
234
|
type: "ResolvableMenu",
|
|
263
235
|
resolve: parseResolvable(menu.resolve)
|
|
264
236
|
};
|
|
265
|
-
|
|
266
237
|
default:
|
|
267
238
|
return {
|
|
268
239
|
type: "StaticMenu"
|
|
269
240
|
};
|
|
270
241
|
}
|
|
271
242
|
}
|
|
272
|
-
|
|
273
243
|
function parseResolvable(resolve, isConditional) {
|
|
274
244
|
if (isObject(resolve)) {
|
|
275
245
|
return {
|
|
@@ -279,7 +249,6 @@ function parseResolvable(resolve, isConditional) {
|
|
|
279
249
|
};
|
|
280
250
|
}
|
|
281
251
|
}
|
|
282
|
-
|
|
283
252
|
function parseEventHandlers(handlers) {
|
|
284
253
|
return [].concat(handlers).filter(Boolean).map(handler => ({
|
|
285
254
|
type: "EventHandler",
|
|
@@ -287,7 +256,6 @@ function parseEventHandlers(handlers) {
|
|
|
287
256
|
raw: handler
|
|
288
257
|
}));
|
|
289
258
|
}
|
|
290
|
-
|
|
291
259
|
function parseEventCallback(callback) {
|
|
292
260
|
if (isObject(callback)) {
|
|
293
261
|
return Object.entries(callback).map(([callbackType, handlers]) => ({
|
|
@@ -298,16 +266,15 @@ function parseEventCallback(callback) {
|
|
|
298
266
|
}));
|
|
299
267
|
}
|
|
300
268
|
}
|
|
301
|
-
|
|
302
269
|
function parseRouteProviders(providers) {
|
|
303
270
|
if (Array.isArray(providers)) {
|
|
304
271
|
return providers.map(provider => parseBrick(typeof provider === "string" ? {
|
|
305
272
|
brick: provider
|
|
306
273
|
} : provider));
|
|
307
274
|
}
|
|
308
|
-
}
|
|
309
|
-
|
|
275
|
+
}
|
|
310
276
|
|
|
277
|
+
// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744
|
|
311
278
|
function isObject(value) {
|
|
312
279
|
const type = typeof value;
|
|
313
280
|
return value != null && (type == "object" || type == "function");
|
|
@@ -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","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\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(brick.slots as SlotsConf, options),\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 \"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 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 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","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","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\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(brick.slots as SlotsConf, options),\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 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 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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"}
|
|
@@ -5,14 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.traverse = traverse;
|
|
7
7
|
exports.traverseStoryboard = traverseStoryboard;
|
|
8
|
-
|
|
9
8
|
/** Traverse a storyboard AST. */
|
|
10
9
|
function traverseStoryboard(ast, callback) {
|
|
11
10
|
traverseNode(ast, callback, []);
|
|
12
11
|
}
|
|
13
|
-
/** Traverse any node(s) in storyboard AST. */
|
|
14
|
-
|
|
15
12
|
|
|
13
|
+
/** Traverse any node(s) in storyboard AST. */
|
|
16
14
|
function traverse(nodeOrNodes, callback) {
|
|
17
15
|
if (Array.isArray(nodeOrNodes)) {
|
|
18
16
|
traverseNodes(nodeOrNodes, callback, []);
|
|
@@ -20,31 +18,25 @@ function traverse(nodeOrNodes, callback) {
|
|
|
20
18
|
traverseNode(nodeOrNodes, callback, []);
|
|
21
19
|
}
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
function traverseNodes(nodes, callback, path) {
|
|
25
22
|
if (!nodes) {
|
|
26
23
|
return;
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
for (const node of nodes) {
|
|
30
26
|
traverseNode(node, callback, path);
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
|
-
|
|
34
29
|
function traverseNode(node, callback, path) {
|
|
35
30
|
if (!node) {
|
|
36
31
|
return;
|
|
37
32
|
}
|
|
38
|
-
|
|
39
33
|
callback(node, path);
|
|
40
34
|
const childPath = path.concat(node);
|
|
41
|
-
|
|
42
35
|
switch (node.type) {
|
|
43
36
|
case "Root":
|
|
44
37
|
traverseNodes(node.routes, callback, childPath);
|
|
45
38
|
traverseNodes(node.templates, callback, childPath);
|
|
46
39
|
break;
|
|
47
|
-
|
|
48
40
|
case "Route":
|
|
49
41
|
traverseNodes(node.context, callback, childPath);
|
|
50
42
|
traverseNode(node.redirect, callback, childPath);
|
|
@@ -53,12 +45,10 @@ function traverseNode(node, callback, path) {
|
|
|
53
45
|
traverseNodes(node.defineResolves, callback, childPath);
|
|
54
46
|
traverseNodes(node.children, callback, childPath);
|
|
55
47
|
break;
|
|
56
|
-
|
|
57
48
|
case "Template":
|
|
58
49
|
traverseNodes(node.bricks, callback, childPath);
|
|
59
50
|
traverseNodes(node.context, callback, childPath);
|
|
60
51
|
break;
|
|
61
|
-
|
|
62
52
|
case "Brick":
|
|
63
53
|
traverseNode(node.if, callback, childPath);
|
|
64
54
|
traverseNodes(node.events, callback, childPath);
|
|
@@ -68,53 +58,43 @@ function traverseNode(node, callback, path) {
|
|
|
68
58
|
traverseNodes(node.context, callback, childPath);
|
|
69
59
|
traverseNodes(node.children, callback, childPath);
|
|
70
60
|
break;
|
|
71
|
-
|
|
72
61
|
case "Slot":
|
|
73
62
|
case "UseBrickEntry":
|
|
74
63
|
case "UseBackendEntry":
|
|
75
64
|
traverseNodes(node.children, callback, childPath);
|
|
76
65
|
break;
|
|
77
|
-
|
|
78
66
|
case "Context":
|
|
79
67
|
traverseNode(node.resolve, callback, childPath);
|
|
80
68
|
traverseNodes(node.onChange, callback, childPath);
|
|
81
69
|
break;
|
|
82
|
-
|
|
83
70
|
case "ResolvableCondition":
|
|
84
71
|
case "ResolvableMenu":
|
|
85
72
|
traverseNode(node.resolve, callback, childPath);
|
|
86
73
|
break;
|
|
87
|
-
|
|
88
74
|
case "ResolveLifeCycle":
|
|
89
75
|
traverseNodes(node.resolves, callback, childPath);
|
|
90
76
|
break;
|
|
91
|
-
|
|
92
77
|
case "Event":
|
|
93
78
|
case "EventCallback":
|
|
94
79
|
case "SimpleLifeCycle":
|
|
95
80
|
case "ConditionalEvent":
|
|
96
81
|
traverseNodes(node.handlers, callback, childPath);
|
|
97
82
|
break;
|
|
98
|
-
|
|
99
83
|
case "EventHandler":
|
|
100
84
|
traverseNodes(node.callback, callback, childPath);
|
|
101
85
|
break;
|
|
102
|
-
|
|
103
86
|
case "ConditionalLifeCycle":
|
|
104
87
|
traverseNodes(node.events, callback, childPath);
|
|
105
88
|
break;
|
|
106
|
-
|
|
107
89
|
case "BrickMenu":
|
|
108
90
|
traverseNode(node.brick, callback, childPath);
|
|
109
91
|
break;
|
|
110
|
-
|
|
111
92
|
case "Resolvable":
|
|
112
93
|
case "FalseMenu":
|
|
113
94
|
case "StaticMenu":
|
|
114
95
|
case "UnknownLifeCycle":
|
|
115
96
|
case "LiteralCondition":
|
|
116
97
|
break;
|
|
117
|
-
|
|
118
98
|
default:
|
|
119
99
|
// istanbul ignore if
|
|
120
100
|
if (process.env.NODE_ENV === "development") {
|
|
@@ -122,7 +102,6 @@ function traverseNode(node, callback, path) {
|
|
|
122
102
|
// @ts-expect-error
|
|
123
103
|
throw new Error(`Unhandled storyboard node type: ${node.type}`);
|
|
124
104
|
}
|
|
125
|
-
|
|
126
105
|
}
|
|
127
106
|
}
|
|
128
107
|
//# sourceMappingURL=traverseStoryboard.js.map
|
|
@@ -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","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 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":"
|
|
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","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 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;MAClD;IACF,KAAK,OAAO;MACVJ,aAAa,CAACG,IAAI,CAACM,OAAO,EAAEf,QAAQ,EAAEU,SAAS,CAAC;MAChDT,YAAY,CAACQ,IAAI,CAACO,QAAQ,EAAEhB,QAAQ,EAAEU,SAAS,CAAC;MAChDT,YAAY,CAACQ,IAAI,CAACQ,IAAI,EAAEjB,QAAQ,EAAEU,SAAS,CAAC;MAC5CJ,aAAa,CAACG,IAAI,CAACS,SAAS,EAAElB,QAAQ,EAAEU,SAAS,CAAC;MAClDJ,aAAa,CAACG,IAAI,CAACU,cAAc,EAAEnB,QAAQ,EAAEU,SAAS,CAAC;MACvDJ,aAAa,CAACG,IAAI,CAACW,QAAQ,EAAEpB,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,UAAU;MACbJ,aAAa,CAACG,IAAI,CAACY,MAAM,EAAErB,QAAQ,EAAEU,SAAS,CAAC;MAC/CJ,aAAa,CAACG,IAAI,CAACM,OAAO,EAAEf,QAAQ,EAAEU,SAAS,CAAC;MAChD;IACF,KAAK,OAAO;MACVT,YAAY,CAACQ,IAAI,CAACa,EAAE,EAAEtB,QAAQ,EAAEU,SAAS,CAAC;MAC1CJ,aAAa,CAACG,IAAI,CAACc,MAAM,EAAEvB,QAAQ,EAAEU,SAAS,CAAC;MAC/CJ,aAAa,CAACG,IAAI,CAACe,SAAS,EAAExB,QAAQ,EAAEU,SAAS,CAAC;MAClDJ,aAAa,CAACG,IAAI,CAACgB,QAAQ,EAAEzB,QAAQ,EAAEU,SAAS,CAAC;MACjDJ,aAAa,CAACG,IAAI,CAACiB,UAAU,EAAE1B,QAAQ,EAAEU,SAAS,CAAC;MACnDJ,aAAa,CAACG,IAAI,CAACM,OAAO,EAAEf,QAAQ,EAAEU,SAAS,CAAC;MAChDJ,aAAa,CAACG,IAAI,CAACW,QAAQ,EAAEpB,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,MAAM;IACX,KAAK,eAAe;IACpB,KAAK,iBAAiB;MACpBJ,aAAa,CAACG,IAAI,CAACW,QAAQ,EAAEpB,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,SAAS;MACZT,YAAY,CAACQ,IAAI,CAACkB,OAAO,EAAE3B,QAAQ,EAAEU,SAAS,CAAC;MAC/CJ,aAAa,CAACG,IAAI,CAACmB,QAAQ,EAAE5B,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,qBAAqB;IAC1B,KAAK,gBAAgB;MACnBT,YAAY,CAACQ,IAAI,CAACkB,OAAO,EAAE3B,QAAQ,EAAEU,SAAS,CAAC;MAC/C;IACF,KAAK,kBAAkB;MACrBJ,aAAa,CAACG,IAAI,CAACoB,QAAQ,EAAE7B,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,OAAO;IACZ,KAAK,eAAe;IACpB,KAAK,iBAAiB;IACtB,KAAK,kBAAkB;MACrBJ,aAAa,CAACG,IAAI,CAACqB,QAAQ,EAAE9B,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,cAAc;MACjBJ,aAAa,CAACG,IAAI,CAACT,QAAQ,EAAEA,QAAQ,EAAEU,SAAS,CAAC;MACjD;IACF,KAAK,sBAAsB;MACzBJ,aAAa,CAACG,IAAI,CAACc,MAAM,EAAEvB,QAAQ,EAAEU,SAAS,CAAC;MAC/C;IACF,KAAK,WAAW;MACdT,YAAY,CAACQ,IAAI,CAACsB,KAAK,EAAE/B,QAAQ,EAAEU,SAAS,CAAC;MAC7C;IACF,KAAK,YAAY;IACjB,KAAK,WAAW;IAChB,KAAK,YAAY;IACjB,KAAK,kBAAkB;IACvB,KAAK,kBAAkB;MACrB;IACF;MACE;MACA,IAAIsB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACA;QACA,MAAM,IAAIC,KAAK,CAAE,mCAAkC1B,IAAI,CAACG,IAAK,EAAC,CAAC;MACjE;EAAC;AAEP"}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,sBAAsB"}
|
|
@@ -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 | \"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}\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 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}\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,9 +1,7 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
|
|
3
2
|
/** Parse storyboard as AST. */
|
|
4
3
|
export function parseStoryboard(storyboard) {
|
|
5
4
|
var _storyboard$meta;
|
|
6
|
-
|
|
7
5
|
return {
|
|
8
6
|
type: "Root",
|
|
9
7
|
raw: storyboard,
|
|
@@ -11,7 +9,6 @@ export function parseStoryboard(storyboard) {
|
|
|
11
9
|
templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates)
|
|
12
10
|
};
|
|
13
11
|
}
|
|
14
|
-
|
|
15
12
|
/** Parse storyboard routes as AST. */
|
|
16
13
|
export function parseRoutes(routes, options) {
|
|
17
14
|
if (Array.isArray(routes)) {
|
|
@@ -28,20 +25,18 @@ export function parseRoutes(routes, options) {
|
|
|
28
25
|
children: route.type === "routes" ? parseRoutes(route.routes, options) : parseBricks(route.bricks, options)
|
|
29
26
|
}));
|
|
30
27
|
}
|
|
31
|
-
|
|
32
28
|
return [];
|
|
33
29
|
}
|
|
34
|
-
/** Parse storyboard templates as AST. */
|
|
35
30
|
|
|
31
|
+
/** Parse storyboard templates as AST. */
|
|
36
32
|
export function parseTemplates(templates) {
|
|
37
33
|
if (Array.isArray(templates)) {
|
|
38
34
|
return templates.map(parseTemplate);
|
|
39
35
|
}
|
|
40
|
-
|
|
41
36
|
return [];
|
|
42
37
|
}
|
|
43
|
-
/** Parse a storyboard template as AST. */
|
|
44
38
|
|
|
39
|
+
/** Parse a storyboard template as AST. */
|
|
45
40
|
export function parseTemplate(tpl) {
|
|
46
41
|
return {
|
|
47
42
|
type: "Template",
|
|
@@ -50,17 +45,14 @@ export function parseTemplate(tpl) {
|
|
|
50
45
|
context: parseContext(tpl.state)
|
|
51
46
|
};
|
|
52
47
|
}
|
|
53
|
-
|
|
54
48
|
function parseBricks(bricks, options) {
|
|
55
49
|
if (Array.isArray(bricks)) {
|
|
56
50
|
return bricks.map(brick => parseBrick(brick, options));
|
|
57
51
|
}
|
|
58
|
-
|
|
59
52
|
return [];
|
|
60
53
|
}
|
|
61
|
-
/** Parse a storyboard brick as AST. */
|
|
62
|
-
|
|
63
54
|
|
|
55
|
+
/** Parse a storyboard brick as AST. */
|
|
64
56
|
export function parseBrick(brick, options) {
|
|
65
57
|
return _objectSpread(_objectSpread({
|
|
66
58
|
type: "Brick",
|
|
@@ -76,7 +68,6 @@ export function parseBrick(brick, options) {
|
|
|
76
68
|
children: parseSlots(brick.slots, options)
|
|
77
69
|
});
|
|
78
70
|
}
|
|
79
|
-
|
|
80
71
|
function parseCondition(condition) {
|
|
81
72
|
if (isObject(condition)) {
|
|
82
73
|
return {
|
|
@@ -84,16 +75,13 @@ function parseCondition(condition) {
|
|
|
84
75
|
resolve: parseResolvable(condition)
|
|
85
76
|
};
|
|
86
77
|
}
|
|
87
|
-
|
|
88
78
|
return {
|
|
89
79
|
type: "LiteralCondition"
|
|
90
80
|
};
|
|
91
81
|
}
|
|
92
|
-
|
|
93
82
|
function parseBrickProperties(props) {
|
|
94
83
|
var useBrick = [];
|
|
95
84
|
var useBackend = [];
|
|
96
|
-
|
|
97
85
|
function walkBrickProperties(value) {
|
|
98
86
|
if (Array.isArray(value)) {
|
|
99
87
|
for (var item of value) {
|
|
@@ -102,7 +90,6 @@ function parseBrickProperties(props) {
|
|
|
102
90
|
} else if (isObject(value)) {
|
|
103
91
|
if (value.useBrick || value.useBackend) {
|
|
104
92
|
var _value$useBackend;
|
|
105
|
-
|
|
106
93
|
if (value.useBrick) {
|
|
107
94
|
useBrick.push({
|
|
108
95
|
type: "UseBrickEntry",
|
|
@@ -113,9 +100,7 @@ function parseBrickProperties(props) {
|
|
|
113
100
|
})
|
|
114
101
|
});
|
|
115
102
|
}
|
|
116
|
-
|
|
117
103
|
var provider = (_value$useBackend = value.useBackend) === null || _value$useBackend === void 0 ? void 0 : _value$useBackend.provider;
|
|
118
|
-
|
|
119
104
|
if (typeof provider === "string") {
|
|
120
105
|
useBackend.push({
|
|
121
106
|
type: "UseBackendEntry",
|
|
@@ -133,19 +118,16 @@ function parseBrickProperties(props) {
|
|
|
133
118
|
}
|
|
134
119
|
}
|
|
135
120
|
}
|
|
136
|
-
|
|
137
121
|
walkBrickProperties(props);
|
|
138
122
|
return {
|
|
139
123
|
useBrick,
|
|
140
124
|
useBackend
|
|
141
125
|
};
|
|
142
126
|
}
|
|
143
|
-
|
|
144
127
|
function parseLifeCycles(lifeCycle) {
|
|
145
128
|
if (isObject(lifeCycle)) {
|
|
146
129
|
return Object.entries(lifeCycle).map(_ref => {
|
|
147
130
|
var [name, conf] = _ref;
|
|
148
|
-
|
|
149
131
|
switch (name) {
|
|
150
132
|
case "useResolves":
|
|
151
133
|
return {
|
|
@@ -154,7 +136,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
154
136
|
rawKey: name,
|
|
155
137
|
resolves: Array.isArray(conf) ? conf.map(item => parseResolvable(item, true)).filter(Boolean) : undefined
|
|
156
138
|
};
|
|
157
|
-
|
|
158
139
|
case "onPageLoad":
|
|
159
140
|
case "onPageLeave":
|
|
160
141
|
case "onAnchorLoad":
|
|
@@ -162,6 +143,8 @@ function parseLifeCycles(lifeCycle) {
|
|
|
162
143
|
case "onMessageClose":
|
|
163
144
|
case "onBeforePageLoad":
|
|
164
145
|
case "onBeforePageLeave":
|
|
146
|
+
case "onMount":
|
|
147
|
+
case "onUnmount":
|
|
165
148
|
case "onMediaChange":
|
|
166
149
|
return {
|
|
167
150
|
type: "SimpleLifeCycle",
|
|
@@ -170,7 +153,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
170
153
|
rawKey: name,
|
|
171
154
|
handlers: parseEventHandlers(conf)
|
|
172
155
|
};
|
|
173
|
-
|
|
174
156
|
case "onMessage":
|
|
175
157
|
case "onScrollIntoView":
|
|
176
158
|
return {
|
|
@@ -183,7 +165,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
183
165
|
handlers: parseEventHandlers(item.handlers)
|
|
184
166
|
}))
|
|
185
167
|
};
|
|
186
|
-
|
|
187
168
|
default:
|
|
188
169
|
return {
|
|
189
170
|
type: "UnknownLifeCycle"
|
|
@@ -192,7 +173,6 @@ function parseLifeCycles(lifeCycle) {
|
|
|
192
173
|
});
|
|
193
174
|
}
|
|
194
175
|
}
|
|
195
|
-
|
|
196
176
|
function parseSlots(slots, options) {
|
|
197
177
|
if (isObject(slots)) {
|
|
198
178
|
return Object.entries(slots).map(_ref2 => {
|
|
@@ -206,10 +186,8 @@ function parseSlots(slots, options) {
|
|
|
206
186
|
};
|
|
207
187
|
});
|
|
208
188
|
}
|
|
209
|
-
|
|
210
189
|
return [];
|
|
211
190
|
}
|
|
212
|
-
|
|
213
191
|
function parseEvents(events) {
|
|
214
192
|
if (isObject(events)) {
|
|
215
193
|
return Object.entries(events).map(_ref3 => {
|
|
@@ -223,7 +201,6 @@ function parseEvents(events) {
|
|
|
223
201
|
});
|
|
224
202
|
}
|
|
225
203
|
}
|
|
226
|
-
|
|
227
204
|
function parseContext(contexts) {
|
|
228
205
|
if (Array.isArray(contexts)) {
|
|
229
206
|
return contexts.map(context => ({
|
|
@@ -234,18 +211,15 @@ function parseContext(contexts) {
|
|
|
234
211
|
}));
|
|
235
212
|
}
|
|
236
213
|
}
|
|
237
|
-
|
|
238
214
|
function parseMenu(menu) {
|
|
239
215
|
if (menu === false) {
|
|
240
216
|
return {
|
|
241
217
|
type: "FalseMenu"
|
|
242
218
|
};
|
|
243
219
|
}
|
|
244
|
-
|
|
245
220
|
if (!menu) {
|
|
246
221
|
return;
|
|
247
222
|
}
|
|
248
|
-
|
|
249
223
|
switch (menu.type) {
|
|
250
224
|
case "brick":
|
|
251
225
|
return {
|
|
@@ -253,20 +227,17 @@ function parseMenu(menu) {
|
|
|
253
227
|
raw: menu,
|
|
254
228
|
brick: parseBrick(menu)
|
|
255
229
|
};
|
|
256
|
-
|
|
257
230
|
case "resolve":
|
|
258
231
|
return {
|
|
259
232
|
type: "ResolvableMenu",
|
|
260
233
|
resolve: parseResolvable(menu.resolve)
|
|
261
234
|
};
|
|
262
|
-
|
|
263
235
|
default:
|
|
264
236
|
return {
|
|
265
237
|
type: "StaticMenu"
|
|
266
238
|
};
|
|
267
239
|
}
|
|
268
240
|
}
|
|
269
|
-
|
|
270
241
|
function parseResolvable(resolve, isConditional) {
|
|
271
242
|
if (isObject(resolve)) {
|
|
272
243
|
return {
|
|
@@ -276,7 +247,6 @@ function parseResolvable(resolve, isConditional) {
|
|
|
276
247
|
};
|
|
277
248
|
}
|
|
278
249
|
}
|
|
279
|
-
|
|
280
250
|
function parseEventHandlers(handlers) {
|
|
281
251
|
return [].concat(handlers).filter(Boolean).map(handler => ({
|
|
282
252
|
type: "EventHandler",
|
|
@@ -284,7 +254,6 @@ function parseEventHandlers(handlers) {
|
|
|
284
254
|
raw: handler
|
|
285
255
|
}));
|
|
286
256
|
}
|
|
287
|
-
|
|
288
257
|
function parseEventCallback(callback) {
|
|
289
258
|
if (isObject(callback)) {
|
|
290
259
|
return Object.entries(callback).map(_ref4 => {
|
|
@@ -298,16 +267,15 @@ function parseEventCallback(callback) {
|
|
|
298
267
|
});
|
|
299
268
|
}
|
|
300
269
|
}
|
|
301
|
-
|
|
302
270
|
function parseRouteProviders(providers) {
|
|
303
271
|
if (Array.isArray(providers)) {
|
|
304
272
|
return providers.map(provider => parseBrick(typeof provider === "string" ? {
|
|
305
273
|
brick: provider
|
|
306
274
|
} : provider));
|
|
307
275
|
}
|
|
308
|
-
}
|
|
309
|
-
|
|
276
|
+
}
|
|
310
277
|
|
|
278
|
+
// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744
|
|
311
279
|
function isObject(value) {
|
|
312
280
|
var type = typeof value;
|
|
313
281
|
return value != null && (type == "object" || type == "function");
|
|
@@ -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","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\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(brick.slots as SlotsConf, options),\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 \"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 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 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","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","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\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(brick.slots as SlotsConf, options),\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 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 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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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
export function traverseStoryboard(ast, callback) {
|
|
3
3
|
traverseNode(ast, callback, []);
|
|
4
4
|
}
|
|
5
|
-
/** Traverse any node(s) in storyboard AST. */
|
|
6
5
|
|
|
6
|
+
/** Traverse any node(s) in storyboard AST. */
|
|
7
7
|
export function traverse(nodeOrNodes, callback) {
|
|
8
8
|
if (Array.isArray(nodeOrNodes)) {
|
|
9
9
|
traverseNodes(nodeOrNodes, callback, []);
|
|
@@ -11,31 +11,25 @@ export function traverse(nodeOrNodes, callback) {
|
|
|
11
11
|
traverseNode(nodeOrNodes, callback, []);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
|
|
15
14
|
function traverseNodes(nodes, callback, path) {
|
|
16
15
|
if (!nodes) {
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
|
-
|
|
20
18
|
for (var _node of nodes) {
|
|
21
19
|
traverseNode(_node, callback, path);
|
|
22
20
|
}
|
|
23
21
|
}
|
|
24
|
-
|
|
25
22
|
function traverseNode(node, callback, path) {
|
|
26
23
|
if (!node) {
|
|
27
24
|
return;
|
|
28
25
|
}
|
|
29
|
-
|
|
30
26
|
callback(node, path);
|
|
31
27
|
var childPath = path.concat(node);
|
|
32
|
-
|
|
33
28
|
switch (node.type) {
|
|
34
29
|
case "Root":
|
|
35
30
|
traverseNodes(node.routes, callback, childPath);
|
|
36
31
|
traverseNodes(node.templates, callback, childPath);
|
|
37
32
|
break;
|
|
38
|
-
|
|
39
33
|
case "Route":
|
|
40
34
|
traverseNodes(node.context, callback, childPath);
|
|
41
35
|
traverseNode(node.redirect, callback, childPath);
|
|
@@ -44,12 +38,10 @@ function traverseNode(node, callback, path) {
|
|
|
44
38
|
traverseNodes(node.defineResolves, callback, childPath);
|
|
45
39
|
traverseNodes(node.children, callback, childPath);
|
|
46
40
|
break;
|
|
47
|
-
|
|
48
41
|
case "Template":
|
|
49
42
|
traverseNodes(node.bricks, callback, childPath);
|
|
50
43
|
traverseNodes(node.context, callback, childPath);
|
|
51
44
|
break;
|
|
52
|
-
|
|
53
45
|
case "Brick":
|
|
54
46
|
traverseNode(node.if, callback, childPath);
|
|
55
47
|
traverseNodes(node.events, callback, childPath);
|
|
@@ -59,53 +51,43 @@ function traverseNode(node, callback, path) {
|
|
|
59
51
|
traverseNodes(node.context, callback, childPath);
|
|
60
52
|
traverseNodes(node.children, callback, childPath);
|
|
61
53
|
break;
|
|
62
|
-
|
|
63
54
|
case "Slot":
|
|
64
55
|
case "UseBrickEntry":
|
|
65
56
|
case "UseBackendEntry":
|
|
66
57
|
traverseNodes(node.children, callback, childPath);
|
|
67
58
|
break;
|
|
68
|
-
|
|
69
59
|
case "Context":
|
|
70
60
|
traverseNode(node.resolve, callback, childPath);
|
|
71
61
|
traverseNodes(node.onChange, callback, childPath);
|
|
72
62
|
break;
|
|
73
|
-
|
|
74
63
|
case "ResolvableCondition":
|
|
75
64
|
case "ResolvableMenu":
|
|
76
65
|
traverseNode(node.resolve, callback, childPath);
|
|
77
66
|
break;
|
|
78
|
-
|
|
79
67
|
case "ResolveLifeCycle":
|
|
80
68
|
traverseNodes(node.resolves, callback, childPath);
|
|
81
69
|
break;
|
|
82
|
-
|
|
83
70
|
case "Event":
|
|
84
71
|
case "EventCallback":
|
|
85
72
|
case "SimpleLifeCycle":
|
|
86
73
|
case "ConditionalEvent":
|
|
87
74
|
traverseNodes(node.handlers, callback, childPath);
|
|
88
75
|
break;
|
|
89
|
-
|
|
90
76
|
case "EventHandler":
|
|
91
77
|
traverseNodes(node.callback, callback, childPath);
|
|
92
78
|
break;
|
|
93
|
-
|
|
94
79
|
case "ConditionalLifeCycle":
|
|
95
80
|
traverseNodes(node.events, callback, childPath);
|
|
96
81
|
break;
|
|
97
|
-
|
|
98
82
|
case "BrickMenu":
|
|
99
83
|
traverseNode(node.brick, callback, childPath);
|
|
100
84
|
break;
|
|
101
|
-
|
|
102
85
|
case "Resolvable":
|
|
103
86
|
case "FalseMenu":
|
|
104
87
|
case "StaticMenu":
|
|
105
88
|
case "UnknownLifeCycle":
|
|
106
89
|
case "LiteralCondition":
|
|
107
90
|
break;
|
|
108
|
-
|
|
109
91
|
default:
|
|
110
92
|
// istanbul ignore if
|
|
111
93
|
if (process.env.NODE_ENV === "development") {
|
|
@@ -113,7 +95,6 @@ function traverseNode(node, callback, path) {
|
|
|
113
95
|
// @ts-expect-error
|
|
114
96
|
throw new Error("Unhandled storyboard node type: ".concat(node.type));
|
|
115
97
|
}
|
|
116
|
-
|
|
117
98
|
}
|
|
118
99
|
}
|
|
119
100
|
//# sourceMappingURL=traverseStoryboard.js.map
|
|
@@ -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","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 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,
|
|
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","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 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":"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"}
|
|
@@ -106,7 +106,7 @@ export interface StoryboardNodeResolveLifeCycle {
|
|
|
106
106
|
}
|
|
107
107
|
export interface StoryboardNodeSimpleLifeCycle {
|
|
108
108
|
type: "SimpleLifeCycle";
|
|
109
|
-
name: "onPageLoad" | "onPageLeave" | "onAnchorLoad" | "onAnchorUnload" | "onMessageClose" | "onBeforePageLoad" | "onBeforePageLeave" | "onMediaChange";
|
|
109
|
+
name: "onPageLoad" | "onPageLeave" | "onAnchorLoad" | "onAnchorUnload" | "onMessageClose" | "onBeforePageLoad" | "onBeforePageLeave" | "onMount" | "onUnmount" | "onMediaChange";
|
|
110
110
|
rawContainer: BrickLifeCycle;
|
|
111
111
|
rawKey: string;
|
|
112
112
|
handlers: StoryboardNodeEventHandler[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/storyboard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
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.82.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@next-core/build-next-libs": "^0.2.
|
|
35
|
+
"@next-core/build-next-libs": "^0.2.16"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "c1040bc38d16aa9fd662bd27ccbcd464b073aa63"
|
|
38
38
|
}
|