@turinhub/atomix-common-ui 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -17
- package/dist/AuthPanel-C_2JBE7t.cjs +2 -0
- package/dist/AuthPanel-C_2JBE7t.cjs.map +1 -0
- package/dist/AuthPanel-D2HFX8eN.js +656 -0
- package/dist/AuthPanel-D2HFX8eN.js.map +1 -0
- package/dist/PDFSidebar-BBtucLK6.js +232 -0
- package/dist/PDFSidebar-BBtucLK6.js.map +1 -0
- package/dist/PDFSidebar-Di0D-yPS.cjs +2 -0
- package/dist/PDFSidebar-Di0D-yPS.cjs.map +1 -0
- package/dist/auth.cjs +2 -0
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.d.ts +11 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +9 -0
- package/dist/auth.js.map +1 -0
- package/dist/component-types.cjs +2 -0
- package/dist/component-types.cjs.map +1 -0
- package/dist/component-types.d.ts +2 -0
- package/dist/component-types.d.ts.map +1 -0
- package/dist/component-types.js +2 -0
- package/dist/component-types.js.map +1 -0
- package/dist/components/AuthLoginPanel.d.ts +55 -0
- package/dist/components/AuthLoginPanel.d.ts.map +1 -0
- package/dist/components/AuthPageShell.d.ts +11 -0
- package/dist/components/AuthPageShell.d.ts.map +1 -0
- package/dist/components/AuthPanel.d.ts +20 -0
- package/dist/components/AuthPanel.d.ts.map +1 -0
- package/dist/components/AuthRegisterPanel.d.ts +34 -0
- package/dist/components/AuthRegisterPanel.d.ts.map +1 -0
- package/dist/components/AuthVisualCarousel.d.ts +20 -0
- package/dist/components/AuthVisualCarousel.d.ts.map +1 -0
- package/dist/components/DataTable.d.ts +2 -2
- package/dist/components/DataTable.d.ts.map +1 -1
- package/dist/components/ImageReader.d.ts +44 -0
- package/dist/components/ImageReader.d.ts.map +1 -0
- package/dist/components/MarkdownReader.d.ts +26 -0
- package/dist/components/MarkdownReader.d.ts.map +1 -0
- package/dist/components/PDFReader.d.ts +2 -2
- package/dist/components/PDFReader.d.ts.map +1 -1
- package/dist/components/PDFSidebar.d.ts +1 -1
- package/dist/components/PDFSidebar.d.ts.map +1 -1
- package/dist/components/SimplePDFReader.d.ts +1 -1
- package/dist/components/VideoReader.d.ts +39 -0
- package/dist/components/VideoReader.d.ts.map +1 -0
- package/dist/components/media-utils.d.ts +9 -0
- package/dist/components/media-utils.d.ts.map +1 -0
- package/dist/data-table.cjs +2 -0
- package/dist/data-table.cjs.map +1 -0
- package/dist/data-table.d.ts +3 -0
- package/dist/data-table.d.ts.map +1 -0
- package/dist/data-table.js +169 -0
- package/dist/data-table.js.map +1 -0
- package/dist/delete-confirm-dialog.cjs +2 -0
- package/dist/delete-confirm-dialog.cjs.map +1 -0
- package/dist/delete-confirm-dialog.d.ts +3 -0
- package/dist/delete-confirm-dialog.d.ts.map +1 -0
- package/dist/delete-confirm-dialog.js +109 -0
- package/dist/delete-confirm-dialog.js.map +1 -0
- package/dist/file-upload.cjs +2 -0
- package/dist/file-upload.cjs.map +1 -0
- package/dist/file-upload.d.ts +3 -0
- package/dist/file-upload.d.ts.map +1 -0
- package/dist/file-upload.js +354 -0
- package/dist/file-upload.js.map +1 -0
- package/dist/image-reader.cjs +2 -0
- package/dist/image-reader.cjs.map +1 -0
- package/dist/image-reader.d.ts +3 -0
- package/dist/image-reader.d.ts.map +1 -0
- package/dist/image-reader.js +214 -0
- package/dist/image-reader.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +10 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -12
- package/dist/index.js.map +1 -1
- package/dist/jsx-runtime-B4hRZ52C.js +283 -0
- package/dist/jsx-runtime-B4hRZ52C.js.map +1 -0
- package/dist/jsx-runtime-BB_1_6y_.cjs +23 -0
- package/dist/jsx-runtime-BB_1_6y_.cjs.map +1 -0
- package/dist/markdown-reader.cjs +2 -0
- package/dist/markdown-reader.cjs.map +1 -0
- package/dist/markdown-reader.d.ts +3 -0
- package/dist/markdown-reader.d.ts.map +1 -0
- package/dist/markdown-reader.js +145 -0
- package/dist/markdown-reader.js.map +1 -0
- package/dist/media-utils-5UPuocc1.js +23 -0
- package/dist/media-utils-5UPuocc1.js.map +1 -0
- package/dist/media-utils-X1dDYP9W.cjs +2 -0
- package/dist/media-utils-X1dDYP9W.cjs.map +1 -0
- package/dist/pdf-reader.cjs +2 -0
- package/dist/pdf-reader.cjs.map +1 -0
- package/dist/pdf-reader.d.ts +3 -0
- package/dist/pdf-reader.d.ts.map +1 -0
- package/dist/pdf-reader.js +427 -0
- package/dist/pdf-reader.js.map +1 -0
- package/dist/pdf-sidebar.cjs +2 -0
- package/dist/pdf-sidebar.cjs.map +1 -0
- package/dist/pdf-sidebar.d.ts +3 -0
- package/dist/pdf-sidebar.d.ts.map +1 -0
- package/dist/pdf-sidebar.js +5 -0
- package/dist/pdf-sidebar.js.map +1 -0
- package/dist/simple-pdf-reader.cjs +2 -0
- package/dist/simple-pdf-reader.cjs.map +1 -0
- package/dist/simple-pdf-reader.d.ts +3 -0
- package/dist/simple-pdf-reader.d.ts.map +1 -0
- package/dist/simple-pdf-reader.js +268 -0
- package/dist/simple-pdf-reader.js.map +1 -0
- package/dist/table-header.cjs +2 -0
- package/dist/table-header.cjs.map +1 -0
- package/dist/table-header.d.ts +3 -0
- package/dist/table-header.d.ts.map +1 -0
- package/dist/table-header.js +63 -0
- package/dist/table-header.js.map +1 -0
- package/dist/table-pagination.cjs +2 -0
- package/dist/table-pagination.cjs.map +1 -0
- package/dist/table-pagination.d.ts +3 -0
- package/dist/table-pagination.d.ts.map +1 -0
- package/dist/table-pagination.js +172 -0
- package/dist/table-pagination.js.map +1 -0
- package/dist/theme-switcher-content.cjs +2 -0
- package/dist/theme-switcher-content.cjs.map +1 -0
- package/dist/theme-switcher-content.d.ts +3 -0
- package/dist/theme-switcher-content.d.ts.map +1 -0
- package/dist/theme-switcher-content.js +103 -0
- package/dist/theme-switcher-content.js.map +1 -0
- package/dist/theme-switcher.cjs +2 -0
- package/dist/theme-switcher.cjs.map +1 -0
- package/dist/theme-switcher.d.ts +3 -0
- package/dist/theme-switcher.d.ts.map +1 -0
- package/dist/theme-switcher.js +140 -0
- package/dist/theme-switcher.js.map +1 -0
- package/dist/types/component-types.d.ts +1 -0
- package/dist/types/component-types.d.ts.map +1 -1
- package/dist/utils-B6yFEsav.js +9 -0
- package/dist/utils-B6yFEsav.js.map +1 -0
- package/dist/utils-IjLH3w2e.cjs +2 -0
- package/dist/utils-IjLH3w2e.cjs.map +1 -0
- package/dist/utils.cjs +2 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +5 -0
- package/dist/utils.js.map +1 -0
- package/dist/video-reader.cjs +2 -0
- package/dist/video-reader.cjs.map +1 -0
- package/dist/video-reader.d.ts +3 -0
- package/dist/video-reader.d.ts.map +1 -0
- package/dist/video-reader.js +158 -0
- package/dist/video-reader.js.map +1 -0
- package/package.json +191 -3
- package/dist/index-DJdfLA8M.js +0 -2140
- package/dist/index-DJdfLA8M.js.map +0 -1
- package/dist/index-DUxYhmkV.js +0 -18821
- package/dist/index-DUxYhmkV.js.map +0 -1
- package/dist/index-miejqTjn.cjs +0 -13
- package/dist/index-miejqTjn.cjs.map +0 -1
- package/dist/index-tIca-Q_M.cjs +0 -23
- package/dist/index-tIca-Q_M.cjs.map +0 -1
- package/dist/index.c.js +0 -2
- package/dist/index.c.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx-runtime-B4hRZ52C.js","sources":["../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";const K=require("react");var v={exports:{}},m={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-jsx-runtime.production.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var $;function ee(){if($)return m;$=1;var u=Symbol.for("react.transitional.element"),_=Symbol.for("react.fragment");function c(i,o,s){var f=null;if(s!==void 0&&(f=""+s),o.key!==void 0&&(f=""+o.key),"key"in o){s={};for(var d in o)d!=="key"&&(s[d]=o[d])}else s=o;return o=s.ref,{$$typeof:u,type:i,key:f,ref:o!==void 0?o:null,props:s}}return m.Fragment=_,m.jsx=c,m.jsxs=c,m}var E={};/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react-jsx-runtime.development.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var I;function re(){return I||(I=1,process.env.NODE_ENV!=="production"&&(function(){function u(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===H?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case p:return"Fragment";case U:return"Profiler";case W:return"StrictMode";case z:return"Suspense";case G:return"SuspenseList";case B:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case M:return"Portal";case J:return e.displayName||"Context";case q:return(e._context.displayName||"Context")+".Consumer";case V:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case X:return r=e.displayName||null,r!==null?r:u(e.type)||"Memo";case T:r=e._payload,e=e._init;try{return u(e(r))}catch{}}return null}function _(e){return""+e}function c(e){try{_(e);var r=!1}catch{r=!0}if(r){r=console;var t=r.error,n=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",n),_(e)}}function i(e){if(e===p)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===T)return"<...>";try{var r=u(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function o(){var e=k.A;return e===null?null:e.getOwner()}function s(){return Error("react-stack-top-frame")}function f(e){if(j.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function d(e,r){function t(){g||(g=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}function D(){var e=u(this.type);return h[e]||(h[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function L(e,r,t,n,b,A){var a=t.ref;return e={$$typeof:y,type:e,key:r,props:t,_owner:n},(a!==void 0?a:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:D}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:b}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:A}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function P(e,r,t,n,b,A){var a=r.children;if(a!==void 0)if(n)if(Z(a)){for(n=0;n<a.length;n++)w(a[n]);Object.freeze&&Object.freeze(a)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else w(a);if(j.call(r,"key")){a=u(e);var l=Object.keys(r).filter(function(Q){return Q!=="key"});n=0<l.length?"{key: someKey, "+l.join(": ..., ")+": ...}":"{key: someKey}",Y[a+n]||(l=0<l.length?"{"+l.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
18
|
+
let props = %s;
|
|
19
|
+
<%s {...props} />
|
|
20
|
+
React keys must be passed directly to JSX without using spread:
|
|
21
|
+
let props = %s;
|
|
22
|
+
<%s key={someKey} {...props} />`,n,a,l,a),Y[a+n]=!0)}if(a=null,t!==void 0&&(c(t),a=""+t),f(r)&&(c(r.key),a=""+r.key),"key"in r){t={};for(var S in r)S!=="key"&&(t[S]=r[S])}else t=r;return a&&d(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),L(e,a,t,o(),b,A)}function w(e){x(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===T&&(e._payload.status==="fulfilled"?x(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function x(e){return typeof e=="object"&&e!==null&&e.$$typeof===y}var R=K,y=Symbol.for("react.transitional.element"),M=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),W=Symbol.for("react.strict_mode"),U=Symbol.for("react.profiler"),q=Symbol.for("react.consumer"),J=Symbol.for("react.context"),V=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),G=Symbol.for("react.suspense_list"),X=Symbol.for("react.memo"),T=Symbol.for("react.lazy"),B=Symbol.for("react.activity"),H=Symbol.for("react.client.reference"),k=R.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,j=Object.prototype.hasOwnProperty,Z=Array.isArray,O=console.createTask?console.createTask:function(){return null};R={react_stack_bottom_frame:function(e){return e()}};var g,h={},N=R.react_stack_bottom_frame.bind(R,s)(),C=O(i(s)),Y={};E.Fragment=p,E.jsx=function(e,r,t){var n=1e4>k.recentlyCreatedOwnerStacks++;return P(e,r,t,!1,n?Error("react-stack-top-frame"):N,n?O(i(e)):C)},E.jsxs=function(e,r,t){var n=1e4>k.recentlyCreatedOwnerStacks++;return P(e,r,t,!0,n?Error("react-stack-top-frame"):N,n?O(i(e)):C)}})()),E}var F;function te(){return F||(F=1,process.env.NODE_ENV==="production"?v.exports=ee():v.exports=re()),v.exports}var ne=te();exports.jsxRuntimeExports=ne;
|
|
23
|
+
//# sourceMappingURL=jsx-runtime-BB_1_6y_.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx-runtime-BB_1_6y_.cjs","sources":["../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var U=Object.create;var P=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var te=(e,o,i,_)=>{if(o&&typeof o=="object"||typeof o=="function")for(let d of L(o))!ee.call(e,d)&&d!==i&&P(e,d,{get:()=>o[d],enumerable:!(_=H(o,d))||_.enumerable});return e};var $=(e,o,i)=>(i=e!=null?U(I(e)):{},te(o||!e||!e.__esModule?P(i,"default",{value:e,enumerable:!0}):i,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./jsx-runtime-BB_1_6y_.cjs"),a=require("react"),re=require("./utils-IjLH3w2e.cjs"),ne=e=>e?e instanceof Error?e:new Error(e):null,se=e=>e instanceof Error?e:new Error("无法加载 Markdown 渲染依赖"),oe="markdown-reader-content max-w-none text-sm leading-7 text-slate-800 dark:text-slate-100 [&_h1]:mb-4 [&_h1]:mt-0 [&_h1]:text-3xl [&_h1]:font-semibold [&_h2]:mb-3 [&_h2]:mt-8 [&_h2]:text-2xl [&_h2]:font-semibold [&_h3]:mb-2 [&_h3]:mt-6 [&_h3]:text-xl [&_h3]:font-semibold [&_p]:my-4 [&_ul]:my-4 [&_ol]:my-4 [&_li]:my-1 [&_ul]:list-disc [&_ol]:list-decimal [&_ul]:pl-6 [&_ol]:pl-6 [&_blockquote]:my-4 [&_blockquote]:border-l-4 [&_blockquote]:border-slate-300 [&_blockquote]:pl-4 [&_blockquote]:text-slate-600 dark:[&_blockquote]:border-slate-700 dark:[&_blockquote]:text-slate-300 [&_a]:font-medium [&_a]:text-cyan-700 [&_a]:underline-offset-4 hover:[&_a]:underline dark:[&_a]:text-cyan-300 [&_table]:my-4 [&_table]:w-full [&_table]:border-collapse [&_th]:border [&_td]:border [&_th]:border-slate-200 [&_td]:border-slate-200 [&_th]:bg-slate-100 [&_th]:px-3 [&_th]:py-2 [&_td]:px-3 [&_td]:py-2 dark:[&_th]:border-slate-700 dark:[&_td]:border-slate-700 dark:[&_th]:bg-slate-800 [&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-slate-950 [&_pre]:p-4 [&_pre]:text-slate-50 [&_code]:rounded [&_code]:bg-slate-100 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:text-sm dark:[&_code]:bg-slate-800 [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_img]:my-4 [&_img]:max-w-full [&_img]:rounded-lg [&_hr]:my-8 [&_hr]:border-slate-200 dark:[&_hr]:border-slate-800";function le({content:e,sourceUrl:o,components:i,loading:_=!1,error:d,className:k,contentClassName:z,loadingText:G="正在加载 Markdown 内容...",errorText:O="Markdown 加载失败",emptyText:A="暂无 Markdown 内容",allowImages:R=!0,openLinksInNewTab:j=!0,transformLinkHref:p,transformImageSrc:h,onLoadError:b}){const[w,B]=a.useState(null),[F,y]=a.useState(!0),[D,M]=a.useState(null),[J,v]=a.useState(""),[K,f]=a.useState(!1),[Q,E]=a.useState(null),c=a.useRef(b),{Card:C,CardContent:q,Skeleton:m}=i||{};a.useEffect(()=>{c.current=b},[b]),a.useEffect(()=>{let r=!0;return(async()=>{var s;y(!0),M(null);try{const[n,u]=await Promise.all([import("react-markdown"),import("remark-gfm")]);if(!r)return;B({ReactMarkdown:n.default,remarkGfm:u.default})}catch(n){if(!r)return;const u=se(n);M(u),(s=c.current)==null||s.call(c,u)}finally{r&&y(!1)}})(),()=>{r=!1}},[]),a.useEffect(()=>{if(e!==void 0||!o){v(""),f(!1),E(null);return}const r=new AbortController;return(async()=>{var s;f(!0),E(null);try{const n=await fetch(o,{signal:r.signal});if(!n.ok)throw new Error(`请求失败:${n.status}`);const u=await n.text();v(u)}catch(n){if(r.signal.aborted)return;const u=n instanceof Error?n:new Error("无法加载 Markdown 内容");E(u),(s=c.current)==null||s.call(c,u)}finally{r.signal.aborted||f(!1)}})(),()=>{r.abort()}},[e,o]);const N=e!==void 0?e:J,x=ne(d)||D||Q,S=_||F||K,V=!S&&!x&&N.trim().length===0,W=a.useMemo(()=>({a({href:r,children:l,...s}){const n=r?(p==null?void 0:p(r))??r:void 0;return t.jsxRuntimeExports.jsx("a",{...s,href:n,target:j?"_blank":s.target,rel:j?"noreferrer noopener":s.rel,children:l})},img({src:r,alt:l,...s}){if(!r)return null;const n=(h==null?void 0:h(r))??r;return R?t.jsxRuntimeExports.jsx("img",{...s,src:n,alt:l||"",loading:"lazy"}):t.jsxRuntimeExports.jsx("a",{href:n,target:"_blank",rel:"noreferrer noopener",children:l||n})},input({checked:r,type:l,...s}){return l!=="checkbox"?t.jsxRuntimeExports.jsx("input",{...s,type:l}):t.jsxRuntimeExports.jsx("input",{...s,type:"checkbox",checked:!!r,readOnly:!0,disabled:!0})}}),[R,j,h,p]),X=()=>t.jsxRuntimeExports.jsx("div",{className:"space-y-3 p-4",role:"status","aria-live":"polite",children:m?t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(m,{className:"h-5 w-2/3"}),t.jsxRuntimeExports.jsx(m,{className:"h-4 w-full"}),t.jsxRuntimeExports.jsx(m,{className:"h-4 w-5/6"}),t.jsxRuntimeExports.jsx(m,{className:"h-28 w-full"})]}):t.jsxRuntimeExports.jsx("p",{className:"text-sm text-muted-foreground",children:G})}),Y=()=>t.jsxRuntimeExports.jsxs("div",{className:"p-4 text-sm text-destructive",role:"alert",children:[t.jsxRuntimeExports.jsx("p",{className:"font-medium",children:O}),x!=null&&x.message?t.jsxRuntimeExports.jsx("p",{className:"mt-1 opacity-80",children:x.message}):null]}),Z=()=>t.jsxRuntimeExports.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:A}),T=()=>{if(S)return X();if(x)return Y();if(V)return Z();if(!w)return null;const{ReactMarkdown:r,remarkGfm:l}=w;return t.jsxRuntimeExports.jsx(r,{remarkPlugins:[l],components:W,children:N})},g=t.jsxRuntimeExports.jsx("div",{className:re.cn(oe,z),children:T()});return C?t.jsxRuntimeExports.jsx(C,{className:k,children:q?t.jsxRuntimeExports.jsx(q,{children:g}):g}):t.jsxRuntimeExports.jsx("div",{className:k,children:g})}exports.MarkdownReader=le;
|
|
2
|
+
//# sourceMappingURL=markdown-reader.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-reader.cjs","sources":["../src/components/MarkdownReader.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ComponentType, HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/utils';\nimport type {\n CardComponent,\n SkeletonComponent,\n UIComponent,\n} from '../types/component-types';\n\nexport interface MarkdownReaderUIComponents {\n Card?: CardComponent;\n CardContent?: UIComponent<HTMLAttributes<HTMLDivElement>>;\n Skeleton?: SkeletonComponent;\n}\n\nexport interface MarkdownReaderProps {\n content?: string;\n sourceUrl?: string;\n components?: MarkdownReaderUIComponents;\n loading?: boolean;\n error?: Error | string | null;\n className?: string;\n contentClassName?: string;\n loadingText?: string;\n errorText?: string;\n emptyText?: string;\n allowImages?: boolean;\n openLinksInNewTab?: boolean;\n transformLinkHref?: (href: string) => string | undefined;\n transformImageSrc?: (src: string) => string | undefined;\n onLoadError?: (error: Error) => void;\n}\n\ninterface MarkdownRuntime {\n ReactMarkdown: ComponentType<any>;\n remarkGfm: unknown;\n}\n\nconst normalizeError = (error: Error | string | null | undefined) => {\n if (!error) return null;\n return error instanceof Error ? error : new Error(error);\n};\n\nconst getMarkdownLoadError = (error: unknown) =>\n error instanceof Error\n ? error\n : new Error('无法加载 Markdown 渲染依赖');\n\nconst defaultContentClassName =\n 'markdown-reader-content max-w-none text-sm leading-7 text-slate-800 dark:text-slate-100 ' +\n '[&_h1]:mb-4 [&_h1]:mt-0 [&_h1]:text-3xl [&_h1]:font-semibold ' +\n '[&_h2]:mb-3 [&_h2]:mt-8 [&_h2]:text-2xl [&_h2]:font-semibold ' +\n '[&_h3]:mb-2 [&_h3]:mt-6 [&_h3]:text-xl [&_h3]:font-semibold ' +\n '[&_p]:my-4 [&_ul]:my-4 [&_ol]:my-4 [&_li]:my-1 [&_ul]:list-disc [&_ol]:list-decimal ' +\n '[&_ul]:pl-6 [&_ol]:pl-6 [&_blockquote]:my-4 [&_blockquote]:border-l-4 ' +\n '[&_blockquote]:border-slate-300 [&_blockquote]:pl-4 [&_blockquote]:text-slate-600 ' +\n 'dark:[&_blockquote]:border-slate-700 dark:[&_blockquote]:text-slate-300 ' +\n '[&_a]:font-medium [&_a]:text-cyan-700 [&_a]:underline-offset-4 hover:[&_a]:underline ' +\n 'dark:[&_a]:text-cyan-300 [&_table]:my-4 [&_table]:w-full [&_table]:border-collapse ' +\n '[&_th]:border [&_td]:border [&_th]:border-slate-200 [&_td]:border-slate-200 ' +\n '[&_th]:bg-slate-100 [&_th]:px-3 [&_th]:py-2 [&_td]:px-3 [&_td]:py-2 ' +\n 'dark:[&_th]:border-slate-700 dark:[&_td]:border-slate-700 dark:[&_th]:bg-slate-800 ' +\n '[&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-slate-950 ' +\n '[&_pre]:p-4 [&_pre]:text-slate-50 [&_code]:rounded [&_code]:bg-slate-100 ' +\n '[&_code]:px-1.5 [&_code]:py-0.5 [&_code]:text-sm dark:[&_code]:bg-slate-800 ' +\n '[&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_img]:my-4 [&_img]:max-w-full ' +\n '[&_img]:rounded-lg [&_hr]:my-8 [&_hr]:border-slate-200 dark:[&_hr]:border-slate-800';\n\nexport function MarkdownReader({\n content,\n sourceUrl,\n components,\n loading = false,\n error,\n className,\n contentClassName,\n loadingText = '正在加载 Markdown 内容...',\n errorText = 'Markdown 加载失败',\n emptyText = '暂无 Markdown 内容',\n allowImages = true,\n openLinksInNewTab = true,\n transformLinkHref,\n transformImageSrc,\n onLoadError,\n}: MarkdownReaderProps) {\n const [runtime, setRuntime] = useState<MarkdownRuntime | null>(null);\n const [runtimeLoading, setRuntimeLoading] = useState(true);\n const [runtimeError, setRuntimeError] = useState<Error | null>(null);\n const [remoteContent, setRemoteContent] = useState('');\n const [remoteLoading, setRemoteLoading] = useState(false);\n const [remoteError, setRemoteError] = useState<Error | null>(null);\n const onLoadErrorRef = useRef(onLoadError);\n\n const { Card, CardContent, Skeleton } = components || {};\n\n useEffect(() => {\n onLoadErrorRef.current = onLoadError;\n }, [onLoadError]);\n\n useEffect(() => {\n let isMounted = true;\n\n const loadRuntime = async () => {\n setRuntimeLoading(true);\n setRuntimeError(null);\n\n try {\n const [markdownModule, gfmModule] = await Promise.all([\n import('react-markdown'),\n import('remark-gfm'),\n ]);\n\n if (!isMounted) return;\n\n setRuntime({\n ReactMarkdown: markdownModule.default,\n remarkGfm: gfmModule.default,\n });\n } catch (err) {\n if (!isMounted) return;\n\n const nextError = getMarkdownLoadError(err);\n setRuntimeError(nextError);\n onLoadErrorRef.current?.(nextError);\n } finally {\n if (isMounted) {\n setRuntimeLoading(false);\n }\n }\n };\n\n loadRuntime();\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n useEffect(() => {\n if (content !== undefined || !sourceUrl) {\n setRemoteContent('');\n setRemoteLoading(false);\n setRemoteError(null);\n return;\n }\n\n const controller = new AbortController();\n\n const loadContent = async () => {\n setRemoteLoading(true);\n setRemoteError(null);\n\n try {\n const response = await fetch(sourceUrl, {\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(`请求失败:${response.status}`);\n }\n\n const text = await response.text();\n setRemoteContent(text);\n } catch (err) {\n if (controller.signal.aborted) return;\n\n const nextError =\n err instanceof Error ? err : new Error('无法加载 Markdown 内容');\n setRemoteError(nextError);\n onLoadErrorRef.current?.(nextError);\n } finally {\n if (!controller.signal.aborted) {\n setRemoteLoading(false);\n }\n }\n };\n\n loadContent();\n\n return () => {\n controller.abort();\n };\n }, [content, sourceUrl]);\n\n const markdown = content !== undefined ? content : remoteContent;\n const displayedError = normalizeError(error) || runtimeError || remoteError;\n const isLoading = loading || runtimeLoading || remoteLoading;\n const isEmpty = !isLoading && !displayedError && markdown.trim().length === 0;\n\n const markdownComponents = useMemo(\n () => ({\n a({ href, children, ...props }: any) {\n const nextHref = href ? transformLinkHref?.(href) ?? href : undefined;\n\n return (\n <a\n {...props}\n href={nextHref}\n target={openLinksInNewTab ? '_blank' : props.target}\n rel={openLinksInNewTab ? 'noreferrer noopener' : props.rel}\n >\n {children}\n </a>\n );\n },\n img({ src, alt, ...props }: any) {\n if (!src) return null;\n\n const nextSrc = transformImageSrc?.(src) ?? src;\n\n if (!allowImages) {\n return (\n <a href={nextSrc} target=\"_blank\" rel=\"noreferrer noopener\">\n {alt || nextSrc}\n </a>\n );\n }\n\n return <img {...props} src={nextSrc} alt={alt || ''} loading=\"lazy\" />;\n },\n input({ checked, type, ...props }: any) {\n if (type !== 'checkbox') {\n return <input {...props} type={type} />;\n }\n\n return (\n <input\n {...props}\n type=\"checkbox\"\n checked={Boolean(checked)}\n readOnly\n disabled\n />\n );\n },\n }),\n [\n allowImages,\n openLinksInNewTab,\n transformImageSrc,\n transformLinkHref,\n ]\n );\n\n const renderLoading = () => (\n <div className=\"space-y-3 p-4\" role=\"status\" aria-live=\"polite\">\n {Skeleton ? (\n <>\n <Skeleton className=\"h-5 w-2/3\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-5/6\" />\n <Skeleton className=\"h-28 w-full\" />\n </>\n ) : (\n <p className=\"text-sm text-muted-foreground\">{loadingText}</p>\n )}\n </div>\n );\n\n const renderError = () => (\n <div className=\"p-4 text-sm text-destructive\" role=\"alert\">\n <p className=\"font-medium\">{errorText}</p>\n {displayedError?.message ? (\n <p className=\"mt-1 opacity-80\">{displayedError.message}</p>\n ) : null}\n </div>\n );\n\n const renderEmpty = () => (\n <div className=\"p-4 text-sm text-muted-foreground\">{emptyText}</div>\n );\n\n const renderContent = () => {\n if (isLoading) return renderLoading();\n if (displayedError) return renderError();\n if (isEmpty) return renderEmpty();\n if (!runtime) return null;\n\n const { ReactMarkdown, remarkGfm } = runtime;\n\n return (\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={markdownComponents}\n >\n {markdown}\n </ReactMarkdown>\n );\n };\n\n const body = (\n <div className={cn(defaultContentClassName, contentClassName)}>\n {renderContent()}\n </div>\n );\n\n if (Card) {\n return (\n <Card className={className}>\n {CardContent ? <CardContent>{body}</CardContent> : body}\n </Card>\n );\n }\n\n return <div className={className}>{body}</div>;\n}\n"],"names":["normalizeError","error","getMarkdownLoadError","defaultContentClassName","MarkdownReader","content","sourceUrl","components","loading","className","contentClassName","loadingText","errorText","emptyText","allowImages","openLinksInNewTab","transformLinkHref","transformImageSrc","onLoadError","runtime","setRuntime","useState","runtimeLoading","setRuntimeLoading","runtimeError","setRuntimeError","remoteContent","setRemoteContent","remoteLoading","setRemoteLoading","remoteError","setRemoteError","onLoadErrorRef","useRef","Card","CardContent","Skeleton","useEffect","isMounted","markdownModule","gfmModule","err","nextError","_a","controller","response","text","markdown","displayedError","isLoading","isEmpty","markdownComponents","useMemo","href","children","props","nextHref","jsx","src","alt","nextSrc","checked","type","renderLoading","jsxs","Fragment","renderError","renderEmpty","renderContent","ReactMarkdown","remarkGfm","body","cn"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-reader.d.ts","sourceRoot":"","sources":["../src/markdown-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EACV,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { j as e } from "./jsx-runtime-B4hRZ52C.js";
|
|
2
|
+
import { useState as i, useRef as T, useEffect as k, useMemo as U } from "react";
|
|
3
|
+
import { c as H } from "./utils-B6yFEsav.js";
|
|
4
|
+
const L = (o) => o ? o instanceof Error ? o : new Error(o) : null, I = (o) => o instanceof Error ? o : new Error("无法加载 Markdown 渲染依赖"), ee = "markdown-reader-content max-w-none text-sm leading-7 text-slate-800 dark:text-slate-100 [&_h1]:mb-4 [&_h1]:mt-0 [&_h1]:text-3xl [&_h1]:font-semibold [&_h2]:mb-3 [&_h2]:mt-8 [&_h2]:text-2xl [&_h2]:font-semibold [&_h3]:mb-2 [&_h3]:mt-6 [&_h3]:text-xl [&_h3]:font-semibold [&_p]:my-4 [&_ul]:my-4 [&_ol]:my-4 [&_li]:my-1 [&_ul]:list-disc [&_ol]:list-decimal [&_ul]:pl-6 [&_ol]:pl-6 [&_blockquote]:my-4 [&_blockquote]:border-l-4 [&_blockquote]:border-slate-300 [&_blockquote]:pl-4 [&_blockquote]:text-slate-600 dark:[&_blockquote]:border-slate-700 dark:[&_blockquote]:text-slate-300 [&_a]:font-medium [&_a]:text-cyan-700 [&_a]:underline-offset-4 hover:[&_a]:underline dark:[&_a]:text-cyan-300 [&_table]:my-4 [&_table]:w-full [&_table]:border-collapse [&_th]:border [&_td]:border [&_th]:border-slate-200 [&_td]:border-slate-200 [&_th]:bg-slate-100 [&_th]:px-3 [&_th]:py-2 [&_td]:px-3 [&_td]:py-2 dark:[&_th]:border-slate-700 dark:[&_td]:border-slate-700 dark:[&_th]:bg-slate-800 [&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-slate-950 [&_pre]:p-4 [&_pre]:text-slate-50 [&_code]:rounded [&_code]:bg-slate-100 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:text-sm dark:[&_code]:bg-slate-800 [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_img]:my-4 [&_img]:max-w-full [&_img]:rounded-lg [&_hr]:my-8 [&_hr]:border-slate-200 dark:[&_hr]:border-slate-800";
|
|
5
|
+
function oe({
|
|
6
|
+
content: o,
|
|
7
|
+
sourceUrl: _,
|
|
8
|
+
components: q,
|
|
9
|
+
loading: z = !1,
|
|
10
|
+
error: G,
|
|
11
|
+
className: g,
|
|
12
|
+
contentClassName: P,
|
|
13
|
+
loadingText: A = "正在加载 Markdown 内容...",
|
|
14
|
+
errorText: B = "Markdown 加载失败",
|
|
15
|
+
emptyText: F = "暂无 Markdown 内容",
|
|
16
|
+
allowImages: w = !0,
|
|
17
|
+
openLinksInNewTab: x = !0,
|
|
18
|
+
transformLinkHref: u,
|
|
19
|
+
transformImageSrc: m,
|
|
20
|
+
onLoadError: h
|
|
21
|
+
}) {
|
|
22
|
+
const [y, O] = i(null), [$, j] = i(!0), [D, E] = i(null), [J, M] = i(""), [K, b] = i(!1), [Q, f] = i(null), a = T(h), { Card: v, CardContent: C, Skeleton: c } = q || {};
|
|
23
|
+
k(() => {
|
|
24
|
+
a.current = h;
|
|
25
|
+
}, [h]), k(() => {
|
|
26
|
+
let t = !0;
|
|
27
|
+
return (async () => {
|
|
28
|
+
var n;
|
|
29
|
+
j(!0), E(null);
|
|
30
|
+
try {
|
|
31
|
+
const [r, s] = await Promise.all([
|
|
32
|
+
import("react-markdown"),
|
|
33
|
+
import("remark-gfm")
|
|
34
|
+
]);
|
|
35
|
+
if (!t) return;
|
|
36
|
+
O({
|
|
37
|
+
ReactMarkdown: r.default,
|
|
38
|
+
remarkGfm: s.default
|
|
39
|
+
});
|
|
40
|
+
} catch (r) {
|
|
41
|
+
if (!t) return;
|
|
42
|
+
const s = I(r);
|
|
43
|
+
E(s), (n = a.current) == null || n.call(a, s);
|
|
44
|
+
} finally {
|
|
45
|
+
t && j(!1);
|
|
46
|
+
}
|
|
47
|
+
})(), () => {
|
|
48
|
+
t = !1;
|
|
49
|
+
};
|
|
50
|
+
}, []), k(() => {
|
|
51
|
+
if (o !== void 0 || !_) {
|
|
52
|
+
M(""), b(!1), f(null);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const t = new AbortController();
|
|
56
|
+
return (async () => {
|
|
57
|
+
var n;
|
|
58
|
+
b(!0), f(null);
|
|
59
|
+
try {
|
|
60
|
+
const r = await fetch(_, {
|
|
61
|
+
signal: t.signal
|
|
62
|
+
});
|
|
63
|
+
if (!r.ok)
|
|
64
|
+
throw new Error(`请求失败:${r.status}`);
|
|
65
|
+
const s = await r.text();
|
|
66
|
+
M(s);
|
|
67
|
+
} catch (r) {
|
|
68
|
+
if (t.signal.aborted) return;
|
|
69
|
+
const s = r instanceof Error ? r : new Error("无法加载 Markdown 内容");
|
|
70
|
+
f(s), (n = a.current) == null || n.call(a, s);
|
|
71
|
+
} finally {
|
|
72
|
+
t.signal.aborted || b(!1);
|
|
73
|
+
}
|
|
74
|
+
})(), () => {
|
|
75
|
+
t.abort();
|
|
76
|
+
};
|
|
77
|
+
}, [o, _]);
|
|
78
|
+
const R = o !== void 0 ? o : J, d = L(G) || D || Q, N = z || $ || K, V = !N && !d && R.trim().length === 0, W = U(
|
|
79
|
+
() => ({
|
|
80
|
+
a({ href: t, children: l, ...n }) {
|
|
81
|
+
const r = t ? (u == null ? void 0 : u(t)) ?? t : void 0;
|
|
82
|
+
return /* @__PURE__ */ e.jsx(
|
|
83
|
+
"a",
|
|
84
|
+
{
|
|
85
|
+
...n,
|
|
86
|
+
href: r,
|
|
87
|
+
target: x ? "_blank" : n.target,
|
|
88
|
+
rel: x ? "noreferrer noopener" : n.rel,
|
|
89
|
+
children: l
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
},
|
|
93
|
+
img({ src: t, alt: l, ...n }) {
|
|
94
|
+
if (!t) return null;
|
|
95
|
+
const r = (m == null ? void 0 : m(t)) ?? t;
|
|
96
|
+
return w ? /* @__PURE__ */ e.jsx("img", { ...n, src: r, alt: l || "", loading: "lazy" }) : /* @__PURE__ */ e.jsx("a", { href: r, target: "_blank", rel: "noreferrer noopener", children: l || r });
|
|
97
|
+
},
|
|
98
|
+
input({ checked: t, type: l, ...n }) {
|
|
99
|
+
return l !== "checkbox" ? /* @__PURE__ */ e.jsx("input", { ...n, type: l }) : /* @__PURE__ */ e.jsx(
|
|
100
|
+
"input",
|
|
101
|
+
{
|
|
102
|
+
...n,
|
|
103
|
+
type: "checkbox",
|
|
104
|
+
checked: !!t,
|
|
105
|
+
readOnly: !0,
|
|
106
|
+
disabled: !0
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
}),
|
|
111
|
+
[
|
|
112
|
+
w,
|
|
113
|
+
x,
|
|
114
|
+
m,
|
|
115
|
+
u
|
|
116
|
+
]
|
|
117
|
+
), X = () => /* @__PURE__ */ e.jsx("div", { className: "space-y-3 p-4", role: "status", "aria-live": "polite", children: c ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
118
|
+
/* @__PURE__ */ e.jsx(c, { className: "h-5 w-2/3" }),
|
|
119
|
+
/* @__PURE__ */ e.jsx(c, { className: "h-4 w-full" }),
|
|
120
|
+
/* @__PURE__ */ e.jsx(c, { className: "h-4 w-5/6" }),
|
|
121
|
+
/* @__PURE__ */ e.jsx(c, { className: "h-28 w-full" })
|
|
122
|
+
] }) : /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted-foreground", children: A }) }), Y = () => /* @__PURE__ */ e.jsxs("div", { className: "p-4 text-sm text-destructive", role: "alert", children: [
|
|
123
|
+
/* @__PURE__ */ e.jsx("p", { className: "font-medium", children: B }),
|
|
124
|
+
d != null && d.message ? /* @__PURE__ */ e.jsx("p", { className: "mt-1 opacity-80", children: d.message }) : null
|
|
125
|
+
] }), Z = () => /* @__PURE__ */ e.jsx("div", { className: "p-4 text-sm text-muted-foreground", children: F }), S = () => {
|
|
126
|
+
if (N) return X();
|
|
127
|
+
if (d) return Y();
|
|
128
|
+
if (V) return Z();
|
|
129
|
+
if (!y) return null;
|
|
130
|
+
const { ReactMarkdown: t, remarkGfm: l } = y;
|
|
131
|
+
return /* @__PURE__ */ e.jsx(
|
|
132
|
+
t,
|
|
133
|
+
{
|
|
134
|
+
remarkPlugins: [l],
|
|
135
|
+
components: W,
|
|
136
|
+
children: R
|
|
137
|
+
}
|
|
138
|
+
);
|
|
139
|
+
}, p = /* @__PURE__ */ e.jsx("div", { className: H(ee, P), children: S() });
|
|
140
|
+
return v ? /* @__PURE__ */ e.jsx(v, { className: g, children: C ? /* @__PURE__ */ e.jsx(C, { children: p }) : p }) : /* @__PURE__ */ e.jsx("div", { className: g, children: p });
|
|
141
|
+
}
|
|
142
|
+
export {
|
|
143
|
+
oe as MarkdownReader
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=markdown-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-reader.js","sources":["../src/components/MarkdownReader.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ComponentType, HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/utils';\nimport type {\n CardComponent,\n SkeletonComponent,\n UIComponent,\n} from '../types/component-types';\n\nexport interface MarkdownReaderUIComponents {\n Card?: CardComponent;\n CardContent?: UIComponent<HTMLAttributes<HTMLDivElement>>;\n Skeleton?: SkeletonComponent;\n}\n\nexport interface MarkdownReaderProps {\n content?: string;\n sourceUrl?: string;\n components?: MarkdownReaderUIComponents;\n loading?: boolean;\n error?: Error | string | null;\n className?: string;\n contentClassName?: string;\n loadingText?: string;\n errorText?: string;\n emptyText?: string;\n allowImages?: boolean;\n openLinksInNewTab?: boolean;\n transformLinkHref?: (href: string) => string | undefined;\n transformImageSrc?: (src: string) => string | undefined;\n onLoadError?: (error: Error) => void;\n}\n\ninterface MarkdownRuntime {\n ReactMarkdown: ComponentType<any>;\n remarkGfm: unknown;\n}\n\nconst normalizeError = (error: Error | string | null | undefined) => {\n if (!error) return null;\n return error instanceof Error ? error : new Error(error);\n};\n\nconst getMarkdownLoadError = (error: unknown) =>\n error instanceof Error\n ? error\n : new Error('无法加载 Markdown 渲染依赖');\n\nconst defaultContentClassName =\n 'markdown-reader-content max-w-none text-sm leading-7 text-slate-800 dark:text-slate-100 ' +\n '[&_h1]:mb-4 [&_h1]:mt-0 [&_h1]:text-3xl [&_h1]:font-semibold ' +\n '[&_h2]:mb-3 [&_h2]:mt-8 [&_h2]:text-2xl [&_h2]:font-semibold ' +\n '[&_h3]:mb-2 [&_h3]:mt-6 [&_h3]:text-xl [&_h3]:font-semibold ' +\n '[&_p]:my-4 [&_ul]:my-4 [&_ol]:my-4 [&_li]:my-1 [&_ul]:list-disc [&_ol]:list-decimal ' +\n '[&_ul]:pl-6 [&_ol]:pl-6 [&_blockquote]:my-4 [&_blockquote]:border-l-4 ' +\n '[&_blockquote]:border-slate-300 [&_blockquote]:pl-4 [&_blockquote]:text-slate-600 ' +\n 'dark:[&_blockquote]:border-slate-700 dark:[&_blockquote]:text-slate-300 ' +\n '[&_a]:font-medium [&_a]:text-cyan-700 [&_a]:underline-offset-4 hover:[&_a]:underline ' +\n 'dark:[&_a]:text-cyan-300 [&_table]:my-4 [&_table]:w-full [&_table]:border-collapse ' +\n '[&_th]:border [&_td]:border [&_th]:border-slate-200 [&_td]:border-slate-200 ' +\n '[&_th]:bg-slate-100 [&_th]:px-3 [&_th]:py-2 [&_td]:px-3 [&_td]:py-2 ' +\n 'dark:[&_th]:border-slate-700 dark:[&_td]:border-slate-700 dark:[&_th]:bg-slate-800 ' +\n '[&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-slate-950 ' +\n '[&_pre]:p-4 [&_pre]:text-slate-50 [&_code]:rounded [&_code]:bg-slate-100 ' +\n '[&_code]:px-1.5 [&_code]:py-0.5 [&_code]:text-sm dark:[&_code]:bg-slate-800 ' +\n '[&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_img]:my-4 [&_img]:max-w-full ' +\n '[&_img]:rounded-lg [&_hr]:my-8 [&_hr]:border-slate-200 dark:[&_hr]:border-slate-800';\n\nexport function MarkdownReader({\n content,\n sourceUrl,\n components,\n loading = false,\n error,\n className,\n contentClassName,\n loadingText = '正在加载 Markdown 内容...',\n errorText = 'Markdown 加载失败',\n emptyText = '暂无 Markdown 内容',\n allowImages = true,\n openLinksInNewTab = true,\n transformLinkHref,\n transformImageSrc,\n onLoadError,\n}: MarkdownReaderProps) {\n const [runtime, setRuntime] = useState<MarkdownRuntime | null>(null);\n const [runtimeLoading, setRuntimeLoading] = useState(true);\n const [runtimeError, setRuntimeError] = useState<Error | null>(null);\n const [remoteContent, setRemoteContent] = useState('');\n const [remoteLoading, setRemoteLoading] = useState(false);\n const [remoteError, setRemoteError] = useState<Error | null>(null);\n const onLoadErrorRef = useRef(onLoadError);\n\n const { Card, CardContent, Skeleton } = components || {};\n\n useEffect(() => {\n onLoadErrorRef.current = onLoadError;\n }, [onLoadError]);\n\n useEffect(() => {\n let isMounted = true;\n\n const loadRuntime = async () => {\n setRuntimeLoading(true);\n setRuntimeError(null);\n\n try {\n const [markdownModule, gfmModule] = await Promise.all([\n import('react-markdown'),\n import('remark-gfm'),\n ]);\n\n if (!isMounted) return;\n\n setRuntime({\n ReactMarkdown: markdownModule.default,\n remarkGfm: gfmModule.default,\n });\n } catch (err) {\n if (!isMounted) return;\n\n const nextError = getMarkdownLoadError(err);\n setRuntimeError(nextError);\n onLoadErrorRef.current?.(nextError);\n } finally {\n if (isMounted) {\n setRuntimeLoading(false);\n }\n }\n };\n\n loadRuntime();\n\n return () => {\n isMounted = false;\n };\n }, []);\n\n useEffect(() => {\n if (content !== undefined || !sourceUrl) {\n setRemoteContent('');\n setRemoteLoading(false);\n setRemoteError(null);\n return;\n }\n\n const controller = new AbortController();\n\n const loadContent = async () => {\n setRemoteLoading(true);\n setRemoteError(null);\n\n try {\n const response = await fetch(sourceUrl, {\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(`请求失败:${response.status}`);\n }\n\n const text = await response.text();\n setRemoteContent(text);\n } catch (err) {\n if (controller.signal.aborted) return;\n\n const nextError =\n err instanceof Error ? err : new Error('无法加载 Markdown 内容');\n setRemoteError(nextError);\n onLoadErrorRef.current?.(nextError);\n } finally {\n if (!controller.signal.aborted) {\n setRemoteLoading(false);\n }\n }\n };\n\n loadContent();\n\n return () => {\n controller.abort();\n };\n }, [content, sourceUrl]);\n\n const markdown = content !== undefined ? content : remoteContent;\n const displayedError = normalizeError(error) || runtimeError || remoteError;\n const isLoading = loading || runtimeLoading || remoteLoading;\n const isEmpty = !isLoading && !displayedError && markdown.trim().length === 0;\n\n const markdownComponents = useMemo(\n () => ({\n a({ href, children, ...props }: any) {\n const nextHref = href ? transformLinkHref?.(href) ?? href : undefined;\n\n return (\n <a\n {...props}\n href={nextHref}\n target={openLinksInNewTab ? '_blank' : props.target}\n rel={openLinksInNewTab ? 'noreferrer noopener' : props.rel}\n >\n {children}\n </a>\n );\n },\n img({ src, alt, ...props }: any) {\n if (!src) return null;\n\n const nextSrc = transformImageSrc?.(src) ?? src;\n\n if (!allowImages) {\n return (\n <a href={nextSrc} target=\"_blank\" rel=\"noreferrer noopener\">\n {alt || nextSrc}\n </a>\n );\n }\n\n return <img {...props} src={nextSrc} alt={alt || ''} loading=\"lazy\" />;\n },\n input({ checked, type, ...props }: any) {\n if (type !== 'checkbox') {\n return <input {...props} type={type} />;\n }\n\n return (\n <input\n {...props}\n type=\"checkbox\"\n checked={Boolean(checked)}\n readOnly\n disabled\n />\n );\n },\n }),\n [\n allowImages,\n openLinksInNewTab,\n transformImageSrc,\n transformLinkHref,\n ]\n );\n\n const renderLoading = () => (\n <div className=\"space-y-3 p-4\" role=\"status\" aria-live=\"polite\">\n {Skeleton ? (\n <>\n <Skeleton className=\"h-5 w-2/3\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-5/6\" />\n <Skeleton className=\"h-28 w-full\" />\n </>\n ) : (\n <p className=\"text-sm text-muted-foreground\">{loadingText}</p>\n )}\n </div>\n );\n\n const renderError = () => (\n <div className=\"p-4 text-sm text-destructive\" role=\"alert\">\n <p className=\"font-medium\">{errorText}</p>\n {displayedError?.message ? (\n <p className=\"mt-1 opacity-80\">{displayedError.message}</p>\n ) : null}\n </div>\n );\n\n const renderEmpty = () => (\n <div className=\"p-4 text-sm text-muted-foreground\">{emptyText}</div>\n );\n\n const renderContent = () => {\n if (isLoading) return renderLoading();\n if (displayedError) return renderError();\n if (isEmpty) return renderEmpty();\n if (!runtime) return null;\n\n const { ReactMarkdown, remarkGfm } = runtime;\n\n return (\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={markdownComponents}\n >\n {markdown}\n </ReactMarkdown>\n );\n };\n\n const body = (\n <div className={cn(defaultContentClassName, contentClassName)}>\n {renderContent()}\n </div>\n );\n\n if (Card) {\n return (\n <Card className={className}>\n {CardContent ? <CardContent>{body}</CardContent> : body}\n </Card>\n );\n }\n\n return <div className={className}>{body}</div>;\n}\n"],"names":["normalizeError","error","getMarkdownLoadError","defaultContentClassName","MarkdownReader","content","sourceUrl","components","loading","className","contentClassName","loadingText","errorText","emptyText","allowImages","openLinksInNewTab","transformLinkHref","transformImageSrc","onLoadError","runtime","setRuntime","useState","runtimeLoading","setRuntimeLoading","runtimeError","setRuntimeError","remoteContent","setRemoteContent","remoteLoading","setRemoteLoading","remoteError","setRemoteError","onLoadErrorRef","useRef","Card","CardContent","Skeleton","useEffect","isMounted","markdownModule","gfmModule","err","nextError","_a","controller","response","text","markdown","displayedError","isLoading","isEmpty","markdownComponents","useMemo","href","children","props","nextHref","jsx","src","alt","nextSrc","checked","type","renderLoading","jsxs","Fragment","renderError","renderEmpty","renderContent","ReactMarkdown","remarkGfm","body","cn"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const a = (s, e) => {
|
|
2
|
+
const t = e || s;
|
|
3
|
+
if (!t) return "";
|
|
4
|
+
const n = t.split(/[?#]/)[0] || "", o = n.split(".").pop();
|
|
5
|
+
return !o || o === n ? "" : o.toLowerCase();
|
|
6
|
+
}, c = ({
|
|
7
|
+
src: s,
|
|
8
|
+
fileName: e,
|
|
9
|
+
mimeType: t,
|
|
10
|
+
supportedExtensions: n,
|
|
11
|
+
supportedMimeTypes: o
|
|
12
|
+
}) => {
|
|
13
|
+
const i = t == null ? void 0 : t.toLowerCase();
|
|
14
|
+
if (i && o.some((r) => i === r))
|
|
15
|
+
return !0;
|
|
16
|
+
const u = a(s, e);
|
|
17
|
+
return u ? n.some((r) => r === u) : !t;
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
a as g,
|
|
21
|
+
c as i
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=media-utils-5UPuocc1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-utils-5UPuocc1.js","sources":["../src/components/media-utils.ts"],"sourcesContent":["export const getMediaExtension = (src?: string, fileName?: string) => {\n const candidate = fileName || src;\n if (!candidate) return '';\n\n const withoutQuery = candidate.split(/[?#]/)[0] || '';\n const extension = withoutQuery.split('.').pop();\n\n if (!extension || extension === withoutQuery) return '';\n\n return extension.toLowerCase();\n};\n\nexport const isSupportedMediaSource = ({\n src,\n fileName,\n mimeType,\n supportedExtensions,\n supportedMimeTypes,\n}: {\n src?: string;\n fileName?: string;\n mimeType?: string;\n supportedExtensions: readonly string[];\n supportedMimeTypes: readonly string[];\n}) => {\n const normalizedMimeType = mimeType?.toLowerCase();\n\n if (\n normalizedMimeType &&\n supportedMimeTypes.some((type) => normalizedMimeType === type)\n ) {\n return true;\n }\n\n const extension = getMediaExtension(src, fileName);\n\n return extension\n ? supportedExtensions.some((supported) => supported === extension)\n : !mimeType;\n};\n"],"names":["getMediaExtension","src","fileName","candidate","withoutQuery","extension","isSupportedMediaSource","mimeType","supportedExtensions","supportedMimeTypes","normalizedMimeType","type","supported"],"mappings":"AAAO,MAAMA,IAAoB,CAACC,GAAcC,MAAsB;AACpE,QAAMC,IAAYD,KAAYD;AAC9B,MAAI,CAACE,EAAW,QAAO;AAEvB,QAAMC,IAAeD,EAAU,MAAM,MAAM,EAAE,CAAC,KAAK,IAC7CE,IAAYD,EAAa,MAAM,GAAG,EAAE,IAAA;AAE1C,SAAI,CAACC,KAAaA,MAAcD,IAAqB,KAE9CC,EAAU,YAAA;AACnB,GAEaC,IAAyB,CAAC;AAAA,EACrC,KAAAL;AAAA,EACA,UAAAC;AAAA,EACA,UAAAK;AAAA,EACA,qBAAAC;AAAA,EACA,oBAAAC;AACF,MAMM;AACJ,QAAMC,IAAqBH,KAAA,gBAAAA,EAAU;AAErC,MACEG,KACAD,EAAmB,KAAK,CAACE,MAASD,MAAuBC,CAAI;AAE7D,WAAO;AAGT,QAAMN,IAAYL,EAAkBC,GAAKC,CAAQ;AAEjD,SAAOG,IACHG,EAAoB,KAAK,CAACI,MAAcA,MAAcP,CAAS,IAC/D,CAACE;AACP;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const c=(n,s)=>{const t=s||n;if(!t)return"";const o=t.split(/[?#]/)[0]||"",e=o.split(".").pop();return!e||e===o?"":e.toLowerCase()},a=({src:n,fileName:s,mimeType:t,supportedExtensions:o,supportedMimeTypes:e})=>{const i=t==null?void 0:t.toLowerCase();if(i&&e.some(r=>i===r))return!0;const u=c(n,s);return u?o.some(r=>r===u):!t};exports.getMediaExtension=c;exports.isSupportedMediaSource=a;
|
|
2
|
+
//# sourceMappingURL=media-utils-X1dDYP9W.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-utils-X1dDYP9W.cjs","sources":["../src/components/media-utils.ts"],"sourcesContent":["export const getMediaExtension = (src?: string, fileName?: string) => {\n const candidate = fileName || src;\n if (!candidate) return '';\n\n const withoutQuery = candidate.split(/[?#]/)[0] || '';\n const extension = withoutQuery.split('.').pop();\n\n if (!extension || extension === withoutQuery) return '';\n\n return extension.toLowerCase();\n};\n\nexport const isSupportedMediaSource = ({\n src,\n fileName,\n mimeType,\n supportedExtensions,\n supportedMimeTypes,\n}: {\n src?: string;\n fileName?: string;\n mimeType?: string;\n supportedExtensions: readonly string[];\n supportedMimeTypes: readonly string[];\n}) => {\n const normalizedMimeType = mimeType?.toLowerCase();\n\n if (\n normalizedMimeType &&\n supportedMimeTypes.some((type) => normalizedMimeType === type)\n ) {\n return true;\n }\n\n const extension = getMediaExtension(src, fileName);\n\n return extension\n ? supportedExtensions.some((supported) => supported === extension)\n : !mimeType;\n};\n"],"names":["getMediaExtension","src","fileName","candidate","withoutQuery","extension","isSupportedMediaSource","mimeType","supportedExtensions","supportedMimeTypes","normalizedMimeType","type","supported"],"mappings":"aAAO,MAAMA,EAAoB,CAACC,EAAcC,IAAsB,CACpE,MAAMC,EAAYD,GAAYD,EAC9B,GAAI,CAACE,EAAW,MAAO,GAEvB,MAAMC,EAAeD,EAAU,MAAM,MAAM,EAAE,CAAC,GAAK,GAC7CE,EAAYD,EAAa,MAAM,GAAG,EAAE,IAAA,EAE1C,MAAI,CAACC,GAAaA,IAAcD,EAAqB,GAE9CC,EAAU,YAAA,CACnB,EAEaC,EAAyB,CAAC,CACrC,IAAAL,EACA,SAAAC,EACA,SAAAK,EACA,oBAAAC,EACA,mBAAAC,CACF,IAMM,CACJ,MAAMC,EAAqBH,GAAA,YAAAA,EAAU,cAErC,GACEG,GACAD,EAAmB,KAAME,GAASD,IAAuBC,CAAI,EAE7D,MAAO,GAGT,MAAMN,EAAYL,EAAkBC,EAAKC,CAAQ,EAEjD,OAAOG,EACHG,EAAoB,KAAMI,GAAcA,IAAcP,CAAS,EAC/D,CAACE,CACP"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var Be=Object.create;var ue=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var Je=(l,a,f,v)=>{if(a&&typeof a=="object"||typeof a=="function")for(let h of Ze(a))!Ye.call(l,h)&&h!==f&&ue(l,h,{get:()=>a[h],enumerable:!(v=Ve(a,h))||v.enumerable});return l};var Qe=(l,a,f)=>(f=l!=null?Be(Xe(l)):{},Je(a||!l||!l.__esModule?ue(f,"default",{value:l,enumerable:!0}):f,l));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./jsx-runtime-BB_1_6y_.cjs"),d=require("lucide-react"),n=require("react"),He=require("./PDFSidebar-Di0D-yPS.cjs");function Ue(l,a){const f=n.useRef(void 0);return n.useCallback((...v)=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>l(...v),a)},[l,a])}function et({url:l,initialPage:a=1,initialScale:f=1,initialRotation:v=0,currentPage:h,onPageChange:D,scale:$,onScaleChange:P,rotation:W,onRotationChange:S,minScale:L=.5,maxScale:G=2.5,showToolbar:ae=!0,showSidebar:R=!0,showRotation:xe=!0,showModeToggle:me=!0,showFullscreen:de=!0,enableHotkeys:Q=!0,enableMobileNav:fe=!0,displayMode:pe="single",className:je,toolbarClassName:he,contentClassName:Ee,contentHeight:be="80vh",pageClassName:H,workerUrl:q,cMapUrl:y,standardFontDataUrl:T,components:x,onLoadSuccess:M,onLoadError:E,onPageRender:g,loadingText:ve="正在加载PDF文档...",errorText:U="PDF加载失败"}){const[ee,K]=n.useState(null),[Re,_]=n.useState(a),[ge,ke]=n.useState(f),[ye,Te]=n.useState(v),[Ne,F]=n.useState(!1),[N,z]=n.useState(null),[p,B]=n.useState(0),[te,V]=n.useState(!1),[C,se]=n.useState(pe==="scroll"),[Z,ne]=n.useState(R);n.useEffect(()=>{ne(R)},[R]);const[re,Ce]=n.useState(void 0),[ie,we]=n.useState(null),le=n.useRef(null),A=n.useRef(null),X=n.useRef(new Map),i=h??Re,b=$??ge,I=W??ye,k=h!==void 0,u=C,{Card:De,CardContent:Pe,Button:j,Input:Se,Skeleton:Me}=x||{};n.useEffect(()=>{K(null),B(0),z(null),F(!1),k||_(Math.max(1,a))},[l,a,k]);const Fe=n.useMemo(()=>{const e={withCredentials:!1};return y&&(e.cMapUrl=y,e.cMapPacked=!0),T&&(e.standardFontDataUrl=T),e},[y,T]);n.useEffect(()=>{let e=!0;return(async()=>{try{const c=await import("react-pdf");if(typeof window<"u"){const r=c.pdfjs,o=r==null?void 0:r.version;r!=null&&r.GlobalWorkerOptions&&o&&(q?r.GlobalWorkerOptions.workerSrc=q:r.GlobalWorkerOptions.workerSrc=`https://cdn.jsdelivr.net/npm/pdfjs-dist@${o}/build/pdf.worker.min.mjs`,!y&&r.GlobalWorkerOptions&&(r.GlobalWorkerOptions.cMapUrl=`https://unpkg.com/pdfjs-dist@${o}/cmaps/`),!T&&r.GlobalWorkerOptions&&(r.GlobalWorkerOptions.standardFontDataUrl=`https://unpkg.com/pdfjs-dist@${o}/standard_fonts/`))}e&&we(c)}catch(c){if(e){const r=c instanceof Error?c:new Error("无法加载 react-pdf 库");z(r),F(!1),E==null||E(r)}}})(),()=>{e=!1}},[q,y,T,E]);const ze=n.useCallback(e=>{console.error("PDF加载失败:",e),console.error("PDF URL:",l),K(null),B(0),z(new Error(`${U}: ${e.message||"请检查文件路径或网络连接"}`)),F(!1),E==null||E(e)},[l,U,E]),Ae=n.useCallback(e=>{K(e),B(e.numPages),z(null),F(!1),k||_(s=>Math.max(1,Math.min(s,Math.max(e.numPages,1)))),M==null||M(e)},[k,M]),m=n.useCallback(e=>{if(!Number.isFinite(e))return;const s=p>0?Math.max(1,Math.min(Math.trunc(e),p)):Math.max(1,Math.trunc(e));k||_(s),s!==i&&(D==null||D(s))},[p,k,i,D]),Ie=n.useCallback((e,s)=>{s?X.current.set(e,s):X.current.delete(e)},[]),Oe=n.useCallback(()=>{const e=A.current;if(!e||!u||p<=0)return;const s=e.getBoundingClientRect().top;let c=i,r=Number.POSITIVE_INFINITY;X.current.forEach((o,O)=>{const oe=Math.abs(o.getBoundingClientRect().top-s);oe<r&&(r=oe,c=O)}),c!==i&&m(c)},[i,m,u,p]),w=n.useCallback(e=>{const s=Math.max(L,Math.min(G,b+e));$===void 0&&ke(s),P==null||P(s)},[b,L,G,$,P]),$e=n.useCallback(()=>{const e=(I+90)%360;W===void 0&&Te(e),S==null||S(e)},[I,W,S]),ce=Ue(e=>{Ce(e)},100);n.useEffect(()=>{if(!A.current)return;const e=A.current,s=()=>{ce(e.clientWidth)};s();const c=new ResizeObserver(()=>{s()});return c.observe(e),()=>{c.disconnect()}},[ce]),n.useEffect(()=>{if(!Q)return;const e=s=>{const c=s.target,r=typeof document<"u"?document.activeElement:null,o=c||r,O=o==null?void 0:o.getAttribute("role");o&&(o.tagName==="INPUT"||o.tagName==="TEXTAREA"||o.tagName==="SELECT"||o.isContentEditable||O==="textbox"||O==="spinbutton")||((s.ctrlKey||s.metaKey)&&(s.key==="="||s.key==="+")?(s.preventDefault(),w(.1)):(s.ctrlKey||s.metaKey)&&s.key==="-"?(s.preventDefault(),w(-.1)):!u&&s.key==="ArrowLeft"?(s.preventDefault(),m(i-1)):!u&&s.key==="ArrowRight"&&(s.preventDefault(),m(i+1)))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[Q,i,m,u,w]);const We=n.useCallback(async()=>{var e,s;if(!(typeof document>"u"))if(document.fullscreenElement)document.exitFullscreen&&(await document.exitFullscreen(),V(!1));else try{await((s=(e=le.current)==null?void 0:e.requestFullscreen)==null?void 0:s.call(e)),V(!0)}catch(c){console.error("Error attempting to enable fullscreen:",c)}},[]);n.useEffect(()=>{if(typeof document>"u")return;const e=()=>{V(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",e),()=>{document.removeEventListener("fullscreenchange",e)}},[]);const Le=n.useCallback(e=>{m(e),se(!1)},[m]),Ge=()=>ae?t.jsxRuntimeExports.jsxs("div",{className:`flex items-center justify-between gap-4 border-b px-4 py-2 ${he||""}`,children:[t.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-2",children:[R&&t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:()=>ne(!Z),title:Z?"隐藏侧边栏":"显示侧边栏",children:t.jsxRuntimeExports.jsx(d.PanelLeft,{})}),t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:()=>w(-.1),disabled:b<=L,children:t.jsxRuntimeExports.jsx(d.ZoomOut,{})}),t.jsxRuntimeExports.jsxs("span",{className:"min-w-[3rem] text-center text-sm",children:[Math.round(b*100),"%"]}),t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:()=>w(.1),disabled:b>=G,children:t.jsxRuntimeExports.jsx(d.ZoomIn,{})}),xe&&t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:$e,children:t.jsxRuntimeExports.jsx(d.RotateCw,{})}),me&&t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:()=>se(!C),title:C?"单页模式":"滚动模式",children:C?t.jsxRuntimeExports.jsx(d.ScrollText,{}):t.jsxRuntimeExports.jsx(d.FileText,{})}),de&&t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:We,children:te?t.jsxRuntimeExports.jsx(d.Minimize2,{}):t.jsxRuntimeExports.jsx(d.Maximize2,{})})]}),t.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-2",children:[!u&&t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:()=>m(i-1),disabled:i<=1,children:t.jsxRuntimeExports.jsx(d.ChevronLeft,{})}),t.jsxRuntimeExports.jsx(Se,{type:"number",min:1,max:p,value:i,onChange:e=>m(parseInt(e.target.value)||1),disabled:u,readOnly:u,title:u?"滚动模式下页码仅显示当前位置":void 0,className:"w-16 text-center"}),t.jsxRuntimeExports.jsxs("span",{className:"text-sm text-muted-foreground",children:["/ ",p]}),!u&&t.jsxRuntimeExports.jsx(j,{variant:"outline",size:"icon",onClick:()=>m(i+1),disabled:p>0&&i>=p,children:t.jsxRuntimeExports.jsx(d.ChevronRight,{})})]})]}):null,Y=()=>t.jsxRuntimeExports.jsx("div",{className:"flex h-full items-center justify-center",children:t.jsxRuntimeExports.jsx("p",{className:"text-muted-foreground",children:ve})}),J=()=>t.jsxRuntimeExports.jsx("div",{className:"flex h-full min-h-[400px] items-center justify-center px-4 text-center text-destructive",children:t.jsxRuntimeExports.jsxs("div",{className:"max-w-md",children:[t.jsxRuntimeExports.jsx("p",{className:"mb-2 text-lg font-medium",children:"文件加载失败"}),t.jsxRuntimeExports.jsx("p",{className:"text-sm opacity-80",children:N==null?void 0:N.message})]})}),qe=()=>{if(!ie)return Y();const{Document:e,Page:s}=ie;return t.jsxRuntimeExports.jsx("div",{ref:A,onScroll:u?Oe:void 0,className:`pdf-container flex-1 overflow-y-auto ${Ee||""}`,children:t.jsxRuntimeExports.jsx("div",{className:"flex min-h-full justify-center px-4",children:t.jsxRuntimeExports.jsx(e,{file:l,onLoadError:ze,options:Fe,loading:Y(),error:J(),onLoadSuccess:Ae,children:N?J():C?Array.from(new Array(p),(c,r)=>t.jsxRuntimeExports.jsx("div",{ref:o=>Ie(r+1,o),"data-page-number":r+1,className:`mb-4 ${H||""}`,children:t.jsxRuntimeExports.jsx(s,{pageNumber:r+1,renderTextLayer:!1,renderAnnotationLayer:!1,width:re,scale:b,rotate:I,onRenderSuccess:()=>g==null?void 0:g(r+1)})},`page_${r+1}`)):t.jsxRuntimeExports.jsx("div",{className:H||"",children:t.jsxRuntimeExports.jsx(s,{pageNumber:i,renderTextLayer:!1,renderAnnotationLayer:!1,width:re,scale:b,rotate:I,onRenderSuccess:()=>g==null?void 0:g(i)})})},l)})})},Ke=()=>{if(!R||!Z||!ee)return null;const e=He.PDFSidebar;return t.jsxRuntimeExports.jsx(e,{pdfDocument:ee,currentPage:i,onPageClick:Le,components:{Tabs:x.Tabs,TabsList:x.TabsList,TabsTrigger:x.TabsTrigger,TabsContent:x.TabsContent,ScrollArea:x.ScrollArea,Skeleton:Me}})},_e=()=>!fe||u?null:t.jsxRuntimeExports.jsxs("div",{className:"fixed bottom-4 left-1/2 z-50 flex -translate-x-1/2 gap-2 md:hidden",children:[t.jsxRuntimeExports.jsxs(j,{variant:"secondary",size:"sm",onClick:()=>m(i-1),disabled:u||i<=1,title:u?"滚动模式下通过滚动定位页面":void 0,children:[t.jsxRuntimeExports.jsx(d.ChevronLeft,{}),t.jsxRuntimeExports.jsx("span",{className:"ml-1",children:"上一页"})]}),t.jsxRuntimeExports.jsxs(j,{variant:"secondary",size:"sm",onClick:()=>m(i+1),disabled:u||i>=p,title:u?"滚动模式下通过滚动定位页面":void 0,children:[t.jsxRuntimeExports.jsx("span",{className:"mr-1",children:"下一页"}),t.jsxRuntimeExports.jsx(d.ChevronRight,{})]})]});if(!x)return t.jsxRuntimeExports.jsx("div",{className:"p-4 text-center text-destructive",children:"错误:请通过 components prop 注入 UI 组件"});if(R){const e=[];if(x.Tabs||e.push("Tabs"),x.TabsList||e.push("TabsList"),x.TabsTrigger||e.push("TabsTrigger"),x.TabsContent||e.push("TabsContent"),x.ScrollArea||e.push("ScrollArea"),e.length>0){const s=e.length===1?e[0]:`${e.slice(0,-1).join("、")} 和 ${e[e.length-1]}`;return t.jsxRuntimeExports.jsxs("div",{className:"p-4 text-center text-destructive",children:["错误:侧边栏功能需要注入 ",s," 组件"]})}}return t.jsxRuntimeExports.jsxs("div",{ref:le,children:[t.jsxRuntimeExports.jsxs(De,{className:je,children:[Ge(),t.jsxRuntimeExports.jsx(Pe,{className:"p-0",style:{height:te?"100vh":be},children:t.jsxRuntimeExports.jsx("div",{className:"flex h-full flex-col",children:t.jsxRuntimeExports.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[Ke(),Ne?Y():N?J():qe()]})})})]}),_e()]})}exports.PDFReader=et;
|
|
2
|
+
//# sourceMappingURL=pdf-reader.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-reader.cjs","sources":["../src/components/PDFReader.tsx"],"sourcesContent":["import {\n ChevronLeft as ChevronLeftIcon,\n ChevronRight as ChevronRightIcon,\n FileText as FileTextIcon,\n Maximize2 as Maximize2Icon,\n Minimize2 as Minimize2Icon,\n PanelLeft as PanelLeftIcon,\n RotateCw as RotateCwIcon,\n ScrollText as ScrollTextIcon,\n ZoomIn as ZoomInIcon,\n ZoomOut as ZoomOutIcon,\n} from 'lucide-react';\nimport { useState, useCallback, useEffect, useMemo, useRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nimport type {\n CardComponent,\n ButtonComponent,\n InputComponent,\n SkeletonComponent,\n} from '../types/component-types';\n\nimport type { PDFDocumentProxy } from './PDFSidebar';\nimport { PDFSidebar } from './PDFSidebar';\n\n/**\n * PDFReader UI 组件接口\n */\nexport interface PDFReaderUIComponents {\n /** Card 组件 (必需) */\n Card: CardComponent;\n /** CardContent 组件 (必需) */\n CardContent: React.ComponentType<HTMLAttributes<HTMLDivElement>>;\n /** Button 组件 (必需) */\n Button: ButtonComponent;\n /** Input 组件 (必需) */\n Input: InputComponent;\n /** Skeleton 组件 (必需) */\n Skeleton: SkeletonComponent;\n /** Tabs 组件 (showSidebar=true 时必需) */\n Tabs?: React.ComponentType<{\n value?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n defaultValue?: string;\n }>;\n /** TabsList 组件 (showSidebar=true 时必需) */\n TabsList?: React.ComponentType<HTMLAttributes<HTMLDivElement>>;\n /** TabsTrigger 组件 (showSidebar=true 时必需) */\n TabsTrigger?: React.ComponentType<{\n value: string;\n children?: React.ReactNode;\n }>;\n /** TabsContent 组件 (showSidebar=true 时必需) */\n TabsContent?: React.ComponentType<{\n value: string;\n children?: React.ReactNode;\n }>;\n /** ScrollArea 组件 (showSidebar=true 时必需) */\n ScrollArea?: React.ComponentType<HTMLAttributes<HTMLDivElement>>;\n}\n\n/**\n * PDFReader 组件 Props\n */\nexport interface PDFReaderProps {\n // ==================== 基础配置 ====================\n /** PDF 文件 URL (必需) */\n url: string;\n\n // ==================== 初始状态 ====================\n /** 初始页码 (默认 1) */\n initialPage?: number;\n /** 初始缩放比例 (默认 1.0) */\n initialScale?: number;\n /** 初始旋转角度 (默认 0) */\n initialRotation?: number;\n\n // ==================== 受控模式 ====================\n /** 当前页码 (受控) */\n currentPage?: number;\n /** 页码变化回调 */\n onPageChange?: (page: number) => void;\n /** 缩放比例 (受控) */\n scale?: number;\n /** 缩放变化回调 */\n onScaleChange?: (scale: number) => void;\n /** 旋转角度 (受控) */\n rotation?: number;\n /** 旋转变化回调 */\n onRotationChange?: (rotation: number) => void;\n\n // ==================== 缩放限制 ====================\n /** 最小缩放比例 (默认 0.5) */\n minScale?: number;\n /** 最大缩放比例 (默认 2.5) */\n maxScale?: number;\n\n // ==================== 功能开关 ====================\n /** 显示工具栏 (默认 true) */\n showToolbar?: boolean;\n /** 显示侧边栏 (默认 true) */\n showSidebar?: boolean;\n /** 显示旋转按钮 (默认 true) */\n showRotation?: boolean;\n /** 显示模式切换按钮 (默认 true) */\n showModeToggle?: boolean;\n /** 显示全屏按钮 (默认 true) */\n showFullscreen?: boolean;\n /** 启用键盘快捷键 (默认 true) */\n enableHotkeys?: boolean;\n /** 启用移动端导航 (默认 true) */\n enableMobileNav?: boolean;\n\n // ==================== 显示模式 ====================\n /** 显示模式: 'scroll' 显示所有页面, 'single' 单页模式 (默认 'single') */\n displayMode?: 'scroll' | 'single';\n\n // ==================== 样式定制 ====================\n /** 容器类名 */\n className?: string;\n /** 工具栏类名 */\n toolbarClassName?: string;\n /** 内容区域类名 */\n contentClassName?: string;\n /** 阅读区域高度限制 (默认 '80vh') */\n contentHeight?: string | number;\n /** 页面类名 */\n pageClassName?: string;\n\n // ==================== Worker 配置 ====================\n /** Worker 文件 URL (可选,默认使用 CDN) */\n workerUrl?: string;\n /** CMap 文件 URL (可选,默认使用 CDN) */\n cMapUrl?: string;\n /** 标准字体数据 URL (可选,默认使用 CDN) */\n standardFontDataUrl?: string;\n\n // ==================== UI 组件注入 ====================\n /** UI 组件 */\n components: PDFReaderUIComponents;\n\n // ==================== 回调函数 ====================\n /** 加载成功回调 */\n onLoadSuccess?: (pdf: PDFDocumentProxy) => void;\n /** 加载错误回调 */\n onLoadError?: (error: Error) => void;\n /** 页面渲染回调 */\n onPageRender?: (pageIndex: number) => void;\n\n // ==================== 文本配置 ====================\n /** 加载文本 (默认 '正在加载PDF文档...') */\n loadingText?: string;\n /** 错误文本 (默认 'PDF加载失败') */\n errorText?: string;\n}\n\n/**\n * debounce hook (替代 lodash.debounce)\n */\nfunction useDebounce<T extends (...args: any[]) => any>(\n callback: T,\n delay: number\n): T {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n );\n return useCallback(\n (...args: Parameters<T>) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => callback(...args), delay);\n },\n [callback, delay]\n ) as T;\n}\n\n/**\n * PDFReader 组件\n *\n * 功能完整的 PDF 阅读器组件,支持侧边栏导航、页面旋转、显示模式切换等高级特性。\n *\n * @example\n * ```tsx\n * import { PDFReader } from '@turinhub/atomix-common-ui/pdf-reader';\n * import { Card, Button, Input, Label, Skeleton } from '@/components/ui';\n * import { Tabs, ScrollArea } from '@/components/ui';\n *\n * <PDFReader\n * url=\"/documents/sample.pdf\"\n * components={{\n * Card,\n * CardContent: Card.Content,\n * Button,\n * Input,\n * Label,\n * Skeleton,\n * Tabs,\n * TabsList: Tabs.List,\n * TabsTrigger: Tabs.Trigger,\n * TabsContent: Tabs.Content,\n * ScrollArea,\n * }}\n * initialPage={1}\n * initialScale={1.0}\n * showSidebar={true}\n * showRotation={true}\n * showModeToggle={true}\n * enableHotkeys={true}\n * />\n * ```\n */\nexport function PDFReader({\n url,\n initialPage = 1,\n initialScale = 1.0,\n initialRotation = 0,\n currentPage: controlledPage,\n onPageChange,\n scale: controlledScale,\n onScaleChange,\n rotation: controlledRotation,\n onRotationChange,\n minScale = 0.5,\n maxScale = 2.5,\n showToolbar = true,\n showSidebar = true,\n showRotation = true,\n showModeToggle = true,\n showFullscreen = true,\n enableHotkeys = true,\n enableMobileNav = true,\n displayMode: initialDisplayMode = 'single',\n className,\n toolbarClassName,\n contentClassName,\n contentHeight = '80vh',\n pageClassName,\n workerUrl,\n cMapUrl,\n standardFontDataUrl,\n components,\n onLoadSuccess,\n onLoadError,\n onPageRender,\n loadingText = '正在加载PDF文档...',\n errorText = 'PDF加载失败',\n}: PDFReaderProps) {\n // ==================== 状态管理 ====================\n const [pdfDocument, setPdfDocument] = useState<PDFDocumentProxy | null>(null);\n const [internalPage, setInternalPage] = useState(initialPage);\n const [internalScale, setInternalScale] = useState(initialScale);\n const [internalRotation, setInternalRotation] = useState(initialRotation);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [totalPages, setTotalPages] = useState(0);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [showAllPages, setShowAllPages] = useState(\n initialDisplayMode === 'scroll'\n );\n const [showSidebarState, setShowSidebarState] = useState(showSidebar);\n\n // Sync showSidebarState with prop changes\n useEffect(() => {\n setShowSidebarState(showSidebar);\n }, [showSidebar]);\n\n const [pageWidth, setPageWidth] = useState<number | undefined>(undefined);\n\n // 动态导入 react-pdf\n const [ReactPDF, setReactPDF] = useState<any>(null);\n\n const readerRef = useRef<HTMLDivElement>(null);\n const pdfContainerRef = useRef<HTMLDivElement>(null);\n const pageRefs = useRef<Map<number, HTMLDivElement>>(new Map());\n\n // 使用受控或非受控模式\n const currentPage = controlledPage ?? internalPage;\n const scale = controlledScale ?? internalScale;\n const rotation = controlledRotation ?? internalRotation;\n const isPageControlled = controlledPage !== undefined;\n const isScrollMode = showAllPages;\n\n // ==================== 组件解构 ====================\n const { Card, CardContent, Button, Input, Skeleton } = components || {};\n\n useEffect(() => {\n setPdfDocument(null);\n setTotalPages(0);\n setError(null);\n setIsLoading(false);\n if (!isPageControlled) {\n setInternalPage(Math.max(1, initialPage));\n }\n }, [url, initialPage, isPageControlled]);\n\n // ==================== PDF 选项 ====================\n const pdfOptions = useMemo(() => {\n const options: Record<string, unknown> = {\n withCredentials: false,\n };\n\n if (cMapUrl) {\n options.cMapUrl = cMapUrl;\n options.cMapPacked = true;\n }\n\n if (standardFontDataUrl) {\n options.standardFontDataUrl = standardFontDataUrl;\n }\n\n return options;\n }, [cMapUrl, standardFontDataUrl]);\n\n // ==================== 动态导入 react-pdf ====================\n useEffect(() => {\n let isMounted = true;\n\n const loadReactPDF = async () => {\n try {\n // 动态导入 react-pdf\n const pdfModule = await import('react-pdf');\n\n // 设置 worker\n if (typeof window !== 'undefined') {\n const pdfjs = (pdfModule as any).pdfjs;\n const workerVersion = pdfjs?.version;\n\n if (pdfjs?.GlobalWorkerOptions && workerVersion) {\n if (workerUrl) {\n pdfjs.GlobalWorkerOptions.workerSrc = workerUrl;\n } else {\n // 使用 CDN\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdn.jsdelivr.net/npm/pdfjs-dist@${workerVersion}/build/pdf.worker.min.mjs`;\n }\n\n // 如果没有提供自定义 URL,使用 CDN 默认值\n if (!cMapUrl && pdfjs.GlobalWorkerOptions) {\n (pdfjs.GlobalWorkerOptions as any).cMapUrl =\n `https://unpkg.com/pdfjs-dist@${workerVersion}/cmaps/`;\n }\n if (!standardFontDataUrl && pdfjs.GlobalWorkerOptions) {\n (pdfjs.GlobalWorkerOptions as any).standardFontDataUrl =\n `https://unpkg.com/pdfjs-dist@${workerVersion}/standard_fonts/`;\n }\n }\n }\n\n if (isMounted) {\n setReactPDF(pdfModule);\n }\n } catch (err) {\n if (isMounted) {\n const loadError =\n err instanceof Error ? err : new Error('无法加载 react-pdf 库');\n setError(loadError);\n setIsLoading(false);\n onLoadError?.(loadError);\n }\n }\n };\n\n loadReactPDF();\n\n return () => {\n isMounted = false;\n };\n }, [workerUrl, cMapUrl, standardFontDataUrl, onLoadError]);\n\n // ==================== 处理加载错误 ====================\n const onDocumentLoadError = useCallback(\n (err: Error) => {\n console.error('PDF加载失败:', err);\n console.error('PDF URL:', url);\n setPdfDocument(null);\n setTotalPages(0);\n setError(\n new Error(`${errorText}: ${err.message || '请检查文件路径或网络连接'}`)\n );\n setIsLoading(false);\n onLoadError?.(err);\n },\n [url, errorText, onLoadError]\n );\n\n const onDocumentLoadSuccess = useCallback(\n (pdf: PDFDocumentProxy) => {\n setPdfDocument(pdf);\n setTotalPages(pdf.numPages);\n setError(null);\n setIsLoading(false);\n\n if (!isPageControlled) {\n setInternalPage((page) =>\n Math.max(1, Math.min(page, Math.max(pdf.numPages, 1)))\n );\n }\n\n onLoadSuccess?.(pdf);\n },\n [isPageControlled, onLoadSuccess]\n );\n\n // ==================== 页面导航 ====================\n const goToPage = useCallback(\n (page: number) => {\n if (!Number.isFinite(page)) return;\n const newPage =\n totalPages > 0\n ? Math.max(1, Math.min(Math.trunc(page), totalPages))\n : Math.max(1, Math.trunc(page));\n if (!isPageControlled) {\n setInternalPage(newPage);\n }\n if (newPage !== currentPage) {\n onPageChange?.(newPage);\n }\n },\n [totalPages, isPageControlled, currentPage, onPageChange]\n );\n\n const setPageRef = useCallback(\n (pageNumber: number, element: HTMLDivElement | null) => {\n if (element) {\n pageRefs.current.set(pageNumber, element);\n } else {\n pageRefs.current.delete(pageNumber);\n }\n },\n []\n );\n\n const syncScrollModeCurrentPage = useCallback(() => {\n const container = pdfContainerRef.current;\n if (!container || !isScrollMode || totalPages <= 0) return;\n\n const containerTop = container.getBoundingClientRect().top;\n let closestPage = currentPage;\n let closestDistance = Number.POSITIVE_INFINITY;\n\n pageRefs.current.forEach((element, pageNumber) => {\n const distance = Math.abs(\n element.getBoundingClientRect().top - containerTop\n );\n if (distance < closestDistance) {\n closestDistance = distance;\n closestPage = pageNumber;\n }\n });\n\n if (closestPage !== currentPage) {\n goToPage(closestPage);\n }\n }, [currentPage, goToPage, isScrollMode, totalPages]);\n\n // ==================== 缩放控制 ====================\n const zoom = useCallback(\n (delta: number) => {\n const newScale = Math.max(minScale, Math.min(maxScale, scale + delta));\n if (controlledScale === undefined) {\n setInternalScale(newScale);\n }\n onScaleChange?.(newScale);\n },\n [scale, minScale, maxScale, controlledScale, onScaleChange]\n );\n\n // ==================== 旋转控制 ====================\n const rotate = useCallback(() => {\n const newRotation = (rotation + 90) % 360;\n if (controlledRotation === undefined) {\n setInternalRotation(newRotation);\n }\n onRotationChange?.(newRotation);\n }, [rotation, controlledRotation, onRotationChange]);\n\n // ==================== 处理窗口大小变化 ====================\n const debouncedUpdatePageWidth = useDebounce((width: number) => {\n setPageWidth(width);\n }, 100);\n\n // Use ResizeObserver to track container size changes\n useEffect(() => {\n if (!pdfContainerRef.current) return;\n\n const container = pdfContainerRef.current;\n const updateWidth = () => {\n debouncedUpdatePageWidth(container.clientWidth);\n };\n\n // Initial measurement\n updateWidth();\n\n // Set up ResizeObserver\n const resizeObserver = new ResizeObserver(() => {\n updateWidth();\n });\n\n resizeObserver.observe(container);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [debouncedUpdatePageWidth]);\n\n // ==================== 键盘快捷键 ====================\n useEffect(() => {\n if (!enableHotkeys) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement | null;\n const activeElement =\n typeof document !== 'undefined'\n ? (document.activeElement as HTMLElement | null)\n : null;\n const focusedElement = target || activeElement;\n const role = focusedElement?.getAttribute('role');\n\n if (\n focusedElement &&\n (focusedElement.tagName === 'INPUT' ||\n focusedElement.tagName === 'TEXTAREA' ||\n focusedElement.tagName === 'SELECT' ||\n focusedElement.isContentEditable ||\n role === 'textbox' ||\n role === 'spinbutton')\n ) {\n return;\n }\n\n // Ctrl/Cmd + 加号: 放大\n if ((e.ctrlKey || e.metaKey) && (e.key === '=' || e.key === '+')) {\n e.preventDefault();\n zoom(0.1);\n }\n // Ctrl/Cmd + 减号: 缩小\n else if ((e.ctrlKey || e.metaKey) && e.key === '-') {\n e.preventDefault();\n zoom(-0.1);\n }\n // 左箭头: 上一页\n else if (!isScrollMode && e.key === 'ArrowLeft') {\n e.preventDefault();\n goToPage(currentPage - 1);\n }\n // 右箭头: 下一页\n else if (!isScrollMode && e.key === 'ArrowRight') {\n e.preventDefault();\n goToPage(currentPage + 1);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [enableHotkeys, currentPage, goToPage, isScrollMode, zoom]);\n\n // ==================== 全屏切换 ====================\n const toggleFullscreen = useCallback(async () => {\n if (typeof document === 'undefined') return;\n\n if (!document.fullscreenElement) {\n try {\n await readerRef.current?.requestFullscreen?.();\n setIsFullscreen(true);\n } catch (err) {\n console.error('Error attempting to enable fullscreen:', err);\n }\n } else {\n if (document.exitFullscreen) {\n await document.exitFullscreen();\n setIsFullscreen(false);\n }\n }\n }, []);\n\n // ==================== 监听全屏状态变化 ====================\n useEffect(() => {\n if (typeof document === 'undefined') return;\n\n const handleFullscreenChange = () => {\n setIsFullscreen(!!document.fullscreenElement);\n };\n\n document.addEventListener('fullscreenchange', handleFullscreenChange);\n return () => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange);\n };\n }, []);\n\n // ==================== 处理侧边栏页面点击 ====================\n const handleSidebarPageClick = useCallback(\n (pageNumber: number) => {\n goToPage(pageNumber);\n setShowAllPages(false);\n },\n [goToPage]\n );\n\n // ==================== 渲染工具栏 ====================\n const renderToolbar = () => {\n if (!showToolbar) return null;\n\n return (\n <div\n className={`flex items-center justify-between gap-4 border-b px-4 py-2 ${toolbarClassName || ''}`}\n >\n <div className=\"flex items-center gap-2\">\n {/* 侧边栏切换 */}\n {showSidebar && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => setShowSidebarState(!showSidebarState)}\n title={showSidebarState ? '隐藏侧边栏' : '显示侧边栏'}\n >\n <PanelLeftIcon />\n </Button>\n )}\n\n {/* 缩放控制 */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => zoom(-0.1)}\n disabled={scale <= minScale}\n >\n <ZoomOutIcon />\n </Button>\n <span className=\"min-w-[3rem] text-center text-sm\">\n {Math.round(scale * 100)}%\n </span>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => zoom(0.1)}\n disabled={scale >= maxScale}\n >\n <ZoomInIcon />\n </Button>\n\n {/* 旋转控制 */}\n {showRotation && (\n <Button variant=\"outline\" size=\"icon\" onClick={rotate}>\n <RotateCwIcon />\n </Button>\n )}\n\n {/* 显示模式切换 */}\n {showModeToggle && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => setShowAllPages(!showAllPages)}\n title={showAllPages ? '单页模式' : '滚动模式'}\n >\n {showAllPages ? <ScrollTextIcon /> : <FileTextIcon />}\n </Button>\n )}\n\n {/* 全屏切换 */}\n {showFullscreen && (\n <Button variant=\"outline\" size=\"icon\" onClick={toggleFullscreen}>\n {isFullscreen ? <Minimize2Icon /> : <Maximize2Icon />}\n </Button>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {!isScrollMode && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage <= 1}\n >\n <ChevronLeftIcon />\n </Button>\n )}\n\n <Input\n type=\"number\"\n min={1}\n max={totalPages}\n value={currentPage}\n onChange={(e) => goToPage(parseInt(e.target.value) || 1)}\n disabled={isScrollMode}\n readOnly={isScrollMode}\n title={isScrollMode ? '滚动模式下页码仅显示当前位置' : undefined}\n className=\"w-16 text-center\"\n />\n <span className=\"text-sm text-muted-foreground\">/ {totalPages}</span>\n\n {!isScrollMode && (\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => goToPage(currentPage + 1)}\n disabled={totalPages > 0 && currentPage >= totalPages}\n >\n <ChevronRightIcon />\n </Button>\n )}\n </div>\n </div>\n );\n };\n\n // ==================== 渲染加载状态 ====================\n const renderLoading = () => (\n <div className=\"flex h-full items-center justify-center\">\n <p className=\"text-muted-foreground\">{loadingText}</p>\n </div>\n );\n\n // ==================== 渲染错误状态 ====================\n const renderError = () => (\n <div className=\"flex h-full min-h-[400px] items-center justify-center px-4 text-center text-destructive\">\n <div className=\"max-w-md\">\n <p className=\"mb-2 text-lg font-medium\">文件加载失败</p>\n <p className=\"text-sm opacity-80\">{error?.message}</p>\n </div>\n </div>\n );\n\n // ==================== 渲染 PDF 文档 ====================\n const renderPDFDocument = () => {\n if (!ReactPDF) return renderLoading();\n\n const { Document, Page } = ReactPDF;\n\n return (\n <div\n ref={pdfContainerRef}\n onScroll={isScrollMode ? syncScrollModeCurrentPage : undefined}\n className={`pdf-container flex-1 overflow-y-auto ${contentClassName || ''}`}\n >\n <div className=\"flex min-h-full justify-center px-4\">\n <Document\n key={url}\n file={url}\n onLoadError={onDocumentLoadError}\n options={pdfOptions}\n loading={renderLoading()}\n error={renderError()}\n onLoadSuccess={onDocumentLoadSuccess}\n >\n {error ? (\n renderError()\n ) : showAllPages ? (\n // 显示所有页面模式\n Array.from(new Array(totalPages), (_el, index) => (\n <div\n key={`page_${index + 1}`}\n ref={(element) => setPageRef(index + 1, element)}\n data-page-number={index + 1}\n className={`mb-4 ${pageClassName || ''}`}\n >\n <Page\n pageNumber={index + 1}\n renderTextLayer={false}\n renderAnnotationLayer={false}\n width={pageWidth}\n scale={scale}\n rotate={rotation}\n onRenderSuccess={() => onPageRender?.(index + 1)}\n />\n </div>\n ))\n ) : (\n // 单页模式\n <div className={pageClassName || ''}>\n <Page\n pageNumber={currentPage}\n renderTextLayer={false}\n renderAnnotationLayer={false}\n width={pageWidth}\n scale={scale}\n rotate={rotation}\n onRenderSuccess={() => onPageRender?.(currentPage)}\n />\n </div>\n )}\n </Document>\n </div>\n </div>\n );\n };\n\n // ==================== 渲染侧边栏 ====================\n const renderSidebar = () => {\n if (!showSidebar || !showSidebarState || !pdfDocument) return null;\n\n // 使用导入的 PDFSidebar 组件\n const PDFSidebarComponent = PDFSidebar;\n\n return (\n <PDFSidebarComponent\n pdfDocument={pdfDocument}\n currentPage={currentPage}\n onPageClick={handleSidebarPageClick}\n components={{\n Tabs: components.Tabs!,\n TabsList: components.TabsList!,\n TabsTrigger: components.TabsTrigger!,\n TabsContent: components.TabsContent!,\n ScrollArea: components.ScrollArea!,\n Skeleton,\n }}\n />\n );\n };\n\n // ==================== 渲染移动端导航 ====================\n const renderMobileNav = () => {\n if (!enableMobileNav || isScrollMode) return null;\n\n return (\n <div className=\"fixed bottom-4 left-1/2 z-50 flex -translate-x-1/2 gap-2 md:hidden\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => goToPage(currentPage - 1)}\n disabled={isScrollMode || currentPage <= 1}\n title={isScrollMode ? '滚动模式下通过滚动定位页面' : undefined}\n >\n <ChevronLeftIcon />\n <span className=\"ml-1\">上一页</span>\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => goToPage(currentPage + 1)}\n disabled={isScrollMode || currentPage >= totalPages}\n title={isScrollMode ? '滚动模式下通过滚动定位页面' : undefined}\n >\n <span className=\"mr-1\">下一页</span>\n <ChevronRightIcon />\n </Button>\n </div>\n );\n };\n\n // ==================== 组件验证 ====================\n if (!components) {\n return (\n <div className=\"p-4 text-center text-destructive\">\n 错误:请通过 components prop 注入 UI 组件\n </div>\n );\n }\n\n // 验证侧边栏所需的所有组件\n if (showSidebar) {\n const missingComponents: string[] = [];\n if (!components.Tabs) missingComponents.push('Tabs');\n if (!components.TabsList) missingComponents.push('TabsList');\n if (!components.TabsTrigger) missingComponents.push('TabsTrigger');\n if (!components.TabsContent) missingComponents.push('TabsContent');\n if (!components.ScrollArea) missingComponents.push('ScrollArea');\n\n if (missingComponents.length > 0) {\n const missingComponentsText =\n missingComponents.length === 1\n ? missingComponents[0]\n : `${missingComponents.slice(0, -1).join('、')} 和 ${missingComponents[missingComponents.length - 1]}`;\n return (\n <div className=\"p-4 text-center text-destructive\">\n 错误:侧边栏功能需要注入 {missingComponentsText} 组件\n </div>\n );\n }\n }\n\n return (\n <div ref={readerRef}>\n <Card className={className}>\n {renderToolbar()}\n <CardContent\n className=\"p-0\"\n style={{ height: isFullscreen ? '100vh' : contentHeight }}\n >\n <div className=\"flex h-full flex-col\">\n {/* PDF 显示区域 */}\n <div className=\"flex flex-1 overflow-hidden\">\n {renderSidebar()}\n {isLoading\n ? renderLoading()\n : error\n ? renderError()\n : renderPDFDocument()}\n </div>\n </div>\n </CardContent>\n </Card>\n {renderMobileNav()}\n </div>\n );\n}\n"],"names":["useDebounce","callback","delay","timeoutRef","useRef","useCallback","args","PDFReader","url","initialPage","initialScale","initialRotation","controlledPage","onPageChange","controlledScale","onScaleChange","controlledRotation","onRotationChange","minScale","maxScale","showToolbar","showSidebar","showRotation","showModeToggle","showFullscreen","enableHotkeys","enableMobileNav","initialDisplayMode","className","toolbarClassName","contentClassName","contentHeight","pageClassName","workerUrl","cMapUrl","standardFontDataUrl","components","onLoadSuccess","onLoadError","onPageRender","loadingText","errorText","pdfDocument","setPdfDocument","useState","internalPage","setInternalPage","internalScale","setInternalScale","internalRotation","setInternalRotation","isLoading","setIsLoading","error","setError","totalPages","setTotalPages","isFullscreen","setIsFullscreen","showAllPages","setShowAllPages","showSidebarState","setShowSidebarState","useEffect","pageWidth","setPageWidth","ReactPDF","setReactPDF","readerRef","pdfContainerRef","pageRefs","currentPage","scale","rotation","isPageControlled","isScrollMode","Card","CardContent","Button","Input","Skeleton","pdfOptions","useMemo","options","isMounted","pdfModule","pdfjs","workerVersion","err","loadError","onDocumentLoadError","onDocumentLoadSuccess","pdf","page","goToPage","newPage","setPageRef","pageNumber","element","syncScrollModeCurrentPage","container","containerTop","closestPage","closestDistance","distance","zoom","delta","newScale","rotate","newRotation","debouncedUpdatePageWidth","width","updateWidth","resizeObserver","handleKeyDown","e","target","activeElement","focusedElement","role","toggleFullscreen","_b","_a","handleFullscreenChange","handleSidebarPageClick","renderToolbar","jsxs","jsx","PanelLeftIcon","ZoomOutIcon","ZoomInIcon","RotateCwIcon","ScrollTextIcon","FileTextIcon","Minimize2Icon","Maximize2Icon","ChevronLeftIcon","ChevronRightIcon","renderLoading","renderError","renderPDFDocument","Document","Page","_el","index","renderSidebar","PDFSidebarComponent","PDFSidebar","renderMobileNav","missingComponents","missingComponentsText"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-reader.d.ts","sourceRoot":"","sources":["../src/pdf-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC"}
|