@fieldia/code 0.13.1 → 0.14.1

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.
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CODE_LANGUAGES = void 0;
4
+ exports.codeLanguage = codeLanguage;
5
+ exports.loadCodeLanguage = loadCodeLanguage;
6
+ const language_1 = require("@codemirror/language");
7
+ /** A grammar from @codemirror/legacy-modes, as a language the editor reads. */
8
+ const stream = (parser) => language_1.StreamLanguage.define(parser);
9
+ /** How each language's grammar loads: a dynamic import each, so each is a file of its own. */
10
+ const LOADERS = {
11
+ javascript: () => Promise.resolve().then(() => require('@codemirror/lang-javascript')).then((m) => m.javascript()),
12
+ typescript: () => Promise.resolve().then(() => require('@codemirror/lang-javascript')).then((m) => m.javascript({ typescript: true })),
13
+ jsx: () => Promise.resolve().then(() => require('@codemirror/lang-javascript')).then((m) => m.javascript({ jsx: true })),
14
+ tsx: () => Promise.resolve().then(() => require('@codemirror/lang-javascript')).then((m) => m.javascript({ jsx: true, typescript: true })),
15
+ python: () => Promise.resolve().then(() => require('@codemirror/lang-python')).then((m) => m.python()),
16
+ sql: () => Promise.resolve().then(() => require('@codemirror/lang-sql')).then((m) => m.sql()),
17
+ postgresql: () => Promise.resolve().then(() => require('@codemirror/lang-sql')).then((m) => m.sql({ dialect: m.PostgreSQL })),
18
+ mysql: () => Promise.resolve().then(() => require('@codemirror/lang-sql')).then((m) => m.sql({ dialect: m.MySQL })),
19
+ sqlite: () => Promise.resolve().then(() => require('@codemirror/lang-sql')).then((m) => m.sql({ dialect: m.SQLite })),
20
+ mssql: () => Promise.resolve().then(() => require('@codemirror/lang-sql')).then((m) => m.sql({ dialect: m.MSSQL })),
21
+ html: () => Promise.resolve().then(() => require('@codemirror/lang-html')).then((m) => m.html()),
22
+ css: () => Promise.resolve().then(() => require('@codemirror/lang-css')).then((m) => m.css()),
23
+ xml: () => Promise.resolve().then(() => require('@codemirror/lang-xml')).then((m) => m.xml()),
24
+ yaml: () => Promise.resolve().then(() => require('@codemirror/lang-yaml')).then((m) => m.yaml()),
25
+ markdown: () => Promise.resolve().then(() => require('@codemirror/lang-markdown')).then((m) => m.markdown()),
26
+ json: () => Promise.resolve().then(() => require('@codemirror/lang-json')).then((m) => m.json()),
27
+ java: () => Promise.resolve().then(() => require('@codemirror/lang-java')).then((m) => m.java()),
28
+ c: () => Promise.resolve().then(() => require('@codemirror/lang-cpp')).then((m) => m.cpp()),
29
+ cpp: () => Promise.resolve().then(() => require('@codemirror/lang-cpp')).then((m) => m.cpp()),
30
+ php: () => Promise.resolve().then(() => require('@codemirror/lang-php')).then((m) => m.php()),
31
+ rust: () => Promise.resolve().then(() => require('@codemirror/lang-rust')).then((m) => m.rust()),
32
+ go: () => Promise.resolve().then(() => require('@codemirror/lang-go')).then((m) => m.go()),
33
+ // The rest from CodeMirror 5's modes, each a small file of its own.
34
+ shell: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/shell')).then((m) => stream(m.shell)),
35
+ powershell: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/powershell')).then((m) => stream(m.powerShell)),
36
+ ruby: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/ruby')).then((m) => stream(m.ruby)),
37
+ perl: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/perl')).then((m) => stream(m.perl)),
38
+ lua: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/lua')).then((m) => stream(m.lua)),
39
+ r: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/r')).then((m) => stream(m.r)),
40
+ swift: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/swift')).then((m) => stream(m.swift)),
41
+ kotlin: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/clike')).then((m) => stream(m.kotlin)),
42
+ csharp: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/clike')).then((m) => stream(m.csharp)),
43
+ scala: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/clike')).then((m) => stream(m.scala)),
44
+ dart: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/clike')).then((m) => stream(m.dart)),
45
+ dockerfile: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/dockerfile')).then((m) => stream(m.dockerFile)),
46
+ toml: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/toml')).then((m) => stream(m.toml)),
47
+ ini: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/properties')).then((m) => stream(m.properties)),
48
+ diff: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/diff')).then((m) => stream(m.diff)),
49
+ nginx: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/nginx')).then((m) => stream(m.nginx)),
50
+ protobuf: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/protobuf')).then((m) => stream(m.protobuf)),
51
+ haskell: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/haskell')).then((m) => stream(m.haskell)),
52
+ clojure: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/clojure')).then((m) => stream(m.clojure)),
53
+ erlang: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/erlang')).then((m) => stream(m.erlang)),
54
+ groovy: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/groovy')).then((m) => stream(m.groovy)),
55
+ julia: () => Promise.resolve().then(() => require('@codemirror/legacy-modes/mode/julia')).then((m) => stream(m.julia)),
56
+ };
57
+ /** How a language is usually indented, where it is not by two spaces: four for Python, C and their kin, a tab for Go. */
58
+ const INDENTS = Object.fromEntries([
59
+ ...['python', 'java', 'c', 'cpp', 'csharp', 'php', 'rust', 'kotlin', 'swift', 'powershell', 'perl', 'julia', 'groovy'].map((id) => [id, ' ']),
60
+ ['go', '\t'],
61
+ ]);
62
+ const language = (id, name, ...aliases) => ({ id, name, aliases });
63
+ /** Every language a code field can be written in, in the order a person picking one reads them. */
64
+ exports.CODE_LANGUAGES = [
65
+ language('javascript', 'JavaScript', 'js', 'mjs', 'cjs', 'node'),
66
+ language('typescript', 'TypeScript', 'ts', 'mts', 'cts'),
67
+ language('jsx', 'JavaScript with JSX'),
68
+ language('tsx', 'TypeScript with JSX'),
69
+ language('python', 'Python', 'py', 'python3'),
70
+ language('sql', 'SQL'),
71
+ language('postgresql', 'PostgreSQL', 'postgres', 'pgsql', 'psql'),
72
+ language('mysql', 'MySQL', 'mariadb'),
73
+ language('sqlite', 'SQLite'),
74
+ language('mssql', 'SQL Server', 'tsql', 't-sql', 'sqlserver'),
75
+ language('html', 'HTML', 'htm', 'xhtml'),
76
+ language('css', 'CSS'),
77
+ language('xml', 'XML', 'svg', 'xsl'),
78
+ language('yaml', 'YAML', 'yml'),
79
+ language('markdown', 'Markdown', 'md'),
80
+ language('json', 'JSON', 'jsonc'),
81
+ language('java', 'Java'),
82
+ language('c', 'C', 'h'),
83
+ language('cpp', 'C++', 'c++', 'cc', 'cxx', 'hpp'),
84
+ language('php', 'PHP'),
85
+ language('rust', 'Rust', 'rs'),
86
+ language('go', 'Go', 'golang'),
87
+ language('shell', 'Shell', 'sh', 'bash', 'zsh'),
88
+ language('powershell', 'PowerShell', 'ps1', 'pwsh'),
89
+ language('ruby', 'Ruby', 'rb'),
90
+ language('perl', 'Perl', 'pl'),
91
+ language('lua', 'Lua'),
92
+ language('r', 'R'),
93
+ language('swift', 'Swift'),
94
+ language('kotlin', 'Kotlin', 'kt', 'kts'),
95
+ language('csharp', 'C#', 'c#', 'cs'),
96
+ language('scala', 'Scala'),
97
+ language('dart', 'Dart'),
98
+ language('dockerfile', 'Dockerfile', 'docker'),
99
+ language('toml', 'TOML'),
100
+ language('ini', 'INI', 'properties', 'conf'),
101
+ language('diff', 'Diff', 'patch'),
102
+ language('nginx', 'nginx'),
103
+ language('protobuf', 'Protocol Buffers', 'proto'),
104
+ language('haskell', 'Haskell', 'hs'),
105
+ language('clojure', 'Clojure', 'clj'),
106
+ language('erlang', 'Erlang', 'erl'),
107
+ language('groovy', 'Groovy', 'gradle'),
108
+ language('julia', 'Julia', 'jl'),
109
+ ];
110
+ const BY_NAME = new Map(exports.CODE_LANGUAGES.flatMap((language) => [language.id, ...language.aliases].map((name) => [name, language])));
111
+ /** The language a page names, by its id or another of its names, in any case; null for one not on the list. */
112
+ function codeLanguage(name) {
113
+ return typeof name === 'string' ? BY_NAME.get(name.trim().toLowerCase()) ?? null : null;
114
+ }
115
+ /** Each grammar's load, once: every field in that language shares it. */
116
+ const loading = new Map();
117
+ /**
118
+ * The grammar of the language a page names, ready for an editor: loaded the
119
+ * first time a field asks for it. Null for a language not on the list, and
120
+ * for one whose file could not be fetched — the field stays plain text.
121
+ */
122
+ function loadCodeLanguage(name) {
123
+ const found = codeLanguage(name);
124
+ if (!found)
125
+ return Promise.resolve(null);
126
+ let load = loading.get(found.id);
127
+ if (!load) {
128
+ load = LOADERS[found.id]().then((support) => [support, language_1.indentUnit.of(INDENTS[found.id] ?? ' ')], () => {
129
+ // Not fetched (offline, say): plain text this time, and another try next time.
130
+ loading.delete(found.id);
131
+ return null;
132
+ });
133
+ loading.set(found.id, load);
134
+ }
135
+ return load;
136
+ }
137
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../../../libs/code/src/lib/languages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { StreamLanguage, indentUnit } from '@codemirror/language';
2
+ /** A grammar from @codemirror/legacy-modes, as a language the editor reads. */
3
+ const stream = (parser) => StreamLanguage.define(parser);
4
+ /** How each language's grammar loads: a dynamic import each, so each is a file of its own. */
5
+ const LOADERS = {
6
+ javascript: () => import('@codemirror/lang-javascript').then((m) => m.javascript()),
7
+ typescript: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ typescript: true })),
8
+ jsx: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ jsx: true })),
9
+ tsx: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ jsx: true, typescript: true })),
10
+ python: () => import('@codemirror/lang-python').then((m) => m.python()),
11
+ sql: () => import('@codemirror/lang-sql').then((m) => m.sql()),
12
+ postgresql: () => import('@codemirror/lang-sql').then((m) => m.sql({ dialect: m.PostgreSQL })),
13
+ mysql: () => import('@codemirror/lang-sql').then((m) => m.sql({ dialect: m.MySQL })),
14
+ sqlite: () => import('@codemirror/lang-sql').then((m) => m.sql({ dialect: m.SQLite })),
15
+ mssql: () => import('@codemirror/lang-sql').then((m) => m.sql({ dialect: m.MSSQL })),
16
+ html: () => import('@codemirror/lang-html').then((m) => m.html()),
17
+ css: () => import('@codemirror/lang-css').then((m) => m.css()),
18
+ xml: () => import('@codemirror/lang-xml').then((m) => m.xml()),
19
+ yaml: () => import('@codemirror/lang-yaml').then((m) => m.yaml()),
20
+ markdown: () => import('@codemirror/lang-markdown').then((m) => m.markdown()),
21
+ json: () => import('@codemirror/lang-json').then((m) => m.json()),
22
+ java: () => import('@codemirror/lang-java').then((m) => m.java()),
23
+ c: () => import('@codemirror/lang-cpp').then((m) => m.cpp()),
24
+ cpp: () => import('@codemirror/lang-cpp').then((m) => m.cpp()),
25
+ php: () => import('@codemirror/lang-php').then((m) => m.php()),
26
+ rust: () => import('@codemirror/lang-rust').then((m) => m.rust()),
27
+ go: () => import('@codemirror/lang-go').then((m) => m.go()),
28
+ // The rest from CodeMirror 5's modes, each a small file of its own.
29
+ shell: () => import('@codemirror/legacy-modes/mode/shell').then((m) => stream(m.shell)),
30
+ powershell: () => import('@codemirror/legacy-modes/mode/powershell').then((m) => stream(m.powerShell)),
31
+ ruby: () => import('@codemirror/legacy-modes/mode/ruby').then((m) => stream(m.ruby)),
32
+ perl: () => import('@codemirror/legacy-modes/mode/perl').then((m) => stream(m.perl)),
33
+ lua: () => import('@codemirror/legacy-modes/mode/lua').then((m) => stream(m.lua)),
34
+ r: () => import('@codemirror/legacy-modes/mode/r').then((m) => stream(m.r)),
35
+ swift: () => import('@codemirror/legacy-modes/mode/swift').then((m) => stream(m.swift)),
36
+ kotlin: () => import('@codemirror/legacy-modes/mode/clike').then((m) => stream(m.kotlin)),
37
+ csharp: () => import('@codemirror/legacy-modes/mode/clike').then((m) => stream(m.csharp)),
38
+ scala: () => import('@codemirror/legacy-modes/mode/clike').then((m) => stream(m.scala)),
39
+ dart: () => import('@codemirror/legacy-modes/mode/clike').then((m) => stream(m.dart)),
40
+ dockerfile: () => import('@codemirror/legacy-modes/mode/dockerfile').then((m) => stream(m.dockerFile)),
41
+ toml: () => import('@codemirror/legacy-modes/mode/toml').then((m) => stream(m.toml)),
42
+ ini: () => import('@codemirror/legacy-modes/mode/properties').then((m) => stream(m.properties)),
43
+ diff: () => import('@codemirror/legacy-modes/mode/diff').then((m) => stream(m.diff)),
44
+ nginx: () => import('@codemirror/legacy-modes/mode/nginx').then((m) => stream(m.nginx)),
45
+ protobuf: () => import('@codemirror/legacy-modes/mode/protobuf').then((m) => stream(m.protobuf)),
46
+ haskell: () => import('@codemirror/legacy-modes/mode/haskell').then((m) => stream(m.haskell)),
47
+ clojure: () => import('@codemirror/legacy-modes/mode/clojure').then((m) => stream(m.clojure)),
48
+ erlang: () => import('@codemirror/legacy-modes/mode/erlang').then((m) => stream(m.erlang)),
49
+ groovy: () => import('@codemirror/legacy-modes/mode/groovy').then((m) => stream(m.groovy)),
50
+ julia: () => import('@codemirror/legacy-modes/mode/julia').then((m) => stream(m.julia)),
51
+ };
52
+ /** How a language is usually indented, where it is not by two spaces: four for Python, C and their kin, a tab for Go. */
53
+ const INDENTS = Object.fromEntries([
54
+ ...['python', 'java', 'c', 'cpp', 'csharp', 'php', 'rust', 'kotlin', 'swift', 'powershell', 'perl', 'julia', 'groovy'].map((id) => [id, ' ']),
55
+ ['go', '\t'],
56
+ ]);
57
+ const language = (id, name, ...aliases) => ({ id, name, aliases });
58
+ /** Every language a code field can be written in, in the order a person picking one reads them. */
59
+ export const CODE_LANGUAGES = [
60
+ language('javascript', 'JavaScript', 'js', 'mjs', 'cjs', 'node'),
61
+ language('typescript', 'TypeScript', 'ts', 'mts', 'cts'),
62
+ language('jsx', 'JavaScript with JSX'),
63
+ language('tsx', 'TypeScript with JSX'),
64
+ language('python', 'Python', 'py', 'python3'),
65
+ language('sql', 'SQL'),
66
+ language('postgresql', 'PostgreSQL', 'postgres', 'pgsql', 'psql'),
67
+ language('mysql', 'MySQL', 'mariadb'),
68
+ language('sqlite', 'SQLite'),
69
+ language('mssql', 'SQL Server', 'tsql', 't-sql', 'sqlserver'),
70
+ language('html', 'HTML', 'htm', 'xhtml'),
71
+ language('css', 'CSS'),
72
+ language('xml', 'XML', 'svg', 'xsl'),
73
+ language('yaml', 'YAML', 'yml'),
74
+ language('markdown', 'Markdown', 'md'),
75
+ language('json', 'JSON', 'jsonc'),
76
+ language('java', 'Java'),
77
+ language('c', 'C', 'h'),
78
+ language('cpp', 'C++', 'c++', 'cc', 'cxx', 'hpp'),
79
+ language('php', 'PHP'),
80
+ language('rust', 'Rust', 'rs'),
81
+ language('go', 'Go', 'golang'),
82
+ language('shell', 'Shell', 'sh', 'bash', 'zsh'),
83
+ language('powershell', 'PowerShell', 'ps1', 'pwsh'),
84
+ language('ruby', 'Ruby', 'rb'),
85
+ language('perl', 'Perl', 'pl'),
86
+ language('lua', 'Lua'),
87
+ language('r', 'R'),
88
+ language('swift', 'Swift'),
89
+ language('kotlin', 'Kotlin', 'kt', 'kts'),
90
+ language('csharp', 'C#', 'c#', 'cs'),
91
+ language('scala', 'Scala'),
92
+ language('dart', 'Dart'),
93
+ language('dockerfile', 'Dockerfile', 'docker'),
94
+ language('toml', 'TOML'),
95
+ language('ini', 'INI', 'properties', 'conf'),
96
+ language('diff', 'Diff', 'patch'),
97
+ language('nginx', 'nginx'),
98
+ language('protobuf', 'Protocol Buffers', 'proto'),
99
+ language('haskell', 'Haskell', 'hs'),
100
+ language('clojure', 'Clojure', 'clj'),
101
+ language('erlang', 'Erlang', 'erl'),
102
+ language('groovy', 'Groovy', 'gradle'),
103
+ language('julia', 'Julia', 'jl'),
104
+ ];
105
+ const BY_NAME = new Map(CODE_LANGUAGES.flatMap((language) => [language.id, ...language.aliases].map((name) => [name, language])));
106
+ /** The language a page names, by its id or another of its names, in any case; null for one not on the list. */
107
+ export function codeLanguage(name) {
108
+ return typeof name === 'string' ? BY_NAME.get(name.trim().toLowerCase()) ?? null : null;
109
+ }
110
+ /** Each grammar's load, once: every field in that language shares it. */
111
+ const loading = new Map();
112
+ /**
113
+ * The grammar of the language a page names, ready for an editor: loaded the
114
+ * first time a field asks for it. Null for a language not on the list, and
115
+ * for one whose file could not be fetched — the field stays plain text.
116
+ */
117
+ export function loadCodeLanguage(name) {
118
+ const found = codeLanguage(name);
119
+ if (!found)
120
+ return Promise.resolve(null);
121
+ let load = loading.get(found.id);
122
+ if (!load) {
123
+ load = LOADERS[found.id]().then((support) => [support, indentUnit.of(INDENTS[found.id] ?? ' ')], () => {
124
+ // Not fetched (offline, say): plain text this time, and another try next time.
125
+ loading.delete(found.id);
126
+ return null;
127
+ });
128
+ loading.set(found.id, load);
129
+ }
130
+ return load;
131
+ }
132
+ //# sourceMappingURL=languages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.mjs","sourceRoot":"","sources":["../../../../../libs/code/src/lib/languages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { HighlightStyle } from '@codemirror/language';
2
+ /**
3
+ * The colours code is drawn in, by what a word is: a keyword, a string, a
4
+ * number… Light and dark, each reading at 4.5:1 or more (WCAG AA) on the
5
+ * surface of every Fieldia theme in that scheme (palette.spec.ts). Comments
6
+ * take the page's quiet words (`--fd-muted`), errors its error colour, and
7
+ * the rest of the text its words, so the code sits among the other fields.
8
+ *
9
+ * They are CSS variables, `--fd-code-keyword` and the rest, in Fieldia's
10
+ * tokens' layer: a host sets its own over them as it sets any token.
11
+ */
12
+ export declare const CODE_COLOURS: {
13
+ readonly light: {
14
+ readonly keyword: "#cf222e";
15
+ readonly string: "#0a3069";
16
+ readonly literal: "#953800";
17
+ readonly function: "#6639ba";
18
+ readonly type: "#8250df";
19
+ readonly tag: "#116329";
20
+ readonly property: "#116329";
21
+ };
22
+ readonly dark: {
23
+ readonly keyword: "#ff7b72";
24
+ readonly string: "#a5d6ff";
25
+ readonly literal: "#ffa657";
26
+ readonly function: "#d2a8ff";
27
+ readonly type: "#f2cc60";
28
+ readonly tag: "#7ee787";
29
+ readonly property: "#7ee787";
30
+ };
31
+ };
32
+ export type CodeRole = keyof (typeof CODE_COLOURS)['light'];
33
+ /** The colours as CSS: light on any code box, dark where the page's scheme is dark, or follows a dark system. */
34
+ export declare const CODE_COLOURS_CSS: string;
35
+ /** What each kind of word in a grammar is drawn as, in the colours above. */
36
+ export declare const codeHighlightStyle: HighlightStyle;
@@ -0,0 +1,36 @@
1
+ import { HighlightStyle } from '@codemirror/language';
2
+ /**
3
+ * The colours code is drawn in, by what a word is: a keyword, a string, a
4
+ * number… Light and dark, each reading at 4.5:1 or more (WCAG AA) on the
5
+ * surface of every Fieldia theme in that scheme (palette.spec.ts). Comments
6
+ * take the page's quiet words (`--fd-muted`), errors its error colour, and
7
+ * the rest of the text its words, so the code sits among the other fields.
8
+ *
9
+ * They are CSS variables, `--fd-code-keyword` and the rest, in Fieldia's
10
+ * tokens' layer: a host sets its own over them as it sets any token.
11
+ */
12
+ export declare const CODE_COLOURS: {
13
+ readonly light: {
14
+ readonly keyword: "#cf222e";
15
+ readonly string: "#0a3069";
16
+ readonly literal: "#953800";
17
+ readonly function: "#6639ba";
18
+ readonly type: "#8250df";
19
+ readonly tag: "#116329";
20
+ readonly property: "#116329";
21
+ };
22
+ readonly dark: {
23
+ readonly keyword: "#ff7b72";
24
+ readonly string: "#a5d6ff";
25
+ readonly literal: "#ffa657";
26
+ readonly function: "#d2a8ff";
27
+ readonly type: "#f2cc60";
28
+ readonly tag: "#7ee787";
29
+ readonly property: "#7ee787";
30
+ };
31
+ };
32
+ export type CodeRole = keyof (typeof CODE_COLOURS)['light'];
33
+ /** The colours as CSS: light on any code box, dark where the page's scheme is dark, or follows a dark system. */
34
+ export declare const CODE_COLOURS_CSS: string;
35
+ /** What each kind of word in a grammar is drawn as, in the colours above. */
36
+ export declare const codeHighlightStyle: HighlightStyle;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codeHighlightStyle = exports.CODE_COLOURS_CSS = exports.CODE_COLOURS = void 0;
4
+ const language_1 = require("@codemirror/language");
5
+ const highlight_1 = require("@lezer/highlight");
6
+ /**
7
+ * The colours code is drawn in, by what a word is: a keyword, a string, a
8
+ * number… Light and dark, each reading at 4.5:1 or more (WCAG AA) on the
9
+ * surface of every Fieldia theme in that scheme (palette.spec.ts). Comments
10
+ * take the page's quiet words (`--fd-muted`), errors its error colour, and
11
+ * the rest of the text its words, so the code sits among the other fields.
12
+ *
13
+ * They are CSS variables, `--fd-code-keyword` and the rest, in Fieldia's
14
+ * tokens' layer: a host sets its own over them as it sets any token.
15
+ */
16
+ exports.CODE_COLOURS = {
17
+ // JSON's three parts in three families, so it reads at a glance: a key (YAML's, a CSS property) green, a string blue, a number orange.
18
+ light: { keyword: '#cf222e', string: '#0a3069', literal: '#953800', function: '#6639ba', type: '#8250df', tag: '#116329', property: '#116329' },
19
+ dark: { keyword: '#ff7b72', string: '#a5d6ff', literal: '#ffa657', function: '#d2a8ff', type: '#f2cc60', tag: '#7ee787', property: '#7ee787' },
20
+ };
21
+ const declare = (scheme) => Object.entries(exports.CODE_COLOURS[scheme])
22
+ .map(([role, colour]) => `--fd-code-${role}: ${colour};`)
23
+ .join(' ');
24
+ /** The colours as CSS: light on any code box, dark where the page's scheme is dark, or follows a dark system. */
25
+ exports.CODE_COLOURS_CSS = `@layer fieldia-tokens {
26
+ .fd-code { ${declare('light')} }
27
+ :is(.fd-form, .fd-form-dialog, .fd-theme)[data-scheme="dark"] .fd-code { ${declare('dark')} }
28
+ @media (prefers-color-scheme: dark) { :is(.fd-form, .fd-form-dialog, .fd-theme)[data-scheme="auto"] .fd-code { ${declare('dark')} } }
29
+ }`;
30
+ const v = (role) => `var(--fd-code-${role})`;
31
+ /** What each kind of word in a grammar is drawn as, in the colours above. */
32
+ exports.codeHighlightStyle = language_1.HighlightStyle.define([
33
+ { tag: [highlight_1.tags.keyword, highlight_1.tags.modifier, highlight_1.tags.operatorKeyword, highlight_1.tags.controlKeyword, highlight_1.tags.definitionKeyword, highlight_1.tags.moduleKeyword, highlight_1.tags.self], color: v('keyword') },
34
+ { tag: [highlight_1.tags.string, highlight_1.tags.special(highlight_1.tags.string), highlight_1.tags.character, highlight_1.tags.regexp, highlight_1.tags.escape], color: v('string') },
35
+ { tag: [highlight_1.tags.number, highlight_1.tags.bool, highlight_1.tags.null, highlight_1.tags.atom, highlight_1.tags.unit, highlight_1.tags.constant(highlight_1.tags.name), highlight_1.tags.standard(highlight_1.tags.name)], color: v('literal') },
36
+ { tag: [highlight_1.tags.function(highlight_1.tags.variableName), highlight_1.tags.function(highlight_1.tags.propertyName), highlight_1.tags.function(highlight_1.tags.definition(highlight_1.tags.variableName)), highlight_1.tags.macroName], color: v('function') },
37
+ { tag: [highlight_1.tags.typeName, highlight_1.tags.className, highlight_1.tags.namespace, highlight_1.tags.labelName], color: v('type') },
38
+ { tag: [highlight_1.tags.tagName, highlight_1.tags.angleBracket], color: v('tag') },
39
+ { tag: highlight_1.tags.propertyName, color: v('property') },
40
+ // An HTML attribute in the numbers' colour, apart from its tag's green.
41
+ { tag: highlight_1.tags.attributeName, color: v('literal') },
42
+ { tag: [highlight_1.tags.comment, highlight_1.tags.lineComment, highlight_1.tags.blockComment, highlight_1.tags.docComment, highlight_1.tags.meta, highlight_1.tags.processingInstruction, highlight_1.tags.documentMeta], color: 'var(--fd-muted)', fontStyle: 'italic' },
43
+ { tag: highlight_1.tags.heading, color: v('keyword'), fontWeight: 'bold' },
44
+ { tag: highlight_1.tags.strong, fontWeight: 'bold' },
45
+ { tag: highlight_1.tags.emphasis, fontStyle: 'italic' },
46
+ { tag: highlight_1.tags.strikethrough, textDecoration: 'line-through' },
47
+ { tag: [highlight_1.tags.link, highlight_1.tags.url], color: v('string'), textDecoration: 'underline' },
48
+ { tag: highlight_1.tags.inserted, color: v('tag') },
49
+ { tag: highlight_1.tags.deleted, color: v('keyword') },
50
+ { tag: highlight_1.tags.changed, color: v('type') },
51
+ { tag: highlight_1.tags.invalid, color: 'var(--fd-error)' },
52
+ ]);
53
+ //# sourceMappingURL=palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.js","sourceRoot":"","sources":["../../../../../libs/code/src/lib/palette.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { HighlightStyle } from '@codemirror/language';
2
+ import { tags as t } from '@lezer/highlight';
3
+ /**
4
+ * The colours code is drawn in, by what a word is: a keyword, a string, a
5
+ * number… Light and dark, each reading at 4.5:1 or more (WCAG AA) on the
6
+ * surface of every Fieldia theme in that scheme (palette.spec.ts). Comments
7
+ * take the page's quiet words (`--fd-muted`), errors its error colour, and
8
+ * the rest of the text its words, so the code sits among the other fields.
9
+ *
10
+ * They are CSS variables, `--fd-code-keyword` and the rest, in Fieldia's
11
+ * tokens' layer: a host sets its own over them as it sets any token.
12
+ */
13
+ export const CODE_COLOURS = {
14
+ // JSON's three parts in three families, so it reads at a glance: a key (YAML's, a CSS property) green, a string blue, a number orange.
15
+ light: { keyword: '#cf222e', string: '#0a3069', literal: '#953800', function: '#6639ba', type: '#8250df', tag: '#116329', property: '#116329' },
16
+ dark: { keyword: '#ff7b72', string: '#a5d6ff', literal: '#ffa657', function: '#d2a8ff', type: '#f2cc60', tag: '#7ee787', property: '#7ee787' },
17
+ };
18
+ const declare = (scheme) => Object.entries(CODE_COLOURS[scheme])
19
+ .map(([role, colour]) => `--fd-code-${role}: ${colour};`)
20
+ .join(' ');
21
+ /** The colours as CSS: light on any code box, dark where the page's scheme is dark, or follows a dark system. */
22
+ export const CODE_COLOURS_CSS = `@layer fieldia-tokens {
23
+ .fd-code { ${declare('light')} }
24
+ :is(.fd-form, .fd-form-dialog, .fd-theme)[data-scheme="dark"] .fd-code { ${declare('dark')} }
25
+ @media (prefers-color-scheme: dark) { :is(.fd-form, .fd-form-dialog, .fd-theme)[data-scheme="auto"] .fd-code { ${declare('dark')} } }
26
+ }`;
27
+ const v = (role) => `var(--fd-code-${role})`;
28
+ /** What each kind of word in a grammar is drawn as, in the colours above. */
29
+ export const codeHighlightStyle = HighlightStyle.define([
30
+ { tag: [t.keyword, t.modifier, t.operatorKeyword, t.controlKeyword, t.definitionKeyword, t.moduleKeyword, t.self], color: v('keyword') },
31
+ { tag: [t.string, t.special(t.string), t.character, t.regexp, t.escape], color: v('string') },
32
+ { tag: [t.number, t.bool, t.null, t.atom, t.unit, t.constant(t.name), t.standard(t.name)], color: v('literal') },
33
+ { tag: [t.function(t.variableName), t.function(t.propertyName), t.function(t.definition(t.variableName)), t.macroName], color: v('function') },
34
+ { tag: [t.typeName, t.className, t.namespace, t.labelName], color: v('type') },
35
+ { tag: [t.tagName, t.angleBracket], color: v('tag') },
36
+ { tag: t.propertyName, color: v('property') },
37
+ // An HTML attribute in the numbers' colour, apart from its tag's green.
38
+ { tag: t.attributeName, color: v('literal') },
39
+ { tag: [t.comment, t.lineComment, t.blockComment, t.docComment, t.meta, t.processingInstruction, t.documentMeta], color: 'var(--fd-muted)', fontStyle: 'italic' },
40
+ { tag: t.heading, color: v('keyword'), fontWeight: 'bold' },
41
+ { tag: t.strong, fontWeight: 'bold' },
42
+ { tag: t.emphasis, fontStyle: 'italic' },
43
+ { tag: t.strikethrough, textDecoration: 'line-through' },
44
+ { tag: [t.link, t.url], color: v('string'), textDecoration: 'underline' },
45
+ { tag: t.inserted, color: v('tag') },
46
+ { tag: t.deleted, color: v('keyword') },
47
+ { tag: t.changed, color: v('type') },
48
+ { tag: t.invalid, color: 'var(--fd-error)' },
49
+ ]);
50
+ //# sourceMappingURL=palette.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.mjs","sourceRoot":"","sources":["../../../../../libs/code/src/lib/palette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,uIAAuI;IACvI,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC/I,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;CACtI,CAAC;AAIX,MAAM,OAAO,GAAG,CAAC,MAAwB,EAAE,EAAE,CAC3C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACjC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,aAAa,IAAI,KAAK,MAAM,GAAG,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,CAAC;AAEf,iHAAiH;AACjH,MAAM,CAAC,MAAM,gBAAgB,GAAG;aACnB,OAAO,CAAC,OAAO,CAAC;2EAC8C,OAAO,CAAC,MAAM,CAAC;iHACuB,OAAO,CAAC,MAAM,CAAC;EAC9H,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,iBAAiB,IAAI,GAAG,CAAC;AAEvD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC;IACtD,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE;IACxI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE;IAC7F,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE;IAChH,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE;IAC9I,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;IAC9E,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;IACrD,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE;IAC7C,wEAAwE;IACxE,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE;IAC7C,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE;IACjK,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;IAC3D,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;IACrC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;IACxC,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE;IACxD,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE;IACzE,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;IACpC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE;IACvC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;IACpC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC7C,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** The editor in Fieldia's colours, so it sits among the other fields. Installed once per document. */
2
- export declare const CODE_CSS = "\n.fd-code { display: grid; gap: 4px; min-width: 0; }\n.fd-code .cm-editor {\n border: 1px solid var(--fd-border); border-radius: var(--fd-control-radius); background: var(--fd-surface);\n color: var(--fd-text); font-size: 13px; min-height: 96px; max-height: 360px;\n}\n.fd-code .cm-editor.cm-focused { outline: 2px solid var(--fd-focus); outline-offset: 1px; }\n.fd-code .cm-scroller { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.5; }\n.fd-code .cm-gutters { background: var(--fd-page); color: var(--fd-muted); border-inline-end: 1px solid var(--fd-border); }\n.fd-code .cm-content[aria-invalid=\"true\"] { background: var(--fd-error-soft); }\n";
2
+ export declare const CODE_CSS: string;
3
3
  export declare function installCodeStyles(doc: Document): void;
@@ -1,3 +1,3 @@
1
1
  /** The editor in Fieldia's colours, so it sits among the other fields. Installed once per document. */
2
- export declare const CODE_CSS = "\n.fd-code { display: grid; gap: 4px; min-width: 0; }\n.fd-code .cm-editor {\n border: 1px solid var(--fd-border); border-radius: var(--fd-control-radius); background: var(--fd-surface);\n color: var(--fd-text); font-size: 13px; min-height: 96px; max-height: 360px;\n}\n.fd-code .cm-editor.cm-focused { outline: 2px solid var(--fd-focus); outline-offset: 1px; }\n.fd-code .cm-scroller { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.5; }\n.fd-code .cm-gutters { background: var(--fd-page); color: var(--fd-muted); border-inline-end: 1px solid var(--fd-border); }\n.fd-code .cm-content[aria-invalid=\"true\"] { background: var(--fd-error-soft); }\n";
2
+ export declare const CODE_CSS: string;
3
3
  export declare function installCodeStyles(doc: Document): void;
package/src/lib/styles.js CHANGED
@@ -2,9 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CODE_CSS = void 0;
4
4
  exports.installCodeStyles = installCodeStyles;
5
+ const palette_1 = require("./palette");
5
6
  /** The editor in Fieldia's colours, so it sits among the other fields. Installed once per document. */
6
7
  exports.CODE_CSS = `
7
- .fd-code { display: grid; gap: 4px; min-width: 0; }
8
+ /* One column, as wide as the field: a long line scrolls inside the editor, never widens the page. */
9
+ .fd-code { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; min-width: 0; }
8
10
  .fd-code .cm-editor {
9
11
  border: 1px solid var(--fd-border); border-radius: var(--fd-control-radius); background: var(--fd-surface);
10
12
  color: var(--fd-text); font-size: 13px; min-height: 96px; max-height: 360px;
@@ -12,7 +14,20 @@ exports.CODE_CSS = `
12
14
  .fd-code .cm-editor.cm-focused { outline: 2px solid var(--fd-focus); outline-offset: 1px; }
13
15
  .fd-code .cm-scroller { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.5; }
14
16
  .fd-code .cm-gutters { background: var(--fd-page); color: var(--fd-muted); border-inline-end: 1px solid var(--fd-border); }
15
- .fd-code .cm-content[aria-invalid="true"] { background: var(--fd-error-soft); }
17
+ /* JSON that does not read: the box's edge in the error colour, the line where it breaks shaded, the character that cannot be there underlined. */
18
+ .fd-code .cm-editor:has(.cm-content[aria-invalid="true"]) { border-color: var(--fd-error); }
19
+ .fd-code .fd-code-bad-line { background: var(--fd-error-soft); }
20
+ .fd-code .fd-code-bad-spot { text-decoration: wavy underline var(--fd-error); text-decoration-skip-ink: none; text-underline-offset: 3px; }
21
+ .fd-code-error { font-family: var(--fd-font); }
22
+ /* Code in a language: its words in the code colours, the box shaded when it is only to be read. */
23
+ .fd-code-text .cm-editor { color: var(--fd-text); }
24
+ .fd-code-text[data-readonly] .cm-editor { background: color-mix(in srgb, var(--fd-text) 4%, var(--fd-surface)); }
25
+ .fd-code-text .cm-placeholder { color: var(--fd-muted); }
26
+ /* A char field's code is one line: as tall as a text box, no line numbers. */
27
+ .fd-code-line { min-height: 0; }
28
+ .fd-code-line .cm-editor { min-height: 0; }
29
+ .fd-code-line .cm-content { padding-block: max(2px, calc(var(--fd-pad-y, 4px) - 1px)); }
30
+ ${palette_1.CODE_COLOURS_CSS}
16
31
  `;
17
32
  function installCodeStyles(doc) {
18
33
  if (doc.getElementById('fieldia-code-styles'))
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../libs/code/src/lib/styles.ts"],"names":[],"mappings":";;;AAaA,8CAMC;AAnBD,uGAAuG;AAC1F,QAAA,QAAQ,GAAG;;;;;;;;;;CAUvB,CAAC;AAEF,SAAgB,iBAAiB,CAAC,GAAa;IAC7C,IAAI,GAAG,CAAC,cAAc,CAAC,qBAAqB,CAAC;QAAE,OAAO;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,qBAAqB,CAAC;IACjC,KAAK,CAAC,WAAW,GAAG,gBAAQ,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../libs/code/src/lib/styles.ts"],"names":[],"mappings":";;;AA6BA,8CAMC;AAnCD,uCAA6C;AAE7C,uGAAuG;AAC1F,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuBtB,0BAAgB;CACjB,CAAC;AAEF,SAAgB,iBAAiB,CAAC,GAAa;IAC7C,IAAI,GAAG,CAAC,cAAc,CAAC,qBAAqB,CAAC;QAAE,OAAO;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,qBAAqB,CAAC;IACjC,KAAK,CAAC,WAAW,GAAG,gBAAQ,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
@@ -1,6 +1,8 @@
1
+ import { CODE_COLOURS_CSS } from './palette.mjs';
1
2
  /** The editor in Fieldia's colours, so it sits among the other fields. Installed once per document. */
2
3
  export const CODE_CSS = `
3
- .fd-code { display: grid; gap: 4px; min-width: 0; }
4
+ /* One column, as wide as the field: a long line scrolls inside the editor, never widens the page. */
5
+ .fd-code { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; min-width: 0; }
4
6
  .fd-code .cm-editor {
5
7
  border: 1px solid var(--fd-border); border-radius: var(--fd-control-radius); background: var(--fd-surface);
6
8
  color: var(--fd-text); font-size: 13px; min-height: 96px; max-height: 360px;
@@ -8,7 +10,20 @@ export const CODE_CSS = `
8
10
  .fd-code .cm-editor.cm-focused { outline: 2px solid var(--fd-focus); outline-offset: 1px; }
9
11
  .fd-code .cm-scroller { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.5; }
10
12
  .fd-code .cm-gutters { background: var(--fd-page); color: var(--fd-muted); border-inline-end: 1px solid var(--fd-border); }
11
- .fd-code .cm-content[aria-invalid="true"] { background: var(--fd-error-soft); }
13
+ /* JSON that does not read: the box's edge in the error colour, the line where it breaks shaded, the character that cannot be there underlined. */
14
+ .fd-code .cm-editor:has(.cm-content[aria-invalid="true"]) { border-color: var(--fd-error); }
15
+ .fd-code .fd-code-bad-line { background: var(--fd-error-soft); }
16
+ .fd-code .fd-code-bad-spot { text-decoration: wavy underline var(--fd-error); text-decoration-skip-ink: none; text-underline-offset: 3px; }
17
+ .fd-code-error { font-family: var(--fd-font); }
18
+ /* Code in a language: its words in the code colours, the box shaded when it is only to be read. */
19
+ .fd-code-text .cm-editor { color: var(--fd-text); }
20
+ .fd-code-text[data-readonly] .cm-editor { background: color-mix(in srgb, var(--fd-text) 4%, var(--fd-surface)); }
21
+ .fd-code-text .cm-placeholder { color: var(--fd-muted); }
22
+ /* A char field's code is one line: as tall as a text box, no line numbers. */
23
+ .fd-code-line { min-height: 0; }
24
+ .fd-code-line .cm-editor { min-height: 0; }
25
+ .fd-code-line .cm-content { padding-block: max(2px, calc(var(--fd-pad-y, 4px) - 1px)); }
26
+ ${CODE_COLOURS_CSS}
12
27
  `;
13
28
  export function installCodeStyles(doc) {
14
29
  if (doc.getElementById('fieldia-code-styles'))
@@ -1 +1 @@
1
- {"version":3,"file":"styles.mjs","sourceRoot":"","sources":["../../../../../libs/code/src/lib/styles.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;CAUvB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,GAAa;IAC7C,IAAI,GAAG,CAAC,cAAc,CAAC,qBAAqB,CAAC;QAAE,OAAO;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,qBAAqB,CAAC;IACjC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"styles.mjs","sourceRoot":"","sources":["../../../../../libs/code/src/lib/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,uGAAuG;AACvG,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuBtB,gBAAgB;CACjB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,GAAa;IAC7C,IAAI,GAAG,CAAC,cAAc,CAAC,qBAAqB,CAAC;QAAE,OAAO;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,qBAAqB,CAAC;IACjC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}