@san-siva/blogkit-md-cli 0.1.52 → 0.1.53
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +8 -6
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/[...slug]/page.js +3 -3
- package/.next/server/app/[...slug]/page.js.nft.json +1 -1
- package/.next/server/app/[...slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +1 -1
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/ssr/{0dlc_0hjv5-5._.js → 0dlc_0-wu_wp._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_0wm2d_l._.js → 0dlc_0.2f1t2._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_068.c_a._.js → 0dlc_02thqsb._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_05zbtlo._.js → 0dlc_03m86mz._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_0a2hf_v._.js → 0dlc_05svd7e._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_00dxfob._.js → 0dlc_0687ay-._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_034lzh-._.js → 0dlc_0ac_913._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_06zh4cf._.js → 0dlc_0dw7xx~._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_01mfakk._.js → 0dlc_0h0r~8s._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_11v.tdn._.js → 0dlc_0iqkaxv._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_061rz1d._.js → 0dlc_0kn6cly._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_0_a75co._.js → 0dlc_0kzc-yi._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_111xsg5._.js → 0dlc_0o-gpnc._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_0uuxuhx._.js → 0dlc_0xk7lzk._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_0mhhdqc._.js → 0dlc_0zyt353._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_0sv~z9u._.js → 0dlc_13qizfq._.js} +2 -2
- package/.next/server/chunks/ssr/{0dlc_@san-siva_blogkit_dist_esm_04y5d~m._.js → 0dlc_@san-siva_blogkit_dist_esm_04a~w8l._.js} +2 -2
- package/.next/server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_04a~w8l._.js.map +1 -0
- package/.next/server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_dynamicComponents_BlogDynamic_04k29no.js +3 -0
- package/.next/server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_dynamicComponents_BlogDynamic_04k29no.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__06q6rfi._.js → [root-of-the-server]__0f~080x._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__0t.geu5._.js → [root-of-the-server]__0j-1y2b._.js} +4 -4
- package/.next/server/chunks/ssr/[root-of-the-server]__0j-1y2b._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__000.qv2._.js → [root-of-the-server]__0m-l1vl._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__000.qv2._.js.map → [root-of-the-server]__0m-l1vl._.js.map} +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__06u9sw8._.js → [root-of-the-server]__0omhk67._.js} +2 -2
- package/.next/server/chunks/ssr/{blogkit-md-cli_037q557._.js → blogkit-md-cli_0naia71._.js} +3 -3
- package/.next/server/chunks/ssr/blogkit-md-cli_0naia71._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/02trc.wuz4rqp.css +1 -0
- package/.next/static/chunks/{0pxdodycw3c37.js → 0a9y4g46e~o8~.js} +1 -1
- package/.next/static/chunks/{0e~bk1lm5ke9x.js → 0mn-zdnv.gz__.js} +1 -1
- package/.next/static/chunks/0y.vc7g3anaza.js +1 -0
- package/.next/static/chunks/1611q54w8iczw.js +1 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/package.json +4 -3
- package/.next/server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_04y5d~m._.js.map +0 -1
- package/.next/server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_dynamicComponents_BlogDynamic_0.rdhnf.js +0 -3
- package/.next/server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_dynamicComponents_BlogDynamic_0.rdhnf.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0t.geu5._.js.map +0 -1
- package/.next/server/chunks/ssr/blogkit-md-cli_037q557._.js.map +0 -1
- package/.next/static/chunks/054dikcsqo4g~.js +0 -1
- package/.next/static/chunks/0c_~ty~qvcvuo.js +0 -1
- package/.next/static/chunks/0m9hpfcjj6u~9.css +0 -1
- package/.next/static/chunks/0xukhab5vwo26.js +0 -1
- /package/.next/server/chunks/ssr/{0dlc_0hjv5-5._.js.map → 0dlc_0-wu_wp._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_0wm2d_l._.js.map → 0dlc_0.2f1t2._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_068.c_a._.js.map → 0dlc_02thqsb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_05zbtlo._.js.map → 0dlc_03m86mz._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_0a2hf_v._.js.map → 0dlc_05svd7e._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_00dxfob._.js.map → 0dlc_0687ay-._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_034lzh-._.js.map → 0dlc_0ac_913._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_06zh4cf._.js.map → 0dlc_0dw7xx~._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_01mfakk._.js.map → 0dlc_0h0r~8s._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_11v.tdn._.js.map → 0dlc_0iqkaxv._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_061rz1d._.js.map → 0dlc_0kn6cly._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_0_a75co._.js.map → 0dlc_0kzc-yi._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_111xsg5._.js.map → 0dlc_0o-gpnc._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_0uuxuhx._.js.map → 0dlc_0xk7lzk._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_0mhhdqc._.js.map → 0dlc_0zyt353._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{0dlc_0sv~z9u._.js.map → 0dlc_13qizfq._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__06q6rfi._.js.map → [root-of-the-server]__0f~080x._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__06u9sw8._.js.map → [root-of-the-server]__0omhk67._.js.map} +0 -0
- /package/.next/static/{NXYPuKrOZxMlMFHu_1wwd → 43OQHcd1WIO8TJAGTwApq}/_buildManifest.js +0 -0
- /package/.next/static/{NXYPuKrOZxMlMFHu_1wwd → 43OQHcd1WIO8TJAGTwApq}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{NXYPuKrOZxMlMFHu_1wwd → 43OQHcd1WIO8TJAGTwApq}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/utils/index.ts","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/staticComponents/CalloutStatic.tsx","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/utils/lockScrollUpdates.ts","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/hooks/useCategoryTitles.ts","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/staticComponents/TocNodeStatic.tsx","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/hooks/useSectionObserver.ts","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/dynamicComponents/BlogDynamic.tsx"],"sourcesContent":["import { isValidElement } from 'react';\nimport type { ReactNode } from 'react';\n\nexport const extractTextFromReactNode = (node: ReactNode): string => {\n\tif (node === null || node === undefined || typeof node === 'boolean') return '';\n\tif (typeof node === 'string' || typeof node === 'number') return String(node);\n\tif (isValidElement(node)) return extractTextFromReactNode((node.props as { children?: ReactNode }).children);\n\tif (Array.isArray(node)) return node.map(extractTextFromReactNode).join('');\n\treturn '';\n};\n\nexport const generateIdForBlogTitle = (title: string) => title.toLowerCase().replace(/[^\\w\\d]/g, '-');\n\nexport const generateUrlForBlogTitle = (title: string) => encodeURIComponent(title.replace(/[^\\w]+/g, '-').toLowerCase());\n\nexport const generateSectionHref = (id: string) => `?section=${id}`;\n","import type { ReactNode } from 'react';\n\nimport styles from '../styles/Callout.module.scss';\n\ninterface CalloutProperties {\n\tchildren?: ReactNode;\n\ttype: 'info' | 'warning' | 'error' | 'success';\n\thasMarginUp?: boolean;\n\thasMarginDown?: boolean;\n}\n\nconst Callout = ({ children, type = 'info',\n\thasMarginUp = false,\n\thasMarginDown = false\n}: CalloutProperties) => {\n\tconst className = `${styles.callout} ${styles[`callout--${type}`]} ${\n\t\thasMarginUp ? styles['margin-top--1'] : ''\n\t} ${hasMarginDown ? styles['margin-bottom--2'] : ''}`;\n\treturn (\n\t\t<div className={className}>\n\t\t\t<div className={styles.callout__icon}/>\n\t\t\t<div className={styles.callout__wrapper}>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Callout;\n","import type { MutableRefObject } from 'react';\n\nconst lockScrollUpdates = (\n\tid: string,\n\tisClickScrolling: MutableRefObject<boolean>,\n\tscrollEndHandlerRef: MutableRefObject<(() => void) | null>,\n\tsetVisibleTitle: (id: string) => void\n) => {\n\tif (scrollEndHandlerRef.current) {\n\t\tdocument.body.removeEventListener('scrollend', scrollEndHandlerRef.current);\n\t}\n\n\tisClickScrolling.current = true;\n\n\tscrollEndHandlerRef.current = () => {\n\t\tisClickScrolling.current = false;\n\t\tscrollEndHandlerRef.current = null;\n\t\tsetVisibleTitle(id);\n\t\tconst url = new URL(window.location.href);\n\t\turl.searchParams.set('section', id);\n\t\twindow.history.replaceState({}, '', url.toString());\n\t};\n\n\tdocument.body.addEventListener('scrollend', scrollEndHandlerRef.current, {\n\t\tonce: true,\n\t});\n};\n\nexport default lockScrollUpdates;\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport type { ForwardedReference } from '../dynamicComponents/BlogDynamic';\n\nexport interface SectionReferenceValue {\n\tel: HTMLElement;\n\ttitle: string;\n\tdepth: number;\n}\n\nexport interface CategoryTitleValue extends SectionReferenceValue {\n\tlastUpdatedAt: number;\n}\n\nexport type CategoryTitle = Map<string, CategoryTitleValue>;\n\ninterface SectionReferenceEntry extends SectionReferenceValue {\n\tbaseId: string;\n}\n\ntype SectionReference = Map<HTMLElement, SectionReferenceEntry>;\n\ninterface Options {\n\tvisibleTitle: string | null;\n\tsetVisibleTitle: Dispatch<SetStateAction<string | null>>;\n\tsetShowTOC: Dispatch<SetStateAction<boolean>>;\n}\n\nexport function useCategoryTitles({\n\tvisibleTitle,\n\tsetVisibleTitle,\n\tsetShowTOC,\n}: Options) {\n\tconst sectionReferences = useRef<SectionReference>(new Map());\n\tconst [categoryTitles, setCategoryTitles] = useState<CategoryTitle>(\n\t\tnew Map()\n\t);\n\tconst updateTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst sortByDomPosition = useCallback(\n\t\t(\n\t\t\t[, a]: [HTMLElement, SectionReferenceEntry],\n\t\t\t[, b]: [HTMLElement, SectionReferenceEntry]\n\t\t) => {\n\t\t\tconst position = a.el.compareDocumentPosition(b.el);\n\t\t\tif (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t\t\t\treturn -1;\n\t\t\t} else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\t\t[]\n\t);\n\n\tconst updateCategoryTitles = useCallback(() => {\n\t\tconst now = Date.now();\n\t\tconst newCategoryTitles = new Map<string, CategoryTitleValue>();\n\n\t\tconst sectionsArray = Array.from(sectionReferences.current.entries());\n\t\tsectionsArray.sort(sortByDomPosition);\n\n\t\tlet firstSectionId: string | null = null;\n\t\tconst baseIdCounts = new Map<string, number>();\n\t\tfor (const [, { title, el, depth, baseId }] of sectionsArray) {\n\t\t\tconst occurrence = (baseIdCounts.get(baseId) ?? 0) + 1;\n\t\t\tbaseIdCounts.set(baseId, occurrence);\n\t\t\tconst id = occurrence === 1 ? baseId : `${baseId}-${occurrence}`;\n\n\t\t\tif (!firstSectionId) {\n\t\t\t\tfirstSectionId = id;\n\t\t\t}\n\t\t\tnewCategoryTitles.set(id, {\n\t\t\t\tel,\n\t\t\t\ttitle,\n\t\t\t\tlastUpdatedAt: now,\n\t\t\t\tdepth,\n\t\t\t});\n\t\t}\n\n\t\tif (newCategoryTitles.size === 0) return;\n\n\t\tsetCategoryTitles(newCategoryTitles);\n\t\tsetShowTOC(true);\n\n\t\tif (visibleTitle) return;\n\t\tsetVisibleTitle(firstSectionId);\n\t}, [visibleTitle, sortByDomPosition, setShowTOC, setVisibleTitle]);\n\n\tconst debounceUpdateCategoryTitles = useCallback(() => {\n\t\tif (updateTimerRef.current) {\n\t\t\tclearTimeout(updateTimerRef.current);\n\t\t}\n\t\tupdateTimerRef.current = setTimeout(() => {\n\t\t\tupdateCategoryTitles();\n\t\t}, 200);\n\t}, [updateCategoryTitles]);\n\n\tconst handleCategoryTitle = (ref: HTMLDivElement) => {\n\t\tconst baseId = ref.dataset.id;\n\t\tconst title = ref.dataset.title;\n\t\tif (!baseId || !title) return;\n\n\t\tlet depth = 0;\n\t\tlet parent = ref.parentElement;\n\t\twhile (parent) {\n\t\t\tif (parent.hasAttribute('data-id')) depth++;\n\t\t\tparent = parent.parentElement;\n\t\t}\n\n\t\tsectionReferences.current.set(ref, { el: ref, title, depth, baseId });\n\t};\n\n\tconst processSection = (element: ForwardedReference) => {\n\t\tconst { parentRef, childRefs } = element;\n\t\tif (parentRef) handleCategoryTitle(parentRef);\n\t\tif (Array.isArray(childRefs)) {\n\t\t\tfor (const childRef of childRefs) {\n\t\t\t\tprocessSection(childRef);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleSectionReference = useCallback(\n\t\t(element: ForwardedReference) => {\n\t\t\tif (!element) return;\n\t\t\tprocessSection(element);\n\t\t\tdebounceUpdateCategoryTitles();\n\t\t},\n\t\t[debounceUpdateCategoryTitles]\n\t);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (updateTimerRef.current) {\n\t\t\t\tclearTimeout(updateTimerRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\treturn { categoryTitles, handleSectionReference };\n}\n","import type { MouseEvent } from 'react';\n\nimport styles from '../styles/TocNode.module.scss';\n\nexport interface TocNode {\n\tid: string;\n\ttitle: string;\n\tdepth: number;\n\tchildren: TocNode[];\n}\n\nexport const containsId = (node: TocNode, id: string | null): boolean =>\n\tid !== null && (node.id === id || node.children.some(child => containsId(child, id)));\n\ninterface TocNodeProperties {\n\tnode: TocNode;\n\tindex: number;\n\tvisibleTitle: string | null;\n\tonClick: (e: MouseEvent<HTMLParagraphElement>) => void;\n\texpandOverrides?: Record<string, boolean>;\n\tonToggle?: (id: string, isExpanded: boolean) => void;\n\tshowToggleColumn?: boolean;\n}\n\nconst TocNode = ({\n\tnode,\n\tindex,\n\tvisibleTitle,\n\tonClick,\n\texpandOverrides = {},\n\tonToggle,\n\tshowToggleColumn = false,\n}: TocNodeProperties) => {\n\tconst hasChildren = node.children.length > 0;\n\tconst isCollapsible = hasChildren && onToggle !== undefined;\n\tconst isExpanded = isCollapsible\n\t\t? (expandOverrides[node.id] ?? containsId(node, visibleTitle))\n\t\t: true;\n\tconst childrenShowToggleColumn =\n\t\tonToggle !== undefined && node.children.some(child => child.children.length > 0);\n\n\treturn (\n\t\t<div>\n\t\t\t<div className={styles['toc-node__row']}>\n\t\t\t\t{isCollapsible && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={`${styles['toc-node__toggle']} ${isExpanded ? styles['toc-node__toggle--expanded'] : ''}`}\n\t\t\t\t\t\taria-expanded={isExpanded}\n\t\t\t\t\t\taria-label={`${isExpanded ? 'Collapse' : 'Expand'} ${node.title}`}\n\t\t\t\t\t\tonClick={() => onToggle(node.id, isExpanded)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<polyline\n\t\t\t\t\t\t\t\tpoints=\"9 6 15 12 9 18\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t{showToggleColumn && !isCollapsible && (\n\t\t\t\t\t<span className={styles['toc-node__toggle-spacer']} aria-hidden=\"true\" />\n\t\t\t\t)}\n\t\t\t\t<p\n\t\t\t\t\tdata-idx={index}\n\t\t\t\t\tdata-id={node.id}\n\t\t\t\t\tclassName={[\n\t\t\t\t\t\tstyles['toc-node__title'],\n\t\t\t\t\t\tnode.id === visibleTitle ? styles['toc-node__title--active'] : '',\n\t\t\t\t\t].join(' ')}\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t>\n\t\t\t\t\t{node.title}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t{hasChildren && isExpanded && (\n\t\t\t\t<div className={styles['toc-node__children']}>\n\t\t\t\t\t{node.children.map((child, i) => (\n\t\t\t\t\t\t<TocNode\n\t\t\t\t\t\t\tkey={`${node.id}-${child.id}`}\n\t\t\t\t\t\t\tnode={child}\n\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\tvisibleTitle={visibleTitle}\n\t\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t\t\texpandOverrides={expandOverrides}\n\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\tshowToggleColumn={childrenShowToggleColumn}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default TocNode;\n","'use client';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport type { Dispatch, MouseEvent, SetStateAction } from 'react';\n\nimport lockScrollUpdates from '../utils/lockScrollUpdates';\nimport type { CategoryTitle } from './useCategoryTitles';\n\nconst getSectionFromUrl = () => {\n\tconst url = new URL(window.location.href);\n\treturn url.searchParams.get('section');\n};\n\nconst updateUrl = (id: string) => {\n\tconst url = new URL(window.location.href);\n\turl.searchParams.set('section', id);\n\twindow.history.replaceState({}, '', url.toString());\n};\n\nconst scrollIntoView = (element: HTMLElement) => {\n\tif (!element) return;\n\tconst top =\n\t\telement.getBoundingClientRect().top + document.body.scrollTop - 100;\n\tdocument.body.scrollTo({ top, behavior: 'smooth' });\n};\n\ninterface Options {\n\tcategoryTitles: CategoryTitle;\n\tsetVisibleTitle: Dispatch<SetStateAction<string | null>>;\n}\n\nexport function useSectionObserver({ categoryTitles, setVisibleTitle }: Options) {\n\tconst isClickScrolling = useRef(false);\n\tconst scrollEndHandlerRef = useRef<(() => void) | null>(null);\n\tconst intersectionObserversRef = useRef<Map<string, IntersectionObserver>>(\n\t\tnew Map()\n\t);\n\n\t// Set up IntersectionObservers whenever the set of sections changes\n\tuseEffect(() => {\n\t\tfor (const [id, { el }] of categoryTitles) {\n\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t([entry]) => {\n\t\t\t\t\tif (!entry.isIntersecting) return;\n\t\t\t\t\tif (isClickScrolling.current) return;\n\t\t\t\t\tif (document.body.scrollTop === 0) return;\n\t\t\t\t\tsetVisibleTitle(visibleId => {\n\t\t\t\t\t\tif (visibleId === id && !entry.isIntersecting) return null;\n\t\t\t\t\t\tif (entry.isIntersecting) return id;\n\t\t\t\t\t\treturn visibleId;\n\t\t\t\t\t});\n\t\t\t\t\tupdateUrl(id);\n\t\t\t\t},\n\t\t\t\t{ threshold: 0.1 }\n\t\t\t);\n\t\t\tintersectionObserversRef.current.set(id, observer);\n\t\t\tobserver.observe(el as HTMLElement);\n\t\t}\n\t}, [categoryTitles.size, setVisibleTitle]);\n\n\t// On initial load, scroll to section specified in URL\n\tuseEffect(() => {\n\t\tif (categoryTitles.size === 0) return;\n\t\tconst section = getSectionFromUrl();\n\t\tif (!section) return;\n\t\tconst entry = categoryTitles.get(section);\n\t\tif (!entry) return;\n\t\tscrollIntoView(entry.el);\n\t\tlockScrollUpdates(section, isClickScrolling, scrollEndHandlerRef, setVisibleTitle);\n\t}, [categoryTitles.size, setVisibleTitle]);\n\n\t// Cleanup observers on unmount\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (scrollEndHandlerRef.current) {\n\t\t\t\tdocument.body.removeEventListener('scrollend', scrollEndHandlerRef.current);\n\t\t\t}\n\t\t\tfor (const observer of intersectionObserversRef.current.values()) {\n\t\t\t\tobserver.disconnect();\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tconst handleClickCategoryTitle = useCallback(\n\t\t(event: MouseEvent<HTMLParagraphElement>) => {\n\t\t\tconst id = event.currentTarget.dataset.id;\n\t\t\tconst index = event.currentTarget.dataset.idx;\n\t\t\tif (!id || !index) return;\n\n\t\t\tconst { el } = categoryTitles.get(id) || {};\n\t\t\tif (!el) return;\n\n\t\t\tupdateUrl(id);\n\t\t\tscrollIntoView(el);\n\t\t\tlockScrollUpdates(id, isClickScrolling, scrollEndHandlerRef, setVisibleTitle);\n\t\t},\n\t\t[categoryTitles, setVisibleTitle]\n\t);\n\n\treturn { handleClickCategoryTitle };\n}\n","'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\tconst [expandOverrides, setExpandOverrides] = useState<Record<string, boolean>>({});\n\n\tconst toggleExpanded = (id: string, isExpanded: boolean) =>\n\t\tsetExpandOverrides(overrides => ({ ...overrides, [id]: !isExpanded }));\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\texpandOverrides={expandOverrides}\n\t\t\t\t\t\tonToggle={toggleExpanded}\n\t\t\t\t\t\tshowToggleColumn\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":["_jsxs","_jsx"],"mappings":"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","ignoreList":[1,2,3,4,5,6]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[52878,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(78877).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/blogkit-md-cli/node_modules/@san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/blogkit-md-cli/node_modules/@san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js <module evaluation>","default")},40975,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(78877).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/blogkit-md-cli/node_modules/@san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/blogkit-md-cli/node_modules/@san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js","default")},18987,a=>{"use strict";a.i(52878);var b=a.i(40975);a.n(b)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=0dlc_%40san-siva_blogkit_dist_esm_dynamicComponents_BlogDynamic_04k29no.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js/__nextjs-internal-proxy.mjs","../../../../../blogkit-md-cli/node_modules/%40san-siva/blogkit/src/dynamicComponents/BlogDynamic.tsx"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/blogkit-md-cli/node_modules/@san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/blogkit-md-cli/node_modules/@san-siva/blogkit/dist/esm/dynamicComponents/BlogDynamic.js\",\n \"default\",\n);\n","'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\tconst [expandOverrides, setExpandOverrides] = useState<Record<string, boolean>>({});\n\n\tconst toggleExpanded = (id: string, isExpanded: boolean) =>\n\t\tsetExpandOverrides(overrides => ({ ...overrides, [id]: !isExpanded }));\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\texpandOverrides={expandOverrides}\n\t\t\t\t\t\tonToggle={toggleExpanded}\n\t\t\t\t\t\tshowToggleColumn\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":["Error","_jsxs","_jsx","TocNodeStatic"],"mappings":"oEAEe,CAAA,EAAA,AADf,EAAA,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAIA,MAAM,yVAA2V,EACxX,wHACA,gEAHW,CAAA,EADf,AACe,EADf,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAIA,MAAM,qUAAuU,EACpW,oGACA","ignoreList":[0]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},89903,(a,b,c)=>{b.exports=a.r(18622)},66732,a=>{a.n(a.i(71268))},30657,a=>{a.n(a.i(41515))},61642,a=>{a.n(a.i(24447))},97893,a=>{a.n(a.i(99636))},48107,a=>{a.n(a.i(46242))},89914,a=>{a.n(a.i(96135))},10248,a=>{a.n(a.i(14872))},56332,a=>{a.n(a.i(76410))},56574,a=>{a.n(a.i(53798))},86670,a=>{a.n(a.i(35165))},66338,a=>{a.n(a.i(11782))},97794,a=>{a.n(a.i(31897))},22246,a=>{a.n(a.i(13432))},83114,a=>{a.n(a.i(31793))},58519,a=>{a.n(a.i(2454))},62758,a=>{a.n(a.i(33979))},26726,a=>{a.n(a.i(74876))},42275,a=>{a.n(a.i(11098))},82804,a=>{a.n(a.i(72074))},99129,a=>{a.n(a.i(12388))},19956,a=>{a.n(a.i(68689))},93412,a=>{a.n(a.i(80521))},75995,a=>{a.n(a.i(70827))},43282,a=>{a.n(a.i(43883))},35143,a=>{a.n(a.i(93210))},26616,a=>{a.n(a.i(79148))},43318,a=>{a.n(a.i(65980))},83119,a=>{a.n(a.i(97188))},56966,a=>{a.n(a.i(19090))},23510,a=>{a.n(a.i(29520))},86457,a=>{a.n(a.i(9096))},49242,a=>{a.n(a.i(5843))},95315,a=>{a.n(a.i(58790))}];
|
|
1
|
+
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},89903,(a,b,c)=>{b.exports=a.r(18622)},66732,a=>{a.n(a.i(71268))},30657,a=>{a.n(a.i(41515))},61642,a=>{a.n(a.i(24447))},97893,a=>{a.n(a.i(99636))},48107,a=>{a.n(a.i(46242))},89914,a=>{a.n(a.i(96135))},10248,a=>{a.n(a.i(14872))},56332,a=>{a.n(a.i(76410))},56574,a=>{a.n(a.i(53798))},86670,a=>{a.n(a.i(35165))},66338,a=>{a.n(a.i(11782))},97794,a=>{a.n(a.i(31897))},22246,a=>{a.n(a.i(13432))},83114,a=>{a.n(a.i(31793))},58519,a=>{a.n(a.i(2454))},62758,a=>{a.n(a.i(33979))},26726,a=>{a.n(a.i(74876))},42275,a=>{a.n(a.i(11098))},82804,a=>{a.n(a.i(72074))},99129,a=>{a.n(a.i(12388))},19956,a=>{a.n(a.i(68689))},93412,a=>{a.n(a.i(80521))},75995,a=>{a.n(a.i(70827))},43282,a=>{a.n(a.i(43883))},35143,a=>{a.n(a.i(93210))},26616,a=>{a.n(a.i(79148))},43318,a=>{a.n(a.i(65980))},83119,a=>{a.n(a.i(97188))},56966,a=>{a.n(a.i(19090))},23510,a=>{a.n(a.i(29520))},86457,a=>{a.n(a.i(9096))},49242,a=>{a.n(a.i(5843))},95315,a=>{a.n(a.i(58790))},33900,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0dlc_@san-siva_blogkit_dist_esm_dynamicComponents_BlogDynamic_04k29no.js"].map(b=>a.l(b))).then(()=>b(18987)))}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0f~080x._.js.map
|