weifuwu 0.85.0 → 0.86.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +5 -5
  2. package/dist/components/Editor/Editor.d.ts +8 -7
  3. package/dist/components/Editor/edit-events.d.ts +27 -0
  4. package/dist/components/Editor/model/apply.d.ts +23 -0
  5. package/dist/components/Editor/model/diff.d.ts +25 -0
  6. package/dist/components/Editor/model/dom.d.ts +27 -0
  7. package/dist/components/Editor/model/history.d.ts +21 -0
  8. package/dist/components/Editor/model/html.d.ts +16 -0
  9. package/dist/components/Editor/model/inverse.d.ts +20 -0
  10. package/dist/components/Editor/model/types.d.ts +116 -0
  11. package/dist/components/Editor/tools/table.d.ts +5 -2
  12. package/dist/components/Editor/tools/toolbar.d.ts +1 -1
  13. package/dist/components/Editor/tools/types.d.ts +25 -0
  14. package/dist/components/FilePreview/FilePreview.d.ts +42 -0
  15. package/dist/components/FilePreview/markdown.d.ts +23 -0
  16. package/dist/components/OfficeEditor/ai/ai-bridge.d.ts +39 -0
  17. package/dist/components/OfficeEditor/model/apply.d.ts +25 -0
  18. package/dist/components/OfficeEditor/model/types.d.ts +224 -0
  19. package/dist/components/SheetGrid/SheetGrid.d.ts +30 -0
  20. package/dist/components/SlideCanvas/SlideCanvas.d.ts +28 -0
  21. package/dist/components/index.d.ts +7 -0
  22. package/dist/components/index.js +54 -14
  23. package/dist/components/style.css +679 -4
  24. package/dist/index.js +38 -11
  25. package/dist/office/docx.d.ts +33 -0
  26. package/dist/office/pptx.d.ts +24 -0
  27. package/dist/office/xlsx.d.ts +25 -0
  28. package/dist/office/xml-serialize.d.ts +18 -0
  29. package/dist/office/xml.d.ts +21 -0
  30. package/dist/office/zip.d.ts +21 -0
  31. package/dist/ui-dom/index.js +7 -7
  32. package/dist/ui-dom/locale/en_US.d.ts +14 -0
  33. package/dist/ui-dom/locale/zh_CN.d.ts +14 -0
  34. package/dist/ui-dom/testing.js +5 -5
  35. package/dist/ui-dom/types.d.ts +3 -1
  36. package/dist/ui-dom/vdom3/delegate.d.ts +5 -0
  37. package/dist/ui-dom/vdom3.js +7 -7
  38. package/docs/components-map.md +12 -0
  39. package/docs/components.md +124 -2
  40. package/package.json +1 -1
  41. package/dist/components/Editor/tools/format.d.ts +0 -11
@@ -4769,6 +4769,33 @@ body.wf-dragging {
4769
4769
 
4770
4770
  /* ── 弹窗内输入框 ──────────────────────────────────── */
4771
4771
 
4772
+ .wf-editor-link-panel {
4773
+ position: fixed;
4774
+ z-index: var(--wf-z-popover);
4775
+ background: var(--wf-color-bg);
4776
+ border: 1px solid var(--wf-color-border);
4777
+ border-radius: var(--wf-radius-md);
4778
+ box-shadow: var(--wf-shadow-md);
4779
+ padding: var(--wf-space-sm) var(--wf-space-md);
4780
+ min-width: var(--wf-editor-popup-min, 260px);
4781
+ max-width: var(--wf-editor-popup-max, 340px);
4782
+ display: flex;
4783
+ flex-direction: column;
4784
+ gap: var(--wf-gap-xs);
4785
+ }
4786
+
4787
+ .wf-editor-link-panel-title {
4788
+ font-size: var(--wf-font-size-sm);
4789
+ font-weight: var(--wf-font-weight-semibold);
4790
+ color: var(--wf-color-text);
4791
+ }
4792
+
4793
+ .wf-editor-link-panel-actions {
4794
+ display: flex;
4795
+ justify-content: flex-end;
4796
+ gap: var(--wf-gap-xs);
4797
+ }
4798
+
4772
4799
  .wf-editor-link-input {
4773
4800
  display: block;
4774
4801
  width: 100%;
@@ -4904,6 +4931,156 @@ body.wf-dragging {
4904
4931
  }
4905
4932
  }
4906
4933
 
4934
+ /* ── AI 协作(选区操作 → 建议浮层) ── */
4935
+
4936
+ .wf-editor-toolbar-row {
4937
+ display: flex;
4938
+ align-items: center;
4939
+ gap: 0;
4940
+ flex-wrap: wrap;
4941
+ }
4942
+
4943
+ .wf-editor-ai-bar {
4944
+ display: inline-flex;
4945
+ align-items: center;
4946
+ }
4947
+
4948
+ .wf-editor-tb-btn--ai {
4949
+ color: var(--wf-color-primary-text);
4950
+ }
4951
+
4952
+ .wf-editor-tb-btn--ai:hover {
4953
+ background: var(--wf-color-primary-bg);
4954
+ }
4955
+
4956
+ .wf-editor-ai-panel {
4957
+ position: fixed;
4958
+ z-index: var(--wf-z-popover);
4959
+ background: var(--wf-color-bg);
4960
+ border: 1px solid var(--wf-color-border);
4961
+ border-radius: var(--wf-radius-md);
4962
+ box-shadow: var(--wf-shadow-md);
4963
+ padding: var(--wf-space-sm) var(--wf-space-md);
4964
+ min-width: var(--wf-editor-popup-min, 260px);
4965
+ max-width: var(--wf-editor-popup-max, 420px);
4966
+ max-height: 300px;
4967
+ display: flex;
4968
+ flex-direction: column;
4969
+ gap: var(--wf-gap-xs);
4970
+ }
4971
+
4972
+ .wf-editor-ai-panel-head {
4973
+ display: flex;
4974
+ justify-content: space-between;
4975
+ font-size: var(--wf-font-size-sm);
4976
+ font-weight: var(--wf-font-weight-semibold);
4977
+ color: var(--wf-color-text);
4978
+ }
4979
+
4980
+ .wf-editor-ai-panel-status {
4981
+ font-weight: normal;
4982
+ color: var(--wf-color-text-tertiary);
4983
+ font-size: var(--wf-font-size-xs);
4984
+ }
4985
+
4986
+ .wf-editor-ai-panel-body {
4987
+ font-size: var(--wf-font-size-sm);
4988
+ color: var(--wf-color-text);
4989
+ white-space: pre-wrap;
4990
+ overflow-y: auto;
4991
+ max-height: 200px;
4992
+ line-height: 1.6;
4993
+ }
4994
+
4995
+ .wf-editor-ai-panel-error {
4996
+ font-size: var(--wf-font-size-sm);
4997
+ color: var(--wf-color-error-text);
4998
+ }
4999
+
5000
+ .wf-editor-ai-panel-actions {
5001
+ display: flex;
5002
+ justify-content: flex-end;
5003
+ gap: var(--wf-gap-xs);
5004
+ }
5005
+
5006
+ /* ── 操作历史(时光机) ── */
5007
+
5008
+ .wf-editor-hist-panel {
5009
+ position: fixed;
5010
+ z-index: var(--wf-z-popover);
5011
+ background: var(--wf-color-bg);
5012
+ border: 1px solid var(--wf-color-border);
5013
+ border-radius: var(--wf-radius-md);
5014
+ box-shadow: var(--wf-shadow-md);
5015
+ padding: var(--wf-space-xs);
5016
+ min-width: var(--wf-editor-popup-min, 220px);
5017
+ max-height: 280px;
5018
+ overflow-y: auto;
5019
+ display: flex;
5020
+ flex-direction: column;
5021
+ gap: 2px;
5022
+ }
5023
+
5024
+ .wf-editor-hist-empty {
5025
+ color: var(--wf-color-text-tertiary);
5026
+ font-size: var(--wf-font-size-xs);
5027
+ padding: var(--wf-space-xs) var(--wf-space-sm);
5028
+ }
5029
+
5030
+ .wf-editor-hist-item {
5031
+ display: flex;
5032
+ justify-content: space-between;
5033
+ align-items: center;
5034
+ gap: var(--wf-gap-sm);
5035
+ padding: var(--wf-space-xs) var(--wf-space-sm);
5036
+ border: none;
5037
+ background: transparent;
5038
+ border-radius: var(--wf-radius-sm);
5039
+ font-size: var(--wf-font-size-sm);
5040
+ color: var(--wf-color-text);
5041
+ cursor: pointer;
5042
+ text-align: left;
5043
+ width: 100%;
5044
+ }
5045
+
5046
+ .wf-editor-hist-item:hover {
5047
+ background: var(--wf-color-bg-hover);
5048
+ }
5049
+
5050
+ .wf-editor-hist-item--current {
5051
+ background: var(--wf-color-primary-bg);
5052
+ color: var(--wf-color-primary-text);
5053
+ font-weight: var(--wf-font-weight-semibold);
5054
+ }
5055
+
5056
+ .wf-editor-hist-item--redo .wf-editor-hist-label {
5057
+ color: var(--wf-color-text-tertiary);
5058
+ }
5059
+
5060
+ .wf-editor-hist-time {
5061
+ font-size: var(--wf-font-size-xs);
5062
+ color: var(--wf-color-text-tertiary);
5063
+ flex-shrink: 0;
5064
+ }
5065
+
5066
+ /* ── AI diff 视图(原文删除线 + 建议高亮) ── */
5067
+
5068
+ .wf-editor-ai-diff {
5069
+ white-space: pre-wrap;
5070
+ }
5071
+
5072
+ .wf-editor-ai-diff-del {
5073
+ color: var(--wf-color-error-text);
5074
+ text-decoration: line-through;
5075
+ opacity: .7;
5076
+ }
5077
+
5078
+ .wf-editor-ai-diff-ins {
5079
+ color: var(--wf-color-success-text);
5080
+ background: var(--wf-color-success-bg);
5081
+ border-radius: 2px;
5082
+ }
5083
+
4907
5084
  /* weifuwu/components — EmptyState */
4908
5085
 
4909
5086
  .wf-empty {
@@ -4986,6 +5163,156 @@ body.wf-dragging {
4986
5163
  color: var(--wf-color-error-text);
4987
5164
  }
4988
5165
 
5166
+ /* weifuwu/components — FilePreview */
5167
+
5168
+ .wf-filepreview {
5169
+ display: flex;
5170
+ flex-direction: column;
5171
+ gap: var(--wf-gap-sm);
5172
+ font-family: var(--wf-font-sans);
5173
+ }
5174
+
5175
+ .wf-filepreview-name {
5176
+ font-size: var(--wf-font-size-sm);
5177
+ font-weight: var(--wf-font-weight-semibold);
5178
+ color: var(--wf-color-text-secondary);
5179
+ padding-bottom: var(--wf-space-xs);
5180
+ border-bottom: 1px solid var(--wf-color-border);
5181
+ }
5182
+
5183
+ /* md 文档渲染(复用 Editor 模型序列化——样式与 Editor 内容对齐) */
5184
+ .wf-filepreview-doc {
5185
+ border: 1px solid var(--wf-color-border);
5186
+ border-radius: var(--wf-radius-md);
5187
+ background: var(--wf-color-bg);
5188
+ padding: var(--wf-space-md);
5189
+ overflow: auto;
5190
+ }
5191
+
5192
+ .wf-filepreview-md {
5193
+ line-height: 1.7;
5194
+ color: var(--wf-color-text);
5195
+ }
5196
+
5197
+ .wf-filepreview-md h1,
5198
+ .wf-filepreview-md h2,
5199
+ .wf-filepreview-md h3 {
5200
+ margin: var(--wf-space-md) 0 var(--wf-space-sm);
5201
+ line-height: 1.3;
5202
+ }
5203
+
5204
+ .wf-filepreview-md h1 { font-size: var(--wf-font-size-3xl); }
5205
+ .wf-filepreview-md h2 { font-size: var(--wf-font-size-2xl); }
5206
+ .wf-filepreview-md h3 { font-size: var(--wf-font-size-xl); }
5207
+
5208
+ .wf-filepreview-md p {
5209
+ margin: var(--wf-space-sm) 0;
5210
+ }
5211
+
5212
+ .wf-filepreview-md blockquote {
5213
+ margin: var(--wf-space-sm) 0;
5214
+ padding: var(--wf-space-xs) var(--wf-space-sm);
5215
+ border-left: 3px solid var(--wf-color-primary);
5216
+ background: var(--wf-color-primary-bg);
5217
+ color: var(--wf-color-text-secondary);
5218
+ border-radius: 0 var(--wf-radius-sm) var(--wf-radius-sm) 0;
5219
+ }
5220
+
5221
+ .wf-filepreview-md ul,
5222
+ .wf-filepreview-md ol {
5223
+ margin: var(--wf-space-sm) 0;
5224
+ padding-left: var(--wf-space-lg);
5225
+ }
5226
+
5227
+ .wf-filepreview-md img {
5228
+ max-width: 100%;
5229
+ border-radius: var(--wf-radius-sm);
5230
+ }
5231
+
5232
+ .wf-filepreview-md pre,
5233
+ .wf-filepreview-md code {
5234
+ font-family: var(--wf-font-mono);
5235
+ font-size: var(--wf-font-size-xs);
5236
+ }
5237
+
5238
+ .wf-filepreview-md pre {
5239
+ background: var(--wf-color-bg-muted, var(--wf-color-border));
5240
+ padding: var(--wf-space-sm) var(--wf-space-md);
5241
+ border-radius: var(--wf-radius-sm);
5242
+ overflow-x: auto;
5243
+ }
5244
+
5245
+ .wf-filepreview-md code {
5246
+ background: var(--wf-color-bg-muted, var(--wf-color-border));
5247
+ padding: 1px 4px;
5248
+ border-radius: 3px;
5249
+ }
5250
+
5251
+ .wf-filepreview-md pre code {
5252
+ background: none;
5253
+ padding: 0;
5254
+ }
5255
+
5256
+ .wf-filepreview-md hr {
5257
+ border: none;
5258
+ border-top: 1px solid var(--wf-color-border);
5259
+ margin: var(--wf-space-md) 0;
5260
+ }
5261
+
5262
+ /* iframe(html sandbox / pdf / office) */
5263
+ .wf-filepreview-frame {
5264
+ border: 1px solid var(--wf-color-border);
5265
+ border-radius: var(--wf-radius-md);
5266
+ overflow: hidden;
5267
+ background: var(--wf-color-bg);
5268
+ }
5269
+
5270
+ .wf-filepreview-iframe {
5271
+ display: block;
5272
+ }
5273
+
5274
+ .wf-filepreview-empty {
5275
+ border: 1px dashed var(--wf-color-border);
5276
+ border-radius: var(--wf-radius-md);
5277
+ padding: var(--wf-space-lg);
5278
+ text-align: center;
5279
+ color: var(--wf-color-text-tertiary);
5280
+ font-size: var(--wf-font-size-sm);
5281
+ }
5282
+
5283
+ /* 编辑保存工具条 */
5284
+ .wf-filepreview-actions {
5285
+ display: flex;
5286
+ justify-content: flex-end;
5287
+ }
5288
+
5289
+ /* 编辑保存工具条 */
5290
+ .wf-filepreview-actions {
5291
+ display: flex;
5292
+ justify-content: flex-end;
5293
+ align-items: center;
5294
+ gap: var(--wf-gap-sm);
5295
+ }
5296
+
5297
+ .wf-filepreview-actions-hint {
5298
+ font-size: var(--wf-font-size-xs);
5299
+ color: var(--wf-color-text-tertiary);
5300
+ }
5301
+
5302
+ .wf-filepreview-error {
5303
+ color: var(--wf-color-error-text);
5304
+ border-color: var(--wf-color-error-text);
5305
+ }
5306
+
5307
+ .wf-filepreview-dirty {
5308
+ font-size: var(--wf-font-size-xs);
5309
+ color: var(--wf-color-warning-text);
5310
+ }
5311
+
5312
+ .wf-filepreview-name:hover {
5313
+ color: var(--wf-color-text-secondary);
5314
+ }
5315
+
4989
5316
  /* weifuwu/components — FileUpload */
4990
5317
 
4991
5318
  .wf-upload {
@@ -8461,11 +8788,186 @@ body.wf-dragging {
8461
8788
  .wf-session-del { opacity: 1; width: 28px; height: 28px; }
8462
8789
  }
8463
8790
 
8464
- /* weifuwu/components — Skeleton */
8791
+ /* weifuwu/components — SheetGrid(xlsx 网格编辑器——ODES 事件流) */
8465
8792
 
8466
- .wf-skeleton {
8467
- display: inline-block;
8468
- height: 1em;
8793
+ .wf-sheet {
8794
+ display: flex;
8795
+ flex-direction: column;
8796
+ gap: var(--wf-gap-xs);
8797
+ font-size: var(--wf-font-size-sm);
8798
+ min-height: 0;
8799
+ }
8800
+
8801
+ .wf-sheet-toolbar {
8802
+ display: flex;
8803
+ align-items: center;
8804
+ gap: var(--wf-gap-sm);
8805
+ flex-wrap: wrap;
8806
+ }
8807
+
8808
+ .wf-sheet-tabs {
8809
+ display: flex;
8810
+ gap: 2px;
8811
+ align-items: flex-end;
8812
+ }
8813
+
8814
+ .wf-sheet-tab {
8815
+ font-size: var(--wf-font-size-xs);
8816
+ padding: 4px 12px;
8817
+ border: 1px solid var(--wf-color-border);
8818
+ border-bottom: none;
8819
+ border-radius: var(--wf-radius-sm) var(--wf-radius-sm) 0 0;
8820
+ background: var(--wf-color-bg);
8821
+ cursor: pointer;
8822
+ min-height: 0;
8823
+ min-width: 0;
8824
+ }
8825
+
8826
+ .wf-sheet-tab:hover {
8827
+ border-color: var(--wf-color-primary);
8828
+ color: var(--wf-color-primary-text);
8829
+ }
8830
+
8831
+ .wf-sheet-tab--active:hover {
8832
+ color: var(--wf-color-on-brand);
8833
+ }
8834
+
8835
+ .wf-sheet-tab--active {
8836
+ background: var(--wf-color-primary);
8837
+ color: var(--wf-color-on-brand);
8838
+ border-color: var(--wf-color-primary);
8839
+ }
8840
+
8841
+ .wf-sheet-tools {
8842
+ display: flex;
8843
+ gap: 4px;
8844
+ align-items: center;
8845
+ }
8846
+
8847
+ .wf-sheet-status {
8848
+ font-size: var(--wf-font-size-xs);
8849
+ color: var(--wf-color-text-tertiary);
8850
+ margin-left: auto;
8851
+ }
8852
+
8853
+ .wf-sheet-scroll {
8854
+ border: 1px solid var(--wf-color-border);
8855
+ border-radius: var(--wf-radius-sm);
8856
+ max-height: 100%;
8857
+ background: var(--wf-color-bg);
8858
+ }
8859
+
8860
+ .wf-sheet-table {
8861
+ border-collapse: collapse;
8862
+ width: max-content;
8863
+ font-size: var(--wf-font-size-sm);
8864
+ }
8865
+
8866
+ .wf-sheet-table th,
8867
+ .wf-sheet-table td {
8868
+ border: 1px solid var(--wf-color-border);
8869
+ padding: 2px 8px;
8870
+ min-width: 60px;
8871
+ height: 24px;
8872
+ white-space: nowrap;
8873
+ }
8874
+
8875
+ .wf-sheet-colhead {
8876
+ background: var(--wf-color-bg-subtle);
8877
+ font-weight: var(--wf-font-weight-medium);
8878
+ font-size: var(--wf-font-size-xs);
8879
+ color: var(--wf-color-text-secondary);
8880
+ text-align: center;
8881
+ position: sticky;
8882
+ top: 0;
8883
+ z-index: 1;
8884
+ }
8885
+
8886
+ .wf-sheet-rowhead {
8887
+ background: var(--wf-color-bg-subtle);
8888
+ font-weight: var(--wf-font-weight-medium);
8889
+ font-size: var(--wf-font-size-xs);
8890
+ color: var(--wf-color-text-secondary);
8891
+ text-align: center;
8892
+ position: sticky;
8893
+ left: 0;
8894
+ z-index: 1;
8895
+ min-width: 36px;
8896
+ }
8897
+
8898
+ .wf-sheet-corner {
8899
+ position: sticky;
8900
+ top: 0;
8901
+ left: 0;
8902
+ z-index: 1;
8903
+ background: var(--wf-color-bg-subtle);
8904
+ }
8905
+
8906
+ .wf-sheet-cell {
8907
+ cursor: cell;
8908
+ }
8909
+
8910
+ .wf-sheet-cell--active {
8911
+ outline: 2px solid var(--wf-color-primary);
8912
+ outline-offset: -2px;
8913
+ }
8914
+
8915
+ .wf-sheet-input {
8916
+ width: 100%;
8917
+ border: none;
8918
+ outline: none;
8919
+ background: transparent;
8920
+ font: inherit;
8921
+ padding: 0;
8922
+ min-height: 0;
8923
+ height: 100%;
8924
+ }
8925
+
8926
+ .wf-sheet-ai-panel {
8927
+ width: 320px;
8928
+ max-height: 260px;
8929
+ overflow: auto;
8930
+ padding: var(--wf-gap-sm);
8931
+ background: var(--wf-color-bg-elevated);
8932
+ border: 1px solid var(--wf-color-border);
8933
+ border-radius: var(--wf-radius-md);
8934
+ box-shadow: var(--wf-shadow-lg);
8935
+ z-index: var(--wf-z-popover);
8936
+ display: flex;
8937
+ flex-direction: column;
8938
+ gap: var(--wf-gap-xs);
8939
+ }
8940
+
8941
+ .wf-sheet-ai-title {
8942
+ font-weight: var(--wf-font-weight-semibold);
8943
+ font-size: var(--wf-font-size-sm);
8944
+ }
8945
+
8946
+ .wf-sheet-ai-body {
8947
+ white-space: pre-wrap;
8948
+ word-break: break-all;
8949
+ font-size: var(--wf-font-size-sm);
8950
+ margin: 0;
8951
+ max-height: 140px;
8952
+ overflow: auto;
8953
+ }
8954
+
8955
+ .wf-sheet-ai-error {
8956
+ color: var(--wf-color-error-text);
8957
+ font-size: var(--wf-font-size-sm);
8958
+ }
8959
+
8960
+ .wf-sheet-ai-actions {
8961
+ display: flex;
8962
+ gap: 4px;
8963
+ justify-content: flex-end;
8964
+ }
8965
+
8966
+ /* weifuwu/components — Skeleton */
8967
+
8968
+ .wf-skeleton {
8969
+ display: inline-block;
8970
+ height: 1em;
8469
8971
  border-radius: var(--wf-radius-sm);
8470
8972
  background: linear-gradient(
8471
8973
  90deg,
@@ -8541,6 +9043,179 @@ body.wf-dragging {
8541
9043
  flex: 1;
8542
9044
  }
8543
9045
 
9046
+ /* weifuwu/components — SlideCanvas(pptx 画布编辑器——ODES 事件流) */
9047
+
9048
+ .wf-slide {
9049
+ display: flex;
9050
+ flex-direction: column;
9051
+ gap: var(--wf-gap-xs);
9052
+ min-height: 0;
9053
+ }
9054
+
9055
+ .wf-slide-toolbar {
9056
+ display: flex;
9057
+ align-items: center;
9058
+ gap: 4px;
9059
+ flex-wrap: wrap;
9060
+ }
9061
+
9062
+ .wf-slide-tab {
9063
+ font-size: var(--wf-font-size-xs);
9064
+ padding: 4px 12px;
9065
+ border: 1px solid var(--wf-color-border);
9066
+ border-radius: var(--wf-radius-sm);
9067
+ background: var(--wf-color-bg);
9068
+ cursor: pointer;
9069
+ min-height: 0;
9070
+ }
9071
+
9072
+ .wf-slide-tab--active {
9073
+ background: var(--wf-color-primary);
9074
+ color: var(--wf-color-on-brand);
9075
+ border-color: var(--wf-color-primary);
9076
+ }
9077
+
9078
+ .wf-slide-canvas-scroll {
9079
+ overflow: auto;
9080
+ background: var(--wf-color-bg-subtle);
9081
+ border-radius: var(--wf-radius-md);
9082
+ padding: 12px;
9083
+ }
9084
+
9085
+ .wf-slide-canvas {
9086
+ position: relative;
9087
+ background: var(--wf-color-bg);
9088
+ border: 1px solid var(--wf-color-border);
9089
+ border-radius: var(--wf-radius-sm);
9090
+ box-shadow: var(--wf-shadow-md);
9091
+ }
9092
+
9093
+ .wf-slide-shape-scaler {
9094
+ top: 0;
9095
+ left: 0;
9096
+ pointer-events: none;
9097
+ }
9098
+
9099
+ .wf-slide-shape {
9100
+ position: absolute;
9101
+ border: 1px solid transparent;
9102
+ cursor: move;
9103
+ pointer-events: auto;
9104
+ box-sizing: border-box;
9105
+ }
9106
+
9107
+ .wf-slide-shape--text {
9108
+ display: flex;
9109
+ align-items: center;
9110
+ overflow: hidden;
9111
+ }
9112
+
9113
+ .wf-slide-shape--rect {
9114
+ border-radius: var(--wf-radius-sm);
9115
+ }
9116
+
9117
+ .wf-slide-shape--selected {
9118
+ border-color: var(--wf-color-primary);
9119
+ outline: 1px solid var(--wf-color-primary);
9120
+ outline-offset: 1px;
9121
+ }
9122
+
9123
+ .wf-slide-shape-label {
9124
+ padding: 4px 8px;
9125
+ font-size: var(--wf-font-size-sm);
9126
+ line-height: 1.4;
9127
+ width: 100%;
9128
+ white-space: pre-wrap;
9129
+ word-break: break-word;
9130
+ }
9131
+
9132
+ .wf-slide-shape-image {
9133
+ width: 100%;
9134
+ height: 100%;
9135
+ display: flex;
9136
+ align-items: center;
9137
+ justify-content: center;
9138
+ font-size: var(--wf-font-size-3xl);
9139
+ background: var(--wf-color-bg-subtle);
9140
+ border: 1px dashed var(--wf-color-border);
9141
+ }
9142
+
9143
+ .wf-slide-shape-line {
9144
+ width: 100%;
9145
+ height: 2px;
9146
+ background: var(--wf-color-text-secondary);
9147
+ margin-top: 50%;
9148
+ }
9149
+
9150
+ .wf-slide-shape-edit {
9151
+ width: 100%;
9152
+ height: 100%;
9153
+ border: none;
9154
+ outline: none;
9155
+ resize: none;
9156
+ font: inherit;
9157
+ padding: 4px 8px;
9158
+ background: transparent;
9159
+ min-height: 0;
9160
+ }
9161
+
9162
+ .wf-slide-shape-resize {
9163
+ position: absolute;
9164
+ right: -5px;
9165
+ bottom: -5px;
9166
+ width: 10px;
9167
+ height: 10px;
9168
+ background: var(--wf-color-primary);
9169
+ border: 1px solid var(--wf-color-bg);
9170
+ cursor: nwse-resize;
9171
+ pointer-events: auto;
9172
+ z-index: 1;
9173
+ }
9174
+
9175
+ .wf-slide-ai-panel {
9176
+ width: 320px;
9177
+ max-height: 260px;
9178
+ overflow: auto;
9179
+ padding: var(--wf-gap-sm);
9180
+ background: var(--wf-color-bg-elevated);
9181
+ border: 1px solid var(--wf-color-border);
9182
+ border-radius: var(--wf-radius-md);
9183
+ box-shadow: var(--wf-shadow-lg);
9184
+ z-index: var(--wf-z-popover);
9185
+ display: flex;
9186
+ flex-direction: column;
9187
+ gap: var(--wf-gap-xs);
9188
+ }
9189
+
9190
+ .wf-slide-ai-title {
9191
+ font-weight: var(--wf-font-weight-semibold);
9192
+ font-size: var(--wf-font-size-sm);
9193
+ }
9194
+
9195
+ .wf-slide-ai-body {
9196
+ white-space: pre-wrap;
9197
+ word-break: break-all;
9198
+ font-size: var(--wf-font-size-sm);
9199
+ margin: 0;
9200
+ max-height: 140px;
9201
+ overflow: auto;
9202
+ }
9203
+
9204
+ .wf-slide-ai-error {
9205
+ color: var(--wf-color-error-text);
9206
+ font-size: var(--wf-font-size-sm);
9207
+ }
9208
+
9209
+ .wf-slide-ai-actions {
9210
+ display: flex;
9211
+ gap: 4px;
9212
+ justify-content: flex-end;
9213
+ }
9214
+
9215
+ .wf-slide-shape:hover {
9216
+ border-color: var(--wf-color-border);
9217
+ }
9218
+
8544
9219
  /* weifuwu/components — Slider */
8545
9220
 
8546
9221
  .wf-slider-wrap {