@useupup/preact 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/AudioUploader-2WITC5YR-4WGBUCEB.js +298 -0
- package/dist/AudioUploader-2WITC5YR-4WGBUCEB.js.map +1 -0
- package/dist/AudioUploader-2WITC5YR-GCKVRJAT.cjs +298 -0
- package/dist/AudioUploader-2WITC5YR-GCKVRJAT.cjs.map +1 -0
- package/dist/BoxUploader-VE5LRJ7M-CWGNYYJV.js +170 -0
- package/dist/BoxUploader-VE5LRJ7M-CWGNYYJV.js.map +1 -0
- package/dist/BoxUploader-VE5LRJ7M-IE7LYW5P.cjs +170 -0
- package/dist/BoxUploader-VE5LRJ7M-IE7LYW5P.cjs.map +1 -0
- package/dist/CameraUploader-WF5A6UIS-3KBW647M.cjs +628 -0
- package/dist/CameraUploader-WF5A6UIS-3KBW647M.cjs.map +1 -0
- package/dist/CameraUploader-WF5A6UIS-DONVXSEZ.js +628 -0
- package/dist/CameraUploader-WF5A6UIS-DONVXSEZ.js.map +1 -0
- package/dist/DropboxUploader-VMUYG3OP-7FKTLIIL.cjs +172 -0
- package/dist/DropboxUploader-VMUYG3OP-7FKTLIIL.cjs.map +1 -0
- package/dist/DropboxUploader-VMUYG3OP-DBUPHIG7.js +172 -0
- package/dist/DropboxUploader-VMUYG3OP-DBUPHIG7.js.map +1 -0
- package/dist/GoogleDriveUploader-YA56X3QR-FMS6MTYU.js +175 -0
- package/dist/GoogleDriveUploader-YA56X3QR-FMS6MTYU.js.map +1 -0
- package/dist/GoogleDriveUploader-YA56X3QR-OR3CQLX2.cjs +175 -0
- package/dist/GoogleDriveUploader-YA56X3QR-OR3CQLX2.cjs.map +1 -0
- package/dist/ImageEditorInline-N2NSAODR-QWXPP3ON.js +184 -0
- package/dist/ImageEditorInline-N2NSAODR-QWXPP3ON.js.map +1 -0
- package/dist/ImageEditorInline-N2NSAODR-ZVAM6EOA.cjs +184 -0
- package/dist/ImageEditorInline-N2NSAODR-ZVAM6EOA.cjs.map +1 -0
- package/dist/ImageEditorModal-CWKMDVPY-PRD43JPH.cjs +236 -0
- package/dist/ImageEditorModal-CWKMDVPY-PRD43JPH.cjs.map +1 -0
- package/dist/ImageEditorModal-CWKMDVPY-ZRPTYHYN.js +236 -0
- package/dist/ImageEditorModal-CWKMDVPY-ZRPTYHYN.js.map +1 -0
- package/dist/OneDriveUploader-I25Y6AJP-FVXK6RGT.js +173 -0
- package/dist/OneDriveUploader-I25Y6AJP-FVXK6RGT.js.map +1 -0
- package/dist/OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs +173 -0
- package/dist/OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs.map +1 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js +286 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js.map +1 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-G7ADH264.cjs +286 -0
- package/dist/ScreenCaptureUploader-WKDO4S75-G7ADH264.cjs.map +1 -0
- package/dist/chunk-2XFVSPFN.cjs +293 -0
- package/dist/chunk-2XFVSPFN.cjs.map +1 -0
- package/dist/chunk-7JLN2HMZ.cjs +4296 -0
- package/dist/chunk-7JLN2HMZ.cjs.map +1 -0
- package/dist/chunk-BVMKSTAE.js +4296 -0
- package/dist/chunk-BVMKSTAE.js.map +1 -0
- package/dist/chunk-C7QBCXAH.js +39 -0
- package/dist/chunk-C7QBCXAH.js.map +1 -0
- package/dist/chunk-CR6CXFRP.js +195 -0
- package/dist/chunk-CR6CXFRP.js.map +1 -0
- package/dist/chunk-ETIJATY7.cjs +39 -0
- package/dist/chunk-ETIJATY7.cjs.map +1 -0
- package/dist/chunk-FH3LYESR.js +411 -0
- package/dist/chunk-FH3LYESR.js.map +1 -0
- package/dist/chunk-GKMTOOTQ.cjs +411 -0
- package/dist/chunk-GKMTOOTQ.cjs.map +1 -0
- package/dist/chunk-KHH3WHWU.js +74 -0
- package/dist/chunk-KHH3WHWU.js.map +1 -0
- package/dist/chunk-V2O5HRJV.cjs +74 -0
- package/dist/chunk-V2O5HRJV.cjs.map +1 -0
- package/dist/chunk-WCI3AGJV.js +831 -0
- package/dist/chunk-WCI3AGJV.js.map +1 -0
- package/dist/chunk-YWJHE7U4.cjs +195 -0
- package/dist/chunk-YWJHE7U4.cjs.map +1 -0
- package/dist/chunk-ZGWETRKI.js +293 -0
- package/dist/chunk-ZGWETRKI.js.map +1 -0
- package/dist/chunk-ZKZJ5PPP.cjs +831 -0
- package/dist/chunk-ZKZJ5PPP.cjs.map +1 -0
- package/dist/filerobot-bridge-52YH7W2M.cjs +92 -0
- package/dist/filerobot-bridge-52YH7W2M.cjs.map +1 -0
- package/dist/filerobot-bridge-ED4XMHX4.js +92 -0
- package/dist/filerobot-bridge-ED4XMHX4.js.map +1 -0
- package/dist/filerobot-island.css +97 -0
- package/dist/filerobot-island.css.map +1 -0
- package/dist/filerobot-island.js +77951 -0
- package/dist/filerobot-island.js.map +1 -0
- package/dist/index.cjs +5600 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5600 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.d.ts +4 -0
- package/dist/tailwind-prefixed.css +2529 -0
- package/package.json +130 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack://Webcam/webpack/universalModuleDefinition","webpack://Webcam/webpack/bootstrap","webpack://Webcam/src/react-webcam.tsx","webpack://Webcam/external%20%7B%22root%22:%22React%22,%22commonjs2%22:%22react%22,%22commonjs%22:%22react%22,%22amd%22:%22react%22%7D","../../react/src/components/CameraUploader.tsx","../../react/src/hooks/useCameraUploader.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Webcam\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Webcam\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_react__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/react-webcam.tsx\");\n","import * as React from \"react\";\n\n// polyfill based on https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n(function polyfillGetUserMedia() {\n if (typeof window === 'undefined') {\n return;\n }\n\n // Older browsers might not implement mediaDevices at all, so we set an empty object first\n if (navigator.mediaDevices === undefined) {\n (navigator as any).mediaDevices = {};\n }\n\n // Some browsers partially implement mediaDevices. We can't just assign an object\n // with getUserMedia as it would overwrite existing properties.\n // Here, we will just add the getUserMedia property if it's missing.\n if (navigator.mediaDevices.getUserMedia === undefined) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n // First get ahold of the legacy getUserMedia, if present\n const getUserMedia =\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n navigator.msGetUserMedia;\n\n // Some browsers just don't implement it - return a rejected promise with an error\n // to keep a consistent interface\n if (!getUserMedia) {\n return Promise.reject(\n new Error(\"getUserMedia is not implemented in this browser\")\n );\n }\n\n // Otherwise, wrap the call to the old navigator.getUserMedia with a Promise\n return new Promise(function(resolve, reject) {\n getUserMedia.call(navigator, constraints, resolve, reject);\n });\n };\n }\n})();\n\nfunction hasGetUserMedia() {\n return !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n}\n\ninterface ScreenshotDimensions {\n width: number;\n height: number;\n}\n\ninterface ChildrenProps {\n getScreenshot: (screenshotDimensions?: ScreenshotDimensions) => string | null;\n}\n\nexport type WebcamProps = Omit<React.HTMLProps<HTMLVideoElement>, \"ref\"> & {\n audio: boolean;\n audioConstraints?: MediaStreamConstraints[\"audio\"];\n disablePictureInPicture: boolean;\n forceScreenshotSourceSize: boolean;\n imageSmoothing: boolean;\n mirrored: boolean;\n minScreenshotHeight?: number;\n minScreenshotWidth?: number;\n onUserMedia: (stream: MediaStream) => void;\n onUserMediaError: (error: string | DOMException) => void;\n screenshotFormat: \"image/webp\" | \"image/png\" | \"image/jpeg\";\n screenshotQuality: number;\n videoConstraints?: MediaStreamConstraints[\"video\"];\n children?: (childrenProps: ChildrenProps) => JSX.Element;\n}\n\ninterface WebcamState {\n hasUserMedia: boolean;\n src?: string;\n}\n\nexport default class Webcam extends React.Component<WebcamProps, WebcamState> {\n static defaultProps = {\n audio: false,\n disablePictureInPicture: false,\n forceScreenshotSourceSize: false,\n imageSmoothing: true,\n mirrored: false,\n onUserMedia: () => undefined,\n onUserMediaError: () => undefined,\n screenshotFormat: \"image/webp\",\n screenshotQuality: 0.92,\n };\n\n private canvas: HTMLCanvasElement | null = null;\n\n private ctx: CanvasRenderingContext2D | null = null;\n\n private requestUserMediaId = 0;\n\n private unmounted = false;\n\n stream: MediaStream | null;\n\n video: HTMLVideoElement | null;\n\n constructor(props: WebcamProps) {\n super(props);\n this.state = {\n hasUserMedia: false\n };\n }\n\n componentDidMount() {\n const { state, props } = this;\n this.unmounted = false;\n\n if (!hasGetUserMedia()) {\n props.onUserMediaError(\"getUserMedia not supported\");\n\n return;\n }\n\n if (!state.hasUserMedia) {\n this.requestUserMedia();\n }\n\n if (props.children && typeof props.children != 'function') {\n console.warn(\"children must be a function\");\n }\n }\n\n componentDidUpdate(nextProps: WebcamProps) {\n const { props } = this;\n\n if (!hasGetUserMedia()) {\n props.onUserMediaError(\"getUserMedia not supported\");\n\n return;\n }\n\n const audioConstraintsChanged =\n JSON.stringify(nextProps.audioConstraints) !==\n JSON.stringify(props.audioConstraints);\n const videoConstraintsChanged =\n JSON.stringify(nextProps.videoConstraints) !==\n JSON.stringify(props.videoConstraints);\n const minScreenshotWidthChanged =\n nextProps.minScreenshotWidth !== props.minScreenshotWidth;\n const minScreenshotHeightChanged =\n nextProps.minScreenshotHeight !== props.minScreenshotHeight;\n if (\n videoConstraintsChanged ||\n minScreenshotWidthChanged ||\n minScreenshotHeightChanged\n ) {\n this.canvas = null;\n this.ctx = null;\n }\n if (audioConstraintsChanged || videoConstraintsChanged) {\n this.stopAndCleanup();\n this.requestUserMedia();\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n this.stopAndCleanup();\n }\n\n private static stopMediaStream(stream: MediaStream | null) {\n if (stream) {\n if (stream.getVideoTracks && stream.getAudioTracks) {\n stream.getVideoTracks().map(track => {\n stream.removeTrack(track);\n track.stop();\n });\n stream.getAudioTracks().map(track => {\n stream.removeTrack(track);\n track.stop()\n });\n } else {\n ((stream as unknown) as MediaStreamTrack).stop();\n }\n }\n }\n\n private stopAndCleanup() {\n const { state } = this;\n\n if (state.hasUserMedia) {\n Webcam.stopMediaStream(this.stream);\n\n if (state.src) {\n window.URL.revokeObjectURL(state.src);\n }\n }\n }\n\n getScreenshot(screenshotDimensions?: ScreenshotDimensions) {\n const { state, props } = this;\n\n if (!state.hasUserMedia) return null;\n\n const canvas = this.getCanvas(screenshotDimensions);\n return (\n canvas &&\n canvas.toDataURL(props.screenshotFormat, props.screenshotQuality)\n );\n }\n\n getCanvas(screenshotDimensions?: ScreenshotDimensions) {\n const { state, props } = this;\n\n if (!this.video) {\n return null;\n }\n\n if (!state.hasUserMedia || !this.video.videoHeight) return null;\n\n if (!this.ctx) {\n let canvasWidth = this.video.videoWidth;\n let canvasHeight = this.video.videoHeight;\n if (!this.props.forceScreenshotSourceSize) {\n const aspectRatio = canvasWidth / canvasHeight;\n\n canvasWidth = props.minScreenshotWidth || this.video.clientWidth;\n canvasHeight = canvasWidth / aspectRatio;\n\n if (\n props.minScreenshotHeight &&\n canvasHeight < props.minScreenshotHeight\n ) {\n canvasHeight = props.minScreenshotHeight;\n canvasWidth = canvasHeight * aspectRatio;\n }\n }\n\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = screenshotDimensions?.width || canvasWidth;\n this.canvas.height = screenshotDimensions?.height || canvasHeight;\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n const { ctx, canvas } = this;\n\n if (ctx && canvas) {\n\n // adjust the height and width of the canvas to the given dimensions\n canvas.width = screenshotDimensions?.width || canvas.width;\n canvas.height = screenshotDimensions?.height || canvas.height;\n\n // mirror the screenshot\n if (props.mirrored) {\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n }\n\n ctx.imageSmoothingEnabled = props.imageSmoothing;\n ctx.drawImage(this.video, 0, 0, screenshotDimensions?.width || canvas.width, screenshotDimensions?.height || canvas.height);\n\n // invert mirroring\n if (props.mirrored) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n }\n\n return canvas;\n }\n\n private requestUserMedia() {\n const { props } = this;\n\n const sourceSelected = (\n audioConstraints: boolean | MediaTrackConstraints | undefined,\n videoConstraints: boolean | MediaTrackConstraints | undefined,\n ) => {\n const constraints: MediaStreamConstraints = {\n video: typeof videoConstraints !== \"undefined\" ? videoConstraints : true\n };\n\n if (props.audio) {\n constraints.audio =\n typeof audioConstraints !== \"undefined\" ? audioConstraints : true;\n }\n\n this.requestUserMediaId++\n const myRequestUserMediaId = this.requestUserMediaId\n\n navigator.mediaDevices\n .getUserMedia(constraints)\n .then(stream => {\n if (this.unmounted || myRequestUserMediaId !== this.requestUserMediaId) {\n Webcam.stopMediaStream(stream);\n } else {\n this.handleUserMedia(null, stream);\n }\n })\n .catch(e => {\n this.handleUserMedia(e);\n });\n };\n\n if (\"mediaDevices\" in navigator) {\n sourceSelected(props.audioConstraints, props.videoConstraints);\n } else {\n const optionalSource = (id: string | null) => ({ optional: [{ sourceId: id }] }) as MediaTrackConstraints;\n\n const constraintToSourceId = (constraint) => {\n const { deviceId } = constraint;\n\n if (typeof deviceId === \"string\") {\n return deviceId;\n }\n\n if (Array.isArray(deviceId) && deviceId.length > 0) {\n return deviceId[0];\n }\n\n if (typeof deviceId === \"object\" && deviceId.ideal) {\n return deviceId.ideal;\n }\n\n return null;\n };\n\n // @ts-ignore: deprecated api\n MediaStreamTrack.getSources(sources => {\n let audioSource: string | null = null;\n let videoSource: string | null = null;\n\n sources.forEach((source: MediaStreamTrack) => {\n if (source.kind === \"audio\") {\n audioSource = source.id;\n } else if (source.kind === \"video\") {\n videoSource = source.id;\n }\n });\n\n const audioSourceId = constraintToSourceId(props.audioConstraints);\n if (audioSourceId) {\n audioSource = audioSourceId;\n }\n\n const videoSourceId = constraintToSourceId(props.videoConstraints);\n if (videoSourceId) {\n videoSource = videoSourceId;\n }\n\n sourceSelected(\n optionalSource(audioSource),\n optionalSource(videoSource)\n );\n });\n }\n }\n\n private handleUserMedia(err, stream?: MediaStream) {\n const { props } = this;\n\n if (err || !stream) {\n this.setState({ hasUserMedia: false });\n props.onUserMediaError(err);\n\n return;\n }\n\n this.stream = stream;\n\n try {\n if (this.video) {\n this.video.srcObject = stream;\n }\n this.setState({ hasUserMedia: true });\n } catch (error) {\n this.setState({\n hasUserMedia: true,\n src: window.URL.createObjectURL(stream)\n });\n }\n\n props.onUserMedia(stream);\n }\n\n render() {\n const { state, props } = this;\n\n const {\n audio,\n forceScreenshotSourceSize,\n disablePictureInPicture,\n onUserMedia,\n onUserMediaError,\n screenshotFormat,\n screenshotQuality,\n minScreenshotWidth,\n minScreenshotHeight,\n audioConstraints,\n videoConstraints,\n imageSmoothing,\n mirrored,\n style = {},\n children,\n ...rest\n } = props;\n\n const videoStyle = mirrored ? { ...style, transform: `${style.transform || \"\"} scaleX(-1)` } : style;\n\n const childrenProps: ChildrenProps = {\n getScreenshot: this.getScreenshot.bind(this),\n };\n\n return (\n <>\n <video\n autoPlay\n disablePictureInPicture={disablePictureInPicture}\n src={state.src}\n muted={!audio}\n playsInline\n ref={ref => {\n this.video = ref;\n }}\n style={videoStyle}\n {...rest}\n />\n {children && children(childrenProps)}\n </>\n );\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","import React from 'react'\r\nimport Webcam from 'react-webcam'\r\nimport { formatUiMessage as t } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport useCameraUploader from '../hooks/useCameraUploader'\r\nimport SourceViewContainer from './shared/SourceViewContainer'\r\n\r\nexport default function CameraUploader(): React.ReactElement | null {\r\n const {\r\n capture,\r\n handleFetchImage,\r\n clearUrl,\r\n handleCameraSwitch,\r\n newCameraSide,\r\n url,\r\n webcamRef,\r\n facingMode,\r\n translations: tr,\r\n props: {\r\n icons: { CameraCaptureIcon, CameraDeleteIcon, CameraRotateIcon },\r\n },\r\n theme: { isDark: dark, slotOverrides: slotClasses },\r\n } = useCameraUploader()\r\n\r\n return (\r\n <SourceViewContainer data-upup-slot=\"camera-uploader\">\r\n <div\r\n data-testid=\"upup-camera-uploader\"\r\n className=\"upup-flex upup-h-full upup-w-full upup-flex-col upup-justify-center upup-overflow-hidden upup-px-3 upup-py-2\"\r\n >\r\n <div className=\"upup-flex upup-min-h-0 upup-flex-1 upup-items-center upup-justify-center upup-pt-2\">\r\n {!!url && (\r\n <div\r\n className={cn(\r\n 'upup-relative upup-aspect-video upup-max-h-full upup-max-w-full upup-bg-black/[0.025] upup-bg-contain upup-bg-center upup-bg-no-repeat upup-shadow-xl',\r\n {\r\n 'upup-bg-white/5 dark:upup-bg-white/5':\r\n dark,\r\n },\r\n slotClasses.cameraPreviewContainer,\r\n )}\r\n style={{ backgroundImage: `url(${url})` }}\r\n >\r\n <button\r\n onClick={clearUrl}\r\n className={cn(\r\n 'upup-absolute upup--right-2 upup--top-2 upup-z-10 upup-rounded-full upup-bg-[#272727] upup-p-1 upup-text-xl upup-text-[#f5f5f5]',\r\n slotClasses.cameraDeleteButton,\r\n )}\r\n type=\"button\"\r\n >\r\n <CameraDeleteIcon />\r\n </button>\r\n </div>\r\n )}\r\n\r\n {!url && (\r\n <Webcam\r\n audio={false}\r\n ref={webcamRef}\r\n screenshotFormat=\"image/jpeg\"\r\n videoConstraints={{ facingMode }}\r\n className=\"upup-aspect-video upup-max-h-full upup-max-w-full upup-rounded-xl upup-object-contain\"\r\n />\r\n )}\r\n </div>\r\n <div className=\"upup-flex upup-shrink-0 upup-gap-4\">\r\n {!url && (\r\n <>\r\n <button\r\n className={cn(\r\n 'upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-justify-center upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]':\r\n dark,\r\n },\r\n slotClasses.cameraCaptureButton,\r\n )}\r\n onClick={capture}\r\n type=\"button\"\r\n >\r\n <span>\r\n <CameraCaptureIcon />\r\n </span>\r\n <span>{tr.capture}</span>\r\n </button>\r\n <button\r\n className={cn(\r\n 'upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-rounded-md upup-bg-gray-500 upup-p-2 upup-text-white upup-transition-all upup-duration-300 hover:upup-bg-gray-600',\r\n slotClasses.cameraRotateButton,\r\n )}\r\n onClick={handleCameraSwitch}\r\n type=\"button\"\r\n >\r\n <span>\r\n <CameraRotateIcon />\r\n </span>\r\n <span>\r\n {t(tr.switchToCamera, {\r\n side:\r\n newCameraSide === 'front'\r\n ? tr.front\r\n : tr.back,\r\n })}\r\n </span>\r\n </button>\r\n </>\r\n )}\r\n {!!url && (\r\n <button\r\n className={cn(\r\n 'upup-mt-2 upup-w-full upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]':\r\n dark,\r\n },\r\n slotClasses.cameraAddButton,\r\n )}\r\n onClick={handleFetchImage}\r\n type=\"button\"\r\n >\r\n {tr.addImage}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </SourceViewContainer>\r\n )\r\n}\r\n","import { MouseEventHandler, RefObject, useRef, useState } from 'react'\r\nimport Webcam from 'react-webcam'\r\nimport {\r\n useUploaderFiles,\r\n useUploaderI18n,\r\n useUploaderOptions,\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n useUploaderTheme,\r\n type ContextI18n,\r\n type ContextProps,\r\n type ContextTheme,\r\n} from '../context/UploaderContext'\r\nimport useFetchFileByUrl from './useFetchFileByUrl'\r\n\r\nexport enum FacingMode {\r\n Environment = 'environment',\r\n User = 'user',\r\n}\r\n\r\nexport default function useCameraUploader(): {\r\n url: string\r\n webcamRef: RefObject<Webcam | null>\r\n facingMode: FacingMode\r\n capture: () => void\r\n handleFetchImage: MouseEventHandler<HTMLButtonElement>\r\n clearUrl: () => void\r\n handleCameraSwitch: () => void\r\n newCameraSide: string\r\n translations: ContextI18n['translations']\r\n props: ContextProps\r\n theme: ContextTheme\r\n} {\r\n const { core } = useUploaderRuntime()\r\n const { setFiles } = useUploaderFiles()\r\n const { setActiveSource } = useUploaderSource()\r\n const { translations } = useUploaderI18n()\r\n const props = useUploaderOptions()\r\n const theme = useUploaderTheme()\r\n const { fetchImage } = useFetchFileByUrl()\r\n const webcamRef = useRef<Webcam>(null)\r\n const [url, setUrl] = useState('')\r\n const [facingMode, setFacingMode] = useState<FacingMode>(\r\n FacingMode.Environment,\r\n )\r\n const newCameraSide =\r\n facingMode === FacingMode.Environment ? 'front' : 'back'\r\n const clearUrl = () => {\r\n setUrl('')\r\n }\r\n\r\n const capture = () => {\r\n const url = webcamRef.current?.getScreenshot()\r\n if (!url) return\r\n\r\n setUrl(url)\r\n core?.emit('camera-capture', { dataUrl: url })\r\n }\r\n\r\n const handleFetchImage: MouseEventHandler<HTMLButtonElement> = () => {\r\n void (async () => {\r\n const file = await fetchImage(url)\r\n if (file) {\r\n setFiles([file])\r\n setUrl('')\r\n setActiveSource(undefined)\r\n core?.emit('camera-confirm', { file })\r\n }\r\n })()\r\n }\r\n\r\n const handleCameraSwitch = () => {\r\n setFacingMode(prevState =>\r\n prevState === FacingMode.Environment\r\n ? FacingMode.User\r\n : FacingMode.Environment,\r\n )\r\n }\r\n\r\n return {\r\n url,\r\n webcamRef,\r\n facingMode,\r\n capture,\r\n handleFetchImage,\r\n clearUrl,\r\n handleCameraSwitch,\r\n newCameraSide,\r\n translations,\r\n props,\r\n theme,\r\n }\r\n}\r\n"],"mappings":"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","names":["module","exports","key","Webcam","url","Webcam"]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkZKZJ5PPPcjs = require('./chunk-ZKZJ5PPP.cjs');
|
|
6
|
+
require('./chunk-7JLN2HMZ.cjs');
|
|
7
|
+
require('./chunk-ETIJATY7.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunk2XFVSPFNcjs = require('./chunk-2XFVSPFN.cjs');
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunkGKMTOOTQcjs = require('./chunk-GKMTOOTQ.cjs');
|
|
19
|
+
|
|
20
|
+
// ../react/dist/DropboxUploader-VMUYG3OP.js
|
|
21
|
+
_chunkGKMTOOTQcjs.init_compat_module.call(void 0, );
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var _core = require('@useupup/core');
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
var _internal = require('@useupup/core/internal');
|
|
28
|
+
var SERVER_SNAPSHOT = {
|
|
29
|
+
user: void 0,
|
|
30
|
+
folder: void 0,
|
|
31
|
+
path: [],
|
|
32
|
+
selectedFiles: [],
|
|
33
|
+
isClickLoading: false,
|
|
34
|
+
showLoader: false,
|
|
35
|
+
isAuthReady: false,
|
|
36
|
+
isAuthenticated: false,
|
|
37
|
+
isLoading: true,
|
|
38
|
+
authCancelled: false,
|
|
39
|
+
token: void 0,
|
|
40
|
+
error: void 0,
|
|
41
|
+
hasMore: false,
|
|
42
|
+
isLoadingMore: false
|
|
43
|
+
};
|
|
44
|
+
function useDropbox() {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const { core } = _chunk2XFVSPFNcjs.useUploaderRuntime.call(void 0, );
|
|
47
|
+
const { setActiveSource } = _chunk2XFVSPFNcjs.useUploaderSource.call(void 0, );
|
|
48
|
+
const { setFiles } = _chunk2XFVSPFNcjs.useUploaderFiles.call(void 0, );
|
|
49
|
+
const controllerRef = (0, _chunkGKMTOOTQcjs.compat_module_exports.useRef)(null);
|
|
50
|
+
if (!controllerRef.current && core) {
|
|
51
|
+
controllerRef.current = new (0, _internal.DriveBrowserController)(
|
|
52
|
+
core,
|
|
53
|
+
_core.DROPBOX_DESCRIPTOR,
|
|
54
|
+
{
|
|
55
|
+
onFilesSelected: (files) => {
|
|
56
|
+
setFiles(files);
|
|
57
|
+
},
|
|
58
|
+
onClose: () => {
|
|
59
|
+
setActiveSource(void 0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
const controller = controllerRef.current;
|
|
65
|
+
(0, _chunkGKMTOOTQcjs.compat_module_exports.useEffect)(() => {
|
|
66
|
+
controller == null ? void 0 : controller.init();
|
|
67
|
+
return () => controller == null ? void 0 : controller.destroy();
|
|
68
|
+
}, [controller]);
|
|
69
|
+
const state = _chunkGKMTOOTQcjs.C.call(void 0,
|
|
70
|
+
(_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
|
|
71
|
+
}),
|
|
72
|
+
(_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
|
|
73
|
+
() => SERVER_SNAPSHOT
|
|
74
|
+
);
|
|
75
|
+
const setPath = (0, _chunkGKMTOOTQcjs.compat_module_exports.useCallback)(
|
|
76
|
+
(value) => controller == null ? void 0 : controller.setPath(
|
|
77
|
+
typeof value === "function" ? value(controller.getSnapshot().path) : value
|
|
78
|
+
),
|
|
79
|
+
[controller]
|
|
80
|
+
);
|
|
81
|
+
return {
|
|
82
|
+
user: state.user,
|
|
83
|
+
dropboxFiles: state.folder,
|
|
84
|
+
logout: () => controller == null ? void 0 : controller.signOut(),
|
|
85
|
+
authenticate: () => controller == null ? void 0 : controller.signIn(),
|
|
86
|
+
// 'active' is a presence sentinel the component checks via `!token`; the real
|
|
87
|
+
// token lives in state.token and is intentionally not surfaced here.
|
|
88
|
+
token: state.isAuthenticated ? "active" : void 0,
|
|
89
|
+
isAuthenticated: state.isAuthenticated,
|
|
90
|
+
isLoading: state.isLoading,
|
|
91
|
+
path: state.path,
|
|
92
|
+
setPath,
|
|
93
|
+
isClickLoading: state.isClickLoading,
|
|
94
|
+
handleClick: (file) => controller == null ? void 0 : controller.handleClick(file),
|
|
95
|
+
selectedFiles: state.selectedFiles,
|
|
96
|
+
showLoader: state.showLoader,
|
|
97
|
+
handleSubmit: () => {
|
|
98
|
+
var _a2;
|
|
99
|
+
return (_a2 = controller == null ? void 0 : controller.handleSubmit()) != null ? _a2 : Promise.resolve();
|
|
100
|
+
},
|
|
101
|
+
handleCancelDownload: () => {
|
|
102
|
+
controller == null ? void 0 : controller.handleCancelDownload();
|
|
103
|
+
},
|
|
104
|
+
onSelectCurrentFolder: () => {
|
|
105
|
+
var _a2;
|
|
106
|
+
return (_a2 = controller == null ? void 0 : controller.onSelectCurrentFolder()) != null ? _a2 : Promise.resolve();
|
|
107
|
+
},
|
|
108
|
+
error: state.error,
|
|
109
|
+
hasMore: state.hasMore,
|
|
110
|
+
isLoadingMore: state.isLoadingMore,
|
|
111
|
+
loadMore: () => {
|
|
112
|
+
var _a2;
|
|
113
|
+
return (_a2 = controller == null ? void 0 : controller.loadMore()) != null ? _a2 : Promise.resolve();
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function DropboxUploader() {
|
|
118
|
+
const { mode } = _chunk2XFVSPFNcjs.useUploaderRuntime.call(void 0, );
|
|
119
|
+
const { setActiveSource } = _chunk2XFVSPFNcjs.useUploaderSource.call(void 0, );
|
|
120
|
+
if (mode === "server") {
|
|
121
|
+
return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0,
|
|
122
|
+
_chunkZKZJ5PPPcjs.ServerModeDriveUploader,
|
|
123
|
+
{
|
|
124
|
+
provider: "dropbox",
|
|
125
|
+
onBack: () => {
|
|
126
|
+
setActiveSource(void 0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0, ClientDropboxUploader, {});
|
|
132
|
+
}
|
|
133
|
+
function ClientDropboxUploader() {
|
|
134
|
+
const {
|
|
135
|
+
user,
|
|
136
|
+
dropboxFiles: driveFiles,
|
|
137
|
+
logout,
|
|
138
|
+
token,
|
|
139
|
+
isAuthenticated,
|
|
140
|
+
authenticate,
|
|
141
|
+
isLoading,
|
|
142
|
+
...uploaderProps
|
|
143
|
+
} = useDropbox();
|
|
144
|
+
const handleSignOut = async () => {
|
|
145
|
+
logout();
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
};
|
|
148
|
+
if (!isAuthenticated && !token && !isLoading) {
|
|
149
|
+
return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0,
|
|
150
|
+
_chunkZKZJ5PPPcjs.DriveAuthFallback,
|
|
151
|
+
{
|
|
152
|
+
providerName: "Dropbox",
|
|
153
|
+
onRetry: authenticate,
|
|
154
|
+
"data-upup-slot": "dropbox-uploader"
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0,
|
|
159
|
+
_chunkZKZJ5PPPcjs.DriveBrowser,
|
|
160
|
+
{
|
|
161
|
+
driveFiles,
|
|
162
|
+
user,
|
|
163
|
+
handleSignOut,
|
|
164
|
+
"data-upup-slot": "dropbox-uploader",
|
|
165
|
+
...uploaderProps
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
exports.default = DropboxUploader;
|
|
172
|
+
//# sourceMappingURL=DropboxUploader-VMUYG3OP-7FKTLIIL.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["c:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\preact\\dist\\DropboxUploader-VMUYG3OP-7FKTLIIL.cjs"],"names":[],"mappings":"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","file":"C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\preact\\dist\\DropboxUploader-VMUYG3OP-7FKTLIIL.cjs","sourcesContent":[null]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DriveAuthFallback,
|
|
3
|
+
DriveBrowser,
|
|
4
|
+
ServerModeDriveUploader
|
|
5
|
+
} from "./chunk-WCI3AGJV.js";
|
|
6
|
+
import "./chunk-BVMKSTAE.js";
|
|
7
|
+
import "./chunk-C7QBCXAH.js";
|
|
8
|
+
import {
|
|
9
|
+
u,
|
|
10
|
+
useUploaderFiles,
|
|
11
|
+
useUploaderRuntime,
|
|
12
|
+
useUploaderSource
|
|
13
|
+
} from "./chunk-ZGWETRKI.js";
|
|
14
|
+
import {
|
|
15
|
+
C,
|
|
16
|
+
compat_module_exports,
|
|
17
|
+
init_compat_module
|
|
18
|
+
} from "./chunk-FH3LYESR.js";
|
|
19
|
+
|
|
20
|
+
// ../react/dist/DropboxUploader-VMUYG3OP.js
|
|
21
|
+
init_compat_module();
|
|
22
|
+
import {
|
|
23
|
+
DROPBOX_DESCRIPTOR
|
|
24
|
+
} from "@useupup/core";
|
|
25
|
+
import {
|
|
26
|
+
DriveBrowserController
|
|
27
|
+
} from "@useupup/core/internal";
|
|
28
|
+
var SERVER_SNAPSHOT = {
|
|
29
|
+
user: void 0,
|
|
30
|
+
folder: void 0,
|
|
31
|
+
path: [],
|
|
32
|
+
selectedFiles: [],
|
|
33
|
+
isClickLoading: false,
|
|
34
|
+
showLoader: false,
|
|
35
|
+
isAuthReady: false,
|
|
36
|
+
isAuthenticated: false,
|
|
37
|
+
isLoading: true,
|
|
38
|
+
authCancelled: false,
|
|
39
|
+
token: void 0,
|
|
40
|
+
error: void 0,
|
|
41
|
+
hasMore: false,
|
|
42
|
+
isLoadingMore: false
|
|
43
|
+
};
|
|
44
|
+
function useDropbox() {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const { core } = useUploaderRuntime();
|
|
47
|
+
const { setActiveSource } = useUploaderSource();
|
|
48
|
+
const { setFiles } = useUploaderFiles();
|
|
49
|
+
const controllerRef = (0, compat_module_exports.useRef)(null);
|
|
50
|
+
if (!controllerRef.current && core) {
|
|
51
|
+
controllerRef.current = new DriveBrowserController(
|
|
52
|
+
core,
|
|
53
|
+
DROPBOX_DESCRIPTOR,
|
|
54
|
+
{
|
|
55
|
+
onFilesSelected: (files) => {
|
|
56
|
+
setFiles(files);
|
|
57
|
+
},
|
|
58
|
+
onClose: () => {
|
|
59
|
+
setActiveSource(void 0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
const controller = controllerRef.current;
|
|
65
|
+
(0, compat_module_exports.useEffect)(() => {
|
|
66
|
+
controller == null ? void 0 : controller.init();
|
|
67
|
+
return () => controller == null ? void 0 : controller.destroy();
|
|
68
|
+
}, [controller]);
|
|
69
|
+
const state = C(
|
|
70
|
+
(_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
|
|
71
|
+
}),
|
|
72
|
+
(_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
|
|
73
|
+
() => SERVER_SNAPSHOT
|
|
74
|
+
);
|
|
75
|
+
const setPath = (0, compat_module_exports.useCallback)(
|
|
76
|
+
(value) => controller == null ? void 0 : controller.setPath(
|
|
77
|
+
typeof value === "function" ? value(controller.getSnapshot().path) : value
|
|
78
|
+
),
|
|
79
|
+
[controller]
|
|
80
|
+
);
|
|
81
|
+
return {
|
|
82
|
+
user: state.user,
|
|
83
|
+
dropboxFiles: state.folder,
|
|
84
|
+
logout: () => controller == null ? void 0 : controller.signOut(),
|
|
85
|
+
authenticate: () => controller == null ? void 0 : controller.signIn(),
|
|
86
|
+
// 'active' is a presence sentinel the component checks via `!token`; the real
|
|
87
|
+
// token lives in state.token and is intentionally not surfaced here.
|
|
88
|
+
token: state.isAuthenticated ? "active" : void 0,
|
|
89
|
+
isAuthenticated: state.isAuthenticated,
|
|
90
|
+
isLoading: state.isLoading,
|
|
91
|
+
path: state.path,
|
|
92
|
+
setPath,
|
|
93
|
+
isClickLoading: state.isClickLoading,
|
|
94
|
+
handleClick: (file) => controller == null ? void 0 : controller.handleClick(file),
|
|
95
|
+
selectedFiles: state.selectedFiles,
|
|
96
|
+
showLoader: state.showLoader,
|
|
97
|
+
handleSubmit: () => {
|
|
98
|
+
var _a2;
|
|
99
|
+
return (_a2 = controller == null ? void 0 : controller.handleSubmit()) != null ? _a2 : Promise.resolve();
|
|
100
|
+
},
|
|
101
|
+
handleCancelDownload: () => {
|
|
102
|
+
controller == null ? void 0 : controller.handleCancelDownload();
|
|
103
|
+
},
|
|
104
|
+
onSelectCurrentFolder: () => {
|
|
105
|
+
var _a2;
|
|
106
|
+
return (_a2 = controller == null ? void 0 : controller.onSelectCurrentFolder()) != null ? _a2 : Promise.resolve();
|
|
107
|
+
},
|
|
108
|
+
error: state.error,
|
|
109
|
+
hasMore: state.hasMore,
|
|
110
|
+
isLoadingMore: state.isLoadingMore,
|
|
111
|
+
loadMore: () => {
|
|
112
|
+
var _a2;
|
|
113
|
+
return (_a2 = controller == null ? void 0 : controller.loadMore()) != null ? _a2 : Promise.resolve();
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function DropboxUploader() {
|
|
118
|
+
const { mode } = useUploaderRuntime();
|
|
119
|
+
const { setActiveSource } = useUploaderSource();
|
|
120
|
+
if (mode === "server") {
|
|
121
|
+
return /* @__PURE__ */ u(
|
|
122
|
+
ServerModeDriveUploader,
|
|
123
|
+
{
|
|
124
|
+
provider: "dropbox",
|
|
125
|
+
onBack: () => {
|
|
126
|
+
setActiveSource(void 0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
return /* @__PURE__ */ u(ClientDropboxUploader, {});
|
|
132
|
+
}
|
|
133
|
+
function ClientDropboxUploader() {
|
|
134
|
+
const {
|
|
135
|
+
user,
|
|
136
|
+
dropboxFiles: driveFiles,
|
|
137
|
+
logout,
|
|
138
|
+
token,
|
|
139
|
+
isAuthenticated,
|
|
140
|
+
authenticate,
|
|
141
|
+
isLoading,
|
|
142
|
+
...uploaderProps
|
|
143
|
+
} = useDropbox();
|
|
144
|
+
const handleSignOut = async () => {
|
|
145
|
+
logout();
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
};
|
|
148
|
+
if (!isAuthenticated && !token && !isLoading) {
|
|
149
|
+
return /* @__PURE__ */ u(
|
|
150
|
+
DriveAuthFallback,
|
|
151
|
+
{
|
|
152
|
+
providerName: "Dropbox",
|
|
153
|
+
onRetry: authenticate,
|
|
154
|
+
"data-upup-slot": "dropbox-uploader"
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
return /* @__PURE__ */ u(
|
|
159
|
+
DriveBrowser,
|
|
160
|
+
{
|
|
161
|
+
driveFiles,
|
|
162
|
+
user,
|
|
163
|
+
handleSignOut,
|
|
164
|
+
"data-upup-slot": "dropbox-uploader",
|
|
165
|
+
...uploaderProps
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
export {
|
|
170
|
+
DropboxUploader as default
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=DropboxUploader-VMUYG3OP-DBUPHIG7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../react/src/hooks/useDropbox.ts","../../react/src/components/DropboxUploader.tsx"],"sourcesContent":["import {\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n useSyncExternalStore,\r\n type SetStateAction,\r\n} from 'react'\r\nimport {\r\n DROPBOX_DESCRIPTOR,\r\n type DriveFile,\r\n type DriveFolder,\r\n} from '@useupup/core'\r\nimport {\r\n DriveBrowserController,\r\n type DriveBrowserState,\r\n} from '@useupup/core/internal'\r\nimport {\r\n useUploaderFiles,\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\n\r\n/** Stable fallback snapshot — mirrors DriveBrowserController constructor defaults. */\r\nconst SERVER_SNAPSHOT: DriveBrowserState = {\r\n user: undefined,\r\n folder: undefined,\r\n path: [],\r\n selectedFiles: [],\r\n isClickLoading: false,\r\n showLoader: false,\r\n isAuthReady: false,\r\n isAuthenticated: false,\r\n isLoading: true,\r\n authCancelled: false,\r\n token: undefined,\r\n error: undefined,\r\n hasMore: false,\r\n isLoadingMore: false,\r\n}\r\n\r\nexport interface UseDropboxResult {\r\n user: DriveBrowserState['user']\r\n dropboxFiles: DriveBrowserState['folder']\r\n logout: () => void\r\n authenticate: () => void\r\n token: string | undefined\r\n isAuthenticated: boolean\r\n isLoading: boolean\r\n path: DriveFolder[]\r\n setPath: (value: SetStateAction<DriveFolder[]>) => void\r\n isClickLoading: boolean\r\n handleClick: (file: DriveFile) => void\r\n selectedFiles: DriveFile[]\r\n showLoader: boolean\r\n handleSubmit: () => Promise<void>\r\n handleCancelDownload: () => void\r\n onSelectCurrentFolder: () => Promise<void>\r\n error: DriveBrowserState['error']\r\n hasMore: boolean\r\n isLoadingMore: boolean\r\n loadMore: () => Promise<void>\r\n}\r\n\r\nexport function useDropbox(): UseDropboxResult {\r\n const { core } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n const { setFiles } = useUploaderFiles()\r\n\r\n // One controller per mounted adapter view, created once (guarded ref) — same\r\n // idiom as useUploaderController's rootRef. setFiles/setActiveSource are referentially\r\n // stable (useCallback over root), so capturing them once is safe.\r\n const controllerRef = useRef<DriveBrowserController | null>(null)\r\n if (!controllerRef.current && core) {\r\n controllerRef.current = new DriveBrowserController(\r\n core,\r\n DROPBOX_DESCRIPTOR,\r\n {\r\n onFilesSelected: files => {\r\n setFiles(files)\r\n },\r\n onClose: () => {\r\n setActiveSource(undefined)\r\n },\r\n },\r\n )\r\n }\r\n const controller = controllerRef.current\r\n\r\n useEffect(() => {\r\n controller?.init()\r\n return () => controller?.destroy()\r\n }, [controller])\r\n\r\n const state = useSyncExternalStore(\r\n controller?.subscribe ?? (() => () => {}),\r\n controller?.getSnapshot ?? (() => SERVER_SNAPSHOT),\r\n () => SERVER_SNAPSHOT,\r\n )\r\n\r\n // setPath is passed as a prop to DriveBrowser/DriveBrowserHeader, where the\r\n // breadcrumb truncates the trail by calling it with a functional updater\r\n // (`prev => prev.slice(0, i+1)`). It MUST be referentially stable across renders\r\n // (same reason useUploaderController useCallbacks its setters) and resolves that\r\n // updater against the live snapshot before delegating to the array-only\r\n // controller.setPath.\r\n const setPath = useCallback(\r\n (value: SetStateAction<DriveFolder[]>) =>\r\n controller?.setPath(\r\n typeof value === 'function'\r\n ? value(controller.getSnapshot().path)\r\n : value,\r\n ),\r\n [controller],\r\n )\r\n\r\n return {\r\n user: state.user,\r\n dropboxFiles: state.folder,\r\n logout: () => controller?.signOut(),\r\n authenticate: () => controller?.signIn(),\r\n // 'active' is a presence sentinel the component checks via `!token`; the real\r\n // token lives in state.token and is intentionally not surfaced here.\r\n token: state.isAuthenticated ? 'active' : undefined,\r\n isAuthenticated: state.isAuthenticated,\r\n isLoading: state.isLoading,\r\n path: state.path,\r\n setPath,\r\n isClickLoading: state.isClickLoading,\r\n handleClick: (file: DriveFile) => controller?.handleClick(file),\r\n selectedFiles: state.selectedFiles,\r\n showLoader: state.showLoader,\r\n handleSubmit: () => controller?.handleSubmit() ?? Promise.resolve(),\r\n handleCancelDownload: () => {\r\n controller?.handleCancelDownload()\r\n },\r\n onSelectCurrentFolder: () =>\r\n controller?.onSelectCurrentFolder() ?? Promise.resolve(),\r\n error: state.error,\r\n hasMore: state.hasMore,\r\n isLoadingMore: state.isLoadingMore,\r\n loadMore: () => controller?.loadMore() ?? Promise.resolve(),\r\n }\r\n}\r\n","import React from 'react'\r\nimport {\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\nimport { useDropbox } from '../hooks/useDropbox'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback'\r\nimport DriveBrowser from './shared/DriveBrowser'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader'\r\n\r\nexport default function DropboxUploader(): React.ReactElement | null {\r\n const { mode } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n if (mode === 'server') {\r\n return (\r\n <ServerModeDriveUploader\r\n provider=\"dropbox\"\r\n onBack={() => {\r\n setActiveSource(undefined)\r\n }}\r\n />\r\n )\r\n }\r\n return <ClientDropboxUploader />\r\n}\r\n\r\nfunction ClientDropboxUploader() {\r\n const {\r\n user,\r\n dropboxFiles: driveFiles,\r\n logout,\r\n token,\r\n isAuthenticated,\r\n authenticate,\r\n isLoading,\r\n ...uploaderProps\r\n } = useDropbox()\r\n\r\n const handleSignOut = async () => {\r\n logout()\r\n return Promise.resolve()\r\n }\r\n\r\n if (!isAuthenticated && !token && !isLoading) {\r\n return (\r\n <DriveAuthFallback\r\n providerName=\"Dropbox\"\r\n onRetry={authenticate}\r\n data-upup-slot=\"dropbox-uploader\"\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <DriveBrowser\r\n driveFiles={driveFiles}\r\n user={user}\r\n handleSignOut={handleSignOut}\r\n data-upup-slot=\"dropbox-uploader\"\r\n {...uploaderProps}\r\n />\r\n )\r\n}\r\n"],"mappings":"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","names":["_a"]}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DriveAuthFallback,
|
|
3
|
+
DriveBrowser,
|
|
4
|
+
ServerModeDriveUploader
|
|
5
|
+
} from "./chunk-WCI3AGJV.js";
|
|
6
|
+
import "./chunk-BVMKSTAE.js";
|
|
7
|
+
import "./chunk-C7QBCXAH.js";
|
|
8
|
+
import {
|
|
9
|
+
u,
|
|
10
|
+
useUploaderFiles,
|
|
11
|
+
useUploaderRuntime,
|
|
12
|
+
useUploaderSource
|
|
13
|
+
} from "./chunk-ZGWETRKI.js";
|
|
14
|
+
import {
|
|
15
|
+
C,
|
|
16
|
+
compat_module_exports,
|
|
17
|
+
init_compat_module
|
|
18
|
+
} from "./chunk-FH3LYESR.js";
|
|
19
|
+
|
|
20
|
+
// ../react/dist/GoogleDriveUploader-YA56X3QR.js
|
|
21
|
+
init_compat_module();
|
|
22
|
+
import {
|
|
23
|
+
GOOGLE_DRIVE_DESCRIPTOR
|
|
24
|
+
} from "@useupup/core";
|
|
25
|
+
import {
|
|
26
|
+
DriveBrowserController
|
|
27
|
+
} from "@useupup/core/internal";
|
|
28
|
+
var SERVER_SNAPSHOT = {
|
|
29
|
+
user: void 0,
|
|
30
|
+
folder: void 0,
|
|
31
|
+
path: [],
|
|
32
|
+
selectedFiles: [],
|
|
33
|
+
isClickLoading: false,
|
|
34
|
+
showLoader: false,
|
|
35
|
+
isAuthReady: false,
|
|
36
|
+
isAuthenticated: false,
|
|
37
|
+
isLoading: true,
|
|
38
|
+
authCancelled: false,
|
|
39
|
+
token: void 0,
|
|
40
|
+
error: void 0,
|
|
41
|
+
hasMore: false,
|
|
42
|
+
isLoadingMore: false
|
|
43
|
+
};
|
|
44
|
+
function useGoogleDrive() {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const { core } = useUploaderRuntime();
|
|
47
|
+
const { setActiveSource } = useUploaderSource();
|
|
48
|
+
const { setFiles } = useUploaderFiles();
|
|
49
|
+
const controllerRef = (0, compat_module_exports.useRef)(null);
|
|
50
|
+
if (!controllerRef.current && core) {
|
|
51
|
+
controllerRef.current = new DriveBrowserController(
|
|
52
|
+
core,
|
|
53
|
+
GOOGLE_DRIVE_DESCRIPTOR,
|
|
54
|
+
{
|
|
55
|
+
onFilesSelected: (files) => {
|
|
56
|
+
setFiles(files);
|
|
57
|
+
},
|
|
58
|
+
onClose: () => {
|
|
59
|
+
setActiveSource(void 0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
const controller = controllerRef.current;
|
|
65
|
+
(0, compat_module_exports.useEffect)(() => {
|
|
66
|
+
controller == null ? void 0 : controller.init();
|
|
67
|
+
return () => controller == null ? void 0 : controller.destroy();
|
|
68
|
+
}, [controller]);
|
|
69
|
+
const state = C(
|
|
70
|
+
(_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
|
|
71
|
+
}),
|
|
72
|
+
(_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
|
|
73
|
+
() => SERVER_SNAPSHOT
|
|
74
|
+
);
|
|
75
|
+
const setPath = (0, compat_module_exports.useCallback)(
|
|
76
|
+
(value) => controller == null ? void 0 : controller.setPath(
|
|
77
|
+
typeof value === "function" ? value(controller.getSnapshot().path) : value
|
|
78
|
+
),
|
|
79
|
+
[controller]
|
|
80
|
+
);
|
|
81
|
+
return {
|
|
82
|
+
user: state.user,
|
|
83
|
+
googleFiles: state.folder,
|
|
84
|
+
handleSignOut: () => {
|
|
85
|
+
controller == null ? void 0 : controller.signOut();
|
|
86
|
+
return Promise.resolve();
|
|
87
|
+
},
|
|
88
|
+
token: state.token,
|
|
89
|
+
authCancelled: state.authCancelled,
|
|
90
|
+
// GoogleDrive has no separate signIn: initial consent AND retry both go
|
|
91
|
+
// through retryAuth (it resets authCancelled, then requests a GIS token).
|
|
92
|
+
retryAuth: () => controller == null ? void 0 : controller.retryAuth(),
|
|
93
|
+
isAuthReady: state.isAuthReady,
|
|
94
|
+
path: state.path,
|
|
95
|
+
setPath,
|
|
96
|
+
handleClick: (file) => controller == null ? void 0 : controller.handleClick(file),
|
|
97
|
+
selectedFiles: state.selectedFiles,
|
|
98
|
+
showLoader: state.showLoader,
|
|
99
|
+
handleSubmit: () => {
|
|
100
|
+
var _a2;
|
|
101
|
+
return (_a2 = controller == null ? void 0 : controller.handleSubmit()) != null ? _a2 : Promise.resolve();
|
|
102
|
+
},
|
|
103
|
+
handleCancelDownload: () => {
|
|
104
|
+
controller == null ? void 0 : controller.handleCancelDownload();
|
|
105
|
+
},
|
|
106
|
+
onSelectCurrentFolder: () => {
|
|
107
|
+
var _a2;
|
|
108
|
+
return (_a2 = controller == null ? void 0 : controller.onSelectCurrentFolder()) != null ? _a2 : Promise.resolve();
|
|
109
|
+
},
|
|
110
|
+
error: state.error,
|
|
111
|
+
hasMore: state.hasMore,
|
|
112
|
+
isLoadingMore: state.isLoadingMore,
|
|
113
|
+
loadMore: () => {
|
|
114
|
+
var _a2;
|
|
115
|
+
return (_a2 = controller == null ? void 0 : controller.loadMore()) != null ? _a2 : Promise.resolve();
|
|
116
|
+
},
|
|
117
|
+
isClickLoading: state.isClickLoading
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
var useGoogleDrive_default = useGoogleDrive;
|
|
121
|
+
function GoogleDriveUploader() {
|
|
122
|
+
const { mode } = useUploaderRuntime();
|
|
123
|
+
const { setActiveSource } = useUploaderSource();
|
|
124
|
+
if (mode === "server") {
|
|
125
|
+
return /* @__PURE__ */ u(
|
|
126
|
+
ServerModeDriveUploader,
|
|
127
|
+
{
|
|
128
|
+
provider: "google-drive",
|
|
129
|
+
onBack: () => {
|
|
130
|
+
setActiveSource(void 0);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
return /* @__PURE__ */ u(ClientGoogleDriveUploader, {});
|
|
136
|
+
}
|
|
137
|
+
function ClientGoogleDriveUploader() {
|
|
138
|
+
const {
|
|
139
|
+
user,
|
|
140
|
+
googleFiles: driveFiles,
|
|
141
|
+
handleSignOut,
|
|
142
|
+
token,
|
|
143
|
+
authCancelled,
|
|
144
|
+
retryAuth,
|
|
145
|
+
isAuthReady,
|
|
146
|
+
error,
|
|
147
|
+
...uploaderProps
|
|
148
|
+
} = useGoogleDrive_default();
|
|
149
|
+
if (!token && (authCancelled || isAuthReady)) {
|
|
150
|
+
return /* @__PURE__ */ u(
|
|
151
|
+
DriveAuthFallback,
|
|
152
|
+
{
|
|
153
|
+
providerName: "Google Drive",
|
|
154
|
+
onRetry: retryAuth,
|
|
155
|
+
error,
|
|
156
|
+
"data-upup-slot": "google-drive-uploader"
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
return /* @__PURE__ */ u(
|
|
161
|
+
DriveBrowser,
|
|
162
|
+
{
|
|
163
|
+
driveFiles,
|
|
164
|
+
user,
|
|
165
|
+
handleSignOut,
|
|
166
|
+
error,
|
|
167
|
+
"data-upup-slot": "google-drive-uploader",
|
|
168
|
+
...uploaderProps
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
export {
|
|
173
|
+
GoogleDriveUploader as default
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=GoogleDriveUploader-YA56X3QR-FMS6MTYU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../react/src/hooks/useGoogleDrive.ts","../../react/src/components/GoogleDriveUploader.tsx"],"sourcesContent":["import {\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n useSyncExternalStore,\r\n type SetStateAction,\r\n} from 'react'\r\nimport {\r\n GOOGLE_DRIVE_DESCRIPTOR,\r\n type DriveFile,\r\n type DriveFolder,\r\n} from '@useupup/core'\r\nimport {\r\n DriveBrowserController,\r\n type DriveBrowserState,\r\n} from '@useupup/core/internal'\r\nimport {\r\n useUploaderFiles,\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\n\r\n/** Stable fallback snapshot — mirrors DriveBrowserController constructor defaults. */\r\nconst SERVER_SNAPSHOT: DriveBrowserState = {\r\n user: undefined,\r\n folder: undefined,\r\n path: [],\r\n selectedFiles: [],\r\n isClickLoading: false,\r\n showLoader: false,\r\n isAuthReady: false,\r\n isAuthenticated: false,\r\n isLoading: true,\r\n authCancelled: false,\r\n token: undefined,\r\n error: undefined,\r\n hasMore: false,\r\n isLoadingMore: false,\r\n}\r\n\r\nexport interface UseGoogleDriveResult {\r\n user: DriveBrowserState['user']\r\n googleFiles: DriveBrowserState['folder']\r\n handleSignOut: () => Promise<void>\r\n token: DriveBrowserState['token']\r\n authCancelled: boolean\r\n retryAuth: () => void\r\n isAuthReady: boolean\r\n path: DriveFolder[]\r\n setPath: (value: SetStateAction<DriveFolder[]>) => void\r\n handleClick: (file: DriveFile) => void\r\n selectedFiles: DriveFile[]\r\n showLoader: boolean\r\n handleSubmit: () => Promise<void>\r\n handleCancelDownload: () => void\r\n onSelectCurrentFolder: () => Promise<void>\r\n error: DriveBrowserState['error']\r\n hasMore: boolean\r\n isLoadingMore: boolean\r\n loadMore: () => Promise<void>\r\n isClickLoading: boolean\r\n}\r\n\r\nexport function useGoogleDrive(): UseGoogleDriveResult {\r\n const { core } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n const { setFiles } = useUploaderFiles()\r\n\r\n // GIS config (client id / api key) + GIS script loading are sourced inside the\r\n // controller (plugin.getConfig() + core loadGoogleIdentityServices), so the hook\r\n // no longer reads the drive config from context or uses useLoadGAPI.\r\n const controllerRef = useRef<DriveBrowserController | null>(null)\r\n if (!controllerRef.current && core) {\r\n controllerRef.current = new DriveBrowserController(\r\n core,\r\n GOOGLE_DRIVE_DESCRIPTOR,\r\n {\r\n onFilesSelected: files => {\r\n setFiles(files)\r\n },\r\n onClose: () => {\r\n setActiveSource(undefined)\r\n },\r\n },\r\n )\r\n }\r\n const controller = controllerRef.current\r\n\r\n useEffect(() => {\r\n controller?.init()\r\n return () => controller?.destroy()\r\n }, [controller])\r\n\r\n const state = useSyncExternalStore(\r\n controller?.subscribe ?? (() => () => {}),\r\n controller?.getSnapshot ?? (() => SERVER_SNAPSHOT),\r\n () => SERVER_SNAPSHOT,\r\n )\r\n\r\n // setPath is passed as a prop to DriveBrowser/DriveBrowserHeader, where the\r\n // breadcrumb truncates the trail by calling it with a functional updater\r\n // (`prev => prev.slice(0, i+1)`). It MUST be referentially stable across renders\r\n // (same reason useUploaderController useCallbacks its setters) and resolves that\r\n // updater against the live snapshot before delegating to the array-only\r\n // controller.setPath.\r\n const setPath = useCallback(\r\n (value: SetStateAction<DriveFolder[]>) =>\r\n controller?.setPath(\r\n typeof value === 'function'\r\n ? value(controller.getSnapshot().path)\r\n : value,\r\n ),\r\n [controller],\r\n )\r\n\r\n return {\r\n user: state.user,\r\n googleFiles: state.folder,\r\n handleSignOut: () => {\r\n controller?.signOut()\r\n return Promise.resolve()\r\n },\r\n token: state.token,\r\n authCancelled: state.authCancelled,\r\n // GoogleDrive has no separate signIn: initial consent AND retry both go\r\n // through retryAuth (it resets authCancelled, then requests a GIS token).\r\n retryAuth: () => controller?.retryAuth(),\r\n isAuthReady: state.isAuthReady,\r\n path: state.path,\r\n setPath,\r\n handleClick: (file: DriveFile) => controller?.handleClick(file),\r\n selectedFiles: state.selectedFiles,\r\n showLoader: state.showLoader,\r\n handleSubmit: () => controller?.handleSubmit() ?? Promise.resolve(),\r\n handleCancelDownload: () => {\r\n controller?.handleCancelDownload()\r\n },\r\n onSelectCurrentFolder: () =>\r\n controller?.onSelectCurrentFolder() ?? Promise.resolve(),\r\n error: state.error,\r\n hasMore: state.hasMore,\r\n isLoadingMore: state.isLoadingMore,\r\n loadMore: () => controller?.loadMore() ?? Promise.resolve(),\r\n isClickLoading: state.isClickLoading,\r\n }\r\n}\r\n\r\nexport default useGoogleDrive\r\n","import React from 'react'\r\nimport {\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\nimport useGoogleDrive from '../hooks/useGoogleDrive'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback'\r\nimport DriveBrowser from './shared/DriveBrowser'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader'\r\n\r\nexport default function GoogleDriveUploader(): React.ReactElement | null {\r\n const { mode } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n if (mode === 'server') {\r\n return (\r\n <ServerModeDriveUploader\r\n provider=\"google-drive\"\r\n onBack={() => {\r\n setActiveSource(undefined)\r\n }}\r\n />\r\n )\r\n }\r\n return <ClientGoogleDriveUploader />\r\n}\r\n\r\nfunction ClientGoogleDriveUploader() {\r\n const {\r\n user,\r\n googleFiles: driveFiles,\r\n handleSignOut,\r\n token,\r\n authCancelled,\r\n retryAuth,\r\n isAuthReady,\r\n error,\r\n ...uploaderProps\r\n } = useGoogleDrive()\r\n\r\n if (!token && (authCancelled || isAuthReady)) {\r\n return (\r\n <DriveAuthFallback\r\n providerName=\"Google Drive\"\r\n onRetry={retryAuth}\r\n error={error}\r\n data-upup-slot=\"google-drive-uploader\"\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <DriveBrowser\r\n driveFiles={driveFiles}\r\n user={user}\r\n handleSignOut={handleSignOut}\r\n error={error}\r\n data-upup-slot=\"google-drive-uploader\"\r\n {...uploaderProps}\r\n />\r\n )\r\n}\r\n"],"mappings":"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","names":["_a"]}
|