@san-siva/blogkit 1.1.42 → 1.1.44

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.
Files changed (69) hide show
  1. package/dist/cjs/components/Blog.js +2 -2
  2. package/dist/cjs/components/Blog.js.map +1 -1
  3. package/dist/cjs/components/Checkbox.js +14 -0
  4. package/dist/cjs/components/Checkbox.js.map +1 -0
  5. package/dist/cjs/components/WidthModeToggle.js +18 -0
  6. package/dist/cjs/components/WidthModeToggle.js.map +1 -0
  7. package/dist/cjs/context/WidthModeContext.js +23 -0
  8. package/dist/cjs/context/WidthModeContext.js.map +1 -0
  9. package/dist/cjs/dynamicComponents/BlogDynamic.js +2 -2
  10. package/dist/cjs/dynamicComponents/BlogDynamic.js.map +1 -1
  11. package/dist/cjs/index.css +1 -1
  12. package/dist/cjs/index.css.map +1 -1
  13. package/dist/cjs/index.js +2 -0
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/staticComponents/BlogStatic.js +2 -2
  16. package/dist/cjs/staticComponents/BlogStatic.js.map +1 -1
  17. package/dist/cjs/staticComponents/CheckListStatic.js +2 -1
  18. package/dist/cjs/staticComponents/CheckListStatic.js.map +1 -1
  19. package/dist/cjs/styles/Blog.module.scss.js +1 -1
  20. package/dist/esm/components/Blog.js +2 -2
  21. package/dist/esm/components/Blog.js.map +1 -1
  22. package/dist/esm/components/Checkbox.js +10 -0
  23. package/dist/esm/components/Checkbox.js.map +1 -0
  24. package/dist/esm/components/WidthModeToggle.js +14 -0
  25. package/dist/esm/components/WidthModeToggle.js.map +1 -0
  26. package/dist/esm/context/WidthModeContext.js +20 -0
  27. package/dist/esm/context/WidthModeContext.js.map +1 -0
  28. package/dist/esm/dynamicComponents/BlogDynamic.js +2 -2
  29. package/dist/esm/dynamicComponents/BlogDynamic.js.map +1 -1
  30. package/dist/esm/index.css +1 -1
  31. package/dist/esm/index.css.map +1 -1
  32. package/dist/esm/index.js +1 -0
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/staticComponents/BlogStatic.js +2 -2
  35. package/dist/esm/staticComponents/BlogStatic.js.map +1 -1
  36. package/dist/esm/staticComponents/CheckListStatic.js +2 -1
  37. package/dist/esm/staticComponents/CheckListStatic.js.map +1 -1
  38. package/dist/esm/styles/Blog.module.scss.js +1 -1
  39. package/dist/types/components/Blog.d.ts +2 -1
  40. package/dist/types/components/Blog.d.ts.map +1 -1
  41. package/dist/types/components/Checkbox.d.ts +7 -0
  42. package/dist/types/components/Checkbox.d.ts.map +1 -0
  43. package/dist/types/components/Checkbox.test.d.ts +2 -0
  44. package/dist/types/components/Checkbox.test.d.ts.map +1 -0
  45. package/dist/types/components/WidthModeToggle.d.ts +3 -0
  46. package/dist/types/components/WidthModeToggle.d.ts.map +1 -0
  47. package/dist/types/context/WidthModeContext.d.ts +12 -0
  48. package/dist/types/context/WidthModeContext.d.ts.map +1 -0
  49. package/dist/types/dynamicComponents/BlogDynamic.d.ts +2 -1
  50. package/dist/types/dynamicComponents/BlogDynamic.d.ts.map +1 -1
  51. package/dist/types/index.d.ts +1 -0
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/staticComponents/BlogStatic.d.ts +2 -1
  54. package/dist/types/staticComponents/BlogStatic.d.ts.map +1 -1
  55. package/dist/types/staticComponents/CheckListStatic.d.ts +1 -0
  56. package/dist/types/staticComponents/CheckListStatic.d.ts.map +1 -1
  57. package/dist/types/staticComponents/CheckListStatic.test.d.ts +2 -0
  58. package/dist/types/staticComponents/CheckListStatic.test.d.ts.map +1 -0
  59. package/package.json +2 -2
  60. package/src/components/Blog.tsx +4 -3
  61. package/src/components/Checkbox.test.tsx +32 -0
  62. package/src/components/Checkbox.tsx +24 -0
  63. package/src/dynamicComponents/BlogDynamic.tsx +3 -1
  64. package/src/index.ts +1 -0
  65. package/src/staticComponents/BlogStatic.tsx +4 -2
  66. package/src/staticComponents/CheckListStatic.test.tsx +29 -0
  67. package/src/staticComponents/CheckListStatic.tsx +3 -5
  68. package/src/styles/Blog.module.scss +22 -4
  69. package/src/styles/Blog.module.scss.d.ts +1 -0
@@ -8,8 +8,8 @@ var react = require('react');
8
8
  var BlogStatic = require('../staticComponents/BlogStatic.js');
9
9
 
10
10
  const BlogDynamic = react.lazy(() => Promise.resolve().then(function () { return require('../dynamicComponents/BlogDynamic.js'); }));
11
- const Blog = ({ children, title = 'In this article', jsonLd }) => {
12
- return (jsxRuntime.jsx(react.Suspense, { fallback: jsxRuntime.jsx(BlogStatic.default, { jsonLd: jsonLd, children: children }), children: jsxRuntime.jsx(BlogDynamic, { title: title, jsonLd: jsonLd, children: children }) }));
11
+ const Blog = ({ children, title = 'In this article', jsonLd, increasedWidthMode = false }) => {
12
+ return (jsxRuntime.jsx(react.Suspense, { fallback: jsxRuntime.jsx(BlogStatic.default, { jsonLd: jsonLd, increasedWidthMode: increasedWidthMode, children: children }), children: jsxRuntime.jsx(BlogDynamic, { title: title, jsonLd: jsonLd, increasedWidthMode: increasedWidthMode, children: children }) }));
13
13
  };
14
14
 
15
15
  exports.default = Blog;
@@ -1 +1 @@
1
- {"version":3,"file":"Blog.js","sources":["../../../src/components/Blog.tsx"],"sourcesContent":["'use client';\n\nimport { lazy, Suspense } from 'react';\nimport type { ReactNode } from 'react';\nimport type { Thing, WithContext } from 'schema-dts';\nimport BlogStatic from '../staticComponents/BlogStatic';\n\nconst BlogDynamic = lazy(() => import('../dynamicComponents/BlogDynamic'));\n\ninterface BlogProperties {\n\tchildren: ReactNode;\n\ttitle?: string;\n\tjsonLd?: WithContext<Thing>;\n}\n\nconst Blog = ({ children, title = 'In this article', jsonLd }: BlogProperties) => {\n\treturn (\n\t\t<Suspense fallback={<BlogStatic jsonLd={jsonLd}>{children}</BlogStatic>}>\n\t\t\t<BlogDynamic title={title} jsonLd={jsonLd}>{children}</BlogDynamic>\n\t\t</Suspense>\n\t);\n};\n\nexport default Blog;\n"],"names":["lazy","_jsx","Suspense","BlogStatic"],"mappings":";;;;;;;;AAOA,MAAM,WAAW,GAAGA,UAAI,CAAC,MAAM,oDAAO,qCAAkC,KAAC,CAAC;AAQ1E,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,iBAAiB,EAAE,MAAM,EAAkB,KAAI;AAChF,IAAA,QACCC,cAAA,CAACC,cAAQ,EAAA,EAAC,QAAQ,EAAED,cAAA,CAACE,kBAAU,EAAA,EAAC,MAAM,EAAE,MAAM,YAAG,QAAQ,EAAA,CAAc,EAAA,QAAA,EACtEF,cAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAe,EAAA,CACzD;AAEb;;;;"}
1
+ {"version":3,"file":"Blog.js","sources":["../../../src/components/Blog.tsx"],"sourcesContent":["'use client';\n\nimport { lazy, Suspense } from 'react';\nimport type { ReactNode } from 'react';\nimport type { Thing, WithContext } from 'schema-dts';\nimport BlogStatic from '../staticComponents/BlogStatic';\n\nconst BlogDynamic = lazy(() => import('../dynamicComponents/BlogDynamic'));\n\ninterface BlogProperties {\n\tchildren: ReactNode;\n\ttitle?: string;\n\tjsonLd?: WithContext<Thing>;\n\tincreasedWidthMode?: boolean;\n}\n\nconst Blog = ({ children, title = 'In this article', jsonLd, increasedWidthMode = false }: BlogProperties) => {\n\treturn (\n\t\t<Suspense fallback={<BlogStatic jsonLd={jsonLd} increasedWidthMode={increasedWidthMode}>{children}</BlogStatic>}>\n\t\t\t<BlogDynamic title={title} jsonLd={jsonLd} increasedWidthMode={increasedWidthMode}>{children}</BlogDynamic>\n\t\t</Suspense>\n\t);\n};\n\nexport default Blog;\n"],"names":["lazy","_jsx","Suspense","BlogStatic"],"mappings":";;;;;;;;AAOA,MAAM,WAAW,GAAGA,UAAI,CAAC,MAAM,oDAAO,qCAAkC,KAAC,CAAC;AAS1E,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,GAAG,KAAK,EAAkB,KAAI;AAC5G,IAAA,QACCC,cAAA,CAACC,cAAQ,EAAA,EAAC,QAAQ,EAAED,cAAA,CAACE,kBAAU,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,YAAG,QAAQ,EAAA,CAAc,EAAA,QAAA,EAC9GF,cAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAe,EAAA,CACjG;AAEb;;;;"}
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var CheckList_module = require('../styles/CheckList.module.scss.js');
8
+
9
+ const Checkbox = ({ isChecked = false, onClick }) => {
10
+ return (jsxRuntime.jsx("div", { className: `${CheckList_module.default['check-list__item__input']} ${isChecked ? CheckList_module.default['check-list__item__input--checked'] : ''}`, onClick: onClick, role: onClick ? 'checkbox' : undefined, "aria-checked": onClick ? isChecked : undefined, tabIndex: onClick ? 0 : undefined }));
11
+ };
12
+
13
+ exports.default = Checkbox;
14
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../src/components/Checkbox.tsx"],"sourcesContent":["'use client';\n\nimport styles from '../styles/CheckList.module.scss';\n\ninterface CheckboxProperties {\n\tisChecked?: boolean;\n\tonClick?: () => void;\n}\n\nconst Checkbox = ({ isChecked = false, onClick }: CheckboxProperties) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles['check-list__item__input']} ${\n\t\t\t\tisChecked ? styles['check-list__item__input--checked'] : ''\n\t\t\t}`}\n\t\t\tonClick={onClick}\n\t\t\trole={onClick ? 'checkbox' : undefined}\n\t\t\taria-checked={onClick ? isChecked : undefined}\n\t\t\ttabIndex={onClick ? 0 : undefined}\n\t\t/>\n\t);\n};\n\nexport default Checkbox;\n"],"names":["_jsx","styles"],"mappings":";;;;;;;AASA,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,EAAsB,KAAI;AACvE,IAAA,QACCA,cAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAE,CAAA,EAAGC,wBAAM,CAAC,yBAAyB,CAAC,CAAA,CAAA,EAC9C,SAAS,GAAGA,wBAAM,CAAC,kCAAkC,CAAC,GAAG,EAC1D,CAAA,CAAE,EACF,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,EAAA,cAAA,EACxB,OAAO,GAAG,SAAS,GAAG,SAAS,EAC7C,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,EAAA,CAChC;AAEJ;;;;"}
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var WidthModeContext = require('../context/WidthModeContext.js');
8
+
9
+ const WidthModeToggle = () => {
10
+ const widthMode = WidthModeContext.useWidthMode();
11
+ if (!widthMode)
12
+ return null;
13
+ const { increasedWidthMode, setIncreasedWidthMode } = widthMode;
14
+ return (jsxRuntime.jsxs("label", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [jsxRuntime.jsx("input", { type: "checkbox", checked: increasedWidthMode, onChange: event => setIncreasedWidthMode(event.target.checked) }), "Increased width mode"] }));
15
+ };
16
+
17
+ exports.default = WidthModeToggle;
18
+ //# sourceMappingURL=WidthModeToggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidthModeToggle.js","sources":["../../../src/components/WidthModeToggle.tsx"],"sourcesContent":["'use client';\n\nimport { useWidthMode } from '../context/WidthModeContext';\n\nconst WidthModeToggle = () => {\n\tconst widthMode = useWidthMode();\n\tif (!widthMode) return null;\n\n\tconst { increasedWidthMode, setIncreasedWidthMode } = widthMode;\n\n\treturn (\n\t\t<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tchecked={increasedWidthMode}\n\t\t\t\tonChange={event => setIncreasedWidthMode(event.target.checked)}\n\t\t\t/>\n\t\t\tIncreased width mode\n\t\t</label>\n\t);\n};\n\nexport default WidthModeToggle;\n"],"names":["useWidthMode","_jsxs","_jsx"],"mappings":";;;;;;;AAIA,MAAM,eAAe,GAAG,MAAK;AAC5B,IAAA,MAAM,SAAS,GAAGA,6BAAY,EAAE;AAChC,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI;AAE3B,IAAA,MAAM,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,GAAG,SAAS;IAE/D,QACCC,2BAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACrEC,cAAA,CAAA,OAAA,EAAA,EACC,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA,CAC7D,EAAA,sBAAA,CAAA,EAAA,CAEK;AAEV;;;;"}
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+
7
+ const STORAGE_KEY = 'blogkit:increased-width-mode';
8
+ const WidthModeContext = react.createContext(null);
9
+ const WidthModeProvider = ({ children }) => {
10
+ const [increasedWidthMode, setIncreasedWidthMode] = react.useState(false);
11
+ react.useEffect(() => {
12
+ setIncreasedWidthMode(localStorage.getItem(STORAGE_KEY) === 'true');
13
+ }, []);
14
+ react.useEffect(() => {
15
+ localStorage.setItem(STORAGE_KEY, String(increasedWidthMode));
16
+ }, [increasedWidthMode]);
17
+ return (jsxRuntime.jsx(WidthModeContext.Provider, { value: { increasedWidthMode, setIncreasedWidthMode }, children: children }));
18
+ };
19
+ const useWidthMode = () => react.useContext(WidthModeContext);
20
+
21
+ exports.WidthModeProvider = WidthModeProvider;
22
+ exports.useWidthMode = useWidthMode;
23
+ //# sourceMappingURL=WidthModeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidthModeContext.js","sources":["../../../src/context/WidthModeContext.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nconst STORAGE_KEY = 'blogkit:increased-width-mode';\n\ninterface WidthModeContextValue {\n\tincreasedWidthMode: boolean;\n\tsetIncreasedWidthMode: (value: boolean) => void;\n}\n\nconst WidthModeContext = createContext<WidthModeContextValue | null>(null);\n\ninterface WidthModeProviderProperties {\n\tchildren: ReactNode;\n}\n\nexport const WidthModeProvider = ({ children }: WidthModeProviderProperties) => {\n\tconst [increasedWidthMode, setIncreasedWidthMode] = useState(false);\n\n\tuseEffect(() => {\n\t\tsetIncreasedWidthMode(localStorage.getItem(STORAGE_KEY) === 'true');\n\t}, []);\n\n\tuseEffect(() => {\n\t\tlocalStorage.setItem(STORAGE_KEY, String(increasedWidthMode));\n\t}, [increasedWidthMode]);\n\n\treturn (\n\t\t<WidthModeContext.Provider\n\t\t\tvalue={{ increasedWidthMode, setIncreasedWidthMode }}\n\t\t>\n\t\t\t{children}\n\t\t</WidthModeContext.Provider>\n\t);\n};\n\nexport const useWidthMode = () => useContext(WidthModeContext);\n"],"names":["createContext","useState","useEffect","_jsx","useContext"],"mappings":";;;;;AAKA,MAAM,WAAW,GAAG,8BAA8B;AAOlD,MAAM,gBAAgB,GAAGA,mBAAa,CAA+B,IAAI,CAAC;MAM7D,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAA+B,KAAI;IAC9E,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;IAEnEC,eAAS,CAAC,MAAK;QACd,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;IACpE,CAAC,EAAE,EAAE,CAAC;IAENA,eAAS,CAAC,MAAK;QACd,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC9D,IAAA,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;AAExB,IAAA,QACCC,cAAA,CAAC,gBAAgB,CAAC,QAAQ,IACzB,KAAK,EAAE,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAEnD,QAAQ,EAAA,CACkB;AAE9B;AAEO,MAAM,YAAY,GAAG,MAAMC,gBAAU,CAAC,gBAAgB;;;;;"}
@@ -30,7 +30,7 @@ const buildTocTree = (entries) => {
30
30
  }
31
31
  return roots;
32
32
  };
33
- const Blog = ({ children, title = 'In this article', jsonLd, }) => {
33
+ const Blog = ({ children, title = 'In this article', jsonLd, increasedWidthMode = false, }) => {
34
34
  const [visibleTitle, setVisibleTitle] = react.useState(null);
35
35
  const [showTOC, setShowTOC] = react.useState(false);
36
36
  const { categoryTitles, handleSectionReference } = useCategoryTitles.useCategoryTitles({
@@ -47,7 +47,7 @@ const Blog = ({ children, title = 'In this article', jsonLd, }) => {
47
47
  transform: showTOC ? 'translateX(0)' : 'translateX(40px)',
48
48
  config: web.config.gentle,
49
49
  });
50
- return (jsxRuntime.jsxs("div", { className: Blog_module.default.blog, children: [jsonLd && (jsxRuntime.jsx("script", { type: "application/ld+json", dangerouslySetInnerHTML: { __html: JSON.stringify(jsonLd) } })), jsxRuntime.jsx("div", { className: Blog_module.default['blog__content'], children: react.Children.map(children, child => {
50
+ return (jsxRuntime.jsxs("div", { className: `${Blog_module.default.blog} ${increasedWidthMode ? Blog_module.default['blog--increased-width'] : ''}`, children: [jsonLd && (jsxRuntime.jsx("script", { type: "application/ld+json", dangerouslySetInnerHTML: { __html: JSON.stringify(jsonLd) } })), jsxRuntime.jsx("div", { className: Blog_module.default['blog__content'], children: react.Children.map(children, child => {
51
51
  if (!react.isValidElement(child))
52
52
  return child;
53
53
  return react.cloneElement(child, {
@@ -1 +1 @@
1
- {"version":3,"file":"BlogDynamic.js","sources":["../../../src/dynamicComponents/BlogDynamic.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseState,\n} from 'react';\nimport { useSpring, animated, config } from '@react-spring/web';\n\nimport type { ReactNode, RefAttributes } from 'react';\nimport type { Thing, WithContext } from 'schema-dts';\n\nimport styles from '../styles/Blog.module.scss';\nimport { useCategoryTitles } from '../hooks/useCategoryTitles';\nimport { useSectionObserver } from '../hooks/useSectionObserver';\nimport type { CategoryTitleValue } from '../hooks/useCategoryTitles';\nimport TocNodeStatic from '../staticComponents/TocNodeStatic';\nimport type { TocNode } from '../staticComponents/TocNodeStatic';\n\ninterface BlogProperties {\n\tchildren: ReactNode;\n\ttitle?: string;\n\tjsonLd?: WithContext<Thing>;\n}\n\nexport interface ForwardedReference {\n\tparentRef: HTMLDivElement;\n\tchildRefs: ForwardedReference[];\n}\n\nconst MAX_TOC_DEPTH = 2;\n\nconst buildTocTree = (entries: [string, CategoryTitleValue][]): TocNode[] => {\n\tconst roots: TocNode[] = [];\n\tconst stack: TocNode[] = [];\n\tfor (const [id, { title, depth }] of entries.filter(([, { depth }]) => depth <= MAX_TOC_DEPTH)) {\n\t\tconst node: TocNode = { id, title, depth, children: [] };\n\t\twhile (stack.length > 0 && stack[stack.length - 1].depth >= depth) {\n\t\t\tstack.pop();\n\t\t}\n\t\tif (stack.length === 0) {\n\t\t\troots.push(node);\n\t\t} else {\n\t\t\tstack[stack.length - 1].children.push(node);\n\t\t}\n\t\tstack.push(node);\n\t}\n\treturn roots;\n};\n\nconst Blog = ({\n\tchildren,\n\ttitle = 'In this article',\n\tjsonLd,\n}: BlogProperties) => {\n\tconst [visibleTitle, setVisibleTitle] = useState<string | null>(null);\n\tconst [showTOC, setShowTOC] = useState(false);\n\n\tconst { categoryTitles, handleSectionReference } = useCategoryTitles({\n\t\tvisibleTitle,\n\t\tsetVisibleTitle,\n\t\tsetShowTOC,\n\t});\n\n\tconst { handleClickCategoryTitle } = useSectionObserver({\n\t\tcategoryTitles,\n\t\tsetVisibleTitle,\n\t});\n\n\tconst sidebarStyle = useSpring({\n\t\topacity: showTOC ? 1 : 0,\n\t\ttransform: showTOC ? 'translateX(0)' : 'translateX(40px)',\n\t\tconfig: config.gentle,\n\t});\n\n\treturn (\n\t\t<div className={styles.blog}>\n\t\t\t{jsonLd && (\n\t\t\t\t<script\n\t\t\t\t\ttype=\"application/ld+json\"\n\t\t\t\t\tdangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<div className={styles['blog__content']}>\n\t\t\t\t{Children.map(children, child => {\n\t\t\t\t\tif (!isValidElement(child)) return child;\n\t\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\t\tref: handleSectionReference,\n\t\t\t\t\t} as RefAttributes<ForwardedReference>);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<animated.div className={styles['blog__sidebar']} style={sidebarStyle}>\n\t\t\t\t<p\n\t\t\t\t\tclassName={`${styles['margin-bottom--3']} ${styles['category__header']}`}\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</p>\n\t\t\t\t{buildTocTree([...categoryTitles]).map((node, i) => (\n\t\t\t\t\t<TocNodeStatic\n\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\tnode={node}\n\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\tvisibleTitle={visibleTitle}\n\t\t\t\t\t\tonClick={handleClickCategoryTitle}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</animated.div>\n\t\t</div>\n\t);\n};\n\nexport default Blog;\n"],"names":["useState","useCategoryTitles","useSectionObserver","useSpring","config","_jsxs","styles","_jsx","Children","isValidElement","cloneElement","animated","TocNodeStatic"],"mappings":"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"}
1
+ {"version":3,"file":"BlogDynamic.js","sources":["../../../src/dynamicComponents/BlogDynamic.tsx"],"sourcesContent":["'use client';\n\nimport {\n\tChildren,\n\tcloneElement,\n\tisValidElement,\n\tuseState,\n} from 'react';\nimport { useSpring, animated, config } from '@react-spring/web';\n\nimport type { ReactNode, RefAttributes } from 'react';\nimport type { Thing, WithContext } from 'schema-dts';\n\nimport styles from '../styles/Blog.module.scss';\nimport { useCategoryTitles } from '../hooks/useCategoryTitles';\nimport { useSectionObserver } from '../hooks/useSectionObserver';\nimport type { CategoryTitleValue } from '../hooks/useCategoryTitles';\nimport TocNodeStatic from '../staticComponents/TocNodeStatic';\nimport type { TocNode } from '../staticComponents/TocNodeStatic';\n\ninterface BlogProperties {\n\tchildren: ReactNode;\n\ttitle?: string;\n\tjsonLd?: WithContext<Thing>;\n\tincreasedWidthMode?: boolean;\n}\n\nexport interface ForwardedReference {\n\tparentRef: HTMLDivElement;\n\tchildRefs: ForwardedReference[];\n}\n\nconst MAX_TOC_DEPTH = 2;\n\nconst buildTocTree = (entries: [string, CategoryTitleValue][]): TocNode[] => {\n\tconst roots: TocNode[] = [];\n\tconst stack: TocNode[] = [];\n\tfor (const [id, { title, depth }] of entries.filter(([, { depth }]) => depth <= MAX_TOC_DEPTH)) {\n\t\tconst node: TocNode = { id, title, depth, children: [] };\n\t\twhile (stack.length > 0 && stack[stack.length - 1].depth >= depth) {\n\t\t\tstack.pop();\n\t\t}\n\t\tif (stack.length === 0) {\n\t\t\troots.push(node);\n\t\t} else {\n\t\t\tstack[stack.length - 1].children.push(node);\n\t\t}\n\t\tstack.push(node);\n\t}\n\treturn roots;\n};\n\nconst Blog = ({\n\tchildren,\n\ttitle = 'In this article',\n\tjsonLd,\n\tincreasedWidthMode = false,\n}: BlogProperties) => {\n\tconst [visibleTitle, setVisibleTitle] = useState<string | null>(null);\n\tconst [showTOC, setShowTOC] = useState(false);\n\n\tconst { categoryTitles, handleSectionReference } = useCategoryTitles({\n\t\tvisibleTitle,\n\t\tsetVisibleTitle,\n\t\tsetShowTOC,\n\t});\n\n\tconst { handleClickCategoryTitle } = useSectionObserver({\n\t\tcategoryTitles,\n\t\tsetVisibleTitle,\n\t});\n\n\tconst sidebarStyle = useSpring({\n\t\topacity: showTOC ? 1 : 0,\n\t\ttransform: showTOC ? 'translateX(0)' : 'translateX(40px)',\n\t\tconfig: config.gentle,\n\t});\n\n\treturn (\n\t\t<div className={`${styles.blog} ${increasedWidthMode ? styles['blog--increased-width'] : ''}`}>\n\t\t\t{jsonLd && (\n\t\t\t\t<script\n\t\t\t\t\ttype=\"application/ld+json\"\n\t\t\t\t\tdangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<div className={styles['blog__content']}>\n\t\t\t\t{Children.map(children, child => {\n\t\t\t\t\tif (!isValidElement(child)) return child;\n\t\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\t\tref: handleSectionReference,\n\t\t\t\t\t} as RefAttributes<ForwardedReference>);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<animated.div className={styles['blog__sidebar']} style={sidebarStyle}>\n\t\t\t\t<p\n\t\t\t\t\tclassName={`${styles['margin-bottom--3']} ${styles['category__header']}`}\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</p>\n\t\t\t\t{buildTocTree([...categoryTitles]).map((node, i) => (\n\t\t\t\t\t<TocNodeStatic\n\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\tnode={node}\n\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\tvisibleTitle={visibleTitle}\n\t\t\t\t\t\tonClick={handleClickCategoryTitle}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</animated.div>\n\t\t</div>\n\t);\n};\n\nexport default Blog;\n"],"names":["useState","useCategoryTitles","useSectionObserver","useSpring","config","_jsxs","styles","_jsx","Children","isValidElement","cloneElement","animated","TocNodeStatic"],"mappings":"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"}