@scribdown/shared 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +124 -1
- package/dist/index.js +104 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -155,6 +155,18 @@ declare const VIDEO_FALLBACK_TEXT_CLASS_NAME = "scribdown-video-fallback-text";
|
|
|
155
155
|
* 视频失败态来源类名。
|
|
156
156
|
*/
|
|
157
157
|
declare const VIDEO_FALLBACK_SOURCE_CLASS_NAME = "scribdown-video-fallback-source";
|
|
158
|
+
/**
|
|
159
|
+
* 图片 / Mermaid 查看器共用按钮类名。
|
|
160
|
+
*/
|
|
161
|
+
declare const VIEWER_CONTROL_BUTTON_CLASS_NAME = "scribdown-viewer-control-button";
|
|
162
|
+
/**
|
|
163
|
+
* 图片 / Mermaid 查看器共用缩放按钮组类名。
|
|
164
|
+
*/
|
|
165
|
+
declare const VIEWER_ZOOM_GROUP_CLASS_NAME = "scribdown-viewer-zoom-group";
|
|
166
|
+
/**
|
|
167
|
+
* 图片 / Mermaid 查看器共用缩放比例类名。
|
|
168
|
+
*/
|
|
169
|
+
declare const VIEWER_ZOOM_VALUE_CLASS_NAME = "scribdown-viewer-zoom-value";
|
|
158
170
|
/**
|
|
159
171
|
* 图片查看器 dialog 类名。
|
|
160
172
|
*/
|
|
@@ -251,6 +263,22 @@ declare const CODE_BLOCK_GUTTER_CLASS_NAME = "scribdown-code-block__gutter";
|
|
|
251
263
|
* 代码块行号固定列中的单行节点类名。
|
|
252
264
|
*/
|
|
253
265
|
declare const CODE_BLOCK_GUTTER_LINE_CLASS_NAME = "scribdown-code-block__gutter-line";
|
|
266
|
+
/**
|
|
267
|
+
* Markdown 内容复制按钮类名。
|
|
268
|
+
*/
|
|
269
|
+
declare const CONTENT_COPY_BUTTON_CLASS_NAME = "scribdown-copy-button";
|
|
270
|
+
/**
|
|
271
|
+
* Markdown 内容复制按钮图标类名。
|
|
272
|
+
*/
|
|
273
|
+
declare const CONTENT_COPY_ICON_CLASS_NAME = "scribdown-copy-button__icon";
|
|
274
|
+
/**
|
|
275
|
+
* Markdown 内容复制按钮默认图标类名。
|
|
276
|
+
*/
|
|
277
|
+
declare const CONTENT_COPY_ICON_COPY_CLASS_NAME = "scribdown-copy-button__icon--copy";
|
|
278
|
+
/**
|
|
279
|
+
* Markdown 内容复制按钮成功图标类名。
|
|
280
|
+
*/
|
|
281
|
+
declare const CONTENT_COPY_ICON_CHECK_CLASS_NAME = "scribdown-copy-button__icon--check";
|
|
254
282
|
/**
|
|
255
283
|
* Mermaid 图表外层 figure 容器类名。
|
|
256
284
|
*/
|
|
@@ -303,6 +331,30 @@ declare const MERMAID_FIGURE_LOADED_CLASS_NAME = "scribdown-mermaid--loaded";
|
|
|
303
331
|
* Mermaid 全屏按钮类名(位于 figure 右下角)。
|
|
304
332
|
*/
|
|
305
333
|
declare const MERMAID_FULLSCREEN_BUTTON_CLASS_NAME = "scribdown-mermaid__fullscreen";
|
|
334
|
+
/**
|
|
335
|
+
* Mermaid 非全屏工具组类名。
|
|
336
|
+
*/
|
|
337
|
+
declare const MERMAID_CONTROLS_CLASS_NAME = "scribdown-mermaid__controls";
|
|
338
|
+
/**
|
|
339
|
+
* Mermaid 非全屏缩放按钮组类名。
|
|
340
|
+
*/
|
|
341
|
+
declare const MERMAID_ZOOM_GROUP_CLASS_NAME = "scribdown-mermaid__zoom-group";
|
|
342
|
+
/**
|
|
343
|
+
* Mermaid 非全屏工具按钮类名。
|
|
344
|
+
*/
|
|
345
|
+
declare const MERMAID_CONTROL_BUTTON_CLASS_NAME = "scribdown-mermaid__control-button";
|
|
346
|
+
/**
|
|
347
|
+
* Mermaid 非全屏缩放百分比类名。
|
|
348
|
+
*/
|
|
349
|
+
declare const MERMAID_ZOOM_VALUE_CLASS_NAME = "scribdown-mermaid__zoom-value";
|
|
350
|
+
/**
|
|
351
|
+
* Mermaid 非全屏拖拽模式类名。
|
|
352
|
+
*/
|
|
353
|
+
declare const MERMAID_DRAG_MODE_CLASS_NAME = "scribdown-mermaid--drag-mode";
|
|
354
|
+
/**
|
|
355
|
+
* Mermaid 非全屏拖拽中类名。
|
|
356
|
+
*/
|
|
357
|
+
declare const MERMAID_DRAGGING_CLASS_NAME = "scribdown-mermaid--dragging";
|
|
306
358
|
/**
|
|
307
359
|
* Mermaid 全屏查看器 dialog 类名。
|
|
308
360
|
*/
|
|
@@ -311,6 +363,10 @@ declare const MERMAID_VIEWER_DIALOG_CLASS_NAME = "scribdown-mermaid-viewer";
|
|
|
311
363
|
* Mermaid 全屏查看器缩放进行中状态类名。
|
|
312
364
|
*/
|
|
313
365
|
declare const MERMAID_VIEWER_ZOOMED_CLASS_NAME = "scribdown-mermaid-viewer--zoomed";
|
|
366
|
+
/**
|
|
367
|
+
* Mermaid 全屏查看器拖拽模式类名。
|
|
368
|
+
*/
|
|
369
|
+
declare const MERMAID_VIEWER_DRAG_MODE_CLASS_NAME = "scribdown-mermaid-viewer--drag-mode";
|
|
314
370
|
/**
|
|
315
371
|
* Mermaid 全屏查看器拖拽中状态类名。
|
|
316
372
|
*/
|
|
@@ -347,6 +403,14 @@ declare const MERMAID_VIEWER_CANVAS_CLASS_NAME = "scribdown-mermaid-viewer__canv
|
|
|
347
403
|
* Mermaid 全屏查看器缩放百分比文本类名。
|
|
348
404
|
*/
|
|
349
405
|
declare const MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME = "scribdown-mermaid-viewer__zoom-value";
|
|
406
|
+
/**
|
|
407
|
+
* 表格交互壳层类名。
|
|
408
|
+
*/
|
|
409
|
+
declare const TABLE_WRAPPER_CLASS_NAME = "scribdown-table";
|
|
410
|
+
/**
|
|
411
|
+
* 表格复制按钮修饰类名。
|
|
412
|
+
*/
|
|
413
|
+
declare const TABLE_COPY_BUTTON_CLASS_NAME = "scribdown-table__copy";
|
|
350
414
|
|
|
351
415
|
/**
|
|
352
416
|
* 平台类型枚举。
|
|
@@ -445,10 +509,33 @@ declare const SCRIBDOWN_TOOLBAR_TOC_PANEL_CLASS_NAME = "scribdown-toolbar-toc-pa
|
|
|
445
509
|
* 工具栏「当前章节指示器」class:位于目录按钮左侧,随滚动展示当前可视区所属标题。
|
|
446
510
|
*/
|
|
447
511
|
declare const SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME = "scribdown-toolbar-current";
|
|
512
|
+
/**
|
|
513
|
+
* 强制暗色主题 class:加到文档根元素(`<html>`)上,优先级高于系统的
|
|
514
|
+
* `prefers-color-scheme`,供自带主题开关的宿主(文档站、VS Code)显式指定主题。
|
|
515
|
+
* 未加任何主题 class 时默认跟随系统偏好。
|
|
516
|
+
*/
|
|
517
|
+
declare const SCRIBDOWN_THEME_DARK_CLASS_NAME = "scribdown-theme-dark";
|
|
518
|
+
/**
|
|
519
|
+
* 强制浅色主题 class:与 {@link SCRIBDOWN_THEME_DARK_CLASS_NAME} 相对,
|
|
520
|
+
* 用于在系统处于暗色时仍把渲染结果锁定为浅色。
|
|
521
|
+
*/
|
|
522
|
+
declare const SCRIBDOWN_THEME_LIGHT_CLASS_NAME = "scribdown-theme-light";
|
|
448
523
|
/**
|
|
449
524
|
* 工具栏挂载时附加到 container 上的 class,把 container 标记为 TOC + 正文的 flex 容器。
|
|
450
525
|
*/
|
|
451
526
|
declare const SCRIBDOWN_TOC_HOST_CLASS_NAME = "scribdown-toc-host";
|
|
527
|
+
/**
|
|
528
|
+
* 目录侧栏与正文之间的拖拽调宽手柄 class(flex 流中位于 TOC 与正文之间的独立 item)。
|
|
529
|
+
*/
|
|
530
|
+
declare const SCRIBDOWN_TOC_RESIZER_CLASS_NAME = "scribdown-toc-resizer";
|
|
531
|
+
/**
|
|
532
|
+
* 拖拽调整目录宽度期间附加到 toc-host 上的 class,用于屏蔽正文文本选中并统一光标。
|
|
533
|
+
*/
|
|
534
|
+
declare const SCRIBDOWN_TOC_RESIZING_CLASS_NAME = "is-toc-resizing";
|
|
535
|
+
/**
|
|
536
|
+
* 目录侧栏宽度的 CSS 自定义属性名:声明在 toc-host 上,由 TOC 自身定宽与折叠位移共用。
|
|
537
|
+
*/
|
|
538
|
+
declare const TOC_WIDTH_CSS_VAR = "--scribdown-toc-width";
|
|
452
539
|
/**
|
|
453
540
|
* 工具栏挂载时用于包裹 container 已有内容的 wrapper class,作为 flex 流中的正文 item,与 TOC 横向并列。
|
|
454
541
|
* 自身 flex:1 填满 TOC 之外的剩余宽度,并作为内部滚动层的定位上下文(position:relative)。
|
|
@@ -524,6 +611,26 @@ declare const SCRIBDOWN_TOOLBAR_CURRENT_TEXT_CLASS_NAME = "scribdown-toolbar-cur
|
|
|
524
611
|
* localStorage 中保存页面内容宽度的 key。
|
|
525
612
|
*/
|
|
526
613
|
declare const CONTENT_WIDTH_STORAGE_KEY = "scribdown-content-width";
|
|
614
|
+
/**
|
|
615
|
+
* localStorage 中保存目录侧栏宽度(纯数字,单位 px)的 key。
|
|
616
|
+
*/
|
|
617
|
+
declare const TOC_WIDTH_STORAGE_KEY = "scribdown-toc-width";
|
|
618
|
+
/**
|
|
619
|
+
* 目录侧栏默认宽度(px),与 CSS 中 `min(280px, 70vw)` 的上限保持一致。
|
|
620
|
+
*/
|
|
621
|
+
declare const TOC_WIDTH_DEFAULT_PX = 280;
|
|
622
|
+
/**
|
|
623
|
+
* 目录侧栏可拖拽的最小宽度(px),低于此值目录条目已无法阅读。
|
|
624
|
+
*/
|
|
625
|
+
declare const TOC_WIDTH_MIN_PX = 180;
|
|
626
|
+
/**
|
|
627
|
+
* 目录侧栏可拖拽的最大宽度(px),另外还受「不超过宿主宽度 70%」约束。
|
|
628
|
+
*/
|
|
629
|
+
declare const TOC_WIDTH_MAX_PX = 640;
|
|
630
|
+
/**
|
|
631
|
+
* 目录侧栏宽度相对宿主容器宽度的占比上限,避免窄屏下目录挤没正文。
|
|
632
|
+
*/
|
|
633
|
+
declare const TOC_WIDTH_MAX_HOST_RATIO = 0.7;
|
|
527
634
|
|
|
528
635
|
/**
|
|
529
636
|
* Scribdown 国际化「语言」契约。
|
|
@@ -656,6 +763,8 @@ interface Messages {
|
|
|
656
763
|
"toolbar.tocClose": string;
|
|
657
764
|
/** 目录为空时的占位文案。 */
|
|
658
765
|
"toolbar.tocEmpty": string;
|
|
766
|
+
/** 目录侧栏右侧拖拽调宽手柄的 aria-label。 */
|
|
767
|
+
"toolbar.tocResize": string;
|
|
659
768
|
/** 工具栏「更多」按钮。 */
|
|
660
769
|
"toolbar.more": string;
|
|
661
770
|
/** 「更多」菜单内「页面宽度」触发行文案。 */
|
|
@@ -692,6 +801,10 @@ interface Messages {
|
|
|
692
801
|
"code.copy": string;
|
|
693
802
|
/** 代码块复制按钮 aria-label(已复制态)。 */
|
|
694
803
|
"code.copied": string;
|
|
804
|
+
/** 通用内容复制按钮 aria-label。 */
|
|
805
|
+
"content.copy": string;
|
|
806
|
+
/** 通用内容复制成功态 aria-label。 */
|
|
807
|
+
"content.copied": string;
|
|
695
808
|
/** Mermaid 渲染失败占位文案。 */
|
|
696
809
|
"mermaid.renderFailed": string;
|
|
697
810
|
/** Mermaid 代码块上的「全屏查看」按钮 aria-label。 */
|
|
@@ -704,8 +817,16 @@ interface Messages {
|
|
|
704
817
|
"mermaid.zoomOut": string;
|
|
705
818
|
/** Mermaid 全屏查看器重置缩放按钮 aria-label。 */
|
|
706
819
|
"mermaid.zoomReset": string;
|
|
820
|
+
/** Mermaid 非全屏缩放按钮组 aria-label。 */
|
|
821
|
+
"mermaid.zoomControls": string;
|
|
822
|
+
/** Mermaid 非全屏切换到拖拽模式按钮 aria-label。 */
|
|
823
|
+
"mermaid.switchToDrag": string;
|
|
824
|
+
/** Mermaid 非全屏切换到选择模式按钮 aria-label。 */
|
|
825
|
+
"mermaid.switchToSelect": string;
|
|
707
826
|
/** Mermaid 全屏查看器关闭按钮 aria-label。 */
|
|
708
827
|
"mermaid.close": string;
|
|
828
|
+
/** 表格复制按钮 aria-label。 */
|
|
829
|
+
"table.copy": string;
|
|
709
830
|
/** 图片查看器无标题时的兜底 aria-label。 */
|
|
710
831
|
"image.viewFull": string;
|
|
711
832
|
/** 图片查看器带标题时的 aria-label(插值:{alt} 图片标题)。 */
|
|
@@ -720,6 +841,8 @@ interface Messages {
|
|
|
720
841
|
"image.zoomOut": string;
|
|
721
842
|
/** 图片查看器重置缩放按钮 aria-label。 */
|
|
722
843
|
"image.zoomReset": string;
|
|
844
|
+
/** 图片查看器缩放按钮组 aria-label。 */
|
|
845
|
+
"image.zoomControls": string;
|
|
723
846
|
/** 图片查看器关闭按钮 aria-label。 */
|
|
724
847
|
"image.close": string;
|
|
725
848
|
/** 视频加载失败占位文案。 */
|
|
@@ -910,4 +1033,4 @@ type Translator = (key: MessageKey, vars?: MessageVars) => string;
|
|
|
910
1033
|
*/
|
|
911
1034
|
declare function createTranslator(locale: LocaleType | string): Translator;
|
|
912
1035
|
|
|
913
|
-
export { CHROME_LOCALE_DIRECTORY, CODE_BLOCK_BODY_CLASS_NAME, CODE_BLOCK_CHROME_CLASS_NAME, CODE_BLOCK_CLASS_NAME, CODE_BLOCK_COPY_CLASS_NAME, CODE_BLOCK_COPY_ICON_CHECK_CLASS_NAME, CODE_BLOCK_COPY_ICON_CLASS_NAME, CODE_BLOCK_COPY_ICON_COPY_CLASS_NAME, CODE_BLOCK_GUTTER_CLASS_NAME, CODE_BLOCK_GUTTER_LINE_CLASS_NAME, CODE_BLOCK_LANG_CLASS_NAME, CODE_BLOCK_LINE_CLASS_NAME, CONTENT_WIDTH_STORAGE_KEY, DEFAULT_LOCALE, DEFAULT_THEME, DETAILS_CLASS_NAME, FRAME_CLASS_NAME, FRONTMATTER_CHROME_CLASS_NAME, FRONTMATTER_CLASS_NAME, FRONTMATTER_LABEL_CLASS_NAME, FRONTMATTER_LIST_CLASS_NAME, FRONTMATTER_LIST_NESTED_CLASS_NAME, HEADING_MARK_CLASS_NAME, IMAGE_CAPTION_CLASS_NAME, IMAGE_ELEMENT_CLASS_NAME, IMAGE_FALLBACK_CLASS_NAME, IMAGE_FALLBACK_ICON_CLASS_NAME, IMAGE_FALLBACK_SOURCE_CLASS_NAME, IMAGE_FALLBACK_TEXT_CLASS_NAME, IMAGE_FIGURE_CLASS_NAME, IMAGE_FRAME_CLASS_NAME, IMAGE_FRAME_FAILED_CLASS_NAME, IMAGE_FRAME_LOADED_CLASS_NAME, IMAGE_VIEWER_BUTTON_CLASS_NAME, IMAGE_VIEWER_CAPTION_CLASS_NAME, IMAGE_VIEWER_CAPTION_GROUP_CLASS_NAME, IMAGE_VIEWER_CHROME_CLASS_NAME, IMAGE_VIEWER_CLOSE_BUTTON_CLASS_NAME, IMAGE_VIEWER_CONTROLS_CLASS_NAME, IMAGE_VIEWER_DIALOG_CLASS_NAME, IMAGE_VIEWER_DRAGGING_CLASS_NAME, IMAGE_VIEWER_HINT_CLASS_NAME, IMAGE_VIEWER_IMAGE_CLASS_NAME, IMAGE_VIEWER_VIEWPORT_CLASS_NAME, IMAGE_VIEWER_ZOOMED_CLASS_NAME, IMAGE_VIEWER_ZOOM_VALUE_CLASS_NAME, LOCALE_FALLBACKS, LOCALE_PREFERENCE_OPTIONS, LocalePreference, type LocalePreferenceOption, LocaleType, MARKDOWN_FILE_EXTNAME, MARKDOWN_LANGUAGE_ID, MERMAID_BODY_CLASS_NAME, MERMAID_CANVAS_CLASS_NAME, MERMAID_CHROME_CLASS_NAME, MERMAID_FALLBACK_CLASS_NAME, MERMAID_FALLBACK_ICON_CLASS_NAME, MERMAID_FALLBACK_SOURCE_CLASS_NAME, MERMAID_FALLBACK_TEXT_CLASS_NAME, MERMAID_FIGURE_CLASS_NAME, MERMAID_FIGURE_FAILED_CLASS_NAME, MERMAID_FIGURE_LOADED_CLASS_NAME, MERMAID_FIGURE_LOADING_CLASS_NAME, MERMAID_FULLSCREEN_BUTTON_CLASS_NAME, MERMAID_LABEL_CLASS_NAME, MERMAID_VIEWER_BUTTON_CLASS_NAME, MERMAID_VIEWER_CANVAS_CLASS_NAME, MERMAID_VIEWER_CAPTION_CLASS_NAME, MERMAID_VIEWER_CHROME_CLASS_NAME, MERMAID_VIEWER_CLOSE_BUTTON_CLASS_NAME, MERMAID_VIEWER_CONTROLS_CLASS_NAME, MERMAID_VIEWER_DIALOG_CLASS_NAME, MERMAID_VIEWER_DRAGGING_CLASS_NAME, MERMAID_VIEWER_VIEWPORT_CLASS_NAME, MERMAID_VIEWER_ZOOMED_CLASS_NAME, MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME, MESSAGES, type MessageKey, type MessageVars, type Messages, NODE_LTS_VERSION, OPEN_PREVIEW_COMMAND, PROJECT_HOMEPAGE_URL, PROJECT_NAME, PlatformType, SCRIBDOWN_APP_CLASS_NAME, SCRIBDOWN_CONTENT_AREA_CLASS_NAME, SCRIBDOWN_CONTENT_SCROLL_CLASS_NAME, SCRIBDOWN_MARKDOWN_CLASS_NAME, SCRIBDOWN_PAGE_CLASS_NAME, SCRIBDOWN_THIN_SCROLLBAR_CLASS_NAME, SCRIBDOWN_TOC_HOST_CLASS_NAME, SCRIBDOWN_TOOLBAR_BTN_CLASS_NAME, SCRIBDOWN_TOOLBAR_CLASS_NAME, SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME, SCRIBDOWN_TOOLBAR_CURRENT_TEXT_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_GROUP_CHOICES_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_GROUP_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_ITEM_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SELECT_CHEVRON_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SELECT_LABEL_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SELECT_VALUE_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_LABEL_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_MARK_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_CLOSE_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_EMPTY_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_TITLE_CLASS_NAME, SOURCE_LINE_ACTIVE_CLASS_NAME, SOURCE_LINE_DATA_ATTRIBUTE, SOURCE_LINE_OFFSCREEN_HINT_BOTTOM_CLASS_NAME, SOURCE_LINE_OFFSCREEN_HINT_CLASS_NAME, SOURCE_LINE_OFFSCREEN_HINT_TOP_CLASS_NAME, SUPPORTED_LOCALES, SUPPORTED_PLATFORMS, TOC_CLASS_NAME, TOC_ITEM_BRANCH_CLASS_NAME, TOC_ITEM_CLASS_PREFIX, TOC_ITEM_COLLAPSED_CLASS_NAME, TOC_LINK_ACTIVE_CLASS_NAME, TOC_LINK_CLASS_NAME, TOC_LIST_CLASS_NAME, TOC_LIST_NESTED_CLASS_NAME, TOC_NAV_CLASS_NAME, TOC_SUMMARY_CLASS_NAME, TOC_TOGGLE_CLASS_NAME, ThemeType, type Translator, VIDEO_ELEMENT_CLASS_NAME, VIDEO_FALLBACK_CLASS_NAME, VIDEO_FALLBACK_ICON_CLASS_NAME, VIDEO_FALLBACK_SOURCE_CLASS_NAME, VIDEO_FALLBACK_TEXT_CLASS_NAME, VIDEO_FIGURE_CLASS_NAME, VIDEO_FRAME_CLASS_NAME, VIDEO_FRAME_FAILED_CLASS_NAME, VIDEO_FRAME_LOADED_CLASS_NAME, VSCODE_NLS_SUFFIX, createTranslator, getActiveLocale, isLocalePreference, normalizeLocale, normalizeLocalePreference, resolveLocalePreference, setActiveLocale, setActiveLocaleFromHost, setActiveLocaleFromPreference, t };
|
|
1036
|
+
export { CHROME_LOCALE_DIRECTORY, CODE_BLOCK_BODY_CLASS_NAME, CODE_BLOCK_CHROME_CLASS_NAME, CODE_BLOCK_CLASS_NAME, CODE_BLOCK_COPY_CLASS_NAME, CODE_BLOCK_COPY_ICON_CHECK_CLASS_NAME, CODE_BLOCK_COPY_ICON_CLASS_NAME, CODE_BLOCK_COPY_ICON_COPY_CLASS_NAME, CODE_BLOCK_GUTTER_CLASS_NAME, CODE_BLOCK_GUTTER_LINE_CLASS_NAME, CODE_BLOCK_LANG_CLASS_NAME, CODE_BLOCK_LINE_CLASS_NAME, CONTENT_COPY_BUTTON_CLASS_NAME, CONTENT_COPY_ICON_CHECK_CLASS_NAME, CONTENT_COPY_ICON_CLASS_NAME, CONTENT_COPY_ICON_COPY_CLASS_NAME, CONTENT_WIDTH_STORAGE_KEY, DEFAULT_LOCALE, DEFAULT_THEME, DETAILS_CLASS_NAME, FRAME_CLASS_NAME, FRONTMATTER_CHROME_CLASS_NAME, FRONTMATTER_CLASS_NAME, FRONTMATTER_LABEL_CLASS_NAME, FRONTMATTER_LIST_CLASS_NAME, FRONTMATTER_LIST_NESTED_CLASS_NAME, HEADING_MARK_CLASS_NAME, IMAGE_CAPTION_CLASS_NAME, IMAGE_ELEMENT_CLASS_NAME, IMAGE_FALLBACK_CLASS_NAME, IMAGE_FALLBACK_ICON_CLASS_NAME, IMAGE_FALLBACK_SOURCE_CLASS_NAME, IMAGE_FALLBACK_TEXT_CLASS_NAME, IMAGE_FIGURE_CLASS_NAME, IMAGE_FRAME_CLASS_NAME, IMAGE_FRAME_FAILED_CLASS_NAME, IMAGE_FRAME_LOADED_CLASS_NAME, IMAGE_VIEWER_BUTTON_CLASS_NAME, IMAGE_VIEWER_CAPTION_CLASS_NAME, IMAGE_VIEWER_CAPTION_GROUP_CLASS_NAME, IMAGE_VIEWER_CHROME_CLASS_NAME, IMAGE_VIEWER_CLOSE_BUTTON_CLASS_NAME, IMAGE_VIEWER_CONTROLS_CLASS_NAME, IMAGE_VIEWER_DIALOG_CLASS_NAME, IMAGE_VIEWER_DRAGGING_CLASS_NAME, IMAGE_VIEWER_HINT_CLASS_NAME, IMAGE_VIEWER_IMAGE_CLASS_NAME, IMAGE_VIEWER_VIEWPORT_CLASS_NAME, IMAGE_VIEWER_ZOOMED_CLASS_NAME, IMAGE_VIEWER_ZOOM_VALUE_CLASS_NAME, LOCALE_FALLBACKS, LOCALE_PREFERENCE_OPTIONS, LocalePreference, type LocalePreferenceOption, LocaleType, MARKDOWN_FILE_EXTNAME, MARKDOWN_LANGUAGE_ID, MERMAID_BODY_CLASS_NAME, MERMAID_CANVAS_CLASS_NAME, MERMAID_CHROME_CLASS_NAME, MERMAID_CONTROLS_CLASS_NAME, MERMAID_CONTROL_BUTTON_CLASS_NAME, MERMAID_DRAGGING_CLASS_NAME, MERMAID_DRAG_MODE_CLASS_NAME, MERMAID_FALLBACK_CLASS_NAME, MERMAID_FALLBACK_ICON_CLASS_NAME, MERMAID_FALLBACK_SOURCE_CLASS_NAME, MERMAID_FALLBACK_TEXT_CLASS_NAME, MERMAID_FIGURE_CLASS_NAME, MERMAID_FIGURE_FAILED_CLASS_NAME, MERMAID_FIGURE_LOADED_CLASS_NAME, MERMAID_FIGURE_LOADING_CLASS_NAME, MERMAID_FULLSCREEN_BUTTON_CLASS_NAME, MERMAID_LABEL_CLASS_NAME, MERMAID_VIEWER_BUTTON_CLASS_NAME, MERMAID_VIEWER_CANVAS_CLASS_NAME, MERMAID_VIEWER_CAPTION_CLASS_NAME, MERMAID_VIEWER_CHROME_CLASS_NAME, MERMAID_VIEWER_CLOSE_BUTTON_CLASS_NAME, MERMAID_VIEWER_CONTROLS_CLASS_NAME, MERMAID_VIEWER_DIALOG_CLASS_NAME, MERMAID_VIEWER_DRAGGING_CLASS_NAME, MERMAID_VIEWER_DRAG_MODE_CLASS_NAME, MERMAID_VIEWER_VIEWPORT_CLASS_NAME, MERMAID_VIEWER_ZOOMED_CLASS_NAME, MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME, MERMAID_ZOOM_GROUP_CLASS_NAME, MERMAID_ZOOM_VALUE_CLASS_NAME, MESSAGES, type MessageKey, type MessageVars, type Messages, NODE_LTS_VERSION, OPEN_PREVIEW_COMMAND, PROJECT_HOMEPAGE_URL, PROJECT_NAME, PlatformType, SCRIBDOWN_APP_CLASS_NAME, SCRIBDOWN_CONTENT_AREA_CLASS_NAME, SCRIBDOWN_CONTENT_SCROLL_CLASS_NAME, SCRIBDOWN_MARKDOWN_CLASS_NAME, SCRIBDOWN_PAGE_CLASS_NAME, SCRIBDOWN_THEME_DARK_CLASS_NAME, SCRIBDOWN_THEME_LIGHT_CLASS_NAME, SCRIBDOWN_THIN_SCROLLBAR_CLASS_NAME, SCRIBDOWN_TOC_HOST_CLASS_NAME, SCRIBDOWN_TOC_RESIZER_CLASS_NAME, SCRIBDOWN_TOC_RESIZING_CLASS_NAME, SCRIBDOWN_TOOLBAR_BTN_CLASS_NAME, SCRIBDOWN_TOOLBAR_CLASS_NAME, SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME, SCRIBDOWN_TOOLBAR_CURRENT_TEXT_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_GROUP_CHOICES_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_GROUP_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_ITEM_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SELECT_CHEVRON_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SELECT_LABEL_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SELECT_VALUE_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_LABEL_CLASS_NAME, SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_MARK_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_CLOSE_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_EMPTY_CLASS_NAME, SCRIBDOWN_TOOLBAR_TOC_PANEL_TITLE_CLASS_NAME, SOURCE_LINE_ACTIVE_CLASS_NAME, SOURCE_LINE_DATA_ATTRIBUTE, SOURCE_LINE_OFFSCREEN_HINT_BOTTOM_CLASS_NAME, SOURCE_LINE_OFFSCREEN_HINT_CLASS_NAME, SOURCE_LINE_OFFSCREEN_HINT_TOP_CLASS_NAME, SUPPORTED_LOCALES, SUPPORTED_PLATFORMS, TABLE_COPY_BUTTON_CLASS_NAME, TABLE_WRAPPER_CLASS_NAME, TOC_CLASS_NAME, TOC_ITEM_BRANCH_CLASS_NAME, TOC_ITEM_CLASS_PREFIX, TOC_ITEM_COLLAPSED_CLASS_NAME, TOC_LINK_ACTIVE_CLASS_NAME, TOC_LINK_CLASS_NAME, TOC_LIST_CLASS_NAME, TOC_LIST_NESTED_CLASS_NAME, TOC_NAV_CLASS_NAME, TOC_SUMMARY_CLASS_NAME, TOC_TOGGLE_CLASS_NAME, TOC_WIDTH_CSS_VAR, TOC_WIDTH_DEFAULT_PX, TOC_WIDTH_MAX_HOST_RATIO, TOC_WIDTH_MAX_PX, TOC_WIDTH_MIN_PX, TOC_WIDTH_STORAGE_KEY, ThemeType, type Translator, VIDEO_ELEMENT_CLASS_NAME, VIDEO_FALLBACK_CLASS_NAME, VIDEO_FALLBACK_ICON_CLASS_NAME, VIDEO_FALLBACK_SOURCE_CLASS_NAME, VIDEO_FALLBACK_TEXT_CLASS_NAME, VIDEO_FIGURE_CLASS_NAME, VIDEO_FRAME_CLASS_NAME, VIDEO_FRAME_FAILED_CLASS_NAME, VIDEO_FRAME_LOADED_CLASS_NAME, VIEWER_CONTROL_BUTTON_CLASS_NAME, VIEWER_ZOOM_GROUP_CLASS_NAME, VIEWER_ZOOM_VALUE_CLASS_NAME, VSCODE_NLS_SUFFIX, createTranslator, getActiveLocale, isLocalePreference, normalizeLocale, normalizeLocalePreference, resolveLocalePreference, setActiveLocale, setActiveLocaleFromHost, setActiveLocaleFromPreference, t };
|
package/dist/index.js
CHANGED
|
@@ -37,6 +37,9 @@ var VIDEO_FALLBACK_CLASS_NAME = "scribdown-video-fallback";
|
|
|
37
37
|
var VIDEO_FALLBACK_ICON_CLASS_NAME = "scribdown-video-fallback-icon";
|
|
38
38
|
var VIDEO_FALLBACK_TEXT_CLASS_NAME = "scribdown-video-fallback-text";
|
|
39
39
|
var VIDEO_FALLBACK_SOURCE_CLASS_NAME = "scribdown-video-fallback-source";
|
|
40
|
+
var VIEWER_CONTROL_BUTTON_CLASS_NAME = "scribdown-viewer-control-button";
|
|
41
|
+
var VIEWER_ZOOM_GROUP_CLASS_NAME = "scribdown-viewer-zoom-group";
|
|
42
|
+
var VIEWER_ZOOM_VALUE_CLASS_NAME = "scribdown-viewer-zoom-value";
|
|
40
43
|
var IMAGE_VIEWER_DIALOG_CLASS_NAME = "scribdown-image-viewer";
|
|
41
44
|
var IMAGE_VIEWER_ZOOMED_CLASS_NAME = "scribdown-image-viewer--zoomed";
|
|
42
45
|
var IMAGE_VIEWER_DRAGGING_CLASS_NAME = "scribdown-image-viewer--dragging";
|
|
@@ -61,6 +64,10 @@ var CODE_BLOCK_COPY_ICON_CHECK_CLASS_NAME = "scribdown-code-block__copy-icon--ch
|
|
|
61
64
|
var CODE_BLOCK_LINE_CLASS_NAME = "scribdown-code-block__line";
|
|
62
65
|
var CODE_BLOCK_GUTTER_CLASS_NAME = "scribdown-code-block__gutter";
|
|
63
66
|
var CODE_BLOCK_GUTTER_LINE_CLASS_NAME = "scribdown-code-block__gutter-line";
|
|
67
|
+
var CONTENT_COPY_BUTTON_CLASS_NAME = "scribdown-copy-button";
|
|
68
|
+
var CONTENT_COPY_ICON_CLASS_NAME = "scribdown-copy-button__icon";
|
|
69
|
+
var CONTENT_COPY_ICON_COPY_CLASS_NAME = "scribdown-copy-button__icon--copy";
|
|
70
|
+
var CONTENT_COPY_ICON_CHECK_CLASS_NAME = "scribdown-copy-button__icon--check";
|
|
64
71
|
var MERMAID_FIGURE_CLASS_NAME = "scribdown-mermaid";
|
|
65
72
|
var MERMAID_CHROME_CLASS_NAME = "scribdown-mermaid__chrome";
|
|
66
73
|
var MERMAID_LABEL_CLASS_NAME = "scribdown-mermaid__label";
|
|
@@ -74,8 +81,15 @@ var MERMAID_FIGURE_LOADING_CLASS_NAME = "scribdown-mermaid--loading";
|
|
|
74
81
|
var MERMAID_FIGURE_FAILED_CLASS_NAME = "scribdown-mermaid--failed";
|
|
75
82
|
var MERMAID_FIGURE_LOADED_CLASS_NAME = "scribdown-mermaid--loaded";
|
|
76
83
|
var MERMAID_FULLSCREEN_BUTTON_CLASS_NAME = "scribdown-mermaid__fullscreen";
|
|
84
|
+
var MERMAID_CONTROLS_CLASS_NAME = "scribdown-mermaid__controls";
|
|
85
|
+
var MERMAID_ZOOM_GROUP_CLASS_NAME = "scribdown-mermaid__zoom-group";
|
|
86
|
+
var MERMAID_CONTROL_BUTTON_CLASS_NAME = "scribdown-mermaid__control-button";
|
|
87
|
+
var MERMAID_ZOOM_VALUE_CLASS_NAME = "scribdown-mermaid__zoom-value";
|
|
88
|
+
var MERMAID_DRAG_MODE_CLASS_NAME = "scribdown-mermaid--drag-mode";
|
|
89
|
+
var MERMAID_DRAGGING_CLASS_NAME = "scribdown-mermaid--dragging";
|
|
77
90
|
var MERMAID_VIEWER_DIALOG_CLASS_NAME = "scribdown-mermaid-viewer";
|
|
78
91
|
var MERMAID_VIEWER_ZOOMED_CLASS_NAME = "scribdown-mermaid-viewer--zoomed";
|
|
92
|
+
var MERMAID_VIEWER_DRAG_MODE_CLASS_NAME = "scribdown-mermaid-viewer--drag-mode";
|
|
79
93
|
var MERMAID_VIEWER_DRAGGING_CLASS_NAME = "scribdown-mermaid-viewer--dragging";
|
|
80
94
|
var MERMAID_VIEWER_CHROME_CLASS_NAME = "scribdown-mermaid-viewer__chrome";
|
|
81
95
|
var MERMAID_VIEWER_CAPTION_CLASS_NAME = "scribdown-mermaid-viewer__caption";
|
|
@@ -85,6 +99,8 @@ var MERMAID_VIEWER_CLOSE_BUTTON_CLASS_NAME = "scribdown-mermaid-viewer__button--
|
|
|
85
99
|
var MERMAID_VIEWER_VIEWPORT_CLASS_NAME = "scribdown-mermaid-viewer__viewport";
|
|
86
100
|
var MERMAID_VIEWER_CANVAS_CLASS_NAME = "scribdown-mermaid-viewer__canvas";
|
|
87
101
|
var MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME = "scribdown-mermaid-viewer__zoom-value";
|
|
102
|
+
var TABLE_WRAPPER_CLASS_NAME = "scribdown-table";
|
|
103
|
+
var TABLE_COPY_BUTTON_CLASS_NAME = "scribdown-table__copy";
|
|
88
104
|
|
|
89
105
|
// src/enums.ts
|
|
90
106
|
var PlatformType = /* @__PURE__ */ ((PlatformType2) => {
|
|
@@ -122,7 +138,12 @@ var SCRIBDOWN_TOOLBAR_CLASS_NAME = "scribdown-toolbar";
|
|
|
122
138
|
var SCRIBDOWN_TOOLBAR_BTN_CLASS_NAME = "scribdown-toolbar-btn";
|
|
123
139
|
var SCRIBDOWN_TOOLBAR_TOC_PANEL_CLASS_NAME = "scribdown-toolbar-toc-panel";
|
|
124
140
|
var SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME = "scribdown-toolbar-current";
|
|
141
|
+
var SCRIBDOWN_THEME_DARK_CLASS_NAME = "scribdown-theme-dark";
|
|
142
|
+
var SCRIBDOWN_THEME_LIGHT_CLASS_NAME = "scribdown-theme-light";
|
|
125
143
|
var SCRIBDOWN_TOC_HOST_CLASS_NAME = "scribdown-toc-host";
|
|
144
|
+
var SCRIBDOWN_TOC_RESIZER_CLASS_NAME = "scribdown-toc-resizer";
|
|
145
|
+
var SCRIBDOWN_TOC_RESIZING_CLASS_NAME = "is-toc-resizing";
|
|
146
|
+
var TOC_WIDTH_CSS_VAR = "--scribdown-toc-width";
|
|
126
147
|
var SCRIBDOWN_CONTENT_AREA_CLASS_NAME = "scribdown-content-area";
|
|
127
148
|
var SCRIBDOWN_CONTENT_SCROLL_CLASS_NAME = "scribdown-content-scroll";
|
|
128
149
|
var SCRIBDOWN_THIN_SCROLLBAR_CLASS_NAME = "scribdown-scrollbar-thin";
|
|
@@ -141,6 +162,11 @@ var SCRIBDOWN_TOOLBAR_TOC_PANEL_CLOSE_CLASS_NAME = "scribdown-toolbar-toc-panel-
|
|
|
141
162
|
var SCRIBDOWN_TOOLBAR_TOC_PANEL_EMPTY_CLASS_NAME = "scribdown-toolbar-toc-panel-empty";
|
|
142
163
|
var SCRIBDOWN_TOOLBAR_CURRENT_TEXT_CLASS_NAME = "scribdown-toolbar-current-text";
|
|
143
164
|
var CONTENT_WIDTH_STORAGE_KEY = "scribdown-content-width";
|
|
165
|
+
var TOC_WIDTH_STORAGE_KEY = "scribdown-toc-width";
|
|
166
|
+
var TOC_WIDTH_DEFAULT_PX = 280;
|
|
167
|
+
var TOC_WIDTH_MIN_PX = 180;
|
|
168
|
+
var TOC_WIDTH_MAX_PX = 640;
|
|
169
|
+
var TOC_WIDTH_MAX_HOST_RATIO = 0.7;
|
|
144
170
|
|
|
145
171
|
// src/i18n/locales.ts
|
|
146
172
|
var LocaleType = /* @__PURE__ */ ((LocaleType2) => {
|
|
@@ -296,6 +322,7 @@ var EN_MESSAGES = {
|
|
|
296
322
|
"toolbar.toc": "Contents",
|
|
297
323
|
"toolbar.tocClose": "Close contents",
|
|
298
324
|
"toolbar.tocEmpty": "No headings",
|
|
325
|
+
"toolbar.tocResize": "Resize contents sidebar",
|
|
299
326
|
"toolbar.more": "More",
|
|
300
327
|
"toolbar.pageWidth": "Page width",
|
|
301
328
|
"toolbar.backTop": "Back to top",
|
|
@@ -314,13 +341,19 @@ var EN_MESSAGES = {
|
|
|
314
341
|
"toolbar.about": "About",
|
|
315
342
|
"code.copy": "Copy code",
|
|
316
343
|
"code.copied": "Copied",
|
|
344
|
+
"content.copy": "Copy content",
|
|
345
|
+
"content.copied": "Copied",
|
|
317
346
|
"mermaid.renderFailed": "Diagram failed to render",
|
|
318
347
|
"mermaid.fullscreenButton": "View diagram fullscreen",
|
|
319
348
|
"mermaid.fullscreen": "View Mermaid diagram fullscreen",
|
|
320
349
|
"mermaid.zoomIn": "Zoom in diagram",
|
|
321
350
|
"mermaid.zoomOut": "Zoom out diagram",
|
|
322
351
|
"mermaid.zoomReset": "Reset zoom",
|
|
352
|
+
"mermaid.zoomControls": "Diagram zoom controls",
|
|
353
|
+
"mermaid.switchToDrag": "Switch to drag mode",
|
|
354
|
+
"mermaid.switchToSelect": "Switch to selection mode",
|
|
323
355
|
"mermaid.close": "Close fullscreen view",
|
|
356
|
+
"table.copy": "Copy table",
|
|
324
357
|
"image.viewFull": "View full image",
|
|
325
358
|
"image.viewFullOf": "View full image: {alt}",
|
|
326
359
|
"image.loadFailed": "Image failed to load",
|
|
@@ -328,6 +361,7 @@ var EN_MESSAGES = {
|
|
|
328
361
|
"image.zoomIn": "Zoom in image",
|
|
329
362
|
"image.zoomOut": "Zoom out image",
|
|
330
363
|
"image.zoomReset": "Reset zoom",
|
|
364
|
+
"image.zoomControls": "Image zoom controls",
|
|
331
365
|
"image.close": "Close image viewer",
|
|
332
366
|
"video.loadFailed": "Video failed to load",
|
|
333
367
|
"toc.label": "Contents",
|
|
@@ -389,6 +423,7 @@ var ZH_CN_MESSAGES = {
|
|
|
389
423
|
"toolbar.toc": "\u76EE\u5F55",
|
|
390
424
|
"toolbar.tocClose": "\u5173\u95ED\u76EE\u5F55",
|
|
391
425
|
"toolbar.tocEmpty": "\u6682\u65E0\u6807\u9898",
|
|
426
|
+
"toolbar.tocResize": "\u62D6\u62FD\u8C03\u6574\u76EE\u5F55\u5BBD\u5EA6",
|
|
392
427
|
"toolbar.more": "\u66F4\u591A",
|
|
393
428
|
"toolbar.pageWidth": "\u9875\u9762\u5BBD\u5EA6",
|
|
394
429
|
"toolbar.backTop": "\u56DE\u5230\u9876\u90E8",
|
|
@@ -407,13 +442,19 @@ var ZH_CN_MESSAGES = {
|
|
|
407
442
|
"toolbar.about": "\u5173\u4E8E",
|
|
408
443
|
"code.copy": "\u590D\u5236\u4EE3\u7801",
|
|
409
444
|
"code.copied": "\u5DF2\u590D\u5236",
|
|
445
|
+
"content.copy": "\u590D\u5236\u5185\u5BB9",
|
|
446
|
+
"content.copied": "\u5DF2\u590D\u5236",
|
|
410
447
|
"mermaid.renderFailed": "\u56FE\u8868\u6E32\u67D3\u5931\u8D25",
|
|
411
448
|
"mermaid.fullscreenButton": "\u5168\u5C4F\u67E5\u770B\u56FE\u8868",
|
|
412
449
|
"mermaid.fullscreen": "\u5168\u5C4F\u67E5\u770B Mermaid \u56FE\u8868",
|
|
413
450
|
"mermaid.zoomIn": "\u653E\u5927\u56FE\u8868",
|
|
414
451
|
"mermaid.zoomOut": "\u7F29\u5C0F\u56FE\u8868",
|
|
415
452
|
"mermaid.zoomReset": "\u91CD\u7F6E\u7F29\u653E",
|
|
453
|
+
"mermaid.zoomControls": "\u56FE\u8868\u7F29\u653E\u63A7\u4EF6",
|
|
454
|
+
"mermaid.switchToDrag": "\u5207\u6362\u4E3A\u62D6\u62FD\u6A21\u5F0F",
|
|
455
|
+
"mermaid.switchToSelect": "\u5207\u6362\u4E3A\u9009\u62E9\u6A21\u5F0F",
|
|
416
456
|
"mermaid.close": "\u5173\u95ED\u5168\u5C4F\u67E5\u770B",
|
|
457
|
+
"table.copy": "\u590D\u5236\u8868\u683C",
|
|
417
458
|
"image.viewFull": "\u67E5\u770B\u5168\u56FE",
|
|
418
459
|
"image.viewFullOf": "\u67E5\u770B\u5168\u56FE\uFF1A{alt}",
|
|
419
460
|
"image.loadFailed": "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25",
|
|
@@ -421,6 +462,7 @@ var ZH_CN_MESSAGES = {
|
|
|
421
462
|
"image.zoomIn": "\u653E\u5927\u56FE\u7247",
|
|
422
463
|
"image.zoomOut": "\u7F29\u5C0F\u56FE\u7247",
|
|
423
464
|
"image.zoomReset": "\u91CD\u7F6E\u7F29\u653E",
|
|
465
|
+
"image.zoomControls": "\u56FE\u7247\u7F29\u653E\u63A7\u4EF6",
|
|
424
466
|
"image.close": "\u5173\u95ED\u5168\u56FE\u67E5\u770B",
|
|
425
467
|
"video.loadFailed": "\u89C6\u9891\u52A0\u8F7D\u5931\u8D25",
|
|
426
468
|
"toc.label": "\u76EE\u5F55",
|
|
@@ -483,6 +525,7 @@ var ZH_TW_MESSAGES = {
|
|
|
483
525
|
"toolbar.toc": "\u76EE\u9304",
|
|
484
526
|
"toolbar.tocClose": "\u95DC\u9589\u76EE\u9304",
|
|
485
527
|
"toolbar.tocEmpty": "\u66AB\u7121\u6A19\u984C",
|
|
528
|
+
"toolbar.tocResize": "\u62D6\u66F3\u8ABF\u6574\u76EE\u9304\u5BEC\u5EA6",
|
|
486
529
|
"toolbar.more": "\u66F4\u591A",
|
|
487
530
|
"toolbar.pageWidth": "\u9801\u9762\u5BEC\u5EA6",
|
|
488
531
|
"toolbar.backTop": "\u56DE\u5230\u9802\u90E8",
|
|
@@ -496,13 +539,19 @@ var ZH_TW_MESSAGES = {
|
|
|
496
539
|
"toolbar.about": "\u95DC\u65BC",
|
|
497
540
|
"code.copy": "\u8907\u88FD\u7A0B\u5F0F\u78BC",
|
|
498
541
|
"code.copied": "\u5DF2\u8907\u88FD",
|
|
542
|
+
"content.copy": "\u8907\u88FD\u5167\u5BB9",
|
|
543
|
+
"content.copied": "\u5DF2\u8907\u88FD",
|
|
499
544
|
"mermaid.renderFailed": "\u5716\u8868\u8F49\u8B6F\u5931\u6557",
|
|
500
545
|
"mermaid.fullscreenButton": "\u5168\u87A2\u5E55\u6AA2\u8996\u5716\u8868",
|
|
501
546
|
"mermaid.fullscreen": "\u5168\u87A2\u5E55\u6AA2\u8996 Mermaid \u5716\u8868",
|
|
502
547
|
"mermaid.zoomIn": "\u653E\u5927\u5716\u8868",
|
|
503
548
|
"mermaid.zoomOut": "\u7E2E\u5C0F\u5716\u8868",
|
|
504
549
|
"mermaid.zoomReset": "\u91CD\u8A2D\u7E2E\u653E",
|
|
550
|
+
"mermaid.zoomControls": "\u5716\u8868\u7E2E\u653E\u63A7\u5236\u9805",
|
|
551
|
+
"mermaid.switchToDrag": "\u5207\u63DB\u70BA\u62D6\u66F3\u6A21\u5F0F",
|
|
552
|
+
"mermaid.switchToSelect": "\u5207\u63DB\u70BA\u9078\u53D6\u6A21\u5F0F",
|
|
505
553
|
"mermaid.close": "\u95DC\u9589\u5168\u87A2\u5E55\u6AA2\u8996",
|
|
554
|
+
"table.copy": "\u8907\u88FD\u8868\u683C",
|
|
506
555
|
"image.viewFull": "\u6AA2\u8996\u5B8C\u6574\u5716\u7247",
|
|
507
556
|
"image.viewFullOf": "\u6AA2\u8996\u5B8C\u6574\u5716\u7247\uFF1A{alt}",
|
|
508
557
|
"image.loadFailed": "\u5716\u7247\u8F09\u5165\u5931\u6557",
|
|
@@ -510,6 +559,7 @@ var ZH_TW_MESSAGES = {
|
|
|
510
559
|
"image.zoomIn": "\u653E\u5927\u5716\u7247",
|
|
511
560
|
"image.zoomOut": "\u7E2E\u5C0F\u5716\u7247",
|
|
512
561
|
"image.zoomReset": "\u91CD\u8A2D\u7E2E\u653E",
|
|
562
|
+
"image.zoomControls": "\u5716\u7247\u7E2E\u653E\u63A7\u5236\u9805",
|
|
513
563
|
"image.close": "\u95DC\u9589\u5716\u7247\u6AA2\u8996\u5668",
|
|
514
564
|
"video.loadFailed": "\u5F71\u7247\u8F09\u5165\u5931\u6557",
|
|
515
565
|
"toc.label": "\u76EE\u9304",
|
|
@@ -567,6 +617,7 @@ var JA_MESSAGES = {
|
|
|
567
617
|
"toolbar.toc": "\u76EE\u6B21",
|
|
568
618
|
"toolbar.tocClose": "\u76EE\u6B21\u3092\u9589\u3058\u308B",
|
|
569
619
|
"toolbar.tocEmpty": "\u898B\u51FA\u3057\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
620
|
+
"toolbar.tocResize": "\u76EE\u6B21\u306E\u5E45\u3092\u8ABF\u6574",
|
|
570
621
|
"toolbar.more": "\u305D\u306E\u4ED6",
|
|
571
622
|
"toolbar.pageWidth": "\u30DA\u30FC\u30B8\u5E45",
|
|
572
623
|
"toolbar.backTop": "\u5148\u982D\u306B\u623B\u308B",
|
|
@@ -580,13 +631,19 @@ var JA_MESSAGES = {
|
|
|
580
631
|
"toolbar.about": "\u306B\u3064\u3044\u3066",
|
|
581
632
|
"code.copy": "\u30B3\u30FC\u30C9\u3092\u30B3\u30D4\u30FC",
|
|
582
633
|
"code.copied": "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
|
|
634
|
+
"content.copy": "\u5185\u5BB9\u3092\u30B3\u30D4\u30FC",
|
|
635
|
+
"content.copied": "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
|
|
583
636
|
"mermaid.renderFailed": "\u56F3\u3092\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F",
|
|
584
637
|
"mermaid.fullscreenButton": "\u56F3\u3092\u5168\u753B\u9762\u8868\u793A",
|
|
585
638
|
"mermaid.fullscreen": "Mermaid \u56F3\u3092\u5168\u753B\u9762\u8868\u793A",
|
|
586
639
|
"mermaid.zoomIn": "\u56F3\u3092\u62E1\u5927",
|
|
587
640
|
"mermaid.zoomOut": "\u56F3\u3092\u7E2E\u5C0F",
|
|
588
641
|
"mermaid.zoomReset": "\u30BA\u30FC\u30E0\u3092\u30EA\u30BB\u30C3\u30C8",
|
|
642
|
+
"mermaid.zoomControls": "\u56F3\u306E\u30BA\u30FC\u30E0\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB",
|
|
643
|
+
"mermaid.switchToDrag": "\u30C9\u30E9\u30C3\u30B0\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048",
|
|
644
|
+
"mermaid.switchToSelect": "\u9078\u629E\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048",
|
|
589
645
|
"mermaid.close": "\u5168\u753B\u9762\u8868\u793A\u3092\u9589\u3058\u308B",
|
|
646
|
+
"table.copy": "\u8868\u3092\u30B3\u30D4\u30FC",
|
|
590
647
|
"image.viewFull": "\u753B\u50CF\u3092\u5168\u4F53\u8868\u793A",
|
|
591
648
|
"image.viewFullOf": "\u753B\u50CF\u3092\u5168\u4F53\u8868\u793A\uFF1A{alt}",
|
|
592
649
|
"image.loadFailed": "\u753B\u50CF\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F",
|
|
@@ -594,6 +651,7 @@ var JA_MESSAGES = {
|
|
|
594
651
|
"image.zoomIn": "\u753B\u50CF\u3092\u62E1\u5927",
|
|
595
652
|
"image.zoomOut": "\u753B\u50CF\u3092\u7E2E\u5C0F",
|
|
596
653
|
"image.zoomReset": "\u30BA\u30FC\u30E0\u3092\u30EA\u30BB\u30C3\u30C8",
|
|
654
|
+
"image.zoomControls": "\u753B\u50CF\u306E\u30BA\u30FC\u30E0\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB",
|
|
597
655
|
"image.close": "\u753B\u50CF\u30D3\u30E5\u30FC\u30A2\u3092\u9589\u3058\u308B",
|
|
598
656
|
"video.loadFailed": "\u52D5\u753B\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F",
|
|
599
657
|
"toc.label": "\u76EE\u6B21",
|
|
@@ -651,6 +709,7 @@ var KO_MESSAGES = {
|
|
|
651
709
|
"toolbar.toc": "\uBAA9\uCC28",
|
|
652
710
|
"toolbar.tocClose": "\uBAA9\uCC28 \uB2EB\uAE30",
|
|
653
711
|
"toolbar.tocEmpty": "\uC81C\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
|
|
712
|
+
"toolbar.tocResize": "\uBAA9\uCC28 \uB108\uBE44 \uC870\uC808",
|
|
654
713
|
"toolbar.more": "\uB354\uBCF4\uAE30",
|
|
655
714
|
"toolbar.pageWidth": "\uD398\uC774\uC9C0 \uB108\uBE44",
|
|
656
715
|
"toolbar.backTop": "\uB9E8 \uC704\uB85C",
|
|
@@ -664,13 +723,19 @@ var KO_MESSAGES = {
|
|
|
664
723
|
"toolbar.about": "\uC815\uBCF4",
|
|
665
724
|
"code.copy": "\uCF54\uB4DC \uBCF5\uC0AC",
|
|
666
725
|
"code.copied": "\uBCF5\uC0AC\uB428",
|
|
726
|
+
"content.copy": "\uB0B4\uC6A9 \uBCF5\uC0AC",
|
|
727
|
+
"content.copied": "\uBCF5\uC0AC\uB428",
|
|
667
728
|
"mermaid.renderFailed": "\uB2E4\uC774\uC5B4\uADF8\uB7A8\uC744 \uB80C\uB354\uB9C1\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",
|
|
668
729
|
"mermaid.fullscreenButton": "\uB2E4\uC774\uC5B4\uADF8\uB7A8 \uC804\uCCB4 \uD654\uBA74 \uBCF4\uAE30",
|
|
669
730
|
"mermaid.fullscreen": "Mermaid \uB2E4\uC774\uC5B4\uADF8\uB7A8 \uC804\uCCB4 \uD654\uBA74 \uBCF4\uAE30",
|
|
670
731
|
"mermaid.zoomIn": "\uB2E4\uC774\uC5B4\uADF8\uB7A8 \uD655\uB300",
|
|
671
732
|
"mermaid.zoomOut": "\uB2E4\uC774\uC5B4\uADF8\uB7A8 \uCD95\uC18C",
|
|
672
733
|
"mermaid.zoomReset": "\uD655\uB300/\uCD95\uC18C \uC7AC\uC124\uC815",
|
|
734
|
+
"mermaid.zoomControls": "\uB2E4\uC774\uC5B4\uADF8\uB7A8 \uD655\uB300/\uCD95\uC18C \uCEE8\uD2B8\uB864",
|
|
735
|
+
"mermaid.switchToDrag": "\uB4DC\uB798\uADF8 \uBAA8\uB4DC\uB85C \uC804\uD658",
|
|
736
|
+
"mermaid.switchToSelect": "\uC120\uD0DD \uBAA8\uB4DC\uB85C \uC804\uD658",
|
|
673
737
|
"mermaid.close": "\uC804\uCCB4 \uD654\uBA74 \uB2EB\uAE30",
|
|
738
|
+
"table.copy": "\uD45C \uBCF5\uC0AC",
|
|
674
739
|
"image.viewFull": "\uC804\uCCB4 \uC774\uBBF8\uC9C0 \uBCF4\uAE30",
|
|
675
740
|
"image.viewFullOf": "\uC804\uCCB4 \uC774\uBBF8\uC9C0 \uBCF4\uAE30: {alt}",
|
|
676
741
|
"image.loadFailed": "\uC774\uBBF8\uC9C0\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",
|
|
@@ -678,6 +743,7 @@ var KO_MESSAGES = {
|
|
|
678
743
|
"image.zoomIn": "\uC774\uBBF8\uC9C0 \uD655\uB300",
|
|
679
744
|
"image.zoomOut": "\uC774\uBBF8\uC9C0 \uCD95\uC18C",
|
|
680
745
|
"image.zoomReset": "\uD655\uB300/\uCD95\uC18C \uC7AC\uC124\uC815",
|
|
746
|
+
"image.zoomControls": "\uC774\uBBF8\uC9C0 \uD655\uB300/\uCD95\uC18C \uCEE8\uD2B8\uB864",
|
|
681
747
|
"image.close": "\uC774\uBBF8\uC9C0 \uBDF0\uC5B4 \uB2EB\uAE30",
|
|
682
748
|
"video.loadFailed": "\uB3D9\uC601\uC0C1\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",
|
|
683
749
|
"toc.label": "\uBAA9\uCC28",
|
|
@@ -735,6 +801,7 @@ var ES_MESSAGES = {
|
|
|
735
801
|
"toolbar.toc": "Contenido",
|
|
736
802
|
"toolbar.tocClose": "Cerrar contenido",
|
|
737
803
|
"toolbar.tocEmpty": "No hay encabezados",
|
|
804
|
+
"toolbar.tocResize": "Ajustar el ancho del contenido",
|
|
738
805
|
"toolbar.more": "M\xE1s",
|
|
739
806
|
"toolbar.pageWidth": "Ancho de p\xE1gina",
|
|
740
807
|
"toolbar.backTop": "Volver arriba",
|
|
@@ -748,13 +815,19 @@ var ES_MESSAGES = {
|
|
|
748
815
|
"toolbar.about": "Acerca de",
|
|
749
816
|
"code.copy": "Copiar c\xF3digo",
|
|
750
817
|
"code.copied": "Copiado",
|
|
818
|
+
"content.copy": "Copiar contenido",
|
|
819
|
+
"content.copied": "Copiado",
|
|
751
820
|
"mermaid.renderFailed": "No se pudo renderizar el diagrama",
|
|
752
821
|
"mermaid.fullscreenButton": "Ver diagrama a pantalla completa",
|
|
753
822
|
"mermaid.fullscreen": "Ver diagrama Mermaid a pantalla completa",
|
|
754
823
|
"mermaid.zoomIn": "Ampliar diagrama",
|
|
755
824
|
"mermaid.zoomOut": "Reducir diagrama",
|
|
756
825
|
"mermaid.zoomReset": "Restablecer zoom",
|
|
826
|
+
"mermaid.zoomControls": "Controles de zoom del diagrama",
|
|
827
|
+
"mermaid.switchToDrag": "Cambiar al modo de arrastre",
|
|
828
|
+
"mermaid.switchToSelect": "Cambiar al modo de selecci\xF3n",
|
|
757
829
|
"mermaid.close": "Cerrar vista a pantalla completa",
|
|
830
|
+
"table.copy": "Copiar tabla",
|
|
758
831
|
"image.viewFull": "Ver imagen completa",
|
|
759
832
|
"image.viewFullOf": "Ver imagen completa: {alt}",
|
|
760
833
|
"image.loadFailed": "No se pudo cargar la imagen",
|
|
@@ -762,6 +835,7 @@ var ES_MESSAGES = {
|
|
|
762
835
|
"image.zoomIn": "Ampliar imagen",
|
|
763
836
|
"image.zoomOut": "Reducir imagen",
|
|
764
837
|
"image.zoomReset": "Restablecer zoom",
|
|
838
|
+
"image.zoomControls": "Controles de zoom de imagen",
|
|
765
839
|
"image.close": "Cerrar visor de im\xE1genes",
|
|
766
840
|
"video.loadFailed": "No se pudo cargar el v\xEDdeo",
|
|
767
841
|
"toc.label": "Contenido",
|
|
@@ -819,6 +893,7 @@ var FR_MESSAGES = {
|
|
|
819
893
|
"toolbar.toc": "Sommaire",
|
|
820
894
|
"toolbar.tocClose": "Fermer le sommaire",
|
|
821
895
|
"toolbar.tocEmpty": "Aucun titre",
|
|
896
|
+
"toolbar.tocResize": "Ajuster la largeur du sommaire",
|
|
822
897
|
"toolbar.more": "Plus",
|
|
823
898
|
"toolbar.pageWidth": "Largeur de page",
|
|
824
899
|
"toolbar.backTop": "Retour en haut",
|
|
@@ -856,6 +931,7 @@ var DE_MESSAGES = {
|
|
|
856
931
|
"toolbar.toc": "Inhalt",
|
|
857
932
|
"toolbar.tocClose": "Inhalt schlie\xDFen",
|
|
858
933
|
"toolbar.tocEmpty": "Keine \xDCberschriften",
|
|
934
|
+
"toolbar.tocResize": "Breite des Inhalts anpassen",
|
|
859
935
|
"toolbar.more": "Mehr",
|
|
860
936
|
"toolbar.pageWidth": "Seitenbreite",
|
|
861
937
|
"toolbar.backTop": "Nach oben",
|
|
@@ -893,6 +969,7 @@ var PT_BR_MESSAGES = {
|
|
|
893
969
|
"toolbar.toc": "Conte\xFAdo",
|
|
894
970
|
"toolbar.tocClose": "Fechar conte\xFAdo",
|
|
895
971
|
"toolbar.tocEmpty": "Sem t\xEDtulos",
|
|
972
|
+
"toolbar.tocResize": "Ajustar a largura do conte\xFAdo",
|
|
896
973
|
"toolbar.more": "Mais",
|
|
897
974
|
"toolbar.pageWidth": "Largura da p\xE1gina",
|
|
898
975
|
"toolbar.backTop": "Voltar ao topo",
|
|
@@ -930,6 +1007,7 @@ var RU_MESSAGES = {
|
|
|
930
1007
|
"toolbar.toc": "\u0421\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435",
|
|
931
1008
|
"toolbar.tocClose": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435",
|
|
932
1009
|
"toolbar.tocEmpty": "\u041D\u0435\u0442 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432",
|
|
1010
|
+
"toolbar.tocResize": "\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u044F",
|
|
933
1011
|
"toolbar.more": "\u0415\u0449\u0451",
|
|
934
1012
|
"toolbar.pageWidth": "\u0428\u0438\u0440\u0438\u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B",
|
|
935
1013
|
"toolbar.backTop": "\u041D\u0430\u0432\u0435\u0440\u0445",
|
|
@@ -1057,6 +1135,10 @@ export {
|
|
|
1057
1135
|
CODE_BLOCK_GUTTER_LINE_CLASS_NAME,
|
|
1058
1136
|
CODE_BLOCK_LANG_CLASS_NAME,
|
|
1059
1137
|
CODE_BLOCK_LINE_CLASS_NAME,
|
|
1138
|
+
CONTENT_COPY_BUTTON_CLASS_NAME,
|
|
1139
|
+
CONTENT_COPY_ICON_CHECK_CLASS_NAME,
|
|
1140
|
+
CONTENT_COPY_ICON_CLASS_NAME,
|
|
1141
|
+
CONTENT_COPY_ICON_COPY_CLASS_NAME,
|
|
1060
1142
|
CONTENT_WIDTH_STORAGE_KEY,
|
|
1061
1143
|
DEFAULT_LOCALE,
|
|
1062
1144
|
DEFAULT_THEME,
|
|
@@ -1100,6 +1182,10 @@ export {
|
|
|
1100
1182
|
MERMAID_BODY_CLASS_NAME,
|
|
1101
1183
|
MERMAID_CANVAS_CLASS_NAME,
|
|
1102
1184
|
MERMAID_CHROME_CLASS_NAME,
|
|
1185
|
+
MERMAID_CONTROLS_CLASS_NAME,
|
|
1186
|
+
MERMAID_CONTROL_BUTTON_CLASS_NAME,
|
|
1187
|
+
MERMAID_DRAGGING_CLASS_NAME,
|
|
1188
|
+
MERMAID_DRAG_MODE_CLASS_NAME,
|
|
1103
1189
|
MERMAID_FALLBACK_CLASS_NAME,
|
|
1104
1190
|
MERMAID_FALLBACK_ICON_CLASS_NAME,
|
|
1105
1191
|
MERMAID_FALLBACK_SOURCE_CLASS_NAME,
|
|
@@ -1118,9 +1204,12 @@ export {
|
|
|
1118
1204
|
MERMAID_VIEWER_CONTROLS_CLASS_NAME,
|
|
1119
1205
|
MERMAID_VIEWER_DIALOG_CLASS_NAME,
|
|
1120
1206
|
MERMAID_VIEWER_DRAGGING_CLASS_NAME,
|
|
1207
|
+
MERMAID_VIEWER_DRAG_MODE_CLASS_NAME,
|
|
1121
1208
|
MERMAID_VIEWER_VIEWPORT_CLASS_NAME,
|
|
1122
1209
|
MERMAID_VIEWER_ZOOMED_CLASS_NAME,
|
|
1123
1210
|
MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME,
|
|
1211
|
+
MERMAID_ZOOM_GROUP_CLASS_NAME,
|
|
1212
|
+
MERMAID_ZOOM_VALUE_CLASS_NAME,
|
|
1124
1213
|
MESSAGES,
|
|
1125
1214
|
NODE_LTS_VERSION,
|
|
1126
1215
|
OPEN_PREVIEW_COMMAND,
|
|
@@ -1132,8 +1221,12 @@ export {
|
|
|
1132
1221
|
SCRIBDOWN_CONTENT_SCROLL_CLASS_NAME,
|
|
1133
1222
|
SCRIBDOWN_MARKDOWN_CLASS_NAME,
|
|
1134
1223
|
SCRIBDOWN_PAGE_CLASS_NAME,
|
|
1224
|
+
SCRIBDOWN_THEME_DARK_CLASS_NAME,
|
|
1225
|
+
SCRIBDOWN_THEME_LIGHT_CLASS_NAME,
|
|
1135
1226
|
SCRIBDOWN_THIN_SCROLLBAR_CLASS_NAME,
|
|
1136
1227
|
SCRIBDOWN_TOC_HOST_CLASS_NAME,
|
|
1228
|
+
SCRIBDOWN_TOC_RESIZER_CLASS_NAME,
|
|
1229
|
+
SCRIBDOWN_TOC_RESIZING_CLASS_NAME,
|
|
1137
1230
|
SCRIBDOWN_TOOLBAR_BTN_CLASS_NAME,
|
|
1138
1231
|
SCRIBDOWN_TOOLBAR_CLASS_NAME,
|
|
1139
1232
|
SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME,
|
|
@@ -1159,6 +1252,8 @@ export {
|
|
|
1159
1252
|
SOURCE_LINE_OFFSCREEN_HINT_TOP_CLASS_NAME,
|
|
1160
1253
|
SUPPORTED_LOCALES,
|
|
1161
1254
|
SUPPORTED_PLATFORMS,
|
|
1255
|
+
TABLE_COPY_BUTTON_CLASS_NAME,
|
|
1256
|
+
TABLE_WRAPPER_CLASS_NAME,
|
|
1162
1257
|
TOC_CLASS_NAME,
|
|
1163
1258
|
TOC_ITEM_BRANCH_CLASS_NAME,
|
|
1164
1259
|
TOC_ITEM_CLASS_PREFIX,
|
|
@@ -1170,6 +1265,12 @@ export {
|
|
|
1170
1265
|
TOC_NAV_CLASS_NAME,
|
|
1171
1266
|
TOC_SUMMARY_CLASS_NAME,
|
|
1172
1267
|
TOC_TOGGLE_CLASS_NAME,
|
|
1268
|
+
TOC_WIDTH_CSS_VAR,
|
|
1269
|
+
TOC_WIDTH_DEFAULT_PX,
|
|
1270
|
+
TOC_WIDTH_MAX_HOST_RATIO,
|
|
1271
|
+
TOC_WIDTH_MAX_PX,
|
|
1272
|
+
TOC_WIDTH_MIN_PX,
|
|
1273
|
+
TOC_WIDTH_STORAGE_KEY,
|
|
1173
1274
|
ThemeType,
|
|
1174
1275
|
VIDEO_ELEMENT_CLASS_NAME,
|
|
1175
1276
|
VIDEO_FALLBACK_CLASS_NAME,
|
|
@@ -1180,6 +1281,9 @@ export {
|
|
|
1180
1281
|
VIDEO_FRAME_CLASS_NAME,
|
|
1181
1282
|
VIDEO_FRAME_FAILED_CLASS_NAME,
|
|
1182
1283
|
VIDEO_FRAME_LOADED_CLASS_NAME,
|
|
1284
|
+
VIEWER_CONTROL_BUTTON_CLASS_NAME,
|
|
1285
|
+
VIEWER_ZOOM_GROUP_CLASS_NAME,
|
|
1286
|
+
VIEWER_ZOOM_VALUE_CLASS_NAME,
|
|
1183
1287
|
VSCODE_NLS_SUFFIX,
|
|
1184
1288
|
createTranslator,
|
|
1185
1289
|
getActiveLocale,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/class-names.ts","../src/enums.ts","../src/constants.ts","../src/i18n/locales.ts","../src/i18n/messages.ts","../src/i18n/translator.ts"],"sourcesContent":["/**\n * Scribdown Markdown 渲染 DOM 的 class 契约。\n * 由 @scribdown/markdown-renderer 写入 DOM,@scribdown/ui-handdrawn 的样式与各宿主按名引用,\n * 统一收敛在此,禁止在其他包重新定义或硬编码。\n */\n\n// ─── 手绘边框 / 内容折叠块 ───\n\n/**\n * 手绘卡片边框类名:可复用的「边框」基底,由内容折叠块、目录根等显式 opt-in 引入。\n */\nexport const FRAME_CLASS_NAME = \"scribdown-frame\";\n\n/**\n * 内容折叠块类名:用户手写的原生 <details>(区别于目录用 <details>)在渲染时打上此标。\n */\nexport const DETAILS_CLASS_NAME = \"scribdown-details\";\n\n// ─── Frontmatter 元数据卡片 ───\n\n/**\n * Frontmatter 元数据卡片容器类名(文档头部 YAML 键值对展示)。\n */\nexport const FRONTMATTER_CLASS_NAME = \"scribdown-frontmatter\";\n\n/**\n * Frontmatter 顶部 chrome 容器类名(仅承载「元数据」标签)。\n */\nexport const FRONTMATTER_CHROME_CLASS_NAME = \"scribdown-frontmatter__chrome\";\n\n/**\n * Frontmatter 标签类名。\n */\nexport const FRONTMATTER_LABEL_CLASS_NAME = \"scribdown-frontmatter__label\";\n\n/**\n * Frontmatter 键值列表类名。\n */\nexport const FRONTMATTER_LIST_CLASS_NAME = \"scribdown-frontmatter__list\";\n\n/**\n * Frontmatter 嵌套键值列表类名(对象类型的值向下展开一层)。\n */\nexport const FRONTMATTER_LIST_NESTED_CLASS_NAME = \"scribdown-frontmatter__list--nested\";\n\n// ─── 目录(TOC)与标题 ───\n\n/**\n * 目录容器类名。\n */\nexport const TOC_CLASS_NAME = \"scribdown-toc\";\n\n/**\n * 目录摘要按钮类名。\n */\nexport const TOC_SUMMARY_CLASS_NAME = \"scribdown-toc-summary\";\n\n/**\n * 目录导航区域类名。\n */\nexport const TOC_NAV_CLASS_NAME = \"scribdown-toc-nav\";\n\n/**\n * 目录列表类名。\n */\nexport const TOC_LIST_CLASS_NAME = \"scribdown-toc-list\";\n\n/**\n * 目录嵌套列表类名。\n */\nexport const TOC_LIST_NESTED_CLASS_NAME = \"scribdown-toc-list--nested\";\n\n/**\n * 目录条目类名前缀。\n */\nexport const TOC_ITEM_CLASS_PREFIX = \"scribdown-toc-item\";\n\n/**\n * 目录分支条目类名(拥有可折叠子层级)。\n */\nexport const TOC_ITEM_BRANCH_CLASS_NAME = \"scribdown-toc-item--branch\";\n\n/**\n * 目录分支条目折叠态类名(运行时由折叠按钮切换,控制隐藏嵌套列表与箭头朝向)。\n */\nexport const TOC_ITEM_COLLAPSED_CLASS_NAME = \"scribdown-toc-item--collapsed\";\n\n/**\n * 目录条目标题跳转链接类名:叶子与分支共用同一种 <a href=\"#id\"> 元素与跳转逻辑。\n */\nexport const TOC_LINK_CLASS_NAME = \"scribdown-toc-link\";\n\n/**\n * 目录标题链接「当前章节」高亮类名:scrollspy 命中当前可视区标题时切换,与工具栏当前指示器同步。\n */\nexport const TOC_LINK_ACTIVE_CLASS_NAME = \"scribdown-toc-link--active\";\n\n/**\n * 目录分支折叠按钮类名(与标题链接分离,专职展开/折叠,避免与跳转冲突)。\n */\nexport const TOC_TOGGLE_CLASS_NAME = \"scribdown-toc-toggle\";\n\n/**\n * 标题文本包裹层类名:用于按行绘制手绘高亮,确保多行标题每行都有底色。\n */\nexport const HEADING_MARK_CLASS_NAME = \"scribdown-heading-mark\";\n\n// ─── 图片 figure ───\n\n/**\n * 图片 figure 容器类名。\n */\nexport const IMAGE_FIGURE_CLASS_NAME = \"scribdown-image-figure\";\n\n/**\n * 图片边框容器类名。\n */\nexport const IMAGE_FRAME_CLASS_NAME = \"scribdown-image-frame\";\n\n/**\n * 图片元素类名。\n */\nexport const IMAGE_ELEMENT_CLASS_NAME = \"scribdown-image\";\n\n/**\n * 图片标题类名。\n */\nexport const IMAGE_CAPTION_CLASS_NAME = \"scribdown-image-caption\";\n\n/**\n * 图片加载失败状态类名。\n */\nexport const IMAGE_FRAME_FAILED_CLASS_NAME = \"scribdown-image-frame--failed\";\n\n/**\n * 图片加载完成状态类名。\n */\nexport const IMAGE_FRAME_LOADED_CLASS_NAME = \"scribdown-image-frame--loaded\";\n\n/**\n * 图片失败态占位内容类名。\n */\nexport const IMAGE_FALLBACK_CLASS_NAME = \"scribdown-image-fallback\";\n\n/**\n * 图片失败态图标类名。\n */\nexport const IMAGE_FALLBACK_ICON_CLASS_NAME = \"scribdown-image-fallback-icon\";\n\n/**\n * 图片失败态标题类名。\n */\nexport const IMAGE_FALLBACK_TEXT_CLASS_NAME = \"scribdown-image-fallback-text\";\n\n/**\n * 图片失败态来源类名。\n */\nexport const IMAGE_FALLBACK_SOURCE_CLASS_NAME = \"scribdown-image-fallback-source\";\n\n// ─── 视频 figure ───\n\n/**\n * 视频 figure 容器类名。\n */\nexport const VIDEO_FIGURE_CLASS_NAME = \"scribdown-video-figure\";\n\n/**\n * 视频边框容器类名。\n */\nexport const VIDEO_FRAME_CLASS_NAME = \"scribdown-video-frame\";\n\n/**\n * 视频元素类名。\n */\nexport const VIDEO_ELEMENT_CLASS_NAME = \"scribdown-video\";\n\n/**\n * 视频加载失败状态类名。\n */\nexport const VIDEO_FRAME_FAILED_CLASS_NAME = \"scribdown-video-frame--failed\";\n\n/**\n * 视频加载完成状态类名。\n */\nexport const VIDEO_FRAME_LOADED_CLASS_NAME = \"scribdown-video-frame--loaded\";\n\n/**\n * 视频失败态占位内容类名。\n */\nexport const VIDEO_FALLBACK_CLASS_NAME = \"scribdown-video-fallback\";\n\n/**\n * 视频失败态图标类名。\n */\nexport const VIDEO_FALLBACK_ICON_CLASS_NAME = \"scribdown-video-fallback-icon\";\n\n/**\n * 视频失败态标题类名。\n */\nexport const VIDEO_FALLBACK_TEXT_CLASS_NAME = \"scribdown-video-fallback-text\";\n\n/**\n * 视频失败态来源类名。\n */\nexport const VIDEO_FALLBACK_SOURCE_CLASS_NAME = \"scribdown-video-fallback-source\";\n\n// ─── 图片全图查看器 ───\n\n/**\n * 图片查看器 dialog 类名。\n */\nexport const IMAGE_VIEWER_DIALOG_CLASS_NAME = \"scribdown-image-viewer\";\n\n/**\n * 图片查看器缩放状态类名。\n */\nexport const IMAGE_VIEWER_ZOOMED_CLASS_NAME = \"scribdown-image-viewer--zoomed\";\n\n/**\n * 图片查看器拖拽状态类名。\n */\nexport const IMAGE_VIEWER_DRAGGING_CLASS_NAME = \"scribdown-image-viewer--dragging\";\n\n/**\n * 图片查看器标题区域类名(包裹 caption + hint)。\n */\nexport const IMAGE_VIEWER_CAPTION_GROUP_CLASS_NAME = \"scribdown-image-viewer__caption-group\";\n\n/**\n * 图片查看器快捷键提示类名。\n */\nexport const IMAGE_VIEWER_HINT_CLASS_NAME = \"scribdown-image-viewer__hint\";\n\n/**\n * 图片查看器顶部区域类名。\n */\nexport const IMAGE_VIEWER_CHROME_CLASS_NAME = \"scribdown-image-viewer__chrome\";\n\n/**\n * 图片查看器按钮区域类名。\n */\nexport const IMAGE_VIEWER_CONTROLS_CLASS_NAME = \"scribdown-image-viewer__controls\";\n\n/**\n * 图片查看器按钮类名。\n */\nexport const IMAGE_VIEWER_BUTTON_CLASS_NAME = \"scribdown-image-viewer__button\";\n\n/**\n * 图片查看器关闭按钮修饰类名。\n */\nexport const IMAGE_VIEWER_CLOSE_BUTTON_CLASS_NAME = \"scribdown-image-viewer__button--close\";\n\n/**\n * 图片查看器视口类名。\n */\nexport const IMAGE_VIEWER_VIEWPORT_CLASS_NAME = \"scribdown-image-viewer__viewport\";\n\n/**\n * 图片查看器图片类名。\n */\nexport const IMAGE_VIEWER_IMAGE_CLASS_NAME = \"scribdown-image-viewer__image\";\n\n/**\n * 图片查看器说明文字类名。\n */\nexport const IMAGE_VIEWER_CAPTION_CLASS_NAME = \"scribdown-image-viewer__caption\";\n\n/**\n * 图片查看器缩放数值类名。\n */\nexport const IMAGE_VIEWER_ZOOM_VALUE_CLASS_NAME = \"scribdown-image-viewer__zoom-value\";\n\n// ─── 代码块 chrome ───\n\n/**\n * 代码块外层 figure 类名。\n */\nexport const CODE_BLOCK_CLASS_NAME = \"scribdown-code-block\";\n\n/**\n * 代码块顶部 chrome 区域类名。\n */\nexport const CODE_BLOCK_CHROME_CLASS_NAME = \"scribdown-code-block__chrome\";\n\n/**\n * 代码块正文区域类名。\n */\nexport const CODE_BLOCK_BODY_CLASS_NAME = \"scribdown-code-block__body\";\n\n/**\n * 代码块语言标签类名。\n */\nexport const CODE_BLOCK_LANG_CLASS_NAME = \"scribdown-code-block__lang\";\n\n/**\n * 代码块复制按钮类名。\n */\nexport const CODE_BLOCK_COPY_CLASS_NAME = \"scribdown-code-block__copy\";\n\n/**\n * 代码块复制按钮图标类名。\n */\nexport const CODE_BLOCK_COPY_ICON_CLASS_NAME = \"scribdown-code-block__copy-icon\";\n\n/**\n * 代码块复制按钮\"复制\"态图标类名(默认显示)。\n */\nexport const CODE_BLOCK_COPY_ICON_COPY_CLASS_NAME = \"scribdown-code-block__copy-icon--copy\";\n\n/**\n * 代码块复制按钮\"已复制\"态图标类名(复制成功后显示)。\n */\nexport const CODE_BLOCK_COPY_ICON_CHECK_CLASS_NAME = \"scribdown-code-block__copy-icon--check\";\n\n/**\n * 代码块代码行类名。\n */\nexport const CODE_BLOCK_LINE_CLASS_NAME = \"scribdown-code-block__line\";\n\n/**\n * 代码块行号固定列类名。\n */\nexport const CODE_BLOCK_GUTTER_CLASS_NAME = \"scribdown-code-block__gutter\";\n\n/**\n * 代码块行号固定列中的单行节点类名。\n */\nexport const CODE_BLOCK_GUTTER_LINE_CLASS_NAME = \"scribdown-code-block__gutter-line\";\n\n// ─── Mermaid 图表 ───\n\n/**\n * Mermaid 图表外层 figure 容器类名。\n */\nexport const MERMAID_FIGURE_CLASS_NAME = \"scribdown-mermaid\";\n\n/**\n * Mermaid 图表顶部 chrome 容器类名。\n */\nexport const MERMAID_CHROME_CLASS_NAME = \"scribdown-mermaid__chrome\";\n\n/**\n * Mermaid 图表语言标签类名。\n */\nexport const MERMAID_LABEL_CLASS_NAME = \"scribdown-mermaid__label\";\n\n/**\n * Mermaid 图表正文容器类名。\n */\nexport const MERMAID_BODY_CLASS_NAME = \"scribdown-mermaid__body\";\n\n/**\n * Mermaid 图表 SVG 画布容器类名。\n */\nexport const MERMAID_CANVAS_CLASS_NAME = \"scribdown-mermaid__canvas\";\n\n/**\n * Mermaid 图表失败态容器类名。\n */\nexport const MERMAID_FALLBACK_CLASS_NAME = \"scribdown-mermaid__fallback\";\n\n/**\n * Mermaid 失败态图标类名。\n */\nexport const MERMAID_FALLBACK_ICON_CLASS_NAME = \"scribdown-mermaid__fallback-icon\";\n\n/**\n * Mermaid 失败态文案类名。\n */\nexport const MERMAID_FALLBACK_TEXT_CLASS_NAME = \"scribdown-mermaid__fallback-text\";\n\n/**\n * Mermaid 失败态源码块类名。\n */\nexport const MERMAID_FALLBACK_SOURCE_CLASS_NAME = \"scribdown-mermaid__fallback-source\";\n\n/**\n * Mermaid 加载/失败/完成态修饰类名。\n */\nexport const MERMAID_FIGURE_LOADING_CLASS_NAME = \"scribdown-mermaid--loading\";\n\n/**\n * MERMAID_FIGURE_FAILED_CLASS_NAME\n */\nexport const MERMAID_FIGURE_FAILED_CLASS_NAME = \"scribdown-mermaid--failed\";\n\n/**\n * MERMAID_FIGURE_LOADED_CLASS_NAME\n */\nexport const MERMAID_FIGURE_LOADED_CLASS_NAME = \"scribdown-mermaid--loaded\";\n\n/**\n * Mermaid 全屏按钮类名(位于 figure 右下角)。\n */\nexport const MERMAID_FULLSCREEN_BUTTON_CLASS_NAME = \"scribdown-mermaid__fullscreen\";\n\n// ─── Mermaid 全屏查看器 ───\n\n/**\n * Mermaid 全屏查看器 dialog 类名。\n */\nexport const MERMAID_VIEWER_DIALOG_CLASS_NAME = \"scribdown-mermaid-viewer\";\n\n/**\n * Mermaid 全屏查看器缩放进行中状态类名。\n */\nexport const MERMAID_VIEWER_ZOOMED_CLASS_NAME = \"scribdown-mermaid-viewer--zoomed\";\n\n/**\n * Mermaid 全屏查看器拖拽中状态类名。\n */\nexport const MERMAID_VIEWER_DRAGGING_CLASS_NAME = \"scribdown-mermaid-viewer--dragging\";\n\n/**\n * Mermaid 全屏查看器顶部 chrome 类名。\n */\nexport const MERMAID_VIEWER_CHROME_CLASS_NAME = \"scribdown-mermaid-viewer__chrome\";\n\n/**\n * Mermaid 全屏查看器 caption 类名。\n */\nexport const MERMAID_VIEWER_CAPTION_CLASS_NAME = \"scribdown-mermaid-viewer__caption\";\n\n/**\n * Mermaid 全屏查看器控件容器类名。\n */\nexport const MERMAID_VIEWER_CONTROLS_CLASS_NAME = \"scribdown-mermaid-viewer__controls\";\n\n/**\n * Mermaid 全屏查看器按钮类名。\n */\nexport const MERMAID_VIEWER_BUTTON_CLASS_NAME = \"scribdown-mermaid-viewer__button\";\n\n/**\n * Mermaid 全屏查看器关闭按钮修饰类名。\n */\nexport const MERMAID_VIEWER_CLOSE_BUTTON_CLASS_NAME = \"scribdown-mermaid-viewer__button--close\";\n\n/**\n * Mermaid 全屏查看器视口类名。\n */\nexport const MERMAID_VIEWER_VIEWPORT_CLASS_NAME = \"scribdown-mermaid-viewer__viewport\";\n\n/**\n * Mermaid 全屏查看器画布类名。\n */\nexport const MERMAID_VIEWER_CANVAS_CLASS_NAME = \"scribdown-mermaid-viewer__canvas\";\n\n/**\n * Mermaid 全屏查看器缩放百分比文本类名。\n */\nexport const MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME = \"scribdown-mermaid-viewer__zoom-value\";\n","/**\n * 平台类型枚举。\n */\nexport enum PlatformType {\n BrowserExtension = \"browser-extension\",\n VscodeExtension = \"vscode-extension\"\n}\n\n/**\n * 默认主题类型枚举。\n */\nexport enum ThemeType {\n Paper = \"paper\",\n Sketch = \"sketch\"\n}\n","import { PlatformType, ThemeType } from \"./enums\";\n\n/**\n * 当前项目展示名称。\n */\nexport const PROJECT_NAME = \"Scribdown\";\n\n/**\n * 当前项目主页地址(部署在 GitHub Pages 的项目站点,带 /scribdown/ 子路径)。\n */\nexport const PROJECT_HOMEPAGE_URL = \"https://share-man-man.github.io/scribdown/\";\n\n/**\n * 当前项目固定 Node.js LTS 版本。\n */\nexport const NODE_LTS_VERSION = \"24.18.0\";\n\n/**\n * 当前项目支持的平台列表。\n */\nexport const SUPPORTED_PLATFORMS: PlatformType[] = [\n PlatformType.BrowserExtension,\n PlatformType.VscodeExtension\n];\n\n/**\n * 当前项目默认主题。\n */\nexport const DEFAULT_THEME = ThemeType.Paper;\n\n/**\n * VS Code 预览命令 ID。\n */\nexport const OPEN_PREVIEW_COMMAND = \"scribdown.openPreview\";\n\n/**\n * Markdown 语言 ID。\n */\nexport const MARKDOWN_LANGUAGE_ID = \"markdown\";\n\n/**\n * Markdown 文件扩展名。\n * 用于兜底识别被宿主注册为其他语言 ID 的 Markdown 文件(如 VS Code 内置\n * prompt-basics 扩展把 SKILL.md 注册为 skill 语言)。\n */\nexport const MARKDOWN_FILE_EXTNAME = \".md\";\n\n/**\n * Scribdown 页面根容器 class。\n */\nexport const SCRIBDOWN_PAGE_CLASS_NAME = \"scribdown-page\";\n\n/**\n * Scribdown 应用布局容器 class。\n */\nexport const SCRIBDOWN_APP_CLASS_NAME = \"scribdown-app\";\n\n/**\n * Scribdown Markdown 渲染容器 class。\n */\nexport const SCRIBDOWN_MARKDOWN_CLASS_NAME = \"scribdown-markdown\";\n\n/**\n * 块级元素源码起始行号的 data 属性名,用于编辑器与预览的双向滚动对齐。\n */\nexport const SOURCE_LINE_DATA_ATTRIBUTE = \"data-source-line\";\n\n/**\n * 编辑器光标所在源码行对应预览块的高亮 class。\n */\nexport const SOURCE_LINE_ACTIVE_CLASS_NAME = \"scribdown-source-line-active\";\n\n/**\n * 高亮块位于预览视口外时,提示其方向的边缘弧形闪烁 class。\n */\nexport const SOURCE_LINE_OFFSCREEN_HINT_CLASS_NAME = \"scribdown-source-line-offscreen-hint\";\n\n/**\n * 边缘提示位于视口顶部(高亮块在视口上方)的修饰 class。\n */\nexport const SOURCE_LINE_OFFSCREEN_HINT_TOP_CLASS_NAME =\n \"scribdown-source-line-offscreen-hint--top\";\n\n/**\n * 边缘提示位于视口底部(高亮块在视口下方)的修饰 class。\n */\nexport const SOURCE_LINE_OFFSCREEN_HINT_BOTTOM_CLASS_NAME =\n \"scribdown-source-line-offscreen-hint--bottom\";\n\n/**\n * 浮动工具栏容器 class。\n */\nexport const SCRIBDOWN_TOOLBAR_CLASS_NAME = \"scribdown-toolbar\";\n\n/**\n * 工具栏单个按钮 class。\n */\nexport const SCRIBDOWN_TOOLBAR_BTN_CLASS_NAME = \"scribdown-toolbar-btn\";\n\n/**\n * 工具栏目录面板 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_CLASS_NAME =\n \"scribdown-toolbar-toc-panel\";\n\n/**\n * 工具栏「当前章节指示器」class:位于目录按钮左侧,随滚动展示当前可视区所属标题。\n */\nexport const SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME = \"scribdown-toolbar-current\";\n\n/**\n * 工具栏挂载时附加到 container 上的 class,把 container 标记为 TOC + 正文的 flex 容器。\n */\nexport const SCRIBDOWN_TOC_HOST_CLASS_NAME = \"scribdown-toc-host\";\n\n/**\n * 工具栏挂载时用于包裹 container 已有内容的 wrapper class,作为 flex 流中的正文 item,与 TOC 横向并列。\n * 自身 flex:1 填满 TOC 之外的剩余宽度,并作为内部滚动层的定位上下文(position:relative)。\n */\nexport const SCRIBDOWN_CONTENT_AREA_CLASS_NAME = \"scribdown-content-area\";\n\n/**\n * 正文内部滚动层 class:位于 .scribdown-content-area 内,position:absolute + inset:0 铺满父级,\n * 由它统一承载正文的横向与纵向滚动(外层 page / content-area 均不滚动)。\n */\nexport const SCRIBDOWN_CONTENT_SCROLL_CLASS_NAME = \"scribdown-content-scroll\";\n\n/**\n * 通用「细 + 主题色」滚动条 class:各滚动容器(目录侧栏、正文滚动层等)显式 opt-in 引入,\n * 统一标准 scrollbar-* 与 ::-webkit-scrollbar 兜底配色,避免在多个容器选择器上重复罗列。\n */\nexport const SCRIBDOWN_THIN_SCROLLBAR_CLASS_NAME = \"scribdown-scrollbar-thin\";\n\n/**\n * 工具栏「更多」下拉菜单容器 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_CLASS_NAME = \"scribdown-toolbar-menu\";\n\n/**\n * 工具栏「更多」下拉菜单单个菜单项 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_ITEM_CLASS_NAME =\n \"scribdown-toolbar-menu-item\";\n\n/**\n * 工具栏「更多」下拉菜单内子项分组容器 class(例:宽度选择下拉)。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_GROUP_CLASS_NAME =\n \"scribdown-toolbar-menu-group\";\n\n/**\n * 工具栏「更多」下拉菜单内子项 class(例:宽度具体档位)。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_CLASS_NAME =\n \"scribdown-toolbar-menu-sub-item\";\n\n/**\n * 工具栏菜单子项左侧勾选占位 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_MARK_CLASS_NAME =\n \"scribdown-toolbar-menu-sub-item-mark\";\n\n/**\n * 工具栏菜单子项文字标签 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_LABEL_CLASS_NAME =\n \"scribdown-toolbar-menu-sub-item-label\";\n\n/**\n * 工具栏菜单「下拉选择」触发行的文字标签 class(例:页面宽度)。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SELECT_LABEL_CLASS_NAME =\n \"scribdown-toolbar-menu-select-label\";\n\n/**\n * 工具栏菜单「下拉选择」触发行的当前值展示 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SELECT_VALUE_CLASS_NAME =\n \"scribdown-toolbar-menu-select-value\";\n\n/**\n * 工具栏菜单「下拉选择」触发行的 chevron 箭头 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SELECT_CHEVRON_CLASS_NAME =\n \"scribdown-toolbar-menu-select-chevron\";\n\n/**\n * 工具栏菜单分组内可折叠的档位列表容器 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_GROUP_CHOICES_CLASS_NAME =\n \"scribdown-toolbar-menu-group-choices\";\n\n/**\n * 工具栏目录侧栏顶部标题行 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_TITLE_CLASS_NAME =\n \"scribdown-toolbar-toc-panel-title\";\n\n/**\n * 工具栏目录侧栏右上角关闭按钮 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_CLOSE_CLASS_NAME =\n \"scribdown-toolbar-toc-panel-close\";\n\n/**\n * 工具栏目录侧栏「暂无标题」空态 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_EMPTY_CLASS_NAME =\n \"scribdown-toolbar-toc-panel-empty\";\n\n/**\n * 工具栏当前章节指示器的可见文本 class。\n */\nexport const SCRIBDOWN_TOOLBAR_CURRENT_TEXT_CLASS_NAME =\n \"scribdown-toolbar-current-text\";\n\n/**\n * localStorage 中保存页面内容宽度的 key。\n */\nexport const CONTENT_WIDTH_STORAGE_KEY = \"scribdown-content-width\";\n","/**\n * Scribdown 国际化「语言」契约。\n * 统一收敛支持的 locale、默认兜底、回落链,以及各宿主静态文件(Chrome _locales、\n * VS Code package.nls)的目录/后缀命名映射,禁止在其他包重新定义或硬编码。\n */\n\n/**\n * 支持的界面语言枚举(BCP-47 规范写法)。\n * 新增语言时在此追加,并在 {@link SUPPORTED_LOCALES}、{@link LOCALE_FALLBACKS}、\n * messages 目录三处补齐即可,无需改动接线逻辑。\n */\nexport enum LocaleType {\n /** 英语(默认兜底语言)。 */\n English = \"en\",\n /** 简体中文。 */\n SimplifiedChinese = \"zh-CN\",\n /** 繁体中文。 */\n TraditionalChinese = \"zh-TW\",\n /** 日语。 */\n Japanese = \"ja\",\n /** 韩语。 */\n Korean = \"ko\",\n /** 西班牙语。 */\n Spanish = \"es\",\n /** 法语。 */\n French = \"fr\",\n /** 德语。 */\n German = \"de\",\n /** 巴西葡萄牙语。 */\n BrazilianPortuguese = \"pt-BR\",\n /** 俄语。 */\n Russian = \"ru\"\n}\n\n/**\n * 默认兜底语言:无法识别宿主语言、或某语言缺失文案时最终回落到此。\n */\nexport const DEFAULT_LOCALE: LocaleType = LocaleType.English;\n\n/**\n * 界面语言偏好。`System` 表示未显式选择语言,跟随浏览器或编辑器的系统界面语言。\n * 宿主负责将该值持久化到自己的全局配置;共享层只负责解析,避免耦合 Web Storage。\n */\nexport enum LocalePreference {\n /** 跟随宿主系统界面语言。 */\n System = \"system\",\n /** 始终使用英语。 */\n English = LocaleType.English,\n /** 始终使用简体中文。 */\n SimplifiedChinese = LocaleType.SimplifiedChinese,\n /** 始终使用繁体中文。 */\n TraditionalChinese = LocaleType.TraditionalChinese,\n /** 始终使用日语。 */\n Japanese = LocaleType.Japanese,\n /** 始终使用韩语。 */\n Korean = LocaleType.Korean,\n /** 始终使用西班牙语。 */\n Spanish = LocaleType.Spanish,\n /** 始终使用法语。 */\n French = LocaleType.French,\n /** 始终使用德语。 */\n German = LocaleType.German,\n /** 始终使用巴西葡萄牙语。 */\n BrazilianPortuguese = LocaleType.BrazilianPortuguese,\n /** 始终使用俄语。 */\n Russian = LocaleType.Russian\n}\n\n/**\n * 当前支持的全部语言列表(用于校验入参、遍历生成静态文件)。\n */\nexport const SUPPORTED_LOCALES: LocaleType[] = [\n LocaleType.English,\n LocaleType.SimplifiedChinese,\n LocaleType.TraditionalChinese,\n LocaleType.Japanese,\n LocaleType.Korean,\n LocaleType.Spanish,\n LocaleType.French,\n LocaleType.German,\n LocaleType.BrazilianPortuguese,\n LocaleType.Russian\n];\n\n/** 工具栏与宿主配置共用的可选语言定义。 */\nexport interface LocalePreferenceOption {\n /** 持久化到宿主配置的显式语言偏好。 */\n preference: Exclude<LocalePreference, LocalePreference.System>;\n /** 此偏好对应的实际界面语言。 */\n locale: LocaleType;\n /** 语言的原生自称,跨界面语言保持一致,便于识别和切换。 */\n nativeLabel: string;\n}\n\n/** 语言选择器按稳定顺序展示的全部显式语言选项;跟随应用语言是未设置偏好的默认行为。 */\nexport const LOCALE_PREFERENCE_OPTIONS: readonly LocalePreferenceOption[] = [\n { preference: LocalePreference.English, locale: LocaleType.English, nativeLabel: \"English\" },\n {\n preference: LocalePreference.SimplifiedChinese,\n locale: LocaleType.SimplifiedChinese,\n nativeLabel: \"简体中文\"\n },\n {\n preference: LocalePreference.TraditionalChinese,\n locale: LocaleType.TraditionalChinese,\n nativeLabel: \"繁體中文\"\n },\n { preference: LocalePreference.Japanese, locale: LocaleType.Japanese, nativeLabel: \"日本語\" },\n { preference: LocalePreference.Korean, locale: LocaleType.Korean, nativeLabel: \"한국어\" },\n { preference: LocalePreference.Spanish, locale: LocaleType.Spanish, nativeLabel: \"Español\" },\n { preference: LocalePreference.French, locale: LocaleType.French, nativeLabel: \"Français\" },\n { preference: LocalePreference.German, locale: LocaleType.German, nativeLabel: \"Deutsch\" },\n {\n preference: LocalePreference.BrazilianPortuguese,\n locale: LocaleType.BrazilianPortuguese,\n nativeLabel: \"Português (Brasil)\"\n },\n { preference: LocalePreference.Russian, locale: LocaleType.Russian, nativeLabel: \"Русский\" }\n];\n\n/**\n * 各语言的回落链:命中语言缺失某 key 时,按顺序回落到链上语言,最终止于 {@link DEFAULT_LOCALE}。\n * 默认语言自身链为空。\n */\nexport const LOCALE_FALLBACKS: Record<LocaleType, LocaleType[]> = {\n [LocaleType.English]: [],\n [LocaleType.SimplifiedChinese]: [LocaleType.English],\n [LocaleType.TraditionalChinese]: [LocaleType.English],\n [LocaleType.Japanese]: [LocaleType.English],\n [LocaleType.Korean]: [LocaleType.English],\n [LocaleType.Spanish]: [LocaleType.English],\n [LocaleType.French]: [LocaleType.English],\n [LocaleType.German]: [LocaleType.English],\n [LocaleType.BrazilianPortuguese]: [LocaleType.English],\n [LocaleType.Russian]: [LocaleType.English]\n};\n\n/**\n * 语言 → Chrome 扩展 `_locales/<dir>/messages.json` 目录名映射。\n * Chrome 约定 locale 目录名用下划线(如 `zh_CN`)。\n */\nexport const CHROME_LOCALE_DIRECTORY: Record<LocaleType, string> = {\n [LocaleType.English]: \"en\",\n [LocaleType.SimplifiedChinese]: \"zh_CN\",\n [LocaleType.TraditionalChinese]: \"zh_TW\",\n [LocaleType.Japanese]: \"ja\",\n [LocaleType.Korean]: \"ko\",\n [LocaleType.Spanish]: \"es\",\n [LocaleType.French]: \"fr\",\n [LocaleType.German]: \"de\",\n [LocaleType.BrazilianPortuguese]: \"pt_BR\",\n [LocaleType.Russian]: \"ru\"\n};\n\n/**\n * 语言 → VS Code `package.nls[.<suffix>].json` 文件名后缀映射。\n * VS Code 约定后缀用小写连字符(如 `zh-cn`);默认语言写入无后缀的 `package.nls.json`。\n */\nexport const VSCODE_NLS_SUFFIX: Record<LocaleType, string> = {\n [LocaleType.English]: \"\",\n [LocaleType.SimplifiedChinese]: \"zh-cn\",\n [LocaleType.TraditionalChinese]: \"zh-tw\",\n [LocaleType.Japanese]: \"ja\",\n [LocaleType.Korean]: \"ko\",\n [LocaleType.Spanish]: \"es\",\n [LocaleType.French]: \"fr\",\n [LocaleType.German]: \"de\",\n [LocaleType.BrazilianPortuguese]: \"pt-br\",\n [LocaleType.Russian]: \"ru\"\n};\n\n/**\n * 把宿主上报的原始语言标签归一化成受支持的 {@link LocaleType}。\n * 逐级降级匹配:先精确命中,再按主语言子标签匹配(如 `zh-Hans-CN` → `zh-CN`),\n * 全不命中回落到 {@link DEFAULT_LOCALE}。\n * @param rawLocale 宿主原始语言标签(如 `navigator.language`、`vscode.env.language`),大小写与分隔符不限。\n * @returns 归一化后的受支持语言。\n */\nexport function normalizeLocale(rawLocale: string | null | undefined): LocaleType {\n if (!rawLocale) {\n return DEFAULT_LOCALE;\n }\n\n /** 统一成小写、连字符分隔的标签,兼容下划线写法(如 `zh_CN`)。 */\n const normalizedTag = rawLocale.toLowerCase().replace(/_/g, \"-\");\n\n // 关键步骤:精确命中受支持语言(大小写无关)。\n const exactMatch = SUPPORTED_LOCALES.find((locale) => locale.toLowerCase() === normalizedTag);\n if (exactMatch) {\n return exactMatch;\n }\n\n // 关键步骤:中文同时支持简体与繁体,需在主语言回落前依据 script / region 区分。\n if (normalizedTag.startsWith(\"zh-\")) {\n /** 指示繁体中文的 BCP-47 script 或常见地区子标签。 */\n const traditionalChineseSubtags = [\"hant\", \"tw\", \"hk\", \"mo\"];\n /** 分隔后的中文语言子标签。 */\n const chineseSubtags = normalizedTag.split(\"-\").slice(1);\n if (chineseSubtags.some((subtag) => traditionalChineseSubtags.includes(subtag))) {\n return LocaleType.TraditionalChinese;\n }\n return LocaleType.SimplifiedChinese;\n }\n\n /** 原始标签的主语言子标签(如 `ja-jp` → `ja`)。 */\n const primarySubtag = normalizedTag.split(\"-\")[0];\n\n // 关键步骤:按主语言子标签匹配,命中同语族的首个受支持语言(如各种 zh-* → zh-CN)。\n const primaryMatch = SUPPORTED_LOCALES.find(\n (locale) => locale.toLowerCase().split(\"-\")[0] === primarySubtag\n );\n if (primaryMatch) {\n return primaryMatch;\n }\n\n return DEFAULT_LOCALE;\n}\n\n/**\n * 解析宿主保存的语言偏好。非法值安全回落到 {@link LocalePreference.System}。\n * @param rawPreference 宿主配置或存储中读到的原始值。\n * @returns 合法的语言偏好。\n */\nexport function normalizeLocalePreference(rawPreference: unknown): LocalePreference {\n return isLocalePreference(rawPreference) ? rawPreference : LocalePreference.System;\n}\n\n/**\n * 判断值是否为受支持的语言偏好。\n * @param value 待校验的原始值。\n * @returns 值为合法 {@link LocalePreference} 时返回 true。\n */\nexport function isLocalePreference(value: unknown): value is LocalePreference {\n switch (value) {\n case LocalePreference.English:\n case LocalePreference.SimplifiedChinese:\n case LocalePreference.TraditionalChinese:\n case LocalePreference.Japanese:\n case LocalePreference.Korean:\n case LocalePreference.Spanish:\n case LocalePreference.French:\n case LocalePreference.German:\n case LocalePreference.BrazilianPortuguese:\n case LocalePreference.Russian:\n case LocalePreference.System:\n return true;\n default:\n return false;\n }\n}\n","/**\n * Scribdown 全量文案目录(唯一源)。\n * 三处运行时(浏览器 popup/viewer、共享工具栏、VS Code 宿主/webview)与两处静态清单\n * (Chrome `_locales`、VS Code `package.nls`)均以此为准,禁止在各端硬编码或重复定义。\n * 插值占位统一用 `{name}` 语法,由 translator 在运行时替换。\n */\n\nimport { LocaleType } from \"./locales\";\nimport type { Messages } from \"./messages.types\";\n\n/**\n * 英语文案(默认兜底语言)。\n */\nconst EN_MESSAGES: Messages = {\n \"toolbar.toc\": \"Contents\",\n \"toolbar.tocClose\": \"Close contents\",\n \"toolbar.tocEmpty\": \"No headings\",\n \"toolbar.more\": \"More\",\n \"toolbar.pageWidth\": \"Page width\",\n \"toolbar.backTop\": \"Back to top\",\n \"toolbar.language\": \"Language\",\n \"toolbar.languageSystem\": \"Follow application language\",\n \"toolbar.languageEnglish\": \"English\",\n \"toolbar.languageSimplifiedChinese\": \"Simplified Chinese\",\n \"toolbar.languageTraditionalChinese\": \"Traditional Chinese\",\n \"toolbar.languageJapanese\": \"Japanese\",\n \"toolbar.languageKorean\": \"Korean\",\n \"toolbar.languageSpanish\": \"Spanish\",\n \"toolbar.languageFrench\": \"French\",\n \"toolbar.languageGerman\": \"German\",\n \"toolbar.languageBrazilianPortuguese\": \"Portuguese (Brazil)\",\n \"toolbar.languageRussian\": \"Russian\",\n \"toolbar.about\": \"About\",\n\n \"code.copy\": \"Copy code\",\n \"code.copied\": \"Copied\",\n\n \"mermaid.renderFailed\": \"Diagram failed to render\",\n \"mermaid.fullscreenButton\": \"View diagram fullscreen\",\n \"mermaid.fullscreen\": \"View Mermaid diagram fullscreen\",\n \"mermaid.zoomIn\": \"Zoom in diagram\",\n \"mermaid.zoomOut\": \"Zoom out diagram\",\n \"mermaid.zoomReset\": \"Reset zoom\",\n \"mermaid.close\": \"Close fullscreen view\",\n\n \"image.viewFull\": \"View full image\",\n \"image.viewFullOf\": \"View full image: {alt}\",\n \"image.loadFailed\": \"Image failed to load\",\n \"image.hint\":\n \"Shortcuts: +/= zoom in · - zoom out · 0 reset · Esc close · drag to pan · Ctrl/⌘ + wheel to zoom\",\n \"image.zoomIn\": \"Zoom in image\",\n \"image.zoomOut\": \"Zoom out image\",\n \"image.zoomReset\": \"Reset zoom\",\n \"image.close\": \"Close image viewer\",\n\n \"video.loadFailed\": \"Video failed to load\",\n\n \"toc.label\": \"Contents\",\n \"toc.toggle\": \"Expand or collapse subheadings\",\n\n \"frontmatter.label\": \"Metadata\",\n\n \"popup.enableAria\": \"Enable Scribdown\",\n \"popup.enabledTitle\": \"Scribdown enabled\",\n \"popup.disabledTitle\": \"Scribdown disabled\",\n \"popup.disabledEmpty\": \"Disabled. Markdown pages are no longer taken over.\",\n \"popup.fileAccessBannerTitle\": \"⚠️ “Allow access to file URLs” is off\",\n \"popup.fileAccessBannerText\":\n \"Local .md files can’t be taken over or auto-refreshed by Scribdown. Turn the switch on to enable it.\",\n \"popup.fileAccessAction\": \"Turn on\",\n \"popup.fileAccessActionAria\": \"Open the extension details page to allow access to file URLs\",\n \"popup.autoRefreshGroupAria\": \"Local file auto-refresh settings\",\n \"popup.autoRefreshLabel\": \"Auto-refresh local files\",\n \"popup.autoRefreshInfoAria\": \"About local file auto-refresh\",\n \"popup.autoRefreshOnTip\": \"On: re-fetches the local .md file every {seconds}s\",\n \"popup.autoRefreshOffTip\": \"Off: reload the page manually after the local .md changes\",\n \"popup.intervalLabel\": \"Refresh interval\",\n \"popup.intervalInfoAria\": \"Refresh interval range\",\n \"popup.intervalRangeTip\": \"Range {min}–{max} seconds\",\n \"popup.intervalUnit\": \"s\",\n \"popup.savedTip\": \"Saved. Reload the current page to apply.\",\n\n \"browser.disabledTitle\": \"Scribdown (disabled)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · needs “Allow access to file URLs”\",\n\n \"viewer.errorHeading\": \"Scribdown can’t render this file\",\n \"viewer.viewRawLink\": \"View raw source\",\n \"viewer.errorIframe\": \"The Scribdown viewer can’t load inside an iframe.\",\n \"viewer.errorMissingSrc\": \"Missing src parameter.\",\n \"viewer.errorRequestFailed\": \"Request failed: {message}\",\n \"viewer.errorNotMarkdown\": \"Response is not Markdown (Content-Type: {contentType}).\",\n \"viewer.contentTypeUndeclared\": \"undeclared\",\n \"viewer.errorEmpty\": \"The file is empty.\",\n \"viewer.errorUnsupportedProtocol\":\n \"Unsupported protocol ({protocol}); only http / https are allowed.\",\n \"viewer.errorInvalidUrl\": \"The src parameter is not a valid URL.\",\n\n \"vscode.noMarkdownWarning\": \"Open a Markdown document first, then run Scribdown preview.\",\n \"vscode.openLinkFailed\": \"Can’t open link: {href}\",\n \"vscode.linkTargetMissing\": \"Link target not found: {path}\",\n \"vscode.renderFailed\": \"Render failed\",\n\n \"manifest.browserName\": \"Scribdown\",\n \"manifest.browserDescription\": \"Handdrawn markdown rendering experience.\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown Preview\",\n \"manifest.vscodeDescription\": \"Handdrawn-style Markdown preview for VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Open Scribdown Preview\",\n \"manifest.vscodeLanguageDescription\": \"Choose the language used by Scribdown's interface.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Follow the VS Code display language.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Use English.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Use Simplified Chinese.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Use Traditional Chinese.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Use Japanese.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Use Korean.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Use Spanish.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Use French.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Use German.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Use Portuguese (Brazil).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Use Russian.\"\n};\n\n/**\n * 简体中文文案。\n */\nconst ZH_CN_MESSAGES: Messages = {\n \"toolbar.toc\": \"目录\",\n \"toolbar.tocClose\": \"关闭目录\",\n \"toolbar.tocEmpty\": \"暂无标题\",\n \"toolbar.more\": \"更多\",\n \"toolbar.pageWidth\": \"页面宽度\",\n \"toolbar.backTop\": \"回到顶部\",\n \"toolbar.language\": \"语言\",\n \"toolbar.languageSystem\": \"跟随应用语言\",\n \"toolbar.languageEnglish\": \"English\",\n \"toolbar.languageSimplifiedChinese\": \"简体中文\",\n \"toolbar.languageTraditionalChinese\": \"繁體中文\",\n \"toolbar.languageJapanese\": \"日语\",\n \"toolbar.languageKorean\": \"韩语\",\n \"toolbar.languageSpanish\": \"西班牙语\",\n \"toolbar.languageFrench\": \"法语\",\n \"toolbar.languageGerman\": \"德语\",\n \"toolbar.languageBrazilianPortuguese\": \"巴西葡萄牙语\",\n \"toolbar.languageRussian\": \"俄语\",\n \"toolbar.about\": \"关于\",\n\n \"code.copy\": \"复制代码\",\n \"code.copied\": \"已复制\",\n\n \"mermaid.renderFailed\": \"图表渲染失败\",\n \"mermaid.fullscreenButton\": \"全屏查看图表\",\n \"mermaid.fullscreen\": \"全屏查看 Mermaid 图表\",\n \"mermaid.zoomIn\": \"放大图表\",\n \"mermaid.zoomOut\": \"缩小图表\",\n \"mermaid.zoomReset\": \"重置缩放\",\n \"mermaid.close\": \"关闭全屏查看\",\n\n \"image.viewFull\": \"查看全图\",\n \"image.viewFullOf\": \"查看全图:{alt}\",\n \"image.loadFailed\": \"图片加载失败\",\n \"image.hint\":\n \"快捷键:+/= 放大 · - 缩小 · 0 重置 · Esc 关闭 · 鼠标拖拽可平移 · Ctrl/⌘ + 滚轮缩放\",\n \"image.zoomIn\": \"放大图片\",\n \"image.zoomOut\": \"缩小图片\",\n \"image.zoomReset\": \"重置缩放\",\n \"image.close\": \"关闭全图查看\",\n\n \"video.loadFailed\": \"视频加载失败\",\n\n \"toc.label\": \"目录\",\n \"toc.toggle\": \"展开或折叠子目录\",\n\n \"frontmatter.label\": \"元数据\",\n\n \"popup.enableAria\": \"启用 Scribdown\",\n \"popup.enabledTitle\": \"已启用 Scribdown\",\n \"popup.disabledTitle\": \"已关闭 Scribdown\",\n \"popup.disabledEmpty\": \"已关闭,访问 .md 不再被接管。\",\n \"popup.fileAccessBannerTitle\": \"⚠️ 「允许访问文件网址」未开启\",\n \"popup.fileAccessBannerText\":\n \"本地 .md 文件无法被 Scribdown 接管与自动刷新。打开开关后即可生效。\",\n \"popup.fileAccessAction\": \"去开启\",\n \"popup.fileAccessActionAria\": \"打开扩展详情页以开启允许访问文件网址\",\n \"popup.autoRefreshGroupAria\": \"本地文件自动刷新设置\",\n \"popup.autoRefreshLabel\": \"本地文件自动刷新\",\n \"popup.autoRefreshInfoAria\": \"查看本地文件自动刷新说明\",\n \"popup.autoRefreshOnTip\": \"已开启:每 {seconds} 秒回拉一次本地 .md 文件\",\n \"popup.autoRefreshOffTip\": \"已关闭:本地 .md 更新后需手动刷新页面\",\n \"popup.intervalLabel\": \"刷新间隔\",\n \"popup.intervalInfoAria\": \"查看刷新间隔取值范围\",\n \"popup.intervalRangeTip\": \"取值范围 {min} – {max} 秒\",\n \"popup.intervalUnit\": \"秒\",\n \"popup.savedTip\": \"切换已保存,刷新当前页面后生效。\",\n\n \"browser.disabledTitle\": \"Scribdown(已关闭)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · 需开启「允许访问文件网址」\",\n\n \"viewer.errorHeading\": \"Scribdown 无法渲染该文件\",\n \"viewer.viewRawLink\": \"查看原始链接\",\n \"viewer.errorIframe\": \"Scribdown viewer 不允许在 iframe 中加载。\",\n \"viewer.errorMissingSrc\": \"缺少 src 参数。\",\n \"viewer.errorRequestFailed\": \"请求失败:{message}\",\n \"viewer.errorNotMarkdown\": \"响应不是 Markdown 类型(Content-Type: {contentType})。\",\n \"viewer.contentTypeUndeclared\": \"未声明\",\n \"viewer.errorEmpty\": \"文件内容为空。\",\n \"viewer.errorUnsupportedProtocol\": \"不支持的协议({protocol}),仅允许 http / https。\",\n \"viewer.errorInvalidUrl\": \"src 参数不是合法的 URL。\",\n\n \"vscode.noMarkdownWarning\": \"请先打开一个 Markdown 文档,再执行 Scribdown 预览。\",\n \"vscode.openLinkFailed\": \"无法打开链接:{href}\",\n \"vscode.linkTargetMissing\": \"链接目标不存在:{path}\",\n \"vscode.renderFailed\": \"渲染失败\",\n\n \"manifest.browserName\": \"Scribdown\",\n \"manifest.browserDescription\": \"手绘风格的 Markdown 渲染体验。\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown 预览\",\n \"manifest.vscodeDescription\": \"VS Code 的手绘风格 Markdown 预览。\",\n \"manifest.vscodeCommandTitle\": \"打开 Scribdown 预览\",\n \"manifest.vscodeLanguageDescription\": \"选择 Scribdown 界面使用的语言。\",\n \"manifest.vscodeLanguageSystemDescription\": \"跟随 VS Code 显示语言。\",\n \"manifest.vscodeLanguageEnglishDescription\": \"使用英语。\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"使用简体中文。\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"使用繁體中文。\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"使用日语。\",\n \"manifest.vscodeLanguageKoreanDescription\": \"使用韩语。\",\n \"manifest.vscodeLanguageSpanishDescription\": \"使用西班牙语。\",\n \"manifest.vscodeLanguageFrenchDescription\": \"使用法语。\",\n \"manifest.vscodeLanguageGermanDescription\": \"使用德语。\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"使用巴西葡萄牙语。\",\n \"manifest.vscodeLanguageRussianDescription\": \"使用俄语。\"\n};\n\n/** 繁体中文文案。 */\nconst ZH_TW_MESSAGES: Messages = {\n ...ZH_CN_MESSAGES,\n \"toolbar.toc\": \"目錄\",\n \"toolbar.tocClose\": \"關閉目錄\",\n \"toolbar.tocEmpty\": \"暫無標題\",\n \"toolbar.more\": \"更多\",\n \"toolbar.pageWidth\": \"頁面寬度\",\n \"toolbar.backTop\": \"回到頂部\",\n \"toolbar.language\": \"語言\",\n \"toolbar.languageSystem\": \"跟隨應用程式語言\",\n \"toolbar.languageSimplifiedChinese\": \"簡體中文\",\n \"toolbar.languageTraditionalChinese\": \"繁體中文\",\n \"toolbar.languageJapanese\": \"日語\",\n \"toolbar.languageKorean\": \"韓語\",\n \"toolbar.languageSpanish\": \"西班牙語\",\n \"toolbar.about\": \"關於\",\n \"code.copy\": \"複製程式碼\",\n \"code.copied\": \"已複製\",\n \"mermaid.renderFailed\": \"圖表轉譯失敗\",\n \"mermaid.fullscreenButton\": \"全螢幕檢視圖表\",\n \"mermaid.fullscreen\": \"全螢幕檢視 Mermaid 圖表\",\n \"mermaid.zoomIn\": \"放大圖表\",\n \"mermaid.zoomOut\": \"縮小圖表\",\n \"mermaid.zoomReset\": \"重設縮放\",\n \"mermaid.close\": \"關閉全螢幕檢視\",\n \"image.viewFull\": \"檢視完整圖片\",\n \"image.viewFullOf\": \"檢視完整圖片:{alt}\",\n \"image.loadFailed\": \"圖片載入失敗\",\n \"image.hint\": \"快速鍵:+/= 放大 · - 縮小 · 0 重設 · Esc 關閉 · 拖曳可平移 · Ctrl/⌘ + 滾輪縮放\",\n \"image.zoomIn\": \"放大圖片\",\n \"image.zoomOut\": \"縮小圖片\",\n \"image.zoomReset\": \"重設縮放\",\n \"image.close\": \"關閉圖片檢視器\",\n \"video.loadFailed\": \"影片載入失敗\",\n \"toc.label\": \"目錄\",\n \"toc.toggle\": \"展開或摺疊子目錄\",\n \"frontmatter.label\": \"中繼資料\",\n \"popup.enableAria\": \"啟用 Scribdown\",\n \"popup.enabledTitle\": \"已啟用 Scribdown\",\n \"popup.disabledTitle\": \"已關閉 Scribdown\",\n \"popup.disabledEmpty\": \"已關閉,Markdown 頁面不再由 Scribdown 接管。\",\n \"popup.fileAccessBannerTitle\": \"⚠️「允許存取檔案網址」未開啟\",\n \"popup.fileAccessBannerText\": \"Scribdown 無法接管或自動重新整理本機 .md 檔案。開啟開關即可使用。\",\n \"popup.fileAccessAction\": \"前往開啟\",\n \"popup.fileAccessActionAria\": \"開啟擴充功能詳細資料頁面以允許存取檔案網址\",\n \"popup.autoRefreshGroupAria\": \"本機檔案自動重新整理設定\",\n \"popup.autoRefreshLabel\": \"自動重新整理本機檔案\",\n \"popup.autoRefreshInfoAria\": \"關於本機檔案自動重新整理\",\n \"popup.autoRefreshOnTip\": \"已開啟:每 {seconds} 秒重新讀取一次本機 .md 檔案\",\n \"popup.autoRefreshOffTip\": \"已關閉:本機 .md 檔案變更後需手動重新整理頁面\",\n \"popup.intervalLabel\": \"重新整理間隔\",\n \"popup.intervalInfoAria\": \"重新整理間隔範圍\",\n \"popup.intervalRangeTip\": \"範圍 {min}–{max} 秒\",\n \"popup.intervalUnit\": \"秒\",\n \"popup.savedTip\": \"已儲存。重新整理目前頁面後生效。\",\n \"browser.disabledTitle\": \"Scribdown(已關閉)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · 需開啟「允許存取檔案網址」\",\n \"viewer.errorHeading\": \"Scribdown 無法轉譯此檔案\",\n \"viewer.viewRawLink\": \"檢視原始連結\",\n \"viewer.errorIframe\": \"Scribdown 檢視器無法在 iframe 中載入。\",\n \"viewer.errorMissingSrc\": \"缺少 src 參數。\",\n \"viewer.errorRequestFailed\": \"請求失敗:{message}\",\n \"viewer.errorNotMarkdown\": \"回應不是 Markdown 類型(Content-Type:{contentType})。\",\n \"viewer.contentTypeUndeclared\": \"未宣告\",\n \"viewer.errorEmpty\": \"檔案內容為空。\",\n \"viewer.errorUnsupportedProtocol\": \"不支援的通訊協定({protocol});僅允許 http / https。\",\n \"viewer.errorInvalidUrl\": \"src 參數不是有效的 URL。\",\n \"vscode.noMarkdownWarning\": \"請先開啟 Markdown 文件,再執行 Scribdown 預覽。\",\n \"vscode.openLinkFailed\": \"無法開啟連結:{href}\",\n \"vscode.linkTargetMissing\": \"找不到連結目標:{path}\",\n \"vscode.renderFailed\": \"轉譯失敗\",\n \"manifest.browserDescription\": \"手繪風格的 Markdown 轉譯體驗。\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown 預覽\",\n \"manifest.vscodeDescription\": \"VS Code 的手繪風格 Markdown 預覽。\",\n \"manifest.vscodeCommandTitle\": \"開啟 Scribdown 預覽\",\n \"manifest.vscodeLanguageDescription\": \"選擇 Scribdown 介面使用的語言。\",\n \"manifest.vscodeLanguageSystemDescription\": \"跟隨 VS Code 顯示語言。\",\n \"manifest.vscodeLanguageEnglishDescription\": \"使用英文。\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"使用簡體中文。\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"使用繁體中文。\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"使用日語。\",\n \"manifest.vscodeLanguageKoreanDescription\": \"使用韓語。\",\n \"manifest.vscodeLanguageSpanishDescription\": \"使用西班牙語。\"\n};\n\n/** 日语文案。 */\nconst JA_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"目次\",\n \"toolbar.tocClose\": \"目次を閉じる\",\n \"toolbar.tocEmpty\": \"見出しがありません\",\n \"toolbar.more\": \"その他\",\n \"toolbar.pageWidth\": \"ページ幅\",\n \"toolbar.backTop\": \"先頭に戻る\",\n \"toolbar.language\": \"言語\",\n \"toolbar.languageSystem\": \"アプリの表示言語に従う\",\n \"toolbar.languageSimplifiedChinese\": \"簡体字中国語\",\n \"toolbar.languageTraditionalChinese\": \"繁体字中国語\",\n \"toolbar.languageJapanese\": \"日本語\",\n \"toolbar.languageKorean\": \"韓国語\",\n \"toolbar.languageSpanish\": \"スペイン語\",\n \"toolbar.about\": \"について\",\n \"code.copy\": \"コードをコピー\",\n \"code.copied\": \"コピーしました\",\n \"mermaid.renderFailed\": \"図をレンダリングできませんでした\",\n \"mermaid.fullscreenButton\": \"図を全画面表示\",\n \"mermaid.fullscreen\": \"Mermaid 図を全画面表示\",\n \"mermaid.zoomIn\": \"図を拡大\",\n \"mermaid.zoomOut\": \"図を縮小\",\n \"mermaid.zoomReset\": \"ズームをリセット\",\n \"mermaid.close\": \"全画面表示を閉じる\",\n \"image.viewFull\": \"画像を全体表示\",\n \"image.viewFullOf\": \"画像を全体表示:{alt}\",\n \"image.loadFailed\": \"画像を読み込めませんでした\",\n \"image.hint\":\n \"ショートカット:+/= 拡大 · - 縮小 · 0 リセット · Esc 閉じる · ドラッグで移動 · Ctrl/⌘ + ホイールで拡大縮小\",\n \"image.zoomIn\": \"画像を拡大\",\n \"image.zoomOut\": \"画像を縮小\",\n \"image.zoomReset\": \"ズームをリセット\",\n \"image.close\": \"画像ビューアを閉じる\",\n \"video.loadFailed\": \"動画を読み込めませんでした\",\n \"toc.label\": \"目次\",\n \"toc.toggle\": \"小見出しを展開または折りたたむ\",\n \"frontmatter.label\": \"メタデータ\",\n \"popup.enableAria\": \"Scribdown を有効にする\",\n \"popup.enabledTitle\": \"Scribdown は有効です\",\n \"popup.disabledTitle\": \"Scribdown は無効です\",\n \"popup.disabledEmpty\": \"無効です。Markdown ページは Scribdown で表示されなくなります。\",\n \"popup.fileAccessBannerTitle\": \"⚠️「ファイルの URL へのアクセスを許可」がオフです\",\n \"popup.fileAccessBannerText\":\n \"ローカルの .md ファイルを Scribdown で表示または自動更新できません。スイッチをオンにしてください。\",\n \"popup.fileAccessAction\": \"有効にする\",\n \"popup.fileAccessActionAria\": \"拡張機能の詳細ページを開き、ファイル URL へのアクセスを許可する\",\n \"popup.autoRefreshGroupAria\": \"ローカルファイルの自動更新設定\",\n \"popup.autoRefreshLabel\": \"ローカルファイルを自動更新\",\n \"popup.autoRefreshInfoAria\": \"ローカルファイルの自動更新について\",\n \"popup.autoRefreshOnTip\": \"オン:{seconds} 秒ごとにローカルの .md ファイルを再取得します\",\n \"popup.autoRefreshOffTip\":\n \"オフ:ローカルの .md ファイルを変更後、手動でページを再読み込みします\",\n \"popup.intervalLabel\": \"更新間隔\",\n \"popup.intervalInfoAria\": \"更新間隔の範囲\",\n \"popup.intervalRangeTip\": \"範囲:{min}~{max} 秒\",\n \"popup.intervalUnit\": \"秒\",\n \"popup.savedTip\": \"保存しました。現在のページを再読み込みして適用してください。\",\n \"browser.disabledTitle\": \"Scribdown(無効)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · 「ファイルの URL へのアクセスを許可」が必要です\",\n \"viewer.errorHeading\": \"Scribdown はこのファイルをレンダリングできません\",\n \"viewer.viewRawLink\": \"元のソースを表示\",\n \"viewer.errorIframe\": \"Scribdown ビューアは iframe 内では読み込めません。\",\n \"viewer.errorMissingSrc\": \"src パラメータがありません。\",\n \"viewer.errorRequestFailed\": \"リクエストに失敗しました:{message}\",\n \"viewer.errorNotMarkdown\": \"応答は Markdown ではありません(Content-Type:{contentType})。\",\n \"viewer.contentTypeUndeclared\": \"未指定\",\n \"viewer.errorEmpty\": \"ファイルは空です。\",\n \"viewer.errorUnsupportedProtocol\":\n \"未対応のプロトコル({protocol})です。http / https のみ使用できます。\",\n \"viewer.errorInvalidUrl\": \"src パラメータが有効な URL ではありません。\",\n \"vscode.noMarkdownWarning\":\n \"まず Markdown ドキュメントを開いてから、Scribdown プレビューを実行してください。\",\n \"vscode.openLinkFailed\": \"リンクを開けません:{href}\",\n \"vscode.linkTargetMissing\": \"リンク先が見つかりません:{path}\",\n \"vscode.renderFailed\": \"レンダリングに失敗しました\",\n \"manifest.browserDescription\": \"手書き風の Markdown レンダリング体験。\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown プレビュー\",\n \"manifest.vscodeDescription\": \"VS Code 用の手書き風 Markdown プレビュー。\",\n \"manifest.vscodeCommandTitle\": \"Scribdown プレビューを開く\",\n \"manifest.vscodeLanguageDescription\": \"Scribdown の表示言語を選択します。\",\n \"manifest.vscodeLanguageSystemDescription\": \"VS Code の表示言語に従う。\",\n \"manifest.vscodeLanguageEnglishDescription\": \"英語を使用する。\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"簡体字中国語を使用する。\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"繁体字中国語を使用する。\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"日本語を使用する。\",\n \"manifest.vscodeLanguageKoreanDescription\": \"韓国語を使用する。\",\n \"manifest.vscodeLanguageSpanishDescription\": \"スペイン語を使用する。\"\n};\n\n/** 韩语文案。 */\nconst KO_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"목차\",\n \"toolbar.tocClose\": \"목차 닫기\",\n \"toolbar.tocEmpty\": \"제목이 없습니다\",\n \"toolbar.more\": \"더보기\",\n \"toolbar.pageWidth\": \"페이지 너비\",\n \"toolbar.backTop\": \"맨 위로\",\n \"toolbar.language\": \"언어\",\n \"toolbar.languageSystem\": \"앱 표시 언어 따르기\",\n \"toolbar.languageSimplifiedChinese\": \"중국어 간체\",\n \"toolbar.languageTraditionalChinese\": \"중국어 번체\",\n \"toolbar.languageJapanese\": \"일본어\",\n \"toolbar.languageKorean\": \"한국어\",\n \"toolbar.languageSpanish\": \"스페인어\",\n \"toolbar.about\": \"정보\",\n \"code.copy\": \"코드 복사\",\n \"code.copied\": \"복사됨\",\n \"mermaid.renderFailed\": \"다이어그램을 렌더링하지 못했습니다\",\n \"mermaid.fullscreenButton\": \"다이어그램 전체 화면 보기\",\n \"mermaid.fullscreen\": \"Mermaid 다이어그램 전체 화면 보기\",\n \"mermaid.zoomIn\": \"다이어그램 확대\",\n \"mermaid.zoomOut\": \"다이어그램 축소\",\n \"mermaid.zoomReset\": \"확대/축소 재설정\",\n \"mermaid.close\": \"전체 화면 닫기\",\n \"image.viewFull\": \"전체 이미지 보기\",\n \"image.viewFullOf\": \"전체 이미지 보기: {alt}\",\n \"image.loadFailed\": \"이미지를 불러오지 못했습니다\",\n \"image.hint\":\n \"단축키: +/= 확대 · - 축소 · 0 재설정 · Esc 닫기 · 드래그로 이동 · Ctrl/⌘ + 휠로 확대/축소\",\n \"image.zoomIn\": \"이미지 확대\",\n \"image.zoomOut\": \"이미지 축소\",\n \"image.zoomReset\": \"확대/축소 재설정\",\n \"image.close\": \"이미지 뷰어 닫기\",\n \"video.loadFailed\": \"동영상을 불러오지 못했습니다\",\n \"toc.label\": \"목차\",\n \"toc.toggle\": \"하위 제목 펼치기 또는 접기\",\n \"frontmatter.label\": \"메타데이터\",\n \"popup.enableAria\": \"Scribdown 사용\",\n \"popup.enabledTitle\": \"Scribdown 켜짐\",\n \"popup.disabledTitle\": \"Scribdown 꺼짐\",\n \"popup.disabledEmpty\": \"꺼짐. Markdown 페이지를 Scribdown에서 더 이상 처리하지 않습니다.\",\n \"popup.fileAccessBannerTitle\": \"⚠️ ‘파일 URL에 대한 액세스 허용’이 꺼져 있습니다\",\n \"popup.fileAccessBannerText\":\n \"Scribdown이 로컬 .md 파일을 처리하거나 자동으로 새로 고칠 수 없습니다. 사용하려면 스위치를 켜세요.\",\n \"popup.fileAccessAction\": \"켜기\",\n \"popup.fileAccessActionAria\": \"확장 프로그램 세부정보 페이지를 열어 파일 URL 액세스 허용\",\n \"popup.autoRefreshGroupAria\": \"로컬 파일 자동 새로 고침 설정\",\n \"popup.autoRefreshLabel\": \"로컬 파일 자동 새로 고침\",\n \"popup.autoRefreshInfoAria\": \"로컬 파일 자동 새로 고침 정보\",\n \"popup.autoRefreshOnTip\": \"켜짐: {seconds}초마다 로컬 .md 파일을 다시 가져옵니다\",\n \"popup.autoRefreshOffTip\": \"꺼짐: 로컬 .md 파일 변경 후 페이지를 수동으로 새로 고치세요\",\n \"popup.intervalLabel\": \"새로 고침 간격\",\n \"popup.intervalInfoAria\": \"새로 고침 간격 범위\",\n \"popup.intervalRangeTip\": \"범위 {min}~{max}초\",\n \"popup.intervalUnit\": \"초\",\n \"popup.savedTip\": \"저장되었습니다. 현재 페이지를 새로 고치면 적용됩니다.\",\n \"browser.disabledTitle\": \"Scribdown(꺼짐)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · ‘파일 URL에 대한 액세스 허용’이 필요합니다\",\n \"viewer.errorHeading\": \"Scribdown에서 이 파일을 렌더링할 수 없습니다\",\n \"viewer.viewRawLink\": \"원본 보기\",\n \"viewer.errorIframe\": \"Scribdown 뷰어는 iframe 안에서 불러올 수 없습니다.\",\n \"viewer.errorMissingSrc\": \"src 매개변수가 없습니다.\",\n \"viewer.errorRequestFailed\": \"요청 실패: {message}\",\n \"viewer.errorNotMarkdown\": \"응답이 Markdown이 아닙니다(Content-Type: {contentType}).\",\n \"viewer.contentTypeUndeclared\": \"지정되지 않음\",\n \"viewer.errorEmpty\": \"파일이 비어 있습니다.\",\n \"viewer.errorUnsupportedProtocol\":\n \"지원하지 않는 프로토콜({protocol})입니다. http / https만 허용됩니다.\",\n \"viewer.errorInvalidUrl\": \"src 매개변수가 올바른 URL이 아닙니다.\",\n \"vscode.noMarkdownWarning\": \"먼저 Markdown 문서를 연 다음 Scribdown 미리 보기를 실행하세요.\",\n \"vscode.openLinkFailed\": \"링크를 열 수 없습니다: {href}\",\n \"vscode.linkTargetMissing\": \"링크 대상을 찾을 수 없습니다: {path}\",\n \"vscode.renderFailed\": \"렌더링 실패\",\n \"manifest.browserDescription\": \"손그림 스타일 Markdown 렌더링 경험.\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown 미리 보기\",\n \"manifest.vscodeDescription\": \"VS Code용 손그림 스타일 Markdown 미리 보기.\",\n \"manifest.vscodeCommandTitle\": \"Scribdown 미리 보기 열기\",\n \"manifest.vscodeLanguageDescription\": \"Scribdown 인터페이스에 사용할 언어를 선택합니다.\",\n \"manifest.vscodeLanguageSystemDescription\": \"VS Code 표시 언어를 따릅니다.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"영어를 사용합니다.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"중국어 간체를 사용합니다.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"중국어 번체를 사용합니다.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"일본어를 사용합니다.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"한국어를 사용합니다.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"스페인어를 사용합니다.\"\n};\n\n/** 西班牙语文案。 */\nconst ES_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Contenido\",\n \"toolbar.tocClose\": \"Cerrar contenido\",\n \"toolbar.tocEmpty\": \"No hay encabezados\",\n \"toolbar.more\": \"Más\",\n \"toolbar.pageWidth\": \"Ancho de página\",\n \"toolbar.backTop\": \"Volver arriba\",\n \"toolbar.language\": \"Idioma\",\n \"toolbar.languageSystem\": \"Seguir el idioma de la aplicación\",\n \"toolbar.languageSimplifiedChinese\": \"Chino simplificado\",\n \"toolbar.languageTraditionalChinese\": \"Chino tradicional\",\n \"toolbar.languageJapanese\": \"Japonés\",\n \"toolbar.languageKorean\": \"Coreano\",\n \"toolbar.languageSpanish\": \"Español\",\n \"toolbar.about\": \"Acerca de\",\n \"code.copy\": \"Copiar código\",\n \"code.copied\": \"Copiado\",\n \"mermaid.renderFailed\": \"No se pudo renderizar el diagrama\",\n \"mermaid.fullscreenButton\": \"Ver diagrama a pantalla completa\",\n \"mermaid.fullscreen\": \"Ver diagrama Mermaid a pantalla completa\",\n \"mermaid.zoomIn\": \"Ampliar diagrama\",\n \"mermaid.zoomOut\": \"Reducir diagrama\",\n \"mermaid.zoomReset\": \"Restablecer zoom\",\n \"mermaid.close\": \"Cerrar vista a pantalla completa\",\n \"image.viewFull\": \"Ver imagen completa\",\n \"image.viewFullOf\": \"Ver imagen completa: {alt}\",\n \"image.loadFailed\": \"No se pudo cargar la imagen\",\n \"image.hint\":\n \"Atajos: +/= ampliar · - reducir · 0 restablecer · Esc cerrar · arrastrar para mover · Ctrl/⌘ + rueda para ampliar\",\n \"image.zoomIn\": \"Ampliar imagen\",\n \"image.zoomOut\": \"Reducir imagen\",\n \"image.zoomReset\": \"Restablecer zoom\",\n \"image.close\": \"Cerrar visor de imágenes\",\n \"video.loadFailed\": \"No se pudo cargar el vídeo\",\n \"toc.label\": \"Contenido\",\n \"toc.toggle\": \"Expandir o contraer subencabezados\",\n \"frontmatter.label\": \"Metadatos\",\n \"popup.enableAria\": \"Activar Scribdown\",\n \"popup.enabledTitle\": \"Scribdown activado\",\n \"popup.disabledTitle\": \"Scribdown desactivado\",\n \"popup.disabledEmpty\": \"Desactivado. Scribdown ya no procesará las páginas Markdown.\",\n \"popup.fileAccessBannerTitle\": \"⚠️ «Permitir el acceso a URL de archivos» está desactivado\",\n \"popup.fileAccessBannerText\":\n \"Scribdown no puede procesar ni actualizar automáticamente archivos .md locales. Activa el interruptor para habilitarlo.\",\n \"popup.fileAccessAction\": \"Activar\",\n \"popup.fileAccessActionAria\":\n \"Abrir la página de detalles de la extensión para permitir el acceso a URL de archivos\",\n \"popup.autoRefreshGroupAria\": \"Configuración de actualización automática de archivos locales\",\n \"popup.autoRefreshLabel\": \"Actualizar automáticamente archivos locales\",\n \"popup.autoRefreshInfoAria\": \"Acerca de la actualización automática de archivos locales\",\n \"popup.autoRefreshOnTip\": \"Activado: vuelve a obtener el archivo .md local cada {seconds} s\",\n \"popup.autoRefreshOffTip\":\n \"Desactivado: recarga la página manualmente después de cambiar el archivo .md local\",\n \"popup.intervalLabel\": \"Intervalo de actualización\",\n \"popup.intervalInfoAria\": \"Rango del intervalo de actualización\",\n \"popup.intervalRangeTip\": \"Rango de {min} a {max} segundos\",\n \"popup.intervalUnit\": \"s\",\n \"popup.savedTip\": \"Guardado. Recarga la página actual para aplicarlo.\",\n \"browser.disabledTitle\": \"Scribdown (desactivado)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · necesita «Permitir el acceso a URL de archivos»\",\n \"viewer.errorHeading\": \"Scribdown no puede renderizar este archivo\",\n \"viewer.viewRawLink\": \"Ver fuente sin procesar\",\n \"viewer.errorIframe\": \"El visor de Scribdown no se puede cargar dentro de un iframe.\",\n \"viewer.errorMissingSrc\": \"Falta el parámetro src.\",\n \"viewer.errorRequestFailed\": \"Solicitud fallida: {message}\",\n \"viewer.errorNotMarkdown\": \"La respuesta no es Markdown (Content-Type: {contentType}).\",\n \"viewer.contentTypeUndeclared\": \"sin declarar\",\n \"viewer.errorEmpty\": \"El archivo está vacío.\",\n \"viewer.errorUnsupportedProtocol\":\n \"Protocolo no compatible ({protocol}); solo se permiten http / https.\",\n \"viewer.errorInvalidUrl\": \"El parámetro src no es una URL válida.\",\n \"vscode.noMarkdownWarning\":\n \"Abre primero un documento Markdown y después ejecuta la vista previa de Scribdown.\",\n \"vscode.openLinkFailed\": \"No se puede abrir el enlace: {href}\",\n \"vscode.linkTargetMissing\": \"No se encontró el destino del enlace: {path}\",\n \"vscode.renderFailed\": \"Error de renderizado\",\n \"manifest.browserDescription\":\n \"Experiencia de renderizado de Markdown con estilo dibujado a mano.\",\n \"manifest.vscodeDisplayName\": \"Vista previa de Markdown de Scribdown\",\n \"manifest.vscodeDescription\": \"Vista previa de Markdown con estilo dibujado a mano para VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Abrir vista previa de Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Elige el idioma de la interfaz de Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Seguir el idioma de visualización de VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Usar inglés.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Usar chino simplificado.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Usar chino tradicional.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Usar japonés.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Usar coreano.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Usar español.\"\n};\n\n/** 法语文案。 */\nconst FR_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Sommaire\",\n \"toolbar.tocClose\": \"Fermer le sommaire\",\n \"toolbar.tocEmpty\": \"Aucun titre\",\n \"toolbar.more\": \"Plus\",\n \"toolbar.pageWidth\": \"Largeur de page\",\n \"toolbar.backTop\": \"Retour en haut\",\n \"toolbar.language\": \"Langue\",\n \"toolbar.languageSystem\": \"Suivre la langue de l’application\",\n \"toolbar.languageSimplifiedChinese\": \"Chinois simplifié\",\n \"toolbar.languageTraditionalChinese\": \"Chinois traditionnel\",\n \"toolbar.languageJapanese\": \"Japonais\",\n \"toolbar.languageKorean\": \"Coréen\",\n \"toolbar.languageSpanish\": \"Espagnol\",\n \"toolbar.languageFrench\": \"Français\",\n \"toolbar.languageGerman\": \"Allemand\",\n \"toolbar.languageBrazilianPortuguese\": \"Portugais (Brésil)\",\n \"toolbar.languageRussian\": \"Russe\",\n \"toolbar.about\": \"À propos\",\n \"manifest.browserDescription\": \"Expérience de rendu Markdown au style dessiné à la main.\",\n \"manifest.vscodeDisplayName\": \"Aperçu Markdown Scribdown\",\n \"manifest.vscodeDescription\": \"Aperçu Markdown au style dessiné à la main pour VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Ouvrir l’aperçu Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Choisissez la langue de l’interface Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Suivre la langue d’affichage de VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Utiliser l’anglais.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Utiliser le chinois simplifié.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Utiliser le chinois traditionnel.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Utiliser le japonais.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Utiliser le coréen.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Utiliser l’espagnol.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Utiliser le français.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Utiliser l’allemand.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Utiliser le portugais (Brésil).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Utiliser le russe.\"\n};\n\n/** 德语文案。 */\nconst DE_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Inhalt\",\n \"toolbar.tocClose\": \"Inhalt schließen\",\n \"toolbar.tocEmpty\": \"Keine Überschriften\",\n \"toolbar.more\": \"Mehr\",\n \"toolbar.pageWidth\": \"Seitenbreite\",\n \"toolbar.backTop\": \"Nach oben\",\n \"toolbar.language\": \"Sprache\",\n \"toolbar.languageSystem\": \"Der Anwendungssprache folgen\",\n \"toolbar.languageSimplifiedChinese\": \"Vereinfachtes Chinesisch\",\n \"toolbar.languageTraditionalChinese\": \"Traditionelles Chinesisch\",\n \"toolbar.languageJapanese\": \"Japanisch\",\n \"toolbar.languageKorean\": \"Koreanisch\",\n \"toolbar.languageSpanish\": \"Spanisch\",\n \"toolbar.languageFrench\": \"Französisch\",\n \"toolbar.languageGerman\": \"Deutsch\",\n \"toolbar.languageBrazilianPortuguese\": \"Portugiesisch (Brasilien)\",\n \"toolbar.languageRussian\": \"Russisch\",\n \"toolbar.about\": \"Über\",\n \"manifest.browserDescription\": \"Markdown-Rendering im handgezeichneten Stil.\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown-Vorschau\",\n \"manifest.vscodeDescription\": \"Markdown-Vorschau im handgezeichneten Stil für VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Scribdown-Vorschau öffnen\",\n \"manifest.vscodeLanguageDescription\": \"Wählen Sie die Sprache der Scribdown-Oberfläche.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Der Anzeigesprache von VS Code folgen.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Englisch verwenden.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Vereinfachtes Chinesisch verwenden.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Traditionelles Chinesisch verwenden.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Japanisch verwenden.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Koreanisch verwenden.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Spanisch verwenden.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Französisch verwenden.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Deutsch verwenden.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Portugiesisch (Brasilien) verwenden.\",\n \"manifest.vscodeLanguageRussianDescription\": \"Russisch verwenden.\"\n};\n\n/** 巴西葡萄牙语文案。 */\nconst PT_BR_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Conteúdo\",\n \"toolbar.tocClose\": \"Fechar conteúdo\",\n \"toolbar.tocEmpty\": \"Sem títulos\",\n \"toolbar.more\": \"Mais\",\n \"toolbar.pageWidth\": \"Largura da página\",\n \"toolbar.backTop\": \"Voltar ao topo\",\n \"toolbar.language\": \"Idioma\",\n \"toolbar.languageSystem\": \"Seguir o idioma do aplicativo\",\n \"toolbar.languageSimplifiedChinese\": \"Chinês simplificado\",\n \"toolbar.languageTraditionalChinese\": \"Chinês tradicional\",\n \"toolbar.languageJapanese\": \"Japonês\",\n \"toolbar.languageKorean\": \"Coreano\",\n \"toolbar.languageSpanish\": \"Espanhol\",\n \"toolbar.languageFrench\": \"Francês\",\n \"toolbar.languageGerman\": \"Alemão\",\n \"toolbar.languageBrazilianPortuguese\": \"Português (Brasil)\",\n \"toolbar.languageRussian\": \"Russo\",\n \"toolbar.about\": \"Sobre\",\n \"manifest.browserDescription\": \"Experiência de renderização Markdown com estilo desenhado à mão.\",\n \"manifest.vscodeDisplayName\": \"Visualização Markdown do Scribdown\",\n \"manifest.vscodeDescription\": \"Visualização Markdown com estilo desenhado à mão para VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Abrir visualização do Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Escolha o idioma da interface do Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Seguir o idioma de exibição do VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Usar inglês.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Usar chinês simplificado.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Usar chinês tradicional.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Usar japonês.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Usar coreano.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Usar espanhol.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Usar francês.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Usar alemão.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Usar português (Brasil).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Usar russo.\"\n};\n\n/** 俄语文案。 */\nconst RU_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Содержание\",\n \"toolbar.tocClose\": \"Закрыть содержание\",\n \"toolbar.tocEmpty\": \"Нет заголовков\",\n \"toolbar.more\": \"Ещё\",\n \"toolbar.pageWidth\": \"Ширина страницы\",\n \"toolbar.backTop\": \"Наверх\",\n \"toolbar.language\": \"Язык\",\n \"toolbar.languageSystem\": \"Следовать языку приложения\",\n \"toolbar.languageSimplifiedChinese\": \"Упрощённый китайский\",\n \"toolbar.languageTraditionalChinese\": \"Традиционный китайский\",\n \"toolbar.languageJapanese\": \"Японский\",\n \"toolbar.languageKorean\": \"Корейский\",\n \"toolbar.languageSpanish\": \"Испанский\",\n \"toolbar.languageFrench\": \"Французский\",\n \"toolbar.languageGerman\": \"Немецкий\",\n \"toolbar.languageBrazilianPortuguese\": \"Португальский (Бразилия)\",\n \"toolbar.languageRussian\": \"Русский\",\n \"toolbar.about\": \"О программе\",\n \"manifest.browserDescription\": \"Рендеринг Markdown в рисованном стиле.\",\n \"manifest.vscodeDisplayName\": \"Предпросмотр Markdown Scribdown\",\n \"manifest.vscodeDescription\": \"Предпросмотр Markdown в рисованном стиле для VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Открыть предпросмотр Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Выберите язык интерфейса Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Следовать языку интерфейса VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Использовать английский.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Использовать упрощённый китайский.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Использовать традиционный китайский.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Использовать японский.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Использовать корейский.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Использовать испанский.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Использовать французский.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Использовать немецкий.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Использовать португальский (Бразилия).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Использовать русский.\"\n};\n\n/**\n * 语言 → 文案目录的总表。新增语言时在此登记对应目录。\n */\nexport const MESSAGES: Record<LocaleType, Messages> = {\n [LocaleType.English]: EN_MESSAGES,\n [LocaleType.SimplifiedChinese]: ZH_CN_MESSAGES,\n [LocaleType.TraditionalChinese]: ZH_TW_MESSAGES,\n [LocaleType.Japanese]: JA_MESSAGES,\n [LocaleType.Korean]: KO_MESSAGES,\n [LocaleType.Spanish]: ES_MESSAGES,\n [LocaleType.French]: FR_MESSAGES,\n [LocaleType.German]: DE_MESSAGES,\n [LocaleType.BrazilianPortuguese]: PT_BR_MESSAGES,\n [LocaleType.Russian]: RU_MESSAGES\n};\n","/**\n * Scribdown 无框架文案取值内核。\n * 纯 TS、零第三方依赖,可在浏览器 popup(React)、纯 DOM 工具栏、VS Code webview 与\n * Node 宿主中一致运行。宿主启动时按语言调一次 {@link setActiveLocale},其余代码用 {@link t}\n * 取文案;需要多语言并存时用 {@link createTranslator} 取独立实例。\n */\n\nimport {\n DEFAULT_LOCALE,\n LOCALE_FALLBACKS,\n LocalePreference,\n LocaleType,\n SUPPORTED_LOCALES,\n normalizeLocale\n} from \"./locales\";\nimport { MESSAGES } from \"./messages\";\nimport type { MessageKey } from \"./messages.types\";\n\n/**\n * 插值变量映射:把文案中的 `{name}` 占位替换为对应值。\n */\nexport type MessageVars = Record<string, string | number>;\n\n/**\n * 当前全局生效的界面语言。默认取兜底语言,宿主启动时通过 {@link setActiveLocale} 覆盖。\n */\nlet activeLocale: LocaleType = DEFAULT_LOCALE;\n\n/**\n * 设置全局生效语言。非受支持语言会被静默回落到 {@link DEFAULT_LOCALE},避免脏输入。\n * @param locale 目标语言(应为受支持的 {@link LocaleType})。\n */\nexport function setActiveLocale(locale: LocaleType): void {\n activeLocale = SUPPORTED_LOCALES.includes(locale) ? locale : DEFAULT_LOCALE;\n}\n\n/**\n * 读取当前全局生效语言。\n * @returns 当前语言。\n */\nexport function getActiveLocale(): LocaleType {\n return activeLocale;\n}\n\n/**\n * 按「显式语言偏好优先,系统语言其次」解析当前应使用的语言。\n * @param preference 宿主持久化的语言偏好;省略时视为跟随系统。\n * @param rawHostLocale 宿主原始语言标签(如 `navigator.language`、`vscode.env.language`)。\n * @returns 实际应生效的受支持语言。\n */\nexport function resolveLocalePreference(\n preference: LocalePreference | undefined,\n rawHostLocale: string | null | undefined\n): LocaleType {\n switch (preference) {\n case LocalePreference.English:\n return LocaleType.English;\n case LocalePreference.SimplifiedChinese:\n return LocaleType.SimplifiedChinese;\n case LocalePreference.TraditionalChinese:\n return LocaleType.TraditionalChinese;\n case LocalePreference.Japanese:\n return LocaleType.Japanese;\n case LocalePreference.Korean:\n return LocaleType.Korean;\n case LocalePreference.Spanish:\n return LocaleType.Spanish;\n case LocalePreference.French:\n return LocaleType.French;\n case LocalePreference.German:\n return LocaleType.German;\n case LocalePreference.BrazilianPortuguese:\n return LocaleType.BrazilianPortuguese;\n case LocalePreference.Russian:\n return LocaleType.Russian;\n case LocalePreference.System:\n default:\n return normalizeLocale(rawHostLocale);\n }\n}\n\n/**\n * 根据宿主保存的偏好和系统语言更新全局界面语言。\n * @param preference 宿主持久化的语言偏好;省略时跟随系统。\n * @param rawHostLocale 宿主原始语言标签。\n * @returns 实际生效的语言。\n */\nexport function setActiveLocaleFromPreference(\n preference: LocalePreference | undefined,\n rawHostLocale: string | null | undefined\n): LocaleType {\n /** 以统一优先级规则解析得到的语言。 */\n const resolvedLocale = resolveLocalePreference(preference, rawHostLocale);\n setActiveLocale(resolvedLocale);\n return resolvedLocale;\n}\n\n/**\n * 便捷方法:把宿主原始语言标签归一化后设为全局语言。\n * @param rawLocale 宿主原始语言标签(如 `navigator.language`、`vscode.env.language`)。\n * @returns 实际生效的语言。\n */\nexport function setActiveLocaleFromHost(rawLocale: string | null | undefined): LocaleType {\n return setActiveLocaleFromPreference(LocalePreference.System, rawLocale);\n}\n\n/**\n * 在指定语言及其回落链上解析某 key 的原始文案。\n * @param locale 起始语言。\n * @param key 文案 key。\n * @returns 命中的原始文案;全链缺失时返回 key 自身(便于暴露漏配)。\n */\nfunction resolveMessage(locale: LocaleType, key: MessageKey): string {\n // 关键步骤:按「命中语言 → 其回落链」顺序查找首个存在的文案。\n const lookupChain: LocaleType[] = [locale, ...LOCALE_FALLBACKS[locale]];\n\n for (const chainLocale of lookupChain) {\n /** 该语言目录下对应 key 的文案,可能不存在。 */\n const candidate = MESSAGES[chainLocale]?.[key];\n if (typeof candidate === \"string\") {\n return candidate;\n }\n }\n\n return key;\n}\n\n/**\n * 用插值变量替换文案中的 `{name}` 占位。未提供的占位原样保留。\n * @param template 含占位的文案模板。\n * @param vars 插值变量映射。\n * @returns 替换后的文案。\n */\nfunction interpolate(template: string, vars?: MessageVars): string {\n if (!vars) {\n return template;\n }\n\n return template.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => {\n /** 当前占位对应的变量值。 */\n const value = vars[name];\n return value === undefined ? placeholder : String(value);\n });\n}\n\n/**\n * 按当前全局语言取文案。\n * @param key 文案 key。\n * @param vars 可选插值变量。\n * @returns 已解析并插值的文案。\n */\nexport function t(key: MessageKey, vars?: MessageVars): string {\n return interpolate(resolveMessage(activeLocale, key), vars);\n}\n\n/**\n * 翻译函数类型:绑定固定语言的取文案方法。\n */\nexport type Translator = (key: MessageKey, vars?: MessageVars) => string;\n\n/**\n * 创建绑定固定语言的独立翻译器,不受全局语言影响。\n * 适用于多语言并存、或需要显式指定语言的场景(如静态清单生成)。\n * @param locale 目标语言,接受原始标签或 {@link LocaleType},会归一化到受支持语言。\n * @returns 绑定该语言的翻译函数。\n */\nexport function createTranslator(locale: LocaleType | string): Translator {\n /** 归一化后的目标语言。 */\n const resolvedLocale = normalizeLocale(locale);\n return (key, vars) => interpolate(resolveMessage(resolvedLocale, key), vars);\n}\n"],"mappings":"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","names":["PlatformType","ThemeType","LocaleType","LocalePreference"]}
|
|
1
|
+
{"version":3,"sources":["../src/class-names.ts","../src/enums.ts","../src/constants.ts","../src/i18n/locales.ts","../src/i18n/messages.ts","../src/i18n/translator.ts"],"sourcesContent":["/**\n * Scribdown Markdown 渲染 DOM 的 class 契约。\n * 由 @scribdown/markdown-renderer 写入 DOM,@scribdown/ui-handdrawn 的样式与各宿主按名引用,\n * 统一收敛在此,禁止在其他包重新定义或硬编码。\n */\n\n// ─── 手绘边框 / 内容折叠块 ───\n\n/**\n * 手绘卡片边框类名:可复用的「边框」基底,由内容折叠块、目录根等显式 opt-in 引入。\n */\nexport const FRAME_CLASS_NAME = \"scribdown-frame\";\n\n/**\n * 内容折叠块类名:用户手写的原生 <details>(区别于目录用 <details>)在渲染时打上此标。\n */\nexport const DETAILS_CLASS_NAME = \"scribdown-details\";\n\n// ─── Frontmatter 元数据卡片 ───\n\n/**\n * Frontmatter 元数据卡片容器类名(文档头部 YAML 键值对展示)。\n */\nexport const FRONTMATTER_CLASS_NAME = \"scribdown-frontmatter\";\n\n/**\n * Frontmatter 顶部 chrome 容器类名(仅承载「元数据」标签)。\n */\nexport const FRONTMATTER_CHROME_CLASS_NAME = \"scribdown-frontmatter__chrome\";\n\n/**\n * Frontmatter 标签类名。\n */\nexport const FRONTMATTER_LABEL_CLASS_NAME = \"scribdown-frontmatter__label\";\n\n/**\n * Frontmatter 键值列表类名。\n */\nexport const FRONTMATTER_LIST_CLASS_NAME = \"scribdown-frontmatter__list\";\n\n/**\n * Frontmatter 嵌套键值列表类名(对象类型的值向下展开一层)。\n */\nexport const FRONTMATTER_LIST_NESTED_CLASS_NAME = \"scribdown-frontmatter__list--nested\";\n\n// ─── 目录(TOC)与标题 ───\n\n/**\n * 目录容器类名。\n */\nexport const TOC_CLASS_NAME = \"scribdown-toc\";\n\n/**\n * 目录摘要按钮类名。\n */\nexport const TOC_SUMMARY_CLASS_NAME = \"scribdown-toc-summary\";\n\n/**\n * 目录导航区域类名。\n */\nexport const TOC_NAV_CLASS_NAME = \"scribdown-toc-nav\";\n\n/**\n * 目录列表类名。\n */\nexport const TOC_LIST_CLASS_NAME = \"scribdown-toc-list\";\n\n/**\n * 目录嵌套列表类名。\n */\nexport const TOC_LIST_NESTED_CLASS_NAME = \"scribdown-toc-list--nested\";\n\n/**\n * 目录条目类名前缀。\n */\nexport const TOC_ITEM_CLASS_PREFIX = \"scribdown-toc-item\";\n\n/**\n * 目录分支条目类名(拥有可折叠子层级)。\n */\nexport const TOC_ITEM_BRANCH_CLASS_NAME = \"scribdown-toc-item--branch\";\n\n/**\n * 目录分支条目折叠态类名(运行时由折叠按钮切换,控制隐藏嵌套列表与箭头朝向)。\n */\nexport const TOC_ITEM_COLLAPSED_CLASS_NAME = \"scribdown-toc-item--collapsed\";\n\n/**\n * 目录条目标题跳转链接类名:叶子与分支共用同一种 <a href=\"#id\"> 元素与跳转逻辑。\n */\nexport const TOC_LINK_CLASS_NAME = \"scribdown-toc-link\";\n\n/**\n * 目录标题链接「当前章节」高亮类名:scrollspy 命中当前可视区标题时切换,与工具栏当前指示器同步。\n */\nexport const TOC_LINK_ACTIVE_CLASS_NAME = \"scribdown-toc-link--active\";\n\n/**\n * 目录分支折叠按钮类名(与标题链接分离,专职展开/折叠,避免与跳转冲突)。\n */\nexport const TOC_TOGGLE_CLASS_NAME = \"scribdown-toc-toggle\";\n\n/**\n * 标题文本包裹层类名:用于按行绘制手绘高亮,确保多行标题每行都有底色。\n */\nexport const HEADING_MARK_CLASS_NAME = \"scribdown-heading-mark\";\n\n// ─── 图片 figure ───\n\n/**\n * 图片 figure 容器类名。\n */\nexport const IMAGE_FIGURE_CLASS_NAME = \"scribdown-image-figure\";\n\n/**\n * 图片边框容器类名。\n */\nexport const IMAGE_FRAME_CLASS_NAME = \"scribdown-image-frame\";\n\n/**\n * 图片元素类名。\n */\nexport const IMAGE_ELEMENT_CLASS_NAME = \"scribdown-image\";\n\n/**\n * 图片标题类名。\n */\nexport const IMAGE_CAPTION_CLASS_NAME = \"scribdown-image-caption\";\n\n/**\n * 图片加载失败状态类名。\n */\nexport const IMAGE_FRAME_FAILED_CLASS_NAME = \"scribdown-image-frame--failed\";\n\n/**\n * 图片加载完成状态类名。\n */\nexport const IMAGE_FRAME_LOADED_CLASS_NAME = \"scribdown-image-frame--loaded\";\n\n/**\n * 图片失败态占位内容类名。\n */\nexport const IMAGE_FALLBACK_CLASS_NAME = \"scribdown-image-fallback\";\n\n/**\n * 图片失败态图标类名。\n */\nexport const IMAGE_FALLBACK_ICON_CLASS_NAME = \"scribdown-image-fallback-icon\";\n\n/**\n * 图片失败态标题类名。\n */\nexport const IMAGE_FALLBACK_TEXT_CLASS_NAME = \"scribdown-image-fallback-text\";\n\n/**\n * 图片失败态来源类名。\n */\nexport const IMAGE_FALLBACK_SOURCE_CLASS_NAME = \"scribdown-image-fallback-source\";\n\n// ─── 视频 figure ───\n\n/**\n * 视频 figure 容器类名。\n */\nexport const VIDEO_FIGURE_CLASS_NAME = \"scribdown-video-figure\";\n\n/**\n * 视频边框容器类名。\n */\nexport const VIDEO_FRAME_CLASS_NAME = \"scribdown-video-frame\";\n\n/**\n * 视频元素类名。\n */\nexport const VIDEO_ELEMENT_CLASS_NAME = \"scribdown-video\";\n\n/**\n * 视频加载失败状态类名。\n */\nexport const VIDEO_FRAME_FAILED_CLASS_NAME = \"scribdown-video-frame--failed\";\n\n/**\n * 视频加载完成状态类名。\n */\nexport const VIDEO_FRAME_LOADED_CLASS_NAME = \"scribdown-video-frame--loaded\";\n\n/**\n * 视频失败态占位内容类名。\n */\nexport const VIDEO_FALLBACK_CLASS_NAME = \"scribdown-video-fallback\";\n\n/**\n * 视频失败态图标类名。\n */\nexport const VIDEO_FALLBACK_ICON_CLASS_NAME = \"scribdown-video-fallback-icon\";\n\n/**\n * 视频失败态标题类名。\n */\nexport const VIDEO_FALLBACK_TEXT_CLASS_NAME = \"scribdown-video-fallback-text\";\n\n/**\n * 视频失败态来源类名。\n */\nexport const VIDEO_FALLBACK_SOURCE_CLASS_NAME = \"scribdown-video-fallback-source\";\n\n// ─── 媒体查看器共用控件 ───\n\n/**\n * 图片 / Mermaid 查看器共用按钮类名。\n */\nexport const VIEWER_CONTROL_BUTTON_CLASS_NAME = \"scribdown-viewer-control-button\";\n\n/**\n * 图片 / Mermaid 查看器共用缩放按钮组类名。\n */\nexport const VIEWER_ZOOM_GROUP_CLASS_NAME = \"scribdown-viewer-zoom-group\";\n\n/**\n * 图片 / Mermaid 查看器共用缩放比例类名。\n */\nexport const VIEWER_ZOOM_VALUE_CLASS_NAME = \"scribdown-viewer-zoom-value\";\n\n// ─── 图片全图查看器 ───\n\n/**\n * 图片查看器 dialog 类名。\n */\nexport const IMAGE_VIEWER_DIALOG_CLASS_NAME = \"scribdown-image-viewer\";\n\n/**\n * 图片查看器缩放状态类名。\n */\nexport const IMAGE_VIEWER_ZOOMED_CLASS_NAME = \"scribdown-image-viewer--zoomed\";\n\n/**\n * 图片查看器拖拽状态类名。\n */\nexport const IMAGE_VIEWER_DRAGGING_CLASS_NAME = \"scribdown-image-viewer--dragging\";\n\n/**\n * 图片查看器标题区域类名(包裹 caption + hint)。\n */\nexport const IMAGE_VIEWER_CAPTION_GROUP_CLASS_NAME = \"scribdown-image-viewer__caption-group\";\n\n/**\n * 图片查看器快捷键提示类名。\n */\nexport const IMAGE_VIEWER_HINT_CLASS_NAME = \"scribdown-image-viewer__hint\";\n\n/**\n * 图片查看器顶部区域类名。\n */\nexport const IMAGE_VIEWER_CHROME_CLASS_NAME = \"scribdown-image-viewer__chrome\";\n\n/**\n * 图片查看器按钮区域类名。\n */\nexport const IMAGE_VIEWER_CONTROLS_CLASS_NAME = \"scribdown-image-viewer__controls\";\n\n/**\n * 图片查看器按钮类名。\n */\nexport const IMAGE_VIEWER_BUTTON_CLASS_NAME = \"scribdown-image-viewer__button\";\n\n/**\n * 图片查看器关闭按钮修饰类名。\n */\nexport const IMAGE_VIEWER_CLOSE_BUTTON_CLASS_NAME = \"scribdown-image-viewer__button--close\";\n\n/**\n * 图片查看器视口类名。\n */\nexport const IMAGE_VIEWER_VIEWPORT_CLASS_NAME = \"scribdown-image-viewer__viewport\";\n\n/**\n * 图片查看器图片类名。\n */\nexport const IMAGE_VIEWER_IMAGE_CLASS_NAME = \"scribdown-image-viewer__image\";\n\n/**\n * 图片查看器说明文字类名。\n */\nexport const IMAGE_VIEWER_CAPTION_CLASS_NAME = \"scribdown-image-viewer__caption\";\n\n/**\n * 图片查看器缩放数值类名。\n */\nexport const IMAGE_VIEWER_ZOOM_VALUE_CLASS_NAME = \"scribdown-image-viewer__zoom-value\";\n\n// ─── 代码块 chrome ───\n\n/**\n * 代码块外层 figure 类名。\n */\nexport const CODE_BLOCK_CLASS_NAME = \"scribdown-code-block\";\n\n/**\n * 代码块顶部 chrome 区域类名。\n */\nexport const CODE_BLOCK_CHROME_CLASS_NAME = \"scribdown-code-block__chrome\";\n\n/**\n * 代码块正文区域类名。\n */\nexport const CODE_BLOCK_BODY_CLASS_NAME = \"scribdown-code-block__body\";\n\n/**\n * 代码块语言标签类名。\n */\nexport const CODE_BLOCK_LANG_CLASS_NAME = \"scribdown-code-block__lang\";\n\n/**\n * 代码块复制按钮类名。\n */\nexport const CODE_BLOCK_COPY_CLASS_NAME = \"scribdown-code-block__copy\";\n\n/**\n * 代码块复制按钮图标类名。\n */\nexport const CODE_BLOCK_COPY_ICON_CLASS_NAME = \"scribdown-code-block__copy-icon\";\n\n/**\n * 代码块复制按钮\"复制\"态图标类名(默认显示)。\n */\nexport const CODE_BLOCK_COPY_ICON_COPY_CLASS_NAME = \"scribdown-code-block__copy-icon--copy\";\n\n/**\n * 代码块复制按钮\"已复制\"态图标类名(复制成功后显示)。\n */\nexport const CODE_BLOCK_COPY_ICON_CHECK_CLASS_NAME = \"scribdown-code-block__copy-icon--check\";\n\n/**\n * 代码块代码行类名。\n */\nexport const CODE_BLOCK_LINE_CLASS_NAME = \"scribdown-code-block__line\";\n\n/**\n * 代码块行号固定列类名。\n */\nexport const CODE_BLOCK_GUTTER_CLASS_NAME = \"scribdown-code-block__gutter\";\n\n/**\n * 代码块行号固定列中的单行节点类名。\n */\nexport const CODE_BLOCK_GUTTER_LINE_CLASS_NAME = \"scribdown-code-block__gutter-line\";\n\n// ─── 通用复制按钮 ───\n\n/**\n * Markdown 内容复制按钮类名。\n */\nexport const CONTENT_COPY_BUTTON_CLASS_NAME = \"scribdown-copy-button\";\n\n/**\n * Markdown 内容复制按钮图标类名。\n */\nexport const CONTENT_COPY_ICON_CLASS_NAME = \"scribdown-copy-button__icon\";\n\n/**\n * Markdown 内容复制按钮默认图标类名。\n */\nexport const CONTENT_COPY_ICON_COPY_CLASS_NAME = \"scribdown-copy-button__icon--copy\";\n\n/**\n * Markdown 内容复制按钮成功图标类名。\n */\nexport const CONTENT_COPY_ICON_CHECK_CLASS_NAME = \"scribdown-copy-button__icon--check\";\n\n// ─── Mermaid 图表 ───\n\n/**\n * Mermaid 图表外层 figure 容器类名。\n */\nexport const MERMAID_FIGURE_CLASS_NAME = \"scribdown-mermaid\";\n\n/**\n * Mermaid 图表顶部 chrome 容器类名。\n */\nexport const MERMAID_CHROME_CLASS_NAME = \"scribdown-mermaid__chrome\";\n\n/**\n * Mermaid 图表语言标签类名。\n */\nexport const MERMAID_LABEL_CLASS_NAME = \"scribdown-mermaid__label\";\n\n/**\n * Mermaid 图表正文容器类名。\n */\nexport const MERMAID_BODY_CLASS_NAME = \"scribdown-mermaid__body\";\n\n/**\n * Mermaid 图表 SVG 画布容器类名。\n */\nexport const MERMAID_CANVAS_CLASS_NAME = \"scribdown-mermaid__canvas\";\n\n/**\n * Mermaid 图表失败态容器类名。\n */\nexport const MERMAID_FALLBACK_CLASS_NAME = \"scribdown-mermaid__fallback\";\n\n/**\n * Mermaid 失败态图标类名。\n */\nexport const MERMAID_FALLBACK_ICON_CLASS_NAME = \"scribdown-mermaid__fallback-icon\";\n\n/**\n * Mermaid 失败态文案类名。\n */\nexport const MERMAID_FALLBACK_TEXT_CLASS_NAME = \"scribdown-mermaid__fallback-text\";\n\n/**\n * Mermaid 失败态源码块类名。\n */\nexport const MERMAID_FALLBACK_SOURCE_CLASS_NAME = \"scribdown-mermaid__fallback-source\";\n\n/**\n * Mermaid 加载/失败/完成态修饰类名。\n */\nexport const MERMAID_FIGURE_LOADING_CLASS_NAME = \"scribdown-mermaid--loading\";\n\n/**\n * MERMAID_FIGURE_FAILED_CLASS_NAME\n */\nexport const MERMAID_FIGURE_FAILED_CLASS_NAME = \"scribdown-mermaid--failed\";\n\n/**\n * MERMAID_FIGURE_LOADED_CLASS_NAME\n */\nexport const MERMAID_FIGURE_LOADED_CLASS_NAME = \"scribdown-mermaid--loaded\";\n\n/**\n * Mermaid 全屏按钮类名(位于 figure 右下角)。\n */\nexport const MERMAID_FULLSCREEN_BUTTON_CLASS_NAME = \"scribdown-mermaid__fullscreen\";\n\n/**\n * Mermaid 非全屏工具组类名。\n */\nexport const MERMAID_CONTROLS_CLASS_NAME = \"scribdown-mermaid__controls\";\n\n/**\n * Mermaid 非全屏缩放按钮组类名。\n */\nexport const MERMAID_ZOOM_GROUP_CLASS_NAME = \"scribdown-mermaid__zoom-group\";\n\n/**\n * Mermaid 非全屏工具按钮类名。\n */\nexport const MERMAID_CONTROL_BUTTON_CLASS_NAME = \"scribdown-mermaid__control-button\";\n\n/**\n * Mermaid 非全屏缩放百分比类名。\n */\nexport const MERMAID_ZOOM_VALUE_CLASS_NAME = \"scribdown-mermaid__zoom-value\";\n\n/**\n * Mermaid 非全屏拖拽模式类名。\n */\nexport const MERMAID_DRAG_MODE_CLASS_NAME = \"scribdown-mermaid--drag-mode\";\n\n/**\n * Mermaid 非全屏拖拽中类名。\n */\nexport const MERMAID_DRAGGING_CLASS_NAME = \"scribdown-mermaid--dragging\";\n\n// ─── Mermaid 全屏查看器 ───\n\n/**\n * Mermaid 全屏查看器 dialog 类名。\n */\nexport const MERMAID_VIEWER_DIALOG_CLASS_NAME = \"scribdown-mermaid-viewer\";\n\n/**\n * Mermaid 全屏查看器缩放进行中状态类名。\n */\nexport const MERMAID_VIEWER_ZOOMED_CLASS_NAME = \"scribdown-mermaid-viewer--zoomed\";\n\n/**\n * Mermaid 全屏查看器拖拽模式类名。\n */\nexport const MERMAID_VIEWER_DRAG_MODE_CLASS_NAME = \"scribdown-mermaid-viewer--drag-mode\";\n\n/**\n * Mermaid 全屏查看器拖拽中状态类名。\n */\nexport const MERMAID_VIEWER_DRAGGING_CLASS_NAME = \"scribdown-mermaid-viewer--dragging\";\n\n/**\n * Mermaid 全屏查看器顶部 chrome 类名。\n */\nexport const MERMAID_VIEWER_CHROME_CLASS_NAME = \"scribdown-mermaid-viewer__chrome\";\n\n/**\n * Mermaid 全屏查看器 caption 类名。\n */\nexport const MERMAID_VIEWER_CAPTION_CLASS_NAME = \"scribdown-mermaid-viewer__caption\";\n\n/**\n * Mermaid 全屏查看器控件容器类名。\n */\nexport const MERMAID_VIEWER_CONTROLS_CLASS_NAME = \"scribdown-mermaid-viewer__controls\";\n\n/**\n * Mermaid 全屏查看器按钮类名。\n */\nexport const MERMAID_VIEWER_BUTTON_CLASS_NAME = \"scribdown-mermaid-viewer__button\";\n\n/**\n * Mermaid 全屏查看器关闭按钮修饰类名。\n */\nexport const MERMAID_VIEWER_CLOSE_BUTTON_CLASS_NAME = \"scribdown-mermaid-viewer__button--close\";\n\n/**\n * Mermaid 全屏查看器视口类名。\n */\nexport const MERMAID_VIEWER_VIEWPORT_CLASS_NAME = \"scribdown-mermaid-viewer__viewport\";\n\n/**\n * Mermaid 全屏查看器画布类名。\n */\nexport const MERMAID_VIEWER_CANVAS_CLASS_NAME = \"scribdown-mermaid-viewer__canvas\";\n\n/**\n * Mermaid 全屏查看器缩放百分比文本类名。\n */\nexport const MERMAID_VIEWER_ZOOM_VALUE_CLASS_NAME = \"scribdown-mermaid-viewer__zoom-value\";\n\n// ─── 表格交互 ───\n\n/**\n * 表格交互壳层类名。\n */\nexport const TABLE_WRAPPER_CLASS_NAME = \"scribdown-table\";\n\n/**\n * 表格复制按钮修饰类名。\n */\nexport const TABLE_COPY_BUTTON_CLASS_NAME = \"scribdown-table__copy\";\n","/**\n * 平台类型枚举。\n */\nexport enum PlatformType {\n BrowserExtension = \"browser-extension\",\n VscodeExtension = \"vscode-extension\"\n}\n\n/**\n * 默认主题类型枚举。\n */\nexport enum ThemeType {\n Paper = \"paper\",\n Sketch = \"sketch\"\n}\n","import { PlatformType, ThemeType } from \"./enums\";\n\n/**\n * 当前项目展示名称。\n */\nexport const PROJECT_NAME = \"Scribdown\";\n\n/**\n * 当前项目主页地址(部署在 GitHub Pages 的项目站点,带 /scribdown/ 子路径)。\n */\nexport const PROJECT_HOMEPAGE_URL = \"https://share-man-man.github.io/scribdown/\";\n\n/**\n * 当前项目固定 Node.js LTS 版本。\n */\nexport const NODE_LTS_VERSION = \"24.18.0\";\n\n/**\n * 当前项目支持的平台列表。\n */\nexport const SUPPORTED_PLATFORMS: PlatformType[] = [\n PlatformType.BrowserExtension,\n PlatformType.VscodeExtension\n];\n\n/**\n * 当前项目默认主题。\n */\nexport const DEFAULT_THEME = ThemeType.Paper;\n\n/**\n * VS Code 预览命令 ID。\n */\nexport const OPEN_PREVIEW_COMMAND = \"scribdown.openPreview\";\n\n/**\n * Markdown 语言 ID。\n */\nexport const MARKDOWN_LANGUAGE_ID = \"markdown\";\n\n/**\n * Markdown 文件扩展名。\n * 用于兜底识别被宿主注册为其他语言 ID 的 Markdown 文件(如 VS Code 内置\n * prompt-basics 扩展把 SKILL.md 注册为 skill 语言)。\n */\nexport const MARKDOWN_FILE_EXTNAME = \".md\";\n\n/**\n * Scribdown 页面根容器 class。\n */\nexport const SCRIBDOWN_PAGE_CLASS_NAME = \"scribdown-page\";\n\n/**\n * Scribdown 应用布局容器 class。\n */\nexport const SCRIBDOWN_APP_CLASS_NAME = \"scribdown-app\";\n\n/**\n * Scribdown Markdown 渲染容器 class。\n */\nexport const SCRIBDOWN_MARKDOWN_CLASS_NAME = \"scribdown-markdown\";\n\n/**\n * 块级元素源码起始行号的 data 属性名,用于编辑器与预览的双向滚动对齐。\n */\nexport const SOURCE_LINE_DATA_ATTRIBUTE = \"data-source-line\";\n\n/**\n * 编辑器光标所在源码行对应预览块的高亮 class。\n */\nexport const SOURCE_LINE_ACTIVE_CLASS_NAME = \"scribdown-source-line-active\";\n\n/**\n * 高亮块位于预览视口外时,提示其方向的边缘弧形闪烁 class。\n */\nexport const SOURCE_LINE_OFFSCREEN_HINT_CLASS_NAME = \"scribdown-source-line-offscreen-hint\";\n\n/**\n * 边缘提示位于视口顶部(高亮块在视口上方)的修饰 class。\n */\nexport const SOURCE_LINE_OFFSCREEN_HINT_TOP_CLASS_NAME =\n \"scribdown-source-line-offscreen-hint--top\";\n\n/**\n * 边缘提示位于视口底部(高亮块在视口下方)的修饰 class。\n */\nexport const SOURCE_LINE_OFFSCREEN_HINT_BOTTOM_CLASS_NAME =\n \"scribdown-source-line-offscreen-hint--bottom\";\n\n/**\n * 浮动工具栏容器 class。\n */\nexport const SCRIBDOWN_TOOLBAR_CLASS_NAME = \"scribdown-toolbar\";\n\n/**\n * 工具栏单个按钮 class。\n */\nexport const SCRIBDOWN_TOOLBAR_BTN_CLASS_NAME = \"scribdown-toolbar-btn\";\n\n/**\n * 工具栏目录面板 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_CLASS_NAME =\n \"scribdown-toolbar-toc-panel\";\n\n/**\n * 工具栏「当前章节指示器」class:位于目录按钮左侧,随滚动展示当前可视区所属标题。\n */\nexport const SCRIBDOWN_TOOLBAR_CURRENT_CLASS_NAME = \"scribdown-toolbar-current\";\n\n/**\n * 强制暗色主题 class:加到文档根元素(`<html>`)上,优先级高于系统的\n * `prefers-color-scheme`,供自带主题开关的宿主(文档站、VS Code)显式指定主题。\n * 未加任何主题 class 时默认跟随系统偏好。\n */\nexport const SCRIBDOWN_THEME_DARK_CLASS_NAME = \"scribdown-theme-dark\";\n\n/**\n * 强制浅色主题 class:与 {@link SCRIBDOWN_THEME_DARK_CLASS_NAME} 相对,\n * 用于在系统处于暗色时仍把渲染结果锁定为浅色。\n */\nexport const SCRIBDOWN_THEME_LIGHT_CLASS_NAME = \"scribdown-theme-light\";\n\n/**\n * 工具栏挂载时附加到 container 上的 class,把 container 标记为 TOC + 正文的 flex 容器。\n */\nexport const SCRIBDOWN_TOC_HOST_CLASS_NAME = \"scribdown-toc-host\";\n\n/**\n * 目录侧栏与正文之间的拖拽调宽手柄 class(flex 流中位于 TOC 与正文之间的独立 item)。\n */\nexport const SCRIBDOWN_TOC_RESIZER_CLASS_NAME = \"scribdown-toc-resizer\";\n\n/**\n * 拖拽调整目录宽度期间附加到 toc-host 上的 class,用于屏蔽正文文本选中并统一光标。\n */\nexport const SCRIBDOWN_TOC_RESIZING_CLASS_NAME = \"is-toc-resizing\";\n\n/**\n * 目录侧栏宽度的 CSS 自定义属性名:声明在 toc-host 上,由 TOC 自身定宽与折叠位移共用。\n */\nexport const TOC_WIDTH_CSS_VAR = \"--scribdown-toc-width\";\n\n/**\n * 工具栏挂载时用于包裹 container 已有内容的 wrapper class,作为 flex 流中的正文 item,与 TOC 横向并列。\n * 自身 flex:1 填满 TOC 之外的剩余宽度,并作为内部滚动层的定位上下文(position:relative)。\n */\nexport const SCRIBDOWN_CONTENT_AREA_CLASS_NAME = \"scribdown-content-area\";\n\n/**\n * 正文内部滚动层 class:位于 .scribdown-content-area 内,position:absolute + inset:0 铺满父级,\n * 由它统一承载正文的横向与纵向滚动(外层 page / content-area 均不滚动)。\n */\nexport const SCRIBDOWN_CONTENT_SCROLL_CLASS_NAME = \"scribdown-content-scroll\";\n\n/**\n * 通用「细 + 主题色」滚动条 class:各滚动容器(目录侧栏、正文滚动层等)显式 opt-in 引入,\n * 统一标准 scrollbar-* 与 ::-webkit-scrollbar 兜底配色,避免在多个容器选择器上重复罗列。\n */\nexport const SCRIBDOWN_THIN_SCROLLBAR_CLASS_NAME = \"scribdown-scrollbar-thin\";\n\n/**\n * 工具栏「更多」下拉菜单容器 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_CLASS_NAME = \"scribdown-toolbar-menu\";\n\n/**\n * 工具栏「更多」下拉菜单单个菜单项 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_ITEM_CLASS_NAME =\n \"scribdown-toolbar-menu-item\";\n\n/**\n * 工具栏「更多」下拉菜单内子项分组容器 class(例:宽度选择下拉)。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_GROUP_CLASS_NAME =\n \"scribdown-toolbar-menu-group\";\n\n/**\n * 工具栏「更多」下拉菜单内子项 class(例:宽度具体档位)。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_CLASS_NAME =\n \"scribdown-toolbar-menu-sub-item\";\n\n/**\n * 工具栏菜单子项左侧勾选占位 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_MARK_CLASS_NAME =\n \"scribdown-toolbar-menu-sub-item-mark\";\n\n/**\n * 工具栏菜单子项文字标签 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SUB_ITEM_LABEL_CLASS_NAME =\n \"scribdown-toolbar-menu-sub-item-label\";\n\n/**\n * 工具栏菜单「下拉选择」触发行的文字标签 class(例:页面宽度)。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SELECT_LABEL_CLASS_NAME =\n \"scribdown-toolbar-menu-select-label\";\n\n/**\n * 工具栏菜单「下拉选择」触发行的当前值展示 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SELECT_VALUE_CLASS_NAME =\n \"scribdown-toolbar-menu-select-value\";\n\n/**\n * 工具栏菜单「下拉选择」触发行的 chevron 箭头 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_SELECT_CHEVRON_CLASS_NAME =\n \"scribdown-toolbar-menu-select-chevron\";\n\n/**\n * 工具栏菜单分组内可折叠的档位列表容器 class。\n */\nexport const SCRIBDOWN_TOOLBAR_MENU_GROUP_CHOICES_CLASS_NAME =\n \"scribdown-toolbar-menu-group-choices\";\n\n/**\n * 工具栏目录侧栏顶部标题行 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_TITLE_CLASS_NAME =\n \"scribdown-toolbar-toc-panel-title\";\n\n/**\n * 工具栏目录侧栏右上角关闭按钮 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_CLOSE_CLASS_NAME =\n \"scribdown-toolbar-toc-panel-close\";\n\n/**\n * 工具栏目录侧栏「暂无标题」空态 class。\n */\nexport const SCRIBDOWN_TOOLBAR_TOC_PANEL_EMPTY_CLASS_NAME =\n \"scribdown-toolbar-toc-panel-empty\";\n\n/**\n * 工具栏当前章节指示器的可见文本 class。\n */\nexport const SCRIBDOWN_TOOLBAR_CURRENT_TEXT_CLASS_NAME =\n \"scribdown-toolbar-current-text\";\n\n/**\n * localStorage 中保存页面内容宽度的 key。\n */\nexport const CONTENT_WIDTH_STORAGE_KEY = \"scribdown-content-width\";\n\n/**\n * localStorage 中保存目录侧栏宽度(纯数字,单位 px)的 key。\n */\nexport const TOC_WIDTH_STORAGE_KEY = \"scribdown-toc-width\";\n\n/**\n * 目录侧栏默认宽度(px),与 CSS 中 `min(280px, 70vw)` 的上限保持一致。\n */\nexport const TOC_WIDTH_DEFAULT_PX = 280;\n\n/**\n * 目录侧栏可拖拽的最小宽度(px),低于此值目录条目已无法阅读。\n */\nexport const TOC_WIDTH_MIN_PX = 180;\n\n/**\n * 目录侧栏可拖拽的最大宽度(px),另外还受「不超过宿主宽度 70%」约束。\n */\nexport const TOC_WIDTH_MAX_PX = 640;\n\n/**\n * 目录侧栏宽度相对宿主容器宽度的占比上限,避免窄屏下目录挤没正文。\n */\nexport const TOC_WIDTH_MAX_HOST_RATIO = 0.7;\n","/**\n * Scribdown 国际化「语言」契约。\n * 统一收敛支持的 locale、默认兜底、回落链,以及各宿主静态文件(Chrome _locales、\n * VS Code package.nls)的目录/后缀命名映射,禁止在其他包重新定义或硬编码。\n */\n\n/**\n * 支持的界面语言枚举(BCP-47 规范写法)。\n * 新增语言时在此追加,并在 {@link SUPPORTED_LOCALES}、{@link LOCALE_FALLBACKS}、\n * messages 目录三处补齐即可,无需改动接线逻辑。\n */\nexport enum LocaleType {\n /** 英语(默认兜底语言)。 */\n English = \"en\",\n /** 简体中文。 */\n SimplifiedChinese = \"zh-CN\",\n /** 繁体中文。 */\n TraditionalChinese = \"zh-TW\",\n /** 日语。 */\n Japanese = \"ja\",\n /** 韩语。 */\n Korean = \"ko\",\n /** 西班牙语。 */\n Spanish = \"es\",\n /** 法语。 */\n French = \"fr\",\n /** 德语。 */\n German = \"de\",\n /** 巴西葡萄牙语。 */\n BrazilianPortuguese = \"pt-BR\",\n /** 俄语。 */\n Russian = \"ru\"\n}\n\n/**\n * 默认兜底语言:无法识别宿主语言、或某语言缺失文案时最终回落到此。\n */\nexport const DEFAULT_LOCALE: LocaleType = LocaleType.English;\n\n/**\n * 界面语言偏好。`System` 表示未显式选择语言,跟随浏览器或编辑器的系统界面语言。\n * 宿主负责将该值持久化到自己的全局配置;共享层只负责解析,避免耦合 Web Storage。\n */\nexport enum LocalePreference {\n /** 跟随宿主系统界面语言。 */\n System = \"system\",\n /** 始终使用英语。 */\n English = LocaleType.English,\n /** 始终使用简体中文。 */\n SimplifiedChinese = LocaleType.SimplifiedChinese,\n /** 始终使用繁体中文。 */\n TraditionalChinese = LocaleType.TraditionalChinese,\n /** 始终使用日语。 */\n Japanese = LocaleType.Japanese,\n /** 始终使用韩语。 */\n Korean = LocaleType.Korean,\n /** 始终使用西班牙语。 */\n Spanish = LocaleType.Spanish,\n /** 始终使用法语。 */\n French = LocaleType.French,\n /** 始终使用德语。 */\n German = LocaleType.German,\n /** 始终使用巴西葡萄牙语。 */\n BrazilianPortuguese = LocaleType.BrazilianPortuguese,\n /** 始终使用俄语。 */\n Russian = LocaleType.Russian\n}\n\n/**\n * 当前支持的全部语言列表(用于校验入参、遍历生成静态文件)。\n */\nexport const SUPPORTED_LOCALES: LocaleType[] = [\n LocaleType.English,\n LocaleType.SimplifiedChinese,\n LocaleType.TraditionalChinese,\n LocaleType.Japanese,\n LocaleType.Korean,\n LocaleType.Spanish,\n LocaleType.French,\n LocaleType.German,\n LocaleType.BrazilianPortuguese,\n LocaleType.Russian\n];\n\n/** 工具栏与宿主配置共用的可选语言定义。 */\nexport interface LocalePreferenceOption {\n /** 持久化到宿主配置的显式语言偏好。 */\n preference: Exclude<LocalePreference, LocalePreference.System>;\n /** 此偏好对应的实际界面语言。 */\n locale: LocaleType;\n /** 语言的原生自称,跨界面语言保持一致,便于识别和切换。 */\n nativeLabel: string;\n}\n\n/** 语言选择器按稳定顺序展示的全部显式语言选项;跟随应用语言是未设置偏好的默认行为。 */\nexport const LOCALE_PREFERENCE_OPTIONS: readonly LocalePreferenceOption[] = [\n { preference: LocalePreference.English, locale: LocaleType.English, nativeLabel: \"English\" },\n {\n preference: LocalePreference.SimplifiedChinese,\n locale: LocaleType.SimplifiedChinese,\n nativeLabel: \"简体中文\"\n },\n {\n preference: LocalePreference.TraditionalChinese,\n locale: LocaleType.TraditionalChinese,\n nativeLabel: \"繁體中文\"\n },\n { preference: LocalePreference.Japanese, locale: LocaleType.Japanese, nativeLabel: \"日本語\" },\n { preference: LocalePreference.Korean, locale: LocaleType.Korean, nativeLabel: \"한국어\" },\n { preference: LocalePreference.Spanish, locale: LocaleType.Spanish, nativeLabel: \"Español\" },\n { preference: LocalePreference.French, locale: LocaleType.French, nativeLabel: \"Français\" },\n { preference: LocalePreference.German, locale: LocaleType.German, nativeLabel: \"Deutsch\" },\n {\n preference: LocalePreference.BrazilianPortuguese,\n locale: LocaleType.BrazilianPortuguese,\n nativeLabel: \"Português (Brasil)\"\n },\n { preference: LocalePreference.Russian, locale: LocaleType.Russian, nativeLabel: \"Русский\" }\n];\n\n/**\n * 各语言的回落链:命中语言缺失某 key 时,按顺序回落到链上语言,最终止于 {@link DEFAULT_LOCALE}。\n * 默认语言自身链为空。\n */\nexport const LOCALE_FALLBACKS: Record<LocaleType, LocaleType[]> = {\n [LocaleType.English]: [],\n [LocaleType.SimplifiedChinese]: [LocaleType.English],\n [LocaleType.TraditionalChinese]: [LocaleType.English],\n [LocaleType.Japanese]: [LocaleType.English],\n [LocaleType.Korean]: [LocaleType.English],\n [LocaleType.Spanish]: [LocaleType.English],\n [LocaleType.French]: [LocaleType.English],\n [LocaleType.German]: [LocaleType.English],\n [LocaleType.BrazilianPortuguese]: [LocaleType.English],\n [LocaleType.Russian]: [LocaleType.English]\n};\n\n/**\n * 语言 → Chrome 扩展 `_locales/<dir>/messages.json` 目录名映射。\n * Chrome 约定 locale 目录名用下划线(如 `zh_CN`)。\n */\nexport const CHROME_LOCALE_DIRECTORY: Record<LocaleType, string> = {\n [LocaleType.English]: \"en\",\n [LocaleType.SimplifiedChinese]: \"zh_CN\",\n [LocaleType.TraditionalChinese]: \"zh_TW\",\n [LocaleType.Japanese]: \"ja\",\n [LocaleType.Korean]: \"ko\",\n [LocaleType.Spanish]: \"es\",\n [LocaleType.French]: \"fr\",\n [LocaleType.German]: \"de\",\n [LocaleType.BrazilianPortuguese]: \"pt_BR\",\n [LocaleType.Russian]: \"ru\"\n};\n\n/**\n * 语言 → VS Code `package.nls[.<suffix>].json` 文件名后缀映射。\n * VS Code 约定后缀用小写连字符(如 `zh-cn`);默认语言写入无后缀的 `package.nls.json`。\n */\nexport const VSCODE_NLS_SUFFIX: Record<LocaleType, string> = {\n [LocaleType.English]: \"\",\n [LocaleType.SimplifiedChinese]: \"zh-cn\",\n [LocaleType.TraditionalChinese]: \"zh-tw\",\n [LocaleType.Japanese]: \"ja\",\n [LocaleType.Korean]: \"ko\",\n [LocaleType.Spanish]: \"es\",\n [LocaleType.French]: \"fr\",\n [LocaleType.German]: \"de\",\n [LocaleType.BrazilianPortuguese]: \"pt-br\",\n [LocaleType.Russian]: \"ru\"\n};\n\n/**\n * 把宿主上报的原始语言标签归一化成受支持的 {@link LocaleType}。\n * 逐级降级匹配:先精确命中,再按主语言子标签匹配(如 `zh-Hans-CN` → `zh-CN`),\n * 全不命中回落到 {@link DEFAULT_LOCALE}。\n * @param rawLocale 宿主原始语言标签(如 `navigator.language`、`vscode.env.language`),大小写与分隔符不限。\n * @returns 归一化后的受支持语言。\n */\nexport function normalizeLocale(rawLocale: string | null | undefined): LocaleType {\n if (!rawLocale) {\n return DEFAULT_LOCALE;\n }\n\n /** 统一成小写、连字符分隔的标签,兼容下划线写法(如 `zh_CN`)。 */\n const normalizedTag = rawLocale.toLowerCase().replace(/_/g, \"-\");\n\n // 关键步骤:精确命中受支持语言(大小写无关)。\n const exactMatch = SUPPORTED_LOCALES.find((locale) => locale.toLowerCase() === normalizedTag);\n if (exactMatch) {\n return exactMatch;\n }\n\n // 关键步骤:中文同时支持简体与繁体,需在主语言回落前依据 script / region 区分。\n if (normalizedTag.startsWith(\"zh-\")) {\n /** 指示繁体中文的 BCP-47 script 或常见地区子标签。 */\n const traditionalChineseSubtags = [\"hant\", \"tw\", \"hk\", \"mo\"];\n /** 分隔后的中文语言子标签。 */\n const chineseSubtags = normalizedTag.split(\"-\").slice(1);\n if (chineseSubtags.some((subtag) => traditionalChineseSubtags.includes(subtag))) {\n return LocaleType.TraditionalChinese;\n }\n return LocaleType.SimplifiedChinese;\n }\n\n /** 原始标签的主语言子标签(如 `ja-jp` → `ja`)。 */\n const primarySubtag = normalizedTag.split(\"-\")[0];\n\n // 关键步骤:按主语言子标签匹配,命中同语族的首个受支持语言(如各种 zh-* → zh-CN)。\n const primaryMatch = SUPPORTED_LOCALES.find(\n (locale) => locale.toLowerCase().split(\"-\")[0] === primarySubtag\n );\n if (primaryMatch) {\n return primaryMatch;\n }\n\n return DEFAULT_LOCALE;\n}\n\n/**\n * 解析宿主保存的语言偏好。非法值安全回落到 {@link LocalePreference.System}。\n * @param rawPreference 宿主配置或存储中读到的原始值。\n * @returns 合法的语言偏好。\n */\nexport function normalizeLocalePreference(rawPreference: unknown): LocalePreference {\n return isLocalePreference(rawPreference) ? rawPreference : LocalePreference.System;\n}\n\n/**\n * 判断值是否为受支持的语言偏好。\n * @param value 待校验的原始值。\n * @returns 值为合法 {@link LocalePreference} 时返回 true。\n */\nexport function isLocalePreference(value: unknown): value is LocalePreference {\n switch (value) {\n case LocalePreference.English:\n case LocalePreference.SimplifiedChinese:\n case LocalePreference.TraditionalChinese:\n case LocalePreference.Japanese:\n case LocalePreference.Korean:\n case LocalePreference.Spanish:\n case LocalePreference.French:\n case LocalePreference.German:\n case LocalePreference.BrazilianPortuguese:\n case LocalePreference.Russian:\n case LocalePreference.System:\n return true;\n default:\n return false;\n }\n}\n","/**\n * Scribdown 全量文案目录(唯一源)。\n * 三处运行时(浏览器 popup/viewer、共享工具栏、VS Code 宿主/webview)与两处静态清单\n * (Chrome `_locales`、VS Code `package.nls`)均以此为准,禁止在各端硬编码或重复定义。\n * 插值占位统一用 `{name}` 语法,由 translator 在运行时替换。\n */\n\nimport { LocaleType } from \"./locales\";\nimport type { Messages } from \"./messages.types\";\n\n/**\n * 英语文案(默认兜底语言)。\n */\nconst EN_MESSAGES: Messages = {\n \"toolbar.toc\": \"Contents\",\n \"toolbar.tocClose\": \"Close contents\",\n \"toolbar.tocEmpty\": \"No headings\",\n \"toolbar.tocResize\": \"Resize contents sidebar\",\n \"toolbar.more\": \"More\",\n \"toolbar.pageWidth\": \"Page width\",\n \"toolbar.backTop\": \"Back to top\",\n \"toolbar.language\": \"Language\",\n \"toolbar.languageSystem\": \"Follow application language\",\n \"toolbar.languageEnglish\": \"English\",\n \"toolbar.languageSimplifiedChinese\": \"Simplified Chinese\",\n \"toolbar.languageTraditionalChinese\": \"Traditional Chinese\",\n \"toolbar.languageJapanese\": \"Japanese\",\n \"toolbar.languageKorean\": \"Korean\",\n \"toolbar.languageSpanish\": \"Spanish\",\n \"toolbar.languageFrench\": \"French\",\n \"toolbar.languageGerman\": \"German\",\n \"toolbar.languageBrazilianPortuguese\": \"Portuguese (Brazil)\",\n \"toolbar.languageRussian\": \"Russian\",\n \"toolbar.about\": \"About\",\n\n \"code.copy\": \"Copy code\",\n \"code.copied\": \"Copied\",\n \"content.copy\": \"Copy content\",\n \"content.copied\": \"Copied\",\n\n \"mermaid.renderFailed\": \"Diagram failed to render\",\n \"mermaid.fullscreenButton\": \"View diagram fullscreen\",\n \"mermaid.fullscreen\": \"View Mermaid diagram fullscreen\",\n \"mermaid.zoomIn\": \"Zoom in diagram\",\n \"mermaid.zoomOut\": \"Zoom out diagram\",\n \"mermaid.zoomReset\": \"Reset zoom\",\n \"mermaid.zoomControls\": \"Diagram zoom controls\",\n \"mermaid.switchToDrag\": \"Switch to drag mode\",\n \"mermaid.switchToSelect\": \"Switch to selection mode\",\n \"mermaid.close\": \"Close fullscreen view\",\n \"table.copy\": \"Copy table\",\n\n \"image.viewFull\": \"View full image\",\n \"image.viewFullOf\": \"View full image: {alt}\",\n \"image.loadFailed\": \"Image failed to load\",\n \"image.hint\":\n \"Shortcuts: +/= zoom in · - zoom out · 0 reset · Esc close · drag to pan · Ctrl/⌘ + wheel to zoom\",\n \"image.zoomIn\": \"Zoom in image\",\n \"image.zoomOut\": \"Zoom out image\",\n \"image.zoomReset\": \"Reset zoom\",\n \"image.zoomControls\": \"Image zoom controls\",\n \"image.close\": \"Close image viewer\",\n\n \"video.loadFailed\": \"Video failed to load\",\n\n \"toc.label\": \"Contents\",\n \"toc.toggle\": \"Expand or collapse subheadings\",\n\n \"frontmatter.label\": \"Metadata\",\n\n \"popup.enableAria\": \"Enable Scribdown\",\n \"popup.enabledTitle\": \"Scribdown enabled\",\n \"popup.disabledTitle\": \"Scribdown disabled\",\n \"popup.disabledEmpty\": \"Disabled. Markdown pages are no longer taken over.\",\n \"popup.fileAccessBannerTitle\": \"⚠️ “Allow access to file URLs” is off\",\n \"popup.fileAccessBannerText\":\n \"Local .md files can’t be taken over or auto-refreshed by Scribdown. Turn the switch on to enable it.\",\n \"popup.fileAccessAction\": \"Turn on\",\n \"popup.fileAccessActionAria\": \"Open the extension details page to allow access to file URLs\",\n \"popup.autoRefreshGroupAria\": \"Local file auto-refresh settings\",\n \"popup.autoRefreshLabel\": \"Auto-refresh local files\",\n \"popup.autoRefreshInfoAria\": \"About local file auto-refresh\",\n \"popup.autoRefreshOnTip\": \"On: re-fetches the local .md file every {seconds}s\",\n \"popup.autoRefreshOffTip\": \"Off: reload the page manually after the local .md changes\",\n \"popup.intervalLabel\": \"Refresh interval\",\n \"popup.intervalInfoAria\": \"Refresh interval range\",\n \"popup.intervalRangeTip\": \"Range {min}–{max} seconds\",\n \"popup.intervalUnit\": \"s\",\n \"popup.savedTip\": \"Saved. Reload the current page to apply.\",\n\n \"browser.disabledTitle\": \"Scribdown (disabled)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · needs “Allow access to file URLs”\",\n\n \"viewer.errorHeading\": \"Scribdown can’t render this file\",\n \"viewer.viewRawLink\": \"View raw source\",\n \"viewer.errorIframe\": \"The Scribdown viewer can’t load inside an iframe.\",\n \"viewer.errorMissingSrc\": \"Missing src parameter.\",\n \"viewer.errorRequestFailed\": \"Request failed: {message}\",\n \"viewer.errorNotMarkdown\": \"Response is not Markdown (Content-Type: {contentType}).\",\n \"viewer.contentTypeUndeclared\": \"undeclared\",\n \"viewer.errorEmpty\": \"The file is empty.\",\n \"viewer.errorUnsupportedProtocol\":\n \"Unsupported protocol ({protocol}); only http / https are allowed.\",\n \"viewer.errorInvalidUrl\": \"The src parameter is not a valid URL.\",\n\n \"vscode.noMarkdownWarning\": \"Open a Markdown document first, then run Scribdown preview.\",\n \"vscode.openLinkFailed\": \"Can’t open link: {href}\",\n \"vscode.linkTargetMissing\": \"Link target not found: {path}\",\n \"vscode.renderFailed\": \"Render failed\",\n\n \"manifest.browserName\": \"Scribdown\",\n \"manifest.browserDescription\": \"Handdrawn markdown rendering experience.\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown Preview\",\n \"manifest.vscodeDescription\": \"Handdrawn-style Markdown preview for VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Open Scribdown Preview\",\n \"manifest.vscodeLanguageDescription\": \"Choose the language used by Scribdown's interface.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Follow the VS Code display language.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Use English.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Use Simplified Chinese.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Use Traditional Chinese.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Use Japanese.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Use Korean.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Use Spanish.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Use French.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Use German.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Use Portuguese (Brazil).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Use Russian.\"\n};\n\n/**\n * 简体中文文案。\n */\nconst ZH_CN_MESSAGES: Messages = {\n \"toolbar.toc\": \"目录\",\n \"toolbar.tocClose\": \"关闭目录\",\n \"toolbar.tocEmpty\": \"暂无标题\",\n \"toolbar.tocResize\": \"拖拽调整目录宽度\",\n \"toolbar.more\": \"更多\",\n \"toolbar.pageWidth\": \"页面宽度\",\n \"toolbar.backTop\": \"回到顶部\",\n \"toolbar.language\": \"语言\",\n \"toolbar.languageSystem\": \"跟随应用语言\",\n \"toolbar.languageEnglish\": \"English\",\n \"toolbar.languageSimplifiedChinese\": \"简体中文\",\n \"toolbar.languageTraditionalChinese\": \"繁體中文\",\n \"toolbar.languageJapanese\": \"日语\",\n \"toolbar.languageKorean\": \"韩语\",\n \"toolbar.languageSpanish\": \"西班牙语\",\n \"toolbar.languageFrench\": \"法语\",\n \"toolbar.languageGerman\": \"德语\",\n \"toolbar.languageBrazilianPortuguese\": \"巴西葡萄牙语\",\n \"toolbar.languageRussian\": \"俄语\",\n \"toolbar.about\": \"关于\",\n\n \"code.copy\": \"复制代码\",\n \"code.copied\": \"已复制\",\n \"content.copy\": \"复制内容\",\n \"content.copied\": \"已复制\",\n\n \"mermaid.renderFailed\": \"图表渲染失败\",\n \"mermaid.fullscreenButton\": \"全屏查看图表\",\n \"mermaid.fullscreen\": \"全屏查看 Mermaid 图表\",\n \"mermaid.zoomIn\": \"放大图表\",\n \"mermaid.zoomOut\": \"缩小图表\",\n \"mermaid.zoomReset\": \"重置缩放\",\n \"mermaid.zoomControls\": \"图表缩放控件\",\n \"mermaid.switchToDrag\": \"切换为拖拽模式\",\n \"mermaid.switchToSelect\": \"切换为选择模式\",\n \"mermaid.close\": \"关闭全屏查看\",\n \"table.copy\": \"复制表格\",\n\n \"image.viewFull\": \"查看全图\",\n \"image.viewFullOf\": \"查看全图:{alt}\",\n \"image.loadFailed\": \"图片加载失败\",\n \"image.hint\":\n \"快捷键:+/= 放大 · - 缩小 · 0 重置 · Esc 关闭 · 鼠标拖拽可平移 · Ctrl/⌘ + 滚轮缩放\",\n \"image.zoomIn\": \"放大图片\",\n \"image.zoomOut\": \"缩小图片\",\n \"image.zoomReset\": \"重置缩放\",\n \"image.zoomControls\": \"图片缩放控件\",\n \"image.close\": \"关闭全图查看\",\n\n \"video.loadFailed\": \"视频加载失败\",\n\n \"toc.label\": \"目录\",\n \"toc.toggle\": \"展开或折叠子目录\",\n\n \"frontmatter.label\": \"元数据\",\n\n \"popup.enableAria\": \"启用 Scribdown\",\n \"popup.enabledTitle\": \"已启用 Scribdown\",\n \"popup.disabledTitle\": \"已关闭 Scribdown\",\n \"popup.disabledEmpty\": \"已关闭,访问 .md 不再被接管。\",\n \"popup.fileAccessBannerTitle\": \"⚠️ 「允许访问文件网址」未开启\",\n \"popup.fileAccessBannerText\":\n \"本地 .md 文件无法被 Scribdown 接管与自动刷新。打开开关后即可生效。\",\n \"popup.fileAccessAction\": \"去开启\",\n \"popup.fileAccessActionAria\": \"打开扩展详情页以开启允许访问文件网址\",\n \"popup.autoRefreshGroupAria\": \"本地文件自动刷新设置\",\n \"popup.autoRefreshLabel\": \"本地文件自动刷新\",\n \"popup.autoRefreshInfoAria\": \"查看本地文件自动刷新说明\",\n \"popup.autoRefreshOnTip\": \"已开启:每 {seconds} 秒回拉一次本地 .md 文件\",\n \"popup.autoRefreshOffTip\": \"已关闭:本地 .md 更新后需手动刷新页面\",\n \"popup.intervalLabel\": \"刷新间隔\",\n \"popup.intervalInfoAria\": \"查看刷新间隔取值范围\",\n \"popup.intervalRangeTip\": \"取值范围 {min} – {max} 秒\",\n \"popup.intervalUnit\": \"秒\",\n \"popup.savedTip\": \"切换已保存,刷新当前页面后生效。\",\n\n \"browser.disabledTitle\": \"Scribdown(已关闭)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · 需开启「允许访问文件网址」\",\n\n \"viewer.errorHeading\": \"Scribdown 无法渲染该文件\",\n \"viewer.viewRawLink\": \"查看原始链接\",\n \"viewer.errorIframe\": \"Scribdown viewer 不允许在 iframe 中加载。\",\n \"viewer.errorMissingSrc\": \"缺少 src 参数。\",\n \"viewer.errorRequestFailed\": \"请求失败:{message}\",\n \"viewer.errorNotMarkdown\": \"响应不是 Markdown 类型(Content-Type: {contentType})。\",\n \"viewer.contentTypeUndeclared\": \"未声明\",\n \"viewer.errorEmpty\": \"文件内容为空。\",\n \"viewer.errorUnsupportedProtocol\": \"不支持的协议({protocol}),仅允许 http / https。\",\n \"viewer.errorInvalidUrl\": \"src 参数不是合法的 URL。\",\n\n \"vscode.noMarkdownWarning\": \"请先打开一个 Markdown 文档,再执行 Scribdown 预览。\",\n \"vscode.openLinkFailed\": \"无法打开链接:{href}\",\n \"vscode.linkTargetMissing\": \"链接目标不存在:{path}\",\n \"vscode.renderFailed\": \"渲染失败\",\n\n \"manifest.browserName\": \"Scribdown\",\n \"manifest.browserDescription\": \"手绘风格的 Markdown 渲染体验。\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown 预览\",\n \"manifest.vscodeDescription\": \"VS Code 的手绘风格 Markdown 预览。\",\n \"manifest.vscodeCommandTitle\": \"打开 Scribdown 预览\",\n \"manifest.vscodeLanguageDescription\": \"选择 Scribdown 界面使用的语言。\",\n \"manifest.vscodeLanguageSystemDescription\": \"跟随 VS Code 显示语言。\",\n \"manifest.vscodeLanguageEnglishDescription\": \"使用英语。\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"使用简体中文。\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"使用繁體中文。\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"使用日语。\",\n \"manifest.vscodeLanguageKoreanDescription\": \"使用韩语。\",\n \"manifest.vscodeLanguageSpanishDescription\": \"使用西班牙语。\",\n \"manifest.vscodeLanguageFrenchDescription\": \"使用法语。\",\n \"manifest.vscodeLanguageGermanDescription\": \"使用德语。\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"使用巴西葡萄牙语。\",\n \"manifest.vscodeLanguageRussianDescription\": \"使用俄语。\"\n};\n\n/** 繁体中文文案。 */\nconst ZH_TW_MESSAGES: Messages = {\n ...ZH_CN_MESSAGES,\n \"toolbar.toc\": \"目錄\",\n \"toolbar.tocClose\": \"關閉目錄\",\n \"toolbar.tocEmpty\": \"暫無標題\",\n \"toolbar.tocResize\": \"拖曳調整目錄寬度\",\n \"toolbar.more\": \"更多\",\n \"toolbar.pageWidth\": \"頁面寬度\",\n \"toolbar.backTop\": \"回到頂部\",\n \"toolbar.language\": \"語言\",\n \"toolbar.languageSystem\": \"跟隨應用程式語言\",\n \"toolbar.languageSimplifiedChinese\": \"簡體中文\",\n \"toolbar.languageTraditionalChinese\": \"繁體中文\",\n \"toolbar.languageJapanese\": \"日語\",\n \"toolbar.languageKorean\": \"韓語\",\n \"toolbar.languageSpanish\": \"西班牙語\",\n \"toolbar.about\": \"關於\",\n \"code.copy\": \"複製程式碼\",\n \"code.copied\": \"已複製\",\n \"content.copy\": \"複製內容\",\n \"content.copied\": \"已複製\",\n \"mermaid.renderFailed\": \"圖表轉譯失敗\",\n \"mermaid.fullscreenButton\": \"全螢幕檢視圖表\",\n \"mermaid.fullscreen\": \"全螢幕檢視 Mermaid 圖表\",\n \"mermaid.zoomIn\": \"放大圖表\",\n \"mermaid.zoomOut\": \"縮小圖表\",\n \"mermaid.zoomReset\": \"重設縮放\",\n \"mermaid.zoomControls\": \"圖表縮放控制項\",\n \"mermaid.switchToDrag\": \"切換為拖曳模式\",\n \"mermaid.switchToSelect\": \"切換為選取模式\",\n \"mermaid.close\": \"關閉全螢幕檢視\",\n \"table.copy\": \"複製表格\",\n \"image.viewFull\": \"檢視完整圖片\",\n \"image.viewFullOf\": \"檢視完整圖片:{alt}\",\n \"image.loadFailed\": \"圖片載入失敗\",\n \"image.hint\": \"快速鍵:+/= 放大 · - 縮小 · 0 重設 · Esc 關閉 · 拖曳可平移 · Ctrl/⌘ + 滾輪縮放\",\n \"image.zoomIn\": \"放大圖片\",\n \"image.zoomOut\": \"縮小圖片\",\n \"image.zoomReset\": \"重設縮放\",\n \"image.zoomControls\": \"圖片縮放控制項\",\n \"image.close\": \"關閉圖片檢視器\",\n \"video.loadFailed\": \"影片載入失敗\",\n \"toc.label\": \"目錄\",\n \"toc.toggle\": \"展開或摺疊子目錄\",\n \"frontmatter.label\": \"中繼資料\",\n \"popup.enableAria\": \"啟用 Scribdown\",\n \"popup.enabledTitle\": \"已啟用 Scribdown\",\n \"popup.disabledTitle\": \"已關閉 Scribdown\",\n \"popup.disabledEmpty\": \"已關閉,Markdown 頁面不再由 Scribdown 接管。\",\n \"popup.fileAccessBannerTitle\": \"⚠️「允許存取檔案網址」未開啟\",\n \"popup.fileAccessBannerText\": \"Scribdown 無法接管或自動重新整理本機 .md 檔案。開啟開關即可使用。\",\n \"popup.fileAccessAction\": \"前往開啟\",\n \"popup.fileAccessActionAria\": \"開啟擴充功能詳細資料頁面以允許存取檔案網址\",\n \"popup.autoRefreshGroupAria\": \"本機檔案自動重新整理設定\",\n \"popup.autoRefreshLabel\": \"自動重新整理本機檔案\",\n \"popup.autoRefreshInfoAria\": \"關於本機檔案自動重新整理\",\n \"popup.autoRefreshOnTip\": \"已開啟:每 {seconds} 秒重新讀取一次本機 .md 檔案\",\n \"popup.autoRefreshOffTip\": \"已關閉:本機 .md 檔案變更後需手動重新整理頁面\",\n \"popup.intervalLabel\": \"重新整理間隔\",\n \"popup.intervalInfoAria\": \"重新整理間隔範圍\",\n \"popup.intervalRangeTip\": \"範圍 {min}–{max} 秒\",\n \"popup.intervalUnit\": \"秒\",\n \"popup.savedTip\": \"已儲存。重新整理目前頁面後生效。\",\n \"browser.disabledTitle\": \"Scribdown(已關閉)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · 需開啟「允許存取檔案網址」\",\n \"viewer.errorHeading\": \"Scribdown 無法轉譯此檔案\",\n \"viewer.viewRawLink\": \"檢視原始連結\",\n \"viewer.errorIframe\": \"Scribdown 檢視器無法在 iframe 中載入。\",\n \"viewer.errorMissingSrc\": \"缺少 src 參數。\",\n \"viewer.errorRequestFailed\": \"請求失敗:{message}\",\n \"viewer.errorNotMarkdown\": \"回應不是 Markdown 類型(Content-Type:{contentType})。\",\n \"viewer.contentTypeUndeclared\": \"未宣告\",\n \"viewer.errorEmpty\": \"檔案內容為空。\",\n \"viewer.errorUnsupportedProtocol\": \"不支援的通訊協定({protocol});僅允許 http / https。\",\n \"viewer.errorInvalidUrl\": \"src 參數不是有效的 URL。\",\n \"vscode.noMarkdownWarning\": \"請先開啟 Markdown 文件,再執行 Scribdown 預覽。\",\n \"vscode.openLinkFailed\": \"無法開啟連結:{href}\",\n \"vscode.linkTargetMissing\": \"找不到連結目標:{path}\",\n \"vscode.renderFailed\": \"轉譯失敗\",\n \"manifest.browserDescription\": \"手繪風格的 Markdown 轉譯體驗。\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown 預覽\",\n \"manifest.vscodeDescription\": \"VS Code 的手繪風格 Markdown 預覽。\",\n \"manifest.vscodeCommandTitle\": \"開啟 Scribdown 預覽\",\n \"manifest.vscodeLanguageDescription\": \"選擇 Scribdown 介面使用的語言。\",\n \"manifest.vscodeLanguageSystemDescription\": \"跟隨 VS Code 顯示語言。\",\n \"manifest.vscodeLanguageEnglishDescription\": \"使用英文。\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"使用簡體中文。\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"使用繁體中文。\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"使用日語。\",\n \"manifest.vscodeLanguageKoreanDescription\": \"使用韓語。\",\n \"manifest.vscodeLanguageSpanishDescription\": \"使用西班牙語。\"\n};\n\n/** 日语文案。 */\nconst JA_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"目次\",\n \"toolbar.tocClose\": \"目次を閉じる\",\n \"toolbar.tocEmpty\": \"見出しがありません\",\n \"toolbar.tocResize\": \"目次の幅を調整\",\n \"toolbar.more\": \"その他\",\n \"toolbar.pageWidth\": \"ページ幅\",\n \"toolbar.backTop\": \"先頭に戻る\",\n \"toolbar.language\": \"言語\",\n \"toolbar.languageSystem\": \"アプリの表示言語に従う\",\n \"toolbar.languageSimplifiedChinese\": \"簡体字中国語\",\n \"toolbar.languageTraditionalChinese\": \"繁体字中国語\",\n \"toolbar.languageJapanese\": \"日本語\",\n \"toolbar.languageKorean\": \"韓国語\",\n \"toolbar.languageSpanish\": \"スペイン語\",\n \"toolbar.about\": \"について\",\n \"code.copy\": \"コードをコピー\",\n \"code.copied\": \"コピーしました\",\n \"content.copy\": \"内容をコピー\",\n \"content.copied\": \"コピーしました\",\n \"mermaid.renderFailed\": \"図をレンダリングできませんでした\",\n \"mermaid.fullscreenButton\": \"図を全画面表示\",\n \"mermaid.fullscreen\": \"Mermaid 図を全画面表示\",\n \"mermaid.zoomIn\": \"図を拡大\",\n \"mermaid.zoomOut\": \"図を縮小\",\n \"mermaid.zoomReset\": \"ズームをリセット\",\n \"mermaid.zoomControls\": \"図のズームコントロール\",\n \"mermaid.switchToDrag\": \"ドラッグモードに切り替え\",\n \"mermaid.switchToSelect\": \"選択モードに切り替え\",\n \"mermaid.close\": \"全画面表示を閉じる\",\n \"table.copy\": \"表をコピー\",\n \"image.viewFull\": \"画像を全体表示\",\n \"image.viewFullOf\": \"画像を全体表示:{alt}\",\n \"image.loadFailed\": \"画像を読み込めませんでした\",\n \"image.hint\":\n \"ショートカット:+/= 拡大 · - 縮小 · 0 リセット · Esc 閉じる · ドラッグで移動 · Ctrl/⌘ + ホイールで拡大縮小\",\n \"image.zoomIn\": \"画像を拡大\",\n \"image.zoomOut\": \"画像を縮小\",\n \"image.zoomReset\": \"ズームをリセット\",\n \"image.zoomControls\": \"画像のズームコントロール\",\n \"image.close\": \"画像ビューアを閉じる\",\n \"video.loadFailed\": \"動画を読み込めませんでした\",\n \"toc.label\": \"目次\",\n \"toc.toggle\": \"小見出しを展開または折りたたむ\",\n \"frontmatter.label\": \"メタデータ\",\n \"popup.enableAria\": \"Scribdown を有効にする\",\n \"popup.enabledTitle\": \"Scribdown は有効です\",\n \"popup.disabledTitle\": \"Scribdown は無効です\",\n \"popup.disabledEmpty\": \"無効です。Markdown ページは Scribdown で表示されなくなります。\",\n \"popup.fileAccessBannerTitle\": \"⚠️「ファイルの URL へのアクセスを許可」がオフです\",\n \"popup.fileAccessBannerText\":\n \"ローカルの .md ファイルを Scribdown で表示または自動更新できません。スイッチをオンにしてください。\",\n \"popup.fileAccessAction\": \"有効にする\",\n \"popup.fileAccessActionAria\": \"拡張機能の詳細ページを開き、ファイル URL へのアクセスを許可する\",\n \"popup.autoRefreshGroupAria\": \"ローカルファイルの自動更新設定\",\n \"popup.autoRefreshLabel\": \"ローカルファイルを自動更新\",\n \"popup.autoRefreshInfoAria\": \"ローカルファイルの自動更新について\",\n \"popup.autoRefreshOnTip\": \"オン:{seconds} 秒ごとにローカルの .md ファイルを再取得します\",\n \"popup.autoRefreshOffTip\":\n \"オフ:ローカルの .md ファイルを変更後、手動でページを再読み込みします\",\n \"popup.intervalLabel\": \"更新間隔\",\n \"popup.intervalInfoAria\": \"更新間隔の範囲\",\n \"popup.intervalRangeTip\": \"範囲:{min}~{max} 秒\",\n \"popup.intervalUnit\": \"秒\",\n \"popup.savedTip\": \"保存しました。現在のページを再読み込みして適用してください。\",\n \"browser.disabledTitle\": \"Scribdown(無効)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · 「ファイルの URL へのアクセスを許可」が必要です\",\n \"viewer.errorHeading\": \"Scribdown はこのファイルをレンダリングできません\",\n \"viewer.viewRawLink\": \"元のソースを表示\",\n \"viewer.errorIframe\": \"Scribdown ビューアは iframe 内では読み込めません。\",\n \"viewer.errorMissingSrc\": \"src パラメータがありません。\",\n \"viewer.errorRequestFailed\": \"リクエストに失敗しました:{message}\",\n \"viewer.errorNotMarkdown\": \"応答は Markdown ではありません(Content-Type:{contentType})。\",\n \"viewer.contentTypeUndeclared\": \"未指定\",\n \"viewer.errorEmpty\": \"ファイルは空です。\",\n \"viewer.errorUnsupportedProtocol\":\n \"未対応のプロトコル({protocol})です。http / https のみ使用できます。\",\n \"viewer.errorInvalidUrl\": \"src パラメータが有効な URL ではありません。\",\n \"vscode.noMarkdownWarning\":\n \"まず Markdown ドキュメントを開いてから、Scribdown プレビューを実行してください。\",\n \"vscode.openLinkFailed\": \"リンクを開けません:{href}\",\n \"vscode.linkTargetMissing\": \"リンク先が見つかりません:{path}\",\n \"vscode.renderFailed\": \"レンダリングに失敗しました\",\n \"manifest.browserDescription\": \"手書き風の Markdown レンダリング体験。\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown プレビュー\",\n \"manifest.vscodeDescription\": \"VS Code 用の手書き風 Markdown プレビュー。\",\n \"manifest.vscodeCommandTitle\": \"Scribdown プレビューを開く\",\n \"manifest.vscodeLanguageDescription\": \"Scribdown の表示言語を選択します。\",\n \"manifest.vscodeLanguageSystemDescription\": \"VS Code の表示言語に従う。\",\n \"manifest.vscodeLanguageEnglishDescription\": \"英語を使用する。\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"簡体字中国語を使用する。\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"繁体字中国語を使用する。\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"日本語を使用する。\",\n \"manifest.vscodeLanguageKoreanDescription\": \"韓国語を使用する。\",\n \"manifest.vscodeLanguageSpanishDescription\": \"スペイン語を使用する。\"\n};\n\n/** 韩语文案。 */\nconst KO_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"목차\",\n \"toolbar.tocClose\": \"목차 닫기\",\n \"toolbar.tocEmpty\": \"제목이 없습니다\",\n \"toolbar.tocResize\": \"목차 너비 조절\",\n \"toolbar.more\": \"더보기\",\n \"toolbar.pageWidth\": \"페이지 너비\",\n \"toolbar.backTop\": \"맨 위로\",\n \"toolbar.language\": \"언어\",\n \"toolbar.languageSystem\": \"앱 표시 언어 따르기\",\n \"toolbar.languageSimplifiedChinese\": \"중국어 간체\",\n \"toolbar.languageTraditionalChinese\": \"중국어 번체\",\n \"toolbar.languageJapanese\": \"일본어\",\n \"toolbar.languageKorean\": \"한국어\",\n \"toolbar.languageSpanish\": \"스페인어\",\n \"toolbar.about\": \"정보\",\n \"code.copy\": \"코드 복사\",\n \"code.copied\": \"복사됨\",\n \"content.copy\": \"내용 복사\",\n \"content.copied\": \"복사됨\",\n \"mermaid.renderFailed\": \"다이어그램을 렌더링하지 못했습니다\",\n \"mermaid.fullscreenButton\": \"다이어그램 전체 화면 보기\",\n \"mermaid.fullscreen\": \"Mermaid 다이어그램 전체 화면 보기\",\n \"mermaid.zoomIn\": \"다이어그램 확대\",\n \"mermaid.zoomOut\": \"다이어그램 축소\",\n \"mermaid.zoomReset\": \"확대/축소 재설정\",\n \"mermaid.zoomControls\": \"다이어그램 확대/축소 컨트롤\",\n \"mermaid.switchToDrag\": \"드래그 모드로 전환\",\n \"mermaid.switchToSelect\": \"선택 모드로 전환\",\n \"mermaid.close\": \"전체 화면 닫기\",\n \"table.copy\": \"표 복사\",\n \"image.viewFull\": \"전체 이미지 보기\",\n \"image.viewFullOf\": \"전체 이미지 보기: {alt}\",\n \"image.loadFailed\": \"이미지를 불러오지 못했습니다\",\n \"image.hint\":\n \"단축키: +/= 확대 · - 축소 · 0 재설정 · Esc 닫기 · 드래그로 이동 · Ctrl/⌘ + 휠로 확대/축소\",\n \"image.zoomIn\": \"이미지 확대\",\n \"image.zoomOut\": \"이미지 축소\",\n \"image.zoomReset\": \"확대/축소 재설정\",\n \"image.zoomControls\": \"이미지 확대/축소 컨트롤\",\n \"image.close\": \"이미지 뷰어 닫기\",\n \"video.loadFailed\": \"동영상을 불러오지 못했습니다\",\n \"toc.label\": \"목차\",\n \"toc.toggle\": \"하위 제목 펼치기 또는 접기\",\n \"frontmatter.label\": \"메타데이터\",\n \"popup.enableAria\": \"Scribdown 사용\",\n \"popup.enabledTitle\": \"Scribdown 켜짐\",\n \"popup.disabledTitle\": \"Scribdown 꺼짐\",\n \"popup.disabledEmpty\": \"꺼짐. Markdown 페이지를 Scribdown에서 더 이상 처리하지 않습니다.\",\n \"popup.fileAccessBannerTitle\": \"⚠️ ‘파일 URL에 대한 액세스 허용’이 꺼져 있습니다\",\n \"popup.fileAccessBannerText\":\n \"Scribdown이 로컬 .md 파일을 처리하거나 자동으로 새로 고칠 수 없습니다. 사용하려면 스위치를 켜세요.\",\n \"popup.fileAccessAction\": \"켜기\",\n \"popup.fileAccessActionAria\": \"확장 프로그램 세부정보 페이지를 열어 파일 URL 액세스 허용\",\n \"popup.autoRefreshGroupAria\": \"로컬 파일 자동 새로 고침 설정\",\n \"popup.autoRefreshLabel\": \"로컬 파일 자동 새로 고침\",\n \"popup.autoRefreshInfoAria\": \"로컬 파일 자동 새로 고침 정보\",\n \"popup.autoRefreshOnTip\": \"켜짐: {seconds}초마다 로컬 .md 파일을 다시 가져옵니다\",\n \"popup.autoRefreshOffTip\": \"꺼짐: 로컬 .md 파일 변경 후 페이지를 수동으로 새로 고치세요\",\n \"popup.intervalLabel\": \"새로 고침 간격\",\n \"popup.intervalInfoAria\": \"새로 고침 간격 범위\",\n \"popup.intervalRangeTip\": \"범위 {min}~{max}초\",\n \"popup.intervalUnit\": \"초\",\n \"popup.savedTip\": \"저장되었습니다. 현재 페이지를 새로 고치면 적용됩니다.\",\n \"browser.disabledTitle\": \"Scribdown(꺼짐)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · ‘파일 URL에 대한 액세스 허용’이 필요합니다\",\n \"viewer.errorHeading\": \"Scribdown에서 이 파일을 렌더링할 수 없습니다\",\n \"viewer.viewRawLink\": \"원본 보기\",\n \"viewer.errorIframe\": \"Scribdown 뷰어는 iframe 안에서 불러올 수 없습니다.\",\n \"viewer.errorMissingSrc\": \"src 매개변수가 없습니다.\",\n \"viewer.errorRequestFailed\": \"요청 실패: {message}\",\n \"viewer.errorNotMarkdown\": \"응답이 Markdown이 아닙니다(Content-Type: {contentType}).\",\n \"viewer.contentTypeUndeclared\": \"지정되지 않음\",\n \"viewer.errorEmpty\": \"파일이 비어 있습니다.\",\n \"viewer.errorUnsupportedProtocol\":\n \"지원하지 않는 프로토콜({protocol})입니다. http / https만 허용됩니다.\",\n \"viewer.errorInvalidUrl\": \"src 매개변수가 올바른 URL이 아닙니다.\",\n \"vscode.noMarkdownWarning\": \"먼저 Markdown 문서를 연 다음 Scribdown 미리 보기를 실행하세요.\",\n \"vscode.openLinkFailed\": \"링크를 열 수 없습니다: {href}\",\n \"vscode.linkTargetMissing\": \"링크 대상을 찾을 수 없습니다: {path}\",\n \"vscode.renderFailed\": \"렌더링 실패\",\n \"manifest.browserDescription\": \"손그림 스타일 Markdown 렌더링 경험.\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown 미리 보기\",\n \"manifest.vscodeDescription\": \"VS Code용 손그림 스타일 Markdown 미리 보기.\",\n \"manifest.vscodeCommandTitle\": \"Scribdown 미리 보기 열기\",\n \"manifest.vscodeLanguageDescription\": \"Scribdown 인터페이스에 사용할 언어를 선택합니다.\",\n \"manifest.vscodeLanguageSystemDescription\": \"VS Code 표시 언어를 따릅니다.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"영어를 사용합니다.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"중국어 간체를 사용합니다.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"중국어 번체를 사용합니다.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"일본어를 사용합니다.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"한국어를 사용합니다.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"스페인어를 사용합니다.\"\n};\n\n/** 西班牙语文案。 */\nconst ES_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Contenido\",\n \"toolbar.tocClose\": \"Cerrar contenido\",\n \"toolbar.tocEmpty\": \"No hay encabezados\",\n \"toolbar.tocResize\": \"Ajustar el ancho del contenido\",\n \"toolbar.more\": \"Más\",\n \"toolbar.pageWidth\": \"Ancho de página\",\n \"toolbar.backTop\": \"Volver arriba\",\n \"toolbar.language\": \"Idioma\",\n \"toolbar.languageSystem\": \"Seguir el idioma de la aplicación\",\n \"toolbar.languageSimplifiedChinese\": \"Chino simplificado\",\n \"toolbar.languageTraditionalChinese\": \"Chino tradicional\",\n \"toolbar.languageJapanese\": \"Japonés\",\n \"toolbar.languageKorean\": \"Coreano\",\n \"toolbar.languageSpanish\": \"Español\",\n \"toolbar.about\": \"Acerca de\",\n \"code.copy\": \"Copiar código\",\n \"code.copied\": \"Copiado\",\n \"content.copy\": \"Copiar contenido\",\n \"content.copied\": \"Copiado\",\n \"mermaid.renderFailed\": \"No se pudo renderizar el diagrama\",\n \"mermaid.fullscreenButton\": \"Ver diagrama a pantalla completa\",\n \"mermaid.fullscreen\": \"Ver diagrama Mermaid a pantalla completa\",\n \"mermaid.zoomIn\": \"Ampliar diagrama\",\n \"mermaid.zoomOut\": \"Reducir diagrama\",\n \"mermaid.zoomReset\": \"Restablecer zoom\",\n \"mermaid.zoomControls\": \"Controles de zoom del diagrama\",\n \"mermaid.switchToDrag\": \"Cambiar al modo de arrastre\",\n \"mermaid.switchToSelect\": \"Cambiar al modo de selección\",\n \"mermaid.close\": \"Cerrar vista a pantalla completa\",\n \"table.copy\": \"Copiar tabla\",\n \"image.viewFull\": \"Ver imagen completa\",\n \"image.viewFullOf\": \"Ver imagen completa: {alt}\",\n \"image.loadFailed\": \"No se pudo cargar la imagen\",\n \"image.hint\":\n \"Atajos: +/= ampliar · - reducir · 0 restablecer · Esc cerrar · arrastrar para mover · Ctrl/⌘ + rueda para ampliar\",\n \"image.zoomIn\": \"Ampliar imagen\",\n \"image.zoomOut\": \"Reducir imagen\",\n \"image.zoomReset\": \"Restablecer zoom\",\n \"image.zoomControls\": \"Controles de zoom de imagen\",\n \"image.close\": \"Cerrar visor de imágenes\",\n \"video.loadFailed\": \"No se pudo cargar el vídeo\",\n \"toc.label\": \"Contenido\",\n \"toc.toggle\": \"Expandir o contraer subencabezados\",\n \"frontmatter.label\": \"Metadatos\",\n \"popup.enableAria\": \"Activar Scribdown\",\n \"popup.enabledTitle\": \"Scribdown activado\",\n \"popup.disabledTitle\": \"Scribdown desactivado\",\n \"popup.disabledEmpty\": \"Desactivado. Scribdown ya no procesará las páginas Markdown.\",\n \"popup.fileAccessBannerTitle\": \"⚠️ «Permitir el acceso a URL de archivos» está desactivado\",\n \"popup.fileAccessBannerText\":\n \"Scribdown no puede procesar ni actualizar automáticamente archivos .md locales. Activa el interruptor para habilitarlo.\",\n \"popup.fileAccessAction\": \"Activar\",\n \"popup.fileAccessActionAria\":\n \"Abrir la página de detalles de la extensión para permitir el acceso a URL de archivos\",\n \"popup.autoRefreshGroupAria\": \"Configuración de actualización automática de archivos locales\",\n \"popup.autoRefreshLabel\": \"Actualizar automáticamente archivos locales\",\n \"popup.autoRefreshInfoAria\": \"Acerca de la actualización automática de archivos locales\",\n \"popup.autoRefreshOnTip\": \"Activado: vuelve a obtener el archivo .md local cada {seconds} s\",\n \"popup.autoRefreshOffTip\":\n \"Desactivado: recarga la página manualmente después de cambiar el archivo .md local\",\n \"popup.intervalLabel\": \"Intervalo de actualización\",\n \"popup.intervalInfoAria\": \"Rango del intervalo de actualización\",\n \"popup.intervalRangeTip\": \"Rango de {min} a {max} segundos\",\n \"popup.intervalUnit\": \"s\",\n \"popup.savedTip\": \"Guardado. Recarga la página actual para aplicarlo.\",\n \"browser.disabledTitle\": \"Scribdown (desactivado)\",\n \"browser.fileAccessNeededTitle\": \"Scribdown · necesita «Permitir el acceso a URL de archivos»\",\n \"viewer.errorHeading\": \"Scribdown no puede renderizar este archivo\",\n \"viewer.viewRawLink\": \"Ver fuente sin procesar\",\n \"viewer.errorIframe\": \"El visor de Scribdown no se puede cargar dentro de un iframe.\",\n \"viewer.errorMissingSrc\": \"Falta el parámetro src.\",\n \"viewer.errorRequestFailed\": \"Solicitud fallida: {message}\",\n \"viewer.errorNotMarkdown\": \"La respuesta no es Markdown (Content-Type: {contentType}).\",\n \"viewer.contentTypeUndeclared\": \"sin declarar\",\n \"viewer.errorEmpty\": \"El archivo está vacío.\",\n \"viewer.errorUnsupportedProtocol\":\n \"Protocolo no compatible ({protocol}); solo se permiten http / https.\",\n \"viewer.errorInvalidUrl\": \"El parámetro src no es una URL válida.\",\n \"vscode.noMarkdownWarning\":\n \"Abre primero un documento Markdown y después ejecuta la vista previa de Scribdown.\",\n \"vscode.openLinkFailed\": \"No se puede abrir el enlace: {href}\",\n \"vscode.linkTargetMissing\": \"No se encontró el destino del enlace: {path}\",\n \"vscode.renderFailed\": \"Error de renderizado\",\n \"manifest.browserDescription\":\n \"Experiencia de renderizado de Markdown con estilo dibujado a mano.\",\n \"manifest.vscodeDisplayName\": \"Vista previa de Markdown de Scribdown\",\n \"manifest.vscodeDescription\": \"Vista previa de Markdown con estilo dibujado a mano para VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Abrir vista previa de Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Elige el idioma de la interfaz de Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Seguir el idioma de visualización de VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Usar inglés.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Usar chino simplificado.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Usar chino tradicional.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Usar japonés.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Usar coreano.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Usar español.\"\n};\n\n/** 法语文案。 */\nconst FR_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Sommaire\",\n \"toolbar.tocClose\": \"Fermer le sommaire\",\n \"toolbar.tocEmpty\": \"Aucun titre\",\n \"toolbar.tocResize\": \"Ajuster la largeur du sommaire\",\n \"toolbar.more\": \"Plus\",\n \"toolbar.pageWidth\": \"Largeur de page\",\n \"toolbar.backTop\": \"Retour en haut\",\n \"toolbar.language\": \"Langue\",\n \"toolbar.languageSystem\": \"Suivre la langue de l’application\",\n \"toolbar.languageSimplifiedChinese\": \"Chinois simplifié\",\n \"toolbar.languageTraditionalChinese\": \"Chinois traditionnel\",\n \"toolbar.languageJapanese\": \"Japonais\",\n \"toolbar.languageKorean\": \"Coréen\",\n \"toolbar.languageSpanish\": \"Espagnol\",\n \"toolbar.languageFrench\": \"Français\",\n \"toolbar.languageGerman\": \"Allemand\",\n \"toolbar.languageBrazilianPortuguese\": \"Portugais (Brésil)\",\n \"toolbar.languageRussian\": \"Russe\",\n \"toolbar.about\": \"À propos\",\n \"manifest.browserDescription\": \"Expérience de rendu Markdown au style dessiné à la main.\",\n \"manifest.vscodeDisplayName\": \"Aperçu Markdown Scribdown\",\n \"manifest.vscodeDescription\": \"Aperçu Markdown au style dessiné à la main pour VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Ouvrir l’aperçu Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Choisissez la langue de l’interface Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Suivre la langue d’affichage de VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Utiliser l’anglais.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Utiliser le chinois simplifié.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Utiliser le chinois traditionnel.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Utiliser le japonais.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Utiliser le coréen.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Utiliser l’espagnol.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Utiliser le français.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Utiliser l’allemand.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Utiliser le portugais (Brésil).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Utiliser le russe.\"\n};\n\n/** 德语文案。 */\nconst DE_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Inhalt\",\n \"toolbar.tocClose\": \"Inhalt schließen\",\n \"toolbar.tocEmpty\": \"Keine Überschriften\",\n \"toolbar.tocResize\": \"Breite des Inhalts anpassen\",\n \"toolbar.more\": \"Mehr\",\n \"toolbar.pageWidth\": \"Seitenbreite\",\n \"toolbar.backTop\": \"Nach oben\",\n \"toolbar.language\": \"Sprache\",\n \"toolbar.languageSystem\": \"Der Anwendungssprache folgen\",\n \"toolbar.languageSimplifiedChinese\": \"Vereinfachtes Chinesisch\",\n \"toolbar.languageTraditionalChinese\": \"Traditionelles Chinesisch\",\n \"toolbar.languageJapanese\": \"Japanisch\",\n \"toolbar.languageKorean\": \"Koreanisch\",\n \"toolbar.languageSpanish\": \"Spanisch\",\n \"toolbar.languageFrench\": \"Französisch\",\n \"toolbar.languageGerman\": \"Deutsch\",\n \"toolbar.languageBrazilianPortuguese\": \"Portugiesisch (Brasilien)\",\n \"toolbar.languageRussian\": \"Russisch\",\n \"toolbar.about\": \"Über\",\n \"manifest.browserDescription\": \"Markdown-Rendering im handgezeichneten Stil.\",\n \"manifest.vscodeDisplayName\": \"Scribdown Markdown-Vorschau\",\n \"manifest.vscodeDescription\": \"Markdown-Vorschau im handgezeichneten Stil für VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Scribdown-Vorschau öffnen\",\n \"manifest.vscodeLanguageDescription\": \"Wählen Sie die Sprache der Scribdown-Oberfläche.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Der Anzeigesprache von VS Code folgen.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Englisch verwenden.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Vereinfachtes Chinesisch verwenden.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Traditionelles Chinesisch verwenden.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Japanisch verwenden.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Koreanisch verwenden.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Spanisch verwenden.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Französisch verwenden.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Deutsch verwenden.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Portugiesisch (Brasilien) verwenden.\",\n \"manifest.vscodeLanguageRussianDescription\": \"Russisch verwenden.\"\n};\n\n/** 巴西葡萄牙语文案。 */\nconst PT_BR_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Conteúdo\",\n \"toolbar.tocClose\": \"Fechar conteúdo\",\n \"toolbar.tocEmpty\": \"Sem títulos\",\n \"toolbar.tocResize\": \"Ajustar a largura do conteúdo\",\n \"toolbar.more\": \"Mais\",\n \"toolbar.pageWidth\": \"Largura da página\",\n \"toolbar.backTop\": \"Voltar ao topo\",\n \"toolbar.language\": \"Idioma\",\n \"toolbar.languageSystem\": \"Seguir o idioma do aplicativo\",\n \"toolbar.languageSimplifiedChinese\": \"Chinês simplificado\",\n \"toolbar.languageTraditionalChinese\": \"Chinês tradicional\",\n \"toolbar.languageJapanese\": \"Japonês\",\n \"toolbar.languageKorean\": \"Coreano\",\n \"toolbar.languageSpanish\": \"Espanhol\",\n \"toolbar.languageFrench\": \"Francês\",\n \"toolbar.languageGerman\": \"Alemão\",\n \"toolbar.languageBrazilianPortuguese\": \"Português (Brasil)\",\n \"toolbar.languageRussian\": \"Russo\",\n \"toolbar.about\": \"Sobre\",\n \"manifest.browserDescription\": \"Experiência de renderização Markdown com estilo desenhado à mão.\",\n \"manifest.vscodeDisplayName\": \"Visualização Markdown do Scribdown\",\n \"manifest.vscodeDescription\": \"Visualização Markdown com estilo desenhado à mão para VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Abrir visualização do Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Escolha o idioma da interface do Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Seguir o idioma de exibição do VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Usar inglês.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Usar chinês simplificado.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Usar chinês tradicional.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Usar japonês.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Usar coreano.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Usar espanhol.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Usar francês.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Usar alemão.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Usar português (Brasil).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Usar russo.\"\n};\n\n/** 俄语文案。 */\nconst RU_MESSAGES: Messages = {\n ...EN_MESSAGES,\n \"toolbar.toc\": \"Содержание\",\n \"toolbar.tocClose\": \"Закрыть содержание\",\n \"toolbar.tocEmpty\": \"Нет заголовков\",\n \"toolbar.tocResize\": \"Изменить ширину содержания\",\n \"toolbar.more\": \"Ещё\",\n \"toolbar.pageWidth\": \"Ширина страницы\",\n \"toolbar.backTop\": \"Наверх\",\n \"toolbar.language\": \"Язык\",\n \"toolbar.languageSystem\": \"Следовать языку приложения\",\n \"toolbar.languageSimplifiedChinese\": \"Упрощённый китайский\",\n \"toolbar.languageTraditionalChinese\": \"Традиционный китайский\",\n \"toolbar.languageJapanese\": \"Японский\",\n \"toolbar.languageKorean\": \"Корейский\",\n \"toolbar.languageSpanish\": \"Испанский\",\n \"toolbar.languageFrench\": \"Французский\",\n \"toolbar.languageGerman\": \"Немецкий\",\n \"toolbar.languageBrazilianPortuguese\": \"Португальский (Бразилия)\",\n \"toolbar.languageRussian\": \"Русский\",\n \"toolbar.about\": \"О программе\",\n \"manifest.browserDescription\": \"Рендеринг Markdown в рисованном стиле.\",\n \"manifest.vscodeDisplayName\": \"Предпросмотр Markdown Scribdown\",\n \"manifest.vscodeDescription\": \"Предпросмотр Markdown в рисованном стиле для VS Code.\",\n \"manifest.vscodeCommandTitle\": \"Открыть предпросмотр Scribdown\",\n \"manifest.vscodeLanguageDescription\": \"Выберите язык интерфейса Scribdown.\",\n \"manifest.vscodeLanguageSystemDescription\": \"Следовать языку интерфейса VS Code.\",\n \"manifest.vscodeLanguageEnglishDescription\": \"Использовать английский.\",\n \"manifest.vscodeLanguageSimplifiedChineseDescription\": \"Использовать упрощённый китайский.\",\n \"manifest.vscodeLanguageTraditionalChineseDescription\": \"Использовать традиционный китайский.\",\n \"manifest.vscodeLanguageJapaneseDescription\": \"Использовать японский.\",\n \"manifest.vscodeLanguageKoreanDescription\": \"Использовать корейский.\",\n \"manifest.vscodeLanguageSpanishDescription\": \"Использовать испанский.\",\n \"manifest.vscodeLanguageFrenchDescription\": \"Использовать французский.\",\n \"manifest.vscodeLanguageGermanDescription\": \"Использовать немецкий.\",\n \"manifest.vscodeLanguageBrazilianPortugueseDescription\": \"Использовать португальский (Бразилия).\",\n \"manifest.vscodeLanguageRussianDescription\": \"Использовать русский.\"\n};\n\n/**\n * 语言 → 文案目录的总表。新增语言时在此登记对应目录。\n */\nexport const MESSAGES: Record<LocaleType, Messages> = {\n [LocaleType.English]: EN_MESSAGES,\n [LocaleType.SimplifiedChinese]: ZH_CN_MESSAGES,\n [LocaleType.TraditionalChinese]: ZH_TW_MESSAGES,\n [LocaleType.Japanese]: JA_MESSAGES,\n [LocaleType.Korean]: KO_MESSAGES,\n [LocaleType.Spanish]: ES_MESSAGES,\n [LocaleType.French]: FR_MESSAGES,\n [LocaleType.German]: DE_MESSAGES,\n [LocaleType.BrazilianPortuguese]: PT_BR_MESSAGES,\n [LocaleType.Russian]: RU_MESSAGES\n};\n","/**\n * Scribdown 无框架文案取值内核。\n * 纯 TS、零第三方依赖,可在浏览器 popup(React)、纯 DOM 工具栏、VS Code webview 与\n * Node 宿主中一致运行。宿主启动时按语言调一次 {@link setActiveLocale},其余代码用 {@link t}\n * 取文案;需要多语言并存时用 {@link createTranslator} 取独立实例。\n */\n\nimport {\n DEFAULT_LOCALE,\n LOCALE_FALLBACKS,\n LocalePreference,\n LocaleType,\n SUPPORTED_LOCALES,\n normalizeLocale\n} from \"./locales\";\nimport { MESSAGES } from \"./messages\";\nimport type { MessageKey } from \"./messages.types\";\n\n/**\n * 插值变量映射:把文案中的 `{name}` 占位替换为对应值。\n */\nexport type MessageVars = Record<string, string | number>;\n\n/**\n * 当前全局生效的界面语言。默认取兜底语言,宿主启动时通过 {@link setActiveLocale} 覆盖。\n */\nlet activeLocale: LocaleType = DEFAULT_LOCALE;\n\n/**\n * 设置全局生效语言。非受支持语言会被静默回落到 {@link DEFAULT_LOCALE},避免脏输入。\n * @param locale 目标语言(应为受支持的 {@link LocaleType})。\n */\nexport function setActiveLocale(locale: LocaleType): void {\n activeLocale = SUPPORTED_LOCALES.includes(locale) ? locale : DEFAULT_LOCALE;\n}\n\n/**\n * 读取当前全局生效语言。\n * @returns 当前语言。\n */\nexport function getActiveLocale(): LocaleType {\n return activeLocale;\n}\n\n/**\n * 按「显式语言偏好优先,系统语言其次」解析当前应使用的语言。\n * @param preference 宿主持久化的语言偏好;省略时视为跟随系统。\n * @param rawHostLocale 宿主原始语言标签(如 `navigator.language`、`vscode.env.language`)。\n * @returns 实际应生效的受支持语言。\n */\nexport function resolveLocalePreference(\n preference: LocalePreference | undefined,\n rawHostLocale: string | null | undefined\n): LocaleType {\n switch (preference) {\n case LocalePreference.English:\n return LocaleType.English;\n case LocalePreference.SimplifiedChinese:\n return LocaleType.SimplifiedChinese;\n case LocalePreference.TraditionalChinese:\n return LocaleType.TraditionalChinese;\n case LocalePreference.Japanese:\n return LocaleType.Japanese;\n case LocalePreference.Korean:\n return LocaleType.Korean;\n case LocalePreference.Spanish:\n return LocaleType.Spanish;\n case LocalePreference.French:\n return LocaleType.French;\n case LocalePreference.German:\n return LocaleType.German;\n case LocalePreference.BrazilianPortuguese:\n return LocaleType.BrazilianPortuguese;\n case LocalePreference.Russian:\n return LocaleType.Russian;\n case LocalePreference.System:\n default:\n return normalizeLocale(rawHostLocale);\n }\n}\n\n/**\n * 根据宿主保存的偏好和系统语言更新全局界面语言。\n * @param preference 宿主持久化的语言偏好;省略时跟随系统。\n * @param rawHostLocale 宿主原始语言标签。\n * @returns 实际生效的语言。\n */\nexport function setActiveLocaleFromPreference(\n preference: LocalePreference | undefined,\n rawHostLocale: string | null | undefined\n): LocaleType {\n /** 以统一优先级规则解析得到的语言。 */\n const resolvedLocale = resolveLocalePreference(preference, rawHostLocale);\n setActiveLocale(resolvedLocale);\n return resolvedLocale;\n}\n\n/**\n * 便捷方法:把宿主原始语言标签归一化后设为全局语言。\n * @param rawLocale 宿主原始语言标签(如 `navigator.language`、`vscode.env.language`)。\n * @returns 实际生效的语言。\n */\nexport function setActiveLocaleFromHost(rawLocale: string | null | undefined): LocaleType {\n return setActiveLocaleFromPreference(LocalePreference.System, rawLocale);\n}\n\n/**\n * 在指定语言及其回落链上解析某 key 的原始文案。\n * @param locale 起始语言。\n * @param key 文案 key。\n * @returns 命中的原始文案;全链缺失时返回 key 自身(便于暴露漏配)。\n */\nfunction resolveMessage(locale: LocaleType, key: MessageKey): string {\n // 关键步骤:按「命中语言 → 其回落链」顺序查找首个存在的文案。\n const lookupChain: LocaleType[] = [locale, ...LOCALE_FALLBACKS[locale]];\n\n for (const chainLocale of lookupChain) {\n /** 该语言目录下对应 key 的文案,可能不存在。 */\n const candidate = MESSAGES[chainLocale]?.[key];\n if (typeof candidate === \"string\") {\n return candidate;\n }\n }\n\n return key;\n}\n\n/**\n * 用插值变量替换文案中的 `{name}` 占位。未提供的占位原样保留。\n * @param template 含占位的文案模板。\n * @param vars 插值变量映射。\n * @returns 替换后的文案。\n */\nfunction interpolate(template: string, vars?: MessageVars): string {\n if (!vars) {\n return template;\n }\n\n return template.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => {\n /** 当前占位对应的变量值。 */\n const value = vars[name];\n return value === undefined ? placeholder : String(value);\n });\n}\n\n/**\n * 按当前全局语言取文案。\n * @param key 文案 key。\n * @param vars 可选插值变量。\n * @returns 已解析并插值的文案。\n */\nexport function t(key: MessageKey, vars?: MessageVars): string {\n return interpolate(resolveMessage(activeLocale, key), vars);\n}\n\n/**\n * 翻译函数类型:绑定固定语言的取文案方法。\n */\nexport type Translator = (key: MessageKey, vars?: MessageVars) => string;\n\n/**\n * 创建绑定固定语言的独立翻译器,不受全局语言影响。\n * 适用于多语言并存、或需要显式指定语言的场景(如静态清单生成)。\n * @param locale 目标语言,接受原始标签或 {@link LocaleType},会归一化到受支持语言。\n * @returns 绑定该语言的翻译函数。\n */\nexport function createTranslator(locale: LocaleType | string): Translator {\n /** 归一化后的目标语言。 */\n const resolvedLocale = normalizeLocale(locale);\n return (key, vars) => interpolate(resolveMessage(resolvedLocale, key), vars);\n}\n"],"mappings":"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","names":["PlatformType","ThemeType","LocaleType","LocalePreference"]}
|