@weapp-vite/web 1.3.20 → 1.3.22

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 (103) hide show
  1. package/dist/compiler/wxml/attributes.mjs.map +1 -1
  2. package/dist/compiler/wxml/compile.mjs.map +1 -1
  3. package/dist/compiler/wxml/dependency.mjs.map +1 -1
  4. package/dist/compiler/wxml/interpolation.mjs.map +1 -1
  5. package/dist/compiler/wxml/navigation.mjs.map +1 -1
  6. package/dist/compiler/wxml/parser.mjs.map +1 -1
  7. package/dist/compiler/wxml/renderer.mjs.map +1 -1
  8. package/dist/compiler/wxml/specialNodes.mjs.map +1 -1
  9. package/dist/compiler/wxs.mjs.map +1 -1
  10. package/dist/css/wxss.mjs.map +1 -1
  11. package/dist/index.d.mts +1 -1
  12. package/dist/plugin/constants.mjs.map +1 -1
  13. package/dist/plugin/entry.mjs.map +1 -1
  14. package/dist/plugin/files.mjs.map +1 -1
  15. package/dist/plugin/index.mjs.map +1 -1
  16. package/dist/plugin/navigation.mjs.map +1 -1
  17. package/dist/plugin/path.mjs.map +1 -1
  18. package/dist/plugin/register.mjs.map +1 -1
  19. package/dist/plugin/scan.mjs.map +1 -1
  20. package/dist/plugin/scanConfig.mjs.map +1 -1
  21. package/dist/plugin/state.mjs.map +1 -1
  22. package/dist/runtime/button/helpers.mjs.map +1 -1
  23. package/dist/runtime/button/index.mjs.map +1 -1
  24. package/dist/runtime/button/style.mjs.map +1 -1
  25. package/dist/runtime/component/behavior.mjs.map +1 -1
  26. package/dist/runtime/component/constants.mjs.map +1 -1
  27. package/dist/runtime/component/dom.mjs.map +1 -1
  28. package/dist/runtime/component/element.mjs.map +1 -1
  29. package/dist/runtime/component/events.mjs.map +1 -1
  30. package/dist/runtime/component/index.mjs.map +1 -1
  31. package/dist/runtime/component/state.mjs.map +1 -1
  32. package/dist/runtime/component/utils.mjs.map +1 -1
  33. package/dist/runtime/execution.mjs.map +1 -1
  34. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  35. package/dist/runtime/legacyTemplate/expression.mjs.map +1 -1
  36. package/dist/runtime/legacyTemplate/index.mjs.map +1 -1
  37. package/dist/runtime/navigationBar/index.mjs.map +1 -1
  38. package/dist/runtime/polyfill/ad.mjs.map +1 -1
  39. package/dist/runtime/polyfill/appState.mjs.map +1 -1
  40. package/dist/runtime/polyfill/async.mjs.map +1 -1
  41. package/dist/runtime/polyfill/auth.mjs.map +1 -1
  42. package/dist/runtime/polyfill/authApi.mjs.map +1 -1
  43. package/dist/runtime/polyfill/background.mjs.map +1 -1
  44. package/dist/runtime/polyfill/canvasContext.mjs.map +1 -1
  45. package/dist/runtime/polyfill/capability.mjs.map +1 -1
  46. package/dist/runtime/polyfill/cloud.mjs.map +1 -1
  47. package/dist/runtime/polyfill/device.mjs.map +1 -1
  48. package/dist/runtime/polyfill/deviceApi.mjs.map +1 -1
  49. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs.map +1 -1
  50. package/dist/runtime/polyfill/filePicker.mjs.map +1 -1
  51. package/dist/runtime/polyfill/fileSystemManager.mjs.map +1 -1
  52. package/dist/runtime/polyfill/files.mjs.map +1 -1
  53. package/dist/runtime/polyfill/index.mjs.map +1 -1
  54. package/dist/runtime/polyfill/interaction.mjs.map +1 -1
  55. package/dist/runtime/polyfill/interactionApi.mjs.map +1 -1
  56. package/dist/runtime/polyfill/location.mjs.map +1 -1
  57. package/dist/runtime/polyfill/locationApi.mjs.map +1 -1
  58. package/dist/runtime/polyfill/mediaActions.mjs.map +1 -1
  59. package/dist/runtime/polyfill/mediaApi/file.mjs.map +1 -1
  60. package/dist/runtime/polyfill/mediaApi/info.mjs.map +1 -1
  61. package/dist/runtime/polyfill/mediaApi/picker.mjs.map +1 -1
  62. package/dist/runtime/polyfill/mediaApi/preview.mjs.map +1 -1
  63. package/dist/runtime/polyfill/mediaApi/process.mjs.map +1 -1
  64. package/dist/runtime/polyfill/mediaInfo.mjs.map +1 -1
  65. package/dist/runtime/polyfill/mediaPicker.mjs.map +1 -1
  66. package/dist/runtime/polyfill/mediaProcess.mjs.map +1 -1
  67. package/dist/runtime/polyfill/menuApi.mjs.map +1 -1
  68. package/dist/runtime/polyfill/navigationBarRuntime.mjs.map +1 -1
  69. package/dist/runtime/polyfill/network/request.mjs.map +1 -1
  70. package/dist/runtime/polyfill/network/requestBridge.mjs.map +1 -1
  71. package/dist/runtime/polyfill/network/status.mjs.map +1 -1
  72. package/dist/runtime/polyfill/platformApi.mjs.map +1 -1
  73. package/dist/runtime/polyfill/platformRuntime.mjs.map +1 -1
  74. package/dist/runtime/polyfill/routeRuntime/dom.mjs.map +1 -1
  75. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs.map +1 -1
  76. package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
  77. package/dist/runtime/polyfill/routeRuntime/url.mjs.map +1 -1
  78. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  79. package/dist/runtime/polyfill/runtimeCapabilityApi.mjs.map +1 -1
  80. package/dist/runtime/polyfill/runtimeDataApi.mjs.map +1 -1
  81. package/dist/runtime/polyfill/runtimeInfra.mjs.map +1 -1
  82. package/dist/runtime/polyfill/runtimeOps.mjs.map +1 -1
  83. package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -1
  84. package/dist/runtime/polyfill/storage.mjs.map +1 -1
  85. package/dist/runtime/polyfill/storageAsync.mjs.map +1 -1
  86. package/dist/runtime/polyfill/subscribe.mjs.map +1 -1
  87. package/dist/runtime/polyfill/system.mjs.map +1 -1
  88. package/dist/runtime/polyfill/systemApi.mjs.map +1 -1
  89. package/dist/runtime/polyfill/ui.mjs.map +1 -1
  90. package/dist/runtime/polyfill/uiFeedback.mjs.map +1 -1
  91. package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -1
  92. package/dist/runtime/polyfill/videoContext.mjs.map +1 -1
  93. package/dist/runtime/polyfill/vkSession.mjs.map +1 -1
  94. package/dist/runtime/polyfill/windowResize.mjs.map +1 -1
  95. package/dist/runtime/polyfill/worker.mjs.map +1 -1
  96. package/dist/runtime/renderContext.mjs.map +1 -1
  97. package/dist/runtime/rpx.mjs.map +1 -1
  98. package/dist/runtime/style.mjs.map +1 -1
  99. package/dist/runtime/utils/object.mjs.map +1 -1
  100. package/dist/runtime/warning.mjs.map +1 -1
  101. package/dist/shared/slugify.mjs.map +1 -1
  102. package/dist/shared/wxml.mjs.map +1 -1
  103. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"files.mjs","names":[],"sources":["../../../src/runtime/polyfill/files.ts"],"sourcesContent":["export const WEB_USER_DATA_PATH = '/__weapp_vite_web_user_data__'\n\ninterface MemoryFileRecord {\n kind: 'text' | 'binary'\n text?: string\n bytes?: ArrayBuffer\n}\n\nconst memoryFileStorage = new Map<string, MemoryFileRecord>()\n\nexport function normalizeFilePath(filePath: unknown) {\n if (typeof filePath !== 'string') {\n return ''\n }\n return filePath.trim()\n}\n\nfunction normalizeFileEncoding(encoding?: string) {\n if (typeof encoding !== 'string') {\n return ''\n }\n return encoding.trim().toLowerCase()\n}\n\nfunction cloneArrayBuffer(buffer: ArrayBuffer) {\n return buffer.slice(0)\n}\n\nfunction toArrayBuffer(data: ArrayBuffer | ArrayBufferView) {\n if (data instanceof ArrayBuffer) {\n return cloneArrayBuffer(data)\n }\n const view = data as ArrayBufferView\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength).slice().buffer\n}\n\nfunction decodeArrayBufferToText(buffer: ArrayBuffer, encoding?: string) {\n if (typeof TextDecoder === 'function') {\n try {\n return new TextDecoder(encoding || 'utf-8').decode(new Uint8Array(buffer))\n }\n catch {\n return new TextDecoder().decode(new Uint8Array(buffer))\n }\n }\n return Array.from(new Uint8Array(buffer))\n .map(byte => String.fromCharCode(byte))\n .join('')\n}\n\nexport function writeFileSyncInternal(\n filePath: string,\n data: string | ArrayBuffer | ArrayBufferView,\n) {\n const normalizedPath = normalizeFilePath(filePath)\n if (!normalizedPath) {\n throw new TypeError('writeFileSync:fail invalid filePath')\n }\n if (typeof data === 'string') {\n memoryFileStorage.set(normalizedPath, {\n kind: 'text',\n text: data,\n })\n return\n }\n memoryFileStorage.set(normalizedPath, {\n kind: 'binary',\n bytes: toArrayBuffer(data),\n })\n}\n\nexport function readFileSyncInternal(filePath: string, encoding?: string) {\n const normalizedPath = normalizeFilePath(filePath)\n if (!normalizedPath) {\n throw new TypeError('readFileSync:fail invalid filePath')\n }\n const record = memoryFileStorage.get(normalizedPath)\n if (!record) {\n throw new TypeError(`readFileSync:fail no such file ${normalizedPath}`)\n }\n const normalizedEncoding = normalizeFileEncoding(encoding)\n if (record.kind === 'text') {\n return record.text ?? ''\n }\n const bytes = record.bytes ? cloneArrayBuffer(record.bytes) : new ArrayBuffer(0)\n if (normalizedEncoding) {\n return decodeArrayBufferToText(bytes, normalizedEncoding)\n }\n return bytes\n}\n\nexport function resolveUploadFileName(filePath: string) {\n const normalized = filePath.split(/[?#]/)[0] ?? ''\n const segments = normalized.split('/')\n return segments[segments.length - 1] || 'file'\n}\n\nexport async function resolveUploadFileBlob(\n filePath: string,\n runtimeFetch: typeof fetch | undefined,\n) {\n const record = memoryFileStorage.get(filePath)\n if (record) {\n if (record.kind === 'text') {\n return new Blob([record.text ?? ''], { type: 'text/plain;charset=utf-8' })\n }\n return new Blob([record.bytes ?? new ArrayBuffer(0)])\n }\n if (/^(?:https?:|blob:|data:)/i.test(filePath) && runtimeFetch) {\n try {\n const response = await runtimeFetch(filePath, { method: 'GET' })\n return await response.blob()\n }\n catch {\n // fallback to plain text payload\n }\n }\n return new Blob([filePath], { type: 'text/plain;charset=utf-8' })\n}\n\nfunction cloneMemoryFileRecord(record: MemoryFileRecord): MemoryFileRecord {\n if (record.kind === 'text') {\n return {\n kind: 'text',\n text: record.text ?? '',\n }\n }\n return {\n kind: 'binary',\n bytes: record.bytes ? cloneArrayBuffer(record.bytes) : new ArrayBuffer(0),\n }\n}\n\nexport function resolveSaveFilePath(tempFilePath: string, customPath?: string) {\n const targetPath = typeof customPath === 'string' ? customPath.trim() : ''\n if (targetPath) {\n return targetPath\n }\n return `${WEB_USER_DATA_PATH}/${resolveUploadFileName(tempFilePath)}`\n}\n\nexport function saveMemoryFile(tempFilePath: string, savedFilePath: string) {\n const sourceRecord = memoryFileStorage.get(tempFilePath)\n if (sourceRecord) {\n memoryFileStorage.set(savedFilePath, cloneMemoryFileRecord(sourceRecord))\n return\n }\n memoryFileStorage.set(savedFilePath, {\n kind: 'text',\n text: tempFilePath,\n })\n}\n\nexport function resolveOpenDocumentUrl(filePath: string) {\n const record = memoryFileStorage.get(filePath)\n const runtimeUrl = (globalThis as {\n URL?: {\n createObjectURL?: (value: unknown) => string\n }\n }).URL\n\n if (record) {\n if (record.kind === 'text') {\n const text = record.text ?? ''\n if (typeof Blob === 'function' && runtimeUrl?.createObjectURL) {\n return runtimeUrl.createObjectURL(new Blob([text], { type: 'text/plain;charset=utf-8' }))\n }\n return `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`\n }\n const bytes = record.bytes ?? new ArrayBuffer(0)\n if (typeof Blob === 'function' && runtimeUrl?.createObjectURL) {\n return runtimeUrl.createObjectURL(new Blob([bytes]))\n }\n return ''\n }\n\n if (/^(?:https?:|blob:|data:)/i.test(filePath)) {\n return filePath\n }\n try {\n const runtimeLocation = (typeof location !== 'undefined' ? location : undefined) as { href?: string } | undefined\n if (runtimeLocation?.href) {\n return new URL(filePath, runtimeLocation.href).toString()\n }\n }\n catch {\n // fallback to raw filePath\n }\n return filePath\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"files.mjs","names":[],"sources":["../../../src/runtime/polyfill/files.ts"],"sourcesContent":["export const WEB_USER_DATA_PATH = '/__weapp_vite_web_user_data__'\n\ninterface MemoryFileRecord {\n kind: 'text' | 'binary'\n text?: string\n bytes?: ArrayBuffer\n}\n\nconst memoryFileStorage = new Map<string, MemoryFileRecord>()\n\nexport function normalizeFilePath(filePath: unknown) {\n if (typeof filePath !== 'string') {\n return ''\n }\n return filePath.trim()\n}\n\nfunction normalizeFileEncoding(encoding?: string) {\n if (typeof encoding !== 'string') {\n return ''\n }\n return encoding.trim().toLowerCase()\n}\n\nfunction cloneArrayBuffer(buffer: ArrayBuffer) {\n return buffer.slice(0)\n}\n\nfunction toArrayBuffer(data: ArrayBuffer | ArrayBufferView) {\n if (data instanceof ArrayBuffer) {\n return cloneArrayBuffer(data)\n }\n const view = data as ArrayBufferView\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength).slice().buffer\n}\n\nfunction decodeArrayBufferToText(buffer: ArrayBuffer, encoding?: string) {\n if (typeof TextDecoder === 'function') {\n try {\n return new TextDecoder(encoding || 'utf-8').decode(new Uint8Array(buffer))\n }\n catch {\n return new TextDecoder().decode(new Uint8Array(buffer))\n }\n }\n return Array.from(new Uint8Array(buffer))\n .map(byte => String.fromCharCode(byte))\n .join('')\n}\n\nexport function writeFileSyncInternal(\n filePath: string,\n data: string | ArrayBuffer | ArrayBufferView,\n) {\n const normalizedPath = normalizeFilePath(filePath)\n if (!normalizedPath) {\n throw new TypeError('writeFileSync:fail invalid filePath')\n }\n if (typeof data === 'string') {\n memoryFileStorage.set(normalizedPath, {\n kind: 'text',\n text: data,\n })\n return\n }\n memoryFileStorage.set(normalizedPath, {\n kind: 'binary',\n bytes: toArrayBuffer(data),\n })\n}\n\nexport function readFileSyncInternal(filePath: string, encoding?: string) {\n const normalizedPath = normalizeFilePath(filePath)\n if (!normalizedPath) {\n throw new TypeError('readFileSync:fail invalid filePath')\n }\n const record = memoryFileStorage.get(normalizedPath)\n if (!record) {\n throw new TypeError(`readFileSync:fail no such file ${normalizedPath}`)\n }\n const normalizedEncoding = normalizeFileEncoding(encoding)\n if (record.kind === 'text') {\n return record.text ?? ''\n }\n const bytes = record.bytes ? cloneArrayBuffer(record.bytes) : new ArrayBuffer(0)\n if (normalizedEncoding) {\n return decodeArrayBufferToText(bytes, normalizedEncoding)\n }\n return bytes\n}\n\nexport function resolveUploadFileName(filePath: string) {\n const normalized = filePath.split(/[?#]/)[0] ?? ''\n const segments = normalized.split('/')\n return segments[segments.length - 1] || 'file'\n}\n\nexport async function resolveUploadFileBlob(\n filePath: string,\n runtimeFetch: typeof fetch | undefined,\n) {\n const record = memoryFileStorage.get(filePath)\n if (record) {\n if (record.kind === 'text') {\n return new Blob([record.text ?? ''], { type: 'text/plain;charset=utf-8' })\n }\n return new Blob([record.bytes ?? new ArrayBuffer(0)])\n }\n if (/^(?:https?:|blob:|data:)/i.test(filePath) && runtimeFetch) {\n try {\n const response = await runtimeFetch(filePath, { method: 'GET' })\n return await response.blob()\n }\n catch {\n // fallback to plain text payload\n }\n }\n return new Blob([filePath], { type: 'text/plain;charset=utf-8' })\n}\n\nfunction cloneMemoryFileRecord(record: MemoryFileRecord): MemoryFileRecord {\n if (record.kind === 'text') {\n return {\n kind: 'text',\n text: record.text ?? '',\n }\n }\n return {\n kind: 'binary',\n bytes: record.bytes ? cloneArrayBuffer(record.bytes) : new ArrayBuffer(0),\n }\n}\n\nexport function resolveSaveFilePath(tempFilePath: string, customPath?: string) {\n const targetPath = typeof customPath === 'string' ? customPath.trim() : ''\n if (targetPath) {\n return targetPath\n }\n return `${WEB_USER_DATA_PATH}/${resolveUploadFileName(tempFilePath)}`\n}\n\nexport function saveMemoryFile(tempFilePath: string, savedFilePath: string) {\n const sourceRecord = memoryFileStorage.get(tempFilePath)\n if (sourceRecord) {\n memoryFileStorage.set(savedFilePath, cloneMemoryFileRecord(sourceRecord))\n return\n }\n memoryFileStorage.set(savedFilePath, {\n kind: 'text',\n text: tempFilePath,\n })\n}\n\nexport function resolveOpenDocumentUrl(filePath: string) {\n const record = memoryFileStorage.get(filePath)\n const runtimeUrl = (globalThis as {\n URL?: {\n createObjectURL?: (value: unknown) => string\n }\n }).URL\n\n if (record) {\n if (record.kind === 'text') {\n const text = record.text ?? ''\n if (typeof Blob === 'function' && runtimeUrl?.createObjectURL) {\n return runtimeUrl.createObjectURL(new Blob([text], { type: 'text/plain;charset=utf-8' }))\n }\n return `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`\n }\n const bytes = record.bytes ?? new ArrayBuffer(0)\n if (typeof Blob === 'function' && runtimeUrl?.createObjectURL) {\n return runtimeUrl.createObjectURL(new Blob([bytes]))\n }\n return ''\n }\n\n if (/^(?:https?:|blob:|data:)/i.test(filePath)) {\n return filePath\n }\n try {\n const runtimeLocation = (typeof location !== 'undefined' ? location : undefined) as { href?: string } | undefined\n if (runtimeLocation?.href) {\n return new URL(filePath, runtimeLocation.href).toString()\n }\n }\n catch {\n // fallback to raw filePath\n }\n return filePath\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["runtimeDataApi","uiMediaApi","deviceAuthSystemApi"],"sources":["../../../src/runtime/polyfill/index.ts"],"sourcesContent":["import type {\n AdBaseOptions,\n CloudBridge,\n GetExtConfigOptions,\n InterstitialAd,\n LogManager,\n LogManagerOptions,\n MiniProgramAsyncOptions,\n MiniProgramBaseResult,\n RewardedVideoAd,\n SetBackgroundColorOptions,\n SetBackgroundTextStyleOptions,\n UpdateManager,\n} from './types'\nimport { getDefaultMiniProgramRuntimeGlobalKey, getMiniProgramRuntimeGlobalKeys } from '@weapp-core/shared'\nimport { emitRuntimeWarning } from '../warning'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n setBackgroundColorBridge,\n setBackgroundTextStyleBridge,\n} from './background'\nimport { createCloudBridge } from './cloud'\nimport * as deviceAuthSystemApi from './deviceAuthSystemApi'\nimport { WEB_USER_DATA_PATH } from './files'\nimport { createNavigationBarRuntimeBridge } from './navigationBarRuntime'\nimport {\n createInterstitialAdBridge,\n createRewardedVideoAdBridge,\n getExtConfigBridge,\n getExtConfigSyncBridge,\n getLogManagerBridge,\n getUpdateManagerBridge,\n reportAnalyticsBridge,\n} from './platformApi'\nimport {\n getAppInstance,\n getCurrentPagesInternal,\n getEnterOptionsSync,\n getLaunchOptionsSync,\n navigateBack,\n navigateTo,\n redirectTo,\n reLaunch,\n switchTab,\n} from './routeRuntime'\nimport {\n canIUseBridge,\n} from './runtimeCapabilityApi'\nimport * as runtimeDataApi from './runtimeDataApi'\nimport * as uiMediaApi from './uiMediaApi'\n\nexport * from './deviceAuthSystemApi'\n\nexport {\n getEnterOptionsSync,\n getLaunchOptionsSync,\n initializePageRoutes,\n navigateBack,\n navigateTo,\n redirectTo,\n registerApp,\n registerComponent,\n registerPage,\n reLaunch,\n switchTab,\n} from './routeRuntime'\n\nexport * from './runtimeDataApi'\nexport * from './uiMediaApi'\n\nconst MINI_PROGRAM_GLOBAL_KEYS = getMiniProgramRuntimeGlobalKeys()\nconst DEFAULT_MINI_PROGRAM_GLOBAL_KEY = getDefaultMiniProgramRuntimeGlobalKey()\nconst globalTarget = typeof globalThis !== 'undefined' ? (globalThis as Record<string, unknown>) : {}\n\nfunction resolveMiniProgramBridge() {\n for (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n const candidate = globalTarget[runtimeGlobalKey]\n if (candidate && typeof candidate === 'object') {\n return candidate as Record<string, unknown>\n }\n }\n const fallback = globalTarget[DEFAULT_MINI_PROGRAM_GLOBAL_KEY]\n if (fallback && typeof fallback === 'object') {\n return fallback as Record<string, unknown>\n }\n return undefined\n}\n\nconst navigationBarRuntimeBridge = createNavigationBarRuntimeBridge(\n () => getCurrentPagesInternal() as Array<HTMLElement & { renderRoot?: ShadowRoot | HTMLElement }>,\n emitRuntimeWarning,\n)\n\nexport function setNavigationBarTitle(options: { title: string }) {\n return navigationBarRuntimeBridge.setNavigationBarTitle(options)\n}\n\nexport function setNavigationBarColor(options: {\n frontColor?: string\n backgroundColor?: string\n animation?: { duration?: number, timingFunction?: string }\n}) {\n return navigationBarRuntimeBridge.setNavigationBarColor(options)\n}\n\nexport function showNavigationBarLoading() {\n return navigationBarRuntimeBridge.showNavigationBarLoading()\n}\n\nexport function hideNavigationBarLoading() {\n return navigationBarRuntimeBridge.hideNavigationBarLoading()\n}\n\nexport function setBackgroundColor(options?: SetBackgroundColorOptions) {\n return setBackgroundColorBridge(options)\n}\n\nexport function setBackgroundTextStyle(options?: SetBackgroundTextStyleOptions) {\n return setBackgroundTextStyleBridge(options)\n}\n\nexport function canIUse(schema: string) {\n return canIUseBridge(resolveMiniProgramBridge(), schema)\n}\n\nconst cloudBridge: CloudBridge = createCloudBridge(\n (options, result) => callMiniProgramAsyncSuccess(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n result as MiniProgramBaseResult,\n ),\n (options, errMsg) => callMiniProgramAsyncFailure(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n errMsg,\n ),\n) as CloudBridge\n\nexport function createRewardedVideoAd(options?: AdBaseOptions): RewardedVideoAd {\n return createRewardedVideoAdBridge(options)\n}\n\nexport function createInterstitialAd(options?: AdBaseOptions): InterstitialAd {\n return createInterstitialAdBridge(options)\n}\n\nexport function getExtConfigSync() {\n return getExtConfigSyncBridge()\n}\n\nexport function getExtConfig(options?: GetExtConfigOptions) {\n return getExtConfigBridge(options)\n}\n\nexport function getUpdateManager(): UpdateManager {\n return getUpdateManagerBridge()\n}\n\nexport function getLogManager(options?: LogManagerOptions): LogManager {\n return getLogManagerBridge(options)\n}\n\nexport function reportAnalytics(eventName: string, data?: Record<string, unknown>) {\n reportAnalyticsBridge(eventName, data)\n}\n\nif (globalTarget) {\n const miniProgramBridge = (globalTarget[DEFAULT_MINI_PROGRAM_GLOBAL_KEY] as Record<string, unknown> | undefined) ?? {}\n Object.assign(miniProgramBridge, {\n navigateTo,\n navigateBack,\n redirectTo,\n switchTab,\n reLaunch,\n getLaunchOptionsSync,\n getEnterOptionsSync,\n ...runtimeDataApi,\n setNavigationBarTitle,\n setNavigationBarColor,\n setBackgroundColor,\n setBackgroundTextStyle,\n showNavigationBarLoading,\n hideNavigationBarLoading,\n ...uiMediaApi,\n ...deviceAuthSystemApi,\n createRewardedVideoAd,\n createInterstitialAd,\n getExtConfigSync,\n getExtConfig,\n getUpdateManager,\n getLogManager,\n reportAnalytics,\n canIUse,\n cloud: cloudBridge,\n })\n const miniProgramEnv = (miniProgramBridge.env as Record<string, unknown> | undefined) ?? {}\n if (typeof miniProgramEnv.USER_DATA_PATH !== 'string' || !miniProgramEnv.USER_DATA_PATH.trim()) {\n miniProgramEnv.USER_DATA_PATH = WEB_USER_DATA_PATH\n }\n miniProgramBridge.env = miniProgramEnv\n for (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n globalTarget[runtimeGlobalKey] = miniProgramBridge\n }\n if (typeof globalTarget.getApp !== 'function') {\n globalTarget.getApp = getAppInstance\n }\n if (typeof globalTarget.getCurrentPages !== 'function') {\n globalTarget.getCurrentPages = getCurrentPagesInternal\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAyEA,MAAM,2BAA2B,iCAAiC;AAClE,MAAM,kCAAkC,uCAAuC;AAC/E,MAAM,eAAe,OAAO,eAAe,cAAe,aAAyC,EAAE;AAErG,SAAS,2BAA2B;CAClC,KAAK,MAAM,oBAAoB,0BAA0B;EACvD,MAAM,YAAY,aAAa;EAC/B,IAAI,aAAa,OAAO,cAAc,UACpC,OAAO;;CAGX,MAAM,WAAW,aAAa;CAC9B,IAAI,YAAY,OAAO,aAAa,UAClC,OAAO;;AAKX,MAAM,6BAA6B,uCAC3B,yBAAyB,EAC/B,mBACD;AAED,SAAgB,sBAAsB,SAA4B;CAChE,OAAO,2BAA2B,sBAAsB,QAAQ;;AAGlE,SAAgB,sBAAsB,SAInC;CACD,OAAO,2BAA2B,sBAAsB,QAAQ;;AAGlE,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,0BAA0B;;AAG9D,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,0BAA0B;;AAG9D,SAAgB,mBAAmB,SAAqC;CACtE,OAAO,yBAAyB,QAAQ;;AAG1C,SAAgB,uBAAuB,SAAyC;CAC9E,OAAO,6BAA6B,QAAQ;;AAG9C,SAAgB,QAAQ,QAAgB;CACtC,OAAO,cAAc,0BAA0B,EAAE,OAAO;;AAG1D,MAAM,cAA2B,mBAC9B,SAAS,WAAW,4BACnB,SACA,OACD,GACA,SAAS,WAAW,4BACnB,SACA,OACD,CACF;AAED,SAAgB,sBAAsB,SAA0C;CAC9E,OAAO,4BAA4B,QAAQ;;AAG7C,SAAgB,qBAAqB,SAAyC;CAC5E,OAAO,2BAA2B,QAAQ;;AAG5C,SAAgB,mBAAmB;CACjC,OAAO,wBAAwB;;AAGjC,SAAgB,aAAa,SAA+B;CAC1D,OAAO,mBAAmB,QAAQ;;AAGpC,SAAgB,mBAAkC;CAChD,OAAO,wBAAwB;;AAGjC,SAAgB,cAAc,SAAyC;CACrE,OAAO,oBAAoB,QAAQ;;AAGrC,SAAgB,gBAAgB,WAAmB,MAAgC;CACjF,sBAAsB,WAAW,KAAK;;AAGxC,IAAI,cAAc;CAChB,MAAM,oBAAqB,aAAa,oCAA4E,EAAE;CACtH,OAAO,OAAO,mBAAmB;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAGA;EACH;EACA;EACA;EACA;EACA;EACA;EACA,GAAGC;EACH,GAAGC;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACR,CAAC;CACF,MAAM,iBAAkB,kBAAkB,OAA+C,EAAE;CAC3F,IAAI,OAAO,eAAe,mBAAmB,YAAY,CAAC,eAAe,eAAe,MAAM,EAC5F,eAAe,iBAAiB;CAElC,kBAAkB,MAAM;CACxB,KAAK,MAAM,oBAAoB,0BAC7B,aAAa,oBAAoB;CAEnC,IAAI,OAAO,aAAa,WAAW,YACjC,aAAa,SAAS;CAExB,IAAI,OAAO,aAAa,oBAAoB,YAC1C,aAAa,kBAAkB"}
1
+ {"version":3,"file":"index.mjs","names":["runtimeDataApi","uiMediaApi","deviceAuthSystemApi"],"sources":["../../../src/runtime/polyfill/index.ts"],"sourcesContent":["import type {\n AdBaseOptions,\n CloudBridge,\n GetExtConfigOptions,\n InterstitialAd,\n LogManager,\n LogManagerOptions,\n MiniProgramAsyncOptions,\n MiniProgramBaseResult,\n RewardedVideoAd,\n SetBackgroundColorOptions,\n SetBackgroundTextStyleOptions,\n UpdateManager,\n} from './types'\nimport { getDefaultMiniProgramRuntimeGlobalKey, getMiniProgramRuntimeGlobalKeys } from '@weapp-core/shared'\nimport { emitRuntimeWarning } from '../warning'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n setBackgroundColorBridge,\n setBackgroundTextStyleBridge,\n} from './background'\nimport { createCloudBridge } from './cloud'\nimport * as deviceAuthSystemApi from './deviceAuthSystemApi'\nimport { WEB_USER_DATA_PATH } from './files'\nimport { createNavigationBarRuntimeBridge } from './navigationBarRuntime'\nimport {\n createInterstitialAdBridge,\n createRewardedVideoAdBridge,\n getExtConfigBridge,\n getExtConfigSyncBridge,\n getLogManagerBridge,\n getUpdateManagerBridge,\n reportAnalyticsBridge,\n} from './platformApi'\nimport {\n getAppInstance,\n getCurrentPagesInternal,\n getEnterOptionsSync,\n getLaunchOptionsSync,\n navigateBack,\n navigateTo,\n redirectTo,\n reLaunch,\n switchTab,\n} from './routeRuntime'\nimport {\n canIUseBridge,\n} from './runtimeCapabilityApi'\nimport * as runtimeDataApi from './runtimeDataApi'\nimport * as uiMediaApi from './uiMediaApi'\n\nexport * from './deviceAuthSystemApi'\n\nexport {\n getEnterOptionsSync,\n getLaunchOptionsSync,\n initializePageRoutes,\n navigateBack,\n navigateTo,\n redirectTo,\n registerApp,\n registerComponent,\n registerPage,\n reLaunch,\n switchTab,\n} from './routeRuntime'\n\nexport * from './runtimeDataApi'\nexport * from './uiMediaApi'\n\nconst MINI_PROGRAM_GLOBAL_KEYS = getMiniProgramRuntimeGlobalKeys()\nconst DEFAULT_MINI_PROGRAM_GLOBAL_KEY = getDefaultMiniProgramRuntimeGlobalKey()\nconst globalTarget = typeof globalThis !== 'undefined' ? (globalThis as Record<string, unknown>) : {}\n\nfunction resolveMiniProgramBridge() {\n for (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n const candidate = globalTarget[runtimeGlobalKey]\n if (candidate && typeof candidate === 'object') {\n return candidate as Record<string, unknown>\n }\n }\n const fallback = globalTarget[DEFAULT_MINI_PROGRAM_GLOBAL_KEY]\n if (fallback && typeof fallback === 'object') {\n return fallback as Record<string, unknown>\n }\n return undefined\n}\n\nconst navigationBarRuntimeBridge = createNavigationBarRuntimeBridge(\n () => getCurrentPagesInternal() as Array<HTMLElement & { renderRoot?: ShadowRoot | HTMLElement }>,\n emitRuntimeWarning,\n)\n\nexport function setNavigationBarTitle(options: { title: string }) {\n return navigationBarRuntimeBridge.setNavigationBarTitle(options)\n}\n\nexport function setNavigationBarColor(options: {\n frontColor?: string\n backgroundColor?: string\n animation?: { duration?: number, timingFunction?: string }\n}) {\n return navigationBarRuntimeBridge.setNavigationBarColor(options)\n}\n\nexport function showNavigationBarLoading() {\n return navigationBarRuntimeBridge.showNavigationBarLoading()\n}\n\nexport function hideNavigationBarLoading() {\n return navigationBarRuntimeBridge.hideNavigationBarLoading()\n}\n\nexport function setBackgroundColor(options?: SetBackgroundColorOptions) {\n return setBackgroundColorBridge(options)\n}\n\nexport function setBackgroundTextStyle(options?: SetBackgroundTextStyleOptions) {\n return setBackgroundTextStyleBridge(options)\n}\n\nexport function canIUse(schema: string) {\n return canIUseBridge(resolveMiniProgramBridge(), schema)\n}\n\nconst cloudBridge: CloudBridge = createCloudBridge(\n (options, result) => callMiniProgramAsyncSuccess(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n result as MiniProgramBaseResult,\n ),\n (options, errMsg) => callMiniProgramAsyncFailure(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n errMsg,\n ),\n) as CloudBridge\n\nexport function createRewardedVideoAd(options?: AdBaseOptions): RewardedVideoAd {\n return createRewardedVideoAdBridge(options)\n}\n\nexport function createInterstitialAd(options?: AdBaseOptions): InterstitialAd {\n return createInterstitialAdBridge(options)\n}\n\nexport function getExtConfigSync() {\n return getExtConfigSyncBridge()\n}\n\nexport function getExtConfig(options?: GetExtConfigOptions) {\n return getExtConfigBridge(options)\n}\n\nexport function getUpdateManager(): UpdateManager {\n return getUpdateManagerBridge()\n}\n\nexport function getLogManager(options?: LogManagerOptions): LogManager {\n return getLogManagerBridge(options)\n}\n\nexport function reportAnalytics(eventName: string, data?: Record<string, unknown>) {\n reportAnalyticsBridge(eventName, data)\n}\n\nif (globalTarget) {\n const miniProgramBridge = (globalTarget[DEFAULT_MINI_PROGRAM_GLOBAL_KEY] as Record<string, unknown> | undefined) ?? {}\n Object.assign(miniProgramBridge, {\n navigateTo,\n navigateBack,\n redirectTo,\n switchTab,\n reLaunch,\n getLaunchOptionsSync,\n getEnterOptionsSync,\n ...runtimeDataApi,\n setNavigationBarTitle,\n setNavigationBarColor,\n setBackgroundColor,\n setBackgroundTextStyle,\n showNavigationBarLoading,\n hideNavigationBarLoading,\n ...uiMediaApi,\n ...deviceAuthSystemApi,\n createRewardedVideoAd,\n createInterstitialAd,\n getExtConfigSync,\n getExtConfig,\n getUpdateManager,\n getLogManager,\n reportAnalytics,\n canIUse,\n cloud: cloudBridge,\n })\n const miniProgramEnv = (miniProgramBridge.env as Record<string, unknown> | undefined) ?? {}\n if (typeof miniProgramEnv.USER_DATA_PATH !== 'string' || !miniProgramEnv.USER_DATA_PATH.trim()) {\n miniProgramEnv.USER_DATA_PATH = WEB_USER_DATA_PATH\n }\n miniProgramBridge.env = miniProgramEnv\n for (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n globalTarget[runtimeGlobalKey] = miniProgramBridge\n }\n if (typeof globalTarget.getApp !== 'function') {\n globalTarget.getApp = getAppInstance\n }\n if (typeof globalTarget.getCurrentPages !== 'function') {\n globalTarget.getCurrentPages = getCurrentPagesInternal\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAyEA,MAAM,2BAA2B,gCAAgC;AACjE,MAAM,kCAAkC,sCAAsC;AAC9E,MAAM,eAAe,OAAO,eAAe,cAAe,aAAyC,CAAC;AAEpG,SAAS,2BAA2B;CAClC,KAAK,MAAM,oBAAoB,0BAA0B;EACvD,MAAM,YAAY,aAAa;EAC/B,IAAI,aAAa,OAAO,cAAc,UACpC,OAAO;CAEX;CACA,MAAM,WAAW,aAAa;CAC9B,IAAI,YAAY,OAAO,aAAa,UAClC,OAAO;AAGX;AAEA,MAAM,6BAA6B,uCAC3B,wBAAwB,GAC9B,kBACF;AAEA,SAAgB,sBAAsB,SAA4B;CAChE,OAAO,2BAA2B,sBAAsB,OAAO;AACjE;AAEA,SAAgB,sBAAsB,SAInC;CACD,OAAO,2BAA2B,sBAAsB,OAAO;AACjE;AAEA,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,yBAAyB;AAC7D;AAEA,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,yBAAyB;AAC7D;AAEA,SAAgB,mBAAmB,SAAqC;CACtE,OAAO,yBAAyB,OAAO;AACzC;AAEA,SAAgB,uBAAuB,SAAyC;CAC9E,OAAO,6BAA6B,OAAO;AAC7C;AAEA,SAAgB,QAAQ,QAAgB;CACtC,OAAO,cAAc,yBAAyB,GAAG,MAAM;AACzD;AAEA,MAAM,cAA2B,mBAC9B,SAAS,WAAW,4BACnB,SACA,MACF,IACC,SAAS,WAAW,4BACnB,SACA,MACF,CACF;AAEA,SAAgB,sBAAsB,SAA0C;CAC9E,OAAO,4BAA4B,OAAO;AAC5C;AAEA,SAAgB,qBAAqB,SAAyC;CAC5E,OAAO,2BAA2B,OAAO;AAC3C;AAEA,SAAgB,mBAAmB;CACjC,OAAO,uBAAuB;AAChC;AAEA,SAAgB,aAAa,SAA+B;CAC1D,OAAO,mBAAmB,OAAO;AACnC;AAEA,SAAgB,mBAAkC;CAChD,OAAO,uBAAuB;AAChC;AAEA,SAAgB,cAAc,SAAyC;CACrE,OAAO,oBAAoB,OAAO;AACpC;AAEA,SAAgB,gBAAgB,WAAmB,MAAgC;CACjF,sBAAsB,WAAW,IAAI;AACvC;AAEA,IAAI,cAAc;CAChB,MAAM,oBAAqB,aAAa,oCAA4E,CAAC;CACrH,OAAO,OAAO,mBAAmB;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAGA;EACH;EACA;EACA;EACA;EACA;EACA;EACA,GAAGC;EACH,GAAGC;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;CACT,CAAC;CACD,MAAM,iBAAkB,kBAAkB,OAA+C,CAAC;CAC1F,IAAI,OAAO,eAAe,mBAAmB,YAAY,CAAC,eAAe,eAAe,KAAK,GAC3F,eAAe,iBAAiB;CAElC,kBAAkB,MAAM;CACxB,KAAK,MAAM,oBAAoB,0BAC7B,aAAa,oBAAoB;CAEnC,IAAI,OAAO,aAAa,WAAW,YACjC,aAAa,SAAS;CAExB,IAAI,OAAO,aAAa,oBAAoB,YAC1C,aAAa,kBAAkB;AAEnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/interaction.ts"],"sourcesContent":["import { WEAPP_VITE_WEB_SCAN_CODE_RESULT_KEY } from '@weapp-core/constants'\n\nexport function resolveScanCodeResult(prompt?: (message: string, defaultValue: string) => unknown) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n let rawResult: unknown = runtimeGlobal[WEAPP_VITE_WEB_SCAN_CODE_RESULT_KEY]\n if (rawResult == null && typeof prompt === 'function') {\n rawResult = prompt('请输入二维码/条码内容', '')\n }\n if (rawResult == null) {\n return null\n }\n if (typeof rawResult === 'string') {\n return rawResult\n }\n return String((rawResult as { result?: unknown })?.result ?? '')\n}\n\nexport async function writeClipboardData(data: string) {\n const runtimeNavigator = typeof navigator !== 'undefined' ? navigator : undefined\n if (runtimeNavigator?.clipboard && typeof runtimeNavigator.clipboard.writeText === 'function') {\n await runtimeNavigator.clipboard.writeText(data)\n return\n }\n\n if (typeof document === 'undefined' || !document.body) {\n throw new Error('Clipboard API is unavailable in current environment.')\n }\n\n const execCommand = (document as Document & { execCommand?: (command: string) => boolean }).execCommand\n if (typeof execCommand !== 'function') {\n throw new TypeError('Clipboard API is unavailable in current environment.')\n }\n\n const textarea = document.createElement('textarea') as HTMLTextAreaElement\n textarea.value = data\n textarea.setAttribute('readonly', 'true')\n textarea.setAttribute('style', 'position: fixed; top: -9999px; left: -9999px; opacity: 0;')\n document.body.append(textarea)\n textarea.select?.()\n const copied = execCommand.call(document, 'copy')\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea)\n }\n if (!copied) {\n throw new Error('document.execCommand(\"copy\") returned false.')\n }\n}\n\nexport async function readClipboardData() {\n const runtimeNavigator = typeof navigator !== 'undefined' ? navigator : undefined\n if (!runtimeNavigator?.clipboard || typeof runtimeNavigator.clipboard.readText !== 'function') {\n throw new Error('Clipboard API is unavailable in current environment.')\n }\n return runtimeNavigator.clipboard.readText()\n}\n"],"mappings":";;;AAEA,SAAgB,sBAAsB,QAA6D;CAEjG,IAAI,YAAqBA,WAAc;CACvC,IAAI,aAAa,QAAQ,OAAO,WAAW,YACzC,YAAY,OAAO,eAAe,GAAG;CAEvC,IAAI,aAAa,MACf,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,OAAO,OAAQ,WAAoC,UAAU,GAAG;;AAGlE,eAAsB,mBAAmB,MAAc;CACrD,MAAM,mBAAmB,OAAO,cAAc,cAAc,YAAY;CACxE,IAAI,kBAAkB,aAAa,OAAO,iBAAiB,UAAU,cAAc,YAAY;EAC7F,MAAM,iBAAiB,UAAU,UAAU,KAAK;EAChD;;CAGF,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,MAC/C,MAAM,IAAI,MAAM,uDAAuD;CAGzE,MAAM,cAAe,SAAuE;CAC5F,IAAI,OAAO,gBAAgB,YACzB,MAAM,IAAI,UAAU,uDAAuD;CAG7E,MAAM,WAAW,SAAS,cAAc,WAAW;CACnD,SAAS,QAAQ;CACjB,SAAS,aAAa,YAAY,OAAO;CACzC,SAAS,aAAa,SAAS,4DAA4D;CAC3F,SAAS,KAAK,OAAO,SAAS;CAC9B,SAAS,UAAU;CACnB,MAAM,SAAS,YAAY,KAAK,UAAU,OAAO;CACjD,IAAI,SAAS,YACX,SAAS,WAAW,YAAY,SAAS;CAE3C,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,iDAA+C;;AAInE,eAAsB,oBAAoB;CACxC,MAAM,mBAAmB,OAAO,cAAc,cAAc,YAAY;CACxE,IAAI,CAAC,kBAAkB,aAAa,OAAO,iBAAiB,UAAU,aAAa,YACjF,MAAM,IAAI,MAAM,uDAAuD;CAEzE,OAAO,iBAAiB,UAAU,UAAU"}
1
+ {"version":3,"file":"interaction.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/interaction.ts"],"sourcesContent":["import { WEAPP_VITE_WEB_SCAN_CODE_RESULT_KEY } from '@weapp-core/constants'\n\nexport function resolveScanCodeResult(prompt?: (message: string, defaultValue: string) => unknown) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n let rawResult: unknown = runtimeGlobal[WEAPP_VITE_WEB_SCAN_CODE_RESULT_KEY]\n if (rawResult == null && typeof prompt === 'function') {\n rawResult = prompt('请输入二维码/条码内容', '')\n }\n if (rawResult == null) {\n return null\n }\n if (typeof rawResult === 'string') {\n return rawResult\n }\n return String((rawResult as { result?: unknown })?.result ?? '')\n}\n\nexport async function writeClipboardData(data: string) {\n const runtimeNavigator = typeof navigator !== 'undefined' ? navigator : undefined\n if (runtimeNavigator?.clipboard && typeof runtimeNavigator.clipboard.writeText === 'function') {\n await runtimeNavigator.clipboard.writeText(data)\n return\n }\n\n if (typeof document === 'undefined' || !document.body) {\n throw new Error('Clipboard API is unavailable in current environment.')\n }\n\n const execCommand = (document as Document & { execCommand?: (command: string) => boolean }).execCommand\n if (typeof execCommand !== 'function') {\n throw new TypeError('Clipboard API is unavailable in current environment.')\n }\n\n const textarea = document.createElement('textarea') as HTMLTextAreaElement\n textarea.value = data\n textarea.setAttribute('readonly', 'true')\n textarea.setAttribute('style', 'position: fixed; top: -9999px; left: -9999px; opacity: 0;')\n document.body.append(textarea)\n textarea.select?.()\n const copied = execCommand.call(document, 'copy')\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea)\n }\n if (!copied) {\n throw new Error('document.execCommand(\"copy\") returned false.')\n }\n}\n\nexport async function readClipboardData() {\n const runtimeNavigator = typeof navigator !== 'undefined' ? navigator : undefined\n if (!runtimeNavigator?.clipboard || typeof runtimeNavigator.clipboard.readText !== 'function') {\n throw new Error('Clipboard API is unavailable in current environment.')\n }\n return runtimeNavigator.clipboard.readText()\n}\n"],"mappings":";;;AAEA,SAAgB,sBAAsB,QAA6D;CAEjG,IAAI,YAAqBA,WAAc;CACvC,IAAI,aAAa,QAAQ,OAAO,WAAW,YACzC,YAAY,OAAO,eAAe,EAAE;CAEtC,IAAI,aAAa,MACf,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,OAAO,OAAQ,WAAoC,UAAU,EAAE;AACjE;AAEA,eAAsB,mBAAmB,MAAc;CACrD,MAAM,mBAAmB,OAAO,cAAc,cAAc,YAAY;CACxE,IAAI,kBAAkB,aAAa,OAAO,iBAAiB,UAAU,cAAc,YAAY;EAC7F,MAAM,iBAAiB,UAAU,UAAU,IAAI;EAC/C;CACF;CAEA,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,MAC/C,MAAM,IAAI,MAAM,sDAAsD;CAGxE,MAAM,cAAe,SAAuE;CAC5F,IAAI,OAAO,gBAAgB,YACzB,MAAM,IAAI,UAAU,sDAAsD;CAG5E,MAAM,WAAW,SAAS,cAAc,UAAU;CAClD,SAAS,QAAQ;CACjB,SAAS,aAAa,YAAY,MAAM;CACxC,SAAS,aAAa,SAAS,2DAA2D;CAC1F,SAAS,KAAK,OAAO,QAAQ;CAC7B,SAAS,SAAS;CAClB,MAAM,SAAS,YAAY,KAAK,UAAU,MAAM;CAChD,IAAI,SAAS,YACX,SAAS,WAAW,YAAY,QAAQ;CAE1C,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,gDAA8C;AAElE;AAEA,eAAsB,oBAAoB;CACxC,MAAM,mBAAmB,OAAO,cAAc,cAAc,YAAY;CACxE,IAAI,CAAC,kBAAkB,aAAa,OAAO,iBAAiB,UAAU,aAAa,YACjF,MAAM,IAAI,MAAM,sDAAsD;CAExE,OAAO,iBAAiB,UAAU,SAAS;AAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactionApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/interactionApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n readClipboardData,\n resolveScanCodeResult,\n writeClipboardData,\n} from './interaction'\nimport { getGlobalDialogHandlers } from './ui'\n\nexport function openCustomerServiceChatBridge(options?: any) {\n const url = options?.url?.trim() ?? ''\n if (url && typeof window !== 'undefined' && typeof window.open === 'function') {\n try {\n window.open(url, '_blank', 'noopener,noreferrer')\n }\n catch {\n // ignore browser popup restrictions\n }\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'openCustomerServiceChat:ok' }))\n}\n\nexport function scanCodeBridge(options?: any) {\n const { prompt } = getGlobalDialogHandlers()\n const resultText = resolveScanCodeResult(prompt)\n if (resultText == null) {\n const failure = callMiniProgramAsyncFailure(options, 'scanCode:fail cancel')\n return Promise.reject(failure)\n }\n const result = callMiniProgramAsyncSuccess(options, {\n errMsg: 'scanCode:ok',\n result: resultText,\n scanType: 'QR_CODE',\n charSet: 'utf-8',\n path: resultText,\n rawData: resultText,\n })\n return Promise.resolve(result)\n}\n\nexport async function setClipboardDataBridge(options?: any) {\n const data = String(options?.data ?? '')\n try {\n await writeClipboardData(data)\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `setClipboardData:fail ${message}`)\n return Promise.reject(failure)\n }\n return callMiniProgramAsyncSuccess(options, { errMsg: 'setClipboardData:ok' })\n}\n\nexport async function getClipboardDataBridge(options?: any) {\n try {\n const data = await readClipboardData()\n return callMiniProgramAsyncSuccess(options, { errMsg: 'getClipboardData:ok', data })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getClipboardData:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;;AAWA,SAAgB,8BAA8B,SAAe;CAC3D,MAAM,MAAM,SAAS,KAAK,MAAM,IAAI;CACpC,IAAI,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,SAAS,YACjE,IAAI;EACF,OAAO,KAAK,KAAK,UAAU,sBAAsB;SAE7C;CAIR,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,8BAA8B,CAAC,CAAC;;AAGxG,SAAgB,eAAe,SAAe;CAC5C,MAAM,EAAE,WAAW,yBAAyB;CAC5C,MAAM,aAAa,sBAAsB,OAAO;CAChD,IAAI,cAAc,MAAM;EACtB,MAAM,UAAU,4BAA4B,SAAS,uBAAuB;EAC5E,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,SAAS,4BAA4B,SAAS;EAClD,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,SAAS;EACT,MAAM;EACN,SAAS;EACV,CAAC;CACF,OAAO,QAAQ,QAAQ,OAAO;;AAGhC,eAAsB,uBAAuB,SAAe;CAC1D,MAAM,OAAO,OAAO,SAAS,QAAQ,GAAG;CACxC,IAAI;EACF,MAAM,mBAAmB,KAAK;UAEzB,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,yBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACkB;EACxF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,OAAO,4BAA4B,SAAS,EAAE,QAAQ,uBAAuB,CAAC;;AAGhF,eAAsB,uBAAuB,SAAe;CAC1D,IAAI;EAEF,OAAO,4BAA4B,SAAS;GAAE,QAAQ;GAAuB,YAD1D,mBAAmB;GAC6C,CAAC;UAE/E,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,yBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACkB;EACxF,OAAO,QAAQ,OAAO,QAAQ"}
1
+ {"version":3,"file":"interactionApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/interactionApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n readClipboardData,\n resolveScanCodeResult,\n writeClipboardData,\n} from './interaction'\nimport { getGlobalDialogHandlers } from './ui'\n\nexport function openCustomerServiceChatBridge(options?: any) {\n const url = options?.url?.trim() ?? ''\n if (url && typeof window !== 'undefined' && typeof window.open === 'function') {\n try {\n window.open(url, '_blank', 'noopener,noreferrer')\n }\n catch {\n // ignore browser popup restrictions\n }\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'openCustomerServiceChat:ok' }))\n}\n\nexport function scanCodeBridge(options?: any) {\n const { prompt } = getGlobalDialogHandlers()\n const resultText = resolveScanCodeResult(prompt)\n if (resultText == null) {\n const failure = callMiniProgramAsyncFailure(options, 'scanCode:fail cancel')\n return Promise.reject(failure)\n }\n const result = callMiniProgramAsyncSuccess(options, {\n errMsg: 'scanCode:ok',\n result: resultText,\n scanType: 'QR_CODE',\n charSet: 'utf-8',\n path: resultText,\n rawData: resultText,\n })\n return Promise.resolve(result)\n}\n\nexport async function setClipboardDataBridge(options?: any) {\n const data = String(options?.data ?? '')\n try {\n await writeClipboardData(data)\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `setClipboardData:fail ${message}`)\n return Promise.reject(failure)\n }\n return callMiniProgramAsyncSuccess(options, { errMsg: 'setClipboardData:ok' })\n}\n\nexport async function getClipboardDataBridge(options?: any) {\n try {\n const data = await readClipboardData()\n return callMiniProgramAsyncSuccess(options, { errMsg: 'getClipboardData:ok', data })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getClipboardData:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;;AAWA,SAAgB,8BAA8B,SAAe;CAC3D,MAAM,MAAM,SAAS,KAAK,KAAK,KAAK;CACpC,IAAI,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,SAAS,YACjE,IAAI;EACF,OAAO,KAAK,KAAK,UAAU,qBAAqB;CAClD,QACM,CAEN;CAEF,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,6BAA6B,CAAC,CAAC;AACvG;AAEA,SAAgB,eAAe,SAAe;CAC5C,MAAM,EAAE,WAAW,wBAAwB;CAC3C,MAAM,aAAa,sBAAsB,MAAM;CAC/C,IAAI,cAAc,MAAM;EACtB,MAAM,UAAU,4BAA4B,SAAS,sBAAsB;EAC3E,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,SAAS,4BAA4B,SAAS;EAClD,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,SAAS;EACT,MAAM;EACN,SAAS;CACX,CAAC;CACD,OAAO,QAAQ,QAAQ,MAAM;AAC/B;AAEA,eAAsB,uBAAuB,SAAe;CAC1D,MAAM,OAAO,OAAO,SAAS,QAAQ,EAAE;CACvC,IAAI;EACF,MAAM,mBAAmB,IAAI;CAC/B,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,yBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACkB;EACvF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,OAAO,4BAA4B,SAAS,EAAE,QAAQ,sBAAsB,CAAC;AAC/E;AAEA,eAAsB,uBAAuB,SAAe;CAC1D,IAAI;EAEF,OAAO,4BAA4B,SAAS;GAAE,QAAQ;GAAuB,YAD1D,kBAAkB;EAC6C,CAAC;CACrF,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,yBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACkB;EACvF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"location.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/location.ts"],"sourcesContent":["import {\n WEAPP_VITE_WEB_CHOOSE_ADDRESS_KEY,\n WEAPP_VITE_WEB_CHOOSE_LOCATION_KEY,\n WEAPP_VITE_WEB_FUZZY_LOCATION_KEY,\n} from '@weapp-core/constants'\n\nconst ADDRESS_PROMPT_SPLIT_RE = /[,,]/\n\nexport function normalizeGeoNumber(value: unknown, fallback = 0) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return fallback\n }\n return value\n}\n\ninterface ReadCurrentLocationOptions {\n isHighAccuracy?: boolean\n altitude?: boolean\n highAccuracyExpireTime?: number\n}\n\ninterface LocationCoordinatesSnapshot {\n latitude: number\n longitude: number\n speed: number\n accuracy: number\n altitude: number\n verticalAccuracy: number\n horizontalAccuracy: number\n}\n\nexport function readCurrentLocation(options?: ReadCurrentLocationOptions) {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n geolocation?: {\n getCurrentPosition?: (\n success: (position: {\n coords: {\n latitude?: number\n longitude?: number\n speed?: number | null\n accuracy?: number\n altitude?: number | null\n altitudeAccuracy?: number | null\n }\n }) => void,\n error?: (err: { message?: string }) => void,\n opts?: {\n enableHighAccuracy?: boolean\n timeout?: number\n },\n ) => void\n }\n }) | undefined\n const geolocation = runtimeNavigator?.geolocation\n if (!geolocation || typeof geolocation.getCurrentPosition !== 'function') {\n throw new Error('geolocation is unavailable')\n }\n const timeout = typeof options?.highAccuracyExpireTime === 'number' && options.highAccuracyExpireTime > 0\n ? options.highAccuracyExpireTime\n : undefined\n return new Promise<LocationCoordinatesSnapshot>((resolve, reject) => {\n geolocation.getCurrentPosition(\n (position) => {\n const coords = position.coords ?? {}\n const accuracy = normalizeGeoNumber(coords.accuracy, 0)\n resolve({\n latitude: normalizeGeoNumber(coords.latitude, 0),\n longitude: normalizeGeoNumber(coords.longitude, 0),\n speed: normalizeGeoNumber(coords.speed, -1),\n accuracy,\n altitude: normalizeGeoNumber(coords.altitude, 0),\n verticalAccuracy: normalizeGeoNumber(coords.altitudeAccuracy, 0),\n horizontalAccuracy: accuracy,\n })\n },\n (error) => {\n reject(new Error(error?.message ?? 'unknown error'))\n },\n {\n enableHighAccuracy: Boolean(options?.isHighAccuracy || options?.altitude),\n timeout,\n },\n )\n })\n}\n\nexport function normalizeFuzzyCoordinate(value: number) {\n return Number(value.toFixed(2))\n}\n\nexport function readPresetFuzzyLocation() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_FUZZY_LOCATION_KEY]\n if (!preset || typeof preset !== 'object') {\n return null\n }\n const value = preset as Record<string, unknown>\n const latitude = Number(value.latitude)\n const longitude = Number(value.longitude)\n if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {\n return null\n }\n return {\n latitude: normalizeFuzzyCoordinate(latitude),\n longitude: normalizeFuzzyCoordinate(longitude),\n accuracy: Math.max(1000, normalizeGeoNumber(value.accuracy, 1000)),\n }\n}\n\nexport function readPresetChooseLocation() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_CHOOSE_LOCATION_KEY]\n if (!preset || typeof preset !== 'object') {\n return null\n }\n const value = preset as Record<string, unknown>\n const latitude = Number(value.latitude)\n const longitude = Number(value.longitude)\n if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {\n return null\n }\n return {\n name: typeof value.name === 'string' ? value.name : '',\n address: typeof value.address === 'string' ? value.address : '',\n latitude,\n longitude,\n }\n}\n\nexport function readPresetChooseAddress() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_CHOOSE_ADDRESS_KEY]\n if (!preset || typeof preset !== 'object') {\n return null\n }\n const value = preset as Record<string, unknown>\n return {\n userName: typeof value.userName === 'string' ? value.userName : '',\n postalCode: typeof value.postalCode === 'string' ? value.postalCode : '',\n provinceName: typeof value.provinceName === 'string' ? value.provinceName : '',\n cityName: typeof value.cityName === 'string' ? value.cityName : '',\n countyName: typeof value.countyName === 'string' ? value.countyName : '',\n detailInfo: typeof value.detailInfo === 'string' ? value.detailInfo : '',\n nationalCode: typeof value.nationalCode === 'string' ? value.nationalCode : '',\n telNumber: typeof value.telNumber === 'string' ? value.telNumber : '',\n }\n}\n\nexport function parseChooseAddressPromptInput(input: unknown) {\n const [provinceName = '', cityName = '', countyName = '', detailInfo = '', userName = '', telNumber = '']\n = String(input).split(ADDRESS_PROMPT_SPLIT_RE).map(item => item.trim())\n if (!provinceName || !cityName || !countyName || !detailInfo) {\n return null\n }\n return {\n userName,\n postalCode: '',\n provinceName,\n cityName,\n countyName,\n detailInfo,\n nationalCode: '',\n telNumber,\n }\n}\n\nexport function parseChooseLocationPromptInput(input: unknown) {\n const [latText = '', lonText = ''] = String(input).split(',').map(item => item.trim())\n const latitude = Number(latText)\n const longitude = Number(lonText)\n if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {\n return null\n }\n return {\n latitude,\n longitude,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"location.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/location.ts"],"sourcesContent":["import {\n WEAPP_VITE_WEB_CHOOSE_ADDRESS_KEY,\n WEAPP_VITE_WEB_CHOOSE_LOCATION_KEY,\n WEAPP_VITE_WEB_FUZZY_LOCATION_KEY,\n} from '@weapp-core/constants'\n\nconst ADDRESS_PROMPT_SPLIT_RE = /[,,]/\n\nexport function normalizeGeoNumber(value: unknown, fallback = 0) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return fallback\n }\n return value\n}\n\ninterface ReadCurrentLocationOptions {\n isHighAccuracy?: boolean\n altitude?: boolean\n highAccuracyExpireTime?: number\n}\n\ninterface LocationCoordinatesSnapshot {\n latitude: number\n longitude: number\n speed: number\n accuracy: number\n altitude: number\n verticalAccuracy: number\n horizontalAccuracy: number\n}\n\nexport function readCurrentLocation(options?: ReadCurrentLocationOptions) {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n geolocation?: {\n getCurrentPosition?: (\n success: (position: {\n coords: {\n latitude?: number\n longitude?: number\n speed?: number | null\n accuracy?: number\n altitude?: number | null\n altitudeAccuracy?: number | null\n }\n }) => void,\n error?: (err: { message?: string }) => void,\n opts?: {\n enableHighAccuracy?: boolean\n timeout?: number\n },\n ) => void\n }\n }) | undefined\n const geolocation = runtimeNavigator?.geolocation\n if (!geolocation || typeof geolocation.getCurrentPosition !== 'function') {\n throw new Error('geolocation is unavailable')\n }\n const timeout = typeof options?.highAccuracyExpireTime === 'number' && options.highAccuracyExpireTime > 0\n ? options.highAccuracyExpireTime\n : undefined\n return new Promise<LocationCoordinatesSnapshot>((resolve, reject) => {\n geolocation.getCurrentPosition(\n (position) => {\n const coords = position.coords ?? {}\n const accuracy = normalizeGeoNumber(coords.accuracy, 0)\n resolve({\n latitude: normalizeGeoNumber(coords.latitude, 0),\n longitude: normalizeGeoNumber(coords.longitude, 0),\n speed: normalizeGeoNumber(coords.speed, -1),\n accuracy,\n altitude: normalizeGeoNumber(coords.altitude, 0),\n verticalAccuracy: normalizeGeoNumber(coords.altitudeAccuracy, 0),\n horizontalAccuracy: accuracy,\n })\n },\n (error) => {\n reject(new Error(error?.message ?? 'unknown error'))\n },\n {\n enableHighAccuracy: Boolean(options?.isHighAccuracy || options?.altitude),\n timeout,\n },\n )\n })\n}\n\nexport function normalizeFuzzyCoordinate(value: number) {\n return Number(value.toFixed(2))\n}\n\nexport function readPresetFuzzyLocation() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_FUZZY_LOCATION_KEY]\n if (!preset || typeof preset !== 'object') {\n return null\n }\n const value = preset as Record<string, unknown>\n const latitude = Number(value.latitude)\n const longitude = Number(value.longitude)\n if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {\n return null\n }\n return {\n latitude: normalizeFuzzyCoordinate(latitude),\n longitude: normalizeFuzzyCoordinate(longitude),\n accuracy: Math.max(1000, normalizeGeoNumber(value.accuracy, 1000)),\n }\n}\n\nexport function readPresetChooseLocation() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_CHOOSE_LOCATION_KEY]\n if (!preset || typeof preset !== 'object') {\n return null\n }\n const value = preset as Record<string, unknown>\n const latitude = Number(value.latitude)\n const longitude = Number(value.longitude)\n if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {\n return null\n }\n return {\n name: typeof value.name === 'string' ? value.name : '',\n address: typeof value.address === 'string' ? value.address : '',\n latitude,\n longitude,\n }\n}\n\nexport function readPresetChooseAddress() {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_CHOOSE_ADDRESS_KEY]\n if (!preset || typeof preset !== 'object') {\n return null\n }\n const value = preset as Record<string, unknown>\n return {\n userName: typeof value.userName === 'string' ? value.userName : '',\n postalCode: typeof value.postalCode === 'string' ? value.postalCode : '',\n provinceName: typeof value.provinceName === 'string' ? value.provinceName : '',\n cityName: typeof value.cityName === 'string' ? value.cityName : '',\n countyName: typeof value.countyName === 'string' ? value.countyName : '',\n detailInfo: typeof value.detailInfo === 'string' ? value.detailInfo : '',\n nationalCode: typeof value.nationalCode === 'string' ? value.nationalCode : '',\n telNumber: typeof value.telNumber === 'string' ? value.telNumber : '',\n }\n}\n\nexport function parseChooseAddressPromptInput(input: unknown) {\n const [provinceName = '', cityName = '', countyName = '', detailInfo = '', userName = '', telNumber = '']\n = String(input).split(ADDRESS_PROMPT_SPLIT_RE).map(item => item.trim())\n if (!provinceName || !cityName || !countyName || !detailInfo) {\n return null\n }\n return {\n userName,\n postalCode: '',\n provinceName,\n cityName,\n countyName,\n detailInfo,\n nationalCode: '',\n telNumber,\n }\n}\n\nexport function parseChooseLocationPromptInput(input: unknown) {\n const [latText = '', lonText = ''] = String(input).split(',').map(item => item.trim())\n const latitude = Number(latText)\n const longitude = Number(lonText)\n if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {\n return null\n }\n return {\n latitude,\n longitude,\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"locationApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/locationApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n normalizeFuzzyCoordinate,\n normalizeGeoNumber,\n parseChooseAddressPromptInput,\n parseChooseLocationPromptInput,\n readCurrentLocation,\n readPresetChooseAddress,\n readPresetChooseLocation,\n readPresetFuzzyLocation,\n} from './location'\nimport { openTargetInNewWindow } from './mediaActions'\nimport { getGlobalDialogHandlers } from './ui'\n\nexport function makePhoneCallBridge(options?: any) {\n const phoneNumber = typeof options?.phoneNumber === 'string' ? options.phoneNumber.trim() : ''\n if (!phoneNumber) {\n const failure = callMiniProgramAsyncFailure(options, 'makePhoneCall:fail invalid phoneNumber')\n return Promise.reject(failure)\n }\n if (typeof window !== 'undefined' && typeof window.open === 'function') {\n try {\n window.open(`tel:${encodeURIComponent(phoneNumber)}`, '_self')\n }\n catch {\n // ignore browser restrictions and keep API-level success semantics\n }\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'makePhoneCall:ok' }))\n}\n\nexport function chooseAddressBridge(options?: any) {\n const preset = readPresetChooseAddress()\n if (preset) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseAddress:ok',\n ...preset,\n }))\n }\n const { prompt } = getGlobalDialogHandlers()\n if (typeof prompt === 'function') {\n const input = prompt('请输入地址(格式:省,市,区,详细地址,姓名,电话)', '')\n if (input == null) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseAddress:fail cancel')\n return Promise.reject(failure)\n }\n const parsed = parseChooseAddressPromptInput(input)\n if (!parsed) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseAddress:fail invalid input')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseAddress:ok',\n ...parsed,\n }))\n }\n const failure = callMiniProgramAsyncFailure(options, 'chooseAddress:fail address picker is unavailable')\n return Promise.reject(failure)\n}\n\nexport function chooseLocationBridge(options?: any) {\n const preset = readPresetChooseLocation()\n if (preset) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseLocation:ok',\n ...preset,\n }))\n }\n const { prompt } = getGlobalDialogHandlers()\n if (typeof prompt === 'function') {\n const input = prompt('请输入坐标(格式:latitude,longitude)', '')\n if (input == null) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseLocation:fail cancel')\n return Promise.reject(failure)\n }\n const parsed = parseChooseLocationPromptInput(input)\n if (!parsed) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseLocation:fail invalid latitude/longitude')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseLocation:ok',\n name: '',\n address: '',\n latitude: parsed.latitude,\n longitude: parsed.longitude,\n }))\n }\n const failure = callMiniProgramAsyncFailure(options, 'chooseLocation:fail location picker is unavailable')\n return Promise.reject(failure)\n}\n\nexport function openLocationBridge(options?: any) {\n const latitude = options?.latitude\n const longitude = options?.longitude\n if (typeof latitude !== 'number' || Number.isNaN(latitude) || typeof longitude !== 'number' || Number.isNaN(longitude)) {\n const failure = callMiniProgramAsyncFailure(options, 'openLocation:fail invalid latitude/longitude')\n return Promise.reject(failure)\n }\n const query = `${latitude},${longitude}`\n const target = `https://maps.google.com/?q=${encodeURIComponent(query)}`\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'openLocation:ok' }))\n}\n\nexport function getLocationBridge(options?: any) {\n try {\n return readCurrentLocation(options)\n .then(location => callMiniProgramAsyncSuccess(options, {\n errMsg: 'getLocation:ok',\n ...location,\n }))\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getLocation:fail ${message}`)\n return Promise.reject(failure)\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getLocation:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function getFuzzyLocationBridge(options?: any) {\n const preset = readPresetFuzzyLocation()\n if (preset) {\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getFuzzyLocation:ok',\n ...preset,\n })\n }\n try {\n const location = await getLocationBridge()\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getFuzzyLocation:ok',\n latitude: normalizeFuzzyCoordinate(location.latitude),\n longitude: normalizeFuzzyCoordinate(location.longitude),\n accuracy: Math.max(1000, normalizeGeoNumber(location.accuracy, 1000)),\n })\n }\n catch (error) {\n const message = typeof (error as { errMsg?: unknown })?.errMsg === 'string'\n ? (error as { errMsg: string }).errMsg\n : error instanceof Error\n ? error.message\n : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getFuzzyLocation:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,oBAAoB,SAAe;CACjD,MAAM,cAAc,OAAO,SAAS,gBAAgB,WAAW,QAAQ,YAAY,MAAM,GAAG;CAC5F,IAAI,CAAC,aAAa;EAChB,MAAM,UAAU,4BAA4B,SAAS,yCAAyC;EAC9F,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,IAAI,OAAO,WAAW,eAAe,OAAO,OAAO,SAAS,YAC1D,IAAI;EACF,OAAO,KAAK,OAAO,mBAAmB,YAAY,IAAI,QAAQ;SAE1D;CAIR,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,oBAAoB,CAAC,CAAC;;AAG9F,SAAgB,oBAAoB,SAAe;CACjD,MAAM,SAAS,yBAAyB;CACxC,IAAI,QACF,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;EACJ,CAAC,CAAC;CAEL,MAAM,EAAE,WAAW,yBAAyB;CAC5C,IAAI,OAAO,WAAW,YAAY;EAChC,MAAM,QAAQ,OAAO,8BAA8B,GAAG;EACtD,IAAI,SAAS,MAAM;GACjB,MAAM,UAAU,4BAA4B,SAAS,4BAA4B;GACjF,OAAO,QAAQ,OAAO,QAAQ;;EAEhC,MAAM,SAAS,8BAA8B,MAAM;EACnD,IAAI,CAAC,QAAQ;GACX,MAAM,UAAU,4BAA4B,SAAS,mCAAmC;GACxF,OAAO,QAAQ,OAAO,QAAQ;;EAEhC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;GAC1D,QAAQ;GACR,GAAG;GACJ,CAAC,CAAC;;CAEL,MAAM,UAAU,4BAA4B,SAAS,mDAAmD;CACxG,OAAO,QAAQ,OAAO,QAAQ;;AAGhC,SAAgB,qBAAqB,SAAe;CAClD,MAAM,SAAS,0BAA0B;CACzC,IAAI,QACF,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;EACJ,CAAC,CAAC;CAEL,MAAM,EAAE,WAAW,yBAAyB;CAC5C,IAAI,OAAO,WAAW,YAAY;EAChC,MAAM,QAAQ,OAAO,gCAAgC,GAAG;EACxD,IAAI,SAAS,MAAM;GACjB,MAAM,UAAU,4BAA4B,SAAS,6BAA6B;GAClF,OAAO,QAAQ,OAAO,QAAQ;;EAEhC,MAAM,SAAS,+BAA+B,MAAM;EACpD,IAAI,CAAC,QAAQ;GACX,MAAM,UAAU,4BAA4B,SAAS,iDAAiD;GACtG,OAAO,QAAQ,OAAO,QAAQ;;EAEhC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;GAC1D,QAAQ;GACR,MAAM;GACN,SAAS;GACT,UAAU,OAAO;GACjB,WAAW,OAAO;GACnB,CAAC,CAAC;;CAEL,MAAM,UAAU,4BAA4B,SAAS,qDAAqD;CAC1G,OAAO,QAAQ,OAAO,QAAQ;;AAGhC,SAAgB,mBAAmB,SAAe;CAChD,MAAM,WAAW,SAAS;CAC1B,MAAM,YAAY,SAAS;CAC3B,IAAI,OAAO,aAAa,YAAY,OAAO,MAAM,SAAS,IAAI,OAAO,cAAc,YAAY,OAAO,MAAM,UAAU,EAAE;EACtH,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;EACpG,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,QAAQ,GAAG,SAAS,GAAG;CAE7B,sBAAsB,8BADuB,mBAAmB,MAAM,GACzC;CAC7B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;;AAG7F,SAAgB,kBAAkB,SAAe;CAC/C,IAAI;EACF,OAAO,oBAAoB,QAAQ,CAChC,MAAK,aAAY,4BAA4B,SAAS;GACrD,QAAQ;GACR,GAAG;GACJ,CAAC,CAAC,CACF,OAAO,UAAU;GAEhB,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACa;GACnF,OAAO,QAAQ,OAAO,QAAQ;IAC9B;UAEC,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACa;EACnF,OAAO,QAAQ,OAAO,QAAQ;;;AAIlC,eAAsB,uBAAuB,SAAe;CAC1D,MAAM,SAAS,yBAAyB;CACxC,IAAI,QACF,OAAO,4BAA4B,SAAS;EAC1C,QAAQ;EACR,GAAG;EACJ,CAAC;CAEJ,IAAI;EACF,MAAM,WAAW,MAAM,mBAAmB;EAC1C,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,UAAU,yBAAyB,SAAS,SAAS;GACrD,WAAW,yBAAyB,SAAS,UAAU;GACvD,UAAU,KAAK,IAAI,KAAM,mBAAmB,SAAS,UAAU,IAAK,CAAC;GACtE,CAAC;UAEG,OAAO;EAMZ,MAAM,UAAU,4BAA4B,SAAS,yBALrC,OAAQ,OAAgC,WAAW,WAC9D,MAA6B,SAC9B,iBAAiB,QACf,MAAM,UACN,OAAO,MAAM,GACqE;EACxF,OAAO,QAAQ,OAAO,QAAQ"}
1
+ {"version":3,"file":"locationApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/locationApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n normalizeFuzzyCoordinate,\n normalizeGeoNumber,\n parseChooseAddressPromptInput,\n parseChooseLocationPromptInput,\n readCurrentLocation,\n readPresetChooseAddress,\n readPresetChooseLocation,\n readPresetFuzzyLocation,\n} from './location'\nimport { openTargetInNewWindow } from './mediaActions'\nimport { getGlobalDialogHandlers } from './ui'\n\nexport function makePhoneCallBridge(options?: any) {\n const phoneNumber = typeof options?.phoneNumber === 'string' ? options.phoneNumber.trim() : ''\n if (!phoneNumber) {\n const failure = callMiniProgramAsyncFailure(options, 'makePhoneCall:fail invalid phoneNumber')\n return Promise.reject(failure)\n }\n if (typeof window !== 'undefined' && typeof window.open === 'function') {\n try {\n window.open(`tel:${encodeURIComponent(phoneNumber)}`, '_self')\n }\n catch {\n // ignore browser restrictions and keep API-level success semantics\n }\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'makePhoneCall:ok' }))\n}\n\nexport function chooseAddressBridge(options?: any) {\n const preset = readPresetChooseAddress()\n if (preset) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseAddress:ok',\n ...preset,\n }))\n }\n const { prompt } = getGlobalDialogHandlers()\n if (typeof prompt === 'function') {\n const input = prompt('请输入地址(格式:省,市,区,详细地址,姓名,电话)', '')\n if (input == null) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseAddress:fail cancel')\n return Promise.reject(failure)\n }\n const parsed = parseChooseAddressPromptInput(input)\n if (!parsed) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseAddress:fail invalid input')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseAddress:ok',\n ...parsed,\n }))\n }\n const failure = callMiniProgramAsyncFailure(options, 'chooseAddress:fail address picker is unavailable')\n return Promise.reject(failure)\n}\n\nexport function chooseLocationBridge(options?: any) {\n const preset = readPresetChooseLocation()\n if (preset) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseLocation:ok',\n ...preset,\n }))\n }\n const { prompt } = getGlobalDialogHandlers()\n if (typeof prompt === 'function') {\n const input = prompt('请输入坐标(格式:latitude,longitude)', '')\n if (input == null) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseLocation:fail cancel')\n return Promise.reject(failure)\n }\n const parsed = parseChooseLocationPromptInput(input)\n if (!parsed) {\n const failure = callMiniProgramAsyncFailure(options, 'chooseLocation:fail invalid latitude/longitude')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseLocation:ok',\n name: '',\n address: '',\n latitude: parsed.latitude,\n longitude: parsed.longitude,\n }))\n }\n const failure = callMiniProgramAsyncFailure(options, 'chooseLocation:fail location picker is unavailable')\n return Promise.reject(failure)\n}\n\nexport function openLocationBridge(options?: any) {\n const latitude = options?.latitude\n const longitude = options?.longitude\n if (typeof latitude !== 'number' || Number.isNaN(latitude) || typeof longitude !== 'number' || Number.isNaN(longitude)) {\n const failure = callMiniProgramAsyncFailure(options, 'openLocation:fail invalid latitude/longitude')\n return Promise.reject(failure)\n }\n const query = `${latitude},${longitude}`\n const target = `https://maps.google.com/?q=${encodeURIComponent(query)}`\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'openLocation:ok' }))\n}\n\nexport function getLocationBridge(options?: any) {\n try {\n return readCurrentLocation(options)\n .then(location => callMiniProgramAsyncSuccess(options, {\n errMsg: 'getLocation:ok',\n ...location,\n }))\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getLocation:fail ${message}`)\n return Promise.reject(failure)\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getLocation:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function getFuzzyLocationBridge(options?: any) {\n const preset = readPresetFuzzyLocation()\n if (preset) {\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getFuzzyLocation:ok',\n ...preset,\n })\n }\n try {\n const location = await getLocationBridge()\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getFuzzyLocation:ok',\n latitude: normalizeFuzzyCoordinate(location.latitude),\n longitude: normalizeFuzzyCoordinate(location.longitude),\n accuracy: Math.max(1000, normalizeGeoNumber(location.accuracy, 1000)),\n })\n }\n catch (error) {\n const message = typeof (error as { errMsg?: unknown })?.errMsg === 'string'\n ? (error as { errMsg: string }).errMsg\n : error instanceof Error\n ? error.message\n : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getFuzzyLocation:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mediaActions.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/mediaActions.ts"],"sourcesContent":["import { WEAPP_VITE_WEB_OPEN_VIDEO_EDITOR_KEY } from '@weapp-core/constants'\n\ninterface PreviewMediaSourceRecord {\n url: string\n type: 'image' | 'video'\n poster: string\n}\n\nexport function openTargetInNewWindow(target: string) {\n if (typeof window === 'undefined' || typeof window.open !== 'function') {\n return\n }\n try {\n window.open(target, '_blank', 'noopener,noreferrer')\n }\n catch {\n // ignore browser popup restrictions and keep API-level success semantics\n }\n}\n\nexport function normalizePreviewMediaSources(sources: unknown): PreviewMediaSourceRecord[] {\n if (!Array.isArray(sources)) {\n return []\n }\n return sources\n .map((source) => {\n if (!source || typeof source !== 'object') {\n return null\n }\n const sourceRecord = source as Record<string, unknown>\n const url = typeof sourceRecord.url === 'string' ? sourceRecord.url.trim() : ''\n if (!url) {\n return null\n }\n return {\n url,\n type: sourceRecord.type === 'video' ? 'video' : 'image',\n poster: typeof sourceRecord.poster === 'string' ? sourceRecord.poster : '',\n }\n })\n .filter((item): item is PreviewMediaSourceRecord => Boolean(item))\n}\n\nexport function readOpenVideoEditorPreset(src: string) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_OPEN_VIDEO_EDITOR_KEY]\n if (typeof preset === 'function') {\n const value = (preset as (value: string) => unknown)(src)\n return typeof value === 'string' && value.trim() ? value.trim() : ''\n }\n if (typeof preset === 'string' && preset.trim()) {\n return preset.trim()\n }\n if (preset && typeof preset === 'object') {\n const value = (preset as Record<string, unknown>)[src]\n return typeof value === 'string' && value.trim() ? value.trim() : ''\n }\n return ''\n}\n\nexport function triggerDownload(filePath: string, fileName = '') {\n if (typeof document === 'undefined' || !document.body) {\n return\n }\n try {\n const link = document.createElement('a')\n link.setAttribute('href', filePath)\n link.setAttribute('download', fileName)\n link.setAttribute('style', 'display:none')\n document.body.append(link)\n link.click?.()\n if (link.parentNode) {\n link.parentNode.removeChild(link)\n }\n }\n catch {\n // keep API-level success semantics for browser restrictions\n }\n}\n"],"mappings":";;;AAQA,SAAgB,sBAAsB,QAAgB;CACpD,IAAI,OAAO,WAAW,eAAe,OAAO,OAAO,SAAS,YAC1D;CAEF,IAAI;EACF,OAAO,KAAK,QAAQ,UAAU,sBAAsB;SAEhD;;AAKR,SAAgB,6BAA6B,SAA8C;CACzF,IAAI,CAAC,MAAM,QAAQ,QAAQ,EACzB,OAAO,EAAE;CAEX,OAAO,QACJ,KAAK,WAAW;EACf,IAAI,CAAC,UAAU,OAAO,WAAW,UAC/B,OAAO;EAET,MAAM,eAAe;EACrB,MAAM,MAAM,OAAO,aAAa,QAAQ,WAAW,aAAa,IAAI,MAAM,GAAG;EAC7E,IAAI,CAAC,KACH,OAAO;EAET,OAAO;GACL;GACA,MAAM,aAAa,SAAS,UAAU,UAAU;GAChD,QAAQ,OAAO,aAAa,WAAW,WAAW,aAAa,SAAS;GACzE;GACD,CACD,QAAQ,SAA2C,QAAQ,KAAK,CAAC;;AAGtE,SAAgB,0BAA0B,KAAa;CAErD,MAAM,SAASA,WAAc;CAC7B,IAAI,OAAO,WAAW,YAAY;EAChC,MAAM,QAAS,OAAsC,IAAI;EACzD,OAAO,OAAO,UAAU,YAAY,MAAM,MAAM,GAAG,MAAM,MAAM,GAAG;;CAEpE,IAAI,OAAO,WAAW,YAAY,OAAO,MAAM,EAC7C,OAAO,OAAO,MAAM;CAEtB,IAAI,UAAU,OAAO,WAAW,UAAU;EACxC,MAAM,QAAS,OAAmC;EAClD,OAAO,OAAO,UAAU,YAAY,MAAM,MAAM,GAAG,MAAM,MAAM,GAAG;;CAEpE,OAAO;;AAGT,SAAgB,gBAAgB,UAAkB,WAAW,IAAI;CAC/D,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,MAC/C;CAEF,IAAI;EACF,MAAM,OAAO,SAAS,cAAc,IAAI;EACxC,KAAK,aAAa,QAAQ,SAAS;EACnC,KAAK,aAAa,YAAY,SAAS;EACvC,KAAK,aAAa,SAAS,eAAe;EAC1C,SAAS,KAAK,OAAO,KAAK;EAC1B,KAAK,SAAS;EACd,IAAI,KAAK,YACP,KAAK,WAAW,YAAY,KAAK;SAG/B"}
1
+ {"version":3,"file":"mediaActions.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/mediaActions.ts"],"sourcesContent":["import { WEAPP_VITE_WEB_OPEN_VIDEO_EDITOR_KEY } from '@weapp-core/constants'\n\ninterface PreviewMediaSourceRecord {\n url: string\n type: 'image' | 'video'\n poster: string\n}\n\nexport function openTargetInNewWindow(target: string) {\n if (typeof window === 'undefined' || typeof window.open !== 'function') {\n return\n }\n try {\n window.open(target, '_blank', 'noopener,noreferrer')\n }\n catch {\n // ignore browser popup restrictions and keep API-level success semantics\n }\n}\n\nexport function normalizePreviewMediaSources(sources: unknown): PreviewMediaSourceRecord[] {\n if (!Array.isArray(sources)) {\n return []\n }\n return sources\n .map((source) => {\n if (!source || typeof source !== 'object') {\n return null\n }\n const sourceRecord = source as Record<string, unknown>\n const url = typeof sourceRecord.url === 'string' ? sourceRecord.url.trim() : ''\n if (!url) {\n return null\n }\n return {\n url,\n type: sourceRecord.type === 'video' ? 'video' : 'image',\n poster: typeof sourceRecord.poster === 'string' ? sourceRecord.poster : '',\n }\n })\n .filter((item): item is PreviewMediaSourceRecord => Boolean(item))\n}\n\nexport function readOpenVideoEditorPreset(src: string) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_OPEN_VIDEO_EDITOR_KEY]\n if (typeof preset === 'function') {\n const value = (preset as (value: string) => unknown)(src)\n return typeof value === 'string' && value.trim() ? value.trim() : ''\n }\n if (typeof preset === 'string' && preset.trim()) {\n return preset.trim()\n }\n if (preset && typeof preset === 'object') {\n const value = (preset as Record<string, unknown>)[src]\n return typeof value === 'string' && value.trim() ? value.trim() : ''\n }\n return ''\n}\n\nexport function triggerDownload(filePath: string, fileName = '') {\n if (typeof document === 'undefined' || !document.body) {\n return\n }\n try {\n const link = document.createElement('a')\n link.setAttribute('href', filePath)\n link.setAttribute('download', fileName)\n link.setAttribute('style', 'display:none')\n document.body.append(link)\n link.click?.()\n if (link.parentNode) {\n link.parentNode.removeChild(link)\n }\n }\n catch {\n // keep API-level success semantics for browser restrictions\n }\n}\n"],"mappings":";;;AAQA,SAAgB,sBAAsB,QAAgB;CACpD,IAAI,OAAO,WAAW,eAAe,OAAO,OAAO,SAAS,YAC1D;CAEF,IAAI;EACF,OAAO,KAAK,QAAQ,UAAU,qBAAqB;CACrD,QACM,CAEN;AACF;AAEA,SAAgB,6BAA6B,SAA8C;CACzF,IAAI,CAAC,MAAM,QAAQ,OAAO,GACxB,OAAO,CAAC;CAEV,OAAO,QACJ,KAAK,WAAW;EACf,IAAI,CAAC,UAAU,OAAO,WAAW,UAC/B,OAAO;EAET,MAAM,eAAe;EACrB,MAAM,MAAM,OAAO,aAAa,QAAQ,WAAW,aAAa,IAAI,KAAK,IAAI;EAC7E,IAAI,CAAC,KACH,OAAO;EAET,OAAO;GACL;GACA,MAAM,aAAa,SAAS,UAAU,UAAU;GAChD,QAAQ,OAAO,aAAa,WAAW,WAAW,aAAa,SAAS;EAC1E;CACF,CAAC,EACA,QAAQ,SAA2C,QAAQ,IAAI,CAAC;AACrE;AAEA,SAAgB,0BAA0B,KAAa;CAErD,MAAM,SAASA,WAAc;CAC7B,IAAI,OAAO,WAAW,YAAY;EAChC,MAAM,QAAS,OAAsC,GAAG;EACxD,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;CACpE;CACA,IAAI,OAAO,WAAW,YAAY,OAAO,KAAK,GAC5C,OAAO,OAAO,KAAK;CAErB,IAAI,UAAU,OAAO,WAAW,UAAU;EACxC,MAAM,QAAS,OAAmC;EAClD,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;CACpE;CACA,OAAO;AACT;AAEA,SAAgB,gBAAgB,UAAkB,WAAW,IAAI;CAC/D,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,MAC/C;CAEF,IAAI;EACF,MAAM,OAAO,SAAS,cAAc,GAAG;EACvC,KAAK,aAAa,QAAQ,QAAQ;EAClC,KAAK,aAAa,YAAY,QAAQ;EACtC,KAAK,aAAa,SAAS,cAAc;EACzC,SAAS,KAAK,OAAO,IAAI;EACzB,KAAK,QAAQ;EACb,IAAI,KAAK,YACP,KAAK,WAAW,YAAY,IAAI;CAEpC,QACM,CAEN;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"file.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/file.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n normalizeFilePath,\n resolveOpenDocumentUrl,\n resolveSaveFilePath,\n saveMemoryFile,\n} from '../files'\nimport {\n openTargetInNewWindow,\n triggerDownload,\n} from '../mediaActions'\n\nexport function saveImageToPhotosAlbumBridge(options?: any) {\n const filePath = typeof options?.filePath === 'string' ? options.filePath.trim() : ''\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveImageToPhotosAlbum:fail invalid filePath')\n return Promise.reject(failure)\n }\n triggerDownload(filePath)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'saveImageToPhotosAlbum:ok' }))\n}\n\nexport function saveVideoToPhotosAlbumBridge(options?: any) {\n const filePath = typeof options?.filePath === 'string' ? options.filePath.trim() : ''\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveVideoToPhotosAlbum:fail invalid filePath')\n return Promise.reject(failure)\n }\n triggerDownload(filePath)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'saveVideoToPhotosAlbum:ok' }))\n}\n\nexport function saveFileBridge(options?: any) {\n const tempFilePath = typeof options?.tempFilePath === 'string' ? options.tempFilePath.trim() : ''\n if (!tempFilePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveFile:fail invalid tempFilePath')\n return Promise.reject(failure)\n }\n const savedFilePath = resolveSaveFilePath(tempFilePath, options?.filePath)\n saveMemoryFile(tempFilePath, savedFilePath)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'saveFile:ok',\n savedFilePath,\n }))\n}\n\nexport function saveFileToDiskBridge(options?: any) {\n const filePath = typeof options?.filePath === 'string' ? options.filePath.trim() : ''\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveFileToDisk:fail invalid filePath')\n return Promise.reject(failure)\n }\n const fileName = typeof options?.fileName === 'string' ? options.fileName.trim() : ''\n triggerDownload(filePath, fileName)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'saveFileToDisk:ok' }))\n}\n\nexport function openDocumentBridge(options?: any) {\n const filePath = normalizeFilePath(options?.filePath)\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'openDocument:fail invalid filePath')\n return Promise.reject(failure)\n }\n const target = resolveOpenDocumentUrl(filePath)\n if (!target) {\n const failure = callMiniProgramAsyncFailure(options, 'openDocument:fail document url is unavailable')\n return Promise.reject(failure)\n }\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'openDocument:ok' }))\n}\n"],"mappings":";;;;;AAeA,SAAgB,6BAA6B,SAAe;CAC1D,MAAM,WAAW,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,MAAM,GAAG;CACnF,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;EACpG,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,gBAAgB,SAAS;CACzB,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,6BAA6B,CAAC,CAAC;;AAGvG,SAAgB,6BAA6B,SAAe;CAC1D,MAAM,WAAW,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,MAAM,GAAG;CACnF,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;EACpG,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,gBAAgB,SAAS;CACzB,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,6BAA6B,CAAC,CAAC;;AAGvG,SAAgB,eAAe,SAAe;CAC5C,MAAM,eAAe,OAAO,SAAS,iBAAiB,WAAW,QAAQ,aAAa,MAAM,GAAG;CAC/F,IAAI,CAAC,cAAc;EACjB,MAAM,UAAU,4BAA4B,SAAS,qCAAqC;EAC1F,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,gBAAgB,oBAAoB,cAAc,SAAS,SAAS;CAC1E,eAAe,cAAc,cAAc;CAC3C,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;EACD,CAAC,CAAC;;AAGL,SAAgB,qBAAqB,SAAe;CAClD,MAAM,WAAW,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,MAAM,GAAG;CACnF,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,uCAAuC;EAC5F,OAAO,QAAQ,OAAO,QAAQ;;CAGhC,gBAAgB,UADC,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,MAAM,GAAG,GAChD;CACnC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,qBAAqB,CAAC,CAAC;;AAG/F,SAAgB,mBAAmB,SAAe;CAChD,MAAM,WAAW,kBAAkB,SAAS,SAAS;CACrD,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,qCAAqC;EAC1F,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,SAAS,uBAAuB,SAAS;CAC/C,IAAI,CAAC,QAAQ;EACX,MAAM,UAAU,4BAA4B,SAAS,gDAAgD;EACrG,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,sBAAsB,OAAO;CAC7B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"file.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/file.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n normalizeFilePath,\n resolveOpenDocumentUrl,\n resolveSaveFilePath,\n saveMemoryFile,\n} from '../files'\nimport {\n openTargetInNewWindow,\n triggerDownload,\n} from '../mediaActions'\n\nexport function saveImageToPhotosAlbumBridge(options?: any) {\n const filePath = typeof options?.filePath === 'string' ? options.filePath.trim() : ''\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveImageToPhotosAlbum:fail invalid filePath')\n return Promise.reject(failure)\n }\n triggerDownload(filePath)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'saveImageToPhotosAlbum:ok' }))\n}\n\nexport function saveVideoToPhotosAlbumBridge(options?: any) {\n const filePath = typeof options?.filePath === 'string' ? options.filePath.trim() : ''\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveVideoToPhotosAlbum:fail invalid filePath')\n return Promise.reject(failure)\n }\n triggerDownload(filePath)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'saveVideoToPhotosAlbum:ok' }))\n}\n\nexport function saveFileBridge(options?: any) {\n const tempFilePath = typeof options?.tempFilePath === 'string' ? options.tempFilePath.trim() : ''\n if (!tempFilePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveFile:fail invalid tempFilePath')\n return Promise.reject(failure)\n }\n const savedFilePath = resolveSaveFilePath(tempFilePath, options?.filePath)\n saveMemoryFile(tempFilePath, savedFilePath)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'saveFile:ok',\n savedFilePath,\n }))\n}\n\nexport function saveFileToDiskBridge(options?: any) {\n const filePath = typeof options?.filePath === 'string' ? options.filePath.trim() : ''\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'saveFileToDisk:fail invalid filePath')\n return Promise.reject(failure)\n }\n const fileName = typeof options?.fileName === 'string' ? options.fileName.trim() : ''\n triggerDownload(filePath, fileName)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'saveFileToDisk:ok' }))\n}\n\nexport function openDocumentBridge(options?: any) {\n const filePath = normalizeFilePath(options?.filePath)\n if (!filePath) {\n const failure = callMiniProgramAsyncFailure(options, 'openDocument:fail invalid filePath')\n return Promise.reject(failure)\n }\n const target = resolveOpenDocumentUrl(filePath)\n if (!target) {\n const failure = callMiniProgramAsyncFailure(options, 'openDocument:fail document url is unavailable')\n return Promise.reject(failure)\n }\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'openDocument:ok' }))\n}\n"],"mappings":";;;;;AAeA,SAAgB,6BAA6B,SAAe;CAC1D,MAAM,WAAW,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,KAAK,IAAI;CACnF,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,8CAA8C;EACnG,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,gBAAgB,QAAQ;CACxB,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,4BAA4B,CAAC,CAAC;AACtG;AAEA,SAAgB,6BAA6B,SAAe;CAC1D,MAAM,WAAW,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,KAAK,IAAI;CACnF,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,8CAA8C;EACnG,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,gBAAgB,QAAQ;CACxB,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,4BAA4B,CAAC,CAAC;AACtG;AAEA,SAAgB,eAAe,SAAe;CAC5C,MAAM,eAAe,OAAO,SAAS,iBAAiB,WAAW,QAAQ,aAAa,KAAK,IAAI;CAC/F,IAAI,CAAC,cAAc;EACjB,MAAM,UAAU,4BAA4B,SAAS,oCAAoC;EACzF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,gBAAgB,oBAAoB,cAAc,SAAS,QAAQ;CACzE,eAAe,cAAc,aAAa;CAC1C,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;CACF,CAAC,CAAC;AACJ;AAEA,SAAgB,qBAAqB,SAAe;CAClD,MAAM,WAAW,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,KAAK,IAAI;CACnF,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,sCAAsC;EAC3F,OAAO,QAAQ,OAAO,OAAO;CAC/B;CAEA,gBAAgB,UADC,OAAO,SAAS,aAAa,WAAW,QAAQ,SAAS,KAAK,IAAI,EACjD;CAClC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,oBAAoB,CAAC,CAAC;AAC9F;AAEA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,WAAW,kBAAkB,SAAS,QAAQ;CACpD,IAAI,CAAC,UAAU;EACb,MAAM,UAAU,4BAA4B,SAAS,oCAAoC;EACzF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,SAAS,uBAAuB,QAAQ;CAC9C,IAAI,CAAC,QAAQ;EACX,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;EACpG,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,sBAAsB,MAAM;CAC5B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,kBAAkB,CAAC,CAAC;AAC5F"}
@@ -1 +1 @@
1
- {"version":3,"file":"info.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/info.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n inferImageTypeFromPath,\n inferVideoTypeFromPath,\n normalizeVideoInfoNumber,\n readImageInfoFromSource,\n readPresetVideoInfo,\n readVideoInfoFromSource,\n} from '../mediaInfo'\n\nexport function getImageInfoBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'getImageInfo:fail invalid src')\n return Promise.reject(failure)\n }\n return readImageInfoFromSource(src)\n .then(({ width, height }) => callMiniProgramAsyncSuccess(options, {\n errMsg: 'getImageInfo:ok',\n width,\n height,\n path: src,\n type: inferImageTypeFromPath(src),\n orientation: 'up',\n }))\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getImageInfo:fail ${message}`)\n return Promise.reject(failure)\n })\n}\n\nexport function getVideoInfoBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'getVideoInfo:fail invalid src')\n return Promise.reject(failure)\n }\n const preset = readPresetVideoInfo(src)\n const resolveResult = async () => {\n if (preset) {\n return preset\n }\n return readVideoInfoFromSource(src)\n }\n return resolveResult()\n .then((result) => {\n const duration = normalizeVideoInfoNumber(result.duration)\n const width = normalizeVideoInfoNumber(result.width)\n const height = normalizeVideoInfoNumber(result.height)\n const bitrate = normalizeVideoInfoNumber((result as Record<string, unknown>).bitrate)\n const fps = normalizeVideoInfoNumber((result as Record<string, unknown>).fps)\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getVideoInfo:ok',\n orientation: 'up',\n type: inferVideoTypeFromPath(src),\n duration,\n size: normalizeVideoInfoNumber((result as Record<string, unknown>).size),\n width,\n height,\n bitrate,\n fps,\n })\n })\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getVideoInfo:fail ${message}`)\n return Promise.reject(failure)\n })\n}\n"],"mappings":";;;;AAaA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,MAAM,GAAG;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,gCAAgC;EACrF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,OAAO,wBAAwB,IAAI,CAChC,MAAM,EAAE,OAAO,aAAa,4BAA4B,SAAS;EAChE,QAAQ;EACR;EACA;EACA,MAAM;EACN,MAAM,uBAAuB,IAAI;EACjC,aAAa;EACd,CAAC,CAAC,CACF,OAAO,UAAU;EAEhB,MAAM,UAAU,4BAA4B,SAAS,qBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACc;EACpF,OAAO,QAAQ,OAAO,QAAQ;GAC9B;;AAGN,SAAgB,mBAAmB,SAAe;CAChD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,MAAM,GAAG;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,gCAAgC;EACrF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,SAAS,oBAAoB,IAAI;CACvC,MAAM,gBAAgB,YAAY;EAChC,IAAI,QACF,OAAO;EAET,OAAO,wBAAwB,IAAI;;CAErC,OAAO,eAAe,CACnB,MAAM,WAAW;EAChB,MAAM,WAAW,yBAAyB,OAAO,SAAS;EAC1D,MAAM,QAAQ,yBAAyB,OAAO,MAAM;EACpD,MAAM,SAAS,yBAAyB,OAAO,OAAO;EACtD,MAAM,UAAU,yBAA0B,OAAmC,QAAQ;EACrF,MAAM,MAAM,yBAA0B,OAAmC,IAAI;EAC7E,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,aAAa;GACb,MAAM,uBAAuB,IAAI;GACjC;GACA,MAAM,yBAA0B,OAAmC,KAAK;GACxE;GACA;GACA;GACA;GACD,CAAC;GACF,CACD,OAAO,UAAU;EAEhB,MAAM,UAAU,4BAA4B,SAAS,qBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACc;EACpF,OAAO,QAAQ,OAAO,QAAQ;GAC9B"}
1
+ {"version":3,"file":"info.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/info.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n inferImageTypeFromPath,\n inferVideoTypeFromPath,\n normalizeVideoInfoNumber,\n readImageInfoFromSource,\n readPresetVideoInfo,\n readVideoInfoFromSource,\n} from '../mediaInfo'\n\nexport function getImageInfoBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'getImageInfo:fail invalid src')\n return Promise.reject(failure)\n }\n return readImageInfoFromSource(src)\n .then(({ width, height }) => callMiniProgramAsyncSuccess(options, {\n errMsg: 'getImageInfo:ok',\n width,\n height,\n path: src,\n type: inferImageTypeFromPath(src),\n orientation: 'up',\n }))\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getImageInfo:fail ${message}`)\n return Promise.reject(failure)\n })\n}\n\nexport function getVideoInfoBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'getVideoInfo:fail invalid src')\n return Promise.reject(failure)\n }\n const preset = readPresetVideoInfo(src)\n const resolveResult = async () => {\n if (preset) {\n return preset\n }\n return readVideoInfoFromSource(src)\n }\n return resolveResult()\n .then((result) => {\n const duration = normalizeVideoInfoNumber(result.duration)\n const width = normalizeVideoInfoNumber(result.width)\n const height = normalizeVideoInfoNumber(result.height)\n const bitrate = normalizeVideoInfoNumber((result as Record<string, unknown>).bitrate)\n const fps = normalizeVideoInfoNumber((result as Record<string, unknown>).fps)\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'getVideoInfo:ok',\n orientation: 'up',\n type: inferVideoTypeFromPath(src),\n duration,\n size: normalizeVideoInfoNumber((result as Record<string, unknown>).size),\n width,\n height,\n bitrate,\n fps,\n })\n })\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `getVideoInfo:fail ${message}`)\n return Promise.reject(failure)\n })\n}\n"],"mappings":";;;;AAaA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,KAAK,IAAI;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,+BAA+B;EACpF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,OAAO,wBAAwB,GAAG,EAC/B,MAAM,EAAE,OAAO,aAAa,4BAA4B,SAAS;EAChE,QAAQ;EACR;EACA;EACA,MAAM;EACN,MAAM,uBAAuB,GAAG;EAChC,aAAa;CACf,CAAC,CAAC,EACD,OAAO,UAAU;EAEhB,MAAM,UAAU,4BAA4B,SAAS,qBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACc;EACnF,OAAO,QAAQ,OAAO,OAAO;CAC/B,CAAC;AACL;AAEA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,KAAK,IAAI;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,+BAA+B;EACpF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,SAAS,oBAAoB,GAAG;CACtC,MAAM,gBAAgB,YAAY;EAChC,IAAI,QACF,OAAO;EAET,OAAO,wBAAwB,GAAG;CACpC;CACA,OAAO,cAAc,EAClB,MAAM,WAAW;EAChB,MAAM,WAAW,yBAAyB,OAAO,QAAQ;EACzD,MAAM,QAAQ,yBAAyB,OAAO,KAAK;EACnD,MAAM,SAAS,yBAAyB,OAAO,MAAM;EACrD,MAAM,UAAU,yBAA0B,OAAmC,OAAO;EACpF,MAAM,MAAM,yBAA0B,OAAmC,GAAG;EAC5E,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,aAAa;GACb,MAAM,uBAAuB,GAAG;GAChC;GACA,MAAM,yBAA0B,OAAmC,IAAI;GACvE;GACA;GACA;GACA;EACF,CAAC;CACH,CAAC,EACA,OAAO,UAAU;EAEhB,MAAM,UAAU,4BAA4B,SAAS,qBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACc;EACnF,OAAO,QAAQ,OAAO,OAAO;CAC/B,CAAC;AACL"}
@@ -1 +1 @@
1
- {"version":3,"file":"picker.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/picker.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n normalizeChooseFileExtensions,\n normalizeChooseMessageFile,\n normalizeChooseMessageFileCount,\n normalizeChooseMessageFileType,\n pickChooseFileFiles,\n pickChooseMessageFiles,\n} from '../filePicker'\nimport {\n normalizeChooseImageCount,\n normalizeChooseImageFile,\n normalizeChooseMediaCount,\n normalizeChooseMediaFile,\n normalizeChooseMediaTypes,\n pickChooseImageFiles,\n pickChooseMediaFiles,\n} from '../mediaPicker'\nimport {\n normalizeChooseVideoFile,\n pickChooseVideoFile,\n} from '../mediaProcess'\n\nexport async function chooseImageBridge(options?: any) {\n const count = normalizeChooseImageCount(options?.count)\n try {\n const files = await pickChooseImageFiles(count)\n const tempFiles = files.map(file => normalizeChooseImageFile(file))\n const tempFilePaths = tempFiles.map(item => item.path)\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseImage:ok',\n tempFilePaths,\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseImage:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseMediaBridge(options?: any) {\n const count = normalizeChooseMediaCount(options?.count)\n const types = normalizeChooseMediaTypes(options?.mediaType)\n try {\n const files = await pickChooseMediaFiles(count, types)\n const tempFiles = files.map(file => normalizeChooseMediaFile(file))\n const defaultType = types.has('video') && !types.has('image') ? 'video' : 'image'\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseMedia:ok',\n type: tempFiles[0]?.fileType ?? defaultType,\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseMedia:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseVideoBridge(options?: any) {\n try {\n const file = await pickChooseVideoFile()\n if (!file) {\n throw new TypeError('no file selected')\n }\n const normalized = normalizeChooseVideoFile(file)\n if (!normalized) {\n throw new TypeError('selected file is not a video')\n }\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseVideo:ok',\n ...normalized,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseVideo:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseMessageFileBridge(options?: any) {\n const count = normalizeChooseMessageFileCount(options?.count)\n const type = normalizeChooseMessageFileType(options?.type)\n try {\n const files = await pickChooseMessageFiles(count, type)\n const tempFiles = files.map(file => normalizeChooseMessageFile(file))\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseMessageFile:ok',\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseMessageFile:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseFileBridge(options?: any) {\n const count = normalizeChooseMessageFileCount(options?.count)\n const type = normalizeChooseMessageFileType(options?.type)\n const extensions = normalizeChooseFileExtensions(options?.extension)\n try {\n const files = await pickChooseFileFiles(count, type, extensions)\n const tempFiles = files.map(file => normalizeChooseMessageFile(file))\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseFile:ok',\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseFile:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;;;AA0BA,eAAsB,kBAAkB,SAAe;CACrD,MAAM,QAAQ,0BAA0B,SAAS,MAAM;CACvD,IAAI;EAEF,MAAM,aAAY,MADE,qBAAqB,MAAM,EACvB,KAAI,SAAQ,yBAAyB,KAAK,CAAC;EAEnE,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,eAHoB,UAAU,KAAI,SAAQ,KAAK,KAGlC;GACb;GACD,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACa;EACnF,OAAO,QAAQ,OAAO,QAAQ;;;AAIlC,eAAsB,kBAAkB,SAAe;CACrD,MAAM,QAAQ,0BAA0B,SAAS,MAAM;CACvD,MAAM,QAAQ,0BAA0B,SAAS,UAAU;CAC3D,IAAI;EAEF,MAAM,aAAY,MADE,qBAAqB,OAAO,MAAM,EAC9B,KAAI,SAAQ,yBAAyB,KAAK,CAAC;EACnE,MAAM,cAAc,MAAM,IAAI,QAAQ,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,UAAU;EAC1E,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,MAAM,UAAU,IAAI,YAAY;GAChC;GACD,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACa;EACnF,OAAO,QAAQ,OAAO,QAAQ;;;AAIlC,eAAsB,kBAAkB,SAAe;CACrD,IAAI;EACF,MAAM,OAAO,MAAM,qBAAqB;EACxC,IAAI,CAAC,MACH,MAAM,IAAI,UAAU,mBAAmB;EAEzC,MAAM,aAAa,yBAAyB,KAAK;EACjD,IAAI,CAAC,YACH,MAAM,IAAI,UAAU,+BAA+B;EAErD,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,GAAG;GACJ,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACa;EACnF,OAAO,QAAQ,OAAO,QAAQ;;;AAIlC,eAAsB,wBAAwB,SAAe;CAC3D,MAAM,QAAQ,gCAAgC,SAAS,MAAM;CAC7D,MAAM,OAAO,+BAA+B,SAAS,KAAK;CAC1D,IAAI;EAGF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,YAHgB,MADE,uBAAuB,OAAO,KAAK,EAC/B,KAAI,SAAQ,2BAA2B,KAAK,CAGzD;GACV,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,0BADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACmB;EACzF,OAAO,QAAQ,OAAO,QAAQ;;;AAIlC,eAAsB,iBAAiB,SAAe;CACpD,MAAM,QAAQ,gCAAgC,SAAS,MAAM;CAC7D,MAAM,OAAO,+BAA+B,SAAS,KAAK;CAC1D,MAAM,aAAa,8BAA8B,SAAS,UAAU;CACpE,IAAI;EAGF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,YAHgB,MADE,oBAAoB,OAAO,MAAM,WAAW,EACxC,KAAI,SAAQ,2BAA2B,KAAK,CAGzD;GACV,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,mBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACY;EAClF,OAAO,QAAQ,OAAO,QAAQ"}
1
+ {"version":3,"file":"picker.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/picker.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n normalizeChooseFileExtensions,\n normalizeChooseMessageFile,\n normalizeChooseMessageFileCount,\n normalizeChooseMessageFileType,\n pickChooseFileFiles,\n pickChooseMessageFiles,\n} from '../filePicker'\nimport {\n normalizeChooseImageCount,\n normalizeChooseImageFile,\n normalizeChooseMediaCount,\n normalizeChooseMediaFile,\n normalizeChooseMediaTypes,\n pickChooseImageFiles,\n pickChooseMediaFiles,\n} from '../mediaPicker'\nimport {\n normalizeChooseVideoFile,\n pickChooseVideoFile,\n} from '../mediaProcess'\n\nexport async function chooseImageBridge(options?: any) {\n const count = normalizeChooseImageCount(options?.count)\n try {\n const files = await pickChooseImageFiles(count)\n const tempFiles = files.map(file => normalizeChooseImageFile(file))\n const tempFilePaths = tempFiles.map(item => item.path)\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseImage:ok',\n tempFilePaths,\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseImage:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseMediaBridge(options?: any) {\n const count = normalizeChooseMediaCount(options?.count)\n const types = normalizeChooseMediaTypes(options?.mediaType)\n try {\n const files = await pickChooseMediaFiles(count, types)\n const tempFiles = files.map(file => normalizeChooseMediaFile(file))\n const defaultType = types.has('video') && !types.has('image') ? 'video' : 'image'\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseMedia:ok',\n type: tempFiles[0]?.fileType ?? defaultType,\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseMedia:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseVideoBridge(options?: any) {\n try {\n const file = await pickChooseVideoFile()\n if (!file) {\n throw new TypeError('no file selected')\n }\n const normalized = normalizeChooseVideoFile(file)\n if (!normalized) {\n throw new TypeError('selected file is not a video')\n }\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseVideo:ok',\n ...normalized,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseVideo:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseMessageFileBridge(options?: any) {\n const count = normalizeChooseMessageFileCount(options?.count)\n const type = normalizeChooseMessageFileType(options?.type)\n try {\n const files = await pickChooseMessageFiles(count, type)\n const tempFiles = files.map(file => normalizeChooseMessageFile(file))\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseMessageFile:ok',\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseMessageFile:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport async function chooseFileBridge(options?: any) {\n const count = normalizeChooseMessageFileCount(options?.count)\n const type = normalizeChooseMessageFileType(options?.type)\n const extensions = normalizeChooseFileExtensions(options?.extension)\n try {\n const files = await pickChooseFileFiles(count, type, extensions)\n const tempFiles = files.map(file => normalizeChooseMessageFile(file))\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'chooseFile:ok',\n tempFiles,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `chooseFile:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n"],"mappings":";;;;;;AA0BA,eAAsB,kBAAkB,SAAe;CACrD,MAAM,QAAQ,0BAA0B,SAAS,KAAK;CACtD,IAAI;EAEF,MAAM,aAAY,MADE,qBAAqB,KAAK,GACtB,KAAI,SAAQ,yBAAyB,IAAI,CAAC;EAElE,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,eAHoB,UAAU,KAAI,SAAQ,KAAK,IAGnC;GACZ;EACF,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACa;EAClF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF;AAEA,eAAsB,kBAAkB,SAAe;CACrD,MAAM,QAAQ,0BAA0B,SAAS,KAAK;CACtD,MAAM,QAAQ,0BAA0B,SAAS,SAAS;CAC1D,IAAI;EAEF,MAAM,aAAY,MADE,qBAAqB,OAAO,KAAK,GAC7B,KAAI,SAAQ,yBAAyB,IAAI,CAAC;EAClE,MAAM,cAAc,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,UAAU;EAC1E,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,MAAM,UAAU,IAAI,YAAY;GAChC;EACF,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACa;EAClF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF;AAEA,eAAsB,kBAAkB,SAAe;CACrD,IAAI;EACF,MAAM,OAAO,MAAM,oBAAoB;EACvC,IAAI,CAAC,MACH,MAAM,IAAI,UAAU,kBAAkB;EAExC,MAAM,aAAa,yBAAyB,IAAI;EAChD,IAAI,CAAC,YACH,MAAM,IAAI,UAAU,8BAA8B;EAEpD,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,GAAG;EACL,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,oBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACa;EAClF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF;AAEA,eAAsB,wBAAwB,SAAe;CAC3D,MAAM,QAAQ,gCAAgC,SAAS,KAAK;CAC5D,MAAM,OAAO,+BAA+B,SAAS,IAAI;CACzD,IAAI;EAGF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,YAHgB,MADE,uBAAuB,OAAO,IAAI,GAC9B,KAAI,SAAQ,2BAA2B,IAAI,CAGzD;EACV,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,0BADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACmB;EACxF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF;AAEA,eAAsB,iBAAiB,SAAe;CACpD,MAAM,QAAQ,gCAAgC,SAAS,KAAK;CAC5D,MAAM,OAAO,+BAA+B,SAAS,IAAI;CACzD,MAAM,aAAa,8BAA8B,SAAS,SAAS;CACnE,IAAI;EAGF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,YAHgB,MADE,oBAAoB,OAAO,MAAM,UAAU,GACvC,KAAI,SAAQ,2BAA2B,IAAI,CAGzD;EACV,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,mBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACY;EACjF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"preview.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/preview.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n normalizePreviewMediaSources,\n openTargetInNewWindow,\n readOpenVideoEditorPreset,\n} from '../mediaActions'\n\nexport function previewImageBridge(options?: any) {\n const urls = Array.isArray(options?.urls)\n ? options.urls.map((url: unknown) => String(url).trim()).filter(Boolean)\n : []\n if (!urls.length) {\n const failure = callMiniProgramAsyncFailure(options, 'previewImage:fail invalid urls')\n return Promise.reject(failure)\n }\n const current = typeof options?.current === 'string' && options.current.trim()\n ? options.current.trim()\n : urls[0]\n const target = urls.includes(current) ? current : urls[0]\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'previewImage:ok' }))\n}\n\nexport function previewMediaBridge(options?: any) {\n const sources = normalizePreviewMediaSources(options?.sources)\n if (!sources.length) {\n const failure = callMiniProgramAsyncFailure(options, 'previewMedia:fail invalid sources')\n return Promise.reject(failure)\n }\n const current = typeof options?.current === 'number' && Number.isFinite(options.current)\n ? Math.max(0, Math.floor(options.current))\n : 0\n const target = sources[current]?.url ?? sources[0].url\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'previewMedia:ok' }))\n}\n\nexport function openVideoEditorBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'openVideoEditor:fail invalid src')\n return Promise.reject(failure)\n }\n const tempFilePath = readOpenVideoEditorPreset(src) || src\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'openVideoEditor:ok',\n tempFilePath,\n }))\n}\n"],"mappings":";;;;AAUA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,GACrC,QAAQ,KAAK,KAAK,QAAiB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,GACtE,EAAE;CACN,IAAI,CAAC,KAAK,QAAQ;EAChB,MAAM,UAAU,4BAA4B,SAAS,iCAAiC;EACtF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,UAAU,OAAO,SAAS,YAAY,YAAY,QAAQ,QAAQ,MAAM,GAC1E,QAAQ,QAAQ,MAAM,GACtB,KAAK;CAET,sBADe,KAAK,SAAS,QAAQ,GAAG,UAAU,KAAK,GAC1B;CAC7B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;;AAG7F,SAAgB,mBAAmB,SAAe;CAChD,MAAM,UAAU,6BAA6B,SAAS,QAAQ;CAC9D,IAAI,CAAC,QAAQ,QAAQ;EACnB,MAAM,UAAU,4BAA4B,SAAS,oCAAoC;EACzF,OAAO,QAAQ,OAAO,QAAQ;;CAMhC,sBADe,QAHC,OAAO,SAAS,YAAY,YAAY,OAAO,SAAS,QAAQ,QAAQ,GACpF,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,QAAQ,CAAC,GACxC,IAC6B,OAAO,QAAQ,GAAG,IACtB;CAC7B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;;AAG7F,SAAgB,sBAAsB,SAAe;CACnD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,MAAM,GAAG;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,mCAAmC;EACxF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,eAAe,0BAA0B,IAAI,IAAI;CACvD,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;EACD,CAAC,CAAC"}
1
+ {"version":3,"file":"preview.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/preview.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport {\n normalizePreviewMediaSources,\n openTargetInNewWindow,\n readOpenVideoEditorPreset,\n} from '../mediaActions'\n\nexport function previewImageBridge(options?: any) {\n const urls = Array.isArray(options?.urls)\n ? options.urls.map((url: unknown) => String(url).trim()).filter(Boolean)\n : []\n if (!urls.length) {\n const failure = callMiniProgramAsyncFailure(options, 'previewImage:fail invalid urls')\n return Promise.reject(failure)\n }\n const current = typeof options?.current === 'string' && options.current.trim()\n ? options.current.trim()\n : urls[0]\n const target = urls.includes(current) ? current : urls[0]\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'previewImage:ok' }))\n}\n\nexport function previewMediaBridge(options?: any) {\n const sources = normalizePreviewMediaSources(options?.sources)\n if (!sources.length) {\n const failure = callMiniProgramAsyncFailure(options, 'previewMedia:fail invalid sources')\n return Promise.reject(failure)\n }\n const current = typeof options?.current === 'number' && Number.isFinite(options.current)\n ? Math.max(0, Math.floor(options.current))\n : 0\n const target = sources[current]?.url ?? sources[0].url\n openTargetInNewWindow(target)\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'previewMedia:ok' }))\n}\n\nexport function openVideoEditorBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'openVideoEditor:fail invalid src')\n return Promise.reject(failure)\n }\n const tempFilePath = readOpenVideoEditorPreset(src) || src\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'openVideoEditor:ok',\n tempFilePath,\n }))\n}\n"],"mappings":";;;;AAUA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,OAAO,MAAM,QAAQ,SAAS,IAAI,IACpC,QAAQ,KAAK,KAAK,QAAiB,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO,IACrE,CAAC;CACL,IAAI,CAAC,KAAK,QAAQ;EAChB,MAAM,UAAU,4BAA4B,SAAS,gCAAgC;EACrF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,UAAU,OAAO,SAAS,YAAY,YAAY,QAAQ,QAAQ,KAAK,IACzE,QAAQ,QAAQ,KAAK,IACrB,KAAK;CAET,sBADe,KAAK,SAAS,OAAO,IAAI,UAAU,KAAK,EAC3B;CAC5B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,kBAAkB,CAAC,CAAC;AAC5F;AAEA,SAAgB,mBAAmB,SAAe;CAChD,MAAM,UAAU,6BAA6B,SAAS,OAAO;CAC7D,IAAI,CAAC,QAAQ,QAAQ;EACnB,MAAM,UAAU,4BAA4B,SAAS,mCAAmC;EACxF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CAKA,sBADe,QAHC,OAAO,SAAS,YAAY,YAAY,OAAO,SAAS,QAAQ,OAAO,IACnF,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,OAAO,CAAC,IACvC,IAC6B,OAAO,QAAQ,GAAG,GACvB;CAC5B,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,kBAAkB,CAAC,CAAC;AAC5F;AAEA,SAAgB,sBAAsB,SAAe;CACnD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,KAAK,IAAI;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,kCAAkC;EACvF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,eAAe,0BAA0B,GAAG,KAAK;CACvD,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;CACF,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"process.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/process.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport { readPresetCompressVideo } from '../mediaInfo'\nimport {\n compressImageByCanvas,\n normalizeCompressImageQuality,\n} from '../mediaProcess'\n\nexport async function compressImageBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'compressImage:fail invalid src')\n return Promise.reject(failure)\n }\n const quality = normalizeCompressImageQuality(options?.quality)\n try {\n const tempFilePath = await compressImageByCanvas(src, quality)\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'compressImage:ok',\n tempFilePath,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `compressImage:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport function compressVideoBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'compressVideo:fail invalid src')\n return Promise.reject(failure)\n }\n const preset = readPresetCompressVideo(src)\n const result = preset ?? {\n tempFilePath: src,\n size: 0,\n duration: 0,\n width: 0,\n height: 0,\n bitrate: 0,\n fps: 0,\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'compressVideo:ok',\n ...result,\n }))\n}\n"],"mappings":";;;;;AAUA,eAAsB,oBAAoB,SAAe;CACvD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,MAAM,GAAG;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,iCAAiC;EACtF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,UAAU,8BAA8B,SAAS,QAAQ;CAC/D,IAAI;EAEF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,oBAHyB,sBAAsB,KAAK,QAAQ;GAI7D,CAAC;UAEG,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,sBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACe;EACrF,OAAO,QAAQ,OAAO,QAAQ;;;AAIlC,SAAgB,oBAAoB,SAAe;CACjD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,MAAM,GAAG;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,iCAAiC;EACtF,OAAO,QAAQ,OAAO,QAAQ;;CAGhC,MAAM,SADS,wBAAwB,IAClB,IAAI;EACvB,cAAc;EACd,MAAM;EACN,UAAU;EACV,OAAO;EACP,QAAQ;EACR,SAAS;EACT,KAAK;EACN;CACD,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;EACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"process.mjs","names":[],"sources":["../../../../src/runtime/polyfill/mediaApi/process.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from '../async'\nimport { readPresetCompressVideo } from '../mediaInfo'\nimport {\n compressImageByCanvas,\n normalizeCompressImageQuality,\n} from '../mediaProcess'\n\nexport async function compressImageBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'compressImage:fail invalid src')\n return Promise.reject(failure)\n }\n const quality = normalizeCompressImageQuality(options?.quality)\n try {\n const tempFilePath = await compressImageByCanvas(src, quality)\n return callMiniProgramAsyncSuccess(options, {\n errMsg: 'compressImage:ok',\n tempFilePath,\n })\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n const failure = callMiniProgramAsyncFailure(options, `compressImage:fail ${message}`)\n return Promise.reject(failure)\n }\n}\n\nexport function compressVideoBridge(options?: any) {\n const src = typeof options?.src === 'string' ? options.src.trim() : ''\n if (!src) {\n const failure = callMiniProgramAsyncFailure(options, 'compressVideo:fail invalid src')\n return Promise.reject(failure)\n }\n const preset = readPresetCompressVideo(src)\n const result = preset ?? {\n tempFilePath: src,\n size: 0,\n duration: 0,\n width: 0,\n height: 0,\n bitrate: 0,\n fps: 0,\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'compressVideo:ok',\n ...result,\n }))\n}\n"],"mappings":";;;;;AAUA,eAAsB,oBAAoB,SAAe;CACvD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,KAAK,IAAI;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,gCAAgC;EACrF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,UAAU,8BAA8B,SAAS,OAAO;CAC9D,IAAI;EAEF,OAAO,4BAA4B,SAAS;GAC1C,QAAQ;GACR,oBAHyB,sBAAsB,KAAK,OAAO;EAI7D,CAAC;CACH,SACO,OAAO;EAEZ,MAAM,UAAU,4BAA4B,SAAS,sBADrC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACe;EACpF,OAAO,QAAQ,OAAO,OAAO;CAC/B;AACF;AAEA,SAAgB,oBAAoB,SAAe;CACjD,MAAM,MAAM,OAAO,SAAS,QAAQ,WAAW,QAAQ,IAAI,KAAK,IAAI;CACpE,IAAI,CAAC,KAAK;EACR,MAAM,UAAU,4BAA4B,SAAS,gCAAgC;EACrF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CAEA,MAAM,SADS,wBAAwB,GACnB,KAAK;EACvB,cAAc;EACd,MAAM;EACN,UAAU;EACV,OAAO;EACP,QAAQ;EACR,SAAS;EACT,KAAK;CACP;CACA,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;CACL,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"mediaInfo.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/mediaInfo.ts"],"sourcesContent":["import {\n WEAPP_VITE_WEB_COMPRESS_VIDEO_KEY,\n WEAPP_VITE_WEB_VIDEO_INFO_KEY,\n} from '@weapp-core/constants'\n\nexport function inferImageTypeFromPath(path: string) {\n const lower = path.toLowerCase()\n if (lower.includes('.png')) {\n return 'png'\n }\n if (lower.includes('.jpg') || lower.includes('.jpeg')) {\n return 'jpg'\n }\n if (lower.includes('.gif')) {\n return 'gif'\n }\n if (lower.includes('.webp')) {\n return 'webp'\n }\n if (lower.includes('.bmp')) {\n return 'bmp'\n }\n if (lower.includes('.svg')) {\n return 'svg'\n }\n if (lower.includes('.avif')) {\n return 'avif'\n }\n return 'unknown'\n}\n\nexport function inferVideoTypeFromPath(path: string) {\n const lower = path.toLowerCase()\n if (lower.includes('.mp4')) {\n return 'mp4'\n }\n if (lower.includes('.mov')) {\n return 'mov'\n }\n if (lower.includes('.m4v')) {\n return 'm4v'\n }\n if (lower.includes('.webm')) {\n return 'webm'\n }\n if (lower.includes('.avi')) {\n return 'avi'\n }\n if (lower.includes('.mkv')) {\n return 'mkv'\n }\n return 'unknown'\n}\n\nexport function normalizeVideoInfoNumber(value: unknown) {\n if (typeof value !== 'number' || Number.isNaN(value) || value < 0) {\n return 0\n }\n return value\n}\n\nfunction normalizeVideoInfoPreset(value: unknown, src: string) {\n if (!value || typeof value !== 'object') {\n return null\n }\n const info = value as Record<string, unknown>\n return {\n size: normalizeVideoInfoNumber(info.size),\n duration: normalizeVideoInfoNumber(info.duration),\n width: normalizeVideoInfoNumber(info.width),\n height: normalizeVideoInfoNumber(info.height),\n fps: normalizeVideoInfoNumber(info.fps),\n bitrate: normalizeVideoInfoNumber(info.bitrate),\n type: typeof info.type === 'string' ? info.type : inferVideoTypeFromPath(src),\n orientation: 'up' as const,\n }\n}\n\nexport function readPresetVideoInfo(src: string) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_VIDEO_INFO_KEY]\n if (typeof preset === 'function') {\n return normalizeVideoInfoPreset((preset as (value: string) => unknown)(src), src)\n }\n if (preset && typeof preset === 'object') {\n const sourcePreset = (preset as Record<string, unknown>)[src]\n if (sourcePreset && typeof sourcePreset === 'object') {\n return normalizeVideoInfoPreset(sourcePreset, src)\n }\n return normalizeVideoInfoPreset(preset, src)\n }\n return null\n}\n\nfunction normalizeCompressVideoResult(value: unknown, src: string) {\n if (!value || typeof value !== 'object') {\n return null\n }\n const info = value as Record<string, unknown>\n const tempFilePath = typeof info.tempFilePath === 'string' && info.tempFilePath.trim()\n ? info.tempFilePath.trim()\n : src\n return {\n tempFilePath,\n size: normalizeVideoInfoNumber(info.size),\n duration: normalizeVideoInfoNumber(info.duration),\n width: normalizeVideoInfoNumber(info.width),\n height: normalizeVideoInfoNumber(info.height),\n bitrate: normalizeVideoInfoNumber(info.bitrate),\n fps: normalizeVideoInfoNumber(info.fps),\n }\n}\n\nexport function readPresetCompressVideo(src: string) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_COMPRESS_VIDEO_KEY]\n if (typeof preset === 'function') {\n return normalizeCompressVideoResult((preset as (value: string) => unknown)(src), src)\n }\n if (preset && typeof preset === 'object') {\n const sourcePreset = (preset as Record<string, unknown>)[src]\n if (sourcePreset && typeof sourcePreset === 'object') {\n return normalizeCompressVideoResult(sourcePreset, src)\n }\n return normalizeCompressVideoResult(preset, src)\n }\n if (typeof preset === 'string' && preset.trim()) {\n return {\n tempFilePath: preset.trim(),\n size: 0,\n duration: 0,\n width: 0,\n height: 0,\n bitrate: 0,\n fps: 0,\n }\n }\n return null\n}\n\nexport async function readImageInfoFromSource(src: string) {\n const ImageCtor = (globalThis as { Image?: typeof Image }).Image\n if (typeof ImageCtor !== 'function') {\n throw new TypeError('Image is unavailable')\n }\n return new Promise<{ width: number, height: number }>((resolve, reject) => {\n const image = new ImageCtor()\n image.onload = () => {\n const width = Number((image as { naturalWidth?: number }).naturalWidth ?? image.width ?? 0)\n const height = Number((image as { naturalHeight?: number }).naturalHeight ?? image.height ?? 0)\n resolve({\n width: Number.isFinite(width) ? width : 0,\n height: Number.isFinite(height) ? height : 0,\n })\n }\n image.onerror = () => {\n reject(new Error('image load error'))\n }\n image.src = src\n })\n}\n\nexport async function readVideoInfoFromSource(src: string) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n throw new TypeError('video element is unavailable')\n }\n const video = document.createElement('video') as HTMLVideoElement\n if (!video || typeof video.addEventListener !== 'function') {\n throw new Error('video element is unavailable')\n }\n return new Promise<{ duration: number, width: number, height: number }>((resolve, reject) => {\n const cleanup = () => {\n if (typeof video.removeEventListener === 'function') {\n // eslint-disable-next-line ts/no-use-before-define\n video.removeEventListener('loadedmetadata', onLoadedMetadata)\n // eslint-disable-next-line ts/no-use-before-define\n video.removeEventListener('error', onError)\n }\n }\n const onLoadedMetadata = () => {\n cleanup()\n resolve({\n duration: normalizeVideoInfoNumber(video.duration),\n width: normalizeVideoInfoNumber((video as { videoWidth?: number }).videoWidth),\n height: normalizeVideoInfoNumber((video as { videoHeight?: number }).videoHeight),\n })\n }\n const onError = () => {\n cleanup()\n reject(new Error('video load error'))\n }\n video.addEventListener('loadedmetadata', onLoadedMetadata, { once: true })\n video.addEventListener('error', onError, { once: true })\n video.src = src\n video.load?.()\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mediaInfo.mjs","names":["runtimeGlobal"],"sources":["../../../src/runtime/polyfill/mediaInfo.ts"],"sourcesContent":["import {\n WEAPP_VITE_WEB_COMPRESS_VIDEO_KEY,\n WEAPP_VITE_WEB_VIDEO_INFO_KEY,\n} from '@weapp-core/constants'\n\nexport function inferImageTypeFromPath(path: string) {\n const lower = path.toLowerCase()\n if (lower.includes('.png')) {\n return 'png'\n }\n if (lower.includes('.jpg') || lower.includes('.jpeg')) {\n return 'jpg'\n }\n if (lower.includes('.gif')) {\n return 'gif'\n }\n if (lower.includes('.webp')) {\n return 'webp'\n }\n if (lower.includes('.bmp')) {\n return 'bmp'\n }\n if (lower.includes('.svg')) {\n return 'svg'\n }\n if (lower.includes('.avif')) {\n return 'avif'\n }\n return 'unknown'\n}\n\nexport function inferVideoTypeFromPath(path: string) {\n const lower = path.toLowerCase()\n if (lower.includes('.mp4')) {\n return 'mp4'\n }\n if (lower.includes('.mov')) {\n return 'mov'\n }\n if (lower.includes('.m4v')) {\n return 'm4v'\n }\n if (lower.includes('.webm')) {\n return 'webm'\n }\n if (lower.includes('.avi')) {\n return 'avi'\n }\n if (lower.includes('.mkv')) {\n return 'mkv'\n }\n return 'unknown'\n}\n\nexport function normalizeVideoInfoNumber(value: unknown) {\n if (typeof value !== 'number' || Number.isNaN(value) || value < 0) {\n return 0\n }\n return value\n}\n\nfunction normalizeVideoInfoPreset(value: unknown, src: string) {\n if (!value || typeof value !== 'object') {\n return null\n }\n const info = value as Record<string, unknown>\n return {\n size: normalizeVideoInfoNumber(info.size),\n duration: normalizeVideoInfoNumber(info.duration),\n width: normalizeVideoInfoNumber(info.width),\n height: normalizeVideoInfoNumber(info.height),\n fps: normalizeVideoInfoNumber(info.fps),\n bitrate: normalizeVideoInfoNumber(info.bitrate),\n type: typeof info.type === 'string' ? info.type : inferVideoTypeFromPath(src),\n orientation: 'up' as const,\n }\n}\n\nexport function readPresetVideoInfo(src: string) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_VIDEO_INFO_KEY]\n if (typeof preset === 'function') {\n return normalizeVideoInfoPreset((preset as (value: string) => unknown)(src), src)\n }\n if (preset && typeof preset === 'object') {\n const sourcePreset = (preset as Record<string, unknown>)[src]\n if (sourcePreset && typeof sourcePreset === 'object') {\n return normalizeVideoInfoPreset(sourcePreset, src)\n }\n return normalizeVideoInfoPreset(preset, src)\n }\n return null\n}\n\nfunction normalizeCompressVideoResult(value: unknown, src: string) {\n if (!value || typeof value !== 'object') {\n return null\n }\n const info = value as Record<string, unknown>\n const tempFilePath = typeof info.tempFilePath === 'string' && info.tempFilePath.trim()\n ? info.tempFilePath.trim()\n : src\n return {\n tempFilePath,\n size: normalizeVideoInfoNumber(info.size),\n duration: normalizeVideoInfoNumber(info.duration),\n width: normalizeVideoInfoNumber(info.width),\n height: normalizeVideoInfoNumber(info.height),\n bitrate: normalizeVideoInfoNumber(info.bitrate),\n fps: normalizeVideoInfoNumber(info.fps),\n }\n}\n\nexport function readPresetCompressVideo(src: string) {\n const runtimeGlobal = globalThis as Record<string, unknown>\n const preset = runtimeGlobal[WEAPP_VITE_WEB_COMPRESS_VIDEO_KEY]\n if (typeof preset === 'function') {\n return normalizeCompressVideoResult((preset as (value: string) => unknown)(src), src)\n }\n if (preset && typeof preset === 'object') {\n const sourcePreset = (preset as Record<string, unknown>)[src]\n if (sourcePreset && typeof sourcePreset === 'object') {\n return normalizeCompressVideoResult(sourcePreset, src)\n }\n return normalizeCompressVideoResult(preset, src)\n }\n if (typeof preset === 'string' && preset.trim()) {\n return {\n tempFilePath: preset.trim(),\n size: 0,\n duration: 0,\n width: 0,\n height: 0,\n bitrate: 0,\n fps: 0,\n }\n }\n return null\n}\n\nexport async function readImageInfoFromSource(src: string) {\n const ImageCtor = (globalThis as { Image?: typeof Image }).Image\n if (typeof ImageCtor !== 'function') {\n throw new TypeError('Image is unavailable')\n }\n return new Promise<{ width: number, height: number }>((resolve, reject) => {\n const image = new ImageCtor()\n image.onload = () => {\n const width = Number((image as { naturalWidth?: number }).naturalWidth ?? image.width ?? 0)\n const height = Number((image as { naturalHeight?: number }).naturalHeight ?? image.height ?? 0)\n resolve({\n width: Number.isFinite(width) ? width : 0,\n height: Number.isFinite(height) ? height : 0,\n })\n }\n image.onerror = () => {\n reject(new Error('image load error'))\n }\n image.src = src\n })\n}\n\nexport async function readVideoInfoFromSource(src: string) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n throw new TypeError('video element is unavailable')\n }\n const video = document.createElement('video') as HTMLVideoElement\n if (!video || typeof video.addEventListener !== 'function') {\n throw new Error('video element is unavailable')\n }\n return new Promise<{ duration: number, width: number, height: number }>((resolve, reject) => {\n const cleanup = () => {\n if (typeof video.removeEventListener === 'function') {\n // eslint-disable-next-line ts/no-use-before-define\n video.removeEventListener('loadedmetadata', onLoadedMetadata)\n // eslint-disable-next-line ts/no-use-before-define\n video.removeEventListener('error', onError)\n }\n }\n const onLoadedMetadata = () => {\n cleanup()\n resolve({\n duration: normalizeVideoInfoNumber(video.duration),\n width: normalizeVideoInfoNumber((video as { videoWidth?: number }).videoWidth),\n height: normalizeVideoInfoNumber((video as { videoHeight?: number }).videoHeight),\n })\n }\n const onError = () => {\n cleanup()\n reject(new Error('video load error'))\n }\n video.addEventListener('loadedmetadata', onLoadedMetadata, { once: true })\n video.addEventListener('error', onError, { once: true })\n video.src = src\n video.load?.()\n })\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mediaPicker.mjs","names":[],"sources":["../../../src/runtime/polyfill/mediaPicker.ts"],"sourcesContent":["type ChooseMediaType = 'image' | 'video'\n\ntype RawChooseMediaType = ChooseMediaType | 'mix'\n\nexport function normalizeChooseImageCount(count: number | undefined) {\n if (typeof count !== 'number' || Number.isNaN(count)) {\n return 9\n }\n return Math.max(1, Math.floor(count))\n}\n\nexport function createTempFilePath(file: { name?: string }) {\n const runtimeUrl = (globalThis as {\n URL?: {\n createObjectURL?: (value: unknown) => string\n }\n }).URL\n if (runtimeUrl && typeof runtimeUrl.createObjectURL === 'function') {\n const result = runtimeUrl.createObjectURL(file)\n if (result) {\n return result\n }\n }\n return file.name ?? ''\n}\n\nexport function normalizeChooseImageFile(file: {\n size?: number\n type?: string\n name?: string\n}) {\n return {\n path: createTempFilePath(file),\n size: typeof file.size === 'number' ? file.size : 0,\n type: typeof file.type === 'string' ? file.type : '',\n name: typeof file.name === 'string' ? file.name : '',\n }\n}\n\nasync function pickImageFilesByOpenPicker(count: number) {\n const picker = (globalThis as {\n showOpenFilePicker?: (options: {\n multiple?: boolean\n types?: Array<{\n description?: string\n accept?: Record<string, string[]>\n }>\n }) => Promise<Array<{ getFile?: () => Promise<any> }>>\n }).showOpenFilePicker\n if (typeof picker !== 'function') {\n return null\n }\n const handles = await picker({\n multiple: count > 1,\n types: [{\n description: 'Images',\n accept: {\n 'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp', '.svg', '.avif'],\n },\n }],\n })\n const files: any[] = []\n for (const handle of handles ?? []) {\n const file = await handle?.getFile?.()\n if (file) {\n files.push(file)\n }\n if (files.length >= count) {\n break\n }\n }\n return files\n}\n\nasync function pickImageFilesByInput(count: number) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return null\n }\n const input = document.createElement('input') as HTMLInputElement\n if (!input || typeof input !== 'object') {\n return null\n }\n input.setAttribute('type', 'file')\n input.setAttribute('accept', 'image/*')\n if (count > 1) {\n input.setAttribute('multiple', 'true')\n }\n input.setAttribute('style', 'position: fixed; left: -9999px; top: -9999px; opacity: 0;')\n if (document.body) {\n document.body.append(input)\n }\n try {\n const files = await new Promise<any[]>((resolve, reject) => {\n const onChange = () => {\n const selected = input.files ? Array.from(input.files) : []\n if (selected.length) {\n resolve(selected.slice(0, count))\n return\n }\n reject(new Error('no file selected'))\n }\n input.addEventListener('change', onChange, { once: true })\n if (typeof input.click === 'function') {\n input.click()\n return\n }\n reject(new Error('file input click is unavailable'))\n })\n return files\n }\n finally {\n if (input.parentNode) {\n input.parentNode.removeChild(input)\n }\n }\n}\n\nexport async function pickChooseImageFiles(count: number) {\n const viaPicker = await pickImageFilesByOpenPicker(count)\n if (Array.isArray(viaPicker)) {\n return viaPicker\n }\n const viaInput = await pickImageFilesByInput(count)\n if (Array.isArray(viaInput)) {\n return viaInput\n }\n throw new TypeError('Image picker is unavailable in current environment.')\n}\n\nexport function normalizeChooseMediaCount(count: number | undefined) {\n if (typeof count !== 'number' || Number.isNaN(count)) {\n return 1\n }\n return Math.max(1, Math.floor(count))\n}\n\nexport function normalizeChooseMediaTypes(mediaType: RawChooseMediaType[] | undefined) {\n const normalized = new Set<ChooseMediaType>()\n for (const item of mediaType ?? []) {\n if (item === 'image') {\n normalized.add('image')\n continue\n }\n if (item === 'video') {\n normalized.add('video')\n continue\n }\n if (item === 'mix') {\n normalized.add('image')\n normalized.add('video')\n }\n }\n if (normalized.size === 0) {\n normalized.add('image')\n normalized.add('video')\n }\n return normalized\n}\n\nfunction buildChooseMediaOpenPickerAccept(types: Set<ChooseMediaType>) {\n const accept: Record<string, string[]> = {}\n if (types.has('image')) {\n accept['image/*'] = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp', '.svg', '.avif']\n }\n if (types.has('video')) {\n accept['video/*'] = ['.mp4', '.mov', '.m4v', '.webm']\n }\n return accept\n}\n\nfunction buildChooseMediaInputAccept(types: Set<ChooseMediaType>) {\n if (types.size === 2) {\n return 'image/*,video/*'\n }\n return types.has('video') ? 'video/*' : 'image/*'\n}\n\nexport function inferChooseMediaFileType(file: { type?: string, name?: string }): ChooseMediaType {\n const mimeType = typeof file.type === 'string' ? file.type.toLowerCase() : ''\n if (mimeType.startsWith('video/')) {\n return 'video'\n }\n if (mimeType.startsWith('image/')) {\n return 'image'\n }\n const fileName = typeof file.name === 'string' ? file.name.toLowerCase() : ''\n if (/\\.(?:mp4|mov|m4v|webm)$/i.test(fileName)) {\n return 'video'\n }\n return 'image'\n}\n\nexport function normalizeChooseMediaFile(file: {\n size?: number\n type?: string\n name?: string\n}) {\n const fileType = inferChooseMediaFileType(file)\n return {\n tempFilePath: createTempFilePath(file),\n size: typeof file.size === 'number' ? file.size : 0,\n fileType,\n width: 0,\n height: 0,\n duration: 0,\n }\n}\n\nasync function pickMediaFilesByOpenPicker(count: number, types: Set<ChooseMediaType>) {\n const picker = (globalThis as {\n showOpenFilePicker?: (options: {\n multiple?: boolean\n types?: Array<{\n description?: string\n accept?: Record<string, string[]>\n }>\n }) => Promise<Array<{ getFile?: () => Promise<any> }>>\n }).showOpenFilePicker\n if (typeof picker !== 'function') {\n return null\n }\n const handles = await picker({\n multiple: count > 1,\n types: [{\n description: 'Media',\n accept: buildChooseMediaOpenPickerAccept(types),\n }],\n })\n const files: any[] = []\n for (const handle of handles ?? []) {\n const file = await handle?.getFile?.()\n if (file) {\n files.push(file)\n }\n if (files.length >= count) {\n break\n }\n }\n return files\n}\n\nasync function pickMediaFilesByInput(count: number, types: Set<ChooseMediaType>) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return null\n }\n const input = document.createElement('input') as HTMLInputElement\n if (!input || typeof input !== 'object') {\n return null\n }\n input.setAttribute('type', 'file')\n input.setAttribute('accept', buildChooseMediaInputAccept(types))\n if (count > 1) {\n input.setAttribute('multiple', 'true')\n }\n input.setAttribute('style', 'position: fixed; left: -9999px; top: -9999px; opacity: 0;')\n if (document.body) {\n document.body.append(input)\n }\n try {\n const files = await new Promise<any[]>((resolve, reject) => {\n const onChange = () => {\n const selected = input.files ? Array.from(input.files) : []\n if (selected.length) {\n resolve(selected.slice(0, count))\n return\n }\n reject(new Error('no file selected'))\n }\n input.addEventListener('change', onChange, { once: true })\n if (typeof input.click === 'function') {\n input.click()\n return\n }\n reject(new Error('file input click is unavailable'))\n })\n return files\n }\n finally {\n if (input.parentNode) {\n input.parentNode.removeChild(input)\n }\n }\n}\n\nexport async function pickChooseMediaFiles(count: number, types: Set<ChooseMediaType>) {\n const viaPicker = await pickMediaFilesByOpenPicker(count, types)\n if (Array.isArray(viaPicker)) {\n return viaPicker\n }\n const viaInput = await pickMediaFilesByInput(count, types)\n if (Array.isArray(viaInput)) {\n return viaInput\n }\n throw new TypeError('Media picker is unavailable in current environment.')\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mediaPicker.mjs","names":[],"sources":["../../../src/runtime/polyfill/mediaPicker.ts"],"sourcesContent":["type ChooseMediaType = 'image' | 'video'\n\ntype RawChooseMediaType = ChooseMediaType | 'mix'\n\nexport function normalizeChooseImageCount(count: number | undefined) {\n if (typeof count !== 'number' || Number.isNaN(count)) {\n return 9\n }\n return Math.max(1, Math.floor(count))\n}\n\nexport function createTempFilePath(file: { name?: string }) {\n const runtimeUrl = (globalThis as {\n URL?: {\n createObjectURL?: (value: unknown) => string\n }\n }).URL\n if (runtimeUrl && typeof runtimeUrl.createObjectURL === 'function') {\n const result = runtimeUrl.createObjectURL(file)\n if (result) {\n return result\n }\n }\n return file.name ?? ''\n}\n\nexport function normalizeChooseImageFile(file: {\n size?: number\n type?: string\n name?: string\n}) {\n return {\n path: createTempFilePath(file),\n size: typeof file.size === 'number' ? file.size : 0,\n type: typeof file.type === 'string' ? file.type : '',\n name: typeof file.name === 'string' ? file.name : '',\n }\n}\n\nasync function pickImageFilesByOpenPicker(count: number) {\n const picker = (globalThis as {\n showOpenFilePicker?: (options: {\n multiple?: boolean\n types?: Array<{\n description?: string\n accept?: Record<string, string[]>\n }>\n }) => Promise<Array<{ getFile?: () => Promise<any> }>>\n }).showOpenFilePicker\n if (typeof picker !== 'function') {\n return null\n }\n const handles = await picker({\n multiple: count > 1,\n types: [{\n description: 'Images',\n accept: {\n 'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp', '.svg', '.avif'],\n },\n }],\n })\n const files: any[] = []\n for (const handle of handles ?? []) {\n const file = await handle?.getFile?.()\n if (file) {\n files.push(file)\n }\n if (files.length >= count) {\n break\n }\n }\n return files\n}\n\nasync function pickImageFilesByInput(count: number) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return null\n }\n const input = document.createElement('input') as HTMLInputElement\n if (!input || typeof input !== 'object') {\n return null\n }\n input.setAttribute('type', 'file')\n input.setAttribute('accept', 'image/*')\n if (count > 1) {\n input.setAttribute('multiple', 'true')\n }\n input.setAttribute('style', 'position: fixed; left: -9999px; top: -9999px; opacity: 0;')\n if (document.body) {\n document.body.append(input)\n }\n try {\n const files = await new Promise<any[]>((resolve, reject) => {\n const onChange = () => {\n const selected = input.files ? Array.from(input.files) : []\n if (selected.length) {\n resolve(selected.slice(0, count))\n return\n }\n reject(new Error('no file selected'))\n }\n input.addEventListener('change', onChange, { once: true })\n if (typeof input.click === 'function') {\n input.click()\n return\n }\n reject(new Error('file input click is unavailable'))\n })\n return files\n }\n finally {\n if (input.parentNode) {\n input.parentNode.removeChild(input)\n }\n }\n}\n\nexport async function pickChooseImageFiles(count: number) {\n const viaPicker = await pickImageFilesByOpenPicker(count)\n if (Array.isArray(viaPicker)) {\n return viaPicker\n }\n const viaInput = await pickImageFilesByInput(count)\n if (Array.isArray(viaInput)) {\n return viaInput\n }\n throw new TypeError('Image picker is unavailable in current environment.')\n}\n\nexport function normalizeChooseMediaCount(count: number | undefined) {\n if (typeof count !== 'number' || Number.isNaN(count)) {\n return 1\n }\n return Math.max(1, Math.floor(count))\n}\n\nexport function normalizeChooseMediaTypes(mediaType: RawChooseMediaType[] | undefined) {\n const normalized = new Set<ChooseMediaType>()\n for (const item of mediaType ?? []) {\n if (item === 'image') {\n normalized.add('image')\n continue\n }\n if (item === 'video') {\n normalized.add('video')\n continue\n }\n if (item === 'mix') {\n normalized.add('image')\n normalized.add('video')\n }\n }\n if (normalized.size === 0) {\n normalized.add('image')\n normalized.add('video')\n }\n return normalized\n}\n\nfunction buildChooseMediaOpenPickerAccept(types: Set<ChooseMediaType>) {\n const accept: Record<string, string[]> = {}\n if (types.has('image')) {\n accept['image/*'] = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp', '.svg', '.avif']\n }\n if (types.has('video')) {\n accept['video/*'] = ['.mp4', '.mov', '.m4v', '.webm']\n }\n return accept\n}\n\nfunction buildChooseMediaInputAccept(types: Set<ChooseMediaType>) {\n if (types.size === 2) {\n return 'image/*,video/*'\n }\n return types.has('video') ? 'video/*' : 'image/*'\n}\n\nexport function inferChooseMediaFileType(file: { type?: string, name?: string }): ChooseMediaType {\n const mimeType = typeof file.type === 'string' ? file.type.toLowerCase() : ''\n if (mimeType.startsWith('video/')) {\n return 'video'\n }\n if (mimeType.startsWith('image/')) {\n return 'image'\n }\n const fileName = typeof file.name === 'string' ? file.name.toLowerCase() : ''\n if (/\\.(?:mp4|mov|m4v|webm)$/i.test(fileName)) {\n return 'video'\n }\n return 'image'\n}\n\nexport function normalizeChooseMediaFile(file: {\n size?: number\n type?: string\n name?: string\n}) {\n const fileType = inferChooseMediaFileType(file)\n return {\n tempFilePath: createTempFilePath(file),\n size: typeof file.size === 'number' ? file.size : 0,\n fileType,\n width: 0,\n height: 0,\n duration: 0,\n }\n}\n\nasync function pickMediaFilesByOpenPicker(count: number, types: Set<ChooseMediaType>) {\n const picker = (globalThis as {\n showOpenFilePicker?: (options: {\n multiple?: boolean\n types?: Array<{\n description?: string\n accept?: Record<string, string[]>\n }>\n }) => Promise<Array<{ getFile?: () => Promise<any> }>>\n }).showOpenFilePicker\n if (typeof picker !== 'function') {\n return null\n }\n const handles = await picker({\n multiple: count > 1,\n types: [{\n description: 'Media',\n accept: buildChooseMediaOpenPickerAccept(types),\n }],\n })\n const files: any[] = []\n for (const handle of handles ?? []) {\n const file = await handle?.getFile?.()\n if (file) {\n files.push(file)\n }\n if (files.length >= count) {\n break\n }\n }\n return files\n}\n\nasync function pickMediaFilesByInput(count: number, types: Set<ChooseMediaType>) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return null\n }\n const input = document.createElement('input') as HTMLInputElement\n if (!input || typeof input !== 'object') {\n return null\n }\n input.setAttribute('type', 'file')\n input.setAttribute('accept', buildChooseMediaInputAccept(types))\n if (count > 1) {\n input.setAttribute('multiple', 'true')\n }\n input.setAttribute('style', 'position: fixed; left: -9999px; top: -9999px; opacity: 0;')\n if (document.body) {\n document.body.append(input)\n }\n try {\n const files = await new Promise<any[]>((resolve, reject) => {\n const onChange = () => {\n const selected = input.files ? Array.from(input.files) : []\n if (selected.length) {\n resolve(selected.slice(0, count))\n return\n }\n reject(new Error('no file selected'))\n }\n input.addEventListener('change', onChange, { once: true })\n if (typeof input.click === 'function') {\n input.click()\n return\n }\n reject(new Error('file input click is unavailable'))\n })\n return files\n }\n finally {\n if (input.parentNode) {\n input.parentNode.removeChild(input)\n }\n }\n}\n\nexport async function pickChooseMediaFiles(count: number, types: Set<ChooseMediaType>) {\n const viaPicker = await pickMediaFilesByOpenPicker(count, types)\n if (Array.isArray(viaPicker)) {\n return viaPicker\n }\n const viaInput = await pickMediaFilesByInput(count, types)\n if (Array.isArray(viaInput)) {\n return viaInput\n }\n throw new TypeError('Media picker is unavailable in current environment.')\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mediaProcess.mjs","names":[],"sources":["../../../src/runtime/polyfill/mediaProcess.ts"],"sourcesContent":["import {\n createTempFilePath,\n inferChooseMediaFileType,\n pickChooseMediaFiles,\n} from './mediaPicker'\n\nexport function normalizeCompressImageQuality(quality: number | undefined) {\n if (typeof quality !== 'number' || Number.isNaN(quality)) {\n return 80\n }\n return Math.max(0, Math.min(100, Math.round(quality)))\n}\n\nfunction resolveCompressImageMimeType(src: string) {\n const lower = src.toLowerCase()\n if (lower.includes('.jpg') || lower.includes('.jpeg')) {\n return 'image/jpeg'\n }\n if (lower.includes('.webp')) {\n return 'image/webp'\n }\n return 'image/png'\n}\n\nexport async function compressImageByCanvas(src: string, quality: number) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return src\n }\n const ImageCtor = (globalThis as { Image?: typeof Image }).Image\n if (typeof ImageCtor !== 'function') {\n return src\n }\n const canvas = document.createElement('canvas') as HTMLCanvasElement\n if (!canvas || typeof canvas.getContext !== 'function') {\n return src\n }\n return new Promise<string>((resolve, reject) => {\n const image = new ImageCtor()\n image.onload = () => {\n try {\n const width = Number((image as { naturalWidth?: number }).naturalWidth ?? image.width ?? 0)\n const height = Number((image as { naturalHeight?: number }).naturalHeight ?? image.height ?? 0)\n const context = canvas.getContext('2d')\n if (!context || typeof context.drawImage !== 'function' || width <= 0 || height <= 0) {\n resolve(src)\n return\n }\n canvas.width = width\n canvas.height = height\n context.drawImage(image, 0, 0, width, height)\n if (typeof canvas.toDataURL !== 'function') {\n resolve(src)\n return\n }\n const dataUrl = canvas.toDataURL(resolveCompressImageMimeType(src), quality / 100)\n resolve(dataUrl || src)\n }\n catch (error) {\n reject(error)\n }\n }\n image.onerror = () => {\n reject(new Error('image load error'))\n }\n image.src = src\n })\n}\n\nexport function normalizeChooseVideoFile(file: {\n size?: number\n type?: string\n name?: string\n}) {\n if (inferChooseMediaFileType(file) !== 'video') {\n return null\n }\n return {\n tempFilePath: createTempFilePath(file),\n duration: 0,\n size: typeof file.size === 'number' ? file.size : 0,\n height: 0,\n width: 0,\n }\n}\n\nexport async function pickChooseVideoFile() {\n const files = await pickChooseMediaFiles(1, new Set(['video']))\n return files[0] ?? null\n}\n"],"mappings":";;;AAMA,SAAgB,8BAA8B,SAA6B;CACzE,IAAI,OAAO,YAAY,YAAY,OAAO,MAAM,QAAQ,EACtD,OAAO;CAET,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,QAAQ,CAAC,CAAC;;AAGxD,SAAS,6BAA6B,KAAa;CACjD,MAAM,QAAQ,IAAI,aAAa;CAC/B,IAAI,MAAM,SAAS,OAAO,IAAI,MAAM,SAAS,QAAQ,EACnD,OAAO;CAET,IAAI,MAAM,SAAS,QAAQ,EACzB,OAAO;CAET,OAAO;;AAGT,eAAsB,sBAAsB,KAAa,SAAiB;CACxE,IAAI,OAAO,aAAa,eAAe,OAAO,SAAS,kBAAkB,YACvE,OAAO;CAET,MAAM,YAAa,WAAwC;CAC3D,IAAI,OAAO,cAAc,YACvB,OAAO;CAET,MAAM,SAAS,SAAS,cAAc,SAAS;CAC/C,IAAI,CAAC,UAAU,OAAO,OAAO,eAAe,YAC1C,OAAO;CAET,OAAO,IAAI,SAAiB,SAAS,WAAW;EAC9C,MAAM,QAAQ,IAAI,WAAW;EAC7B,MAAM,eAAe;GACnB,IAAI;IACF,MAAM,QAAQ,OAAQ,MAAoC,gBAAgB,MAAM,SAAS,EAAE;IAC3F,MAAM,SAAS,OAAQ,MAAqC,iBAAiB,MAAM,UAAU,EAAE;IAC/F,MAAM,UAAU,OAAO,WAAW,KAAK;IACvC,IAAI,CAAC,WAAW,OAAO,QAAQ,cAAc,cAAc,SAAS,KAAK,UAAU,GAAG;KACpF,QAAQ,IAAI;KACZ;;IAEF,OAAO,QAAQ;IACf,OAAO,SAAS;IAChB,QAAQ,UAAU,OAAO,GAAG,GAAG,OAAO,OAAO;IAC7C,IAAI,OAAO,OAAO,cAAc,YAAY;KAC1C,QAAQ,IAAI;KACZ;;IAGF,QADgB,OAAO,UAAU,6BAA6B,IAAI,EAAE,UAAU,IAC/D,IAAI,IAAI;YAElB,OAAO;IACZ,OAAO,MAAM;;;EAGjB,MAAM,gBAAgB;GACpB,uBAAO,IAAI,MAAM,mBAAmB,CAAC;;EAEvC,MAAM,MAAM;GACZ;;AAGJ,SAAgB,yBAAyB,MAItC;CACD,IAAI,yBAAyB,KAAK,KAAK,SACrC,OAAO;CAET,OAAO;EACL,cAAc,mBAAmB,KAAK;EACtC,UAAU;EACV,MAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;EAClD,QAAQ;EACR,OAAO;EACR;;AAGH,eAAsB,sBAAsB;CAE1C,QAAO,MADa,qBAAqB,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAClD,MAAM"}
1
+ {"version":3,"file":"mediaProcess.mjs","names":[],"sources":["../../../src/runtime/polyfill/mediaProcess.ts"],"sourcesContent":["import {\n createTempFilePath,\n inferChooseMediaFileType,\n pickChooseMediaFiles,\n} from './mediaPicker'\n\nexport function normalizeCompressImageQuality(quality: number | undefined) {\n if (typeof quality !== 'number' || Number.isNaN(quality)) {\n return 80\n }\n return Math.max(0, Math.min(100, Math.round(quality)))\n}\n\nfunction resolveCompressImageMimeType(src: string) {\n const lower = src.toLowerCase()\n if (lower.includes('.jpg') || lower.includes('.jpeg')) {\n return 'image/jpeg'\n }\n if (lower.includes('.webp')) {\n return 'image/webp'\n }\n return 'image/png'\n}\n\nexport async function compressImageByCanvas(src: string, quality: number) {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return src\n }\n const ImageCtor = (globalThis as { Image?: typeof Image }).Image\n if (typeof ImageCtor !== 'function') {\n return src\n }\n const canvas = document.createElement('canvas') as HTMLCanvasElement\n if (!canvas || typeof canvas.getContext !== 'function') {\n return src\n }\n return new Promise<string>((resolve, reject) => {\n const image = new ImageCtor()\n image.onload = () => {\n try {\n const width = Number((image as { naturalWidth?: number }).naturalWidth ?? image.width ?? 0)\n const height = Number((image as { naturalHeight?: number }).naturalHeight ?? image.height ?? 0)\n const context = canvas.getContext('2d')\n if (!context || typeof context.drawImage !== 'function' || width <= 0 || height <= 0) {\n resolve(src)\n return\n }\n canvas.width = width\n canvas.height = height\n context.drawImage(image, 0, 0, width, height)\n if (typeof canvas.toDataURL !== 'function') {\n resolve(src)\n return\n }\n const dataUrl = canvas.toDataURL(resolveCompressImageMimeType(src), quality / 100)\n resolve(dataUrl || src)\n }\n catch (error) {\n reject(error)\n }\n }\n image.onerror = () => {\n reject(new Error('image load error'))\n }\n image.src = src\n })\n}\n\nexport function normalizeChooseVideoFile(file: {\n size?: number\n type?: string\n name?: string\n}) {\n if (inferChooseMediaFileType(file) !== 'video') {\n return null\n }\n return {\n tempFilePath: createTempFilePath(file),\n duration: 0,\n size: typeof file.size === 'number' ? file.size : 0,\n height: 0,\n width: 0,\n }\n}\n\nexport async function pickChooseVideoFile() {\n const files = await pickChooseMediaFiles(1, new Set(['video']))\n return files[0] ?? null\n}\n"],"mappings":";;;AAMA,SAAgB,8BAA8B,SAA6B;CACzE,IAAI,OAAO,YAAY,YAAY,OAAO,MAAM,OAAO,GACrD,OAAO;CAET,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,OAAO,CAAC,CAAC;AACvD;AAEA,SAAS,6BAA6B,KAAa;CACjD,MAAM,QAAQ,IAAI,YAAY;CAC9B,IAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,OAAO,GAClD,OAAO;CAET,IAAI,MAAM,SAAS,OAAO,GACxB,OAAO;CAET,OAAO;AACT;AAEA,eAAsB,sBAAsB,KAAa,SAAiB;CACxE,IAAI,OAAO,aAAa,eAAe,OAAO,SAAS,kBAAkB,YACvE,OAAO;CAET,MAAM,YAAa,WAAwC;CAC3D,IAAI,OAAO,cAAc,YACvB,OAAO;CAET,MAAM,SAAS,SAAS,cAAc,QAAQ;CAC9C,IAAI,CAAC,UAAU,OAAO,OAAO,eAAe,YAC1C,OAAO;CAET,OAAO,IAAI,SAAiB,SAAS,WAAW;EAC9C,MAAM,QAAQ,IAAI,UAAU;EAC5B,MAAM,eAAe;GACnB,IAAI;IACF,MAAM,QAAQ,OAAQ,MAAoC,gBAAgB,MAAM,SAAS,CAAC;IAC1F,MAAM,SAAS,OAAQ,MAAqC,iBAAiB,MAAM,UAAU,CAAC;IAC9F,MAAM,UAAU,OAAO,WAAW,IAAI;IACtC,IAAI,CAAC,WAAW,OAAO,QAAQ,cAAc,cAAc,SAAS,KAAK,UAAU,GAAG;KACpF,QAAQ,GAAG;KACX;IACF;IACA,OAAO,QAAQ;IACf,OAAO,SAAS;IAChB,QAAQ,UAAU,OAAO,GAAG,GAAG,OAAO,MAAM;IAC5C,IAAI,OAAO,OAAO,cAAc,YAAY;KAC1C,QAAQ,GAAG;KACX;IACF;IAEA,QADgB,OAAO,UAAU,6BAA6B,GAAG,GAAG,UAAU,GAChE,KAAK,GAAG;GACxB,SACO,OAAO;IACZ,OAAO,KAAK;GACd;EACF;EACA,MAAM,gBAAgB;GACpB,uBAAO,IAAI,MAAM,kBAAkB,CAAC;EACtC;EACA,MAAM,MAAM;CACd,CAAC;AACH;AAEA,SAAgB,yBAAyB,MAItC;CACD,IAAI,yBAAyB,IAAI,MAAM,SACrC,OAAO;CAET,OAAO;EACL,cAAc,mBAAmB,IAAI;EACrC,UAAU;EACV,MAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;EAClD,QAAQ;EACR,OAAO;CACT;AACF;AAEA,eAAsB,sBAAsB;CAE1C,QAAO,MADa,qBAAqB,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GACjD,MAAM;AACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"menuApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/menuApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport { readNetworkStatusSnapshot } from './network'\nimport {\n normalizeSubscribeTemplateIds,\n resolveSubscribeDecisionMap,\n} from './subscribe'\nimport {\n normalizeActionSheetItems,\n resolveActionSheetSelection,\n resolveModalSelection,\n} from './ui'\n\nexport function getNetworkTypeBridge(options?: any): Promise<any> {\n const status = readNetworkStatusSnapshot()\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'getNetworkType:ok',\n ...status,\n }))\n}\n\nexport function showTabBarBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showTabBar:ok' }))\n}\n\nexport function hideTabBarBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'hideTabBar:ok' }))\n}\n\nexport function requestPaymentBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'requestPayment:ok' }))\n}\n\nexport function requestSubscribeMessageBridge(options?: any): Promise<any> {\n const tmplIds = normalizeSubscribeTemplateIds(options?.tmplIds)\n if (tmplIds.length === 0) {\n const failure = callMiniProgramAsyncFailure(options, 'requestSubscribeMessage:fail invalid tmplIds')\n return Promise.reject(failure)\n }\n const decisionMap = resolveSubscribeDecisionMap(tmplIds)\n const result: Record<string, any> & { errMsg: string } = tmplIds.reduce<Record<string, any> & { errMsg: string }>((payload, tmplId) => {\n payload[tmplId] = decisionMap[tmplId]\n return payload\n }, { errMsg: 'requestSubscribeMessage:ok' })\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showModalBridge(options?: any): Promise<any> {\n const modalResult = resolveModalSelection(options)\n const result = {\n errMsg: 'showModal:ok',\n confirm: modalResult.confirm,\n cancel: modalResult.cancel,\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showActionSheetBridge(options?: any): Promise<any> {\n const itemList = normalizeActionSheetItems(options?.itemList)\n if (!itemList.length) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail invalid itemList')\n return Promise.reject(failure)\n }\n const tapIndex = resolveActionSheetSelection(itemList)\n if (tapIndex === null) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail cancel')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'showActionSheet:ok',\n tapIndex,\n }))\n}\n\nexport function showShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showShareMenu:ok' }))\n}\n\nexport function updateShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'updateShareMenu:ok' }))\n}\n"],"mappings":";;;;;;AAeA,SAAgB,qBAAqB,SAA6B;CAChE,MAAM,SAAS,2BAA2B;CAC1C,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;EACJ,CAAC,CAAC;;AAGL,SAAgB,iBAAiB,SAA6B;CAC5D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,iBAAiB,CAAC,CAAC;;AAG3F,SAAgB,iBAAiB,SAA6B;CAC5D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,iBAAiB,CAAC,CAAC;;AAG3F,SAAgB,qBAAqB,SAA6B;CAChE,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,qBAAqB,CAAC,CAAC;;AAG/F,SAAgB,8BAA8B,SAA6B;CACzE,MAAM,UAAU,8BAA8B,SAAS,QAAQ;CAC/D,IAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,UAAU,4BAA4B,SAAS,+CAA+C;EACpG,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,cAAc,4BAA4B,QAAQ;CACxD,MAAM,SAAmD,QAAQ,QAAkD,SAAS,WAAW;EACrI,QAAQ,UAAU,YAAY;EAC9B,OAAO;IACN,EAAE,QAAQ,8BAA8B,CAAC;CAC5C,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,OAAO,CAAC;;AAGtE,SAAgB,gBAAgB,SAA6B;CAC3D,MAAM,cAAc,sBAAsB,QAAQ;CAClD,MAAM,SAAS;EACb,QAAQ;EACR,SAAS,YAAY;EACrB,QAAQ,YAAY;EACrB;CACD,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,OAAO,CAAC;;AAGtE,SAAgB,sBAAsB,SAA6B;CACjE,MAAM,WAAW,0BAA0B,SAAS,SAAS;CAC7D,IAAI,CAAC,SAAS,QAAQ;EACpB,MAAM,UAAU,4BAA4B,SAAS,wCAAwC;EAC7F,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,MAAM,WAAW,4BAA4B,SAAS;CACtD,IAAI,aAAa,MAAM;EACrB,MAAM,UAAU,4BAA4B,SAAS,8BAA8B;EACnF,OAAO,QAAQ,OAAO,QAAQ;;CAEhC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;EACD,CAAC,CAAC;;AAGL,SAAgB,oBAAoB,SAA6B;CAC/D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,oBAAoB,CAAC,CAAC;;AAG9F,SAAgB,sBAAsB,SAA6B;CACjE,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"menuApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/menuApi.ts"],"sourcesContent":["import {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport { readNetworkStatusSnapshot } from './network'\nimport {\n normalizeSubscribeTemplateIds,\n resolveSubscribeDecisionMap,\n} from './subscribe'\nimport {\n normalizeActionSheetItems,\n resolveActionSheetSelection,\n resolveModalSelection,\n} from './ui'\n\nexport function getNetworkTypeBridge(options?: any): Promise<any> {\n const status = readNetworkStatusSnapshot()\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'getNetworkType:ok',\n ...status,\n }))\n}\n\nexport function showTabBarBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showTabBar:ok' }))\n}\n\nexport function hideTabBarBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'hideTabBar:ok' }))\n}\n\nexport function requestPaymentBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'requestPayment:ok' }))\n}\n\nexport function requestSubscribeMessageBridge(options?: any): Promise<any> {\n const tmplIds = normalizeSubscribeTemplateIds(options?.tmplIds)\n if (tmplIds.length === 0) {\n const failure = callMiniProgramAsyncFailure(options, 'requestSubscribeMessage:fail invalid tmplIds')\n return Promise.reject(failure)\n }\n const decisionMap = resolveSubscribeDecisionMap(tmplIds)\n const result: Record<string, any> & { errMsg: string } = tmplIds.reduce<Record<string, any> & { errMsg: string }>((payload, tmplId) => {\n payload[tmplId] = decisionMap[tmplId]\n return payload\n }, { errMsg: 'requestSubscribeMessage:ok' })\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showModalBridge(options?: any): Promise<any> {\n const modalResult = resolveModalSelection(options)\n const result = {\n errMsg: 'showModal:ok',\n confirm: modalResult.confirm,\n cancel: modalResult.cancel,\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showActionSheetBridge(options?: any): Promise<any> {\n const itemList = normalizeActionSheetItems(options?.itemList)\n if (!itemList.length) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail invalid itemList')\n return Promise.reject(failure)\n }\n const tapIndex = resolveActionSheetSelection(itemList)\n if (tapIndex === null) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail cancel')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'showActionSheet:ok',\n tapIndex,\n }))\n}\n\nexport function showShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showShareMenu:ok' }))\n}\n\nexport function updateShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'updateShareMenu:ok' }))\n}\n"],"mappings":";;;;;;AAeA,SAAgB,qBAAqB,SAA6B;CAChE,MAAM,SAAS,0BAA0B;CACzC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;CACL,CAAC,CAAC;AACJ;AAEA,SAAgB,iBAAiB,SAA6B;CAC5D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,gBAAgB,CAAC,CAAC;AAC1F;AAEA,SAAgB,iBAAiB,SAA6B;CAC5D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,gBAAgB,CAAC,CAAC;AAC1F;AAEA,SAAgB,qBAAqB,SAA6B;CAChE,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,oBAAoB,CAAC,CAAC;AAC9F;AAEA,SAAgB,8BAA8B,SAA6B;CACzE,MAAM,UAAU,8BAA8B,SAAS,OAAO;CAC9D,IAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,UAAU,4BAA4B,SAAS,8CAA8C;EACnG,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,cAAc,4BAA4B,OAAO;CACvD,MAAM,SAAmD,QAAQ,QAAkD,SAAS,WAAW;EACrI,QAAQ,UAAU,YAAY;EAC9B,OAAO;CACT,GAAG,EAAE,QAAQ,6BAA6B,CAAC;CAC3C,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,MAAM,CAAC;AACrE;AAEA,SAAgB,gBAAgB,SAA6B;CAC3D,MAAM,cAAc,sBAAsB,OAAO;CACjD,MAAM,SAAS;EACb,QAAQ;EACR,SAAS,YAAY;EACrB,QAAQ,YAAY;CACtB;CACA,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,MAAM,CAAC;AACrE;AAEA,SAAgB,sBAAsB,SAA6B;CACjE,MAAM,WAAW,0BAA0B,SAAS,QAAQ;CAC5D,IAAI,CAAC,SAAS,QAAQ;EACpB,MAAM,UAAU,4BAA4B,SAAS,uCAAuC;EAC5F,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,WAAW,4BAA4B,QAAQ;CACrD,IAAI,aAAa,MAAM;EACrB,MAAM,UAAU,4BAA4B,SAAS,6BAA6B;EAClF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;CACF,CAAC,CAAC;AACJ;AAEA,SAAgB,oBAAoB,SAA6B;CAC/D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;AAC7F;AAEA,SAAgB,sBAAsB,SAA6B;CACjE,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,qBAAqB,CAAC,CAAC;AAC/F"}