@rightkit/document-core 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +31 -7
- package/dist/app/chrome.js +1 -1
- package/dist/app/documentPrinting.d.ts +0 -6
- package/dist/app/documentPrinting.js +0 -18
- package/dist/app/shell/nativeMenu.d.ts +3 -2
- package/dist/app/shell/nativeMenu.js +8 -5
- package/dist/documents/perfEventCounters.d.ts +0 -8
- package/dist/documents/perfEventCounters.js +2 -1
- package/dist/documents/preview/previewFrame.d.ts +2 -1
- package/dist/documents/preview/previewFrame.js +9 -7
- package/dist/documents/searchUtils.js +1 -1
- package/dist/host.d.ts +36 -0
- package/dist/host.js +54 -0
- package/dist/index.d.ts +1 -50
- package/dist/index.js +1 -50
- package/dist/settings/themes.js +1 -1
- package/dist/state/bridgeEvents.d.ts +1 -1
- package/dist/state/bridgeEvents.js +7 -4
- package/dist/state/recentUrls.js +4 -3
- package/dist/state/tauriBridge.d.ts +3 -61
- package/dist/state/tauriBridge.js +8 -297
- package/dist/styles.css +2 -2
- package/package.json +25 -98
- package/dist/app/shortcutChords.d.ts +0 -6
- package/dist/app/shortcutChords.js +0 -14
- package/dist/app/useCloseFindOnSurfaceChange.d.ts +0 -14
- package/dist/app/useCloseFindOnSurfaceChange.js +0 -23
- package/dist/app/useEditText.d.ts +0 -6
- package/dist/app/useEditText.js +0 -10
- package/dist/appName.d.ts +0 -2
- package/dist/appName.js +0 -8
- package/dist/documents/FullscreenIcon.d.ts +0 -4
- package/dist/documents/FullscreenIcon.js +0 -7
- package/dist/documents/mdx/mdxRuntimeScript.d.ts +0 -2
- package/dist/documents/mdx/mdxRuntimeScript.js +0 -3
- package/dist/documents/mdx/mdxRuntimeScript.txt +0 -584
- package/dist/documents/pdf/MacPdfReadPane.d.ts +0 -23
- package/dist/documents/pdf/MacPdfReadPane.js +0 -708
- package/dist/documents/pdf/NativePdfDocument.d.ts +0 -9
- package/dist/documents/pdf/NativePdfDocument.js +0 -41
- package/dist/documents/pdf/PdfInlineTextEditor.d.ts +0 -53
- package/dist/documents/pdf/PdfInlineTextEditor.js +0 -225
- package/dist/documents/pdf/PdfOcrLayer.d.ts +0 -4
- package/dist/documents/pdf/PdfOcrLayer.js +0 -30
- package/dist/documents/pdf/PdfOutline.d.ts +0 -6
- package/dist/documents/pdf/PdfOutline.js +0 -12
- package/dist/documents/pdf/PdfPasswordPrompt.d.ts +0 -5
- package/dist/documents/pdf/PdfPasswordPrompt.js +0 -24
- package/dist/documents/pdf/PdfThumbnails.d.ts +0 -8
- package/dist/documents/pdf/PdfThumbnails.js +0 -201
- package/dist/documents/pdf/PdfToolbar.d.ts +0 -47
- package/dist/documents/pdf/PdfToolbar.js +0 -76
- package/dist/documents/pdf/PdfViewer.d.ts +0 -36
- package/dist/documents/pdf/PdfViewer.js +0 -1522
- package/dist/documents/pdf/PdfViewerBody.d.ts +0 -22
- package/dist/documents/pdf/PdfViewerBody.js +0 -42
- package/dist/documents/pdf/macPdfNativeBridge.d.ts +0 -118
- package/dist/documents/pdf/macPdfNativeBridge.js +0 -134
- package/dist/documents/pdf/nearestVisiblePdfPage.d.ts +0 -2
- package/dist/documents/pdf/nearestVisiblePdfPage.js +0 -22
- package/dist/documents/pdf/pdfBench.d.ts +0 -88
- package/dist/documents/pdf/pdfBench.js +0 -535
- package/dist/documents/pdf/pdfBenchAutopilot.d.ts +0 -48
- package/dist/documents/pdf/pdfBenchAutopilot.js +0 -154
- package/dist/documents/pdf/pdfBenchTransport.d.ts +0 -21
- package/dist/documents/pdf/pdfBenchTransport.js +0 -233
- package/dist/documents/pdf/pdfEditModel.d.ts +0 -294
- package/dist/documents/pdf/pdfEditModel.js +0 -105
- package/dist/documents/pdf/pdfEditor.d.ts +0 -100
- package/dist/documents/pdf/pdfEditor.js +0 -68
- package/dist/documents/pdf/pdfOcr.d.ts +0 -36
- package/dist/documents/pdf/pdfOcr.js +0 -88
- package/dist/documents/pdf/pdfOcrEdit.d.ts +0 -32
- package/dist/documents/pdf/pdfOcrEdit.js +0 -138
- package/dist/documents/pdf/pdfPrinting.d.ts +0 -28
- package/dist/documents/pdf/pdfPrinting.js +0 -110
- package/dist/documents/pdf/pdfSave.d.ts +0 -87
- package/dist/documents/pdf/pdfSave.js +0 -250
- package/dist/documents/pdf/pdfShared.d.ts +0 -16
- package/dist/documents/pdf/pdfShared.js +0 -20
- package/dist/documents/pdf/pdfToMarkdown.d.ts +0 -11
- package/dist/documents/pdf/pdfToMarkdown.js +0 -67
- package/dist/documents/pdf/pdfjsLibGlobal.d.ts +0 -1
- package/dist/documents/pdf/pdfjsLibGlobal.js +0 -12
- package/dist/documents/pdf/toolbarIcons.d.ts +0 -18
- package/dist/documents/pdf/toolbarIcons.js +0 -31
- package/dist/documents/pdf/usePdfDocumentLoader.d.ts +0 -40
- package/dist/documents/pdf/usePdfDocumentLoader.js +0 -243
- package/dist/documents/pdf/usePdfEditSession.d.ts +0 -88
- package/dist/documents/pdf/usePdfEditSession.js +0 -341
- package/dist/documents/pdf/usePdfEditor.d.ts +0 -59
- package/dist/documents/pdf/usePdfEditor.js +0 -317
- package/dist/documents/pdf/usePdfFit.d.ts +0 -19
- package/dist/documents/pdf/usePdfFit.js +0 -55
- package/dist/documents/pdf/usePdfOcr.d.ts +0 -38
- package/dist/documents/pdf/usePdfOcr.js +0 -337
- package/dist/documents/pdf/usePdfPreviewRecompose.d.ts +0 -28
- package/dist/documents/pdf/usePdfPreviewRecompose.js +0 -256
- package/dist/documents/pdf/usePdfSavePlan.d.ts +0 -61
- package/dist/documents/pdf/usePdfSavePlan.js +0 -303
- package/dist/documents/pdf/usePdfSearch.d.ts +0 -31
- package/dist/documents/pdf/usePdfSearch.js +0 -367
- package/dist/documents/pdf/usePdfViewControls.d.ts +0 -72
- package/dist/documents/pdf/usePdfViewControls.js +0 -152
- package/dist/documents/scopedSelectAll.d.ts +0 -5
- package/dist/documents/scopedSelectAll.js +0 -77
- package/dist/documents/txt/cmScroll.d.ts +0 -11
- package/dist/documents/txt/cmScroll.js +0 -52
- package/dist/documents/useMirroredEditText.d.ts +0 -15
- package/dist/documents/useMirroredEditText.js +0 -29
- package/dist/documents/useSplitResize.d.ts +0 -7
- package/dist/documents/useSplitResize.js +0 -37
- package/dist/settings/rk-settings.css +0 -38
- package/dist/settings/sections/EditorSection.d.ts +0 -1
- package/dist/settings/sections/EditorSection.js +0 -18
- package/dist/settings/sections/FileAssociationsSection.d.ts +0 -1
- package/dist/settings/sections/FileAssociationsSection.js +0 -5
- package/dist/settings/sections/MacFileAssociationsBlock.d.ts +0 -33
- package/dist/settings/sections/MacFileAssociationsBlock.js +0 -151
- package/dist/settings/sections/ThemeSection.d.ts +0 -1
- package/dist/settings/sections/ThemeSection.js +0 -31
- package/dist/settings/sections/TypographySection.d.ts +0 -1
- package/dist/settings/sections/TypographySection.js +0 -19
- package/dist/settings/sections/onOff.d.ts +0 -11
- package/dist/settings/sections/onOff.js +0 -8
- package/dist/state/browserQa.d.ts +0 -21
- package/dist/state/browserQa.js +0 -303
- package/dist/state/browserQaDocx.d.ts +0 -3
- package/dist/state/browserQaDocx.js +0 -35
- package/dist/state/browserQaLicense.d.ts +0 -8
- package/dist/state/browserQaLicense.js +0 -7
- package/dist/state/browserQaPdf.d.ts +0 -60
- package/dist/state/browserQaPdf.js +0 -302
- package/dist/state/browserQaText.d.ts +0 -6
- package/dist/state/browserQaText.js +0 -48
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rightkit/document-core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Shared base for the document editors:
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Shared base for the document editors and the document workspace: document types and format registry, host bridge, drafts, diagnostics, settings store, find, print and toolbar primitives, and the one host-identity store.",
|
|
5
5
|
"license": "MIT OR Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
12
|
"import": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
-
"./styles.css": "./dist/styles.css",
|
|
15
14
|
"./app/BlockDraftContext": {
|
|
16
15
|
"types": "./dist/app/BlockDraftContext.d.ts",
|
|
17
16
|
"import": "./dist/app/BlockDraftContext.js"
|
|
@@ -40,6 +39,10 @@
|
|
|
40
39
|
"types": "./dist/app/nativePrintPreview.d.ts",
|
|
41
40
|
"import": "./dist/app/nativePrintPreview.js"
|
|
42
41
|
},
|
|
42
|
+
"./app/printPipelineShared": {
|
|
43
|
+
"types": "./dist/app/printPipelineShared.d.ts",
|
|
44
|
+
"import": "./dist/app/printPipelineShared.js"
|
|
45
|
+
},
|
|
43
46
|
"./app/resourceCensus": {
|
|
44
47
|
"types": "./dist/app/resourceCensus.d.ts",
|
|
45
48
|
"import": "./dist/app/resourceCensus.js"
|
|
@@ -52,18 +55,6 @@
|
|
|
52
55
|
"types": "./dist/app/shell/nativeMenu.d.ts",
|
|
53
56
|
"import": "./dist/app/shell/nativeMenu.js"
|
|
54
57
|
},
|
|
55
|
-
"./app/shortcutChords": {
|
|
56
|
-
"types": "./dist/app/shortcutChords.d.ts",
|
|
57
|
-
"import": "./dist/app/shortcutChords.js"
|
|
58
|
-
},
|
|
59
|
-
"./app/useCloseFindOnSurfaceChange": {
|
|
60
|
-
"types": "./dist/app/useCloseFindOnSurfaceChange.d.ts",
|
|
61
|
-
"import": "./dist/app/useCloseFindOnSurfaceChange.js"
|
|
62
|
-
},
|
|
63
|
-
"./app/useEditText": {
|
|
64
|
-
"types": "./dist/app/useEditText.d.ts",
|
|
65
|
-
"import": "./dist/app/useEditText.js"
|
|
66
|
-
},
|
|
67
58
|
"./documents/BackToTopButton": {
|
|
68
59
|
"types": "./dist/documents/BackToTopButton.d.ts",
|
|
69
60
|
"import": "./dist/documents/BackToTopButton.js"
|
|
@@ -76,10 +67,6 @@
|
|
|
76
67
|
"types": "./dist/documents/DocumentToolbarShell.d.ts",
|
|
77
68
|
"import": "./dist/documents/DocumentToolbarShell.js"
|
|
78
69
|
},
|
|
79
|
-
"./documents/FullscreenIcon": {
|
|
80
|
-
"types": "./dist/documents/FullscreenIcon.d.ts",
|
|
81
|
-
"import": "./dist/documents/FullscreenIcon.js"
|
|
82
|
-
},
|
|
83
70
|
"./documents/PreviewChrome": {
|
|
84
71
|
"types": "./dist/documents/PreviewChrome.d.ts",
|
|
85
72
|
"import": "./dist/documents/PreviewChrome.js"
|
|
@@ -92,33 +79,9 @@
|
|
|
92
79
|
"types": "./dist/documents/base64.d.ts",
|
|
93
80
|
"import": "./dist/documents/base64.js"
|
|
94
81
|
},
|
|
95
|
-
"./documents/
|
|
96
|
-
"types": "./dist/documents/
|
|
97
|
-
"import": "./dist/documents/
|
|
98
|
-
},
|
|
99
|
-
"./documents/pdf/NativePdfDocument": {
|
|
100
|
-
"types": "./dist/documents/pdf/NativePdfDocument.d.ts",
|
|
101
|
-
"import": "./dist/documents/pdf/NativePdfDocument.js"
|
|
102
|
-
},
|
|
103
|
-
"./documents/pdf/PdfViewer": {
|
|
104
|
-
"types": "./dist/documents/pdf/PdfViewer.d.ts",
|
|
105
|
-
"import": "./dist/documents/pdf/PdfViewer.js"
|
|
106
|
-
},
|
|
107
|
-
"./documents/pdf/macPdfNativeBridge": {
|
|
108
|
-
"types": "./dist/documents/pdf/macPdfNativeBridge.d.ts",
|
|
109
|
-
"import": "./dist/documents/pdf/macPdfNativeBridge.js"
|
|
110
|
-
},
|
|
111
|
-
"./documents/pdf/pdfEditModel": {
|
|
112
|
-
"types": "./dist/documents/pdf/pdfEditModel.d.ts",
|
|
113
|
-
"import": "./dist/documents/pdf/pdfEditModel.js"
|
|
114
|
-
},
|
|
115
|
-
"./documents/pdf/pdfEditor": {
|
|
116
|
-
"types": "./dist/documents/pdf/pdfEditor.d.ts",
|
|
117
|
-
"import": "./dist/documents/pdf/pdfEditor.js"
|
|
118
|
-
},
|
|
119
|
-
"./documents/pdf/pdfToMarkdown": {
|
|
120
|
-
"types": "./dist/documents/pdf/pdfToMarkdown.d.ts",
|
|
121
|
-
"import": "./dist/documents/pdf/pdfToMarkdown.js"
|
|
82
|
+
"./documents/documentFormats": {
|
|
83
|
+
"types": "./dist/documents/documentFormats.d.ts",
|
|
84
|
+
"import": "./dist/documents/documentFormats.js"
|
|
122
85
|
},
|
|
123
86
|
"./documents/perfEventCounters": {
|
|
124
87
|
"types": "./dist/documents/perfEventCounters.d.ts",
|
|
@@ -132,10 +95,6 @@
|
|
|
132
95
|
"types": "./dist/documents/previewViewport.d.ts",
|
|
133
96
|
"import": "./dist/documents/previewViewport.js"
|
|
134
97
|
},
|
|
135
|
-
"./documents/scopedSelectAll": {
|
|
136
|
-
"types": "./dist/documents/scopedSelectAll.d.ts",
|
|
137
|
-
"import": "./dist/documents/scopedSelectAll.js"
|
|
138
|
-
},
|
|
139
98
|
"./documents/searchUtils": {
|
|
140
99
|
"types": "./dist/documents/searchUtils.d.ts",
|
|
141
100
|
"import": "./dist/documents/searchUtils.js"
|
|
@@ -148,30 +107,23 @@
|
|
|
148
107
|
"types": "./dist/documents/toolbarPrimitives.d.ts",
|
|
149
108
|
"import": "./dist/documents/toolbarPrimitives.js"
|
|
150
109
|
},
|
|
151
|
-
"./documents/txt/cmScroll": {
|
|
152
|
-
"types": "./dist/documents/txt/cmScroll.d.ts",
|
|
153
|
-
"import": "./dist/documents/txt/cmScroll.js"
|
|
154
|
-
},
|
|
155
110
|
"./documents/types": {
|
|
156
111
|
"types": "./dist/documents/types.d.ts",
|
|
157
112
|
"import": "./dist/documents/types.js"
|
|
158
113
|
},
|
|
159
|
-
"./documents/useMirroredEditText": {
|
|
160
|
-
"types": "./dist/documents/useMirroredEditText.d.ts",
|
|
161
|
-
"import": "./dist/documents/useMirroredEditText.js"
|
|
162
|
-
},
|
|
163
114
|
"./documents/usePreviewFind": {
|
|
164
115
|
"types": "./dist/documents/usePreviewFind.d.ts",
|
|
165
116
|
"import": "./dist/documents/usePreviewFind.js"
|
|
166
117
|
},
|
|
167
|
-
"./documents/useSplitResize": {
|
|
168
|
-
"types": "./dist/documents/useSplitResize.d.ts",
|
|
169
|
-
"import": "./dist/documents/useSplitResize.js"
|
|
170
|
-
},
|
|
171
118
|
"./documents/web/webUrl": {
|
|
172
119
|
"types": "./dist/documents/web/webUrl.d.ts",
|
|
173
120
|
"import": "./dist/documents/web/webUrl.js"
|
|
174
121
|
},
|
|
122
|
+
"./host": {
|
|
123
|
+
"types": "./dist/host.d.ts",
|
|
124
|
+
"import": "./dist/host.js"
|
|
125
|
+
},
|
|
126
|
+
"./package.json": "./package.json",
|
|
175
127
|
"./platform": {
|
|
176
128
|
"types": "./dist/platform.d.ts",
|
|
177
129
|
"import": "./dist/platform.js"
|
|
@@ -180,27 +132,6 @@
|
|
|
180
132
|
"types": "./dist/settings/fonts.d.ts",
|
|
181
133
|
"import": "./dist/settings/fonts.js"
|
|
182
134
|
},
|
|
183
|
-
"./settings/rk-settings.css": "./dist/settings/rk-settings.css",
|
|
184
|
-
"./settings/sections/EditorSection": {
|
|
185
|
-
"types": "./dist/settings/sections/EditorSection.d.ts",
|
|
186
|
-
"import": "./dist/settings/sections/EditorSection.js"
|
|
187
|
-
},
|
|
188
|
-
"./settings/sections/FileAssociationsSection": {
|
|
189
|
-
"types": "./dist/settings/sections/FileAssociationsSection.d.ts",
|
|
190
|
-
"import": "./dist/settings/sections/FileAssociationsSection.js"
|
|
191
|
-
},
|
|
192
|
-
"./settings/sections/ThemeSection": {
|
|
193
|
-
"types": "./dist/settings/sections/ThemeSection.d.ts",
|
|
194
|
-
"import": "./dist/settings/sections/ThemeSection.js"
|
|
195
|
-
},
|
|
196
|
-
"./settings/sections/TypographySection": {
|
|
197
|
-
"types": "./dist/settings/sections/TypographySection.d.ts",
|
|
198
|
-
"import": "./dist/settings/sections/TypographySection.js"
|
|
199
|
-
},
|
|
200
|
-
"./settings/sections/onOff": {
|
|
201
|
-
"types": "./dist/settings/sections/onOff.d.ts",
|
|
202
|
-
"import": "./dist/settings/sections/onOff.js"
|
|
203
|
-
},
|
|
204
135
|
"./settings/settings": {
|
|
205
136
|
"types": "./dist/settings/settings.d.ts",
|
|
206
137
|
"import": "./dist/settings/settings.js"
|
|
@@ -233,7 +164,7 @@
|
|
|
233
164
|
"types": "./dist/state/tauriBridge.d.ts",
|
|
234
165
|
"import": "./dist/state/tauriBridge.js"
|
|
235
166
|
},
|
|
236
|
-
"./
|
|
167
|
+
"./styles.css": "./dist/styles.css"
|
|
237
168
|
},
|
|
238
169
|
"files": [
|
|
239
170
|
"dist",
|
|
@@ -246,18 +177,16 @@
|
|
|
246
177
|
"*.css"
|
|
247
178
|
],
|
|
248
179
|
"dependencies": {
|
|
249
|
-
"@codemirror/view": "^6.43.14",
|
|
250
180
|
"@phosphor-icons/react": "^2.1.10",
|
|
251
|
-
"@rightkit/license": "^0.3.
|
|
181
|
+
"@rightkit/license": "^0.3.1",
|
|
252
182
|
"@rightkit/logs": "^0.1.6",
|
|
253
|
-
"@rightkit/pdf-ui": "^0.
|
|
254
|
-
"@rightkit/platform-ui": "^0.4.
|
|
255
|
-
"@rightkit/react-shell": "^0.7.
|
|
256
|
-
"@rightkit/settings-ui": "^0.7.
|
|
257
|
-
"@rightkit/tauri-shell": "^0.1.
|
|
258
|
-
"@rightkit/theme": "^0.3.
|
|
259
|
-
"@tauri-apps/api": "^2.12.2"
|
|
260
|
-
"pdfjs-dist": "6.4.299"
|
|
183
|
+
"@rightkit/pdf-ui": "^0.3.0",
|
|
184
|
+
"@rightkit/platform-ui": "^0.4.1",
|
|
185
|
+
"@rightkit/react-shell": "^0.7.3",
|
|
186
|
+
"@rightkit/settings-ui": "^0.7.1",
|
|
187
|
+
"@rightkit/tauri-shell": "^0.1.4",
|
|
188
|
+
"@rightkit/theme": "^0.3.2",
|
|
189
|
+
"@tauri-apps/api": "^2.12.2"
|
|
261
190
|
},
|
|
262
191
|
"peerDependencies": {
|
|
263
192
|
"react": ">=18 <21",
|
|
@@ -270,8 +199,7 @@
|
|
|
270
199
|
"react": "^19.3.1",
|
|
271
200
|
"react-dom": "^19.3.1",
|
|
272
201
|
"typescript": "^7.0.2",
|
|
273
|
-
"vite": "^8.3.4"
|
|
274
|
-
"vitest": "^5.0.5"
|
|
202
|
+
"vite": "^8.3.4"
|
|
275
203
|
},
|
|
276
204
|
"publishConfig": {
|
|
277
205
|
"registry": "https://registry.npmjs.org",
|
|
@@ -284,7 +212,6 @@
|
|
|
284
212
|
},
|
|
285
213
|
"scripts": {
|
|
286
214
|
"build": "tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
287
|
-
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
288
|
-
"test": "pnpm --filter \"@rightkit/document-core^...\" run build && vitest run"
|
|
215
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
289
216
|
}
|
|
290
217
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chords for "Ctrl, Meta or both, no Alt" shortcuts, for handlers that used to test
|
|
3
|
-
* `(event.metaKey || event.ctrlKey)` by hand. The shortcut registry matches modifiers exactly, so the
|
|
4
|
-
* three Ctrl/Meta combinations are listed; `shift` selects which Shift states are accepted.
|
|
5
|
-
*/
|
|
6
|
-
export declare function ctrlMetaChords(key: string, shift?: readonly boolean[]): string[];
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chords for "Ctrl, Meta or both, no Alt" shortcuts, for handlers that used to test
|
|
3
|
-
* `(event.metaKey || event.ctrlKey)` by hand. The shortcut registry matches modifiers exactly, so the
|
|
4
|
-
* three Ctrl/Meta combinations are listed; `shift` selects which Shift states are accepted.
|
|
5
|
-
*/
|
|
6
|
-
export function ctrlMetaChords(key, shift = [false]) {
|
|
7
|
-
const chords = [];
|
|
8
|
-
for (const withShift of shift) {
|
|
9
|
-
for (const mods of ["ctrl", "meta", "ctrl+meta"]) {
|
|
10
|
-
chords.push(`${mods}${withShift ? "+shift" : ""}+${key}`);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return chords;
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Close the shared find bar whenever a document switches between its rendered surface and its raw
|
|
3
|
-
* source.
|
|
4
|
-
*
|
|
5
|
-
* Both surfaces register a search provider into the SAME path-scoped slot — a CodeMirror "source"
|
|
6
|
-
* provider for the raw text, a rendered provider for the preview/editor. Switching between them
|
|
7
|
-
* therefore swaps the provider underneath an open find bar, silently retargeting the user's query
|
|
8
|
-
* at completely different text with no visible cue that it happened. Closing find on the switch
|
|
9
|
-
* makes the user reopen it against whichever surface they actually meant.
|
|
10
|
-
*
|
|
11
|
-
* `surfaceKey` is anything that identifies the current surface (a boolean like `showSource` is
|
|
12
|
-
* typical); find closes on any change to it.
|
|
13
|
-
*/
|
|
14
|
-
export declare function useCloseFindOnSurfaceChange(surfaceKey: unknown, findOpen: boolean, onCloseFind?: () => void): void;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Close the shared find bar whenever a document switches between its rendered surface and its raw
|
|
4
|
-
* source.
|
|
5
|
-
*
|
|
6
|
-
* Both surfaces register a search provider into the SAME path-scoped slot — a CodeMirror "source"
|
|
7
|
-
* provider for the raw text, a rendered provider for the preview/editor. Switching between them
|
|
8
|
-
* therefore swaps the provider underneath an open find bar, silently retargeting the user's query
|
|
9
|
-
* at completely different text with no visible cue that it happened. Closing find on the switch
|
|
10
|
-
* makes the user reopen it against whichever surface they actually meant.
|
|
11
|
-
*
|
|
12
|
-
* `surfaceKey` is anything that identifies the current surface (a boolean like `showSource` is
|
|
13
|
-
* typical); find closes on any change to it.
|
|
14
|
-
*/
|
|
15
|
-
export function useCloseFindOnSurfaceChange(surfaceKey, findOpen, onCloseFind) {
|
|
16
|
-
const previousSurfaceRef = useRef(surfaceKey);
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
const previous = previousSurfaceRef.current;
|
|
19
|
-
previousSurfaceRef.current = surfaceKey;
|
|
20
|
-
if (previous !== surfaceKey && findOpen)
|
|
21
|
-
onCloseFind?.();
|
|
22
|
-
}, [surfaceKey, findOpen, onCloseFind]);
|
|
23
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subscribe a component to ONE document's live unsaved-edit text from the edits store (useDocumentTabs).
|
|
3
|
-
* Re-renders only this component when that path's edits change — App and the rest of the chrome stay put.
|
|
4
|
-
* Consumers: the bottom bar (word-count/dirty) and each tab's live title (LiveTitle).
|
|
5
|
-
*/
|
|
6
|
-
export declare function useEditText(subscribeEdits: (path: string, cb: () => void) => () => void, getEditSnapshot: (path: string) => string | undefined, path: string): string | undefined;
|
package/dist/app/useEditText.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useCallback, useSyncExternalStore } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Subscribe a component to ONE document's live unsaved-edit text from the edits store (useDocumentTabs).
|
|
4
|
-
* Re-renders only this component when that path's edits change — App and the rest of the chrome stay put.
|
|
5
|
-
* Consumers: the bottom bar (word-count/dirty) and each tab's live title (LiveTitle).
|
|
6
|
-
*/
|
|
7
|
-
export function useEditText(subscribeEdits, getEditSnapshot, path) {
|
|
8
|
-
const subscribe = useCallback((cb) => subscribeEdits(path, cb), [subscribeEdits, path]);
|
|
9
|
-
return useSyncExternalStore(subscribe, () => getEditSnapshot(path));
|
|
10
|
-
}
|
package/dist/appName.d.ts
DELETED
package/dist/appName.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { ArrowsIn } from "@phosphor-icons/react/dist/icons/ArrowsIn";
|
|
3
|
-
import { ArrowsOut } from "@phosphor-icons/react/dist/icons/ArrowsOut";
|
|
4
|
-
/** Fullscreen enter/exit glyph — shared by the HTML, Markdown, and MDX source-drawer toggles. */
|
|
5
|
-
export function FullscreenIcon({ restore }) {
|
|
6
|
-
return restore ? (_jsx(ArrowsIn, { size: 14, weight: "regular", "aria-hidden": "true" })) : (_jsx(ArrowsOut, { size: 14, weight: "regular", "aria-hidden": "true" }));
|
|
7
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Generated copy of mdxRuntimeScript.txt as a module (Node cannot import "?raw"); kept equal by mdxRuntimeScript.test.ts.
|
|
2
|
-
export const mdxRuntimeScript = "(() => {\n const sessionId = \"__VR_SESSION_ID__\";\n const parentTarget = \"*\";\n const compiledType = \"__VR_MDX_COMPILED__\";\n const linkType = \"__VR_MDX_LINK__\";\n const runtimeErrorType = \"__VR_MDX_RUNTIME_ERROR__\";\n const heightType = \"__VR_MDX_HEIGHT__\";\n const findOpenType = \"__VR_MDX_FIND_OPEN__\";\n const findType = \"__VR_MDX_FIND__\";\n const stepType = \"__VR_MDX_FIND_STEP__\";\n const clearType = \"__VR_MDX_FIND_CLEAR__\";\n const resultType = \"__VR_MDX_FIND_RESULT__\";\n const printType = \"__VR_MDX_PRINT__\";\n const printContentType = \"__VR_MDX_PRINT_CONTENT__\";\n const themeType = \"__VR_MDX_THEME__\";\n\n const MARK_CLASS = \"__vr_find\";\n const ACTIVE_CLASS = \"__vr_find_active\";\n const Fragment = Symbol(\"vr-mdx-fragment\");\n let rootEl = null;\n let entryId = null;\n let moduleGraph = {};\n const moduleCache = new Map();\n\n function jsx(type, props, key) {\n const nextProps = props ? {...props} : {};\n if (key !== undefined) nextProps.key = key;\n return {__vrVNode: true, type, props: nextProps};\n }\n\n const jsxs = jsx;\n const jsxDEV = jsx;\n\n function createElement(type, props, ...children) {\n const nextProps = props ? {...props} : {};\n if (children.length === 1) nextProps.children = children[0];\n else if (children.length > 1) nextProps.children = children;\n return {__vrVNode: true, type, props: nextProps};\n }\n\n function postRuntimeError(err, fallbackName) {\n parent.postMessage(\n {\n type: runtimeErrorType,\n sessionId,\n name: err && err.name ? err.name : fallbackName,\n message: err && err.message ? err.message : String(err),\n stack: err && err.stack ? err.stack : undefined,\n },\n parentTarget,\n );\n }\n\n function normalizeChildren(value) {\n if (value == null || value === false || value === true) return [];\n return Array.isArray(value) ? value.flatMap(normalizeChildren) : [value];\n }\n\n function appendChildren(target, children) {\n for (const child of normalizeChildren(children)) {\n target.appendChild(renderNode(child));\n }\n }\n\n function styleObjectToCssText(style) {\n return Object.entries(style)\n .map(([key, value]) => {\n const cssKey = key.replace(/[A-Z]/g, (match) => \"-\" + match.toLowerCase());\n return value == null ? \"\" : cssKey + \":\" + String(value);\n })\n .filter(Boolean)\n .join(\";\");\n }\n\n function applyProps(el, props) {\n for (const [name, value] of Object.entries(props || {})) {\n if (name === \"children\" || name === \"key\" || value == null || value === false) continue;\n if (name === \"className\") {\n el.setAttribute(\"class\", String(value));\n continue;\n }\n if (name === \"htmlFor\") {\n el.setAttribute(\"for\", String(value));\n continue;\n }\n if (name === \"style\" && typeof value === \"object\") {\n el.setAttribute(\"style\", styleObjectToCssText(value));\n continue;\n }\n if (name === \"dangerouslySetInnerHTML\" && value && typeof value === \"object\" && \"__html\" in value) {\n el.innerHTML = String(value.__html || \"\");\n continue;\n }\n if (name.startsWith(\"on\") && typeof value === \"function\") {\n el.addEventListener(name.slice(2).toLowerCase(), (event) => {\n try {\n value(event);\n } catch (err) {\n postRuntimeError(err, \"EventHandlerError\");\n }\n });\n continue;\n }\n if (value === true) {\n el.setAttribute(name, \"\");\n continue;\n }\n el.setAttribute(name, String(value));\n }\n }\n\n function renderNode(node) {\n if (node == null || node === false || node === true) return document.createComment(\"\");\n if (Array.isArray(node)) {\n const frag = document.createDocumentFragment();\n appendChildren(frag, node);\n return frag;\n }\n if (typeof node === \"string\" || typeof node === \"number\") {\n return document.createTextNode(String(node));\n }\n if (!node || typeof node !== \"object\" || !node.__vrVNode) {\n return document.createTextNode(String(node));\n }\n\n const props = node.props || {};\n if (node.type === Fragment) {\n const frag = document.createDocumentFragment();\n appendChildren(frag, props.children);\n return frag;\n }\n\n if (typeof node.type === \"function\") {\n return renderNode(node.type(props));\n }\n\n if (typeof node.type !== \"string\") {\n throw new Error(\"Unknown component type in MDX preview.\");\n }\n\n const el = document.createElement(node.type);\n applyProps(el, props);\n if (!(props.dangerouslySetInnerHTML && typeof props.dangerouslySetInnerHTML === \"object\")) {\n appendChildren(el, props.children);\n }\n return el;\n }\n\n function calloutTone(type) {\n switch (String(type || \"NOTE\").toUpperCase()) {\n case \"TIP\":\n case \"IMPORTANT\":\n return \"#0c6aa5\";\n case \"WARNING\":\n return \"#d97706\";\n case \"CAUTION\":\n return \"#dc2626\";\n default:\n return \"#64748b\";\n }\n }\n\n function builtins() {\n return {\n Callout(props) {\n const kind = String(props.type || \"NOTE\").toUpperCase();\n const title = props.title || kind;\n const tone = calloutTone(kind);\n return jsxs(\"aside\", {\n className: \"vr-mdx-callout\",\n style: {borderLeft: \"4px solid \" + tone},\n children: [\n jsx(\"div\", {className: \"vr-mdx-label\", children: title}),\n jsx(\"div\", {children: props.children}),\n ],\n });\n },\n Stepper(props) {\n return jsx(\"ol\", {className: \"vr-mdx-stepper\", children: props.children});\n },\n Comparison(props) {\n return jsx(\"div\", {className: \"vr-mdx-grid\", children: props.children});\n },\n Faq(props) {\n return jsx(\"div\", {className: \"vr-mdx-faq\", children: props.children});\n },\n RichTable(props) {\n return jsx(\"div\", {className: \"vr-mdx-table-wrap\", children: props.children});\n },\n Frontmatter(props) {\n if (props.data && typeof props.data === \"object\") {\n const rows = Object.entries(props.data);\n return jsx(\"dl\", {\n className: \"vr-mdx-frontmatter\",\n children: rows.map(([key, value]) =>\n jsxs(Fragment, {\n children: [\n jsx(\"dt\", {children: key}),\n jsx(\"dd\", {children: typeof value === \"string\" ? value : JSON.stringify(value)}),\n ],\n }),\n ),\n });\n }\n return jsx(\"div\", {className: \"vr-mdx-frontmatter\", children: props.children});\n },\n CodeBlock(props) {\n const lang = props.lang || props.language || \"text\";\n const code = props.code || props.children || \"\";\n return jsxs(\"div\", {\n className: \"vr-mdx-code\",\n children: [\n jsx(\"div\", {className: \"vr-mdx-code-label\", children: lang}),\n jsx(\"pre\", {children: jsx(\"code\", {children: typeof code === \"string\" ? code : String(code)})}),\n ],\n });\n },\n MermaidBlock(props) {\n const code = props.code || props.children || \"\";\n return jsxs(\"pre\", {\n className: \"vr-mdx-code\",\n children: [\n jsx(\"div\", {className: \"vr-mdx-code-label\", children: \"mermaid\"}),\n jsx(\"code\", {children: typeof code === \"string\" ? code : String(code)}),\n ],\n });\n },\n Math(props) {\n const value = props.value || props.children || \"\";\n return props.display\n ? jsx(\"pre\", {className: \"vr-mdx-math-block\", children: String(value)})\n : jsx(\"code\", {className: \"vr-mdx-math-inline\", children: String(value)});\n },\n };\n }\n\n function resolveModuleId(spec, parentId) {\n if (typeof spec !== \"string\") throw new Error(\"MDX import specifier must be a string.\");\n if (/^https:\\/\\/viewright\\.invalid\\//i.test(spec)) return spec;\n if (/^[a-z][a-z0-9+.-]*:/i.test(spec)) {\n throw new Error(\"Blocked external module import: \" + spec);\n }\n return new URL(spec, parentId).href;\n }\n\n function loadModule(spec, parentId) {\n const moduleId = parentId ? resolveModuleId(spec, parentId) : spec;\n const cached = moduleCache.get(moduleId);\n if (cached) return cached.exports;\n const record = moduleGraph[moduleId];\n if (!record) throw new Error(\"Missing contained MDX module: \" + moduleId);\n\n if (record.kind === \"cjs\") {\n const module = {exports: {}};\n moduleCache.set(moduleId, module);\n try {\n const require = (childSpec) => loadModule(childSpec, moduleId);\n const factory = new Function(\n \"exports\",\n \"module\",\n \"require\",\n \"createElement\",\n \"Fragment\",\n \"jsx\",\n \"jsxs\",\n \"jsxDEV\",\n record.code,\n );\n factory(\n module.exports,\n module,\n require,\n createElement,\n Fragment,\n jsx,\n jsxs,\n jsxDEV,\n );\n return module.exports;\n } catch (err) {\n moduleCache.delete(moduleId);\n throw err;\n }\n }\n\n const module = {exports: {}};\n moduleCache.set(moduleId, module);\n try {\n const require = (childSpec) => loadModule(childSpec, moduleId);\n const factory = new Function(record.code);\n module.exports = factory(\n {Fragment, jsx, jsxs, jsxDEV},\n require,\n );\n return module.exports;\n } catch (err) {\n moduleCache.delete(moduleId);\n throw err;\n }\n }\n\n function renderEntry() {\n if (!rootEl) rootEl = document.getElementById(\"root\");\n if (!rootEl || !entryId) return;\n const mod = loadModule(entryId, null);\n const Content = mod && (mod.default || mod.MDXContent);\n if (typeof Content !== \"function\") {\n throw new Error(\"Compiled MDX did not export a default component.\");\n }\n const tree = jsx(Content, {components: builtins()});\n rootEl.replaceChildren(renderNode(tree));\n reportHeight();\n }\n\n function injectMarkStyle() {\n if (document.getElementById(\"__vr_find_style__\")) return;\n const s = document.createElement(\"style\");\n s.id = \"__vr_find_style__\";\n s.textContent =\n \".\" + MARK_CLASS + \"{background-color:rgba(12,106,165,.40);border-radius:2px;}\" +\n \".\" + ACTIVE_CLASS + \"{background-color:#0c6aa5;color:#fff;border-radius:2px;}\";\n document.head.appendChild(s);\n }\n\n let matches = [];\n let markGroups = [];\n let nodeIndex = [];\n let active = -1;\n\n const isWordChar = (ch) => !!ch && /[\\p{L}\\p{N}_]/u.test(ch);\n\n function buildIndex() {\n nodeIndex = [];\n const root = document.body || document.documentElement;\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(n) {\n const p = n.parentNode;\n if (!p) return NodeFilter.FILTER_REJECT;\n const tag = p.nodeName;\n if (tag === \"SCRIPT\" || tag === \"STYLE\" || tag === \"NOSCRIPT\" || tag === \"TITLE\") return NodeFilter.FILTER_REJECT;\n if (!n.nodeValue || n.nodeValue.length === 0) return NodeFilter.FILTER_REJECT;\n return NodeFilter.FILTER_ACCEPT;\n },\n });\n let offset = 0;\n let text = \"\";\n let n;\n while ((n = walker.nextNode())) {\n const value = n.nodeValue || \"\";\n const len = value.length;\n nodeIndex.push({node: n, start: offset, end: offset + len});\n offset += len;\n text += value;\n }\n return text;\n }\n\n function compute(text, q, opts) {\n if (!q) return [];\n const matchCase = !!opts.matchCase;\n const wholeWord = !!opts.wholeWord;\n const haystack = matchCase ? text : text.toLocaleLowerCase();\n const needle = matchCase ? q : q.toLocaleLowerCase();\n const out = [];\n let pos = haystack.indexOf(needle);\n while (pos !== -1) {\n const end = pos + q.length;\n const before = text[pos - 1];\n const after = text[end];\n if (!wholeWord || (!isWordChar(before) && !isWordChar(after))) out.push({start: pos, end});\n pos = haystack.indexOf(needle, pos + Math.max(1, needle.length));\n }\n return out;\n }\n\n function clearMarks() {\n for (const grp of markGroups) {\n for (const span of grp) {\n const parent = span.parentNode;\n if (!parent) continue;\n while (span.firstChild) parent.insertBefore(span.firstChild, span);\n parent.removeChild(span);\n parent.normalize();\n }\n }\n markGroups = [];\n }\n\n function wrapRange(start, end) {\n const groups = [];\n for (let i = nodeIndex.length - 1; i >= 0; i--) {\n const seg = nodeIndex[i];\n if (seg.end <= start || seg.start >= end) continue;\n const ls = Math.max(0, start - seg.start);\n const le = Math.min(seg.node.nodeValue.length, end - seg.start);\n let node = seg.node;\n if (seg.node.nodeValue.length > le) node.splitText(le);\n if (ls > 0) node = node.splitText(ls);\n const span = document.createElement(\"span\");\n span.className = MARK_CLASS;\n const parent = node.parentNode;\n parent.insertBefore(span, node);\n span.appendChild(node);\n groups.unshift(span);\n }\n return groups;\n }\n\n function setActive(idx) {\n for (let g = 0; g < markGroups.length; g++) {\n for (const span of markGroups[g]) {\n span.className = g === idx ? MARK_CLASS + \" \" + ACTIVE_CLASS : MARK_CLASS;\n }\n }\n if (idx >= 0 && markGroups[idx] && markGroups[idx][0] && markGroups[idx][0].scrollIntoView) {\n markGroups[idx][0].scrollIntoView({block: \"center\"});\n }\n }\n\n function applyMatches() {\n injectMarkStyle();\n markGroups = matches.map((m) => wrapRange(m.start, m.end));\n if (active >= 0) setActive(active);\n }\n\n function respond(requestId) {\n parent.postMessage(\n {type: resultType, sessionId, requestId, count: matches.length, activeIndex: active},\n parentTarget,\n );\n }\n\n function anchorFrom(event) {\n return event.target && event.target.closest ? event.target.closest(\"a[href]\") : null;\n }\n\n document.addEventListener(\n \"click\",\n (event) => {\n if (event.defaultPrevented || event.button !== 0) return;\n const anchor = anchorFrom(event);\n if (!anchor) return;\n const href = anchor.getAttribute(\"href\") || \"\";\n if (!href) return;\n if (href.charAt(0) === \"#\") {\n event.preventDefault();\n const id = decodeURIComponent(href.slice(1));\n if (!id) {\n window.scrollTo({top: 0});\n return;\n }\n let target = document.getElementById(id);\n if (!target) {\n try {\n target = document.querySelector('[name=\"' + (window.CSS && CSS.escape ? CSS.escape(id) : id) + '\"]');\n } catch (_) {\n target = null;\n }\n }\n if (target && target.scrollIntoView) target.scrollIntoView();\n return;\n }\n event.preventDefault();\n parent.postMessage({type: linkType, sessionId, href, newTab: !!(event.metaKey || event.ctrlKey)}, parentTarget);\n },\n true,\n );\n\n window.addEventListener(\n \"keydown\",\n (e) => {\n if ((e.ctrlKey || e.metaKey) && !e.altKey && (e.key || \"\").toLowerCase() === \"f\") {\n e.preventDefault();\n parent.postMessage({type: findOpenType, sessionId}, parentTarget);\n }\n },\n true,\n );\n\n let lastReportedHeight = -1;\n function reportHeight() {\n const h = Math.max(\n document.documentElement.scrollHeight,\n document.body ? document.body.scrollHeight : 0,\n );\n if (h === lastReportedHeight) return; // unchanged \u2014 don't wake the parent for nothing\n lastReportedHeight = h;\n parent.postMessage({type: heightType, sessionId, height: h}, parentTarget);\n }\n\n if (typeof ResizeObserver !== \"undefined\" && document.documentElement) {\n const observer = new ResizeObserver(reportHeight);\n observer.observe(document.documentElement);\n window.addEventListener(\"pagehide\", () => observer.disconnect());\n } else {\n // Fallback for engines without ResizeObserver. Poll once a second until the height has been\n // unchanged for three ticks, then stop; pagehide clears it too. Never a forever-interval.\n window.addEventListener(\"load\", reportHeight);\n let stableTicks = 0;\n const poll = setInterval(() => {\n const before = lastReportedHeight;\n reportHeight();\n stableTicks = lastReportedHeight === before ? stableTicks + 1 : 0;\n if (stableTicks >= 3) clearInterval(poll);\n }, 1000);\n window.addEventListener(\"pagehide\", () => clearInterval(poll));\n }\n\n // Parent-resolved app theme colors arrive as --vr-* custom properties. Only well-formed names\n // are applied, so a malformed message cannot inject arbitrary CSS.\n function applyTheme(vars) {\n const root = document.documentElement;\n for (const name of Object.keys(vars)) {\n if (/^--vr-[a-z-]+$/.test(name) && typeof vars[name] === \"string\") {\n root.style.setProperty(name, vars[name]);\n }\n }\n }\n\n window.addEventListener(\"message\", (event) => {\n if (event.source !== parent) return;\n const data = event.data;\n if (!data || data.sessionId !== sessionId) return;\n switch (data.type) {\n case compiledType:\n if (typeof data.entryId === \"string\" && data.modules && typeof data.modules === \"object\") {\n try {\n entryId = data.entryId;\n moduleGraph = data.modules;\n moduleCache.clear();\n renderEntry();\n } catch (err) {\n if (!rootEl) rootEl = document.getElementById(\"root\");\n if (rootEl) {\n rootEl.replaceChildren(\n renderNode(\n jsx(\"pre\", {\n className: \"vr-mdx-runtime-error\",\n \"data-vr-runtime-error\": \"1\",\n children: err && err.message ? err.message : String(err),\n }),\n ),\n );\n }\n postRuntimeError(err, \"MdxRuntimeError\");\n }\n }\n break;\n case themeType:\n if (data.vars && typeof data.vars === \"object\") applyTheme(data.vars);\n break;\n case findType: {\n clearMarks();\n const text = buildIndex();\n matches = compute(text, data.query || \"\", {matchCase: !!data.matchCase, wholeWord: !!data.wholeWord});\n active = matches.length ? 0 : -1;\n applyMatches();\n respond(data.requestId);\n break;\n }\n case stepType: {\n const n = matches.length;\n const next = n ? (((active + (data.delta | 0)) % n) + n) % n : -1;\n active = next;\n setActive(active);\n respond(data.requestId);\n break;\n }\n case clearType:\n clearMarks();\n matches = [];\n active = -1;\n break;\n case printType:\n // Don't print this frame directly: it's pinned to the on-screen content-pane box, so\n // window.print() here would paginate against that fixed viewport, not the document's full\n // height. Send the rendered markup back to the parent, which prints it in-flow.\n try {\n parent.postMessage({ type: printContentType, sessionId: sessionId, html: document.documentElement.outerHTML }, parentTarget);\n } catch (e) {}\n break;\n }\n });\n})();\n";
|
|
3
|
-
export default mdxRuntimeScript;
|