@kne-components/react-pdf-sign 1.1.1 → 1.1.2
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/build/asset-manifest.json +18 -18
- package/build/index.html +1 -1
- package/build/remoteEntry.js +1 -1
- package/build/remoteEntry.js.map +1 -1
- package/build/static/css/{72.06e4c414.chunk.css → 72.bd35e7af.chunk.css} +2 -2
- package/build/static/css/72.bd35e7af.chunk.css.map +1 -0
- package/build/static/css/784.e8779a08.chunk.css +2 -0
- package/build/static/css/784.e8779a08.chunk.css.map +1 -0
- package/build/static/js/689.f1b36776.chunk.js +2 -0
- package/build/static/js/689.f1b36776.chunk.js.map +1 -0
- package/build/static/js/{72.9a02a641.chunk.js → 72.ca463e6a.chunk.js} +2 -2
- package/build/static/js/{72.9a02a641.chunk.js.map → 72.ca463e6a.chunk.js.map} +1 -1
- package/build/static/js/{784.800af741.chunk.js → 784.bfa82782.chunk.js} +2 -2
- package/build/static/js/{784.800af741.chunk.js.map → 784.bfa82782.chunk.js.map} +1 -1
- package/build/static/js/8.a1f760c5.chunk.js +2 -0
- package/build/static/js/8.a1f760c5.chunk.js.map +1 -0
- package/build/static/js/{989.c6951f5a.chunk.js → 989.36607e00.chunk.js} +3 -3
- package/build/static/js/989.36607e00.chunk.js.map +1 -0
- package/build/static/js/{main.24c72c35.js → main.a2d122d9.js} +2 -2
- package/build/static/js/{main.24c72c35.js.map → main.a2d122d9.js.map} +1 -1
- package/package.json +1 -1
- package/build/static/css/72.06e4c414.chunk.css.map +0 -1
- package/build/static/css/784.f90021cd.chunk.css +0 -2
- package/build/static/css/784.f90021cd.chunk.css.map +0 -1
- package/build/static/js/689.00789cb2.chunk.js +0 -2
- package/build/static/js/689.00789cb2.chunk.js.map +0 -1
- package/build/static/js/8.f435d3f3.chunk.js +0 -2
- package/build/static/js/8.f435d3f3.chunk.js.map +0 -1
- package/build/static/js/989.c6951f5a.chunk.js.map +0 -1
- /package/build/static/js/{989.c6951f5a.chunk.js.LICENSE.txt → 989.36607e00.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/689.f1b36776.chunk.js","mappings":"8TAUA,MA6hCA,EA7hCqB,CACjBA,KAAM,iBACNC,QAAS,2tIAmBTC,YAAa,qdACbC,YAAa,sBACbC,IAAK,4zUA2fLC,QAAS,CACLC,QAAQ,EACRC,UAAW,uBACXC,MAAO,GACPC,KAAM,CAAC,CACXC,MAAO,uCACPR,YAAa,mJACbS,KAAM,siEAiENC,MAAO,CAAC,CACRZ,KAAM,gBACNG,YAAa,kCACbU,gBAAiB,uDACjBC,UAAW,GACb,CACEd,KAAM,OACNG,YAAa,OACbW,UAAW,KAEb,CACEJ,MAAO,oCACPR,YAAa,kjBACbS,KAAM,k8GA4GNC,MAAO,CAAC,CACRZ,KAAM,gBACNG,YAAa,kCACbU,gBAAiB,uDACjBC,UAAW,GACb,CACEd,KAAM,OACNG,YAAa,OACbW,UAAW,KAEb,CACEJ,MAAO,iCACPR,YAAa,yJACbS,KAAM,y5EAmHNC,MAAO,CAAC,CACRZ,KAAM,gBACNG,YAAa,kCACbU,gBAAiB,uDACjBC,UAAW,GACb,CACEd,KAAM,OACNG,YAAa,OACbW,UAAW,KAEb,CACEJ,MAAO,wBACPR,YAAa,8HACbS,KAAM,uOAcNC,MAAO,CAAC,CACRZ,KAAM,gBACNG,YAAa,kCACbU,gBAAiB,uDACjBC,UAAW,GACb,CACEd,KAAM,cACNG,YAAa,oBACbW,UAAW,KAEb,CACEJ,MAAO,8BACPR,YAAa,qKACbS,KAAM,4/EAiFNC,MAAO,CAAC,CACRZ,KAAM,gBACNG,YAAa,kCACbU,gBAAiB,uDACjBC,UAAW,GACb,CACEd,KAAM,cACNG,YAAa,oBACbW,UAAW,GACb,CACEd,KAAM,aACNG,YAAa,sBACbW,U,QACF,CACEd,KAAM,OACNG,YAAa,OACbW,UAAW,KAEb,CACEJ,MAAO,uCACPR,YAAa,8GACbS,KAAM,yzCA+CNC,MAAO,CAAC,CACRZ,KAAM,gBACNG,YAAa,kCACbU,gBAAiB,uDACjBC,UAAW,GACb,CACEd,KAAM,OACNG,YAAa,OACbW,UAAW,O","sources":["../../README.md"],"sourcesContent":["import * as component_1 from '@kne/current-lib_react-pdf-sign';\nimport * as component_2 from 'antd';\nimport '@kne/current-lib_react-pdf-sign/dist/index.css';\nimport '@kne/current-lib_react-pdf-sign/dist/index.css';\nimport '@kne/current-lib_react-pdf-sign/dist/index.css';\nimport * as component_6 from './doc/example.pdf';\nimport '@kne/current-lib_react-pdf-sign/dist/index.css';\nimport * as component_8 from './doc/signature.png';\nimport '@kne/current-lib_react-pdf-sign/dist/index.css';\nimport '@kne/current-lib_react-pdf-sign/dist/index.css';\nconst readmeConfig = {\n name: `react-pdf-sign`,\n summary: `<p>这是一个功能强大的 React PDF 签名组件库,专为需要在 PDF 文档上添加电子签名的应用场景而设计。该组件库提供了灵活的签名解决方案,支持单签名位置和多签名位置两种模式,满足不同业务需求。</p>\n<h2>核心特性</h2>\n<p><strong>直观的签名体验</strong> - 提供手写签名画板,用户可以通过鼠标或触摸设备自然地绘制签名,签名支持实时预览和调整。支持在签名画板上叠加自定义内容,如日期、文字等。</p>\n<p><strong>灵活的定位控制</strong> - 签名区域可以在 PDF 页面上自由拖拽、缩放和精确定位,支持保持比例缩放,确保签名的视觉效果。</p>\n<p><strong>多位置签名支持</strong> - 支持在 PDF 文档的多个页面或同一页面的不同位置添加签名,通过 <code>PDFSignMulti</code> 组件实现批量签名管理,可动态添加、删除签名位置。</p>\n<p><strong>完整的 PDF 操作</strong> - 基于 pdf-lib 和 react-pdf,支持多页 PDF 文档的浏览、签名定位和最终签名文件的生成。</p>\n<p><strong>组件化设计</strong> - 提供多个独立组件(PDFSign、PDFSignMulti、PDFViewer、LocationLayer、useSignature),开发者可以根据需求灵活组合使用。支持默认签名位置设置和位置变化回调,便于集成到现有业务流程。</p>\n<p><strong>智能位置计算</strong> - 内置 <code>computedPDFSignLocation</code> 和 <code>getInitLocation</code> 工具函数,自动处理显示坐标与 PDF 原始坐标的转换,简化开发复杂度。</p>\n<p><strong>国际化支持</strong> - 内置中英文语言包,支持多语言切换,适合国际化应用。</p>\n<p><strong>现代化技术栈</strong> - 基于 React 18+,使用 Konva.js 实现高性能的图形渲染,支持响应式设计。</p>\n<h2>使用场景</h2>\n<ul>\n<li>合同签署系统 - 支持多方签名位置预定义</li>\n<li>文档审批流程 - 单个或多个审批人签名</li>\n<li>电子表单签名 - 固定位置的表单签名</li>\n<li>证书颁发系统 - 多签名证书生成</li>\n<li>法律文件签署 - 多方见证签名</li>\n</ul>\n<p>该组件库简化了 PDF 签名的复杂实现,开发者只需要几行代码就能集成完整的签名功能,大大提升了开发效率。新增的多位置签名功能和智能坐标计算让复杂场景的实现变得简单快捷。</p>`,\n description: `这是一个功能强大的 React PDF 签名组件库,专为需要在 PDF 文档上添加电子签名的应用场景而设计。该组件库提供了灵活的签名解决方案,支持即时签名添加和预定义签名区域两种模式`,\n packageName: `@kne/react-pdf-sign`,\n api: `<h3>PDFSign</h3>\n<p>主要的 PDF 签名组件,集成了 PDF 查看器和签名定位功能,适用于单签名场景。</p>\n<table>\n<thead>\n<tr>\n<th>属性</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>-</td>\n<td>PDF 文件的 URL 地址</td>\n</tr>\n<tr>\n<td>signature</td>\n<td>string</td>\n<td>-</td>\n<td>签名图片的 URL 地址</td>\n</tr>\n<tr>\n<td>width</td>\n<td>number</td>\n<td>200</td>\n<td>签名区域的宽度</td>\n</tr>\n<tr>\n<td>height</td>\n<td>number</td>\n<td>80</td>\n<td>签名区域的高度</td>\n</tr>\n<tr>\n<td>padding</td>\n<td>number</td>\n<td>8</td>\n<td>签名区域变换器的内边距</td>\n</tr>\n<tr>\n<td>placeholder</td>\n<td>string</td>\n<td>-</td>\n<td>签名区域的占位文本</td>\n</tr>\n<tr>\n<td>filename</td>\n<td>string</td>\n<td>'signed-document.pdf'</td>\n<td>生成签名PDF的文件名</td>\n</tr>\n<tr>\n<td>defaultLocation</td>\n<td>object</td>\n<td>-</td>\n<td>默认签名位置信息</td>\n</tr>\n<tr>\n<td>onChange</td>\n<td>function</td>\n<td>-</td>\n<td>签名位置变化回调函数</td>\n</tr>\n</tbody>\n</table>\n<h4>实例方法</h4>\n<table>\n<thead>\n<tr>\n<th>方法名</th>\n<th>参数</th>\n<th>返回值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>getLocation</td>\n<td>-</td>\n<td>object</td>\n<td>获取当前签名位置信息</td>\n</tr>\n<tr>\n<td>setLocation</td>\n<td>location: object</td>\n<td>-</td>\n<td>设置签名位置</td>\n</tr>\n<tr>\n<td>getPdfSignature</td>\n<td>-</td>\n<td>object</td>\n<td>获取 PDF 签名信息</td>\n</tr>\n<tr>\n<td>sign</td>\n<td>-</td>\n<td>Promise<File></td>\n<td>生成签名后的 PDF 文件</td>\n</tr>\n</tbody>\n</table>\n<h3>PDFSignMulti</h3>\n<p>多位置 PDF 签名组件,支持在同一 PDF 文档中添加多个签名位置,适用于需要多方签名或多页面签名的场景。</p>\n<table>\n<thead>\n<tr>\n<th>属性</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>-</td>\n<td>PDF 文件的 URL 地址</td>\n</tr>\n<tr>\n<td>width</td>\n<td>number</td>\n<td>200</td>\n<td>签名区域的宽度</td>\n</tr>\n<tr>\n<td>height</td>\n<td>number</td>\n<td>80</td>\n<td>签名区域的高度</td>\n</tr>\n<tr>\n<td>padding</td>\n<td>number</td>\n<td>8</td>\n<td>签名区域变换器的内边距</td>\n</tr>\n<tr>\n<td>placeholder</td>\n<td>string</td>\n<td>-</td>\n<td>签名区域的占位文本</td>\n</tr>\n<tr>\n<td>filename</td>\n<td>string</td>\n<td>'signed-document.pdf'</td>\n<td>生成签名PDF的文件名</td>\n</tr>\n<tr>\n<td>defaultSignatureList</td>\n<td>array</td>\n<td>-</td>\n<td>默认签名位置列表</td>\n</tr>\n<tr>\n<td>isEdit</td>\n<td>boolean</td>\n<td>-</td>\n<td>是否处于编辑模式</td>\n</tr>\n<tr>\n<td>isFlat</td>\n<td>boolean</td>\n<td>-</td>\n<td>是否平铺显示所有页面</td>\n</tr>\n<tr>\n<td>onSign</td>\n<td>function</td>\n<td>-</td>\n<td>点击签名区域时的回调函数</td>\n</tr>\n<tr>\n<td>onChange</td>\n<td>function</td>\n<td>-</td>\n<td>签名位置列表变化回调函数</td>\n</tr>\n</tbody>\n</table>\n<h4>实例方法</h4>\n<table>\n<thead>\n<tr>\n<th>方法名</th>\n<th>参数</th>\n<th>返回值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>getSignatureList</td>\n<td>-</td>\n<td>array</td>\n<td>获取当前签名位置列表</td>\n</tr>\n<tr>\n<td>setSignatureList</td>\n<td>value: array</td>\n<td>-</td>\n<td>设置签名位置列表</td>\n</tr>\n<tr>\n<td>getPdfSignatureList</td>\n<td>-</td>\n<td>array</td>\n<td>获取 PDF 签名信息列表</td>\n</tr>\n<tr>\n<td>sign</td>\n<td>-</td>\n<td>Promise<File></td>\n<td>生成签名后的 PDF 文件</td>\n</tr>\n<tr>\n<td>addSignLocation</td>\n<td>-</td>\n<td>-</td>\n<td>添加一个新的签名位置</td>\n</tr>\n</tbody>\n</table>\n<h3>PDFViewer</h3>\n<p>PDF 文档查看器组件,提供 PDF 页面浏览功能。</p>\n<table>\n<thead>\n<tr>\n<th>属性</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>-</td>\n<td>PDF 文件的 URL 地址</td>\n</tr>\n<tr>\n<td>className</td>\n<td>string</td>\n<td>-</td>\n<td>自定义 CSS 类名</td>\n</tr>\n<tr>\n<td>defaultPage</td>\n<td>number</td>\n<td>1</td>\n<td>默认显示的页码</td>\n</tr>\n<tr>\n<td>maxWidth</td>\n<td>number</td>\n<td>1200</td>\n<td>最大显示宽度</td>\n</tr>\n<tr>\n<td>pdfjsUrl</td>\n<td>string</td>\n<td>-</td>\n<td>自定义 pdf.js CDN 地址</td>\n</tr>\n<tr>\n<td>apis</td>\n<td>object</td>\n<td>-</td>\n<td>API 配置对象</td>\n</tr>\n<tr>\n<td>isFlat</td>\n<td>boolean</td>\n<td>-</td>\n<td>是否平铺显示所有页面</td>\n</tr>\n</tbody>\n</table>\n<h4>children 渲染属性</h4>\n<p>当 children 为函数时,会传入以下参数:</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>类型</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>size</td>\n<td>object</td>\n<td>当前页面的尺寸信息</td>\n</tr>\n<tr>\n<td>currentPage</td>\n<td>number</td>\n<td>当前页码</td>\n</tr>\n<tr>\n<td>pageSize</td>\n<td>number</td>\n<td>总页数</td>\n</tr>\n</tbody>\n</table>\n<h3>LocationLayer</h3>\n<p>签名定位层组件,用于在 PDF 上定位和调整签名区域。</p>\n<table>\n<thead>\n<tr>\n<th>属性</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>stageWidth</td>\n<td>number</td>\n<td>-</td>\n<td>画布宽度(必需)</td>\n</tr>\n<tr>\n<td>stageHeight</td>\n<td>number</td>\n<td>-</td>\n<td>画布高度(必需)</td>\n</tr>\n<tr>\n<td>width</td>\n<td>number</td>\n<td>200</td>\n<td>签名区域宽度</td>\n</tr>\n<tr>\n<td>height</td>\n<td>number</td>\n<td>80</td>\n<td>签名区域高度</td>\n</tr>\n<tr>\n<td>padding</td>\n<td>number</td>\n<td>8</td>\n<td>变换器内边距</td>\n</tr>\n<tr>\n<td>placeholder</td>\n<td>string</td>\n<td>-</td>\n<td>占位文本</td>\n</tr>\n<tr>\n<td>signature</td>\n<td>string</td>\n<td>-</td>\n<td>签名图片 URL</td>\n</tr>\n<tr>\n<td>value</td>\n<td>object</td>\n<td>-</td>\n<td>受控的位置值</td>\n</tr>\n<tr>\n<td>onChange</td>\n<td>function</td>\n<td>-</td>\n<td>位置变化回调</td>\n</tr>\n</tbody>\n</table>\n<h3>LocationGroup</h3>\n<p>签名位置组组件,用于管理多个签名位置。</p>\n<table>\n<thead>\n<tr>\n<th>属性</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>stageWidth</td>\n<td>number</td>\n<td>-</td>\n<td>画布宽度(必需)</td>\n</tr>\n<tr>\n<td>stageHeight</td>\n<td>number</td>\n<td>-</td>\n<td>画布高度(必需)</td>\n</tr>\n<tr>\n<td>isEdit</td>\n<td>boolean</td>\n<td>true</td>\n<td>是否处于编辑模式</td>\n</tr>\n<tr>\n<td>currentPage</td>\n<td>number</td>\n<td>-</td>\n<td>当前页码</td>\n</tr>\n<tr>\n<td>value</td>\n<td>array</td>\n<td>-</td>\n<td>受控的位置值数组</td>\n</tr>\n<tr>\n<td>onChange</td>\n<td>function</td>\n<td>-</td>\n<td>位置列表变化回调</td>\n</tr>\n<tr>\n<td>onClick</td>\n<td>function</td>\n<td>-</td>\n<td>点击签名区域时的回调</td>\n</tr>\n</tbody>\n</table>\n<h3>useSignature</h3>\n<p>签名画板 Hook,提供手写签名功能。</p>\n<h4>返回的函数参数</h4>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>filename</td>\n<td>string</td>\n<td>'signature.png'</td>\n<td>签名文件名</td>\n</tr>\n<tr>\n<td>width</td>\n<td>number</td>\n<td>200</td>\n<td>签名画板宽度</td>\n</tr>\n<tr>\n<td>height</td>\n<td>number</td>\n<td>80</td>\n<td>签名画板高度</td>\n</tr>\n<tr>\n<td>mask</td>\n<td>ReactNode</td>\n<td>-</td>\n<td>签名画板叠加内容</td>\n</tr>\n<tr>\n<td>onSuccess</td>\n<td>function</td>\n<td>-</td>\n<td>签名完成回调</td>\n</tr>\n<tr>\n<td>modalProps</td>\n<td>object</td>\n<td>-</td>\n<td>Modal 组件属性</td>\n</tr>\n</tbody>\n</table>\n<h3>signPdfFile</h3>\n<p>签名文件生成工具函数,支持单个签名。</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>类型</th>\n<th>默认值</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pdfSignature</td>\n<td>object</td>\n<td>-</td>\n<td>PDF 签名配置对象</td>\n</tr>\n</tbody>\n</table>`,\n example: {\n isFull: false,\n className: `react_pdf_sign_e88dd`,\n style: ``,\n list: [{\n title: `完整签名流程`,\n description: `演示PDF上传、手写签名创建和签名PDF生成的完整工作流程`,\n code: `const { default: ReactPdfSign, useSignature } = _ReactPdfSign;\nconst { useState, useRef } = React;\nconst { Flex, Button } = antd;\n\nconst BaseExample = () => {\n const [pdfFile, setPdfFile] = useState(null);\n const [sign, setSign] = useState(null);\n const ref = useRef(null);\n const signatureModal = useSignature();\n return (\n <Flex vertical gap={12}>\n <Flex gap={8}>\n <Button>\n <input\n type=\"file\"\n accept=\"application/pdf\"\n onChange={e => {\n const file = e.target.files[0];\n setPdfFile(URL.createObjectURL(file));\n }}\n />\n </Button>\n {pdfFile && (\n <Button\n onClick={() => {\n const { size } = ref.current.getLocation();\n signatureModal({\n mask: (\n <Flex justify=\"flex-end\" align=\"flex-end\" style={{ height: '100%', width: '100%', padding: '10px', boxSizing: 'border-box' }}>\n 签字日期: {new Date().toLocaleDateString()}\n </Flex>\n ),\n width: size.width,\n height: size.height,\n onSuccess: file => {\n setSign(URL.createObjectURL(file));\n }\n });\n }}>\n 添加签名\n </Button>\n )}\n {pdfFile && sign && (\n <Button\n onClick={async () => {\n const blob = await ref.current.sign();\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n link.href = url;\n link.download = 'signed-document.pdf';\n link.click();\n URL.revokeObjectURL(url);\n }}>\n 生成签名PDF\n </Button>\n )}\n </Flex>\n {pdfFile ? <ReactPdfSign url={pdfFile} signature={sign} ref={ref} /> : null}\n </Flex>\n );\n};\n\nrender(<BaseExample />);\n\n`,\n scope: [{\n name: \"_ReactPdfSign\",\n packageName: \"@kne/current-lib_react-pdf-sign\",\n importStatement: \"import * as _ReactPdfSign from \\\"@kne/react-pdf-sign\\\"\",\n component: component_1\n},{\n name: \"antd\",\n packageName: \"antd\",\n component: component_2\n}]\n},{\n title: `多位置PDF签名`,\n description: `演示在同一PDF文档中添加多个签名位置的完整流程:1. 上传PDF文档;2. 在编辑模式下点击'添加签名位置'按钮为不同页面添加签名区域;3. 切换至非编辑模式进行签名;4. 完成所有签名后点击'生成签名PDF'导出已签名的文档`,\n code: `const { PDFSignMulti, useSignature } = _ReactPdfSign;\nconst { useState, useRef } = React;\nconst { Flex, Button, Switch, App } = antd;\n\nconst BaseExample = () => {\n const [pdfFile, setPdfFile] = useState(null);\n const [isEdit, setIsEdit] = useState(true);\n const [isFat, setIsFat] = useState(false);\n const ref = useRef(null);\n const [signatureList, setSignatureList] = useState([]);\n const signatureModal = useSignature();\n const { message } = App.useApp();\n return (\n <Flex vertical gap={12}>\n <Flex gap={8} align=\"center\">\n <Button>\n <input\n type=\"file\"\n accept=\"application/pdf\"\n onChange={e => {\n const file = e.target.files[0];\n setPdfFile(URL.createObjectURL(file));\n }}\n />\n </Button>\n </Flex>\n <Flex gap={8} align=\"center\" justify=\"space-between\">\n <Flex gap={8} align=\"center\">\n {pdfFile && (\n <Flex gap={8}>\n <div>编辑模式:</div>\n <Switch value={isEdit} onChange={setIsEdit} />\n </Flex>\n )}\n {pdfFile && !isEdit && (\n <Flex gap={8}>\n <div>页面是否平铺:</div>\n <Switch value={isFat} onChange={setIsFat} />\n </Flex>\n )}\n {pdfFile && isEdit && (\n <Button\n onClick={() => {\n ref.current.addSignLocation();\n }}>\n 添加签名位置\n </Button>\n )}\n </Flex>\n <Flex gap={8} align=\"center\">\n {pdfFile && !isEdit && (\n <Flex>\n <div>已签名/签名区:</div>\n <div>\n {signatureList.filter(item => item.signature).length}/{signatureList.length}\n </div>\n </Flex>\n )}\n {pdfFile && !isEdit && (\n <Button\n onClick={async () => {\n try {\n const blob = await ref.current.sign();\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n link.href = url;\n link.download = 'signed-document.pdf';\n link.click();\n URL.revokeObjectURL(url);\n } catch (e) {\n message.error(e.message);\n }\n }}>\n 生成签名PDF\n </Button>\n )}\n </Flex>\n </Flex>\n {pdfFile ? (\n <PDFSignMulti\n url={pdfFile}\n ref={ref}\n isEdit={isEdit}\n isFlat={!isEdit && isFat}\n onSign={({ size, callback }) => {\n signatureModal({\n mask: (\n <Flex justify=\"flex-end\" align=\"flex-end\" style={{ height: '100%', width: '100%', padding: '10px', boxSizing: 'border-box' }}>\n 签字日期: {new Date().toLocaleDateString()}\n </Flex>\n ),\n width: size.width,\n height: size.height,\n onSuccess: file => {\n callback(URL.createObjectURL(file));\n }\n });\n }}\n onChange={setSignatureList}\n />\n ) : null}\n </Flex>\n );\n};\n\nrender(<BaseExample />);\n\n`,\n scope: [{\n name: \"_ReactPdfSign\",\n packageName: \"@kne/current-lib_react-pdf-sign\",\n importStatement: \"import * as _ReactPdfSign from \\\"@kne/react-pdf-sign\\\"\",\n component: component_1\n},{\n name: \"antd\",\n packageName: \"antd\",\n component: component_2\n}]\n},{\n title: `签名定位层`,\n description: `展示独立的签名定位组件,支持拖拽和缩放调整签名位置`,\n code: `const { LocationLayer, LocationGroup } = _ReactPdfSign;\nconst { Flex, Button, Switch, App } = antd;\nconst { useState } = React;\n\nconst defaultList = [\n {\n size: {\n width: 200,\n height: 80,\n x: 325,\n y: 78\n },\n scaleX: 1,\n scaleY: 1,\n x: 325,\n y: 78\n },\n {\n size: {\n width: 200,\n height: 80,\n x: 44,\n y: 78\n },\n scaleX: 1,\n scaleY: 1,\n x: 44,\n y: 78\n },\n {\n size: {\n width: 200,\n height: 80,\n x: 126,\n y: 206\n },\n scaleX: 1,\n scaleY: 1,\n x: 126,\n y: 206\n },\n {\n size: {\n width: 200,\n height: 195,\n x: 129,\n y: 308\n },\n scaleX: 1,\n scaleY: 2.44,\n x: 129,\n y: 308\n },\n {\n size: {\n width: 135,\n height: 217,\n x: 355,\n y: 182\n },\n scaleX: 0.67,\n scaleY: 2.71,\n x: 355,\n y: 182\n }\n];\n\nconst BaseExample = () => {\n const [value, setValue] = useState(defaultList);\n const [isEdit, setIsEdit] = useState(true);\n const { modal } = App.useApp();\n return (\n <Flex vertical gap={10}>\n <LocationLayer stageWidth={600} stageHeight={400} />\n <Flex vertical gap={4}>\n <Flex gap={8} align=\"center\">\n <Button\n onClick={() => {\n setValue(value => {\n return [...value, {}];\n });\n }}>\n 添加\n </Button>\n <Flex gap={4}>\n <div>编辑模式:</div>\n <Switch value={isEdit} onChange={setIsEdit} />\n </Flex>\n </Flex>\n <LocationGroup\n stageWidth={600}\n stageHeight={600}\n value={value}\n onChange={setValue}\n isEdit={isEdit}\n placeholder={isEdit ? '签名区域' : '点击获取点击区域'}\n onClick={output => {\n modal.info({\n title: '非编辑模式获取签名点击区域',\n content: (\n <div style={{ maxHeight: 400, overflow: 'auto' }}>\n <pre style={{ 'white-space': 'break-spaces' }}>{JSON.stringify(output, null, 2)}</pre>\n </div>\n )\n });\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nrender(<BaseExample />);\n\n`,\n scope: [{\n name: \"_ReactPdfSign\",\n packageName: \"@kne/current-lib_react-pdf-sign\",\n importStatement: \"import * as _ReactPdfSign from \\\"@kne/react-pdf-sign\\\"\",\n component: component_1\n},{\n name: \"antd\",\n packageName: \"antd\",\n component: component_2\n}]\n},{\n title: `PDF查看器`,\n description: `基础的PDF文档查看器,支持页面切换和缩放显示`,\n code: `const { PDFViewer } = _ReactPdfSign;\nconst { default: examplePdf } = _examplePdf;\n\nconst BaseExample = () => {\n return (\n <div>\n <PDFViewer url={examplePdf} />\n </div>\n );\n};\n\nrender(<BaseExample />);\n\n`,\n scope: [{\n name: \"_ReactPdfSign\",\n packageName: \"@kne/current-lib_react-pdf-sign\",\n importStatement: \"import * as _ReactPdfSign from \\\"@kne/react-pdf-sign\\\"\",\n component: component_1\n},{\n name: \"_examplePdf\",\n packageName: \"./doc/example.pdf\",\n component: component_6\n}]\n},{\n title: `PDF签名组件`,\n description: `演示PDF签名组件的API使用,包括位置获取、设置和签名文件生成`,\n code: `const { PDFSign } = _ReactPdfSign;\nconst { default: examplePdf } = _examplePdf;\nconst { default: signature } = _signature;\nconst { useRef } = React;\nconst { Flex, Button, App } = antd;\n\nconst BaseExample = () => {\n const ref = useRef();\n const ref2 = useRef();\n const { modal } = App.useApp();\n return (\n <Flex vertical gap={24}>\n <Flex vertical gap={8}>\n <Flex gap={8}>\n <Button\n onClick={() => {\n const location = ref.current.getLocation();\n modal.info({\n title: '签名位置',\n content: <pre>{JSON.stringify(location, null, 2)}</pre>\n });\n }}>\n 获取签名位置\n </Button>\n <Button\n onClick={() => {\n ref.current.setLocation({\n size: {\n width: 390,\n height: 156,\n x: 163,\n y: 8\n },\n scaleX: 1.95,\n scaleY: 1.95,\n x: 163,\n y: 8\n });\n }}>\n 设置签名位置\n </Button>\n <Button onClick={()=>{\n ref.current.setLocation({});\n }}>恢复到默认位置</Button>\n <Button\n onClick={() => {\n const pdfSignature = ref.current.getPdfSignature();\n modal.info({\n title: 'PDF签名信息',\n content: <pre style={{ 'white-space': 'break-spaces' }}>{JSON.stringify(pdfSignature, null, 2)}</pre>\n });\n }}>\n 获取PDF签名信息\n </Button>\n </Flex>\n <PDFSign url={examplePdf} ref={ref} />\n </Flex>\n <Flex vertical gap={8}>\n <div>\n <Button\n onClick={async () => {\n const blob = await ref2.current.sign();\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n link.href = url;\n link.download = 'signed-document.pdf';\n link.click();\n URL.revokeObjectURL(url);\n }}>\n 生成签名文件\n </Button>\n </div>\n <PDFSign url={examplePdf} signature={signature} ref={ref2} />\n </Flex>\n </Flex>\n );\n};\n\nrender(<BaseExample />);\n\n`,\n scope: [{\n name: \"_ReactPdfSign\",\n packageName: \"@kne/current-lib_react-pdf-sign\",\n importStatement: \"import * as _ReactPdfSign from \\\"@kne/react-pdf-sign\\\"\",\n component: component_1\n},{\n name: \"_examplePdf\",\n packageName: \"./doc/example.pdf\",\n component: component_6\n},{\n name: \"_signature\",\n packageName: \"./doc/signature.png\",\n component: component_8\n},{\n name: \"antd\",\n packageName: \"antd\",\n component: component_2\n}]\n},{\n title: `手写签名画板`,\n description: `展示useSignature Hook的使用,打开手写签名模态框`,\n code: `const { useSignature } = _ReactPdfSign;\nconst { Button, Flex } = antd;\n\nconst { useState } = React;\n\nconst BaseExample = () => {\n const [result, setResult] = useState(null);\n const modal = useSignature();\n return (\n <Flex vertical gap={12}>\n {result && <img src={result} alt=\"result\" style={{ width: '300px' }} />}\n <Flex gap={8}>\n <Button\n onClick={() => {\n modal({\n onSuccess: file => {\n console.log(file);\n setResult(URL.createObjectURL(file));\n }\n });\n }}>\n 签名\n </Button>\n <Button\n onClick={() => {\n modal({\n mask: (\n <Flex justify=\"flex-end\" align=\"flex-end\" style={{ height: '100%', width: '100%', padding: '10px', boxSizing: 'border-box' }}>\n 签字日期: {new Date().toLocaleDateString()}\n </Flex>\n ),\n onSuccess: file => {\n console.log(file);\n setResult(URL.createObjectURL(file));\n }\n });\n }}>\n 带有日期模版的签名\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nrender(<BaseExample />);\n\n`,\n scope: [{\n name: \"_ReactPdfSign\",\n packageName: \"@kne/current-lib_react-pdf-sign\",\n importStatement: \"import * as _ReactPdfSign from \\\"@kne/react-pdf-sign\\\"\",\n component: component_1\n},{\n name: \"antd\",\n packageName: \"antd\",\n component: component_2\n}]\n}]\n }\n};\nexport default readmeConfig;\n"],"names":["name","summary","description","packageName","api","example","isFull","className","style","list","title","code","scope","importStatement","component"],"ignoreList":[],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_kne_components_react_pdf_sign=self.webpackChunk_kne_components_react_pdf_sign||[]).push([[72],{11448(e,t,n){var o=n(89379),s=(n(94922),n(87558)),r=n(55199),a=n(94312),c=n(13050),l=n(89261);window.PUBLIC_URL="/react-pdf-sign";const p={url:"https://uc.fatalent.cn",tpl:"{{url}}/packages/@kne-components/{{remote}}/{{version}}/build"};var m=n(65457),d=n(53986),u=n(94679),i=n(66964),f=(n(91296),n(46446));const g=["globalPreset"],k=i.Ay.ExampleRoutes,h=e=>{let{globalPreset:t}=e,n=(0,d.A)(e,g);return(0,l.jsx)(u.HashRouter,{children:(0,l.jsx)(k,(0,o.A)((0,o.A)({},n),{},{paths:[{key:"components",path:"/",title:"\u9996\u9875"}],preset:t,themeToken:t.themeToken,readme:f.default,pageProps:{menu:null}}))})},A=m.createRoot(document.getElementById("root"));(async e=>{const t=await(async()=>{const e=(0,a.A)({errorHandler:e=>r.message.error(e)}),t=(0,o.A)((0,o.A)({},p),{},{remote:"components-core",defaultVersion:"0.4.43"});return(0,c.preset)({remotes:{default:t,"components-core":t,"components-iconfont":(0,o.A)((0,o.A)({},p),{},{remote:"components-iconfont",defaultVersion:"0.2.1"}),"react-pdf-sign":(0,o.A)((0,o.A)({},p),{},{remote:"react-pdf-sign",defaultVersion:"1.1.
|
|
2
|
-
//# sourceMappingURL=72.
|
|
1
|
+
"use strict";(self.webpackChunk_kne_components_react_pdf_sign=self.webpackChunk_kne_components_react_pdf_sign||[]).push([[72],{11448(e,t,n){var o=n(89379),s=(n(94922),n(87558)),r=n(55199),a=n(94312),c=n(13050),l=n(89261);window.PUBLIC_URL="/react-pdf-sign";const p={url:"https://uc.fatalent.cn",tpl:"{{url}}/packages/@kne-components/{{remote}}/{{version}}/build"};var m=n(65457),d=n(53986),u=n(94679),i=n(66964),f=(n(91296),n(46446));const g=["globalPreset"],k=i.Ay.ExampleRoutes,h=e=>{let{globalPreset:t}=e,n=(0,d.A)(e,g);return(0,l.jsx)(u.HashRouter,{children:(0,l.jsx)(k,(0,o.A)((0,o.A)({},n),{},{paths:[{key:"components",path:"/",title:"\u9996\u9875"}],preset:t,themeToken:t.themeToken,readme:f.default,pageProps:{menu:null}}))})},A=m.createRoot(document.getElementById("root"));(async e=>{const t=await(async()=>{const e=(0,a.A)({errorHandler:e=>r.message.error(e)}),t=(0,o.A)((0,o.A)({},p),{},{remote:"components-core",defaultVersion:"0.4.43"});return(0,c.preset)({remotes:{default:t,"components-core":t,"components-iconfont":(0,o.A)((0,o.A)({},p),{},{remote:"components-iconfont",defaultVersion:"0.2.1"}),"react-pdf-sign":(0,o.A)((0,o.A)({},p),{},{remote:"react-pdf-sign",defaultVersion:"1.1.2"})}}),(0,s.preset)({ajax:e,loading:(0,l.jsx)(r.Spin,{delay:500,style:{position:"absolute",left:"50%",padding:"10px",transform:"translateX(-50%)"}}),error:null,empty:(0,l.jsx)(r.Empty,{}),transformResponse:e=>{const{data:t}=e;return e.data={code:0===t.code?200:t.code,msg:t.msg,results:t.data},e}}),{ajax:e,enums:{},apis:{},themeToken:{colorPrimary:"#4183F0"}}})();A.render((0,l.jsx)(e,{themeToken:t.themeToken,globalPreset:t}))})(h)}}]);
|
|
2
|
+
//# sourceMappingURL=72.ca463e6a.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/72.
|
|
1
|
+
{"version":3,"file":"static/js/72.ca463e6a.chunk.js","mappings":"6NAMAA,OAAOC,WAAaC,kBAOpB,MAAMC,EAAW,CACfC,IAAK,yBAA0BC,IAAK,iE,+FCThCC,EAAgBC,EAAAA,GAAYD,cAuBlC,EArBYE,IAAiC,IAAhC,aAAEC,GAAwBD,EAAPE,GAAKC,EAAAA,EAAAA,GAAAH,EAAAI,GACnC,OACIC,EAAAA,EAAAA,KAACC,EAAAA,WAAU,CAAAC,UACTF,EAAAA,EAAAA,KAACP,GAAaU,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACNN,GAAK,IACTO,MAAO,CACL,CACEC,IAAK,aACLC,KAAM,IACNC,MAAO,iBAGXC,OAAQZ,EACRa,WAAYb,EAAaa,WACzBC,OAAQA,EAAAA,QACRC,UAAW,CAAEC,KAAM,YCjBzBC,EAAOC,EAAAA,WAAoBC,SAASC,eAAe,SAEtCC,WACjB,MAAMrB,OFSkBqB,WACxB,MAAMC,GAAOC,EAAAA,EAAAA,GAAW,CACtBC,aAAcC,GAASC,EAAAA,QAAQD,MAAMA,KAGjCE,GAAoBpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACrBb,GAAQ,IAAEkC,OAAQ,kBAAmBC,eAAgB,WAgC1D,OA7BAC,EAAAA,EAAAA,QAAmB,CACjBC,QAAS,CACPC,QAASL,EAAsB,kBAAmBA,EAAsB,uBAAqBpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxFb,GAAQ,IAAEkC,OAAQ,sBAAuBC,eAAgB,UAC3D,kBAEFtB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACIb,GAAQ,IAAEkC,OAAQ,iBAAkBC,eAAgBpC,cAM7DwC,EAAAA,EAAAA,QAAY,CACVX,OAAMY,SAAS9B,EAAAA,EAAAA,KAAC+B,EAAAA,KAAI,CAACC,MAAO,IACPC,MAAO,CACLC,SAAU,WACVC,KAAM,MACNC,QAAS,OACTC,UAAW,sBACNhB,MAAO,KAAMiB,OAAOtC,EAAAA,EAAAA,KAACuC,EAAAA,MAAK,IAAKC,kBAAoBC,IAC7E,MAAM,KAAEC,GAASD,EAIjB,OAHAA,EAASC,KAAO,CACdC,KAAoB,IAAdD,EAAKC,KAAa,IAAMD,EAAKC,KAAMC,IAAKF,EAAKE,IAAKC,QAASH,EAAKA,MAEjED,KAIJ,CACLvB,OAAM4B,MAAO,CAAC,EAAGC,KAAM,CAAC,EAAGtC,WAAY,CACrCuC,aAAc,aEjDSC,GACpBpC,EAAKqC,QAAOlD,EAAAA,EAAAA,KAACmD,EAAG,CAAC1C,WAAYb,EAAaa,WAAYb,aAAcA,MAG7EwD,CAAWD,E","sources":["preset.js","App.js","bootstrap.js"],"sourcesContent":["import React from 'react';\nimport { preset as fetchPreset } from '@kne/react-fetch';\nimport { Spin, Empty, message } from 'antd';\nimport createAjax from '@kne/axios-fetch';\nimport { preset as remoteLoaderPreset } from '@kne/remote-loader';\n\nwindow.PUBLIC_URL = process.env.PUBLIC_URL;\n\n// url: 'https://registry.npmmirror.com',\n// tpl: '{{url}}/@kne-components%2f{{remote}}/{{version}}/files/build',\n\n// url: 'https://cdn.jsdelivr.net', tpl: '{{url}}/npm/@kne-components/{{remote}}@{{version}}/build'\n\nconst registry = {\n url: 'https://uc.fatalent.cn', tpl: '{{url}}/packages/@kne-components/{{remote}}/{{version}}/build'\n};\n\nexport const globalInit = async () => {\n const ajax = createAjax({\n errorHandler: error => message.error(error)\n });\n\n const componentsCoreRemote = {\n ...registry, remote: 'components-core', defaultVersion: '0.4.43'\n };\n\n remoteLoaderPreset({\n remotes: {\n default: componentsCoreRemote, 'components-core': componentsCoreRemote, 'components-iconfont': {\n ...registry, remote: 'components-iconfont', defaultVersion: '0.2.1'\n }, 'react-pdf-sign': process.env.NODE_ENV === 'development' ? {\n remote: 'react-pdf-sign', url: '/', tpl: '{{url}}'\n } : {\n ...registry, remote: 'react-pdf-sign', defaultVersion: process.env.DEFAULT_VERSION\n }\n }\n });\n\n\n fetchPreset({\n ajax, loading: <Spin delay={500}\n style={{\n position: 'absolute',\n left: '50%',\n padding: '10px',\n transform: 'translateX(-50%)'\n }} />, error: null, empty: <Empty />, transformResponse: (response) => {\n const { data } = response;\n response.data = {\n code: data.code === 0 ? 200 : data.code, msg: data.msg, results: data.data\n };\n return response;\n }\n });\n\n return {\n ajax, enums: {}, apis: {}, themeToken: {\n colorPrimary: '#4183F0'\n }\n };\n};\n","import { HashRouter } from \"react-router-dom\";\nimport createEntry from \"@kne/modules-dev/dist/create-entry.modern\";\nimport \"@kne/modules-dev/dist/create-entry.css\";\nimport readme from \"readme\";\n\nconst ExampleRoutes = createEntry.ExampleRoutes;\n\nconst App = ({ globalPreset, ...props }) => {\n return (\n <HashRouter>\n <ExampleRoutes\n {...props}\n paths={[\n {\n key: \"components\",\n path: \"/\",\n title: \"首页\",\n },\n ]}\n preset={globalPreset}\n themeToken={globalPreset.themeToken}\n readme={readme}\n pageProps={{ menu: null }}\n />\n </HashRouter>\n );\n};\n\nexport default App;\n","import { globalInit } from './preset';\nimport React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\n\nconst renderRoot = async (App) => {\n const globalPreset = await globalInit();\n return root.render(<App themeToken={globalPreset.themeToken} globalPreset={globalPreset} />);\n};\n\nrenderRoot(App);\n"],"names":["window","PUBLIC_URL","process","registry","url","tpl","ExampleRoutes","createEntry","_ref","globalPreset","props","_objectWithoutProperties","_excluded","_jsx","HashRouter","children","_objectSpread","paths","key","path","title","preset","themeToken","readme","pageProps","menu","root","ReactDOM","document","getElementById","async","ajax","createAjax","errorHandler","error","message","componentsCoreRemote","remote","defaultVersion","remoteLoaderPreset","remotes","default","fetchPreset","loading","Spin","delay","style","position","left","padding","transform","empty","Empty","transformResponse","response","data","code","msg","results","enums","apis","colorPrimary","globalInit","render","App","renderRoot"],"ignoreList":[],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_kne_components_react_pdf_sign=self.webpackChunk_kne_components_react_pdf_sign||[]).push([[784],{8151(e,n,s){s.r(n),s.d(n,{default:()=>a,manifest:()=>c});const a={ReactPdfSign:s(7531).A},c={name:"react-pdf-sign",version:"1.1.
|
|
2
|
-
//# sourceMappingURL=784.
|
|
1
|
+
"use strict";(self.webpackChunk_kne_components_react_pdf_sign=self.webpackChunk_kne_components_react_pdf_sign||[]).push([[784],{8151(e,n,s){s.r(n),s.d(n,{default:()=>a,manifest:()=>c});const a={ReactPdfSign:s(7531).A},c={name:"react-pdf-sign",version:"1.1.2","open-version":!0,"public-url":"/react-pdf-sign",modules:[{name:"react-pdf-sign",baseDir:"/home/runner/work/react-pdf-sign/react-pdf-sign",description:"\u8fd9\u662f\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 React PDF \u7b7e\u540d\u7ec4\u4ef6\u5e93\uff0c\u4e13\u4e3a\u9700\u8981\u5728 PDF \u6587\u6863\u4e0a\u6dfb\u52a0\u7535\u5b50\u7b7e\u540d\u7684\u5e94\u7528\u573a\u666f\u800c\u8bbe\u8ba1\u3002\u8be5\u7ec4\u4ef6\u5e93\u63d0\u4f9b\u4e86\u7075\u6d3b\u7684\u7b7e\u540d\u89e3\u51b3\u65b9\u6848\uff0c\u652f\u6301\u5373\u65f6\u7b7e\u540d\u6dfb\u52a0\u548c\u9884\u5b9a\u4e49\u7b7e\u540d\u533a\u57df\u4e24\u79cd\u6a21\u5f0f",packageName:"@kne/react-pdf-sign"}]}}}]);
|
|
2
|
+
//# sourceMappingURL=784.bfa82782.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/784.
|
|
1
|
+
{"version":3,"file":"static/js/784.bfa82782.chunk.js","mappings":"yLAAgE,SAAgBA,a,QAAYA,GAC/EC,EAAW,CAAC,KAAO,iBAAiB,QAAU,QAAQ,gBAAe,EAAK,aAAa,kBAAkB,QAAU,CAAC,CAAC,KAAO,iBAAiB,QAAU,kDAAkD,YAAc,qdAA8F,YAAc,wB","sources":["../node_modules/readme/modules.js"],"sourcesContent":["import ReactPdfSign from '@components/react-pdf-sign/README.md';export default {ReactPdfSign};\nexport const manifest = {\"name\":\"react-pdf-sign\",\"version\":\"1.1.2\",\"open-version\":true,\"public-url\":\"/react-pdf-sign\",\"modules\":[{\"name\":\"react-pdf-sign\",\"baseDir\":\"/home/runner/work/react-pdf-sign/react-pdf-sign\",\"description\":\"这是一个功能强大的 React PDF 签名组件库,专为需要在 PDF 文档上添加电子签名的应用场景而设计。该组件库提供了灵活的签名解决方案,支持即时签名添加和预定义签名区域两种模式\",\"packageName\":\"@kne/react-pdf-sign\"}]};"],"names":["ReactPdfSign","manifest"],"ignoreList":[],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(self.webpackChunk_kne_components_react_pdf_sign=self.webpackChunk_kne_components_react_pdf_sign||[]).push([[8],{59169(e){function t(e){return Promise.resolve().then(()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=59169,e.exports=t},71830(e,t,r){"use strict";r.r(t),r.d(t,{LocationGroup:()=>I,LocationLayer:()=>L,PDFSign:()=>R,PDFSignMulti:()=>Tn,PDFViewer:()=>C,default:()=>R,signPdfFile:()=>T,useSignature:()=>Bn});var n=r(51938),a=r(17402),i=r(2153),o=r(94922),c=r(74946),s=r(50805),u=r(54159),l=r.n(u),d=r(55199),f=r(57622),h=r(59790),g=(r(87821),r(70011),r(89261)),p=r(56075),v=r(48863),y=r(78678),b=r(81537),j=r.n(b),w=r(20274),m=r(90999),_=r(51766),x=r(80359);function O(){return O=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},O.apply(null,arguments)}function S(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}var A={"pdf-view-container":"_RgZXN","pdf-view":"_PAju1","pdf-view-children":"_N11Pj","pdf-view-page-control-left":"_IbVpf","pdf-view-page-control-right":"_IIgqj","pdf-view-page-control-current":"_JW3CT","signature-container":"_6TDb-","signature-canvas":"_2CGF4","signature-modal":"_kWe3k","signature-mask":"_FSvLv"};const P=["numPages"],C=e=>{let{className:t,defaultPage:r,apis:u,pdfjsUrl:p,url:v,maxWidth:y=1200,isFlat:b,children:j}=e;var w;const{apis:m}=(0,c.usePreset)(),_=Object.assign({},m,u),x=p||(null==(w=_.file)?void 0:w.pdfjsUrl)||"https://cdn.jsdelivr.net/npm/pdfjs-dist@5.4.296";n.EA.workerSrc=x+"/build/pdf.worker.min.mjs";const C=(0,o.useMemo)(()=>({file:v,options:{standardFontDataUrl:x+"/standard_fonts/",cMapUrl:x+"/cmaps/",cMapPacked:!0}}),[x,v]),[k,M]=(0,o.useState)(y),[E,z]=(0,o.useState)(null),[W,F]=(0,o.useState)(0),[L,I]=(0,o.useState)(r||1),N=(0,s.A)(()=>{N.current&&N.current.clientWidth&&M(Math.min(N.current.clientWidth,y))}),T=e=>{let{currentPage:t}=e;return(0,g.jsxs)("div",{className:l()(A["pdf-view-container"],"pdf-view-container"),children:[(0,g.jsx)("div",{className:l()(A["pdf-view"],"pdf-view"),children:(0,g.jsx)(i.A,{width:k,pageNumber:t,renderTextLayer:!0,onLoadSuccess:e=>{z({width:Math.round(e.width),height:Math.round(e.height),originalWidth:e.originalWidth,originalHeight:e.originalHeight})}})}),E&&j&&(0,g.jsx)("div",{className:l()(A["pdf-view-children"],"pdf-view-children"),children:"function"===typeof j?j({size:E,currentPage:t,pageSize:W}):j})]})};return(0,g.jsx)("div",{ref:N,className:l()(t,A["pdf-view-container"],"pdf-view-container"),style:{maxWidth:y},children:(0,g.jsxs)(a.A,O({},Object.assign({},C),{loading:(0,g.jsx)(d.Flex,{justify:"center",children:(0,g.jsx)(d.Spin,{})}),onLoadSuccess:e=>{let{numPages:t}=e;S(e,P),F(t),Number.isInteger(r)||I(t)},children:[(0,g.jsx)(d.Flex,{vertical:!0,gap:8,children:b?Array.from({length:W}).map((e,t)=>(0,g.jsx)(o.Fragment,{children:T({currentPage:t+1})},t)):T({currentPage:L})}),b?null:(0,g.jsxs)("div",{className:l()(A["pdf-view-page-control"],"pdf-view-page-control"),children:[L>1&&(0,g.jsx)(f.A,{className:l()(A["pdf-view-page-control-left"],"pdf-view-page-control-left"),onClick:()=>{I(L-1)}}),L<W&&(0,g.jsx)(h.A,{className:l()(A["pdf-view-page-control-right"],"pdf-view-page-control-right"),onClick:()=>{I(L+1)}}),W?(0,g.jsxs)("div",{className:l()(A["pdf-view-page-control-current"],"pdf-view-page-control-current"),children:[L,"/",W]}):null]})]}))})},k=(0,w.createWithIntlProvider)({defaultLocale:"zh-CN",messages:{"zh-CN":{locationLayerPlaceholder:"\u7b7e\u540d\u533a\u57df",loadingError:"PDF\u5c1a\u672a\u52a0\u8f7d\u6210\u529f\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",signatureDefaultTitle:"\u7b7e\u540d",signatureConfirmText:"\u786e\u8ba4",signatureCancelText:"\u53d6\u6d88",signatureCleanText:"\u6e05\u7a7a",signatureEmptyError:"\u7b7e\u540d\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a",signatureSuccess:"\u7b7e\u540d\u6210\u529f",signatureAdd:"\u8bf7\u6dfb\u52a0\u7b7e\u540d"},"en-US":{locationLayerPlaceholder:"Signature Area",loadingError:"PDF is not loaded successfully, please try again later",signatureDefaultTitle:"Signature",signatureConfirmText:"Confirm",signatureCancelText:"Cancel",signatureCleanText:"Clean",signatureEmptyError:"Signature content cannot be empty",signatureSuccess:"Signature Success",signatureAdd:"Please add signature"}},namespace:"react-pdf-sign"}),M=e=>{let{stageWidth:t,stageHeight:r,width:n,height:a}=e;return{scaleX:1,scaleY:1,x:Math.round((t-n)/2),y:Math.round((r-a)/2),size:{width:n,height:a,x:Math.round((t-n)/2),y:Math.round((r-a)/2)}}},E=["width","height","padding","stageWidth","stageHeight","placeholder","signature","active","onClose","onClick"],z=["stageWidth","stageHeight"],W=["stageWidth","stageHeight","isEdit","onClick","currentPage"],F=k(e=>{const{formatMessage:t}=(0,w.useIntl)(),{width:r=200,height:n=80,padding:a=8,stageWidth:i,stageHeight:c,placeholder:s=t({id:"locationLayerPlaceholder"}),signature:u,active:l,onClose:d,onClick:f}=e,h=S(e,E),[b,m]=(0,v.A)(h),[_,x]=(0,o.useState)(!1),[O]=j()(u),A=(0,o.useRef)(),P=(0,o.useRef)(),C=(0,o.useRef)(),k=()=>{const e=P.current.absolutePosition(),t=P.current.getClientRect();m(r=>Object.assign({},r,{size:{width:Math.round(t.width),height:Math.round(t.height),x:Math.round(e.x),y:Math.round(e.y)},scaleX:Number(A.current.attrs.scaleX.toFixed(2)),scaleY:Number(A.current.attrs.scaleY.toFixed(2)),x:Math.round(A.current.attrs.x),y:Math.round(A.current.attrs.y)}))},z=(0,y.A)(()=>{["scaleX","scaleY","x","y","size"].some(e=>!Object.assign({},b).hasOwnProperty(e))&&m(e=>Object.assign({},e,M({stageWidth:i,stageHeight:c,width:r,height:n}))),x(!0)}),W=(0,o.useMemo)(()=>{const e=document.createElement("div");e.style.color="var(--primary-color)",document.body.appendChild(e);const t=window.getComputedStyle(e).color;return document.body.removeChild(e),t},[]);return(0,o.useEffect)(()=>{z()},[]),(0,o.useEffect)(()=>{_&&C.current.nodes([A.current])},[_]),_&&b?(0,g.jsxs)(p.Wd,{children:[(0,g.jsx)(p.YJ,{x:b.x,y:b.y,draggable:!1!==l,ref:A,onDragMove:k,onDragEnd:k,scaleX:b.scaleX,scaleY:b.scaleY,onTransform:k,onTransformEnd:k,onTap:f,onClick:f,children:O?(0,g.jsx)(p._V,{width:r,height:n,image:O,cornerRadius:8,ref:P}):(0,g.jsx)(p.rw,{width:r,height:n,fill:"#f0f0f0",cornerRadius:8,ref:P})}),(0,g.jsx)(p.EY,{listening:!1,x:b.x,y:b.y,text:O?"":s,fontSize:16,fill:"#666666",fontFamily:"Arial",align:"center",verticalAlign:"middle",width:r*b.scaleX,height:n*b.scaleY}),(0,g.jsx)(p.Ge,{ref:C,visible:!1!==l,keepRatio:!0,flipEnabled:!1,rotateEnabled:!1,borderStroke:W,rotateAnchorStroke:W,anchorStroke:W,padding:a}),!0===l&&(0,g.jsxs)(p.YJ,{x:b.x+r*b.scaleX-4,y:b.y+4,onClick:()=>{d&&d()},children:[(0,g.jsx)(p.jl,{radius:6,stroke:W,strokeWidth:1,fill:"white"}),(0,g.jsx)(p.N1,{points:[-2,-2,2,2],stroke:W,strokeWidth:1,lineCap:"round"}),(0,g.jsx)(p.N1,{points:[-2,2,2,-2],stroke:W,strokeWidth:1,lineCap:"round"})]})]}):null}),L=e=>{let{stageWidth:t,stageHeight:r}=e,n=S(e,z);return(0,g.jsx)(p.BI,{width:t,height:r,children:(0,g.jsx)(F,O({},n,{stageWidth:t,stageHeight:r}))})},I=e=>{let{stageWidth:t,stageHeight:r,isEdit:n=!0,onClick:a,currentPage:i}=e,c=S(e,W);const[s,u]=(0,v.A)(Object.assign({},{defaultValue:[]},c)),[l,d]=(0,o.useState)(0);return(0,g.jsx)(p.BI,{width:t,height:r,children:s.map((e,f)=>e.page&&e.page!==i?null:(0,o.createElement)(F,O({},c,{key:f,stageWidth:t,stageHeight:r,value:e,signature:e.signature,active:n&&l===f,onClick:()=>{n?l!==f&&d(f):a&&a({value:s[f],index:f,allValue:s})},onClose:()=>{u(e=>{const t=e.slice(0);return t.splice(f,1),t})},onChange:e=>{u(t=>{const r=t.slice(0);return r[f]=e,r})}})))})},N=async e=>{let{filename:t,url:r,signatureList:n}=e;const a=await window.fetch(r),i=await a.arrayBuffer(),o=await m.PDFDocument.load(i);for(let s of n){const{x:e,y:t,page:r,signature:n,width:a,height:i}=s,c=o.getPage(r-1),u=await window.fetch(n).then(e=>e.arrayBuffer()),l=await o.embedPng(u);c.drawImage(l,{x:e,y:t,width:a,height:i})}const c=await o.save();return new window.File([c],t,{type:"application/pdf"})},T=async e=>{const{x:t,y:r,page:n,width:a,height:i,signature:o,url:c,filename:s}=e;return N({filename:s,url:c,signatureList:[{x:t,y:r,page:n,signature:o,width:a,height:i}]})},D=e=>{let{size:t,location:r}=e;const n=t.width/t.originalWidth,a=t.height/t.originalHeight,i=Math.round(r.size.x/n),o=Math.round(t.originalHeight-r.size.y/a),c=Math.round(r.size.width/n),s=Math.round(r.size.height/a);return{scaleX:n,scaleY:a,pdfX:i,pdfY:o,width:c,height:s,x:i,y:o-s}},H=["placeholder","signature","url","width","height","padding","filename","defaultLocation","onChange"],U=(0,o.forwardRef)((e,t)=>{let{size:r,currentPage:n,placeholder:a,signature:i,url:c,width:s=200,height:u=80,padding:l,filename:d="signed-document.pdf",location:f,setLocation:h,onChange:p}=e;const v=(0,o.useMemo)(()=>M({stageWidth:r.originalWidth,stageHeight:r.originalHeight,width:s,height:u}),[r,s,u]),b=(0,o.useMemo)(()=>Object.assign({},v,f),[v,f]),j=e=>h(Object.assign({},v,e)),w=(0,o.useMemo)(()=>Object.assign({},D({location:b,size:r}),{signature:i,url:c,filename:d,page:n,pageWidth:Math.round(r.originalWidth),pageHeight:Math.round(r.originalHeight)}),[b,i,c,d,r,n]),m=(0,o.useCallback)(async()=>await T(w),[w]);(0,o.useImperativeHandle)(t,()=>({getLocation:()=>f,setLocation:e=>j(e),getPdfSignature:()=>w,sign:()=>m()}));const _=(0,y.A)(p);return(0,o.useEffect)(()=>{null==_||_({pdfSignature:w,location:f})},[w,f,_]),(0,g.jsx)("div",{style:{transform:"scale(".concat(r.width/r.originalWidth,")"),transformOrigin:"0 0"},children:(0,g.jsx)(L,{stageWidth:r.originalWidth,stageHeight:r.originalHeight,width:s,height:u,padding:l,placeholder:a,signature:i,value:b,onChange:j})})}),R=k((0,o.forwardRef)((e,t)=>{let{placeholder:r,signature:n,url:a,width:i,height:c,padding:s,filename:u="signed-document.pdf",defaultLocation:l,onChange:d}=e,f=S(e,H);const[h,p]=(0,o.useState)(Object.assign({},l));return(0,g.jsx)(C,O({},f,{url:a,children:e=>{let{size:o,currentPage:l}=e;return(0,g.jsx)(U,{ref:t,size:o,currentPage:l,url:a,filename:u,location:h,setLocation:p,width:i,height:c,padding:s,placeholder:r,signature:n,onChange:d})}}))}));var B=function(e,t){for(var r=-1,n=null==e?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a};var Y=function(){this.__data__=[],this.size=0};var X=function(e,t){return e===t||e!==e&&t!==t};var $=function(e,t){for(var r=e.length;r--;)if(X(e[r][0],t))return r;return-1},V=Array.prototype.splice;var G=function(e){var t=this.__data__,r=$(t,e);return!(r<0)&&(r==t.length-1?t.pop():V.call(t,r,1),--this.size,!0)};var q=function(e){var t=this.__data__,r=$(t,e);return r<0?void 0:t[r][1]};var J=function(e){return $(this.__data__,e)>-1};var Z=function(e,t){var r=this.__data__,n=$(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};function K(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}K.prototype.clear=Y,K.prototype.delete=G,K.prototype.get=q,K.prototype.has=J,K.prototype.set=Z;var Q=K;var ee=function(){this.__data__=new Q,this.size=0};var te=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r};var re=function(e){return this.__data__.get(e)};var ne=function(e){return this.__data__.has(e)},ae="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof r.g?r.g:"undefined"!==typeof self?self:{};function ie(e){var t={exports:{}};return e(t,t.exports),t.exports}var oe="object"==typeof ae&&ae&&ae.Object===Object&&ae,ce="object"==typeof self&&self&&self.Object===Object&&self,se=oe||ce||Function("return this")(),ue=se.Symbol,le=Object.prototype,de=le.hasOwnProperty,fe=le.toString,he=ue?ue.toStringTag:void 0;var ge=function(e){var t=de.call(e,he),r=e[he];try{e[he]=void 0;var n=!0}catch(i){}var a=fe.call(e);return n&&(t?e[he]=r:delete e[he]),a},pe=Object.prototype.toString;var ve=function(e){return pe.call(e)},ye=ue?ue.toStringTag:void 0;var be=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":ye&&ye in Object(e)?ge(e):ve(e)};var je=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};var we=function(e){if(!je(e))return!1;var t=be(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},me=se["__core-js_shared__"],_e=function(){var e=/[^.]+$/.exec(me&&me.keys&&me.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();var xe=function(e){return!!_e&&_e in e},Oe=Function.prototype.toString;var Se=function(e){if(null!=e){try{return Oe.call(e)}catch(t){}try{return e+""}catch(t){}}return""},Ae=/^\[object .+?Constructor\]$/,Pe=Function.prototype,Ce=Object.prototype,ke=Pe.toString,Me=Ce.hasOwnProperty,Ee=RegExp("^"+ke.call(Me).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var ze=function(e){return!(!je(e)||xe(e))&&(we(e)?Ee:Ae).test(Se(e))};var We=function(e,t){return null==e?void 0:e[t]};var Fe=function(e,t){var r=We(e,t);return ze(r)?r:void 0},Le=Fe(se,"Map"),Ie=Fe(Object,"create");var Ne=function(){this.__data__=Ie?Ie(null):{},this.size=0};var Te=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},De=Object.prototype.hasOwnProperty;var He=function(e){var t=this.__data__;if(Ie){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return De.call(t,e)?t[e]:void 0},Ue=Object.prototype.hasOwnProperty;var Re=function(e){var t=this.__data__;return Ie?void 0!==t[e]:Ue.call(t,e)};var Be=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Ie&&void 0===t?"__lodash_hash_undefined__":t,this};function Ye(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ye.prototype.clear=Ne,Ye.prototype.delete=Te,Ye.prototype.get=He,Ye.prototype.has=Re,Ye.prototype.set=Be;var Xe=Ye;var $e=function(){this.size=0,this.__data__={hash:new Xe,map:new(Le||Q),string:new Xe}};var Ve=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var Ge=function(e,t){var r=e.__data__;return Ve(t)?r["string"==typeof t?"string":"hash"]:r.map};var qe=function(e){var t=Ge(this,e).delete(e);return this.size-=t?1:0,t};var Je=function(e){return Ge(this,e).get(e)};var Ze=function(e){return Ge(this,e).has(e)};var Ke=function(e,t){var r=Ge(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function Qe(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Qe.prototype.clear=$e,Qe.prototype.delete=qe,Qe.prototype.get=Je,Qe.prototype.has=Ze,Qe.prototype.set=Ke;var et=Qe;var tt=function(e,t){var r=this.__data__;if(r instanceof Q){var n=r.__data__;if(!Le||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new et(n)}return r.set(e,t),this.size=r.size,this};function rt(e){var t=this.__data__=new Q(e);this.size=t.size}rt.prototype.clear=ee,rt.prototype.delete=te,rt.prototype.get=re,rt.prototype.has=ne,rt.prototype.set=tt;var nt=rt;var at=function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e},it=function(){try{var e=Fe(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();var ot=function(e,t,r){"__proto__"==t&&it?it(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r},ct=Object.prototype.hasOwnProperty;var st=function(e,t,r){var n=e[t];ct.call(e,t)&&X(n,r)&&(void 0!==r||t in e)||ot(e,t,r)};var ut=function(e,t,r,n){var a=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var c=t[i],s=n?n(r[c],e[c],c,r,e):void 0;void 0===s&&(s=e[c]),a?ot(r,c,s):st(r,c,s)}return r};var lt=function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n};var dt=function(e){return null!=e&&"object"==typeof e};var ft=function(e){return dt(e)&&"[object Arguments]"==be(e)},ht=Object.prototype,gt=ht.hasOwnProperty,pt=ht.propertyIsEnumerable,vt=ft(function(){return arguments}())?ft:function(e){return dt(e)&>.call(e,"callee")&&!pt.call(e,"callee")},yt=vt,bt=Array.isArray;var jt=function(){return!1},wt=ie(function(e,t){var r=t&&!t.nodeType&&t,n=r&&e&&!e.nodeType&&e,a=n&&n.exports===r?se.Buffer:void 0,i=(a?a.isBuffer:void 0)||jt;e.exports=i}),mt=/^(?:0|[1-9]\d*)$/;var _t=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&mt.test(e))&&e>-1&&e%1==0&&e<t};var xt=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},Ot={};Ot["[object Float32Array]"]=Ot["[object Float64Array]"]=Ot["[object Int8Array]"]=Ot["[object Int16Array]"]=Ot["[object Int32Array]"]=Ot["[object Uint8Array]"]=Ot["[object Uint8ClampedArray]"]=Ot["[object Uint16Array]"]=Ot["[object Uint32Array]"]=!0,Ot["[object Arguments]"]=Ot["[object Array]"]=Ot["[object ArrayBuffer]"]=Ot["[object Boolean]"]=Ot["[object DataView]"]=Ot["[object Date]"]=Ot["[object Error]"]=Ot["[object Function]"]=Ot["[object Map]"]=Ot["[object Number]"]=Ot["[object Object]"]=Ot["[object RegExp]"]=Ot["[object Set]"]=Ot["[object String]"]=Ot["[object WeakMap]"]=!1;var St=function(e){return dt(e)&&xt(e.length)&&!!Ot[be(e)]};var At=function(e){return function(t){return e(t)}},Pt=ie(function(e,t){var r=t&&!t.nodeType&&t,n=r&&e&&!e.nodeType&&e,a=n&&n.exports===r&&oe.process,i=function(){try{var e=n&&n.require&&n.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(t){}}();e.exports=i}),Ct=Pt&&Pt.isTypedArray,kt=Ct?At(Ct):St,Mt=Object.prototype.hasOwnProperty;var Et=function(e,t){var r=bt(e),n=!r&&yt(e),a=!r&&!n&&wt(e),i=!r&&!n&&!a&&kt(e),o=r||n||a||i,c=o?lt(e.length,String):[],s=c.length;for(var u in e)!t&&!Mt.call(e,u)||o&&("length"==u||a&&("offset"==u||"parent"==u)||i&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||_t(u,s))||c.push(u);return c},zt=Object.prototype;var Wt=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||zt)};var Ft=function(e,t){return function(r){return e(t(r))}},Lt=Ft(Object.keys,Object),It=Object.prototype.hasOwnProperty;var Nt=function(e){if(!Wt(e))return Lt(e);var t=[];for(var r in Object(e))It.call(e,r)&&"constructor"!=r&&t.push(r);return t};var Tt=function(e){return null!=e&&xt(e.length)&&!we(e)};var Dt=function(e){return Tt(e)?Et(e):Nt(e)};var Ht=function(e,t){return e&&ut(t,Dt(t),e)};var Ut=function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t},Rt=Object.prototype.hasOwnProperty;var Bt=function(e){if(!je(e))return Ut(e);var t=Wt(e),r=[];for(var n in e)("constructor"!=n||!t&&Rt.call(e,n))&&r.push(n);return r};var Yt=function(e){return Tt(e)?Et(e,!0):Bt(e)};var Xt=function(e,t){return e&&ut(t,Yt(t),e)},$t=ie(function(e,t){var r=t&&!t.nodeType&&t,n=r&&e&&!e.nodeType&&e,a=n&&n.exports===r?se.Buffer:void 0,i=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var r=e.length,n=i?i(r):new e.constructor(r);return e.copy(n),n}});var Vt=function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t};var Gt=function(e,t){for(var r=-1,n=null==e?0:e.length,a=0,i=[];++r<n;){var o=e[r];t(o,r,e)&&(i[a++]=o)}return i};var qt=function(){return[]},Jt=Object.prototype.propertyIsEnumerable,Zt=Object.getOwnPropertySymbols,Kt=Zt?function(e){return null==e?[]:(e=Object(e),Gt(Zt(e),function(t){return Jt.call(e,t)}))}:qt;var Qt=function(e,t){return ut(e,Kt(e),t)};var er=function(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e},tr=Ft(Object.getPrototypeOf,Object),rr=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)er(t,Kt(e)),e=tr(e);return t}:qt;var nr=function(e,t){return ut(e,rr(e),t)};var ar=function(e,t,r){var n=t(e);return bt(e)?n:er(n,r(e))};var ir=function(e){return ar(e,Dt,Kt)};var or=function(e){return ar(e,Yt,rr)},cr=Fe(se,"DataView"),sr=Fe(se,"Promise"),ur=Fe(se,"Set"),lr=Fe(se,"WeakMap"),dr="[object Map]",fr="[object Promise]",hr="[object Set]",gr="[object WeakMap]",pr="[object DataView]",vr=Se(cr),yr=Se(Le),br=Se(sr),jr=Se(ur),wr=Se(lr),mr=be;(cr&&mr(new cr(new ArrayBuffer(1)))!=pr||Le&&mr(new Le)!=dr||sr&&mr(sr.resolve())!=fr||ur&&mr(new ur)!=hr||lr&&mr(new lr)!=gr)&&(mr=function(e){var t=be(e),r="[object Object]"==t?e.constructor:void 0,n=r?Se(r):"";if(n)switch(n){case vr:return pr;case yr:return dr;case br:return fr;case jr:return hr;case wr:return gr}return t});var _r=mr,xr=Object.prototype.hasOwnProperty;var Or=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&xr.call(e,"index")&&(r.index=e.index,r.input=e.input),r},Sr=se.Uint8Array;var Ar=function(e){var t=new e.constructor(e.byteLength);return new Sr(t).set(new Sr(e)),t};var Pr=function(e,t){var r=t?Ar(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)},Cr=/\w*$/;var kr=function(e){var t=new e.constructor(e.source,Cr.exec(e));return t.lastIndex=e.lastIndex,t},Mr=ue?ue.prototype:void 0,Er=Mr?Mr.valueOf:void 0;var zr=function(e){return Er?Object(Er.call(e)):{}};var Wr=function(e,t){var r=t?Ar(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)};var Fr=function(e,t,r){var n=e.constructor;switch(t){case"[object ArrayBuffer]":return Ar(e);case"[object Boolean]":case"[object Date]":return new n(+e);case"[object DataView]":return Pr(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Wr(e,r);case"[object Map]":case"[object Set]":return new n;case"[object Number]":case"[object String]":return new n(e);case"[object RegExp]":return kr(e);case"[object Symbol]":return zr(e)}},Lr=Object.create,Ir=function(){function e(){}return function(t){if(!je(t))return{};if(Lr)return Lr(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();var Nr=function(e){return"function"!=typeof e.constructor||Wt(e)?{}:Ir(tr(e))};var Tr=function(e){return dt(e)&&"[object Map]"==_r(e)},Dr=Pt&&Pt.isMap,Hr=Dr?At(Dr):Tr;var Ur=function(e){return dt(e)&&"[object Set]"==_r(e)},Rr=Pt&&Pt.isSet,Br=Rr?At(Rr):Ur,Yr="[object Arguments]",Xr="[object Function]",$r="[object Object]",Vr={};Vr[Yr]=Vr["[object Array]"]=Vr["[object ArrayBuffer]"]=Vr["[object DataView]"]=Vr["[object Boolean]"]=Vr["[object Date]"]=Vr["[object Float32Array]"]=Vr["[object Float64Array]"]=Vr["[object Int8Array]"]=Vr["[object Int16Array]"]=Vr["[object Int32Array]"]=Vr["[object Map]"]=Vr["[object Number]"]=Vr[$r]=Vr["[object RegExp]"]=Vr["[object Set]"]=Vr["[object String]"]=Vr["[object Symbol]"]=Vr["[object Uint8Array]"]=Vr["[object Uint8ClampedArray]"]=Vr["[object Uint16Array]"]=Vr["[object Uint32Array]"]=!0,Vr["[object Error]"]=Vr[Xr]=Vr["[object WeakMap]"]=!1;var Gr=function e(t,r,n,a,i,o){var c,s=1&r,u=2&r,l=4&r;if(n&&(c=i?n(t,a,i,o):n(t)),void 0!==c)return c;if(!je(t))return t;var d=bt(t);if(d){if(c=Or(t),!s)return Vt(t,c)}else{var f=_r(t),h=f==Xr||"[object GeneratorFunction]"==f;if(wt(t))return $t(t,s);if(f==$r||f==Yr||h&&!i){if(c=u||h?{}:Nr(t),!s)return u?nr(t,Xt(c,t)):Qt(t,Ht(c,t))}else{if(!Vr[f])return i?t:{};c=Fr(t,f,s)}}o||(o=new nt);var g=o.get(t);if(g)return g;o.set(t,c),Br(t)?t.forEach(function(a){c.add(e(a,r,n,a,t,o))}):Hr(t)&&t.forEach(function(a,i){c.set(i,e(a,r,n,i,t,o))});var p=d?void 0:(l?u?or:ir:u?Yt:Dt)(t);return at(p||t,function(a,i){p&&(a=t[i=a]),st(c,i,e(a,r,n,i,t,o))}),c};var qr=function(e){return"symbol"==typeof e||dt(e)&&"[object Symbol]"==be(e)},Jr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Zr=/^\w*$/;var Kr=function(e,t){if(bt(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!qr(e))||(Zr.test(e)||!Jr.test(e)||null!=t&&e in Object(t))};function Qr(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],i=r.cache;if(i.has(a))return i.get(a);var o=e.apply(this,n);return r.cache=i.set(a,o)||i,o};return r.cache=new(Qr.Cache||et),r}Qr.Cache=et;var en=Qr;var tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/\\(\\)?/g,nn=function(e){var t=en(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(tn,function(e,r,n,a){t.push(n?a.replace(rn,"$1"):r||e)}),t}),an=ue?ue.prototype:void 0,on=an?an.toString:void 0;var cn=function e(t){if("string"==typeof t)return t;if(bt(t))return B(t,e)+"";if(qr(t))return on?on.call(t):"";var r=t+"";return"0"==r&&1/t==-1/0?"-0":r};var sn=function(e){return null==e?"":cn(e)};var un=function(e,t){return bt(e)?e:Kr(e,t)?[e]:nn(sn(e))};var ln=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var dn=function(e){if("string"==typeof e||qr(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t};var fn=function(e,t){for(var r=0,n=(t=un(t,e)).length;null!=e&&r<n;)e=e[dn(t[r++])];return r&&r==n?e:void 0};var hn=function(e,t,r){var n=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(r=r>a?a:r)<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(a);++n<a;)i[n]=e[n+t];return i};var gn=function(e,t){return t.length<2?e:fn(e,hn(t,0,-1))};var pn=function(e,t){return t=un(t,e),null==(e=gn(e,t))||delete e[dn(ln(t))]},vn=Function.prototype,yn=Object.prototype,bn=vn.toString,jn=yn.hasOwnProperty,wn=bn.call(Object);var mn=function(e){if(!dt(e)||"[object Object]"!=be(e))return!1;var t=tr(e);if(null===t)return!0;var r=jn.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&bn.call(r)==wn};var _n=function(e){return mn(e)?void 0:e},xn=ue?ue.isConcatSpreadable:void 0;var On=function(e){return bt(e)||yt(e)||!!(xn&&e&&e[xn])};var Sn=function e(t,r,n,a,i){var o=-1,c=t.length;for(n||(n=On),i||(i=[]);++o<c;){var s=t[o];r>0&&n(s)?r>1?e(s,r-1,n,a,i):er(i,s):a||(i[i.length]=s)}return i};var An=function(e){return(null==e?0:e.length)?Sn(e,1):[]};var Pn=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)},Cn=Math.max;var kn=function(e,t,r){return t=Cn(void 0===t?e.length-1:t,0),function(){for(var n=arguments,a=-1,i=Cn(n.length-t,0),o=Array(i);++a<i;)o[a]=n[t+a];a=-1;for(var c=Array(t+1);++a<t;)c[a]=n[a];return c[t]=r(o),Pn(e,this,c)}};var Mn=function(e){return function(){return e}};var En=it?function(e,t){return it(e,"toString",{configurable:!0,enumerable:!1,value:Mn(t),writable:!0})}:function(e){return e},zn=Date.now;var Wn=function(e){var t=0,r=0;return function(){var n=zn(),a=16-(n-r);if(r=n,a>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}},Fn=Wn(En);var Ln=function(e){return Fn(kn(e,void 0,An),e+"")}(function(e,t){var r={};if(null==e)return r;var n=!1;t=B(t,function(t){return t=un(t,e),n||(n=t.length>1),t}),ut(e,or(e),r),n&&(r=Gr(r,7,_n));for(var a=t.length;a--;)pn(r,t[a]);return r});const In=["placeholder","url","width","height","padding","filename","defaultSignatureList","onSign","onChange","isEdit"],Nn=(0,o.forwardRef)((e,t)=>{let{size:r,currentPage:n,placeholder:a,url:i,width:c=200,height:s=80,padding:u,filename:l="signed-document.pdf",signatureList:d,setSignatureList:f,isEdit:h,onSign:p,onChange:v}=e;const{formatMessage:y}=(0,w.useIntl)(),b=(0,o.useMemo)(()=>d.filter(e=>e.signature).map(e=>Object.assign({},D({location:e,size:r}),{page:e.page,signature:e.signature})),[d,r]);return(0,o.useEffect)(()=>{v&&v(d)},[d]),(0,o.useImperativeHandle)(t,()=>({getSignatureList:()=>d.map(e=>Ln(e,["signature"])),setSignatureList:e=>f(e),getPdfSignatureList:()=>b,sign:()=>b.length?N({url:i,filename:l,signatureList:b}):Promise.reject(new Error(y({id:"signatureAdd"}))),addSignLocation:e=>{f(t=>[...t,Object.assign({},M({width:c,height:s,stageWidth:r.originalWidth,stageHeight:r.originalHeight}),{page:e||n})])}})),(0,g.jsx)("div",{style:{transform:"scale(".concat(r.width/r.originalWidth,")"),transformOrigin:"0 0"},children:(0,g.jsx)(I,{isEdit:h,currentPage:n,stageWidth:r.originalWidth,stageHeight:r.originalHeight,width:c,height:s,padding:u,placeholder:a,value:d,onChange:f,onClick:e=>{let{index:t,value:r}=e;p&&p({size:r.size,callback:e=>{f(r=>{const n=r.slice(0);return n[t]=Object.assign({},n[t],{signature:e}),n})}})}})})}),Tn=k((0,o.forwardRef)((e,t)=>{let{placeholder:r,url:n,width:a,height:i,padding:c,filename:s="signed-document.pdf",defaultSignatureList:u,onSign:l,onChange:d,isEdit:f}=e,h=S(e,In);const[p,v]=(0,o.useState)(u||[]);return(0,g.jsx)(C,O({},h,{url:n,children:e=>{let{size:o,currentPage:u}=e;return(0,g.jsx)(Nn,{ref:t,size:o,currentPage:u,url:n,filename:s,signatureList:p,setSignatureList:v,width:a,height:i,padding:c,placeholder:r,onChange:d,onSign:l,isEdit:f})}}))})),Dn=["filename","onSuccess","width","height","mask"],Hn=e=>{let t=e.split(","),r=t[1].substring(0,t[1].length-2),n=t[0].match(/:(.*?);/)[1],a=atob(r),i=a.length,o=new Uint8Array(i);for(;i--;)o[i]=a.charCodeAt(i);return new Blob([o],{type:n})},Un=k(e=>{let{onClose:t,onSuccess:r,filename:n,width:a,height:i,mask:c=null}=e;const{formatMessage:s}=(0,w.useIntl)(),{message:u}=d.App.useApp(),f=(0,o.useRef)(null),h=(0,o.useRef)(null),[p,v]=(0,o.useState)(!1);return(0,g.jsxs)(d.Flex,{vertical:!0,gap:12,className:l()(A["signature-modal-content"],"signature-modal-content"),children:[(0,g.jsxs)("div",{className:l()(A["signature-container"],"signature-container"),style:{width:"100%",height:"".concat(Math.round(368*i/a),"px")},children:[(0,g.jsx)("div",{className:l()(A["signature-mask"],"signature-mask"),ref:h,children:c}),(0,g.jsx)(_.A,{ref:f,canvasProps:{className:l()(A["signature-canvas"],"signature-canvas")}})]}),(0,g.jsxs)(d.Flex,{justify:"flex-end",align:"center",gap:10,children:[(0,g.jsx)(d.Button,{onClick:()=>{f.current.clear()},children:s({id:"signatureCleanText"})}),(0,g.jsx)(d.Button,{loading:p,type:"primary",onClick:async()=>{v(!0);try{if(f.current.isEmpty())return void u.error(s({id:"signatureEmptyError"}));let e=f.current.toDataURL("image/png");if(c){const t=await x.ph.toPng(h.current,{scale:2}),r=document.createElement("canvas");r.width=2*a,r.height=2*i;const n=r.getContext("2d");n.drawImage(t,0,0,r.width,r.height);const o=new Image;o.src=e,await new Promise(e=>{o.onload=e}),n.drawImage(o,0,0,r.width,r.height),e=r.toDataURL("image/png")}const o=new window.File([Hn(e)],n,{type:"image/png"}),l=r&&await r(o);if(v(!1),!1===l)return;t()}catch(e){u.error(e.message),v(!1)}},children:s({id:"signatureConfirmText"})})]})]})}),Rn=k(()=>{const{formatMessage:e}=(0,w.useIntl)();return(0,g.jsx)("span",{children:e({id:"signatureDefaultTitle"})})}),Bn=()=>{const{modal:e}=d.App.useApp();return t=>{const r=Object.assign({},t),{filename:n="signature.png",onSuccess:a,width:i=200,height:o=80,mask:c}=r,s=S(r,Dn),u=e.info(Object.assign({},{title:(0,g.jsx)(Rn,{}),icon:null,footer:null,closable:!0,wrapClassName:A["signature-modal"],classNames:{content:A["signature-modal"]}},s,{content:(0,g.jsx)(Un,{width:i,height:o,mask:c,filename:n,onSuccess:a,onClose:()=>{u.destroy()}})}));return u}}}}]);
|
|
2
|
+
//# sourceMappingURL=8.a1f760c5.chunk.js.map
|