@vscode/markdown-editor 0.0.2-7 → 0.0.2-71

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 (76) hide show
  1. package/README.md +26 -0
  2. package/dist/commands.d.ts +65 -0
  3. package/dist/commands.js +159 -0
  4. package/dist/commands.js.map +1 -0
  5. package/dist/config-BGeaJqWk.js +286 -0
  6. package/dist/config-BGeaJqWk.js.map +1 -0
  7. package/dist/config.d.ts +10 -0
  8. package/dist/config.js +6 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/index.d.ts +1490 -116
  11. package/dist/index.js +6170 -2006
  12. package/dist/index.js.map +1 -1
  13. package/dist/markdown-editor.css +1 -0
  14. package/dist/stringEdit-CVDbCUBY.js +215 -0
  15. package/dist/stringEdit-CVDbCUBY.js.map +1 -0
  16. package/dist/web-editors.d.ts +282 -0
  17. package/dist/web-editors.js +7240 -0
  18. package/dist/web-editors.js.map +1 -0
  19. package/package.json +60 -17
  20. package/src/contrib/comments/commentInput.css +150 -0
  21. package/src/contrib/comments/comments.css +129 -0
  22. package/src/contrib/commentsVscode/vscodeCommentWidgetV2.css +171 -0
  23. package/src/contrib/find/find.css +347 -0
  24. package/src/view/editor.css +555 -25
  25. package/src/view/themes/default.css +13 -4
  26. package/src/view/themes/github.css +16 -13
  27. package/src/view/themes/vscode-default.css +397 -0
  28. package/src/view/themes/vscode-github.css +393 -0
  29. package/dist/_observables/assert.d.ts +0 -2
  30. package/dist/_observables/deps.d.ts +0 -28
  31. package/dist/_observables/disposables.d.ts +0 -19
  32. package/dist/_observables/equals.d.ts +0 -32
  33. package/dist/_observables/index.d.ts +0 -2
  34. package/dist/_observables/observableInternal/base.d.ts +0 -172
  35. package/dist/_observables/observableInternal/changeTracker.d.ts +0 -44
  36. package/dist/_observables/observableInternal/commonFacade/cancellation.d.ts +0 -24
  37. package/dist/_observables/observableInternal/commonFacade/deps.d.ts +0 -24
  38. package/dist/_observables/observableInternal/debugLocation.d.ts +0 -21
  39. package/dist/_observables/observableInternal/debugName.d.ts +0 -33
  40. package/dist/_observables/observableInternal/experimental/deferUnobserve.d.ts +0 -16
  41. package/dist/_observables/observableInternal/experimental/reducer.d.ts +0 -37
  42. package/dist/_observables/observableInternal/experimental/utils.d.ts +0 -15
  43. package/dist/_observables/observableInternal/index.d.ts +0 -25
  44. package/dist/_observables/observableInternal/logging/consoleObservableLogger.d.ts +0 -40
  45. package/dist/_observables/observableInternal/logging/debugGetDependencyGraph.d.ts +0 -4
  46. package/dist/_observables/observableInternal/logging/debugger/debuggerRpc.d.ts +0 -4
  47. package/dist/_observables/observableInternal/logging/debugger/devToolsLogger.d.ts +0 -43
  48. package/dist/_observables/observableInternal/logging/debugger/rpc.d.ts +0 -41
  49. package/dist/_observables/observableInternal/logging/debugger/utils.d.ts +0 -13
  50. package/dist/_observables/observableInternal/logging/logging.d.ts +0 -30
  51. package/dist/_observables/observableInternal/map.d.ts +0 -18
  52. package/dist/_observables/observableInternal/observables/baseObservable.d.ts +0 -58
  53. package/dist/_observables/observableInternal/observables/constObservable.d.ts +0 -5
  54. package/dist/_observables/observableInternal/observables/derived.d.ts +0 -46
  55. package/dist/_observables/observableInternal/observables/derivedImpl.d.ts +0 -83
  56. package/dist/_observables/observableInternal/observables/lazyObservableValue.d.ts +0 -27
  57. package/dist/_observables/observableInternal/observables/observableFromEvent.d.ts +0 -37
  58. package/dist/_observables/observableInternal/observables/observableSignal.d.ts +0 -11
  59. package/dist/_observables/observableInternal/observables/observableSignalFromEvent.d.ts +0 -5
  60. package/dist/_observables/observableInternal/observables/observableValue.d.ts +0 -37
  61. package/dist/_observables/observableInternal/observables/observableValueOpts.d.ts +0 -8
  62. package/dist/_observables/observableInternal/reactions/autorun.d.ts +0 -56
  63. package/dist/_observables/observableInternal/reactions/autorunImpl.d.ts +0 -53
  64. package/dist/_observables/observableInternal/set.d.ts +0 -17
  65. package/dist/_observables/observableInternal/transaction.d.ts +0 -27
  66. package/dist/_observables/observableInternal/utils/promise.d.ts +0 -75
  67. package/dist/_observables/observableInternal/utils/runOnChange.d.ts +0 -7
  68. package/dist/_observables/observableInternal/utils/utils.d.ts +0 -43
  69. package/dist/_observables/observableInternal/utils/utilsCancellation.d.ts +0 -10
  70. package/dist/_observables/observableInternal/utils/valueWithChangeEvent.d.ts +0 -10
  71. package/dist/_observables/utils.d.ts +0 -15
  72. package/dist/observables.d.ts +0 -4
  73. package/dist/observables.js +0 -439
  74. package/dist/observables.js.map +0 -1
  75. package/dist/runOnChange-C00UIwqQ.js +0 -1538
  76. package/dist/runOnChange-C00UIwqQ.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # Markdown editor
2
+
3
+ `@vscode/markdown-editor` is an experimental, browser-based hybrid Markdown
4
+ editor. It keeps Markdown source as the canonical document while presenting
5
+ inactive blocks in rendered form and active blocks in editable source form.
6
+
7
+ Start with the [current implementation specification](./docs/specification.md).
8
+ It explains the architecture, runtime data flow, public integration surface,
9
+ extension points, the VS Code custom text editor adapter, tests, and current
10
+ limitations.
11
+
12
+ Other package documents:
13
+
14
+ - [Original design](./docs/design.md) - historical design intent.
15
+ - [Original implementation plan](./docs/plan.md) - historical roadmap; its
16
+ checkboxes do not describe current completion.
17
+ - [Engineering backlog](./docs/todo.md) - known issues and future work.
18
+
19
+ From this package directory:
20
+
21
+ ```sh
22
+ pnpm test
23
+ pnpm test:e2e
24
+ pnpm build
25
+ pnpm build:explorer
26
+ ```
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Canonical editor command catalog. Standalone keyboard handling and host
3
+ * integrations derive their command registration and default keybindings from
4
+ * this list.
5
+ */
6
+ export declare const commands: readonly EditorCommandDefinition[];
7
+
8
+ export declare type CursorKeyboardAction = 'left' | 'right' | 'up' | 'down' | 'wordLeft' | 'wordRight' | 'visualLineStart' | 'visualLineEnd' | 'logicalLineStart' | 'logicalLineEnd' | 'documentStart' | 'documentEnd';
9
+
10
+ export declare type EditKeyboardAction = 'deleteLeft' | 'deleteRight' | 'deleteWordLeft' | 'deleteWordRight' | 'deleteLineLeft' | 'deleteLineRight';
11
+
12
+ export declare interface EditorCommandDefinition {
13
+ readonly id: `markdown.editor.${string}`;
14
+ readonly title: string;
15
+ readonly action: EditorKeyboardAction;
16
+ readonly keybindings: readonly EditorCommandKeybinding[];
17
+ /**
18
+ * Local commands must execute synchronously in the webview instead of being
19
+ * forwarded through the VS Code keybinding service.
20
+ */
21
+ readonly routing?: 'host' | 'local';
22
+ }
23
+
24
+ export declare interface EditorCommandKeybinding {
25
+ readonly key: string;
26
+ readonly modifiers?: KeyboardModifiers;
27
+ readonly platforms?: readonly KeyboardPlatform[];
28
+ }
29
+
30
+ export declare type EditorKeyboardAction = {
31
+ readonly kind: 'cursor';
32
+ readonly command: CursorKeyboardAction;
33
+ readonly extend: boolean;
34
+ } | {
35
+ readonly kind: 'edit';
36
+ readonly command: EditKeyboardAction;
37
+ } | {
38
+ readonly kind: 'history';
39
+ readonly command: HistoryKeyboardAction;
40
+ } | {
41
+ readonly kind: 'tab';
42
+ readonly command: TabKeyboardAction;
43
+ } | {
44
+ readonly kind: 'toggleTabFocus';
45
+ } | {
46
+ readonly kind: 'selectAll';
47
+ } | {
48
+ readonly kind: 'enter';
49
+ readonly command: 'smartEnter' | 'insertParagraph' | 'insertHardLineBreak';
50
+ };
51
+
52
+ export declare type HistoryKeyboardAction = 'undo' | 'redo';
53
+
54
+ export declare interface KeyboardModifiers {
55
+ readonly shift?: boolean;
56
+ readonly alt?: boolean;
57
+ readonly ctrl?: boolean;
58
+ readonly meta?: boolean;
59
+ }
60
+
61
+ export declare type KeyboardPlatform = 'macos' | 'windows' | 'linux';
62
+
63
+ export declare type TabKeyboardAction = 'insert' | 'outdent';
64
+
65
+ export { }
@@ -0,0 +1,159 @@
1
+ const r = ["macos"], i = ["windows", "linux"], o = (n, u = !1) => ({
2
+ kind: "cursor",
3
+ command: n,
4
+ extend: u
5
+ }), d = (n) => ({ kind: "edit", command: n }), l = (n) => ({ kind: "history", command: n }), s = (n) => ({ kind: "tab", command: n }), c = (n) => ({
6
+ kind: "enter",
7
+ command: n
8
+ }), t = (n, u, a) => ({ key: n, modifiers: u, platforms: a }), e = (n, u, a, m, w = "host") => ({ id: n, title: u, action: a, keybindings: m, routing: w }), L = [
9
+ e("markdown.editor.cursorLeft", "Move Cursor Left", o("left"), [
10
+ t("b", { ctrl: !0 }, r),
11
+ t("ArrowLeft")
12
+ ]),
13
+ e("markdown.editor.cursorRight", "Move Cursor Right", o("right"), [
14
+ t("f", { ctrl: !0 }, r),
15
+ t("ArrowRight")
16
+ ]),
17
+ e("markdown.editor.cursorUp", "Move Cursor Up", o("up"), [
18
+ t("p", { ctrl: !0 }, r),
19
+ t("ArrowUp")
20
+ ]),
21
+ e("markdown.editor.cursorDown", "Move Cursor Down", o("down"), [
22
+ t("n", { ctrl: !0 }, r),
23
+ t("ArrowDown")
24
+ ]),
25
+ e("markdown.editor.cursorLeftSelect", "Select Left", o("left", !0), [
26
+ t("ArrowLeft", { shift: !0 })
27
+ ]),
28
+ e("markdown.editor.cursorRightSelect", "Select Right", o("right", !0), [
29
+ t("ArrowRight", { shift: !0 })
30
+ ]),
31
+ e("markdown.editor.cursorUpSelect", "Select Up", o("up", !0), [
32
+ t("ArrowUp", { shift: !0 })
33
+ ]),
34
+ e("markdown.editor.cursorDownSelect", "Select Down", o("down", !0), [
35
+ t("ArrowDown", { shift: !0 })
36
+ ]),
37
+ e("markdown.editor.cursorWordLeft", "Move Cursor Word Left", o("wordLeft"), [
38
+ t("ArrowLeft", { alt: !0 }, r),
39
+ t("ArrowLeft", { ctrl: !0 }, i)
40
+ ]),
41
+ e("markdown.editor.cursorWordRight", "Move Cursor Word Right", o("wordRight"), [
42
+ t("ArrowRight", { alt: !0 }, r),
43
+ t("ArrowRight", { ctrl: !0 }, i)
44
+ ]),
45
+ e("markdown.editor.cursorWordLeftSelect", "Select Word Left", o("wordLeft", !0), [
46
+ t("ArrowLeft", { alt: !0, shift: !0 }, r),
47
+ t("ArrowLeft", { ctrl: !0, shift: !0 }, i)
48
+ ]),
49
+ e("markdown.editor.cursorWordRightSelect", "Select Word Right", o("wordRight", !0), [
50
+ t("ArrowRight", { alt: !0, shift: !0 }, r),
51
+ t("ArrowRight", { ctrl: !0, shift: !0 }, i)
52
+ ]),
53
+ e("markdown.editor.cursorVisualLineStart", "Move Cursor to Visual Line Start", o("visualLineStart"), [
54
+ t("ArrowLeft", { meta: !0 }, r),
55
+ t("Home")
56
+ ]),
57
+ e("markdown.editor.cursorVisualLineEnd", "Move Cursor to Visual Line End", o("visualLineEnd"), [
58
+ t("ArrowRight", { meta: !0 }, r),
59
+ t("End")
60
+ ]),
61
+ e("markdown.editor.cursorVisualLineStartSelect", "Select to Visual Line Start", o("visualLineStart", !0), [
62
+ t("ArrowLeft", { meta: !0, shift: !0 }, r),
63
+ t("Home", { shift: !0 })
64
+ ]),
65
+ e("markdown.editor.cursorVisualLineEndSelect", "Select to Visual Line End", o("visualLineEnd", !0), [
66
+ t("ArrowRight", { meta: !0, shift: !0 }, r),
67
+ t("End", { shift: !0 })
68
+ ]),
69
+ e("markdown.editor.cursorLogicalLineStart", "Move Cursor to Logical Line Start", o("logicalLineStart"), [
70
+ t("a", { ctrl: !0 }, r)
71
+ ]),
72
+ e("markdown.editor.cursorLogicalLineEnd", "Move Cursor to Logical Line End", o("logicalLineEnd"), [
73
+ t("e", { ctrl: !0 }, r)
74
+ ]),
75
+ e("markdown.editor.cursorLogicalLineStartSelect", "Select to Logical Line Start", o("logicalLineStart", !0), [
76
+ t("a", { ctrl: !0, shift: !0 }, r)
77
+ ]),
78
+ e("markdown.editor.cursorLogicalLineEndSelect", "Select to Logical Line End", o("logicalLineEnd", !0), [
79
+ t("e", { ctrl: !0, shift: !0 }, r)
80
+ ]),
81
+ e("markdown.editor.cursorDocumentStart", "Move Cursor to Document Start", o("documentStart"), [
82
+ t("ArrowUp", { meta: !0 }, r),
83
+ t("Home", { ctrl: !0 }, i)
84
+ ]),
85
+ e("markdown.editor.cursorDocumentEnd", "Move Cursor to Document End", o("documentEnd"), [
86
+ t("ArrowDown", { meta: !0 }, r),
87
+ t("End", { ctrl: !0 }, i)
88
+ ]),
89
+ e("markdown.editor.cursorDocumentStartSelect", "Select to Document Start", o("documentStart", !0), [
90
+ t("ArrowUp", { meta: !0, shift: !0 }, r),
91
+ t("Home", { ctrl: !0, shift: !0 }, i)
92
+ ]),
93
+ e("markdown.editor.cursorDocumentEndSelect", "Select to Document End", o("documentEnd", !0), [
94
+ t("ArrowDown", { meta: !0, shift: !0 }, r),
95
+ t("End", { ctrl: !0, shift: !0 }, i)
96
+ ]),
97
+ e("markdown.editor.selectAll", "Select All", { kind: "selectAll" }, [
98
+ t("a", { meta: !0 }, r),
99
+ t("a", { ctrl: !0 }, i)
100
+ ]),
101
+ e("markdown.editor.deleteLeft", "Delete Left", d("deleteLeft"), [
102
+ t("h", { ctrl: !0 }, r),
103
+ t("Backspace", { ctrl: !0 }, r),
104
+ t("Backspace"),
105
+ t("Backspace", { shift: !0 })
106
+ ]),
107
+ e("markdown.editor.deleteRight", "Delete Right", d("deleteRight"), [
108
+ t("d", { ctrl: !0 }, r),
109
+ t("Delete", { ctrl: !0 }, r),
110
+ t("Delete")
111
+ ]),
112
+ e("markdown.editor.deleteWordLeft", "Delete Word Left", d("deleteWordLeft"), [
113
+ t("Backspace", { alt: !0 }, r),
114
+ t("Backspace", { ctrl: !0 }, i)
115
+ ]),
116
+ e("markdown.editor.deleteWordRight", "Delete Word Right", d("deleteWordRight"), [
117
+ t("Delete", { alt: !0 }, r),
118
+ t("Delete", { ctrl: !0 }, i)
119
+ ]),
120
+ e("markdown.editor.deleteLineLeft", "Delete All Left", d("deleteLineLeft"), [
121
+ t("Backspace", { meta: !0 }, r)
122
+ ]),
123
+ e("markdown.editor.deleteLineRight", "Delete All Right", d("deleteLineRight"), [
124
+ t("Delete", { meta: !0 }, r),
125
+ t("k", { ctrl: !0 }, r)
126
+ ]),
127
+ e("markdown.editor.undo", "Undo", l("undo"), [
128
+ t("z", { meta: !0 }, r),
129
+ t("z", { ctrl: !0 }, i)
130
+ ]),
131
+ e("markdown.editor.redo", "Redo", l("redo"), [
132
+ t("z", { meta: !0, shift: !0 }, r),
133
+ t("z", { ctrl: !0, shift: !0 }, i),
134
+ t("y", { ctrl: !0 }, i)
135
+ ]),
136
+ e("markdown.editor.insertTab", "Insert Tab", s("insert"), [
137
+ t("Tab")
138
+ ], "local"),
139
+ e("markdown.editor.outdent", "Outdent", s("outdent"), [
140
+ t("Tab", { shift: !0 })
141
+ ], "local"),
142
+ e("markdown.editor.toggleTabFocus", "Toggle Tab Key Moves Focus", { kind: "toggleTabFocus" }, [
143
+ t("m", { ctrl: !0 })
144
+ ], "local"),
145
+ e("markdown.editor.smartEnter", "Insert Paragraph", c("smartEnter"), [
146
+ t("Enter")
147
+ ]),
148
+ e("markdown.editor.insertHardLineBreak", "Insert Hard Line Break", c("insertHardLineBreak"), [
149
+ t("Enter", { shift: !0 })
150
+ ]),
151
+ e("markdown.editor.insertParagraph", "Insert Paragraph Without Continuing Markup", c("insertParagraph"), [
152
+ t("Enter", { meta: !0 }, r),
153
+ t("Enter", { ctrl: !0 })
154
+ ])
155
+ ];
156
+ export {
157
+ L as commands
158
+ };
159
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sources":["../src/editorCommands.ts"],"sourcesContent":["export type KeyboardPlatform = 'macos' | 'windows' | 'linux';\n\nexport type CursorKeyboardAction =\n\t| 'left'\n\t| 'right'\n\t| 'up'\n\t| 'down'\n\t| 'wordLeft'\n\t| 'wordRight'\n\t| 'visualLineStart'\n\t| 'visualLineEnd'\n\t| 'logicalLineStart'\n\t| 'logicalLineEnd'\n\t| 'documentStart'\n\t| 'documentEnd';\n\nexport type EditKeyboardAction =\n\t| 'deleteLeft'\n\t| 'deleteRight'\n\t| 'deleteWordLeft'\n\t| 'deleteWordRight'\n\t| 'deleteLineLeft'\n\t| 'deleteLineRight';\n\nexport type HistoryKeyboardAction = 'undo' | 'redo';\nexport type TabKeyboardAction = 'insert' | 'outdent';\n\nexport type EditorKeyboardAction =\n\t| { readonly kind: 'cursor'; readonly command: CursorKeyboardAction; readonly extend: boolean }\n\t| { readonly kind: 'edit'; readonly command: EditKeyboardAction }\n\t| { readonly kind: 'history'; readonly command: HistoryKeyboardAction }\n\t| { readonly kind: 'tab'; readonly command: TabKeyboardAction }\n\t| { readonly kind: 'toggleTabFocus' }\n\t| { readonly kind: 'selectAll' }\n\t| { readonly kind: 'enter'; readonly command: 'smartEnter' | 'insertParagraph' | 'insertHardLineBreak' };\n\nexport interface KeyboardModifiers {\n\treadonly shift?: boolean;\n\treadonly alt?: boolean;\n\treadonly ctrl?: boolean;\n\treadonly meta?: boolean;\n}\n\nexport interface EditorCommandKeybinding {\n\treadonly key: string;\n\treadonly modifiers?: KeyboardModifiers;\n\treadonly platforms?: readonly KeyboardPlatform[];\n}\n\nexport interface EditorCommandDefinition {\n\treadonly id: `markdown.editor.${string}`;\n\treadonly title: string;\n\treadonly action: EditorKeyboardAction;\n\treadonly keybindings: readonly EditorCommandKeybinding[];\n\t/**\n\t * Local commands must execute synchronously in the webview instead of being\n\t * forwarded through the VS Code keybinding service.\n\t */\n\treadonly routing?: 'host' | 'local';\n}\n\nconst MACOS = ['macos'] as const;\nconst NON_MACOS = ['windows', 'linux'] as const;\n\nconst cursor = (command: CursorKeyboardAction, extend = false): EditorKeyboardAction => ({\n\tkind: 'cursor',\n\tcommand,\n\textend,\n});\nconst edit = (command: EditKeyboardAction): EditorKeyboardAction => ({ kind: 'edit', command });\nconst history = (command: HistoryKeyboardAction): EditorKeyboardAction => ({ kind: 'history', command });\nconst tab = (command: TabKeyboardAction): EditorKeyboardAction => ({ kind: 'tab', command });\nconst enter = (command: 'smartEnter' | 'insertParagraph' | 'insertHardLineBreak'): EditorKeyboardAction => ({\n\tkind: 'enter',\n\tcommand,\n});\nconst binding = (\n\tkey: string,\n\tmodifiers?: KeyboardModifiers,\n\tplatforms?: readonly KeyboardPlatform[],\n): EditorCommandKeybinding => ({ key, modifiers, platforms });\nconst command = (\n\tid: EditorCommandDefinition['id'],\n\ttitle: string,\n\taction: EditorKeyboardAction,\n\tkeybindings: readonly EditorCommandKeybinding[],\n\trouting: EditorCommandDefinition['routing'] = 'host',\n): EditorCommandDefinition => ({ id, title, action, keybindings, routing });\n\n/**\n * Canonical editor command catalog. Standalone keyboard handling and host\n * integrations derive their command registration and default keybindings from\n * this list.\n */\nexport const commands: readonly EditorCommandDefinition[] = [\n\tcommand('markdown.editor.cursorLeft', 'Move Cursor Left', cursor('left'), [\n\t\tbinding('b', { ctrl: true }, MACOS),\n\t\tbinding('ArrowLeft'),\n\t]),\n\tcommand('markdown.editor.cursorRight', 'Move Cursor Right', cursor('right'), [\n\t\tbinding('f', { ctrl: true }, MACOS),\n\t\tbinding('ArrowRight'),\n\t]),\n\tcommand('markdown.editor.cursorUp', 'Move Cursor Up', cursor('up'), [\n\t\tbinding('p', { ctrl: true }, MACOS),\n\t\tbinding('ArrowUp'),\n\t]),\n\tcommand('markdown.editor.cursorDown', 'Move Cursor Down', cursor('down'), [\n\t\tbinding('n', { ctrl: true }, MACOS),\n\t\tbinding('ArrowDown'),\n\t]),\n\tcommand('markdown.editor.cursorLeftSelect', 'Select Left', cursor('left', true), [\n\t\tbinding('ArrowLeft', { shift: true }),\n\t]),\n\tcommand('markdown.editor.cursorRightSelect', 'Select Right', cursor('right', true), [\n\t\tbinding('ArrowRight', { shift: true }),\n\t]),\n\tcommand('markdown.editor.cursorUpSelect', 'Select Up', cursor('up', true), [\n\t\tbinding('ArrowUp', { shift: true }),\n\t]),\n\tcommand('markdown.editor.cursorDownSelect', 'Select Down', cursor('down', true), [\n\t\tbinding('ArrowDown', { shift: true }),\n\t]),\n\tcommand('markdown.editor.cursorWordLeft', 'Move Cursor Word Left', cursor('wordLeft'), [\n\t\tbinding('ArrowLeft', { alt: true }, MACOS),\n\t\tbinding('ArrowLeft', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorWordRight', 'Move Cursor Word Right', cursor('wordRight'), [\n\t\tbinding('ArrowRight', { alt: true }, MACOS),\n\t\tbinding('ArrowRight', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorWordLeftSelect', 'Select Word Left', cursor('wordLeft', true), [\n\t\tbinding('ArrowLeft', { alt: true, shift: true }, MACOS),\n\t\tbinding('ArrowLeft', { ctrl: true, shift: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorWordRightSelect', 'Select Word Right', cursor('wordRight', true), [\n\t\tbinding('ArrowRight', { alt: true, shift: true }, MACOS),\n\t\tbinding('ArrowRight', { ctrl: true, shift: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorVisualLineStart', 'Move Cursor to Visual Line Start', cursor('visualLineStart'), [\n\t\tbinding('ArrowLeft', { meta: true }, MACOS),\n\t\tbinding('Home'),\n\t]),\n\tcommand('markdown.editor.cursorVisualLineEnd', 'Move Cursor to Visual Line End', cursor('visualLineEnd'), [\n\t\tbinding('ArrowRight', { meta: true }, MACOS),\n\t\tbinding('End'),\n\t]),\n\tcommand('markdown.editor.cursorVisualLineStartSelect', 'Select to Visual Line Start', cursor('visualLineStart', true), [\n\t\tbinding('ArrowLeft', { meta: true, shift: true }, MACOS),\n\t\tbinding('Home', { shift: true }),\n\t]),\n\tcommand('markdown.editor.cursorVisualLineEndSelect', 'Select to Visual Line End', cursor('visualLineEnd', true), [\n\t\tbinding('ArrowRight', { meta: true, shift: true }, MACOS),\n\t\tbinding('End', { shift: true }),\n\t]),\n\tcommand('markdown.editor.cursorLogicalLineStart', 'Move Cursor to Logical Line Start', cursor('logicalLineStart'), [\n\t\tbinding('a', { ctrl: true }, MACOS),\n\t]),\n\tcommand('markdown.editor.cursorLogicalLineEnd', 'Move Cursor to Logical Line End', cursor('logicalLineEnd'), [\n\t\tbinding('e', { ctrl: true }, MACOS),\n\t]),\n\tcommand('markdown.editor.cursorLogicalLineStartSelect', 'Select to Logical Line Start', cursor('logicalLineStart', true), [\n\t\tbinding('a', { ctrl: true, shift: true }, MACOS),\n\t]),\n\tcommand('markdown.editor.cursorLogicalLineEndSelect', 'Select to Logical Line End', cursor('logicalLineEnd', true), [\n\t\tbinding('e', { ctrl: true, shift: true }, MACOS),\n\t]),\n\tcommand('markdown.editor.cursorDocumentStart', 'Move Cursor to Document Start', cursor('documentStart'), [\n\t\tbinding('ArrowUp', { meta: true }, MACOS),\n\t\tbinding('Home', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorDocumentEnd', 'Move Cursor to Document End', cursor('documentEnd'), [\n\t\tbinding('ArrowDown', { meta: true }, MACOS),\n\t\tbinding('End', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorDocumentStartSelect', 'Select to Document Start', cursor('documentStart', true), [\n\t\tbinding('ArrowUp', { meta: true, shift: true }, MACOS),\n\t\tbinding('Home', { ctrl: true, shift: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.cursorDocumentEndSelect', 'Select to Document End', cursor('documentEnd', true), [\n\t\tbinding('ArrowDown', { meta: true, shift: true }, MACOS),\n\t\tbinding('End', { ctrl: true, shift: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.selectAll', 'Select All', { kind: 'selectAll' }, [\n\t\tbinding('a', { meta: true }, MACOS),\n\t\tbinding('a', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.deleteLeft', 'Delete Left', edit('deleteLeft'), [\n\t\tbinding('h', { ctrl: true }, MACOS),\n\t\tbinding('Backspace', { ctrl: true }, MACOS),\n\t\tbinding('Backspace'),\n\t\tbinding('Backspace', { shift: true }),\n\t]),\n\tcommand('markdown.editor.deleteRight', 'Delete Right', edit('deleteRight'), [\n\t\tbinding('d', { ctrl: true }, MACOS),\n\t\tbinding('Delete', { ctrl: true }, MACOS),\n\t\tbinding('Delete'),\n\t]),\n\tcommand('markdown.editor.deleteWordLeft', 'Delete Word Left', edit('deleteWordLeft'), [\n\t\tbinding('Backspace', { alt: true }, MACOS),\n\t\tbinding('Backspace', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.deleteWordRight', 'Delete Word Right', edit('deleteWordRight'), [\n\t\tbinding('Delete', { alt: true }, MACOS),\n\t\tbinding('Delete', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.deleteLineLeft', 'Delete All Left', edit('deleteLineLeft'), [\n\t\tbinding('Backspace', { meta: true }, MACOS),\n\t]),\n\tcommand('markdown.editor.deleteLineRight', 'Delete All Right', edit('deleteLineRight'), [\n\t\tbinding('Delete', { meta: true }, MACOS),\n\t\tbinding('k', { ctrl: true }, MACOS),\n\t]),\n\tcommand('markdown.editor.undo', 'Undo', history('undo'), [\n\t\tbinding('z', { meta: true }, MACOS),\n\t\tbinding('z', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.redo', 'Redo', history('redo'), [\n\t\tbinding('z', { meta: true, shift: true }, MACOS),\n\t\tbinding('z', { ctrl: true, shift: true }, NON_MACOS),\n\t\tbinding('y', { ctrl: true }, NON_MACOS),\n\t]),\n\tcommand('markdown.editor.insertTab', 'Insert Tab', tab('insert'), [\n\t\tbinding('Tab'),\n\t], 'local'),\n\tcommand('markdown.editor.outdent', 'Outdent', tab('outdent'), [\n\t\tbinding('Tab', { shift: true }),\n\t], 'local'),\n\tcommand('markdown.editor.toggleTabFocus', 'Toggle Tab Key Moves Focus', { kind: 'toggleTabFocus' }, [\n\t\tbinding('m', { ctrl: true }),\n\t], 'local'),\n\tcommand('markdown.editor.smartEnter', 'Insert Paragraph', enter('smartEnter'), [\n\t\tbinding('Enter'),\n\t]),\n\tcommand('markdown.editor.insertHardLineBreak', 'Insert Hard Line Break', enter('insertHardLineBreak'), [\n\t\tbinding('Enter', { shift: true }),\n\t]),\n\tcommand('markdown.editor.insertParagraph', 'Insert Paragraph Without Continuing Markup', enter('insertParagraph'), [\n\t\tbinding('Enter', { meta: true }, MACOS),\n\t\tbinding('Enter', { ctrl: true }),\n\t]),\n];\n"],"names":["MACOS","NON_MACOS","cursor","command","extend","edit","history","tab","enter","binding","key","modifiers","platforms","id","title","action","keybindings","routing","commands"],"mappings":"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"}
@@ -0,0 +1,286 @@
1
+ const C = "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?", f = {
2
+ wordSeparators: C,
3
+ wordSegmenterLocales: []
4
+ };
5
+ function _(e, n) {
6
+ return e !== void 0 && !/\s/u.test(e) && !n.includes(e);
7
+ }
8
+ class S {
9
+ _separators;
10
+ _segmenter;
11
+ _cachedLine;
12
+ _cachedWords = [];
13
+ constructor(n) {
14
+ this._separators = new Set(n.wordSeparators), this._segmenter = L(n.wordSegmenterLocales);
15
+ }
16
+ classify(n) {
17
+ return n === void 0 || n === " " || n === " " ? 1 : this._separators.has(n) ? 2 : 0;
18
+ }
19
+ previousIntlWord(n, i) {
20
+ let t;
21
+ for (const r of this._intlWords(n)) {
22
+ if (r.index > i)
23
+ break;
24
+ t = r;
25
+ }
26
+ return t;
27
+ }
28
+ nextIntlWord(n, i) {
29
+ return this._intlWords(n).find((t) => t.index >= i);
30
+ }
31
+ _intlWords(n) {
32
+ if (!this._segmenter)
33
+ return [];
34
+ if (this._cachedLine === n)
35
+ return this._cachedWords;
36
+ const i = [];
37
+ for (const t of this._segmenter.segment(n))
38
+ t.isWordLike && i.push({ index: t.index, segment: t.segment });
39
+ return this._cachedLine = n, this._cachedWords = i, i;
40
+ }
41
+ }
42
+ function L(e) {
43
+ if (e.length === 0)
44
+ return;
45
+ const n = [];
46
+ for (const i of e) {
47
+ if (typeof i != "string" || i.length === 0) {
48
+ console.warn("Ignoring invalid editor.wordSegmenterLocales entry", i);
49
+ continue;
50
+ }
51
+ try {
52
+ n.push(...Intl.Segmenter.supportedLocalesOf(i));
53
+ } catch (t) {
54
+ console.warn(`Ignoring invalid editor.wordSegmenterLocales entry: ${i}`, t);
55
+ }
56
+ }
57
+ if (n.length !== 0)
58
+ try {
59
+ return new Intl.Segmenter(n, { granularity: "word" });
60
+ } catch (i) {
61
+ console.warn(`Unable to initialize editor.wordSegmenterLocales: ${n.join(", ")}`, i);
62
+ return;
63
+ }
64
+ }
65
+ const y = /* @__PURE__ */ new Map();
66
+ function W(e) {
67
+ const n = `${e.wordSeparators}/${e.wordSegmenterLocales.join(",")}`;
68
+ let i = y.get(n);
69
+ return i || (i = new S(e), y.set(n, i)), i;
70
+ }
71
+ function x(e, n, i = f) {
72
+ if (n = p(n, 0, e.length), n === 0)
73
+ return 0;
74
+ let t = e.lastIndexOf(`
75
+ `, n - 1) + 1, r = e.indexOf(`
76
+ `, n);
77
+ r === -1 && (r = e.length);
78
+ let s = n - t;
79
+ if (s === 0) {
80
+ const a = t - 1;
81
+ t = a <= 0 ? 0 : e.lastIndexOf(`
82
+ `, a - 1) + 1, r = a, s = Math.max(0, a - t);
83
+ }
84
+ const l = e.slice(t, r), d = W(i);
85
+ let o = v(l, d, s);
86
+ return o?.type === 1 && o.end - o.start === 1 && o.nextClass === 0 && (o = v(l, d, o.start)), t + (o?.start ?? 0);
87
+ }
88
+ function E(e, n, i = f) {
89
+ if (n = p(n, 0, e.length), n === e.length)
90
+ return e.length;
91
+ let t = e.lastIndexOf(`
92
+ `, n - 1) + 1, r = e.indexOf(`
93
+ `, n);
94
+ r === -1 && (r = e.length);
95
+ let s = n - t;
96
+ n === r && r < e.length && (t = r + 1, r = e.indexOf(`
97
+ `, t), r === -1 && (r = e.length), s = 0);
98
+ const l = e.slice(t, r), d = W(i);
99
+ let o = O(l, d, s);
100
+ return o?.type === 1 && o.end - o.start === 1 && o.nextClass === 0 && (o = O(l, d, o.end)), t + (o?.end ?? l.length);
101
+ }
102
+ function A(e, n, i = f) {
103
+ if (n = p(n, 0, e.length), n === 0)
104
+ return 0;
105
+ const t = n === 0 ? 0 : e.lastIndexOf(`
106
+ `, n - 1) + 1, r = n - t;
107
+ if (r === 0)
108
+ return n - 1;
109
+ let s = r - 1;
110
+ for (; s >= 0 && (e[t + s] === " " || e[t + s] === " "); )
111
+ s--;
112
+ if (s + 1 < r - 1)
113
+ return t + s + 1;
114
+ let l = e.indexOf(`
115
+ `, n);
116
+ l === -1 && (l = e.length);
117
+ const d = e.slice(t, l), o = v(d, W(i), r);
118
+ return t + (o?.start ?? 0);
119
+ }
120
+ function D(e, n, i = f) {
121
+ if (n = p(n, 0, e.length), n === e.length)
122
+ return e.length;
123
+ const t = e.lastIndexOf(`
124
+ `, n - 1) + 1;
125
+ let r = e.indexOf(`
126
+ `, n);
127
+ r === -1 && (r = e.length);
128
+ const s = n - t, l = e.slice(t, r);
129
+ let d = s;
130
+ for (; d < l.length && (l[d] === " " || l[d] === " "); )
131
+ d++;
132
+ if (s < d)
133
+ return t + d;
134
+ const o = W(i), a = O(l, o, s);
135
+ if (a)
136
+ return t + a.end;
137
+ if (n < r || r === e.length)
138
+ return r;
139
+ const h = r + 1;
140
+ let c = e.indexOf(`
141
+ `, h);
142
+ c === -1 && (c = e.length);
143
+ const u = e.slice(h, c), g = O(u, o, 0);
144
+ return h + (g?.start ?? u.length);
145
+ }
146
+ function R(e, n, i = f) {
147
+ if (n = p(n, 0, e.length), n === e.length)
148
+ return { start: n, end: n };
149
+ const t = e[n];
150
+ if (/\s/u.test(t)) {
151
+ let g = n, m = n + 1;
152
+ for (; g > 0 && /\s/u.test(e[g - 1]); )
153
+ g--;
154
+ for (; m < e.length && /\s/u.test(e[m]); )
155
+ m++;
156
+ return { start: g, end: m };
157
+ }
158
+ const r = e.lastIndexOf(`
159
+ `, n - 1) + 1;
160
+ let s = e.indexOf(`
161
+ `, n);
162
+ s === -1 && (s = e.length);
163
+ const l = e.slice(r, s), d = n - r, o = W(i), a = o.previousIntlWord(l, d);
164
+ if (a && d < a.index + a.segment.length)
165
+ return {
166
+ start: r + a.index,
167
+ end: r + a.index + a.segment.length
168
+ };
169
+ const h = o.classify(t);
170
+ let c = d, u = d + 1;
171
+ for (; c > 0 && o.classify(l[c - 1]) === h; )
172
+ c--;
173
+ for (; u < l.length && o.classify(l[u]) === h; )
174
+ u++;
175
+ return { start: r + c, end: r + u };
176
+ }
177
+ function v(e, n, i) {
178
+ let t;
179
+ const r = n.previousIntlWord(e, i - 1);
180
+ for (let s = i - 1; s >= 0; s--) {
181
+ const l = n.classify(e[s]);
182
+ if (r && s === r.index)
183
+ return {
184
+ start: r.index,
185
+ end: r.index + r.segment.length,
186
+ type: 0,
187
+ nextClass: l
188
+ };
189
+ if (l === 0) {
190
+ if (t === 1) {
191
+ const d = s + 1;
192
+ return { start: d, end: w(e, n, t, d), type: t, nextClass: l };
193
+ }
194
+ t = 0;
195
+ } else if (l === 2) {
196
+ if (t === 0) {
197
+ const d = s + 1;
198
+ return { start: d, end: w(e, n, t, d), type: t, nextClass: l };
199
+ }
200
+ t = 1;
201
+ } else if (t !== void 0) {
202
+ const d = s + 1;
203
+ return { start: d, end: w(e, n, t, d), type: t, nextClass: l };
204
+ }
205
+ }
206
+ return t === void 0 ? void 0 : {
207
+ start: 0,
208
+ end: w(e, n, t, 0),
209
+ type: t,
210
+ nextClass: 1
211
+ /* Whitespace */
212
+ };
213
+ }
214
+ function O(e, n, i) {
215
+ let t;
216
+ const r = n.nextIntlWord(e, i);
217
+ for (let s = i; s < e.length; s++) {
218
+ const l = n.classify(e[s]);
219
+ if (r && s === r.index)
220
+ return {
221
+ start: r.index,
222
+ end: r.index + r.segment.length,
223
+ type: 0,
224
+ nextClass: l
225
+ };
226
+ if (l === 0) {
227
+ if (t === 1) {
228
+ const d = s;
229
+ return { start: I(e, n, t, d - 1), end: d, type: t, nextClass: l };
230
+ }
231
+ t = 0;
232
+ } else if (l === 2) {
233
+ if (t === 0) {
234
+ const d = s;
235
+ return { start: I(e, n, t, d - 1), end: d, type: t, nextClass: l };
236
+ }
237
+ t = 1;
238
+ } else if (t !== void 0) {
239
+ const d = s;
240
+ return { start: I(e, n, t, d - 1), end: d, type: t, nextClass: l };
241
+ }
242
+ }
243
+ return t === void 0 ? void 0 : {
244
+ start: I(e, n, t, e.length - 1),
245
+ end: e.length,
246
+ type: t,
247
+ nextClass: 1
248
+ /* Whitespace */
249
+ };
250
+ }
251
+ function w(e, n, i, t) {
252
+ const r = n.nextIntlWord(e, t);
253
+ for (let s = t; s < e.length; s++) {
254
+ if (r && s === r.index + r.segment.length)
255
+ return s;
256
+ const l = n.classify(e[s]);
257
+ if (l === 1 || i === 0 && l === 2 || i === 1 && l === 0)
258
+ return s;
259
+ }
260
+ return e.length;
261
+ }
262
+ function I(e, n, i, t) {
263
+ const r = n.previousIntlWord(e, t);
264
+ for (let s = t; s >= 0; s--) {
265
+ if (r && s === r.index)
266
+ return s;
267
+ const l = n.classify(e[s]);
268
+ if (l === 1 || i === 0 && l === 2 || i === 1 && l === 0)
269
+ return s + 1;
270
+ }
271
+ return 0;
272
+ }
273
+ function p(e, n, i) {
274
+ return Math.min(Math.max(e, n), i);
275
+ }
276
+ export {
277
+ f as D,
278
+ E as a,
279
+ A as b,
280
+ D as c,
281
+ R as d,
282
+ C as e,
283
+ x as f,
284
+ _ as i
285
+ };
286
+ //# sourceMappingURL=config-BGeaJqWk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BGeaJqWk.js","sources":["../src/core/wordUtils.ts"],"sourcesContent":["export const DEFAULT_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\n\nexport interface WordNavigationConfig {\n\treadonly wordSeparators: string;\n\treadonly wordSegmenterLocales: readonly string[];\n}\n\nexport const DEFAULT_WORD_NAVIGATION_CONFIG: WordNavigationConfig = {\n\twordSeparators: DEFAULT_WORD_SEPARATORS,\n\twordSegmenterLocales: [],\n};\n\nexport function isRegularWordCharacter(character: string | undefined, wordSeparators: string): boolean {\n\treturn character !== undefined\n\t\t&& !/\\s/u.test(character)\n\t\t&& !wordSeparators.includes(character);\n}\n\nconst enum WordCharacterClass {\n\tRegular,\n\tWhitespace,\n\tSeparator,\n}\n\nconst enum WordType {\n\tRegular,\n\tSeparator,\n}\n\ninterface WordSpan {\n\treadonly start: number;\n\treadonly end: number;\n\treadonly type: WordType;\n\treadonly nextClass: WordCharacterClass;\n}\n\ninterface IntlWordSpan {\n\treadonly index: number;\n\treadonly segment: string;\n}\n\nclass WordClassifier {\n\tprivate readonly _separators: ReadonlySet<string>;\n\tprivate readonly _segmenter: Intl.Segmenter | undefined;\n\tprivate _cachedLine: string | undefined;\n\tprivate _cachedWords: readonly IntlWordSpan[] = [];\n\n\tconstructor(config: WordNavigationConfig) {\n\t\tthis._separators = new Set(config.wordSeparators);\n\t\tthis._segmenter = createWordSegmenter(config.wordSegmenterLocales);\n\t}\n\n\tclassify(character: string | undefined): WordCharacterClass {\n\t\tif (character === undefined) {\n\t\t\treturn WordCharacterClass.Whitespace;\n\t\t}\n\t\tif (character === ' ' || character === '\\t') {\n\t\t\treturn WordCharacterClass.Whitespace;\n\t\t}\n\t\treturn this._separators.has(character)\n\t\t\t? WordCharacterClass.Separator\n\t\t\t: WordCharacterClass.Regular;\n\t}\n\n\tpreviousIntlWord(line: string, offset: number): IntlWordSpan | undefined {\n\t\tlet candidate: IntlWordSpan | undefined;\n\t\tfor (const word of this._intlWords(line)) {\n\t\t\tif (word.index > offset) { break; }\n\t\t\tcandidate = word;\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tnextIntlWord(line: string, offset: number): IntlWordSpan | undefined {\n\t\treturn this._intlWords(line).find(word => word.index >= offset);\n\t}\n\n\tprivate _intlWords(line: string): readonly IntlWordSpan[] {\n\t\tif (!this._segmenter) { return []; }\n\t\tif (this._cachedLine === line) { return this._cachedWords; }\n\n\t\tconst words: IntlWordSpan[] = [];\n\t\tfor (const segment of this._segmenter.segment(line)) {\n\t\t\tif (segment.isWordLike) {\n\t\t\t\twords.push({ index: segment.index, segment: segment.segment });\n\t\t\t}\n\t\t}\n\t\tthis._cachedLine = line;\n\t\tthis._cachedWords = words;\n\t\treturn words;\n\t}\n}\n\nfunction createWordSegmenter(locales: readonly string[]): Intl.Segmenter | undefined {\n\tif (locales.length === 0) { return undefined; }\n\tconst supportedLocales: string[] = [];\n\tfor (const locale of locales as readonly unknown[]) {\n\t\tif (typeof locale !== 'string' || locale.length === 0) {\n\t\t\tconsole.warn('Ignoring invalid editor.wordSegmenterLocales entry', locale);\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tsupportedLocales.push(...Intl.Segmenter.supportedLocalesOf(locale));\n\t\t} catch (error) {\n\t\t\tconsole.warn(`Ignoring invalid editor.wordSegmenterLocales entry: ${locale}`, error);\n\t\t}\n\t}\n\tif (supportedLocales.length === 0) { return undefined; }\n\ttry {\n\t\treturn new Intl.Segmenter(supportedLocales, { granularity: 'word' });\n\t} catch (error) {\n\t\tconsole.warn(`Unable to initialize editor.wordSegmenterLocales: ${supportedLocales.join(', ')}`, error);\n\t\treturn undefined;\n\t}\n}\n\nconst classifierCache = new Map<string, WordClassifier>();\n\nfunction getClassifier(config: WordNavigationConfig): WordClassifier {\n\tconst key = `${config.wordSeparators}/${config.wordSegmenterLocales.join(',')}`;\n\tlet classifier = classifierCache.get(key);\n\tif (!classifier) {\n\t\tclassifier = new WordClassifier(config);\n\t\tclassifierCache.set(key, classifier);\n\t}\n\treturn classifier;\n}\n\nexport function findWordBoundaryLeft(\n\ttext: string,\n\toffset: number,\n\tconfig: WordNavigationConfig = DEFAULT_WORD_NAVIGATION_CONFIG,\n): number {\n\toffset = clamp(offset, 0, text.length);\n\tif (offset === 0) { return 0; }\n\n\tlet lineStart = text.lastIndexOf('\\n', offset - 1) + 1;\n\tlet lineEnd = text.indexOf('\\n', offset);\n\tif (lineEnd === -1) { lineEnd = text.length; }\n\tlet localOffset = offset - lineStart;\n\tif (localOffset === 0) {\n\t\tconst previousLineEnd = lineStart - 1;\n\t\tlineStart = previousLineEnd <= 0\n\t\t\t? 0\n\t\t\t: text.lastIndexOf('\\n', previousLineEnd - 1) + 1;\n\t\tlineEnd = previousLineEnd;\n\t\tlocalOffset = Math.max(0, previousLineEnd - lineStart);\n\t}\n\n\tconst line = text.slice(lineStart, lineEnd);\n\tconst classifier = getClassifier(config);\n\tlet previous = findPreviousWord(line, classifier, localOffset);\n\tif (\n\t\tprevious?.type === WordType.Separator\n\t\t&& previous.end - previous.start === 1\n\t\t&& previous.nextClass === WordCharacterClass.Regular\n\t) {\n\t\tprevious = findPreviousWord(line, classifier, previous.start);\n\t}\n\treturn lineStart + (previous?.start ?? 0);\n}\n\nexport function findWordBoundaryRight(\n\ttext: string,\n\toffset: number,\n\tconfig: WordNavigationConfig = DEFAULT_WORD_NAVIGATION_CONFIG,\n): number {\n\toffset = clamp(offset, 0, text.length);\n\tif (offset === text.length) { return text.length; }\n\n\tlet lineStart = text.lastIndexOf('\\n', offset - 1) + 1;\n\tlet lineEnd = text.indexOf('\\n', offset);\n\tif (lineEnd === -1) { lineEnd = text.length; }\n\tlet localOffset = offset - lineStart;\n\tif (offset === lineEnd && lineEnd < text.length) {\n\t\tlineStart = lineEnd + 1;\n\t\tlineEnd = text.indexOf('\\n', lineStart);\n\t\tif (lineEnd === -1) { lineEnd = text.length; }\n\t\tlocalOffset = 0;\n\t}\n\n\tconst line = text.slice(lineStart, lineEnd);\n\tconst classifier = getClassifier(config);\n\tlet next = findNextWord(line, classifier, localOffset);\n\tif (\n\t\tnext?.type === WordType.Separator\n\t\t&& next.end - next.start === 1\n\t\t&& next.nextClass === WordCharacterClass.Regular\n\t) {\n\t\tnext = findNextWord(line, classifier, next.end);\n\t}\n\treturn lineStart + (next?.end ?? line.length);\n}\n\nexport function findWordDeleteBoundaryLeft(\n\ttext: string,\n\toffset: number,\n\tconfig: WordNavigationConfig = DEFAULT_WORD_NAVIGATION_CONFIG,\n): number {\n\toffset = clamp(offset, 0, text.length);\n\tif (offset === 0) { return 0; }\n\n\tconst lineStart = offset === 0 ? 0 : text.lastIndexOf('\\n', offset - 1) + 1;\n\tconst localOffset = offset - lineStart;\n\tif (localOffset === 0) {\n\t\treturn offset - 1;\n\t}\n\n\tlet lastNonWhitespace = localOffset - 1;\n\twhile (\n\t\tlastNonWhitespace >= 0\n\t\t&& (text[lineStart + lastNonWhitespace] === ' ' || text[lineStart + lastNonWhitespace] === '\\t')\n\t) {\n\t\tlastNonWhitespace--;\n\t}\n\tif (lastNonWhitespace + 1 < localOffset - 1) {\n\t\treturn lineStart + lastNonWhitespace + 1;\n\t}\n\n\tlet lineEnd = text.indexOf('\\n', offset);\n\tif (lineEnd === -1) { lineEnd = text.length; }\n\tconst line = text.slice(lineStart, lineEnd);\n\tconst previous = findPreviousWord(line, getClassifier(config), localOffset);\n\treturn lineStart + (previous?.start ?? 0);\n}\n\nexport function findWordDeleteBoundaryRight(\n\ttext: string,\n\toffset: number,\n\tconfig: WordNavigationConfig = DEFAULT_WORD_NAVIGATION_CONFIG,\n): number {\n\toffset = clamp(offset, 0, text.length);\n\tif (offset === text.length) { return text.length; }\n\n\tconst lineStart = text.lastIndexOf('\\n', offset - 1) + 1;\n\tlet lineEnd = text.indexOf('\\n', offset);\n\tif (lineEnd === -1) { lineEnd = text.length; }\n\tconst localOffset = offset - lineStart;\n\tconst line = text.slice(lineStart, lineEnd);\n\n\tlet firstNonWhitespace = localOffset;\n\twhile (\n\t\tfirstNonWhitespace < line.length\n\t\t&& (line[firstNonWhitespace] === ' ' || line[firstNonWhitespace] === '\\t')\n\t) {\n\t\tfirstNonWhitespace++;\n\t}\n\tif (localOffset < firstNonWhitespace) {\n\t\treturn lineStart + firstNonWhitespace;\n\t}\n\n\tconst classifier = getClassifier(config);\n\tconst next = findNextWord(line, classifier, localOffset);\n\tif (next) {\n\t\treturn lineStart + next.end;\n\t}\n\tif (offset < lineEnd || lineEnd === text.length) {\n\t\treturn lineEnd;\n\t}\n\n\tconst nextLineStart = lineEnd + 1;\n\tlet nextLineEnd = text.indexOf('\\n', nextLineStart);\n\tif (nextLineEnd === -1) { nextLineEnd = text.length; }\n\tconst nextLine = text.slice(nextLineStart, nextLineEnd);\n\tconst nextLineWord = findNextWord(nextLine, classifier, 0);\n\treturn nextLineStart + (nextLineWord?.start ?? nextLine.length);\n}\n\nexport function findWordAt(\n\ttext: string,\n\toffset: number,\n\tconfig: WordNavigationConfig = DEFAULT_WORD_NAVIGATION_CONFIG,\n): { start: number; end: number } {\n\toffset = clamp(offset, 0, text.length);\n\tif (offset === text.length) {\n\t\treturn { start: offset, end: offset };\n\t}\n\n\tconst character = text[offset];\n\tif (/\\s/u.test(character)) {\n\t\tlet start = offset;\n\t\tlet end = offset + 1;\n\t\twhile (start > 0 && /\\s/u.test(text[start - 1])) { start--; }\n\t\twhile (end < text.length && /\\s/u.test(text[end])) { end++; }\n\t\treturn { start, end };\n\t}\n\n\tconst lineStart = text.lastIndexOf('\\n', offset - 1) + 1;\n\tlet lineEnd = text.indexOf('\\n', offset);\n\tif (lineEnd === -1) { lineEnd = text.length; }\n\tconst line = text.slice(lineStart, lineEnd);\n\tconst localOffset = offset - lineStart;\n\tconst classifier = getClassifier(config);\n\n\tconst intlWord = classifier.previousIntlWord(line, localOffset);\n\tif (intlWord && localOffset < intlWord.index + intlWord.segment.length) {\n\t\treturn {\n\t\t\tstart: lineStart + intlWord.index,\n\t\t\tend: lineStart + intlWord.index + intlWord.segment.length,\n\t\t};\n\t}\n\n\tconst characterClass = classifier.classify(character);\n\tlet start = localOffset;\n\tlet end = localOffset + 1;\n\twhile (start > 0 && classifier.classify(line[start - 1]) === characterClass) { start--; }\n\twhile (end < line.length && classifier.classify(line[end]) === characterClass) { end++; }\n\treturn { start: lineStart + start, end: lineStart + end };\n}\n\nfunction findPreviousWord(line: string, classifier: WordClassifier, offset: number): WordSpan | undefined {\n\tlet type: WordType | undefined;\n\tconst previousIntlWord = classifier.previousIntlWord(line, offset - 1);\n\n\tfor (let index = offset - 1; index >= 0; index--) {\n\t\tconst characterClass = classifier.classify(line[index]);\n\t\tif (previousIntlWord && index === previousIntlWord.index) {\n\t\t\treturn {\n\t\t\t\tstart: previousIntlWord.index,\n\t\t\t\tend: previousIntlWord.index + previousIntlWord.segment.length,\n\t\t\t\ttype: WordType.Regular,\n\t\t\t\tnextClass: characterClass,\n\t\t\t};\n\t\t}\n\n\t\tif (characterClass === WordCharacterClass.Regular) {\n\t\t\tif (type === WordType.Separator) {\n\t\t\t\tconst start = index + 1;\n\t\t\t\treturn { start, end: findWordEnd(line, classifier, type, start), type, nextClass: characterClass };\n\t\t\t}\n\t\t\ttype = WordType.Regular;\n\t\t} else if (characterClass === WordCharacterClass.Separator) {\n\t\t\tif (type === WordType.Regular) {\n\t\t\t\tconst start = index + 1;\n\t\t\t\treturn { start, end: findWordEnd(line, classifier, type, start), type, nextClass: characterClass };\n\t\t\t}\n\t\t\ttype = WordType.Separator;\n\t\t} else if (type !== undefined) {\n\t\t\tconst start = index + 1;\n\t\t\treturn { start, end: findWordEnd(line, classifier, type, start), type, nextClass: characterClass };\n\t\t}\n\t}\n\n\treturn type === undefined\n\t\t? undefined\n\t\t: { start: 0, end: findWordEnd(line, classifier, type, 0), type, nextClass: WordCharacterClass.Whitespace };\n}\n\nfunction findNextWord(line: string, classifier: WordClassifier, offset: number): WordSpan | undefined {\n\tlet type: WordType | undefined;\n\tconst nextIntlWord = classifier.nextIntlWord(line, offset);\n\n\tfor (let index = offset; index < line.length; index++) {\n\t\tconst characterClass = classifier.classify(line[index]);\n\t\tif (nextIntlWord && index === nextIntlWord.index) {\n\t\t\treturn {\n\t\t\t\tstart: nextIntlWord.index,\n\t\t\t\tend: nextIntlWord.index + nextIntlWord.segment.length,\n\t\t\t\ttype: WordType.Regular,\n\t\t\t\tnextClass: characterClass,\n\t\t\t};\n\t\t}\n\n\t\tif (characterClass === WordCharacterClass.Regular) {\n\t\t\tif (type === WordType.Separator) {\n\t\t\t\tconst end = index;\n\t\t\t\treturn { start: findWordStart(line, classifier, type, end - 1), end, type, nextClass: characterClass };\n\t\t\t}\n\t\t\ttype = WordType.Regular;\n\t\t} else if (characterClass === WordCharacterClass.Separator) {\n\t\t\tif (type === WordType.Regular) {\n\t\t\t\tconst end = index;\n\t\t\t\treturn { start: findWordStart(line, classifier, type, end - 1), end, type, nextClass: characterClass };\n\t\t\t}\n\t\t\ttype = WordType.Separator;\n\t\t} else if (type !== undefined) {\n\t\t\tconst end = index;\n\t\t\treturn { start: findWordStart(line, classifier, type, end - 1), end, type, nextClass: characterClass };\n\t\t}\n\t}\n\n\treturn type === undefined\n\t\t? undefined\n\t\t: {\n\t\t\tstart: findWordStart(line, classifier, type, line.length - 1),\n\t\t\tend: line.length,\n\t\t\ttype,\n\t\t\tnextClass: WordCharacterClass.Whitespace,\n\t\t};\n}\n\nfunction findWordEnd(line: string, classifier: WordClassifier, type: WordType, start: number): number {\n\tconst nextIntlWord = classifier.nextIntlWord(line, start);\n\tfor (let index = start; index < line.length; index++) {\n\t\tif (nextIntlWord && index === nextIntlWord.index + nextIntlWord.segment.length) {\n\t\t\treturn index;\n\t\t}\n\t\tconst characterClass = classifier.classify(line[index]);\n\t\tif (\n\t\t\tcharacterClass === WordCharacterClass.Whitespace\n\t\t\t|| (type === WordType.Regular && characterClass === WordCharacterClass.Separator)\n\t\t\t|| (type === WordType.Separator && characterClass === WordCharacterClass.Regular)\n\t\t) {\n\t\t\treturn index;\n\t\t}\n\t}\n\treturn line.length;\n}\n\nfunction findWordStart(line: string, classifier: WordClassifier, type: WordType, start: number): number {\n\tconst previousIntlWord = classifier.previousIntlWord(line, start);\n\tfor (let index = start; index >= 0; index--) {\n\t\tif (previousIntlWord && index === previousIntlWord.index) {\n\t\t\treturn index;\n\t\t}\n\t\tconst characterClass = classifier.classify(line[index]);\n\t\tif (\n\t\t\tcharacterClass === WordCharacterClass.Whitespace\n\t\t\t|| (type === WordType.Regular && characterClass === WordCharacterClass.Separator)\n\t\t\t|| (type === WordType.Separator && characterClass === WordCharacterClass.Regular)\n\t\t) {\n\t\t\treturn index + 1;\n\t\t}\n\t}\n\treturn 0;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n\treturn Math.min(Math.max(value, min), max);\n}\n"],"names":["DEFAULT_WORD_SEPARATORS","DEFAULT_WORD_NAVIGATION_CONFIG","isRegularWordCharacter","character","wordSeparators","WordClassifier","config","createWordSegmenter","line","offset","candidate","word","words","segment","locales","supportedLocales","locale","error","classifierCache","getClassifier","key","classifier","findWordBoundaryLeft","text","clamp","lineStart","lineEnd","localOffset","previousLineEnd","previous","findPreviousWord","findWordBoundaryRight","next","findNextWord","findWordDeleteBoundaryLeft","lastNonWhitespace","findWordDeleteBoundaryRight","firstNonWhitespace","nextLineStart","nextLineEnd","nextLine","nextLineWord","findWordAt","start","end","intlWord","characterClass","type","previousIntlWord","index","findWordEnd","nextIntlWord","findWordStart","value","min","max"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const DEFAULT_WORD_NAVIGATION_CONFIG: WordNavigationConfig;
2
+
3
+ export declare const DEFAULT_WORD_SEPARATORS = "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";
4
+
5
+ export declare interface WordNavigationConfig {
6
+ readonly wordSeparators: string;
7
+ readonly wordSegmenterLocales: readonly string[];
8
+ }
9
+
10
+ export { }
package/dist/config.js ADDED
@@ -0,0 +1,6 @@
1
+ import { D as O, e as _ } from "./config-BGeaJqWk.js";
2
+ export {
3
+ O as DEFAULT_WORD_NAVIGATION_CONFIG,
4
+ _ as DEFAULT_WORD_SEPARATORS
5
+ };
6
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}