vue-editify 0.1.9 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. package/examples/App.vue +22 -5644
  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 +5547 -5667
  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.js → function.ts} +268 -267
  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/index.js +0 -24
  112. package/src/locale/index.js +0 -14
@@ -0,0 +1,141 @@
1
+ import { common as DapCommon } from 'dap-util'
2
+ import { ExtractPublicPropTypes, PropType } from 'vue'
3
+ import { MenuConfigType, ObjectType, ToolbarConfigType } from '../core/tool'
4
+ import { AlexElement } from 'alex-editor'
5
+ import { LocaleType } from '../locale'
6
+
7
+ export type EditifyTableColumnResizeParamsType = {
8
+ element: AlexElement | null
9
+ start: number
10
+ }
11
+
12
+ export type EditifyToolbarOptionsType = {
13
+ show: boolean
14
+ node: string | null
15
+ type: 'text' | 'link' | 'image' | 'video' | 'table' | 'codeBlock'
16
+ }
17
+
18
+ export const EditifyProps = {
19
+ //国际化语言类型
20
+ locale: {
21
+ type: String as PropType<LocaleType>,
22
+ default: 'zh_CN'
23
+ },
24
+ //编辑器内容
25
+ modelValue: {
26
+ type: String,
27
+ default: '<p><br></p>'
28
+ },
29
+ //占位符
30
+ placeholder: {
31
+ type: String,
32
+ default: ''
33
+ },
34
+ //是否自动获取焦点
35
+ autofocus: {
36
+ type: Boolean,
37
+ default: false
38
+ },
39
+ //是否禁用编辑器
40
+ disabled: {
41
+ type: Boolean,
42
+ default: false
43
+ },
44
+ //是否允许复制
45
+ allowCopy: {
46
+ type: Boolean,
47
+ default: true
48
+ },
49
+ //是否允许粘贴
50
+ allowPaste: {
51
+ type: Boolean,
52
+ default: true
53
+ },
54
+ //是否允许剪切
55
+ allowCut: {
56
+ type: Boolean,
57
+ default: true
58
+ },
59
+ //是否允许粘贴html
60
+ allowPasteHtml: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ //是否显示边框
65
+ border: {
66
+ type: Boolean,
67
+ default: false
68
+ },
69
+ //主题色
70
+ color: {
71
+ type: String,
72
+ default: '#03a8f3',
73
+ validator(value: any) {
74
+ return DapCommon.matchingText(value, 'hex')
75
+ }
76
+ },
77
+ //视频宽高比
78
+ videoRatio: {
79
+ type: Number,
80
+ default: 16 / 9
81
+ },
82
+ //工具条按钮设置
83
+ toolbar: {
84
+ type: Object as PropType<ToolbarConfigType>,
85
+ default: null
86
+ },
87
+ //是否显示字数统计
88
+ showWordLength: {
89
+ type: Boolean,
90
+ default: false
91
+ },
92
+ //自定义粘贴图片
93
+ customImagePaste: {
94
+ type: Function as PropType<(url: string) => string | Promise<string>>,
95
+ default: null
96
+ },
97
+ //自定义粘贴视频
98
+ customVideoPaste: {
99
+ type: Function as PropType<(url: string) => string | Promise<string>>,
100
+ default: null
101
+ },
102
+ //菜单栏配置
103
+ menu: {
104
+ type: Object as PropType<MenuConfigType>,
105
+ default: null
106
+ },
107
+ //粘贴html时额外保留的标记(全部元素生效)
108
+ pasteKeepMarks: {
109
+ type: Object as PropType<ObjectType>,
110
+ default: null
111
+ },
112
+ //粘贴html时额外保留的样式(仅在非文本元素生效)
113
+ pasteKeepStyles: {
114
+ type: Object as PropType<ObjectType>,
115
+ default: null
116
+ },
117
+ //自定义node转元素时的处理
118
+ customParseNode: {
119
+ type: Function as PropType<(el: AlexElement) => AlexElement>,
120
+ default: null
121
+ },
122
+ //自定义额外的渲染规范
123
+ renderRules: {
124
+ type: Array as PropType<((el: AlexElement) => void)[]>,
125
+ default: function () {
126
+ return []
127
+ }
128
+ },
129
+ //自适应高度
130
+ autoheight: {
131
+ type: Boolean,
132
+ default: false
133
+ },
134
+ //是否使用tab快捷键
135
+ tab: {
136
+ type: Boolean,
137
+ default: true
138
+ }
139
+ }
140
+
141
+ export type EditifyPropsType = ExtractPublicPropTypes<typeof EditifyProps>
@@ -69,8 +69,13 @@ hljs.configure({
69
69
  ignoreUnescapedHTML: true
70
70
  })
71
71
 
72
+ export type LanguagesItemType = {
73
+ label?: string
74
+ value?: string
75
+ }
76
+
72
77
  //获取经过hljs处理的html元素
73
- const getHljsHtml = function (code, language) {
78
+ export const getHljsHtml = function (code: string, language: string) {
74
79
  if (language) {
75
80
  return hljs.highlight(code, {
76
81
  language: language,
@@ -80,7 +85,7 @@ const getHljsHtml = function (code, language) {
80
85
  return hljs.highlightAuto(code).value
81
86
  }
82
87
  //可选择语言列表
83
- const languages = [
88
+ export const languages: LanguagesItemType[] = [
84
89
  {
85
90
  label: 'Plain Text',
86
91
  value: 'plaintext'
@@ -190,5 +195,3 @@ const languages = [
190
195
  value: 'rust'
191
196
  }
192
197
  ]
193
-
194
- export { getHljsHtml, languages }
package/src/index.ts ADDED
@@ -0,0 +1,32 @@
1
+ //引入AlexElement
2
+ import { AlexElement } from 'alex-editor'
3
+ //引入组件
4
+ import Editify from './editify/editify.vue'
5
+ //引入图标样式
6
+ import './icon/iconfont.css'
7
+
8
+ import { App } from 'vue'
9
+ import { ButtonTypeType, ButtonOptionsItemType, ButtonSelectConfigType, ButtonDisplayConfigType } from './components/button/props'
10
+ import { MenuButtonType, MenuSelectButtonType, MenuDisplayButtonType, MenuImageButtonType, MenuVideoButtonType, MenuTableButtonType, MenuCustomButtonType, CodeBlockToolbarType, TextToolbarType, ToolbarConfigType, MenuSequenceType, MenuModeType, MenuConfigType } from './core/tool'
11
+ import { InsertImageUploadErrorType } from './components/insertImage/props'
12
+ import { InsertVideoUploadErrorType } from './components/insertVideo/props'
13
+
14
+ //版本号
15
+ const version = '0.1.12'
16
+ //安装函数
17
+ const install = (app: App) => {
18
+ app.component(Editify.name!, Editify)
19
+ }
20
+ //全局导出的对象
21
+ const stdin_default = {
22
+ install,
23
+ version
24
+ }
25
+
26
+ //导出一些编辑器操作方法
27
+ export * from './core/function'
28
+
29
+ //导出类型
30
+ export type { ButtonTypeType, ButtonOptionsItemType, ButtonSelectConfigType, ButtonDisplayConfigType, MenuButtonType, MenuSelectButtonType, MenuDisplayButtonType, MenuImageButtonType, MenuVideoButtonType, MenuTableButtonType, MenuCustomButtonType, CodeBlockToolbarType, TextToolbarType, ToolbarConfigType, MenuSequenceType, MenuModeType, MenuConfigType, InsertImageUploadErrorType, InsertVideoUploadErrorType }
31
+
32
+ export { stdin_default as default, install, version, Editify, AlexElement }
@@ -1,4 +1,6 @@
1
- export default {
1
+ import { ObjectType } from '../core/tool'
2
+
3
+ export const en_US: ObjectType = {
2
4
  textWrapUp: 'Up feed',
3
5
  textWrapDown: 'Down feed',
4
6
  insertRowTop: 'Insert row forward',
@@ -0,0 +1,12 @@
1
+ import { en_US } from './en_US'
2
+ import { zh_CN } from './zh_CN'
3
+
4
+ //语言类型
5
+ export type LocaleType = 'zh_CN' | 'en_US'
6
+
7
+ //翻译方法
8
+ export const trans = (locale: LocaleType) => {
9
+ return (key: string) => {
10
+ return { zh_CN, en_US }[locale][key]
11
+ }
12
+ }
@@ -1,4 +1,6 @@
1
- export default {
1
+ import { ObjectType } from '../core/tool'
2
+
3
+ export const zh_CN: ObjectType = {
2
4
  textWrapUp: '向上换行',
3
5
  textWrapDown: '向下换行',
4
6
  insertRowTop: '向前插入行',
package/tsconfig.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "module": "ESNext",
6
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
7
+ "skipLibCheck": true,
8
+ "allowSyntheticDefaultImports": true,
9
+ "types": ["node"],
10
+
11
+ /* Bundler mode */
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "resolveJsonModule": true,
15
+ "isolatedModules": true,
16
+ "noEmit": true,
17
+ "jsx": "preserve",
18
+
19
+ /* Linting */
20
+ "strict": true,
21
+ "noUnusedLocals": true,
22
+ "noUnusedParameters": true,
23
+ "noFallthroughCasesInSwitch": true
24
+ },
25
+ "include": ["src/**/*.ts", "src/**/*.vue", "vite-env.d.ts"],
26
+ "references": [{ "path": "./tsconfig.node.json" }]
27
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "skipLibCheck": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowSyntheticDefaultImports": true,
8
+ "strict": true
9
+ },
10
+ "include": ["vite.config.ts"]
11
+ }
package/vite-env.d.ts ADDED
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
package/vite.config.ts ADDED
@@ -0,0 +1,39 @@
1
+ import { defineConfig } from 'vite'
2
+ import vue from '@vitejs/plugin-vue'
3
+ import dts from 'vite-plugin-dts'
4
+ import path from 'path'
5
+
6
+ export default defineConfig({
7
+ plugins: [vue(), dts()],
8
+ build: {
9
+ //打包后的目录名称
10
+ outDir: 'lib',
11
+ minify: 'terser',
12
+ lib: {
13
+ entry: path.resolve(__dirname, 'src/index.ts'),
14
+ name: 'editify',
15
+ fileName: format => `editify.${format}.js`
16
+ },
17
+ rollupOptions: {
18
+ // 确保外部化处理那些你不想打包进库的依赖
19
+ external: ['vue'],
20
+ output: {
21
+ // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
22
+ globals: {
23
+ vue: 'Vue'
24
+ },
25
+ exports: 'named'
26
+ }
27
+ },
28
+ sourcemap: false //是否构建source map 文件
29
+ },
30
+ css: {
31
+ preprocessorOptions: {
32
+ less: {
33
+ // 使用 less 编写样式的 UI 库(如 antd)时建议加入这个设置
34
+ javascriptEnabled: true,
35
+ additionalData: `@import "src/css/base.less";`
36
+ }
37
+ }
38
+ }
39
+ })
package/examples/main.js DELETED
@@ -1,4 +0,0 @@
1
- import { createApp } from 'vue'
2
- import App from './App.vue'
3
- import Editify from '../src'
4
- createApp(App).use(Editify, { locale: 'zh_CN' }).mount('#app')