{"_id":"@21epub/antd-resource-lib","name":"@21epub/antd-resource-lib","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@21epub/antd-resource-lib","version":"1.0.1","main":"dist/index.js","module":"dist/index.esm.js","typings":"dist/index.d.ts","sideEffects":false,"scripts":{"dev":"rollup -c -w && tsc-alias -w","build":"rm -rf dist && rollup -c && tsc-alias","lint":"eslint .","release":"npm version patch && npm run build && npm publish","storybook":"start-storybook -p 6006 --no-open","build-storybook":"build-storybook"},"peerDependencies":{"@tanstack/react-query":">=4.x","@emotion/react":">=11.x","@emotion/styled":">=11.x","antd":"^5.0.0","react":">=16.14.x"},"dependencies":{"@21epub-ui/media":"^0.2.1","@21epub-ui/uploader":"^0.5.1","@21epub/epub-custom-label":"^0.1.1","@ant-design/colors":"^6.0.0","@ant-design/icons":"^5.0.0","@ant-design/compatible":"^5.1.2","jotai":"^2.0.0","ky":"^1.0.0"},"devDependencies":{"@ant-design/codemod-v5":"^1.0.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-react":"^7.17.12","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@rollup/plugin-alias":"^3.1.8","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-eslint":"^8.0.1","@rollup/plugin-typescript":"^8.3.0","@rollup/plugin-url":"^6.1.0","@storybook/addon-actions":"^6.5.9","@storybook/addon-essentials":"^6.5.9","@storybook/addon-links":"^6.5.9","@storybook/builder-webpack5":"^6.5.9","@storybook/manager-webpack5":"^6.5.9","@storybook/react":"^6.5.9","@types/react":"^17","@types/react-dom":"^17","@typescript-eslint/eslint-plugin":"^5.8.0","@typescript-eslint/parser":"^5.8.0","babel-loader":"^8.2.3","core-js":"^3.19.2","eslint":"^8.5.0","eslint-plugin-react":"^7.27.1","eslint-plugin-react-hooks":"^4.3.0","eslint-plugin-sonarjs":"^0.11.0","eslint-plugin-storybook":"^0.5.12","eslint-plugin-yml":"^0.12.0","http-proxy-middleware":"^2.0.1","react":"^18.2.0","react-dom":"^18.2.0","rollup":"^2.60.2","tsc-alias":"^1.5.0","typescript":"^4.5.2","yaml-eslint-parser":"^0.5.0"},"browserslist":[">0.5%","not dead","not op_mini all"],"packageManager":"pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748","_id":"@21epub/antd-resource-lib@1.0.1","gitHead":"d806fbe9495caa1cf2fb4d11123ce7f1202756f9","description":"基于 antd 5、jotai 与 ky 的素材库组件与工具集，支持 Modal 与 Panel 两种形态，并使用 `@tanstack/react-query` 获取与缓存数据。","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-yxNxsJwrmW1Tcjc792z/7Uo+GYP1nJ0AxOGZbO+TYwybGADw2yEvSlPsOgTzNm8ybflAT8dDM2x8wdY8VhhfuQ==","shasum":"e5d1935534ccc7432d50b41d27326413a77a3d12","tarball":"https://registry.npmjs.org/@21epub/antd-resource-lib/-/antd-resource-lib-1.0.1.tgz","fileCount":68,"unpackedSize":382667,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG/0eISFcP90EezlZ/FYhdrYPi3k/X66eTH304Jl+dI6AiEAjEUfLJ/guplwvk7NldBSOGqCT928d91CUt2NsdvPqak="}]},"_npmUser":{"name":"gary.guzy","email":"garrygu@21epub.com"},"directories":{},"maintainers":[{"name":"gary.guzy","email":"garrygu@21epub.com"},{"name":"zhangwei0126","email":"zhangwei@21epub.com"},{"name":"dxsix","email":"1071667708@qq.com"},{"name":"wagon1104","email":"wagon1104@163.com"},{"name":"ongyuxing","email":"ongyuxing@outlook.com"},{"name":"csj117","email":"1792900546@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/antd-resource-lib_1.0.1_1756698968910_0.04979112692865684"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-01T03:56:08.814Z","1.0.1":"2025-09-01T03:56:09.109Z","modified":"2025-09-01T03:56:09.470Z"},"maintainers":[{"name":"gary.guzy","email":"garrygu@21epub.com"},{"name":"zhangwei0126","email":"zhangwei@21epub.com"},{"name":"dxsix","email":"1071667708@qq.com"},{"name":"wagon1104","email":"wagon1104@163.com"},{"name":"ongyuxing","email":"ongyuxing@outlook.com"},{"name":"csj117","email":"1792900546@qq.com"}],"description":"基于 antd 5、jotai 与 ky 的素材库组件与工具集，支持 Modal 与 Panel 两种形态，并使用 `@tanstack/react-query` 获取与缓存数据。","readme":"# resource-lib\n\n基于 antd 5、jotai 与 ky 的素材库组件与工具集，支持 Modal 与 Panel 两种形态，并使用 `@tanstack/react-query` 获取与缓存数据。\n\n## 安装\n\n请确保安装以下依赖（版本以项目为准）：\n\n- antd 5\n- jotai 2\n- ky 1\n- @tanstack/react-query 4\n- react ≥ 16.14\n\n## 快速开始\n\n1. 全局样式与 Provider\n\n在应用入口引入 antd 5 的重置样式，并使用 Jotai 与 React Query 的 Provider 包裹应用：\n\n```tsx\nimport 'antd/dist/reset.css'\nimport React from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { AssetsContext, AssetsModal } from '@21epub/resource-lib'\n\nconst queryClient = new QueryClient()\n\nconst App = () => (\n  <AssetsContext>\n    <QueryClientProvider client={queryClient}>\n      {/* 你的应用 */}\n      <AssetsModal />\n    </QueryClientProvider>\n  </AssetsContext>\n)\n\ncreateRoot(document.getElementById('root')!).render(<App />)\n```\n\n1. 打开素材选择（Modal）\n\n通过库内置的 `useInsertAssets` 打开组件并在回调中接收素材：\n\n```tsx\nimport React, { useEffect } from 'react'\nimport { AssetsModal, useInsertAssets } from '@21epub/resource-lib'\n\nexport default function Demo() {\n  const insertAssets = useInsertAssets({\n    type: 'image',\n    multiple: true,\n    onInsert: (assets) => {\n      console.log('selected assets', assets)\n    },\n  })\n\n  useEffect(() => {\n    insertAssets()\n  }, [insertAssets])\n\n  return <AssetsModal />\n}\n```\n\n1. 面板形态（Panel）\n\n```tsx\nimport React from 'react'\nimport { AssetsPanel } from '@21epub/resource-lib'\n\nexport default () => <AssetsPanel pubicLibraryVisible assetRemovable />\n```\n\n## 组件 Props 摘要\n\n- AssetsModal、AssetsPanel 共同支持：\n  - pubicLibraryVisible: 是否显示公共素材\n  - psdImporterVisible: 是否显示 PSD 导入（仅 Modal 支持 PSD 按钮）\n  - assetRemovable: 是否允许删除素材\n  - uploadCompressible: 是否允许压缩素材\n  - onReceive: 上传前拦截文件\n  - onUploaded: 上传完成回调\n\n## 数据与网络\n\n- 请求由 `ky` 发起，默认前缀为 `/v3/api/material/`。\n- 本仓库在本地开发与 Storybook 中通过代理转发到后端（见 `.storybook/middleware.js`）。如果在你的应用中使用，请配置相同的代理或由网关统一转发该前缀。\n\n## 在 Storybook 中调试\n\n- 全局在 `.storybook/preview.js` 中注入了 antd 样式与 Providers（Jotai、React Query）。\n- 已在 `.storybook/middleware.js` 内设置了 `/v2` 与 `/v3` 的 API 代理。\n- 直接运行脚本：`npm run storybook`。\n\n## 从 Recoil 迁移\n\n- 旧版 `AssetsRecoilRoot`、`useAssetsModalState` 已替换为 Jotai 与 `useInsertAssets`。\n- 现在需要用 `AssetsContext`（Jotai Provider 的 re-export）与 `QueryClientProvider` 包裹应用。\n","readmeFilename":"README.md","_rev":"1-6f1ca043a12cab35e101f0df1f42cd05"}