nodoku-core 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/bin/mustache/visual-schema.json.hbs +1 -1
- package/esm/content/nd-content.js +1 -1
- package/esm/core/dummy-comp.jsx +7 -7
- package/esm/core/rendering-page-props.js +3 -3
- package/esm/core/rendering-page.jsx +34 -16
- package/esm/index.js +1 -3
- package/esm/providers/content/content-markdown-provider.js +9 -9
- package/esm/skin/nd-skin.js +9 -4
- package/esm/theme-utils/extended-theme-style.js +1 -4
- package/esm/theme-utils/image-style.js +1 -0
- package/esm/theme-utils/row-style.js +1 -0
- package/esm/theme-utils/theme-style.js +1 -8
- package/package.json +1 -1
- package/schemas/skin-common-schema.json +41 -0
- package/types/content/nd-content.d.ts +0 -1
- package/types/core/providers.d.ts +8 -1
- package/types/core/rendering-page-props.d.ts +3 -3
- package/types/index.d.ts +5 -4
- package/types/skin/nd-skin.d.ts +6 -5
- package/types/theme-utils/extended-theme-style.d.ts +2 -2
- package/types/theme-utils/image-style.d.ts +4 -0
- package/types/theme-utils/row-style.d.ts +5 -0
- package/types/theme-utils/theme-style.d.ts +2 -3
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"type": "object",
|
|
10
10
|
"properties": {
|
|
11
11
|
"theme": {
|
|
12
|
-
"$ref": "../node_modules/nodoku-core/schemas/skin-common-schema.json#/definitions/
|
|
12
|
+
"$ref": "../node_modules/nodoku-core/schemas/skin-common-schema.json#/definitions/RowThemeStyle",
|
|
13
13
|
"additionalProperties": false
|
|
14
14
|
},
|
|
15
15
|
"maxCols": {
|
package/esm/core/dummy-comp.jsx
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { NdCode, NdTranslatableText } from "../content/nd-content";
|
|
2
|
-
// import {CodeComp} from "./code-comp";
|
|
3
2
|
export async function DummyComp(props) {
|
|
4
3
|
// console.log("content dummy comp", props.theme)
|
|
5
4
|
const { content, i18nextProvider, lng, rowIndex, componentIndex } = props;
|
|
@@ -7,13 +6,14 @@ export async function DummyComp(props) {
|
|
|
7
6
|
return <div>{await render(rowIndex, componentIndex, content[0], t)}</div>;
|
|
8
7
|
}
|
|
9
8
|
async function render(rowIndex, componentIndex, block, t) {
|
|
10
|
-
var style = {};
|
|
11
|
-
if (block.bgImageUrl) {
|
|
12
|
-
|
|
13
|
-
}
|
|
9
|
+
// var style = {};
|
|
10
|
+
// if (block.bgImageUrl) {
|
|
11
|
+
// style = {backgroundImage: `url(${t(block.bgImageUrl)})`}
|
|
12
|
+
// }
|
|
14
13
|
return (<div className={"w-full w-full flex flex-col items-left justify-left border border-4 border-red-200 relative pb-10"}>
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
{/*<div className={"top-0 bottom-0 left-0 right-0 absolute bg-cover bg-no-repeat"}*/}
|
|
15
|
+
{/* style={{...style, zIndex: -11}}>*/}
|
|
16
|
+
{/*</div>*/}
|
|
17
17
|
<div className={"top-0 bottom-0 left-0 right-0 absolute bg-white "} style={{ zIndex: -5, opacity: 0.7 }}>
|
|
18
18
|
</div>
|
|
19
19
|
<div className={"p-5 w-full bg-red-400 text-center"}>dummy component<h3><b>{`ns-${block.namespace}-row-${rowIndex}-i-${componentIndex}`}</b></h3></div>
|
|
@@ -21,15 +21,15 @@ export class RenderingPageProps {
|
|
|
21
21
|
skin = undefined;
|
|
22
22
|
renderingPriority = RenderingPriority.content_first;
|
|
23
23
|
componentResolver = undefined;
|
|
24
|
-
|
|
24
|
+
imageProvider = undefined;
|
|
25
25
|
i18nextProvider = undefined;
|
|
26
|
-
constructor(lng, content, componentResolver, skin = undefined, renderingPriority = RenderingPriority.content_first,
|
|
26
|
+
constructor(lng, content, componentResolver, skin = undefined, renderingPriority = RenderingPriority.content_first, imageProvider = undefined, i18nextProvider = undefined) {
|
|
27
27
|
this.lng = lng;
|
|
28
28
|
this.renderingPriority = renderingPriority;
|
|
29
29
|
this.content = content;
|
|
30
30
|
this.componentResolver = componentResolver;
|
|
31
31
|
this.skin = skin;
|
|
32
|
-
this.
|
|
32
|
+
this.imageProvider = imageProvider;
|
|
33
33
|
this.i18nextProvider = i18nextProvider;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -9,11 +9,12 @@ async function defaultComponentResolver() {
|
|
|
9
9
|
const compoDef = new NdComponentDefinition("unlimited", undefined, {});
|
|
10
10
|
return { compo: DummyComp, compoDef: compoDef };
|
|
11
11
|
}
|
|
12
|
-
async function
|
|
13
|
-
|
|
12
|
+
async function defaultImageProvider(imageProps) {
|
|
13
|
+
const { imageStyle, url, alt } = imageProps;
|
|
14
|
+
return <img className={`${imageStyle?.base} ${imageStyle?.decoration}`} src={url} alt={alt}/>;
|
|
14
15
|
}
|
|
15
16
|
async function RenderingPage(props) {
|
|
16
|
-
const { lng, renderingPriority, content, componentResolver, skin,
|
|
17
|
+
const { lng, renderingPriority, content, componentResolver, skin, imageProvider, i18nextProvider } = props;
|
|
17
18
|
const actualComponentResolver = componentResolver ? componentResolver : defaultComponentResolver;
|
|
18
19
|
let l;
|
|
19
20
|
if (skin) {
|
|
@@ -23,10 +24,10 @@ async function RenderingPage(props) {
|
|
|
23
24
|
}
|
|
24
25
|
// console.log(" >>> this is my content <<< ", content)
|
|
25
26
|
// console.log(" >>> this is my skin <<< ", JSON.stringify(blockSkin))
|
|
26
|
-
l = await Promise.all(blockSkin.rows.map(async (row, iRow) => await createRow(row, iRow, content, lng,
|
|
27
|
+
l = await Promise.all(blockSkin.rows.map(async (row, iRow) => await createRow(row, iRow, content, lng, imageProvider, i18nextProvider, actualComponentResolver)));
|
|
27
28
|
}
|
|
28
29
|
else {
|
|
29
|
-
l = [await createRow(undefined, 0, content, lng,
|
|
30
|
+
l = [await createRow(undefined, 0, content, lng, imageProvider, i18nextProvider, actualComponentResolver)];
|
|
30
31
|
}
|
|
31
32
|
return <div className={`${skin?.renderingPage?.base} ${skin?.renderingPage?.decoration}`}>{l}</div>;
|
|
32
33
|
}
|
|
@@ -62,13 +63,13 @@ function generateSkinByContentBlocks(blocks, skin) {
|
|
|
62
63
|
// console.log("generated skin", JSON.stringify(res))
|
|
63
64
|
return res;
|
|
64
65
|
}
|
|
65
|
-
async function createRow(row, iRow, blocks, lng,
|
|
66
|
+
async function createRow(row, iRow, blocks, lng, imageProvider, i18nProvider, componentResolver) {
|
|
66
67
|
let l;
|
|
67
68
|
if (row) {
|
|
68
|
-
l = await Promise.all(row.components.map(async (visualSection, iComp) => await createRowComponents(iRow, iComp, visualSection, blocks, lng,
|
|
69
|
+
l = await Promise.all(row.components.map(async (visualSection, iComp) => await createRowComponents(iRow, iComp, visualSection, blocks, lng, imageProvider, i18nProvider, componentResolver)));
|
|
69
70
|
}
|
|
70
71
|
else {
|
|
71
|
-
l = await Promise.all(blocks.map(async (block, iComp) => await createRowComponents(iRow, iComp, undefined, [block], lng,
|
|
72
|
+
l = await Promise.all(blocks.map(async (block, iComp) => await createRowComponents(iRow, iComp, undefined, [block], lng, imageProvider, i18nProvider, componentResolver)));
|
|
72
73
|
}
|
|
73
74
|
const rowComponents = l.flatMap((p) => p);
|
|
74
75
|
if (rowComponents.length == 0) {
|
|
@@ -79,49 +80,66 @@ async function createRow(row, iRow, blocks, lng, imageUrlProvider, i18nProvider,
|
|
|
79
80
|
const maxCols = row?.maxCols ? row.maxCols : 3;
|
|
80
81
|
const numCols = numComponents <= maxCols ? numComponents : maxCols;
|
|
81
82
|
let gridCols = "grid-cols-1";
|
|
83
|
+
let flexBasis = "basis-full";
|
|
82
84
|
switch (numCols) {
|
|
83
85
|
case 1:
|
|
84
86
|
gridCols = "lg:grid-cols-1";
|
|
87
|
+
flexBasis = "lg:basis-full";
|
|
85
88
|
break;
|
|
86
89
|
case 2:
|
|
87
90
|
gridCols = "lg:grid-cols-2";
|
|
91
|
+
flexBasis = "lg:basis-1/2";
|
|
88
92
|
break;
|
|
89
93
|
case 3:
|
|
90
94
|
gridCols = "lg:grid-cols-3";
|
|
95
|
+
flexBasis = "lg:basis-1/3";
|
|
91
96
|
break;
|
|
92
97
|
case 4:
|
|
93
98
|
gridCols = "lg:grid-cols-4";
|
|
99
|
+
flexBasis = "lg:basis-1/4";
|
|
94
100
|
break;
|
|
95
101
|
case 5:
|
|
96
102
|
gridCols = "lg:grid-cols-5";
|
|
103
|
+
flexBasis = "lg:basis-1/5";
|
|
97
104
|
break;
|
|
98
105
|
case 6:
|
|
99
106
|
gridCols = "lg:grid-cols-6";
|
|
107
|
+
flexBasis = "lg:basis-1/6";
|
|
100
108
|
break;
|
|
101
109
|
case 7:
|
|
102
110
|
gridCols = "lg:grid-cols-7";
|
|
111
|
+
flexBasis = "lg:basis-1/7";
|
|
103
112
|
break;
|
|
104
113
|
case 8:
|
|
105
114
|
gridCols = "lg:grid-cols-8";
|
|
115
|
+
flexBasis = "lg:basis-1/8";
|
|
106
116
|
break;
|
|
107
117
|
case 9:
|
|
108
118
|
gridCols = "lg:grid-cols-9";
|
|
119
|
+
flexBasis = "lg:basis-1/9";
|
|
109
120
|
break;
|
|
110
121
|
case 10:
|
|
111
122
|
gridCols = "lg:grid-cols-10";
|
|
123
|
+
flexBasis = "lg:basis-1/10";
|
|
112
124
|
break;
|
|
113
125
|
case 11:
|
|
114
126
|
gridCols = "lg:grid-cols-11";
|
|
127
|
+
flexBasis = "lg:basis-1/11";
|
|
115
128
|
break;
|
|
116
129
|
case 12:
|
|
117
130
|
gridCols = "lg:grid-cols-12";
|
|
131
|
+
flexBasis = "lg:basis-1/12";
|
|
118
132
|
break;
|
|
119
133
|
}
|
|
120
|
-
|
|
121
|
-
|
|
134
|
+
let rowDisplay = `grid ${gridCols}`;
|
|
135
|
+
if (rowEffectiveTheme.rowDisplay == "flex") {
|
|
136
|
+
rowDisplay = "flex flex-row justify-center flex-wrap flex-1";
|
|
137
|
+
}
|
|
138
|
+
return (<div key={`row-${iRow}`} className={`${rowDisplay} ${rowEffectiveTheme?.base} ${rowEffectiveTheme?.decoration} class-row-${iRow}`}>
|
|
139
|
+
{rowComponents.map(c => <div className={`nd-component-holder basis-full ${flexBasis} ${rowEffectiveTheme.componentHolder?.base} ${rowEffectiveTheme.componentHolder?.decoration}`} style={{ minWidth: 0, overflow: "hidden" }}>{c}</div>)}
|
|
122
140
|
</div>);
|
|
123
141
|
}
|
|
124
|
-
async function createRowComponents(rowIndex, blockIndex, skinComponent, pageContent, lng,
|
|
142
|
+
async function createRowComponents(rowIndex, blockIndex, skinComponent, pageContent, lng, imageProvider, i18nProvider, componentResolver) {
|
|
125
143
|
// console.log("before component", skinComponent)
|
|
126
144
|
const filteredBlocks = skinComponent ? skinComponent.selector.filterBlocks(pageContent) : pageContent;
|
|
127
145
|
if (filteredBlocks.length == 0) {
|
|
@@ -147,14 +165,14 @@ async function createRowComponents(rowIndex, blockIndex, skinComponent, pageCont
|
|
|
147
165
|
const blocks = filteredBlocks.slice(start, end);
|
|
148
166
|
const compIndex = blockIndex * filteredBlocks.length + i;
|
|
149
167
|
// console.log("calculated compo index ", compIndex, "filteredBlocks.length", filteredBlocks.length, "blockIndex", blockIndex)
|
|
150
|
-
res.push(await renderSingleComponent(rowIndex, compIndex, compo, blocks, skinComponent?.defaultThemeName || "light", compoDef.defaultTheme, skinComponent?.themeHierarchy, lng,
|
|
168
|
+
res.push(await renderSingleComponent(rowIndex, compIndex, compo, blocks, skinComponent?.defaultThemeName || "light", compoDef.defaultTheme, skinComponent?.themeHierarchy, lng, imageProvider, i18nProvider));
|
|
151
169
|
}
|
|
152
170
|
start = end;
|
|
153
171
|
++i;
|
|
154
172
|
} while (end < filteredBlocks.length);
|
|
155
173
|
return res;
|
|
156
174
|
}
|
|
157
|
-
async function renderSingleComponent(rowIndex, componentIndex, component, blocks, defaultThemeName, defaultTheme, themeHierarchy, lng,
|
|
175
|
+
async function renderSingleComponent(rowIndex, componentIndex, component, blocks, defaultThemeName, defaultTheme, themeHierarchy, lng, imageProvider, i18nextProvider) {
|
|
158
176
|
let actualI18nextProvider;
|
|
159
177
|
if (lng == blocks[0].lng || !i18nextProvider) {
|
|
160
178
|
actualI18nextProvider = async (lng) => {
|
|
@@ -167,7 +185,7 @@ async function renderSingleComponent(rowIndex, componentIndex, component, blocks
|
|
|
167
185
|
else {
|
|
168
186
|
actualI18nextProvider = i18nextProvider;
|
|
169
187
|
}
|
|
170
|
-
const
|
|
188
|
+
const actualImageProvider = imageProvider ? imageProvider : defaultImageProvider;
|
|
171
189
|
// if (themeHierarchy) {
|
|
172
190
|
// console.log("themeHierarchy", themeHierarchy)
|
|
173
191
|
// }
|
|
@@ -182,12 +200,12 @@ async function renderSingleComponent(rowIndex, componentIndex, component, blocks
|
|
|
182
200
|
themes: effectiveThemes,
|
|
183
201
|
options: effectiveOptions,
|
|
184
202
|
lng: lng,
|
|
185
|
-
|
|
203
|
+
imageProvider: actualImageProvider,
|
|
186
204
|
i18nextProvider: actualI18nextProvider
|
|
187
205
|
};
|
|
188
206
|
// console.log("start rendering page with props", props);
|
|
189
207
|
const res = await component(props);
|
|
190
208
|
// console.log("end rendering page with props", props);
|
|
191
|
-
return
|
|
209
|
+
return res;
|
|
192
210
|
}
|
|
193
211
|
export { RenderingPage };
|
package/esm/index.js
CHANGED
|
@@ -3,11 +3,9 @@ import { NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSele
|
|
|
3
3
|
import { RenderingPageProps, RenderingPriority } from "./core/rendering-page-props";
|
|
4
4
|
import { RenderingPage } from "./core/rendering-page";
|
|
5
5
|
import { mergeTheme } from "./theme-utils/theme-merger";
|
|
6
|
-
import { ThemeStyle } from "./theme-utils/theme-style";
|
|
7
|
-
import { ExtendedThemeStyle } from "./theme-utils/extended-theme-style";
|
|
8
6
|
export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy };
|
|
9
7
|
export { RenderingPageProps, RenderingPriority, RenderingPage };
|
|
10
|
-
export { mergeTheme
|
|
8
|
+
export { mergeTheme };
|
|
11
9
|
export { DummyComp } from "./core/dummy-comp";
|
|
12
10
|
export { contentMarkdownProvider, parseMarkdownAsContent } from "./providers/content/content-markdown-provider";
|
|
13
11
|
export { skinYamlProvider, parseYamlContentAsSkin } from "./providers/skin/skin-yaml-provider";
|
|
@@ -250,9 +250,10 @@ class BlockHolder {
|
|
|
250
250
|
if (this.blockContent.footer && this.blockContent.footer.trim().length > 0) {
|
|
251
251
|
newBlock.footer = new NdTranslatableText(this.ns, `${blockId}.footer`, this.blockContent.footer);
|
|
252
252
|
}
|
|
253
|
-
if (this.blockContent.bgImage && this.blockContent.bgImage.getAttribute("src")) {
|
|
254
|
-
|
|
255
|
-
|
|
253
|
+
// if (this.blockContent.bgImage && this.blockContent.bgImage.getAttribute("src")) {
|
|
254
|
+
// newBlock.bgImageUrl = new NdTranslatableText(this.ns, `${blockId}.bgImageUrl`,
|
|
255
|
+
// this.blockContent.bgImage.getAttribute("src") as string, true);
|
|
256
|
+
// }
|
|
256
257
|
// console.log("added block", newBlock)
|
|
257
258
|
return newBlock;
|
|
258
259
|
}
|
|
@@ -348,12 +349,11 @@ export function parseMarkdownAsContent(fileContents, contentLng, ns) {
|
|
|
348
349
|
childNode.childNodes.filter(cn => cn.rawTagName == "img")
|
|
349
350
|
.forEach((cn) => {
|
|
350
351
|
const l = cn;
|
|
351
|
-
if (l.getAttribute("alt") === "bg-image") {
|
|
352
|
-
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
352
|
+
// if (l.getAttribute("alt") === "bg-image") {
|
|
353
|
+
// currentBlock.blockContent.bgImage = l;
|
|
354
|
+
// } else {
|
|
355
|
+
currentBlock.addImage(cn);
|
|
356
|
+
// }
|
|
357
357
|
});
|
|
358
358
|
}
|
|
359
359
|
else {
|
package/esm/skin/nd-skin.js
CHANGED
|
@@ -74,7 +74,12 @@ export class NdRow {
|
|
|
74
74
|
}
|
|
75
75
|
static defaultRowTheme = {
|
|
76
76
|
base: "md:grid-cols-1",
|
|
77
|
-
decoration: "gap-4"
|
|
77
|
+
decoration: "gap-4",
|
|
78
|
+
rowDisplay: "grid",
|
|
79
|
+
componentHolder: {
|
|
80
|
+
base: "min-w-0 overflow-hidden",
|
|
81
|
+
decoration: ""
|
|
82
|
+
},
|
|
78
83
|
};
|
|
79
84
|
}
|
|
80
85
|
export class NdPageSkin {
|
|
@@ -121,9 +126,9 @@ export class NdSkinComponentProps {
|
|
|
121
126
|
themes;
|
|
122
127
|
options;
|
|
123
128
|
lng;
|
|
124
|
-
|
|
129
|
+
imageProvider;
|
|
125
130
|
i18nextProvider;
|
|
126
|
-
constructor(rowIndex, componentIndex, content, defaultThemeName, theme, themes, options, lng,
|
|
131
|
+
constructor(rowIndex, componentIndex, content, defaultThemeName, theme, themes, options, lng, imageProvider, i18nextProvider) {
|
|
127
132
|
this.rowIndex = rowIndex;
|
|
128
133
|
this.componentIndex = componentIndex;
|
|
129
134
|
this.content = content;
|
|
@@ -132,7 +137,7 @@ export class NdSkinComponentProps {
|
|
|
132
137
|
this.themes = themes.slice();
|
|
133
138
|
this.options = options;
|
|
134
139
|
this.lng = lng;
|
|
135
|
-
this.
|
|
140
|
+
this.imageProvider = imageProvider;
|
|
136
141
|
this.i18nextProvider = i18nextProvider;
|
|
137
142
|
}
|
|
138
143
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -48,6 +48,47 @@
|
|
|
48
48
|
]
|
|
49
49
|
},
|
|
50
50
|
|
|
51
|
+
"ImageStyle": {
|
|
52
|
+
"allOf": [
|
|
53
|
+
{
|
|
54
|
+
"$ref": "#/definitions/ThemeStyle"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "object",
|
|
58
|
+
"properties": {
|
|
59
|
+
"imageWidth": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"additionalProperties": false
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"additionalProperties": false
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
"RowThemeStyle": {
|
|
71
|
+
"allOf": [
|
|
72
|
+
{
|
|
73
|
+
"$ref": "#/definitions/ThemeStyle"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"rowDisplay": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"enum": ["flex", "grid"]
|
|
81
|
+
},
|
|
82
|
+
"componentHolder": {
|
|
83
|
+
"$ref": "#/definitions/ThemeStyle"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"additionalProperties": false
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"additionalProperties": false
|
|
90
|
+
},
|
|
91
|
+
|
|
51
92
|
|
|
52
93
|
|
|
53
94
|
"Selector": {
|
|
@@ -40,7 +40,6 @@ export declare class NdContentBlock {
|
|
|
40
40
|
h6?: NdTranslatableText;
|
|
41
41
|
footer?: NdTranslatableText;
|
|
42
42
|
paragraphs: (NdTranslatableText | NdList | NdCode)[];
|
|
43
|
-
bgImageUrl?: NdTranslatableText;
|
|
44
43
|
images: NdContentImage[];
|
|
45
44
|
htmlElements: {
|
|
46
45
|
htmlElem: HTMLElement;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { JSX } from "react";
|
|
2
2
|
import { NdComponentDefinition, NdSkinComponentProps } from "../skin/nd-skin";
|
|
3
3
|
import { NdTranslatableText } from "../content/nd-content";
|
|
4
|
+
import { ImageStyle } from "../theme-utils/image-style";
|
|
5
|
+
export type NdImageProps = {
|
|
6
|
+
url: string;
|
|
7
|
+
alt?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
imageStyle?: ImageStyle;
|
|
10
|
+
};
|
|
4
11
|
export type AsyncFunctionComponent = (props: NdSkinComponentProps) => Promise<JSX.Element>;
|
|
5
12
|
export type ComponentResolver = (componentName: string) => Promise<{
|
|
6
13
|
compo: AsyncFunctionComponent;
|
|
@@ -9,4 +16,4 @@ export type ComponentResolver = (componentName: string) => Promise<{
|
|
|
9
16
|
export type I18nextProvider = (lng: string) => Promise<{
|
|
10
17
|
t: (text: NdTranslatableText) => string;
|
|
11
18
|
}>;
|
|
12
|
-
export type
|
|
19
|
+
export type ImageProvider = (imageProps: NdImageProps) => Promise<JSX.Element>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentResolver, I18nextProvider,
|
|
1
|
+
import { ComponentResolver, I18nextProvider, ImageProvider } from "./providers";
|
|
2
2
|
import { NdContentBlock } from "../content/nd-content";
|
|
3
3
|
import { NdPageSkin } from "../skin/nd-skin";
|
|
4
4
|
export declare enum RenderingPriority {
|
|
@@ -11,7 +11,7 @@ export declare class RenderingPageProps {
|
|
|
11
11
|
skin: NdPageSkin | undefined;
|
|
12
12
|
renderingPriority: RenderingPriority;
|
|
13
13
|
componentResolver: ComponentResolver | undefined;
|
|
14
|
-
|
|
14
|
+
imageProvider: ImageProvider | undefined;
|
|
15
15
|
i18nextProvider: I18nextProvider | undefined;
|
|
16
|
-
constructor(lng: string, content: NdContentBlock[], componentResolver: ComponentResolver | undefined, skin?: NdPageSkin | undefined, renderingPriority?: RenderingPriority,
|
|
16
|
+
constructor(lng: string, content: NdContentBlock[], componentResolver: ComponentResolver | undefined, skin?: NdPageSkin | undefined, renderingPriority?: RenderingPriority, imageProvider?: ImageProvider | undefined, i18nextProvider?: I18nextProvider | undefined);
|
|
17
17
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -2,14 +2,15 @@ import { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock } fr
|
|
|
2
2
|
import { NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy, NdDefaultThemeName } from "./skin/nd-skin";
|
|
3
3
|
import { RenderingPageProps, RenderingPriority } from "./core/rendering-page-props";
|
|
4
4
|
import { RenderingPage } from "./core/rendering-page";
|
|
5
|
-
import { I18nextProvider, AsyncFunctionComponent,
|
|
5
|
+
import { I18nextProvider, AsyncFunctionComponent, ImageProvider, NdImageProps } from "./core/providers";
|
|
6
6
|
import { mergeTheme } from "./theme-utils/theme-merger";
|
|
7
7
|
import { ThemeStyle } from "./theme-utils/theme-style";
|
|
8
8
|
import { ExtendedThemeStyle } from "./theme-utils/extended-theme-style";
|
|
9
|
-
|
|
9
|
+
import { ImageStyle } from "./theme-utils/image-style";
|
|
10
|
+
export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy, type NdDefaultThemeName, type NdImageProps };
|
|
10
11
|
export { RenderingPageProps, RenderingPriority, RenderingPage };
|
|
11
|
-
export { mergeTheme, ThemeStyle, ExtendedThemeStyle };
|
|
12
|
-
export type { I18nextProvider, AsyncFunctionComponent,
|
|
12
|
+
export { mergeTheme, type ThemeStyle, type ExtendedThemeStyle, type ImageStyle };
|
|
13
|
+
export type { I18nextProvider, AsyncFunctionComponent, ImageProvider };
|
|
13
14
|
export { DummyComp } from "./core/dummy-comp";
|
|
14
15
|
export { contentMarkdownProvider, parseMarkdownAsContent } from "./providers/content/content-markdown-provider";
|
|
15
16
|
export { skinYamlProvider, parseYamlContentAsSkin } from "./providers/skin/skin-yaml-provider";
|
package/types/skin/nd-skin.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { I18nextProvider,
|
|
1
|
+
import { I18nextProvider, ImageProvider } from "../core/providers";
|
|
2
2
|
import { NdContentBlock } from "../content/nd-content";
|
|
3
3
|
import { ThemeStyle } from "../theme-utils/theme-style";
|
|
4
|
+
import { RowStyle } from "../theme-utils/row-style";
|
|
4
5
|
export type NdDefaultThemeName = "light" | "dark";
|
|
5
6
|
export declare class NdThemeHierarchy {
|
|
6
7
|
defaultThemeName: NdDefaultThemeName;
|
|
@@ -31,10 +32,10 @@ export declare class NdSkinComponent {
|
|
|
31
32
|
export declare class NdRow {
|
|
32
33
|
rowIndex: number;
|
|
33
34
|
maxCols?: number;
|
|
34
|
-
theme:
|
|
35
|
+
theme: RowStyle | undefined;
|
|
35
36
|
components: NdSkinComponent[];
|
|
36
37
|
constructor(rowIndex: number);
|
|
37
|
-
static defaultRowTheme:
|
|
38
|
+
static defaultRowTheme: RowStyle;
|
|
38
39
|
}
|
|
39
40
|
export declare class NdPageSkin {
|
|
40
41
|
renderingPage: ThemeStyle | undefined;
|
|
@@ -69,7 +70,7 @@ export declare class NdSkinComponentProps<TComponentTheme = any, TComponentOptio
|
|
|
69
70
|
themes: TComponentTheme[];
|
|
70
71
|
options: TComponentOptions | undefined;
|
|
71
72
|
lng: string;
|
|
72
|
-
|
|
73
|
+
imageProvider: ImageProvider;
|
|
73
74
|
i18nextProvider: I18nextProvider;
|
|
74
|
-
constructor(rowIndex: number, componentIndex: number, content: NdContentBlock[], defaultThemeName: NdDefaultThemeName, theme: TComponentTheme, themes: TComponentTheme[], options: TComponentOptions, lng: string,
|
|
75
|
+
constructor(rowIndex: number, componentIndex: number, content: NdContentBlock[], defaultThemeName: NdDefaultThemeName, theme: TComponentTheme, themes: TComponentTheme[], options: TComponentOptions, lng: string, imageProvider: ImageProvider, i18nextProvider: I18nextProvider);
|
|
75
76
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CSSProperties } from "react";
|
|
2
2
|
import { ThemeStyle } from "./theme-style";
|
|
3
|
-
export
|
|
3
|
+
export type ExtendedThemeStyle = ThemeStyle & {
|
|
4
4
|
css?: {
|
|
5
5
|
light: CSSProperties;
|
|
6
6
|
dark: CSSProperties;
|
|
7
7
|
};
|
|
8
|
-
}
|
|
8
|
+
};
|