@ndla/article-converter 6.0.41 → 6.0.43
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/es/extractEmbedMeta.js +8 -8
- package/es/index.js +2 -2
- package/es/plugins/anchorPlugin.js +3 -3
- package/es/plugins/asidePlugin.js +4 -4
- package/es/plugins/copyParagraphPlugin.js +4 -4
- package/es/plugins/ddPlugin.js +2 -2
- package/es/plugins/divPlugin.js +14 -14
- package/es/plugins/dtPlugin.js +2 -2
- package/es/plugins/embed/KeyFigureEmbedPlugin.js +5 -5
- package/es/plugins/embed/audioEmbedPlugin.js +3 -3
- package/es/plugins/embed/blogPostEmbedPlugin.js +5 -5
- package/es/plugins/embed/brightcoveEmbedPlugin.js +3 -3
- package/es/plugins/embed/campaignBlockPlugin.js +5 -5
- package/es/plugins/embed/codeEmbedPlugin.js +3 -3
- package/es/plugins/embed/conceptEmbedPlugin.js +3 -3
- package/es/plugins/embed/conceptListEmbedPlugin.js +3 -3
- package/es/plugins/embed/contactBlockEmbedPlugin.js +4 -4
- package/es/plugins/embed/contentLinkEmbedPlugin.js +3 -3
- package/es/plugins/embed/externalEmbedPlugin.js +3 -3
- package/es/plugins/embed/fileEmbedPlugin.js +5 -5
- package/es/plugins/embed/footnoteEmbedPlugin.js +3 -3
- package/es/plugins/embed/h5pEmbedPlugin.js +3 -3
- package/es/plugins/embed/iframeEmbedPlugin.js +3 -3
- package/es/plugins/embed/imageEmbedPlugin.js +4 -4
- package/es/plugins/embed/index.js +27 -27
- package/es/plugins/embed/linkBlockEmbedPlugin.js +3 -3
- package/es/plugins/embed/relatedContentEmbedPlugin.js +3 -3
- package/es/plugins/h3Plugin.js +1 -1
- package/es/plugins/index.js +15 -15
- package/es/plugins/mathPlugin.js +2 -2
- package/es/plugins/navPlugin.js +3 -3
- package/es/plugins/oembed/anchorPlugin.js +3 -3
- package/es/plugins/olPlugin.js +5 -5
- package/es/plugins/paragraphPlugin.js +3 -3
- package/es/plugins/spanPlugin.js +3 -3
- package/es/plugins/tablePlugin.js +2 -2
- package/es/plugins/ulPlugin.js +3 -3
- package/es/transform.js +9 -9
- package/lib/extractEmbedMeta.d.ts +1 -1
- package/lib/extractEmbedMeta.js +7 -7
- package/lib/index.d.ts +3 -3
- package/lib/plugins/anchorPlugin.d.ts +1 -1
- package/lib/plugins/asidePlugin.d.ts +1 -1
- package/lib/plugins/asidePlugin.js +2 -2
- package/lib/plugins/copyParagraphPlugin.d.ts +1 -1
- package/lib/plugins/copyParagraphPlugin.js +2 -2
- package/lib/plugins/ddPlugin.d.ts +1 -1
- package/lib/plugins/divPlugin.d.ts +1 -1
- package/lib/plugins/divPlugin.js +11 -11
- package/lib/plugins/dtPlugin.d.ts +1 -1
- package/lib/plugins/embed/KeyFigureEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/KeyFigureEmbedPlugin.js +3 -3
- package/lib/plugins/embed/audioEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/audioEmbedPlugin.js +1 -1
- package/lib/plugins/embed/blogPostEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/blogPostEmbedPlugin.js +3 -3
- package/lib/plugins/embed/brightcoveEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/brightcoveEmbedPlugin.js +1 -1
- package/lib/plugins/embed/campaignBlockPlugin.d.ts +1 -1
- package/lib/plugins/embed/campaignBlockPlugin.js +3 -3
- package/lib/plugins/embed/codeEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/codeEmbedPlugin.js +1 -1
- package/lib/plugins/embed/conceptEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/conceptEmbedPlugin.js +1 -1
- package/lib/plugins/embed/conceptListEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/conceptListEmbedPlugin.js +1 -1
- package/lib/plugins/embed/contactBlockEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/contactBlockEmbedPlugin.js +2 -2
- package/lib/plugins/embed/contentLinkEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/contentLinkEmbedPlugin.js +1 -1
- package/lib/plugins/embed/externalEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/externalEmbedPlugin.js +1 -1
- package/lib/plugins/embed/fileEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/fileEmbedPlugin.js +3 -3
- package/lib/plugins/embed/footnoteEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/footnoteEmbedPlugin.js +1 -1
- package/lib/plugins/embed/h5pEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/h5pEmbedPlugin.js +1 -1
- package/lib/plugins/embed/iframeEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/iframeEmbedPlugin.js +1 -1
- package/lib/plugins/embed/imageEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/imageEmbedPlugin.js +2 -2
- package/lib/plugins/embed/index.d.ts +1 -1
- package/lib/plugins/embed/index.js +9 -9
- package/lib/plugins/embed/linkBlockEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/linkBlockEmbedPlugin.js +1 -1
- package/lib/plugins/embed/relatedContentEmbedPlugin.d.ts +1 -1
- package/lib/plugins/embed/relatedContentEmbedPlugin.js +1 -1
- package/lib/plugins/h3Plugin.d.ts +1 -1
- package/lib/plugins/index.d.ts +1 -1
- package/lib/plugins/mathPlugin.d.ts +1 -1
- package/lib/plugins/mathPlugin.js +1 -1
- package/lib/plugins/navPlugin.d.ts +1 -1
- package/lib/plugins/navPlugin.js +1 -1
- package/lib/plugins/oembed/anchorPlugin.d.ts +1 -1
- package/lib/plugins/olPlugin.d.ts +1 -1
- package/lib/plugins/olPlugin.js +3 -3
- package/lib/plugins/paragraphPlugin.d.ts +1 -1
- package/lib/plugins/paragraphPlugin.js +2 -2
- package/lib/plugins/spanPlugin.d.ts +1 -1
- package/lib/plugins/spanPlugin.js +2 -2
- package/lib/plugins/tablePlugin.d.ts +1 -1
- package/lib/plugins/types.d.ts +2 -2
- package/lib/plugins/ulPlugin.d.ts +1 -1
- package/lib/plugins/ulPlugin.js +1 -1
- package/lib/transform.d.ts +1 -1
- package/lib/transform.js +5 -5
- package/package.json +5 -5
- package/src/extractEmbedMeta.ts +9 -9
- package/src/index.ts +3 -3
- package/src/plugins/anchorPlugin.tsx +4 -4
- package/src/plugins/asidePlugin.tsx +5 -5
- package/src/plugins/copyParagraphPlugin.tsx +5 -5
- package/src/plugins/ddPlugin.tsx +3 -3
- package/src/plugins/divPlugin.tsx +15 -15
- package/src/plugins/dtPlugin.tsx +3 -3
- package/src/plugins/embed/KeyFigureEmbedPlugin.tsx +7 -7
- package/src/plugins/embed/audioEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/blogPostEmbedPlugin.tsx +7 -7
- package/src/plugins/embed/brightcoveEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/campaignBlockPlugin.tsx +11 -8
- package/src/plugins/embed/codeEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/conceptEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/conceptListEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/contactBlockEmbedPlugin.tsx +6 -6
- package/src/plugins/embed/contentLinkEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/externalEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/fileEmbedPlugin.tsx +7 -7
- package/src/plugins/embed/footnoteEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/h5pEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/iframeEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/imageEmbedPlugin.tsx +6 -6
- package/src/plugins/embed/index.ts +28 -28
- package/src/plugins/embed/linkBlockEmbedPlugin.tsx +5 -5
- package/src/plugins/embed/relatedContentEmbedPlugin.tsx +5 -5
- package/src/plugins/h3Plugin.tsx +2 -2
- package/src/plugins/index.ts +16 -16
- package/src/plugins/mathPlugin.tsx +3 -3
- package/src/plugins/navPlugin.tsx +4 -4
- package/src/plugins/oembed/anchorPlugin.tsx +4 -4
- package/src/plugins/olPlugin.tsx +6 -6
- package/src/plugins/paragraphPlugin.tsx +4 -4
- package/src/plugins/spanPlugin.tsx +4 -4
- package/src/plugins/tablePlugin.tsx +3 -3
- package/src/plugins/types.ts +2 -2
- package/src/plugins/ulPlugin.tsx +5 -5
- package/src/transform.tsx +11 -11
package/src/plugins/index.ts
CHANGED
|
@@ -6,22 +6,22 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { anchorPlugin } from
|
|
10
|
-
import { asidePlugin } from
|
|
11
|
-
import { copyParagraphPlugin } from
|
|
12
|
-
import { ddPlugin } from
|
|
13
|
-
import { divPlugin } from
|
|
14
|
-
import { dtPlugin } from
|
|
15
|
-
import { h3Plugin } from
|
|
16
|
-
import { mathPlugin } from
|
|
17
|
-
import { navPlugin } from
|
|
18
|
-
import { anchorPlugin as oembedAnchorPlugin } from
|
|
19
|
-
import { olPlugin } from
|
|
20
|
-
import { paragraphPlugin } from
|
|
21
|
-
import { spanPlugin } from
|
|
22
|
-
import { tablePlugin } from
|
|
23
|
-
import { PluginType } from
|
|
24
|
-
import { ulPlugin } from
|
|
9
|
+
import { anchorPlugin } from "./anchorPlugin";
|
|
10
|
+
import { asidePlugin } from "./asidePlugin";
|
|
11
|
+
import { copyParagraphPlugin } from "./copyParagraphPlugin";
|
|
12
|
+
import { ddPlugin } from "./ddPlugin";
|
|
13
|
+
import { divPlugin } from "./divPlugin";
|
|
14
|
+
import { dtPlugin } from "./dtPlugin";
|
|
15
|
+
import { h3Plugin } from "./h3Plugin";
|
|
16
|
+
import { mathPlugin } from "./mathPlugin";
|
|
17
|
+
import { navPlugin } from "./navPlugin";
|
|
18
|
+
import { anchorPlugin as oembedAnchorPlugin } from "./oembed/anchorPlugin";
|
|
19
|
+
import { olPlugin } from "./olPlugin";
|
|
20
|
+
import { paragraphPlugin } from "./paragraphPlugin";
|
|
21
|
+
import { spanPlugin } from "./spanPlugin";
|
|
22
|
+
import { tablePlugin } from "./tablePlugin";
|
|
23
|
+
import { PluginType } from "./types";
|
|
24
|
+
import { ulPlugin } from "./ulPlugin";
|
|
25
25
|
|
|
26
26
|
export const basePlugins: Record<string, PluginType> = {
|
|
27
27
|
h2: copyParagraphPlugin,
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps } from
|
|
10
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps } from "html-react-parser";
|
|
10
|
+
import { PluginType } from "./types";
|
|
11
11
|
export const mathPlugin: PluginType = (node) => {
|
|
12
|
-
const {
|
|
12
|
+
const { "data-math": mathContent, ...props } = attributesToProps(node.attribs);
|
|
13
13
|
// @ts-ignore
|
|
14
14
|
return <math {...props} dangerouslySetInnerHTML={{ __html: mathContent }} />;
|
|
15
15
|
};
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import { LinkBlockSection } from
|
|
11
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import { LinkBlockSection } from "@ndla/ui";
|
|
11
|
+
import { PluginType } from "./types";
|
|
12
12
|
|
|
13
13
|
export const navPlugin: PluginType = (node, opts) => {
|
|
14
|
-
if (node.attribs[
|
|
14
|
+
if (node.attribs["data-type"] === "link-block-list") {
|
|
15
15
|
const props = attributesToProps(node.attribs);
|
|
16
16
|
return <LinkBlockSection {...props}>{domToReact(node.children, opts)}</LinkBlockSection>;
|
|
17
17
|
}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import SafeLink from
|
|
11
|
-
import { getPossiblyRelativeUrl } from
|
|
12
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import SafeLink from "@ndla/safelink";
|
|
11
|
+
import { getPossiblyRelativeUrl } from "@ndla/ui";
|
|
12
|
+
import { PluginType } from "../types";
|
|
13
13
|
|
|
14
14
|
export const anchorPlugin: PluginType = (node, options, { path }) => {
|
|
15
15
|
const props = attributesToProps(node.attribs);
|
package/src/plugins/olPlugin.tsx
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import { OrderedList } from
|
|
11
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import { OrderedList } from "@ndla/ui";
|
|
11
|
+
import { PluginType } from "./types";
|
|
12
12
|
export const olPlugin: PluginType = (node, converterOpts, opts) => {
|
|
13
13
|
const props = attributesToProps(node.attribs);
|
|
14
|
-
const letterClass = node.attribs[
|
|
15
|
-
const num = node.attribs[
|
|
14
|
+
const letterClass = node.attribs["data-type"] === "letters" ? "ol-list--roman" : false;
|
|
15
|
+
const num = node.attribs["start"];
|
|
16
16
|
const numClass = num ? `ol-reset-${num}` : false;
|
|
17
|
-
const classes = [node.attribs.class ?? false, letterClass, numClass].filter((c): c is string => !!c).join(
|
|
17
|
+
const classes = [node.attribs.class ?? false, letterClass, numClass].filter((c): c is string => !!c).join(" ");
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
20
|
<OrderedList {...props} className={classes.length ? classes : undefined} lang={opts.articleLanguage}>
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import { PluginType } from "./types";
|
|
11
11
|
export const paragraphPlugin: PluginType = (node, converterOpts, opts) => {
|
|
12
12
|
const props = attributesToProps(node.attribs);
|
|
13
|
-
if (node.attribs[
|
|
14
|
-
const classes = [node.attribs.class ??
|
|
13
|
+
if (node.attribs["data-align"] === "center") {
|
|
14
|
+
const classes = [node.attribs.class ?? "", "u-text-center"].filter((c) => !!c).join(" ");
|
|
15
15
|
return (
|
|
16
16
|
<p {...props} lang={opts.articleLanguage} data-align={undefined} className={classes}>
|
|
17
17
|
{domToReact(node.children, converterOpts)}
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import { PluginType } from "./types";
|
|
11
11
|
export const spanPlugin: PluginType = (node, opts) => {
|
|
12
|
-
if (node.attribs[
|
|
12
|
+
if (node.attribs["data-size"] === "large") {
|
|
13
13
|
const props = attributesToProps(node.attribs);
|
|
14
14
|
return (
|
|
15
|
-
<span {...props} data-size={undefined} className={`${node.attribs.class ??
|
|
15
|
+
<span {...props} data-size={undefined} className={`${node.attribs.class ?? ""} u-large-body-text`}>
|
|
16
16
|
{domToReact(node.children, opts)}
|
|
17
17
|
</span>
|
|
18
18
|
);
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import { Table } from
|
|
11
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import { Table } from "@ndla/ui";
|
|
11
|
+
import { PluginType } from "./types";
|
|
12
12
|
export const tablePlugin: PluginType = (node, converterOpts, opts) => {
|
|
13
13
|
const props = attributesToProps(node.attribs);
|
|
14
14
|
return (
|
package/src/plugins/types.ts
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { Element, HTMLReactParserOptions } from
|
|
10
|
-
import { HeartButtonType, RenderContext, CanonicalUrlFuncs } from
|
|
9
|
+
import { Element, HTMLReactParserOptions } from "html-react-parser";
|
|
10
|
+
import { HeartButtonType, RenderContext, CanonicalUrlFuncs } from "@ndla/ui";
|
|
11
11
|
|
|
12
12
|
export interface DynamicComponents {
|
|
13
13
|
heartButton?: HeartButtonType;
|
package/src/plugins/ulPlugin.tsx
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { attributesToProps, domToReact } from
|
|
10
|
-
import { UnOrderedList } from
|
|
11
|
-
import { PluginType } from
|
|
9
|
+
import { attributesToProps, domToReact } from "html-react-parser";
|
|
10
|
+
import { UnOrderedList } from "@ndla/ui";
|
|
11
|
+
import { PluginType } from "./types";
|
|
12
12
|
export const ulPlugin: PluginType = (node, converterOpts, opts) => {
|
|
13
13
|
const props = attributesToProps(node.attribs);
|
|
14
|
-
const classes = [node.attribs.class ??
|
|
14
|
+
const classes = [node.attribs.class ?? "", node.attribs["data-type"] === "two-column" ? "o-list--two-columns" : ""]
|
|
15
15
|
.filter((c) => !!c)
|
|
16
|
-
.join(
|
|
16
|
+
.join(" ");
|
|
17
17
|
return (
|
|
18
18
|
<UnOrderedList {...props} className={classes} lang={opts.articleLanguage}>
|
|
19
19
|
{domToReact(node.children, converterOpts)}
|
package/src/transform.tsx
CHANGED
|
@@ -6,28 +6,28 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import parse, { HTMLReactParserOptions } from
|
|
10
|
-
import { MetaData } from
|
|
11
|
-
import { UnknownEmbed } from
|
|
12
|
-
import { basePlugins, oembedPlugins } from
|
|
13
|
-
import { embedPlugins } from
|
|
14
|
-
import { TransformOptions } from
|
|
9
|
+
import parse, { HTMLReactParserOptions } from "html-react-parser";
|
|
10
|
+
import { MetaData } from "@ndla/types-embed";
|
|
11
|
+
import { UnknownEmbed } from "@ndla/ui";
|
|
12
|
+
import { basePlugins, oembedPlugins } from "./plugins";
|
|
13
|
+
import { embedPlugins } from "./plugins/embed";
|
|
14
|
+
import { TransformOptions } from "./plugins/types";
|
|
15
15
|
|
|
16
16
|
const transform = (content: string, opts: TransformOptions) => {
|
|
17
17
|
const plugins = opts?.isOembed ? oembedPlugins : basePlugins;
|
|
18
18
|
const options: HTMLReactParserOptions = {
|
|
19
19
|
replace: (node) => {
|
|
20
|
-
if (!(
|
|
20
|
+
if (!("attribs" in node)) {
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
if (plugins[node.name]) {
|
|
24
24
|
return plugins[node.name](node, options, opts);
|
|
25
25
|
}
|
|
26
|
-
if (node.name ===
|
|
27
|
-
if (embedPlugins[node.attribs[
|
|
28
|
-
return embedPlugins[node.attribs[
|
|
26
|
+
if (node.name === "ndlaembed") {
|
|
27
|
+
if (embedPlugins[node.attribs["data-resource"]]) {
|
|
28
|
+
return embedPlugins[node.attribs["data-resource"]](node, options, opts);
|
|
29
29
|
} else {
|
|
30
|
-
const embed = JSON.parse(node.attribs[
|
|
30
|
+
const embed = JSON.parse(node.attribs["data-json"]) as MetaData<any, any>;
|
|
31
31
|
return <UnknownEmbed embed={embed} />;
|
|
32
32
|
}
|
|
33
33
|
}
|