@dolphinweex/weex-harmony 0.1.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 (48) hide show
  1. package/README.md +13 -0
  2. package/index.js +2 -0
  3. package/package.json +37 -0
  4. package/src/components/baseSameLayer.vue +101 -0
  5. package/src/components/drag-vertical-list-view.vue +86 -0
  6. package/src/components/hl-button-base.vue +66 -0
  7. package/src/components/hl-button.vue +115 -0
  8. package/src/components/hl-image-base.vue +53 -0
  9. package/src/components/hl-image.vue +151 -0
  10. package/src/components/hl-lottie-base.vue +151 -0
  11. package/src/components/hl-lottie.vue +214 -0
  12. package/src/components/hl-richtext-base.vue +40 -0
  13. package/src/components/hl-richtext.vue +118 -0
  14. package/src/components/hl-slider-base.vue +75 -0
  15. package/src/components/hl-slider.vue +126 -0
  16. package/src/components/hl-textarea-base.vue +40 -0
  17. package/src/components/hl-textarea.vue +118 -0
  18. package/src/components/hl-video-base.vue +65 -0
  19. package/src/components/hl-video.vue +148 -0
  20. package/src/components/hl-web-base.vue +85 -0
  21. package/src/components/mdiea-arc-slider.vue +75 -0
  22. package/src/components/midea-apng-view-base.vue +111 -0
  23. package/src/components/midea-barchart-view.vue +56 -0
  24. package/src/components/midea-blur-view.vue +57 -0
  25. package/src/components/midea-calendar-pave.vue +64 -0
  26. package/src/components/midea-camera-view.vue +91 -0
  27. package/src/components/midea-circle-progress.vue +56 -0
  28. package/src/components/midea-combinechart-view.vue +56 -0
  29. package/src/components/midea-common-weex-view.vue +55 -0
  30. package/src/components/midea-drag-list-view.vue +89 -0
  31. package/src/components/midea-drag-slider-base.vue +66 -0
  32. package/src/components/midea-dragging-linechart-view.vue +56 -0
  33. package/src/components/midea-gesture-password-base.vue +63 -0
  34. package/src/components/midea-ijkplayer-view.vue +93 -0
  35. package/src/components/midea-linechart-view.vue +56 -0
  36. package/src/components/midea-lottie-view.vue +69 -0
  37. package/src/components/midea-map-view.vue +74 -0
  38. package/src/components/midea-pdf-view-base.vue +75 -0
  39. package/src/components/midea-picker.vue +58 -0
  40. package/src/components/midea-piechart-view.vue +56 -0
  41. package/src/components/midea-progresscycle-view.vue +56 -0
  42. package/src/components/midea-seek-bar-base.vue +136 -0
  43. package/src/components/midea-time-pave.vue +58 -0
  44. package/src/components/midea-video.vue +91 -0
  45. package/src/components/midea-vslider-bar-base.vue +89 -0
  46. package/src/components/pick-pallet.vue +66 -0
  47. package/src/index.js +180 -0
  48. package/src/transform-loader.js +249 -0
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <BaseSameLayer
3
+ ref="base"
4
+ :hosSameLayerArgs="hosSameLayerArgs"
5
+ embedType="native/lottie"
6
+ :defaultWidth="300"
7
+ :defaultHeight="120"
8
+ ></BaseSameLayer>
9
+ </template>
10
+
11
+ <script>
12
+ import BaseSameLayer from "./baseSameLayer.vue";
13
+ const weexModule = weex.requireModule("weexModule");
14
+
15
+ export default {
16
+ name: "HlLottie",
17
+ components: {
18
+ BaseSameLayer,
19
+ },
20
+ props: {
21
+ hosUniqueProps: {
22
+ type: Object,
23
+ required: true,
24
+ },
25
+ sourceJson: {
26
+ type: String,
27
+ required: false,
28
+ },
29
+ sourceUrl: {
30
+ type: String,
31
+ required: false,
32
+ },
33
+ loop: {
34
+ type: [Boolean, Number],
35
+ required: false,
36
+ },
37
+ speed: {
38
+ type: Number,
39
+ required: false,
40
+ },
41
+ autoplay: {
42
+ type: Boolean,
43
+ required: false,
44
+ },
45
+ },
46
+
47
+ computed: {
48
+ hosSameLayerArgs() {
49
+ return {
50
+ ...this.hosUniqueProps, // 鸿蒙原生组件独有属性
51
+ sourceJson: this.sourceJson,
52
+ sourceUrl: this.sourceUrl,
53
+ loop: this.loop,
54
+ speed: this.speed,
55
+ autoplay: this.autoplay,
56
+ onEnterFrame: this.handleEnterFrame,
57
+ onCreateFinish: this.handleCreateFinish,
58
+ onLoopComplete: this.handleLoopComplete,
59
+ onComplete: this.handleComplete,
60
+ };
61
+ },
62
+ },
63
+
64
+ methods: {
65
+ play(callback) {
66
+ weexModule.callNative('lottieHandle', {
67
+ method: 'play',
68
+ name: this.$refs.base.embedId,
69
+ }, callback)
70
+ },
71
+
72
+ pause() {
73
+ weexModule.callNative('lottieHandle', {
74
+ method: 'pause',
75
+ name: this.$refs.base.embedId,
76
+ })
77
+ },
78
+
79
+ stop() {
80
+ weexModule.callNative('lottieHandle', {
81
+ method: 'stop',
82
+ name: this.$refs.base.embedId,
83
+ })
84
+ },
85
+
86
+ togglePause() {
87
+ weexModule.callNative('lottieHandle', {
88
+ method: 'togglePause',
89
+ name: this.$refs.base.embedId,
90
+ })
91
+ },
92
+
93
+ setSpeed(speed) {
94
+ weexModule.callNative('lottieHandle', {
95
+ method: 'setSpeed',
96
+ name: this.$refs.base.embedId,
97
+ speed,
98
+ })
99
+ },
100
+
101
+ setDirection(dir) {
102
+ weexModule.callNative('lottieHandle', {
103
+ method: 'setDirection',
104
+ name: this.$refs.base.embedId,
105
+ dir,
106
+ })
107
+ },
108
+
109
+ playFromProgress(from, to, callback) {
110
+ weexModule.callNative('lottieHandle', {
111
+ method: 'playFromProgress',
112
+ name: this.$refs.base.embedId,
113
+ from, to,
114
+ }, callback)
115
+ },
116
+
117
+ isAnimationPlaying(callback) {
118
+ weexModule.callNative('lottieHandle', {
119
+ method: 'isAnimationPlaying',
120
+ name: this.$refs.base.embedId,
121
+ }, callback)
122
+ },
123
+
124
+ handleCreateFinish() {
125
+ this.$emit("createFinish");
126
+ },
127
+
128
+ handleEnterFrame() {
129
+ this.$emit("onEnterFrame");
130
+ },
131
+
132
+ handleLoopComplete() {
133
+ this.$emit("onLoopComplete");
134
+ },
135
+
136
+ handleComplete() {
137
+ this.$emit("onComplete");
138
+ },
139
+ },
140
+ watch: {
141
+ speed(newSpeed, oldSpeed) {
142
+ if (newSpeed !== oldSpeed) {
143
+ this.setSpeed(newSpeed);
144
+ }
145
+ },
146
+ },
147
+ };
148
+ </script>
149
+
150
+ <style scoped>
151
+ </style>
@@ -0,0 +1,214 @@
1
+ <template>
2
+ <div>
3
+ <embed
4
+ :id="embedId"
5
+ type="native/lottie"
6
+ :width="width"
7
+ :height="height"
8
+ />
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ const weexModule = weex.requireModule('weexModule');
14
+
15
+ export default {
16
+ name: "HlLottieTest",
17
+ props: {
18
+ width: {
19
+ type: [Number, String],
20
+ required: true,
21
+ },
22
+ height: {
23
+ type: [Number, String],
24
+ required: true,
25
+ },
26
+ sourceJson: {
27
+ type: String,
28
+ required: false,
29
+ },
30
+ sourceUrl: {
31
+ type: String,
32
+ required: false,
33
+ },
34
+ loop: {
35
+ type: [Boolean, Number],
36
+ required: false,
37
+ },
38
+ speed: {
39
+ type: Number,
40
+ required: false,
41
+ },
42
+ autoplay: {
43
+ type: Boolean,
44
+ required: false,
45
+ },
46
+ },
47
+
48
+ data() {
49
+ return {
50
+ embedId: `lottie_${this._uid}`,
51
+ isTransferScheduled: false,
52
+ };
53
+ },
54
+ created() {
55
+ this.transferPropsAndListeners();
56
+ },
57
+ mounted() {
58
+ this.addTouchEvent();
59
+ },
60
+ beforeDestroy() {
61
+ this.removeTouchEvent();
62
+ },
63
+ methods: {
64
+ play(callback) {
65
+ weexModule.callNative('lottieHandle', {
66
+ method: 'play',
67
+ name: this.embedId,
68
+ }, callback)
69
+ },
70
+
71
+ pause() {
72
+ weexModule.callNative('lottieHandle', {
73
+ method: 'pause',
74
+ name: this.embedId,
75
+ })
76
+ },
77
+
78
+ stop() {
79
+ weexModule.callNative('lottieHandle', {
80
+ method: 'stop',
81
+ name: this.embedId,
82
+ })
83
+ },
84
+
85
+ togglePause() {
86
+ weexModule.callNative('lottieHandle', {
87
+ method: 'togglePause',
88
+ name: this.embedId,
89
+ })
90
+ },
91
+
92
+ setSpeed(speed) {
93
+ weexModule.callNative('lottieHandle', {
94
+ method: 'setSpeed',
95
+ name: this.embedId,
96
+ speed,
97
+ })
98
+ },
99
+
100
+ setDirection(dir) {
101
+ weexModule.callNative('lottieHandle', {
102
+ method: 'setDirection',
103
+ name: this.embedId,
104
+ dir,
105
+ })
106
+ },
107
+
108
+ playFromProgress(from, to, callback) {
109
+ weexModule.callNative('lottieHandle', {
110
+ method: 'playFromProgress',
111
+ name: this.embedId,
112
+ from, to,
113
+ }, callback)
114
+ },
115
+
116
+ isAnimationPlaying(callback) {
117
+ weexModule.callNative('lottieHandle', {
118
+ method: 'isAnimationPlaying',
119
+ name: this.embedId,
120
+ }, callback)
121
+ },
122
+
123
+ handleCreateFinish() {
124
+ this.$emit("createFinish");
125
+ },
126
+
127
+ handleEnterFrame() {
128
+ this.$emit("onEnterFrame");
129
+ },
130
+
131
+ handleLoopComplete() {
132
+ this.$emit("onLoopComplete");
133
+ },
134
+
135
+ handleComplete() {
136
+ this.$emit("onComplete");
137
+ },
138
+
139
+ transferPropsAndListeners() {
140
+ // 构建一个包含所需信息的对象
141
+ const args = {
142
+ componentId: this.embedId,
143
+ width: this.width,
144
+ height: this.height,
145
+ sourceJson: this.sourceJson,
146
+ sourceUrl: this.sourceUrl,
147
+ loop: this.loop,
148
+ speed: this.speed,
149
+ autoplay: this.autoplay,
150
+ onEnterFrame: this.handleEnterFrame,
151
+ onCreateFinish: this.handleCreateFinish,
152
+ onLoopComplete: this.handleLoopComplete,
153
+ onComplete: this.handleComplete,
154
+ };
155
+ // 调用JSbridge方法,传递属性和监听方法到原生组件
156
+ weexModule.callNative('transferSameLayerArgs', args)
157
+ },
158
+ addTouchEvent() {
159
+ const embedElement = document.getElementById(this.embedId);
160
+ if (embedElement) {
161
+ console.log("[weex] hl-lottie-embed addEventListener");
162
+ embedElement.addEventListener('touchstart', {});
163
+ }
164
+ },
165
+ removeTouchEvent() {
166
+ const embedElement = document.getElementById(this.embedId);
167
+ if (embedElement) {
168
+ console.log("[weex] hl-lottie-embed removeEventListener");
169
+ embedElement.removeEventListener('touchstart', {});
170
+ }
171
+ },
172
+ scheduleTransfer() {
173
+ if (!this.isTransferScheduled) {
174
+ this.isTransferScheduled = true;
175
+ this.$nextTick(() => {
176
+ this.transferPropsAndListeners();
177
+ this.isTransferScheduled = false;
178
+ });
179
+ }
180
+ },
181
+ },
182
+ watch: {
183
+ width(newWidth, oldWidth) {
184
+ if (newWidth !== oldWidth) {
185
+ this.scheduleTransfer();
186
+ }
187
+ },
188
+ height(newHeight, oldHeight) {
189
+ if (newHeight !== oldHeight) {
190
+ this.scheduleTransfer();
191
+ }
192
+ },
193
+ speed(newSpeed, oldSpeed) {
194
+ if (newSpeed !== oldSpeed) {
195
+ this.scheduleTransfer();
196
+ this.setSpeed(newSpeed)
197
+ }
198
+ },
199
+ loop(newLoop, oldLoop) {
200
+ if (newLoop !== oldLoop) {
201
+ this.scheduleTransfer();
202
+ }
203
+ },
204
+ autoplay(newAutoplay, oldAutoplay) {
205
+ if (newAutoplay !== oldAutoplay) {
206
+ this.scheduleTransfer();
207
+ }
208
+ },
209
+ },
210
+ };
211
+ </script>
212
+
213
+ <style scoped>
214
+ </style>
@@ -0,0 +1,40 @@
1
+ <template>
2
+ <BaseSameLayer
3
+ :hosSameLayerArgs="hosSameLayerArgs"
4
+ embedType="native/richtext"
5
+ :defaultWidth="300"
6
+ :defaultHeight="120"
7
+ ></BaseSameLayer>
8
+ </template>
9
+
10
+ <script>
11
+ import BaseSameLayer from "./baseSameLayer.vue";
12
+
13
+ export default {
14
+ name: "HlRichtext",
15
+ components: {
16
+ BaseSameLayer,
17
+ },
18
+ props: {
19
+ hosUniqueProps: {
20
+ type: Object,
21
+ required: true,
22
+ },
23
+ text: {
24
+ type: String,
25
+ required: true,
26
+ },
27
+ },
28
+ computed: {
29
+ hosSameLayerArgs() {
30
+ return {
31
+ ...this.hosUniqueProps, // 鸿蒙原生组件独有属性
32
+ text: this.text, // 多端支持公共属性
33
+ };
34
+ },
35
+ },
36
+ methods: {
37
+ // 自定义拓展其它逻辑
38
+ },
39
+ };
40
+ </script>
@@ -0,0 +1,118 @@
1
+ <template>
2
+ <div>
3
+ <embed
4
+ :id="embedId"
5
+ type="native/richtext"
6
+ :width="width"
7
+ :height="height"
8
+ src=""
9
+ />
10
+ </div>
11
+ </template>
12
+
13
+ <script>
14
+ const weexModule = weex.requireModule("weexModule");
15
+
16
+ export default {
17
+ name: "HlRichtextTest",
18
+ props: {
19
+ text: {
20
+ type: String,
21
+ required: true,
22
+ },
23
+ width: {
24
+ type: Number,
25
+ required: false,
26
+ default: 300,
27
+ },
28
+ height: {
29
+ type: Number,
30
+ required: false,
31
+ default: 120,
32
+ },
33
+ backgroundColor: {
34
+ type: String,
35
+ required: false,
36
+ },
37
+ },
38
+ data() {
39
+ return {
40
+ embedId: `richtext_${this._uid}`, // 使用Vue实例的唯一ID来生成embed元素的唯一ID
41
+ isTransferScheduled: false, // 添加一个标志来检查是否已经安排了transferPropsAndListeners的调用
42
+ };
43
+ },
44
+ created() {
45
+ console.log("[weex] hl-richtext created!");
46
+ this.transferPropsAndListeners(); // 组件创建时调用
47
+ },
48
+ mounted() {
49
+ this.addTouchEvent();
50
+ },
51
+ beforeDestroy() {
52
+ this.removeTouchEvent();
53
+ },
54
+ methods: {
55
+ transferPropsAndListeners() {
56
+ // 构建一个包含所需信息的对象
57
+ const args = {
58
+ componentId: this.embedId,
59
+ width: this.width,
60
+ height: this.height,
61
+ text: this.text,
62
+ backgroundColor: this.backgroundColor,
63
+ onClick: this.handleOnClick,
64
+ };
65
+ // 调用JSbridge方法,传递属性和监听方法到原生组件
66
+ weexModule.callNative("transferSameLayerArgs", args);
67
+ },
68
+ // 必须给embed元素添加touchstart事件监听,addEventListener的第二个参数监听事件对象置空即可(同层渲染事件处理需要)
69
+ addTouchEvent() {
70
+ const embedElement = document.getElementById(this.embedId);
71
+ if (embedElement) {
72
+ console.log("[weex] hl-richtext-embed addEventListener");
73
+ embedElement.addEventListener("touchstart", {});
74
+ }
75
+ },
76
+ removeTouchEvent() {
77
+ const embedElement = document.getElementById(this.embedId);
78
+ if (embedElement) {
79
+ console.log("[weex] hl-richtext-embed removeEventListener");
80
+ embedElement.removeEventListener("touchstart", {});
81
+ }
82
+ },
83
+ scheduleTransfer() {
84
+ if (!this.isTransferScheduled) {
85
+ this.isTransferScheduled = true;
86
+ this.$nextTick(() => {
87
+ this.transferPropsAndListeners();
88
+ this.isTransferScheduled = false;
89
+ });
90
+ }
91
+ },
92
+ handleOnClick(res) {
93
+ console.log("[weex] handleOnClick ", res);
94
+ this.$emit("nativeOnClick", res);
95
+ },
96
+ },
97
+ watch: {
98
+ text(newText, oldText) {
99
+ if (newText !== oldText) {
100
+ this.scheduleTransfer(); // 当text属性变化时重新调用
101
+ }
102
+ },
103
+ width(newWidth, oldWidth) {
104
+ if (newWidth !== oldWidth) {
105
+ this.scheduleTransfer(); // 当width属性变化时重新调用
106
+ }
107
+ },
108
+ height(newHeight, oldHeight) {
109
+ if (newHeight !== oldHeight) {
110
+ this.scheduleTransfer(); // 当width属性变化时重新调用
111
+ }
112
+ },
113
+ },
114
+ };
115
+ </script>
116
+
117
+ <style scoped>
118
+ </style>
@@ -0,0 +1,75 @@
1
+ <template>
2
+ <BaseSameLayer
3
+ :hosSameLayerArgs="hosSameLayerArgs"
4
+ embedType="native/slider"
5
+ :defaultWidth="300"
6
+ :defaultHeight="120"
7
+ ></BaseSameLayer>
8
+ </template>
9
+
10
+
11
+ <script>
12
+ import BaseSameLayer from "./baseSameLayer.vue";
13
+
14
+ export default {
15
+ name: "HlSlider",
16
+ components: {
17
+ BaseSameLayer,
18
+ },
19
+ props: {
20
+ hosUniqueProps:{
21
+ type: Object,
22
+ required: true,
23
+ },
24
+ value: {
25
+ type: Number,
26
+ required: true,
27
+ },
28
+ min: {
29
+ type: Number,
30
+ require: true,
31
+ },
32
+ max:{
33
+ type: Number,
34
+ required: true,
35
+ },
36
+ step: {
37
+ type: Number,
38
+ required: true,
39
+ },
40
+ },
41
+
42
+ computed: {
43
+ hosSameLayerArgs() {
44
+ return {
45
+ ...this.hosUniqueProps, // 鸿蒙原生组件独有属性
46
+ value: this.value,
47
+ min: this.min,
48
+ max: this.max,
49
+ step: this.step,
50
+ handleOnChange: this.handleOnChange,
51
+ }
52
+ }
53
+ },
54
+ created() {
55
+ console.log("[web] hl-slider created!");
56
+ },
57
+ methods: {
58
+ // 自定义拓展其它逻辑
59
+ handleOnChange(res) {
60
+ console.log("[web] handleOnChange ", res);
61
+ this.$emit("onChange", res);
62
+ },
63
+ },
64
+ watch: {
65
+ step(newStep, oldStep) {
66
+ if (newStep !== oldStep) {
67
+ this.scheduleTransfer(); // 当step属性变化时重新调用
68
+ }
69
+ }
70
+ },
71
+ };
72
+ </script>
73
+
74
+ <style scoped>
75
+ </style>
@@ -0,0 +1,126 @@
1
+ <template>
2
+ <div>
3
+ <embed
4
+ :id="embedId"
5
+ type="native/slider"
6
+ :width="width"
7
+ :height="height"
8
+ />
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ const weexModule = weex.requireModule("weexModule");
14
+
15
+ export default {
16
+ name: "HlSlider",
17
+ props: {
18
+ width: {
19
+ type: Number,
20
+ required: false,
21
+ default: 300,
22
+ },
23
+ height: {
24
+ type: Number,
25
+ required: false,
26
+ default: 120,
27
+ },
28
+ value: {
29
+ type: Number,
30
+ required: 1
31
+ },
32
+ min: {
33
+ type: Number,
34
+ require: 0
35
+ },
36
+ max:{
37
+ type: Number,
38
+ required: 100,
39
+ },
40
+ step: {
41
+ type: Number,
42
+ required: 1,
43
+ },
44
+ },
45
+ data() {
46
+ return {
47
+ embedId: `slider_${this._uid}`, // 使用Vue实例的唯一ID来生成embed元素的唯一ID
48
+ isTransferScheduled: false, // 添加一个标志来检查是否已经安排了transferPropsAndListeners的调用
49
+ };
50
+ },
51
+ destroyed() {
52
+ // TO-DO embed监听移除实现
53
+ },
54
+ created() {
55
+ console.log("[weex] hl-slider created!");
56
+ this.transferPropsAndListeners(); // 组件创建时调用
57
+ },
58
+ methods: {
59
+ transferPropsAndListeners() {
60
+ console.log("[weex] transferPropsAndListeners ", this.onChange);
61
+ // 构建一个包含所需信息的对象
62
+ const args = {
63
+ componentId: this.embedId,
64
+ width: this.width,
65
+ height: this.height,
66
+ value: this.value,
67
+ min:this.min,
68
+ max:this.max,
69
+ step:this.step,
70
+ onChange: this.handleonChange,
71
+ };
72
+ // 调用JSbridge方法,传递属性和监听方法到原生组件
73
+ native.transferSameLayerArgs(args);
74
+ },
75
+ scheduleTransfer() {
76
+ if (!this.isTransferScheduled) {
77
+ this.isTransferScheduled = true;
78
+ this.$nextTick(() => {
79
+ this.transferPropsAndListeners();
80
+ this.isTransferScheduled = false;
81
+ });
82
+ }
83
+ },
84
+ handleonChange(res) {
85
+ console.log("[weex] handleonChange ", res);
86
+ this.$emit("onChange", res);
87
+ },
88
+ },
89
+ watch: {
90
+ value(oldValue, newValue) {
91
+ if (newValue !== oldValue) {
92
+ this.scheduleTransfer(); // 当value属性变化时重新调用
93
+ }
94
+ },
95
+ min(newText, oldText) {
96
+ if (newText !== oldText) {
97
+ this.scheduleTransfer(); // 当min属性变化时重新调用
98
+ }
99
+ },
100
+ max(newText, oldText) {
101
+ if (newText !== oldText) {
102
+ this.scheduleTransfer(); // 当max属性变化时重新调用
103
+ }
104
+ },
105
+ width(newWidth, oldWidth) {
106
+ if (newWidth !== oldWidth) {
107
+ this.scheduleTransfer(); // 当width属性变化时重新调用
108
+ }
109
+ },
110
+ height(newHeight, oldHeight) {
111
+ if (newHeight !== oldHeight) {
112
+ this.scheduleTransfer(); // 当height属性变化时重新调用
113
+ }
114
+ },
115
+ step(newStep, oldStep) {
116
+ if (newStep !== oldStep) {
117
+ this.scheduleTransfer(); // 当step属性变化时重新调用
118
+ }
119
+ }
120
+
121
+ },
122
+ };
123
+ </script>
124
+
125
+ <style scoped>
126
+ </style>