@scienjoy/sj-ai-plus 1.0.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.
- package/README.md +18 -0
- package/package.json +60 -0
- package/ui/es/_virtual/_plugin-vue_export-helper.ts +9 -0
- package/ui/es/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.27_typescript@5.9.3_/node_modules/@element-plus/icons-vue/dist/index.ts +79 -0
- package/ui/es/node_modules/.pnpm/@vue_shared@3.5.27/node_modules/@vue/shared/dist/shared.esm-bundler.ts +10 -0
- package/ui/es/node_modules/.pnpm/@vueuse_core@10.11.1_vue@3.5.27_typescript@5.9.3_/node_modules/@vueuse/core/index.ts +79 -0
- package/ui/es/node_modules/.pnpm/@vueuse_shared@10.11.1_vue@3.5.27_typescript@5.9.3_/node_modules/@vueuse/shared/index.ts +41 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/index.ts +38 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/adapters.ts +65 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/fetch.ts +169 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/xhr.ts +72 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/axios.ts +46 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CancelToken.ts +77 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CanceledError.ts +11 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/isCancel.ts +6 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/Axios.ts +136 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosError.ts +56 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosHeaders.ts +181 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/InterceptorManager.ts +58 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/buildFullPath.ts +9 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/dispatchRequest.ts +31 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/mergeConfig.ts +70 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/settle.ts +14 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/transformData.ts +13 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/index.ts +89 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/transitional.ts +8 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/env/data.ts +4 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/AxiosURLSearchParams.ts +33 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/HttpStatusCode.ts +77 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/bind.ts +8 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/buildURL.ts +23 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/combineURLs.ts +6 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/composeSignals.ts +30 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/cookies.ts +34 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/formDataToJSON.ts +31 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAbsoluteURL.ts +6 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAxiosError.ts +7 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isURLSameOrigin.ts +8 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/null.ts +4 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseHeaders.ts +30 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseProtocol.ts +7 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/progressEventReducer.ts +35 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/resolveConfig.ts +33 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/speedometer.ts +19 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/spread.ts +8 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/throttle.ts +15 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toFormData.ts +85 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toURLEncodedForm.ts +14 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/trackStream.ts +63 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/validator.ts +54 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/Blob.ts +4 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/FormData.ts +4 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/URLSearchParams.ts +5 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/index.ts +15 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/common/utils.ts +9 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/index.ts +9 -0
- package/ui/es/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/utils.ts +237 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/_virtual/plugin-vue_export-helper.ts +9 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/badge/index.ts +7 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/badge/src/badge.ts +36 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/badge/src/badge2.ts +73 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/config-provider-props.ts +44 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/config-provider.ts +24 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/constants.ts +4 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/hooks/use-global-config.ts +82 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/index.ts +7 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/src/icon.ts +12 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/src/icon2.ts +35 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/index.ts +7 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/instance.ts +18 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/message.ts +112 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/message2.ts +148 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/method.ts +118 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/constants/aria.ts +20 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/constants/size.ts +4 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-empty-values/index.ts +20 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-locale/index.ts +27 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-namespace/index.ts +44 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-size/index.ts +12 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-z-index/index.ts +27 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/locale/lang/en.ts +197 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/browser.ts +6 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/dom/event.ts +19 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/dom/style.ts +16 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/error.ts +15 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/objects.ts +4 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/types.ts +13 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/typescript.ts +4 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/vue/icon.ts +20 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/vue/install.ts +10 -0
- package/ui/es/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/vue/props/runtime.ts +37 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Hash.ts +20 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_ListCache.ts +20 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Map.ts +6 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_MapCache.ts +20 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Symbol.ts +5 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assocIndexOf.ts +10 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGet.ts +11 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetTag.ts +10 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNative.ts +16 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.ts +18 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castPath.ts +10 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_coreJsData.ts +5 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_freeGlobal.ts +4 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMapData.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getNative.ts +9 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getRawTag.ts +15 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getValue.ts +6 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashClear.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashDelete.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashGet.ts +13 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashHas.ts +9 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashSet.ts +9 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKey.ts +12 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKeyable.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isMasked.ts +11 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheClear.ts +6 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheDelete.ts +12 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheGet.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheHas.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheSet.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheClear.ts +13 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheDelete.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheGet.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheHas.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheSet.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_memoizeCapped.ts +11 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeCreate.ts +5 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_objectToString.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_root.ts +5 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToPath.ts +10 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toKey.ts +10 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toSource.ts +17 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/eq.ts +6 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/fromPairs.ts +10 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/get.ts +8 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArray.ts +4 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isFunction.ts +12 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObject.ts +7 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObjectLike.ts +6 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.ts +9 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/memoize.ts +18 -0
- package/ui/es/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.ts +7 -0
- package/ui/es/packages/components/index.ts +9 -0
- package/ui/es/packages/components/src/index.ts +8 -0
- package/ui/es/packages/components/src/sjDigitalHumanAssistant/index.ts +6 -0
- package/ui/es/packages/components/src/sjDigitalHumanAssistant/src/index.vue.ts +7 -0
- package/ui/es/packages/components/src/sjDigitalHumanAssistant/src/index.vue2.ts +480 -0
- package/ui/es/packages/components/src/utils/api.ts +12 -0
- package/ui/es/packages/components/src/utils/axios.ts +64 -0
- package/ui/es/packages/components/src/utils/status.ts +45 -0
- package/ui/es/packages/components/src/utils/utils.ts +425 -0
- package/ui/es/packages/components/src/utils/videoBackgroundRemoval.ts +275 -0
- package/ui/es/packages/components/src/utils/withInstall.ts +7 -0
- package/ui/es/sj-ai-plus.css +1 -0
- package/ui/es/vite.svg +1 -0
- package/ui/lib/_virtual/_plugin-vue_export-helper.ts +1 -0
- package/ui/lib/node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.27_typescript@5.9.3_/node_modules/@element-plus/icons-vue/dist/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/@vue_shared@3.5.27/node_modules/@vue/shared/dist/shared.esm-bundler.ts +1 -0
- package/ui/lib/node_modules/.pnpm/@vueuse_core@10.11.1_vue@3.5.27_typescript@5.9.3_/node_modules/@vueuse/core/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/@vueuse_shared@10.11.1_vue@3.5.27_typescript@5.9.3_/node_modules/@vueuse/shared/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/adapters.ts +3 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/fetch.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/adapters/xhr.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/axios.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CancelToken.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/CanceledError.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/cancel/isCancel.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/Axios.ts +2 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosError.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/AxiosHeaders.ts +2 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/InterceptorManager.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/buildFullPath.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/dispatchRequest.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/mergeConfig.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/settle.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/core/transformData.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/defaults/transitional.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/env/data.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/AxiosURLSearchParams.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/HttpStatusCode.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/bind.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/buildURL.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/combineURLs.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/composeSignals.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/cookies.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/formDataToJSON.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAbsoluteURL.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isAxiosError.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/isURLSameOrigin.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/null.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseHeaders.ts +2 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/parseProtocol.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/progressEventReducer.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/resolveConfig.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/speedometer.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/spread.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/throttle.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toFormData.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/toURLEncodedForm.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/trackStream.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/helpers/validator.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/Blob.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/FormData.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/classes/URLSearchParams.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/browser/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/common/utils.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/platform/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/axios@1.13.2/node_modules/axios/lib/utils.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/_virtual/plugin-vue_export-helper.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/badge/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/badge/src/badge.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/badge/src/badge2.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/config-provider-props.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/config-provider.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/constants.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/config-provider/src/hooks/use-global-config.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/src/icon.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/src/icon2.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/instance.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/message.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/message2.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/src/method.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/constants/aria.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/constants/size.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-empty-values/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-locale/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-namespace/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-size/index.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/hooks/use-z-index/index.ts +2 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/locale/lang/en.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/browser.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/dom/event.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/dom/style.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/error.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/objects.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/types.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/typescript.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/vue/icon.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/vue/install.ts +1 -0
- package/ui/lib/node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/utils/vue/props/runtime.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Hash.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_ListCache.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Map.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_MapCache.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Symbol.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assocIndexOf.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetTag.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNative.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castPath.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_coreJsData.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_freeGlobal.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMapData.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getNative.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getRawTag.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getValue.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashClear.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashDelete.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashGet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashHas.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashSet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKey.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKeyable.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isMasked.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheClear.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheDelete.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheGet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheHas.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheSet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheClear.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheDelete.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheGet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheHas.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheSet.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_memoizeCapped.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeCreate.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_objectToString.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_root.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToPath.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toKey.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toSource.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/eq.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/fromPairs.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/get.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArray.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isFunction.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObject.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObjectLike.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/memoize.ts +1 -0
- package/ui/lib/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.ts +1 -0
- package/ui/lib/packages/components/index.ts +1 -0
- package/ui/lib/packages/components/src/index.ts +1 -0
- package/ui/lib/packages/components/src/sjDigitalHumanAssistant/index.ts +1 -0
- package/ui/lib/packages/components/src/sjDigitalHumanAssistant/src/index.vue.ts +1 -0
- package/ui/lib/packages/components/src/sjDigitalHumanAssistant/src/index.vue2.ts +1 -0
- package/ui/lib/packages/components/src/utils/api.ts +1 -0
- package/ui/lib/packages/components/src/utils/axios.ts +1 -0
- package/ui/lib/packages/components/src/utils/status.ts +1 -0
- package/ui/lib/packages/components/src/utils/utils.ts +1 -0
- package/ui/lib/packages/components/src/utils/videoBackgroundRemoval.ts +92 -0
- package/ui/lib/packages/components/src/utils/withInstall.ts +1 -0
- package/ui/lib/sj-ai-plus.css +1 -0
- package/ui/lib/vite.svg +1 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
/* empty css */
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { ElMessage as b } from "../../../../node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/message/index.ts";
|
|
5
|
+
const a = {
|
|
6
|
+
/**
|
|
7
|
+
* @method funcElMessageShowCtrl
|
|
8
|
+
* @param {String} message - 提示内容
|
|
9
|
+
* @param {String} type - 提示内容类型 'success' | 'warning'(默认值) | 'info' | 'error'
|
|
10
|
+
* @param {Number} duration - 显示时间,单位为毫秒(设为 0 则不会自动关闭,默认值为 2000)
|
|
11
|
+
* @param {Boolean} showClose - 是否显示关闭按钮(默认为 false 不显示)
|
|
12
|
+
* @returns 无
|
|
13
|
+
* @desc 消息提示
|
|
14
|
+
*/
|
|
15
|
+
funcElMessageShowCtrl: (e, t = "warning", n = 2e3, o = !1) => {
|
|
16
|
+
e && b({
|
|
17
|
+
message: e,
|
|
18
|
+
type: t,
|
|
19
|
+
duration: n,
|
|
20
|
+
showClose: o
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
funcImageUrlReplace: (e, t, n, o = !1) => {
|
|
24
|
+
if (!e)
|
|
25
|
+
return "";
|
|
26
|
+
try {
|
|
27
|
+
const r = /\/role\//g, f = "/role/web/", i = /\/level1\//g, l = "/level1/web/", u = /\/level\//g, s = "/level/web/", c = /\/grade\//g, g = "/grade/web/", w = /\/svip\//g, y = "/svip/web/", S = /\/star\/star_/g;
|
|
28
|
+
if (e && (e = e.replace(r, f).replace(i, l).replace(u, s).replace(c, g).replace(w, y).replace(S, "/star/web/star_")), o && e && t && n && n.includes(Number(t))) {
|
|
29
|
+
const d = "wealth_lv", p = e.lastIndexOf(d);
|
|
30
|
+
if (p > 0) {
|
|
31
|
+
const m = e.substring(p + d.length), h = Number(m);
|
|
32
|
+
Number.isFinite(h) && h >= 31 && (e = e.substring(0, p + d.length) + m.replace(/.png/, ".gif"));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
} catch (r) {
|
|
36
|
+
console.error(r);
|
|
37
|
+
}
|
|
38
|
+
return e;
|
|
39
|
+
},
|
|
40
|
+
// 新消息中图片模板单独处理(勋章的 value1 是数组)
|
|
41
|
+
funcMsgImageUrlReplace: (e, t = !1) => {
|
|
42
|
+
if (!e)
|
|
43
|
+
return "";
|
|
44
|
+
try {
|
|
45
|
+
e.indexOf("/medal/") > 0 ? t ? e = e.replace(/\.png/g, ".png@!style_20") : e = e.replace(/\.png/g, ".png@!style_28") : e.indexOf("/grade/") > 0 ? e = e.replace(/\.png/g, ".png@!style_20") : e.indexOf("/ward/") > 0 ? e = e.replace(/\.png/g, ".png@!style_15") : e.indexOf("/prop/") > 0 ? e = e.replace(/\.png/g, ".png@!style_30") : e.indexOf("/gifts/") > 0 && (e = e.replace(/\.png/g, ".png@!style_30"));
|
|
46
|
+
} catch (n) {
|
|
47
|
+
console.error(n);
|
|
48
|
+
}
|
|
49
|
+
return e;
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* @method funcTrim
|
|
53
|
+
* @param {String} str - 要去除空格的字符串
|
|
54
|
+
* @returns {String} 已去除空格的字符串
|
|
55
|
+
* @desc 去除字符串首尾空格
|
|
56
|
+
*/
|
|
57
|
+
funcTrim: (e) => (e || (e = ""), e = e.toString(), String(e).replace(/^\s+|\s+$/gm, "")),
|
|
58
|
+
/**
|
|
59
|
+
* @method funcInsertContentIntoString
|
|
60
|
+
* @param {String} insertString - 要插入内容的字符串
|
|
61
|
+
* @param {Number} insertIndex - 要插入的位置
|
|
62
|
+
* @param {String} insertContent - 要插入的内容
|
|
63
|
+
* @returns {String} 已插入内容的字符串
|
|
64
|
+
* @desc 向字符串中插入内容
|
|
65
|
+
*/
|
|
66
|
+
funcInsertContentIntoString: function(e, t, n) {
|
|
67
|
+
return e && n && (e = e.substring(0, t) + n + e.substr(t)), e;
|
|
68
|
+
},
|
|
69
|
+
/**
|
|
70
|
+
* @method funcIsLastStr
|
|
71
|
+
* @param {String} str - 要判断的字符串
|
|
72
|
+
* @param {String} targetStr - 目标字符串
|
|
73
|
+
* @returns {Boolean} 字符串是否以特定字符串结尾
|
|
74
|
+
* @desc 判断字符串是否以特定字符串结尾(不区分大小写)
|
|
75
|
+
*/
|
|
76
|
+
funcIsLastStr: function(e, t) {
|
|
77
|
+
if (!e || !t)
|
|
78
|
+
return !1;
|
|
79
|
+
const n = e.toLowerCase(), o = t.toLowerCase(), r = n.lastIndexOf(o);
|
|
80
|
+
return r !== -1 && r === e.length - t.length;
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* @method funcFilterOutStr
|
|
84
|
+
* @param {String} str - 要过滤内容的字符串
|
|
85
|
+
* @returns {String} 已过滤内容的字符串
|
|
86
|
+
* @desc 过滤字符串首尾"[]"字符
|
|
87
|
+
*/
|
|
88
|
+
funcFilterOutStr: function(e) {
|
|
89
|
+
return e = e || "", e && /^\[[\s\S]*\]$/.test(e) && (e = e.substring(1, e.length - 1)), e;
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* @method funcIEVersionCheck
|
|
93
|
+
* @param 无
|
|
94
|
+
* @returns {Number || String} IE浏览器版本
|
|
95
|
+
* @desc 判断IE浏览器版本
|
|
96
|
+
*/
|
|
97
|
+
funcIEVersionCheck: () => {
|
|
98
|
+
const e = navigator.userAgent;
|
|
99
|
+
if (e.includes("compatible") && e.includes("MSIE")) {
|
|
100
|
+
const n = parseFloat(RegExp.$1);
|
|
101
|
+
return n >= 7 && n <= 10 ? n : 6;
|
|
102
|
+
} else {
|
|
103
|
+
if (e.includes("Edge"))
|
|
104
|
+
return "edge";
|
|
105
|
+
if (e.includes("Trident") && e.includes("rv:11.0"))
|
|
106
|
+
return 11;
|
|
107
|
+
}
|
|
108
|
+
return -1;
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* @method funcIsArray
|
|
112
|
+
* @param {Object} obj - 要判断是否为数组的对象
|
|
113
|
+
* @returns {Boolean} 是否为数组
|
|
114
|
+
* @desc 判断是否为数组
|
|
115
|
+
*/
|
|
116
|
+
funcIsArray: (e) => {
|
|
117
|
+
let t = !1;
|
|
118
|
+
return e instanceof Array || typeof e == "object" && e.constructor === Array ? t = !0 : typeof Array.isArray == "function" ? t = Array.isArray(e) : t = Object.prototype.toString.call(e) === "[object Array]", t;
|
|
119
|
+
},
|
|
120
|
+
/**
|
|
121
|
+
* @method funcArrayShuffle
|
|
122
|
+
* @param {Array} arr - 要打乱元素顺序的数组
|
|
123
|
+
* @returns {Array} 已打乱元素顺序的数组
|
|
124
|
+
* @desc 打乱数组元素顺序
|
|
125
|
+
*/
|
|
126
|
+
funcArrayShuffle: (e) => {
|
|
127
|
+
if (!e || !a.funcIsArray(e))
|
|
128
|
+
return [];
|
|
129
|
+
const t = e.length;
|
|
130
|
+
for (let n = 0; n < t - 1; n++) {
|
|
131
|
+
const o = Math.floor(Math.random() * (t - n)), r = e[o];
|
|
132
|
+
e[o] = e[t - n - 1], e[t - n - 1] = r;
|
|
133
|
+
}
|
|
134
|
+
return e;
|
|
135
|
+
},
|
|
136
|
+
/**
|
|
137
|
+
* @method funcUrlParamAdd
|
|
138
|
+
* @param {String} url - 要添加参数的路径
|
|
139
|
+
* @param {String} paramKey - 要添加的参数名称
|
|
140
|
+
* @param {String} paramValue - 要添加的参数值
|
|
141
|
+
* @returns {String} 已添加参数的路径
|
|
142
|
+
* @desc 路径中添加参数
|
|
143
|
+
*/
|
|
144
|
+
funcUrlParamAdd: (e, t, n) => {
|
|
145
|
+
if (!e || !t || !n)
|
|
146
|
+
return e;
|
|
147
|
+
if (!e.includes("?" + t + "=") && !e.includes("&" + t + "=")) {
|
|
148
|
+
let o = "?";
|
|
149
|
+
e.includes(o) && (o = "&"), e += o + t + "=" + n;
|
|
150
|
+
}
|
|
151
|
+
return e;
|
|
152
|
+
},
|
|
153
|
+
/**
|
|
154
|
+
* @method funcUrlHasParamJudge
|
|
155
|
+
* @param {String} url - 要判断的路径
|
|
156
|
+
* @param {String} param - 要判断的参数名称
|
|
157
|
+
* @returns {Boolean} 路径中是否有某个参数
|
|
158
|
+
* @desc 判断路径中是否有某个参数
|
|
159
|
+
*/
|
|
160
|
+
funcUrlHasParamJudge: (e, t) => {
|
|
161
|
+
let n = !1;
|
|
162
|
+
return e && (e.includes("?" + t + "=") || e.includes("&" + t + "=")) && (n = !0), n;
|
|
163
|
+
},
|
|
164
|
+
/**
|
|
165
|
+
* @method funcGetUrlParamValue
|
|
166
|
+
* @param {String} url - 获取参数值的路径
|
|
167
|
+
* @param {String} param - 参数名称
|
|
168
|
+
* @returns {String} 参数值
|
|
169
|
+
* @desc 获取路径中某个参数的值
|
|
170
|
+
*/
|
|
171
|
+
funcGetUrlParamValue: (e, t) => {
|
|
172
|
+
let n = "";
|
|
173
|
+
if (!e || !t)
|
|
174
|
+
return n;
|
|
175
|
+
const o = e.split("?");
|
|
176
|
+
if (o.length > 1) {
|
|
177
|
+
const r = o[1].split("&");
|
|
178
|
+
let f, i;
|
|
179
|
+
for (let l = 0; l < r.length; l++)
|
|
180
|
+
if (f = r[l], i = f.split("="), t === i[0]) {
|
|
181
|
+
n = i[1];
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return n;
|
|
186
|
+
},
|
|
187
|
+
/**
|
|
188
|
+
* @method funcMediaUrlModify
|
|
189
|
+
* @param {String} mediaUrl - 流地址
|
|
190
|
+
* @returns {String} 替换内容后的流地址
|
|
191
|
+
* @desc 视频流地址内容替换
|
|
192
|
+
*/
|
|
193
|
+
funcMediaUrlModify: (e) => (e = e.replace("__", "&"), window.location.protocol === "https:" && e.includes("http:") && (e = e.replace("http:", "https:")), e),
|
|
194
|
+
/**
|
|
195
|
+
* @method funcPhoneNumCheck
|
|
196
|
+
* @param {String} phoneNum - 手机号
|
|
197
|
+
* @returns {Boolean} 手机号是否合法
|
|
198
|
+
* @desc 手机号有效性检查
|
|
199
|
+
*/
|
|
200
|
+
funcPhoneNumCheck: (e) => !(!e || e.match(/^(0|86|17951)?(1[3|5|6|7|8|9][0-9]|14[57])[0-9]{8}$/) === null),
|
|
201
|
+
/**
|
|
202
|
+
* @method funcActivityPosterClick
|
|
203
|
+
* @param {String} posterOpenUrl - 海报链接
|
|
204
|
+
* @returns {Function} 点击海报弹框时的回调函数
|
|
205
|
+
* @desc 点击海报展示方式控制
|
|
206
|
+
*/
|
|
207
|
+
funcActivityPosterClick: (e, t) => {
|
|
208
|
+
if (e)
|
|
209
|
+
if (a.funcUrlHasParamJudge(e, "isNew") && typeof t == "function")
|
|
210
|
+
t();
|
|
211
|
+
else if (a.funcUrlHasParamJudge(e, "isNoRefer")) {
|
|
212
|
+
const n = window.open();
|
|
213
|
+
n.opener = null, n.location = e;
|
|
214
|
+
} else
|
|
215
|
+
window.open(e, "_blank");
|
|
216
|
+
},
|
|
217
|
+
/**
|
|
218
|
+
* @method funcSpecialCharacterReplace
|
|
219
|
+
* @param {String} content - 要替换特殊符号的内容
|
|
220
|
+
* @returns {String} 替换掉特殊符号后的内容
|
|
221
|
+
* @desc 字符串中特殊符号替换(例如:解决昵称中有 <、> 等特殊符号的展示问题)
|
|
222
|
+
*/
|
|
223
|
+
funcSpecialCharacterReplace: (e) => e ? e.replace(/[<>&"]/g, (t) => ({ "<": "<", ">": ">", "&": "&", '"': """ })[t]) : "",
|
|
224
|
+
/**
|
|
225
|
+
* @method funcDeblockTimeFormat
|
|
226
|
+
* @param {Number | String} timestamp - 要格式化的时间戳
|
|
227
|
+
* @param {Number} type - 时间戳类型(1-精确到毫秒 | 2-精确到秒(需要 * 1000))
|
|
228
|
+
* @returns {String} 格式化后的字符串
|
|
229
|
+
* @desc 主播封号提示框时间格式化
|
|
230
|
+
*/
|
|
231
|
+
funcDeblockTimeFormat: (e, t = 1) => {
|
|
232
|
+
const o = ((/* @__PURE__ */ new Date()).getTimezoneOffset() / 60 + 8) * 60 * 60;
|
|
233
|
+
e = Number(e), e = t === 1 ? e + o : e * 1e3 + o;
|
|
234
|
+
const r = new Date(e), f = r.getFullYear(), i = String(r.getMonth() + 1).padStart(2, "0"), l = String(r.getDate()).padStart(2, "0"), u = String(r.getHours()).padStart(2, "0"), s = String(r.getMinutes()).padStart(2, "0"), c = String(r.getSeconds()).padStart(2, "0");
|
|
235
|
+
return `${f} 年 ${i} 月 ${l} 日 ${u} 时 ${s} 分 ${c} 秒`;
|
|
236
|
+
},
|
|
237
|
+
/**
|
|
238
|
+
* @method funcWebsiteAccessModeIsCEFJudge
|
|
239
|
+
* @param 无
|
|
240
|
+
* @returns {Boolean} 是否为 CEF 开播
|
|
241
|
+
* @desc 判断是否为 CEF 开播
|
|
242
|
+
*/
|
|
243
|
+
funcWebsiteAccessModeIsCEFJudge: () => {
|
|
244
|
+
const e = window.localStorage.accessMode;
|
|
245
|
+
return !!(e && e === "CEF");
|
|
246
|
+
},
|
|
247
|
+
/**
|
|
248
|
+
* @method funcGetCEFLoginPageUrl
|
|
249
|
+
* @param 无
|
|
250
|
+
* @returns {String} CEF 登录页面地址
|
|
251
|
+
* @desc 返回 CEF 登录页面地址
|
|
252
|
+
*/
|
|
253
|
+
funcGetCEFLoginPageUrl: () => `${window.parent.location.protocol}//${window.parent.location.host}/cef/login`,
|
|
254
|
+
/**
|
|
255
|
+
* @method funcMessageToJson
|
|
256
|
+
* @param {String} xmlStr - 消息内容
|
|
257
|
+
* @returns {Object} 处理后的消息内容
|
|
258
|
+
* @desc 处理消息内容
|
|
259
|
+
*/
|
|
260
|
+
funcMessageToJson: (e) => {
|
|
261
|
+
if (!e)
|
|
262
|
+
return null;
|
|
263
|
+
let t = "";
|
|
264
|
+
const n = Number(a.funcIEVersionCheck());
|
|
265
|
+
n >= 6 && n <= 10 ? t = e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/ /g, " ").replace(/'/g, "'").replace(/"/g, '"') : t = e, t = t.replace("<![CDATA[", "").replace("]]>", "");
|
|
266
|
+
let o = null;
|
|
267
|
+
if (t && t.length > 0 && t.includes("{"))
|
|
268
|
+
try {
|
|
269
|
+
o = JSON.parse(t);
|
|
270
|
+
} catch {
|
|
271
|
+
console.log("json 解析失败 str=" + t);
|
|
272
|
+
}
|
|
273
|
+
return o;
|
|
274
|
+
},
|
|
275
|
+
/**
|
|
276
|
+
* @method funcDeepClone
|
|
277
|
+
* @param {Object} target - 要拷贝的对象
|
|
278
|
+
* @returns {Object} 新的对象
|
|
279
|
+
* @desc 深拷贝
|
|
280
|
+
*/
|
|
281
|
+
funcDeepClone: (e) => {
|
|
282
|
+
const t = /* @__PURE__ */ new WeakMap(), n = (r) => typeof r == "object" && r || typeof r == "function", o = (r) => {
|
|
283
|
+
if (!n(r))
|
|
284
|
+
return r;
|
|
285
|
+
if ([Date, RegExp].includes(r.constructor))
|
|
286
|
+
return new r.constructor(r);
|
|
287
|
+
if (typeof r == "function")
|
|
288
|
+
return setTimeout(() => r, 100);
|
|
289
|
+
const f = t.get(r);
|
|
290
|
+
if (f)
|
|
291
|
+
return f;
|
|
292
|
+
if (r instanceof Map) {
|
|
293
|
+
const s = /* @__PURE__ */ new Map();
|
|
294
|
+
return t.set(r, s), r.forEach((c, g) => {
|
|
295
|
+
n(c) ? s.set(g, o(c)) : s.set(g, c);
|
|
296
|
+
}), s;
|
|
297
|
+
}
|
|
298
|
+
if (r instanceof Set) {
|
|
299
|
+
const s = /* @__PURE__ */ new Set();
|
|
300
|
+
return t.set(r, s), r.forEach((c) => {
|
|
301
|
+
n(c) ? s.add(o(c)) : s.add(c);
|
|
302
|
+
}), s;
|
|
303
|
+
}
|
|
304
|
+
const i = Reflect.ownKeys(r), l = Object.getOwnPropertyDescriptors(r), u = Object.create(Object.getPrototypeOf(r), l);
|
|
305
|
+
return t.set(r, u), i.forEach((s) => {
|
|
306
|
+
const c = r[s];
|
|
307
|
+
n(c) ? u[s] = o(c) : u[s] = c;
|
|
308
|
+
}), u;
|
|
309
|
+
};
|
|
310
|
+
return o(e);
|
|
311
|
+
},
|
|
312
|
+
/**
|
|
313
|
+
* @method funcArraySort
|
|
314
|
+
* @param {Object} arr - 要排序的数组
|
|
315
|
+
* @param {Object} sortKeyArr - 排序关键字数组
|
|
316
|
+
* @returns 无
|
|
317
|
+
* @desc 处理消息内容
|
|
318
|
+
*/
|
|
319
|
+
funcArraySort: (e, t, n) => {
|
|
320
|
+
a.funcIsArray(e) && e.length > 0 && (t && a.funcIsArray(t) && t.length > 0 ? e.sort((o, r) => {
|
|
321
|
+
let f = null, i = null, l = "";
|
|
322
|
+
for (let u = 0; u < t.length; u++)
|
|
323
|
+
if (l = t[u], f = Number(o[l]), i = Number(r[l]), f !== i)
|
|
324
|
+
return f - i;
|
|
325
|
+
return 0;
|
|
326
|
+
}) : e.sort((o, r) => n === "number" ? Number(o) - Number(r) : o - r));
|
|
327
|
+
},
|
|
328
|
+
funcNumberFormat: (e, t = 2) => String(e).padStart(t, "0"),
|
|
329
|
+
funcTimestampFormat: (e, t) => {
|
|
330
|
+
const n = new Date(Number(e)), o = n.getFullYear(), r = a.funcNumberFormat(n.getMonth() + 1), f = a.funcNumberFormat(n.getDate()), i = a.funcNumberFormat(n.getHours()), l = a.funcNumberFormat(n.getMinutes());
|
|
331
|
+
let u = "";
|
|
332
|
+
return t === 1 ? u = `${i}:${l}` : u = `${o}-${r}-${f} ${i}:${l}`, u;
|
|
333
|
+
},
|
|
334
|
+
// 将一个整数取,取指定的位数
|
|
335
|
+
funcFixDigitalNum: (e, t) => ("" + e).length < t ? (new Array(t + 1).join("0") + e).slice(-t) : "" + e,
|
|
336
|
+
/**
|
|
337
|
+
* 时间处理函数2
|
|
338
|
+
* @param second
|
|
339
|
+
* @returns {String}
|
|
340
|
+
*/
|
|
341
|
+
getLocalTime: (e) => {
|
|
342
|
+
let t = "";
|
|
343
|
+
const s = ((/* @__PURE__ */ new Date()).getTime() - e * 1e3) / 1e3;
|
|
344
|
+
if (s < 60)
|
|
345
|
+
s <= 15 ? t = "15秒前" : t = s.toFixed(0) + "秒前";
|
|
346
|
+
else if (s < 120)
|
|
347
|
+
t = "1分钟前";
|
|
348
|
+
else if (s < 2700)
|
|
349
|
+
t = (s / 60).toFixed(0) + "分钟前";
|
|
350
|
+
else if (s < 5400)
|
|
351
|
+
t = "1小时前";
|
|
352
|
+
else if (s < 24 * 3600)
|
|
353
|
+
t = (s / 3600).toFixed(0) + "小时前";
|
|
354
|
+
else if (s < 48 * 3600)
|
|
355
|
+
t = "昨天";
|
|
356
|
+
else if (s < 30 * 86400)
|
|
357
|
+
t = (s / 86400).toFixed(0) + "天前";
|
|
358
|
+
else if (s < 12 * 2592e3) {
|
|
359
|
+
const c = s / 2592e3;
|
|
360
|
+
c <= 1 ? t = "1个月前" : t = c.toFixed(0) + "月前";
|
|
361
|
+
} else
|
|
362
|
+
t = (s / 31104e3).toFixed(0) + "年前";
|
|
363
|
+
return t;
|
|
364
|
+
},
|
|
365
|
+
/**
|
|
366
|
+
* 检查接口是否成功
|
|
367
|
+
* @param res
|
|
368
|
+
* @returns {Boolean}
|
|
369
|
+
*/
|
|
370
|
+
checkRequestBackStatus: (e) => e?.status?.statuscode + "" == "0",
|
|
371
|
+
/**
|
|
372
|
+
* 获取月初时间
|
|
373
|
+
*/
|
|
374
|
+
getDay: (e) => {
|
|
375
|
+
const t = /* @__PURE__ */ new Date(), n = t.getTime() + 1e3 * 60 * 60 * 24 * e, o = (s) => {
|
|
376
|
+
let c = s;
|
|
377
|
+
return s.toString().length === 1 && (c = "0" + s), c;
|
|
378
|
+
};
|
|
379
|
+
t.setTime(n);
|
|
380
|
+
const r = t.getFullYear(), f = t.getMonth(), i = t.getDate(), l = o(f + 1 + ""), u = o(i + "");
|
|
381
|
+
return r + "-" + l + "-" + u;
|
|
382
|
+
},
|
|
383
|
+
/**
|
|
384
|
+
* 日期格式化 yyyy-MM-dd hh:mm:ss
|
|
385
|
+
*/
|
|
386
|
+
funcDateFormt: (e, t = 1) => {
|
|
387
|
+
const o = ((/* @__PURE__ */ new Date()).getTimezoneOffset() / 60 + 8) * 60 * 60;
|
|
388
|
+
e = Number(e), e = t === 1 ? e + o : e * 1e3 + o;
|
|
389
|
+
const r = new Date(e), f = r.getFullYear(), i = String(r.getMonth() + 1).padStart(2, "0"), l = String(r.getDate()).padStart(2, "0"), u = String(r.getHours()).padStart(2, "0"), s = String(r.getMinutes()).padStart(2, "0");
|
|
390
|
+
return String(r.getSeconds()).padStart(2, "0"), `${f}-${i}-${l} ${u}:${s}`;
|
|
391
|
+
},
|
|
392
|
+
/**
|
|
393
|
+
* 生成随机字符串拼接uid
|
|
394
|
+
* @param n // 随机数字个数
|
|
395
|
+
*/
|
|
396
|
+
funcSetRandomNum: (e) => {
|
|
397
|
+
let t = "";
|
|
398
|
+
for (let n = 0; n < e; n++)
|
|
399
|
+
t += Math.floor(Math.random() * 9 + 1);
|
|
400
|
+
return t;
|
|
401
|
+
},
|
|
402
|
+
/**
|
|
403
|
+
* @method debounce
|
|
404
|
+
* @param [function] fn —— 执行事件
|
|
405
|
+
* @param [?number | 500] delay = 500 —— 时间间隔
|
|
406
|
+
* @desc: 防抖,单位时间内触发最后一次
|
|
407
|
+
*/
|
|
408
|
+
/**
|
|
409
|
+
* @method funcWebsiteAccessModeIsCEFJudge
|
|
410
|
+
* @param fn —— 执行事件
|
|
411
|
+
* @returns {Boolean} 是否为 CEF 开播
|
|
412
|
+
* @desc 判断是否为 CEF 开播
|
|
413
|
+
*/
|
|
414
|
+
debounce: (e, t = 500) => {
|
|
415
|
+
let n = null;
|
|
416
|
+
return (...o) => {
|
|
417
|
+
n && clearTimeout(n), n = setTimeout(() => {
|
|
418
|
+
e.apply(void 0, o), n = null;
|
|
419
|
+
}, t);
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
export {
|
|
424
|
+
a as default
|
|
425
|
+
};
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { ref as h } from "vue";
|
|
2
|
+
function E() {
|
|
3
|
+
const d = h(null), r = h(null);
|
|
4
|
+
let u = null, t = null, l = null, p = null, f = null, n = null, s = null;
|
|
5
|
+
const b = `
|
|
6
|
+
struct Uniforms {
|
|
7
|
+
targetColor1: vec3f,
|
|
8
|
+
threshold: f32,
|
|
9
|
+
targetColor2: vec3f,
|
|
10
|
+
_padding: f32,
|
|
11
|
+
resolution: vec2f,
|
|
12
|
+
_padding2: vec2f,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@group(0) @binding(0) var videoSampler: sampler;
|
|
16
|
+
@group(0) @binding(1) var videoTexture: texture_external;
|
|
17
|
+
@group(0) @binding(2) var<uniform> uniforms: Uniforms;
|
|
18
|
+
|
|
19
|
+
struct VertexOutput {
|
|
20
|
+
@builtin(position) position: vec4f,
|
|
21
|
+
@location(0) texCoord: vec2f,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@vertex
|
|
25
|
+
fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
26
|
+
// 全屏四边形顶点
|
|
27
|
+
var pos = array<vec2f, 6>(
|
|
28
|
+
vec2f(-1.0, -1.0),
|
|
29
|
+
vec2f(1.0, -1.0),
|
|
30
|
+
vec2f(-1.0, 1.0),
|
|
31
|
+
vec2f(-1.0, 1.0),
|
|
32
|
+
vec2f(1.0, -1.0),
|
|
33
|
+
vec2f(1.0, 1.0)
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
var output: VertexOutput;
|
|
37
|
+
output.position = vec4f(pos[vertexIndex], 0.0, 1.0);
|
|
38
|
+
// 翻转Y坐标以修正视频倒置问题
|
|
39
|
+
output.texCoord = vec2f(
|
|
40
|
+
pos[vertexIndex].x * 0.5 + 0.5,
|
|
41
|
+
1.0 - (pos[vertexIndex].y * 0.5 + 0.5)
|
|
42
|
+
);
|
|
43
|
+
return output;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// 检查颜色是否匹配任一目标色
|
|
47
|
+
fn matchesTargetColor(color: vec3f) -> bool {
|
|
48
|
+
let diff1 = distance(color, uniforms.targetColor1);
|
|
49
|
+
let diff2 = distance(color, uniforms.targetColor2);
|
|
50
|
+
return diff1 < uniforms.threshold || diff2 < uniforms.threshold;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@fragment
|
|
54
|
+
fn fragmentMain(input: VertexOutput) -> @location(0) vec4f {
|
|
55
|
+
let color = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord);
|
|
56
|
+
let rgb = color.rgb;
|
|
57
|
+
let pixelSize = 1.0 / uniforms.resolution;
|
|
58
|
+
|
|
59
|
+
// 检查当前像素是否匹配目标色
|
|
60
|
+
if (matchesTargetColor(rgb)) {
|
|
61
|
+
return vec4f(0.0, 0.0, 0.0, 0.0);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// 检查8个邻居(包括对角线)
|
|
65
|
+
let left = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(-pixelSize.x, 0.0)).rgb;
|
|
66
|
+
let right = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(pixelSize.x, 0.0)).rgb;
|
|
67
|
+
let top = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(0.0, -pixelSize.y)).rgb;
|
|
68
|
+
let bottom = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(0.0, pixelSize.y)).rgb;
|
|
69
|
+
let topLeft = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(-pixelSize.x, -pixelSize.y)).rgb;
|
|
70
|
+
let topRight = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(pixelSize.x, -pixelSize.y)).rgb;
|
|
71
|
+
let bottomLeft = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(-pixelSize.x, pixelSize.y)).rgb;
|
|
72
|
+
let bottomRight = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(pixelSize.x, pixelSize.y)).rgb;
|
|
73
|
+
|
|
74
|
+
// 第一层侵蚀:如果任意邻居匹配背景色,当前像素也变透明
|
|
75
|
+
if (matchesTargetColor(left) || matchesTargetColor(right) ||
|
|
76
|
+
matchesTargetColor(top) || matchesTargetColor(bottom) ||
|
|
77
|
+
matchesTargetColor(topLeft) || matchesTargetColor(topRight) ||
|
|
78
|
+
matchesTargetColor(bottomLeft) || matchesTargetColor(bottomRight)) {
|
|
79
|
+
return vec4f(0.0, 0.0, 0.0, 0.0);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// 第二层侵蚀:检查2像素距离的邻居
|
|
83
|
+
let left2 = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(-pixelSize.x * 2.0, 0.0)).rgb;
|
|
84
|
+
let right2 = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(pixelSize.x * 2.0, 0.0)).rgb;
|
|
85
|
+
let top2 = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(0.0, -pixelSize.y * 2.0)).rgb;
|
|
86
|
+
let bottom2 = textureSampleBaseClampToEdge(videoTexture, videoSampler, input.texCoord + vec2f(0.0, pixelSize.y * 2.0)).rgb;
|
|
87
|
+
|
|
88
|
+
if (matchesTargetColor(left2) || matchesTargetColor(right2) ||
|
|
89
|
+
matchesTargetColor(top2) || matchesTargetColor(bottom2)) {
|
|
90
|
+
return vec4f(0.0, 0.0, 0.0, 0.0);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// 不匹配且不在边缘 - 完全保留
|
|
94
|
+
return vec4f(rgb, 1.0);
|
|
95
|
+
}
|
|
96
|
+
`;
|
|
97
|
+
function v(o) {
|
|
98
|
+
const e = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(o);
|
|
99
|
+
return e ? {
|
|
100
|
+
r: parseInt(e[1], 16),
|
|
101
|
+
g: parseInt(e[2], 16),
|
|
102
|
+
b: parseInt(e[3], 16)
|
|
103
|
+
} : { r: 0, g: 0, b: 0 };
|
|
104
|
+
}
|
|
105
|
+
async function C(o) {
|
|
106
|
+
if (!navigator.gpu)
|
|
107
|
+
return console.error("WebGPU不受支持。请使用Chrome 113+或Edge 113+,或在chrome://flags中启用WebGPU"), !1;
|
|
108
|
+
try {
|
|
109
|
+
const e = await navigator.gpu.requestAdapter();
|
|
110
|
+
if (!e)
|
|
111
|
+
return console.error("无法获取WebGPU适配器"), !1;
|
|
112
|
+
if (t = await e.requestDevice(), l = o.getContext("webgpu"), !l)
|
|
113
|
+
return console.error("无法获取WebGPU上下文"), !1;
|
|
114
|
+
const i = navigator.gpu.getPreferredCanvasFormat();
|
|
115
|
+
l.configure({
|
|
116
|
+
device: t,
|
|
117
|
+
format: i,
|
|
118
|
+
alphaMode: "premultiplied"
|
|
119
|
+
});
|
|
120
|
+
const a = t.createShaderModule({
|
|
121
|
+
code: b
|
|
122
|
+
});
|
|
123
|
+
f = t.createSampler({
|
|
124
|
+
magFilter: "linear",
|
|
125
|
+
minFilter: "linear"
|
|
126
|
+
}), n = t.createBuffer({
|
|
127
|
+
size: 48,
|
|
128
|
+
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
|
|
129
|
+
}), s = t.createBindGroupLayout({
|
|
130
|
+
entries: [
|
|
131
|
+
{
|
|
132
|
+
binding: 0,
|
|
133
|
+
visibility: GPUShaderStage.FRAGMENT,
|
|
134
|
+
sampler: {}
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
binding: 1,
|
|
138
|
+
visibility: GPUShaderStage.FRAGMENT,
|
|
139
|
+
externalTexture: {}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
binding: 2,
|
|
143
|
+
visibility: GPUShaderStage.FRAGMENT,
|
|
144
|
+
buffer: { type: "uniform" }
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
});
|
|
148
|
+
const c = t.createPipelineLayout({
|
|
149
|
+
bindGroupLayouts: [s]
|
|
150
|
+
});
|
|
151
|
+
return p = t.createRenderPipeline({
|
|
152
|
+
layout: c,
|
|
153
|
+
vertex: {
|
|
154
|
+
module: a,
|
|
155
|
+
entryPoint: "vertexMain"
|
|
156
|
+
},
|
|
157
|
+
fragment: {
|
|
158
|
+
module: a,
|
|
159
|
+
entryPoint: "fragmentMain",
|
|
160
|
+
targets: [{
|
|
161
|
+
format: i,
|
|
162
|
+
blend: {
|
|
163
|
+
color: {
|
|
164
|
+
srcFactor: "src-alpha",
|
|
165
|
+
dstFactor: "one-minus-src-alpha"
|
|
166
|
+
},
|
|
167
|
+
alpha: {
|
|
168
|
+
srcFactor: "one",
|
|
169
|
+
dstFactor: "one-minus-src-alpha"
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}]
|
|
173
|
+
},
|
|
174
|
+
primitive: {
|
|
175
|
+
topology: "triangle-list"
|
|
176
|
+
}
|
|
177
|
+
}), console.log("WebGPU初始化成功"), !0;
|
|
178
|
+
} catch (e) {
|
|
179
|
+
return console.error("WebGPU初始化失败:", e), !1;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function m() {
|
|
183
|
+
if (!d.value || !r.value || !t || !l || !p || !f || !n || !s)
|
|
184
|
+
return;
|
|
185
|
+
const o = d.value, e = r.value;
|
|
186
|
+
if (o.readyState < o.HAVE_CURRENT_DATA) {
|
|
187
|
+
u = requestAnimationFrame(m);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
(e.width !== o.videoWidth || e.height !== o.videoHeight) && (e.width = o.videoWidth, e.height = o.videoHeight);
|
|
191
|
+
try {
|
|
192
|
+
const i = t.importExternalTexture({
|
|
193
|
+
source: o
|
|
194
|
+
}), a = v("#0AFFFF"), c = v("#0AFFFF"), y = new Float32Array([
|
|
195
|
+
a.r / 255,
|
|
196
|
+
a.g / 255,
|
|
197
|
+
a.b / 255,
|
|
198
|
+
// targetColor1
|
|
199
|
+
0.4,
|
|
200
|
+
// threshold - 颜色相似度阈值
|
|
201
|
+
c.r / 255,
|
|
202
|
+
c.g / 255,
|
|
203
|
+
c.b / 255,
|
|
204
|
+
// targetColor2
|
|
205
|
+
0,
|
|
206
|
+
// padding
|
|
207
|
+
e.width,
|
|
208
|
+
e.height,
|
|
209
|
+
// resolution
|
|
210
|
+
0,
|
|
211
|
+
0
|
|
212
|
+
// padding2
|
|
213
|
+
]);
|
|
214
|
+
t.queue.writeBuffer(n, 0, y);
|
|
215
|
+
const P = t.createBindGroup({
|
|
216
|
+
layout: s,
|
|
217
|
+
entries: [
|
|
218
|
+
{ binding: 0, resource: f },
|
|
219
|
+
{ binding: 1, resource: i },
|
|
220
|
+
{ binding: 2, resource: { buffer: n } }
|
|
221
|
+
]
|
|
222
|
+
}), x = t.createCommandEncoder(), g = x.beginRenderPass({
|
|
223
|
+
colorAttachments: [{
|
|
224
|
+
view: l.getCurrentTexture().createView(),
|
|
225
|
+
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
226
|
+
loadOp: "clear",
|
|
227
|
+
storeOp: "store"
|
|
228
|
+
}]
|
|
229
|
+
});
|
|
230
|
+
g.setPipeline(p), g.setBindGroup(0, P), g.draw(6), g.end(), t.queue.submit([x.finish()]);
|
|
231
|
+
} catch (i) {
|
|
232
|
+
console.error("WebGPU渲染帧错误:", i);
|
|
233
|
+
}
|
|
234
|
+
u = requestAnimationFrame(m);
|
|
235
|
+
}
|
|
236
|
+
async function S() {
|
|
237
|
+
if (!d.value || !r.value) return;
|
|
238
|
+
if (!await C(r.value)) {
|
|
239
|
+
console.error("WebGPU初始化失败,请确保浏览器支持WebGPU");
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
u = requestAnimationFrame(m);
|
|
243
|
+
}
|
|
244
|
+
function T() {
|
|
245
|
+
if (u !== null && (cancelAnimationFrame(u), u = null), r.value && (r.value.getContext("2d") || r.value.getContext("webgpu"))) {
|
|
246
|
+
if (l && t) {
|
|
247
|
+
const i = t.createCommandEncoder();
|
|
248
|
+
i.beginRenderPass({
|
|
249
|
+
colorAttachments: [{
|
|
250
|
+
view: l.getCurrentTexture().createView(),
|
|
251
|
+
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
252
|
+
loadOp: "clear",
|
|
253
|
+
storeOp: "store"
|
|
254
|
+
}]
|
|
255
|
+
}).end(), t.queue.submit([i.finish()]);
|
|
256
|
+
}
|
|
257
|
+
const e = r.value.getContext("2d");
|
|
258
|
+
if (e) {
|
|
259
|
+
e.clearRect(0, 0, r.value.width, r.value.height);
|
|
260
|
+
const i = r.value.width, a = r.value.height;
|
|
261
|
+
r.value.width = i, r.value.height = a;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
n && (n.destroy(), n = null), t = null, l = null, p = null, f = null, s = null;
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
videoRef: d,
|
|
268
|
+
canvasRef: r,
|
|
269
|
+
processVideo: S,
|
|
270
|
+
stopProcessing: T
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
export {
|
|
274
|
+
E as default
|
|
275
|
+
};
|