nodoku-core 0.1.3 → 0.1.4
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/esm → esm}/bin/generate-component-default-theme.js +0 -1
- package/{dist/esm → esm}/bin/generate-component-resolver.js +0 -1
- package/{dist/esm → esm}/bin/generate-content-schema.js +0 -1
- package/{dist/esm → esm}/bin/generate-skin-schema.js +0 -1
- package/{dist/esm → esm}/bin/import-load-hooks.js +0 -1
- package/{dist/esm → esm}/bin/manifest-loader.js +0 -1
- package/{dist/esm → esm}/bin/manifest.js +0 -1
- package/{dist/esm → esm}/bin/mustache/component-resolver.ts.hbs +2 -2
- package/{dist/esm → esm}/content/nd-content.js +2 -3
- package/{dist/esm → esm}/core/dummy-comp.jsx +2 -3
- package/esm/core/providers.js +1 -0
- package/{dist/esm → esm}/core/rendering-page-props.js +0 -1
- package/{dist/esm → esm}/core/rendering-page.jsx +6 -1
- package/{dist/esm → esm}/index.js +2 -3
- package/{dist/esm → esm}/providers/content/content-markdown-provider.js +20 -21
- package/{dist/esm → esm}/providers/skin/skin-yaml-provider.js +4 -2
- package/{dist/esm → esm}/skin/nd-skin.js +0 -1
- package/{dist/esm → esm}/theme-utils/extended-theme-style.js +0 -1
- package/{dist/esm → esm}/theme-utils/theme-merger.js +0 -1
- package/{dist/esm → esm}/theme-utils/theme-style.js +0 -1
- package/package.json +9 -15
- package/schemas/md-content-block-delimiter.json +26 -0
- package/{dist/types → types}/content/nd-content.d.ts +17 -17
- package/{dist/types → types}/core/providers.d.ts +2 -2
- package/{dist/types → types}/index.d.ts +2 -2
- package/LICENSE +0 -21
- package/README.md +0 -697
- package/dist/esm/bin/generate-component-default-theme.js.map +0 -1
- package/dist/esm/bin/generate-component-resolver.js.map +0 -1
- package/dist/esm/bin/generate-content-schema.js.map +0 -1
- package/dist/esm/bin/generate-skin-schema.js.map +0 -1
- package/dist/esm/bin/import-load-hooks.js.map +0 -1
- package/dist/esm/bin/manifest-loader.js.map +0 -1
- package/dist/esm/bin/manifest.js.map +0 -1
- package/dist/esm/content/nd-content.js.map +0 -1
- package/dist/esm/core/dummy-comp.jsx.map +0 -1
- package/dist/esm/core/providers.js +0 -2
- package/dist/esm/core/providers.js.map +0 -1
- package/dist/esm/core/rendering-page-props.js.map +0 -1
- package/dist/esm/core/rendering-page.jsx.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/providers/content/content-markdown-provider.js.map +0 -1
- package/dist/esm/providers/skin/skin-yaml-provider.js.map +0 -1
- package/dist/esm/skin/nd-skin.js.map +0 -1
- package/dist/esm/theme-utils/extended-theme-style.js.map +0 -1
- package/dist/esm/theme-utils/theme-merger.js.map +0 -1
- package/dist/esm/theme-utils/theme-style.js.map +0 -1
- /package/{dist/esm → esm}/bin/mustache/content-schema.json.hbs +0 -0
- /package/{dist/esm → esm}/bin/mustache/visual-schema.json.hbs +0 -0
- /package/{dist/schemas → schemas}/content-common-schema.json +0 -0
- /package/{dist/schemas → schemas}/manifest-schema.json +0 -0
- /package/{dist/schemas → schemas}/skin-common-schema.json +0 -0
- /package/{dist/types → types}/bin/generate-component-default-theme.d.ts +0 -0
- /package/{dist/types → types}/bin/generate-component-resolver.d.ts +0 -0
- /package/{dist/types → types}/bin/generate-content-schema.d.ts +0 -0
- /package/{dist/types → types}/bin/generate-skin-schema.d.ts +0 -0
- /package/{dist/types → types}/bin/import-load-hooks.d.ts +0 -0
- /package/{dist/types → types}/bin/manifest-loader.d.ts +0 -0
- /package/{dist/types → types}/bin/manifest.d.ts +0 -0
- /package/{dist/types → types}/core/dummy-comp.d.ts +0 -0
- /package/{dist/types → types}/core/rendering-page-props.d.ts +0 -0
- /package/{dist/types → types}/core/rendering-page.d.ts +0 -0
- /package/{dist/types → types}/providers/content/content-markdown-provider.d.ts +0 -0
- /package/{dist/types → types}/providers/skin/skin-yaml-provider.d.ts +0 -0
- /package/{dist/types → types}/skin/nd-skin.d.ts +0 -0
- /package/{dist/types → types}/theme-utils/extended-theme-style.d.ts +0 -0
- /package/{dist/types → types}/theme-utils/theme-merger.d.ts +0 -0
- /package/{dist/types → types}/theme-utils/theme-style.d.ts +0 -0
|
@@ -10,7 +10,7 @@ const components: Map<string, {compo: AsyncFunctionComponent, compoDef: NdCompon
|
|
|
10
10
|
components.set("{{{name}}}", {compo: {{impl}}, compoDef: new NdComponentDefinition({{{numBlocks}}}, "{{{defaultThemeFile}}}")});
|
|
11
11
|
{{/comps}}
|
|
12
12
|
|
|
13
|
-
export function nodokuComponentResolver(componentName: string): Promise<{compo: AsyncFunctionComponent, compoDef: NdComponentDefinition}> {
|
|
13
|
+
export async function nodokuComponentResolver(componentName: string): Promise<{compo: AsyncFunctionComponent, compoDef: NdComponentDefinition}> {
|
|
14
14
|
const f: {compo: AsyncFunctionComponent, compoDef: NdComponentDefinition} | undefined = components.get(componentName);
|
|
15
|
-
return
|
|
15
|
+
return f ? f : {compo: DummyComp, compoDef: new NdComponentDefinition(1)};
|
|
16
16
|
}
|
|
@@ -3,7 +3,7 @@ export class NdContentImage {
|
|
|
3
3
|
title;
|
|
4
4
|
alt;
|
|
5
5
|
}
|
|
6
|
-
export class
|
|
6
|
+
export class NdTranslatableText {
|
|
7
7
|
key = "";
|
|
8
8
|
ns = "";
|
|
9
9
|
text = "";
|
|
@@ -75,7 +75,7 @@ export class NdContentBlock {
|
|
|
75
75
|
}
|
|
76
76
|
function getPropertyFromObjectRecursively(obj, path) {
|
|
77
77
|
// console.log(`getting path from obj >>${path}<<`, obj)
|
|
78
|
-
if (obj instanceof
|
|
78
|
+
if (obj instanceof NdTranslatableText) {
|
|
79
79
|
return obj.text;
|
|
80
80
|
}
|
|
81
81
|
if (path.length == 0) {
|
|
@@ -93,4 +93,3 @@ function getPropertyFromObjectRecursively(obj, path) {
|
|
|
93
93
|
}
|
|
94
94
|
return undefined;
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=nd-content.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NdCode,
|
|
1
|
+
import { NdCode, NdTranslatableText } from "../content/nd-content";
|
|
2
2
|
// import {CodeComp} from "./code-comp";
|
|
3
3
|
export async function DummyComp(props) {
|
|
4
4
|
// console.log("content dummy comp", props.theme)
|
|
@@ -33,7 +33,7 @@ async function render(rowIndex, componentIndex, block, t) {
|
|
|
33
33
|
|
|
34
34
|
paragraphs:
|
|
35
35
|
{await Promise.all(block.paragraphs.map(async (p, ip) => {
|
|
36
|
-
if (p instanceof
|
|
36
|
+
if (p instanceof NdTranslatableText) {
|
|
37
37
|
return (<div>
|
|
38
38
|
{p && p.key}
|
|
39
39
|
<p key={ip} className={"mb-3 font-normal text-gray-700 dark:text-gray-400"}>
|
|
@@ -92,4 +92,3 @@ async function render(rowIndex, componentIndex, block, t) {
|
|
|
92
92
|
|
|
93
93
|
</div>);
|
|
94
94
|
}
|
|
95
|
-
//# sourceMappingURL=dummy-comp.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -71,6 +71,9 @@ async function createRow(row, iRow, blocks, lng, imageUrlProvider, i18nProvider,
|
|
|
71
71
|
l = await Promise.all(blocks.map(async (block, iComp) => await createRowComponents(iRow, iComp, undefined, [block], lng, imageUrlProvider, i18nProvider, componentResolver)));
|
|
72
72
|
}
|
|
73
73
|
const rowComponents = l.flatMap((p) => p);
|
|
74
|
+
if (rowComponents.length == 0) {
|
|
75
|
+
return <></>;
|
|
76
|
+
}
|
|
74
77
|
const numComponents = rowComponents.length;
|
|
75
78
|
const rowEffectiveTheme = mergeTheme(row?.theme, NdRow.defaultRowTheme);
|
|
76
79
|
const maxCols = row?.maxCols ? row.maxCols : 3;
|
|
@@ -121,6 +124,9 @@ async function createRow(row, iRow, blocks, lng, imageUrlProvider, i18nProvider,
|
|
|
121
124
|
async function createRowComponents(rowIndex, blockIndex, skinComponent, pageContent, lng, imageUrlProvide, i18nProvider, componentResolver) {
|
|
122
125
|
// console.log("before component", skinComponent)
|
|
123
126
|
const filteredBlocks = skinComponent ? skinComponent.selector.filterBlocks(pageContent) : pageContent;
|
|
127
|
+
if (filteredBlocks.length == 0) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
124
130
|
// console.log("retrieving comp", rowIndex, blockIndex, filteredBlocks.map(fb => JSON.stringify(fb.attributes)).join(", "));
|
|
125
131
|
const { compo, compoDef } = await componentResolver(skinComponent ? skinComponent.componentName : "default");
|
|
126
132
|
// console.log("start rendering comp", rowIndex, blockIndex, skinComponent);
|
|
@@ -185,4 +191,3 @@ async function renderSingleComponent(rowIndex, componentIndex, component, blocks
|
|
|
185
191
|
return res;
|
|
186
192
|
}
|
|
187
193
|
export { RenderingPage };
|
|
188
|
-
//# sourceMappingURL=rendering-page.jsx.map
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { NdContentImage,
|
|
1
|
+
import { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock } from "./content/nd-content";
|
|
2
2
|
import { NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy } from "./skin/nd-skin";
|
|
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
6
|
import { ThemeStyle } from "./theme-utils/theme-style";
|
|
7
7
|
import { ExtendedThemeStyle } from "./theme-utils/extended-theme-style";
|
|
8
|
-
export { NdContentImage,
|
|
8
|
+
export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy };
|
|
9
9
|
export { RenderingPageProps, RenderingPriority, RenderingPage };
|
|
10
10
|
export { mergeTheme, ThemeStyle, ExtendedThemeStyle };
|
|
11
11
|
export { DummyComp } from "./core/dummy-comp";
|
|
12
12
|
export { contentMarkdownProvider, parseMarkdownAsContent } from "./providers/content/content-markdown-provider";
|
|
13
13
|
export { skinYamlProvider, parseYamlContentAsSkin } from "./providers/skin/skin-yaml-provider";
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NdTranslatableText, NdList, NdContentBlock, NdContentImage, NdCode } from "nodoku-core";
|
|
2
2
|
import { Marked } from '@ts-stack/markdown';
|
|
3
3
|
import { parse } from 'node-html-parser';
|
|
4
4
|
import yaml from "js-yaml";
|
|
@@ -171,27 +171,27 @@ class BlockHolder {
|
|
|
171
171
|
this.blockContent.htmlStream.forEach((htmlElem, i) => {
|
|
172
172
|
let text = undefined;
|
|
173
173
|
if (i === this.blockContent.titleIndex) {
|
|
174
|
-
newBlock.title = new
|
|
174
|
+
newBlock.title = new NdTranslatableText(this.ns, `${blockId}.title`, htmlElem.innerHTML);
|
|
175
175
|
text = newBlock.title;
|
|
176
176
|
}
|
|
177
177
|
else if (i === this.blockContent.subTitleIndex) {
|
|
178
|
-
newBlock.subTitle = new
|
|
178
|
+
newBlock.subTitle = new NdTranslatableText(this.ns, `${blockId}.subTitle`, htmlElem.innerHTML);
|
|
179
179
|
text = newBlock.subTitle;
|
|
180
180
|
}
|
|
181
181
|
else if (i === this.blockContent.h3Index) {
|
|
182
|
-
newBlock.h3 = new
|
|
182
|
+
newBlock.h3 = new NdTranslatableText(this.ns, `${blockId}.h3`, htmlElem.innerHTML);
|
|
183
183
|
text = newBlock.h3;
|
|
184
184
|
}
|
|
185
185
|
else if (i === this.blockContent.h4Index) {
|
|
186
|
-
newBlock.h4 = new
|
|
186
|
+
newBlock.h4 = new NdTranslatableText(this.ns, `${blockId}.h4`, htmlElem.innerHTML);
|
|
187
187
|
text = newBlock.h4;
|
|
188
188
|
}
|
|
189
189
|
else if (i === this.blockContent.h5Index) {
|
|
190
|
-
newBlock.h5 = new
|
|
190
|
+
newBlock.h5 = new NdTranslatableText(this.ns, `${blockId}.h5`, htmlElem.innerHTML);
|
|
191
191
|
text = newBlock.h5;
|
|
192
192
|
}
|
|
193
193
|
else if (i === this.blockContent.h6Index) {
|
|
194
|
-
newBlock.h6 = new
|
|
194
|
+
newBlock.h6 = new NdTranslatableText(this.ns, `${blockId}.h6`, htmlElem.innerHTML);
|
|
195
195
|
text = newBlock.h6;
|
|
196
196
|
}
|
|
197
197
|
else if (this.blockContent.paragraphsIndex.indexOf(i) >= 0) {
|
|
@@ -213,16 +213,16 @@ class BlockHolder {
|
|
|
213
213
|
const imgHtmlElem = cn;
|
|
214
214
|
if (imgHtmlElem.rawTagName == "img") {
|
|
215
215
|
img = new NdContentImage();
|
|
216
|
-
img.url = new
|
|
217
|
-
img.alt = new
|
|
218
|
-
img.title = new
|
|
216
|
+
img.url = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.url`, imgHtmlElem.attributes["src"], true);
|
|
217
|
+
img.alt = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.alt`, imgHtmlElem.attributes["alt"]);
|
|
218
|
+
img.title = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.title`, imgHtmlElem.attributes["title"]);
|
|
219
219
|
}
|
|
220
220
|
});
|
|
221
221
|
if (img) {
|
|
222
222
|
htmlElem.childNodes
|
|
223
223
|
.forEach((cn) => {
|
|
224
224
|
if (cn.rawTagName == "figcaption") {
|
|
225
|
-
img.title = new
|
|
225
|
+
img.title = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.title`, cn.innerHTML);
|
|
226
226
|
}
|
|
227
227
|
});
|
|
228
228
|
}
|
|
@@ -232,9 +232,9 @@ class BlockHolder {
|
|
|
232
232
|
* extract image from <img>
|
|
233
233
|
*/
|
|
234
234
|
img = new NdContentImage();
|
|
235
|
-
img.url = new
|
|
236
|
-
img.alt = new
|
|
237
|
-
img.title = new
|
|
235
|
+
img.url = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.url`, htmlElem.attributes["src"], true);
|
|
236
|
+
img.alt = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.alt`, htmlElem.attributes["alt"]);
|
|
237
|
+
img.title = new NdTranslatableText(this.ns, `${blockId}.images.${imi}.title`, htmlElem.attributes["title"]);
|
|
238
238
|
}
|
|
239
239
|
if (img) {
|
|
240
240
|
newBlock.images.push(img);
|
|
@@ -243,22 +243,22 @@ class BlockHolder {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
else {
|
|
246
|
-
text = new
|
|
246
|
+
text = new NdTranslatableText(this.ns, `${blockId}.htmlElements.${newBlock.htmlElements.length}`, "");
|
|
247
247
|
}
|
|
248
248
|
newBlock.htmlElements.push({ htmlElem: htmlElem, translatedText: text });
|
|
249
249
|
});
|
|
250
250
|
if (this.blockContent.footer && this.blockContent.footer.trim().length > 0) {
|
|
251
|
-
newBlock.footer = new
|
|
251
|
+
newBlock.footer = new NdTranslatableText(this.ns, `${blockId}.footer`, this.blockContent.footer);
|
|
252
252
|
}
|
|
253
253
|
if (this.blockContent.bgImage && this.blockContent.bgImage.getAttribute("src")) {
|
|
254
|
-
newBlock.bgImageUrl = new
|
|
254
|
+
newBlock.bgImageUrl = new NdTranslatableText(this.ns, `${blockId}.bgImageUrl`, this.blockContent.bgImage.getAttribute("src"), true);
|
|
255
255
|
}
|
|
256
256
|
// console.log("added block", newBlock)
|
|
257
257
|
return newBlock;
|
|
258
258
|
}
|
|
259
259
|
parseParagraph(blockId, p, pi) {
|
|
260
260
|
if (p.rawTagName === "p" || p.rawTagName === "blockquote") {
|
|
261
|
-
return new
|
|
261
|
+
return new NdTranslatableText(this.ns, `${blockId}.paragraphs.${pi}`, p.innerHTML);
|
|
262
262
|
}
|
|
263
263
|
else if (p.rawTagName === "pre") {
|
|
264
264
|
const codeHtml = p.childNodes[0];
|
|
@@ -276,7 +276,7 @@ class BlockHolder {
|
|
|
276
276
|
.filter(lin => lin.innerText && lin.innerText.trim().length > 0)
|
|
277
277
|
.map((lin, k) => {
|
|
278
278
|
const li = lin;
|
|
279
|
-
return new
|
|
279
|
+
return new NdTranslatableText(this.ns, `${blockId}.paragraphs.${pi}.items.${k}`, li.innerHTML);
|
|
280
280
|
}));
|
|
281
281
|
}
|
|
282
282
|
else if (p.rawTagName === "ul") {
|
|
@@ -284,7 +284,7 @@ class BlockHolder {
|
|
|
284
284
|
.filter(lin => lin.innerText && lin.innerText.trim().length > 0)
|
|
285
285
|
.map((lin, k) => {
|
|
286
286
|
const li = lin;
|
|
287
|
-
return new
|
|
287
|
+
return new NdTranslatableText(this.ns, `${blockId}.paragraphs.${pi}.items.${k}`, li.innerHTML);
|
|
288
288
|
}));
|
|
289
289
|
}
|
|
290
290
|
console.log("couldn't parse paragraph: ", p);
|
|
@@ -372,4 +372,3 @@ export function parseMarkdownAsContent(fileContents, contentLng, ns) {
|
|
|
372
372
|
}
|
|
373
373
|
return res;
|
|
374
374
|
}
|
|
375
|
-
//# sourceMappingURL=content-markdown-provider.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import yaml from "js-yaml";
|
|
2
|
-
import { NdContentSelector, NdRow, NdSkinComponent, NdThemeHierarchy } from "../../skin/nd-skin";
|
|
2
|
+
import { NdContentSelector, NdPageSkin, NdRow, NdSkinComponent, NdThemeHierarchy } from "../../skin/nd-skin";
|
|
3
3
|
export async function skinYamlProvider(yamlFileUrl) {
|
|
4
4
|
return await fetch(yamlFileUrl)
|
|
5
5
|
.then(response => response.text())
|
|
@@ -7,6 +7,9 @@ export async function skinYamlProvider(yamlFileUrl) {
|
|
|
7
7
|
}
|
|
8
8
|
export function parseYamlContentAsSkin(fileContents) {
|
|
9
9
|
const data = yaml.load(fileContents);
|
|
10
|
+
if (!data) {
|
|
11
|
+
return new NdPageSkin();
|
|
12
|
+
}
|
|
10
13
|
let defaultThemeName = "light";
|
|
11
14
|
let globalTheme = {};
|
|
12
15
|
let globalThemes = [];
|
|
@@ -50,4 +53,3 @@ export function parseYamlContentAsSkin(fileContents) {
|
|
|
50
53
|
}))
|
|
51
54
|
} : { renderingPage: renderingPage, rows: [] };
|
|
52
55
|
}
|
|
53
|
-
//# sourceMappingURL=skin-yaml-provider.js.map
|
package/package.json
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nodoku-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "basic foundation for nodoku static site generator",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"types": "./
|
|
8
|
-
"import": "./
|
|
7
|
+
"types": "./types/index.d.ts",
|
|
8
|
+
"import": "./esm/index.js"
|
|
9
9
|
},
|
|
10
10
|
"./package.json": "./package.json"
|
|
11
11
|
},
|
|
12
|
-
"module": "
|
|
13
|
-
"types": "
|
|
14
|
-
"files": [
|
|
15
|
-
"dist"
|
|
16
|
-
],
|
|
12
|
+
"module": "esm/index.js",
|
|
13
|
+
"types": "types/index.d.ts",
|
|
17
14
|
"type": "module",
|
|
18
15
|
"bin": {
|
|
19
|
-
"nodoku-gen-component-resolver": "./
|
|
20
|
-
"nodoku-gen-content-schema": "./
|
|
21
|
-
"nodoku-gen-skin-schema": "./
|
|
22
|
-
"nodoku-gen-component-default-theme": "./
|
|
16
|
+
"nodoku-gen-component-resolver": "./esm/bin/generate-component-resolver.js",
|
|
17
|
+
"nodoku-gen-content-schema": "./esm/bin/generate-content-schema.js",
|
|
18
|
+
"nodoku-gen-skin-schema": "./esm/bin/generate-skin-schema.js",
|
|
19
|
+
"nodoku-gen-component-default-theme": "./esm/bin/generate-component-default-theme.js"
|
|
23
20
|
},
|
|
24
21
|
"dependencies": {
|
|
25
22
|
},
|
|
@@ -47,8 +44,5 @@
|
|
|
47
44
|
"react-dom": "^18.3.1",
|
|
48
45
|
"typescript": "^5.5.3",
|
|
49
46
|
"shx": "^0.3.4"
|
|
50
|
-
},
|
|
51
|
-
"scripts": {
|
|
52
|
-
"dist": "shx rm -rf dist && tsc && shx cp -r src/bin/mustache dist/esm/bin/ && shx cp -r schemas dist"
|
|
53
47
|
}
|
|
54
48
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"id": {
|
|
6
|
+
"type": "string"
|
|
7
|
+
},
|
|
8
|
+
"namespace": {
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"tags": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"attributes": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"additionalItems": false
|
|
26
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import HTMLElement from "node-html-parser/dist/nodes/html";
|
|
2
2
|
export declare class NdContentImage {
|
|
3
|
-
url:
|
|
4
|
-
title?:
|
|
5
|
-
alt?:
|
|
3
|
+
url: NdTranslatableText;
|
|
4
|
+
title?: NdTranslatableText;
|
|
5
|
+
alt?: NdTranslatableText;
|
|
6
6
|
}
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class NdTranslatableText {
|
|
8
8
|
key: string;
|
|
9
9
|
ns: string;
|
|
10
10
|
text: string;
|
|
@@ -12,11 +12,11 @@ export declare class NdTranslatedText {
|
|
|
12
12
|
constructor(ns: string, key?: string, text?: string, excludeFromTranslation?: boolean);
|
|
13
13
|
}
|
|
14
14
|
export declare class NdList {
|
|
15
|
-
items:
|
|
15
|
+
items: NdTranslatableText[];
|
|
16
16
|
ordered: boolean;
|
|
17
17
|
private constructor();
|
|
18
|
-
static createOrdered(items:
|
|
19
|
-
static createUnOrdered(items:
|
|
18
|
+
static createOrdered(items: NdTranslatableText[]): NdList;
|
|
19
|
+
static createUnOrdered(items: NdTranslatableText[]): NdList;
|
|
20
20
|
}
|
|
21
21
|
export declare class NdCode {
|
|
22
22
|
lang: string;
|
|
@@ -32,19 +32,19 @@ export declare class NdContentBlock {
|
|
|
32
32
|
}[];
|
|
33
33
|
tags: string[];
|
|
34
34
|
namespace: string;
|
|
35
|
-
title?:
|
|
36
|
-
subTitle?:
|
|
37
|
-
h3?:
|
|
38
|
-
h4?:
|
|
39
|
-
h5?:
|
|
40
|
-
h6?:
|
|
41
|
-
footer?:
|
|
42
|
-
paragraphs: (
|
|
43
|
-
bgImageUrl?:
|
|
35
|
+
title?: NdTranslatableText;
|
|
36
|
+
subTitle?: NdTranslatableText;
|
|
37
|
+
h3?: NdTranslatableText;
|
|
38
|
+
h4?: NdTranslatableText;
|
|
39
|
+
h5?: NdTranslatableText;
|
|
40
|
+
h6?: NdTranslatableText;
|
|
41
|
+
footer?: NdTranslatableText;
|
|
42
|
+
paragraphs: (NdTranslatableText | NdList | NdCode)[];
|
|
43
|
+
bgImageUrl?: NdTranslatableText;
|
|
44
44
|
images: NdContentImage[];
|
|
45
45
|
htmlElements: {
|
|
46
46
|
htmlElem: HTMLElement;
|
|
47
|
-
translatedText: (
|
|
47
|
+
translatedText: (NdTranslatableText | NdContentImage | NdList | NdCode);
|
|
48
48
|
}[];
|
|
49
49
|
constructor(id: string, ns: string, lng: string);
|
|
50
50
|
getByKey(key: string, ns: string): string | undefined;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { JSX } from "react";
|
|
2
2
|
import { NdComponentDefinition, NdSkinComponentProps } from "../skin/nd-skin";
|
|
3
|
-
import {
|
|
3
|
+
import { NdTranslatableText } from "../content/nd-content";
|
|
4
4
|
export type AsyncFunctionComponent = (props: NdSkinComponentProps) => Promise<JSX.Element>;
|
|
5
5
|
export type ComponentResolver = (componentName: string) => Promise<{
|
|
6
6
|
compo: AsyncFunctionComponent;
|
|
7
7
|
compoDef: NdComponentDefinition;
|
|
8
8
|
}>;
|
|
9
9
|
export type I18nextProvider = (lng: string) => Promise<{
|
|
10
|
-
t: (text:
|
|
10
|
+
t: (text: NdTranslatableText) => string;
|
|
11
11
|
}>;
|
|
12
12
|
export type ImageUrlProvider = (imageUrl: string) => Promise<string>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NdContentImage,
|
|
1
|
+
import { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock } from "./content/nd-content";
|
|
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";
|
|
@@ -6,7 +6,7 @@ import { I18nextProvider, AsyncFunctionComponent, ImageUrlProvider } from "./cor
|
|
|
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
|
-
export { NdContentImage,
|
|
9
|
+
export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy, type NdDefaultThemeName };
|
|
10
10
|
export { RenderingPageProps, RenderingPriority, RenderingPage };
|
|
11
11
|
export { mergeTheme, ThemeStyle, ExtendedThemeStyle };
|
|
12
12
|
export type { I18nextProvider, AsyncFunctionComponent, ImageUrlProvider };
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 nodoku
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|