vue-editify 0.1.10 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. package/examples/App.vue +21 -96
  2. package/examples/main.ts +4 -0
  3. package/lib/components/button/button.vue.d.ts +143 -0
  4. package/lib/components/button/props.d.ts +73 -0
  5. package/lib/components/checkbox/checkbox.vue.d.ts +80 -0
  6. package/lib/components/checkbox/props.d.ts +36 -0
  7. package/lib/components/colors/colors.vue.d.ts +47 -0
  8. package/lib/components/colors/props.d.ts +22 -0
  9. package/lib/components/icon/icon.vue.d.ts +14 -0
  10. package/lib/components/icon/props.d.ts +9 -0
  11. package/lib/components/insertImage/insertImage.vue.d.ts +74 -0
  12. package/lib/components/insertImage/props.d.ts +34 -0
  13. package/lib/components/insertLink/insertLink.vue.d.ts +27 -0
  14. package/lib/components/insertLink/props.d.ts +13 -0
  15. package/lib/components/insertTable/insertTable.vue.d.ts +36 -0
  16. package/lib/components/insertTable/props.d.ts +22 -0
  17. package/lib/components/insertVideo/insertVideo.vue.d.ts +74 -0
  18. package/lib/components/insertVideo/props.d.ts +34 -0
  19. package/lib/components/layer/layer.vue.d.ts +129 -0
  20. package/lib/components/layer/props.d.ts +53 -0
  21. package/lib/components/menu/menu.vue.d.ts +25 -0
  22. package/lib/components/menu/props.d.ts +14 -0
  23. package/lib/components/toolbar/props.d.ts +27 -0
  24. package/lib/components/toolbar/toolbar.vue.d.ts +56 -0
  25. package/lib/components/tooltip/props.d.ts +17 -0
  26. package/lib/components/tooltip/tooltip.vue.d.ts +39 -0
  27. package/lib/components/triangle/props.d.ts +19 -0
  28. package/lib/components/triangle/triangle.vue.d.ts +34 -0
  29. package/lib/core/function.d.ts +45 -0
  30. package/lib/core/rule.d.ts +9 -0
  31. package/lib/core/tool.d.ts +185 -0
  32. package/lib/editify/editify.vue.d.ts +676 -0
  33. package/lib/editify/props.d.ts +110 -0
  34. package/lib/editify.es.js +5706 -5727
  35. package/lib/editify.umd.js +1 -1
  36. package/lib/hljs/index.d.ts +7 -0
  37. package/lib/index.d.ts +17 -0
  38. package/lib/locale/en_US.d.ts +3 -0
  39. package/lib/locale/index.d.ts +2 -0
  40. package/lib/locale/zh_CN.d.ts +3 -0
  41. package/lib/style.css +1 -1
  42. package/package.json +16 -8
  43. package/src/components/button/button.less +145 -0
  44. package/src/components/button/button.vue +197 -0
  45. package/src/components/button/props.ts +95 -0
  46. package/src/components/checkbox/checkbox.less +84 -0
  47. package/src/components/checkbox/checkbox.vue +68 -0
  48. package/src/components/checkbox/props.ts +49 -0
  49. package/src/components/colors/colors.less +75 -0
  50. package/src/components/colors/colors.vue +36 -0
  51. package/src/components/colors/props.ts +29 -0
  52. package/src/components/{base/Icon.vue → icon/icon.less} +0 -17
  53. package/src/components/icon/icon.vue +12 -0
  54. package/src/components/icon/props.ts +11 -0
  55. package/src/components/insertImage/insertImage.less +135 -0
  56. package/src/components/insertImage/insertImage.vue +146 -0
  57. package/src/components/insertImage/props.ts +43 -0
  58. package/src/components/insertLink/insertLink.less +64 -0
  59. package/src/components/insertLink/insertLink.vue +58 -0
  60. package/src/components/insertLink/props.ts +16 -0
  61. package/src/components/insertTable/insertTable.less +54 -0
  62. package/src/components/insertTable/insertTable.vue +85 -0
  63. package/src/components/insertTable/props.ts +27 -0
  64. package/src/components/insertVideo/insertVideo.less +135 -0
  65. package/src/components/insertVideo/insertVideo.vue +146 -0
  66. package/src/components/insertVideo/props.ts +43 -0
  67. package/src/components/layer/layer.less +49 -0
  68. package/src/components/layer/layer.vue +598 -0
  69. package/src/components/layer/props.ts +71 -0
  70. package/src/components/menu/menu.less +64 -0
  71. package/src/components/menu/menu.vue +1570 -0
  72. package/src/components/menu/props.ts +17 -0
  73. package/src/components/toolbar/props.ts +35 -0
  74. package/src/components/toolbar/toolbar.less +89 -0
  75. package/src/components/toolbar/toolbar.vue +1101 -0
  76. package/src/components/tooltip/props.ts +21 -0
  77. package/src/components/tooltip/tooltip.less +23 -0
  78. package/src/components/tooltip/tooltip.vue +37 -0
  79. package/src/components/triangle/props.ts +26 -0
  80. package/src/components/triangle/triangle.less +79 -0
  81. package/src/components/triangle/triangle.vue +65 -0
  82. package/src/core/function.ts +1144 -0
  83. package/src/core/{rule.js → rule.ts} +33 -33
  84. package/src/core/{tool.js → tool.ts} +221 -145
  85. package/src/editify/editify.less +404 -0
  86. package/src/editify/editify.vue +805 -0
  87. package/src/editify/props.ts +141 -0
  88. package/src/hljs/{index.js → index.ts} +7 -4
  89. package/src/index.ts +32 -0
  90. package/src/locale/{en_US.js → en_US.ts} +3 -1
  91. package/src/locale/index.ts +12 -0
  92. package/src/locale/{zh_CN.js → zh_CN.ts} +3 -1
  93. package/tsconfig.json +27 -0
  94. package/tsconfig.node.json +11 -0
  95. package/vite-env.d.ts +1 -0
  96. package/vite.config.ts +39 -0
  97. package/examples/main.js +0 -4
  98. package/src/Editify.vue +0 -1184
  99. package/src/components/Menu.vue +0 -1623
  100. package/src/components/Toolbar.vue +0 -1215
  101. package/src/components/base/Button.vue +0 -450
  102. package/src/components/base/Checkbox.vue +0 -196
  103. package/src/components/base/Layer.vue +0 -713
  104. package/src/components/base/Tooltip.vue +0 -82
  105. package/src/components/base/Triangle.vue +0 -159
  106. package/src/components/common/Colors.vue +0 -138
  107. package/src/components/common/InsertImage.vue +0 -316
  108. package/src/components/common/InsertLink.vue +0 -136
  109. package/src/components/common/InsertTable.vue +0 -157
  110. package/src/components/common/InsertVideo.vue +0 -316
  111. package/src/core/function.js +0 -1044
  112. package/src/index.js +0 -24
  113. package/src/locale/index.js +0 -14
@@ -0,0 +1,404 @@
1
+ .editify {
2
+ display: flex;
3
+ justify-content: flex-start;
4
+ flex-direction: column;
5
+ width: 100%;
6
+ height: 100%;
7
+ position: relative;
8
+ box-sizing: border-box;
9
+ -webkit-tap-highlight-color: transparent;
10
+ outline: none;
11
+ font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, Roboto, 'Segoe UI', 'Microsoft YaHei', Arial, sans-serif;
12
+ line-height: 1.5;
13
+
14
+ *,
15
+ *::before,
16
+ *::after {
17
+ box-sizing: border-box;
18
+ -webkit-tap-highlight-color: transparent;
19
+ outline: none;
20
+ }
21
+
22
+ &.fullscreen {
23
+ position: fixed;
24
+ z-index: 1000;
25
+ left: 0;
26
+ top: 0;
27
+ width: 100vw !important;
28
+ height: 100vh !important;
29
+ background: @background;
30
+
31
+ .editify-body {
32
+ border-radius: 0;
33
+ }
34
+ }
35
+
36
+ &.autoheight {
37
+ height: auto;
38
+
39
+ .editify-body {
40
+ height: auto;
41
+ flex: none;
42
+ }
43
+ }
44
+ }
45
+
46
+ .editify-body {
47
+ display: block;
48
+ width: 100%;
49
+ height: 0;
50
+ flex: 1;
51
+ position: relative;
52
+ background-color: @background;
53
+ padding: 1px;
54
+ border-radius: 4px;
55
+
56
+ &.border {
57
+ border: 1px solid @border-color;
58
+ transition: all 500ms;
59
+
60
+ &.menu_inner {
61
+ border-top: none;
62
+ border-radius: 0 0 4px 4px;
63
+ }
64
+ }
65
+
66
+ &.menu_inner {
67
+ padding-top: 21px;
68
+
69
+ .editify-source {
70
+ top: 21px;
71
+ height: calc(100% - 21px);
72
+ }
73
+ }
74
+
75
+ //编辑器样式
76
+ .editify-content {
77
+ display: block;
78
+ position: relative;
79
+ overflow-x: hidden;
80
+ overflow-y: auto;
81
+ width: 100%;
82
+ height: 100%;
83
+ border-radius: inherit;
84
+ padding: 6px 10px;
85
+ line-height: 1.5;
86
+ color: @font-color-dark;
87
+ font-size: @font-size;
88
+ position: relative;
89
+ line-height: 1.5;
90
+
91
+ //显示占位符
92
+ &.placeholder::before {
93
+ position: absolute;
94
+ top: 0;
95
+ left: 0;
96
+ display: block;
97
+ width: 100%;
98
+ content: attr(data-editify-placeholder);
99
+ font-size: inherit;
100
+ font-family: inherit;
101
+ color: @font-color-disabled;
102
+ line-height: inherit;
103
+ padding: 6px 10px;
104
+ cursor: text;
105
+ touch-action: none;
106
+ user-select: none;
107
+ }
108
+
109
+ //段落样式和标题
110
+ :deep(p),
111
+ :deep(h1),
112
+ :deep(h2),
113
+ :deep(h3),
114
+ :deep(h4),
115
+ :deep(h5),
116
+ :deep(h6) {
117
+ display: block;
118
+ width: 100%;
119
+ margin: 0 0 15px 0;
120
+ padding: 0;
121
+ }
122
+ :deep(h1) {
123
+ font-size: 32px;
124
+ }
125
+ :deep(h2) {
126
+ font-size: 28px;
127
+ }
128
+ :deep(h3) {
129
+ font-size: 24px;
130
+ }
131
+ :deep(h4) {
132
+ font-size: 20px;
133
+ }
134
+ :deep(h5) {
135
+ font-size: 18px;
136
+ }
137
+ :deep(h6) {
138
+ font-size: 16px;
139
+ }
140
+ //有序列表样式
141
+ :deep(div[data-editify-list='ol']) {
142
+ margin-bottom: 15px;
143
+
144
+ &::before {
145
+ content: attr(data-editify-value) '.';
146
+ margin-right: 10px;
147
+ }
148
+ }
149
+ //无序列表样式
150
+ :deep(div[data-editify-list='ul']) {
151
+ margin-bottom: 15px;
152
+
153
+ &::before {
154
+ content: '\2022';
155
+ margin-right: 10px;
156
+ }
157
+ }
158
+ //代码样式
159
+ :deep(span[data-editify-code]) {
160
+ display: inline-block;
161
+ padding: 3px 6px;
162
+ margin: 0 4px;
163
+ border-radius: 4px;
164
+ line-height: 1;
165
+ font-family: Consolas, monospace, Monaco, Andale Mono, Ubuntu Mono;
166
+ background-color: @pre-background;
167
+ color: @font-color;
168
+ border: 1px solid @border-color;
169
+ text-indent: initial;
170
+ font-size: @font-size;
171
+ font-weight: normal;
172
+ }
173
+ //链接样式
174
+ :deep(a) {
175
+ color: @font-color-link;
176
+ transition: all 200ms;
177
+ text-decoration: none;
178
+ cursor: text;
179
+
180
+ &:hover {
181
+ color: @font-color-link-dark;
182
+ text-decoration: underline;
183
+ }
184
+ }
185
+ //表格样式
186
+ :deep(table) {
187
+ width: 100%;
188
+ border: 1px solid @border-color;
189
+ margin: 0;
190
+ padding: 0;
191
+ border-collapse: collapse;
192
+ margin-bottom: 15px;
193
+ background-color: @background;
194
+ color: @font-color-dark;
195
+ font-size: @font-size;
196
+
197
+ * {
198
+ margin: 0 !important;
199
+ }
200
+
201
+ tbody {
202
+ margin: 0;
203
+ padding: 0;
204
+
205
+ tr {
206
+ margin: 0;
207
+ padding: 0;
208
+
209
+ &:first-child {
210
+ background-color: @background-darker;
211
+
212
+ td {
213
+ font-weight: bold;
214
+ position: relative;
215
+ }
216
+ }
217
+
218
+ td {
219
+ margin: 0;
220
+ border: 1px solid @border-color;
221
+ padding: 6px 10px;
222
+ position: relative;
223
+ word-break: break-word;
224
+
225
+ &:not(:last-child)::after {
226
+ position: absolute;
227
+ right: -5px;
228
+ top: 0;
229
+ width: 10px;
230
+ height: 100%;
231
+ content: '';
232
+ z-index: 1;
233
+ cursor: col-resize;
234
+ user-select: none;
235
+ }
236
+ }
237
+ }
238
+ }
239
+ }
240
+ //代码块样式
241
+ :deep(pre) {
242
+ display: block;
243
+ padding: 6px 10px;
244
+ margin: 0 0 15px;
245
+ font-family: Consolas, monospace, Monaco, Andale Mono, Ubuntu Mono;
246
+ line-height: 1.5;
247
+ font-size: @font-size;
248
+ color: @font-color-dark;
249
+ background-color: @pre-background;
250
+ border: 1px solid @border-color;
251
+ border-radius: 4px;
252
+ overflow: auto;
253
+ position: relative;
254
+ }
255
+ //图片样式
256
+ :deep(img) {
257
+ position: relative;
258
+ display: inline-block;
259
+ width: 30%;
260
+ height: auto;
261
+ border-radius: 2px;
262
+ vertical-align: text-bottom;
263
+ margin: 0 2px;
264
+ max-width: 100%;
265
+ }
266
+ //视频样式
267
+ :deep(video) {
268
+ position: relative;
269
+ display: inline-block;
270
+ width: 30%;
271
+ border-radius: 2px;
272
+ vertical-align: text-bottom;
273
+ background-color: #000;
274
+ object-fit: contain;
275
+ margin: 0 2px;
276
+ max-width: 100%;
277
+ }
278
+ //引用样式
279
+ :deep(blockquote) {
280
+ display: block;
281
+ border-left: 8px solid @background-darker;
282
+ padding: 6px 10px 6px 20px;
283
+ margin: 0 0 15px;
284
+ line-height: 1.5;
285
+ font-size: @font-size;
286
+ color: @font-color-light;
287
+ border-radius: 0;
288
+ }
289
+ //任务列表样式
290
+ :deep(div[data-editify-task]) {
291
+ margin-bottom: 15px;
292
+ position: relative;
293
+ padding-left: 26px;
294
+ font-size: @font-size;
295
+ color: @font-color-dark;
296
+ transition: all 200ms;
297
+
298
+ &::before {
299
+ display: block;
300
+ width: 16px;
301
+ height: 16px;
302
+ border-radius: 2px;
303
+ border: 2px solid @font-color-light;
304
+ transition: all 200ms;
305
+ box-sizing: border-box;
306
+ user-select: none;
307
+ content: '';
308
+ position: absolute;
309
+ left: 0;
310
+ top: 2px;
311
+ z-index: 1;
312
+ cursor: pointer;
313
+ }
314
+
315
+ &::after {
316
+ position: absolute;
317
+ content: '';
318
+ left: 3px;
319
+ top: 6px;
320
+ display: inline-block;
321
+ width: 10px;
322
+ height: 6px;
323
+ border: 2px solid @font-color-light;
324
+ border-top: none;
325
+ border-right: none;
326
+ transform: rotate(-45deg);
327
+ transform-origin: center;
328
+ margin-bottom: 2px;
329
+ box-sizing: border-box;
330
+ z-index: 2;
331
+ cursor: pointer;
332
+ opacity: 0;
333
+ transition: all 200ms;
334
+ }
335
+
336
+ &[data-editify-task='checked'] {
337
+ text-decoration: line-through;
338
+ color: @font-color-light;
339
+ &::after {
340
+ opacity: 1;
341
+ }
342
+ }
343
+ }
344
+
345
+ //禁用样式
346
+ &.disabled {
347
+ cursor: auto !important;
348
+ &.placeholder::before {
349
+ cursor: auto;
350
+ }
351
+ :deep(a) {
352
+ cursor: pointer;
353
+ }
354
+
355
+ :deep(table) {
356
+ td:not(:last-child)::after {
357
+ cursor: auto;
358
+ }
359
+ }
360
+ }
361
+ }
362
+
363
+ //代码视图
364
+ .editify-source {
365
+ display: block;
366
+ width: 100%;
367
+ height: 100%;
368
+ position: absolute;
369
+ left: 0;
370
+ top: 0;
371
+ background-color: @reverse-background;
372
+ margin: 0;
373
+ padding: 6px 10px;
374
+ overflow-x: hidden;
375
+ overflow-y: auto;
376
+ font-size: @font-size;
377
+ color: @reverse-color;
378
+ font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
379
+ resize: none;
380
+ border: none;
381
+ border-radius: inherit;
382
+ z-index: 1;
383
+ }
384
+ }
385
+
386
+ .editify-footer {
387
+ display: flex;
388
+ justify-content: end;
389
+ align-items: center;
390
+ width: 100%;
391
+ padding: 10px;
392
+ position: relative;
393
+
394
+ .editify-footer-words {
395
+ font-size: @font-size;
396
+ color: @font-color-light;
397
+ line-height: 1;
398
+ }
399
+
400
+ //全屏模式下并且不是代码视图下,显示一个上边框
401
+ &.fullscreen {
402
+ border-top: 1px solid @border-color;
403
+ }
404
+ }