@difizen/libro-core 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/es/add-cell/index.less +1 -1
  2. package/es/add-cell/libro-add-cell-slot-contribution.d.ts +1 -2
  3. package/es/add-cell/libro-add-cell-slot-contribution.d.ts.map +1 -1
  4. package/es/add-cell/libro-add-cell-slot-contribution.js +12 -6
  5. package/es/add-cell/libro-add-cell-view.d.ts +4 -4
  6. package/es/add-cell/libro-add-cell-view.d.ts.map +1 -1
  7. package/es/add-cell/libro-add-cell-view.js +4 -6
  8. package/es/cell/libro-cell-contribution.d.ts +1 -2
  9. package/es/cell/libro-cell-contribution.d.ts.map +1 -1
  10. package/es/cell/libro-cell-contribution.js +14 -8
  11. package/es/cell/libro-cell-model.d.ts +9 -0
  12. package/es/cell/libro-cell-model.d.ts.map +1 -1
  13. package/es/cell/libro-cell-model.js +53 -11
  14. package/es/cell/libro-cell-protocol.d.ts +2 -0
  15. package/es/cell/libro-cell-protocol.d.ts.map +1 -1
  16. package/es/cell/libro-cell-view.d.ts +6 -2
  17. package/es/cell/libro-cell-view.d.ts.map +1 -1
  18. package/es/cell/libro-cell-view.js +54 -24
  19. package/es/cell/libro-edit-cell-view.d.ts +6 -12
  20. package/es/cell/libro-edit-cell-view.d.ts.map +1 -1
  21. package/es/cell/libro-edit-cell-view.js +9 -4
  22. package/es/cell/libro-executable-cell-view.d.ts +2 -0
  23. package/es/cell/libro-executable-cell-view.d.ts.map +1 -1
  24. package/es/cell/libro-executable-cell-view.js +4 -1
  25. package/es/collapse-service.d.ts +1 -1
  26. package/es/collapse-service.d.ts.map +1 -1
  27. package/es/collapse-service.js +1 -1
  28. package/es/command/document-commands.d.ts +1 -2
  29. package/es/command/document-commands.d.ts.map +1 -1
  30. package/es/command/document-commands.js +3 -2
  31. package/es/command/kernel-command.d.ts.map +1 -1
  32. package/es/command/kernel-command.js +3 -0
  33. package/es/command/libro-command-contribution.d.ts +0 -1
  34. package/es/command/libro-command-contribution.d.ts.map +1 -1
  35. package/es/command/libro-command-contribution.js +179 -129
  36. package/es/command/libro-command-register.d.ts +0 -1
  37. package/es/command/libro-command-register.d.ts.map +1 -1
  38. package/es/command/libro-command-register.js +13 -7
  39. package/es/command/notebook-commands.d.ts.map +1 -1
  40. package/es/command/notebook-commands.js +17 -4
  41. package/es/components/cell-protocol.d.ts +5 -5
  42. package/es/components/cell-protocol.d.ts.map +1 -1
  43. package/es/components/dnd-cell-item-render.d.ts +6 -2
  44. package/es/components/dnd-cell-item-render.d.ts.map +1 -1
  45. package/es/components/dnd-cell-item-render.js +194 -89
  46. package/es/components/dnd-component/custom-drag-layer.d.ts +1 -1
  47. package/es/components/dnd-component/custom-drag-layer.d.ts.map +1 -1
  48. package/es/components/dnd-component/custom-drag-layer.js +3 -4
  49. package/es/components/dnd-component/default-dnd-content.d.ts +2 -1
  50. package/es/components/dnd-component/default-dnd-content.d.ts.map +1 -1
  51. package/es/components/dnd-component/default-dnd-content.js +100 -44
  52. package/es/components/dnd-component/dnd-context.js +1 -1
  53. package/es/components/dnd-component/dnd-list.d.ts +9 -5
  54. package/es/components/dnd-component/dnd-list.d.ts.map +1 -1
  55. package/es/components/dnd-component/dnd-list.js +93 -26
  56. package/es/components/dnd-component/index.d.ts +1 -1
  57. package/es/components/dnd-component/index.d.ts.map +1 -1
  58. package/es/components/dnd-component/index.js +2 -2
  59. package/es/components/dnd-component/index.less +8 -0
  60. package/es/components/dnd-component/overscanIndices-getter.d.ts +22 -0
  61. package/es/components/dnd-component/overscanIndices-getter.d.ts.map +1 -0
  62. package/es/components/dnd-component/overscanIndices-getter.js +58 -0
  63. package/es/components/dnd-component/virtualized-manager.d.ts +19 -0
  64. package/es/components/dnd-component/virtualized-manager.d.ts.map +1 -0
  65. package/es/components/dnd-component/virtualized-manager.js +60 -0
  66. package/es/components/index.d.ts +2 -2
  67. package/es/components/index.d.ts.map +1 -1
  68. package/es/components/index.js +2 -2
  69. package/es/components/libro-virtualized-render.d.ts +15 -0
  70. package/es/components/libro-virtualized-render.d.ts.map +1 -0
  71. package/es/components/libro-virtualized-render.js +174 -0
  72. package/es/content/index.d.ts +1 -0
  73. package/es/content/index.d.ts.map +1 -1
  74. package/es/content/index.js +2 -1
  75. package/es/content/libro-content-contribution.d.ts +2 -2
  76. package/es/content/libro-content-contribution.d.ts.map +1 -1
  77. package/es/content/libro-content-contribution.js +2 -3
  78. package/es/content/libro-content-module.d.ts.map +1 -1
  79. package/es/content/libro-content-module.js +3 -2
  80. package/es/content/libro-content-protocol.d.ts +5 -0
  81. package/es/content/libro-content-protocol.d.ts.map +1 -1
  82. package/es/content/libro-content-protocol.js +2 -1
  83. package/es/content/libro-content-service.d.ts +5 -3
  84. package/es/content/libro-content-service.d.ts.map +1 -1
  85. package/es/content/libro-content-service.js +36 -8
  86. package/es/content/libro-save-content-contribution.d.ts +6 -0
  87. package/es/content/libro-save-content-contribution.d.ts.map +1 -0
  88. package/es/content/libro-save-content-contribution.js +27 -0
  89. package/es/formatter/index.d.ts +6 -0
  90. package/es/formatter/index.d.ts.map +1 -0
  91. package/es/formatter/index.js +5 -0
  92. package/es/formatter/libro-formatter-json-contribution.d.ts +18 -0
  93. package/es/formatter/libro-formatter-json-contribution.d.ts.map +1 -0
  94. package/es/formatter/libro-formatter-json-contribution.js +41 -0
  95. package/es/formatter/libro-formatter-manager.d.ts +16 -0
  96. package/es/formatter/libro-formatter-manager.d.ts.map +1 -0
  97. package/es/formatter/libro-formatter-manager.js +86 -0
  98. package/es/formatter/libro-formatter-module.d.ts +3 -0
  99. package/es/formatter/libro-formatter-module.d.ts.map +1 -0
  100. package/es/formatter/libro-formatter-module.js +7 -0
  101. package/es/formatter/libro-formatter-protocol.d.ts +37 -0
  102. package/es/formatter/libro-formatter-protocol.d.ts.map +1 -0
  103. package/es/formatter/libro-formatter-protocol.js +18 -0
  104. package/es/formatter/libro-formatter-string-contribution.d.ts +18 -0
  105. package/es/formatter/libro-formatter-string-contribution.d.ts.map +1 -0
  106. package/es/formatter/libro-formatter-string-contribution.js +41 -0
  107. package/es/formatter/libro-formatter-trans-default-contribution.d.ts +7 -0
  108. package/es/formatter/libro-formatter-trans-default-contribution.d.ts.map +1 -0
  109. package/es/formatter/libro-formatter-trans-default-contribution.js +19 -0
  110. package/es/index.d.ts +5 -1
  111. package/es/index.d.ts.map +1 -1
  112. package/es/index.js +6 -2
  113. package/es/index.less +135 -58
  114. package/es/libro-context-key.d.ts.map +1 -1
  115. package/es/libro-model.d.ts +13 -2
  116. package/es/libro-model.d.ts.map +1 -1
  117. package/es/libro-model.js +149 -70
  118. package/es/libro-protocol.d.ts +44 -2
  119. package/es/libro-protocol.d.ts.map +1 -1
  120. package/es/libro-protocol.js +16 -3
  121. package/es/libro-service.d.ts +1 -1
  122. package/es/libro-service.d.ts.map +1 -1
  123. package/es/libro-service.js +29 -20
  124. package/es/{configuration/libro-configuration-contribution.d.ts → libro-setting-contribution.d.ts} +2 -2
  125. package/es/libro-setting-contribution.d.ts.map +1 -0
  126. package/es/{configuration/libro-configuration-contribution.js → libro-setting-contribution.js} +8 -9
  127. package/es/{configuration/libro-configuration.d.ts → libro-setting.d.ts} +3 -2
  128. package/es/libro-setting.d.ts.map +1 -0
  129. package/es/{configuration/libro-configuration.js → libro-setting.js} +17 -7
  130. package/es/libro-view.d.ts +21 -8
  131. package/es/libro-view.d.ts.map +1 -1
  132. package/es/libro-view.js +477 -338
  133. package/es/material-from-designer.d.ts +3 -0
  134. package/es/material-from-designer.d.ts.map +1 -1
  135. package/es/material-from-designer.js +112 -1
  136. package/es/module.d.ts.map +1 -1
  137. package/es/module.js +20 -5
  138. package/es/output/output-area.d.ts +3 -4
  139. package/es/output/output-area.d.ts.map +1 -1
  140. package/es/output/output-area.js +23 -16
  141. package/es/output/output-contribution.d.ts +0 -1
  142. package/es/output/output-contribution.d.ts.map +1 -1
  143. package/es/output/output-contribution.js +14 -9
  144. package/es/output/output-model.d.ts +2 -2
  145. package/es/output/output-model.d.ts.map +1 -1
  146. package/es/output/output-model.js +2 -2
  147. package/es/output/output-protocol.d.ts.map +1 -1
  148. package/es/output/output-protocol.js +0 -2
  149. package/es/settings/index.d.ts +5 -0
  150. package/es/settings/index.d.ts.map +1 -0
  151. package/es/settings/index.js +4 -0
  152. package/es/settings/index.less +3 -0
  153. package/es/settings/module.d.ts +3 -0
  154. package/es/settings/module.d.ts.map +1 -0
  155. package/es/settings/module.js +4 -0
  156. package/es/settings/setting-editor/configuration-panel-view.d.ts +13 -0
  157. package/es/settings/setting-editor/configuration-panel-view.d.ts.map +1 -0
  158. package/es/settings/setting-editor/configuration-panel-view.js +115 -0
  159. package/es/settings/setting-editor/configuration-render-contribution.d.ts +6 -0
  160. package/es/settings/setting-editor/configuration-render-contribution.d.ts.map +1 -0
  161. package/es/settings/setting-editor/configuration-render-contribution.js +77 -0
  162. package/es/settings/setting-editor/default-node-render.d.ts +9 -0
  163. package/es/settings/setting-editor/default-node-render.d.ts.map +1 -0
  164. package/es/settings/setting-editor/default-node-render.js +79 -0
  165. package/es/settings/setting-editor/index.d.ts +7 -0
  166. package/es/settings/setting-editor/index.d.ts.map +1 -0
  167. package/es/settings/setting-editor/index.js +6 -0
  168. package/es/settings/setting-editor/index.less +12 -0
  169. package/es/settings/setting-editor/module.d.ts +3 -0
  170. package/es/settings/setting-editor/module.d.ts.map +1 -0
  171. package/es/settings/setting-editor/module.js +7 -0
  172. package/es/settings/setting-editor/setting-editor-view.d.ts +15 -0
  173. package/es/settings/setting-editor/setting-editor-view.d.ts.map +1 -0
  174. package/es/settings/setting-editor/setting-editor-view.js +169 -0
  175. package/es/settings/setting-editor/setting-tree-service.d.ts +9 -0
  176. package/es/settings/setting-editor/setting-tree-service.d.ts.map +1 -0
  177. package/es/settings/setting-editor/setting-tree-service.js +118 -0
  178. package/es/settings/setting-editor/setting-tree-view.d.ts +19 -0
  179. package/es/settings/setting-editor/setting-tree-view.d.ts.map +1 -0
  180. package/es/settings/setting-editor/setting-tree-view.js +88 -0
  181. package/es/settings/settings-contribution.d.ts +7 -0
  182. package/es/settings/settings-contribution.d.ts.map +1 -0
  183. package/es/settings/settings-contribution.js +36 -0
  184. package/es/settings/settings-modal.d.ts +5 -0
  185. package/es/settings/settings-modal.d.ts.map +1 -0
  186. package/es/settings/settings-modal.js +53 -0
  187. package/es/settings/settings-modal.less +3 -0
  188. package/es/settings/settings-protocol.d.ts +4 -0
  189. package/es/settings/settings-protocol.d.ts.map +1 -0
  190. package/es/settings/settings-protocol.js +5 -0
  191. package/es/slot/libro-slot-manager.d.ts +2 -2
  192. package/es/slot/libro-slot-manager.d.ts.map +1 -1
  193. package/es/slot/libro-slot-manager.js +14 -8
  194. package/es/slot/libro-slot-view.d.ts +3 -3
  195. package/es/slot/libro-slot-view.d.ts.map +1 -1
  196. package/es/slot/libro-slot-view.js +2 -2
  197. package/es/theme/libro-color-registry.d.ts.map +1 -1
  198. package/es/theme/libro-color-registry.js +7 -0
  199. package/es/toolbar/all-outputs-scroll-icon.d.ts +3 -0
  200. package/es/toolbar/all-outputs-scroll-icon.d.ts.map +1 -0
  201. package/es/toolbar/all-outputs-scroll-icon.js +10 -0
  202. package/es/toolbar/libro-toolbar.d.ts +2 -1
  203. package/es/toolbar/libro-toolbar.d.ts.map +1 -1
  204. package/es/toolbar/libro-toolbar.js +44 -8
  205. package/es/toolbar/restart-clear-outputs-modal.d.ts +1 -2
  206. package/es/toolbar/restart-clear-outputs-modal.d.ts.map +1 -1
  207. package/es/toolbar/restart-clear-outputs-modal.js +2 -2
  208. package/es/toolbar/shutdown-modal.d.ts +1 -2
  209. package/es/toolbar/shutdown-modal.d.ts.map +1 -1
  210. package/es/toolbar/shutdown-modal.js +2 -2
  211. package/es/toolbar/side-toolar-more-select.d.ts.map +1 -1
  212. package/es/toolbar/side-toolar-more-select.js +2 -2
  213. package/es/virtualized-manager-helper.d.ts +11 -0
  214. package/es/virtualized-manager-helper.d.ts.map +1 -0
  215. package/es/virtualized-manager-helper.js +51 -0
  216. package/es/virtualized-manager.d.ts +19 -0
  217. package/es/virtualized-manager.d.ts.map +1 -0
  218. package/es/virtualized-manager.js +61 -0
  219. package/package.json +9 -6
  220. package/src/add-cell/index.less +1 -1
  221. package/src/add-cell/libro-add-cell-slot-contribution.ts +1 -4
  222. package/src/add-cell/libro-add-cell-view.tsx +13 -6
  223. package/src/cell/libro-cell-contribution.ts +2 -6
  224. package/src/cell/libro-cell-model.ts +57 -4
  225. package/src/cell/libro-cell-protocol.ts +2 -0
  226. package/src/cell/libro-cell-view.tsx +21 -9
  227. package/src/cell/libro-edit-cell-view.tsx +10 -9
  228. package/src/cell/libro-executable-cell-view.ts +6 -1
  229. package/src/collapse-service.ts +1 -1
  230. package/src/command/document-commands.ts +3 -5
  231. package/src/command/kernel-command.ts +3 -0
  232. package/src/command/libro-command-contribution.ts +107 -91
  233. package/src/command/libro-command-register.ts +1 -4
  234. package/src/command/notebook-commands.ts +16 -3
  235. package/src/components/cell-protocol.ts +5 -5
  236. package/src/components/dnd-cell-item-render.tsx +239 -92
  237. package/src/components/dnd-component/custom-drag-layer.tsx +5 -6
  238. package/src/components/dnd-component/default-dnd-content.tsx +113 -42
  239. package/src/components/dnd-component/dnd-context.tsx +1 -1
  240. package/src/components/dnd-component/dnd-list.tsx +135 -43
  241. package/src/components/dnd-component/index.less +8 -0
  242. package/src/components/dnd-component/index.tsx +1 -1
  243. package/src/components/dnd-component/overscanIndices-getter.ts +92 -0
  244. package/src/components/dnd-component/virtualized-manager.ts +34 -0
  245. package/src/components/index.ts +2 -2
  246. package/src/components/libro-virtualized-render.tsx +178 -0
  247. package/src/content/index.ts +1 -0
  248. package/src/content/libro-content-contribution.ts +2 -3
  249. package/src/content/libro-content-module.ts +11 -3
  250. package/src/content/libro-content-protocol.ts +6 -0
  251. package/src/content/libro-content-service.ts +26 -8
  252. package/src/content/libro-save-content-contribution.ts +12 -0
  253. package/src/formatter/index.ts +5 -0
  254. package/src/formatter/libro-formatter-json-contribution.ts +42 -0
  255. package/src/formatter/libro-formatter-manager.ts +85 -0
  256. package/src/formatter/libro-formatter-module.ts +19 -0
  257. package/src/formatter/libro-formatter-protocol.ts +63 -0
  258. package/src/formatter/libro-formatter-string-contribution.ts +41 -0
  259. package/src/formatter/libro-formatter-trans-default-contribution.ts +15 -0
  260. package/src/index.less +135 -58
  261. package/src/index.tsx +6 -1
  262. package/src/libro-context-key.ts +3 -3
  263. package/src/libro-model.ts +87 -23
  264. package/src/libro-protocol.ts +81 -4
  265. package/src/libro-service.ts +4 -13
  266. package/src/{configuration/libro-configuration-contribution.ts → libro-setting-contribution.ts} +7 -8
  267. package/src/{configuration/libro-configuration.ts → libro-setting.ts} +18 -7
  268. package/src/libro-view.tsx +273 -141
  269. package/src/material-from-designer.tsx +93 -1
  270. package/src/module.ts +29 -7
  271. package/src/output/output-area.tsx +18 -12
  272. package/src/output/output-contribution.ts +2 -6
  273. package/src/output/output-model.tsx +3 -3
  274. package/src/output/output-protocol.ts +0 -1
  275. package/src/settings/index.less +3 -0
  276. package/src/settings/index.ts +4 -0
  277. package/src/settings/module.ts +8 -0
  278. package/src/settings/setting-editor/configuration-panel-view.tsx +89 -0
  279. package/src/settings/setting-editor/configuration-render-contribution.ts +81 -0
  280. package/src/settings/setting-editor/default-node-render.tsx +65 -0
  281. package/src/settings/setting-editor/index.less +12 -0
  282. package/src/settings/setting-editor/index.ts +6 -0
  283. package/src/settings/setting-editor/module.ts +17 -0
  284. package/src/settings/setting-editor/setting-editor-view.tsx +93 -0
  285. package/src/settings/setting-editor/setting-tree-service.ts +82 -0
  286. package/src/settings/setting-editor/setting-tree-view.tsx +95 -0
  287. package/src/settings/settings-contribution.tsx +24 -0
  288. package/src/settings/settings-modal.less +3 -0
  289. package/src/settings/settings-modal.tsx +50 -0
  290. package/src/settings/settings-protocol.ts +7 -0
  291. package/src/slot/libro-slot-manager.ts +1 -3
  292. package/src/slot/libro-slot-view.tsx +2 -5
  293. package/src/theme/libro-color-registry.ts +6 -0
  294. package/src/toolbar/all-outputs-scroll-icon.tsx +19 -0
  295. package/src/toolbar/libro-toolbar.tsx +30 -5
  296. package/src/toolbar/restart-clear-outputs-modal.tsx +3 -3
  297. package/src/toolbar/shutdown-modal.tsx +3 -3
  298. package/src/toolbar/side-toolar-more-select.tsx +2 -1
  299. package/src/virtualized-manager-helper.ts +29 -0
  300. package/src/virtualized-manager.ts +34 -0
  301. package/es/configuration/libro-configuration-contribution.d.ts.map +0 -1
  302. package/es/configuration/libro-configuration.d.ts.map +0 -1
package/src/index.less CHANGED
@@ -3,6 +3,12 @@
3
3
  // The prefix to use on all css classes from ant.
4
4
  @ant-prefix: ant;
5
5
 
6
+ *,
7
+ *::before,
8
+ *::after {
9
+ box-sizing: border-box;
10
+ }
11
+
6
12
  .libro-view {
7
13
  position: relative;
8
14
  display: flex;
@@ -32,18 +38,22 @@
32
38
  display: flex;
33
39
  width: 100%;
34
40
  height: 100%;
35
- padding: 0 60px 8px 0;
41
+ padding: 0;
36
42
  overflow-y: auto;
37
43
 
38
44
  .libro-dnd-list-container {
39
45
  height: 100%;
40
- padding-top: 12px;
41
46
  // overflow-y: auto;
47
+
48
+ :global {
49
+ .ReactVirtualized__List {
50
+ height: fit-content;
51
+ }
52
+ }
42
53
  }
43
54
  }
44
55
 
45
56
  .libro-view-top {
46
- z-index: 1000;
47
57
  display: flex;
48
58
  align-items: center;
49
59
  width: 100%;
@@ -73,7 +83,7 @@
73
83
  padding: 0 8px;
74
84
  color: var(--mana-libro-toptoolbar-icon-color);
75
85
 
76
- g {
86
+ svg {
77
87
  fill: var(--mana-libro-toptoolbar-icon-color) !important;
78
88
  }
79
89
  .@{ant-prefix}-select-selection-item {
@@ -85,9 +95,13 @@
85
95
  }
86
96
  }
87
97
 
98
+ .mana-toolbar-item:has(.libro-all-outputs-scroll-button) {
99
+ padding: unset;
100
+ }
101
+
88
102
  .mana-toolbar-item-disabled {
89
- opacity: unset;
90
103
  color: var(--mana-libro-toptoolbar-disabled-icon-color);
104
+ opacity: unset;
91
105
 
92
106
  g {
93
107
  fill: var(--mana-libro-toptoolbar-disabled-icon-color) !important;
@@ -124,8 +138,15 @@
124
138
  z-index: 1000;
125
139
  }
126
140
 
141
+ .ReactVirtualized__List {
142
+ .libro-dnd-cell-container {
143
+ padding: 16px 16px 0 0;
144
+ }
145
+ }
146
+
127
147
  .libro-dnd-cell-container {
128
148
  position: relative;
149
+ height: fit-content;
129
150
  padding: 8px 16px 8px 0;
130
151
 
131
152
  &:focus-visible {
@@ -144,8 +165,8 @@
144
165
  display: block;
145
166
  }
146
167
 
147
- &.selected {
148
- background-color: #f1faff;
168
+ &.multi-selected {
169
+ background-color: var(--mana-libro-cell-selected-bg-color);
149
170
  }
150
171
 
151
172
  &.hidden {
@@ -153,7 +174,23 @@
153
174
  }
154
175
  }
155
176
 
156
- .libro-dnd-cell-content {
177
+ .libro-cell-collapsed-expander {
178
+ margin-top: 5px;
179
+ padding-left: 72px;
180
+
181
+ .libro-cell-expand-button {
182
+ padding: 0 12px;
183
+ }
184
+ }
185
+
186
+ .libro-dnd-cell {
187
+ position: relative;
188
+ margin-right: 45px;
189
+ margin-left: 72px;
190
+ padding: 0;
191
+ border: 1px solid var(--mana-libro-cell-border-color);
192
+ border-radius: 4px;
193
+
157
194
  &:hover {
158
195
  .libro-cell-input-collapser,
159
196
  .libro-cell-output-collapser,
@@ -171,49 +208,11 @@
171
208
  }
172
209
  }
173
210
  }
174
- }
175
-
176
- .libro-cell-collapsed-expander {
177
- margin-top: 5px;
178
- padding-left: 72px;
179
-
180
- .libro-cell-expand-button {
181
- padding: 0 12px;
182
- }
183
- }
184
-
185
- .libro-dnd-cell {
186
- position: relative;
187
- margin-left: 72px;
188
- padding: 0;
189
- border: 1px solid var(--mana-libro-cell-border-color);
190
- border-radius: 4px;
191
- transition: border-color 0.2s ease 0s;
192
211
 
193
212
  :focus-visible {
194
213
  outline: unset;
195
214
  }
196
215
 
197
- &.active.command-mode {
198
- border: 1px solid var(--mana-libro-cell-active-border-color);
199
- box-shadow: unset;
200
- }
201
-
202
- &.active.command-mode.error,
203
- &.error {
204
- border: 1px solid var(--mana-libro-error-color) !important;
205
- box-shadow: unset;
206
- }
207
-
208
- &.active.edit-mode.error {
209
- border: 1px solid var(--mana-libro-error-color) !important;
210
- box-shadow: rgba(237, 19, 69, 25%) 0 0 0 2px;
211
- }
212
-
213
- &.hidden {
214
- border: unset;
215
- }
216
-
217
216
  &.active {
218
217
  border: 1px solid var(--mana-libro-cell-active-border-color);
219
218
  box-shadow: var(--mana-libro-cell-active-border-shadow-color) 0 0 0 2px;
@@ -234,6 +233,26 @@
234
233
  }
235
234
  }
236
235
  }
236
+
237
+ &.active.command-mode {
238
+ border: 1px solid var(--mana-libro-cell-active-border-color);
239
+ box-shadow: unset;
240
+ }
241
+
242
+ &.active.command-mode.error,
243
+ &.error {
244
+ border: 1px solid var(--mana-libro-error-color) !important;
245
+ box-shadow: unset;
246
+ }
247
+
248
+ &.active.edit-mode.error {
249
+ border: 1px solid var(--mana-libro-error-color) !important;
250
+ box-shadow: rgba(237, 19, 69, 25%) 0 0 0 2px;
251
+ }
252
+
253
+ &.hidden {
254
+ border: unset;
255
+ }
237
256
  }
238
257
 
239
258
  .libro-dnd-cell-preview {
@@ -416,7 +435,7 @@
416
435
  width: 32px;
417
436
  height: 28px;
418
437
  margin: 0;
419
- padding: 2px 0;
438
+ padding: 2px 6px;
420
439
  text-align: center;
421
440
  }
422
441
 
@@ -495,9 +514,9 @@
495
514
  left: 56px;
496
515
  z-index: 100;
497
516
  width: calc(100% - 70px);
498
- border-radius: 2px;
499
517
  height: 4px;
500
518
  background-color: var(--mana-libro-drag-hover-line-color);
519
+ border-radius: 2px;
501
520
  }
502
521
 
503
522
  .libro-view-content-left {
@@ -513,15 +532,10 @@
513
532
  .libro-cell-output-container {
514
533
  position: relative;
515
534
  background-color: var(--mana-libro-output-background);
516
- border-top: 1px solid var(--mana-libro-code-border-color);
535
+ // border-top: 1px solid var(--mana-libro-code-border-color);
517
536
  border-bottom-right-radius: 4px;
518
537
  border-bottom-left-radius: 4px;
519
538
 
520
- &.scrolled {
521
- max-height: 24em;
522
- overflow-y: auto;
523
- }
524
-
525
539
  &.hidden {
526
540
  padding: 12px;
527
541
  color: var(--mana-text-tertiary);
@@ -537,6 +551,57 @@
537
551
  }
538
552
  }
539
553
 
554
+ .libro-cell-output-scroll {
555
+ display: none;
556
+ }
557
+
558
+ .libro-dnd-cell-container:hover {
559
+ .libro-cell-output-scroll {
560
+ display: block;
561
+ }
562
+ }
563
+
564
+ .libro-cell-output-content {
565
+ &.scrolled {
566
+ .libro-output-area {
567
+ max-height: 312px;
568
+ overflow-y: auto;
569
+ }
570
+ }
571
+ }
572
+
573
+ .libro-cell-output-scroll-button {
574
+ position: absolute;
575
+ top: 4px;
576
+ left: -26px;
577
+ display: flex;
578
+ justify-content: center;
579
+ width: 20px;
580
+ height: 20px;
581
+ border-radius: 4px;
582
+
583
+ :hover {
584
+ background-color: var(--mana-list-hoverBackground);
585
+ }
586
+
587
+ svg {
588
+ color: var(--mana-libro-toptoolbar-icon-color);
589
+ }
590
+ }
591
+
592
+ .libro-all-outputs-scroll-button {
593
+ display: flex;
594
+ align-items: center;
595
+ justify-content: center;
596
+ width: 22px;
597
+ height: 22px;
598
+ border-radius: 4px;
599
+
600
+ &.active {
601
+ background-color: var(--mana-list-hoverBackground);
602
+ }
603
+ }
604
+
540
605
  .libro-view-add-cell-toolbar {
541
606
  position: relative;
542
607
  width: 100%;
@@ -572,6 +637,18 @@
572
637
  }
573
638
 
574
639
  .libro-side-toolbar-menu {
640
+ width: 100%;
641
+
642
+ .libro-toolbar-menu-inlines {
643
+ width: 100%;
644
+ }
645
+
646
+ .mana-menu-item {
647
+ button {
648
+ display: block;
649
+ }
650
+ }
651
+
575
652
  .mana-menu-item-active > .mana-menu-item-button,
576
653
  .mana-menu-item:hover > .mana-menu-item-button {
577
654
  background: var(--mana-libro-menu-hover-color);
@@ -596,9 +673,9 @@
596
673
  right: -4px;
597
674
  width: 100%;
598
675
  height: 100%;
599
- border-radius: 4px;
600
- background-color: var(--mana-libro-popover-background-color);
601
676
  padding: 0;
677
+ background-color: var(--mana-libro-popover-background-color) !important;
678
+ border-radius: 4px;
602
679
  box-shadow:
603
680
  0 3px 6px -4px rgba(0, 0, 0, 12%),
604
681
  0 6px 16px 0 rgba(0, 0, 0, 8%),
@@ -610,8 +687,8 @@
610
687
  padding-right: unset;
611
688
  }
612
689
  .@{ant-prefix}-popover-inner-content {
613
- padding: 4px 0;
614
690
  width: unset !important;
691
+ padding: 4px 0;
615
692
  }
616
693
  }
617
694
  }
@@ -651,7 +728,7 @@
651
728
 
652
729
  .libro-output-area {
653
730
  margin-top: 18px;
654
- overflow: hidden;
731
+ // overflow: hidden;
655
732
  }
656
733
 
657
734
  .libro-tooltip {
package/src/index.tsx CHANGED
@@ -5,7 +5,6 @@ export * from './libro-service.js';
5
5
  export * from './libro-model.js';
6
6
  export * from './cell/index.js';
7
7
  export * from './components/index.js';
8
- export * from './configuration/libro-configuration.js';
9
8
  export * from './toolbar/index.js';
10
9
  export * from './output/index.js';
11
10
  export * from './slot/index.js';
@@ -17,3 +16,9 @@ export * from './material-from-designer.js';
17
16
  export * from './libro-view-tracker.js';
18
17
  export * from './content/index.js';
19
18
  export * from './collapse-service.js';
19
+ export * from './formatter/index.js';
20
+ export * from './libro-setting.js';
21
+ export * from './settings/index.js';
22
+
23
+ export * from './virtualized-manager.js';
24
+ export * from './virtualized-manager-helper.js';
@@ -13,9 +13,9 @@ export class LirboContextKey {
13
13
  protected toDisposeOnActiveChanged?: Disposable;
14
14
  protected commandModeEnabled = true;
15
15
  protected isCommandMode = false;
16
- active!: IContextKey<boolean>;
17
- focus!: IContextKey<boolean>;
18
- commandMode!: IContextKey<boolean>;
16
+ active: IContextKey<boolean>;
17
+ focus: IContextKey<boolean>;
18
+ commandMode: IContextKey<boolean>;
19
19
 
20
20
  constructor(
21
21
  @inject(ContextKeyService) contextKeyService: ContextKeyService,
@@ -9,31 +9,52 @@ import type {
9
9
  ISharedNotebook,
10
10
  NotebookChange,
11
11
  } from '@difizen/libro-shared-model';
12
- import { YNotebook, createMutex } from '@difizen/libro-shared-model';
13
- import { ConfigurationService } from '@difizen/mana-app';
14
- import { getOrigin } from '@difizen/mana-app';
12
+ import { createMutex, YNotebook } from '@difizen/libro-shared-model';
13
+ import { getOrigin, ConfigurationService } from '@difizen/mana-app';
15
14
  import { Emitter } from '@difizen/mana-app';
16
- import { inject, transient } from '@difizen/mana-app';
17
15
  import { prop } from '@difizen/mana-app';
16
+ import { inject, transient } from '@difizen/mana-app';
18
17
  import { v4 } from 'uuid';
19
18
 
20
19
  import { LibroContentService } from './content/index.js';
20
+ import { isCellView, NotebookOption } from './libro-protocol.js';
21
21
  import type {
22
- NotebookModel,
23
22
  CellOptions,
23
+ CellViewChange,
24
24
  DndListModel,
25
+ NotebookModel,
26
+ ScrollParams,
25
27
  CellView,
26
28
  MouseMode,
27
29
  } from './libro-protocol.js';
28
- import { isCellView, NotebookOption } from './libro-protocol.js';
29
- import { EnterEditModeWhenAddCell } from './configuration/libro-configuration.js';
30
+ import { EnterEditModeWhenAddCell } from './libro-setting.js';
31
+ import { VirtualizedManagerHelper } from './virtualized-manager-helper.js';
30
32
 
31
33
  @transient()
32
34
  export class LibroModel implements NotebookModel, DndListModel {
33
35
  @inject(NotebookOption) options: NotebookOption;
34
36
  @inject(LibroContentService) libroContentService: LibroContentService;
37
+ @inject(VirtualizedManagerHelper) virtualizedManagerHelper: VirtualizedManagerHelper;
35
38
  @inject(ConfigurationService) configurationService: ConfigurationService;
36
39
 
40
+ protected scrollToCellViewEmitter: Emitter;
41
+ get onScrollToCellView() {
42
+ return this.scrollToCellViewEmitter.event;
43
+ }
44
+
45
+ protected cellViewChangeEmitter: Emitter<CellViewChange> = new Emitter();
46
+ get onCellViewChanged() {
47
+ return this.cellViewChangeEmitter.event;
48
+ }
49
+
50
+ scrollToCellView = (params: ScrollParams) => {
51
+ this.scrollToCellViewEmitter.fire(params);
52
+ };
53
+
54
+ disposeScrollToCellViewEmitter() {
55
+ this.scrollToCellViewEmitter.dispose();
56
+ }
57
+
37
58
  protected onCommandModeChangedEmitter: Emitter<boolean> = new Emitter();
38
59
  get onCommandModeChanged() {
39
60
  return this.onCommandModeChangedEmitter.event;
@@ -44,7 +65,12 @@ export class LibroModel implements NotebookModel, DndListModel {
44
65
  return this.onContentChangedEmitter.event;
45
66
  }
46
67
 
47
- id: string = v4();
68
+ protected onSourceChangedEmitter: Emitter<boolean> = new Emitter();
69
+ get onSourceChanged() {
70
+ return this.onSourceChangedEmitter.event;
71
+ }
72
+
73
+ id: string;
48
74
 
49
75
  /**
50
76
  * The shared notebook model.
@@ -102,7 +128,7 @@ export class LibroModel implements NotebookModel, DndListModel {
102
128
  executeCount = 0;
103
129
 
104
130
  @prop()
105
- mouseMode?: MouseMode;
131
+ mouseMode: MouseMode;
106
132
 
107
133
  @prop()
108
134
  selections: CellView[] = [];
@@ -160,10 +186,12 @@ export class LibroModel implements NotebookModel, DndListModel {
160
186
  cellTypeAdaptor?: CellTypeAdaptor;
161
187
 
162
188
  constructor() {
189
+ this.id = v4();
163
190
  this.sharedModel = YNotebook.create({
164
191
  disableDocumentWideUndoRedo: false,
165
192
  cellTypeAdaptor: this.cellTypeAdaptor,
166
193
  });
194
+ this.scrollToCellViewEmitter = new Emitter<ScrollParams>();
167
195
  this.sharedModel.changed(this.onSharedModelChanged);
168
196
  this.sharedModel.undoChanged((value) => {
169
197
  if (value !== this.canUndo) {
@@ -187,8 +215,14 @@ export class LibroModel implements NotebookModel, DndListModel {
187
215
  });
188
216
  this.insertCellsView(cellViews, currpos);
189
217
  currpos += delta.insert.length;
218
+ this.cellViewChangeEmitter.fire({
219
+ insert: { index: currpos, cells: cellViews },
220
+ });
190
221
  } else if (delta.delete !== null && delta.delete !== undefined) {
191
222
  this.removeRange(currpos, currpos + delta.delete);
223
+ this.cellViewChangeEmitter.fire({
224
+ delete: { index: currpos, number: delta.delete },
225
+ });
192
226
  } else if (delta.retain !== null && delta.retain !== undefined) {
193
227
  currpos += delta.retain;
194
228
  }
@@ -198,9 +232,18 @@ export class LibroModel implements NotebookModel, DndListModel {
198
232
  return;
199
233
  }
200
234
  this.selectCell(this.cells[this.activeIndex]);
201
- if (this.cells[this.activeIndex]) {
202
- this.scrollToView(this.cells[this.activeIndex]);
235
+
236
+ const virtualizedManager = this.virtualizedManagerHelper.getOrCreate(this);
237
+ if (virtualizedManager.isVirtualized) {
238
+ if (this.cells[this.activeIndex]) {
239
+ this.scrollToCellView({ cellIndex: this.activeIndex });
240
+ }
241
+ } else {
242
+ if (this.cells[this.activeIndex]) {
243
+ this.scrollToView(this.cells[this.activeIndex]);
244
+ }
203
245
  }
246
+
204
247
  this.configurationService
205
248
  .get(EnterEditModeWhenAddCell)
206
249
  .then((value) => {
@@ -218,12 +261,8 @@ export class LibroModel implements NotebookModel, DndListModel {
218
261
  });
219
262
  };
220
263
 
221
- toString = () => {
222
- return JSON.stringify(this.toJSON());
223
- };
224
- fromString = (value: string) => {
225
- this.fromJSON(JSON.parse(value));
226
- };
264
+ toString: () => string;
265
+ fromString: (value: string) => void;
227
266
 
228
267
  /**
229
268
  * Serialize the model to JSON.
@@ -270,6 +309,11 @@ export class LibroModel implements NotebookModel, DndListModel {
270
309
  this.onContentChangedEmitter.fire(true);
271
310
  }
272
311
 
312
+ onSourceChange() {
313
+ this.dirty = true;
314
+ this.onSourceChangedEmitter.fire(true);
315
+ }
316
+
273
317
  /**
274
318
  * override this method to load notebook from server
275
319
  * @returns
@@ -279,7 +323,7 @@ export class LibroModel implements NotebookModel, DndListModel {
279
323
  }
280
324
 
281
325
  async saveNotebookContent(): Promise<void> {
282
- //
326
+ return this.libroContentService.saveLibroContent(this.options, this);
283
327
  }
284
328
 
285
329
  async initialize(): Promise<CellOptions[]> {
@@ -352,8 +396,13 @@ export class LibroModel implements NotebookModel, DndListModel {
352
396
  if (offsetTop < _scrollTop) {
353
397
  target.offsetParent.parentElement.scrollTop = offsetTop;
354
398
  } else {
355
- target.offsetParent.parentElement.scrollTop =
356
- offsetTop + _targetheight - _height + 30; // 加缓冲向上不贴底部
399
+ //目标cell的高度大于屏幕的高度
400
+ if (_targetheight >= _height) {
401
+ target.offsetParent.parentElement.scrollTop = offsetTop - _height / 2;
402
+ } else {
403
+ target.offsetParent.parentElement.scrollTop =
404
+ offsetTop + _targetheight - _height + 30; // 加缓冲向上不贴底部
405
+ }
357
406
  }
358
407
  }
359
408
  }
@@ -422,7 +471,13 @@ export class LibroModel implements NotebookModel, DndListModel {
422
471
 
423
472
  protected insertCellsView = (cell: CellView[], position?: number) => {
424
473
  if (position === 0) {
425
- this.cells.unshift(...cell);
474
+ // unshift 存在性能问题
475
+ // this.cells.unshift(...cell);
476
+
477
+ const arr = [...this.cells];
478
+ arr.splice(0, 0, ...cell);
479
+ this.cells = arr;
480
+
426
481
  return;
427
482
  }
428
483
  if (position !== undefined) {
@@ -441,7 +496,11 @@ export class LibroModel implements NotebookModel, DndListModel {
441
496
  };
442
497
 
443
498
  removeRange(start: number, end: number) {
444
- this.cells.splice(start, end - start);
499
+ // this.cells.splice(start, end - start);
500
+ // 不使用splice的写法,除非设置了 ObservableConfig.async = true
501
+ const arr = [...this.cells];
502
+ arr.splice(start, end - start);
503
+ this.cells = arr;
445
504
  }
446
505
 
447
506
  deleteCell(id: string | number): boolean;
@@ -574,9 +633,14 @@ export class LibroModel implements NotebookModel, DndListModel {
574
633
  cells.splice(sourceIndex, 1);
575
634
  cells.splice(targetIndex, 0, sourceItem);
576
635
  this.cells = cells;
636
+ const virtualizedManager = this.virtualizedManagerHelper.getOrCreate(this);
577
637
  setTimeout(() => {
578
638
  // 上下移动也需要调整可视区域范围
579
- this.scrollToView(sourceItem);
639
+ if (virtualizedManager.isVirtualized) {
640
+ this.scrollToCellView({ cellIndex: sourceIndex });
641
+ } else {
642
+ this.scrollToView(sourceItem);
643
+ }
580
644
  }, 300);
581
645
  return true;
582
646
  }