From 313f13540b968a60623be9394d0b40c286c36dc6 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Wed, 7 Apr 2021 11:38:38 +0800 Subject: [PATCH] chore: allowJs --- .../src/service/context/createVideoContext.ts | 73 ++ .../service/ui/createIntersectionObserver.ts | 4 +- packages/uni-core/src/helpers/bridge.ts | 10 +- packages/uni-h5/dist/uni-h5.esm.js | 8 +- packages/uni-h5/src/platform/index.ts | 3 +- .../api/base}/getBaseSystemInfo.ts | 0 .../service/api/context/operateVideoPlayer.ts | 19 + .../service/api/device/getSystemInfoSync.ts | 2 +- .../uni-h5/src/view/components/ad/index.vue | 426 +++++++ .../src/view/components/cover-image/index.vue | 72 ++ .../src/view/components/cover-view/index.vue | 79 ++ .../uni-h5/src/view/components/map/index.vue | 941 ++++++++++++++ .../src/view/components/picker/index.vue | 873 +++++++++++++ .../src/view/components/video/index.vue | 1079 +++++++++++++++++ .../src/view/components/web-view/README.md | 15 + .../src/view/components/web-view/index.vue | 69 ++ tsconfig.json | 2 +- 17 files changed, 3660 insertions(+), 15 deletions(-) create mode 100644 packages/uni-api/src/service/context/createVideoContext.ts rename packages/uni-h5/src/{platform => service/api/base}/getBaseSystemInfo.ts (100%) create mode 100644 packages/uni-h5/src/service/api/context/operateVideoPlayer.ts create mode 100644 packages/uni-h5/src/view/components/ad/index.vue create mode 100644 packages/uni-h5/src/view/components/cover-image/index.vue create mode 100644 packages/uni-h5/src/view/components/cover-view/index.vue create mode 100644 packages/uni-h5/src/view/components/map/index.vue create mode 100644 packages/uni-h5/src/view/components/picker/index.vue create mode 100644 packages/uni-h5/src/view/components/video/index.vue create mode 100644 packages/uni-h5/src/view/components/web-view/README.md create mode 100644 packages/uni-h5/src/view/components/web-view/index.vue diff --git a/packages/uni-api/src/service/context/createVideoContext.ts b/packages/uni-api/src/service/context/createVideoContext.ts new file mode 100644 index 000000000..15e6a874e --- /dev/null +++ b/packages/uni-api/src/service/context/createVideoContext.ts @@ -0,0 +1,73 @@ +import { ComponentPublicInstance } from 'vue' +import { operateVideoPlayer } from '@dcloudio/uni-platform' +import { getCurrentPageVm } from '../../helpers/utils' + +const RATES = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0] + +export class VideoContext { + private id: string + private vm: ComponentPublicInstance + constructor(id: string, vm: ComponentPublicInstance) { + this.id = id + this.vm = vm + } + + play() { + operateVideoPlayer(this.id, this.vm, 'play') + } + + pause() { + operateVideoPlayer(this.id, this.vm, 'pause') + } + + stop() { + operateVideoPlayer(this.id, this.vm, 'stop') + } + + seek(position: number) { + operateVideoPlayer(this.id, this.vm, 'seek', { + position, + }) + } + + sendDanmu(args: WechatMiniprogram.Danmu) { + operateVideoPlayer(this.id, this.vm, 'sendDanmu', args) + } + + playbackRate(rate: number) { + if (!~RATES.indexOf(rate)) { + rate = 1.0 + } + operateVideoPlayer(this.id, this.vm, 'playbackRate', { + rate, + }) + } + + requestFullScreen( + args: WechatMiniprogram.VideoContextRequestFullScreenOption = {} + ) { + operateVideoPlayer(this.id, this.vm, 'requestFullScreen', args) + } + + exitFullScreen() { + operateVideoPlayer(this.id, this.vm, 'exitFullScreen') + } + + showStatusBar() { + operateVideoPlayer(this.id, this.vm, 'showStatusBar') + } + + hideStatusBar() { + operateVideoPlayer(this.id, this.vm, 'hideStatusBar') + } +} + +export function createVideoContext( + id: string, + context: ComponentPublicInstance +) { + if (context) { + return new VideoContext(id, context) + } + return new VideoContext(id, getCurrentPageVm()) +} diff --git a/packages/uni-api/src/service/ui/createIntersectionObserver.ts b/packages/uni-api/src/service/ui/createIntersectionObserver.ts index 937270910..39c7ae3ff 100644 --- a/packages/uni-api/src/service/ui/createIntersectionObserver.ts +++ b/packages/uni-api/src/service/ui/createIntersectionObserver.ts @@ -1,7 +1,5 @@ import { extend } from '@vue/shared' -import { ServiceJSBridge } from '@dcloudio/uni-core' - import { defineSyncApi } from '../../helpers/api' import { getCurrentPageVm } from '../../helpers/utils' @@ -37,7 +35,7 @@ const reqComponentObserverCallbacks: Record = {} export const API_CREATE_INTERSECTION_OBSERVER = 'createIntersectionObserver' -ServiceJSBridge.subscribe( +UniServiceJSBridge.subscribe( 'requestComponentObserver', ({ reqId, reqEnd, res }: requestComponentObserver) => { const callback = reqComponentObserverCallbacks[reqId] diff --git a/packages/uni-core/src/helpers/bridge.ts b/packages/uni-core/src/helpers/bridge.ts index a29df6151..d9014656e 100644 --- a/packages/uni-core/src/helpers/bridge.ts +++ b/packages/uni-core/src/helpers/bridge.ts @@ -1,18 +1,18 @@ import { extend } from '@vue/shared' -// @ts-ignore TODO 等待 vue3 的兼容模式自带emitter +// TODO 等待 vue3 的兼容模式自带emitter import E from './TinyEmitter' export function initBridge( namespace: 'service' | 'view' -): UniApp.UniServiceJSBridge { +): Partial { // TODO vue3 compatibility builds const emitter = new E() return extend(emitter, { subscribe(event: string, callback: Function): void { - return emitter.on(`${namespace}.${event}`, callback) + emitter.on(`${namespace}.${event}`, callback) }, unsubscribe(event: string, callback: Function): void { - return emitter.off(`${namespace}.${event}`, callback) + emitter.off(`${namespace}.${event}`, callback) }, subscribeHandler(event: string, args: unknown, pageId: number): void { if (__DEV__) { @@ -22,7 +22,7 @@ export function initBridge( )}, ${pageId}` ) } - return emitter.emit(`${namespace}.${event}`, args, pageId) + emitter.emit(`${namespace}.${event}`, args, pageId) }, }) } diff --git a/packages/uni-h5/dist/uni-h5.esm.js b/packages/uni-h5/dist/uni-h5.esm.js index a0a0e023d..fd49f726f 100644 --- a/packages/uni-h5/dist/uni-h5.esm.js +++ b/packages/uni-h5/dist/uni-h5.esm.js @@ -103,16 +103,16 @@ function initBridge(namespace) { const emitter2 = new E(); return extend(emitter2, { subscribe(event2, callback) { - return emitter2.on(`${namespace}.${event2}`, callback); + emitter2.on(`${namespace}.${event2}`, callback); }, unsubscribe(event2, callback) { - return emitter2.off(`${namespace}.${event2}`, callback); + emitter2.off(`${namespace}.${event2}`, callback); }, subscribeHandler(event2, args, pageId) { if (process.env.NODE_ENV !== "production") { console.log(`[${namespace}][subscribeHandler][${Date.now()}]:${event2}, ${JSON.stringify(args)}, ${pageId}`); } - return emitter2.emit(`${namespace}.${event2}`, args, pageId); + emitter2.emit(`${namespace}.${event2}`, args, pageId); } }); } @@ -8024,7 +8024,7 @@ const defaultOptions = { let reqComponentObserverId = 1; const reqComponentObserverCallbacks = {}; const API_CREATE_INTERSECTION_OBSERVER = "createIntersectionObserver"; -ServiceJSBridge.subscribe("requestComponentObserver", ({reqId, reqEnd, res}) => { +UniServiceJSBridge.subscribe("requestComponentObserver", ({reqId, reqEnd, res}) => { const callback = reqComponentObserverCallbacks[reqId]; if (callback) { if (reqEnd) { diff --git a/packages/uni-h5/src/platform/index.ts b/packages/uni-h5/src/platform/index.ts index ed451d79e..b55df6b0e 100644 --- a/packages/uni-h5/src/platform/index.ts +++ b/packages/uni-h5/src/platform/index.ts @@ -1,2 +1,3 @@ export * from './getRealPath' -export { getBaseSystemInfo } from './getBaseSystemInfo' +export { getBaseSystemInfo } from '../service/api/base/getBaseSystemInfo' +export { operateVideoPlayer } from '../service/api/context/operateVideoPlayer' diff --git a/packages/uni-h5/src/platform/getBaseSystemInfo.ts b/packages/uni-h5/src/service/api/base/getBaseSystemInfo.ts similarity index 100% rename from packages/uni-h5/src/platform/getBaseSystemInfo.ts rename to packages/uni-h5/src/service/api/base/getBaseSystemInfo.ts diff --git a/packages/uni-h5/src/service/api/context/operateVideoPlayer.ts b/packages/uni-h5/src/service/api/context/operateVideoPlayer.ts new file mode 100644 index 000000000..7930a7ecb --- /dev/null +++ b/packages/uni-h5/src/service/api/context/operateVideoPlayer.ts @@ -0,0 +1,19 @@ +import { ComponentPublicInstance } from 'vue' + +export function operateVideoPlayer( + videoId: string, + vm: ComponentPublicInstance, + type: string, + data?: unknown +) { + const pageId = vm.$page.id + UniServiceJSBridge.publishHandler( + pageId + '-video-' + videoId, + { + videoId, + type, + data, + }, + pageId + ) +} diff --git a/packages/uni-h5/src/service/api/device/getSystemInfoSync.ts b/packages/uni-h5/src/service/api/device/getSystemInfoSync.ts index 5b0bd79f5..fb26d556d 100644 --- a/packages/uni-h5/src/service/api/device/getSystemInfoSync.ts +++ b/packages/uni-h5/src/service/api/device/getSystemInfoSync.ts @@ -13,7 +13,7 @@ import { getScreenWidth, getWindowWidth, getScreenHeight, -} from '../../../platform/getBaseSystemInfo' +} from '../base/getBaseSystemInfo' /** * 获取系统信息-同步 diff --git a/packages/uni-h5/src/view/components/ad/index.vue b/packages/uni-h5/src/view/components/ad/index.vue new file mode 100644 index 000000000..7c8e90996 --- /dev/null +++ b/packages/uni-h5/src/view/components/ad/index.vue @@ -0,0 +1,426 @@ + + + + diff --git a/packages/uni-h5/src/view/components/cover-image/index.vue b/packages/uni-h5/src/view/components/cover-image/index.vue new file mode 100644 index 000000000..6c82c992f --- /dev/null +++ b/packages/uni-h5/src/view/components/cover-image/index.vue @@ -0,0 +1,72 @@ + + + + diff --git a/packages/uni-h5/src/view/components/cover-view/index.vue b/packages/uni-h5/src/view/components/cover-view/index.vue new file mode 100644 index 000000000..895b0b571 --- /dev/null +++ b/packages/uni-h5/src/view/components/cover-view/index.vue @@ -0,0 +1,79 @@ + + + diff --git a/packages/uni-h5/src/view/components/map/index.vue b/packages/uni-h5/src/view/components/map/index.vue new file mode 100644 index 000000000..1f2baeea2 --- /dev/null +++ b/packages/uni-h5/src/view/components/map/index.vue @@ -0,0 +1,941 @@ + + + + + diff --git a/packages/uni-h5/src/view/components/picker/index.vue b/packages/uni-h5/src/view/components/picker/index.vue new file mode 100644 index 000000000..87e6d16a3 --- /dev/null +++ b/packages/uni-h5/src/view/components/picker/index.vue @@ -0,0 +1,873 @@ + + + + + diff --git a/packages/uni-h5/src/view/components/video/index.vue b/packages/uni-h5/src/view/components/video/index.vue new file mode 100644 index 000000000..8fdf78433 --- /dev/null +++ b/packages/uni-h5/src/view/components/video/index.vue @@ -0,0 +1,1079 @@ + + + + diff --git a/packages/uni-h5/src/view/components/web-view/README.md b/packages/uni-h5/src/view/components/web-view/README.md new file mode 100644 index 000000000..d4c266175 --- /dev/null +++ b/packages/uni-h5/src/view/components/web-view/README.md @@ -0,0 +1,15 @@ +# web-view +|属性|完成度| +|:-|:-| +|src|√| +|@message|-| + +|方法|完成度| +|:-|:-| +|navigateTo|√| +|redirectTo|√| +|reLaunch|√| +|switchTab|√| +|navigateBack|√| +|getEnv|√| +|postMessage|-| diff --git a/packages/uni-h5/src/view/components/web-view/index.vue b/packages/uni-h5/src/view/components/web-view/index.vue new file mode 100644 index 000000000..7510c3af9 --- /dev/null +++ b/packages/uni-h5/src/view/components/web-view/index.vue @@ -0,0 +1,69 @@ + + + diff --git a/tsconfig.json b/tsconfig.json index bd551ed33..e58b4c568 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "allowJs": false, + "allowJs": true, "strict": true, "noUnusedLocals": true, "experimentalDecorators": true, -- GitLab