{
  "../filestack-react.js": {
    "sri": "'use client';\nvar jsxRuntime = require('react/jsx-runtime');\nvar react = require('react');\nvar filestack = require('filestack-js');\n\nfunction _interopNamespace(e) {\n  if (e && e.__esModule) return e;\n  var n = Object.create(null);\n  if (e) {\n    Object.keys(e).forEach(function (k) {\n      if (k !== 'default') {\n        var d = Object.getOwnPropertyDescriptor(e, k);\n        Object.defineProperty(n, k, d.get ? d : {\n          enumerable: true,\n          get: function () { return e[k]; }\n        });\n      }\n    });\n  }\n  n[\"default\"] = e;\n  return n;\n}\n\nvar filestack__namespace = /*#__PURE__*/_interopNamespace(filestack);\n\nfunction _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\n\nvar _useStableReference = function _useStableReference(value) {\n  var serialized = JSON.stringify(value);\n  var ref = react.useRef({\n    serialized: serialized,\n    value: value\n  });\n  if (ref.current.serialized !== serialized) {\n    ref.current = {\n      serialized: serialized,\n      value: value\n    };\n  }\n  return ref.current.value;\n};\n/**\r\n * Drive a Filestack picker through its lifecycle.\r\n *\r\n * Instantiates `filestack.Filestack(apikey, clientOptions).picker(...)` inside\r\n * a `useEffect`, opens it, and closes it on unmount. Stable references are\r\n * derived for `pickerOptions` / `clientOptions` so callers can pass new-but-equal\r\n * object literals on every render without re-creating the picker.\r\n */\nvar usePicker = function usePicker(_ref) {\n  var apikey = _ref.apikey,\n    _ref$pickerOptions = _ref.pickerOptions,\n    pickerOptions = _ref$pickerOptions === void 0 ? {} : _ref$pickerOptions,\n    _ref$clientOptions = _ref.clientOptions,\n    clientOptions = _ref$clientOptions === void 0 ? {} : _ref$clientOptions,\n    onSuccess = _ref.onSuccess,\n    onUploadDone = _ref.onUploadDone,\n    _ref$onError = _ref.onError,\n    onError = _ref$onError === void 0 ? function () {} : _ref$onError;\n  var id = react.useId().replace(/:/g, '');\n  var rootId = \"fs-root-\" + id;\n  var containerId = \"fs-container-\" + id;\n  var stablePickerOptions = _useStableReference(pickerOptions);\n  var stableClientOptions = _useStableReference(clientOptions);\n  var onUploadDoneRef = react.useRef(function () {});\n  onUploadDoneRef.current = function (result) {\n    var handler = onUploadDone || onSuccess || function () {};\n    handler(result);\n  };\n  var onErrorRef = react.useRef(function () {});\n  onErrorRef.current = function (error) {\n    onError(error);\n  };\n  // Serializes picker `open()`/`close()` calls across effect runs. `open()` and\n  // `close()` are async, and the container DOM id (derived from `useId`) is\n  // stable across an effect's setup→cleanup→setup cycle — so without\n  // serialization the operations can interleave on the same container. In React\n  // StrictMode this manifests as the picker mounting twice, or the first\n  // instance's late `close()` tearing down the container the second instance\n  // just mounted into (leaving nothing rendered). Chaining guarantees the\n  // strict order: open A → close A → open B.\n  var operationChainRef = react.useRef(Promise.resolve());\n  react.useEffect(function () {\n    var picker = filestack__namespace.Filestack(apikey, stableClientOptions).picker(_extends({\n      rootId: rootId,\n      container: \"#\" + containerId,\n      onUploadDone: function onUploadDone(result) {\n        return onUploadDoneRef.current(result);\n      }\n    }, stablePickerOptions));\n    operationChainRef.current = operationChainRef.current.then(function () {\n      return picker.open()[\"catch\"](function (error) {\n        return onErrorRef.current(error);\n      });\n    });\n    return function () {\n      operationChainRef.current = operationChainRef.current.then(function () {\n        return picker.close()[\"catch\"](function () {});\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [apikey, stableClientOptions, stablePickerOptions]);\n  return {\n    containerId: containerId\n  };\n};\n\nvar FilestackContext = react.createContext(null);\n/**\r\n * Supplies default props to descendant picker components via React context.\r\n *\r\n * Picker components call {@link useResolvedPickerProps} to merge their own\r\n * props with the values declared on the nearest provider — scalars (apikey,\r\n * callbacks) prefer the component's own prop when set, while `pickerOptions`\r\n * and `clientOptions` are shallow-merged with context as the base.\r\n */\nvar FilestackProvider = function FilestackProvider(_ref) {\n  var apikey = _ref.apikey,\n    pickerOptions = _ref.pickerOptions,\n    clientOptions = _ref.clientOptions,\n    onSuccess = _ref.onSuccess,\n    onUploadDone = _ref.onUploadDone,\n    onError = _ref.onError,\n    children = _ref.children;\n  var value = {\n    apikey: apikey,\n    pickerOptions: pickerOptions,\n    clientOptions: clientOptions,\n    onSuccess: onSuccess,\n    onUploadDone: onUploadDone,\n    onError: onError\n  };\n  return jsxRuntime.jsx(FilestackContext.Provider, {\n    value: value,\n    children: children\n  });\n};\n/**\r\n * Merge component props with {@link FilestackContext} defaults. Component\r\n * props win for scalars; option objects are shallow-merged with context first.\r\n */\nvar useResolvedPickerProps = function useResolvedPickerProps(props) {\n  var ctx = react.useContext(FilestackContext) || {};\n  return {\n    apikey: props.apikey !== undefined ? props.apikey : ctx.apikey,\n    pickerOptions: _extends({}, ctx.pickerOptions, props.pickerOptions),\n    clientOptions: _extends({}, ctx.clientOptions, props.clientOptions),\n    onSuccess: props.onSuccess !== undefined ? props.onSuccess : ctx.onSuccess,\n    onUploadDone: props.onUploadDone !== undefined ? props.onUploadDone : ctx.onUploadDone,\n    onError: props.onError !== undefined ? props.onError : ctx.onError\n  };\n};\n\nvar PickerOverlay = function PickerOverlay(props) {\n  var resolved = useResolvedPickerProps(props);\n  var _usePicker = usePicker(_extends({}, resolved, {\n      pickerOptions: _extends({\n        displayMode: filestack.PickerDisplayMode.overlay\n      }, resolved.pickerOptions)\n    })),\n    containerId = _usePicker.containerId;\n  if (props.children && react.isValidElement(props.children)) {\n    return react.cloneElement(props.children, {\n      id: containerId\n    });\n  }\n  return jsxRuntime.jsx(\"div\", {\n    id: containerId\n  });\n};\n\nvar PickerInline = function PickerInline(props) {\n  var resolved = useResolvedPickerProps(props);\n  var _usePicker = usePicker(_extends({}, resolved, {\n      pickerOptions: _extends({\n        displayMode: filestack.PickerDisplayMode.inline\n      }, resolved.pickerOptions)\n    })),\n    containerId = _usePicker.containerId;\n  if (props.children && react.isValidElement(props.children)) {\n    return react.cloneElement(props.children, {\n      id: containerId\n    });\n  }\n  return jsxRuntime.jsx(\"div\", {\n    \"data-testid\": 'picker-inline',\n    style: {\n      height: '500px'\n    },\n    id: containerId\n  });\n};\n\nvar PickerDropPane = function PickerDropPane(props) {\n  var resolved = useResolvedPickerProps(props);\n  var _usePicker = usePicker(_extends({}, resolved, {\n      pickerOptions: _extends({\n        displayMode: filestack.PickerDisplayMode.dropPane\n      }, resolved.pickerOptions)\n    })),\n    containerId = _usePicker.containerId;\n  if (props.children && react.isValidElement(props.children)) {\n    return react.cloneElement(props.children, {\n      id: containerId\n    });\n  }\n  return jsxRuntime.jsx(\"div\", {\n    id: containerId\n  });\n};\n\nexports.client = filestack__namespace;\nexports.FilestackContext = FilestackContext;\nexports.FilestackProvider = FilestackProvider;\nexports.PickerDropPane = PickerDropPane;\nexports.PickerInline = PickerInline;\nexports.PickerOverlay = PickerOverlay;\nexports.useResolvedPickerProps = useResolvedPickerProps;\n//# sourceMappingURL=filestack-react.js.map\n"
  }
}