@nerd-bible/wordgard 0.5.3-beta7 → 0.6.2-beta10

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,249 @@
1
+ import { Plot } from 'wordgard/doc';
2
+ import { GardState } from 'wordgard/state';
3
+ import { StreamParser } from '@codemirror/streamparser';
4
+
5
+ /**
6
+ Object type used to associate a parser with a language name and
7
+ optional set of aliases.
8
+ */
9
+ declare class Language {
10
+ /**
11
+ The name of this language.
12
+ */
13
+ readonly name: string;
14
+ /**
15
+ Alternative names for the mode (lowercased, includes `this.name`).
16
+ */
17
+ readonly alias: readonly string[];
18
+ /**
19
+ The parser that highlights this language.
20
+ */
21
+ readonly parser: StreamParser<unknown>;
22
+ private constructor();
23
+ /**
24
+ Create a language object.
25
+ */
26
+ static of(spec: {
27
+ /**
28
+ The language's name.
29
+ */
30
+ name: string;
31
+ /**
32
+ An optional array of alternative names.
33
+ */
34
+ alias?: readonly string[];
35
+ /**
36
+ The parser to use for this language.
37
+ */
38
+ parser: StreamParser<unknown>;
39
+ }): Language;
40
+ }
41
+ /**
42
+ @hidden
43
+ */
44
+ declare const C: Language;
45
+ /**
46
+ @hidden
47
+ */
48
+ declare const Cpp: Language;
49
+ /**
50
+ @hidden
51
+ */
52
+ declare const Csharp: Language;
53
+ /**
54
+ @hidden
55
+ */
56
+ declare const Dart: Language;
57
+ /**
58
+ @hidden
59
+ */
60
+ declare const Java: Language;
61
+ /**
62
+ @hidden
63
+ */
64
+ declare const Kotlin: Language;
65
+ /**
66
+ @hidden
67
+ */
68
+ declare const ObjectiveC: Language;
69
+ /**
70
+ @hidden
71
+ */
72
+ declare const Scala: Language;
73
+ /**
74
+ @hidden
75
+ */
76
+ declare const CSS: Language;
77
+ /**
78
+ @hidden
79
+ */
80
+ declare const Less: Language;
81
+ /**
82
+ @hidden
83
+ */
84
+ declare const Go: Language;
85
+ /**
86
+ @hidden
87
+ */
88
+ declare const HTML: Language;
89
+ /**
90
+ @hidden
91
+ */
92
+ declare const XML: Language;
93
+ /**
94
+ @hidden
95
+ */
96
+ declare const JavaScript: Language;
97
+ /**
98
+ @hidden
99
+ */
100
+ declare const TypeScript: Language;
101
+ /**
102
+ @hidden
103
+ */
104
+ declare const JSON: Language;
105
+ /**
106
+ @hidden
107
+ */
108
+ declare const Jinja2: Language;
109
+ /**
110
+ @hidden
111
+ */
112
+ declare const SQL: Language;
113
+ /**
114
+ @hidden
115
+ */
116
+ declare const MSSQL: Language;
117
+ /**
118
+ @hidden
119
+ */
120
+ declare const MySQL: Language;
121
+ /**
122
+ @hidden
123
+ */
124
+ declare const PostgreSQL: Language;
125
+ /**
126
+ @hidden
127
+ */
128
+ declare const SQLite: Language;
129
+ /**
130
+ @hidden
131
+ */
132
+ declare const Python: Language;
133
+ /**
134
+ @hidden
135
+ */
136
+ declare const Rust: Language;
137
+ /**
138
+ @hidden
139
+ */
140
+ declare const Sass: Language;
141
+ /**
142
+ @hidden
143
+ */
144
+ declare const WebAssembly: Language;
145
+ /**
146
+ @hidden
147
+ */
148
+ declare const YAML: Language;
149
+ /**
150
+ @hidden
151
+ */
152
+ declare const Cobol: Language;
153
+ /**
154
+ @hidden
155
+ */
156
+ declare const Clojure: Language;
157
+ /**
158
+ @hidden
159
+ */
160
+ declare const CommonLisp: Language;
161
+ /**
162
+ @hidden
163
+ */
164
+ declare const Elm: Language;
165
+ /**
166
+ @hidden
167
+ */
168
+ declare const Erlang: Language;
169
+ /**
170
+ @hidden
171
+ */
172
+ declare const Haskell: Language;
173
+ /**
174
+ @hidden
175
+ */
176
+ declare const Julia: Language;
177
+ /**
178
+ @hidden
179
+ */
180
+ declare const Lua: Language;
181
+ /**
182
+ @hidden
183
+ */
184
+ declare const OCaml: Language;
185
+ /**
186
+ @hidden
187
+ */
188
+ declare const FSharp: Language;
189
+ /**
190
+ @hidden
191
+ */
192
+ declare const SML: Language;
193
+ /**
194
+ @hidden
195
+ */
196
+ declare const Perl: Language;
197
+ /**
198
+ @hidden
199
+ */
200
+ declare const R: Language;
201
+ /**
202
+ @hidden
203
+ */
204
+ declare const Ruby: Language;
205
+ /**
206
+ @hidden
207
+ */
208
+ declare const Scheme: Language;
209
+ /**
210
+ @hidden
211
+ */
212
+ declare const Shell: Language;
213
+ /**
214
+ @hidden
215
+ */
216
+ declare const Swift: Language;
217
+ /**
218
+ @hidden
219
+ */
220
+ declare const LaTeX: Language;
221
+ /**
222
+ An array of common languages. Contains `C`, `CSS`, `Cpp`, `HTML`,
223
+ `Java`, `JavaScript`, `JSON`, `Python`, `Ruby`, `Rust`,
224
+ `TypeScript`, and `XML`.
225
+ */
226
+ declare const baseLanguages: readonly Language[];
227
+
228
+ /**
229
+ Returns an extension that highlights {@link CodeBlock code
230
+ blocks}. Will add {@link codeBlockLanguage.options options} for
231
+ the block language menu for the provided languages.
232
+ */
233
+ declare function highlightCode(options?: {
234
+ /**
235
+ A set of languages to use for highlighting. A given language
236
+ will be used if the block's {@link CodeBlockLanguage} mark
237
+ matches its name or one of it aliases.
238
+ */
239
+ languages?: readonly Language[];
240
+ /**
241
+ An optional function to override the way a language is
242
+ determined for a block. Can be used to provide a default
243
+ highlighting language, language detection, or more advanced
244
+ language name matching.
245
+ */
246
+ getLanguage?: (block: Plot) => Language | null;
247
+ }): GardState.Extension;
248
+
249
+ export { C, CSS, Clojure, Cobol, CommonLisp, Cpp, Csharp, Dart, Elm, Erlang, FSharp, Go, HTML, Haskell, JSON, Java, JavaScript, Jinja2, Julia, Kotlin, LaTeX, Language, Less, Lua, MSSQL, MySQL, OCaml, ObjectiveC, Perl, PostgreSQL, Python, R, Ruby, Rust, SML, SQL, SQLite, Sass, Scala, Scheme, Shell, Swift, TypeScript, WebAssembly, XML, YAML, baseLanguages, highlightCode };
@@ -0,0 +1,264 @@
1
+ import { Leaf } from 'wordgard/doc';
2
+ import { CodeBlock, CodeBlockLanguage, LineBreak } from 'wordgard/types';
3
+ import { Wordgard, Decoration, decoratePlots } from 'wordgard/editor';
4
+ import { codeBlockLanguage } from 'wordgard/schema';
5
+ import { StringStream } from '@codemirror/streamparser';
6
+ import { c, cpp, csharp, dart, java, kotlin, objectiveC, scala } from '@codemirror/legacy-modes/mode/clike';
7
+ import { css, less } from '@codemirror/legacy-modes/mode/css';
8
+ import { go } from '@codemirror/legacy-modes/mode/go';
9
+ import { html, xml } from '@codemirror/legacy-modes/mode/xml';
10
+ import { json, javascript, typescript } from '@codemirror/legacy-modes/mode/javascript';
11
+ import { jinja2 } from '@codemirror/legacy-modes/mode/jinja2';
12
+ import { msSQL, mySQL, pgSQL, standardSQL, sqlite } from '@codemirror/legacy-modes/mode/sql';
13
+ import { python } from '@codemirror/legacy-modes/mode/python';
14
+ import { rust } from '@codemirror/legacy-modes/mode/rust';
15
+ import { sass } from '@codemirror/legacy-modes/mode/sass';
16
+ import { wast } from '@codemirror/legacy-modes/mode/wast';
17
+ import { yaml } from '@codemirror/legacy-modes/mode/yaml';
18
+ import { cobol } from '@codemirror/legacy-modes/mode/cobol';
19
+ import { clojure } from '@codemirror/legacy-modes/mode/clojure';
20
+ import { commonLisp } from '@codemirror/legacy-modes/mode/commonlisp';
21
+ import { elm } from '@codemirror/legacy-modes/mode/elm';
22
+ import { erlang } from '@codemirror/legacy-modes/mode/erlang';
23
+ import { haskell } from '@codemirror/legacy-modes/mode/haskell';
24
+ import { julia } from '@codemirror/legacy-modes/mode/julia';
25
+ import { lua } from '@codemirror/legacy-modes/mode/lua';
26
+ import { fSharp, oCaml, sml } from '@codemirror/legacy-modes/mode/mllike';
27
+ import { perl } from '@codemirror/legacy-modes/mode/perl';
28
+ import { r } from '@codemirror/legacy-modes/mode/r';
29
+ import { ruby } from '@codemirror/legacy-modes/mode/ruby';
30
+ import { scheme } from '@codemirror/legacy-modes/mode/scheme';
31
+ import { shell } from '@codemirror/legacy-modes/mode/shell';
32
+ import { swift } from '@codemirror/legacy-modes/mode/swift';
33
+ import { stex } from '@codemirror/legacy-modes/mode/stex';
34
+
35
+ const theme = /*@__PURE__*/Wordgard.styles({
36
+ ".wg-t-keyword": { color: "#708" },
37
+ ".wg-t-atom, .wg-t-bool, .wg-t-label": { color: "#219" },
38
+ ".wg-t-literal, .wg-t-number": { color: "#164" },
39
+ ".wg-t-string": { color: "#a11" },
40
+ ".wg-t-name, .wg-t-prop": {},
41
+ ".wg-t-local": { color: "#30a" },
42
+ ".wg-t-def": { color: "#00f" },
43
+ ".wg-t-type, .wg-t-namespace, .wg-t-class": { color: "#085" },
44
+ ".wg-t-macro, .wg-t-special": { color: "#256" },
45
+ ".wg-t-comment": { color: "#940" },
46
+ ".wg-t-error": { color: "#f00" }
47
+ });
48
+ const tokenMap = /*@__PURE__*/(() => new Map)();
49
+ function tokenClass(token) {
50
+ let cls = tokenMap.get(token);
51
+ if (cls === undefined)
52
+ tokenMap.set(token, cls = getTokenClass(token));
53
+ return cls;
54
+ }
55
+ function getTokenClass(token) {
56
+ if (/\.local/.test(token))
57
+ return "local";
58
+ if (token == "variable-2" || token == "variableName.special")
59
+ return "special";
60
+ if (token == "def" || token == "variableName.definition")
61
+ return "def";
62
+ if (/^keyword/.test(token))
63
+ return "keyword";
64
+ if (/^string/.test(token))
65
+ return "string";
66
+ if (/^(variable|name)/.test(token))
67
+ return "name";
68
+ if (/^(type|tag)/.test(token))
69
+ return "type";
70
+ if (/^(attribute|prop)/.test(token))
71
+ return "prop";
72
+ if (/^type/.test(token))
73
+ return "type";
74
+ if (/^(error|invalid)/.test(token))
75
+ return "error";
76
+ if (/^string/.test(token))
77
+ return "string";
78
+ if (/^number/.test(token))
79
+ return "number";
80
+ if (/^bool/.test(token))
81
+ return "bool";
82
+ if (/^atom/.test(token))
83
+ return "atom";
84
+ if (/^(literal|regexp|color)/.test(token))
85
+ return "literal";
86
+ if (/^label/.test(token))
87
+ return "label";
88
+ if (/^class/.test(token))
89
+ return "class";
90
+ if (/^namespace/.test(token))
91
+ return "namespace";
92
+ if (/^label/.test(token))
93
+ return "label";
94
+ if (/^macro/.test(token))
95
+ return "macro";
96
+ if (/comment/i.test(token))
97
+ return "comment";
98
+ return null;
99
+ }
100
+ const tokenDeco = /*@__PURE__*/(() => ({
101
+ keyword: Decoration.Range.attribute("class", "wg-t-keyword"),
102
+ atom: Decoration.Range.attribute("class", "wg-t-atom"),
103
+ bool: Decoration.Range.attribute("class", "wg-t-bool"),
104
+ label: Decoration.Range.attribute("class", "wg-t-label"),
105
+ literal: Decoration.Range.attribute("class", "wg-t-literal"),
106
+ number: Decoration.Range.attribute("class", "wg-t-number"),
107
+ string: Decoration.Range.attribute("class", "wg-t-string"),
108
+ name: Decoration.Range.attribute("class", "wg-t-name"),
109
+ prop: Decoration.Range.attribute("class", "wg-t-prop"),
110
+ local: Decoration.Range.attribute("class", "wg-t-local"),
111
+ def: Decoration.Range.attribute("class", "wg-t-def"),
112
+ type: Decoration.Range.attribute("class", "wg-t-type"),
113
+ namespace: Decoration.Range.attribute("class", "wg-t-namespace"),
114
+ class: Decoration.Range.attribute("class", "wg-t-class"),
115
+ macro: Decoration.Range.attribute("class", "wg-t-macro"),
116
+ special: Decoration.Range.attribute("class", "wg-t-special"),
117
+ comment: Decoration.Range.attribute("class", "wg-t-comment"),
118
+ error: Decoration.Range.attribute("class", "wg-t-error")
119
+ }))();
120
+ function blockText(plot) {
121
+ let text = "";
122
+ for (let ch of plot.content) {
123
+ if (ch.is(Leaf.Text))
124
+ text += ch.param;
125
+ else if (ch.type == LineBreak.type)
126
+ text += "\n";
127
+ else if (ch.isLeaf)
128
+ text += " ";
129
+ else
130
+ return null;
131
+ }
132
+ return text;
133
+ }
134
+ function readToken(token, stream, state) {
135
+ stream.start = stream.pos;
136
+ for (let i = 0; i < 10; i++) {
137
+ let result = token(stream, state);
138
+ if (stream.pos > stream.start)
139
+ return result;
140
+ }
141
+ stream.skipToEnd();
142
+ return "";
143
+ }
144
+ const maxHighlight = 10000;
145
+ function highlightBlock(text, language, add) {
146
+ let { parser } = language;
147
+ let pos = 0, state = parser.startState ? parser.startState(2) : true;
148
+ hl: for (let line of text.split("\n")) {
149
+ let stream = new StringStream(line, 4, 2);
150
+ if (stream.eol()) {
151
+ parser.blankLine?.(state, 2);
152
+ }
153
+ else {
154
+ while (!stream.eol()) {
155
+ let token = readToken(parser.token, stream, state);
156
+ if (token) {
157
+ let cls = tokenClass(token);
158
+ if (cls)
159
+ add(tokenDeco[cls], pos + stream.start, pos + stream.pos);
160
+ }
161
+ if (pos + stream.pos > maxHighlight)
162
+ break hl;
163
+ }
164
+ }
165
+ pos += line.length + 1;
166
+ }
167
+ }
168
+ function highlightCode(options = {}) {
169
+ let map = new Map;
170
+ let langOptions = [];
171
+ for (let lang of options.languages || []) {
172
+ langOptions.push(lang.name);
173
+ for (let alias of lang.alias)
174
+ map.set(alias, lang);
175
+ }
176
+ return [
177
+ theme,
178
+ codeBlockLanguage.options.of(langOptions),
179
+ decoratePlots({
180
+ type: CodeBlock,
181
+ ranges: (block, add) => {
182
+ let lang = options.getLanguage ? options.getLanguage(block) : undefined;
183
+ if (!lang) {
184
+ let langName = block.mark(CodeBlockLanguage);
185
+ if (langName)
186
+ lang = map.get(langName);
187
+ }
188
+ if (lang) {
189
+ let text = blockText(block);
190
+ if (text)
191
+ highlightBlock(text, lang, add);
192
+ }
193
+ }
194
+ })
195
+ ];
196
+ }
197
+
198
+ class Language {
199
+ name;
200
+ alias;
201
+ parser;
202
+ constructor(
203
+ name,
204
+ alias,
205
+ parser) {
206
+ this.name = name;
207
+ this.alias = alias;
208
+ this.parser = parser;
209
+ }
210
+ static of(spec) {
211
+ return new Language(spec.name, (spec.alias || []).concat(spec.name).map(s => s.toLowerCase()), spec.parser);
212
+ }
213
+ }
214
+ function lang(name, parser, alias) {
215
+ return Language.of({ name, alias, parser });
216
+ }
217
+ const C = /*@__PURE__*/lang("C", c);
218
+ const Cpp = /*@__PURE__*/lang("C++", cpp, ["cpp"]);
219
+ const Csharp = /*@__PURE__*/lang("C#", csharp, ["csharp"]);
220
+ const Dart = /*@__PURE__*/lang("Dart", dart);
221
+ const Java = /*@__PURE__*/lang("Java", java);
222
+ const Kotlin = /*@__PURE__*/lang("Kotlin", kotlin);
223
+ const ObjectiveC = /*@__PURE__*/lang("ObjectiveC", objectiveC, ["objective-c", "objc"]);
224
+ const Scala = /*@__PURE__*/lang("Scala", scala);
225
+ const CSS = /*@__PURE__*/lang("CSS", css);
226
+ const Less = /*@__PURE__*/lang("Less", less);
227
+ const Go = /*@__PURE__*/lang("Go", go);
228
+ const HTML = /*@__PURE__*/lang("HTML", html, ["xhtml"]);
229
+ const XML = /*@__PURE__*/lang("XML", xml, ["rss", "wsdl", "xsd"]);
230
+ const JavaScript = /*@__PURE__*/lang("JavaScript", javascript, ["ecmascript", "js", "node"]);
231
+ const TypeScript = /*@__PURE__*/lang("TypeScript", typescript, ["ts"]);
232
+ const JSON = /*@__PURE__*/lang("JSON", json, ["json5"]);
233
+ const Jinja2 = /*@__PURE__*/lang("Jinja2", jinja2);
234
+ const SQL = /*@__PURE__*/lang("SQL", standardSQL);
235
+ const MSSQL = /*@__PURE__*/lang("MSSQL", msSQL);
236
+ const MySQL = /*@__PURE__*/lang("MySQL", mySQL);
237
+ const PostgreSQL = /*@__PURE__*/lang("PostgreSQL", pgSQL, ["postgres", "pgsql"]);
238
+ const SQLite = /*@__PURE__*/lang("SQLite", sqlite);
239
+ const Python = /*@__PURE__*/lang("Python", python);
240
+ const Rust = /*@__PURE__*/lang("Rust", rust);
241
+ const Sass = /*@__PURE__*/lang("Sass", sass);
242
+ const WebAssembly = /*@__PURE__*/lang("WebAssembly", wast, ["wast"]);
243
+ const YAML = /*@__PURE__*/lang("YAML", yaml, ["yml"]);
244
+ const Cobol = /*@__PURE__*/lang("Cobol", cobol);
245
+ const Clojure = /*@__PURE__*/lang("Clojure", clojure, ["clojurescript"]);
246
+ const CommonLisp = /*@__PURE__*/lang("CommonLisp", commonLisp, ["lisp", "cl"]);
247
+ const Elm = /*@__PURE__*/lang("Elm", elm);
248
+ const Erlang = /*@__PURE__*/lang("Erlang", erlang);
249
+ const Haskell = /*@__PURE__*/lang("Haskell", haskell);
250
+ const Julia = /*@__PURE__*/lang("Julia", julia);
251
+ const Lua = /*@__PURE__*/lang("Lua", lua);
252
+ const OCaml = /*@__PURE__*/lang("OCaml", oCaml);
253
+ const FSharp = /*@__PURE__*/lang("F#", fSharp, ["fsharp"]);
254
+ const SML = /*@__PURE__*/lang("SML", sml);
255
+ const Perl = /*@__PURE__*/lang("Perl", perl);
256
+ const R = /*@__PURE__*/lang("R", r);
257
+ const Ruby = /*@__PURE__*/lang("Ruby", ruby, ["jruby", "rb"]);
258
+ const Scheme = /*@__PURE__*/lang("Scheme", scheme);
259
+ const Shell = /*@__PURE__*/lang("Shell", shell, ["bash", "sh", "zsh"]);
260
+ const Swift = /*@__PURE__*/lang("Swift", swift);
261
+ const LaTeX = /*@__PURE__*/lang("LaTeX", stex, ["stex", "tex"]);
262
+ const baseLanguages = [C, CSS, Cpp, HTML, Java, JavaScript, JSON, Python, Ruby, Rust, TypeScript, XML];
263
+
264
+ export { C, CSS, Clojure, Cobol, CommonLisp, Cpp, Csharp, Dart, Elm, Erlang, FSharp, Go, HTML, Haskell, JSON, Java, JavaScript, Jinja2, Julia, Kotlin, LaTeX, Language, Less, Lua, MSSQL, MySQL, OCaml, ObjectiveC, Perl, PostgreSQL, Python, R, Ruby, Rust, SML, SQL, SQLite, Sass, Scala, Scheme, Shell, Swift, TypeScript, WebAssembly, XML, YAML, baseLanguages, highlightCode };
package/dist/history.js CHANGED
@@ -4,6 +4,7 @@ import { Command, undo as undo$1, redo as redo$1, Menu } from 'wordgard/command'
4
4
  import { phrases } from 'wordgard/phrases';
5
5
 
6
6
  const fromHistory = /*@__PURE__*/Transaction.Effect.define({
7
+ name: "fromHistory",
7
8
  map(value, change) {
8
9
  return {
9
10
  side: value.side,
@@ -13,6 +14,7 @@ const fromHistory = /*@__PURE__*/Transaction.Effect.define({
13
14
  }
14
15
  });
15
16
  const historyConfig = /*@__PURE__*/GardState.Facet.define({
17
+ name: "historyConfig",
16
18
  combine(configs) {
17
19
  return GardState.Facet.combineConfig(configs, {
18
20
  minDepth: 100,
@@ -26,6 +28,7 @@ const historyConfig = /*@__PURE__*/GardState.Facet.define({
26
28
  }
27
29
  });
28
30
  const historyField_ = /*@__PURE__*/GardState.Field.define({
31
+ name: "history",
29
32
  create() {
30
33
  return new HistoryState(null, null);
31
34
  },
@@ -88,8 +91,10 @@ function history(config = {}) {
88
91
  }
89
92
  ;history = /*@__PURE__*/(function (history) {
90
93
  history.field = historyField_;
91
- history.isolate = Transaction.Annotation.define();
92
- history.invertedEffects = GardState.Facet.define();
94
+ history.isolate = Transaction.Annotation.define("historyIsolate");
95
+ history.invertedEffects = GardState.Facet.define({
96
+ name: "invertedEffects"
97
+ });
93
98
  ;return history})(history);
94
99
  const undo = ({ state }) => {
95
100
  let historyState = state.field(historyField_, false);
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * as collab from "wordgard/collab"
2
2
  export * as command from "wordgard/command"
3
3
  export * as doc from "wordgard/doc"
4
4
  export * as editor from "wordgard/editor"
5
+ export * as highlightCode from "wordgard/highlight-code"
5
6
  export * as history from "wordgard/history"
6
7
  export * as phrases from "wordgard/phrases"
7
8
  export * as schema from "wordgard/schema"
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ export * as collab from "wordgard/collab"
2
2
  export * as command from "wordgard/command"
3
3
  export * as doc from "wordgard/doc"
4
4
  export * as editor from "wordgard/editor"
5
+ export * as highlightCode from "wordgard/highlight-code"
5
6
  export * as history from "wordgard/history"
6
7
  export * as phrases from "wordgard/phrases"
7
8
  export * as schema from "wordgard/schema"
package/dist/phrases.d.ts CHANGED
@@ -11,6 +11,7 @@ declare class PhraseSet<Tags extends string> {
11
11
  [tag in Tags]: string;
12
12
  };
13
13
  private constructor();
14
+ private refs;
14
15
  /**
15
16
  Look up a translation for phrase with the given tag.
16
17
 
@@ -72,11 +73,11 @@ declare namespace PhraseSet {
72
73
  /**
73
74
  The phrase set for the core package and basic menu items.
74
75
  */
75
- declare const phrases: PhraseSet<"dialog_close" | "overflow_more" | "block_style" | "toggle_strong" | "toggle_em" | "toggle_code" | "toggle_underline" | "toggle_strikethrough" | "toggle_super" | "toggle_sub" | "link_target" | "create_link" | "text_color" | "background_color" | "undo" | "redo" | "paragraph" | "code_block" | "heading_1" | "heading_2" | "heading_3" | "toggle_bullet_list" | "toggle_ordered_list" | "toggle_quote" | "alignment" | "align_start" | "align_end" | "align_center" | "text_dir" | "text_dir_ltr" | "text_dir_rtl" | "text_dir_auto">;
76
+ declare const phrases: PhraseSet<"dialog_close" | "group_block" | "group_inline" | "group_history" | "key_bindings" | "show_keys" | "overflow_more" | "block_style" | "toggle_strong" | "toggle_em" | "toggle_code" | "toggle_underline" | "toggle_strikethrough" | "toggle_super" | "toggle_sub" | "link_target" | "create_link" | "insert_break" | "text_color" | "background_color" | "undo" | "redo" | "paragraph" | "code_block" | "code_block_language" | "heading_1" | "heading_2" | "heading_3" | "heading_4" | "heading_5" | "heading_6" | "toggle_bullet_list" | "toggle_ordered_list" | "toggle_quote" | "alignment" | "align_start" | "align_end" | "align_left" | "align_right" | "align_center" | "text_dir" | "text_dir_ltr" | "text_dir_rtl" | "text_dir_auto">;
76
77
  /**
77
78
  Phrases used by the {@link schema.image.button image dialog}.
78
79
  */
79
- declare const imagePhrases: PhraseSet<"inline" | "auto" | "width" | "cancel" | "figure" | "update" | "insert" | "insert_image" | "update_image" | "figure_center" | "figure_end" | "captioned" | "image_style" | "uploading" | "upload_failed" | "upload_image" | "image_source" | "alt_text" | "describe_image">;
80
+ declare const imagePhrases: PhraseSet<"inline" | "auto" | "width" | "cancel" | "figure" | "update" | "insert" | "group_image" | "insert_image" | "update_image" | "figure_center" | "figure_end" | "captioned" | "image_style" | "uploading" | "upload_failed" | "resize_up" | "resize_down" | "upload_image" | "image_source" | "alt_text" | "describe_image">;
80
81
  /**
81
82
  Phrases (mostly color names) used by the {@link schema.ColorPicker
82
83
  color picker}.
package/dist/phrases.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { GardState } from 'wordgard/state';
2
2
 
3
3
  const phraseOverride = /*@__PURE__*/GardState.Facet.define({
4
+ name: "phraseOverride",
4
5
  combine(records) {
5
6
  let map = new Map();
6
7
  for (let i = records.length - 1; i >= 0; i--) {
@@ -16,6 +17,7 @@ class PhraseSet {
16
17
  constructor(phrases) {
17
18
  this.phrases = phrases;
18
19
  }
20
+ refs = new Map;
19
21
  get(state, tag, ...insert) {
20
22
  let override = state.facet(phraseOverride).get(this);
21
23
  let phrase = (override && override[tag]) ?? this.phrases[tag];
@@ -29,7 +31,10 @@ class PhraseSet {
29
31
  return phrase;
30
32
  }
31
33
  ref(tag) {
32
- return (state, ...insert) => this.get(state, tag, ...insert);
34
+ let found = this.refs.get(tag);
35
+ if (!found)
36
+ this.refs.set(tag, found = (state, ...insert) => this.get(state, tag, ...insert));
37
+ return found;
33
38
  }
34
39
  translate(phrases) {
35
40
  return phraseOverride.of({ set: this, phrases });
@@ -47,6 +52,11 @@ class PhraseSet {
47
52
 
48
53
  const phrases = /*@__PURE__*/PhraseSet.define({
49
54
  dialog_close: "close",
55
+ group_block: "Block-level editing",
56
+ group_inline: "Inline editing",
57
+ group_history: "Undo history",
58
+ key_bindings: "Keyboard Shortcuts",
59
+ show_keys: "Show keyboard shortcuts",
50
60
  overflow_more: "More",
51
61
  block_style: "Block style",
52
62
  toggle_strong: "Toggle strong emphasis",
@@ -58,21 +68,28 @@ const phrases = /*@__PURE__*/PhraseSet.define({
58
68
  toggle_sub: "Toggle subscript",
59
69
  link_target: "Link target",
60
70
  create_link: "Create link",
71
+ insert_break: "Insert line break",
61
72
  text_color: "Text color",
62
73
  background_color: "Background color",
63
74
  undo: "Undo",
64
75
  redo: "Redo",
65
76
  paragraph: "Paragraph",
66
77
  code_block: "Code block",
78
+ code_block_language: "Select code block language",
67
79
  heading_1: "Heading 1",
68
80
  heading_2: "Heading 2",
69
81
  heading_3: "Heading 3",
82
+ heading_4: "Heading 4",
83
+ heading_5: "Heading 5",
84
+ heading_6: "Heading 6",
70
85
  toggle_bullet_list: "Toggle bullet list",
71
86
  toggle_ordered_list: "Toggle ordered list",
72
87
  toggle_quote: "Toggle blockquote",
73
88
  alignment: "Alignment",
74
89
  align_start: "Align text to block start",
75
90
  align_end: "Align text to block end",
91
+ align_left: "Align text to the left",
92
+ align_right: "Align text to the right",
76
93
  align_center: "Center text",
77
94
  text_dir: "Text direction",
78
95
  text_dir_ltr: "Left-to-right text",
@@ -80,6 +97,7 @@ const phrases = /*@__PURE__*/PhraseSet.define({
80
97
  text_dir_auto: "Automatic text direction",
81
98
  });
82
99
  const imagePhrases = /*@__PURE__*/PhraseSet.define({
100
+ group_image: "Image manipulation",
83
101
  insert_image: "Insert image",
84
102
  update_image: "Update image",
85
103
  update: "Update",
@@ -94,6 +112,8 @@ const imagePhrases = /*@__PURE__*/PhraseSet.define({
94
112
  uploading: "Uploading...",
95
113
  upload_failed: "Image upload failed",
96
114
  width: "Width in pixels",
115
+ resize_up: "Make image larger",
116
+ resize_down: "Make image smaller",
97
117
  upload_image: "Upload an image",
98
118
  image_source: "Image source",
99
119
  alt_text: "Alternative text",