zartui 0.1.21 → 0.1.25

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 (251) hide show
  1. package/README.md +20 -20
  2. package/changelog.generated.md +15 -0
  3. package/es/area/style/index.js +4 -0
  4. package/es/area/style/less.js +4 -0
  5. package/es/avatar/index.css +1 -1
  6. package/es/avatar/index.js +54 -36
  7. package/es/avatar/index.less +39 -11
  8. package/es/avatar/local.less +1 -1
  9. package/es/button/index.js +4 -1
  10. package/es/button/index.less +206 -206
  11. package/es/calendar/index.less +250 -250
  12. package/es/calendar/style/index.js +1 -1
  13. package/es/calendar/style/less.js +1 -1
  14. package/es/cell/index.less +103 -103
  15. package/es/cell-group/index.less +22 -22
  16. package/es/checkbox/index.less +89 -89
  17. package/es/checkbox-group/index.less +8 -8
  18. package/es/col/index.less +20 -20
  19. package/es/datetime-picker/style/index.js +4 -0
  20. package/es/datetime-picker/style/less.js +4 -0
  21. package/es/dialog/index.css +1 -1
  22. package/es/dialog/index.less +125 -125
  23. package/es/dialog/style/index.js +1 -1
  24. package/es/dialog/style/less.js +1 -1
  25. package/es/empty/Developing.js +1643 -0
  26. package/es/empty/Error.js +484 -0
  27. package/es/empty/NotFound.js +645 -0
  28. package/es/empty/NotRight.js +395 -0
  29. package/es/empty/Search.js +336 -0
  30. package/es/empty/index.css +1 -0
  31. package/es/empty/index.js +105 -0
  32. package/es/empty/index.less +33 -0
  33. package/es/empty/style/index.js +2 -0
  34. package/es/empty/style/less.js +2 -0
  35. package/es/field/index.less +172 -172
  36. package/es/icon/index.less +10 -10
  37. package/es/icon/local.less +1 -1
  38. package/es/image/index.less +47 -47
  39. package/es/image-preview/index.less +103 -103
  40. package/es/image-preview/style/index.js +1 -1
  41. package/es/image-preview/style/less.js +1 -1
  42. package/es/index.js +6 -3
  43. package/es/info/index.less +29 -29
  44. package/es/loading/index.less +103 -103
  45. package/es/locale/lang/zh-CN.js +22 -0
  46. package/es/mixins/bind-event.js +2 -2
  47. package/es/mixins/checkbox.js +2 -2
  48. package/es/mixins/click-outside.js +2 -2
  49. package/es/mixins/slots.js +3 -3
  50. package/es/mixins/telemetry.js +11 -0
  51. package/es/nav-bar/index.less +74 -74
  52. package/es/number-keyboard/index.css +1 -1
  53. package/es/number-keyboard/index.less +144 -142
  54. package/es/overlay/index.less +11 -11
  55. package/es/password-input/index.css +1 -0
  56. package/es/password-input/index.js +80 -0
  57. package/es/password-input/index.less +83 -0
  58. package/es/password-input/style/index.js +2 -0
  59. package/es/password-input/style/less.js +2 -0
  60. package/es/pdf-viewer/style/index.js +1 -1
  61. package/es/pdf-viewer/style/less.js +1 -1
  62. package/es/picker/PickerColumn.js +5 -6
  63. package/es/picker/index.js +34 -5
  64. package/es/picker/index.less +151 -151
  65. package/es/picker/shared.js +4 -0
  66. package/es/picker/style/index.js +4 -0
  67. package/es/picker/style/less.js +4 -0
  68. package/es/popup/index.less +137 -137
  69. package/es/popup/style/index.js +1 -1
  70. package/es/popup/style/less.js +1 -1
  71. package/es/radio/index.less +86 -86
  72. package/es/radio-group/index.less +8 -8
  73. package/es/rate/index.css +1 -1
  74. package/es/rate/index.js +1 -1
  75. package/es/rate/index.less +47 -47
  76. package/es/row/index.less +42 -42
  77. package/es/signature/index.css +1 -0
  78. package/es/signature/index.js +230 -0
  79. package/es/signature/index.less +50 -0
  80. package/es/signature/style/index.js +9 -0
  81. package/es/signature/style/less.js +9 -0
  82. package/es/slider/index.less +94 -94
  83. package/es/step/index.less +139 -139
  84. package/es/stepper/index.less +130 -130
  85. package/es/steps/index.less +21 -21
  86. package/es/sticky/index.less +11 -11
  87. package/es/style/animation.less +139 -139
  88. package/es/style/base.less +11 -11
  89. package/es/style/clearfix.less +5 -5
  90. package/es/style/ellipsis.less +13 -13
  91. package/es/style/hairline.less +47 -47
  92. package/es/style/halfPxBorder.less +15 -15
  93. package/es/style/mixins/clearfix.less +7 -7
  94. package/es/style/mixins/ellipsis.less +15 -15
  95. package/es/style/mixins/hairline.less +39 -39
  96. package/es/style/normalize.less +38 -38
  97. package/es/style/reset.less +171 -171
  98. package/es/style/var.less +941 -919
  99. package/es/swipe/index.less +56 -56
  100. package/es/swipe-cell/index.less +29 -29
  101. package/es/swipe-item/index.less +8 -8
  102. package/es/switch/index.less +56 -56
  103. package/es/switch/shared.js +2 -2
  104. package/es/switch-cell/index.less +15 -15
  105. package/es/tab/index.less +17 -17
  106. package/es/tabs/index.less +153 -153
  107. package/es/tag/index.less +99 -99
  108. package/es/telemetry/index.js +72 -0
  109. package/es/toast/index.js +1 -1
  110. package/es/toast/index.less +75 -75
  111. package/es/toast/style/index.js +1 -1
  112. package/es/toast/style/less.js +1 -1
  113. package/es/uploader/index.less +163 -163
  114. package/es/uploader/style/index.js +1 -1
  115. package/es/uploader/style/less.js +1 -1
  116. package/es/utils/create/bem.js +7 -7
  117. package/es/utils/create/component.js +37 -7
  118. package/es/utils/dom/raf.js +2 -2
  119. package/es/utils/dom/reset-scroll.js +3 -3
  120. package/es/utils/index.js +29 -29
  121. package/es/utils/media/image-util.js +138 -0
  122. package/es/utils/router.js +2 -2
  123. package/lib/7893e51cf0a4877dac80.worker.js +10 -0
  124. package/lib/area/style/index.js +4 -0
  125. package/lib/area/style/less.js +4 -0
  126. package/lib/avatar/index.css +1 -1
  127. package/lib/avatar/index.js +55 -37
  128. package/lib/avatar/index.less +39 -11
  129. package/lib/avatar/local.less +1 -1
  130. package/lib/be09b519a460e229fd8d.worker.js +2527 -0
  131. package/lib/button/index.js +5 -0
  132. package/lib/button/index.less +206 -206
  133. package/lib/calendar/index.less +250 -250
  134. package/lib/calendar/style/index.js +1 -1
  135. package/lib/calendar/style/less.js +1 -1
  136. package/lib/cell/index.less +103 -103
  137. package/lib/cell-group/index.less +22 -22
  138. package/lib/checkbox/index.less +89 -89
  139. package/lib/checkbox-group/index.less +8 -8
  140. package/lib/col/index.less +20 -20
  141. package/lib/datetime-picker/style/index.js +4 -0
  142. package/lib/datetime-picker/style/less.js +4 -0
  143. package/lib/dialog/index.css +1 -1
  144. package/lib/dialog/index.less +125 -125
  145. package/lib/dialog/style/index.js +1 -1
  146. package/lib/dialog/style/less.js +1 -1
  147. package/lib/empty/Developing.js +1648 -0
  148. package/lib/empty/Error.js +489 -0
  149. package/lib/empty/NotFound.js +650 -0
  150. package/lib/empty/NotRight.js +400 -0
  151. package/lib/empty/Search.js +341 -0
  152. package/lib/empty/index.css +1 -0
  153. package/lib/empty/index.js +119 -0
  154. package/lib/empty/index.less +33 -0
  155. package/lib/empty/style/index.js +2 -0
  156. package/lib/empty/style/less.js +2 -0
  157. package/lib/field/index.less +172 -172
  158. package/lib/icon/index.less +10 -10
  159. package/lib/icon/local.less +1 -1
  160. package/lib/image/index.less +47 -47
  161. package/lib/image-preview/index.less +103 -103
  162. package/lib/image-preview/style/index.js +1 -1
  163. package/lib/image-preview/style/less.js +1 -1
  164. package/lib/index.css +1 -1
  165. package/lib/index.js +14 -2
  166. package/lib/index.less +6 -3
  167. package/lib/info/index.less +29 -29
  168. package/lib/loading/index.less +103 -103
  169. package/lib/locale/lang/zh-CN.js +22 -0
  170. package/lib/mixins/bind-event.js +2 -2
  171. package/lib/mixins/checkbox.js +2 -2
  172. package/lib/mixins/click-outside.js +2 -2
  173. package/lib/mixins/slots.js +3 -3
  174. package/lib/mixins/telemetry.js +20 -0
  175. package/lib/nav-bar/index.less +74 -74
  176. package/lib/number-keyboard/index.css +1 -1
  177. package/lib/number-keyboard/index.less +144 -142
  178. package/lib/overlay/index.less +11 -11
  179. package/lib/password-input/index.css +1 -0
  180. package/lib/password-input/index.js +93 -0
  181. package/lib/password-input/index.less +83 -0
  182. package/lib/password-input/style/index.js +2 -0
  183. package/lib/password-input/style/less.js +2 -0
  184. package/lib/pdf-viewer/style/index.js +1 -1
  185. package/lib/pdf-viewer/style/less.js +1 -1
  186. package/lib/picker/PickerColumn.js +5 -6
  187. package/lib/picker/index.js +36 -6
  188. package/lib/picker/index.less +151 -151
  189. package/lib/picker/shared.js +4 -0
  190. package/lib/picker/style/index.js +4 -0
  191. package/lib/picker/style/less.js +4 -0
  192. package/lib/popup/index.less +137 -137
  193. package/lib/popup/style/index.js +1 -1
  194. package/lib/popup/style/less.js +1 -1
  195. package/lib/radio/index.less +86 -86
  196. package/lib/radio-group/index.less +8 -8
  197. package/lib/rate/index.css +1 -1
  198. package/lib/rate/index.js +1 -1
  199. package/lib/rate/index.less +47 -47
  200. package/lib/row/index.less +42 -42
  201. package/lib/signature/index.css +1 -0
  202. package/lib/signature/index.js +242 -0
  203. package/lib/signature/index.less +50 -0
  204. package/lib/signature/style/index.js +9 -0
  205. package/lib/signature/style/less.js +9 -0
  206. package/lib/slider/index.less +94 -94
  207. package/lib/step/index.less +139 -139
  208. package/lib/stepper/index.less +130 -130
  209. package/lib/steps/index.less +21 -21
  210. package/lib/sticky/index.less +11 -11
  211. package/lib/style/animation.less +139 -139
  212. package/lib/style/base.less +11 -11
  213. package/lib/style/clearfix.less +5 -5
  214. package/lib/style/ellipsis.less +13 -13
  215. package/lib/style/hairline.less +47 -47
  216. package/lib/style/halfPxBorder.less +15 -15
  217. package/lib/style/mixins/clearfix.less +7 -7
  218. package/lib/style/mixins/ellipsis.less +15 -15
  219. package/lib/style/mixins/hairline.less +39 -39
  220. package/lib/style/normalize.less +38 -38
  221. package/lib/style/reset.less +171 -171
  222. package/lib/style/var.less +941 -919
  223. package/lib/swipe/index.less +56 -56
  224. package/lib/swipe-cell/index.less +29 -29
  225. package/lib/swipe-item/index.less +8 -8
  226. package/lib/switch/index.less +56 -56
  227. package/lib/switch/shared.js +2 -2
  228. package/lib/switch-cell/index.less +15 -15
  229. package/lib/tab/index.less +17 -17
  230. package/lib/tabs/index.less +153 -153
  231. package/lib/tag/index.less +99 -99
  232. package/lib/telemetry/index.js +82 -0
  233. package/lib/toast/index.js +1 -1
  234. package/lib/toast/index.less +75 -75
  235. package/lib/toast/style/index.js +1 -1
  236. package/lib/toast/style/less.js +1 -1
  237. package/lib/uploader/index.less +163 -163
  238. package/lib/uploader/style/index.js +1 -1
  239. package/lib/uploader/style/less.js +1 -1
  240. package/lib/utils/create/bem.js +7 -7
  241. package/lib/utils/create/component.js +41 -7
  242. package/lib/utils/dom/raf.js +2 -2
  243. package/lib/utils/dom/reset-scroll.js +3 -3
  244. package/lib/utils/index.js +29 -29
  245. package/lib/utils/media/image-util.js +153 -0
  246. package/lib/utils/router.js +2 -2
  247. package/lib/zart.js +27476 -55536
  248. package/lib/zart.min.js +5 -5
  249. package/package.json +74 -74
  250. package/lib/a037f57fc4d92a8a1f1e.worker.js +0 -60600
  251. package/lib/b7cf90b4775181215df7.worker.js +0 -10
@@ -1,163 +1,163 @@
1
- @import '../style/var';
2
-
3
- .zt-uploader {
4
- position: relative;
5
- display: inline-block;
6
-
7
- &__wrapper {
8
- display: flex;
9
- flex-wrap: wrap;
10
-
11
- &--disabled {
12
- opacity: @uploader-disabled-opacity;
13
- }
14
- }
15
-
16
- &__input {
17
- position: absolute;
18
- top: 0;
19
- left: 0;
20
- width: 100%;
21
- height: 100%;
22
- overflow: hidden; // to clip file-upload-button
23
- cursor: pointer;
24
- opacity: 0;
25
-
26
- &-wrapper {
27
- position: relative;
28
- }
29
-
30
- &:disabled {
31
- cursor: not-allowed;
32
- }
33
- }
34
-
35
- &__upload {
36
- position: relative;
37
- display: flex;
38
- flex-direction: column;
39
- align-items: center;
40
- justify-content: center;
41
- box-sizing: border-box;
42
- width: @uploader-size;
43
- height: @uploader-size;
44
- margin: 0 @padding-xs @padding-xs 0;
45
- background-color: @uploader-upload-background-color;
46
-
47
- &:active {
48
- background-color: @uploader-upload-active-color;
49
- }
50
-
51
- &--readonly:active {
52
- background-color: @uploader-upload-background-color;
53
- }
54
-
55
- &-icon {
56
- color: @uploader-icon-color;
57
- font-size: @uploader-icon-size;
58
- }
59
-
60
- &-text {
61
- margin-top: @padding-xs;
62
- color: @uploader-text-color;
63
- font-size: @uploader-text-font-size;
64
- }
65
- }
66
-
67
- &__preview {
68
- position: relative;
69
- margin: 0 @padding-xs @padding-xs 0;
70
- cursor: pointer;
71
-
72
- &-image {
73
- display: block;
74
- width: @uploader-size;
75
- height: @uploader-size;
76
- overflow: hidden;
77
- }
78
-
79
- &-delete {
80
- position: absolute;
81
- top: 0;
82
- right: 0;
83
- width: @uploader-delete-icon-size;
84
- height: @uploader-delete-icon-size;
85
- background-color: @uploader-delete-background-color;
86
- border-radius: 0 0 0 12px;
87
-
88
- &-icon {
89
- position: absolute;
90
- top: -2px;
91
- right: -2px;
92
- color: #fff;
93
- color: @uploader-delete-color;
94
- font-size: 16px;
95
- transform: scale(0.5);
96
- }
97
- }
98
-
99
- &-cover {
100
- position: absolute;
101
- top: 0;
102
- right: 0;
103
- bottom: 0;
104
- left: 0;
105
- }
106
- }
107
-
108
- &__mask {
109
- position: absolute;
110
- top: 0;
111
- right: 0;
112
- bottom: 0;
113
- left: 0;
114
- display: flex;
115
- flex-direction: column;
116
- align-items: center;
117
- justify-content: center;
118
- color: @white;
119
- background-color: @uploader-mask-background-color;
120
-
121
- &-icon {
122
- font-size: @uploader-mask-icon-size;
123
- }
124
-
125
- &-message {
126
- margin-top: 6px;
127
- padding: 0 @padding-base;
128
- font-size: @uploader-mask-message-font-size;
129
- line-height: @uploader-mask-message-line-height;
130
- }
131
- }
132
-
133
- &__loading {
134
- width: @uploader-loading-icon-size;
135
- height: @uploader-loading-icon-size;
136
- color: @uploader-loading-icon-color;
137
- }
138
-
139
- &__file {
140
- display: flex;
141
- flex-direction: column;
142
- align-items: center;
143
- justify-content: center;
144
- width: @uploader-size;
145
- height: @uploader-size;
146
- background-color: @uploader-file-background-color;
147
-
148
- &-icon {
149
- color: @uploader-file-icon-color;
150
- font-size: @uploader-file-icon-size;
151
- }
152
-
153
- &-name {
154
- box-sizing: border-box;
155
- width: 100%;
156
- margin-top: @uploader-file-name-margin-top;
157
- padding: @uploader-file-name-padding;
158
- color: @uploader-file-name-text-color;
159
- font-size: @uploader-file-name-font-size;
160
- text-align: center;
161
- }
162
- }
163
- }
1
+ @import '../style/var';
2
+
3
+ .zt-uploader {
4
+ position: relative;
5
+ display: inline-block;
6
+
7
+ &__wrapper {
8
+ display: flex;
9
+ flex-wrap: wrap;
10
+
11
+ &--disabled {
12
+ opacity: @uploader-disabled-opacity;
13
+ }
14
+ }
15
+
16
+ &__input {
17
+ position: absolute;
18
+ top: 0;
19
+ left: 0;
20
+ width: 100%;
21
+ height: 100%;
22
+ overflow: hidden; // to clip file-upload-button
23
+ cursor: pointer;
24
+ opacity: 0;
25
+
26
+ &-wrapper {
27
+ position: relative;
28
+ }
29
+
30
+ &:disabled {
31
+ cursor: not-allowed;
32
+ }
33
+ }
34
+
35
+ &__upload {
36
+ position: relative;
37
+ display: flex;
38
+ flex-direction: column;
39
+ align-items: center;
40
+ justify-content: center;
41
+ box-sizing: border-box;
42
+ width: @uploader-size;
43
+ height: @uploader-size;
44
+ margin: 0 @padding-xs @padding-xs 0;
45
+ background-color: @uploader-upload-background-color;
46
+
47
+ &:active {
48
+ background-color: @uploader-upload-active-color;
49
+ }
50
+
51
+ &--readonly:active {
52
+ background-color: @uploader-upload-background-color;
53
+ }
54
+
55
+ &-icon {
56
+ color: @uploader-icon-color;
57
+ font-size: @uploader-icon-size;
58
+ }
59
+
60
+ &-text {
61
+ margin-top: @padding-xs;
62
+ color: @uploader-text-color;
63
+ font-size: @uploader-text-font-size;
64
+ }
65
+ }
66
+
67
+ &__preview {
68
+ position: relative;
69
+ margin: 0 @padding-xs @padding-xs 0;
70
+ cursor: pointer;
71
+
72
+ &-image {
73
+ display: block;
74
+ width: @uploader-size;
75
+ height: @uploader-size;
76
+ overflow: hidden;
77
+ }
78
+
79
+ &-delete {
80
+ position: absolute;
81
+ top: 0;
82
+ right: 0;
83
+ width: @uploader-delete-icon-size;
84
+ height: @uploader-delete-icon-size;
85
+ background-color: @uploader-delete-background-color;
86
+ border-radius: 0 0 0 12px;
87
+
88
+ &-icon {
89
+ position: absolute;
90
+ top: -2px;
91
+ right: -2px;
92
+ color: #fff;
93
+ color: @uploader-delete-color;
94
+ font-size: 16px;
95
+ transform: scale(0.5);
96
+ }
97
+ }
98
+
99
+ &-cover {
100
+ position: absolute;
101
+ top: 0;
102
+ right: 0;
103
+ bottom: 0;
104
+ left: 0;
105
+ }
106
+ }
107
+
108
+ &__mask {
109
+ position: absolute;
110
+ top: 0;
111
+ right: 0;
112
+ bottom: 0;
113
+ left: 0;
114
+ display: flex;
115
+ flex-direction: column;
116
+ align-items: center;
117
+ justify-content: center;
118
+ color: @white;
119
+ background-color: @uploader-mask-background-color;
120
+
121
+ &-icon {
122
+ font-size: @uploader-mask-icon-size;
123
+ }
124
+
125
+ &-message {
126
+ margin-top: 6px;
127
+ padding: 0 @padding-base;
128
+ font-size: @uploader-mask-message-font-size;
129
+ line-height: @uploader-mask-message-line-height;
130
+ }
131
+ }
132
+
133
+ &__loading {
134
+ width: @uploader-loading-icon-size;
135
+ height: @uploader-loading-icon-size;
136
+ color: @uploader-loading-icon-color;
137
+ }
138
+
139
+ &__file {
140
+ display: flex;
141
+ flex-direction: column;
142
+ align-items: center;
143
+ justify-content: center;
144
+ width: @uploader-size;
145
+ height: @uploader-size;
146
+ background-color: @uploader-file-background-color;
147
+
148
+ &-icon {
149
+ color: @uploader-file-icon-color;
150
+ font-size: @uploader-file-icon-size;
151
+ }
152
+
153
+ &-name {
154
+ box-sizing: border-box;
155
+ width: 100%;
156
+ margin-top: @uploader-file-name-margin-top;
157
+ padding: @uploader-file-name-padding;
158
+ color: @uploader-file-name-text-color;
159
+ font-size: @uploader-file-name-font-size;
160
+ text-align: center;
161
+ }
162
+ }
163
+ }
@@ -1,9 +1,9 @@
1
1
  import '../../style/base.css';
2
2
  import '../../loading/index.css';
3
+ import '../../overlay/index.css';
3
4
  import '../../info/index.css';
4
5
  import '../../icon/index.css';
5
6
  import '../../image/index.css';
6
- import '../../overlay/index.css';
7
7
  import '../../popup/index.css';
8
8
  import '../../swipe/index.css';
9
9
  import '../../swipe-item/index.css';
@@ -1,9 +1,9 @@
1
1
  import '../../style/base.less';
2
2
  import '../../loading/index.less';
3
+ import '../../overlay/index.less';
3
4
  import '../../info/index.less';
4
5
  import '../../icon/index.less';
5
6
  import '../../image/index.less';
6
- import '../../overlay/index.less';
7
7
  import '../../popup/index.less';
8
8
  import '../../swipe/index.less';
9
9
  import '../../swipe-item/index.less';
@@ -1,10 +1,10 @@
1
- /**
2
- * bem helper
3
- * b() // 'button'
4
- * b('text') // 'button__text'
5
- * b({ disabled }) // 'button button--disabled'
6
- * b('text', { disabled }) // 'button__text button__text--disabled'
7
- * b(['disabled', 'primary']) // 'button button--disabled button--primary'
1
+ /**
2
+ * bem helper
3
+ * b() // 'button'
4
+ * b('text') // 'button__text'
5
+ * b({ disabled }) // 'button button--disabled'
6
+ * b('text', { disabled }) // 'button__text button__text--disabled'
7
+ * b(['disabled', 'primary']) // 'button button--disabled button--primary'
8
8
  */
9
9
  function gen(name, mods) {
10
10
  if (!mods) {
@@ -1,11 +1,13 @@
1
- /**
2
- * Create a basic component with common options
1
+ /**
2
+ * Create a basic component with common options
3
3
  */
4
4
  import '../../locale';
5
5
  import { isFunction } from '..';
6
6
  import { camelize } from '../format/string';
7
7
  import { SlotsMixin } from '../../mixins/slots';
8
+ import { TelemetryMixin } from "../../mixins/telemetry";
8
9
  import Vue from 'vue';
10
+ import { Telemetry, TelemetryEvent } from "../../telemetry";
9
11
 
10
12
  function install(Vue) {
11
13
  var name = this.name;
@@ -28,26 +30,54 @@ export function unifySlots(context) {
28
30
  return scopedSlots;
29
31
  } // should be removed after Vue 3
30
32
 
31
- function transformFunctionComponent(pure) {
33
+ function transformFunctionComponent(pure, name) {
34
+ var onAfterEnter = function onAfterEnter() {
35
+ var event = new TelemetryEvent(name);
36
+ Telemetry.sharedInstance.trackAppear(event);
37
+ };
38
+
39
+ var onBeforeLeave = function onBeforeLeave() {
40
+ var event = new TelemetryEvent(name);
41
+ Telemetry.sharedInstance.trackDisappear(event);
42
+ };
43
+ /**
44
+ * 使用transition 模拟 functional template的 mounted 和 unmounted
45
+ * @param h
46
+ * @param context
47
+ * @see {@link https://dev.to/denisinvader/mounted-and-beforedestroy-hooks-in-vuejs-functional-components-7bi|Mounted and BeforeDestroy Hooks in Vue.js functional components.}
48
+ */
49
+
50
+
51
+ var render = function render(h, context) {
52
+ return h("transition", {
53
+ "attrs": {
54
+ "appear": true
55
+ },
56
+ "on": {
57
+ "afterEnter": onAfterEnter,
58
+ "beforeLeave": onBeforeLeave
59
+ }
60
+ }, [pure(h, context.props, unifySlots(context), context)]);
61
+ };
62
+
32
63
  return {
33
64
  functional: true,
34
65
  props: pure.props,
35
66
  model: pure.model,
36
- render: function render(h, context) {
37
- return pure(h, context.props, unifySlots(context), context);
38
- }
67
+ render: render
39
68
  };
40
69
  }
41
70
 
42
71
  export function createComponent(name) {
43
72
  return function (sfc) {
44
73
  if (isFunction(sfc)) {
45
- sfc = transformFunctionComponent(sfc);
74
+ sfc = transformFunctionComponent(sfc, name);
46
75
  }
47
76
 
48
77
  if (!sfc.functional) {
49
78
  sfc.mixins = sfc.mixins || [];
50
79
  sfc.mixins.push(SlotsMixin);
80
+ sfc.mixins.push(TelemetryMixin);
51
81
  }
52
82
 
53
83
  sfc.name = name;
@@ -1,5 +1,5 @@
1
- /**
2
- * requestAnimationFrame polyfill
1
+ /**
2
+ * requestAnimationFrame polyfill
3
3
  */
4
4
  import { isServer } from '..';
5
5
  var prev = Date.now();
@@ -1,6 +1,6 @@
1
- /**
2
- * Hack for iOS12 page scroll
3
- * https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800
1
+ /**
2
+ * Hack for iOS12 page scroll
3
+ * https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800
4
4
  */
5
5
  import { isIOS as checkIsIOS } from '../validate/system';
6
6
  import { getRootScrollTop, setRootScrollTop } from './scroll';
package/es/utils/index.js CHANGED
@@ -27,35 +27,35 @@ export function get(object, path) {
27
27
  });
28
28
  return result;
29
29
  }
30
- /**
31
- * Checks if `value` is an empty object, collection, map, or set.
32
- *
33
- * Objects are considered empty if they have no own enumerable string keyed
34
- * properties.
35
- *
36
- * Array-like values such as `arguments` objects, arrays, buffers, strings, or
37
- * jQuery-like collections are considered empty if they have a `length` of `0`.
38
- * Similarly, maps and sets are considered empty if they have a `size` of `0`.
39
- *
40
- * @function isEmpty
41
- * @param {*} value The value to check.
42
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
43
- * @example
44
- *
45
- * _.isEmpty(null);
46
- * // => true
47
- *
48
- * _.isEmpty(true);
49
- * // => true
50
- *
51
- * _.isEmpty(1);
52
- * // => true
53
- *
54
- * _.isEmpty([1, 2, 3]);
55
- * // => false
56
- *
57
- * _.isEmpty({ 'a': 1 });
58
- * // => false
30
+ /**
31
+ * Checks if `value` is an empty object, collection, map, or set.
32
+ *
33
+ * Objects are considered empty if they have no own enumerable string keyed
34
+ * properties.
35
+ *
36
+ * Array-like values such as `arguments` objects, arrays, buffers, strings, or
37
+ * jQuery-like collections are considered empty if they have a `length` of `0`.
38
+ * Similarly, maps and sets are considered empty if they have a `size` of `0`.
39
+ *
40
+ * @function isEmpty
41
+ * @param {*} value The value to check.
42
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
43
+ * @example
44
+ *
45
+ * _.isEmpty(null);
46
+ * // => true
47
+ *
48
+ * _.isEmpty(true);
49
+ * // => true
50
+ *
51
+ * _.isEmpty(1);
52
+ * // => true
53
+ *
54
+ * _.isEmpty([1, 2, 3]);
55
+ * // => false
56
+ *
57
+ * _.isEmpty({ 'a': 1 });
58
+ * // => false
59
59
  */
60
60
 
61
61
  export function isEmpty(value) {
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Convert File to data schema url
3
+ * @param file
4
+ */
5
+ export function file2DataURL(file) {
6
+ return new Promise(function (resolve, reject) {
7
+ var a = new FileReader();
8
+
9
+ a.onload = function (res) {
10
+ if (res && res.target) {
11
+ resolve(res.target.result);
12
+ } else {
13
+ reject(new Error('读取文件url失败'));
14
+ }
15
+ };
16
+
17
+ a.readAsDataURL(file);
18
+ });
19
+ }
20
+ /**
21
+ * Convert file to image
22
+ * @param file
23
+ */
24
+
25
+ export function file2Image(file) {
26
+ return new Promise(function (resolve, reject) {
27
+ file2DataURL(file).then(function (url) {
28
+ var img = new Image();
29
+ img.src = url;
30
+
31
+ img.onload = function (e) {
32
+ if (img.complete) {
33
+ resolve(img);
34
+ } else {
35
+ reject(new Error('文件加载失败'));
36
+ }
37
+ };
38
+ }).catch(reject);
39
+ });
40
+ }
41
+ export function image2file(img, fileName, lastModified, type, quality) {
42
+ if (type === void 0) {
43
+ type = "image/jpeg";
44
+ }
45
+
46
+ if (quality === void 0) {
47
+ quality = 0.8;
48
+ }
49
+
50
+ return image2Canvas(img).then(function (canvas) {
51
+ return canvas2File(canvas, fileName, lastModified, type, quality);
52
+ });
53
+ }
54
+ /**
55
+ * Draw image on canvas
56
+ * @param img
57
+ * @param width
58
+ * @param height
59
+ */
60
+
61
+ export function image2Canvas(img, width, height) {
62
+ var canvas = document.createElement('canvas');
63
+
64
+ if (!width) {
65
+ width = img.width;
66
+ }
67
+
68
+ if (!height) {
69
+ height = img.height;
70
+ }
71
+
72
+ canvas.width = width;
73
+ canvas.height = height;
74
+ var ctx = canvas.getContext('2d');
75
+
76
+ if (ctx) {
77
+ ctx.drawImage(img, 0, 0, width, height);
78
+ return Promise.resolve(canvas);
79
+ } else {
80
+ return Promise.reject(null);
81
+ }
82
+ }
83
+ /**
84
+ * Export Image from canvas
85
+ * @param canvas
86
+ * @param type
87
+ * @param quality
88
+ * @see {@link https://meshworld.in/convert-canvas-to-an-image-using-javascript/}
89
+ */
90
+
91
+ export function canvas2Image(canvas, type, quality) {
92
+ if (type === void 0) {
93
+ type = "image/jpeg";
94
+ }
95
+
96
+ if (quality === void 0) {
97
+ quality = 0.8;
98
+ }
99
+
100
+ var image = new Image();
101
+ image.src = canvas.toDataURL(type, quality);
102
+ return Promise.resolve(image);
103
+ }
104
+ /**
105
+ * Export File from canvas
106
+ * @param canvas
107
+ * @param fileName
108
+ * @param lastModified
109
+ * @param type
110
+ * @param quality
111
+ * @see {@link https://meshworld.in/convert-canvas-to-an-image-using-javascript/}
112
+ */
113
+
114
+ export function canvas2File(canvas, fileName, lastModified, type, quality) {
115
+ if (type === void 0) {
116
+ type = "image/jpeg";
117
+ }
118
+
119
+ if (quality === void 0) {
120
+ quality = 0.8;
121
+ }
122
+
123
+ return new Promise(function (resolve, reject) {
124
+ canvas.toBlob(function (blob) {
125
+ if (!blob) {
126
+ reject(new Error('canvas文件导出失败'));
127
+ } else {
128
+ var file = new File([blob], fileName, {
129
+ lastModified: lastModified,
130
+ type: type
131
+ }); // console.log("file size " + file.size / 1024 + "kb");
132
+ // console.log(file)
133
+
134
+ resolve(file);
135
+ }
136
+ }, type, quality);
137
+ });
138
+ }
@@ -1,5 +1,5 @@
1
- /**
2
- * Vue Router support
1
+ /**
2
+ * Vue Router support
3
3
  */
4
4
  function isRedundantNavigation(err) {
5
5
  return err.name === 'NavigationDuplicated' || err.message && err.message.indexOf('redundant navigation') !== -1;