notra-editor 0.5.0 → 0.6.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.
Files changed (72) hide show
  1. package/dist/components/code-block-view/code-block-shell.cjs +41 -0
  2. package/dist/components/code-block-view/code-block-shell.cjs.map +1 -0
  3. package/dist/components/code-block-view/code-block-shell.d.cts +11 -0
  4. package/dist/components/code-block-view/code-block-shell.d.ts +11 -0
  5. package/dist/components/code-block-view/code-block-shell.mjs +17 -0
  6. package/dist/components/code-block-view/code-block-shell.mjs.map +1 -0
  7. package/dist/components/{code-block-view.cjs → code-block-view/code-block-view.cjs} +16 -8
  8. package/dist/components/code-block-view/code-block-view.cjs.map +1 -0
  9. package/dist/components/code-block-view/code-block-view.d.cts +6 -0
  10. package/dist/components/code-block-view/code-block-view.d.ts +6 -0
  11. package/dist/components/code-block-view/code-block-view.mjs +26 -0
  12. package/dist/components/code-block-view/code-block-view.mjs.map +1 -0
  13. package/dist/components/code-block-view/language-select.cjs +91 -0
  14. package/dist/components/code-block-view/language-select.cjs.map +1 -0
  15. package/dist/components/code-block-view/language-select.d.cts +11 -0
  16. package/dist/components/code-block-view/language-select.d.ts +11 -0
  17. package/dist/components/code-block-view/language-select.mjs +74 -0
  18. package/dist/components/code-block-view/language-select.mjs.map +1 -0
  19. package/dist/components/ui/command.cjs +144 -0
  20. package/dist/components/ui/command.cjs.map +1 -0
  21. package/dist/components/ui/command.d.cts +12 -0
  22. package/dist/components/ui/command.d.ts +12 -0
  23. package/dist/components/ui/command.mjs +115 -0
  24. package/dist/components/ui/command.mjs.map +1 -0
  25. package/dist/extensions/code-block.cjs +76 -19
  26. package/dist/extensions/code-block.cjs.map +1 -1
  27. package/dist/extensions/code-block.d.cts +7 -3
  28. package/dist/extensions/code-block.d.ts +7 -3
  29. package/dist/extensions/code-block.mjs +73 -8
  30. package/dist/extensions/code-block.mjs.map +1 -1
  31. package/dist/extensions/editor.d.cts +3 -3
  32. package/dist/extensions/editor.d.ts +3 -3
  33. package/dist/extensions/index.d.cts +1 -1
  34. package/dist/extensions/index.d.ts +1 -1
  35. package/dist/extensions/shared.cjs +5 -1
  36. package/dist/extensions/shared.cjs.map +1 -1
  37. package/dist/extensions/shared.d.cts +2 -1
  38. package/dist/extensions/shared.d.ts +2 -1
  39. package/dist/extensions/shared.mjs +5 -1
  40. package/dist/extensions/shared.mjs.map +1 -1
  41. package/dist/index.cjs +20 -2
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +6 -0
  44. package/dist/index.d.ts +6 -0
  45. package/dist/index.mjs +16 -1
  46. package/dist/index.mjs.map +1 -1
  47. package/dist/lib/highlight-code-to-html.cjs +38 -0
  48. package/dist/lib/highlight-code-to-html.cjs.map +1 -0
  49. package/dist/lib/highlight-code-to-html.d.cts +6 -0
  50. package/dist/lib/highlight-code-to-html.d.ts +6 -0
  51. package/dist/lib/highlight-code-to-html.mjs +14 -0
  52. package/dist/lib/highlight-code-to-html.mjs.map +1 -0
  53. package/dist/lib/languages.cjs +181 -0
  54. package/dist/lib/languages.cjs.map +1 -0
  55. package/dist/lib/languages.d.cts +24 -0
  56. package/dist/lib/languages.d.ts +24 -0
  57. package/dist/lib/languages.mjs +155 -0
  58. package/dist/lib/languages.mjs.map +1 -0
  59. package/dist/notra-reader.cjs +32 -3
  60. package/dist/notra-reader.cjs.map +1 -1
  61. package/dist/notra-reader.d.cts +11 -1
  62. package/dist/notra-reader.d.ts +11 -1
  63. package/dist/notra-reader.mjs +32 -3
  64. package/dist/notra-reader.mjs.map +1 -1
  65. package/dist/styles/globals.css +109 -0
  66. package/dist/themes/default/shared.css +132 -5
  67. package/package.json +5 -1
  68. package/dist/components/code-block-view.cjs.map +0 -1
  69. package/dist/components/code-block-view.d.cts +0 -12
  70. package/dist/components/code-block-view.d.ts +0 -12
  71. package/dist/components/code-block-view.mjs +0 -17
  72. package/dist/components/code-block-view.mjs.map +0 -1
package/dist/index.d.cts CHANGED
@@ -11,7 +11,12 @@ export { BlockquoteButton, BlockquoteButtonProps } from './components/blockquote
11
11
  export { CodeBlockButton, CodeBlockButtonProps } from './components/code-block-button/code-block-button.cjs';
12
12
  export { LinkPopover, LinkPopoverProps } from './components/link-popover/link-popover.cjs';
13
13
  export { ImagePopover, ImagePopoverProps } from './components/image-popover/image-popover.cjs';
14
+ export { CodeBlockExtension, createCodeBlockExtension, defaultLowlight } from './extensions/code-block.cjs';
15
+ export { LanguageSelect, LanguageSelectProps } from './components/code-block-view/language-select.cjs';
16
+ export { LANGUAGES, Language, getLanguageLabel } from './lib/languages.cjs';
17
+ export { highlightCodeToHtml } from './lib/highlight-code-to-html.cjs';
14
18
  import 'react/jsx-runtime';
19
+ import 'lowlight';
15
20
  import 'react';
16
21
  import './components/undo-redo-button/use-undo-redo.cjs';
17
22
  import 'lucide-react';
@@ -21,3 +26,4 @@ import './components/ui/button.cjs';
21
26
  import 'class-variance-authority/types';
22
27
  import 'class-variance-authority';
23
28
  import './components/list-dropdown-menu/use-list.cjs';
29
+ import '@tiptap/extension-code-block-lowlight';
package/dist/index.d.ts CHANGED
@@ -11,7 +11,12 @@ export { BlockquoteButton, BlockquoteButtonProps } from './components/blockquote
11
11
  export { CodeBlockButton, CodeBlockButtonProps } from './components/code-block-button/code-block-button.js';
12
12
  export { LinkPopover, LinkPopoverProps } from './components/link-popover/link-popover.js';
13
13
  export { ImagePopover, ImagePopoverProps } from './components/image-popover/image-popover.js';
14
+ export { CodeBlockExtension, createCodeBlockExtension, defaultLowlight } from './extensions/code-block.js';
15
+ export { LanguageSelect, LanguageSelectProps } from './components/code-block-view/language-select.js';
16
+ export { LANGUAGES, Language, getLanguageLabel } from './lib/languages.js';
17
+ export { highlightCodeToHtml } from './lib/highlight-code-to-html.js';
14
18
  import 'react/jsx-runtime';
19
+ import 'lowlight';
15
20
  import 'react';
16
21
  import './components/undo-redo-button/use-undo-redo.js';
17
22
  import 'lucide-react';
@@ -21,3 +26,4 @@ import './components/ui/button.js';
21
26
  import 'class-variance-authority/types';
22
27
  import 'class-variance-authority';
23
28
  import './components/list-dropdown-menu/use-list.js';
29
+ import '@tiptap/extension-code-block-lowlight';
package/dist/index.mjs CHANGED
@@ -15,11 +15,22 @@ import { BlockquoteButton } from "./components/blockquote-button/blockquote-butt
15
15
  import { CodeBlockButton } from "./components/code-block-button/code-block-button";
16
16
  import { LinkPopover } from "./components/link-popover/link-popover";
17
17
  import { ImagePopover } from "./components/image-popover/image-popover";
18
+ import {
19
+ CodeBlockExtension,
20
+ createCodeBlockExtension,
21
+ defaultLowlight
22
+ } from "./extensions/code-block";
23
+ import { LanguageSelect } from "./components/code-block-view/language-select";
24
+ import { LANGUAGES, getLanguageLabel } from "./lib/languages";
25
+ import { highlightCodeToHtml } from "./lib/highlight-code-to-html";
18
26
  export {
19
27
  BlockquoteButton,
20
28
  CodeBlockButton,
29
+ CodeBlockExtension,
21
30
  HeadingDropdownMenu,
22
31
  ImagePopover,
32
+ LANGUAGES,
33
+ LanguageSelect,
23
34
  LinkPopover,
24
35
  ListDropdownMenu,
25
36
  MarkButton,
@@ -29,6 +40,10 @@ export {
29
40
  Toolbar,
30
41
  ToolbarGroup,
31
42
  ToolbarSeparator,
32
- UndoRedoButton
43
+ UndoRedoButton,
44
+ createCodeBlockExtension,
45
+ defaultLowlight,
46
+ getLanguageLabel,
47
+ highlightCodeToHtml
33
48
  };
34
49
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './styles/globals.css';\n\nexport { NotraEditor } from './notra-editor';\nexport type { NotraEditorProps } from './notra-editor';\n\nexport { NotraReader } from './notra-reader';\nexport type { NotraReaderProps } from './notra-reader';\n\nexport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar';\nexport type {\n\tToolbarProps,\n\tToolbarSeparatorProps\n} from './components/toolbar/toolbar';\n\nexport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button';\nexport type { UndoRedoButtonProps } from './components/undo-redo-button/undo-redo-button';\n\nexport { Spacer } from './components/ui/spacer';\n\nexport { MarkButton } from './components/mark-button/mark-button';\nexport type { MarkButtonProps } from './components/mark-button/mark-button';\nexport type { MarkType } from './components/mark-button/use-mark';\n\nexport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu';\nexport type { HeadingDropdownMenuProps } from './components/heading-dropdown-menu/heading-dropdown-menu';\n\nexport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu';\nexport type { ListDropdownMenuProps } from './components/list-dropdown-menu/list-dropdown-menu';\n\nexport { BlockquoteButton } from './components/blockquote-button/blockquote-button';\nexport type { BlockquoteButtonProps } from './components/blockquote-button/blockquote-button';\n\nexport { CodeBlockButton } from './components/code-block-button/code-block-button';\nexport type { CodeBlockButtonProps } from './components/code-block-button/code-block-button';\n\nexport { LinkPopover } from './components/link-popover/link-popover';\nexport type { LinkPopoverProps } from './components/link-popover/link-popover';\n\nexport { ImagePopover } from './components/image-popover/image-popover';\nexport type { ImagePopoverProps } from './components/image-popover/image-popover';\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,mBAAmB;AAG5B,SAAS,mBAAmB;AAG5B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAMP,SAAS,sBAAsB;AAG/B,SAAS,cAAc;AAEvB,SAAS,kBAAkB;AAI3B,SAAS,2BAA2B;AAGpC,SAAS,wBAAwB;AAGjC,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB;AAG5B,SAAS,oBAAoB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './styles/globals.css';\n\nexport { NotraEditor } from './notra-editor';\nexport type { NotraEditorProps } from './notra-editor';\n\nexport { NotraReader } from './notra-reader';\nexport type { NotraReaderProps } from './notra-reader';\n\nexport {\n\tToolbar,\n\tToolbarGroup,\n\tToolbarSeparator\n} from './components/toolbar/toolbar';\nexport type {\n\tToolbarProps,\n\tToolbarSeparatorProps\n} from './components/toolbar/toolbar';\n\nexport { UndoRedoButton } from './components/undo-redo-button/undo-redo-button';\nexport type { UndoRedoButtonProps } from './components/undo-redo-button/undo-redo-button';\n\nexport { Spacer } from './components/ui/spacer';\n\nexport { MarkButton } from './components/mark-button/mark-button';\nexport type { MarkButtonProps } from './components/mark-button/mark-button';\nexport type { MarkType } from './components/mark-button/use-mark';\n\nexport { HeadingDropdownMenu } from './components/heading-dropdown-menu/heading-dropdown-menu';\nexport type { HeadingDropdownMenuProps } from './components/heading-dropdown-menu/heading-dropdown-menu';\n\nexport { ListDropdownMenu } from './components/list-dropdown-menu/list-dropdown-menu';\nexport type { ListDropdownMenuProps } from './components/list-dropdown-menu/list-dropdown-menu';\n\nexport { BlockquoteButton } from './components/blockquote-button/blockquote-button';\nexport type { BlockquoteButtonProps } from './components/blockquote-button/blockquote-button';\n\nexport { CodeBlockButton } from './components/code-block-button/code-block-button';\nexport type { CodeBlockButtonProps } from './components/code-block-button/code-block-button';\n\nexport { LinkPopover } from './components/link-popover/link-popover';\nexport type { LinkPopoverProps } from './components/link-popover/link-popover';\n\nexport { ImagePopover } from './components/image-popover/image-popover';\nexport type { ImagePopoverProps } from './components/image-popover/image-popover';\n\nexport {\n\tCodeBlockExtension,\n\tcreateCodeBlockExtension,\n\tdefaultLowlight\n} from './extensions/code-block';\n\nexport { LanguageSelect } from './components/code-block-view/language-select';\nexport type { LanguageSelectProps } from './components/code-block-view/language-select';\n\nexport { LANGUAGES, getLanguageLabel } from './lib/languages';\nexport type { Language } from './lib/languages';\n\nexport { highlightCodeToHtml } from './lib/highlight-code-to-html';\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,mBAAmB;AAG5B,SAAS,mBAAmB;AAG5B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAMP,SAAS,sBAAsB;AAG/B,SAAS,cAAc;AAEvB,SAAS,kBAAkB;AAI3B,SAAS,2BAA2B;AAGpC,SAAS,wBAAwB;AAGjC,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB;AAG5B,SAAS,oBAAoB;AAG7B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,sBAAsB;AAG/B,SAAS,WAAW,wBAAwB;AAG5C,SAAS,2BAA2B;","names":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var highlight_code_to_html_exports = {};
20
+ __export(highlight_code_to_html_exports, {
21
+ highlightCodeToHtml: () => highlightCodeToHtml
22
+ });
23
+ module.exports = __toCommonJS(highlight_code_to_html_exports);
24
+ var import_hast_util_to_html = require("hast-util-to-html");
25
+ function highlightCodeToHtml(code, language, lowlight) {
26
+ if (!code) return "";
27
+ const lang = language ?? "auto";
28
+ if (lang === "plaintext") {
29
+ return (0, import_hast_util_to_html.toHtml)({ type: "text", value: code });
30
+ }
31
+ const tree = lang === "auto" || !lowlight.registered(lang) ? lowlight.highlightAuto(code) : lowlight.highlight(lang, code);
32
+ return (0, import_hast_util_to_html.toHtml)(tree);
33
+ }
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ highlightCodeToHtml
37
+ });
38
+ //# sourceMappingURL=highlight-code-to-html.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/highlight-code-to-html.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type { createLowlight } from 'lowlight';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\n// Server-safe: lowlight + hast-util-to-html are pure JS and run in Node.\n// Used by NotraReader's nodeMapping.codeBlock; the editor uses the\n// extension's built-in ProseMirror decorations instead.\nexport function highlightCodeToHtml(\n\tcode: string,\n\tlanguage: string | null | undefined,\n\tlowlight: Lowlight\n): string {\n\tif (!code) return '';\n\n\tconst lang = language ?? 'auto';\n\n\t// \"plaintext\" deliberately skips highlighting — emit only escaped text.\n\tif (lang === 'plaintext') {\n\t\treturn toHtml({ type: 'text', value: code });\n\t}\n\n\tconst tree =\n\t\tlang === 'auto' || !lowlight.registered(lang)\n\t\t\t? lowlight.highlightAuto(code)\n\t\t\t: lowlight.highlight(lang, code);\n\n\treturn toHtml(tree);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAuB;AAShB,SAAS,oBACf,MACA,UACA,UACS;AACT,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,OAAO,YAAY;AAGzB,MAAI,SAAS,aAAa;AACzB,eAAO,iCAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC5C;AAEA,QAAM,OACL,SAAS,UAAU,CAAC,SAAS,WAAW,IAAI,IACzC,SAAS,cAAc,IAAI,IAC3B,SAAS,UAAU,MAAM,IAAI;AAEjC,aAAO,iCAAO,IAAI;AACnB;","names":[]}
@@ -0,0 +1,6 @@
1
+ import { createLowlight } from 'lowlight';
2
+
3
+ type Lowlight = ReturnType<typeof createLowlight>;
4
+ declare function highlightCodeToHtml(code: string, language: string | null | undefined, lowlight: Lowlight): string;
5
+
6
+ export { highlightCodeToHtml };
@@ -0,0 +1,6 @@
1
+ import { createLowlight } from 'lowlight';
2
+
3
+ type Lowlight = ReturnType<typeof createLowlight>;
4
+ declare function highlightCodeToHtml(code: string, language: string | null | undefined, lowlight: Lowlight): string;
5
+
6
+ export { highlightCodeToHtml };
@@ -0,0 +1,14 @@
1
+ import { toHtml } from "hast-util-to-html";
2
+ function highlightCodeToHtml(code, language, lowlight) {
3
+ if (!code) return "";
4
+ const lang = language ?? "auto";
5
+ if (lang === "plaintext") {
6
+ return toHtml({ type: "text", value: code });
7
+ }
8
+ const tree = lang === "auto" || !lowlight.registered(lang) ? lowlight.highlightAuto(code) : lowlight.highlight(lang, code);
9
+ return toHtml(tree);
10
+ }
11
+ export {
12
+ highlightCodeToHtml
13
+ };
14
+ //# sourceMappingURL=highlight-code-to-html.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/highlight-code-to-html.ts"],"sourcesContent":["import { toHtml } from 'hast-util-to-html';\n\nimport type { createLowlight } from 'lowlight';\n\ntype Lowlight = ReturnType<typeof createLowlight>;\n\n// Server-safe: lowlight + hast-util-to-html are pure JS and run in Node.\n// Used by NotraReader's nodeMapping.codeBlock; the editor uses the\n// extension's built-in ProseMirror decorations instead.\nexport function highlightCodeToHtml(\n\tcode: string,\n\tlanguage: string | null | undefined,\n\tlowlight: Lowlight\n): string {\n\tif (!code) return '';\n\n\tconst lang = language ?? 'auto';\n\n\t// \"plaintext\" deliberately skips highlighting — emit only escaped text.\n\tif (lang === 'plaintext') {\n\t\treturn toHtml({ type: 'text', value: code });\n\t}\n\n\tconst tree =\n\t\tlang === 'auto' || !lowlight.registered(lang)\n\t\t\t? lowlight.highlightAuto(code)\n\t\t\t: lowlight.highlight(lang, code);\n\n\treturn toHtml(tree);\n}\n"],"mappings":"AAAA,SAAS,cAAc;AAShB,SAAS,oBACf,MACA,UACA,UACS;AACT,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,OAAO,YAAY;AAGzB,MAAI,SAAS,aAAa;AACzB,WAAO,OAAO,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC5C;AAEA,QAAM,OACL,SAAS,UAAU,CAAC,SAAS,WAAW,IAAI,IACzC,SAAS,cAAc,IAAI,IAC3B,SAAS,UAAU,MAAM,IAAI;AAEjC,SAAO,OAAO,IAAI;AACnB;","names":[]}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var languages_exports = {};
20
+ __export(languages_exports, {
21
+ LANGUAGES: () => LANGUAGES,
22
+ getLanguageLabel: () => getLanguageLabel,
23
+ normalizeLanguage: () => normalizeLanguage
24
+ });
25
+ module.exports = __toCommonJS(languages_exports);
26
+ const LANGUAGES = [
27
+ { label: "Auto", value: "auto" },
28
+ { label: "Plain Text", value: "plaintext" },
29
+ { label: "ABAP", value: "abap" },
30
+ { label: "Agda", value: "agda" },
31
+ { label: "Arduino", value: "arduino", aliases: ["ino"] },
32
+ { label: "ASCII Art", value: "ascii" },
33
+ { label: "Assembly", value: "x86asm" },
34
+ { label: "Bash", value: "bash", aliases: ["sh", "zsh"] },
35
+ { label: "BASIC", value: "basic" },
36
+ { label: "BNF", value: "bnf" },
37
+ { label: "C", value: "c", aliases: ["h"] },
38
+ { label: "C#", value: "csharp", aliases: ["cs", "c#"] },
39
+ {
40
+ label: "C++",
41
+ value: "cpp",
42
+ aliases: ["cc", "c++", "h++", "hpp", "hh", "hxx", "cxx"]
43
+ },
44
+ { label: "Clojure", value: "clojure", aliases: ["clj", "edn"] },
45
+ {
46
+ label: "CoffeeScript",
47
+ value: "coffeescript",
48
+ aliases: ["coffee", "cson", "iced"]
49
+ },
50
+ { label: "Coq", value: "coq" },
51
+ { label: "CSS", value: "css" },
52
+ { label: "Dart", value: "dart" },
53
+ { label: "Dhall", value: "dhall" },
54
+ { label: "Diff", value: "diff", aliases: ["patch"] },
55
+ { label: "Docker", value: "dockerfile", aliases: ["docker"] },
56
+ { label: "EBNF", value: "ebnf" },
57
+ { label: "Elixir", value: "elixir", aliases: ["ex", "exs"] },
58
+ { label: "Elm", value: "elm" },
59
+ { label: "Erlang", value: "erlang", aliases: ["erl"] },
60
+ { label: "F#", value: "fsharp", aliases: ["fs", "f#"] },
61
+ { label: "Flow", value: "flow" },
62
+ { label: "Fortran", value: "fortran", aliases: ["f90", "f95"] },
63
+ { label: "Gherkin", value: "gherkin", aliases: ["feature"] },
64
+ { label: "GLSL", value: "glsl" },
65
+ { label: "Go", value: "go", aliases: ["golang"] },
66
+ { label: "GraphQL", value: "graphql", aliases: ["gql"] },
67
+ { label: "Groovy", value: "groovy" },
68
+ { label: "Haskell", value: "haskell", aliases: ["hs"] },
69
+ { label: "HCL", value: "hcl" },
70
+ { label: "HTML", value: "html" },
71
+ { label: "Idris", value: "idris" },
72
+ { label: "Java", value: "java", aliases: ["jsp"] },
73
+ {
74
+ label: "JavaScript",
75
+ value: "javascript",
76
+ aliases: ["js", "jsx", "mjs", "cjs"]
77
+ },
78
+ { label: "JSON", value: "json", aliases: ["jsonc"] },
79
+ { label: "Julia", value: "julia" },
80
+ { label: "Kotlin", value: "kotlin", aliases: ["kt", "kts"] },
81
+ { label: "LaTeX", value: "latex", aliases: ["tex"] },
82
+ { label: "Less", value: "less" },
83
+ { label: "Lisp", value: "lisp" },
84
+ { label: "LiveScript", value: "livescript", aliases: ["ls"] },
85
+ { label: "LLVM IR", value: "llvm" },
86
+ { label: "Lua", value: "lua", aliases: ["pluto"] },
87
+ { label: "Makefile", value: "makefile", aliases: ["mk", "mak", "make"] },
88
+ { label: "Markdown", value: "markdown", aliases: ["md", "mkdown", "mkd"] },
89
+ { label: "Markup", value: "markup" },
90
+ { label: "MATLAB", value: "matlab" },
91
+ { label: "Mathematica", value: "mathematica", aliases: ["mma", "wl"] },
92
+ { label: "Mermaid", value: "mermaid" },
93
+ { label: "Nix", value: "nix", aliases: ["nixos"] },
94
+ { label: "Notion Formula", value: "notion" },
95
+ {
96
+ label: "Objective-C",
97
+ value: "objectivec",
98
+ aliases: ["mm", "objc", "obj-c", "obj-c++", "objective-c++"]
99
+ },
100
+ { label: "OCaml", value: "ocaml", aliases: ["ml"] },
101
+ { label: "Pascal", value: "pascal" },
102
+ { label: "Perl", value: "perl", aliases: ["pl", "pm"] },
103
+ { label: "PHP", value: "php" },
104
+ { label: "PowerShell", value: "powershell", aliases: ["pwsh", "ps", "ps1"] },
105
+ { label: "Prolog", value: "prolog" },
106
+ { label: "Protocol Buffers", value: "protobuf", aliases: ["proto"] },
107
+ { label: "PureScript", value: "purescript" },
108
+ { label: "Python", value: "python", aliases: ["py", "gyp", "ipython"] },
109
+ { label: "R", value: "r" },
110
+ { label: "Racket", value: "racket" },
111
+ { label: "Reason", value: "reasonml", aliases: ["re"] },
112
+ {
113
+ label: "Ruby",
114
+ value: "ruby",
115
+ aliases: ["rb", "gemspec", "podspec", "thor", "irb"]
116
+ },
117
+ { label: "Rust", value: "rust", aliases: ["rs"] },
118
+ { label: "Sass", value: "sass" },
119
+ { label: "Scala", value: "scala" },
120
+ { label: "Scheme", value: "scheme", aliases: ["scm"] },
121
+ { label: "SCSS", value: "scss" },
122
+ { label: "Shell", value: "shell", aliases: ["console", "shellsession"] },
123
+ { label: "Smalltalk", value: "smalltalk", aliases: ["st"] },
124
+ { label: "Solidity", value: "solidity" },
125
+ { label: "SQL", value: "sql" },
126
+ { label: "Swift", value: "swift" },
127
+ { label: "TOML", value: "toml" },
128
+ {
129
+ label: "TypeScript",
130
+ value: "typescript",
131
+ aliases: ["ts", "tsx", "mts", "cts"]
132
+ },
133
+ { label: "VB.Net", value: "vbnet", aliases: ["vb"] },
134
+ { label: "Verilog", value: "verilog", aliases: ["v", "sv", "svh"] },
135
+ { label: "VHDL", value: "vhdl" },
136
+ { label: "Visual Basic", value: "visualbasic" },
137
+ { label: "WebAssembly", value: "wasm" },
138
+ {
139
+ label: "XML",
140
+ value: "xml",
141
+ // Note: highlight.js also lists "html" here, but `html` is its own
142
+ // canonical entry above; including it would rewrite html → xml.
143
+ aliases: [
144
+ "xhtml",
145
+ "rss",
146
+ "atom",
147
+ "xjb",
148
+ "xsd",
149
+ "xsl",
150
+ "plist",
151
+ "wsf",
152
+ "svg"
153
+ ]
154
+ },
155
+ { label: "YAML", value: "yaml", aliases: ["yml"] }
156
+ ];
157
+ const ALIAS_TO_CANONICAL = (() => {
158
+ const map = /* @__PURE__ */ new Map();
159
+ for (const lang of LANGUAGES) {
160
+ for (const alias of lang.aliases ?? []) {
161
+ map.set(alias, lang.value);
162
+ }
163
+ }
164
+ return map;
165
+ })();
166
+ function normalizeLanguage(input) {
167
+ if (!input) return "";
168
+ return ALIAS_TO_CANONICAL.get(input) ?? input;
169
+ }
170
+ function getLanguageLabel(value) {
171
+ if (!value) return "Auto";
172
+ const found = LANGUAGES.find((l) => l.value === value);
173
+ return found?.label ?? value;
174
+ }
175
+ // Annotate the CommonJS export names for ESM import in node:
176
+ 0 && (module.exports = {
177
+ LANGUAGES,
178
+ getLanguageLabel,
179
+ normalizeLanguage
180
+ });
181
+ //# sourceMappingURL=languages.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/languages.ts"],"sourcesContent":["export interface Language {\n\tlabel: string;\n\tvalue: string;\n\t/**\n\t * Aliases recognized by highlight.js for this language. Used by\n\t * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)\n\t * stores the canonical `value` instead of the raw alias. Only canonical\n\t * values are listed in this table; an alias that already exists as a\n\t * canonical `value` (e.g. `html` for `xml`) is intentionally excluded\n\t * to preserve the existing UI label.\n\t */\n\taliases?: string[];\n}\n\n// Curated set transcribed from demo/notra/components/editor/ui/language-select.tsx.\n// Keep the order: auto and plaintext first, then alphabetical by label.\n// `aliases` mirror the `aliases` field of the corresponding highlight.js\n// language module (highlight.js@11). Entries missing from highlight.js's\n// shipped languages have no aliases.\nexport const LANGUAGES: Language[] = [\n\t{ label: 'Auto', value: 'auto' },\n\t{ label: 'Plain Text', value: 'plaintext' },\n\t{ label: 'ABAP', value: 'abap' },\n\t{ label: 'Agda', value: 'agda' },\n\t{ label: 'Arduino', value: 'arduino', aliases: ['ino'] },\n\t{ label: 'ASCII Art', value: 'ascii' },\n\t{ label: 'Assembly', value: 'x86asm' },\n\t{ label: 'Bash', value: 'bash', aliases: ['sh', 'zsh'] },\n\t{ label: 'BASIC', value: 'basic' },\n\t{ label: 'BNF', value: 'bnf' },\n\t{ label: 'C', value: 'c', aliases: ['h'] },\n\t{ label: 'C#', value: 'csharp', aliases: ['cs', 'c#'] },\n\t{\n\t\tlabel: 'C++',\n\t\tvalue: 'cpp',\n\t\taliases: ['cc', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx']\n\t},\n\t{ label: 'Clojure', value: 'clojure', aliases: ['clj', 'edn'] },\n\t{\n\t\tlabel: 'CoffeeScript',\n\t\tvalue: 'coffeescript',\n\t\taliases: ['coffee', 'cson', 'iced']\n\t},\n\t{ label: 'Coq', value: 'coq' },\n\t{ label: 'CSS', value: 'css' },\n\t{ label: 'Dart', value: 'dart' },\n\t{ label: 'Dhall', value: 'dhall' },\n\t{ label: 'Diff', value: 'diff', aliases: ['patch'] },\n\t{ label: 'Docker', value: 'dockerfile', aliases: ['docker'] },\n\t{ label: 'EBNF', value: 'ebnf' },\n\t{ label: 'Elixir', value: 'elixir', aliases: ['ex', 'exs'] },\n\t{ label: 'Elm', value: 'elm' },\n\t{ label: 'Erlang', value: 'erlang', aliases: ['erl'] },\n\t{ label: 'F#', value: 'fsharp', aliases: ['fs', 'f#'] },\n\t{ label: 'Flow', value: 'flow' },\n\t{ label: 'Fortran', value: 'fortran', aliases: ['f90', 'f95'] },\n\t{ label: 'Gherkin', value: 'gherkin', aliases: ['feature'] },\n\t{ label: 'GLSL', value: 'glsl' },\n\t{ label: 'Go', value: 'go', aliases: ['golang'] },\n\t{ label: 'GraphQL', value: 'graphql', aliases: ['gql'] },\n\t{ label: 'Groovy', value: 'groovy' },\n\t{ label: 'Haskell', value: 'haskell', aliases: ['hs'] },\n\t{ label: 'HCL', value: 'hcl' },\n\t{ label: 'HTML', value: 'html' },\n\t{ label: 'Idris', value: 'idris' },\n\t{ label: 'Java', value: 'java', aliases: ['jsp'] },\n\t{\n\t\tlabel: 'JavaScript',\n\t\tvalue: 'javascript',\n\t\taliases: ['js', 'jsx', 'mjs', 'cjs']\n\t},\n\t{ label: 'JSON', value: 'json', aliases: ['jsonc'] },\n\t{ label: 'Julia', value: 'julia' },\n\t{ label: 'Kotlin', value: 'kotlin', aliases: ['kt', 'kts'] },\n\t{ label: 'LaTeX', value: 'latex', aliases: ['tex'] },\n\t{ label: 'Less', value: 'less' },\n\t{ label: 'Lisp', value: 'lisp' },\n\t{ label: 'LiveScript', value: 'livescript', aliases: ['ls'] },\n\t{ label: 'LLVM IR', value: 'llvm' },\n\t{ label: 'Lua', value: 'lua', aliases: ['pluto'] },\n\t{ label: 'Makefile', value: 'makefile', aliases: ['mk', 'mak', 'make'] },\n\t{ label: 'Markdown', value: 'markdown', aliases: ['md', 'mkdown', 'mkd'] },\n\t{ label: 'Markup', value: 'markup' },\n\t{ label: 'MATLAB', value: 'matlab' },\n\t{ label: 'Mathematica', value: 'mathematica', aliases: ['mma', 'wl'] },\n\t{ label: 'Mermaid', value: 'mermaid' },\n\t{ label: 'Nix', value: 'nix', aliases: ['nixos'] },\n\t{ label: 'Notion Formula', value: 'notion' },\n\t{\n\t\tlabel: 'Objective-C',\n\t\tvalue: 'objectivec',\n\t\taliases: ['mm', 'objc', 'obj-c', 'obj-c++', 'objective-c++']\n\t},\n\t{ label: 'OCaml', value: 'ocaml', aliases: ['ml'] },\n\t{ label: 'Pascal', value: 'pascal' },\n\t{ label: 'Perl', value: 'perl', aliases: ['pl', 'pm'] },\n\t{ label: 'PHP', value: 'php' },\n\t{ label: 'PowerShell', value: 'powershell', aliases: ['pwsh', 'ps', 'ps1'] },\n\t{ label: 'Prolog', value: 'prolog' },\n\t{ label: 'Protocol Buffers', value: 'protobuf', aliases: ['proto'] },\n\t{ label: 'PureScript', value: 'purescript' },\n\t{ label: 'Python', value: 'python', aliases: ['py', 'gyp', 'ipython'] },\n\t{ label: 'R', value: 'r' },\n\t{ label: 'Racket', value: 'racket' },\n\t{ label: 'Reason', value: 'reasonml', aliases: ['re'] },\n\t{\n\t\tlabel: 'Ruby',\n\t\tvalue: 'ruby',\n\t\taliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb']\n\t},\n\t{ label: 'Rust', value: 'rust', aliases: ['rs'] },\n\t{ label: 'Sass', value: 'sass' },\n\t{ label: 'Scala', value: 'scala' },\n\t{ label: 'Scheme', value: 'scheme', aliases: ['scm'] },\n\t{ label: 'SCSS', value: 'scss' },\n\t{ label: 'Shell', value: 'shell', aliases: ['console', 'shellsession'] },\n\t{ label: 'Smalltalk', value: 'smalltalk', aliases: ['st'] },\n\t{ label: 'Solidity', value: 'solidity' },\n\t{ label: 'SQL', value: 'sql' },\n\t{ label: 'Swift', value: 'swift' },\n\t{ label: 'TOML', value: 'toml' },\n\t{\n\t\tlabel: 'TypeScript',\n\t\tvalue: 'typescript',\n\t\taliases: ['ts', 'tsx', 'mts', 'cts']\n\t},\n\t{ label: 'VB.Net', value: 'vbnet', aliases: ['vb'] },\n\t{ label: 'Verilog', value: 'verilog', aliases: ['v', 'sv', 'svh'] },\n\t{ label: 'VHDL', value: 'vhdl' },\n\t{ label: 'Visual Basic', value: 'visualbasic' },\n\t{ label: 'WebAssembly', value: 'wasm' },\n\t{\n\t\tlabel: 'XML',\n\t\tvalue: 'xml',\n\t\t// Note: highlight.js also lists \"html\" here, but `html` is its own\n\t\t// canonical entry above; including it would rewrite html → xml.\n\t\taliases: [\n\t\t\t'xhtml',\n\t\t\t'rss',\n\t\t\t'atom',\n\t\t\t'xjb',\n\t\t\t'xsd',\n\t\t\t'xsl',\n\t\t\t'plist',\n\t\t\t'wsf',\n\t\t\t'svg'\n\t\t]\n\t},\n\t{ label: 'YAML', value: 'yaml', aliases: ['yml'] }\n];\n\nconst ALIAS_TO_CANONICAL = (() => {\n\tconst map = new Map<string, string>();\n\n\tfor (const lang of LANGUAGES) {\n\t\tfor (const alias of lang.aliases ?? []) {\n\t\t\tmap.set(alias, lang.value);\n\t\t}\n\t}\n\n\treturn map;\n})();\n\n/**\n * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.\n * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form\n * (`javascript`, `typescript`, `python`); unknown identifiers and canonical\n * values pass through unchanged. Empty / undefined input returns ''.\n */\nexport function normalizeLanguage(input: string | undefined | null): string {\n\tif (!input) return '';\n\n\treturn ALIAS_TO_CANONICAL.get(input) ?? input;\n}\n\nexport function getLanguageLabel(value: string | null | undefined): string {\n\tif (!value) return 'Auto';\n\n\tconst found = LANGUAGES.find((l) => l.value === value);\n\n\treturn found?.label ?? value;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,24 @@
1
+ interface Language {
2
+ label: string;
3
+ value: string;
4
+ /**
5
+ * Aliases recognized by highlight.js for this language. Used by
6
+ * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)
7
+ * stores the canonical `value` instead of the raw alias. Only canonical
8
+ * values are listed in this table; an alias that already exists as a
9
+ * canonical `value` (e.g. `html` for `xml`) is intentionally excluded
10
+ * to preserve the existing UI label.
11
+ */
12
+ aliases?: string[];
13
+ }
14
+ declare const LANGUAGES: Language[];
15
+ /**
16
+ * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.
17
+ * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form
18
+ * (`javascript`, `typescript`, `python`); unknown identifiers and canonical
19
+ * values pass through unchanged. Empty / undefined input returns ''.
20
+ */
21
+ declare function normalizeLanguage(input: string | undefined | null): string;
22
+ declare function getLanguageLabel(value: string | null | undefined): string;
23
+
24
+ export { LANGUAGES, type Language, getLanguageLabel, normalizeLanguage };
@@ -0,0 +1,24 @@
1
+ interface Language {
2
+ label: string;
3
+ value: string;
4
+ /**
5
+ * Aliases recognized by highlight.js for this language. Used by
6
+ * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)
7
+ * stores the canonical `value` instead of the raw alias. Only canonical
8
+ * values are listed in this table; an alias that already exists as a
9
+ * canonical `value` (e.g. `html` for `xml`) is intentionally excluded
10
+ * to preserve the existing UI label.
11
+ */
12
+ aliases?: string[];
13
+ }
14
+ declare const LANGUAGES: Language[];
15
+ /**
16
+ * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.
17
+ * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form
18
+ * (`javascript`, `typescript`, `python`); unknown identifiers and canonical
19
+ * values pass through unchanged. Empty / undefined input returns ''.
20
+ */
21
+ declare function normalizeLanguage(input: string | undefined | null): string;
22
+ declare function getLanguageLabel(value: string | null | undefined): string;
23
+
24
+ export { LANGUAGES, type Language, getLanguageLabel, normalizeLanguage };
@@ -0,0 +1,155 @@
1
+ const LANGUAGES = [
2
+ { label: "Auto", value: "auto" },
3
+ { label: "Plain Text", value: "plaintext" },
4
+ { label: "ABAP", value: "abap" },
5
+ { label: "Agda", value: "agda" },
6
+ { label: "Arduino", value: "arduino", aliases: ["ino"] },
7
+ { label: "ASCII Art", value: "ascii" },
8
+ { label: "Assembly", value: "x86asm" },
9
+ { label: "Bash", value: "bash", aliases: ["sh", "zsh"] },
10
+ { label: "BASIC", value: "basic" },
11
+ { label: "BNF", value: "bnf" },
12
+ { label: "C", value: "c", aliases: ["h"] },
13
+ { label: "C#", value: "csharp", aliases: ["cs", "c#"] },
14
+ {
15
+ label: "C++",
16
+ value: "cpp",
17
+ aliases: ["cc", "c++", "h++", "hpp", "hh", "hxx", "cxx"]
18
+ },
19
+ { label: "Clojure", value: "clojure", aliases: ["clj", "edn"] },
20
+ {
21
+ label: "CoffeeScript",
22
+ value: "coffeescript",
23
+ aliases: ["coffee", "cson", "iced"]
24
+ },
25
+ { label: "Coq", value: "coq" },
26
+ { label: "CSS", value: "css" },
27
+ { label: "Dart", value: "dart" },
28
+ { label: "Dhall", value: "dhall" },
29
+ { label: "Diff", value: "diff", aliases: ["patch"] },
30
+ { label: "Docker", value: "dockerfile", aliases: ["docker"] },
31
+ { label: "EBNF", value: "ebnf" },
32
+ { label: "Elixir", value: "elixir", aliases: ["ex", "exs"] },
33
+ { label: "Elm", value: "elm" },
34
+ { label: "Erlang", value: "erlang", aliases: ["erl"] },
35
+ { label: "F#", value: "fsharp", aliases: ["fs", "f#"] },
36
+ { label: "Flow", value: "flow" },
37
+ { label: "Fortran", value: "fortran", aliases: ["f90", "f95"] },
38
+ { label: "Gherkin", value: "gherkin", aliases: ["feature"] },
39
+ { label: "GLSL", value: "glsl" },
40
+ { label: "Go", value: "go", aliases: ["golang"] },
41
+ { label: "GraphQL", value: "graphql", aliases: ["gql"] },
42
+ { label: "Groovy", value: "groovy" },
43
+ { label: "Haskell", value: "haskell", aliases: ["hs"] },
44
+ { label: "HCL", value: "hcl" },
45
+ { label: "HTML", value: "html" },
46
+ { label: "Idris", value: "idris" },
47
+ { label: "Java", value: "java", aliases: ["jsp"] },
48
+ {
49
+ label: "JavaScript",
50
+ value: "javascript",
51
+ aliases: ["js", "jsx", "mjs", "cjs"]
52
+ },
53
+ { label: "JSON", value: "json", aliases: ["jsonc"] },
54
+ { label: "Julia", value: "julia" },
55
+ { label: "Kotlin", value: "kotlin", aliases: ["kt", "kts"] },
56
+ { label: "LaTeX", value: "latex", aliases: ["tex"] },
57
+ { label: "Less", value: "less" },
58
+ { label: "Lisp", value: "lisp" },
59
+ { label: "LiveScript", value: "livescript", aliases: ["ls"] },
60
+ { label: "LLVM IR", value: "llvm" },
61
+ { label: "Lua", value: "lua", aliases: ["pluto"] },
62
+ { label: "Makefile", value: "makefile", aliases: ["mk", "mak", "make"] },
63
+ { label: "Markdown", value: "markdown", aliases: ["md", "mkdown", "mkd"] },
64
+ { label: "Markup", value: "markup" },
65
+ { label: "MATLAB", value: "matlab" },
66
+ { label: "Mathematica", value: "mathematica", aliases: ["mma", "wl"] },
67
+ { label: "Mermaid", value: "mermaid" },
68
+ { label: "Nix", value: "nix", aliases: ["nixos"] },
69
+ { label: "Notion Formula", value: "notion" },
70
+ {
71
+ label: "Objective-C",
72
+ value: "objectivec",
73
+ aliases: ["mm", "objc", "obj-c", "obj-c++", "objective-c++"]
74
+ },
75
+ { label: "OCaml", value: "ocaml", aliases: ["ml"] },
76
+ { label: "Pascal", value: "pascal" },
77
+ { label: "Perl", value: "perl", aliases: ["pl", "pm"] },
78
+ { label: "PHP", value: "php" },
79
+ { label: "PowerShell", value: "powershell", aliases: ["pwsh", "ps", "ps1"] },
80
+ { label: "Prolog", value: "prolog" },
81
+ { label: "Protocol Buffers", value: "protobuf", aliases: ["proto"] },
82
+ { label: "PureScript", value: "purescript" },
83
+ { label: "Python", value: "python", aliases: ["py", "gyp", "ipython"] },
84
+ { label: "R", value: "r" },
85
+ { label: "Racket", value: "racket" },
86
+ { label: "Reason", value: "reasonml", aliases: ["re"] },
87
+ {
88
+ label: "Ruby",
89
+ value: "ruby",
90
+ aliases: ["rb", "gemspec", "podspec", "thor", "irb"]
91
+ },
92
+ { label: "Rust", value: "rust", aliases: ["rs"] },
93
+ { label: "Sass", value: "sass" },
94
+ { label: "Scala", value: "scala" },
95
+ { label: "Scheme", value: "scheme", aliases: ["scm"] },
96
+ { label: "SCSS", value: "scss" },
97
+ { label: "Shell", value: "shell", aliases: ["console", "shellsession"] },
98
+ { label: "Smalltalk", value: "smalltalk", aliases: ["st"] },
99
+ { label: "Solidity", value: "solidity" },
100
+ { label: "SQL", value: "sql" },
101
+ { label: "Swift", value: "swift" },
102
+ { label: "TOML", value: "toml" },
103
+ {
104
+ label: "TypeScript",
105
+ value: "typescript",
106
+ aliases: ["ts", "tsx", "mts", "cts"]
107
+ },
108
+ { label: "VB.Net", value: "vbnet", aliases: ["vb"] },
109
+ { label: "Verilog", value: "verilog", aliases: ["v", "sv", "svh"] },
110
+ { label: "VHDL", value: "vhdl" },
111
+ { label: "Visual Basic", value: "visualbasic" },
112
+ { label: "WebAssembly", value: "wasm" },
113
+ {
114
+ label: "XML",
115
+ value: "xml",
116
+ // Note: highlight.js also lists "html" here, but `html` is its own
117
+ // canonical entry above; including it would rewrite html → xml.
118
+ aliases: [
119
+ "xhtml",
120
+ "rss",
121
+ "atom",
122
+ "xjb",
123
+ "xsd",
124
+ "xsl",
125
+ "plist",
126
+ "wsf",
127
+ "svg"
128
+ ]
129
+ },
130
+ { label: "YAML", value: "yaml", aliases: ["yml"] }
131
+ ];
132
+ const ALIAS_TO_CANONICAL = (() => {
133
+ const map = /* @__PURE__ */ new Map();
134
+ for (const lang of LANGUAGES) {
135
+ for (const alias of lang.aliases ?? []) {
136
+ map.set(alias, lang.value);
137
+ }
138
+ }
139
+ return map;
140
+ })();
141
+ function normalizeLanguage(input) {
142
+ if (!input) return "";
143
+ return ALIAS_TO_CANONICAL.get(input) ?? input;
144
+ }
145
+ function getLanguageLabel(value) {
146
+ if (!value) return "Auto";
147
+ const found = LANGUAGES.find((l) => l.value === value);
148
+ return found?.label ?? value;
149
+ }
150
+ export {
151
+ LANGUAGES,
152
+ getLanguageLabel,
153
+ normalizeLanguage
154
+ };
155
+ //# sourceMappingURL=languages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/languages.ts"],"sourcesContent":["export interface Language {\n\tlabel: string;\n\tvalue: string;\n\t/**\n\t * Aliases recognized by highlight.js for this language. Used by\n\t * `normalizeLanguage` so the markdown input rule (e.g. ```js + Enter)\n\t * stores the canonical `value` instead of the raw alias. Only canonical\n\t * values are listed in this table; an alias that already exists as a\n\t * canonical `value` (e.g. `html` for `xml`) is intentionally excluded\n\t * to preserve the existing UI label.\n\t */\n\taliases?: string[];\n}\n\n// Curated set transcribed from demo/notra/components/editor/ui/language-select.tsx.\n// Keep the order: auto and plaintext first, then alphabetical by label.\n// `aliases` mirror the `aliases` field of the corresponding highlight.js\n// language module (highlight.js@11). Entries missing from highlight.js's\n// shipped languages have no aliases.\nexport const LANGUAGES: Language[] = [\n\t{ label: 'Auto', value: 'auto' },\n\t{ label: 'Plain Text', value: 'plaintext' },\n\t{ label: 'ABAP', value: 'abap' },\n\t{ label: 'Agda', value: 'agda' },\n\t{ label: 'Arduino', value: 'arduino', aliases: ['ino'] },\n\t{ label: 'ASCII Art', value: 'ascii' },\n\t{ label: 'Assembly', value: 'x86asm' },\n\t{ label: 'Bash', value: 'bash', aliases: ['sh', 'zsh'] },\n\t{ label: 'BASIC', value: 'basic' },\n\t{ label: 'BNF', value: 'bnf' },\n\t{ label: 'C', value: 'c', aliases: ['h'] },\n\t{ label: 'C#', value: 'csharp', aliases: ['cs', 'c#'] },\n\t{\n\t\tlabel: 'C++',\n\t\tvalue: 'cpp',\n\t\taliases: ['cc', 'c++', 'h++', 'hpp', 'hh', 'hxx', 'cxx']\n\t},\n\t{ label: 'Clojure', value: 'clojure', aliases: ['clj', 'edn'] },\n\t{\n\t\tlabel: 'CoffeeScript',\n\t\tvalue: 'coffeescript',\n\t\taliases: ['coffee', 'cson', 'iced']\n\t},\n\t{ label: 'Coq', value: 'coq' },\n\t{ label: 'CSS', value: 'css' },\n\t{ label: 'Dart', value: 'dart' },\n\t{ label: 'Dhall', value: 'dhall' },\n\t{ label: 'Diff', value: 'diff', aliases: ['patch'] },\n\t{ label: 'Docker', value: 'dockerfile', aliases: ['docker'] },\n\t{ label: 'EBNF', value: 'ebnf' },\n\t{ label: 'Elixir', value: 'elixir', aliases: ['ex', 'exs'] },\n\t{ label: 'Elm', value: 'elm' },\n\t{ label: 'Erlang', value: 'erlang', aliases: ['erl'] },\n\t{ label: 'F#', value: 'fsharp', aliases: ['fs', 'f#'] },\n\t{ label: 'Flow', value: 'flow' },\n\t{ label: 'Fortran', value: 'fortran', aliases: ['f90', 'f95'] },\n\t{ label: 'Gherkin', value: 'gherkin', aliases: ['feature'] },\n\t{ label: 'GLSL', value: 'glsl' },\n\t{ label: 'Go', value: 'go', aliases: ['golang'] },\n\t{ label: 'GraphQL', value: 'graphql', aliases: ['gql'] },\n\t{ label: 'Groovy', value: 'groovy' },\n\t{ label: 'Haskell', value: 'haskell', aliases: ['hs'] },\n\t{ label: 'HCL', value: 'hcl' },\n\t{ label: 'HTML', value: 'html' },\n\t{ label: 'Idris', value: 'idris' },\n\t{ label: 'Java', value: 'java', aliases: ['jsp'] },\n\t{\n\t\tlabel: 'JavaScript',\n\t\tvalue: 'javascript',\n\t\taliases: ['js', 'jsx', 'mjs', 'cjs']\n\t},\n\t{ label: 'JSON', value: 'json', aliases: ['jsonc'] },\n\t{ label: 'Julia', value: 'julia' },\n\t{ label: 'Kotlin', value: 'kotlin', aliases: ['kt', 'kts'] },\n\t{ label: 'LaTeX', value: 'latex', aliases: ['tex'] },\n\t{ label: 'Less', value: 'less' },\n\t{ label: 'Lisp', value: 'lisp' },\n\t{ label: 'LiveScript', value: 'livescript', aliases: ['ls'] },\n\t{ label: 'LLVM IR', value: 'llvm' },\n\t{ label: 'Lua', value: 'lua', aliases: ['pluto'] },\n\t{ label: 'Makefile', value: 'makefile', aliases: ['mk', 'mak', 'make'] },\n\t{ label: 'Markdown', value: 'markdown', aliases: ['md', 'mkdown', 'mkd'] },\n\t{ label: 'Markup', value: 'markup' },\n\t{ label: 'MATLAB', value: 'matlab' },\n\t{ label: 'Mathematica', value: 'mathematica', aliases: ['mma', 'wl'] },\n\t{ label: 'Mermaid', value: 'mermaid' },\n\t{ label: 'Nix', value: 'nix', aliases: ['nixos'] },\n\t{ label: 'Notion Formula', value: 'notion' },\n\t{\n\t\tlabel: 'Objective-C',\n\t\tvalue: 'objectivec',\n\t\taliases: ['mm', 'objc', 'obj-c', 'obj-c++', 'objective-c++']\n\t},\n\t{ label: 'OCaml', value: 'ocaml', aliases: ['ml'] },\n\t{ label: 'Pascal', value: 'pascal' },\n\t{ label: 'Perl', value: 'perl', aliases: ['pl', 'pm'] },\n\t{ label: 'PHP', value: 'php' },\n\t{ label: 'PowerShell', value: 'powershell', aliases: ['pwsh', 'ps', 'ps1'] },\n\t{ label: 'Prolog', value: 'prolog' },\n\t{ label: 'Protocol Buffers', value: 'protobuf', aliases: ['proto'] },\n\t{ label: 'PureScript', value: 'purescript' },\n\t{ label: 'Python', value: 'python', aliases: ['py', 'gyp', 'ipython'] },\n\t{ label: 'R', value: 'r' },\n\t{ label: 'Racket', value: 'racket' },\n\t{ label: 'Reason', value: 'reasonml', aliases: ['re'] },\n\t{\n\t\tlabel: 'Ruby',\n\t\tvalue: 'ruby',\n\t\taliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb']\n\t},\n\t{ label: 'Rust', value: 'rust', aliases: ['rs'] },\n\t{ label: 'Sass', value: 'sass' },\n\t{ label: 'Scala', value: 'scala' },\n\t{ label: 'Scheme', value: 'scheme', aliases: ['scm'] },\n\t{ label: 'SCSS', value: 'scss' },\n\t{ label: 'Shell', value: 'shell', aliases: ['console', 'shellsession'] },\n\t{ label: 'Smalltalk', value: 'smalltalk', aliases: ['st'] },\n\t{ label: 'Solidity', value: 'solidity' },\n\t{ label: 'SQL', value: 'sql' },\n\t{ label: 'Swift', value: 'swift' },\n\t{ label: 'TOML', value: 'toml' },\n\t{\n\t\tlabel: 'TypeScript',\n\t\tvalue: 'typescript',\n\t\taliases: ['ts', 'tsx', 'mts', 'cts']\n\t},\n\t{ label: 'VB.Net', value: 'vbnet', aliases: ['vb'] },\n\t{ label: 'Verilog', value: 'verilog', aliases: ['v', 'sv', 'svh'] },\n\t{ label: 'VHDL', value: 'vhdl' },\n\t{ label: 'Visual Basic', value: 'visualbasic' },\n\t{ label: 'WebAssembly', value: 'wasm' },\n\t{\n\t\tlabel: 'XML',\n\t\tvalue: 'xml',\n\t\t// Note: highlight.js also lists \"html\" here, but `html` is its own\n\t\t// canonical entry above; including it would rewrite html → xml.\n\t\taliases: [\n\t\t\t'xhtml',\n\t\t\t'rss',\n\t\t\t'atom',\n\t\t\t'xjb',\n\t\t\t'xsd',\n\t\t\t'xsl',\n\t\t\t'plist',\n\t\t\t'wsf',\n\t\t\t'svg'\n\t\t]\n\t},\n\t{ label: 'YAML', value: 'yaml', aliases: ['yml'] }\n];\n\nconst ALIAS_TO_CANONICAL = (() => {\n\tconst map = new Map<string, string>();\n\n\tfor (const lang of LANGUAGES) {\n\t\tfor (const alias of lang.aliases ?? []) {\n\t\t\tmap.set(alias, lang.value);\n\t\t}\n\t}\n\n\treturn map;\n})();\n\n/**\n * Resolve a user-supplied language identifier to a canonical LANGUAGES.value.\n * Aliases (e.g. `js`, `ts`, `py`) collapse to their canonical form\n * (`javascript`, `typescript`, `python`); unknown identifiers and canonical\n * values pass through unchanged. Empty / undefined input returns ''.\n */\nexport function normalizeLanguage(input: string | undefined | null): string {\n\tif (!input) return '';\n\n\treturn ALIAS_TO_CANONICAL.get(input) ?? input;\n}\n\nexport function getLanguageLabel(value: string | null | undefined): string {\n\tif (!value) return 'Auto';\n\n\tconst found = LANGUAGES.find((l) => l.value === value);\n\n\treturn found?.label ?? value;\n}\n"],"mappings":"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","names":[]}