themed-markdown 0.1.21 → 0.1.23
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/index.mjs +74 -8
- package/dist/industryMarkdown/components/IndustryMarkdownComponents.d.ts +1 -0
- package/dist/industryMarkdown/components/IndustryMarkdownComponents.d.ts.map +1 -1
- package/dist/industryMarkdown/components/IndustryMarkdownSlide.stories.d.ts +1 -0
- package/dist/industryMarkdown/components/IndustryMarkdownSlide.stories.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/index.mjs
CHANGED
|
@@ -1385,7 +1385,21 @@ var IndustryBashCommandDropdown = ({
|
|
|
1385
1385
|
|
|
1386
1386
|
// industryMarkdown/components/IndustryMarkdownComponents.tsx
|
|
1387
1387
|
var failedImageCache = new Set;
|
|
1388
|
-
var
|
|
1388
|
+
var isVideoUrl = (url, alt) => {
|
|
1389
|
+
const videoExtensions = [".mp4", ".webm", ".ogg", ".mov", ".avi", ".mkv", ".m4v"];
|
|
1390
|
+
const lowercaseUrl = url.toLowerCase();
|
|
1391
|
+
if (videoExtensions.some((ext) => lowercaseUrl.includes(ext))) {
|
|
1392
|
+
return true;
|
|
1393
|
+
}
|
|
1394
|
+
if (alt) {
|
|
1395
|
+
const altLower = alt.toLowerCase();
|
|
1396
|
+
if (altLower.includes("video") || altLower.includes("demo") || altLower.includes("recording")) {
|
|
1397
|
+
return true;
|
|
1398
|
+
}
|
|
1399
|
+
}
|
|
1400
|
+
return false;
|
|
1401
|
+
};
|
|
1402
|
+
var OptimizedMarkdownMedia = React7.memo(({
|
|
1389
1403
|
src,
|
|
1390
1404
|
alt,
|
|
1391
1405
|
repositoryInfo,
|
|
@@ -1397,7 +1411,7 @@ var OptimizedMarkdownImage = React7.memo(({
|
|
|
1397
1411
|
}, [src, repositoryInfo]);
|
|
1398
1412
|
const [hasErrored, setHasErrored] = useState6(() => failedImageCache.has(transformedSrc));
|
|
1399
1413
|
const retryCount = useRef4(0);
|
|
1400
|
-
const
|
|
1414
|
+
const mediaStyle = useMemo(() => ({
|
|
1401
1415
|
maxWidth: "100%",
|
|
1402
1416
|
height: "auto",
|
|
1403
1417
|
display: "block",
|
|
@@ -1416,10 +1430,49 @@ var OptimizedMarkdownImage = React7.memo(({
|
|
|
1416
1430
|
setHasErrored(true);
|
|
1417
1431
|
e.stopPropagation();
|
|
1418
1432
|
};
|
|
1433
|
+
if (isVideoUrl(transformedSrc, alt)) {
|
|
1434
|
+
if (hasErrored) {
|
|
1435
|
+
return /* @__PURE__ */ React7.createElement("span", {
|
|
1436
|
+
style: {
|
|
1437
|
+
...mediaStyle,
|
|
1438
|
+
display: "inline-flex",
|
|
1439
|
+
alignItems: "center",
|
|
1440
|
+
justifyContent: "center",
|
|
1441
|
+
backgroundColor: theme2.colors.backgroundSecondary,
|
|
1442
|
+
color: theme2.colors.textSecondary,
|
|
1443
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
1444
|
+
padding: theme2.space[4],
|
|
1445
|
+
minHeight: "200px"
|
|
1446
|
+
}
|
|
1447
|
+
}, "⚠️ Video failed to load: ", alt || transformedSrc);
|
|
1448
|
+
}
|
|
1449
|
+
return /* @__PURE__ */ React7.createElement("video", {
|
|
1450
|
+
controls: true,
|
|
1451
|
+
style: mediaStyle,
|
|
1452
|
+
onLoadedData: handleLoad,
|
|
1453
|
+
onError: handleError,
|
|
1454
|
+
title: alt,
|
|
1455
|
+
...props
|
|
1456
|
+
}, /* @__PURE__ */ React7.createElement("source", {
|
|
1457
|
+
src: transformedSrc
|
|
1458
|
+
}), /* @__PURE__ */ React7.createElement("source", {
|
|
1459
|
+
src: transformedSrc,
|
|
1460
|
+
type: "video/mp4"
|
|
1461
|
+
}), /* @__PURE__ */ React7.createElement("source", {
|
|
1462
|
+
src: transformedSrc,
|
|
1463
|
+
type: "video/webm"
|
|
1464
|
+
}), "Your browser does not support the video tag.");
|
|
1465
|
+
}
|
|
1466
|
+
const handleImageError = (e) => {
|
|
1467
|
+
retryCount.current += 1;
|
|
1468
|
+
failedImageCache.add(transformedSrc);
|
|
1469
|
+
setHasErrored(true);
|
|
1470
|
+
e.stopPropagation();
|
|
1471
|
+
};
|
|
1419
1472
|
if (hasErrored) {
|
|
1420
1473
|
return /* @__PURE__ */ React7.createElement("span", {
|
|
1421
1474
|
style: {
|
|
1422
|
-
...
|
|
1475
|
+
...mediaStyle,
|
|
1423
1476
|
display: "inline-flex",
|
|
1424
1477
|
alignItems: "center",
|
|
1425
1478
|
justifyContent: "center",
|
|
@@ -1440,9 +1493,9 @@ var OptimizedMarkdownImage = React7.memo(({
|
|
|
1440
1493
|
return /* @__PURE__ */ React7.createElement("img", {
|
|
1441
1494
|
src: transformedSrc,
|
|
1442
1495
|
alt,
|
|
1443
|
-
style:
|
|
1496
|
+
style: mediaStyle,
|
|
1444
1497
|
onLoad: handleLoad,
|
|
1445
|
-
onError:
|
|
1498
|
+
onError: handleImageError,
|
|
1446
1499
|
...props
|
|
1447
1500
|
});
|
|
1448
1501
|
});
|
|
@@ -1481,6 +1534,7 @@ var createIndustryMarkdownComponents = ({
|
|
|
1481
1534
|
fontSize: theme2.fontSizes[5],
|
|
1482
1535
|
lineHeight: theme2.lineHeights.heading,
|
|
1483
1536
|
fontWeight: theme2.fontWeights.bold,
|
|
1537
|
+
marginTop: index === 0 ? 0 : theme2.space[4],
|
|
1484
1538
|
marginBottom: theme2.space[4],
|
|
1485
1539
|
fontFamily: theme2.fonts.heading,
|
|
1486
1540
|
...headerStyles
|
|
@@ -1493,7 +1547,7 @@ var createIndustryMarkdownComponents = ({
|
|
|
1493
1547
|
fontSize: theme2.fontSizes[4],
|
|
1494
1548
|
lineHeight: theme2.lineHeights.heading,
|
|
1495
1549
|
fontWeight: theme2.fontWeights.bold,
|
|
1496
|
-
marginTop: theme2.space[4],
|
|
1550
|
+
marginTop: index === 0 ? 0 : theme2.space[4],
|
|
1497
1551
|
marginBottom: theme2.space[3],
|
|
1498
1552
|
fontFamily: theme2.fonts.heading,
|
|
1499
1553
|
...headerStyles
|
|
@@ -1506,7 +1560,7 @@ var createIndustryMarkdownComponents = ({
|
|
|
1506
1560
|
fontSize: theme2.fontSizes[3],
|
|
1507
1561
|
lineHeight: theme2.lineHeights.heading,
|
|
1508
1562
|
fontWeight: theme2.fontWeights.semibold,
|
|
1509
|
-
marginTop: theme2.space[4],
|
|
1563
|
+
marginTop: index === 0 ? 0 : theme2.space[4],
|
|
1510
1564
|
marginBottom: theme2.space[3],
|
|
1511
1565
|
fontFamily: theme2.fonts.heading
|
|
1512
1566
|
},
|
|
@@ -1664,7 +1718,7 @@ var createIndustryMarkdownComponents = ({
|
|
|
1664
1718
|
onClick: onLinkClick ? (h, e) => onLinkClick(h, e) : undefined,
|
|
1665
1719
|
className: props.className
|
|
1666
1720
|
}, children),
|
|
1667
|
-
img: ({ src, alt, ...props }) => /* @__PURE__ */ React7.createElement(
|
|
1721
|
+
img: ({ src, alt, ...props }) => /* @__PURE__ */ React7.createElement(OptimizedMarkdownMedia, {
|
|
1668
1722
|
src: src || "",
|
|
1669
1723
|
alt: alt || "",
|
|
1670
1724
|
repositoryInfo,
|
|
@@ -1674,6 +1728,18 @@ var createIndustryMarkdownComponents = ({
|
|
|
1674
1728
|
picture: ({ children, ...props }) => /* @__PURE__ */ React7.createElement("picture", {
|
|
1675
1729
|
...props
|
|
1676
1730
|
}, children),
|
|
1731
|
+
video: ({ children, ...props }) => /* @__PURE__ */ React7.createElement("video", {
|
|
1732
|
+
controls: true,
|
|
1733
|
+
style: {
|
|
1734
|
+
maxWidth: "100%",
|
|
1735
|
+
height: "auto",
|
|
1736
|
+
display: "block",
|
|
1737
|
+
margin: `${theme2.space[3]}px auto`,
|
|
1738
|
+
borderRadius: theme2.radii[1],
|
|
1739
|
+
boxShadow: theme2.shadows[2]
|
|
1740
|
+
},
|
|
1741
|
+
...props
|
|
1742
|
+
}, children),
|
|
1677
1743
|
source: ({ srcset, srcSet, ...props }) => {
|
|
1678
1744
|
const srcsetValue = srcset || srcSet;
|
|
1679
1745
|
const transformedSrcset = useMemo(() => {
|
|
@@ -37,6 +37,7 @@ export declare const createIndustryMarkdownComponents: ({ theme, slideIdPrefix,
|
|
|
37
37
|
a: ({ children, href, ...props }: LinkProps) => React.JSX.Element;
|
|
38
38
|
img: ({ src, alt, ...props }: ImageProps) => React.JSX.Element;
|
|
39
39
|
picture: ({ children, ...props }: MarkdownComponentProps) => React.JSX.Element;
|
|
40
|
+
video: ({ children, ...props }: MarkdownComponentProps) => React.JSX.Element;
|
|
40
41
|
source: ({ srcset, srcSet, ...props }: SourceProps) => React.JSX.Element;
|
|
41
42
|
code: ({ node, className, children, ...props }: CodeProps) => React.JSX.Element;
|
|
42
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndustryMarkdownComponents.d.ts","sourceRoot":"","sources":["../../../industryMarkdown/components/IndustryMarkdownComponents.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EAEZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AAMhH,UAAU,+BAA+B;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/E,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/E,oBAAoB,CAAC,EAAE,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"IndustryMarkdownComponents.d.ts","sourceRoot":"","sources":["../../../industryMarkdown/components/IndustryMarkdownComponents.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EAEZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AAMhH,UAAU,+BAA+B;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/E,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/E,oBAAoB,CAAC,EAAE,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAgKD;;;GAGG;AACH,eAAO,MAAM,gCAAgC,GAAI,uOAe9C,+BAA+B;iCAqBD,YAAY;iCAiBZ,YAAY;iCAiBZ,YAAY;gCAkBb,sBAAsB;iCAgBrB,sBAAsB;iCAgBtB,sBAAsB;iCAgBtB,aAAa;oCAuGV,sBAAsB;oCAsBtB,sBAAsB;iCAUzB,sBAAsB;iCActB,sBAAsB;sCAcjB,SAAS;kCAWb,UAAU;sCAWN,sBAAsB;oCAGxB,sBAAsB;2CAkBf,WAAW;oDAyBF,SAAS;CAwS5D,CAAC"}
|
|
@@ -5,6 +5,7 @@ export default meta;
|
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
6
6
|
export declare const Default: Story;
|
|
7
7
|
export declare const WithCode: Story;
|
|
8
|
+
export declare const WithVideo: Story;
|
|
8
9
|
export declare const WithMermaid: Story;
|
|
9
10
|
export declare const WithMermaidWidthFit: Story;
|
|
10
11
|
export declare const WithMermaidTallDiagram: Story;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndustryMarkdownSlide.stories.d.ts","sourceRoot":"","sources":["../../../industryMarkdown/components/IndustryMarkdownSlide.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,qBAAqB,CAe5C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAmBtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAkEzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA2BjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KA+BpC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAgB1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAavB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAyBzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA4E5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KA8BhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAwFhC,CAAC"}
|
|
1
|
+
{"version":3,"file":"IndustryMarkdownSlide.stories.d.ts","sourceRoot":"","sources":["../../../industryMarkdown/components/IndustryMarkdownSlide.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,qBAAqB,CAe5C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAmBtB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAyCvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAkEzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA2BjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KA+BpC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAgB1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAavB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAyBzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA4E5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KA8BhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAwFhC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "themed-markdown",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "Industry-themed markdown renderer with presentation capabilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"format:check": "prettier --check .",
|
|
32
32
|
"clean": "rm -rf dist coverage",
|
|
33
33
|
"storybook": "storybook dev -p 6006",
|
|
34
|
-
"build-storybook": "storybook build"
|
|
34
|
+
"build-storybook": "storybook build",
|
|
35
|
+
"prepare": "husky"
|
|
35
36
|
},
|
|
36
37
|
"keywords": [
|
|
37
38
|
"markdown",
|