@guodun/antdv 1.7.4 → 1.7.6
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/dist/es/components/pro-contract-template-designer/src/ContractTemplateAuthoringBar.vue.mjs +1 -1
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.mjs +45 -37
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.mjs +266 -264
- package/dist/es/components/pro-contract-template-designer/src/extensions/editor-extensions.mjs +37 -35
- package/dist/es/components/pro-contract-template-designer/src/extensions/paragraph-enter.mjs +28 -0
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateAuthoringBar.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/extensions/editor-extensions.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/extensions/paragraph-enter.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/theme/icon.css +1 -1
- package/dist/theme/index.css +1 -1
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.d.ts +1 -0
- package/dist/types/components/pro-contract-template-designer/src/extensions/paragraph-enter.d.ts +6 -0
- package/package.json +4 -4
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateAuthoringBar.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractTemplateFindReplace.cjs`);let t=require(`vue`),n=require(`ant-design-vue`),r=require(`@ant-design/icons-vue`);var i={class:`gd-contract-template-designer__authoring-actions`,role:`toolbar`,"aria-label":`编写辅助工具`},a={key:0},o={key:0},s={class:`gd-contract-template-designer__authoring-panel-head`},c=(0,t.defineComponent)({__name:`ContractTemplateAuthoringBar`,props:(0,t.mergeModels)({compact:{type:Boolean},panel:{},readonly:{type:Boolean},total:{},currentIndex:{},currentPage:{},feedback:{}},{query:{default:``},queryModifiers:{},replacement:{default:``},replacementModifiers:{},matchCase:{type:Boolean,default:!1},matchCaseModifiers:{}}),emits:(0,t.mergeModels)([`open`,`close`,`navigate`,`replaceCurrent`,`replaceAll`],[`update:query`,`update:replacement`,`update:matchCase`]),setup(c,{expose:l,emit:u}){let d=c,f=(0,t.useModel)(c,`query`),p=(0,t.useModel)(c,`replacement`),m=(0,t.useModel)(c,`matchCase`),h=u,g=(0,t.useTemplateRef)(`barElement`),_=(0,t.useTemplateRef)(`findElement`);function v(e){d.panel===e||e===`find`&&d.panel===`replace`?h(`close`):h(`open`,e)}return l({focusPanel:()=>{d.panel===`find`||d.panel===`replace`?_.value?.focus():g.value?.querySelector(`[data-authoring-panel] button`)?.focus()},focusTrigger:e=>g.value?.querySelector(`[data-authoring-trigger="${e===`replace`?`find`:e}"]`)?.focus()}),(l,u)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`barElement`,ref:g,class:(0,t.normalizeClass)([`gd-contract-template-designer__authoring-bar`,{"is-compact":c.compact}])},[(0,t.createElementVNode)(`div`,i,[(0,t.createVNode)((0,t.unref)(n.Tooltip),{title:`查找与替换(Ctrl / ⌘ + F)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{type:`text`,"data-authoring-trigger":`find`,"aria-label":`查找与替换`,"aria-expanded":c.panel===`find`||c.panel===`replace`,onClick:u[0]||=e=>v(`find`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.SearchOutlined),{"aria-hidden":`true`}),c.compact?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,a,`查找 / 替换`))]),_:1},8,[`aria-expanded`])]),_:1}),(0,t.createVNode)((0,t.unref)(n.Tooltip),{title:`编写快捷键(Ctrl / ⌘ + /)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{type:`text`,class:`gd-contract-template-designer__authoring-help-trigger`,"data-authoring-trigger":`help`,"aria-label":`编写快捷键`,"aria-expanded":c.panel===`help`,onClick:u[1]||=e=>v(`help`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.QuestionCircleOutlined),{"aria-hidden":`true`}),c.compact?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,o,`快捷键`))]),_:1},8,[`aria-expanded`])]),_:1})]),c.panel===`find`||c.panel===`replace`?((0,t.openBlock)(),(0,t.createBlock)(e.default,{key:0,ref_key:`findElement`,ref:_,query:f.value,"onUpdate:query":u[2]||=e=>f.value=e,replacement:p.value,"onUpdate:replacement":u[3]||=e=>p.value=e,"match-case":m.value,"onUpdate:matchCase":u[4]||=e=>m.value=e,readonly:c.readonly,"replace-mode":c.panel===`replace`,total:c.total,"current-index":c.currentIndex,"current-page":c.currentPage,feedback:c.feedback,onNavigate:u[5]||=e=>h(`navigate`,e),onReplaceCurrent:u[6]||=e=>h(`replaceCurrent`),onReplaceAll:u[7]||=e=>h(`replaceAll`),onToggleReplace:u[8]||=e=>h(`open`,c.panel===`replace`?`find`:`replace`),onClose:u[9]||=e=>h(`close`)},null,8,[`query`,`replacement`,`match-case`,`readonly`,`replace-mode`,`total`,`current-index`,`current-page`,`feedback`])):c.panel===`help`?((0,t.openBlock)(),(0,t.createElementBlock)(`section`,{key:1,"data-authoring-panel":``,class:`gd-contract-template-designer__authoring-panel gd-contract-template-designer__shortcut-panel`,"aria-label":`编写快捷键帮助`,onKeydown:u[11]||=(0,t.withKeys)((0,t.withModifiers)(e=>h(`close`),[`stop`,`prevent`]),[`esc`])},[(0,t.createElementVNode)(`div`,s,[u[12]||=(0,t.createElementVNode)(`div`,{class:`gd-contract-template-designer__shortcut-heading`},[(0,t.createElementVNode)(`strong`,null,`快捷键`),(0,t.createElementVNode)(`span`,null,`仅在当前设计器内生效`)],-1),(0,t.createVNode)((0,t.unref)(n.Button),{type:`text`,"aria-label":`关闭快捷键帮助`,onClick:u[10]||=e=>h(`close`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.CloseOutlined),{"aria-hidden":`true`})]),_:1})]),u[13]||=(0,t.createStaticVNode)(`<dl class="gd-contract-template-designer__shortcut-list"><div><dt>查找正文</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl / ⌘</kbd><span>+</span><kbd>F</kbd></span></dd></div><div><dt>替换正文</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl</kbd><span>+</span><kbd>H</kbd></span><span class="gd-contract-template-designer__shortcut-separator">或</span><span class="gd-contract-template-designer__shortcut-combo"><kbd>⌘</kbd><span>+</span><kbd>Shift</kbd><span>+</span><kbd>H</kbd></span></dd></div><div><dt>下一处 / 上一处</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Enter</kbd></span><span class="gd-contract-template-designer__shortcut-separator">/</span><span class="gd-contract-template-designer__shortcut-combo"><kbd>Shift</kbd><span>+</span><kbd>Enter</kbd></span><small>查找框内</small></dd></div><div><dt>查找结果导航</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl / ⌘</kbd><span>+</span><kbd>G</kbd></span><span class="gd-contract-template-designer__shortcut-separator">反向加</span><kbd>Shift</kbd></dd></div><div><dt>撤销 / 重做(当前页)</dt><dd><kbd>Ctrl / ⌘ + Z</kbd><span class="gd-contract-template-designer__shortcut-separator">/</span><kbd>Ctrl / ⌘ + Shift + Z</kbd></dd></div><div><dt>正文右键菜单</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Shift</kbd><span>+</span><kbd>F10</kbd></span></dd></div><div><dt>收起 / 退出沉浸</dt><dd><kbd>Esc</kbd><small>逐层关闭</small></dd></div><div><dt>打开此帮助</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl / ⌘</kbd><span>+</span><kbd>/</kbd></span></dd></div></dl><div class="gd-contract-template-designer__shortcut-note"><span><strong>文本格式</strong>:<kbd>Ctrl</kbd> / <kbd>⌘</kbd> + <kbd>B</kbd> / <kbd>I</kbd> / <kbd>U</kbd></span><span>属性输入框保留原生输入行为;只读模式不执行写入。</span></div>`,2)],32)):(0,t.createCommentVNode)(``,!0)],2))}});exports.default=c;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractTemplateFindReplace.cjs`);let t=require(`vue`),n=require(`ant-design-vue`),r=require(`@ant-design/icons-vue`);var i={class:`gd-contract-template-designer__authoring-actions`,role:`toolbar`,"aria-label":`编写辅助工具`},a={key:0},o={key:0},s={class:`gd-contract-template-designer__authoring-panel-head`},c=(0,t.defineComponent)({__name:`ContractTemplateAuthoringBar`,props:(0,t.mergeModels)({compact:{type:Boolean},panel:{},readonly:{type:Boolean},total:{},currentIndex:{},currentPage:{},feedback:{}},{query:{default:``},queryModifiers:{},replacement:{default:``},replacementModifiers:{},matchCase:{type:Boolean,default:!1},matchCaseModifiers:{}}),emits:(0,t.mergeModels)([`open`,`close`,`navigate`,`replaceCurrent`,`replaceAll`],[`update:query`,`update:replacement`,`update:matchCase`]),setup(c,{expose:l,emit:u}){let d=c,f=(0,t.useModel)(c,`query`),p=(0,t.useModel)(c,`replacement`),m=(0,t.useModel)(c,`matchCase`),h=u,g=(0,t.useTemplateRef)(`barElement`),_=(0,t.useTemplateRef)(`findElement`);function v(e){d.panel===e||e===`find`&&d.panel===`replace`?h(`close`):h(`open`,e)}return l({focusPanel:()=>{d.panel===`find`||d.panel===`replace`?_.value?.focus():g.value?.querySelector(`[data-authoring-panel] button`)?.focus()},focusTrigger:e=>g.value?.querySelector(`[data-authoring-trigger="${e===`replace`?`find`:e}"]`)?.focus()}),(l,u)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`barElement`,ref:g,class:(0,t.normalizeClass)([`gd-contract-template-designer__authoring-bar`,{"is-compact":c.compact}])},[(0,t.createElementVNode)(`div`,i,[(0,t.createVNode)((0,t.unref)(n.Tooltip),{title:`查找与替换(Ctrl / ⌘ + F)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{type:`text`,"data-authoring-trigger":`find`,"aria-label":`查找与替换`,"aria-expanded":c.panel===`find`||c.panel===`replace`,onClick:u[0]||=e=>v(`find`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.SearchOutlined),{"aria-hidden":`true`}),c.compact?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,a,`查找 / 替换`))]),_:1},8,[`aria-expanded`])]),_:1}),(0,t.createVNode)((0,t.unref)(n.Tooltip),{title:`编写快捷键(Ctrl / ⌘ + /)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{type:`text`,class:`gd-contract-template-designer__authoring-help-trigger`,"data-authoring-trigger":`help`,"aria-label":`编写快捷键`,"aria-expanded":c.panel===`help`,onClick:u[1]||=e=>v(`help`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.QuestionCircleOutlined),{"aria-hidden":`true`}),c.compact?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,o,`快捷键`))]),_:1},8,[`aria-expanded`])]),_:1})]),c.panel===`find`||c.panel===`replace`?((0,t.openBlock)(),(0,t.createBlock)(e.default,{key:0,ref_key:`findElement`,ref:_,query:f.value,"onUpdate:query":u[2]||=e=>f.value=e,replacement:p.value,"onUpdate:replacement":u[3]||=e=>p.value=e,"match-case":m.value,"onUpdate:matchCase":u[4]||=e=>m.value=e,readonly:c.readonly,"replace-mode":c.panel===`replace`,total:c.total,"current-index":c.currentIndex,"current-page":c.currentPage,feedback:c.feedback,onNavigate:u[5]||=e=>h(`navigate`,e),onReplaceCurrent:u[6]||=e=>h(`replaceCurrent`),onReplaceAll:u[7]||=e=>h(`replaceAll`),onToggleReplace:u[8]||=e=>h(`open`,c.panel===`replace`?`find`:`replace`),onClose:u[9]||=e=>h(`close`)},null,8,[`query`,`replacement`,`match-case`,`readonly`,`replace-mode`,`total`,`current-index`,`current-page`,`feedback`])):c.panel===`help`?((0,t.openBlock)(),(0,t.createElementBlock)(`section`,{key:1,"data-authoring-panel":``,class:`gd-contract-template-designer__authoring-panel gd-contract-template-designer__shortcut-panel`,"aria-label":`编写快捷键帮助`,onKeydown:u[11]||=(0,t.withKeys)((0,t.withModifiers)(e=>h(`close`),[`stop`,`prevent`]),[`esc`])},[(0,t.createElementVNode)(`div`,s,[u[12]||=(0,t.createElementVNode)(`div`,{class:`gd-contract-template-designer__shortcut-heading`},[(0,t.createElementVNode)(`strong`,null,`快捷键`),(0,t.createElementVNode)(`span`,null,`仅在当前设计器内生效`)],-1),(0,t.createVNode)((0,t.unref)(n.Button),{type:`text`,"aria-label":`关闭快捷键帮助`,onClick:u[10]||=e=>h(`close`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.CloseOutlined),{"aria-hidden":`true`})]),_:1})]),u[13]||=(0,t.createStaticVNode)(`<dl class="gd-contract-template-designer__shortcut-list"><div><dt>新建段落,默认左对齐</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Enter</kbd></span><small>正文内</small></dd></div><div><dt>段内换行,保留当前对齐</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Shift</kbd><span>+</span><kbd>Enter</kbd></span><small>正文内</small></dd></div><div><dt>查找正文</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl / ⌘</kbd><span>+</span><kbd>F</kbd></span></dd></div><div><dt>替换正文</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl</kbd><span>+</span><kbd>H</kbd></span><span class="gd-contract-template-designer__shortcut-separator">或</span><span class="gd-contract-template-designer__shortcut-combo"><kbd>⌘</kbd><span>+</span><kbd>Shift</kbd><span>+</span><kbd>H</kbd></span></dd></div><div><dt>下一处 / 上一处</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Enter</kbd></span><span class="gd-contract-template-designer__shortcut-separator">/</span><span class="gd-contract-template-designer__shortcut-combo"><kbd>Shift</kbd><span>+</span><kbd>Enter</kbd></span><small>查找框内</small></dd></div><div><dt>查找结果导航</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl / ⌘</kbd><span>+</span><kbd>G</kbd></span><span class="gd-contract-template-designer__shortcut-separator">反向加</span><kbd>Shift</kbd></dd></div><div><dt>撤销 / 重做(当前页)</dt><dd><kbd>Ctrl / ⌘ + Z</kbd><span class="gd-contract-template-designer__shortcut-separator">/</span><kbd>Ctrl / ⌘ + Shift + Z</kbd></dd></div><div><dt>正文右键菜单</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Shift</kbd><span>+</span><kbd>F10</kbd></span></dd></div><div><dt>收起 / 退出沉浸</dt><dd><kbd>Esc</kbd><small>逐层关闭</small></dd></div><div><dt>打开此帮助</dt><dd><span class="gd-contract-template-designer__shortcut-combo"><kbd>Ctrl / ⌘</kbd><span>+</span><kbd>/</kbd></span></dd></div></dl><div class="gd-contract-template-designer__shortcut-note"><span><strong>文本格式</strong>:<kbd>Ctrl</kbd> / <kbd>⌘</kbd> + <kbd>B</kbd> / <kbd>I</kbd> / <kbd>U</kbd></span><span>分段规则仅适用于顶层正文的单个段落 / 标题,原段落对齐不变;列表、表格保留原有操作。</span><span>撤销 / 重做仅影响当前页,一次即可回退 / 恢复分段与对齐。</span><span>属性输入框保留原生输入行为;只读模式不执行写入。</span></div>`,2)],32)):(0,t.createCommentVNode)(``,!0)],2))}});exports.default=c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractTemplateRendererToolbar.cjs`);let t=require(`vue`),n=require(`ant-design-vue`),r=require(`@ant-design/icons-vue`);var i={class:`gd-contract-template-renderer__header`},a={class:`gd-contract-template-renderer__title`},o={class:`gd-contract-template-renderer__header-meta`},s={class:`gd-contract-template-renderer__header-actions`},
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractTemplateRendererToolbar.cjs`);let t=require(`vue`),n=require(`ant-design-vue`),r=require(`@ant-design/icons-vue`);var i={class:`gd-contract-template-renderer__header`},a={class:`gd-contract-template-renderer__title`},o={class:`gd-contract-template-renderer__header-meta`},s=[`aria-valuenow`],c={class:`gd-contract-template-renderer__header-actions`},l=(0,t.defineComponent)({name:`ContractTemplateRendererHeader`,__name:`ContractTemplateRendererHeader`,props:{title:{},filledCount:{},totalCount:{},progressPercent:{},requiredMissingCount:{},zoom:{},pages:{},activePageId:{},minZoom:{},maxZoom:{},showToolbar:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showSubmitButton:{type:Boolean,default:!0},showPanelToggle:{type:Boolean,default:!1},panelCollapsed:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`zoomIn`,`zoomOut`,`resetZoom`,`fitWidth`,`selectPage`,`validate`,`reset`,`submit`,`togglePanel`],setup(l,{emit:u}){let d=u;return(u,f)=>((0,t.openBlock)(),(0,t.createElementBlock)(`header`,i,[(0,t.createElementVNode)(`div`,a,[f[9]||=(0,t.createElementVNode)(`span`,{class:`gd-contract-template-renderer__title-bar`,"aria-hidden":`true`},null,-1),(0,t.createElementVNode)(`div`,o,[(0,t.createElementVNode)(`strong`,null,(0,t.toDisplayString)(l.title),1),(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(l.filledCount)+` / `+(0,t.toDisplayString)(l.totalCount)+` 已填写`,1)]),(0,t.createElementVNode)(`div`,{class:`gd-contract-template-renderer__header-progress`,role:`progressbar`,"aria-valuenow":l.progressPercent,"aria-valuemin":`0`,"aria-valuemax":`100`},[(0,t.createElementVNode)(`span`,{style:(0,t.normalizeStyle)({width:`${l.progressPercent}%`})},null,4),(0,t.createElementVNode)(`em`,null,(0,t.toDisplayString)(l.progressPercent)+`%`,1)],8,s),(0,t.createElementVNode)(`span`,{class:(0,t.normalizeClass)([`gd-contract-template-renderer__progress-pill`,{"is-warning":l.requiredMissingCount>0}])},(0,t.toDisplayString)(l.requiredMissingCount>0?`${l.requiredMissingCount} 项必填未完成`:`必填项已完成`),3)]),l.showToolbar?((0,t.openBlock)(),(0,t.createBlock)(e.default,{key:0,zoom:l.zoom,pages:l.pages,"active-page-id":l.activePageId,"min-zoom":l.minZoom,"max-zoom":l.maxZoom,onZoomIn:f[0]||=e=>d(`zoomIn`),onZoomOut:f[1]||=e=>d(`zoomOut`),onResetZoom:f[2]||=e=>d(`resetZoom`),onFitWidth:f[3]||=e=>d(`fitWidth`),onSelectPage:f[4]||=e=>d(`selectPage`,e)},null,8,[`zoom`,`pages`,`active-page-id`,`min-zoom`,`max-zoom`])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,c,[l.showPanelToggle?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:0,title:l.panelCollapsed?`展开填写面板`:`收起填写面板`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button gd-contract-template-renderer__panel-toggle`,"aria-label":l.panelCollapsed?`展开填写面板`:`收起填写面板`,"aria-expanded":!l.panelCollapsed,onClick:f[5]||=e=>d(`togglePanel`)},{default:(0,t.withCtx)(()=>[l.panelCollapsed?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.MenuUnfoldOutlined),{key:0,"aria-hidden":`true`})):((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.MenuFoldOutlined),{key:1,"aria-hidden":`true`}))]),_:1},8,[`aria-label`,`aria-expanded`])]),_:1},8,[`title`])):(0,t.createCommentVNode)(``,!0),(0,t.renderSlot)(u.$slots,`extra`),l.showValidateButton?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:1,title:`校验`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button`,disabled:l.readonly||l.disabled,"aria-label":`校验`,onClick:f[6]||=e=>d(`validate`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.AuditOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),_:1})):(0,t.createCommentVNode)(``,!0),l.showResetButton?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:2,title:`重置默认值`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button`,disabled:l.readonly||l.disabled,"aria-label":`重置默认值`,onClick:f[7]||=e=>d(`reset`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.UndoOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),_:1})):(0,t.createCommentVNode)(``,!0),l.showSubmitButton&&!l.readonly?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Button),{key:3,type:`primary`,size:`small`,disabled:l.disabled,onClick:f[8]||=e=>d(`submit`)},{icon:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.SendOutlined),{"aria-hidden":`true`})]),default:(0,t.withCtx)(()=>[f[10]||=(0,t.createTextVNode)(` 提交填写数据 `,-1)]),_:1},8,[`disabled`])):(0,t.createCommentVNode)(``,!0)])]))}});exports.default=l;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/advanced-controls.cjs`),n=require(`./utils/template-renderer.cjs`),r=require(`./ContractTemplateRendererField.cjs`),i=require(`./ContractTemplateRendererHeader.cjs`),a=require(`./ContractTemplateRendererPage.cjs`),o=require(`./ContractTemplateRendererValidation.cjs`);let s=require(`vue`),c=require(`ant-design-vue`),ee=require(`@vueuse/core`),l=require(`@ant-design/icons-vue`);var te={key:2,class:`gd-contract-template-renderer__empty`},ne=[`data-highlighted-variable-key`],re={class:`gd-contract-template-renderer__pages`},ie=[`aria-label`,`aria-expanded`],ae={class:`gd-contract-template-renderer__panel-clip`},oe={class:`gd-contract-template-renderer__panel`},se={class:`gd-contract-template-renderer__panel-head`},ce={class:`gd-contract-template-renderer__panel-head-row`},le={class:`gd-contract-template-renderer__panel-head-actions`},ue={class:`gd-contract-template-renderer__field-group-head`},de={class:`gd-contract-template-renderer__field-group-items`},fe=[`data-field-key`],pe=.5,me=1.5,u=.1,he=3e3,d=(0,s.defineComponent)({name:`ContractTemplateSingleRenderer`,__name:`ContractTemplateSingleRenderer`,props:{files:{},activeFileId:{},valuesByFile:{},template:{default:void 0},values:{default:void 0},interactionMode:{default:`panel`},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},title:{default:`合同填写`},showSubmitButton:{type:Boolean,default:!0},validateOnSubmit:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},showPageMeta:{type:Boolean,default:!0},collapsiblePanel:{type:Boolean,default:!0},zoom:{default:1},controlRegistry:{default:()=>({})},optionResolver:{type:Function,default:void 0},requester:{type:Function,default:void 0},allowedRemoteOrigins:{default:()=>[]},remoteRequestTimeoutMs:{default:1e4},remoteOptionsCacheTtlMs:{default:3e4},selectorHttp:{default:void 0},selectorUrlPrefix:{default:``},contractFontBaseUrl:{default:void 0}},emits:[`update:activeFileId`,`update:valuesByFile`,`update:values`,`change`,`validate`,`submit`,`update:zoom`,`control-warning`],setup(d,{expose:ge,emit:_e}){let f=d,p=_e,ve=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],ye=(0,s.ref)(),m=(0,s.ref)(),h=(0,s.ref)(),g=(0,s.ref)(n.normalizeRenderValues(f.template,f.values)),be=(0,s.ref)({...g.value}),_=(0,s.ref)(!1),v=(0,s.ref)([]),y=(0,s.ref)(!1),b=(0,s.ref)(!1),x=(0,s.ref)(``),S=(0,s.ref)(``),C=(0,s.ref)(``),xe=(0,s.ref)(0),w=(0,s.ref)(mt(f.zoom)),T=(0,s.ref)(``),E=(0,s.ref)(`all`),D=(0,s.ref)(!1),O=(0,s.ref)(new Map),k=new Map,Se=new Map,A=new Map,j=new Set,{width:Ce}=(0,ee.useElementSize)(m),we=(0,s.computed)(()=>f.readonly||f.disabled),M=(0,s.computed)(()=>n.validateTemplateRenderStructure(f.template)),N=(0,s.computed)(()=>_.value?v.value:M.value),P=(0,s.computed)(()=>(Array.isArray(f.template?.variables)?f.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Te=(0,s.computed)(()=>{let e={...g.value};return P.value.forEach(n=>{let r=Je(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),Ee=(0,s.computed)(()=>P.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),De=(0,s.computed)(()=>{let e=new Map;return N.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),F=(0,s.computed)(()=>{let e=f.interactionMode===`panel`;return n.buildTemplateRenderPages(f.template,e?Te.value:be.value,{readonly:f.readonly,disabled:f.disabled,mode:e?`display`:`control`})}),Oe=(0,s.computed)(()=>{let e=new Map,t=new Set(P.value.map(e=>e.key));return F.value.forEach(n=>{ct(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),I=(0,s.computed)(()=>P.value.filter(rt)),ke=(0,s.computed)(()=>{let e=F.value.map((e,t)=>({id:`page:${e.id}`,pageId:e.id,title:`第 ${t+1} 页${e.title?` · ${e.title}`:``}`,allVariables:[],variables:[]})),t=new Map(e.map(e=>[e.pageId,e])),n={id:`unlocated`,title:`未定位字段`,allVariables:[],variables:[]};return P.value.forEach(e=>{let r=t.get(Oe.value.get(e.key)??``)??n;r.allVariables.push(e),rt(e)&&r.variables.push(e)}),[...e,n].filter(e=>e.variables.length>0).map(e=>({id:e.id,title:e.title,totalCount:e.allVariables.length,variables:e.variables}))}),L=(0,s.computed)(()=>F.value.length>0),R=(0,s.computed)(()=>P.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),z=(0,s.computed)(()=>P.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Ae=(0,s.computed)(()=>P.value.length?Math.round(R.value/P.value.length*100):0),je=(0,s.computed)(()=>_.value&&v.value.length===0),Me=(0,s.computed)(()=>_.value?je.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:M.value.length?`模板存在 ${M.value.length} 个问题,已安全降级展示`:``),Ne=(0,s.computed)(()=>_.value?N.value.length>0||b.value:M.value.length>0);(0,s.watch)(()=>f.template,e=>{B(n.normalizeRenderValues(e,f.values),!1),W();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(C.value)||(C.value=t.find(Boolean)??``),S.value&&!P.value.some(e=>e.key===S.value)&&We()},{deep:!0}),(0,s.watch)(()=>[f.template?.variables,f.optionResolver,f.requester,f.allowedRemoteOrigins,f.remoteRequestTimeoutMs,f.remoteOptionsCacheTtlMs],()=>{Xe()},{deep:!0,immediate:!0}),(0,s.watch)(()=>f.values,e=>{let t=n.normalizeRenderValues(f.template,e);ht(t,g.value)||(B(t,!1,{refreshInlineHtml:f.interactionMode!==`inline`}),W())},{deep:!0}),(0,s.watch)(()=>f.interactionMode,e=>{e===`inline`&&(be.value={...g.value})}),(0,s.watch)(()=>f.collapsiblePanel,e=>{e||(D.value=!1)}),(0,s.watch)(()=>f.zoom,e=>w.value=mt(e)),(0,s.watch)(F,e=>{!C.value&&e.length&&(C.value=e[0].id)},{immediate:!0});function B(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(p(`update:values`,{...g.value}),p(`change`,{...g.value}))}function V(e,t){!e||we.value||(B({...g.value,[e]:t},!0,{refreshInlineHtml:f.interactionMode!==`inline`}),_.value&&U())}function Pe(e){if(f.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?V(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?V(n,t.value===``?void 0:t.valueAsNumber):V(n,t.value))}function Fe(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(C.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&Y(r)}function Ie(e){let t=F.value.find(t=>t.id===e.pageId),n=P.value.some(t=>t.key===e.key);if(!(!t||!n||!ct(t.contentHtml).has(e.key))&&!(e.kind===`input`&&f.interactionMode!==`inline`)){if(C.value=e.pageId,e.kind===`input`){V(e.key,e.value);return}Y(e.key)}}function Le(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),Y(t.dataset.key))}function H(){return{...g.value}}function Re(e){B(n.normalizeRenderValues(f.template,e))}function U(){let e=n.validateTemplateRenderValues(f.template,g.value);return G(e),p(`validate`,e),e}function ze(){let e=n.resolveTemplateRenderSubmitErrors(f.template,g.value,f.validateOnSubmit);if((f.validateOnSubmit||e.length)&&(G(e),p(`validate`,e)),e.length)return Ke(e[0]),!1;let t=H();return p(`submit`,t),t}function Be(){return B(n.buildInitialRenderValues(f.template)),W(),H()}function Ve(){we.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Be()})}function W(){_.value=!1,v.value=[],y.value=!1,b.value=!1,q()}function G(e){if(v.value=e,_.value=!0,y.value=!1,e.length){b.value=!1,q();return}He()}let K;function q(){K&&=(clearTimeout(K),void 0)}function He(){q(),b.value=!0,K=setTimeout(()=>{b.value=!1,K=void 0},he)}function J(e){Y(e,!0)}function Ue(e){f.interactionMode===`panel`&&(D.value&&=!1,P.value.some(t=>t.key===e)&&!I.value.some(t=>t.key===e)&&it())}function Y(e,t=!1){if(!e)return;Ue(e),S.value=e,x.value=e;let n=Oe.value.get(e);n&&(C.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{Ge(e);let r=n?m.value?.querySelector(`[data-render-page-id="${$(n)}"]`):void 0;t&&r?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),f.interactionMode===`panel`&&h.value?.querySelector(`[data-field-key="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function We(){S.value=``,x.value=``,Ge(``)}function Ge(e){m.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function Ke(e){e.variableKey?J(e.variableKey):e.pageId&&pt(e.pageId)}function qe(e){return De.value.get(e)??[]}function X(e){return O.value.get(e.key)??{options:e.options??[],loading:!1}}function Je(e){let t=e.componentKey||e.type||``;return t?f.controlRegistry?.[t]:void 0}function Z(e,t){let n=new Map(O.value);n.set(e,t),O.value=n}function Ye(e){p(`control-warning`,e)}async function Xe(){k.forEach(e=>e.abort()),k.clear(),Se.clear(),j.clear();let e=Array.isArray(f.template?.variables)?f.template.variables:[];await Promise.all(e.map(async e=>{if(!e?.key)return;let t=Array.isArray(e.options)?e.options.map(e=>({...e})):[];if(e.dataSource?await Ze(e,t):Z(e.key,{options:t,loading:!1}),e.type===`custom`&&!Je(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;j.has(n)||(j.add(n),Ye({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function Ze(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),Z(e.key,{options:n,loading:!0});let a=Qe(e),o=Date.now(),s=Se.get(a);if(s&&s.expiresAt>o){Z(e.key,{options:s.options,loading:!1}),k.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,f.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=A.get(a);o||(o=$e(e,r,c,i),A.set(a,o),o.finally(()=>{A.get(a)===o&&A.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let ee=Math.max(0,Number(f.remoteOptionsCacheTtlMs)||0);ee>0&&Se.set(a,{options:s,expiresAt:Date.now()+ee}),Z(e.key,{options:s.length?s:n,loading:!1})}catch(t){let r=t instanceof Error&&t.message.startsWith(`高级控件请求超时`);if(i.signal.aborted&&!r)return;let a=t instanceof Error?t.message:`高级控件选项加载失败`;Z(e.key,{options:n,loading:!1,error:a}),Ye({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function Qe(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function $e(e,n,r,i){let a;if(n.kind===`resolver`){if(!f.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await f.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,f.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!f.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,f.remoteRequestTimeoutMs);a=await et(f.requester({url:n.url,method:n.method||`GET`,params:n.params,headers:n.headers,timeoutMs:r,signal:i.signal,variable:e}),i,r)}return t.normalizeContractTemplateControlOptions(a,n.kind===`url`?n:void 0,e.type||`select`)}function et(e,t,n){return new Promise((r,i)=>{let a=()=>{clearTimeout(c),t.signal.removeEventListener(`abort`,s)},o=e=>{a(),e()},s=()=>o(()=>i(Error(`高级控件请求已取消`))),c=setTimeout(()=>{o(()=>i(Error(`高级控件请求超时(${n}ms)`))),t.abort()},n);t.signal.addEventListener(`abort`,s,{once:!0}),e.then(e=>o(()=>r(e)),e=>o(()=>i(e)))})}function tt(e){let t=X(e);return{variable:e,value:g.value[e.key],errors:qe(e.key),active:S.value===e.key,readonly:f.readonly,disabled:f.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>V(e.key,t),focusVariable:()=>J(e.key)}}function nt(){let e=P.value;if(!e.length)return;let t=e.findIndex(e=>e.key===S.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(g.value[i.key])){J(i.key);return}}}function rt(e){let t=T.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?E.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):E.value===`error`?qe(e.key).length>0:!0:!1}function it(){T.value=``,E.value=`all`}function at(e,t){let n=I.value;if(!n.length)return;let r=n.findIndex(t=>t.key===e),i=n[r<0?0:(r+t+n.length)%n.length]?.key;i&&(J(i),(0,s.nextTick)(()=>ot(i)))}function ot(e){(h.value?.querySelector(`[data-field-key="${$(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function st(e){if(e.key!==`Enter`||e.target instanceof HTMLTextAreaElement)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-field-key]`)?.dataset.fieldKey;n&&(e.preventDefault(),at(n,e.shiftKey?-1:1))}function ct(e){let t=new Set;if(typeof DOMParser<`u`)return new DOMParser().parseFromString(e,`text/html`).querySelectorAll(`[data-key]`).forEach(e=>{let n=e.getAttribute(`data-key`)?.trim();n&&t.add(n)}),t;let n=/\bdata-key\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+))/gi,r;for(;r=n.exec(e);){let e=(r[1]??r[2]??r[3]??``).trim();e&&t.add(e)}return t}function lt(){!f.collapsiblePanel||f.interactionMode!==`panel`||(D.value=!D.value)}function Q(e){let t=mt(e);return w.value=t,p(`update:zoom`,t),t}function ut(){return Q(1)}function dt(){return w.value}function ft(){let e=Math.max(...F.value.map(e=>e.width),1);return Q(Math.max(0,Ce.value-48)/e)}function pt(e){e&&(C.value=e,(0,s.nextTick)(()=>{m.value?.querySelector(`[data-render-page-id="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function mt(e){let t=Number(e);return Number.isFinite(t)?Math.min(me,Math.max(pe,Math.round(t*100)/100)):1}function $(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function ht(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function gt(e){!(e.ctrlKey||e.metaKey)||!L.value||(e.preventDefault(),Q(e.deltaY>0?w.value-u:w.value+u))}let _t;function vt(){_t?.removeEventListener(`wheel`,gt),_t=void 0}function yt(e){vt(),e&&(e.addEventListener(`wheel`,gt,{passive:!1}),_t=e)}return(0,s.watch)(m,e=>{yt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{vt(),q(),k.forEach(e=>e.abort()),k.clear()}),ge({showValidation:G,focusError:e=>{Ke(e),e.variableKey&&(0,s.nextTick)(()=>ot(e.variableKey))},getValues:H,setValues:Re,validate:U,submit:ze,resetValues:Be,scrollToVariable:J,setZoom:Q,resetZoom:ut,getZoom:dt,fitWidth:ft,scrollToPage:pt}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ye,class:(0,s.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":d.disabled,"is-readonly":d.readonly,"is-panel":d.interactionMode===`panel`,"is-inline":d.interactionMode===`inline`}]),onClick:Fe,onKeydown:Le,onInput:Pe,onChange:Pe},[(0,s.renderSlot)(e.$slots,`fileBar`),L.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:d.title,"filled-count":R.value,"total-count":P.value.length,"required-missing-count":z.value,zoom:w.value,pages:F.value,"active-page-id":C.value,"min-zoom":pe,"max-zoom":me,"show-toolbar":d.showToolbar,"show-validate-button":d.showValidateButton,"show-reset-button":d.showResetButton,"show-submit-button":d.showSubmitButton,"show-panel-toggle":d.interactionMode===`panel`&&d.collapsiblePanel,"panel-collapsed":D.value,readonly:d.readonly,disabled:d.disabled,onZoomIn:t[0]||=e=>Q(w.value+u),onZoomOut:t[1]||=e=>Q(w.value-u),onResetZoom:ut,onFitWidth:ft,onSelectPage:pt,onValidate:U,onReset:Ve,onSubmit:ze,onTogglePanel:lt},{extra:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`required-missing-count`,`zoom`,`pages`,`active-page-id`,`show-toolbar`,`show-validate-button`,`show-reset-button`,`show-submit-button`,`show-panel-toggle`,`panel-collapsed`,`readonly`,`disabled`])):(0,s.createCommentVNode)(``,!0),Ne.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:je.value,summary:Me.value,errors:N.value,expanded:y.value,onToggle:t[2]||=e=>y.value=!y.value,onFocusError:Ke},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),L.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,class:(0,s.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":d.interactionMode===`inline`}])},[(0,s.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:m,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":x.value},[(0,s.createElementVNode)(`div`,re,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(F.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:F.value.length,zoom:w.value,"show-meta":d.showPageMeta,"font-base-url":d.contractFontBaseUrl,"active-key":x.value,"scroll-request":xe.value,onInteraction:Ie},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`]))),128))])],8,ne),d.interactionMode===`panel`?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":D.value&&d.collapsiblePanel}])},[d.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:D.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":D.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!D.value,onClick:t[3]||=e=>D.value=!D.value},[D.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(l.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(l.RightOutlined),{key:1,"aria-hidden":`true`}))],8,ie)]),_:1},8,[`title`])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,ae,[(0,s.createElementVNode)(`aside`,oe,[(0,s.createElementVNode)(`div`,se,[(0,s.createElementVNode)(`div`,ce,[(0,s.createElementVNode)(`div`,null,[t[6]||=(0,s.createElementVNode)(`strong`,null,`填写项`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(R.value)+` / `+(0,s.toDisplayString)(P.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(z.value?`${z.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:T.value,"onUpdate:value":t[4]||=e=>T.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(l.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,le,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:E.value,"onUpdate:value":t[5]||=e=>E.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:ve},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!Ee.value,onClick:nt},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:Ae.value,size:`small`,"show-info":!1},null,8,[`percent`])]),I.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:h,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:st},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(ke.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,s.createElementVNode)(`div`,ue,[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(t.title),1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.variables.length)+` / `+(0,s.toDisplayString)(t.totalCount)+` 项`,1)]),(0,s.createElementVNode)(`div`,de,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(t.variables,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,s.renderSlot)(e.$slots,`field`,(0,s.mergeProps)({ref_for:!0},tt(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:qe(t.key),active:S.value===t.key,readonly:d.readonly,disabled:d.disabled,options:X(t).options,loading:X(t).loading,"load-error":X(t).error,registration:Je(t),"selector-http":d.selectorHttp,"selector-url-prefix":d.selectorUrlPrefix,onUpdateValue:e=>V(t.key,e),onFocusVariable:e=>J(t.key)},null,8,[`variable`,`value`,`errors`,`active`,`readonly`,`disabled`,`options`,`loading`,`load-error`,`registration`,`selector-http`,`selector-url-prefix`,`onUpdateValue`,`onFocusVariable`])])],8,fe))),128))])]))),128))],544)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:P.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[T.value||E.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:it},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[T.value||E.value!==`all`?{name:`description`,fn:(0,s.withCtx)(()=>[t[8]||=(0,s.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,s.createCommentVNode)(``,!0)],2)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,te,[(0,s.createVNode)((0,s.unref)(c.Empty),{description:`暂无可渲染的合同页面`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=d;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/advanced-controls.cjs`),n=require(`./utils/template-renderer.cjs`),r=require(`./ContractTemplateRendererField.cjs`),i=require(`./ContractTemplateRendererHeader.cjs`),a=require(`./ContractTemplateRendererPage.cjs`),o=require(`./ContractTemplateRendererValidation.cjs`);let s=require(`vue`),c=require(`ant-design-vue`),l=require(`@vueuse/core`),u=require(`@ant-design/icons-vue`);var ee={key:2,class:`gd-contract-template-renderer__empty`},te=[`data-highlighted-variable-key`],ne={class:`gd-contract-template-renderer__pages`},re=[`aria-label`,`aria-expanded`],ie={class:`gd-contract-template-renderer__panel-clip`},ae={class:`gd-contract-template-renderer__panel`},oe={class:`gd-contract-template-renderer__panel-head`},se={class:`gd-contract-template-renderer__panel-head-row`},ce={class:`gd-contract-template-renderer__panel-head-actions`},le={class:`gd-contract-template-renderer__field-group-head`},ue={class:`gd-contract-template-renderer__field-group-items`},de=[`data-field-key`],fe=.5,pe=1.5,d=.1,me=3e3,f=(0,s.defineComponent)({name:`ContractTemplateSingleRenderer`,__name:`ContractTemplateSingleRenderer`,props:{files:{},activeFileId:{},valuesByFile:{},template:{default:void 0},values:{default:void 0},interactionMode:{default:`panel`},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},title:{default:`合同填写`},showSubmitButton:{type:Boolean,default:!0},validateOnSubmit:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},showPageMeta:{type:Boolean,default:!0},collapsiblePanel:{type:Boolean,default:!0},zoom:{default:1},controlRegistry:{default:()=>({})},optionResolver:{type:Function,default:void 0},requester:{type:Function,default:void 0},allowedRemoteOrigins:{default:()=>[]},remoteRequestTimeoutMs:{default:1e4},remoteOptionsCacheTtlMs:{default:3e4},selectorHttp:{default:void 0},selectorUrlPrefix:{default:``},contractFontBaseUrl:{default:void 0}},emits:[`update:activeFileId`,`update:valuesByFile`,`update:values`,`change`,`validate`,`submit`,`update:zoom`,`control-warning`],setup(f,{expose:he,emit:ge}){let p=f,m=ge,_e=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],ve=(0,s.ref)(),h=(0,s.ref)(),ye=(0,s.ref)(),g=(0,s.ref)(n.normalizeRenderValues(p.template,p.values)),be=(0,s.ref)({...g.value}),_=(0,s.ref)(!1),v=(0,s.ref)([]),y=(0,s.ref)(!1),b=(0,s.ref)(!1),x=(0,s.ref)(``),S=(0,s.ref)(``),C=(0,s.ref)(``),xe=(0,s.ref)(0),w=(0,s.ref)(ht(p.zoom)),T=(0,s.ref)(``),E=(0,s.ref)(`all`),D=(0,s.ref)(!1),O=(0,s.ref)(new Map),k=new Map,A=new Map,j=new Map,M=new Set,{width:Se}=(0,l.useElementSize)(h),Ce=(0,s.computed)(()=>p.readonly||p.disabled),N=(0,s.computed)(()=>n.validateTemplateRenderStructure(p.template)),P=(0,s.computed)(()=>_.value?v.value:N.value),F=(0,s.computed)(()=>(Array.isArray(p.template?.variables)?p.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),we=(0,s.computed)(()=>{let e={...g.value};return F.value.forEach(n=>{let r=Xe(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),Te=(0,s.computed)(()=>F.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),Ee=(0,s.computed)(()=>{let e=new Map;return P.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),I=(0,s.computed)(()=>{let e=p.interactionMode===`panel`;return n.buildTemplateRenderPages(p.template,e?we.value:be.value,{readonly:p.readonly,disabled:p.disabled,mode:e?`display`:`control`})}),De=(0,s.computed)(()=>{let e=new Map,t=new Set(F.value.map(e=>e.key));return I.value.forEach(n=>{lt(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),L=(0,s.computed)(()=>F.value.filter(at)),Oe=(0,s.computed)(()=>{let e=I.value.map((e,t)=>({id:`page:${e.id}`,pageId:e.id,title:`第 ${t+1} 页${e.title?` · ${e.title}`:``}`,allVariables:[],variables:[]})),t=new Map(e.map(e=>[e.pageId,e])),n={id:`unlocated`,title:`未定位字段`,allVariables:[],variables:[]};return F.value.forEach(e=>{let r=t.get(De.value.get(e.key)??``)??n;r.allVariables.push(e),at(e)&&r.variables.push(e)}),[...e,n].filter(e=>e.variables.length>0).map(e=>({id:e.id,title:e.title,totalCount:e.allVariables.length,variables:e.variables}))}),R=(0,s.computed)(()=>I.value.length>0),z=(0,s.computed)(()=>F.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),B=(0,s.computed)(()=>F.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),ke=(0,s.computed)(()=>F.value.length?Math.round(z.value/F.value.length*100):0),Ae=(0,s.computed)(()=>_.value&&v.value.length===0),je=(0,s.computed)(()=>_.value?Ae.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:N.value.length?`模板存在 ${N.value.length} 个问题,已安全降级展示`:``),Me=(0,s.computed)(()=>_.value?P.value.length>0||b.value:N.value.length>0);(0,s.watch)(()=>p.template,e=>{V(n.normalizeRenderValues(e,p.values),!1),He();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(C.value)||(C.value=t.find(Boolean)??``),S.value&&!F.value.some(e=>e.key===S.value)&&Ke()},{deep:!0}),(0,s.watch)(()=>[p.template?.variables,p.optionResolver,p.requester,p.allowedRemoteOrigins,p.remoteRequestTimeoutMs,p.remoteOptionsCacheTtlMs],()=>{Qe()},{deep:!0,immediate:!0}),(0,s.watch)(()=>p.values,e=>{let t=n.normalizeRenderValues(p.template,e);gt(t,g.value)||(V(t,!1,{refreshInlineHtml:p.interactionMode!==`inline`}),He())},{deep:!0}),(0,s.watch)(()=>p.interactionMode,e=>{e===`inline`&&(be.value={...g.value})}),(0,s.watch)(()=>p.collapsiblePanel,e=>{e||(D.value=!1)}),(0,s.watch)(()=>p.zoom,e=>w.value=ht(e)),(0,s.watch)(I,e=>{!C.value&&e.length&&(C.value=e[0].id)},{immediate:!0});function V(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(m(`update:values`,{...g.value}),m(`change`,{...g.value}))}function H(e,t){!e||Ce.value||(V({...g.value,[e]:t},!0,{refreshInlineHtml:p.interactionMode!==`inline`}),_.value&&Re())}function Ne(e){if(p.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?H(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?H(n,t.value===``?void 0:t.valueAsNumber):H(n,t.value))}function Pe(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(C.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&q(r)}function Fe(e){let t=I.value.find(t=>t.id===e.pageId),n=F.value.some(t=>t.key===e.key);if(!(!t||!n||!lt(t.contentHtml).has(e.key))&&!(e.kind===`input`&&p.interactionMode!==`inline`)){if(C.value=e.pageId,e.kind===`input`){H(e.key,e.value);return}q(e.key)}}function Ie(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),q(t.dataset.key))}function U(){return{...g.value}}function Le(e){V(n.normalizeRenderValues(p.template,e))}function Re(){let e=n.validateTemplateRenderValues(p.template,g.value);return Ue(e),m(`validate`,e),e}function ze(){let e=n.resolveTemplateRenderSubmitErrors(p.template,g.value,p.validateOnSubmit);if((p.validateOnSubmit||e.length)&&(Ue(e),m(`validate`,e)),e.length)return Je(e[0]),!1;let t=U();return m(`submit`,t),t}function Be(){return V(n.buildInitialRenderValues(p.template)),He(),U()}function Ve(){Ce.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Be()})}function He(){_.value=!1,v.value=[],y.value=!1,b.value=!1,G()}function Ue(e){if(v.value=e,_.value=!0,y.value=!1,e.length){b.value=!1,G();return}We()}let W;function G(){W&&=(clearTimeout(W),void 0)}function We(){G(),b.value=!0,W=setTimeout(()=>{b.value=!1,W=void 0},me)}function K(e){q(e,!0)}function Ge(e){p.interactionMode===`panel`&&(D.value&&=!1,F.value.some(t=>t.key===e)&&!L.value.some(t=>t.key===e)&&ot())}function q(e,t=!1){if(!e)return;Ge(e),S.value=e,x.value=e;let n=De.value.get(e);n&&(C.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{qe(e);let r=n?h.value?.querySelector(`[data-render-page-id="${Q(n)}"]`):void 0;t&&r?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),p.interactionMode===`panel`&&ye.value?.querySelector(`[data-field-key="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function Ke(){S.value=``,x.value=``,qe(``)}function qe(e){h.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function Je(e){e.variableKey?(K(e.variableKey),p.interactionMode===`panel`&&(0,s.nextTick)(()=>X(e.variableKey))):e.pageId&&mt(e.pageId)}function Ye(e){return Ee.value.get(e)??[]}function J(e){return O.value.get(e.key)??{options:e.options??[],loading:!1}}function Xe(e){let t=e.componentKey||e.type||``;return t?p.controlRegistry?.[t]:void 0}function Y(e,t){let n=new Map(O.value);n.set(e,t),O.value=n}function Ze(e){m(`control-warning`,e)}async function Qe(){k.forEach(e=>e.abort()),k.clear(),A.clear(),M.clear();let e=Array.isArray(p.template?.variables)?p.template.variables:[];await Promise.all(e.map(async e=>{if(!e?.key)return;let t=Array.isArray(e.options)?e.options.map(e=>({...e})):[];if(e.dataSource?await $e(e,t):Y(e.key,{options:t,loading:!1}),e.type===`custom`&&!Xe(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;M.has(n)||(M.add(n),Ze({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function $e(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),Y(e.key,{options:n,loading:!0});let a=et(e),o=Date.now(),s=A.get(a);if(s&&s.expiresAt>o){Y(e.key,{options:s.options,loading:!1}),k.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,p.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=j.get(a);o||(o=tt(e,r,c,i),j.set(a,o),o.finally(()=>{j.get(a)===o&&j.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let l=Math.max(0,Number(p.remoteOptionsCacheTtlMs)||0);l>0&&A.set(a,{options:s,expiresAt:Date.now()+l}),Y(e.key,{options:s.length?s:n,loading:!1})}catch(t){let r=t instanceof Error&&t.message.startsWith(`高级控件请求超时`);if(i.signal.aborted&&!r)return;let a=t instanceof Error?t.message:`高级控件选项加载失败`;Y(e.key,{options:n,loading:!1,error:a}),Ze({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function et(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function tt(e,n,r,i){let a;if(n.kind===`resolver`){if(!p.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await p.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,p.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!p.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,p.remoteRequestTimeoutMs);a=await nt(p.requester({url:n.url,method:n.method||`GET`,params:n.params,headers:n.headers,timeoutMs:r,signal:i.signal,variable:e}),i,r)}return t.normalizeContractTemplateControlOptions(a,n.kind===`url`?n:void 0,e.type||`select`)}function nt(e,t,n){return new Promise((r,i)=>{let a=()=>{clearTimeout(c),t.signal.removeEventListener(`abort`,s)},o=e=>{a(),e()},s=()=>o(()=>i(Error(`高级控件请求已取消`))),c=setTimeout(()=>{o(()=>i(Error(`高级控件请求超时(${n}ms)`))),t.abort()},n);t.signal.addEventListener(`abort`,s,{once:!0}),e.then(e=>o(()=>r(e)),e=>o(()=>i(e)))})}function rt(e){let t=J(e);return{variable:e,value:g.value[e.key],errors:Ye(e.key),active:S.value===e.key,readonly:p.readonly,disabled:p.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>H(e.key,t),focusVariable:()=>K(e.key)}}function it(){let e=F.value;if(!e.length)return;let t=e.findIndex(e=>e.key===S.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(g.value[i.key])){K(i.key);return}}}function at(e){let t=T.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?E.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):E.value===`error`?Ye(e.key).length>0:!0:!1}function ot(){T.value=``,E.value=`all`}function st(e,t){let n=L.value;if(!n.length)return;let r=n.findIndex(t=>t.key===e),i=n[r<0?0:(r+t+n.length)%n.length]?.key;i&&(K(i),(0,s.nextTick)(()=>X(i)))}function X(e){(ye.value?.querySelector(`[data-field-key="${Q(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function ct(e){if(e.key!==`Enter`||e.target instanceof HTMLTextAreaElement)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-field-key]`)?.dataset.fieldKey;n&&(e.preventDefault(),st(n,e.shiftKey?-1:1))}function lt(e){let t=new Set;if(typeof DOMParser<`u`)return new DOMParser().parseFromString(e,`text/html`).querySelectorAll(`[data-key]`).forEach(e=>{let n=e.getAttribute(`data-key`)?.trim();n&&t.add(n)}),t;let n=/\bdata-key\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+))/gi,r;for(;r=n.exec(e);){let e=(r[1]??r[2]??r[3]??``).trim();e&&t.add(e)}return t}function ut(){!p.collapsiblePanel||p.interactionMode!==`panel`||(D.value=!D.value)}function Z(e){let t=ht(e);return w.value=t,m(`update:zoom`,t),t}function dt(){return Z(1)}function ft(){return w.value}function pt(){let e=Math.max(...I.value.map(e=>e.width),1);return Z(Math.max(0,Se.value-48)/e)}function mt(e){e&&(C.value=e,(0,s.nextTick)(()=>{h.value?.querySelector(`[data-render-page-id="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function ht(e){let t=Number(e);return Number.isFinite(t)?Math.min(pe,Math.max(fe,Math.round(t*100)/100)):1}function Q(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function gt(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function _t(e){!(e.ctrlKey||e.metaKey)||!R.value||(e.preventDefault(),Z(e.deltaY>0?w.value-d:w.value+d))}let $;function vt(){$?.removeEventListener(`wheel`,_t),$=void 0}function yt(e){vt(),e&&(e.addEventListener(`wheel`,_t,{passive:!1}),$=e)}return(0,s.watch)(h,e=>{yt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{vt(),G(),k.forEach(e=>e.abort()),k.clear()}),he({showValidation:Ue,focusError:e=>{Je(e),e.variableKey&&(0,s.nextTick)(()=>X(e.variableKey))},getValues:U,setValues:Le,validate:Re,submit:ze,resetValues:Be,scrollToVariable:K,setZoom:Z,resetZoom:dt,getZoom:ft,fitWidth:pt,scrollToPage:mt}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ve,class:(0,s.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":f.disabled,"is-readonly":f.readonly,"is-panel":f.interactionMode===`panel`,"is-inline":f.interactionMode===`inline`}]),onClick:Pe,onKeydown:Ie,onInput:Ne,onChange:Ne},[(0,s.renderSlot)(e.$slots,`fileBar`),R.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:f.title,"filled-count":z.value,"total-count":F.value.length,"progress-percent":ke.value,"required-missing-count":B.value,zoom:w.value,pages:I.value,"active-page-id":C.value,"min-zoom":fe,"max-zoom":pe,"show-toolbar":f.showToolbar,"show-validate-button":f.showValidateButton,"show-reset-button":f.showResetButton,"show-submit-button":f.showSubmitButton,"show-panel-toggle":f.interactionMode===`panel`&&f.collapsiblePanel,"panel-collapsed":D.value,readonly:f.readonly,disabled:f.disabled,onZoomIn:t[0]||=e=>Z(w.value+d),onZoomOut:t[1]||=e=>Z(w.value-d),onResetZoom:dt,onFitWidth:pt,onSelectPage:mt,onValidate:Re,onReset:Ve,onSubmit:ze,onTogglePanel:ut},{extra:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`progress-percent`,`required-missing-count`,`zoom`,`pages`,`active-page-id`,`show-toolbar`,`show-validate-button`,`show-reset-button`,`show-submit-button`,`show-panel-toggle`,`panel-collapsed`,`readonly`,`disabled`])):(0,s.createCommentVNode)(``,!0),Me.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:Ae.value,summary:je.value,errors:P.value,expanded:y.value,onToggle:t[2]||=e=>y.value=!y.value,onFocusError:Je},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),R.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,class:(0,s.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":f.interactionMode===`inline`}])},[(0,s.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:h,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":x.value},[(0,s.createElementVNode)(`div`,ne,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(I.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:I.value.length,zoom:w.value,"show-meta":f.showPageMeta,"font-base-url":f.contractFontBaseUrl,"active-key":x.value,"scroll-request":xe.value,onInteraction:Fe},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`]))),128))])],8,te),f.interactionMode===`panel`?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":D.value&&f.collapsiblePanel}])},[f.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:D.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":D.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!D.value,onClick:t[3]||=e=>D.value=!D.value},[D.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(u.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(u.RightOutlined),{key:1,"aria-hidden":`true`}))],8,re)]),_:1},8,[`title`])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,ie,[(0,s.createElementVNode)(`aside`,ae,[(0,s.createElementVNode)(`div`,oe,[(0,s.createElementVNode)(`div`,se,[(0,s.createElementVNode)(`div`,null,[t[6]||=(0,s.createElementVNode)(`strong`,null,`填写项`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(z.value)+` / `+(0,s.toDisplayString)(F.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(B.value?`${B.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:T.value,"onUpdate:value":t[4]||=e=>T.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,ce,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:E.value,"onUpdate:value":t[5]||=e=>E.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:_e},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!Te.value,onClick:it},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:ke.value,size:`small`,"show-info":!1},null,8,[`percent`])]),L.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:ye,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:ct},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(Oe.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,s.createElementVNode)(`div`,le,[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(t.title),1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.variables.length)+` / `+(0,s.toDisplayString)(t.totalCount)+` 项`,1)]),(0,s.createElementVNode)(`div`,ue,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(t.variables,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,s.renderSlot)(e.$slots,`field`,(0,s.mergeProps)({ref_for:!0},rt(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:Ye(t.key),active:S.value===t.key,readonly:f.readonly,disabled:f.disabled,options:J(t).options,loading:J(t).loading,"load-error":J(t).error,registration:Xe(t),"selector-http":f.selectorHttp,"selector-url-prefix":f.selectorUrlPrefix,onUpdateValue:e=>H(t.key,e),onFocusVariable:e=>K(t.key)},null,8,[`variable`,`value`,`errors`,`active`,`readonly`,`disabled`,`options`,`loading`,`load-error`,`registration`,`selector-http`,`selector-url-prefix`,`onUpdateValue`,`onFocusVariable`])])],8,de))),128))])]))),128))],544)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:F.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[T.value||E.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:ot},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[T.value||E.value!==`all`?{name:`description`,fn:(0,s.withCtx)(()=>[t[8]||=(0,s.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,s.createCommentVNode)(``,!0)],2)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,ee,[(0,s.createVNode)((0,s.unref)(c.Empty),{description:`暂无可渲染的合同页面`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=f;
|
package/dist/lib/components/pro-contract-template-designer/src/extensions/editor-extensions.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../utils/signing-mark.cjs`),n=require(`../constants.cjs`),r=require(`./template-variable.cjs`),i=require(`./font-size.cjs`),a=require(`./office-content.cjs`),o=require(`./word-paste.cjs`),s=require(`./signing-mark.cjs`),c=require(`../utils/signing-layout-presets.cjs`);let
|
|
1
|
+
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../utils/signing-mark.cjs`),n=require(`../constants.cjs`),r=require(`./template-variable.cjs`),i=require(`./font-size.cjs`),a=require(`./office-content.cjs`),o=require(`./word-paste.cjs`),s=require(`./signing-mark.cjs`),c=require(`../utils/signing-layout-presets.cjs`),l=require(`./paragraph-enter.cjs`);let u=require(`@tiptap/starter-kit`);u=e.__toESM(u,1);let d=require(`@tiptap/extension-text-align`);d=e.__toESM(d,1);let f=require(`@tiptap/extension-text-style`),p=require(`@tiptap/extension-color`);p=e.__toESM(p,1);let m=require(`@tiptap/extension-placeholder`);m=e.__toESM(m,1);let h=require(`@tiptap/extension-table`),g=require(`@tiptap/extension-table-row`);g=e.__toESM(g,1);let _=require(`@tiptap/extension-table-header`);_=e.__toESM(_,1);let v=require(`@tiptap/extension-table-cell`);v=e.__toESM(v,1);var y=[`heading`,`paragraph`],b=[`textStyle`],x=[1,2,3,4,5,6];function S(e){return e.extend({addAttributes(){return{...this.parent?.(),textAlign:{default:`left`,parseHTML:e=>e.style.textAlign||`left`,renderHTML:e=>({style:`text-align: ${e.textAlign||`left`}`})}}}})}var C=class extends h.TableView{constructor(e,t,n,r={}){super(e,t,n,r),this.syncSigningLayoutAttribute(e)}update(e){return super.update(e)?(this.syncSigningLayoutAttribute(e),!0):!1}syncSigningLayoutAttribute(e){let t=c.isSigningLayoutAttributeValue(e.attrs.signingLayout)?e.attrs.signingLayout:``;t?this.table.getAttribute(`data-signing-layout`)!==t&&this.table.setAttribute(`data-signing-layout`,t):this.table.hasAttribute(`data-signing-layout`)&&this.table.removeAttribute(`data-signing-layout`)}},w=h.Table.extend({addAttributes(){return{...this.parent?.(),signingLayout:{default:null,parseHTML:e=>{let t=e.getAttribute(`data-signing-layout`);return c.isSigningLayoutAttributeValue(t)?t:null},renderHTML:e=>c.isSigningLayoutAttributeValue(e.signingLayout)?{"data-signing-layout":e.signingLayout}:{}}}}});function T(e,t){return t?c.buildSigningLayoutContent(t,c.isSigningLayoutPresetKey(e)?e:void 0):c.buildSigningLayoutPresetContent(c.isSigningLayoutPresetKey(e)?e:`dual-party`)}function E(e=`请输入合同正文`,t={}){return[u.default.configure({heading:{levels:x}}),d.default.configure({types:y}),f.TextStyle,f.FontFamily.configure({types:b}),p.default.configure({types:b}),f.BackgroundColor.configure({types:b}),i.FontSize,a.ContractSuperscript,a.ContractSubscript,a.OfficeContentFormatting,m.default.configure({placeholder:e}),w.configure({resizable:!0,View:C}),g.default,S(_.default),S(v.default),a.ContractContentImage.configure({getZoom:t.getZoom}),s.SigningMark.configure({getZoom:t.getZoom}),r.TemplateVariable,o.WordPaste.configure({processImageFile:t.processImageFile,confirmExternalFontPaste:t.confirmExternalFontPaste}),l.ContractParagraphEnter]}function D(e){return Number.isFinite(e)?`${Math.max(10,Math.round(e))}px`:`14px`}function O(e,r){switch(r.type){case`undo`:return e.undo();case`redo`:return e.redo();case`select-all`:return e.selectAll();case`set-paragraph`:return e.setParagraph();case`set-heading`:return e.setHeading({level:r.level});case`apply-block-style`:return r.format===`paragraph`?e.setParagraph():e.setHeading({level:r.format});case`toggle-heading`:return e.toggleHeading({level:r.level});case`set-bold`:return e.setBold();case`toggle-bold`:return e.toggleBold();case`unset-bold`:return e.unsetBold();case`set-italic`:return e.setItalic();case`toggle-italic`:return e.toggleItalic();case`unset-italic`:return e.unsetItalic();case`set-underline`:return e.setUnderline();case`toggle-underline`:return e.toggleUnderline();case`unset-underline`:return e.unsetUnderline();case`toggle-bullet-list`:return e.toggleBulletList();case`toggle-ordered-list`:return e.toggleOrderedList();case`set-text-align`:return e.setTextAlign(r.value);case`unset-text-align`:return e.unsetTextAlign();case`set-color`:return r.value.trim()?e.setColor(r.value):e.unsetColor();case`unset-color`:return e.unsetColor();case`set-font-size`:return e.setFontSize(D(r.value));case`unset-font-size`:return e.unsetFontSize();case`set-font-family`:return r.value.trim()?e.setFontFamily(r.value):e.unsetFontFamily();case`unset-font-family`:return e.unsetFontFamily();case`clear-text-format`:return e.unsetBold().unsetItalic().unsetUnderline().unsetColor().unsetFontSize().unsetFontFamily();case`clear-block-format`:return e.setParagraph().unsetTextAlign();case`apply-text-style-preset`:return n.resolveContractTextStylePresetCommands(r.preset).reduce(O,e);case`insert-horizontal-rule`:return e.setHorizontalRule();case`insert-content-image`:return r.position===void 0?e.insertContent({type:`image`,attrs:r.image}):e.insertContentAt(r.position,{type:`image`,attrs:r.image});case`insert-signing-mark`:{let n={type:`signingMark`,attrs:t.buildSigningMarkAttrs(r.mark.markType,r.mark)};return r.position===void 0?e.insertContent(n):e.insertContentAt(r.position,n)}case`insert-signing-layout`:return e.insertContent(T(r.preset,r.options));case`insert-table`:return e.insertTable({rows:Math.max(1,Math.round(r.options.rows)),cols:Math.max(1,Math.round(r.options.cols)),withHeaderRow:r.options.withHeaderRow});case`add-table-row-before`:return e.addRowBefore();case`add-table-row-after`:return e.addRowAfter();case`delete-table-row`:return e.deleteRow();case`add-table-column-before`:return e.addColumnBefore();case`add-table-column-after`:return e.addColumnAfter();case`delete-table-column`:return e.deleteColumn();case`merge-table-cells`:return e.mergeCells();case`split-table-cell`:return e.splitCell();case`set-table-cell-align`:return e.setCellAttribute(`textAlign`,r.value);case`toggle-table-header-row`:return e.toggleHeaderRow();case`toggle-table-header-column`:return e.toggleHeaderColumn();case`toggle-table-header-cell`:return e.toggleHeaderCell();case`delete-table`:return e.deleteTable()}}function k(e,t,n={}){return e?O(n.focus===!1?e.chain():e.chain().focus(),t).run():!1}exports.createEditorExtensions=E,exports.runContractTemplateEditorCommand=k;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);let e=require(`@tiptap/core`),t=require(`@tiptap/pm/state`);var n=[`heading`,`paragraph`],r=e.Extension.create({name:`contractParagraphEnter`,addKeyboardShortcuts(){return{Enter:()=>{let{selection:e}=this.editor.state,{$from:r,$to:i}=e;return!(e instanceof t.TextSelection)||r.depth!==1||i.depth!==1||r.parent!==i.parent||!n.includes(r.parent.type.name)?!1:this.editor.chain().command(({commands:e,tr:t})=>{if(!e.splitBlock())return!1;let{$from:r}=t.selection;if(r.depth===1&&n.includes(r.parent.type.name)){let e=r.before(),n=t.doc.nodeAt(e);if(n){let r=t.storedMarks;t.setNodeMarkup(e,void 0,{...n.attrs,textAlign:null}),t.setStoredMarks(r)}}return!0}).run()}}}});exports.ContractParagraphEnter=r;
|