@guodun/antdv 1.7.12 → 1.7.14
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/contract-signing-location/src/ContractSigningLocation.vue.mjs +373 -295
- package/dist/es/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.mjs +219 -202
- package/dist/es/components/contract-signing-location/src/ContractSigningTemplatePage.vue.mjs +18 -18
- package/dist/es/components/contract-signing-location/src/template-source.mjs +62 -49
- package/dist/es/components/index.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/index.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.mjs +37 -42
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.mjs +69 -55
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.mjs +278 -270
- package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +344 -343
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1025 -964
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.mjs +120 -74
- package/dist/es/components/pro-contract-template-designer/src/SigningLayoutCustomModal.vue.mjs +72 -59
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +133 -132
- package/dist/es/components/pro-contract-template-designer/src/utils/contract-layout-check.mjs +239 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/contract-print-document.mjs +95 -71
- package/dist/es/components/pro-contract-template-designer/src/utils/page-decorations.mjs +67 -76
- package/dist/es/components/pro-contract-template-designer/src/utils/signing-layout-presets.mjs +77 -61
- package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +96 -83
- package/dist/es/components/pro-contract-template-designer/src/utils/template-variable-render.mjs +23 -15
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/es/contract-print-css/index.mjs +134 -30
- package/dist/es/contract-print.mjs +2 -0
- package/dist/es/index.mjs +21 -20
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocation.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -1
- package/dist/lib/components/index.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/index.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererPage.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/DesignerPage.vue.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/SigningLayoutCustomModal.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
- package/dist/lib/components/pro-contract-template-designer/src/utils/contract-layout-check.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/contract-print-document.cjs +50 -28
- package/dist/lib/components/pro-contract-template-designer/src/utils/page-decorations.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/signing-layout-presets.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +5 -5
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-variable-render.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/lib/contract-print-css/index.cjs +74 -23
- package/dist/lib/contract-print.cjs +1 -0
- package/dist/lib/index.cjs +1 -1
- package/dist/theme/icon.css +1 -1
- package/dist/theme/index.css +1 -1
- package/dist/types/components/contract-signing-location/src/ContractSigningLocation.vue.d.ts +9 -0
- package/dist/types/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.d.ts +7 -0
- package/dist/types/components/contract-signing-location/src/template-source.d.ts +6 -0
- package/dist/types/components/pro-contract-template-designer/index.d.ts +1 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.d.ts +2 -0
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +5 -1
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.d.ts +7 -2
- package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +2 -2
- package/dist/types/components/pro-contract-template-designer/src/types.d.ts +36 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/contract-layout-check.d.ts +104 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/contract-print-document.d.ts +4 -1
- package/dist/types/components/pro-contract-template-designer/src/utils/page-decorations.d.ts +2 -8
- package/dist/types/components/pro-contract-template-designer/src/utils/signing-layout-presets.d.ts +9 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +6 -1
- package/dist/types/contract-print-css/index.d.ts +70 -0
- package/dist/types/contract-print.d.ts +2 -0
- package/package.json +14 -2
package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`),require(`./constants.cjs`);const e=require(`./ContractSigningTemplatePage.cjs`),t=require(`./coordinates.cjs`),n=require(`./template-source.cjs`),r=require(`./location-rules.cjs`),i=require(`./page-layout.cjs`),a=require(`../../pro-contract-template-designer/src/composables/use-fit-width-zoom.cjs`),o=require(`./signing-visuals.cjs`);let s=require(`vue`),c=require(`ant-design-vue`),l=require(`@vueuse/core`),u=require(`@ant-design/icons-vue`);var d={class:`gd-ant-contract-signing-location__workspace`},f={class:`gd-ant-contract-signing-location__workspace-head`},p={key:0},m={class:`gd-ant-contract-signing-location__workspace-tools`},h={class:`gd-ant-contract-signing-location__page-jumper`,"aria-label":`页码跳转`},g=[`value`,`max`],_={class:`gd-ant-contract-signing-location__zoom-tools`,"aria-label":`页面缩放`},ee=[`aria-label`],te={key:1,class:`gd-ant-contract-signing-location__page-placeholder is-error`,role:`alert`},ne=[`src`],re={key:3,class:`gd-ant-contract-signing-location__page-placeholder`},ie=[`onClick`],ae=[`onClick`],oe={class:`gd-ant-contract-signing-location__render-region`},se={class:`gd-ant-contract-signing-location__render-region-content`},ce={class:`is-horizontal is-top`},le={class:`is-horizontal is-bottom`},ue={class:`is-vertical is-left`},de={class:`is-vertical is-right`},fe={key:1,class:`gd-ant-contract-signing-location__snap-guides`,"aria-hidden":`true`},pe=[`title`,`aria-label`,`aria-pressed`,`onClick`,`onPointerdown`,`onKeydown`],me={class:`gd-ant-contract-signing-location__placement-body`},he=[`src`,`alt`],ge={key:0,class:`gd-ant-contract-signing-location__placement-badge`},_e=[`onPointerdown`],ve=[`title`,`aria-label`],ye={class:`gd-ant-contract-signing-location__placement-body`},be=[`src`],xe={class:`gd-ant-contract-signing-location__placement-reference-badge`},v=(0,s.defineComponent)({name:`ContractSigningLocationCanvas`,__name:`ContractSigningLocationCanvas`,props:{file:{},pages:{},placements:{},referencePlacements:{default:()=>[]},selectedPlacementId:{},readonly:{type:Boolean},resizable:{type:Boolean},zoom:{},previewLoadingKeys:{},previewErrorMap:{},activePageIndex:{},minZoom:{},maxZoom:{},sealSizeLimit:{},sealTypeOptions:{},fontBaseUrl:{}},emits:[`select`,`add`,`update`,`remove`,`retry`,`visible-pages`,`view-page`,`page-change`,`zoom-change`,`scroll-to-ready`,`template-status`],setup(v,{expose:Se,emit:Ce}){let we=[`nw`,`n`,`ne`,`e`,`se`,`s`,`sw`,`w`],y=v,b=Ce,x=(0,s.ref)(null),S=(0,s.ref)(null),C=(0,s.shallowRef)(1),w=(0,s.shallowRef)(y.activePageIndex),T=(0,s.shallowRef)({start:0,end:-1}),{width:Te}=(0,l.useElementSize)(x),Ee=(0,s.computed)(()=>Math.max(...y.pages.map(e=>e.displayWidth||e.width||i.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE.width),i.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE.width)),{fitWidth:De,markUserAdjusted:Oe}=a.useFitWidthZoom({viewportWidth:Te,widestPageWidth:Ee,padding:48,minZoom:()=>y.minZoom,maxZoom:()=>y.maxZoom,getZoom:()=>y.zoom,applyZoom:e=>(b(`zoom-change`,e),e)}),E=(0,s.shallowRef)([]),D=(0,s.shallowRef)(),O=(0,s.shallowRef)(),k,A=0,j,M,N,P,F=(0,s.computed)(()=>i.buildPageLayouts(y.pages,y.zoom,16)),ke=(0,s.computed)(()=>i.getPageLayoutsContentSize(F.value)),I=(0,s.computed)(()=>n.isContractSigningTemplateFile(y.file)),Ae=(0,s.computed)(()=>n.buildContractSigningTemplateRenderPages(y.file?.source)),je=(0,s.computed)(()=>new Map(Ae.value.map(e=>[e.pageIndex,e]))),L=(0,s.computed)(()=>n.getContractSigningTemplateDisplayError(y.file)),Me=(0,s.computed)(()=>{let e=T.value;return F.value.length?e.end<e.start?F.value.slice(0,2):F.value.slice(e.start,e.end+1):[]}),R=(0,s.computed)(()=>Me.value.flatMap(e=>{let t=U(e.pageIndex);return t?[{layout:e,page:t,logical:W(t),templatePage:je.value.get(e.pageIndex)}]:[]})),z=(0,s.computed)(()=>y.pages.find(e=>e.pageIndex===w.value)??y.pages[0]),Ne=(0,s.computed)(()=>Math.min(y.minZoom,y.maxZoom)),Pe=(0,s.computed)(()=>Math.max(y.minZoom,y.maxZoom)),B=(0,s.computed)(()=>y.placements.find(e=>e.id===y.selectedPlacementId)),Fe=new Date,V=new Map,H=(0,s.shallowRef)({});function Ie(e){return JSON.stringify([e.signType,e.sealType??[],y.sealTypeOptions??[]])}function Le(e){let t=Ie(e),n=V.get(t);if(n)return n;let r=o.getContractSigningPlacementVisual(e,{sealTypeOptions:y.sealTypeOptions,date:Fe});if(V.size>=128){let e=V.keys().next().value;e!==void 0&&V.delete(e)}return V.set(t,r),r}let Re=(0,s.computed)(()=>{let e=new WeakMap;return y.placements.forEach(t=>{e.set(t,Le(t))}),y.referencePlacements.forEach(t=>{e.set(t,Le(t))}),e});(0,s.watch)(()=>y.activePageIndex,e=>{w.value=e,Qe()||Q(e)}),(0,s.watch)(()=>y.pages.map(e=>e.pageIndex).join(`,`),()=>{H.value={},b(`template-status`,I.value?`loading`:`ready`),(0,s.nextTick)(()=>{X(),Z(),b(`scroll-to-ready`)})}),(0,s.watch)(()=>R.value.map(e=>e.layout.pageIndex).join(`,`),()=>{Be()}),(0,s.watch)(()=>y.zoom,(e,t)=>{if(!x.value||t==null||e===t)return;let n=Ze(),r=i.buildPageLayouts(y.pages,t,16),a=i.findPageAtOffset(r,n.layoutScrollTop+1)??r[0];if(!a)return;N={pageIndex:a.pageIndex,offsetInPage:n.layoutScrollTop-a.top};let o=e/Math.max(.01,t);(0,s.nextTick)(()=>et(o))}),(0,s.onMounted)(()=>{X(),Z(),b(`scroll-to-ready`),!(typeof ResizeObserver>`u`||!x.value)&&(P=new ResizeObserver(()=>{X(),Z()}),P.observe(x.value))}),(0,s.onBeforeUnmount)(()=>{_t(),ct(),j&&clearTimeout(j),P?.disconnect(),P=void 0});function U(e){return y.pages.find(t=>t.pageIndex===e)}function ze(e,t,n){H.value={...H.value,[e]:{status:t,detail:n}},Be()}function Be(){if(!I.value){b(`template-status`,`ready`);return}let e=R.value.filter(e=>e.templatePage).map(e=>H.value[e.layout.pageIndex]),t=e.find(e=>e?.status===`error`);if(t){b(`template-status`,`error`,t.detail);return}b(`template-status`,e.length>0&&e.every(e=>e?.status===`ready`)?`ready`:`loading`)}function W(e){return e&&r.isContractSigningPageUsable(e)?{width:e.width,height:e.height}:{...i.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE}}function G(e){if(!e||!r.isContractSigningPageUsable(e))return{...i.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE};let t=Number(e.displayWidth),n=Number(e.displayHeight);return{width:Number.isFinite(t)&&t>0?t:e.width,height:Number.isFinite(n)&&n>0?n:e.height}}function Ve(e){return`${y.file?.fileId??``}:${e}`}function He(e){return y.previewLoadingKeys.includes(Ve(e))}function Ue(e){return y.previewErrorMap[Ve(e)]||``}function We(e){return y.placements.filter(t=>t.pageIndex===e)}function Ge(e){return y.referencePlacements.filter(t=>t.pageIndex===e)}function K(e){let n=B.value;return n&&n.pageIndex===e.pageIndex?t.getContractSigningPlacementDistances(n,e):void 0}function Ke(e){let n=t.getContractSigningRuleGeometry(e),r=U(e.pageIndex),i=G(r),a=W(r);return{left:`${n.signLeft*i.width/Math.max(1,a.width)}px`,top:`${n.signTop*i.height/Math.max(1,a.height)}px`,width:`${n.signWidth*i.width/Math.max(1,a.width)}px`,height:`${n.signHeight*i.height/Math.max(1,a.height)}px`}}function qe(e){let n=t.getContractSigningRuleGeometry(e),r=U(e.pageIndex),i=G(r),a=W(r),o=i.width/Math.max(1,a.width),s=i.height/Math.max(1,a.height);return{"--gd-contract-sign-left":`${n.signLeft*o}px`,"--gd-contract-sign-top":`${n.signTop*s}px`,"--gd-contract-sign-right":`${(n.signLeft+n.signWidth)*o}px`,"--gd-contract-sign-bottom":`${(n.signTop+n.signHeight)*s}px`}}function Je(e,t){let n=G(t),r=W(t),i=e.axis===`x`?n.width/Math.max(1,r.width):n.height/Math.max(1,r.height);return e.axis===`x`?{left:`${e.position*i}px`}:{top:`${e.position*i}px`}}function q(e,n){return t.clampContractSigningPlacement(e,n,{sealSizeLimit:y.sealSizeLimit,sealTypes:e.sealType,sealTypeOptions:y.sealTypeOptions})}function J(e){return Re.value.get(e)??Le(e)}function Ye(e){return t.canResizeContractSigningPlacement(e,y.resizable,y.readonly)&&e.id===y.selectedPlacementId}function Xe(e){return{...e,sealType:e.sealType?[...e.sealType]:void 0}}function Ze(){let e=x.value,t=S.value;if(!e)return{layoutScrollTop:0,viewportHeight:0};let n=t?.offsetTop??0;return{layoutScrollTop:e.scrollTop-n,viewportHeight:e.clientHeight}}function Y(e,t){let n=S.value;if(n){let r=n.getBoundingClientRect();return{x:e-r.left,y:t-r.top}}let r=x.value;if(!r)return{x:e,y:t};let i=r.getBoundingClientRect(),a=Number.parseFloat(getComputedStyle(r).paddingLeft)||0,o=Number.parseFloat(getComputedStyle(r).paddingTop)||0;return{x:e-i.left+r.scrollLeft-a,y:t-i.top+r.scrollTop-o}}function Qe(){return!!(document.activeElement&&document.activeElement.tagName===`INPUT`)}function X(){let e=Ze();T.value=i.getVisibleRange(F.value,e.layoutScrollTop,e.viewportHeight,1);let t=i.findPageAtOffset(F.value,e.layoutScrollTop+1);if(t){let e=w.value!==t.pageIndex;w.value=t.pageIndex,Qe()||Q(t.pageIndex),e&&b(`view-page`,t.pageIndex)}}function Z(){let e=T.value;b(`visible-pages`,F.value.slice(Math.max(0,e.start),e.end+1).map(e=>e.pageIndex))}function $e(){X(),j&&clearTimeout(j),j=setTimeout(()=>{Z(),w.value!==M&&(M=w.value,b(`page-change`,w.value))},80)}function et(e){let t=x.value,n=S.value,r=N;if(N=void 0,!t||!n||!r)return;let i=F.value.find(e=>e.pageIndex===r.pageIndex);i&&(t.scrollTop=n.offsetTop+i.top+r.offsetInPage*e,X())}function tt(e){let t=x.value,n=S.value;t&&(w.value=e,Q(e),b(`page-change`,e),M=e,(0,s.nextTick)(()=>{let r=i.getPageLayoutScrollTop(F.value,e);t.scrollTop=(n?.offsetTop??0)+r,X(),Z()}))}function nt(e){let n=y.placements.find(t=>t.id===e),r=x.value,i=S.value;if(!n||!r)return;let a=F.value.find(e=>e.pageIndex===n.pageIndex);a&&(w.value=n.pageIndex,Q(n.pageIndex),(0,s.nextTick)(()=>{let e=Ze(),o=U(n.pageIndex),s=G(o),c=W(o),l=a.top+t.getContractSigningRuleGeometry(n).signTop*s.height/Math.max(1,c.height)*y.zoom,u=l+t.getContractSigningRuleGeometry(n).signHeight*s.height/Math.max(1,c.height)*y.zoom,d=e.layoutScrollTop,f=d+e.viewportHeight;(l<d||u>f)&&(r.scrollTop=(i?.offsetTop??0)+Math.max(0,l-24)),X(),Z(),b(`page-change`,n.pageIndex)}))}function Q(e){let t=y.pages.findIndex(t=>t.pageIndex===e);C.value=t>=0?t+1:1}function rt(e){let t=y.pages.findIndex(e=>e.pageIndex===w.value),n=Math.min(y.pages.length-1,Math.max(0,(t<0?0:t)+e)),r=y.pages[n];r&&tt(r.pageIndex)}function it(e){let t=Number(e.target.value);if(!Number.isFinite(t)){Q(w.value);return}let n=Math.min(y.pages.length,Math.max(1,Math.round(t)))-1,r=y.pages[n];r?tt(r.pageIndex):Q(w.value)}function at(e,t=`user`){t===`user`&&Oe(),b(`zoom-change`,e)}function ot(e){e.target.closest(`.gd-ant-contract-signing-location__placement`)||b(`select`,``)}function st(){window.addEventListener(`pointermove`,dt,{passive:!1}),window.addEventListener(`pointerup`,$),window.addEventListener(`pointercancel`,$)}function ct(){window.removeEventListener(`pointermove`,dt),window.removeEventListener(`pointerup`,$),window.removeEventListener(`pointercancel`,$)}function lt(e,t,n){e.stopPropagation(),b(`select`,t.id);let a=U(t.pageIndex);if(y.readonly||!a||!r.isContractSigningPageUsable(a)||e.button!==0)return;let o=Y(e.clientX,e.clientY),s=i.contentPointToPagePoint(F.value,y.pages,o.x,o.y),c=e.currentTarget;c.focus({preventScroll:!0}),O.value={pointerId:e.pointerId,mode:n?`resize`:`move`,handle:n,placementId:t.id,startX:e.clientX,startY:e.clientY,origin:Xe(t),grabOffsetX:(s?.x??t.signLeft)-t.signLeft,grabOffsetY:(s?.y??t.signTop)-t.signTop},k={clientX:e.clientX,clientY:e.clientY,pointerId:e.pointerId},st(),gt();try{c.setPointerCapture(e.pointerId)}catch{}}function ut(e,t,n){lt(e,t,n)}function dt(e){let t=O.value;!t||t.pointerId!==e.pointerId||(e.preventDefault(),k={clientX:e.clientX,clientY:e.clientY,pointerId:e.pointerId},ft(k))}function $(e){O.value?.pointerId===e.pointerId&&(O.value=void 0,k=void 0,E.value=[],D.value=void 0,_t(),ct())}function ft(e){let n=O.value;if(!n)return;if(n.mode===`resize`){pt(n,e);return}let a=Y(e.clientX,e.clientY),o=i.contentPointToPagePoint(F.value,y.pages,a.x,a.y);if(!o)return;let s=ht(o.pageIndex,n.origin.pageIndex);if(!s||!r.isContractSigningPageUsable(s))return;let c=q({...n.origin,pageIndex:s.pageIndex,signLeft:o.x-n.grabOffsetX,signTop:o.y-n.grabOffsetY},s),l=t.snapContractSigningPlacement(c,We(s.pageIndex),y.zoom,void 0,s),u=q(l.placement,s);E.value=l.guides,D.value=s.pageIndex,b(`update`,u)}function pt(e,n){let i=U(e.origin.pageIndex),a=e.handle;if(!i||!a||!r.isContractSigningPageUsable(i))return;let o=F.value.find(e=>e.pageIndex===i.pageIndex);if(!o)return;let s=Y(n.clientX,n.clientY),c=G(i),l=i.width/Math.max(1,c.width*y.zoom),u=i.height/Math.max(1,c.height*y.zoom),d=(s.x-o.left)*l,f=(s.y-o.top)*u;if(e.origin.signType===`seal`){mt(e,i,a,d,f);return}let p=t.getContractSigningRuleGeometry(e.origin),m=p.signLeft,h=p.signTop,g=p.signLeft+p.signWidth,_=p.signTop+p.signHeight;a.includes(`w`)&&(m=d),a.includes(`e`)&&(g=d),a.includes(`n`)&&(h=f),a.includes(`s`)&&(_=f),g-m<8&&(a.includes(`w`)?m=g-8:g=m+8),_-h<8&&(a.includes(`n`)?h=_-8:_=h+8),b(`update`,q({...e.origin,signLeft:m,signTop:h,signWidth:g-m,signHeight:_-h},i))}function mt(e,n,r,i,a){let o=t.resizeContractSigningSealGeometry(e.origin,r,i,a,n,y.sealSizeLimit);b(`update`,q({...e.origin,...o},n))}function ht(e,t){let n=U(e);return n&&r.isContractSigningPageUsable(n)?n:U(t)}function gt(){_t();let e=()=>{let t=O.value,n=x.value;if(!t||!n||!k){A=0;return}let r=n.getBoundingClientRect(),a=i.getContractSigningAutoScrollDelta(k.clientY,r);a!==0&&(n.scrollTop+=a,X(),ft(k)),A=requestAnimationFrame(e)};A=requestAnimationFrame(e)}function _t(){A&&=(cancelAnimationFrame(A),0)}function vt(e,n){let i=U(n.pageIndex);if(y.readonly||!i||!r.isContractSigningPageUsable(i))return;if(e.key===`Delete`||e.key===`Backspace`){e.preventDefault(),b(`remove`,n.id);return}let a=e.shiftKey?10:1,o=0,s=0;if(e.key===`ArrowLeft`)o=-a;else if(e.key===`ArrowRight`)o=a;else if(e.key===`ArrowUp`)s=-a;else if(e.key===`ArrowDown`)s=a;else return;e.preventDefault();let c=G(i),l=W(i);b(`update`,t.moveContractSigningPlacementByDisplayDelta(n,o*c.width/Math.max(1,l.width),s*c.height/Math.max(1,l.height),i,G(i),{sealSizeLimit:y.sealSizeLimit}))}function yt(e){let t=e.dataTransfer?.getData(`application/x-gd-contract-signing-location`)||e.dataTransfer?.getData(`text/plain`);if(t)try{let e=JSON.parse(t);return xt(e.type)?e.type:void 0}catch{return xt(t)?t:void 0}}function bt(e){if(y.readonly)return;let t=yt(e);if(!t)return;e.preventDefault();let n=Y(e.clientX,e.clientY),r=i.contentPointToPagePoint(F.value,y.pages,n.x,n.y);r&&b(`add`,t,r.x,r.y,r.pageIndex)}function xt(e){return e===`seal`||e===`signature`||e===`date`}return Se({scrollToPage:tt,scrollToPlacement:nt,fitWidth:De}),(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`main`,d,[(0,s.createElementVNode)(`header`,f,[(0,s.createElementVNode)(`div`,null,[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(v.file?.fileName||`合同页面`),1),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,p,`第 `+(0,s.toDisplayString)(z.value.displayPageNumber)+` 页 · `+(0,s.toDisplayString)(I.value?`HTML`:`PDF`)+` `+(0,s.toDisplayString)(z.value.width)+` × `+(0,s.toDisplayString)(z.value.height),1)):(0,s.createCommentVNode)(``,!0)]),(0,s.createElementVNode)(`div`,m,[(0,s.createElementVNode)(`div`,h,[(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:C.value<=1,"aria-label":`上一页`,onClick:n[0]||=e=>rt(-1)},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.LeftOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`]),(0,s.createElementVNode)(`label`,null,[n[6]||=(0,s.createTextVNode)(` 第 `,-1),(0,s.createElementVNode)(`input`,{value:C.value,type:`number`,min:`1`,max:Math.max(1,v.pages.length),onChange:it,onKeydown:(0,s.withKeys)(it,[`enter`])},null,40,g),(0,s.createTextVNode)(` / `+(0,s.toDisplayString)(v.pages.length)+` 页 `,1)]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:C.value>=v.pages.length,"aria-label":`下一页`,onClick:n[1]||=e=>rt(1)},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.RightOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),(0,s.createElementVNode)(`div`,_,[(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:v.zoom<=Ne.value,"aria-label":`缩小页面`,onClick:n[2]||=e=>at(v.zoom-.1)},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.ZoomOutOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`]),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[3]||=e=>at(1)},(0,s.toDisplayString)(Math.round(v.zoom*100))+`%`,1),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:v.zoom>=Pe.value,"aria-label":`放大页面`,onClick:n[4]||=e=>at(v.zoom+.1)},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.ZoomInOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,"aria-label":`适应宽度`,title:`适应宽度`,onClick:(0,s.unref)(De)},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.ColumnWidthOutlined),{"aria-hidden":`true`})]),_:1},8,[`onClick`])])])]),(0,s.createElementVNode)(`div`,{ref_key:`scrollRef`,ref:x,class:`gd-ant-contract-signing-location__canvas-scroll`,onScrollPassive:$e,onClick:ot,onDragover:n[5]||=(0,s.withModifiers)(()=>{},[`prevent`]),onDrop:bt},[v.pages.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`stackRef`,ref:S,class:`gd-ant-contract-signing-location__page-stack`,style:(0,s.normalizeStyle)({width:`${ke.value.width}px`,height:`${ke.value.height}px`})},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(R.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.layout.pageIndex,class:`gd-ant-contract-signing-location__page-shell`,style:(0,s.normalizeStyle)({top:`${t.layout.top}px`,left:`${t.layout.left}px`,width:`${t.layout.width}px`,height:`${t.layout.height}px`})},[(0,s.createElementVNode)(`div`,{class:`gd-ant-contract-signing-location__page`,style:(0,s.normalizeStyle)({width:`${G(t.page).width}px`,height:`${G(t.page).height}px`,transform:`scale(${v.zoom})`}),"aria-label":`${v.file?.fileName||`合同`}第 ${t.page.displayPageNumber} 页`},[I.value&&t.templatePage?((0,s.openBlock)(),(0,s.createBlock)(e.default,{key:0,page:t.templatePage,"font-base-url":v.fontBaseUrl,onStatus:(e,n)=>ze(t.layout.pageIndex,e,n)},null,8,[`page`,`font-base-url`,`onStatus`])):I.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,te,[n[8]||=(0,s.createElementVNode)(`strong`,null,`模板页面无法渲染`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(L.value||`页面结构无效,请回到模板设计器修复后重试。`),1)])):t.page.previewUrl?((0,s.openBlock)(),(0,s.createElementBlock)(`img`,{key:2,class:`gd-ant-contract-signing-location__page-image`,src:t.page.previewUrl,alt:`合同页面预览`},null,8,ne)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,re,[He(t.layout.pageIndex)?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[(0,s.createElementVNode)(`strong`,null,`第 `+(0,s.toDisplayString)(t.page.displayPageNumber)+` 页加载中…`,1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.page.width)+` × `+(0,s.toDisplayString)(t.page.height),1)],64)):Ue(t.layout.pageIndex)?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:1},[n[9]||=(0,s.createElementVNode)(`strong`,null,`合同页面预览加载失败`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(Ue(t.layout.pageIndex)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:(0,s.withModifiers)(e=>b(`retry`,t.layout.pageIndex),[`stop`])},`重试当前页`,8,ie)],64)):(0,s.unref)(r.isContractSigningPageUsable)(t.page)?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:3},[(0,s.createElementVNode)(`strong`,null,`第 `+(0,s.toDisplayString)(t.page.displayPageNumber)+` 页`,1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.page.width)+` × `+(0,s.toDisplayString)(t.page.height),1),n[12]||=(0,s.createElementVNode)(`small`,null,`等待 dataProvider 返回页面预览图`,-1)],64)):((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:2},[n[10]||=(0,s.createElementVNode)(`strong`,null,`页面元数据不完整`,-1),n[11]||=(0,s.createElementVNode)(`span`,null,`缺少有效的原始宽高,无法安全计算签署坐标。`,-1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:(0,s.withModifiers)(e=>b(`retry`,t.layout.pageIndex),[`stop`])},`重新加载页面`,8,ae)],64))])),(0,s.createElementVNode)(`div`,oe,[(0,s.createElementVNode)(`div`,se,[B.value&&B.value.pageIndex===t.layout.pageIndex?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:`gd-ant-contract-signing-location__coordinate-guides`,style:(0,s.normalizeStyle)(qe(B.value)),"aria-hidden":`true`},[(0,s.createElementVNode)(`span`,ce,[(0,s.createElementVNode)(`small`,null,`上 `+(0,s.toDisplayString)(K(t.page)?.top),1)]),(0,s.createElementVNode)(`span`,le,[(0,s.createElementVNode)(`small`,null,`下 `+(0,s.toDisplayString)(K(t.page)?.bottom),1)]),(0,s.createElementVNode)(`span`,ue,[(0,s.createElementVNode)(`small`,null,`左 `+(0,s.toDisplayString)(K(t.page)?.left),1)]),(0,s.createElementVNode)(`span`,de,[(0,s.createElementVNode)(`small`,null,`右 `+(0,s.toDisplayString)(K(t.page)?.right),1)])],4)):(0,s.createCommentVNode)(``,!0),E.value.length&&D.value===t.layout.pageIndex?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,fe,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(E.value,(e,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`span`,{key:`${e.axis}-${n}`,class:(0,s.normalizeClass)(e.axis===`x`?`is-vertical`:`is-horizontal`),style:(0,s.normalizeStyle)(Je(e,t.page))},null,6))),128))])):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(We(t.layout.pageIndex),e=>((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:e.id,type:`button`,class:(0,s.normalizeClass)([`gd-ant-contract-signing-location__placement`,[`is-${e.signType}`,{"is-selected":e.id===v.selectedPlacementId}]]),style:(0,s.normalizeStyle)(Ke(e)),title:J(e).alt,"aria-label":J(e).alt,"aria-pressed":e.id===v.selectedPlacementId,onClick:(0,s.withModifiers)(t=>b(`select`,e.id),[`stop`]),onPointerdown:t=>lt(t,e),onLostpointercapture:$,onKeydown:t=>vt(t,e)},[(0,s.createElementVNode)(`span`,me,[(0,s.createElementVNode)(`img`,{class:`gd-ant-contract-signing-location__placement-visual`,src:J(e).dataUrl,alt:J(e).alt,draggable:`false`},null,8,he)]),e.mustSign?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,ge,`必签`)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(Ye(e)?we:[],t=>((0,s.openBlock)(),(0,s.createElementBlock)(`i`,{key:t,class:(0,s.normalizeClass)([`gd-ant-contract-signing-location__resize-handle`,`is-${t}`]),onPointerdown:(0,s.withModifiers)(n=>ut(n,e,t),[`stop`])},null,42,_e))),128))],46,pe))),128)),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(Ge(t.layout.pageIndex),e=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:`${e.ownerId}:${e.id}`,class:(0,s.normalizeClass)([`gd-ant-contract-signing-location__placement is-reference`,`is-${e.signType}`]),style:(0,s.normalizeStyle)(Ke(e)),title:`${e.ownerName} · 只读 · ${J(e).alt}`,role:`img`,"aria-label":`${e.ownerName}的只读${J(e).alt}`},[(0,s.createElementVNode)(`span`,ye,[(0,s.createElementVNode)(`img`,{class:`gd-ant-contract-signing-location__placement-visual`,src:J(e).dataUrl,alt:``,draggable:`false`},null,8,be)]),(0,s.createElementVNode)(`span`,xe,(0,s.toDisplayString)(e.ownerName)+` · 只读 `,1)],14,ve))),128))])])],12,ee)],4))),128))],4)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-ant-contract-signing-location__canvas-state`,{"is-error":I.value&&L.value}]),role:`status`},[I.value&&L.value?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[n[7]||=(0,s.createElementVNode)(`strong`,null,`合同模板无法渲染`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(L.value),1)],64)):((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:1},[(0,s.createTextVNode)(`请选择可用的合同页面`)],64))],2))],544)]))}});exports.default=v;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`),require(`./constants.cjs`);const e=require(`./ContractSigningTemplatePage.cjs`),t=require(`./coordinates.cjs`),n=require(`../../pro-contract-template-designer/src/utils/contract-layout-check.cjs`),r=require(`./template-source.cjs`),i=require(`./location-rules.cjs`),a=require(`./page-layout.cjs`),o=require(`../../pro-contract-template-designer/src/composables/use-fit-width-zoom.cjs`),s=require(`./signing-visuals.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),u=require(`@vueuse/core`),d=require(`@ant-design/icons-vue`);var f={class:`gd-ant-contract-signing-location__workspace`},p={class:`gd-ant-contract-signing-location__workspace-head`},m={key:0},h={class:`gd-ant-contract-signing-location__workspace-tools`},g={class:`gd-ant-contract-signing-location__page-jumper`,"aria-label":`页码跳转`},_=[`value`,`max`],ee={class:`gd-ant-contract-signing-location__zoom-tools`,"aria-label":`页面缩放`},te=[`aria-label`],ne={key:1,class:`gd-ant-contract-signing-location__page-placeholder is-error`,role:`alert`},re=[`src`],ie={key:3,class:`gd-ant-contract-signing-location__page-placeholder`},ae=[`onClick`],oe=[`onClick`],se={class:`gd-ant-contract-signing-location__render-region`},ce={class:`gd-ant-contract-signing-location__render-region-content`},le={class:`is-horizontal is-top`},ue={class:`is-horizontal is-bottom`},de={class:`is-vertical is-left`},fe={class:`is-vertical is-right`},pe={key:1,class:`gd-ant-contract-signing-location__snap-guides`,"aria-hidden":`true`},me=[`title`,`aria-label`,`aria-pressed`,`onClick`,`onPointerdown`,`onKeydown`],he={class:`gd-ant-contract-signing-location__placement-body`},ge=[`src`,`alt`],_e={key:0,class:`gd-ant-contract-signing-location__placement-badge`},ve=[`onPointerdown`],ye=[`title`,`aria-label`],be={class:`gd-ant-contract-signing-location__placement-body`},xe=[`src`],Se={class:`gd-ant-contract-signing-location__placement-reference-badge`},v=(0,c.defineComponent)({name:`ContractSigningLocationCanvas`,__name:`ContractSigningLocationCanvas`,props:{file:{},pages:{},placements:{},referencePlacements:{default:()=>[]},selectedPlacementId:{},readonly:{type:Boolean},resizable:{type:Boolean},zoom:{},previewLoadingKeys:{},previewErrorMap:{},activePageIndex:{},minZoom:{},maxZoom:{},sealSizeLimit:{},sealTypeOptions:{},fontBaseUrl:{},layoutIssues:{default:()=>[]},layoutChecking:{type:Boolean,default:!1}},emits:[`select`,`add`,`update`,`remove`,`retry`,`visible-pages`,`view-page`,`page-change`,`zoom-change`,`scroll-to-ready`,`template-status`],setup(v,{expose:Ce,emit:we}){let Te=[`nw`,`n`,`ne`,`e`,`se`,`s`,`sw`,`w`],y=v,b=we,x=(0,c.ref)(null),S=(0,c.ref)(null),C=(0,c.shallowRef)(1),w=(0,c.shallowRef)(y.activePageIndex),T=(0,c.shallowRef)({start:0,end:-1}),{width:Ee}=(0,u.useElementSize)(x),De=(0,c.computed)(()=>Math.max(...y.pages.map(e=>e.displayWidth||e.width||a.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE.width),a.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE.width)),{fitWidth:Oe,markUserAdjusted:ke}=o.useFitWidthZoom({viewportWidth:Ee,widestPageWidth:De,padding:48,minZoom:()=>y.minZoom,maxZoom:()=>y.maxZoom,getZoom:()=>y.zoom,applyZoom:e=>(b(`zoom-change`,e),e)}),E=(0,c.shallowRef)([]),D=(0,c.shallowRef)(),O=(0,c.shallowRef)(),k,A=0,j,M,N,P,F=(0,c.computed)(()=>a.buildPageLayouts(y.pages,y.zoom,16)),Ae=(0,c.computed)(()=>a.getPageLayoutsContentSize(F.value)),I=(0,c.computed)(()=>r.isContractSigningTemplateFile(y.file)),je=(0,c.computed)(()=>r.buildContractSigningTemplateRenderPages(y.file?.source)),Me=(0,c.computed)(()=>new Map(je.value.map(e=>[e.pageIndex,e]))),L=(0,c.computed)(()=>r.getContractSigningTemplateDisplayError(y.file)),Ne=(0,c.computed)(()=>{let e=T.value;return F.value.length?e.end<e.start?F.value.slice(0,2):F.value.slice(e.start,e.end+1):[]}),Pe=(0,c.computed)(()=>Ne.value.flatMap(e=>{let t=H(e.pageIndex);return t?[{layout:e,page:t,logical:W(t),templatePage:Me.value.get(e.pageIndex)}]:[]})),R=(0,c.computed)(()=>y.pages.find(e=>e.pageIndex===w.value)??y.pages[0]),Fe=(0,c.computed)(()=>Math.min(y.minZoom,y.maxZoom)),Ie=(0,c.computed)(()=>Math.max(y.minZoom,y.maxZoom)),z=(0,c.computed)(()=>y.placements.find(e=>e.id===y.selectedPlacementId)),Le=new Date,B=new Map,V=(0,c.shallowRef)({});function Re(e){return JSON.stringify([e.signType,e.sealType??[],y.sealTypeOptions??[]])}function ze(e){let t=Re(e),n=B.get(t);if(n)return n;let r=s.getContractSigningPlacementVisual(e,{sealTypeOptions:y.sealTypeOptions,date:Le});if(B.size>=128){let e=B.keys().next().value;e!==void 0&&B.delete(e)}return B.set(t,r),r}let Be=(0,c.computed)(()=>{let e=new WeakMap;return y.placements.forEach(t=>{e.set(t,ze(t))}),y.referencePlacements.forEach(t=>{e.set(t,ze(t))}),e});(0,c.watch)(()=>y.activePageIndex,e=>{w.value=e,$e()||Q(e)}),(0,c.watch)(()=>y.pages.map(e=>e.pageIndex).join(`,`),()=>{V.value={},U(),(0,c.nextTick)(()=>{X(),Z(),b(`scroll-to-ready`)})}),(0,c.watch)(()=>Pe.value.map(e=>e.layout.pageIndex).join(`,`),()=>{U()}),(0,c.watch)(()=>[y.layoutIssues,y.layoutChecking],()=>{U()}),(0,c.watch)(()=>y.zoom,(e,t)=>{if(!x.value||t==null||e===t)return;let n=Qe(),r=a.buildPageLayouts(y.pages,t,16),i=a.findPageAtOffset(r,n.layoutScrollTop+1)??r[0];if(!i)return;N={pageIndex:i.pageIndex,offsetInPage:n.layoutScrollTop-i.top};let o=e/Math.max(.01,t);(0,c.nextTick)(()=>tt(o))}),(0,c.onMounted)(()=>{X(),Z(),b(`scroll-to-ready`),!(typeof ResizeObserver>`u`||!x.value)&&(P=new ResizeObserver(()=>{X(),Z()}),P.observe(x.value))}),(0,c.onBeforeUnmount)(()=>{vt(),lt(),j&&clearTimeout(j),P?.disconnect(),P=void 0});function H(e){return y.pages.find(t=>t.pageIndex===e)}function Ve(e,t,n){V.value={...V.value,[e]:{status:t,detail:n}},U()}function U(){if(!I.value){b(`template-status`,`ready`);return}let e=y.layoutIssues[0];if(e){b(`template-status`,`error`,n.describeContractTemplateLayoutIssue(e)[0]??`合同排版校验未通过`);return}if(y.layoutChecking){b(`template-status`,`loading`);return}let t=Pe.value.filter(e=>e.templatePage).map(e=>V.value[e.layout.pageIndex]),r=t.find(e=>e?.status===`error`);if(r){b(`template-status`,`error`,r.detail);return}b(`template-status`,t.length>0&&t.every(e=>e?.status===`ready`)?`ready`:`loading`)}function W(e){return e&&i.isContractSigningPageUsable(e)?{width:e.width,height:e.height}:{...a.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE}}function G(e){if(!e||!i.isContractSigningPageUsable(e))return{...a.CONTRACT_SIGNING_FALLBACK_PAGE_SIZE};let t=Number(e.displayWidth),n=Number(e.displayHeight);return{width:Number.isFinite(t)&&t>0?t:e.width,height:Number.isFinite(n)&&n>0?n:e.height}}function He(e){return`${y.file?.fileId??``}:${e}`}function Ue(e){return y.previewLoadingKeys.includes(He(e))}function We(e){return y.previewErrorMap[He(e)]||``}function Ge(e){return y.placements.filter(t=>t.pageIndex===e)}function Ke(e){return y.referencePlacements.filter(t=>t.pageIndex===e)}function K(e){let n=z.value;return n&&n.pageIndex===e.pageIndex?t.getContractSigningPlacementDistances(n,e):void 0}function qe(e){let n=t.getContractSigningRuleGeometry(e),r=H(e.pageIndex),i=G(r),a=W(r);return{left:`${n.signLeft*i.width/Math.max(1,a.width)}px`,top:`${n.signTop*i.height/Math.max(1,a.height)}px`,width:`${n.signWidth*i.width/Math.max(1,a.width)}px`,height:`${n.signHeight*i.height/Math.max(1,a.height)}px`}}function Je(e){let n=t.getContractSigningRuleGeometry(e),r=H(e.pageIndex),i=G(r),a=W(r),o=i.width/Math.max(1,a.width),s=i.height/Math.max(1,a.height);return{"--gd-contract-sign-left":`${n.signLeft*o}px`,"--gd-contract-sign-top":`${n.signTop*s}px`,"--gd-contract-sign-right":`${(n.signLeft+n.signWidth)*o}px`,"--gd-contract-sign-bottom":`${(n.signTop+n.signHeight)*s}px`}}function Ye(e,t){let n=G(t),r=W(t),i=e.axis===`x`?n.width/Math.max(1,r.width):n.height/Math.max(1,r.height);return e.axis===`x`?{left:`${e.position*i}px`}:{top:`${e.position*i}px`}}function q(e,n){return t.clampContractSigningPlacement(e,n,{sealSizeLimit:y.sealSizeLimit,sealTypes:e.sealType,sealTypeOptions:y.sealTypeOptions})}function J(e){return Be.value.get(e)??ze(e)}function Xe(e){return t.canResizeContractSigningPlacement(e,y.resizable,y.readonly)&&e.id===y.selectedPlacementId}function Ze(e){return{...e,sealType:e.sealType?[...e.sealType]:void 0}}function Qe(){let e=x.value,t=S.value;if(!e)return{layoutScrollTop:0,viewportHeight:0};let n=t?.offsetTop??0;return{layoutScrollTop:e.scrollTop-n,viewportHeight:e.clientHeight}}function Y(e,t){let n=S.value;if(n){let r=n.getBoundingClientRect();return{x:e-r.left,y:t-r.top}}let r=x.value;if(!r)return{x:e,y:t};let i=r.getBoundingClientRect(),a=Number.parseFloat(getComputedStyle(r).paddingLeft)||0,o=Number.parseFloat(getComputedStyle(r).paddingTop)||0;return{x:e-i.left+r.scrollLeft-a,y:t-i.top+r.scrollTop-o}}function $e(){return!!(document.activeElement&&document.activeElement.tagName===`INPUT`)}function X(){let e=Qe();T.value=a.getVisibleRange(F.value,e.layoutScrollTop,e.viewportHeight,1);let t=a.findPageAtOffset(F.value,e.layoutScrollTop+1);if(t){let e=w.value!==t.pageIndex;w.value=t.pageIndex,$e()||Q(t.pageIndex),e&&b(`view-page`,t.pageIndex)}}function Z(){let e=T.value;b(`visible-pages`,F.value.slice(Math.max(0,e.start),e.end+1).map(e=>e.pageIndex))}function et(){X(),j&&clearTimeout(j),j=setTimeout(()=>{Z(),w.value!==M&&(M=w.value,b(`page-change`,w.value))},80)}function tt(e){let t=x.value,n=S.value,r=N;if(N=void 0,!t||!n||!r)return;let i=F.value.find(e=>e.pageIndex===r.pageIndex);i&&(t.scrollTop=n.offsetTop+i.top+r.offsetInPage*e,X())}function nt(e){let t=x.value,n=S.value;t&&(w.value=e,Q(e),b(`page-change`,e),M=e,(0,c.nextTick)(()=>{let r=a.getPageLayoutScrollTop(F.value,e);t.scrollTop=(n?.offsetTop??0)+r,X(),Z()}))}function rt(e){let n=y.placements.find(t=>t.id===e),r=x.value,i=S.value;if(!n||!r)return;let a=F.value.find(e=>e.pageIndex===n.pageIndex);a&&(w.value=n.pageIndex,Q(n.pageIndex),(0,c.nextTick)(()=>{let e=Qe(),o=H(n.pageIndex),s=G(o),c=W(o),l=a.top+t.getContractSigningRuleGeometry(n).signTop*s.height/Math.max(1,c.height)*y.zoom,u=l+t.getContractSigningRuleGeometry(n).signHeight*s.height/Math.max(1,c.height)*y.zoom,d=e.layoutScrollTop,f=d+e.viewportHeight;(l<d||u>f)&&(r.scrollTop=(i?.offsetTop??0)+Math.max(0,l-24)),X(),Z(),b(`page-change`,n.pageIndex)}))}function Q(e){let t=y.pages.findIndex(t=>t.pageIndex===e);C.value=t>=0?t+1:1}function it(e){let t=y.pages.findIndex(e=>e.pageIndex===w.value),n=Math.min(y.pages.length-1,Math.max(0,(t<0?0:t)+e)),r=y.pages[n];r&&nt(r.pageIndex)}function at(e){let t=Number(e.target.value);if(!Number.isFinite(t)){Q(w.value);return}let n=Math.min(y.pages.length,Math.max(1,Math.round(t)))-1,r=y.pages[n];r?nt(r.pageIndex):Q(w.value)}function ot(e,t=`user`){t===`user`&&ke(),b(`zoom-change`,e)}function st(e){e.target.closest(`.gd-ant-contract-signing-location__placement`)||b(`select`,``)}function ct(){window.addEventListener(`pointermove`,ft,{passive:!1}),window.addEventListener(`pointerup`,$),window.addEventListener(`pointercancel`,$)}function lt(){window.removeEventListener(`pointermove`,ft),window.removeEventListener(`pointerup`,$),window.removeEventListener(`pointercancel`,$)}function ut(e,t,n){e.stopPropagation(),b(`select`,t.id);let r=H(t.pageIndex);if(y.readonly||!r||!i.isContractSigningPageUsable(r)||e.button!==0)return;let o=Y(e.clientX,e.clientY),s=a.contentPointToPagePoint(F.value,y.pages,o.x,o.y),c=e.currentTarget;c.focus({preventScroll:!0}),O.value={pointerId:e.pointerId,mode:n?`resize`:`move`,handle:n,placementId:t.id,startX:e.clientX,startY:e.clientY,origin:Ze(t),grabOffsetX:(s?.x??t.signLeft)-t.signLeft,grabOffsetY:(s?.y??t.signTop)-t.signTop},k={clientX:e.clientX,clientY:e.clientY,pointerId:e.pointerId},ct(),_t();try{c.setPointerCapture(e.pointerId)}catch{}}function dt(e,t,n){ut(e,t,n)}function ft(e){let t=O.value;!t||t.pointerId!==e.pointerId||(e.preventDefault(),k={clientX:e.clientX,clientY:e.clientY,pointerId:e.pointerId},pt(k))}function $(e){O.value?.pointerId===e.pointerId&&(O.value=void 0,k=void 0,E.value=[],D.value=void 0,vt(),lt())}function pt(e){let n=O.value;if(!n)return;if(n.mode===`resize`){mt(n,e);return}let r=Y(e.clientX,e.clientY),o=a.contentPointToPagePoint(F.value,y.pages,r.x,r.y);if(!o)return;let s=gt(o.pageIndex,n.origin.pageIndex);if(!s||!i.isContractSigningPageUsable(s))return;let c=q({...n.origin,pageIndex:s.pageIndex,signLeft:o.x-n.grabOffsetX,signTop:o.y-n.grabOffsetY},s),l=t.snapContractSigningPlacement(c,Ge(s.pageIndex),y.zoom,void 0,s),u=q(l.placement,s);E.value=l.guides,D.value=s.pageIndex,b(`update`,u)}function mt(e,n){let r=H(e.origin.pageIndex),a=e.handle;if(!r||!a||!i.isContractSigningPageUsable(r))return;let o=F.value.find(e=>e.pageIndex===r.pageIndex);if(!o)return;let s=Y(n.clientX,n.clientY),c=G(r),l=r.width/Math.max(1,c.width*y.zoom),u=r.height/Math.max(1,c.height*y.zoom),d=(s.x-o.left)*l,f=(s.y-o.top)*u;if(e.origin.signType===`seal`){ht(e,r,a,d,f);return}let p=t.getContractSigningRuleGeometry(e.origin),m=p.signLeft,h=p.signTop,g=p.signLeft+p.signWidth,_=p.signTop+p.signHeight;a.includes(`w`)&&(m=d),a.includes(`e`)&&(g=d),a.includes(`n`)&&(h=f),a.includes(`s`)&&(_=f),g-m<8&&(a.includes(`w`)?m=g-8:g=m+8),_-h<8&&(a.includes(`n`)?h=_-8:_=h+8),b(`update`,q({...e.origin,signLeft:m,signTop:h,signWidth:g-m,signHeight:_-h},r))}function ht(e,n,r,i,a){let o=t.resizeContractSigningSealGeometry(e.origin,r,i,a,n,y.sealSizeLimit);b(`update`,q({...e.origin,...o},n))}function gt(e,t){let n=H(e);return n&&i.isContractSigningPageUsable(n)?n:H(t)}function _t(){vt();let e=()=>{let t=O.value,n=x.value;if(!t||!n||!k){A=0;return}let r=n.getBoundingClientRect(),i=a.getContractSigningAutoScrollDelta(k.clientY,r);i!==0&&(n.scrollTop+=i,X(),pt(k)),A=requestAnimationFrame(e)};A=requestAnimationFrame(e)}function vt(){A&&=(cancelAnimationFrame(A),0)}function yt(e,n){let r=H(n.pageIndex);if(y.readonly||!r||!i.isContractSigningPageUsable(r))return;if(e.key===`Delete`||e.key===`Backspace`){e.preventDefault(),b(`remove`,n.id);return}let a=e.shiftKey?10:1,o=0,s=0;if(e.key===`ArrowLeft`)o=-a;else if(e.key===`ArrowRight`)o=a;else if(e.key===`ArrowUp`)s=-a;else if(e.key===`ArrowDown`)s=a;else return;e.preventDefault();let c=G(r),l=W(r);b(`update`,t.moveContractSigningPlacementByDisplayDelta(n,o*c.width/Math.max(1,l.width),s*c.height/Math.max(1,l.height),r,G(r),{sealSizeLimit:y.sealSizeLimit}))}function bt(e){let t=e.dataTransfer?.getData(`application/x-gd-contract-signing-location`)||e.dataTransfer?.getData(`text/plain`);if(t)try{let e=JSON.parse(t);return St(e.type)?e.type:void 0}catch{return St(t)?t:void 0}}function xt(e){if(y.readonly)return;let t=bt(e);if(!t)return;e.preventDefault();let n=Y(e.clientX,e.clientY),r=a.contentPointToPagePoint(F.value,y.pages,n.x,n.y);r&&b(`add`,t,r.x,r.y,r.pageIndex)}function St(e){return e===`seal`||e===`signature`||e===`date`}return Ce({scrollToPage:nt,scrollToPlacement:rt,fitWidth:Oe}),(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`main`,f,[(0,c.createElementVNode)(`header`,p,[(0,c.createElementVNode)(`div`,null,[(0,c.createElementVNode)(`strong`,null,(0,c.toDisplayString)(v.file?.fileName||`合同页面`),1),R.value?((0,c.openBlock)(),(0,c.createElementBlock)(`span`,m,`第 `+(0,c.toDisplayString)(R.value.displayPageNumber)+` 页 · `+(0,c.toDisplayString)(I.value?`HTML`:`PDF`)+` `+(0,c.toDisplayString)(R.value.width)+` × `+(0,c.toDisplayString)(R.value.height),1)):(0,c.createCommentVNode)(``,!0)]),(0,c.createElementVNode)(`div`,h,[(0,c.createElementVNode)(`div`,g,[(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,disabled:C.value<=1,"aria-label":`上一页`,onClick:n[0]||=e=>it(-1)},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(d.LeftOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`]),(0,c.createElementVNode)(`label`,null,[n[6]||=(0,c.createTextVNode)(` 第 `,-1),(0,c.createElementVNode)(`input`,{value:C.value,type:`number`,min:`1`,max:Math.max(1,v.pages.length),onChange:at,onKeydown:(0,c.withKeys)(at,[`enter`])},null,40,_),(0,c.createTextVNode)(` / `+(0,c.toDisplayString)(v.pages.length)+` 页 `,1)]),(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,disabled:C.value>=v.pages.length,"aria-label":`下一页`,onClick:n[1]||=e=>it(1)},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(d.RightOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),(0,c.createElementVNode)(`div`,ee,[(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,disabled:v.zoom<=Fe.value,"aria-label":`缩小页面`,onClick:n[2]||=e=>ot(v.zoom-.1)},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(d.ZoomOutOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`]),(0,c.createElementVNode)(`button`,{type:`button`,onClick:n[3]||=e=>ot(1)},(0,c.toDisplayString)(Math.round(v.zoom*100))+`%`,1),(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,disabled:v.zoom>=Ie.value,"aria-label":`放大页面`,onClick:n[4]||=e=>ot(v.zoom+.1)},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(d.ZoomInOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`]),(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,"aria-label":`适应宽度`,title:`适应宽度`,onClick:(0,c.unref)(Oe)},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(d.ColumnWidthOutlined),{"aria-hidden":`true`})]),_:1},8,[`onClick`])])])]),(0,c.createElementVNode)(`div`,{ref_key:`scrollRef`,ref:x,class:`gd-ant-contract-signing-location__canvas-scroll`,onScrollPassive:et,onClick:st,onDragover:n[5]||=(0,c.withModifiers)(()=>{},[`prevent`]),onDrop:xt},[v.pages.length?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:1,ref_key:`stackRef`,ref:S,class:`gd-ant-contract-signing-location__page-stack`,style:(0,c.normalizeStyle)({width:`${Ae.value.width}px`,height:`${Ae.value.height}px`})},[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(Pe.value,t=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:t.layout.pageIndex,class:`gd-ant-contract-signing-location__page-shell`,style:(0,c.normalizeStyle)({top:`${t.layout.top}px`,left:`${t.layout.left}px`,width:`${t.layout.width}px`,height:`${t.layout.height}px`})},[(0,c.createElementVNode)(`div`,{class:`gd-ant-contract-signing-location__page`,style:(0,c.normalizeStyle)({width:`${G(t.page).width}px`,height:`${G(t.page).height}px`,transform:`scale(${v.zoom})`}),"aria-label":`${v.file?.fileName||`合同`}第 ${t.page.displayPageNumber} 页`},[I.value&&t.templatePage?((0,c.openBlock)(),(0,c.createBlock)(e.default,{key:0,page:t.templatePage,"font-base-url":v.fontBaseUrl,onStatus:(e,n)=>Ve(t.layout.pageIndex,e,n)},null,8,[`page`,`font-base-url`,`onStatus`])):I.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,ne,[n[8]||=(0,c.createElementVNode)(`strong`,null,`模板页面无法渲染`,-1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(L.value||`页面结构无效,请回到模板设计器修复后重试。`),1)])):t.page.previewUrl?((0,c.openBlock)(),(0,c.createElementBlock)(`img`,{key:2,class:`gd-ant-contract-signing-location__page-image`,src:t.page.previewUrl,alt:`合同页面预览`},null,8,re)):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,ie,[Ue(t.layout.pageIndex)?((0,c.openBlock)(),(0,c.createElementBlock)(c.Fragment,{key:0},[(0,c.createElementVNode)(`strong`,null,`第 `+(0,c.toDisplayString)(t.page.displayPageNumber)+` 页加载中…`,1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(t.page.width)+` × `+(0,c.toDisplayString)(t.page.height),1)],64)):We(t.layout.pageIndex)?((0,c.openBlock)(),(0,c.createElementBlock)(c.Fragment,{key:1},[n[9]||=(0,c.createElementVNode)(`strong`,null,`合同页面预览加载失败`,-1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(We(t.layout.pageIndex)),1),(0,c.createElementVNode)(`button`,{type:`button`,onClick:(0,c.withModifiers)(e=>b(`retry`,t.layout.pageIndex),[`stop`])},`重试当前页`,8,ae)],64)):(0,c.unref)(i.isContractSigningPageUsable)(t.page)?((0,c.openBlock)(),(0,c.createElementBlock)(c.Fragment,{key:3},[(0,c.createElementVNode)(`strong`,null,`第 `+(0,c.toDisplayString)(t.page.displayPageNumber)+` 页`,1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(t.page.width)+` × `+(0,c.toDisplayString)(t.page.height),1),n[12]||=(0,c.createElementVNode)(`small`,null,`等待 dataProvider 返回页面预览图`,-1)],64)):((0,c.openBlock)(),(0,c.createElementBlock)(c.Fragment,{key:2},[n[10]||=(0,c.createElementVNode)(`strong`,null,`页面元数据不完整`,-1),n[11]||=(0,c.createElementVNode)(`span`,null,`缺少有效的原始宽高,无法安全计算签署坐标。`,-1),(0,c.createElementVNode)(`button`,{type:`button`,onClick:(0,c.withModifiers)(e=>b(`retry`,t.layout.pageIndex),[`stop`])},`重新加载页面`,8,oe)],64))])),(0,c.createElementVNode)(`div`,se,[(0,c.createElementVNode)(`div`,ce,[z.value&&z.value.pageIndex===t.layout.pageIndex?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:0,class:`gd-ant-contract-signing-location__coordinate-guides`,style:(0,c.normalizeStyle)(Je(z.value)),"aria-hidden":`true`},[(0,c.createElementVNode)(`span`,le,[(0,c.createElementVNode)(`small`,null,`上 `+(0,c.toDisplayString)(K(t.page)?.top),1)]),(0,c.createElementVNode)(`span`,ue,[(0,c.createElementVNode)(`small`,null,`下 `+(0,c.toDisplayString)(K(t.page)?.bottom),1)]),(0,c.createElementVNode)(`span`,de,[(0,c.createElementVNode)(`small`,null,`左 `+(0,c.toDisplayString)(K(t.page)?.left),1)]),(0,c.createElementVNode)(`span`,fe,[(0,c.createElementVNode)(`small`,null,`右 `+(0,c.toDisplayString)(K(t.page)?.right),1)])],4)):(0,c.createCommentVNode)(``,!0),E.value.length&&D.value===t.layout.pageIndex?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,pe,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(E.value,(e,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`span`,{key:`${e.axis}-${n}`,class:(0,c.normalizeClass)(e.axis===`x`?`is-vertical`:`is-horizontal`),style:(0,c.normalizeStyle)(Ye(e,t.page))},null,6))),128))])):(0,c.createCommentVNode)(``,!0),((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(Ge(t.layout.pageIndex),e=>((0,c.openBlock)(),(0,c.createElementBlock)(`button`,{key:e.id,type:`button`,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__placement`,[`is-${e.signType}`,{"is-selected":e.id===v.selectedPlacementId}]]),style:(0,c.normalizeStyle)(qe(e)),title:J(e).alt,"aria-label":J(e).alt,"aria-pressed":e.id===v.selectedPlacementId,onClick:(0,c.withModifiers)(t=>b(`select`,e.id),[`stop`]),onPointerdown:t=>ut(t,e),onLostpointercapture:$,onKeydown:t=>yt(t,e)},[(0,c.createElementVNode)(`span`,he,[(0,c.createElementVNode)(`img`,{class:`gd-ant-contract-signing-location__placement-visual`,src:J(e).dataUrl,alt:J(e).alt,draggable:`false`},null,8,ge)]),e.mustSign?((0,c.openBlock)(),(0,c.createElementBlock)(`span`,_e,`必签`)):(0,c.createCommentVNode)(``,!0),((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(Xe(e)?Te:[],t=>((0,c.openBlock)(),(0,c.createElementBlock)(`i`,{key:t,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__resize-handle`,`is-${t}`]),onPointerdown:(0,c.withModifiers)(n=>dt(n,e,t),[`stop`])},null,42,ve))),128))],46,me))),128)),((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(Ke(t.layout.pageIndex),e=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:`${e.ownerId}:${e.id}`,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__placement is-reference`,`is-${e.signType}`]),style:(0,c.normalizeStyle)(qe(e)),title:`${e.ownerName} · 只读 · ${J(e).alt}`,role:`img`,"aria-label":`${e.ownerName}的只读${J(e).alt}`},[(0,c.createElementVNode)(`span`,be,[(0,c.createElementVNode)(`img`,{class:`gd-ant-contract-signing-location__placement-visual`,src:J(e).dataUrl,alt:``,draggable:`false`},null,8,xe)]),(0,c.createElementVNode)(`span`,Se,(0,c.toDisplayString)(e.ownerName)+` · 只读 `,1)],14,ye))),128))])])],12,te)],4))),128))],4)):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:0,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__canvas-state`,{"is-error":I.value&&L.value}]),role:`status`},[I.value&&L.value?((0,c.openBlock)(),(0,c.createElementBlock)(c.Fragment,{key:0},[n[7]||=(0,c.createElementVNode)(`strong`,null,`合同模板无法渲染`,-1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(L.value),1)],64)):((0,c.openBlock)(),(0,c.createElementBlock)(c.Fragment,{key:1},[(0,c.createTextVNode)(`请选择可用的合同页面`)],64))],2))],544)]))}});exports.default=v;
|
package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../pro-contract-template-designer/src/ContractPrintIframe.cjs`),t=require(`../../pro-contract-template-designer/src/utils/page-decorations.cjs`);let n=require(`vue`);var r=[`data-page-id`,`data-template-page-index`,`data-page-width`,`data-page-height`],i={key:0,class:`gd-ant-contract-signing-location__template-warning`,role:`alert`},a=(0,n.defineComponent)({name:`ContractSigningTemplatePage`,__name:`ContractSigningTemplatePage`,props:{page:{},fontBaseUrl:{}},emits:[`status`,`metrics`],setup(a,{emit:o}){let s=a,c=o,l=(0,n.shallowRef)(0),u=(0,n.shallowRef)(0),d=(0,n.shallowRef)(`loading`),
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../pro-contract-template-designer/src/ContractPrintIframe.cjs`),t=require(`../../pro-contract-template-designer/src/utils/page-decorations.cjs`);let n=require(`vue`);var r=[`data-page-id`,`data-template-page-index`,`data-page-width`,`data-page-height`],i={key:0,class:`gd-ant-contract-signing-location__template-warning`,role:`alert`},a=(0,n.defineComponent)({name:`ContractSigningTemplatePage`,__name:`ContractSigningTemplatePage`,props:{page:{},fontBaseUrl:{}},emits:[`status`,`metrics`],setup(a,{emit:o}){let s=a,c=o,l=(0,n.shallowRef)(0),u=(0,n.shallowRef)(0),d=(0,n.shallowRef)(0),f=(0,n.shallowRef)(`loading`),p=(0,n.computed)(()=>({width:`${s.page.displayWidth}px`,minHeight:`${s.page.displayHeight}px`,height:`${Math.max(s.page.displayHeight,l.value)}px`})),m=(0,n.computed)(()=>t.buildPageDecorationClassNames(s.page.pageDecorations,s.page.pageNumber)),h=(0,n.computed)(()=>t.buildPageDecorationsHtml(s.page.pageDecorations,s.page.pageNumber,s.page.totalPages,s.page.decorationVariables,s.page.decorationValues)),g=(0,n.computed)(()=>u.value>1?`第 ${s.page.pageNumber} 页正文超出纸张 ${Math.round(u.value)}px,请回模板设计器调整后再指定位置。`:d.value>1?`第 ${s.page.pageNumber} 页正文超出纸张宽度 ${Math.round(d.value)}px,请回模板设计器调整后再指定位置。`:``),_=(0,n.computed)(()=>s.page.errors[0]||g.value),v=(0,n.computed)(()=>s.page.errors.length?`模板已安全降级展示`:`该页签署位置不可信`);function y(e){l.value=e.contentHeight,u.value=e.overflowHeight,d.value=e.overflowWidth,c(`metrics`,e),x()}function b(e,t){if(f.value=e,e===`error`){c(`status`,e,t);return}x()}function x(){if(f.value!==`ready`){c(`status`,f.value);return}if(u.value>1||d.value>1){c(`status`,`error`,g.value);return}c(`status`,`ready`)}return(t,o)=>((0,n.openBlock)(),(0,n.createElementBlock)(`section`,{class:`gd-ant-contract-signing-location__template-page`,"data-page-id":a.page.pageId,"data-template-page-index":a.page.pageIndex,"data-page-width":a.page.displayWidth,"data-page-height":a.page.displayHeight,style:(0,n.normalizeStyle)(p.value)},[(0,n.createVNode)(e.default,{"page-id":a.page.pageId,width:a.page.displayWidth,height:a.page.displayHeight,"padding-top":a.page.paddingTop,"padding-bottom":a.page.paddingBottom,"class-names":m.value,"decorations-html":h.value,"content-html":a.page.contentHtml,"font-base-url":a.fontBaseUrl,title:`第 ${a.page.pageNumber} 页合同签署底图`,onMetrics:y,onStatus:b},null,8,[`page-id`,`width`,`height`,`padding-top`,`padding-bottom`,`class-names`,`decorations-html`,`content-html`,`font-base-url`,`title`]),_.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,i,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)(v.value),1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(_.value),1)])):(0,n.createCommentVNode)(``,!0)],12,r))}});exports.default=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./constants.cjs`),
|
|
1
|
+
const e=require(`../../../contract-print-css/index.cjs`),t=require(`./constants.cjs`),n=require(`../../pro-contract-template-designer/src/utils/page-decorations.cjs`),r=require(`../../pro-contract-template-designer/src/utils/template-renderer.cjs`),i=require(`../../pro-contract-template-designer/src/utils/contract-layout-check.cjs`);function a(e){return!!(e&&typeof e==`object`&&e.type===`template`)}function o(e){return a(e?.source)}function s(i){if(!a(i)||!f(i.template))return[];try{let a=i.template,o=Array.isArray(a.pages)?a.pages:[],s=r.normalizeRenderValues(a,i.values),c=d(a),l=o.length;return o.flatMap((i,o)=>{let u=r.buildTemplateRenderPages({...a,pages:[i]},s,{readonly:!0,disabled:!0,mode:`display`})[0];if(!u)return[];let d=p(i?.pageSize,a.pageSize,u),f=t.toContractSigningRulePageSize(d),m=o+1,h=e.resolveContractPagePadding(n.normalizePageDecorations(u.pageDecorations),m);return[{pageIndex:o,pageId:u.id,title:u.title,width:f.width||d.width,height:f.height||d.height,displayWidth:d.width,displayHeight:d.height,contentHtml:u.contentHtml,...u.pageDecorations?{pageDecorations:u.pageDecorations}:{},decorationVariables:u.decorationVariables,decorationValues:u.decorationValues,pageNumber:m,totalPages:l,paddingTop:h.top,paddingBottom:h.bottom,errors:c.filter(e=>!e.pageId||e.pageId===u.id).map(e=>e.message)}]})}catch{return[]}}function c(e,t){return s(t).map(t=>i.createContractTemplateLayoutPage({id:t.pageId,title:t.title,format:`Custom`,width:t.displayWidth,height:t.displayHeight,contentHtml:t.contentHtml,...t.pageDecorations?{pageDecorations:t.pageDecorations}:{},decorationVariables:t.decorationVariables,decorationValues:t.decorationValues},{fileId:e,pageIndex:t.pageIndex,pageNumber:t.pageNumber,totalPages:t.totalPages}))}function l(e){if(!a(e.source))return[];if(!f(e.source.template))return[{code:`CONTRACT_TEMPLATE_MISSING`,message:`文件 ${e.fileName||e.fileId} 缺少可渲染的合同模板`,fileId:e.fileId}];try{let t=Array.isArray(e.source.template.pages)?e.source.template.pages:[];return d(e.source.template).map(n=>{let r=n.pageId?t.findIndex(e=>e?.id===n.pageId):-1;return{code:`CONTRACT_${n.code||`TEMPLATE_INVALID`}`,message:`${e.fileName||e.fileId}:${n.message}`,fileId:e.fileId,...r>=0?{pageIndex:r}:{}}})}catch(t){return[{code:`CONTRACT_TEMPLATE_RENDER_FAILED`,message:`文件 ${e.fileName||e.fileId} 的模板数据无法安全渲染`,fileId:e.fileId,cause:t}]}}function u(e){return!e||!a(e.source)?``:l(e)[0]?.message??``}function d(e){return r.validateTemplateRenderStructure(e)}function f(e){return!!(e&&typeof e==`object`)}function p(e,t,n){return h(e)||h(t)||{width:g(e?.width,g(t?.width,n.width)),height:g(e?.height,g(t?.height,n.height))}}var m=[{pointWidth:595.5,pointHeight:842.25,cssWidth:794,cssHeight:1123},{pointWidth:842.25,pointHeight:595.5,cssWidth:1123,cssHeight:794},{pointWidth:419.25,pointHeight:595.5,cssWidth:559,cssHeight:794},{pointWidth:595.5,pointHeight:419.25,cssWidth:794,cssHeight:559},{pointWidth:842.25,pointHeight:1190.25,cssWidth:1123,cssHeight:1587},{pointWidth:1190.25,pointHeight:842.25,cssWidth:1587,cssHeight:1123},{pointWidth:612,pointHeight:792,cssWidth:816,cssHeight:1056},{pointWidth:612,pointHeight:1008,cssWidth:816,cssHeight:1344}];function h(e){let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n<=0)return;let r=m.find(e=>Math.abs(t-e.pointWidth)<=1.1&&Math.abs(n-e.pointHeight)<=1.1);return r?{width:r.cssWidth,height:r.cssHeight}:void 0}function g(e,t){let n=Number(e);return Number.isFinite(n)&&n>0?n:t}exports.buildContractSigningLayoutPages=c,exports.buildContractSigningTemplateRenderPages=s,exports.getContractSigningTemplateDisplayError=u,exports.isContractSigningTemplateFile=o,exports.isContractSigningTemplateSource=a,exports.validateContractSigningTemplateFile=l;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../hooks/setup-theme.cjs`),require(`./collapse-transtion/src/types.cjs`),require(`./collapse-transtion/index.cjs`),require(`./pro-modal/src/types.cjs`),require(`./pro-modal/hooks/useProModal.cjs`),require(`./pro-modal/index.cjs`),require(`./pro-title/src/types.cjs`),require(`./pro-title/index.cjs`),require(`./scroll-bar/src/types.cjs`),require(`./scroll-bar/index.cjs`),require(`./cover-scroll-bar/src/types.cjs`),require(`./cover-scroll-bar/index.cjs`),require(`./scale-virtual-list/index.cjs`),require(`./pro-tag/src/types.cjs`),require(`./pro-tag/index.cjs`),require(`./pro-picker/src/types.cjs`),require(`./pro-picker/index.cjs`),require(`./pro-area/src/types.cjs`),require(`./pro-area/hooks/use-pro-area.cjs`),require(`./pro-area/index.cjs`),require(`./pro-signature/src/types.cjs`),require(`./pro-signature/index.cjs`),require(`./pro-table/hooks/use-pro-table.cjs`),require(`./pro-table/index.cjs`),require(`./icon/index.cjs`),require(`./pro-upload/src/types.cjs`),require(`./pro-upload/src/hooks/useUpload.cjs`),require(`./pro-upload/index.cjs`),require(`./pro-loading/src/pro-loading.cjs`),require(`./plus-upload/index.cjs`),require(`./pro-overlay/index.cjs`),require(`./pro-selector/src/types.cjs`),require(`./pro-selector/src/ProUserSelector.cjs`),require(`./pro-selector/src/ProUserSelectorDrilldown.cjs`),require(`./pro-selector/src/components/user.cjs`),require(`./pro-selector/src/hooks/useUserSelector.cjs`),require(`./pro-selector/index.cjs`),require(`./pro-user-avatar/index.cjs`),require(`./role-selector/src/types.cjs`),require(`./role-selector/index.cjs`),require(`./dept-selector/src/types.cjs`),require(`./dept-selector/index.cjs`),require(`./pro-menu-tree/src/types.cjs`),require(`./pro-menu-tree/index.cjs`),require(`./pro-tag-group/src/types.cjs`),require(`./pro-tag-group/index.cjs`),require(`./pro-form-render/src/types.cjs`),require(`./pro-form-render/index.cjs`),require(`./pro-cell-group/src/types.cjs`),require(`./pro-cell/index.cjs`),require(`./pro-cell-group/index.cjs`),require(`./pro-selector-group/src/types.cjs`),require(`./pro-selector-group/index.cjs`),require(`./pro-dynamic-tags/index.cjs`),require(`./pro-drawer/src/types.cjs`),require(`./pro-drawer/index.cjs`),require(`./pro-contract-template-designer/src/utils/contract-print-document.cjs`),require(`./contract-signing-location/src/constants.cjs`),require(`./pro-contract-template-designer/src/utils/signing-mark.cjs`),require(`./pro-contract-template-designer/src/constants.cjs`),require(`./contract-signing-location/src/coordinates.cjs`),require(`./pro-contract-template-designer/src/types.cjs`),require(`./pro-contract-template-designer/src/utils/advanced-controls.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-designer.cjs`),require(`./pro-contract-template-designer/src/utils/image-url.cjs`),require(`./pro-contract-template-designer/src/utils/template-renderer.cjs`),require(`./contract-signing-location/src/template-source.cjs`),require(`./contract-signing-location/src/location-rules.cjs`),require(`./contract-signing-location/src/page-layout.cjs`),require(`./contract-signing-location/src/signing-visuals.cjs`),require(`./contract-signing-location/index.cjs`),require(`./pro-contract-template-designer/src/utils/content-image.cjs`),require(`./pro-contract-template-designer/src/utils/signing-layout-presets.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-draft-cache.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-files.cjs`),require(`./pro-contract-template-designer/index.cjs`),require(`./pro-contract-signing-flow/src/constants.cjs`),require(`./pro-contract-signing-flow/src/composables/use-contract-signing-flow.cjs`),require(`./pro-contract-signing-flow/index.cjs`),require(`./pro-contract-template-agent/src/composables/use-contract-template-agent.cjs`),require(`./pro-contract-template-agent/src/utils/contract-template-agent-adapter.cjs`),require(`./pro-contract-template-agent/index.cjs`),require(`./hooks/use-basic-app-config.cjs`);
|
|
1
|
+
require(`../hooks/setup-theme.cjs`),require(`./collapse-transtion/src/types.cjs`),require(`./collapse-transtion/index.cjs`),require(`./pro-modal/src/types.cjs`),require(`./pro-modal/hooks/useProModal.cjs`),require(`./pro-modal/index.cjs`),require(`./pro-title/src/types.cjs`),require(`./pro-title/index.cjs`),require(`./scroll-bar/src/types.cjs`),require(`./scroll-bar/index.cjs`),require(`./cover-scroll-bar/src/types.cjs`),require(`./cover-scroll-bar/index.cjs`),require(`./scale-virtual-list/index.cjs`),require(`./pro-tag/src/types.cjs`),require(`./pro-tag/index.cjs`),require(`./pro-picker/src/types.cjs`),require(`./pro-picker/index.cjs`),require(`./pro-area/src/types.cjs`),require(`./pro-area/hooks/use-pro-area.cjs`),require(`./pro-area/index.cjs`),require(`./pro-signature/src/types.cjs`),require(`./pro-signature/index.cjs`),require(`./pro-table/hooks/use-pro-table.cjs`),require(`./pro-table/index.cjs`),require(`./icon/index.cjs`),require(`./pro-upload/src/types.cjs`),require(`./pro-upload/src/hooks/useUpload.cjs`),require(`./pro-upload/index.cjs`),require(`./pro-loading/src/pro-loading.cjs`),require(`./plus-upload/index.cjs`),require(`./pro-overlay/index.cjs`),require(`./pro-selector/src/types.cjs`),require(`./pro-selector/src/ProUserSelector.cjs`),require(`./pro-selector/src/ProUserSelectorDrilldown.cjs`),require(`./pro-selector/src/components/user.cjs`),require(`./pro-selector/src/hooks/useUserSelector.cjs`),require(`./pro-selector/index.cjs`),require(`./pro-user-avatar/index.cjs`),require(`./role-selector/src/types.cjs`),require(`./role-selector/index.cjs`),require(`./dept-selector/src/types.cjs`),require(`./dept-selector/index.cjs`),require(`./pro-menu-tree/src/types.cjs`),require(`./pro-menu-tree/index.cjs`),require(`./pro-tag-group/src/types.cjs`),require(`./pro-tag-group/index.cjs`),require(`./pro-form-render/src/types.cjs`),require(`./pro-form-render/index.cjs`),require(`./pro-cell-group/src/types.cjs`),require(`./pro-cell/index.cjs`),require(`./pro-cell-group/index.cjs`),require(`./pro-selector-group/src/types.cjs`),require(`./pro-selector-group/index.cjs`),require(`./pro-dynamic-tags/index.cjs`),require(`./pro-drawer/src/types.cjs`),require(`./pro-drawer/index.cjs`),require(`./pro-contract-template-designer/src/utils/contract-print-document.cjs`),require(`./contract-signing-location/src/constants.cjs`),require(`./pro-contract-template-designer/src/utils/signing-mark.cjs`),require(`./pro-contract-template-designer/src/constants.cjs`),require(`./contract-signing-location/src/coordinates.cjs`),require(`./pro-contract-template-designer/src/types.cjs`),require(`./pro-contract-template-designer/src/utils/advanced-controls.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-designer.cjs`),require(`./pro-contract-template-designer/src/utils/image-url.cjs`),require(`./pro-contract-template-designer/src/utils/template-renderer.cjs`),require(`./pro-contract-template-designer/src/utils/contract-layout-check.cjs`),require(`./contract-signing-location/src/template-source.cjs`),require(`./contract-signing-location/src/location-rules.cjs`),require(`./contract-signing-location/src/page-layout.cjs`),require(`./contract-signing-location/src/signing-visuals.cjs`),require(`./contract-signing-location/index.cjs`),require(`./pro-contract-template-designer/src/utils/content-image.cjs`),require(`./pro-contract-template-designer/src/utils/signing-layout-presets.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-draft-cache.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-files.cjs`),require(`./pro-contract-template-designer/index.cjs`),require(`./pro-contract-signing-flow/src/constants.cjs`),require(`./pro-contract-signing-flow/src/composables/use-contract-signing-flow.cjs`),require(`./pro-contract-signing-flow/index.cjs`),require(`./pro-contract-template-agent/src/composables/use-contract-template-agent.cjs`),require(`./pro-contract-template-agent/src/utils/contract-template-agent-adapter.cjs`),require(`./pro-contract-template-agent/index.cjs`),require(`./hooks/use-basic-app-config.cjs`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../utils/install.cjs`);require(`./src/utils/contract-print-document.cjs`),require(`./src/utils/signing-mark.cjs`),require(`./src/constants.cjs`),require(`./src/types.cjs`),require(`./src/utils/advanced-controls.cjs`),require(`./src/composables/use-template-designer.cjs`),require(`./src/utils/image-url.cjs`),require(`./src/utils/template-renderer.cjs`),require(`./src/utils/content-image.cjs`),require(`./src/utils/signing-layout-presets.cjs`),require(`./src/composables/use-template-draft-cache.cjs`),require(`./src/composables/use-template-files.cjs`);const t=require(`./src/ProContractTemplateDesigner.cjs`),n=require(`./src/ProContractTemplateRenderer.cjs`);require(`./style/index.cjs`);var r=e.withInstall(t.default),i=e.withInstall(n.default);exports.GdAntProContractTemplateRenderer=i,exports.default=r;
|
|
1
|
+
const e=require(`../utils/install.cjs`);require(`./src/utils/contract-print-document.cjs`),require(`./src/utils/signing-mark.cjs`),require(`./src/constants.cjs`),require(`./src/types.cjs`),require(`./src/utils/advanced-controls.cjs`),require(`./src/composables/use-template-designer.cjs`),require(`./src/utils/image-url.cjs`),require(`./src/utils/template-renderer.cjs`),require(`./src/utils/contract-layout-check.cjs`),require(`./src/utils/content-image.cjs`),require(`./src/utils/signing-layout-presets.cjs`),require(`./src/composables/use-template-draft-cache.cjs`),require(`./src/composables/use-template-files.cjs`);const t=require(`./src/ProContractTemplateDesigner.cjs`),n=require(`./src/ProContractTemplateRenderer.cjs`);require(`./style/index.cjs`);var r=e.withInstall(t.default),i=e.withInstall(n.default);exports.GdAntProContractTemplateRenderer=i,exports.default=r;
|
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractPrintIframe.cjs`),
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../contract-print-css/index.cjs`),t=require(`./ContractPrintIframe.cjs`),n=require(`./utils/page-decorations.cjs`),r=require(`./composables/use-template-designer.cjs`);let i=require(`vue`);var a={class:`gd-contract-template-designer__preview-page-shell`},o=[`data-page-id`,`data-page-format`,`data-page-label`,`data-page-width`,`data-page-height`],s={key:0,class:`gd-contract-template-designer__preview-font-error`,role:`alert`},c=(0,i.defineComponent)({name:`ContractTemplatePreviewPage`,__name:`ContractTemplatePreviewPage`,props:{page:{},fallbackPageSize:{},contentHtml:{},pageDecorations:{},pageNumber:{},totalPages:{},variables:{},fontBaseUrl:{}},setup(c){let l=c,u=(0,i.computed)(()=>r.resolvePageSize(l.page.pageSize,l.fallbackPageSize)),d=(0,i.computed)(()=>e.resolveContractPagePadding(n.normalizePageDecorations(l.pageDecorations),l.pageNumber)),f=(0,i.computed)(()=>({width:`${u.value.width}px`,height:`${u.value.height}px`})),p=(0,i.computed)(()=>n.buildPageDecorationClassNames(l.pageDecorations,l.pageNumber)),m=(0,i.computed)(()=>n.buildPageDecorationsHtml(l.pageDecorations,l.pageNumber,l.totalPages,l.variables)),h=(0,i.shallowRef)(``);function g(e,t){h.value=e===`error`?t||`合同排版度量校验失败`:``}return(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`article`,a,[(0,i.createElementVNode)(`section`,{class:`gd-contract-template-designer__preview-page`,"data-page-id":c.page.id,"data-page-format":u.value.format??`Custom`,"data-page-label":u.value.label??u.value.format??`自定义`,"data-page-width":u.value.width,"data-page-height":u.value.height,style:(0,i.normalizeStyle)(f.value)},[(0,i.createVNode)(t.default,{"page-id":c.page.id,"page-format":u.value.format,width:u.value.width,height:u.value.height,"padding-top":d.value.top,"padding-bottom":d.value.bottom,"class-names":p.value,"decorations-html":m.value,"content-html":c.contentHtml,"font-base-url":c.fontBaseUrl,title:`第 ${c.pageNumber} 页合同预览`,onStatus:g},null,8,[`page-id`,`page-format`,`width`,`height`,`padding-top`,`padding-bottom`,`class-names`,`decorations-html`,`content-html`,`font-base-url`,`title`]),h.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,s,(0,i.toDisplayString)(h.value),1)):(0,i.createCommentVNode)(``,!0)],12,o)]))}});exports.default=c;
|
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractPrintIframe.cjs`),
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../contract-print-css/index.cjs`),t=require(`./ContractPrintIframe.cjs`),n=require(`./utils/page-decorations.cjs`),r=require(`./utils/contract-layout-check.cjs`);let i=require(`vue`);var a=[`data-render-page-id`],o={key:0,class:`gd-contract-template-renderer__page-meta`},s=[`data-page-id`,`data-page-format`,`data-page-width`,`data-page-height`],c={key:0,class:`gd-contract-template-renderer__font-error`,role:`alert`},l=(0,i.defineComponent)({name:`ContractTemplateRendererPage`,__name:`ContractTemplateRendererPage`,props:{page:{},index:{},total:{},zoom:{},showMeta:{type:Boolean},fontBaseUrl:{},activeKey:{},scrollRequest:{}},emits:[`status`,`metrics`,`interaction`],setup(l,{emit:u}){let d=l,f=u,p=(0,i.computed)(()=>({width:`${d.page.width*d.zoom}px`,height:`${d.page.height*d.zoom}px`})),m=(0,i.computed)(()=>e.resolveContractPagePadding(n.normalizePageDecorations(d.page.pageDecorations),d.index+1)),h=(0,i.computed)(()=>({width:`${d.page.width}px`,height:`${d.page.height}px`,transform:`scale(${d.zoom})`})),g=(0,i.computed)(()=>n.buildPageDecorationClassNames(d.page.pageDecorations,d.index+1)),_=(0,i.computed)(()=>n.buildPageDecorationsHtml(d.page.pageDecorations,d.index+1,d.total,d.page.decorationVariables,d.page.decorationValues)),v=(0,i.shallowRef)(``),y=(0,i.shallowRef)(),b=(0,i.computed)(()=>v.value?v.value:y.value?r.describeContractTemplateLayoutIssue({pageIndex:d.index,pageNumber:d.index+1,pageId:d.page.id,kind:`overflow`,overflowHeight:y.value.overflowHeight,overflowWidth:y.value.overflowWidth})[0]??``:``);function x(e,t){e===`loading`&&(y.value=void 0),v.value=e===`error`?r.describeContractTemplateLayoutIssue({pageIndex:d.index,pageNumber:d.index+1,pageId:d.page.id,kind:`measure-failed`,overflowHeight:0,overflowWidth:0,error:t})[0]??`无法确认排版,请稍后重试`:``,f(`status`,e,t)}function S(e){y.value=e,f(`metrics`,e)}return(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`article`,{class:`gd-contract-template-renderer__page-shell`,"data-render-page-id":l.page.id},[l.showMeta?((0,i.openBlock)(),(0,i.createElementBlock)(`header`,o,[(0,i.createElementVNode)(`strong`,null,`第 `+(0,i.toDisplayString)(l.index+1)+` / `+(0,i.toDisplayString)(l.total)+` 页`,1),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(l.page.title),1),(0,i.createElementVNode)(`small`,null,(0,i.toDisplayString)(l.page.format)+` · `+(0,i.toDisplayString)(l.page.width)+` × `+(0,i.toDisplayString)(l.page.height)+` px`,1)])):(0,i.createCommentVNode)(``,!0),(0,i.createElementVNode)(`div`,{class:`gd-contract-template-renderer__page-frame`,style:(0,i.normalizeStyle)(p.value)},[(0,i.createElementVNode)(`div`,{class:`gd-contract-template-renderer__print-page`,"data-page-id":l.page.id,"data-page-format":l.page.format,"data-page-width":l.page.width,"data-page-height":l.page.height,style:(0,i.normalizeStyle)(h.value)},[(0,i.createVNode)(t.default,{"page-id":l.page.id,"page-format":l.page.format,width:l.page.width,height:l.page.height,"padding-top":m.value.top,"padding-bottom":m.value.bottom,"class-names":g.value,"decorations-html":_.value,"content-html":l.page.contentHtml,"font-base-url":l.fontBaseUrl,"active-key":l.activeKey,"scroll-request":l.scrollRequest,title:`第 ${l.index+1} 页合同填写内容`,onInteraction:n[0]||=e=>f(`interaction`,e),onMetrics:S,onStatus:x},null,8,[`page-id`,`page-format`,`width`,`height`,`padding-top`,`padding-bottom`,`class-names`,`decorations-html`,`content-html`,`font-base-url`,`active-key`,`scroll-request`,`title`]),b.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,c,(0,i.toDisplayString)(b.value),1)):(0,i.createCommentVNode)(``,!0)],12,s)],4)],8,a))}});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`),l=require(`@vueuse/core`),ee=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)([]),b=(0,s.ref)(!1),x=(0,s.ref)(!1),S=(0,s.ref)(``),C=(0,s.ref)(``),w=(0,s.ref)(``),xe=(0,s.ref)(0),T=(0,s.ref)(gt(f.zoom)),E=(0,s.ref)(``),D=(0,s.ref)(`all`),O=(0,s.ref)(!1),Se=(0,s.ref)(new Map),k=new Map,A=new Map,j=new Map,M=new Set,{width:Ce}=(0,l.useElementSize)(m),N=(0,s.computed)(()=>f.readonly||f.disabled),we=(0,s.computed)(()=>f.interactionMode===`inline`&&!N.value),Te=(0,s.computed)(()=>n.validateTemplateRenderStructure(f.template)),P=(0,s.computed)(()=>_.value?v.value:[...Te.value,...y.value]),F=(0,s.computed)(()=>(Array.isArray(f.template?.variables)?f.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Ee=(0,s.computed)(()=>{let e={...g.value};return F.value.forEach(n=>{let r=Ze(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),De=(0,s.computed)(()=>F.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),Oe=(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)(()=>n.buildTemplateRenderPages(f.template,we.value?be.value:Ee.value,{readonly:f.readonly,disabled:f.disabled,mode:we.value?`control`:`display`})),ke=(0,s.computed)(()=>{let e=new Map,t=new Set(F.value.map(e=>e.key));return I.value.forEach(n=>{dt(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),Ae=(0,s.computed)(()=>F.value.filter(ot)),je=(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(ke.value.get(e.key)??``)??n;r.allVariables.push(e),ot(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}))}),Me=(0,s.computed)(()=>I.value.length>0),L=(0,s.computed)(()=>F.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),R=(0,s.computed)(()=>F.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Ne=(0,s.computed)(()=>F.value.length?Math.round(L.value/F.value.length*100):0),Pe=(0,s.computed)(()=>_.value&&v.value.length===0),Fe=(0,s.computed)(()=>_.value?Pe.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:y.value.length?`发现 ${P.value.length} 个模板或填写问题`:Te.value.length?`模板存在 ${Te.value.length} 个问题,已安全降级展示`:``),Ie=(0,s.computed)(()=>_.value?P.value.length>0||x.value:P.value.length>0);(0,s.watch)(()=>f.template,e=>{z(n.normalizeRenderValues(e,f.values),!1),U();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(w.value)||(w.value=t.find(Boolean)??``),C.value&&!F.value.some(e=>e.key===C.value)&&qe()},{deep:!0}),(0,s.watch)(()=>[f.template?.variables,f.optionResolver,f.requester,f.allowedRemoteOrigins,f.remoteRequestTimeoutMs,f.remoteOptionsCacheTtlMs],()=>{$e()},{deep:!0,immediate:!0}),(0,s.watch)(()=>f.values,e=>{let t=n.normalizeRenderValues(f.template,e);_t(t,g.value)||(z(t,!1,{refreshInlineHtml:f.interactionMode!==`inline`}),U())},{deep:!0}),(0,s.watch)(we,e=>{e&&(be.value={...g.value})}),(0,s.watch)(()=>f.collapsiblePanel,e=>{e||(O.value=!1)}),(0,s.watch)(()=>f.zoom,e=>T.value=gt(e)),(0,s.watch)(I,e=>{!w.value&&e.length&&(w.value=e[0].id)},{immediate:!0});function z(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(p(`update:values`,{...g.value}),p(`change`,{...g.value}))}function B(e,t){if(!e||N.value)return;if(z({...g.value,[e]:t},!0,{refreshInlineHtml:f.interactionMode!==`inline`}),_.value){H();return}let r=F.value.find(t=>t.key===e);r&&(r.type??`text`)===`text`&&(y.value=[...y.value.filter(t=>t.variableKey!==e),...n.validateTemplateTextOverflow(r,t)],p(`validate`,P.value))}function Le(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`?B(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?B(n,t.value===``?void 0:t.valueAsNumber):B(n,t.value))}function Re(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(w.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&J(r)}function ze(e){let t=I.value.find(t=>t.id===e.pageId),n=F.value.some(t=>t.key===e.key);if(!(!t||!n||!dt(t.contentHtml).has(e.key))&&!(e.kind===`input`&&f.interactionMode!==`inline`)){if(w.value=e.pageId,e.kind===`input`){B(e.key,e.value);return}J(e.key)}}function Be(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),J(t.dataset.key))}function V(){return{...g.value}}function Ve(e){z(n.normalizeRenderValues(f.template,e))}function H(){let e=n.validateTemplateRenderValues(f.template,g.value);return W(e),p(`validate`,e),e}function He(){let e=n.resolveTemplateRenderSubmitErrors(f.template,g.value,f.validateOnSubmit);if((f.validateOnSubmit||e.length)&&(W(e),p(`validate`,e)),e.length)return Ye(e[0]),!1;let t=V();return p(`submit`,t),t}function Ue(){return z(n.buildInitialRenderValues(f.template)),U(),V()}function We(){N.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Ue()})}function U(){y.value=[],_.value=!1,v.value=[],b.value=!1,x.value=!1,K()}function W(e){if(y.value=[],v.value=e,_.value=!0,b.value=!1,e.length){x.value=!1,K();return}Ge()}let G;function K(){G&&=(clearTimeout(G),void 0)}function Ge(){K(),x.value=!0,G=setTimeout(()=>{x.value=!1,G=void 0},he)}function q(e){J(e,!0)}function Ke(e){f.interactionMode===`panel`&&(O.value&&=!1,F.value.some(t=>t.key===e)&&!Ae.value.some(t=>t.key===e)&&st())}function J(e,t=!1){if(!e)return;Ke(e),C.value=e,S.value=e;let n=ke.value.get(e);n&&(w.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{Je(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 qe(){C.value=``,S.value=``,Je(``)}function Je(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 Ye(e){e.variableKey?(q(e.variableKey),f.interactionMode===`panel`&&(0,s.nextTick)(()=>lt(e.variableKey))):e.pageId&&Q(e.pageId)}function Xe(e){return Oe.value.get(e)??[]}function Y(e){return Se.value.get(e.key)??{options:e.options??[],loading:!1}}function Ze(e){let t=e.componentKey||e.type||``;return t?f.controlRegistry?.[t]:void 0}function X(e,t){let n=new Map(Se.value);n.set(e,t),Se.value=n}function Qe(e){p(`control-warning`,e)}async function $e(){k.forEach(e=>e.abort()),k.clear(),A.clear(),M.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 et(e,t):X(e.key,{options:t,loading:!1}),e.type===`custom`&&!Ze(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;M.has(n)||(M.add(n),Qe({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function et(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),X(e.key,{options:n,loading:!0});let a=tt(e),o=Date.now(),s=A.get(a);if(s&&s.expiresAt>o){X(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=j.get(a);o||(o=nt(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(f.remoteOptionsCacheTtlMs)||0);l>0&&A.set(a,{options:s,expiresAt:Date.now()+l}),X(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:`高级控件选项加载失败`;X(e.key,{options:n,loading:!1,error:a}),Qe({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function tt(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function nt(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 rt(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 rt(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 it(e){let t=Y(e);return{variable:e,value:g.value[e.key],errors:Xe(e.key),active:C.value===e.key,readonly:f.readonly,disabled:f.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>B(e.key,t),focusVariable:()=>q(e.key)}}function at(){let e=F.value;if(!e.length)return;let t=e.findIndex(e=>e.key===C.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])){q(i.key);return}}}function ot(e){let t=E.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?D.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):D.value===`error`?Xe(e.key).length>0:!0:!1}function st(){E.value=``,D.value=`all`}function ct(e,t){let n=Ae.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&&(q(i),(0,s.nextTick)(()=>lt(i)))}function lt(e){(h.value?.querySelector(`[data-field-key="${$(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function ut(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(),ct(n,e.shiftKey?-1:1))}function dt(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 ft(){!f.collapsiblePanel||f.interactionMode!==`panel`||(O.value=!O.value)}function Z(e){let t=gt(e);return T.value=t,p(`update:zoom`,t),t}function pt(){return Z(1)}function mt(){return T.value}function ht(){let e=Math.max(...I.value.map(e=>e.width),1);return Z(Math.max(0,Ce.value-48)/e)}function Q(e){e&&(w.value=e,(0,s.nextTick)(()=>{m.value?.querySelector(`[data-render-page-id="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function gt(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 _t(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function vt(e){!(e.ctrlKey||e.metaKey)||!Me.value||(e.preventDefault(),Z(e.deltaY>0?T.value-u:T.value+u))}let yt;function bt(){yt?.removeEventListener(`wheel`,vt),yt=void 0}function xt(e){bt(),e&&(e.addEventListener(`wheel`,vt,{passive:!1}),yt=e)}return(0,s.watch)(m,e=>{xt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{bt(),K(),k.forEach(e=>e.abort()),k.clear()}),ge({showValidation:W,focusError:e=>{Ye(e),e.variableKey&&(0,s.nextTick)(()=>lt(e.variableKey))},getValues:V,setValues:Ve,validate:H,submit:He,resetValues:Ue,scrollToVariable:q,setZoom:Z,resetZoom:pt,getZoom:mt,fitWidth:ht,scrollToPage:Q}),(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:Re,onKeydown:Be,onInput:Le,onChange:Le},[(0,s.renderSlot)(e.$slots,`fileBar`),Me.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:d.title,"filled-count":L.value,"total-count":F.value.length,"progress-percent":Ne.value,"required-missing-count":R.value,zoom:T.value,pages:I.value,"active-page-id":w.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":O.value,readonly:d.readonly,disabled:d.disabled,onZoomIn:t[0]||=e=>Z(T.value+u),onZoomOut:t[1]||=e=>Z(T.value-u),onResetZoom:pt,onFitWidth:ht,onSelectPage:Q,onValidate:H,onReset:We,onSubmit:He,onTogglePanel:ft},{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),Ie.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:Pe.value,summary:Fe.value,errors:P.value,expanded:b.value,onToggle:t[2]||=e=>b.value=!b.value,onFocusError:Ye},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),Me.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":S.value},[(0,s.createElementVNode)(`div`,re,[((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:T.value,"show-meta":d.showPageMeta,"font-base-url":d.contractFontBaseUrl,"active-key":S.value,"scroll-request":xe.value,onInteraction:ze},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":O.value&&d.collapsiblePanel}])},[d.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:O.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":O.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!O.value,onClick:t[3]||=e=>O.value=!O.value},[O.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(ee.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(ee.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)(L.value)+` / `+(0,s.toDisplayString)(F.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(R.value?`${R.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:E.value,"onUpdate:value":t[4]||=e=>E.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(ee.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,le,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:D.value,"onUpdate:value":t[5]||=e=>D.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:!De.value,onClick:at},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:Ne.value,size:`small`,"show-info":!1},null,8,[`percent`])]),Ae.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:h,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:ut},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(je.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},it(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:Xe(t.key),active:C.value===t.key,readonly:d.readonly,disabled:d.disabled,options:Y(t).options,loading:Y(t).loading,"load-error":Y(t).error,registration:Ze(t),"selector-http":d.selectorHttp,"selector-url-prefix":d.selectorUrlPrefix,onUpdateValue:e=>B(t.key,e),onFocusVariable:e=>q(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:F.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[E.value||D.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:st},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[E.value||D.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(`./utils/contract-layout-check.cjs`),i=require(`./ContractTemplateRendererField.cjs`),a=require(`./ContractTemplateRendererHeader.cjs`),o=require(`./ContractTemplateRendererPage.cjs`),s=require(`./ContractTemplateRendererValidation.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),ee=require(`@vueuse/core`),u=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,d=.1,he=3e3,ge=128,f=(0,c.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:_e,emit:ve}){let p=f,m=ve,ye=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],be=(0,c.ref)(),h=(0,c.ref)(),xe=(0,c.ref)(),g=(0,c.ref)(n.normalizeRenderValues(p.template,p.values)),Se=(0,c.ref)({...g.value}),_=(0,c.ref)(!1),v=(0,c.ref)([]),y=(0,c.ref)([]),b=(0,c.ref)(!1),x=(0,c.ref)(!1),S=(0,c.ref)(``),C=(0,c.ref)(``),w=(0,c.ref)(``),Ce=(0,c.ref)(0),T=(0,c.ref)(St(p.zoom)),E=(0,c.ref)(``),D=(0,c.ref)(`all`),O=(0,c.ref)(!1),k=(0,c.ref)(new Map),A=new Map,j=new Map,M=new Map,N=new Set,P=new Map,{width:we}=(0,ee.useElementSize)(h),F=(0,c.computed)(()=>p.readonly||p.disabled),I=(0,c.computed)(()=>p.interactionMode===`inline`&&!F.value),L=(0,c.computed)(()=>n.validateTemplateRenderStructure(p.template)),R=(0,c.computed)(()=>_.value?v.value:[...L.value,...y.value]),z=(0,c.computed)(()=>(Array.isArray(p.template?.variables)?p.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Te=(0,c.computed)(()=>n.resolveTemplateDisplayValues(p.template,g.value,p.controlRegistry)),Ee=(0,c.computed)(()=>z.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),De=(0,c.computed)(()=>{let e=new Map;return R.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),B=(0,c.computed)(()=>n.buildTemplateRenderPages(p.template,I.value?Se.value:Te.value,{readonly:p.readonly,disabled:p.disabled,mode:I.value?`control`:`display`})),Oe=(0,c.computed)(()=>{let e=new Map,t=new Set(z.value.map(e=>e.key));return B.value.forEach(n=>{gt(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),V=(0,c.computed)(()=>z.value.filter(dt)),ke=(0,c.computed)(()=>{let e=B.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 z.value.forEach(e=>{let r=t.get(Oe.value.get(e.key)??``)??n;r.allVariables.push(e),dt(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}))}),H=(0,c.computed)(()=>B.value.length>0),Ae=(0,c.computed)(()=>z.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),je=(0,c.computed)(()=>z.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Me=(0,c.computed)(()=>z.value.length?Math.round(Ae.value/z.value.length*100):0),Ne=(0,c.computed)(()=>_.value&&v.value.length===0),Pe=(0,c.computed)(()=>_.value?Ne.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:y.value.length?`发现 ${R.value.length} 个模板或填写问题`:L.value.length?`模板存在 ${L.value.length} 个问题,已安全降级展示`:``),Fe=(0,c.computed)(()=>_.value?R.value.length>0||x.value:R.value.length>0);(0,c.watch)(()=>p.template,e=>{U(n.normalizeRenderValues(e,p.values),!1),Je();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(w.value)||(w.value=t.find(Boolean)??``),C.value&&!z.value.some(e=>e.key===C.value)&&Qe()},{deep:!0}),(0,c.watch)(()=>[p.template?.variables,p.optionResolver,p.requester,p.allowedRemoteOrigins,p.remoteRequestTimeoutMs,p.remoteOptionsCacheTtlMs],()=>{it()},{deep:!0,immediate:!0}),(0,c.watch)(()=>p.values,e=>{let t=n.normalizeRenderValues(p.template,e);Ct(t,g.value)||(U(t,!1,{refreshInlineHtml:p.interactionMode!==`inline`}),Je())},{deep:!0}),(0,c.watch)(I,e=>{e&&(Se.value={...g.value})}),(0,c.watch)(()=>p.collapsiblePanel,e=>{e||(O.value=!1)}),(0,c.watch)(()=>p.zoom,e=>T.value=St(e)),(0,c.watch)(B,e=>{!w.value&&e.length&&(w.value=e[0].id)},{immediate:!0});function U(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(Se.value={...e}),t&&(m(`update:values`,{...g.value}),m(`change`,{...g.value}))}function W(e,t){if(!e||F.value)return;if(U({...g.value,[e]:t},!0,{refreshInlineHtml:p.interactionMode!==`inline`}),_.value){We();return}let r=z.value.find(t=>t.key===e);r&&(r.type??`text`)===`text`&&(y.value=[...y.value.filter(t=>t.variableKey!==e),...n.validateTemplateTextOverflow(r,t)],m(`validate`,R.value))}function Ie(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`?W(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?W(n,t.value===``?void 0:t.valueAsNumber):W(n,t.value))}function Le(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(w.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&J(r)}function Re(e,t,n){let i=r.createContractTemplateLayoutPage(e,{pageIndex:t,pageNumber:t+1,totalPages:B.value.length}).key;for(P.delete(i),P.set(i,n);P.size>ge;){let e=P.keys().next().value;if(e===void 0)break;P.delete(e)}}function ze(e){return P.get(e)}function Be(e){let t=B.value.find(t=>t.id===e.pageId),n=z.value.some(t=>t.key===e.key);if(!(!t||!n||!gt(t.contentHtml).has(e.key))&&!(e.kind===`input`&&p.interactionMode!==`inline`)){if(w.value=e.pageId,e.kind===`input`){W(e.key,e.value);return}J(e.key)}}function Ve(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),J(t.dataset.key))}function He(){return{...g.value}}function Ue(e){U(n.normalizeRenderValues(p.template,e))}function We(){let e=n.validateTemplateRenderValues(p.template,g.value);return Ye(e),m(`validate`,e),e}function Ge(){let e=n.resolveTemplateRenderSubmitErrors(p.template,g.value,p.validateOnSubmit);if((p.validateOnSubmit||e.length)&&(Ye(e),m(`validate`,e)),e.length)return et(e[0]),!1;let t=He();return m(`submit`,t),t}function Ke(){return U(n.buildInitialRenderValues(p.template)),Je(),He()}function qe(){F.value||l.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Ke()})}function Je(){y.value=[],_.value=!1,v.value=[],b.value=!1,x.value=!1,K()}function Ye(e){if(y.value=[],v.value=e,_.value=!0,b.value=!1,e.length){x.value=!1,K();return}Xe()}let G;function K(){G&&=(clearTimeout(G),void 0)}function Xe(){K(),x.value=!0,G=setTimeout(()=>{x.value=!1,G=void 0},he)}function q(e){J(e,!0)}function Ze(e){p.interactionMode===`panel`&&(O.value&&=!1,z.value.some(t=>t.key===e)&&!V.value.some(t=>t.key===e)&&ft())}function J(e,t=!1){if(!e)return;Ze(e),C.value=e,S.value=e;let n=Oe.value.get(e);n&&(w.value=n),t&&(Ce.value+=1),(0,c.nextTick)(()=>{$e(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`&&xe.value?.querySelector(`[data-field-key="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function Qe(){C.value=``,S.value=``,$e(``)}function $e(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 et(e){e.variableKey?(q(e.variableKey),p.interactionMode===`panel`&&(0,c.nextTick)(()=>mt(e.variableKey))):e.pageId&&xt(e.pageId)}function tt(e){return De.value.get(e)??[]}function Y(e){return k.value.get(e.key)??{options:e.options??[],loading:!1}}function nt(e){let t=e.componentKey||e.type||``;return t?p.controlRegistry?.[t]:void 0}function X(e,t){let n=new Map(k.value);n.set(e,t),k.value=n}function rt(e){m(`control-warning`,e)}async function it(){A.forEach(e=>e.abort()),A.clear(),j.clear(),N.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 at(e,t):X(e.key,{options:t,loading:!1}),e.type===`custom`&&!nt(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;N.has(n)||(N.add(n),rt({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function at(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;A.set(e.key,i),X(e.key,{options:n,loading:!0});let a=ot(e),o=Date.now(),s=j.get(a);if(s&&s.expiresAt>o){X(e.key,{options:s.options,loading:!1}),A.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=M.get(a);o||(o=st(e,r,c,i),M.set(a,o),o.finally(()=>{M.get(a)===o&&M.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&&j.set(a,{options:s,expiresAt:Date.now()+l}),X(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:`高级控件选项加载失败`;X(e.key,{options:n,loading:!1,error:a}),rt({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{A.get(e.key)===i&&A.delete(e.key)}}function ot(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function st(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 ct(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 ct(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 lt(e){let t=Y(e);return{variable:e,value:g.value[e.key],errors:tt(e.key),active:C.value===e.key,readonly:p.readonly,disabled:p.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>W(e.key,t),focusVariable:()=>q(e.key)}}function ut(){let e=z.value;if(!e.length)return;let t=e.findIndex(e=>e.key===C.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])){q(i.key);return}}}function dt(e){let t=E.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?D.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):D.value===`error`?tt(e.key).length>0:!0:!1}function ft(){E.value=``,D.value=`all`}function pt(e,t){let n=V.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&&(q(i),(0,c.nextTick)(()=>mt(i)))}function mt(e){(xe.value?.querySelector(`[data-field-key="${Q(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function ht(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(),pt(n,e.shiftKey?-1:1))}function gt(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 _t(){!p.collapsiblePanel||p.interactionMode!==`panel`||(O.value=!O.value)}function Z(e){let t=St(e);return T.value=t,m(`update:zoom`,t),t}function vt(){return Z(1)}function yt(){return T.value}function bt(){let e=Math.max(...B.value.map(e=>e.width),1);return Z(Math.max(0,we.value-48)/e)}function xt(e){e&&(w.value=e,(0,c.nextTick)(()=>{h.value?.querySelector(`[data-render-page-id="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function St(e){let t=Number(e);return Number.isFinite(t)?Math.min(me,Math.max(pe,Math.round(t*100)/100)):1}function Q(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function Ct(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function wt(e){!(e.ctrlKey||e.metaKey)||!H.value||(e.preventDefault(),Z(e.deltaY>0?T.value-d:T.value+d))}let $;function Tt(){$?.removeEventListener(`wheel`,wt),$=void 0}function Et(e){Tt(),e&&(e.addEventListener(`wheel`,wt,{passive:!1}),$=e)}return(0,c.watch)(h,e=>{Et(e)},{immediate:!0}),(0,c.onBeforeUnmount)(()=>{Tt(),K(),A.forEach(e=>e.abort()),A.clear()}),_e({showValidation:Ye,getMountedLayoutMetrics:ze,focusError:e=>{et(e),e.variableKey&&(0,c.nextTick)(()=>mt(e.variableKey))},getValues:He,setValues:Ue,validate:We,submit:Ge,resetValues:Ke,scrollToVariable:q,setZoom:Z,resetZoom:vt,getZoom:yt,fitWidth:bt,scrollToPage:xt}),(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:be,class:(0,c.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":f.disabled,"is-readonly":f.readonly,"is-panel":f.interactionMode===`panel`,"is-inline":f.interactionMode===`inline`}]),onClick:Le,onKeydown:Ve,onInput:Ie,onChange:Ie},[(0,c.renderSlot)(e.$slots,`fileBar`),H.value?((0,c.openBlock)(),(0,c.createBlock)(a.default,{key:0,title:f.title,"filled-count":Ae.value,"total-count":z.value.length,"progress-percent":Me.value,"required-missing-count":je.value,zoom:T.value,pages:B.value,"active-page-id":w.value,"min-zoom":pe,"max-zoom":me,"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":O.value,readonly:f.readonly,disabled:f.disabled,onZoomIn:t[0]||=e=>Z(T.value+d),onZoomOut:t[1]||=e=>Z(T.value-d),onResetZoom:vt,onFitWidth:bt,onSelectPage:xt,onValidate:We,onReset:qe,onSubmit:Ge,onTogglePanel:_t},{extra:(0,c.withCtx)(()=>[(0,c.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,c.createCommentVNode)(``,!0),Fe.value?((0,c.openBlock)(),(0,c.createBlock)(s.default,{key:1,passed:Ne.value,summary:Pe.value,errors:R.value,expanded:b.value,onToggle:t[2]||=e=>b.value=!b.value,onFocusError:et},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,c.createCommentVNode)(``,!0),H.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:3,class:(0,c.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":f.interactionMode===`inline`}])},[(0,c.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:h,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":S.value},[(0,c.createElementVNode)(`div`,re,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(B.value,(e,t)=>((0,c.openBlock)(),(0,c.createBlock)(o.default,{key:e.id,page:e,index:t,total:B.value.length,zoom:T.value,"show-meta":f.showPageMeta,"font-base-url":f.contractFontBaseUrl,"active-key":S.value,"scroll-request":Ce.value,onInteraction:Be,onMetrics:n=>Re(e,t,n)},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`,`onMetrics`]))),128))])],8,ne),f.interactionMode===`panel`?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:0,class:(0,c.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":O.value&&f.collapsiblePanel}])},[f.collapsiblePanel?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Tooltip),{key:0,title:O.value?`展开填写面板`:`收起填写面板`},{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":O.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!O.value,onClick:t[3]||=e=>O.value=!O.value},[O.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.RightOutlined),{key:1,"aria-hidden":`true`}))],8,ie)]),_:1},8,[`title`])):(0,c.createCommentVNode)(``,!0),(0,c.createElementVNode)(`div`,ae,[(0,c.createElementVNode)(`aside`,oe,[(0,c.createElementVNode)(`div`,se,[(0,c.createElementVNode)(`div`,ce,[(0,c.createElementVNode)(`div`,null,[t[6]||=(0,c.createElementVNode)(`strong`,null,`填写项`,-1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(Ae.value)+` / `+(0,c.toDisplayString)(z.value.length)+` 已填写`,1)]),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(je.value?`${je.value} 项必填未完成`:`必填项已完成`),1)]),(0,c.createVNode)((0,c.unref)(l.Input),{value:E.value,"onUpdate:value":t[4]||=e=>E.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(u.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,c.createElementVNode)(`div`,le,[(0,c.createVNode)((0,c.unref)(l.Segmented),{value:D.value,"onUpdate:value":t[5]||=e=>D.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:ye},null,8,[`value`]),(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,disabled:!Ee.value,onClick:ut},{default:(0,c.withCtx)(()=>[...t[7]||=[(0,c.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,c.createVNode)((0,c.unref)(l.Progress),{percent:Me.value,size:`small`,"show-info":!1},null,8,[`percent`])]),V.value.length?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:xe,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:ht},[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(ke.value,t=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,c.createElementVNode)(`div`,ue,[(0,c.createElementVNode)(`strong`,null,(0,c.toDisplayString)(t.title),1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(t.variables.length)+` / `+(0,c.toDisplayString)(t.totalCount)+` 项`,1)]),(0,c.createElementVNode)(`div`,de,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(t.variables,t=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,c.renderSlot)(e.$slots,`field`,(0,c.mergeProps)({ref_for:!0},lt(t)),()=>[(0,c.createVNode)(i.default,{variable:t,value:g.value[t.key],errors:tt(t.key),active:C.value===t.key,readonly:f.readonly,disabled:f.disabled,options:Y(t).options,loading:Y(t).loading,"load-error":Y(t).error,registration:nt(t),"selector-http":f.selectorHttp,"selector-url-prefix":f.selectorUrlPrefix,onUpdateValue:e=>W(t.key,e),onFocusVariable:e=>q(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,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:z.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,c.unref)(l.Empty).PRESENTED_IMAGE_SIMPLE},(0,c.createSlots)({default:(0,c.withCtx)(()=>[E.value||D.value!==`all`?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:0,type:`link`,size:`small`,onClick:ft},{default:(0,c.withCtx)(()=>[...t[9]||=[(0,c.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,c.createCommentVNode)(``,!0)]),_:2},[E.value||D.value!==`all`?{name:`description`,fn:(0,c.withCtx)(()=>[t[8]||=(0,c.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,c.createCommentVNode)(``,!0)],2)):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,te,[(0,c.createVNode)((0,c.unref)(l.Empty),{description:`暂无可渲染的合同页面`,image:(0,c.unref)(l.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=f;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),
|
|
2
|
-
`)}function _e(){let e=P.value,t=e?.state.selection;if(!(!e||!t||t.empty))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);if(Math.abs(r.top-n.top)>ie)return;let i=Math.abs(r.left-n.left)/G.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ve(){let e=P.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof m.CellSelection||t instanceof h.NodeSelection))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);return{top:Math.min(n.top,r.top),bottom:Math.max(n.bottom,r.bottom),left:Math.min(n.left,r.left),right:Math.max(n.left,r.right)}}catch{return}}function ye(){let e=P.value;if(!e)return``;let t=e.state.selection.$from,n=t.pos;for(let e=t.depth;e>0;--e){let r=t.node(e).type.name;if(r===`paragraph`||r===`heading`){n=t.start(e);break}}return e.state.doc.textBetween(n,e.state.selection.from,``)}function be(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function I(e){for(let t=e.depth;t>0;--t){let n=e.node(t).type.spec.tableRole;if(n===`cell`||n===`header_cell`)return e.before(t)}}function xe(e,t){let n=P.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return I(n.state.doc.resolve(r))}function Se(){let e=P.value;if(e)return I(e.state.selection.$from)}function Ce(e,t,n){let r=P.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof m.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=xe(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(m.CellSelection.create(r.state.doc,a))),!0):!1}function we(){let e=P.value,t=e?.isActive(`table`)?e.can():void 0,n=e=>!!(t&&e(t));return{addRowBefore:n(e=>e.addRowBefore()),addRowAfter:n(e=>e.addRowAfter()),deleteRow:n(e=>e.deleteRow()),addColumnBefore:n(e=>e.addColumnBefore()),addColumnAfter:n(e=>e.addColumnAfter()),deleteColumn:n(e=>e.deleteColumn()),mergeCells:n(e=>e.mergeCells()),splitCell:n(e=>e.splitCell()),alignLeft:n(e=>e.setCellAttribute(`textAlign`,`left`)),alignCenter:n(e=>e.setCellAttribute(`textAlign`,`center`)),alignRight:n(e=>e.setCellAttribute(`textAlign`,`right`)),toggleHeaderRow:n(e=>e.toggleHeaderRow()),toggleHeaderColumn:n(e=>e.toggleHeaderColumn()),deleteTable:n(e=>e.deleteTable())}}function Te(){let e=P.value,t=e?.state.selection;if(!e||!(t instanceof m.CellSelection))return`left`;let n=new Set;return t.forEachCell(e=>{let t=e.attrs.textAlign;n.add(t===`center`||t===`right`?t:`left`)}),n.size===1?n.values().next().value??`left`:`mixed`}function Ee(e=P.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function L(e){let t=P.value;if(!t)return 0;let n=Ee(t.state.doc),r=n,i=e=>{r=Ee(e.doc)};return e===`delete-table-row`?(0,m.deleteRow)(t.state,i):e===`delete-table-column`?(0,m.deleteColumn)(t.state,i):(0,m.deleteTable)(t.state,i),Math.max(0,n-r)}function R(e){let t=P.value?.state.selection,n=!!(t&&!t.empty);y(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?_e():void 0,leadingText:ye()})}function De(e,t){R({pageId:v.page.id,clientX:e,clientY:t})}function Oe(e,t){y(`editor-context-menu`,{type:`image`,...e,image:t})}function ke(e,t){if(!(e.type.name!==`image`||typeof e.attrs.src!=`string`||!e.attrs.src))return{position:t,src:e.attrs.src,alt:typeof e.attrs.alt==`string`?e.attrs.alt:void 0,title:typeof e.attrs.title==`string`?e.attrs.title:void 0,width:s.normalizeContractImageDimension(e.attrs.width),height:s.normalizeContractImageDimension(e.attrs.height)}}function z(){let e=P.value?.state.selection;if(e instanceof h.NodeSelection)return ke(e.node,e.from)}function Ae(e,t){let n=t instanceof HTMLElement?t.closest(`[data-template-variable], img[src]`):null;if(n)try{let t=e.posAtDOM(n,0),r=e.state.doc.nodeAt(t);return!r||r.type.name!==`templateVariable`&&r.type.name!==`image`?void 0:(r.type.name===`templateVariable`&&typeof r.attrs.key==`string`&&y(`variable-select`,r.attrs.key),(!(e.state.selection instanceof h.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(h.NodeSelection.create(e.state.doc,t))),ke(r,t))}catch{return}}function B(e){y(`editor-context-menu`,{type:`table`,...e,capabilities:we(),activeAlignment:Te(),affectedVariableCounts:{deleteRow:L(`delete-table-row`),deleteColumn:L(`delete-table-column`),deleteTable:L(`delete-table`)}})}function je(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function V(){let e=P.value;if(!e)return[];let{doc:t,selection:n}=e.state,r=[],i=e=>{e.type.name===`paragraph`?r.push(`paragraph`):e.type.name===`heading`&&je(e.attrs.level)&&r.push(e.attrs.level)};if(n.empty)for(let e=n.$from.depth;e>0;e--){let t=n.$from.node(e);if(t.type.name===`paragraph`||t.type.name===`heading`){i(t);break}}else t.nodesBetween(n.from,n.to,e=>(i(e),!0));return Array.from(new Set(r))}function Me(){let e=V();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function Ne(){return V().length>1}function Pe(){return[`center`,`right`].find(e=>P.value?.isActive(`heading`,{textAlign:e})||P.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function H(){let e=P.value,t=t=>!!e?.isActive(t),n=e?.getAttributes(`textStyle`)??{};return{isFocused:!!e?.isFocused,canUndo:!!e?.can().undo(),canRedo:!!e?.can().redo(),isBold:t(`bold`),isItalic:t(`italic`),isUnderline:t(`underline`),isBulletList:t(`bulletList`),isOrderedList:t(`orderedList`),isTableActive:t(`table`),currentHeadingLevel:Me(),hasMixedBlockFormats:Ne(),textAlign:Pe(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:he(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:ge(),selectedContentImage:z()}}function U(){y(`editor-state-change`,v.page.id,H())}(0,f.watch)(b,e=>{P.value?.setEditable(!e),U()}),(0,f.watch)(()=>v.page.contentHtml,e=>{W(e)});function W(e){if(!P.value||e===$()){T=void 0;return}if(M()){T=e;return}P.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),U()}let Fe=(0,f.computed)(()=>{let e=t.normalizePageDecorations(v.pageDecorations),n=v.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return{width:`${v.pageSize.width}px`,height:`${v.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,v.pageSize.height-r-i)}px`}}),G=(0,f.computed)(()=>Math.max(.1,v.zoom||1)),Ie=(0,f.computed)(()=>({width:`${Math.ceil((v.pageSize.width+10)*G.value)}px`,height:`${Math.ceil((v.pageSize.height+40)*G.value)}px`})),Le=(0,f.computed)(()=>({"--gd-contract-page-zoom":String(G.value)})),Re=(0,f.computed)(()=>n.resolvePageSize(v.pageSize));function ze(e){if(v.readonly||v.disabled){e.preventDefault(),e.stopPropagation();return}let t=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(t){e.preventDefault(),e.stopPropagation(),y(`variable-drop`,v.page.id,t,e.clientX,e.clientY);return}let n=e.dataTransfer?.getData(g);n&&n!==v.page.id&&(e.preventDefault(),e.stopPropagation(),y(`variable-move-blocked`,v.page.id))}function Be(e,t){let n=P.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return o.insertTemplateVariableNode(n,e,r),Z(),K()}function Ve(e,t){let n=P.value;if(n)return c.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),K()}function He(e){let t=P.value,n=t?.state.selection;if(!t||!(n instanceof h.NodeSelection)||n.node.type.name!==`image`)return;let r={...n.node.attrs},i=!1;if([`width`,`height`].forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t]===void 0?null:s.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let a=t.state.tr.setNodeMarkup(n.from,void 0,r);return a.setSelection(h.NodeSelection.create(a.doc,n.from)),t.view.dispatch(a),K()}function Ue(){let e=P.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function K(){return{...v.page,pageSize:Re.value,contentHtml:$(),contentJson:Q()??v.page.contentJson}}function We(e){if(!j())return{contentHtml:e.contentHtml,contentJson:e.contentJson};let t=$();return!M()&&e.contentHtml!==v.page.contentHtml&&e.contentHtml!==t?{contentHtml:e.contentHtml,contentJson:e.contentJson}:{contentHtml:t,contentJson:Q()}}function q(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function J(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Ge(e){return(0,ne.generateHTML)(q(e),N)}function Ke(){if(v.pageDecorations){let e=t.normalizePageDecorations(v.pageDecorations),n=v.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return Math.max(120,v.pageSize.height-r-i)}let e=x.value;if(!e)return v.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,v.pageSize.height-r-i)}function qe(){let e=x.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=G.value;return Array.from(e.children).map(r=>{let i=r.getBoundingClientRect(),a=r instanceof HTMLTableElement?r:r.querySelector(`:scope > table`),o=a?Array.from(a.rows).map(e=>{let r=e.getBoundingClientRect();return{top:(r.top-t.top)/n,height:r.height/n}}):void 0;return{top:(i.top-t.top)/n,height:i.height/n,...o?.length?{tableRows:o,trailingTextBlockHeight:Number.parseFloat(window.getComputedStyle(e).lineHeight)||28}:{}}})}function Y(){if(!P.value)return;let e=qe(),t=Ke();if(e.some(e=>e.top+e.height>t+1))return n.splitPageContentByMeasurements(Q()?.content,e,t)}function Je(){return!!Y()}function Ye(){let e=P.value;if(!e||!j()||M()||!e.view.hasFocus())return!1;let t=Y();if(!t)return!1;let n=0;for(let r=0;r<t.splitIndex;r++)n+=e.state.doc.child(r).nodeSize;if(t.currentContent.length>t.splitIndex){let r=e.state.doc.child(t.splitIndex),i=t.currentContent[t.splitIndex].content.length;for(let e=0;e<i;e++)n+=r.child(e).nodeSize;n+=1}return e.state.selection.ranges.every(e=>e.$from.pos>=n)}function Xe(e){return(!e||(0,f.toRaw)(e)===le)&&!se&&!M()&&!P.value?.view.hasFocus()&&J(Q()?.content)}function Ze(){if(!P.value||!j()||M())return;let e=Y();if(!e)return;let t=P.value,{doc:n,selection:r,storedMarks:a}=t.state,o=t.state.tr,s=0;for(let t=0;t<e.splitIndex;t++)s+=n.child(t).nodeSize;let c=s,l=s;if(e.currentContent.length>e.splitIndex){let t=n.child(e.splitIndex),r=e.currentContent[e.splitIndex].content.length;for(let e=0;e<r;e++)c+=t.child(e).nodeSize;l=c+1,o.delete(l,s+t.nodeSize-1),o.delete(c+2,o.doc.content.size)}else o.delete(s,n.content.size);let u=t.view.hasFocus()&&r.ranges.every(e=>e.$from.pos>=l)?r.map(t.schema.nodeFromJSON(q(e.overflowContent)),new i.Mapping([new i.StepMap([0,c,0])])):void 0;o.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(a);let ee=k+1;t.view.dispatch(o);let d=u&&{selection:u,storedMarks:a,isCurrent:()=>!E&&P.value===t&&!t.isDestroyed&&!b.value&&!M()&&t.view.hasFocus()&&k===ee};return{page:K(),overflowContent:e.overflowContent,overflowHtml:Ge(e.overflowContent),selection:d}}function Qe(e){if(!P.value||!j()||M()||!e.length)return;let t=P.value,n=t.schema.nodeFromJSON(q(e)).content,{doc:r,storedMarks:i}=t.state,a=t.state.tr;J(Q()?.content)?a.replaceWith(0,r.content.size,n):a.insert(0,n),a.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(i);let o=k+1;return t.view.dispatch(a),A=O?void 0:o,O=!1,K()}function $e(e,t){let n=P.value,r=A;if(A=void 0,!n||!j()||b.value||M()||r!==k||!e.isCurrent()||$()!==t)return;let i=h.Selection.fromJSON(n.state.doc,e.selection.toJSON()),a=k+1;n.view.dispatch(n.state.tr.setSelection(i).setStoredMarks(e.storedMarks?.map(e=>n.schema.markFromJSON(e.toJSON()))??null).setMeta(`addToHistory`,!1)),!(!e.isCurrent()||k!==a)&&(n.view.focus(),n.view.hasFocus()&&k===a&&n.commands.scrollIntoView())}function et(e,t){let n=[];return e.descendants((e,r)=>{e.type.name===`templateVariable`&&e.attrs.key===t&&n.push({node:e,pos:r})}),n}function tt(e,t=e.key){if(!P.value)return;let n=o.buildTemplateVariableAttrs(e),r=!1;return P.value.commands.command(({tr:e,state:i,dispatch:a})=>(et(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),Z(),r?K():void 0}function nt(e){if(!P.value)return;let t=0;return P.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=et(r.doc,e).map(({node:e,pos:t})=>({from:t,to:t+e.nodeSize})).sort((e,t)=>t.from-e.from);return a.forEach(e=>n.delete(e.from,e.to)),t=a.length,t&&i?.(n),t>0}),t?K():void 0}function rt(){x.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function X(e){if(e)return Array.from(x.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function it(e){rt();let t=X(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),P.value?.commands.focus(),!0):!1}function Z(){rt(),X(v.selectedVariableKey)?.classList.add(`is-active`)}function at(t){let r=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),i=P.value;if(!r||!i)return;let a=i.chain().focus().clearNodes();r.headingLevel?a.setHeading({level:r.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(r.textAlign).setFontSize(`${r.fontSize}px`).setFontFamily(r.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY).setColor(n.DEFAULT_FIELD_STYLE.color||`#1f2937`),r.bold?a.setBold():a.unsetBold(),r.italic?a.setItalic():a.unsetItalic(),r.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,f.watch)([()=>v.selectedVariableKey,()=>v.variables],()=>{(0,f.nextTick)(Z)},{deep:!0,flush:`post`});function ot(e){b.value||(e.type===`apply-block-style`?P.value&&u.applyContractTemplateBlockStyle(P.value,e.format):e.type===`apply-text-style-preset`?at(e.preset):c.runContractTemplateEditorCommand(P.value,e),U())}function st(){P.value?.commands.focus()}function Q(){return P.value?S.read(P.value).getJSON():v.page.contentJson}function $(){return P.value?S.read(P.value).getHTML():v.page.contentHtml}function ct(e){let t=v.variables.find(t=>t.id===e||t.key===e),n=t?X(t.key):void 0;Z(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function lt(){x.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,f.onBeforeUnmount)(()=>{E=!0,w!==void 0&&clearTimeout(w),P.value?.off(`contract-word-paste`,F),P.value?.destroy()}),ae({findText:de,revealSearchMatch:fe,replaceSearchMatches:pe,focusHeading:me,focus:st,getHTML:$,getJSON:Q,getContentSnapshot:We,getEditorState:H,getTableCommandCapabilities:we,getAffectedVariableCount:L,insertVariable:Be,insertContentImage:Ve,updateSelectedContentImage:He,getSelectionRange:Ue,getSelectionViewportRect:ve,requestTextContextMenu:De,isReady:j,isComposing:M,hasOverflowContent:Je,hasOverflowSelection:Ye,isUntouchedPaginationBlank:Xe,updateVariable:tt,removeVariable:nt,splitOverflowContent:Ze,prependContent:Qe,restorePaginationSelection:$e,runCommand:ot,scrollIntoField:ct,scrollIntoVariable:it,scrollIntoPage:lt}),(e,t)=>((0,f.openBlock)(),(0,f.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,f.normalizeStyle)(Ie.value)},[(0,f.createElementVNode)(`div`,{class:(0,f.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":_.active}]),style:(0,f.normalizeStyle)(Le.value)},[(0,f.createElementVNode)(`header`,re,[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(_.page.title||`第 ${_.pageIndex+1} 页`),1),(0,f.createElementVNode)(`span`,null,`第 `+(0,f.toDisplayString)(_.pageIndex+1)+` 页 · `+(0,f.toDisplayString)(_.pageSize.label||`A4`)+` · `+(0,f.toDisplayString)(_.pageSize.width)+` × `+(0,f.toDisplayString)(_.pageSize.height),1)]),(0,f.createElementVNode)(`div`,{ref_key:`pageElement`,ref:x,class:`gd-contract-template-designer__page`,style:(0,f.normalizeStyle)(Fe.value),onLoadCapture:t[0]||=e=>y(`page-layout-change`,_.page.id),onDragover:t[1]||=(0,f.withModifiers)(()=>{},[`prevent`]),onDrop:ze,onClick:t[2]||=e=>y(`editor-focus`,_.page.id)},[(0,f.createVNode)(ee.default,{decorations:_.pageDecorations,"page-number":_.pageIndex+1,"total-pages":_.totalPages,variables:_.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,f.unref)(P)?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(p.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,f.unref)(P)},null,8,[`editor`])):(0,f.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=_;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../contract-print-css/index.cjs`),t=require(`./constants.cjs`),n=require(`./utils/page-decorations.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/editor-snapshot-cache.cjs`),a=require(`../../../node_modules/prosemirror-transform/dist/index.cjs`),o=require(`./composables/use-page-authoring.cjs`);require(`../../../node_modules/@tiptap/pm/dist/transform/index.cjs`);const s=require(`./extensions/template-variable.cjs`),c=require(`./utils/content-image.cjs`),l=require(`./extensions/editor-extensions.cjs`),u=require(`./utils/context-variable.cjs`),d=require(`./utils/block-style.cjs`),ee=require(`./ContractTemplatePageDecorations.cjs`),te=require(`./utils/caret-viewport.cjs`);let f=require(`vue`),ne=require(`ant-design-vue`),re=require(`@tiptap/vue-3`),ie=require(`@tiptap/core`),p=require(`@tiptap/pm/tables`),m=require(`@tiptap/pm/state`);var ae={class:`gd-contract-template-designer__page-title`},h=`application/x-gd-contract-variable-move`,oe=8,g=(0,f.defineComponent)({name:`ProContractTemplateDesignerPage`,__name:`DesignerPage`,props:{page:{},pageIndex:{},pageSize:{},pageDecorations:{default:void 0},totalPages:{default:1},variables:{},selectedVariableKey:{default:``},active:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},zoom:{default:1},processImageFile:{type:Function,default:void 0},searchQuery:{default:``},searchMatchCase:{type:Boolean,default:!1},activeSearchMatch:{default:void 0},getScrollContainer:{type:Function,default:void 0}},emits:[`page-update`,`variable-drop`,`variable-select`,`variable-move-blocked`,`editor-focus`,`editor-ready`,`composition-end`,`page-layout-change`,`editor-state-change`,`editor-context-menu`,`word-paste`],setup(g,{expose:se,emit:ce}){let _=g,v=ce,y=(0,f.computed)(()=>_.readonly||_.disabled),b=(0,f.ref)(),x=i.createEditorSnapshotCache(),S=!1,C,w,T=!1,E=!1,le=!1,D=!1,O=0,k,ue=_.page.contentHtml,de=(0,f.toRaw)(_.page);function A(){return E&&!T}function j(){return S||!!N.value?.view.composing}function fe(e){let t=e.filter(Boolean).join(`、`);return typeof window>`u`?!1:new Promise(e=>{ne.Modal.confirm({title:`粘贴内容包含不兼容字体`,content:`检测到 ${t||`外部`} 字体。为保证 Mac 与 Windows 排版一致,将统一转换为合同标准字体(GD Contract Latin + 系统宋体)。是否继续粘贴?`,okText:`继续粘贴`,cancelText:`取消粘贴`,onOk:()=>e(!0),onCancel:()=>e(!1)})})}let M=l.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:_.processImageFile,confirmExternalFontPaste:fe,getZoom:()=>Math.max(.1,_.zoom||1)}),N=(0,re.useEditor)({content:_.page.contentHtml,editable:!y.value,extensions:M,editorProps:{attributes:{class:`gd-contract-template-designer__editor-prose`},handleClick:(e,t,n)=>{let r=(n.target instanceof HTMLElement?n.target.closest(`[data-template-variable]`):void 0)?.dataset.key;if(!r)return!1;let i=_.variables.find(e=>e.key===r);return i&&v(`variable-select`,i.key),!1},handleDOMEvents:{compositionstart:()=>(S=!0,C!==void 0&&clearTimeout(C),!1),compositionend:()=>(S=!1,C=setTimeout(()=>{if(C=void 0,!(T||j())){if(w!==void 0){let e=w;w=void 0,Fe(e)}v(`page-update`,K()),v(`composition-end`,_.page.id)}},0),!1),contextmenu:(e,t)=>{if(y.value)return!1;let n=Oe(e,t.target);if(n)return t.preventDefault(),B({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=N.value?.state.selection,i=r instanceof p.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=u.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||Te(t.clientX,t.clientY,t.target))?(U({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(z({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0)},dragstart:(e,t)=>y.value?(t.preventDefault(),!0):(t.target instanceof HTMLElement?t.target:null)?.closest(`[data-template-variable]`)?(t.dataTransfer?.setData(h,_.page.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`),b.value?.classList.add(`is-variable-dragging`),!1):!1,dragend:()=>(b.value?.classList.remove(`is-variable-dragging`),!1),drop:(e,t)=>{if(y.value)return t.preventDefault(),t.stopPropagation(),!0;let n=t.dataTransfer?.getData(h);return!n||n===_.page.id?!1:(t.preventDefault(),v(`variable-move-blocked`,_.page.id),!0)}},handleKeyDown:(e,t)=>{if(y.value||!Se(t))return!1;let n=N.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=H();if(i){let e=n.view.coordsAtPos(r.from);return B({pageId:_.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof p.CellSelection;if(u.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=we();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(p.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return U({pageId:_.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return z({pageId:_.page.id,clientX:o.left,clientY:o.bottom}),!0},handleScrollToSelection:e=>te.scrollCaretIntoCanvas(e,()=>_.getScrollContainer?.(),()=>b.value)},onTransaction:({transaction:e,appendedTransactions:t})=>{[e,...t].some(e=>e.docChanged&&!e.getMeta(`preventUpdate`))&&(le=!0),!E&&[e,...t].some(e=>e.selectionSet||e.storedMarksSet)&&(D=!0),[e,...t].some(e=>e.docChanged||e.selectionSet||e.storedMarksSet||e.getMeta(`blur`))&&(O+=1)},onUpdate:({editor:e})=>{v(`page-update`,{..._.page,contentHtml:x.read(e).getHTML(),contentJson:x.read(e).getJSON()}),W()},onFocus:()=>{v(`editor-focus`,_.page.id),W()},onBlur:W,onSelectionUpdate:W,onMount:()=>{k=O},onCreate:({editor:e})=>{if(_.page.contentHtml!==ue&&_.page.contentHtml!==x.read(e).getHTML())if(S||e.view.composing)w=_.page.contentHtml;else{let t=k===O?O+1:void 0;e.commands.setContent(_.page.contentHtml||`<p></p>`,{emitUpdate:!1}),k=t}E=!0,e.on(`contract-word-paste`,P),W(),v(`editor-ready`,_.page.id)}}),{findText:pe,revealSearchMatch:me,replaceSearchMatches:he,focusHeading:ge}=o.usePageAuthoring({editor:()=>N.value,readonly:()=>y.value,search:()=>({query:_.searchQuery,matchCase:_.searchMatchCase,activeMatch:_.activeSearchMatch})});function P(e){v(`word-paste`,e)}function _e(e){if(typeof e==`number`&&Number.isFinite(e))return e;let t=String(e||``).match(/(\d+(\.\d+)?)/);return t?Number(t[1]):void 0}function ve(){if(!N.value)return``;let{from:e,to:t}=N.value.state.selection;return N.value.state.doc.textBetween(e,t,`
|
|
2
|
+
`)}function ye(){let e=N.value,t=e?.state.selection;if(!(!e||!t||t.empty))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);if(Math.abs(r.top-n.top)>oe)return;let i=Math.abs(r.left-n.left)/G.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function be(){let e=N.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof p.CellSelection||t instanceof m.NodeSelection))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);return{top:Math.min(n.top,r.top),bottom:Math.max(n.bottom,r.bottom),left:Math.min(n.left,r.left),right:Math.max(n.left,r.right)}}catch{return}}function xe(){let e=N.value;if(!e)return``;let t=e.state.selection.$from,n=t.pos;for(let e=t.depth;e>0;--e){let r=t.node(e).type.name;if(r===`paragraph`||r===`heading`){n=t.start(e);break}}return e.state.doc.textBetween(n,e.state.selection.from,``)}function Se(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function F(e){for(let t=e.depth;t>0;--t){let n=e.node(t).type.spec.tableRole;if(n===`cell`||n===`header_cell`)return e.before(t)}}function Ce(e,t){let n=N.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return F(n.state.doc.resolve(r))}function we(){let e=N.value;if(e)return F(e.state.selection.$from)}function Te(e,t,n){let r=N.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof p.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=Ce(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(p.CellSelection.create(r.state.doc,a))),!0):!1}function I(){let e=N.value,t=e?.isActive(`table`)?e.can():void 0,n=e=>!!(t&&e(t));return{addRowBefore:n(e=>e.addRowBefore()),addRowAfter:n(e=>e.addRowAfter()),deleteRow:n(e=>e.deleteRow()),addColumnBefore:n(e=>e.addColumnBefore()),addColumnAfter:n(e=>e.addColumnAfter()),deleteColumn:n(e=>e.deleteColumn()),mergeCells:n(e=>e.mergeCells()),splitCell:n(e=>e.splitCell()),alignLeft:n(e=>e.setCellAttribute(`textAlign`,`left`)),alignCenter:n(e=>e.setCellAttribute(`textAlign`,`center`)),alignRight:n(e=>e.setCellAttribute(`textAlign`,`right`)),toggleHeaderRow:n(e=>e.toggleHeaderRow()),toggleHeaderColumn:n(e=>e.toggleHeaderColumn()),deleteTable:n(e=>e.deleteTable())}}function Ee(){let e=N.value,t=e?.state.selection;if(!e||!(t instanceof p.CellSelection))return`left`;let n=new Set;return t.forEachCell(e=>{let t=e.attrs.textAlign;n.add(t===`center`||t===`right`?t:`left`)}),n.size===1?n.values().next().value??`left`:`mixed`}function L(e=N.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function R(e){let t=N.value;if(!t)return 0;let n=L(t.state.doc),r=n,i=e=>{r=L(e.doc)};return e===`delete-table-row`?(0,p.deleteRow)(t.state,i):e===`delete-table-column`?(0,p.deleteColumn)(t.state,i):(0,p.deleteTable)(t.state,i),Math.max(0,n-r)}function z(e){let t=N.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?ye():void 0,leadingText:xe()})}function De(e,t){z({pageId:_.page.id,clientX:e,clientY:t})}function B(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function V(e,t){if(!(e.type.name!==`image`||typeof e.attrs.src!=`string`||!e.attrs.src))return{position:t,src:e.attrs.src,alt:typeof e.attrs.alt==`string`?e.attrs.alt:void 0,title:typeof e.attrs.title==`string`?e.attrs.title:void 0,width:c.normalizeContractImageDimension(e.attrs.width),height:c.normalizeContractImageDimension(e.attrs.height)}}function H(){let e=N.value?.state.selection;if(e instanceof m.NodeSelection)return V(e.node,e.from)}function Oe(e,t){let n=t instanceof HTMLElement?t.closest(`[data-template-variable], img[src]`):null;if(n)try{let t=e.posAtDOM(n,0),r=e.state.doc.nodeAt(t);return!r||r.type.name!==`templateVariable`&&r.type.name!==`image`?void 0:(r.type.name===`templateVariable`&&typeof r.attrs.key==`string`&&v(`variable-select`,r.attrs.key),(!(e.state.selection instanceof m.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(m.NodeSelection.create(e.state.doc,t))),V(r,t))}catch{return}}function U(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:I(),activeAlignment:Ee(),affectedVariableCounts:{deleteRow:R(`delete-table-row`),deleteColumn:R(`delete-table-column`),deleteTable:R(`delete-table`)}})}function ke(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function Ae(){let e=N.value;if(!e)return[];let{doc:t,selection:n}=e.state,r=[],i=e=>{e.type.name===`paragraph`?r.push(`paragraph`):e.type.name===`heading`&&ke(e.attrs.level)&&r.push(e.attrs.level)};if(n.empty)for(let e=n.$from.depth;e>0;e--){let t=n.$from.node(e);if(t.type.name===`paragraph`||t.type.name===`heading`){i(t);break}}else t.nodesBetween(n.from,n.to,e=>(i(e),!0));return Array.from(new Set(r))}function je(){let e=Ae();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function Me(){return Ae().length>1}function Ne(){return[`center`,`right`].find(e=>N.value?.isActive(`heading`,{textAlign:e})||N.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function Pe(){let e=N.value,t=t=>!!e?.isActive(t),n=e?.getAttributes(`textStyle`)??{};return{isFocused:!!e?.isFocused,canUndo:!!e?.can().undo(),canRedo:!!e?.can().redo(),isBold:t(`bold`),isItalic:t(`italic`),isUnderline:t(`underline`),isBulletList:t(`bulletList`),isOrderedList:t(`orderedList`),isTableActive:t(`table`),currentHeadingLevel:je(),hasMixedBlockFormats:Me(),textAlign:Ne(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:_e(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:ve(),selectedContentImage:H()}}function W(){v(`editor-state-change`,_.page.id,Pe())}(0,f.watch)(y,e=>{N.value?.setEditable(!e),W()}),(0,f.watch)(()=>_.page.contentHtml,e=>{Fe(e)});function Fe(e){if(!N.value||e===$()){w=void 0;return}if(j()){w=e;return}N.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W()}let Ie=(0,f.computed)(()=>{let{top:t,bottom:r}=e.resolveContractPagePadding(n.normalizePageDecorations(_.pageDecorations),_.pageIndex+1);return{width:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${t}px`,paddingBottom:`${r}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-t-r)}px`}}),G=(0,f.computed)(()=>Math.max(.1,_.zoom||1)),Le=(0,f.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*G.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*G.value)}px`})),Re=(0,f.computed)(()=>({"--gd-contract-page-zoom":String(G.value)})),ze=(0,f.computed)(()=>r.resolvePageSize(_.pageSize));function Be(e){if(_.readonly||_.disabled){e.preventDefault(),e.stopPropagation();return}let t=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(t){e.preventDefault(),e.stopPropagation(),v(`variable-drop`,_.page.id,t,e.clientX,e.clientY);return}let n=e.dataTransfer?.getData(h);n&&n!==_.page.id&&(e.preventDefault(),e.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function Ve(e,t){let n=N.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return s.insertTemplateVariableNode(n,e,r),Z(),K()}function He(e,t){let n=N.value;if(n)return l.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),K()}function Ue(e){let t=N.value,n=t?.state.selection;if(!t||!(n instanceof m.NodeSelection)||n.node.type.name!==`image`)return;let r={...n.node.attrs},i=!1;if([`width`,`height`].forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t]===void 0?null:c.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let a=t.state.tr.setNodeMarkup(n.from,void 0,r);return a.setSelection(m.NodeSelection.create(a.doc,n.from)),t.view.dispatch(a),K()}function We(){let e=N.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function K(){return{..._.page,pageSize:ze.value,contentHtml:$(),contentJson:Q()??_.page.contentJson}}function Ge(e){if(!A())return{contentHtml:e.contentHtml,contentJson:e.contentJson};let t=$();return!j()&&e.contentHtml!==_.page.contentHtml&&e.contentHtml!==t?{contentHtml:e.contentHtml,contentJson:e.contentJson}:{contentHtml:t,contentJson:Q()}}function q(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function Ke(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function qe(e){return(0,ie.generateHTML)(q(e),M)}function Je(){if(_.pageDecorations){let{top:t,bottom:r}=e.resolveContractPagePadding(n.normalizePageDecorations(_.pageDecorations),_.pageIndex+1);return Math.max(120,_.pageSize.height-t-r)}let t=b.value;if(!t)return _.pageSize.height-108;let r=window.getComputedStyle(t),i=Number.parseFloat(r.paddingTop)||0,a=Number.parseFloat(r.paddingBottom)||0;return Math.max(120,_.pageSize.height-i-a)}function Ye(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=G.value;return Array.from(e.children).map(r=>{let i=r.getBoundingClientRect(),a=r instanceof HTMLTableElement?r:r.querySelector(`:scope > table`),o=a?Array.from(a.rows).map(e=>{let r=e.getBoundingClientRect();return{top:(r.top-t.top)/n,height:r.height/n}}):void 0;return{top:(i.top-t.top)/n,height:i.height/n,...o?.length?{tableRows:o,trailingTextBlockHeight:Number.parseFloat(window.getComputedStyle(e).lineHeight)||28}:{}}})}function J(){if(!N.value)return;let e=Ye(),t=Je();if(e.some(e=>e.top+e.height>t+1))return r.splitPageContentByMeasurements(Q()?.content,e,t)}function Xe(){return!!J()}function Ze(){let e=N.value;if(!e||!A()||j()||!e.view.hasFocus())return!1;let t=J();if(!t)return!1;let n=0;for(let r=0;r<t.splitIndex;r++)n+=e.state.doc.child(r).nodeSize;if(t.currentContent.length>t.splitIndex){let r=e.state.doc.child(t.splitIndex),i=t.currentContent[t.splitIndex].content.length;for(let e=0;e<i;e++)n+=r.child(e).nodeSize;n+=1}return e.state.selection.ranges.every(e=>e.$from.pos>=n)}function Qe(e){return(!e||(0,f.toRaw)(e)===de)&&!le&&!j()&&!N.value?.view.hasFocus()&&Ke(Q()?.content)}function $e(){if(!N.value||!A()||j())return;let e=J();if(!e)return;let t=N.value,{doc:n,selection:r,storedMarks:i}=t.state,o=t.state.tr,s=0;for(let t=0;t<e.splitIndex;t++)s+=n.child(t).nodeSize;let c=s,l=s;if(e.currentContent.length>e.splitIndex){let t=n.child(e.splitIndex),r=e.currentContent[e.splitIndex].content.length;for(let e=0;e<r;e++)c+=t.child(e).nodeSize;l=c+1,o.delete(l,s+t.nodeSize-1),o.delete(c+2,o.doc.content.size)}else o.delete(s,n.content.size);let u=t.view.hasFocus()&&r.ranges.every(e=>e.$from.pos>=l)?r.map(t.schema.nodeFromJSON(q(e.overflowContent)),new a.Mapping([new a.StepMap([0,c,0])])):void 0;o.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(i);let d=O+1;t.view.dispatch(o);let ee=u&&{selection:u,storedMarks:i,isCurrent:()=>!T&&N.value===t&&!t.isDestroyed&&!y.value&&!j()&&t.view.hasFocus()&&O===d};return{page:K(),overflowContent:e.overflowContent,overflowHtml:qe(e.overflowContent),selection:ee}}function et(e){if(!N.value||!A()||j()||!e.length)return;let t=N.value,n=t.schema.nodeFromJSON(q(e)).content,{doc:r,storedMarks:i}=t.state,a=t.state.tr;Ke(Q()?.content)?a.replaceWith(0,r.content.size,n):a.insert(0,n),a.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(i);let o=O+1;return t.view.dispatch(a),k=D?void 0:o,D=!1,K()}function tt(e,t){let n=N.value,r=k;if(k=void 0,!n||!A()||y.value||j()||r!==O||!e.isCurrent()||$()!==t)return;let i=m.Selection.fromJSON(n.state.doc,e.selection.toJSON()),a=O+1;n.view.dispatch(n.state.tr.setSelection(i).setStoredMarks(e.storedMarks?.map(e=>n.schema.markFromJSON(e.toJSON()))??null).setMeta(`addToHistory`,!1)),!(!e.isCurrent()||O!==a)&&(n.view.focus(),n.view.hasFocus()&&O===a&&n.commands.scrollIntoView())}function Y(e,t){let n=[];return e.descendants((e,r)=>{e.type.name===`templateVariable`&&e.attrs.key===t&&n.push({node:e,pos:r})}),n}function nt(e,t=e.key){if(!N.value)return;let n=s.buildTemplateVariableAttrs(e),r=!1;return N.value.commands.command(({tr:e,state:i,dispatch:a})=>(Y(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),Z(),r?K():void 0}function rt(e){if(!N.value)return;let t=0;return N.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=Y(r.doc,e).map(({node:e,pos:t})=>({from:t,to:t+e.nodeSize})).sort((e,t)=>t.from-e.from);return a.forEach(e=>n.delete(e.from,e.to)),t=a.length,t&&i?.(n),t>0}),t?K():void 0}function it(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function X(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function at(e){it();let t=X(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),N.value?.commands.focus(),!0):!1}function Z(){it(),X(_.selectedVariableKey)?.classList.add(`is-active`)}function ot(e){let n=t.CONTRACT_TEXT_STYLE_PRESETS.find(t=>t.key===e),i=N.value;if(!n||!i)return;let a=i.chain().focus().clearNodes();n.headingLevel?a.setHeading({level:n.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(n.textAlign).setFontSize(`${n.fontSize}px`).setFontFamily(n.fontFamily||t.DEFAULT_CONTRACT_FONT_FAMILY).setColor(r.DEFAULT_FIELD_STYLE.color||`#1f2937`),n.bold?a.setBold():a.unsetBold(),n.italic?a.setItalic():a.unsetItalic(),n.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,f.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,f.nextTick)(Z)},{deep:!0,flush:`post`});function st(e){y.value||(e.type===`apply-block-style`?N.value&&d.applyContractTemplateBlockStyle(N.value,e.format):e.type===`apply-text-style-preset`?ot(e.preset):l.runContractTemplateEditorCommand(N.value,e),W())}function ct(){N.value?.commands.focus()}function Q(){return N.value?x.read(N.value).getJSON():_.page.contentJson}function $(){return N.value?x.read(N.value).getHTML():_.page.contentHtml}function lt(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?X(t.key):void 0;Z(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function ut(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,f.onBeforeUnmount)(()=>{T=!0,C!==void 0&&clearTimeout(C),N.value?.off(`contract-word-paste`,P),N.value?.destroy()}),se({findText:pe,revealSearchMatch:me,replaceSearchMatches:he,focusHeading:ge,focus:ct,getHTML:$,getJSON:Q,getContentSnapshot:Ge,getEditorState:Pe,getTableCommandCapabilities:I,getAffectedVariableCount:R,insertVariable:Ve,insertContentImage:He,updateSelectedContentImage:Ue,getSelectionRange:We,getSelectionViewportRect:be,requestTextContextMenu:De,isReady:A,isComposing:j,hasOverflowContent:Xe,hasOverflowSelection:Ze,isUntouchedPaginationBlank:Qe,updateVariable:nt,removeVariable:rt,splitOverflowContent:$e,prependContent:et,restorePaginationSelection:tt,runCommand:st,scrollIntoField:lt,scrollIntoVariable:at,scrollIntoPage:ut}),(e,t)=>((0,f.openBlock)(),(0,f.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,f.normalizeStyle)(Le.value)},[(0,f.createElementVNode)(`div`,{class:(0,f.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,f.normalizeStyle)(Re.value)},[(0,f.createElementVNode)(`header`,ae,[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,f.createElementVNode)(`span`,null,`第 `+(0,f.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,f.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,f.toDisplayString)(g.pageSize.width)+` × `+(0,f.toDisplayString)(g.pageSize.height),1)]),(0,f.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,f.normalizeStyle)(Ie.value),onLoadCapture:t[0]||=e=>v(`page-layout-change`,g.page.id),onDragover:t[1]||=(0,f.withModifiers)(()=>{},[`prevent`]),onDrop:Be,onClick:t[2]||=e=>v(`editor-focus`,g.page.id)},[(0,f.createVNode)(ee.default,{decorations:g.pageDecorations,"page-number":g.pageIndex+1,"total-pages":g.totalPages,variables:g.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,f.unref)(N)?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(re.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,f.unref)(N)},null,8,[`editor`])):(0,f.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=g;
|