@texonom/nreact 1.1.1 → 1.1.3
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/build/.tsbuildinfo +1 -1
- package/build/block.d.ts +20 -20
- package/build/chunk-N3C4YBY7.js +1378 -0
- package/build/components/asset-wrapper.d.ts +6 -6
- package/build/components/asset.d.ts +7 -7
- package/build/components/audio.d.ts +6 -6
- package/build/components/checkbox.d.ts +5 -5
- package/build/components/eoi.d.ts +7 -7
- package/build/components/file.d.ts +6 -6
- package/build/components/google-drive.d.ts +6 -6
- package/build/components/graceful-image.d.ts +3 -3
- package/build/components/header.d.ts +15 -15
- package/build/components/lazy-image.d.ts +13 -13
- package/build/components/lite-youtube-embed.d.ts +13 -13
- package/build/components/page-aside.d.ts +11 -11
- package/build/components/page-icon.d.ts +16 -16
- package/build/components/page-title.d.ts +12 -12
- package/build/components/search-dialog.d.ts +25 -25
- package/build/components/sync-pointer-block.d.ts +6 -6
- package/build/components/text.d.ts +17 -17
- package/build/context.d.ts +62 -61
- package/build/context.d.ts.map +1 -1
- package/build/dev/chunk-XOMF4TSV.js +1379 -0
- package/build/dev/chunk-XOMF4TSV.js.map +1 -0
- package/build/dev/index.js +697 -3
- package/build/dev/index.js.map +1 -1
- package/build/dev/third-party/code.js +1 -1
- package/build/dev/third-party/collection.js +1 -1
- package/build/dev/third-party/collection.js.map +1 -1
- package/build/dev/third-party/equation.js +1 -1
- package/build/icons/check.d.ts +3 -3
- package/build/icons/chevron-down-icon.d.ts +2 -2
- package/build/icons/clear-icon.d.ts +2 -2
- package/build/icons/collection-view-board.d.ts +3 -3
- package/build/icons/collection-view-calendar.d.ts +3 -3
- package/build/icons/collection-view-gallery.d.ts +3 -3
- package/build/icons/collection-view-icon.d.ts +8 -8
- package/build/icons/collection-view-list.d.ts +3 -3
- package/build/icons/collection-view-table.d.ts +3 -3
- package/build/icons/copy.d.ts +3 -3
- package/build/icons/default-page-icon.d.ts +2 -2
- package/build/icons/empty-icon.d.ts +2 -2
- package/build/icons/file-icon.d.ts +2 -2
- package/build/icons/link-icon.d.ts +2 -2
- package/build/icons/loading-icon.d.ts +2 -2
- package/build/icons/property-icon.d.ts +8 -8
- package/build/icons/search-icon.d.ts +2 -2
- package/build/icons/type-checkbox.d.ts +3 -3
- package/build/icons/type-date.d.ts +3 -3
- package/build/icons/type-email.d.ts +3 -3
- package/build/icons/type-file.d.ts +3 -3
- package/build/icons/type-formula.d.ts +3 -3
- package/build/icons/type-github.d.ts +3 -3
- package/build/icons/type-multi-select.d.ts +3 -3
- package/build/icons/type-number.d.ts +3 -3
- package/build/icons/type-person-2.d.ts +3 -3
- package/build/icons/type-person.d.ts +3 -3
- package/build/icons/type-phone-number.d.ts +3 -3
- package/build/icons/type-relation.d.ts +3 -3
- package/build/icons/type-select.d.ts +3 -3
- package/build/icons/type-text.d.ts +3 -3
- package/build/icons/type-timestamp.d.ts +3 -3
- package/build/icons/type-title.d.ts +3 -3
- package/build/icons/type-url.d.ts +3 -3
- package/build/index.d.ts +7 -7
- package/build/index.js +697 -3
- package/build/map-image-url.d.ts +2 -2
- package/build/map-page-url.d.ts +1 -1
- package/build/next.d.ts +3 -3
- package/build/renderer.d.ts +49 -49
- package/build/third-party/code.d.ts +16 -16
- package/build/third-party/code.js +1 -1
- package/build/third-party/collection-card.d.ts +3 -3
- package/build/third-party/collection-column-title.d.ts +5 -5
- package/build/third-party/collection-group.d.ts +3 -3
- package/build/third-party/collection-row.d.ts +7 -7
- package/build/third-party/collection-utils.d.ts +1 -1
- package/build/third-party/collection-view-board.d.ts +3 -3
- package/build/third-party/collection-view-gallery.d.ts +3 -3
- package/build/third-party/collection-view-list.d.ts +3 -3
- package/build/third-party/collection-view-table.d.ts +3 -3
- package/build/third-party/collection-view.d.ts +4 -4
- package/build/third-party/collection.d.ts +10 -10
- package/build/third-party/collection.js +1 -1
- package/build/third-party/equation.d.ts +8 -8
- package/build/third-party/equation.js +1 -1
- package/build/third-party/eval-formula.d.ts +20 -20
- package/build/third-party/modal.d.ts +2 -2
- package/build/third-party/pdf.d.ts +4 -4
- package/build/third-party/property.d.ts +21 -21
- package/build/types.d.ts +71 -71
- package/build/utils.d.ts +9 -9
- package/package.json +9 -9
- package/readme.md +3 -3
- package/build/chunk-RGP7M4NM.js +0 -2064
- package/build/dev/chunk-HLFRY3QP.js +0 -2065
- package/build/dev/chunk-HLFRY3QP.js.map +0 -1
package/build/dev/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/renderer.tsx","../../src/block.tsx","../../src/components/audio.tsx","../../src/components/file.tsx","../../src/icons/file-icon.tsx","../../src/components/google-drive.tsx","../../src/components/page-aside.tsx","../../src/components/sync-pointer-block.tsx","../../src/icons/link-icon.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport mediumZoom from '@fisch0920/medium-zoom'\nimport { ExtendedRecordMap } from '@texonom/ntypes'\n\nimport { Block } from './block'\nimport { NotionContextProvider, useNotionContext } from './context'\nimport { MapImageUrlFn, MapPageUrlFn, NotionComponents, SearchNotionFn } from './types'\n\nexport const NotionRenderer: React.FC<{\n recordMap: ExtendedRecordMap\n components?: Partial<NotionComponents>\n\n mapPageUrl?: MapPageUrlFn\n mapImageUrl?: MapImageUrlFn\n searchNotion?: SearchNotionFn\n isShowingSearch?: boolean\n onHideSearch?: () => void\n\n rootPageId?: string\n rootDomain?: string\n\n // set fullPage to false to render page content only\n // this will remove the header, cover image, and footer\n fullPage?: boolean\n\n darkMode?: boolean\n previewImages?: boolean\n forceCustomImages?: boolean\n showCollectionViewDropdown?: boolean\n linkTableTitleProperties?: boolean\n isLinkCollectionToUrlProperty?: boolean\n isImageZoomable?: boolean\n\n showTableOfContents?: boolean\n minTableOfContentsItems?: number\n\n defaultPageIcon?: string\n defaultPageCover?: string\n defaultPageCoverPosition?: number\n\n className?: string\n bodyClassName?: string\n\n header?: React.ReactNode\n footer?: React.ReactNode\n pageHeader?: React.ReactNode\n pageFooter?: React.ReactNode\n pageTitle?: React.ReactNode\n pageAside?: React.ReactNode\n pageCover?: React.ReactNode\n\n blockId?: string\n hideBlockId?: boolean\n disableHeader?: boolean\n}> = ({\n components,\n recordMap,\n mapPageUrl,\n mapImageUrl,\n searchNotion,\n isShowingSearch,\n onHideSearch,\n fullPage,\n rootPageId,\n rootDomain,\n darkMode,\n previewImages,\n forceCustomImages,\n showCollectionViewDropdown,\n linkTableTitleProperties,\n isLinkCollectionToUrlProperty,\n isImageZoomable = true,\n showTableOfContents,\n minTableOfContentsItems,\n defaultPageIcon,\n defaultPageCover,\n defaultPageCoverPosition,\n ...rest\n}) => {\n const zoom = React.useMemo(\n () =>\n typeof window !== 'undefined' &&\n mediumZoom({\n background: 'rgba(0, 0, 0, 0.8)',\n minZoomScale: 2.0,\n margin: getMediumZoomMargin()\n }),\n []\n )\n\n return (\n <NotionContextProvider\n components={components}\n recordMap={recordMap}\n mapPageUrl={mapPageUrl}\n mapImageUrl={mapImageUrl}\n searchNotion={searchNotion}\n isShowingSearch={isShowingSearch}\n onHideSearch={onHideSearch}\n fullPage={fullPage}\n rootPageId={rootPageId}\n rootDomain={rootDomain}\n darkMode={darkMode}\n previewImages={previewImages}\n forceCustomImages={forceCustomImages}\n showCollectionViewDropdown={showCollectionViewDropdown}\n linkTableTitleProperties={linkTableTitleProperties}\n isLinkCollectionToUrlProperty={isLinkCollectionToUrlProperty}\n showTableOfContents={showTableOfContents}\n minTableOfContentsItems={minTableOfContentsItems}\n defaultPageIcon={defaultPageIcon}\n defaultPageCover={defaultPageCover}\n defaultPageCoverPosition={defaultPageCoverPosition}\n zoom={isImageZoomable ? zoom : null}>\n <NotionBlockRenderer {...rest} />\n </NotionContextProvider>\n )\n}\n\nexport const NotionBlockRenderer: React.FC<{\n className?: string\n bodyClassName?: string\n header?: React.ReactNode\n footer?: React.ReactNode\n disableHeader?: boolean\n\n blockId?: string\n hideBlockId?: boolean\n level?: number\n}> = ({ level = 0, blockId, ...props }) => {\n const { recordMap } = useNotionContext()\n const id = blockId || Object.keys(recordMap.block)[0]\n const block = recordMap.block[id]?.value\n\n if (!block) {\n if (process.env.NODE_ENV !== 'production') console.warn('missing block', blockId)\n\n return null\n }\n\n return (\n <Block key={id} level={level} block={block} {...props}>\n {block?.content?.map(contentBlockId => (\n <NotionBlockRenderer key={contentBlockId} blockId={contentBlockId} level={level + 1} {...props} />\n ))}\n </Block>\n )\n}\n\nfunction getMediumZoomMargin() {\n const width = window.innerWidth\n\n if (width < 500) return 8\n else if (width < 800) return 20\n else if (width < 1280) return 30\n else if (width < 1600) return 40\n else if (width < 1920) return 48\n else return 72\n}\n","import * as React from 'react'\n\nimport * as types from '@texonom/ntypes'\nimport {\n getBlockCollectionId,\n getBlockIcon,\n getBlockParentPage,\n getPageTableOfContents,\n getTextContent,\n uuidToId\n} from '@texonom/nutils'\n\nimport { AssetWrapper } from './components/asset-wrapper'\nimport { Audio } from './components/audio'\nimport { EOI } from './components/eoi'\nimport { File } from './components/file'\nimport { GoogleDrive } from './components/google-drive'\nimport { LazyImage } from './components/lazy-image'\nimport { PageAside } from './components/page-aside'\nimport { PageIcon } from './components/page-icon'\nimport { PageTitle } from './components/page-title'\nimport { SyncPointerBlock } from './components/sync-pointer-block'\nimport { Text } from './components/text'\nimport { useNotionContext } from './context'\nimport { LinkIcon } from './icons/link-icon'\nimport { cs, getListNumber, isUrl } from './utils'\n\ninterface BlockProps {\n block: types.Block\n level: number\n\n className?: string\n bodyClassName?: string\n\n header?: React.ReactNode\n footer?: React.ReactNode\n pageHeader?: React.ReactNode\n pageFooter?: React.ReactNode\n pageTitle?: React.ReactNode\n pageAside?: React.ReactNode\n pageCover?: React.ReactNode\n\n hideBlockId?: boolean\n disableHeader?: boolean\n\n children?: React.ReactNode\n}\n\n// TODO: use react state instead of a global for this\nconst tocIndentLevelCache: {\n [blockId: string]: number\n} = {}\n\nconst pageCoverStyleCache: Record<string, object> = {}\n\nexport const Block: React.FC<BlockProps> = props => {\n const ctx = useNotionContext()\n const {\n components,\n fullPage,\n darkMode,\n recordMap,\n mapPageUrl,\n mapImageUrl,\n showTableOfContents,\n minTableOfContentsItems,\n defaultPageIcon,\n defaultPageCover,\n defaultPageCoverPosition\n } = ctx\n\n const [activeSection, setActiveSection] = React.useState(null)\n\n const {\n block,\n children,\n level,\n className,\n bodyClassName,\n header,\n footer,\n pageHeader,\n pageFooter,\n pageTitle,\n pageAside,\n pageCover,\n hideBlockId,\n disableHeader\n } = props\n\n if (!block) return null\n\n // ugly hack to make viewing raw collection views work properly\n // e.g., 6d886ca87ab94c21a16e3b82b43a57fb\n if (level === 0 && block.type === 'collection_view') {\n ;(block as any).type = 'collection_view_page'\n }\n\n const blockId = hideBlockId ? 'notion-block' : `notion-block-${uuidToId(block.id)}`\n\n switch (block.type) {\n case 'collection_view_page':\n // fallthrough\n case 'page':\n if (level === 0) {\n const {\n page_icon = defaultPageIcon,\n page_cover = defaultPageCover,\n page_cover_position = defaultPageCoverPosition,\n page_full_width,\n page_small_text\n } = block.format || {}\n\n if (fullPage) {\n const properties =\n block.type === 'page'\n ? block.properties\n : {\n title: recordMap.collection[getBlockCollectionId(block, recordMap)]?.value?.name\n }\n\n const coverPosition = (1 - (page_cover_position || 0.5)) * 100\n const pageCoverObjectPosition = `center ${coverPosition}%`\n let pageCoverStyle = pageCoverStyleCache[pageCoverObjectPosition]\n if (!pageCoverStyle)\n pageCoverStyle = pageCoverStyleCache[pageCoverObjectPosition] = {\n objectPosition: pageCoverObjectPosition\n }\n\n const pageIcon = getBlockIcon(block, recordMap) ?? defaultPageIcon\n const isPageIconUrl = pageIcon && isUrl(pageIcon)\n\n const toc = getPageTableOfContents(block as types.PageBlock, recordMap)\n\n const hasToc = showTableOfContents && toc.length >= minTableOfContentsItems\n const hasAside = (hasToc || pageAside) && !page_full_width\n const hasPageCover = pageCover || page_cover\n\n return (\n <div className={cs('notion', 'notion-app', darkMode ? 'dark' : 'light', blockId, className)}>\n <div className='notion-viewport' />\n\n <div className='notion-frame'>\n {!disableHeader && <components.Header block={block} />}\n {header}\n\n <div className='notion-page-scroller'>\n {hasPageCover &&\n (pageCover ? (\n pageCover\n ) : (\n <div className='notion-page-cover-wrapper'>\n <LazyImage\n src={mapImageUrl(page_cover, block)}\n alt={getTextContent(properties?.title)}\n priority={true}\n className='notion-page-cover'\n style={pageCoverStyle}\n />\n </div>\n ))}\n\n <main\n className={cs(\n 'notion-page',\n hasPageCover ? 'notion-page-has-cover' : 'notion-page-no-cover',\n page_icon ? 'notion-page-has-icon' : 'notion-page-no-icon',\n isPageIconUrl ? 'notion-page-has-image-icon' : 'notion-page-has-text-icon',\n 'notion-full-page',\n page_full_width && 'notion-full-width',\n page_small_text && 'notion-small-text',\n bodyClassName\n )}>\n {page_icon && <PageIcon block={block} defaultIcon={defaultPageIcon} inline={false} />}\n\n {pageHeader}\n\n <h1 className='notion-title'>{pageTitle ?? <Text value={properties?.title} block={block} />}</h1>\n\n {(block.type === 'collection_view_page' ||\n (block.type === 'page' && block.parent_table === 'collection')) && (\n <components.Collection block={block} ctx={ctx} />\n )}\n\n {block.type !== 'collection_view_page' && (\n <div\n className={cs(\n 'notion-page-content',\n hasAside && 'notion-page-content-has-aside',\n hasToc && 'notion-page-content-has-toc'\n )}>\n <article className='notion-page-content-inner'>{children}</article>\n\n {hasAside && (\n <PageAside\n toc={toc}\n activeSection={activeSection}\n setActiveSection={setActiveSection}\n hasToc={hasToc}\n hasAside={hasAside}\n pageAside={pageAside}\n />\n )}\n </div>\n )}\n\n {pageFooter}\n </main>\n\n {footer}\n </div>\n </div>\n </div>\n )\n } else {\n return (\n <main\n className={cs(\n 'notion',\n darkMode ? 'dark' : 'light',\n 'notion-page',\n page_full_width && 'notion-full-width',\n page_small_text && 'notion-small-text',\n blockId,\n className,\n bodyClassName\n )}>\n <div className='notion-viewport' />\n\n {pageHeader}\n\n {(block.type === 'collection_view_page' || (block.type === 'page' && block.parent_table === 'collection')) && (\n <components.Collection block={block} ctx={ctx} />\n )}\n\n {block.type !== 'collection_view_page' && children}\n\n {pageFooter}\n </main>\n )\n }\n } else {\n const blockColor = block.format?.block_color\n\n return (\n <components.PageLink\n className={cs('notion-page-link', blockColor && `notion-${blockColor}`, blockId)}\n href={mapPageUrl(block.id)}>\n <PageTitle block={block} />\n </components.PageLink>\n )\n }\n\n case 'header':\n // fallthrough\n case 'sub_header':\n // fallthrough\n case 'sub_sub_header': {\n if (!block.properties) return null\n\n const blockColor = block.format?.block_color\n const id = uuidToId(block.id)\n const title = getTextContent(block.properties.title) || `Notion Header ${id}`\n\n // we use a cache here because constructing the ToC is non-trivial\n let indentLevel = tocIndentLevelCache[block.id]\n let indentLevelClass: string\n\n if (indentLevel === undefined) {\n const page = getBlockParentPage(block, recordMap)\n\n if (page) {\n const toc = getPageTableOfContents(page, recordMap)\n const tocItem = toc.find(tocItem => tocItem.id === block.id)\n\n if (tocItem) {\n indentLevel = tocItem.indentLevel\n tocIndentLevelCache[block.id] = indentLevel\n }\n }\n }\n\n if (indentLevel !== undefined) indentLevelClass = `notion-h-indent-${indentLevel}`\n\n const isH1 = block.type === 'header'\n const isH2 = block.type === 'sub_header'\n const isH3 = block.type === 'sub_sub_header'\n\n const classNameStr = cs(\n isH1 && 'notion-h notion-h1',\n isH2 && 'notion-h notion-h2',\n isH3 && 'notion-h notion-h3',\n blockColor && `notion-${blockColor}`,\n indentLevelClass,\n blockId\n )\n\n const innerHeader = (\n <span>\n <div id={id} className='notion-header-anchor' />\n {!block.format?.toggleable && (\n <a className='notion-hash-link' href={`#${id}`} title={title}>\n <LinkIcon />\n </a>\n )}\n\n <span className='notion-h-title'>\n <Text value={block.properties.title} block={block} />\n </span>\n </span>\n )\n let headerBlock = null\n\n //page title takes the h1 so all header blocks are greater\n if (isH1)\n headerBlock = (\n <h2 className={classNameStr} data-id={id}>\n {innerHeader}\n </h2>\n )\n else if (isH2)\n headerBlock = (\n <h3 className={classNameStr} data-id={id}>\n {innerHeader}\n </h3>\n )\n else\n headerBlock = (\n <h4 className={classNameStr} data-id={id}>\n {innerHeader}\n </h4>\n )\n\n if (block.format?.toggleable)\n return (\n <details className={cs('notion-toggle', blockId)}>\n <summary>{headerBlock}</summary>\n <div>{children}</div>\n </details>\n )\n else return headerBlock\n }\n\n case 'divider':\n return <hr className={cs('notion-hr', blockId)} />\n\n case 'text': {\n if (!block.properties && !block.content?.length) return <div className={cs('notion-blank', blockId)}> </div>\n\n const blockColor = block.format?.block_color\n\n return (\n <div className={cs('notion-text', blockColor && `notion-${blockColor}`, blockId)}>\n {block.properties?.title && <Text value={block.properties.title} block={block} />}\n\n {children && <div className='notion-text-children'>{children}</div>}\n </div>\n )\n }\n\n case 'bulleted_list':\n // fallthrough\n case 'numbered_list': {\n const wrapList = (content: React.ReactNode, start?: number) =>\n block.type === 'bulleted_list' ? (\n <ul className={cs('notion-list', 'notion-list-disc', blockId)}>{content}</ul>\n ) : (\n <ol start={start} className={cs('notion-list', 'notion-list-numbered', blockId)}>\n {content}\n </ol>\n )\n\n let output: JSX.Element | null = null\n\n if (block.content)\n output = (\n <>\n {block.properties && (\n <li>\n <Text value={block.properties.title} block={block} />\n </li>\n )}\n {wrapList(children)}\n </>\n )\n else\n output = block.properties ? (\n <li>\n <Text value={block.properties.title} block={block} />\n </li>\n ) : null\n\n const isTopLevel = block.type !== recordMap.block[block.parent_id]?.value?.type\n const start = getListNumber(block.id, recordMap.block)\n\n return isTopLevel ? wrapList(output, start) : output\n }\n\n case 'embed':\n return <components.Embed blockId={blockId} block={block} />\n case 'tweet':\n // fallthrough\n case 'maps':\n // fallthrough\n case 'pdf':\n // fallthrough\n case 'figma':\n // fallthrough\n case 'typeform':\n // fallthrough\n case 'codepen':\n // fallthrough\n case 'excalidraw':\n // fallthrough\n case 'image':\n // fallthrough\n case 'gist':\n // fallthrough\n case 'video':\n return <AssetWrapper blockId={blockId} block={block} />\n\n case 'drive': {\n const properties = block.format?.drive_properties\n if (!properties)\n if (block.format?.display_source)\n //check if this drive actually needs to be embeded ex. google sheets.\n return <AssetWrapper blockId={blockId} block={block} />\n\n return <GoogleDrive block={block as types.GoogleDriveBlock} className={blockId} />\n }\n\n case 'audio':\n return <Audio block={block as types.AudioBlock} className={blockId} />\n\n case 'file':\n return <File block={block as types.FileBlock} className={blockId} />\n\n case 'equation':\n return <components.Equation block={block as types.EquationBlock} inline={false} className={blockId} />\n\n case 'code':\n return <components.Code block={block as types.CodeBlock} />\n\n case 'column_list':\n return <div className={cs('notion-row', blockId)}>{children}</div>\n\n case 'column': {\n // note: notion uses 46px\n const spacerWidth = `min(32px, 4vw)`\n const ratio = block.format?.column_ratio || 0.5\n const parent = recordMap.block[block.parent_id]?.value\n const columns = parent?.content?.length || Math.max(2, Math.ceil(1.0 / ratio))\n\n const width = `calc((100% - (${columns - 1} * ${spacerWidth})) * ${ratio})`\n const style = { width }\n\n return (\n <>\n <div className={cs('notion-column', blockId)} style={style}>\n {children}\n </div>\n\n <div className='notion-spacer' />\n </>\n )\n }\n\n case 'quote': {\n if (!block.properties) return null\n\n const blockColor = block.format?.block_color\n\n return (\n <blockquote className={cs('notion-quote', blockColor && `notion-${blockColor}`, blockId)}>\n <div>\n <Text value={block.properties.title} block={block} />\n </div>\n {children}\n </blockquote>\n )\n }\n\n case 'collection_view':\n return <components.Collection block={block} className={blockId} ctx={ctx} />\n\n case 'callout':\n if (components.Callout) return <components.Callout block={block} className={blockId} />\n else\n return (\n <div\n className={cs('notion-callout', block.format?.block_color && `notion-${block.format?.block_color}_co`, blockId)}>\n <PageIcon block={block} />\n\n <div className='notion-callout-text'>\n <Text value={block.properties?.title} block={block} />\n {children}\n </div>\n </div>\n )\n\n case 'bookmark': {\n if (!block.properties) return null\n\n const link = block.properties.link\n if (!link || !link[0]?.[0]) return null\n\n let title = getTextContent(block.properties.title)\n if (!title) title = getTextContent(link)\n\n if (title)\n if (title.startsWith('http'))\n try {\n const url = new URL(title)\n title = url.hostname\n } catch (err) {\n // ignore invalid links\n }\n\n return (\n <div className='notion-row'>\n <components.Link\n target='_blank'\n rel='noopener noreferrer'\n className={cs('notion-bookmark', block.format?.block_color && `notion-${block.format.block_color}`, blockId)}\n href={link[0][0]}>\n <div>\n {title && (\n <div className='notion-bookmark-title'>\n <Text value={[[title]]} block={block} />\n </div>\n )}\n\n {block.properties?.description && (\n <div className='notion-bookmark-description'>\n <Text value={block.properties?.description} block={block} />\n </div>\n )}\n\n <div className='notion-bookmark-link'>\n {block.format?.bookmark_icon && (\n <div className='notion-bookmark-link-icon'>\n <LazyImage src={mapImageUrl(block.format?.bookmark_icon, block)} alt={title} />\n </div>\n )}\n\n <div className='notion-bookmark-link-text'>\n <Text value={link} block={block} />\n </div>\n </div>\n </div>\n\n {block.format?.bookmark_cover && (\n <div className='notion-bookmark-image'>\n <LazyImage\n src={mapImageUrl(block.format?.bookmark_cover, block)}\n alt={getTextContent(block.properties?.title)}\n style={{\n objectFit: 'cover'\n }}\n />\n </div>\n )}\n </components.Link>\n </div>\n )\n }\n\n case 'toggle':\n return (\n <details className={cs('notion-toggle', blockId)}>\n <summary>\n <Text value={block.properties?.title} block={block} />\n </summary>\n\n <div>{children}</div>\n </details>\n )\n\n case 'table_of_contents': {\n const page = getBlockParentPage(block, recordMap)\n if (!page) return null\n\n const toc = getPageTableOfContents(page, recordMap)\n const blockColor = block.format?.block_color\n\n return (\n <div className={cs('notion-table-of-contents', blockColor && `notion-${blockColor}`, blockId)}>\n {toc.map(tocItem => (\n <a key={tocItem.id} href={`#${uuidToId(tocItem.id)}`} className='notion-table-of-contents-item'>\n <span\n className='notion-table-of-contents-item-body'\n style={{\n display: 'inline-block',\n marginLeft: tocItem.indentLevel * 24\n }}>\n {tocItem.text}\n </span>\n </a>\n ))}\n </div>\n )\n }\n\n case 'to_do': {\n const isChecked = block.properties?.checked?.[0]?.[0] === 'Yes'\n\n return (\n <div className={cs('notion-to-do', blockId)}>\n <div className='notion-to-do-item'>\n <components.Checkbox blockId={blockId} isChecked={isChecked} />\n\n <div className={cs('notion-to-do-body', isChecked && `notion-to-do-checked`)}>\n <Text value={block.properties?.title} block={block} />\n </div>\n </div>\n\n <div className='notion-to-do-children'>{children}</div>\n </div>\n )\n }\n\n case 'transclusion_container':\n return <div className={cs('notion-sync-block', blockId)}>{children}</div>\n\n case 'transclusion_reference':\n return <SyncPointerBlock block={block} level={level + 1} {...props} />\n\n case 'alias': {\n const blockPointerId = block?.format?.alias_pointer?.id\n const linkedBlock = recordMap.block[blockPointerId]?.value\n if (!linkedBlock) {\n console.info('\"alias\" missing block', blockPointerId)\n return null\n }\n\n return (\n <components.PageLink className={cs('notion-page-link', blockPointerId)} href={mapPageUrl(blockPointerId)}>\n <PageTitle block={linkedBlock} />\n </components.PageLink>\n )\n }\n\n case 'table':\n return (\n <table className={cs('notion-simple-table', blockId)}>\n <tbody>{children}</tbody>\n </table>\n )\n\n case 'table_row': {\n const tableBlock = recordMap.block[block.parent_id]?.value as types.TableBlock\n const order = tableBlock.format?.table_block_column_order\n const formatMap = tableBlock.format?.table_block_column_format\n const backgroundColor = block.format?.block_color\n\n if (!tableBlock || !order) return null\n\n return (\n <tr className={cs('notion-simple-table-row', backgroundColor && `notion-${backgroundColor}`, blockId)}>\n {order.map(column => {\n const color = formatMap?.[column]?.color\n\n return (\n <td\n key={column}\n className={color ? `notion-${color}` : ''}\n style={{\n width: formatMap?.[column]?.width || 120\n }}>\n <div className='notion-simple-table-cell'>\n <Text value={block.properties?.[column] || [['ㅤ']]} block={block} />\n </div>\n </td>\n )\n })}\n </tr>\n )\n }\n\n case 'external_object_instance':\n return <EOI block={block} className={blockId} />\n\n default:\n if (process.env.NODE_ENV !== 'production')\n console.info('Unsupported type ' + (block as any).type, JSON.stringify(block, null, 2))\n\n return <div />\n }\n\n return null\n}\n","import * as React from 'react'\n\nimport { AudioBlock } from '@texonom/ntypes'\n\nimport { useNotionContext } from '../context'\nimport { cs } from '../utils'\n\nexport const Audio: React.FC<{\n block: AudioBlock\n className?: string\n}> = ({ block, className }) => {\n const { recordMap } = useNotionContext()\n const source = recordMap.signed_urls[block.id] || block.properties?.source?.[0]?.[0]\n\n return (\n <div className={cs('notion-audio', className)}>\n <audio controls preload='none' src={source} />\n </div>\n )\n}\n","import * as React from 'react'\n\nimport { FileBlock } from '@texonom/ntypes'\n\nimport { useNotionContext } from '../context'\nimport { FileIcon } from '../icons/file-icon'\nimport { cs } from '../utils'\nimport { Text } from './text'\n\nexport const File: React.FC<{\n block: FileBlock\n className?: string\n}> = ({ block, className }) => {\n const { components, recordMap } = useNotionContext()\n const source = recordMap.signed_urls[block.id] || block.properties?.source?.[0]?.[0]\n\n return (\n <div className={cs('notion-file', className)}>\n <components.Link className='notion-file-link' href={source} target='_blank' rel='noopener noreferrer'>\n <FileIcon className='notion-file-icon' />\n\n <div className='notion-file-info'>\n <div className='notion-file-title'>\n <Text value={block.properties?.title || [['File']]} block={block} />\n </div>\n\n {block.properties?.size && (\n <div className='notion-file-size'>\n <Text value={block.properties.size} block={block} />\n </div>\n )}\n </div>\n </components.Link>\n </div>\n )\n}\n","import * as React from 'react'\n\nexport const FileIcon = props => {\n const { className, ...rest } = props\n return (\n <svg className={className} {...rest} viewBox='0 0 30 30'>\n <path d='M22,8v12c0,3.866-3.134,7-7,7s-7-3.134-7-7V8c0-2.762,2.238-5,5-5s5,2.238,5,5v12c0,1.657-1.343,3-3,3s-3-1.343-3-3V8h-2v12c0,2.762,2.238,5,5,5s5-2.238,5-5V8c0-3.866-3.134-7-7-7S6,4.134,6,8v12c0,4.971,4.029,9,9,9s9-4.029,9-9V8H22z'></path>\n </svg>\n )\n}\n","import * as React from 'react'\n\nimport { GoogleDriveBlock } from '@texonom/ntypes'\n\nimport { useNotionContext } from '../context'\nimport { cs } from '../utils'\nimport { GracefulImage } from './graceful-image'\n\nexport const GoogleDrive: React.FC<{\n block: GoogleDriveBlock\n className?: string\n}> = ({ block, className }) => {\n const { components, mapImageUrl } = useNotionContext()\n const properties = block.format?.drive_properties\n if (!properties) return null\n let domain\n\n try {\n const url = new URL(properties.url)\n domain = url.hostname\n } catch (err) {\n // ignore invalid urls for robustness\n }\n\n return (\n <div className={cs('notion-google-drive', className)}>\n <components.Link className='notion-google-drive-link' href={properties.url} target='_blank' rel='noopener noreferrer'>\n <div className='notion-google-drive-preview'>\n <GracefulImage\n src={mapImageUrl(properties.thumbnail, block)}\n alt={properties.title || 'Google Drive Document'}\n loading='lazy'\n />\n </div>\n\n <div className='notion-google-drive-body'>\n {properties.title && <div className='notion-google-drive-body-title'>{properties.title}</div>}\n\n {/* TODO: re-add last modified time with alternative to timeago.js */}\n {/* {properties.modified_time && (\n <div className='notion-google-drive-body-modified-time'>\n Last modified{' '}\n {properties.user_name ? `by ${properties.user_name} ` : ''}\n {timeago(properties.modified_time)}\n </div>\n )} */}\n\n {properties.icon && domain && (\n <div className='notion-google-drive-body-source'>\n {properties.icon && (\n <div\n className='notion-google-drive-body-source-icon'\n style={{\n backgroundImage: `url(${properties.icon})`\n }}\n />\n )}\n\n {domain && <div className='notion-google-drive-body-source-domain'>{domain}</div>}\n </div>\n )}\n </div>\n </components.Link>\n </div>\n )\n}\n","import * as React from 'react'\n\nimport throttle from 'lodash.throttle'\nimport { TableOfContentsEntry, uuidToId } from '@texonom/nutils'\n\nimport { cs } from '../utils'\n\nexport const PageAside: React.FC<{\n toc: Array<TableOfContentsEntry>\n activeSection: string | null\n setActiveSection: (activeSection: string | null) => unknown\n hasToc: boolean\n hasAside: boolean\n pageAside?: React.ReactNode\n className?: string\n}> = ({ toc, activeSection, setActiveSection, pageAside, hasToc, hasAside, className }) => {\n const throttleMs = 100\n const actionSectionScrollSpy = React.useMemo(\n () =>\n throttle(() => {\n const sections = document.getElementsByClassName('notion-h')\n\n let prevBBox: DOMRect = null\n let currentSectionId = activeSection\n\n for (let i = 0; i < sections.length; ++i) {\n const section = sections[i]\n if (!section || !(section instanceof Element)) continue\n\n if (!currentSectionId) currentSectionId = section.getAttribute('data-id')\n\n const bbox = section.getBoundingClientRect()\n const prevHeight = prevBBox ? bbox.top - prevBBox.bottom : 0\n const offset = Math.max(150, prevHeight / 4)\n\n // GetBoundingClientRect returns values relative to the viewport\n if (bbox.top - offset < 0) {\n currentSectionId = section.getAttribute('data-id')\n\n prevBBox = bbox\n continue\n }\n\n // No need to continue loop, if last element has been detected\n break\n }\n\n setActiveSection(currentSectionId)\n }, throttleMs),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // explicitly not taking a dependency on activeSection\n setActiveSection\n ]\n )\n\n React.useEffect(() => {\n if (!hasToc) return\n\n window.addEventListener('scroll', actionSectionScrollSpy)\n\n actionSectionScrollSpy()\n\n return () => {\n window.removeEventListener('scroll', actionSectionScrollSpy)\n }\n }, [hasToc, actionSectionScrollSpy])\n\n if (!hasAside) return null\n\n return (\n <aside className={cs('notion-aside', className)}>\n {hasToc && (\n <div className='notion-aside-table-of-contents'>\n <div className='notion-aside-table-of-contents-header'>Table of Contents</div>\n\n <nav className='notion-table-of-contents'>\n {toc.map(tocItem => {\n const id = uuidToId(tocItem.id)\n\n return (\n <a\n key={id}\n href={`#${id}`}\n className={cs(\n 'notion-table-of-contents-item',\n `notion-table-of-contents-item-indent-level-${tocItem.indentLevel}`,\n activeSection === id && 'notion-table-of-contents-active-item'\n )}>\n <span\n className='notion-table-of-contents-item-body'\n style={{\n display: 'inline-block',\n marginLeft: tocItem.indentLevel * 16\n }}>\n {tocItem.text}\n </span>\n </a>\n )\n })}\n </nav>\n </div>\n )}\n\n {pageAside}\n </aside>\n )\n}\n","import * as React from 'react'\n\nimport { Block as BlockType, SyncPointerBlock as SyncPointerBlockType } from '@texonom/ntypes'\n\nimport { NotionBlockRenderer } from '../renderer'\n\nexport const SyncPointerBlock: React.FC<{\n block: BlockType\n level: number\n}> = ({ block, level }) => {\n if (!block) {\n if (process.env.NODE_ENV !== 'production') console.warn('missing sync pointer block', block.id)\n\n return null\n }\n\n const syncPointerBlock = block as SyncPointerBlockType\n const referencePointerId = syncPointerBlock?.format?.transclusion_reference_pointer?.id\n\n if (!referencePointerId) return null\n\n return <NotionBlockRenderer key={referencePointerId} level={level} blockId={referencePointerId} />\n}\n","import * as React from 'react'\n\nexport const LinkIcon = props => {\n const { className, ...rest } = props\n return (\n <svg className={className} {...rest} viewBox='0 0 16 16' width='16' height='16'>\n <path\n fillRule='evenodd'\n d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'\n />\n </svg>\n )\n}\n"],"mappings":"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","names":["React","React","uuidToId","React","React","React","React","throttle","React","React","uuidToId","tocItem","start","_a","_b","_c","_a","_b"]}
|