Browse Source

Merge branch 'master' into feat/136128-144923-autofocus-on-PageTitleHeader-when-editing-Untitled-page

Yuki Takei 1 year ago
parent
commit
17b47fc3da
100 changed files with 179 additions and 167 deletions
  1. 11 1
      .changeset/config.json
  2. 1 0
      .github/workflows/release-subpackages.yml
  3. 29 1
      CHANGELOG.md
  4. 1 1
      apps/app/docker/README.md
  5. 1 1
      apps/app/package.json
  6. 0 1
      apps/app/public/images/icons/editor/bold.svg
  7. 0 1
      apps/app/public/images/icons/editor/check.svg
  8. 0 1
      apps/app/public/images/icons/editor/code.svg
  9. 0 1
      apps/app/public/images/icons/editor/header.svg
  10. 0 1
      apps/app/public/images/icons/editor/italic.svg
  11. 0 1
      apps/app/public/images/icons/editor/list-ol.svg
  12. 0 1
      apps/app/public/images/icons/editor/list-ul.svg
  13. 0 1
      apps/app/public/images/icons/editor/picture.svg
  14. 0 1
      apps/app/public/images/icons/editor/quote.svg
  15. 0 1
      apps/app/public/images/icons/editor/strikethrough.svg
  16. 0 1
      apps/app/public/images/icons/editor/table.svg
  17. 1 1
      apps/app/src/client/services/side-effects/handsontable-modal-launcher-for-view.ts
  18. 3 2
      apps/app/src/components/PageComment/CommentEditor.tsx
  19. 10 15
      apps/app/src/components/PageControls/PageControls.tsx
  20. 3 2
      apps/app/src/components/PageEditor/ConflictDiffModal.tsx
  21. 1 2
      apps/app/src/components/PageEditor/DrawioModal.tsx
  22. 1 1
      apps/app/src/components/PageEditor/HandsontableModal.tsx
  23. 2 2
      apps/app/src/components/PageEditor/LinkEditModal.tsx
  24. 3 2
      apps/app/src/components/PageEditor/PageEditor.tsx
  25. 2 1
      apps/app/src/components/PageEditor/PageEditorReadOnly.tsx
  26. 2 1
      apps/app/src/components/PageEditor/ScrollSyncHelper.tsx
  27. 2 1
      apps/app/src/components/PageEditor/conflict.tsx
  28. 12 10
      apps/app/src/components/PageSelectModal/PageSelectModal.tsx
  29. 13 15
      apps/app/src/components/PageSelectModal/TreeItemForModal.tsx
  30. 13 7
      apps/app/src/components/Sidebar/PageTree/PageTreeSubstance.tsx
  31. 8 3
      apps/app/src/components/Sidebar/PageTreeItem/PageTreeItem.tsx
  32. 1 1
      apps/app/src/components/TemplateModal/TemplateModal.tsx
  33. 10 28
      apps/app/src/components/TreeItem/TreeItemLayout.tsx
  34. 1 1
      apps/app/src/interfaces/page.ts
  35. 0 9
      apps/app/src/server/service/page/index.ts
  36. 21 28
      apps/app/src/styles/_editor.scss
  37. 1 1
      apps/slackbot-proxy/package.json
  38. 2 1
      package.json
  39. 5 1
      packages/editor/src/client/components/CodeMirrorEditor/CodeMirrorEditor.module.scss
  40. 1 1
      packages/editor/src/client/components/CodeMirrorEditor/CodeMirrorEditor.tsx
  41. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/AttachmentsDropdownItem.tsx
  42. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/AttachmentsDropup.module.scss
  43. 1 1
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/AttachmentsDropup.tsx
  44. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/DiagramButton.tsx
  45. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/EmojiButton.tsx
  46. 1 1
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/LinkEditButton.tsx
  47. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TableButton.tsx
  48. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TemplateButton.tsx
  49. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TextFormatTools.module.scss
  50. 1 1
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TextFormatTools.tsx
  51. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/Toolbar.module.scss
  52. 1 1
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/Toolbar.tsx
  53. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/index.ts
  54. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/Toolbar/scss/toolbar-button.scss
  55. 0 0
      packages/editor/src/client/components/CodeMirrorEditor/index.ts
  56. 0 0
      packages/editor/src/client/components/CodeMirrorEditorComment.tsx
  57. 1 1
      packages/editor/src/client/components/CodeMirrorEditorDiff.tsx
  58. 1 1
      packages/editor/src/client/components/CodeMirrorEditorMain.tsx
  59. 1 1
      packages/editor/src/client/components/CodeMirrorEditorReadOnly.tsx
  60. 0 0
      packages/editor/src/client/components/MergeViewer.tsx
  61. 0 0
      packages/editor/src/client/components/index.ts
  62. 2 2
      packages/editor/src/client/components/playground/Playground.tsx
  63. 2 2
      packages/editor/src/client/components/playground/PlaygroundController.tsx
  64. 0 0
      packages/editor/src/client/components/playground/Preview.tsx
  65. 0 0
      packages/editor/src/client/components/playground/index.ts
  66. 3 0
      packages/editor/src/client/index.ts
  67. 0 0
      packages/editor/src/client/services-internal/editor-theme/.eslintrc.cjs
  68. 0 0
      packages/editor/src/client/services-internal/editor-theme/ayu.ts
  69. 0 0
      packages/editor/src/client/services-internal/editor-theme/cobalt.ts
  70. 0 0
      packages/editor/src/client/services-internal/editor-theme/eclipse.ts
  71. 1 1
      packages/editor/src/client/services-internal/editor-theme/index.ts
  72. 0 0
      packages/editor/src/client/services-internal/editor-theme/material.ts
  73. 0 0
      packages/editor/src/client/services-internal/editor-theme/nord.ts
  74. 0 0
      packages/editor/src/client/services-internal/editor-theme/original-dark.ts
  75. 0 0
      packages/editor/src/client/services-internal/editor-theme/original-light.ts
  76. 0 0
      packages/editor/src/client/services-internal/editor-theme/rose-pine.ts
  77. 0 0
      packages/editor/src/client/services-internal/extensions/emojiAutocompletionSettings.ts
  78. 0 0
      packages/editor/src/client/services-internal/extensions/index.ts
  79. 0 0
      packages/editor/src/client/services-internal/extensions/setDataLine.ts
  80. 0 0
      packages/editor/src/client/services-internal/file-dropzone/index.ts
  81. 0 0
      packages/editor/src/client/services-internal/file-dropzone/use-file-dropzone/FileDropzoneOverlay.tsx
  82. 0 0
      packages/editor/src/client/services-internal/file-dropzone/use-file-dropzone/use-file-dropzone.ts
  83. 0 0
      packages/editor/src/client/services-internal/index.ts
  84. 1 1
      packages/editor/src/client/services-internal/keymaps/index.ts
  85. 0 0
      packages/editor/src/client/services-internal/keymaps/vim.ts
  86. 0 1
      packages/editor/src/client/services-internal/link-util/index.ts
  87. 1 1
      packages/editor/src/client/services-internal/link-util/markdown-link-util.ts
  88. 0 0
      packages/editor/src/client/services-internal/list-util/index.ts
  89. 0 0
      packages/editor/src/client/services-internal/list-util/insert-newline-continue-markup.ts
  90. 0 0
      packages/editor/src/client/services-internal/paste-util/index.ts
  91. 0 0
      packages/editor/src/client/services-internal/paste-util/paste-markdown-util.ts
  92. 0 0
      packages/editor/src/client/services-internal/table/index.ts
  93. 1 1
      packages/editor/src/client/services-internal/table/insert-new-row-to-table-markdown.ts
  94. 0 0
      packages/editor/src/client/services-internal/table/use-show-table-icon.ts
  95. 0 0
      packages/editor/src/client/services/index.ts
  96. 0 0
      packages/editor/src/client/services/use-codemirror-editor/index.ts
  97. 0 0
      packages/editor/src/client/services/use-codemirror-editor/use-codemirror-editor.ts
  98. 0 0
      packages/editor/src/client/services/use-codemirror-editor/utils/append-extensions.ts
  99. 0 0
      packages/editor/src/client/services/use-codemirror-editor/utils/focus.ts
  100. 0 0
      packages/editor/src/client/services/use-codemirror-editor/utils/fold-drawio.ts

+ 11 - 1
.changeset/config.json

@@ -11,5 +11,15 @@
     "useCalculatedVersion": true,
     "useCalculatedVersion": true,
     "prereleaseTemplate": "{tag}.{commit}"
     "prereleaseTemplate": "{tag}.{commit}"
   },
   },
-  "ignore": []
+  "ignore": [
+    "@growi/app",
+    "@growi/slackbot-proxy",
+    "@growi/custom-icons",
+    "@growi/editor",
+    "@growi/presentation",
+    "@growi/preset-*",
+    "@growi/remark-*",
+    "@growi/slack",
+    "@growi/ui"
+  ]
 }
 }

+ 1 - 0
.github/workflows/release-subpackages.yml

@@ -108,6 +108,7 @@ jobs:
       uses: changesets/action@v1
       uses: changesets/action@v1
       with:
       with:
         title: Release Subpackages
         title: Release Subpackages
+        version: yarn version-subpackages
         publish: yarn release-subpackages
         publish: yarn release-subpackages
       env:
       env:
         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

+ 29 - 1
CHANGELOG.md

@@ -1,9 +1,37 @@
 # Changelog
 # Changelog
 
 
-## [Unreleased](https://github.com/weseek/growi/compare/v7.0.7...HEAD)
+## [Unreleased](https://github.com/weseek/growi/compare/v7.0.9...HEAD)
 
 
 *Please do not manually update this file. We've automated the process.*
 *Please do not manually update this file. We've automated the process.*
 
 
+## [v7.0.9](https://github.com/weseek/growi/compare/v7.0.8...v7.0.9) - 2024-05-30
+
+### 🐛 Bug Fixes
+
+* fix: Supress warning of checkbox (#8865) @yuki-takei
+* fix: Editor package import/export (#8864) @yuki-takei
+
+## [v7.0.8](https://github.com/weseek/growi/compare/v7.0.7...v7.0.8) - 2024-05-30
+
+### 💎 Features
+
+* feat: Select unrelated group inheritance on child page create (#8812) @arafubeatbox
+
+### 🚀 Improvement
+
+* imprv: Design coding of search result page (#8828) @miya
+
+### 🐛 Bug Fixes
+
+* fix: Page body sometimes appears doubled up when the editor is opened (#8858) @miya
+* fix: Brackets appearance when Nord editor theme (#8852) @satof3
+* fix: Slack notification not sent on page update (#8841) @miya
+* fix: Table icon is not displayed when hovering over the table (#8830) @WNomunomu
+
+### 🧰 Maintenance
+
+* support: Reorganize editor module exports (#8846) @yuki-takei
+
 ## [v7.0.7](https://github.com/weseek/growi/compare/v7.0.6...v7.0.7) - 2024-05-27
 ## [v7.0.7](https://github.com/weseek/growi/compare/v7.0.6...v7.0.7) - 2024-05-27
 
 
 ### 🚀 Improvement
 ### 🚀 Improvement

+ 1 - 1
apps/app/docker/README.md

@@ -10,7 +10,7 @@ GROWI Official docker image
 Supported tags and respective Dockerfile links
 Supported tags and respective Dockerfile links
 ------------------------------------------------
 ------------------------------------------------
 
 
-* [`7.0.7`, `7.0`, `7`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v7.0.7/apps/app/docker/Dockerfile)
+* [`7.0.9`, `7.0`, `7`, `latest` (Dockerfile)](https://github.com/weseek/growi/blob/v7.0.9/apps/app/docker/Dockerfile)
 * [`6.3.2`, `6.3`, `6` (Dockerfile)](https://github.com/weseek/growi/blob/v6.3.2/apps/app/docker/Dockerfile)
 * [`6.3.2`, `6.3`, `6` (Dockerfile)](https://github.com/weseek/growi/blob/v6.3.2/apps/app/docker/Dockerfile)
 * [`6.2.4`, `6.2` (Dockerfile)](https://github.com/weseek/growi/blob/v6.2.4/apps/app/docker/Dockerfile)
 * [`6.2.4`, `6.2` (Dockerfile)](https://github.com/weseek/growi/blob/v6.2.4/apps/app/docker/Dockerfile)
 * [`6.1.15`, `6.1` (Dockerfile)](https://github.com/weseek/growi/blob/v6.1.15/apps/app/docker/Dockerfile)
 * [`6.1.15`, `6.1` (Dockerfile)](https://github.com/weseek/growi/blob/v6.1.15/apps/app/docker/Dockerfile)

+ 1 - 1
apps/app/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@growi/app",
   "name": "@growi/app",
-  "version": "7.0.8-RC.0",
+  "version": "7.0.10-RC.0",
   "license": "MIT",
   "license": "MIT",
   "private": "true",
   "private": "true",
   "scripts": {
   "scripts": {

+ 0 - 1
apps/app/public/images/icons/editor/bold.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="109" height="140" viewBox="0 0 10.9 14"><path d="M0 0h5.6c3 0 4.7 1.1 4.7 3.4a3.1 3.1 0 0 1-2.5 3.1 3.7 3.7 0 0 1 3.1 3.5c0 2.9-1.4 4-4.2 4H0zm5.2 6.5c2.7 0 2.6-1.4 2.6-3.1S7.9.7 5.6.7H2.3v5.8zm-2.9 6.6h3.4c2.1 0 2.7-1.1 2.7-3.1s0-2.8-3.2-2.8H2.3z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/check.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="144" height="160" viewBox="0 0 14.4 16"><path d="M13.9 5.5a.5.5 0 0 1 .5.5v9a1.1 1.1 0 0 1-1.1 1H1a1.1 1.1 0 0 1-1-1V2.6a1.1 1.1 0 0 1 1-1h7.1a.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5H1V15h12.3V6a.6.6 0 0 1 .6-.5zM3.6 8.3a.5.5 0 0 0 0 .7l2.5 2.5a.8.8 0 0 0 1.1 0h.1l7-10.7c.1-.2.1-.6-.2-.7a.5.5 0 0 0-.7.1L6.6 10.6 4.3 8.3a.5.5 0 0 0-.7 0z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/code.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="181" height="140" viewBox="0 0 18.1 14"><path d="M17.8 7.9l-4 3.8a.5.5 0 0 1-.8 0 .5.5 0 0 1 0-.8L16.8 7 13 3.2a.6.6 0 0 1 0-.9.5.5 0 0 1 .8 0l4 3.8a1.3 1.3 0 0 1 0 1.8zM5.2 2.3a.7.7 0 0 1 0 .9L1.3 7l3.9 3.9a.6.6 0 0 1 0 .8.6.6 0 0 1-.9 0L.4 7.9a1.3 1.3 0 0 1 0-1.8l3.9-3.8a.6.6 0 0 1 .9 0zM11.5.8L7.8 13.6a.6.6 0 0 1-.7.4.6.6 0 0 1-.5-.8L10.3.4a.7.7 0 0 1 .8-.4.6.6 0 0 1 .4.8z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/header.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="137" height="140" viewBox="0 0 13.7 14"><path d="M10.2 0h2.9a.6.6 0 0 1 .6.6.6.6 0 0 1-.6.6h-.8v11.6h.8a.6.6 0 0 1 .6.6.6.6 0 0 1-.6.6h-2.9a.6.6 0 0 1-.6-.6.6.6 0 0 1 .6-.6h.8V7.2H2.7v5.6h.8a.6.6 0 0 1 .6.6.6.6 0 0 1-.6.6H.6a.6.6 0 0 1-.6-.6.6.6 0 0 1 .6-.6h.7V1.2H.6A.6.6 0 0 1 0 .6.6.6 0 0 1 .6 0h2.9a.6.6 0 0 1 .6.6.6.6 0 0 1-.6.6h-.8v4.9H11V1.2h-.8a.6.6 0 0 1-.6-.6.6.6 0 0 1 .6-.6z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/italic.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="86" height="139" viewBox="0 0 8.6 13.9"><path d="M8.1 0a.6.6 0 0 1 .5.6c0 .3-.2.6-.7.6H6.2L3.8 12.8h1.8c.2 0 .4.3.4.5a.7.7 0 0 1-.7.6H.5c-.3 0-.5-.4-.5-.6s.4-.6.7-.6h1.7L4.9 1.2H3.1a.5.5 0 0 1-.5-.5c0-.3.1-.7.8-.7z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/list-ol.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="237" height="160" viewBox="0 0 23.7 16"><path d="M23.7 2a.8.8 0 0 1-.8.8H6.6a.8.8 0 0 1-.7-.8.7.7 0 0 1 .7-.7h16.3a.7.7 0 0 1 .8.7zM6.6 8.7h16.3a.7.7 0 0 0 .8-.7.8.8 0 0 0-.8-.8H6.6a.8.8 0 0 0-.7.8.7.7 0 0 0 .7.7zm0 5.9h16.3a.7.7 0 0 0 .8-.7.7.7 0 0 0-.8-.7H6.6a.7.7 0 0 0-.7.7.7.7 0 0 0 .7.7zM1.5.5V4h.6V0h-.5L.7.5v.4l.8-.4zM.9 9.6l.3-.3c.9-.9 1.4-1.5 1.4-2.2a1.2 1.2 0 0 0-1.3-1.2h-.1a1.4 1.4 0 0 0-1.2.6l.3.4a1.2 1.2 0 0 1 .9-.5.6.6 0 0 1 .8.6v.2c0 .6-.4 1.1-1.5 2.1l-.4.4v.3h2.6v-.4zm.9 4.1a1 1 0 0 0 .7-.9 1 1 0 0 0-1.1-1 2 2 0 0 0-1.1.3v.4l.8-.2c.5 0 .8.2.8.6s-.5.7-.9.7H.7v.4H1c.6 0 1.1.2 1.1.8a.8.8 0 0 1-.9.8l-.9-.3-.2.4a2 2 0 0 0 1.1.3c1 0 1.5-.6 1.5-1.2a1.2 1.2 0 0 0-.9-1.1z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/list-ul.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="216" height="135" viewBox="0 0 21.6 13.5"><path d="M6.4 1.5h14.5a.7.7 0 0 0 .7-.7.7.7 0 0 0-.7-.7H6.4a.8.8 0 0 0-.8.7.8.8 0 0 0 .8.7zm0 6h14.5a.7.7 0 0 0 .7-.7.7.7 0 0 0-.7-.7H6.4a.8.8 0 0 0-.8.7.8.8 0 0 0 .8.7zm0 6h14.5a.7.7 0 0 0 .7-.7.7.7 0 0 0-.7-.7H6.4a.8.8 0 0 0-.8.7.8.8 0 0 0 .8.7zM.9 1.5h1a.8.8 0 0 0 .9-.7.8.8 0 0 0-.9-.8h-1a.8.8 0 0 0-.9.7.8.8 0 0 0 .9.8zm0 6h1a.8.8 0 0 0 .9-.7.8.8 0 0 0-.9-.8h-1a.8.8 0 0 0-.9.7.8.8 0 0 0 .9.8zm0 6h1a.8.8 0 0 0 .9-.7.8.8 0 0 0-.9-.7h-1a.8.8 0 0 0-.9.7.8.8 0 0 0 .9.7z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/picture.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="190" height="160" viewBox="0 0 19 16"><path d="M17.8 0H1.2A1.2 1.2 0 0 0 0 1.2v13.6A1.2 1.2 0 0 0 1.2 16h16.6a1.2 1.2 0 0 0 1.2-1.2V1.2a1.4 1.4 0 0 0-.2-.6.8.8 0 0 0-.4-.4zm0 14.8H1.2v-3.5l4.7-4.6 5 4.9.3.2.5-.2 2.1-1.9 3.9 4h.1v1.1zm0-2.8l-3.5-3.5-.4-.2h-.4l-2.2 2-4.9-4.8-.4-.2c-.2 0-.4 0-.5.2L1.2 9.7V1.2h16.6V12zm-4.2-6.1h.6a1.1 1.1 0 0 0 .6-1.1 1.2 1.2 0 0 0-1.2-1.1 1.3 1.3 0 0 0-1.2 1.2 1.2 1.2 0 0 0 .4.8 1.1 1.1 0 0 0 .8.3z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/quote.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="170" height="120" viewBox="0 0 17 12"><path d="M5 0H2a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a1.7 1.7 0 0 0 1-.3V10a.9.9 0 0 1-1 1H3v1h2a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 6H2a.9.9 0 0 1-1-1V2a.9.9 0 0 1 1-1h3a.9.9 0 0 1 1 1v3a.9.9 0 0 1-1 1zm10-6h-3a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h3a1.7 1.7 0 0 0 1-.3V10a.9.9 0 0 1-1 1h-2v1h2a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm0 6h-3a.9.9 0 0 1-1-1V2a.9.9 0 0 1 1-1h3a.9.9 0 0 1 1 1v3a.9.9 0 0 1-1 1z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/strikethrough.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="195" height="140" viewBox="0 0 19.5 14"><path d="M5.8 6.2H9C7.2 5.7 6.3 5 6.3 3.8a2.2 2.2 0 0 1 .9-1.9 4.3 4.3 0 0 1 2.5-.7 4.3 4.3 0 0 1 2.5.7 3.1 3.1 0 0 1 1.1 1.6.7.7 0 0 0 .6.4h.3a.7.7 0 0 0 .4-.8A3.6 3.6 0 0 0 13.1 1a6.7 6.7 0 0 0-6-.5 3.1 3.1 0 0 0-1.7 1.3 3.6 3.6 0 0 0-.6 2 2.9 2.9 0 0 0 1 2.3zm7 2.5a2 2 0 0 1 .6 1.4 2.4 2.4 0 0 1-1 1.9 3.7 3.7 0 0 1-2.5.7 4.6 4.6 0 0 1-3-.8 3.7 3.7 0 0 1-1.2-2 .6.6 0 0 0-.6-.5h-.2a.7.7 0 0 0-.5.8 4.1 4.1 0 0 0 1.5 2.5A6 6 0 0 0 9.8 14a7.5 7.5 0 0 0 2.6-.5 4.9 4.9 0 0 0 1.8-1.4 4.3 4.3 0 0 0 .6-2.2 5 5 0 0 0-.2-1.2zM.4 7.9a.7.7 0 0 1-.4-.5.4.4 0 0 1 .4-.4h18.8a.4.4 0 0 1 .3.6c0 .1-.1.2-.2.3z"/></svg>

+ 0 - 1
apps/app/public/images/icons/editor/table.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="203" height="160" viewBox="0 0 20.3 16"><path d="M19.1 16H1.2A1.2 1.2 0 0 1 0 14.8V1.2A1.2 1.2 0 0 1 1.2 0h17.9a1.2 1.2 0 0 1 1.2 1.2v13.6a1.2 1.2 0 0 1-1.2 1.2zm-5.2-4.3v3.2h5.3v-3.2zm-6.4 0v3.2h5.3v-3.2zm-6.4 0v3.2h5.3v-3.2zm12.8-4.2v3.2h5.3V7.5zm-6.4 0v3.2h5.3V7.5zm-6.4 0v3.2h5.3V7.5zm12.8-4.3v3.2h5.3V3.2zm-6.4 0v3.2h5.3V3.2zm-6.4 0v3.2h5.3V3.2z"/></svg>

+ 1 - 1
apps/app/src/client/services/side-effects/handsontable-modal-launcher-for-view.ts

@@ -3,8 +3,8 @@ import { useCallback, useEffect } from 'react';
 import type EventEmitter from 'events';
 import type EventEmitter from 'events';
 
 
 import { Origin } from '@growi/core';
 import { Origin } from '@growi/core';
-
 import type { MarkdownTable } from '@growi/editor';
 import type { MarkdownTable } from '@growi/editor';
+
 import { extractRemoteRevisionDataFromErrorObj, updatePage as _updatePage } from '~/client/services/update-page';
 import { extractRemoteRevisionDataFromErrorObj, updatePage as _updatePage } from '~/client/services/update-page';
 import { getMarkdownTableFromLine, replaceMarkdownTableInMarkdown } from '~/components/Page/markdown-table-util-for-view';
 import { getMarkdownTableFromLine, replaceMarkdownTableInMarkdown } from '~/components/Page/markdown-table-util-for-view';
 import { useShareLinkId } from '~/stores/context';
 import { useShareLinkId } from '~/stores/context';

+ 3 - 2
apps/app/src/components/PageComment/CommentEditor.tsx

@@ -4,9 +4,10 @@ import React, {
   useMemo,
   useMemo,
 } from 'react';
 } from 'react';
 
 
+import { GlobalCodeMirrorEditorKey } from '@growi/editor';
 import {
 import {
-  CodeMirrorEditorComment, GlobalCodeMirrorEditorKey, useCodeMirrorEditorIsolated, useResolvedThemeForEditor,
-} from '@growi/editor';
+  CodeMirrorEditorComment, useCodeMirrorEditorIsolated, useResolvedThemeForEditor,
+} from '@growi/editor/dist/client';
 import { UserPicture } from '@growi/ui/dist/components';
 import { UserPicture } from '@growi/ui/dist/components';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import dynamic from 'next/dynamic';

+ 10 - 15
apps/app/src/components/PageControls/PageControls.tsx

@@ -1,3 +1,4 @@
+import type { MouseEventHandler } from 'react';
 import React, {
 import React, {
   memo, useCallback, useEffect, useMemo, useRef,
   memo, useCallback, useEffect, useMemo, useRef,
 } from 'react';
 } from 'react';
@@ -10,6 +11,7 @@ import {
 } from '@growi/core';
 } from '@growi/core';
 import { useRect } from '@growi/ui/dist/utils';
 import { useRect } from '@growi/ui/dist/utils';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
+import { DropdownItem } from 'reactstrap';
 
 
 import {
 import {
   toggleLike, toggleSubscribe,
   toggleLike, toggleSubscribe,
@@ -65,7 +67,7 @@ const Tags = (props: TagsProps): JSX.Element => {
 };
 };
 
 
 type WideViewMenuItemProps = AdditionalMenuItemsRendererProps & {
 type WideViewMenuItemProps = AdditionalMenuItemsRendererProps & {
-  onClickMenuItem: () => void,
+  onClick: () => void,
   expandContentWidth?: boolean,
   expandContentWidth?: boolean,
 }
 }
 
 
@@ -73,30 +75,23 @@ const WideViewMenuItem = (props: WideViewMenuItemProps): JSX.Element => {
   const { t } = useTranslation();
   const { t } = useTranslation();
 
 
   const {
   const {
-    onClickMenuItem, expandContentWidth,
+    onClick, expandContentWidth,
   } = props;
   } = props;
 
 
-  const menuItemClickedHandler = useCallback((e: React.MouseEvent<HTMLInputElement>) => {
-    e.preventDefault();
-    onClickMenuItem();
-  }, [onClickMenuItem]);
-
   return (
   return (
-    <div
-      className="grw-page-control-dropdown-item dropdown-item"
-      onClick={menuItemClickedHandler}
-    >
+    <DropdownItem className="grw-page-control-dropdown-item dropdown-item" onClick={onClick} toggle={false}>
       <div className="form-check form-switch ms-1">
       <div className="form-check form-switch ms-1">
         <input
         <input
-          className="form-check-input"
+          className="form-check-input pe-none"
           type="checkbox"
           type="checkbox"
           checked={expandContentWidth}
           checked={expandContentWidth}
+          onChange={() => {}}
         />
         />
-        <label className="form-label form-check-label">
+        <label className="form-check-label pe-none">
           { t('wide_view') }
           { t('wide_view') }
         </label>
         </label>
       </div>
       </div>
-    </div>
+    </DropdownItem>
   );
   );
 };
 };
 
 
@@ -255,7 +250,7 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
     }
     }
     const wideviewMenuItemRenderer = (props: WideViewMenuItemProps) => {
     const wideviewMenuItemRenderer = (props: WideViewMenuItemProps) => {
 
 
-      return <WideViewMenuItem {...props} onClickMenuItem={switchContentWidthClickHandler} expandContentWidth={expandContentWidth} />;
+      return <WideViewMenuItem {...props} onClick={switchContentWidthClickHandler} expandContentWidth={expandContentWidth} />;
     };
     };
     return wideviewMenuItemRenderer;
     return wideviewMenuItemRenderer;
   }, [pageInfo, switchContentWidthClickHandler, expandContentWidth]);
   }, [pageInfo, switchContentWidthClickHandler, expandContentWidth]);

+ 3 - 2
apps/app/src/components/PageEditor/ConflictDiffModal.tsx

@@ -3,9 +3,10 @@ import React, {
 } from 'react';
 } from 'react';
 
 
 import type { IUser } from '@growi/core';
 import type { IUser } from '@growi/core';
+import { GlobalCodeMirrorEditorKey } from '@growi/editor';
 import {
 import {
-  MergeViewer, CodeMirrorEditorDiff, GlobalCodeMirrorEditorKey, useCodeMirrorEditorIsolated,
-} from '@growi/editor';
+  MergeViewer, CodeMirrorEditorDiff, useCodeMirrorEditorIsolated,
+} from '@growi/editor/dist/client';
 import { UserPicture } from '@growi/ui/dist/components';
 import { UserPicture } from '@growi/ui/dist/components';
 import { format } from 'date-fns/format';
 import { format } from 'date-fns/format';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';

+ 1 - 2
apps/app/src/components/PageEditor/DrawioModal.tsx

@@ -4,8 +4,7 @@ import React, {
   useMemo,
   useMemo,
 } from 'react';
 } from 'react';
 
 
-import { useCodeMirrorEditorIsolated } from '@growi/editor';
-import { useDrawioModalForEditor } from '@growi/editor/src/stores/use-drawio';
+import { useCodeMirrorEditorIsolated, useDrawioModalForEditor } from '@growi/editor/dist/client';
 import { LoadingSpinner } from '@growi/ui/dist/components';
 import { LoadingSpinner } from '@growi/ui/dist/components';
 import {
 import {
   Modal,
   Modal,

+ 1 - 1
apps/app/src/components/PageEditor/HandsontableModal.tsx

@@ -1,7 +1,7 @@
 import React, { useState } from 'react';
 import React, { useState } from 'react';
 
 
 import { MarkdownTable } from '@growi/editor';
 import { MarkdownTable } from '@growi/editor';
-import { useHandsontableModalForEditor } from '@growi/editor/src/stores/use-handsontable';
+import { useHandsontableModalForEditor } from '@growi/editor/dist/client';
 import { HotTable } from '@handsontable/react';
 import { HotTable } from '@handsontable/react';
 import type Handsontable from 'handsontable';
 import type Handsontable from 'handsontable';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';

+ 2 - 2
apps/app/src/components/PageEditor/LinkEditModal.tsx

@@ -2,8 +2,8 @@ import React, { useEffect, useState, useCallback } from 'react';
 
 
 import path from 'path';
 import path from 'path';
 
 
-import { Linker } from '@growi/editor/src/services-internal';
-import { useLinkEditModal } from '@growi/editor/src/stores/use-link-edit-modal';
+import { Linker } from '@growi/editor';
+import { useLinkEditModal } from '@growi/editor/dist/client';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
 import {
 import {
   Modal,
   Modal,

+ 3 - 2
apps/app/src/components/PageEditor/PageEditor.tsx

@@ -9,10 +9,11 @@ import nodePath from 'path';
 
 
 import { type IPageHasId, Origin } from '@growi/core';
 import { type IPageHasId, Origin } from '@growi/core';
 import { pathUtils } from '@growi/core/dist/utils';
 import { pathUtils } from '@growi/core/dist/utils';
+import { GlobalCodeMirrorEditorKey } from '@growi/editor';
 import {
 import {
-  CodeMirrorEditorMain, GlobalCodeMirrorEditorKey,
+  CodeMirrorEditorMain,
   useCodeMirrorEditorIsolated, useResolvedThemeForEditor,
   useCodeMirrorEditorIsolated, useResolvedThemeForEditor,
-} from '@growi/editor';
+} from '@growi/editor/dist/client';
 import { useRect } from '@growi/ui/dist/utils';
 import { useRect } from '@growi/ui/dist/utils';
 import detectIndent from 'detect-indent';
 import detectIndent from 'detect-indent';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';

+ 2 - 1
apps/app/src/components/PageEditor/PageEditorReadOnly.tsx

@@ -1,6 +1,7 @@
 import react, { useMemo, useRef } from 'react';
 import react, { useMemo, useRef } from 'react';
 
 
-import { CodeMirrorEditorReadOnly, GlobalCodeMirrorEditorKey } from '@growi/editor';
+import { GlobalCodeMirrorEditorKey } from '@growi/editor';
+import { CodeMirrorEditorReadOnly } from '@growi/editor/dist/client';
 import { throttle } from 'throttle-debounce';
 import { throttle } from 'throttle-debounce';
 
 
 import { useShouldExpandContent } from '~/client/services/layout';
 import { useShouldExpandContent } from '~/client/services/layout';

+ 2 - 1
apps/app/src/components/PageEditor/ScrollSyncHelper.tsx

@@ -1,6 +1,7 @@
 import { useCallback, type RefObject, useRef } from 'react';
 import { useCallback, type RefObject, useRef } from 'react';
 
 
-import { useCodeMirrorEditorIsolated, type GlobalCodeMirrorEditorKey } from '@growi/editor';
+import type { GlobalCodeMirrorEditorKey } from '@growi/editor';
+import { useCodeMirrorEditorIsolated } from '@growi/editor/dist/client';
 
 
 let defaultTop = 0;
 let defaultTop = 0;
 const padding = 5;
 const padding = 5;

+ 2 - 1
apps/app/src/components/PageEditor/conflict.tsx

@@ -2,7 +2,8 @@ import { useCallback, useEffect } from 'react';
 
 
 import { Origin } from '@growi/core';
 import { Origin } from '@growi/core';
 import { useGlobalSocket } from '@growi/core/dist/swr';
 import { useGlobalSocket } from '@growi/core/dist/swr';
-import { GlobalCodeMirrorEditorKey, useCodeMirrorEditorIsolated } from '@growi/editor';
+import { GlobalCodeMirrorEditorKey } from '@growi/editor';
+import { useCodeMirrorEditorIsolated } from '@growi/editor/dist/client';
 import { useTranslation } from 'react-i18next';
 import { useTranslation } from 'react-i18next';
 
 
 import { useUpdateStateAfterSave } from '~/client/services/page-operation';
 import { useUpdateStateAfterSave } from '~/client/services/page-operation';

+ 12 - 10
apps/app/src/components/PageSelectModal/PageSelectModal.tsx

@@ -1,8 +1,11 @@
 import type { FC } from 'react';
 import type { FC } from 'react';
-import { Suspense, useState, useCallback } from 'react';
+import {
+  Suspense, useState, useCallback, useEffect,
+} from 'react';
 
 
 import nodePath from 'path';
 import nodePath from 'path';
 
 
+import { pathUtils } from '@growi/core/dist/utils';
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
 import {
 import {
   Modal, ModalHeader, ModalBody, ModalFooter, Button,
   Modal, ModalHeader, ModalBody, ModalFooter, Button,
@@ -11,7 +14,7 @@ import {
 import type { IPageForItem } from '~/interfaces/page';
 import type { IPageForItem } from '~/interfaces/page';
 import { useTargetAndAncestors, useIsGuestUser, useIsReadOnlyUser } from '~/stores/context';
 import { useTargetAndAncestors, useIsGuestUser, useIsReadOnlyUser } from '~/stores/context';
 import { usePageSelectModal } from '~/stores/modal';
 import { usePageSelectModal } from '~/stores/modal';
-import { useCurrentPagePath, useCurrentPageId, useSWRxCurrentPage } from '~/stores/page';
+import { useSWRxCurrentPage } from '~/stores/page';
 
 
 import { ItemsTree } from '../ItemsTree';
 import { ItemsTree } from '../ItemsTree';
 import ItemsTreeContentSkeleton from '../ItemsTree/ItemsTreeContentSkeleton';
 import ItemsTreeContentSkeleton from '../ItemsTree/ItemsTreeContentSkeleton';
@@ -19,7 +22,6 @@ import { usePagePathRenameHandler } from '../PageEditor/page-path-rename-utils';
 
 
 import { TreeItemForModal } from './TreeItemForModal';
 import { TreeItemForModal } from './TreeItemForModal';
 
 
-
 export const PageSelectModal: FC = () => {
 export const PageSelectModal: FC = () => {
   const {
   const {
     data: PageSelectModalData,
     data: PageSelectModalData,
@@ -34,8 +36,6 @@ export const PageSelectModal: FC = () => {
 
 
   const { data: isGuestUser } = useIsGuestUser();
   const { data: isGuestUser } = useIsGuestUser();
   const { data: isReadOnlyUser } = useIsReadOnlyUser();
   const { data: isReadOnlyUser } = useIsReadOnlyUser();
-  const { data: currentPath } = useCurrentPagePath();
-  const { data: targetId } = useCurrentPageId();
   const { data: targetAndAncestorsData } = useTargetAndAncestors();
   const { data: targetAndAncestorsData } = useTargetAndAncestors();
   const { data: currentPage } = useSWRxCurrentPage();
   const { data: currentPage } = useSWRxCurrentPage();
 
 
@@ -45,7 +45,7 @@ export const PageSelectModal: FC = () => {
     const parentPagePath = page.path;
     const parentPagePath = page.path;
 
 
     if (parentPagePath == null) {
     if (parentPagePath == null) {
-      return;
+      return <></>;
     }
     }
 
 
     setClickedParentPagePath(parentPagePath);
     setClickedParentPagePath(parentPagePath);
@@ -67,12 +67,14 @@ export const PageSelectModal: FC = () => {
     closeModal();
     closeModal();
   }, [clickedParentPagePath, closeModal, currentPage?.path, pagePathRenameHandler]);
   }, [clickedParentPagePath, closeModal, currentPage?.path, pagePathRenameHandler]);
 
 
-  const targetPathOrId = targetId || currentPath;
+  const parentPagePath = pathUtils.addTrailingSlash(nodePath.dirname(currentPage?.path ?? ''));
+
+  const targetPathOrId = clickedParentPagePath || parentPagePath;
 
 
-  const path = currentPath || '/';
+  const targetPath = clickedParentPagePath || parentPagePath;
 
 
   if (isGuestUser == null) {
   if (isGuestUser == null) {
-    return null;
+    return <></>;
   }
   }
 
 
   return (
   return (
@@ -89,7 +91,7 @@ export const PageSelectModal: FC = () => {
             CustomTreeItem={TreeItemForModal}
             CustomTreeItem={TreeItemForModal}
             isEnableActions={!isGuestUser}
             isEnableActions={!isGuestUser}
             isReadOnlyUser={!!isReadOnlyUser}
             isReadOnlyUser={!!isReadOnlyUser}
-            targetPath={path}
+            targetPath={targetPath}
             targetPathOrId={targetPathOrId}
             targetPathOrId={targetPathOrId}
             targetAndAncestorsData={targetAndAncestorsData}
             targetAndAncestorsData={targetAndAncestorsData}
             onClickTreeItem={onClickTreeItem}
             onClickTreeItem={onClickTreeItem}

+ 13 - 15
apps/app/src/components/PageSelectModal/TreeItemForModal.tsx

@@ -10,33 +10,31 @@ import styles from './TreeItemForModal.module.scss';
 const moduleClass = styles['tree-item-for-modal'];
 const moduleClass = styles['tree-item-for-modal'];
 
 
 
 
-type PageTreeItemProps = TreeItemProps & {
+type TreeItemForModalProps = TreeItemProps & {
   key?: React.Key | null,
   key?: React.Key | null,
 };
 };
 
 
-export const TreeItemForModal: FC<PageTreeItemProps> = (props) => {
+export const TreeItemForModal: FC<TreeItemForModalProps> = (props) => {
 
 
-  const { isOpen, onClick } = props;
+  const { itemNode, targetPathOrId } = props;
+  const { page } = itemNode;
 
 
   const { Input: NewPageInput, CreateButton: NewPageCreateButton } = useNewPageInput();
   const { Input: NewPageInput, CreateButton: NewPageCreateButton } = useNewPageInput();
 
 
+  const isSelected = page._id === targetPathOrId || page.path === targetPathOrId;
+
+  const itemClassNames = [
+    isSelected ? 'active' : '',
+  ];
+
   return (
   return (
     <TreeItemLayout
     <TreeItemLayout
-      key={props.key}
+      {...props}
       className={moduleClass}
       className={moduleClass}
-      targetPathOrId={props.targetPathOrId}
-      itemLevel={props.itemLevel}
-      itemNode={props.itemNode}
-      isOpen={isOpen}
-      isEnableActions={props.isEnableActions}
-      isReadOnlyUser={props.isReadOnlyUser}
-      onClickDuplicateMenuItem={props.onClickDuplicateMenuItem}
-      onClickDeleteMenuItem={props.onClickDeleteMenuItem}
-      onRenamed={props.onRenamed}
-      customHeadOfChildrenComponents={[NewPageInput]}
       itemClass={TreeItemForModal}
       itemClass={TreeItemForModal}
+      itemClassName={itemClassNames.join(' ')}
+      customHeadOfChildrenComponents={[NewPageInput]}
       customHoveredEndComponents={[NewPageCreateButton]}
       customHoveredEndComponents={[NewPageCreateButton]}
-      onClick={onClick}
     />
     />
   );
   );
 };
 };

+ 13 - 7
apps/app/src/components/Sidebar/PageTree/PageTreeSubstance.tsx

@@ -57,11 +57,12 @@ export const PageTreeHeader = memo(({ isWipPageShown, onWipPageShownChange }: He
           <li className="dropdown-item" onClick={onWipPageShownChange}>
           <li className="dropdown-item" onClick={onWipPageShownChange}>
             <div className="form-check form-switch">
             <div className="form-check form-switch">
               <input
               <input
-                className="form-check-input"
+                className="form-check-input pe-none"
                 type="checkbox"
                 type="checkbox"
                 checked={isWipPageShown}
                 checked={isWipPageShown}
+                onChange={() => {}}
               />
               />
-              <label className="form-label form-check-label text-muted mb-0">
+              <label className="form-check-label pe-none">
                 {t('sidebar_header.show_wip_page')}
                 {t('sidebar_header.show_wip_page')}
               </label>
               </label>
             </div>
             </div>
@@ -109,19 +110,25 @@ export const PageTreeContent = memo(({ isWipPageShown }: PageTreeContentProps) =
   const { data: sidebarScrollerRef } = useSidebarScrollerRef();
   const { data: sidebarScrollerRef } = useSidebarScrollerRef();
   const [isInitialScrollCompleted, setIsInitialScrollCompleted] = useState(false);
   const [isInitialScrollCompleted, setIsInitialScrollCompleted] = useState(false);
 
 
-  const rootElemRef = useRef(null);
+  const rootElemRef = useRef<HTMLDivElement>(null);
 
 
   // ***************************  Scroll on init ***************************
   // ***************************  Scroll on init ***************************
   const scrollOnInit = useCallback(() => {
   const scrollOnInit = useCallback(() => {
-    const scrollTargetElement = document.getElementById('grw-pagetree-current-page-item');
+    const rootElement = rootElemRef.current;
+    const scrollElement = sidebarScrollerRef?.current;
 
 
-    if (sidebarScrollerRef?.current == null || scrollTargetElement == null) {
+    if (rootElement == null || scrollElement == null) {
+      return;
+    }
+
+    const scrollTargetElement = rootElement.querySelector<HTMLElement>('[aria-current]');
+
+    if (scrollTargetElement == null) {
       return;
       return;
     }
     }
 
 
     logger.debug('scrollOnInit has invoked');
     logger.debug('scrollOnInit has invoked');
 
 
-    const scrollElement = sidebarScrollerRef.current;
 
 
     // NOTE: could not use scrollIntoView
     // NOTE: could not use scrollIntoView
     //  https://stackoverflow.com/questions/11039885/scrollintoview-causing-the-whole-page-to-move
     //  https://stackoverflow.com/questions/11039885/scrollintoview-causing-the-whole-page-to-move
@@ -173,7 +180,6 @@ export const PageTreeContent = memo(({ isWipPageShown }: PageTreeContentProps) =
     return null;
     return null;
   }
   }
 
 
-
   return (
   return (
     <div ref={rootElemRef} className="pt-4">
     <div ref={rootElemRef} className="pt-4">
       <ItemsTree
       <ItemsTree

+ 8 - 3
apps/app/src/components/Sidebar/PageTreeItem/PageTreeItem.tsx

@@ -26,6 +26,7 @@ import { CountBadgeForPageTreeItem } from './CountBadgeForPageTreeItem';
 import { CreatingNewPageSpinner } from './CreatingNewPageSpinner';
 import { CreatingNewPageSpinner } from './CreatingNewPageSpinner';
 import { usePageItemControl } from './use-page-item-control';
 import { usePageItemControl } from './use-page-item-control';
 
 
+
 import styles from './PageTreeItem.module.scss';
 import styles from './PageTreeItem.module.scss';
 
 
 const moduleClass = styles['page-tree-item'] ?? '';
 const moduleClass = styles['page-tree-item'] ?? '';
@@ -56,7 +57,7 @@ export const PageTreeItem: FC<TreeItemProps> = (props) => {
   const { t } = useTranslation();
   const { t } = useTranslation();
 
 
   const {
   const {
-    itemNode, isOpen: _isOpen = false, onRenamed,
+    itemNode, targetPathOrId, isOpen: _isOpen = false, onRenamed,
   } = props;
   } = props;
 
 
   const { page } = itemNode;
   const { page } = itemNode;
@@ -166,7 +167,11 @@ export const PageTreeItem: FC<TreeItemProps> = (props) => {
     drop(c);
     drop(c);
   };
   };
 
 
-  const itemClassName = `${isOver ? 'drag-over' : ''}`;
+  const isSelected = page._id === targetPathOrId || page.path === targetPathOrId;
+  const itemClassNames = [
+    isOver ? 'drag-over' : '',
+    page.path !== '/' && isSelected ? 'active' : '', // set 'active' except the root page
+  ];
 
 
   return (
   return (
     <TreeItemLayout
     <TreeItemLayout
@@ -184,7 +189,7 @@ export const PageTreeItem: FC<TreeItemProps> = (props) => {
       onRenamed={props.onRenamed}
       onRenamed={props.onRenamed}
       itemRef={itemRef}
       itemRef={itemRef}
       itemClass={PageTreeItem}
       itemClass={PageTreeItem}
-      itemClassName={itemClassName}
+      itemClassName={itemClassNames.join(' ')}
       customEndComponents={[CountBadgeForPageTreeItem]}
       customEndComponents={[CountBadgeForPageTreeItem]}
       customHoveredEndComponents={[Control, NewPageCreateButton]}
       customHoveredEndComponents={[Control, NewPageCreateButton]}
       customHeadOfChildrenComponents={[NewPageInput, () => <CreatingNewPageSpinner show={isProcessingSubmission} />]}
       customHeadOfChildrenComponents={[NewPageInput, () => <CreatingNewPageSpinner show={isProcessingSubmission} />]}

+ 1 - 1
apps/app/src/components/TemplateModal/TemplateModal.tsx

@@ -5,7 +5,7 @@ import React, {
 import assert from 'assert';
 import assert from 'assert';
 
 
 import type { Lang } from '@growi/core';
 import type { Lang } from '@growi/core';
-import { useTemplateModal, type TemplateModalStatus } from '@growi/editor/src/stores/use-template-modal';
+import { useTemplateModal, type TemplateModalStatus } from '@growi/editor/dist/client';
 import {
 import {
   extractSupportedLocales, getLocalizedTemplate, type TemplateSummary,
   extractSupportedLocales, getLocalizedTemplate, type TemplateSummary,
 } from '@growi/pluginkit/dist/v4';
 } from '@growi/pluginkit/dist/v4';

+ 10 - 28
apps/app/src/components/TreeItem/TreeItemLayout.tsx

@@ -1,10 +1,8 @@
 import React, {
 import React, {
-  useCallback, useState, useEffect,
+  useCallback, useState, useEffect, useMemo,
   type FC, type RefObject, type RefCallback, type MouseEvent,
   type FC, type RefObject, type RefCallback, type MouseEvent,
 } from 'react';
 } from 'react';
 
 
-import type { Nullable } from '@growi/core';
-
 import { useSWRxPageChildren } from '~/stores/page-listing';
 import { useSWRxPageChildren } from '~/stores/page-listing';
 import { usePageTreeDescCountMap } from '~/stores/ui';
 import { usePageTreeDescCountMap } from '~/stores/ui';
 
 
@@ -18,24 +16,6 @@ import styles from './TreeItemLayout.module.scss';
 const moduleClass = styles['tree-item-layout'] ?? '';
 const moduleClass = styles['tree-item-layout'] ?? '';
 
 
 
 
-// Utility to mark target
-const markTarget = (children: ItemNode[], targetPathOrId?: Nullable<string>): void => {
-  if (targetPathOrId == null) {
-    return;
-  }
-
-  children.forEach((node) => {
-    if (node.page._id === targetPathOrId || node.page.path === targetPathOrId) {
-      node.page.isTarget = true;
-    }
-    else {
-      node.page.isTarget = false;
-    }
-    return node;
-  });
-};
-
-
 type TreeItemLayoutProps = TreeItemProps & {
 type TreeItemLayoutProps = TreeItemProps & {
   className?: string,
   className?: string,
   itemRef?: RefObject<any> | RefCallback<any>,
   itemRef?: RefObject<any> | RefCallback<any>,
@@ -98,7 +78,6 @@ export const TreeItemLayout: FC<TreeItemLayoutProps> = (props) => {
    */
    */
   useEffect(() => {
   useEffect(() => {
     if (children.length > currentChildren.length) {
     if (children.length > currentChildren.length) {
-      markTarget(children, targetPathOrId);
       setCurrentChildren(children);
       setCurrentChildren(children);
     }
     }
   }, [children, currentChildren.length, targetPathOrId]);
   }, [children, currentChildren.length, targetPathOrId]);
@@ -109,11 +88,14 @@ export const TreeItemLayout: FC<TreeItemLayoutProps> = (props) => {
   useEffect(() => {
   useEffect(() => {
     if (isOpen && data != null) {
     if (isOpen && data != null) {
       const newChildren = ItemNode.generateNodesFromPages(data.children);
       const newChildren = ItemNode.generateNodesFromPages(data.children);
-      markTarget(newChildren, targetPathOrId);
       setCurrentChildren(newChildren);
       setCurrentChildren(newChildren);
     }
     }
   }, [data, isOpen, targetPathOrId]);
   }, [data, isOpen, targetPathOrId]);
 
 
+  const isSelected = useMemo(() => {
+    return page._id === targetPathOrId || page.path === targetPathOrId;
+  }, [page, targetPathOrId]);
+
   const ItemClassFixed = itemClass ?? TreeItemLayout;
   const ItemClassFixed = itemClass ?? TreeItemLayout;
 
 
   const baseProps: Omit<TreeItemProps, 'itemLevel' | 'itemNode'> = {
   const baseProps: Omit<TreeItemProps, 'itemLevel' | 'itemNode'> = {
@@ -155,11 +137,11 @@ export const TreeItemLayout: FC<TreeItemLayoutProps> = (props) => {
       <li
       <li
         ref={itemRef}
         ref={itemRef}
         role="button"
         role="button"
-        className={`list-group-item ${itemClassName}
-          border-0 py-0 ps-0 d-flex align-items-center rounded-1
-          ${page.isTarget ? 'active' : 'list-group-item-action'}`}
-        id={page.isTarget ? 'grw-pagetree-current-page-item' : `grw-pagetree-list-${page._id}`}
+        className={`list-group-item list-group-item-action ${itemClassName}
+          border-0 py-0 ps-0 d-flex align-items-center rounded-1`}
+        id={`grw-pagetree-list-${page._id}`}
         onClick={itemClickHandler}
         onClick={itemClickHandler}
+        aria-current={isSelected ? true : undefined}
       >
       >
 
 
         <div className="btn-triangle-container d-flex justify-content-center">
         <div className="btn-triangle-container d-flex justify-content-center">
@@ -224,7 +206,7 @@ export const TreeItemLayout: FC<TreeItemLayoutProps> = (props) => {
             };
             };
 
 
             return (
             return (
-              <ItemClassFixed {...itemProps} />
+              <ItemClassFixed key={node.page._id} {...itemProps} />
             );
             );
           }) }
           }) }
 
 

+ 1 - 1
apps/app/src/interfaces/page.ts

@@ -10,7 +10,7 @@ export {
   isIPageInfoForEntity, isIPageInfoForOperation, isIPageInfoForListing,
   isIPageInfoForEntity, isIPageInfoForOperation, isIPageInfoForListing,
 } from '@growi/core';
 } from '@growi/core';
 
 
-export type IPageForItem = Partial<IPageHasId & {isTarget?: boolean, processData?: IPageOperationProcessData}>;
+export type IPageForItem = Partial<IPageHasId & {processData?: IPageOperationProcessData}>;
 
 
 export const UserGroupPageGrantStatus = {
 export const UserGroupPageGrantStatus = {
   isGranted: 'isGranted',
   isGranted: 'isGranted',

+ 0 - 9
apps/app/src/server/service/page/index.ts

@@ -4396,7 +4396,6 @@ class PageService implements IPageService {
       .lean()
       .lean()
       .exec();
       .exec();
 
 
-    this.injectIsTargetIntoPages(pages, path);
     await this.injectProcessDataIntoPagesByActionTypes(pages, [PageActionType.Rename]);
     await this.injectProcessDataIntoPagesByActionTypes(pages, [PageActionType.Rename]);
 
 
     /*
     /*
@@ -4416,14 +4415,6 @@ class PageService implements IPageService {
     return pathToChildren;
     return pathToChildren;
   }
   }
 
 
-  private injectIsTargetIntoPages(pages: (PageDocument & {isTarget?: boolean})[], path): void {
-    pages.forEach((page) => {
-      if (page.path === path) {
-        page.isTarget = true;
-      }
-    });
-  }
-
   /**
   /**
    * Inject processData into page docuements
    * Inject processData into page docuements
    * The processData is a combination of actionType as a key and information on whether the action is processable as a value.
    * The processData is a combination of actionType as a key and information on whether the action is processable as a value.

+ 21 - 28
apps/app/src/styles/_editor.scss

@@ -43,34 +43,27 @@
       border-right: 1px solid transparent;
       border-right: 1px solid transparent;
 
 
       // add icon on cursor
       // add icon on cursor
-      .markdown-table-activated,
-      .markdown-link-activated {
-        .CodeMirror-cursor {
-          &::after {
-            position: relative;
-            top: -1.1em;
-            left: 0.3em;
-            display: block;
-            width: 1em;
-            height: 1em;
-            content: ' ';
-            background-repeat: no-repeat;
-            background-size: 1em;
-          }
-        }
-      }
-
-      .markdown-table-activated .CodeMirror-cursor {
-        &::after {
-          background-image: url('/images/icons/editor/table.svg');
-        }
-      }
-
-      .markdown-link-activated .CodeMirror-cursor {
-        &::after {
-          background-image: url('/images/icons/editor/link.svg');
-        }
-      }
+      // .markdown-link-activated {
+      //   .CodeMirror-cursor {
+      //     &::after {
+      //       position: relative;
+      //       top: -1.1em;
+      //       left: 0.3em;
+      //       display: block;
+      //       width: 1em;
+      //       height: 1em;
+      //       content: ' ';
+      //       background-repeat: no-repeat;
+      //       background-size: 1em;
+      //     }
+      //   }
+      // }
+
+      // .markdown-link-activated .CodeMirror-cursor {
+      //   &::after {
+      //     background-image: url('/images/icons/editor/link.svg');
+      //   }
+      // }
 
 
     }
     }
 
 

+ 1 - 1
apps/slackbot-proxy/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@growi/slackbot-proxy",
   "name": "@growi/slackbot-proxy",
-  "version": "7.0.8-slackbot-proxy.0",
+  "version": "7.0.10-slackbot-proxy.0",
   "license": "MIT",
   "license": "MIT",
   "private": "true",
   "private": "true",
   "scripts": {
   "scripts": {

+ 2 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "growi",
   "name": "growi",
-  "version": "7.0.8-RC.0",
+  "version": "7.0.10-RC.0",
   "description": "Team collaboration software using markdown",
   "description": "Team collaboration software using markdown",
   "license": "MIT",
   "license": "MIT",
   "private": "true",
   "private": "true",
@@ -37,6 +37,7 @@
     "app:server": "cd apps/app && yarn server",
     "app:server": "cd apps/app && yarn server",
     "slackbot-proxy:build": "turbo run build --filter @growi/slackbot-proxy",
     "slackbot-proxy:build": "turbo run build --filter @growi/slackbot-proxy",
     "slackbot-proxy:server": "cd apps/slackbot-proxy && yarn start:prod",
     "slackbot-proxy:server": "cd apps/slackbot-proxy && yarn start:prod",
+    "version-subpackages": "changeset version && yarn upgrade --scope=@growi",
     "release-subpackages": "turbo run build --filter @growi/core --filter @growi/pluginkit && changeset publish",
     "release-subpackages": "turbo run build --filter @growi/core --filter @growi/pluginkit && changeset publish",
     "release-subpackages:snapshot": "turbo run build --filter @growi/core --filter @growi/pluginkit && changeset version --snapshot next && changeset publish --no-git-tag --snapshot --tag next",
     "release-subpackages:snapshot": "turbo run build --filter @growi/core --filter @growi/pluginkit && changeset version --snapshot next && changeset publish --no-git-tag --snapshot --tag next",
     "version": "yarn version --no-git-tag-version --preid=RC"
     "version": "yarn version --no-git-tag-version --preid=RC"

+ 5 - 1
packages/editor/src/components/CodeMirrorEditor/CodeMirrorEditor.module.scss → packages/editor/src/client/components/CodeMirrorEditor/CodeMirrorEditor.module.scss

@@ -154,7 +154,11 @@
 
 
   .markdown-table-activated .cm-cursor.cm-cursor-primary {
   .markdown-table-activated .cm-cursor.cm-cursor-primary {
     &:after {
     &:after {
-      background-image: url(../../../svg/table.svg);
+      font-family: var(--grw-font-family-material-symbols-outlined);
+      font-size: 1.5em;
+      content: 'table_chart';
+      opacity: 0.7;
+      transform: translateY(-1.2em)
     }
     }
   }
   }
 }
 }

+ 1 - 1
packages/editor/src/components/CodeMirrorEditor/CodeMirrorEditor.tsx → packages/editor/src/client/components/CodeMirrorEditor/CodeMirrorEditor.tsx

@@ -10,7 +10,7 @@ import {
 import { AcceptedUploadFileType } from '@growi/core';
 import { AcceptedUploadFileType } from '@growi/core';
 import type { ReactCodeMirrorProps } from '@uiw/react-codemirror';
 import type { ReactCodeMirrorProps } from '@uiw/react-codemirror';
 
 
-import type { EditorSettings, GlobalCodeMirrorEditorKey } from '../../consts';
+import type { EditorSettings, GlobalCodeMirrorEditorKey } from '../../../consts';
 import {
 import {
   useFileDropzone, FileDropzoneOverlay,
   useFileDropzone, FileDropzoneOverlay,
   adjustPasteData, getStrFromBol, useShowTableIcon,
   adjustPasteData, getStrFromBol, useShowTableIcon,

+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/AttachmentsDropdownItem.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/AttachmentsDropdownItem.tsx


+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/AttachmentsDropup.module.scss → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/AttachmentsDropup.module.scss


+ 1 - 1
packages/editor/src/components/CodeMirrorEditor/Toolbar/AttachmentsDropup.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/AttachmentsDropup.tsx

@@ -8,7 +8,7 @@ import {
   Dropdown,
   Dropdown,
 } from 'reactstrap';
 } from 'reactstrap';
 
 
-import type { GlobalCodeMirrorEditorKey } from '../../../consts';
+import type { GlobalCodeMirrorEditorKey } from '../../../../consts';
 
 
 import { AttachmentsDropdownItem } from './AttachmentsDropdownItem';
 import { AttachmentsDropdownItem } from './AttachmentsDropdownItem';
 import { LinkEditButton } from './LinkEditButton';
 import { LinkEditButton } from './LinkEditButton';

+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/DiagramButton.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/DiagramButton.tsx


+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/EmojiButton.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/EmojiButton.tsx


+ 1 - 1
packages/editor/src/components/CodeMirrorEditor/Toolbar/LinkEditButton.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/LinkEditButton.tsx

@@ -2,7 +2,7 @@ import { useCallback } from 'react';
 
 
 import { DropdownItem } from 'reactstrap';
 import { DropdownItem } from 'reactstrap';
 
 
-import type { GlobalCodeMirrorEditorKey } from '../../../consts';
+import type { GlobalCodeMirrorEditorKey } from '../../../../consts';
 import { getMarkdownLink, replaceFocusedMarkdownLinkWithEditor } from '../../../services-internal';
 import { getMarkdownLink, replaceFocusedMarkdownLinkWithEditor } from '../../../services-internal';
 import { useCodeMirrorEditorIsolated } from '../../../stores';
 import { useCodeMirrorEditorIsolated } from '../../../stores';
 import { useLinkEditModal } from '../../../stores/use-link-edit-modal';
 import { useLinkEditModal } from '../../../stores/use-link-edit-modal';

+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/TableButton.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TableButton.tsx


+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/TemplateButton.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TemplateButton.tsx


+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/TextFormatTools.module.scss → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TextFormatTools.module.scss


+ 1 - 1
packages/editor/src/components/CodeMirrorEditor/Toolbar/TextFormatTools.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/TextFormatTools.tsx

@@ -2,7 +2,7 @@ import { useCallback, useState } from 'react';
 
 
 import { Collapse } from 'reactstrap';
 import { Collapse } from 'reactstrap';
 
 
-import type { GlobalCodeMirrorEditorKey } from '../../../consts';
+import type { GlobalCodeMirrorEditorKey } from '../../../../consts';
 import { useCodeMirrorEditorIsolated } from '../../../stores';
 import { useCodeMirrorEditorIsolated } from '../../../stores';
 
 
 import styles from './TextFormatTools.module.scss';
 import styles from './TextFormatTools.module.scss';

+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/Toolbar.module.scss → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/Toolbar.module.scss


+ 1 - 1
packages/editor/src/components/CodeMirrorEditor/Toolbar/Toolbar.tsx → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/Toolbar.tsx

@@ -2,7 +2,7 @@ import { memo } from 'react';
 
 
 import type { AcceptedUploadFileType } from '@growi/core';
 import type { AcceptedUploadFileType } from '@growi/core';
 
 
-import type { GlobalCodeMirrorEditorKey } from '../../../consts';
+import type { GlobalCodeMirrorEditorKey } from '../../../../consts';
 
 
 import { AttachmentsDropup } from './AttachmentsDropup';
 import { AttachmentsDropup } from './AttachmentsDropup';
 import { DiagramButton } from './DiagramButton';
 import { DiagramButton } from './DiagramButton';

+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/index.ts → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/index.ts


+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/Toolbar/scss/toolbar-button.scss → packages/editor/src/client/components/CodeMirrorEditor/Toolbar/scss/toolbar-button.scss


+ 0 - 0
packages/editor/src/components/CodeMirrorEditor/index.ts → packages/editor/src/client/components/CodeMirrorEditor/index.ts


+ 0 - 0
packages/editor/src/components/CodeMirrorEditorComment.tsx → packages/editor/src/client/components/CodeMirrorEditorComment.tsx


+ 1 - 1
packages/editor/src/components/CodeMirrorEditorDiff.tsx → packages/editor/src/client/components/CodeMirrorEditorDiff.tsx

@@ -4,7 +4,7 @@ import type { Extension } from '@codemirror/state';
 import { placeholder, scrollPastEnd } from '@codemirror/view';
 import { placeholder, scrollPastEnd } from '@codemirror/view';
 import type { ReactCodeMirrorProps } from '@uiw/react-codemirror';
 import type { ReactCodeMirrorProps } from '@uiw/react-codemirror';
 
 
-import { GlobalCodeMirrorEditorKey } from '../consts';
+import { GlobalCodeMirrorEditorKey } from '../../consts';
 import { useCodeMirrorEditorIsolated, useDefaultExtensions, useEditorSettings } from '../stores';
 import { useCodeMirrorEditorIsolated, useDefaultExtensions, useEditorSettings } from '../stores';
 
 
 const additionalExtensions: Extension[] = [
 const additionalExtensions: Extension[] = [

+ 1 - 1
packages/editor/src/components/CodeMirrorEditorMain.tsx → packages/editor/src/client/components/CodeMirrorEditorMain.tsx

@@ -4,7 +4,7 @@ import { type Extension } from '@codemirror/state';
 import { keymap, scrollPastEnd } from '@codemirror/view';
 import { keymap, scrollPastEnd } from '@codemirror/view';
 import type { IUserHasId } from '@growi/core/dist/interfaces';
 import type { IUserHasId } from '@growi/core/dist/interfaces';
 
 
-import { GlobalCodeMirrorEditorKey } from '../consts';
+import { GlobalCodeMirrorEditorKey } from '../../consts';
 import { setDataLine } from '../services-internal';
 import { setDataLine } from '../services-internal';
 import { useCodeMirrorEditorIsolated, useCollaborativeEditorMode } from '../stores';
 import { useCodeMirrorEditorIsolated, useCollaborativeEditorMode } from '../stores';
 
 

+ 1 - 1
packages/editor/src/components/CodeMirrorEditorReadOnly.tsx → packages/editor/src/client/components/CodeMirrorEditorReadOnly.tsx

@@ -2,7 +2,7 @@ import { useEffect } from 'react';
 
 
 import { type Extension, EditorState } from '@codemirror/state';
 import { type Extension, EditorState } from '@codemirror/state';
 
 
-import { GlobalCodeMirrorEditorKey } from '../consts';
+import { GlobalCodeMirrorEditorKey } from '../../consts';
 import { setDataLine } from '../services-internal';
 import { setDataLine } from '../services-internal';
 import { useCodeMirrorEditorIsolated } from '../stores';
 import { useCodeMirrorEditorIsolated } from '../stores';
 
 

+ 0 - 0
packages/editor/src/components/MergeViewer.tsx → packages/editor/src/client/components/MergeViewer.tsx


+ 0 - 0
packages/editor/src/components/index.ts → packages/editor/src/client/components/index.ts


+ 2 - 2
packages/editor/src/components/playground/Playground.tsx → packages/editor/src/client/components/playground/Playground.tsx

@@ -5,8 +5,8 @@ import {
 import { AcceptedUploadFileType } from '@growi/core';
 import { AcceptedUploadFileType } from '@growi/core';
 import { toast } from 'react-toastify';
 import { toast } from 'react-toastify';
 
 
-import { GlobalCodeMirrorEditorKey } from '../../consts';
-import type { EditorSettings, EditorTheme, KeyMapMode } from '../../consts';
+import { GlobalCodeMirrorEditorKey } from '../../../consts';
+import type { EditorSettings, EditorTheme, KeyMapMode } from '../../../consts';
 import { useCodeMirrorEditorIsolated } from '../../stores';
 import { useCodeMirrorEditorIsolated } from '../../stores';
 import { CodeMirrorEditorMain } from '../CodeMirrorEditorMain';
 import { CodeMirrorEditorMain } from '../CodeMirrorEditorMain';
 
 

+ 2 - 2
packages/editor/src/components/playground/PlaygroundController.tsx → packages/editor/src/client/components/playground/PlaygroundController.tsx

@@ -2,11 +2,11 @@ import { useCallback } from 'react';
 
 
 import { useForm } from 'react-hook-form';
 import { useForm } from 'react-hook-form';
 
 
-import type { EditorTheme, KeyMapMode } from '../../consts';
+import type { EditorTheme, KeyMapMode } from '../../../consts';
 import {
 import {
   GlobalCodeMirrorEditorKey,
   GlobalCodeMirrorEditorKey,
   AllEditorTheme, AllKeyMap,
   AllEditorTheme, AllKeyMap,
-} from '../../consts';
+} from '../../../consts';
 import { useCodeMirrorEditorIsolated } from '../../stores';
 import { useCodeMirrorEditorIsolated } from '../../stores';
 
 
 export const InitEditorValueRow = (): JSX.Element => {
 export const InitEditorValueRow = (): JSX.Element => {

+ 0 - 0
packages/editor/src/components/playground/Preview.tsx → packages/editor/src/client/components/playground/Preview.tsx


+ 0 - 0
packages/editor/src/components/playground/index.ts → packages/editor/src/client/components/playground/index.ts


+ 3 - 0
packages/editor/src/client/index.ts

@@ -0,0 +1,3 @@
+export * from './components';
+export * from './services';
+export * from './stores';

+ 0 - 0
packages/editor/src/services-internal/editor-theme/.eslintrc.cjs → packages/editor/src/client/services-internal/editor-theme/.eslintrc.cjs


+ 0 - 0
packages/editor/src/services-internal/editor-theme/ayu.ts → packages/editor/src/client/services-internal/editor-theme/ayu.ts


+ 0 - 0
packages/editor/src/services-internal/editor-theme/cobalt.ts → packages/editor/src/client/services-internal/editor-theme/cobalt.ts


+ 0 - 0
packages/editor/src/services-internal/editor-theme/eclipse.ts → packages/editor/src/client/services-internal/editor-theme/eclipse.ts


+ 1 - 1
packages/editor/src/services-internal/editor-theme/index.ts → packages/editor/src/client/services-internal/editor-theme/index.ts

@@ -1,6 +1,6 @@
 import type { Extension } from '@codemirror/state';
 import type { Extension } from '@codemirror/state';
 
 
-import type { EditorTheme } from '../../consts';
+import type { EditorTheme } from '../../../consts';
 
 
 export const getEditorTheme = async(themeName?: EditorTheme): Promise<Extension> => {
 export const getEditorTheme = async(themeName?: EditorTheme): Promise<Extension> => {
   switch (themeName) {
   switch (themeName) {

+ 0 - 0
packages/editor/src/services-internal/editor-theme/material.ts → packages/editor/src/client/services-internal/editor-theme/material.ts


+ 0 - 0
packages/editor/src/services-internal/editor-theme/nord.ts → packages/editor/src/client/services-internal/editor-theme/nord.ts


+ 0 - 0
packages/editor/src/services-internal/editor-theme/original-dark.ts → packages/editor/src/client/services-internal/editor-theme/original-dark.ts


+ 0 - 0
packages/editor/src/services-internal/editor-theme/original-light.ts → packages/editor/src/client/services-internal/editor-theme/original-light.ts


+ 0 - 0
packages/editor/src/services-internal/editor-theme/rose-pine.ts → packages/editor/src/client/services-internal/editor-theme/rose-pine.ts


+ 0 - 0
packages/editor/src/services-internal/extensions/emojiAutocompletionSettings.ts → packages/editor/src/client/services-internal/extensions/emojiAutocompletionSettings.ts


+ 0 - 0
packages/editor/src/services-internal/extensions/index.ts → packages/editor/src/client/services-internal/extensions/index.ts


+ 0 - 0
packages/editor/src/services-internal/extensions/setDataLine.ts → packages/editor/src/client/services-internal/extensions/setDataLine.ts


+ 0 - 0
packages/editor/src/services-internal/file-dropzone/index.ts → packages/editor/src/client/services-internal/file-dropzone/index.ts


+ 0 - 0
packages/editor/src/services-internal/file-dropzone/use-file-dropzone/FileDropzoneOverlay.tsx → packages/editor/src/client/services-internal/file-dropzone/use-file-dropzone/FileDropzoneOverlay.tsx


+ 0 - 0
packages/editor/src/services-internal/file-dropzone/use-file-dropzone/use-file-dropzone.ts → packages/editor/src/client/services-internal/file-dropzone/use-file-dropzone/use-file-dropzone.ts


+ 0 - 0
packages/editor/src/services-internal/index.ts → packages/editor/src/client/services-internal/index.ts


+ 1 - 1
packages/editor/src/services-internal/keymaps/index.ts → packages/editor/src/client/services-internal/keymaps/index.ts

@@ -1,7 +1,7 @@
 import type { Extension } from '@codemirror/state';
 import type { Extension } from '@codemirror/state';
 import { keymap } from '@codemirror/view';
 import { keymap } from '@codemirror/view';
 
 
-import type { KeyMapMode } from '../../consts';
+import type { KeyMapMode } from '../../../consts';
 
 
 
 
 export const getKeymap = async(keyMapName?: KeyMapMode, onSave?: () => void): Promise<Extension> => {
 export const getKeymap = async(keyMapName?: KeyMapMode, onSave?: () => void): Promise<Extension> => {

+ 0 - 0
packages/editor/src/services-internal/keymaps/vim.ts → packages/editor/src/client/services-internal/keymaps/vim.ts


+ 0 - 1
packages/editor/src/services-internal/link-util/index.ts → packages/editor/src/client/services-internal/link-util/index.ts

@@ -1,2 +1 @@
-export * from './Linker';
 export * from './markdown-link-util';
 export * from './markdown-link-util';

+ 1 - 1
packages/editor/src/services-internal/link-util/markdown-link-util.ts → packages/editor/src/client/services-internal/link-util/markdown-link-util.ts

@@ -1,6 +1,6 @@
 import type { EditorView } from '@codemirror/view';
 import type { EditorView } from '@codemirror/view';
 
 
-import { Linker } from './Linker';
+import { Linker } from '../../../models';
 
 
 const curPos = (editor: EditorView) => {
 const curPos = (editor: EditorView) => {
   return editor.state.selection.main.head;
   return editor.state.selection.main.head;

+ 0 - 0
packages/editor/src/services-internal/list-util/index.ts → packages/editor/src/client/services-internal/list-util/index.ts


+ 0 - 0
packages/editor/src/services-internal/list-util/insert-newline-continue-markup.ts → packages/editor/src/client/services-internal/list-util/insert-newline-continue-markup.ts


+ 0 - 0
packages/editor/src/services-internal/paste-util/index.ts → packages/editor/src/client/services-internal/paste-util/index.ts


+ 0 - 0
packages/editor/src/services-internal/paste-util/paste-markdown-util.ts → packages/editor/src/client/services-internal/paste-util/paste-markdown-util.ts


+ 0 - 0
packages/editor/src/services-internal/table/index.ts → packages/editor/src/client/services-internal/table/index.ts


+ 1 - 1
packages/editor/src/services-internal/table/insert-new-row-to-table-markdown.ts → packages/editor/src/client/services-internal/table/insert-new-row-to-table-markdown.ts

@@ -1,6 +1,6 @@
 import type { EditorView } from '@codemirror/view';
 import type { EditorView } from '@codemirror/view';
 
 
-import { MarkdownTable } from '../../models';
+import { MarkdownTable } from '../../../models';
 
 
 // https://regex101.com/r/7BN2fR/10
 // https://regex101.com/r/7BN2fR/10
 const linePartOfTableRE = /^([^\r\n|]*)\|(([^\r\n|]*\|)+)$/;
 const linePartOfTableRE = /^([^\r\n|]*)\|(([^\r\n|]*\|)+)$/;

+ 0 - 0
packages/editor/src/services-internal/table/use-show-table-icon.ts → packages/editor/src/client/services-internal/table/use-show-table-icon.ts


+ 0 - 0
packages/editor/src/services/index.ts → packages/editor/src/client/services/index.ts


+ 0 - 0
packages/editor/src/services/use-codemirror-editor/index.ts → packages/editor/src/client/services/use-codemirror-editor/index.ts


+ 0 - 0
packages/editor/src/services/use-codemirror-editor/use-codemirror-editor.ts → packages/editor/src/client/services/use-codemirror-editor/use-codemirror-editor.ts


+ 0 - 0
packages/editor/src/services/use-codemirror-editor/utils/append-extensions.ts → packages/editor/src/client/services/use-codemirror-editor/utils/append-extensions.ts


+ 0 - 0
packages/editor/src/services/use-codemirror-editor/utils/focus.ts → packages/editor/src/client/services/use-codemirror-editor/utils/focus.ts


+ 0 - 0
packages/editor/src/services/use-codemirror-editor/utils/fold-drawio.ts → packages/editor/src/client/services/use-codemirror-editor/utils/fold-drawio.ts


Some files were not shown because too many files changed in this diff