@alwith/module-editor 0.0.0-stage → 0.1.0-rc.13
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/LICENSE +94 -0
- package/README.md +47 -2
- package/THIRD_PARTY_NOTICES.md +3 -0
- package/dist/core.d.ts +56 -0
- package/dist/core.js +8 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +1 -0
- package/dist/monaco.d.ts +16 -0
- package/dist/monaco.js +1 -0
- package/dist/new-tab.d.ts +43 -0
- package/dist/new-tab.js +1 -0
- package/dist/preview-source-mode-toggle.d.ts +8 -0
- package/dist/preview-source-mode-toggle.js +1 -0
- package/dist/previews/excel-data.d.ts +20 -0
- package/dist/previews/excel-data.js +3 -0
- package/dist/previews/excel-navigation.d.ts +4 -0
- package/dist/previews/excel-navigation.js +1 -0
- package/dist/previews/excel.d.ts +3 -0
- package/dist/previews/excel.js +1 -0
- package/dist/previews/html-resources.d.ts +3 -0
- package/dist/previews/html-resources.js +2 -0
- package/dist/previews/html-session.d.ts +8 -0
- package/dist/previews/html-session.js +1 -0
- package/dist/previews/html.d.ts +3 -0
- package/dist/previews/html.js +1 -0
- package/dist/previews/index.d.ts +83 -0
- package/dist/previews/index.js +1 -0
- package/dist/previews/markdown-outline.d.ts +6 -0
- package/dist/previews/markdown-outline.js +1 -0
- package/dist/previews/markdown-readonly.d.ts +4 -0
- package/dist/previews/markdown-readonly.js +2 -0
- package/dist/previews/markdown.css +918 -0
- package/dist/previews/markdown.d.ts +5 -0
- package/dist/previews/markdown.js +1 -0
- package/dist/previews/media-types.d.ts +1 -0
- package/dist/previews/media-types.js +1 -0
- package/dist/previews/media.d.ts +2 -0
- package/dist/previews/media.js +1 -0
- package/dist/previews/pdf-controls.d.ts +1 -0
- package/dist/previews/pdf-controls.js +1 -0
- package/dist/previews/pdf.d.ts +2 -0
- package/dist/previews/pdf.js +1 -0
- package/dist/previews/shared.d.ts +7 -0
- package/dist/previews/shared.js +1 -0
- package/dist/previews/styles.css +142 -0
- package/dist/previews/tiff.d.ts +2 -0
- package/dist/previews/tiff.js +1 -0
- package/dist/previews/viewers.css +221 -0
- package/dist/previews/word.d.ts +2 -0
- package/dist/previews/word.js +1 -0
- package/dist/quick-start-assets.d.ts +4 -0
- package/dist/quick-start-assets.js +1 -0
- package/dist/quick-start-data.d.ts +11 -0
- package/dist/quick-start-data.js +1 -0
- package/dist/quick-start-icons.d.ts +9 -0
- package/dist/quick-start-icons.js +1 -0
- package/dist/shortcut-hint.d.ts +4 -0
- package/dist/shortcut-hint.js +0 -0
- package/dist/styles.css +726 -0
- package/dist/workspace-assets.d.ts +2 -0
- package/dist/workspace-assets.js +1 -0
- package/dist/workspace-tabs.d.ts +27 -0
- package/dist/workspace-tabs.js +1 -0
- package/dist/workspace.d.ts +31 -0
- package/dist/workspace.js +1 -0
- package/package.json +163 -4
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const tutorialImage = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MC42NDYgNDYuMzc4NUw0MS4wNjczIDM4LjkyMDNDNDAuNjEyNiAzOC41NjU5IDM5Ljk2NTcgMzguNjAxIDM5LjU1MjMgMzkuMDAyTDMzLjQ0NTggNDQuOTE4M0MzMi43NTY1IDQ1LjU4NTkgMzEuNjMyMiA0NC44OTI1IDMxLjkxOTUgNDMuOTc2OUwzMy45MTE5IDM3LjYxOTNDMzQuMTczMyAzNi43ODQzIDMzLjQ0ODkgMzUuOTcyIDMyLjU4OTEgMzYuMTM4NEwyMy4wMTY1IDM4LjMwMTNDMjIuMDAzOCAzOC40OTY2IDIxLjQ3OTkgMzcuMTM5NyAyMi4zNTkzIDM2LjYwMzRMMzIuNTExNiAzMS42NDgyQzMzLjIzNSAzMS4yMDY5IDMzLjI1NDYgMzAuMTY0MiAzMi41NDg4IDI5LjY5NzFMMjUuNTg5OCAyNS45MDU0QzI0Ljc0MjQgMjUuMzQ0MyAyNS4yODkgMjQuMDI1NyAyNi4yODQyIDI0LjIyNzJMMzMuMzc5NyAyNS43MDE5QzM0LjExNjUgMjUuODUwNyAzNC43OTc1IDI1LjI2ODkgMzQuNzY0NSAyNC41MTc2TDM0LjQ4MzQgMTguMDk0OUMzNC40NDEgMTcuMTM0OCAzNS43MDkgMTYuNzU0NSAzNi4yMDE5IDE3LjU4MDJMMzkuMDc5IDIyLjQwMDFDMzkuNTA4OSAyMy4xMjA0IDQwLjUzOTIgMjMuMTU3NiA0MS4wMTk3IDIyLjQ3MDRMNDcuNDQyNCAxMy4yODEyQzQ3Ljk0MzYgMTIuNTY0IDQ5LjA2OSAxMi44NzkyIDQ5LjEyMzggMTMuNzUzNUw0Ny41NjU0IDI0Ljc1MDFDNDcuNTk0MyAyNS4yMDQ4IDQ3Ljg4NjggMjUuNjAwNiA0OC4zMTM2IDI1Ljc2MDhMNTkuNDAzMiAyNy45MTEzQzYwLjI4MDYgMjguMjQxIDYwLjE2OSAyOS41MTYyIDU5LjI0NzIgMjkuNjg2N0w0OC43Nzk3IDMyLjc5OTRDNDguMDAzNiAzMi45NDMgNDcuNTQyNyAzMy43NTAxIDQ3LjgxMzQgMzQuNDkyMUw1Mi4wODM1IDQ1LjMzMTdDNTIuNDAyOCA0Ni4yMDM5IDUxLjM3OTggNDYuOTQ5IDUwLjY0NiA0Ni4zNzg1WiIgZmlsbD0iI0M1QjhGRCIvPgo8cGF0aCBkPSJNNjQuMjUwMyA1NC43MTc5QzY0LjI1MDMgNTQuNzE3OSA2Mi4yMDYyIDU5LjI3ODQgNTkuMjEzNSA1Ny4xMDJDNTYuMjE5NiA1NC45MjU2IDYwLjQzNSA0Ni41OTIxIDY0LjE2MzUgNDguNDc3MUM2OC4wNTIzIDUwLjQ0MTYgNjcuOTQ4OSA1NC4wNTg2IDY0LjAyMiA2My41NjZDNjAuMjkxMyA3Mi41OTgxIDQ3LjYwODIgNzEuMTAwNyA0Ni4zNTM2IDcwLjk1NkM0Ni4zMDA5IDcwLjk0OTggNDYuMjQ3MSA3MC45NDY3IDQ2LjE5MzQgNzAuOTQ0NkM0NC4yMzMgNzAuODkwOSA0Mi4yNTQgNzAuNDY1MSA0MC40NjMxIDY5LjkwODFDMzYuMzgwMSA2OC42MzcgMzMuNjE4OCA2NC44MzQgMzMuNjY5NCA2MC41NTg4TDMxLjU2NDMgMzYuNjM0MUMzMS41NzQ3IDM1LjgwODQgMzIuMDQ5IDMzLjkyMzQgMzQuNTE3OCAzMy40ODQyQzM2LjU0MTMgMzMuMTU0NiAzNy42NDA4IDM1LjMzNCAzNy42NDA4IDM1LjMzNEw0MC40NiA0MC45MzQxQzQxLjE4MzQgNDEuOTY3NiA0My4wMzQzIDQyLjMyNDEgNDQuMDQwOCA0MS4yMjg3QzQ4LjMxODEgMzYuNTc3MiA1OC4zMzgyIDI2Ljg3OTYgNjEuOTMwMyAyOS4xOTI0QzY2LjYzNTUgMzIuNTgxIDU1LjU3MDcgNDIuMDY0NyA1NS41NzA3IDQyLjA2NDciIHN0cm9rZT0iIzNGM0QzRCIgc3Ryb2tlLXdpZHRoPSIxLjI2MDgiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik01Ny40ODE5IDQ0LjUzMjJDNTcuNDgxOSA0NC41MzIyIDU0Ljk5NzYgMzguMTUyOSA0OS44NDUgNDQuMDk0QzQ0LjY5MjMgNTAuMDM1MSA0NS4yNjY5IDU5LjQyMjcgNTEuNTI5NSA1NS4xMDUxIiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNNTguMTM4MSA1Ni4zNzE1QzU4LjEzODEgNTYuMzcxNSA0OS44MjMyIDYzLjA0NzQgNTIuOTQ1MiA0OS44MzcyQzU0Ljg5NDIgNDMuMDQ0NiA2Mi41NjEyIDQyLjI2MzMgNjIuMTg5MSA0OC4zMDk4IiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMzguNTk0MSA1Mi4yNTI0QzM5LjA4NTUgNTIuMjUyNCAzOS40ODM5IDUxLjg1NDEgMzkuNDgzOSA1MS4zNjI2QzM5LjQ4MzkgNTAuODcxMiAzOS4wODU1IDUwLjQ3MjkgMzguNTk0MSA1MC40NzI5QzM4LjEwMjcgNTAuNDcyOSAzNy43MDQzIDUwLjg3MTIgMzcuNzA0MyA1MS4zNjI2QzM3LjcwNDMgNTEuODU0MSAzOC4xMDI3IDUyLjI1MjQgMzguNTk0MSA1Mi4yNTI0WiIgZmlsbD0iIzNGM0QzRCIvPgo8cGF0aCBkPSJNNDIuMDE0IDUzLjE1MjFDNDIuNTA1NCA1My4xNTIxIDQyLjkwMzggNTIuNzUzOCA0Mi45MDM4IDUyLjI2MjRDNDIuOTAzOCA1MS43NzEgNDIuNTA1NCA1MS4zNzI2IDQyLjAxNCA1MS4zNzI2QzQxLjUyMjYgNTEuMzcyNiA0MS4xMjQzIDUxLjc3MSA0MS4xMjQzIDUyLjI2MjRDNDEuMTI0MyA1Mi43NTM4IDQxLjUyMjYgNTMuMTUyMSA0Mi4wMTQgNTMuMTUyMVoiIGZpbGw9IiMzRjNEM0QiLz4KPHBhdGggZD0iTTM2LjA3NjggNTIuODYyOUMzNi4wNzY4IDUyLjg2MjkgMzcuOTA3IDU3LjkyOTcgNDMuMzMyNCA1NS41Mzc0IiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA2OCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTg5LjM3NDEgNjMuOTM4NkM4OS42MTE4IDY0LjU0NzMgODkuNTI5MSA2NS4yMzQ1IDg5LjE1NCA2NS43Njg4TDc2LjUyNzcgODMuNzIxM0M3NS45MzY1IDg0LjUwNDcgNzUuMDkxMiA4NS4yNDI1IDc0LjE1MDggODQuOTYxNEM2MC41MTc5IDgwLjg5MjkgNDQuNjk1MyA4MS42MzY5IDM4Ljg2MTYgODIuMzg4MkMzNi45NTcgODIuNjMzMSAzNS4wMjQ1IDgyLjI1MDggMzMuMzU1NSA4MS4zMDIxQzIzLjQyNjUgNzUuNjU4NiAxNS43MzE2IDcyLjc1NjcgMTIuNDg1NyA3MS42NTMxQzExLjQ2ODggNzEuMzA2OSAxMC41NDE4IDcwLjUzMjggMTAuNDkyMiA2OS40NjAxTDEwLjUzNjYgNjUuMzUxM0MxMi4wMjc4IDY2LjYxNTEgMTguNDgzNiA2OC4wMDQxIDE4LjQ4MzYgNjguMDA0MUwyNS44OTAxIDcxLjgzN0MyNS44OTAxIDcxLjgzNyAzMC44NTA1IDc4LjE0MDkgMzUuODM5OSA3OC40MjYxQzQwLjgyODIgNzguNzEwMyA0MS43MzM1IDc4LjM1NjkgNDEuNzMzNSA3OC4zNTY5QzUyLjY4OTggNzUuOTI2MyA3MC41MTgzIDc5LjIzNzMgNzQuODM5MSA4MC4xMDk1TDc2LjY3MDMgNzkuNDkyNkw4OC44MjUzIDYyLjUzNjJMODkuMzc0MSA2My45Mzg2WiIgZmlsbD0iI0M1QjhGRCIvPgo8cGF0aCBkPSJNNjYuMjAwNyA1OC43MTFDNzQuNjI4MiA1Ni45MzQ2IDgyLjM1NzEgNTkuMTUyMyA4Ni44NjM5IDYwLjQ4NTRDODguNTIwNCA2MC45NzUyIDg5LjE4MjkgNjIuOTY1NiA4OC4xNDc0IDY0LjM0OTRMNzcuMjE1OSA3OC45NjA5Qzc2LjU4NDUgNzkuODA1MiA3NS40ODggODAuMTY2OSA3NC40ODI1IDc5Ljg0ODZDNjMuOTY1NCA3Ni41MTU4IDQ3LjQ4MjMgNzcuODI4MiAzOS4yMTI5IDc4LjU3NTRDMzYuNTMwMiA3OC44MTgyIDMzLjg0MjMgNzguMTg3OSAzMS41NDM5IDc2Ljc4NTVDMjYuNzI0MSA3My43OTg5IDI0LjE0MDUgNjguNDI1MiAxMy4wODI5IDY2LjY2ODNDMTAuNDk5NCA2Ni41NjUgOS43NzU5OSA2NC43MDQ4IDExLjQyOTUgNjMuMzYxNEMyMi4yODA0IDU1LjE5NzQgMzEuNDM3NSA1My40ODcxIDMxLjQzNzUgNTMuNDg3MUMzMS40Mzc1IDUzLjQ4NzEgMzEuODE2OCA1My4zOTgyIDMyLjQ2MDYgNTMuMjg5NyIgc3Ryb2tlPSIjM0YzRDNEIiBzdHJva2Utd2lkdGg9IjEuMjYwOCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjgwNDIgNzEuMTA3NUMxMC44MDQyIDcxLjEwNzUgMTcuNTY2OSA3MC44NTY0IDMyLjYwOTMgODEuMjM1QzM0LjUzNTYgODIuMjA4NSAzNi43NjY4IDgzLjAxMjUgMzguOTEzMiA4Mi43ODUxQzQ1LjY4OTMgODIuMDY2OSA2MS4wMjUzIDgwLjEyMiA3NC41MjY5IDg1LjEwODMiIHN0cm9rZT0iIzNGM0QzRCIgc3Ryb2tlLXdpZHRoPSIxLjI2MDgiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zNy4xMDQ2IDc1LjQyNzhMNDMuNDYyMiA3MS4wNzkyIiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTAuODA0MiA3MS4xMTA0QzEwLjgwNDIgNzEuMTEwNCAxNi4yODEzIDcxLjExMDQgMzIuNjA5MyA4MS4yMzc5QzM0LjUzNTYgODIuMjExNCAzNi43NjY4IDgzLjAxNTQgMzguOTEzMiA4Mi43ODgxIiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K";
|
|
2
|
+
export declare const workspaceLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAAmCAYAAAB3c5OxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAAzVJREFUeAHVmVtS6kAQhjvhAI+HJcADtzfYAa7g6ArEFehZgbCCw1mBuAJ1BbIDfaOAB7IDeYXi4t/WYEHMZW5O8KuyiJNMkn+6p7tn4pEB4/G47Pv+Mw7LCt2CQqHQrlQqC9kO0+n03263u5G93vO8Qa1W+xt33icDcPNzUhPMlJfLZVelg4pgmeuNROPmr6QBvOMPZYiR6GazOYK1R6QIBqvDU4Mywkg0s91un0gDWLtLGWEsulgsDkmPa8oIY9EchXVcHJTg4h3KAGPRgnvSQER/51gRnc/nH/EjnXf3QPTlfD4vkWOsiGYXR0TWsXZptVp1yDG23JvT0CNpAGs7D2jWRHPOJg0X55zt2sWtiRb8Jw1Uy1JTrIpGoTIiDVyXpVZFm5SlWEm1yBG23Vu7LIVwZzlbWrSsJX5CWSolmldEsMSdzMroJ5SlUqJzudwtflr4vSM5TrosTRUNt+7Cyl0+5oAzmUwu0/qcelmaKFq49W2oeZDm5qdelsaK5hGP2fT7aE8TrluWuiBSNAvGiCftcvIu6EOSK2qWpUG9Xv/2wfoimi0oBKelqBaue0mxuFJZqhn1I0l6L+/wH87FcMsHUtzHRkFyBssGEQ/uiCkihbjPKNyO4LkjdYKoQYS+p0/REHyNhh4OtaInxPWq1Wo/3I77PnPUl7gFu3Yl6oSm6DgW/mw264gXG5CmYAZW6uHl5vg7D7VLlaV4vtYKTYOSv16vOS2VyRIQeRS8ZMtSl9HexxwaslvhZftkAFuKv1GF56RMWcrno2LCd/EZvfHQHh7exmFAaiw4ADUajZu4j3JprrvZbLTKVl2OUha+9L2yAJIXzpG7HRVxD4EH8PmknD0ih3zJ0+xm7KawetrHudhUFSapLMVzhi5dm4msyPgl4XIXFG9xacF74gIV501yjJd0Unx0f6HjVLYQLh2QIkhnb6F7xebmUD+beTp5lSWEXR22wTJ9A3c8Cmg2y04VUtfTYgHw4Zo8/xClB6QJ+h+5uOuovUdq5wSBja3N89wol3N2OLBukBb1D1DekEgg+CVzFQc2lKpnNqIsBu4KcaIl0pgUiCEXvJWEfr/JEPaudwlPpOcVnMnUAAAAAElFTkSuQmCC";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var M="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MC42NDYgNDYuMzc4NUw0MS4wNjczIDM4LjkyMDNDNDAuNjEyNiAzOC41NjU5IDM5Ljk2NTcgMzguNjAxIDM5LjU1MjMgMzkuMDAyTDMzLjQ0NTggNDQuOTE4M0MzMi43NTY1IDQ1LjU4NTkgMzEuNjMyMiA0NC44OTI1IDMxLjkxOTUgNDMuOTc2OUwzMy45MTE5IDM3LjYxOTNDMzQuMTczMyAzNi43ODQzIDMzLjQ0ODkgMzUuOTcyIDMyLjU4OTEgMzYuMTM4NEwyMy4wMTY1IDM4LjMwMTNDMjIuMDAzOCAzOC40OTY2IDIxLjQ3OTkgMzcuMTM5NyAyMi4zNTkzIDM2LjYwMzRMMzIuNTExNiAzMS42NDgyQzMzLjIzNSAzMS4yMDY5IDMzLjI1NDYgMzAuMTY0MiAzMi41NDg4IDI5LjY5NzFMMjUuNTg5OCAyNS45MDU0QzI0Ljc0MjQgMjUuMzQ0MyAyNS4yODkgMjQuMDI1NyAyNi4yODQyIDI0LjIyNzJMMzMuMzc5NyAyNS43MDE5QzM0LjExNjUgMjUuODUwNyAzNC43OTc1IDI1LjI2ODkgMzQuNzY0NSAyNC41MTc2TDM0LjQ4MzQgMTguMDk0OUMzNC40NDEgMTcuMTM0OCAzNS43MDkgMTYuNzU0NSAzNi4yMDE5IDE3LjU4MDJMMzkuMDc5IDIyLjQwMDFDMzkuNTA4OSAyMy4xMjA0IDQwLjUzOTIgMjMuMTU3NiA0MS4wMTk3IDIyLjQ3MDRMNDcuNDQyNCAxMy4yODEyQzQ3Ljk0MzYgMTIuNTY0IDQ5LjA2OSAxMi44NzkyIDQ5LjEyMzggMTMuNzUzNUw0Ny41NjU0IDI0Ljc1MDFDNDcuNTk0MyAyNS4yMDQ4IDQ3Ljg4NjggMjUuNjAwNiA0OC4zMTM2IDI1Ljc2MDhMNTkuNDAzMiAyNy45MTEzQzYwLjI4MDYgMjguMjQxIDYwLjE2OSAyOS41MTYyIDU5LjI0NzIgMjkuNjg2N0w0OC43Nzk3IDMyLjc5OTRDNDguMDAzNiAzMi45NDMgNDcuNTQyNyAzMy43NTAxIDQ3LjgxMzQgMzQuNDkyMUw1Mi4wODM1IDQ1LjMzMTdDNTIuNDAyOCA0Ni4yMDM5IDUxLjM3OTggNDYuOTQ5IDUwLjY0NiA0Ni4zNzg1WiIgZmlsbD0iI0M1QjhGRCIvPgo8cGF0aCBkPSJNNjQuMjUwMyA1NC43MTc5QzY0LjI1MDMgNTQuNzE3OSA2Mi4yMDYyIDU5LjI3ODQgNTkuMjEzNSA1Ny4xMDJDNTYuMjE5NiA1NC45MjU2IDYwLjQzNSA0Ni41OTIxIDY0LjE2MzUgNDguNDc3MUM2OC4wNTIzIDUwLjQ0MTYgNjcuOTQ4OSA1NC4wNTg2IDY0LjAyMiA2My41NjZDNjAuMjkxMyA3Mi41OTgxIDQ3LjYwODIgNzEuMTAwNyA0Ni4zNTM2IDcwLjk1NkM0Ni4zMDA5IDcwLjk0OTggNDYuMjQ3MSA3MC45NDY3IDQ2LjE5MzQgNzAuOTQ0NkM0NC4yMzMgNzAuODkwOSA0Mi4yNTQgNzAuNDY1MSA0MC40NjMxIDY5LjkwODFDMzYuMzgwMSA2OC42MzcgMzMuNjE4OCA2NC44MzQgMzMuNjY5NCA2MC41NTg4TDMxLjU2NDMgMzYuNjM0MUMzMS41NzQ3IDM1LjgwODQgMzIuMDQ5IDMzLjkyMzQgMzQuNTE3OCAzMy40ODQyQzM2LjU0MTMgMzMuMTU0NiAzNy42NDA4IDM1LjMzNCAzNy42NDA4IDM1LjMzNEw0MC40NiA0MC45MzQxQzQxLjE4MzQgNDEuOTY3NiA0My4wMzQzIDQyLjMyNDEgNDQuMDQwOCA0MS4yMjg3QzQ4LjMxODEgMzYuNTc3MiA1OC4zMzgyIDI2Ljg3OTYgNjEuOTMwMyAyOS4xOTI0QzY2LjYzNTUgMzIuNTgxIDU1LjU3MDcgNDIuMDY0NyA1NS41NzA3IDQyLjA2NDciIHN0cm9rZT0iIzNGM0QzRCIgc3Ryb2tlLXdpZHRoPSIxLjI2MDgiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik01Ny40ODE5IDQ0LjUzMjJDNTcuNDgxOSA0NC41MzIyIDU0Ljk5NzYgMzguMTUyOSA0OS44NDUgNDQuMDk0QzQ0LjY5MjMgNTAuMDM1MSA0NS4yNjY5IDU5LjQyMjcgNTEuNTI5NSA1NS4xMDUxIiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNNTguMTM4MSA1Ni4zNzE1QzU4LjEzODEgNTYuMzcxNSA0OS44MjMyIDYzLjA0NzQgNTIuOTQ1MiA0OS44MzcyQzU0Ljg5NDIgNDMuMDQ0NiA2Mi41NjEyIDQyLjI2MzMgNjIuMTg5MSA0OC4zMDk4IiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMzguNTk0MSA1Mi4yNTI0QzM5LjA4NTUgNTIuMjUyNCAzOS40ODM5IDUxLjg1NDEgMzkuNDgzOSA1MS4zNjI2QzM5LjQ4MzkgNTAuODcxMiAzOS4wODU1IDUwLjQ3MjkgMzguNTk0MSA1MC40NzI5QzM4LjEwMjcgNTAuNDcyOSAzNy43MDQzIDUwLjg3MTIgMzcuNzA0MyA1MS4zNjI2QzM3LjcwNDMgNTEuODU0MSAzOC4xMDI3IDUyLjI1MjQgMzguNTk0MSA1Mi4yNTI0WiIgZmlsbD0iIzNGM0QzRCIvPgo8cGF0aCBkPSJNNDIuMDE0IDUzLjE1MjFDNDIuNTA1NCA1My4xNTIxIDQyLjkwMzggNTIuNzUzOCA0Mi45MDM4IDUyLjI2MjRDNDIuOTAzOCA1MS43NzEgNDIuNTA1NCA1MS4zNzI2IDQyLjAxNCA1MS4zNzI2QzQxLjUyMjYgNTEuMzcyNiA0MS4xMjQzIDUxLjc3MSA0MS4xMjQzIDUyLjI2MjRDNDEuMTI0MyA1Mi43NTM4IDQxLjUyMjYgNTMuMTUyMSA0Mi4wMTQgNTMuMTUyMVoiIGZpbGw9IiMzRjNEM0QiLz4KPHBhdGggZD0iTTM2LjA3NjggNTIuODYyOUMzNi4wNzY4IDUyLjg2MjkgMzcuOTA3IDU3LjkyOTcgNDMuMzMyNCA1NS41Mzc0IiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA2OCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTg5LjM3NDEgNjMuOTM4NkM4OS42MTE4IDY0LjU0NzMgODkuNTI5MSA2NS4yMzQ1IDg5LjE1NCA2NS43Njg4TDc2LjUyNzcgODMuNzIxM0M3NS45MzY1IDg0LjUwNDcgNzUuMDkxMiA4NS4yNDI1IDc0LjE1MDggODQuOTYxNEM2MC41MTc5IDgwLjg5MjkgNDQuNjk1MyA4MS42MzY5IDM4Ljg2MTYgODIuMzg4MkMzNi45NTcgODIuNjMzMSAzNS4wMjQ1IDgyLjI1MDggMzMuMzU1NSA4MS4zMDIxQzIzLjQyNjUgNzUuNjU4NiAxNS43MzE2IDcyLjc1NjcgMTIuNDg1NyA3MS42NTMxQzExLjQ2ODggNzEuMzA2OSAxMC41NDE4IDcwLjUzMjggMTAuNDkyMiA2OS40NjAxTDEwLjUzNjYgNjUuMzUxM0MxMi4wMjc4IDY2LjYxNTEgMTguNDgzNiA2OC4wMDQxIDE4LjQ4MzYgNjguMDA0MUwyNS44OTAxIDcxLjgzN0MyNS44OTAxIDcxLjgzNyAzMC44NTA1IDc4LjE0MDkgMzUuODM5OSA3OC40MjYxQzQwLjgyODIgNzguNzEwMyA0MS43MzM1IDc4LjM1NjkgNDEuNzMzNSA3OC4zNTY5QzUyLjY4OTggNzUuOTI2MyA3MC41MTgzIDc5LjIzNzMgNzQuODM5MSA4MC4xMDk1TDc2LjY3MDMgNzkuNDkyNkw4OC44MjUzIDYyLjUzNjJMODkuMzc0MSA2My45Mzg2WiIgZmlsbD0iI0M1QjhGRCIvPgo8cGF0aCBkPSJNNjYuMjAwNyA1OC43MTFDNzQuNjI4MiA1Ni45MzQ2IDgyLjM1NzEgNTkuMTUyMyA4Ni44NjM5IDYwLjQ4NTRDODguNTIwNCA2MC45NzUyIDg5LjE4MjkgNjIuOTY1NiA4OC4xNDc0IDY0LjM0OTRMNzcuMjE1OSA3OC45NjA5Qzc2LjU4NDUgNzkuODA1MiA3NS40ODggODAuMTY2OSA3NC40ODI1IDc5Ljg0ODZDNjMuOTY1NCA3Ni41MTU4IDQ3LjQ4MjMgNzcuODI4MiAzOS4yMTI5IDc4LjU3NTRDMzYuNTMwMiA3OC44MTgyIDMzLjg0MjMgNzguMTg3OSAzMS41NDM5IDc2Ljc4NTVDMjYuNzI0MSA3My43OTg5IDI0LjE0MDUgNjguNDI1MiAxMy4wODI5IDY2LjY2ODNDMTAuNDk5NCA2Ni41NjUgOS43NzU5OSA2NC43MDQ4IDExLjQyOTUgNjMuMzYxNEMyMi4yODA0IDU1LjE5NzQgMzEuNDM3NSA1My40ODcxIDMxLjQzNzUgNTMuNDg3MUMzMS40Mzc1IDUzLjQ4NzEgMzEuODE2OCA1My4zOTgyIDMyLjQ2MDYgNTMuMjg5NyIgc3Ryb2tlPSIjM0YzRDNEIiBzdHJva2Utd2lkdGg9IjEuMjYwOCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjgwNDIgNzEuMTA3NUMxMC44MDQyIDcxLjEwNzUgMTcuNTY2OSA3MC44NTY0IDMyLjYwOTMgODEuMjM1QzM0LjUzNTYgODIuMjA4NSAzNi43NjY4IDgzLjAxMjUgMzguOTEzMiA4Mi43ODUxQzQ1LjY4OTMgODIuMDY2OSA2MS4wMjUzIDgwLjEyMiA3NC41MjY5IDg1LjEwODMiIHN0cm9rZT0iIzNGM0QzRCIgc3Ryb2tlLXdpZHRoPSIxLjI2MDgiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zNy4xMDQ2IDc1LjQyNzhMNDMuNDYyMiA3MS4wNzkyIiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTAuODA0MiA3MS4xMTA0QzEwLjgwNDIgNzEuMTEwNCAxNi4yODEzIDcxLjExMDQgMzIuNjA5MyA4MS4yMzc5QzM0LjUzNTYgODIuMjExNCAzNi43NjY4IDgzLjAxNTQgMzguOTEzMiA4Mi43ODgxIiBzdHJva2U9IiMzRjNEM0QiIHN0cm9rZS13aWR0aD0iMS4yNjA4IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAAmCAYAAAB3c5OxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAAzVJREFUeAHVmVtS6kAQhjvhAI+HJcADtzfYAa7g6ArEFehZgbCCw1mBuAJ1BbIDfaOAB7IDeYXi4t/WYEHMZW5O8KuyiJNMkn+6p7tn4pEB4/G47Pv+Mw7LCt2CQqHQrlQqC9kO0+n03263u5G93vO8Qa1W+xt33icDcPNzUhPMlJfLZVelg4pgmeuNROPmr6QBvOMPZYiR6GazOYK1R6QIBqvDU4Mywkg0s91un0gDWLtLGWEsulgsDkmPa8oIY9EchXVcHJTg4h3KAGPRgnvSQER/51gRnc/nH/EjnXf3QPTlfD4vkWOsiGYXR0TWsXZptVp1yDG23JvT0CNpAGs7D2jWRHPOJg0X55zt2sWtiRb8Jw1Uy1JTrIpGoTIiDVyXpVZFm5SlWEm1yBG23Vu7LIVwZzlbWrSsJX5CWSolmldEsMSdzMroJ5SlUqJzudwtflr4vSM5TrosTRUNt+7Cyl0+5oAzmUwu0/qcelmaKFq49W2oeZDm5qdelsaK5hGP2fT7aE8TrluWuiBSNAvGiCftcvIu6EOSK2qWpUG9Xv/2wfoimi0oBKelqBaue0mxuFJZqhn1I0l6L+/wH87FcMsHUtzHRkFyBssGEQ/uiCkihbjPKNyO4LkjdYKoQYS+p0/REHyNhh4OtaInxPWq1Wo/3I77PnPUl7gFu3Yl6oSm6DgW/mw264gXG5CmYAZW6uHl5vg7D7VLlaV4vtYKTYOSv16vOS2VyRIQeRS8ZMtSl9HexxwaslvhZftkAFuKv1GF56RMWcrno2LCd/EZvfHQHh7exmFAaiw4ADUajZu4j3JprrvZbLTKVl2OUha+9L2yAJIXzpG7HRVxD4EH8PmknD0ih3zJ0+xm7KawetrHudhUFSapLMVzhi5dm4msyPgl4XIXFG9xacF74gIV501yjJd0Unx0f6HjVLYQLh2QIkhnb6F7xebmUD+beTp5lSWEXR22wTJ9A3c8Cmg2y04VUtfTYgHw4Zo8/xClB6QJ+h+5uOuovUdq5wSBja3N89wol3N2OLBukBb1D1DekEgg+CVzFQc2lKpnNqIsBu4KcaIl0pgUiCEXvJWEfr/JEPaudwlPpOcVnMnUAAAAAElFTkSuQmCC";export{M as tutorialImage,N as workspaceLogo};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { EditorController, EditorDocument } from "./core.js";
|
|
3
|
+
import type { EditorWorkspaceController } from "./workspace.js";
|
|
4
|
+
export interface WorkspaceTabLabels {
|
|
5
|
+
newTab: string;
|
|
6
|
+
close: string;
|
|
7
|
+
closeOthers: string;
|
|
8
|
+
closeRight: string;
|
|
9
|
+
closeSaved: string;
|
|
10
|
+
closeAll: string;
|
|
11
|
+
copyPath: string;
|
|
12
|
+
reveal: string;
|
|
13
|
+
}
|
|
14
|
+
export interface WorkspaceTabsProps {
|
|
15
|
+
workspace: EditorWorkspaceController;
|
|
16
|
+
editor: EditorController;
|
|
17
|
+
labels: WorkspaceTabLabels;
|
|
18
|
+
prefix: string;
|
|
19
|
+
leading?: ReactNode;
|
|
20
|
+
trailing?: ReactNode;
|
|
21
|
+
newTabIcon?: ReactNode;
|
|
22
|
+
renderFileIcon?: (document: EditorDocument) => ReactNode;
|
|
23
|
+
onCopyPath?: (document: EditorDocument) => Promise<void>;
|
|
24
|
+
onReveal?: (document: EditorDocument) => Promise<void>;
|
|
25
|
+
onError: (error: unknown) => void;
|
|
26
|
+
}
|
|
27
|
+
export declare function WorkspaceTabs({ workspace, editor, labels, prefix, leading, trailing, newTabIcon, renderFileIcon, onCopyPath, onReveal, onError }: WorkspaceTabsProps): ReactNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as a,jsxs as p}from"react/jsx-runtime";import{basename as j}from"@alwith/module-fs/core";import{Button as W}from"@base-ui/react/button";import{ContextMenu as o}from"@base-ui/react/context-menu";import{File as E,Plus as Y,X as K}from"lucide-react";import{useEffect as q,useRef as M,useSyncExternalStore as X}from"react";function z({workspace:l,editor:b,labels:s,prefix:N,leading:x,trailing:B,newTabIcon:A,renderFileIcon:L,onCopyPath:T,onReveal:S,onError:R}){let n=X(l.subscribe,l.getSnapshot,l.getSnapshot),P=X(b.subscribe,b.getSnapshot,b.getSnapshot).documents,c=M(null),g=M(null),w=M(!1),u=(t)=>{t().catch(R)};return q(()=>{let t=c.current;if(!t)return;let d=(r)=>{if(r.ctrlKey||r.metaKey||t.scrollWidth<=t.clientWidth)return;let h=Math.abs(r.deltaX)>Math.abs(r.deltaY)?r.deltaX:r.deltaY;t.scrollLeft+=h*(r.deltaMode===1?16:r.deltaMode===2?t.clientWidth:1),r.preventDefault()};return t.addEventListener("wheel",d,{passive:!1}),()=>t.removeEventListener("wheel",d)},[]),q(()=>{c.current?.querySelector('[aria-selected="true"]')?.scrollIntoView({block:"nearest",inline:"nearest"})},[n.activeId]),p("div",{className:"alwith-workspace-tabbar","data-empty":n.tabs.length===0,children:[x,p("div",{className:"alwith-workspace-tab-scroll",ref:c,children:[a("div",{role:"tablist",className:"alwith-workspace-tablist",children:n.tabs.map((t,d)=>{let r=P.find((e)=>e.id===t.id);if(t.kind==="file"&&!r)throw Error(`Missing tab document: ${t.id}`);let h=r?j(r.path):s.newTab,y=t.id===n.activeId,C=()=>u(()=>l.requestClose(t.id));return p(o.Root,{children:[p(o.Trigger,{className:"alwith-workspace-tab","data-tab-id":t.id,"data-active":y,"data-dirty":Boolean(r?.dirty),"data-transient":r?!r.pinned:!1,"data-divider":d>0&&!y&&n.tabs[d-1].id!==n.activeId,role:"tab","aria-label":`${h}${r?.dirty?" •":""}`,id:`${N}-tab-${t.id}`,"aria-controls":`${N}-panel-${t.id}`,"aria-selected":y,tabIndex:y?0:-1,onClick:()=>{if(w.current){w.current=!1;return}l.activate(t.id)},onDoubleClick:()=>{if(r)b.pin(r.id)},onKeyDown:(e)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),l.activate(t.id);return}if(e.key==="Delete"){e.preventDefault(),C();return}let i=e.key==="ArrowRight"?1:e.key==="ArrowLeft"?-1:0,m=e.key==="Home"?0:e.key==="End"?n.tabs.length-1:i?(d+i+n.tabs.length)%n.tabs.length:null;if(m===null)return;e.preventDefault();let k=n.tabs[m];l.activate(k.id),globalThis.document.getElementById(`${N}-tab-${k.id}`)?.focus()},title:r?.path??h,onPointerDown:(e)=>{if(e.button!==0)return;w.current=!1,g.current={id:t.id,x:e.clientX,y:e.clientY,moved:!1,before:null}},onPointerMove:(e)=>{let i=g.current;if(i?.id!==t.id)return;if(!i.moved&&Math.hypot(e.clientX-i.x,e.clientY-i.y)<5)return;e.currentTarget.setPointerCapture(e.pointerId),i.moved=!0,e.currentTarget.dataset.dragging="true";let m=[...c.current.querySelectorAll("[data-tab-id]")].filter((f)=>f.dataset.tabId!==t.id),k=getComputedStyle(e.currentTarget).direction==="rtl";i.before=m.find((f)=>{let I=f.getBoundingClientRect();return k?e.clientX>I.left+I.width/2:e.clientX<I.left+I.width/2})?.dataset.tabId??null;for(let f of m)f.dataset.dropBefore=String(f.dataset.tabId===i.before);let D=c.current.getBoundingClientRect();if(e.clientX>D.right-24)c.current.scrollLeft+=12;if(e.clientX<D.left+24)c.current.scrollLeft-=12},onPointerUp:(e)=>{let i=g.current;if(i?.id!==t.id)return;if(i.moved)l.reorder(t.id,i.before),w.current=!0;if(g.current=null,delete e.currentTarget.dataset.dragging,c.current?.querySelectorAll("[data-drop-before]").forEach((m)=>{delete m.dataset.dropBefore}),e.currentTarget.hasPointerCapture(e.pointerId))e.currentTarget.releasePointerCapture(e.pointerId)},onPointerCancel:(e)=>{g.current=null,delete e.currentTarget.dataset.dragging,c.current?.querySelectorAll("[data-drop-before]").forEach((i)=>{delete i.dataset.dropBefore})},onAuxClick:(e)=>{if(e.button===1)e.preventDefault(),C()},children:[p("span",{className:"alwith-workspace-tab-content",children:[a("span",{className:"alwith-workspace-tab-icon","aria-hidden":"true",children:r?L?.(r)??a(E,{}):A??a(E,{})}),a("span",{className:"alwith-workspace-tab-title",children:h})]}),a("span",{className:"alwith-workspace-tab-close","aria-hidden":"true",title:`${s.close} ${h}`,onPointerDown:(e)=>e.stopPropagation(),onClick:(e)=>{e.stopPropagation(),C()},children:a(K,{"aria-hidden":"true"})})]}),a(o.Portal,{children:a(o.Positioner,{children:p(o.Popup,{className:"alwith-editor-menu",children:[a(o.Item,{className:"alwith-editor-menu-item",onClick:C,children:s.close}),n.tabs.length>1&&a(o.Item,{className:"alwith-editor-menu-item",onClick:()=>u(()=>l.requestCloseMany(n.tabs.filter((e)=>e.id!==t.id).map((e)=>e.id))),children:s.closeOthers}),d<n.tabs.length-1&&a(o.Item,{className:"alwith-editor-menu-item",onClick:()=>u(()=>l.requestCloseMany(n.tabs.slice(d+1).map((e)=>e.id))),children:s.closeRight}),a(o.Item,{className:"alwith-editor-menu-item",onClick:()=>u(()=>l.requestCloseMany(n.tabs.filter((e)=>!P.find((i)=>i.id===e.id)?.dirty).map((e)=>e.id))),children:s.closeSaved}),a(o.Item,{className:"alwith-editor-menu-item",onClick:()=>u(()=>l.requestCloseMany(n.tabs.map((e)=>e.id))),children:s.closeAll}),r&&(S??T)&&a(o.Separator,{className:"alwith-editor-menu-separator"}),r&&S&&a(o.Item,{className:"alwith-editor-menu-item",onClick:()=>u(()=>S(r)),children:s.reveal}),r&&T&&a(o.Item,{className:"alwith-editor-menu-item",onClick:()=>u(()=>T(r)),children:s.copyPath})]})})})]},t.id)})}),a(W,{className:"alwith-workspace-new-tab","aria-label":s.newTab,title:`${s.newTab} (${typeof navigator<"u"&&navigator.platform.includes("Mac")?"⌘":"Ctrl+"}T)`,onClick:()=>l.openNewTab(),children:a(Y,{})}),a("div",{className:"alwith-workspace-tab-space"})]}),B]})}export{z as WorkspaceTabs};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { EditorController } from "./core.js";
|
|
2
|
+
export type WorkspaceTab = {
|
|
3
|
+
id: string;
|
|
4
|
+
kind: "file" | "new";
|
|
5
|
+
};
|
|
6
|
+
export interface EditorWorkspaceSnapshot {
|
|
7
|
+
tabs: readonly WorkspaceTab[];
|
|
8
|
+
activeId: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface SavedEditorWorkspace {
|
|
11
|
+
tabs: ({
|
|
12
|
+
kind: "file";
|
|
13
|
+
path: string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "new";
|
|
16
|
+
})[];
|
|
17
|
+
activeIndex: number | null;
|
|
18
|
+
}
|
|
19
|
+
export interface EditorWorkspaceController {
|
|
20
|
+
getSnapshot: () => EditorWorkspaceSnapshot;
|
|
21
|
+
subscribe: (listener: () => void) => () => void;
|
|
22
|
+
openNewTab: () => string;
|
|
23
|
+
activate: (id: string) => void;
|
|
24
|
+
reorder: (id: string, beforeId: string | null) => void;
|
|
25
|
+
requestClose: (id: string) => Promise<boolean>;
|
|
26
|
+
requestCloseMany: (ids: readonly string[]) => Promise<boolean>;
|
|
27
|
+
reopenClosed: () => Promise<void>;
|
|
28
|
+
serialize: () => SavedEditorWorkspace;
|
|
29
|
+
dispose: () => void;
|
|
30
|
+
}
|
|
31
|
+
export declare function createEditorWorkspace(editor: EditorController, saved?: SavedEditorWorkspace): EditorWorkspaceController;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function S(d,a){let v=d.getSnapshot(),l=v.documents,r=a?a.tabs.flatMap((t)=>{if(t.kind==="new")return[{id:crypto.randomUUID(),kind:"new"}];let e=l.find((i)=>i.path===t.path);return e?[{id:e.id,kind:"file"}]:[]}):l.map((t)=>({id:t.id,kind:"file"}));for(let t of l)if(!r.some((e)=>e.id===t.id))r.push({id:t.id,kind:"file"});if(!a&&r.length===0)r.push({id:crypto.randomUUID(),kind:"new"});let I=a?.activeIndex==null?void 0:a.tabs[a.activeIndex],b=I?.kind==="file"?l.find((t)=>t.path===I.path)?.id:I?.kind==="new"?r[a.tabs.slice(0,a.activeIndex).filter((t)=>t.kind==="new"||l.some((e)=>e.path===t.path)).length]?.id:void 0,n={tabs:r,activeId:b??v.activeId??r[0]?.id??null},m=new Set,w=0,u=[];function f(){for(let t of m)t()}function p(t){let e=n.tabs.find((i)=>i.id===t);if(!e)throw Error(`Unknown workspace tab: ${t}`);return e}function g(t){let e=v;v=t;let i=n.tabs.filter((c)=>c.kind==="new"||t.documents.some((h)=>h.id===c.id));for(let c of t.documents){if(i.some((h)=>h.id===c.id))continue;if(i.at(-1)?.kind==="new")i=i.slice(0,-1);i=[...i,{id:c.id,kind:"file"}]}let s=t.selectionRevision===void 0?e.activeId!==t.activeId||e!==t&&e.documents===t.documents:t.selectionRevision!==e.selectionRevision,o=!w&&s&&t.activeId!==null?t.activeId:i.some((c)=>c.id===n.activeId)?n.activeId:i[Math.min(n.tabs.findIndex((c)=>c.id===n.activeId),i.length-1)]?.id??null;if(o===n.activeId&&i.length===n.tabs.length&&i.every((c,h)=>c===n.tabs[h]))return;n={tabs:i,activeId:o},f()}let y=d.subscribe(()=>g(d.getSnapshot())),k={getSnapshot:()=>n,subscribe(t){return m.add(t),()=>{m.delete(t)}},openNewTab(){let t=crypto.randomUUID();return n={tabs:[...n.tabs,{id:t,kind:"new"}],activeId:t},f(),t},activate(t){let e=p(t);if(n={...n,activeId:t},e.kind==="file")d.activate(t);f()},reorder(t,e){let i=p(t);if(e===t)return;if(e!==null)p(e);let s=n.tabs.filter((o)=>o.id!==t);s.splice(e===null?s.length:s.findIndex((o)=>o.id===e),0,i),n={...n,tabs:s},f()},async requestClose(t){if(p(t).kind==="file"){let i=d.getSnapshot().documents.find((s)=>s.id===t);if(!i)throw Error(`Missing workspace document: ${t}`);w++;try{if(!await d.requestClose(t))return!1;if(u.unshift(i.path),u.length>20)u.pop()}finally{w--}}else{let i=n.tabs.findIndex((o)=>o.id===t),s=n.tabs.filter((o)=>o.id!==t);n={tabs:s,activeId:n.activeId===t?s[Math.min(i,s.length-1)]?.id??null:n.activeId},f()}if(n.activeId!==null)k.activate(n.activeId);return!0},async requestCloseMany(t){for(let e of[...new Set(t)])if(n.tabs.some((i)=>i.id===e)&&!await k.requestClose(e))return!1;return!0},async reopenClosed(){let t=u[0];if(t===void 0)return;let e=await d.open(t);d.pin(e.id),u.shift()},serialize(){return{tabs:n.tabs.map((t)=>{if(t.kind==="new")return{kind:"new"};let e=d.getSnapshot().documents.find((i)=>i.id===t.id);if(!e)throw Error(`Missing workspace document: ${t.id}`);return{kind:"file",path:e.path}}),activeIndex:n.activeId===null?null:n.tabs.findIndex((t)=>t.id===n.activeId)}},dispose(){y(),m.clear()}};if(n.activeId!==null&&p(n.activeId).kind==="file")d.activate(n.activeId);return k}export{S as createEditorWorkspace};
|
package/package.json
CHANGED
|
@@ -1,6 +1,165 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwith/module-editor",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0-rc.13",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist/**/*.js",
|
|
8
|
+
"dist/**/*.d.ts",
|
|
9
|
+
"dist/**/*.css",
|
|
10
|
+
"LICENSE",
|
|
11
|
+
"THIRD_PARTY_NOTICES.md",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"sideEffects": [
|
|
15
|
+
"**/*.css"
|
|
16
|
+
],
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"import": "./dist/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./core": {
|
|
23
|
+
"types": "./dist/core.d.ts",
|
|
24
|
+
"import": "./dist/core.js"
|
|
25
|
+
},
|
|
26
|
+
"./styles.css": "./dist/styles.css",
|
|
27
|
+
"./monaco": {
|
|
28
|
+
"types": "./dist/monaco.d.ts",
|
|
29
|
+
"import": "./dist/monaco.js"
|
|
30
|
+
},
|
|
31
|
+
"./previews": {
|
|
32
|
+
"types": "./dist/previews/index.d.ts",
|
|
33
|
+
"import": "./dist/previews/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./previews/styles.css": "./dist/previews/styles.css"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "bun ../../scripts/build-npm.ts",
|
|
39
|
+
"test": "bun test src",
|
|
40
|
+
"prepack": "bun run build && bun ../../scripts/verify-frontend-package.ts editor"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@alwith/module-fs": "^0.1.0-rc.7",
|
|
44
|
+
"@base-ui/react": "^1.8.0"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"react": "^19.0.0",
|
|
48
|
+
"react-dom": "^19.0.0",
|
|
49
|
+
"monaco-editor": "^0.57.0",
|
|
50
|
+
"pdfjs-dist": "^6.4.299",
|
|
51
|
+
"docx-preview": "^0.4.1",
|
|
52
|
+
"xlsx": "^0.18.5",
|
|
53
|
+
"@milkdown/core": "^7.22.2",
|
|
54
|
+
"@milkdown/plugin-history": "^7.22.2",
|
|
55
|
+
"@milkdown/preset-commonmark": "^7.22.2",
|
|
56
|
+
"@milkdown/preset-gfm": "^7.22.2",
|
|
57
|
+
"@milkdown/utils": "^7.22.2",
|
|
58
|
+
"utif": "^3.1.0",
|
|
59
|
+
"@milkdown/prose": "^7.22.2",
|
|
60
|
+
"lucide-react": "^1.54.0",
|
|
61
|
+
"@milkdown/plugin-math": "^7.5.9",
|
|
62
|
+
"@alwith/module-chat": "^0.1.10",
|
|
63
|
+
"shiki": "^4.5.0",
|
|
64
|
+
"dompurify": "^3.4.16",
|
|
65
|
+
"katex": "^0.19.0",
|
|
66
|
+
"marked": "^18.1.0",
|
|
67
|
+
"x-data-spreadsheet": "^1.1.9",
|
|
68
|
+
"audiomotion-analyzer": "^4.5.4",
|
|
69
|
+
"react-player": "^3.4.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@alwith/module-chat": "workspace:*",
|
|
73
|
+
"@milkdown/core": "^7.22.2",
|
|
74
|
+
"@milkdown/plugin-history": "^7.22.2",
|
|
75
|
+
"@milkdown/plugin-math": "^7.5.9",
|
|
76
|
+
"@milkdown/preset-commonmark": "^7.22.2",
|
|
77
|
+
"@milkdown/preset-gfm": "^7.22.2",
|
|
78
|
+
"@milkdown/prose": "^7.22.2",
|
|
79
|
+
"@milkdown/utils": "^7.22.2",
|
|
80
|
+
"@types/jsdom": "^30.0.0",
|
|
81
|
+
"@types/react": "^19.3.0",
|
|
82
|
+
"@types/react-dom": "^19.3.0",
|
|
83
|
+
"@types/utif": "^3.0.6",
|
|
84
|
+
"audiomotion-analyzer": "^4.5.4",
|
|
85
|
+
"docx-preview": "^0.4.1",
|
|
86
|
+
"dompurify": "^3.4.16",
|
|
87
|
+
"jsdom": "^30.1.2",
|
|
88
|
+
"katex": "^0.19.0",
|
|
89
|
+
"lucide-react": "^1.54.0",
|
|
90
|
+
"marked": "^18.1.0",
|
|
91
|
+
"monaco-editor": "^0.57.0",
|
|
92
|
+
"pdfjs-dist": "^6.4.299",
|
|
93
|
+
"react-player": "^3.4.0",
|
|
94
|
+
"shiki": "^4.5.0",
|
|
95
|
+
"utif": "^3.1.0",
|
|
96
|
+
"x-data-spreadsheet": "^1.1.9",
|
|
97
|
+
"xlsx": "^0.18.5"
|
|
98
|
+
},
|
|
99
|
+
"peerDependenciesMeta": {
|
|
100
|
+
"monaco-editor": {
|
|
101
|
+
"optional": true
|
|
102
|
+
},
|
|
103
|
+
"pdfjs-dist": {
|
|
104
|
+
"optional": true
|
|
105
|
+
},
|
|
106
|
+
"docx-preview": {
|
|
107
|
+
"optional": true
|
|
108
|
+
},
|
|
109
|
+
"xlsx": {
|
|
110
|
+
"optional": true
|
|
111
|
+
},
|
|
112
|
+
"@milkdown/core": {
|
|
113
|
+
"optional": true
|
|
114
|
+
},
|
|
115
|
+
"@milkdown/plugin-history": {
|
|
116
|
+
"optional": true
|
|
117
|
+
},
|
|
118
|
+
"@milkdown/preset-commonmark": {
|
|
119
|
+
"optional": true
|
|
120
|
+
},
|
|
121
|
+
"@milkdown/preset-gfm": {
|
|
122
|
+
"optional": true
|
|
123
|
+
},
|
|
124
|
+
"@milkdown/utils": {
|
|
125
|
+
"optional": true
|
|
126
|
+
},
|
|
127
|
+
"utif": {
|
|
128
|
+
"optional": true
|
|
129
|
+
},
|
|
130
|
+
"@milkdown/prose": {
|
|
131
|
+
"optional": true
|
|
132
|
+
},
|
|
133
|
+
"@milkdown/plugin-math": {
|
|
134
|
+
"optional": true
|
|
135
|
+
},
|
|
136
|
+
"@alwith/module-chat": {
|
|
137
|
+
"optional": true
|
|
138
|
+
},
|
|
139
|
+
"shiki": {
|
|
140
|
+
"optional": true
|
|
141
|
+
},
|
|
142
|
+
"dompurify": {
|
|
143
|
+
"optional": true
|
|
144
|
+
},
|
|
145
|
+
"katex": {
|
|
146
|
+
"optional": true
|
|
147
|
+
},
|
|
148
|
+
"marked": {
|
|
149
|
+
"optional": true
|
|
150
|
+
},
|
|
151
|
+
"x-data-spreadsheet": {
|
|
152
|
+
"optional": true
|
|
153
|
+
},
|
|
154
|
+
"audiomotion-analyzer": {
|
|
155
|
+
"optional": true
|
|
156
|
+
},
|
|
157
|
+
"react-player": {
|
|
158
|
+
"optional": true
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"publishConfig": {
|
|
162
|
+
"access": "public",
|
|
163
|
+
"registry": "https://registry.npmjs.org"
|
|
164
|
+
}
|
|
165
|
+
}
|