@ox-content/vite-plugin 3.0.0-alpha.16 → 3.0.0-alpha.18

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 (48) hide show
  1. package/dist/index.cjs +99 -69
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +23 -39
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +23 -39
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +38 -18
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/markdown-tables.d.cts +13 -16
  10. package/dist/markdown-tables.d.cts.map +1 -1
  11. package/dist/markdown-tables.d.mts +13 -16
  12. package/dist/markdown-tables.d.mts.map +1 -1
  13. package/dist/napi.cjs +44 -0
  14. package/dist/napi.cjs.map +1 -0
  15. package/dist/napi.mjs +34 -0
  16. package/dist/napi.mjs.map +1 -0
  17. package/dist/reader-chrome-client.cjs +103 -0
  18. package/dist/reader-chrome-client.d.cts +2 -0
  19. package/dist/reader-chrome-client.d.mts +2 -0
  20. package/dist/reader-chrome-client.mjs +102 -0
  21. package/dist/reader-chrome.cjs +109 -0
  22. package/dist/reader-chrome.cjs.map +1 -0
  23. package/dist/reader-chrome.d.cts +103 -0
  24. package/dist/reader-chrome.d.mts +103 -0
  25. package/dist/reader-chrome.mjs +98 -0
  26. package/dist/reader-chrome.mjs.map +1 -0
  27. package/dist/styles/all.css +2 -0
  28. package/dist/styles/core.css +53 -1
  29. package/dist/styles/reader-chrome.css +163 -0
  30. package/dist/styles/theme-transition.css +37 -0
  31. package/dist/styles/twitter-full.css +87 -13
  32. package/dist/theme-tokens.d.cts +18 -21
  33. package/dist/theme-tokens.d.cts.map +1 -1
  34. package/dist/theme-tokens.d.mts +18 -21
  35. package/dist/theme-tokens.d.mts.map +1 -1
  36. package/dist/theme-transition-client.cjs +161 -0
  37. package/dist/theme-transition-client.d.cts +21 -0
  38. package/dist/theme-transition-client.d.mts +21 -0
  39. package/dist/theme-transition-client.mjs +160 -0
  40. package/dist/twitter-client.cjs +84 -0
  41. package/dist/twitter-client.d.cts +11 -0
  42. package/dist/twitter-client.d.mts +11 -0
  43. package/dist/twitter-client.mjs +83 -0
  44. package/dist/vitepress.cjs +5 -43
  45. package/dist/vitepress.cjs.map +1 -1
  46. package/dist/vitepress.mjs +5 -31
  47. package/dist/vitepress.mjs.map +1 -1
  48. package/package.json +46 -4
package/dist/index.mjs CHANGED
@@ -1,6 +1,8 @@
1
- import { _ as writeSelfHostedIcons, a as normalizeVitePressFrontmatter, b as importNapiModuleSync, c as mergeThemes, d as parsePageChromeFlags, f as resolveHeaderNavItems, g as withSelfHostedIconHead, h as resolveIconsOptions, i as generateVitePressMigrationConfig, l as resolveTheme, m as resolvePageChromeOption, n as convertVitePressSidebar, o as defaultTheme, p as resolveLocaleLabel, r as fromVitePressConfig, s as defineTheme, t as convertVitePressNav, u as themeToNapi, v as writeSelfHostedThemeFonts, y as importNapiModule } from "./vitepress.mjs";
1
+ import { n as importNapiModuleSync, t as importNapiModule } from "./napi.mjs";
2
+ import { _ as writeSelfHostedIcons, a as normalizeVitePressFrontmatter, c as mergeThemes, d as parsePageChromeFlags, f as resolveHeaderNavItems, g as withSelfHostedIconHead, h as resolveIconsOptions, i as generateVitePressMigrationConfig, l as resolveTheme, m as resolvePageChromeOption, n as convertVitePressSidebar, o as defaultTheme, p as resolveLocaleLabel, r as fromVitePressConfig, s as defineTheme, t as convertVitePressNav, u as themeToNapi, v as writeSelfHostedThemeFonts } from "./vitepress.mjs";
2
3
  import { renderThemeTokenCss, tokensToCss } from "./theme-tokens.mjs";
3
4
  import { a as raw, i as jsxs, n as each, o as renderToString, r as jsx, s as when, t as Fragment } from "./jsx-html.mjs";
5
+ import { applyReaderChromeHtml, readerChromeAttributes, readerChromeCss, readerChromeIsEnabled, readerChromeNeedsJs, readerChromeScript, renderReaderChromeAttributes, renderReaderChromeScriptTag, renderReaderChromeStyleTag, resolveReaderChromeInput } from "./reader-chrome.mjs";
4
6
  import { enhanceMarkdownTables, markdownTableScrollLabel } from "./markdown-tables.mjs";
5
7
  import { createRequire } from "node:module";
6
8
  import * as path$2 from "path";
@@ -3990,11 +3992,12 @@ function renderInfo(permalink, createdAt, timeZone) {
3990
3992
  function renderActions(permalink, data) {
3991
3993
  const id = statusId(data, permalink);
3992
3994
  if (!id) return "";
3995
+ const likes = formatCount(data.favorite_count) ?? "0";
3993
3996
  return [
3994
3997
  "<div class=\"ox-tweet__actions\">",
3995
- `<a class="ox-tweet__action ox-tweet__action--like" href="https://x.com/intent/like?tweet_id=${id}" target="_blank" rel="noopener noreferrer"><span class="ox-tweet__icon ox-tweet__icon--like"></span><span>${formatCount(data.favorite_count) ?? "0"}</span></a>`,
3996
- `<a class="ox-tweet__action ox-tweet__action--reply" href="https://x.com/intent/tweet?in_reply_to=${id}" target="_blank" rel="noopener noreferrer"><span class="ox-tweet__icon ox-tweet__icon--reply"></span>Reply</a>`,
3997
- `<a class="ox-tweet__action ox-tweet__action--copy" href="${escapeAttribute$4(permalink)}" target="_blank" rel="noopener noreferrer" data-ox-tweet-copy data-ox-tweet-copy-url="${escapeAttribute$4(permalink)}" aria-label="Copy link to post"><span class="ox-tweet__icon ox-tweet__icon--copy"></span><span class="ox-tweet__copy-text">Copy link</span><span class="ox-tweet__copied-text">Copied!</span></a>`,
3998
+ `<a class="ox-tweet__action ox-tweet__action--like" href="https://x.com/intent/like?tweet_id=${id}" target="_blank" rel="noopener noreferrer" aria-label="Like. This Tweet has ${escapeAttribute$4(likes)} likes"><span class="ox-tweet__action-icon" aria-hidden="true"><span class="ox-tweet__icon ox-tweet__icon--like"></span></span><span class="ox-tweet__action-text">${likes}</span></a>`,
3999
+ `<a class="ox-tweet__action ox-tweet__action--reply" href="https://x.com/intent/tweet?in_reply_to=${id}" target="_blank" rel="noopener noreferrer" aria-label="Reply to this Tweet on Twitter"><span class="ox-tweet__action-icon" aria-hidden="true"><span class="ox-tweet__icon ox-tweet__icon--reply"></span></span><span class="ox-tweet__action-text">Reply</span></a>`,
4000
+ `<a class="ox-tweet__action ox-tweet__action--copy" href="${escapeAttribute$4(permalink)}" target="_blank" rel="noopener noreferrer" data-ox-tweet-copy data-ox-tweet-copy-url="${escapeAttribute$4(permalink)}" aria-label="Copy link"><span class="ox-tweet__action-icon" aria-hidden="true"><span class="ox-tweet__icon ox-tweet__icon--copy"></span></span><span class="ox-tweet__action-text ox-tweet__copy-text">Copy link</span><span class="ox-tweet__action-text ox-tweet__copied-text">Copied!</span><span class="ox-tweet__copy-status" data-ox-tweet-copy-status role="status" aria-live="polite"></span></a>`,
3998
4001
  "</div>"
3999
4002
  ].join("");
4000
4003
  }
@@ -17321,26 +17324,29 @@ async function renderSsgPage(context, pageResult, collected, allPageResults) {
17321
17324
  const markdownSource = pageMarkdownSourceHref(context, pageResult);
17322
17325
  if (context.ssgOptions.render) {
17323
17326
  const nav = context.versionNavigation ? rewriteVersionedNavGroups(context.navItems, context.versionNavigation) : context.navItems;
17324
- return applyMarkdownSourceAlternate(context, renderPage(toThemePageData(pageResult, markdownSource), {
17327
+ return applyMarkdownSourceAlternate(context, applyReaderChromeDocument(renderPage(toThemePageData(pageResult, markdownSource), {
17325
17328
  theme: context.ssgOptions.render,
17326
17329
  siteName: context.siteName,
17327
17330
  base: context.base,
17328
17331
  nav,
17329
17332
  pages: allPageResults.map((page) => toThemePageData(page, pageMarkdownSourceHref(context, page)))
17333
+ }), context.ssgOptions.readerChrome), markdownSource);
17334
+ }
17335
+ if (context.ssgOptions.bare) {
17336
+ const content = applyReaderChromeHtml(pageResult.transformedHtml, context.ssgOptions.readerChrome);
17337
+ return applyMarkdownSourceAlternate(context, generateBarePage({
17338
+ title: pageResult.title,
17339
+ content,
17340
+ lang: context.ssgOptions.lang ?? getPageLocale(localeUrlPath(pageResult.routePaths.urlPath, context.ssgOptions.routePrefix), context.options.i18n),
17341
+ description: pageResult.description,
17342
+ canonicalUrl: canonicalPageUrl(context, pageResult.routePaths.urlPath),
17343
+ siteName: context.ssgOptions.siteName,
17344
+ ogImage: pageOgImage,
17345
+ head: appendHtml(context.ssgOptions.head, renderReaderChromeStyleTag(context.ssgOptions.readerChrome)),
17346
+ bodyStart: context.ssgOptions.bodyStart,
17347
+ bodyEnd: appendHtml(context.ssgOptions.bodyEnd, renderReaderChromeScriptTag(context.ssgOptions.readerChrome))
17330
17348
  }), markdownSource);
17331
17349
  }
17332
- if (context.ssgOptions.bare) return applyMarkdownSourceAlternate(context, generateBarePage({
17333
- title: pageResult.title,
17334
- content: pageResult.transformedHtml,
17335
- lang: context.ssgOptions.lang ?? getPageLocale(localeUrlPath(pageResult.routePaths.urlPath, context.ssgOptions.routePrefix), context.options.i18n),
17336
- description: pageResult.description,
17337
- canonicalUrl: canonicalPageUrl(context, pageResult.routePaths.urlPath),
17338
- siteName: context.ssgOptions.siteName,
17339
- ogImage: pageOgImage,
17340
- head: context.ssgOptions.head,
17341
- bodyStart: context.ssgOptions.bodyStart,
17342
- bodyEnd: context.ssgOptions.bodyEnd
17343
- }), markdownSource);
17344
17350
  const pageData = createSsgPageData(pageResult, context.ssgOptions.markdownSource?.copy && pageResult.source != null ? markdownSource : void 0);
17345
17351
  const versionNavigation = context.versionNavigation;
17346
17352
  if (versionNavigation) {
@@ -17394,6 +17400,20 @@ function applyMarkdownSourceAlternate(context, html, href) {
17394
17400
  if (!href || !context.ssgOptions.markdownSource?.alternate) return html;
17395
17401
  return injectMarkdownSourceAlternate(html, href);
17396
17402
  }
17403
+ function applyReaderChromeDocument(html, readerChrome) {
17404
+ if (!readerChrome) return html;
17405
+ return injectBeforeClosingTag(injectBeforeClosingTag(applyReaderChromeHtml(html, readerChrome), "</head>", renderReaderChromeStyleTag(readerChrome)), "</body>", renderReaderChromeScriptTag(readerChrome));
17406
+ }
17407
+ function appendHtml(first, second) {
17408
+ if (!second) return first;
17409
+ return first ? `${first}\n${second}` : second;
17410
+ }
17411
+ function injectBeforeClosingTag(html, closingTag, snippet) {
17412
+ if (!snippet) return html;
17413
+ const index = html.toLowerCase().lastIndexOf(closingTag);
17414
+ if (index === -1) return `${html}\n${snippet}`;
17415
+ return `${html.slice(0, index)}${snippet}\n${html.slice(index)}`;
17416
+ }
17397
17417
  function rewritePagerOverride(pager, context) {
17398
17418
  return pager?.href ? {
17399
17419
  ...pager,
@@ -20984,6 +21004,6 @@ function normalizeRuntimeBase(base) {
20984
21004
  return withLeading.endsWith("/") ? withLeading : `${withLeading}/`;
20985
21005
  }
20986
21006
  //#endregion
20987
- export { BlogFeedError, DEFAULT_HTML_TEMPLATE, DEFAULT_MARKDOWN_EXTENSIONS, DefaultTheme, DocsTestRunError, Fragment, IncrementalMarkdownParser, IncrementalMarkdownRenderer, PageResourceError, applyIslandSsrHtml, buildCollectionManifest, buildSearchIndex, buildSsg, classifyPublishState, clearGraphvizCache, clearRenderContext, collectDocsTests, collectGitHubRepos, collectGitHubSources, collectMdxIslandNamesFromHtml, collectMdxJsxNamesFromAst, collectOgpUrls, convertVitePressNav, convertVitePressSidebar, createFrameworkMarkdownOptions, createI18nPlugin, createIncrementalMarkdownParser, createIncrementalMarkdownRenderer, createMarkdownEnvironment, createMarkdownProcessor, createTheme, defaultTheme, defineCollection, defineCollections, defineTheme, discoverDocumentMdxIslands, discoverRegisteredMdxComponents, each, enhanceMarkdownTables, escapeSvelteMarkup, extractCodeBlocks, extractDocs, extractDocsTests, extractIslandInfo, extractVideoId, fetchGitHubSource, fetchOgpData, fetchRepoData, fromVitePressConfig, generateCollectionsVirtualModule, generateFeeds, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateOpenApiDocs, generateTabsCSS, generateTypes, generateVirtualModule, generateVitePressMigrationConfig, hasIslands, inferType, intersectHydratableComponentNames, intersectRegisteredComponentNames, isMarkdownFilePath, isMdxFilePath, isRegisteredComponent, jsx, jsxs, lintCodeBlocks, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, markdownTableScrollLabel, mergeThemes, mermaidClientScript, normalizeMarkdownExtensions, normalizeVitePressFrontmatter, oxContent, parseGitHubLineRange, parseGitHubPermalink, parsePageChromeFlags, parseRedditPostReference, partitionPublishedPages, planSsgOutputs, prefetchGitHubRepos, prefetchGitHubSources, prefetchOgpData, raw, readingTimeMinutes, renderAllPages, renderFeedFiles, renderHead, renderHtmlToFrameworkCode, renderHtmlToReactComponent, renderHtmlToReactCreateElement, renderHtmlToSvelteComponent, renderHtmlToVueComponent, renderHtmlToVueH, renderIslandComponentImports, renderMarkdown, renderMarkdownStream, renderPage, renderThemeTokenCss, renderToString, resolveAbbreviationsOptions, resolveBadgeOptions, resolveBlogCollectionName, resolveBlogOptions, resolveBudouxOptions, resolveBuiltinEmbedOptions, resolveCardOptions, resolveCascadeOptions, resolveCodeGroupOptions, resolveCollectionsOptions, resolveContentRootPath, resolveDataTableOptions, resolveDocsOptions, resolveDocumentComponentImports, resolveFeedsOptions, resolveFileTreeOptions, resolveGitLastmod, resolveGraphvizOptions, resolveHeadValidation, resolveHeaderNavItems, resolveHeadingPermalinksOptions, resolveI18nOptions, resolveImageGalleryOptions, resolveImageOptions, resolveIncludeOptions, resolveKeyboardKeysOptions, resolveLocaleLabel, resolveMarkdownSourceOptions, resolveMathOptions, resolveMdxForFilePath, resolveNotByAiOptions, resolveNotFoundOptions, resolveOgImageOptions, resolvePageChromeOption, resolvePartialsOptions, resolvePermalinksOptions, resolvePublishStateOptions, resolvePwaOptions, resolveRedirectsOptions, resolveResourcesOptions, resolveSearchOptions, resolveSectionIndexOptions, resolveSiteMapsOptions, resolveSsgOptions, resolveStepsOptions, resolveTaxonomiesOptions, resolveTeamOptions, resolveTheme, resolveTimelineOptions, resolveTypedHoverOptions, resolveVersionsOptions, runDocsTests, setRenderContext, shouldLintMarkdownFile, stripMarkdownExtension, stripViteQuery, tokensToCss, transformAllPlugins, transformBudouxHtml, transformGitHub, transformGraphvizStatic, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformRedditEmbeds, transformTabs, transformYouTube, typecheckCodeBlocks, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeDocsTestFiles, writeFeedFiles, writeMarkdownCompanions, writeResourceFiles, writeSearchIndex, writeSiteMapFiles };
21007
+ export { BlogFeedError, DEFAULT_HTML_TEMPLATE, DEFAULT_MARKDOWN_EXTENSIONS, DefaultTheme, DocsTestRunError, Fragment, IncrementalMarkdownParser, IncrementalMarkdownRenderer, PageResourceError, applyIslandSsrHtml, applyReaderChromeHtml, buildCollectionManifest, buildSearchIndex, buildSsg, classifyPublishState, clearGraphvizCache, clearRenderContext, collectDocsTests, collectGitHubRepos, collectGitHubSources, collectMdxIslandNamesFromHtml, collectMdxJsxNamesFromAst, collectOgpUrls, convertVitePressNav, convertVitePressSidebar, createFrameworkMarkdownOptions, createI18nPlugin, createIncrementalMarkdownParser, createIncrementalMarkdownRenderer, createMarkdownEnvironment, createMarkdownProcessor, createTheme, defaultTheme, defineCollection, defineCollections, defineTheme, discoverDocumentMdxIslands, discoverRegisteredMdxComponents, each, enhanceMarkdownTables, escapeSvelteMarkup, extractCodeBlocks, extractDocs, extractDocsTests, extractIslandInfo, extractVideoId, fetchGitHubSource, fetchOgpData, fetchRepoData, fromVitePressConfig, generateCollectionsVirtualModule, generateFeeds, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateOpenApiDocs, generateTabsCSS, generateTypes, generateVirtualModule, generateVitePressMigrationConfig, hasIslands, inferType, intersectHydratableComponentNames, intersectRegisteredComponentNames, isMarkdownFilePath, isMdxFilePath, isRegisteredComponent, jsx, jsxs, lintCodeBlocks, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, markdownTableScrollLabel, mergeThemes, mermaidClientScript, normalizeMarkdownExtensions, normalizeVitePressFrontmatter, oxContent, parseGitHubLineRange, parseGitHubPermalink, parsePageChromeFlags, parseRedditPostReference, partitionPublishedPages, planSsgOutputs, prefetchGitHubRepos, prefetchGitHubSources, prefetchOgpData, raw, readerChromeAttributes, readerChromeCss, readerChromeIsEnabled, readerChromeNeedsJs, readerChromeScript, readingTimeMinutes, renderAllPages, renderFeedFiles, renderHead, renderHtmlToFrameworkCode, renderHtmlToReactComponent, renderHtmlToReactCreateElement, renderHtmlToSvelteComponent, renderHtmlToVueComponent, renderHtmlToVueH, renderIslandComponentImports, renderMarkdown, renderMarkdownStream, renderPage, renderReaderChromeAttributes, renderReaderChromeScriptTag, renderReaderChromeStyleTag, renderThemeTokenCss, renderToString, resolveAbbreviationsOptions, resolveBadgeOptions, resolveBlogCollectionName, resolveBlogOptions, resolveBudouxOptions, resolveBuiltinEmbedOptions, resolveCardOptions, resolveCascadeOptions, resolveCodeGroupOptions, resolveCollectionsOptions, resolveContentRootPath, resolveDataTableOptions, resolveDocsOptions, resolveDocumentComponentImports, resolveFeedsOptions, resolveFileTreeOptions, resolveGitLastmod, resolveGraphvizOptions, resolveHeadValidation, resolveHeaderNavItems, resolveHeadingPermalinksOptions, resolveI18nOptions, resolveImageGalleryOptions, resolveImageOptions, resolveIncludeOptions, resolveKeyboardKeysOptions, resolveLocaleLabel, resolveMarkdownSourceOptions, resolveMathOptions, resolveMdxForFilePath, resolveNotByAiOptions, resolveNotFoundOptions, resolveOgImageOptions, resolvePageChromeOption, resolvePartialsOptions, resolvePermalinksOptions, resolvePublishStateOptions, resolvePwaOptions, resolveReaderChromeInput, resolveRedirectsOptions, resolveResourcesOptions, resolveSearchOptions, resolveSectionIndexOptions, resolveSiteMapsOptions, resolveSsgOptions, resolveStepsOptions, resolveTaxonomiesOptions, resolveTeamOptions, resolveTheme, resolveTimelineOptions, resolveTypedHoverOptions, resolveVersionsOptions, runDocsTests, setRenderContext, shouldLintMarkdownFile, stripMarkdownExtension, stripViteQuery, tokensToCss, transformAllPlugins, transformBudouxHtml, transformGitHub, transformGraphvizStatic, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformRedditEmbeds, transformTabs, transformYouTube, typecheckCodeBlocks, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeDocsTestFiles, writeFeedFiles, writeMarkdownCompanions, writeResourceFiles, writeSearchIndex, writeSiteMapFiles };
20988
21008
 
20989
21009
  //# sourceMappingURL=index.mjs.map