@guodun/antdv 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/es/components/contract-signing-location/index.mjs +1 -0
  2. package/dist/es/components/contract-signing-location/src/ContractSigningLocation.vue.mjs +304 -289
  3. package/dist/es/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.mjs +337 -326
  4. package/dist/es/components/contract-signing-location/src/ContractSigningLocationNavigator.vue.mjs +41 -33
  5. package/dist/es/components/contract-signing-location/src/ContractSigningTemplatePage.mjs +5 -0
  6. package/dist/es/components/contract-signing-location/src/ContractSigningTemplatePage.vue.mjs +23 -0
  7. package/dist/es/components/contract-signing-location/src/location-rules.mjs +115 -77
  8. package/dist/es/components/contract-signing-location/src/template-source.mjs +85 -0
  9. package/dist/es/components/contract-signing-location/style/index.css +1 -1
  10. package/dist/es/components/index.mjs +8 -6
  11. package/dist/es/components/pro-contract-signing-flow/src/ContractSigningFlowCanvas.vue.mjs +164 -57
  12. package/dist/es/components/pro-contract-signing-flow/src/ContractSigningFlowInspector.vue.mjs +128 -125
  13. package/dist/es/components/pro-contract-signing-flow/src/ContractSigningFlowNodeCard.vue.mjs +75 -49
  14. package/dist/es/components/pro-contract-signing-flow/src/ProContractSigningFlow.vue.mjs +135 -91
  15. package/dist/es/components/pro-contract-signing-flow/src/constants.mjs +25 -5
  16. package/dist/es/components/pro-contract-signing-flow/style/index.css +1 -1
  17. package/dist/es/components/pro-contract-template-designer/index.mjs +5 -4
  18. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.mjs +5 -0
  19. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.mjs +347 -0
  20. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.mjs +5 -0
  21. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +171 -0
  22. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateFileBar.mjs +5 -0
  23. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateFileBar.vue.mjs +166 -0
  24. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.mjs +4 -4
  25. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererValidation.mjs +5 -0
  26. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererValidation.vue.mjs +36 -0
  27. package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +202 -202
  28. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1591 -1612
  29. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.mjs +235 -239
  30. package/dist/es/components/pro-contract-template-designer/src/SigningPlacementLayer.vue.mjs +16 -16
  31. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +166 -166
  32. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-draft-cache.mjs +100 -33
  33. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-files.mjs +77 -0
  34. package/dist/es/components/pro-contract-template-designer/src/extensions/word-paste.mjs +23 -23
  35. package/dist/es/components/pro-contract-template-designer/src/utils/file-tabs.mjs +14 -0
  36. package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +121 -121
  37. package/dist/es/components/pro-contract-template-designer/src/utils/toolbar-overflow.mjs +19 -0
  38. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  39. package/dist/es/index.mjs +23 -21
  40. package/dist/lib/components/contract-signing-location/index.cjs +1 -1
  41. package/dist/lib/components/contract-signing-location/src/ContractSigningLocation.vue.cjs +1 -1
  42. package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs +1 -1
  43. package/dist/lib/components/contract-signing-location/src/ContractSigningLocationNavigator.vue.cjs +1 -1
  44. package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.cjs +1 -0
  45. package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.vue.cjs +1 -0
  46. package/dist/lib/components/contract-signing-location/src/location-rules.cjs +1 -1
  47. package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -0
  48. package/dist/lib/components/contract-signing-location/style/index.css +1 -1
  49. package/dist/lib/components/index.cjs +1 -1
  50. package/dist/lib/components/pro-contract-signing-flow/src/ContractSigningFlowCanvas.vue.cjs +1 -1
  51. package/dist/lib/components/pro-contract-signing-flow/src/ContractSigningFlowInspector.vue.cjs +1 -1
  52. package/dist/lib/components/pro-contract-signing-flow/src/ContractSigningFlowNodeCard.vue.cjs +1 -1
  53. package/dist/lib/components/pro-contract-signing-flow/src/ProContractSigningFlow.vue.cjs +1 -1
  54. package/dist/lib/components/pro-contract-signing-flow/src/constants.cjs +1 -1
  55. package/dist/lib/components/pro-contract-signing-flow/style/index.css +1 -1
  56. package/dist/lib/components/pro-contract-template-designer/index.cjs +1 -1
  57. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.cjs +1 -0
  58. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.cjs +1 -0
  59. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.cjs +1 -0
  60. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -0
  61. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateFileBar.cjs +1 -0
  62. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateFileBar.vue.cjs +1 -0
  63. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.cjs +1 -1
  64. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererValidation.cjs +1 -0
  65. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererValidation.vue.cjs +1 -0
  66. package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
  67. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  68. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.cjs +1 -1
  69. package/dist/lib/components/pro-contract-template-designer/src/SigningPlacementLayer.vue.cjs +1 -1
  70. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +2 -2
  71. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-draft-cache.cjs +1 -1
  72. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-files.cjs +2 -0
  73. package/dist/lib/components/pro-contract-template-designer/src/extensions/word-paste.cjs +1 -1
  74. package/dist/lib/components/pro-contract-template-designer/src/utils/file-tabs.cjs +1 -0
  75. package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +2 -2
  76. package/dist/lib/components/pro-contract-template-designer/src/utils/toolbar-overflow.cjs +1 -0
  77. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  78. package/dist/lib/index.cjs +1 -1
  79. package/dist/theme/contract-signing-location.css +1 -1
  80. package/dist/theme/icon.css +1 -1
  81. package/dist/theme/index.css +1 -1
  82. package/dist/theme/pro-contract-signing-flow.css +1 -1
  83. package/dist/types/components/contract-signing-location/index.d.ts +1 -0
  84. package/dist/types/components/contract-signing-location/src/ContractSigningLocation.vue.d.ts +3 -1
  85. package/dist/types/components/contract-signing-location/src/ContractSigningLocationInspector.vue.d.ts +2 -2
  86. package/dist/types/components/contract-signing-location/src/ContractSigningTemplatePage.vue.d.ts +6 -0
  87. package/dist/types/components/contract-signing-location/src/location-rules.d.ts +3 -3
  88. package/dist/types/components/contract-signing-location/src/template-source.d.ts +20 -0
  89. package/dist/types/components/contract-signing-location/src/types.d.ts +47 -2
  90. package/dist/types/components/pro-contract-signing-flow/src/ContractSigningFlowCanvas.vue.d.ts +19 -3
  91. package/dist/types/components/pro-contract-signing-flow/src/ProContractSigningFlow.vue.d.ts +223 -2
  92. package/dist/types/components/pro-contract-signing-flow/src/constants.d.ts +15 -0
  93. package/dist/types/components/pro-contract-signing-flow/src/types.d.ts +12 -0
  94. package/dist/types/components/pro-contract-template-designer/index.d.ts +1 -0
  95. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.d.ts +103 -0
  96. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +48 -0
  97. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateFileBar.vue.d.ts +231 -0
  98. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererValidation.vue.d.ts +15 -0
  99. package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +1 -1
  100. package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +25 -2
  101. package/dist/types/components/pro-contract-template-designer/src/SigningPlacementInspector.vue.d.ts +2 -2
  102. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +1 -1
  103. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-draft-cache.d.ts +29 -1
  104. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-files.d.ts +24 -0
  105. package/dist/types/components/pro-contract-template-designer/src/constants.d.ts +2 -2
  106. package/dist/types/components/pro-contract-template-designer/src/types.d.ts +59 -1
  107. package/dist/types/components/pro-contract-template-designer/src/utils/file-tabs.d.ts +3 -0
  108. package/dist/types/components/pro-contract-template-designer/src/utils/toolbar-overflow.d.ts +11 -0
  109. package/package.json +2 -1
@@ -1 +1 @@
1
- :root{--gdant-primary-50:var(--primary-50,#f4f9ff);--gdant-primary-100:var(--primary-100,#e9f1f6);--gdant-primary-200:var(--primary-200,#bcd7ff);--gdant-primary-300:var(--primary-300,#7fb0ff);--gdant-primary-400:var(--primary-400,#3b87ff);--gdant-primary-500:var(--primary-500,#1161ff);--gdant-primary-600:var(--primary-600,#0d4ed1);--gdant-primary-700:var(--primary-700,#0a3da5);--gdant-primary-800:var(--primary-800,#082c79);--gdant-primary-900:var(--primary-900,#05204d);--gdant-neutral-0:var(--neutral-0,#fff);--gdant-neutral-50:var(--neutral-50,#fafbfc);--gdant-neutral-100:var(--neutral-100,#f5f6f8);--gdant-neutral-200:var(--neutral-200,#eaecef);--gdant-neutral-300:var(--neutral-300,#d9dce0);--gdant-neutral-400:var(--neutral-400,#aab0b7);--gdant-neutral-500:var(--neutral-500,#7a818b);--gdant-neutral-600:var(--neutral-600,#565b66);--gdant-neutral-700:var(--neutral-700,#383d47);--gdant-neutral-800:var(--neutral-800,#262a33);--gdant-neutral-900:var(--neutral-900,#0f131a);--gdant-success-50:var(--success-50,#e8f9ed);--gdant-success-500:var(--success-500,#00b42a);--gdant-success-600:var(--success-600,#009023);--gdant-warning-50:var(--warning-50,#fff3e8);--gdant-warning-100:var(--warning-100,#ffe4cc);--gdant-warning-500:var(--warning-500,#f58634);--gdant-warning-600:var(--warning-600,#d96c1c);--gdant-warning-700:var(--warning-700,#b35316);--gdant-error-50:var(--error-50,#fde9e9);--gdant-error-100:var(--error-100,#fcd4d4);--gdant-error-300:var(--error-300,#f47070);--gdant-error-500:var(--error-500,#ee3939);--gdant-error-600:var(--error-600,#c92626);--gdant-error-700:var(--error-700,#a31c1c);--gdant-radius-xs:var(--radius-xs,2px);--gdant-radius-sm:var(--radius-sm,4px);--gdant-radius-md:var(--radius-md,6px);--gdant-radius-lg:var(--radius-lg,8px);--gdant-radius-xl:var(--radius-xl,12px);--gdant-radius-pill:var(--radius-pill,9999px);--gdant-shadow-raised:var(--shadow-raised,0 1px 2px #0f172a0a, 0 1px 4px #0f172a0f);--gdant-shadow-overlay:var(--shadow-overlay,0 4px 12px #0f172a14, 0 2px 6px #0f172a0a);--gdant-shadow-modal:var(--shadow-modal,0 16px 48px #0f172a29, 0 4px 12px #0f172a14);--gdant-spacing-xs:var(--spacing-xs,4px);--gdant-spacing-sm:var(--spacing-sm,8px);--gdant-spacing-md:var(--spacing-md,12px);--gdant-spacing-base:var(--spacing-base,16px);--gdant-spacing-lg:var(--spacing-lg,20px);--gdant-spacing-xl:var(--spacing-xl,24px);--gdant-text-body:var(--text-body,14px);--gdant-text-body-sm:var(--text-body-sm,12px);--gdant-text-h3:var(--text-h3,16px);--gdant-font-medium:var(--font-medium,500);--gdant-font-semibold:var(--font-semibold,600);--gdant-duration-normal:var(--duration-normal,.2s);--gdant-duration-slow:var(--duration-slow,.3s);--gdant-easing-default:var(--easing-default,cubic-bezier(.2, 0, 0, 1));--gdant-overlay-bg:#ffffffb8;--gdant-z-overlay:var(--z-overlay,1040);--gdant-z-modal:var(--z-modal,1050)}.gd-contract-signing-flow{box-sizing:border-box;border:1px solid var(--gdant-neutral-300);border-radius:var(--gdant-radius-lg);background:var(--gdant-neutral-100);width:100%;min-width:0;min-height:560px;color:var(--gdant-neutral-800);font-family:var(--gdant-font-family);font-size:14px;overflow:hidden;container-type:inline-size}.gd-contract-signing-flow__layout{grid-template-columns:minmax(0,1fr) 336px;width:100%;height:100%;min-height:0;display:grid}.gd-contract-signing-flow__canvas-panel{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.gd-contract-signing-flow__canvas-header,.gd-contract-signing-flow__inspector-header{border-bottom:1px solid var(--gdant-neutral-200);background:var(--gdant-neutral-0);justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:12px 16px;display:flex}.gd-contract-signing-flow__canvas-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.gd-contract-signing-flow__canvas-header h2,.gd-contract-signing-flow__inspector-header h2{color:var(--gdant-neutral-800);margin:0;font-size:16px;line-height:1.4}.gd-contract-signing-flow__canvas-header p,.gd-contract-signing-flow__inspector-header p{color:var(--gdant-neutral-500);margin:3px 0 0;font-size:12px}.gd-contract-signing-flow__canvas-scroll{background-color:var(--gdant-neutral-50);background-image:radial-gradient(var(--gdant-neutral-300) .7px, transparent .7px);background-size:18px 18px;flex:1;min-height:0;overflow:auto}.gd-contract-signing-flow__canvas{flex-direction:column;align-items:center;min-width:300px;min-height:100%;padding:28px 20px 36px;display:flex}.gd-contract-signing-flow__step{flex-direction:column;align-items:center;display:flex}.gd-contract-signing-flow__node{border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-md);background:var(--gdant-neutral-0);width:min(520px,100cqw - 420px);min-width:280px;min-height:64px;box-shadow:var(--gdant-shadow-raised);cursor:pointer;transition:border-color var(--gdant-duration-fast), box-shadow var(--gdant-duration-fast);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid;position:relative}.gd-contract-signing-flow__node:hover{border-color:var(--gdant-primary-300)}.gd-contract-signing-flow__node.is-selected{border-color:var(--gdant-primary-500);box-shadow:0 0 0 2px color-mix(in srgb, var(--gdant-primary-500) 12%, transparent), var(--gdant-shadow-raised)}.gd-contract-signing-flow__node.is-unknown{border-color:var(--gdant-warning-400)}.gd-contract-signing-flow__node-icon{border-radius:var(--gdant-radius-md);background:var(--gdant-primary-50);width:32px;height:32px;color:var(--gdant-primary-600);justify-content:center;align-items:center;font-size:15px;display:flex}.gd-contract-signing-flow__node-icon.is-start{background:var(--gdant-success-50);color:var(--gdant-success-600)}.gd-contract-signing-flow__node-icon.is-end{background:var(--gdant-neutral-100);color:var(--gdant-neutral-600)}.gd-contract-signing-flow__node-body{min-width:0}.gd-contract-signing-flow__node-title-row{align-items:center;gap:7px;min-width:0;display:flex}.gd-contract-signing-flow__node-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.gd-contract-signing-flow__node-title-row .ant-tag{flex:none;margin-inline-end:0;line-height:18px}.gd-contract-signing-flow__node-meta{color:var(--gdant-neutral-500);white-space:nowrap;gap:10px;margin-top:5px;font-size:11px;display:flex;overflow:hidden}.gd-contract-signing-flow__node-meta span{text-overflow:ellipsis;align-items:center;gap:3px;min-width:0;display:inline-flex;overflow:hidden}.gd-contract-signing-flow__node-description{color:var(--gdant-neutral-500);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;font-size:11px;overflow:hidden}.gd-contract-signing-flow__node-actions{align-items:center;gap:0;display:flex}.gd-contract-signing-flow__node-actions .ant-btn{width:26px;height:26px;padding:0}.gd-contract-signing-flow__connector{width:24px;height:34px;position:relative}.gd-contract-signing-flow__connector span{background:var(--gdant-neutral-400);width:1px;height:24px;position:absolute;top:0;left:50%}.gd-contract-signing-flow__connector i{border-right:1px solid var(--gdant-neutral-500);border-bottom:1px solid var(--gdant-neutral-500);width:8px;height:8px;position:absolute;bottom:3px;left:calc(50% - 4px);transform:rotate(45deg)}.gd-contract-signing-flow__add-node{margin-top:14px}.gd-contract-signing-flow__inspector{border-left:1px solid var(--gdant-neutral-200);background:var(--gdant-neutral-0);flex-direction:column;min-width:0;min-height:0;display:flex}.gd-contract-signing-flow__inspector-header .ant-tag{margin-inline-end:0}.gd-contract-signing-flow__inspector-scroll{min-height:0;overflow:auto}.gd-contract-signing-flow__form-section{border-bottom:1px solid var(--gdant-neutral-200);padding:14px 16px}.gd-contract-signing-flow__form-section.is-collapsed .gd-contract-signing-flow__section-heading{margin-bottom:0}.gd-contract-signing-flow__form-section.is-placement{background:var(--gdant-neutral-50)}.gd-contract-signing-flow__section-heading{justify-content:space-between;align-items:center;gap:8px;min-height:24px;margin-bottom:11px;display:flex}.gd-contract-signing-flow__section-heading.is-toggle{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0;padding:0}.gd-contract-signing-flow__section-heading-meta{color:var(--gdant-neutral-500);align-items:center;gap:6px;font-size:12px;display:inline-flex}.gd-contract-signing-flow__section-heading-meta .anticon{color:var(--gdant-neutral-500);transition:transform var(--gdant-duration-fast);font-size:12px}.gd-contract-signing-flow__section-heading h3{margin:0;font-size:13px}.gd-contract-signing-flow__section-heading p{color:var(--gdant-neutral-500);margin:3px 0 0;font-size:11px}.gd-contract-signing-flow__section-heading .ant-tag{margin-inline-end:0}.gd-contract-signing-flow__form .ant-form-item{margin-bottom:10px}.gd-contract-signing-flow__form .ant-form-item:last-child{margin-bottom:0}.gd-contract-signing-flow__form .ant-form-item-label,.gd-contract-signing-flow__rule-grid .ant-form-item-label,.gd-contract-signing-flow__inline-form-item .ant-form-item-label{padding-bottom:4px}.gd-contract-signing-flow__form .ant-form-item-label>label,.gd-contract-signing-flow__rule-grid .ant-form-item-label>label,.gd-contract-signing-flow__inline-form-item .ant-form-item-label>label{color:var(--gdant-neutral-600);font-size:12px}.gd-contract-signing-flow__form .ant-input,.gd-contract-signing-flow__form .ant-input-affix-wrapper,.gd-contract-signing-flow__form .ant-select-selector,.gd-contract-signing-flow__rule-grid .ant-select-selector,.gd-contract-signing-flow__inline-form-item .ant-select-selector{border-radius:var(--gdant-radius-md)}.gd-contract-signing-flow__setting-list{gap:10px;margin-top:13px;display:grid}.gd-contract-signing-flow__setting-list.is-compact{gap:0;margin-top:0}.gd-contract-signing-flow__setting-row{min-height:30px;color:var(--gdant-neutral-700);justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}.gd-contract-signing-flow__setting-row>div{gap:2px;display:grid}.gd-contract-signing-flow__setting-row strong{font-size:12px;font-weight:600}.gd-contract-signing-flow__setting-row span{color:var(--gdant-neutral-700)}.gd-contract-signing-flow__setting-row div span{color:var(--gdant-neutral-500);font-size:11px}.gd-contract-signing-flow__setting-list.is-compact .gd-contract-signing-flow__setting-row{border-bottom:1px solid var(--gdant-neutral-100);min-height:32px}.gd-contract-signing-flow__setting-list.is-compact .gd-contract-signing-flow__setting-row:last-child{border-bottom:0}.gd-contract-signing-flow__rule-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gd-contract-signing-flow__rule-grid .ant-form-item{margin-bottom:0}.gd-contract-signing-flow__inline-form-item{margin:0}.gd-contract-signing-flow__inline-form-item .ant-form-item-control-input{min-height:32px}.gd-contract-signing-flow__field-label{color:var(--gdant-neutral-600);margin:13px 0 7px;font-size:12px;display:block}.gd-contract-signing-flow__seal-list{grid-template-columns:1fr 1fr;gap:7px 12px;display:grid}.gd-contract-signing-flow__seal-list .ant-checkbox-wrapper{color:var(--gdant-neutral-600);font-size:11px}.gd-contract-signing-flow__node-overview{text-align:center;place-items:center;gap:8px;min-height:260px;padding:28px;display:grid}.gd-contract-signing-flow__node-overview-icon{background:var(--gdant-primary-50);width:42px;height:42px;color:var(--gdant-primary-600);border-radius:50%;place-items:center;font-weight:700;display:grid}.gd-contract-signing-flow__node-overview h3{margin:0;font-size:15px}.gd-contract-signing-flow__node-overview p{max-width:220px;color:var(--gdant-neutral-500);margin:0;font-size:12px;line-height:1.6}.gd-contract-signing-flow__node-overview .ant-tag{margin:0}.gd-contract-signing-flow__empty-inspector{flex:1;min-height:260px}.gd-contract-signing-flow.is-disabled{filter:saturate(.75)}@container (width<=820px){.gd-contract-signing-flow__layout{grid-template-rows:minmax(420px,1fr) auto;grid-template-columns:1fr;overflow:auto}.gd-contract-signing-flow__inspector{border-top:1px solid var(--gdant-neutral-200);border-left:0;max-height:none}.gd-contract-signing-flow__node{width:min(520px,100cqw - 40px)}}@container (width<=460px){.gd-contract-signing-flow__canvas-header,.gd-contract-signing-flow__inspector-header{padding:10px 12px}.gd-contract-signing-flow__canvas-header .ant-btn{padding-inline:9px}.gd-contract-signing-flow__canvas-actions{flex-wrap:nowrap}.gd-contract-signing-flow__canvas{min-width:0;padding-inline:12px}.gd-contract-signing-flow__node{grid-template-columns:30px minmax(0,1fr) auto;width:calc(100cqw - 24px);min-width:0;padding-inline:9px}.gd-contract-signing-flow__node-icon{width:30px;height:30px}.gd-contract-signing-flow__node-meta{gap:7px}.gd-contract-signing-flow__node-meta span:nth-child(3){display:none}.gd-contract-signing-flow__node-actions .ant-btn{width:23px}.gd-contract-signing-flow__form-section{padding-inline:12px}}@media (prefers-reduced-motion:reduce){.gd-contract-signing-flow *{transition:none!important}}
1
+ :root{--gdant-primary-50:var(--primary-50,#f4f9ff);--gdant-primary-100:var(--primary-100,#e9f1f6);--gdant-primary-200:var(--primary-200,#bcd7ff);--gdant-primary-300:var(--primary-300,#7fb0ff);--gdant-primary-400:var(--primary-400,#3b87ff);--gdant-primary-500:var(--primary-500,#1161ff);--gdant-primary-600:var(--primary-600,#0d4ed1);--gdant-primary-700:var(--primary-700,#0a3da5);--gdant-primary-800:var(--primary-800,#082c79);--gdant-primary-900:var(--primary-900,#05204d);--gdant-neutral-0:var(--neutral-0,#fff);--gdant-neutral-50:var(--neutral-50,#fafbfc);--gdant-neutral-100:var(--neutral-100,#f5f6f8);--gdant-neutral-200:var(--neutral-200,#eaecef);--gdant-neutral-300:var(--neutral-300,#d9dce0);--gdant-neutral-400:var(--neutral-400,#aab0b7);--gdant-neutral-500:var(--neutral-500,#7a818b);--gdant-neutral-600:var(--neutral-600,#565b66);--gdant-neutral-700:var(--neutral-700,#383d47);--gdant-neutral-800:var(--neutral-800,#262a33);--gdant-neutral-900:var(--neutral-900,#0f131a);--gdant-success-50:var(--success-50,#e8f9ed);--gdant-success-500:var(--success-500,#00b42a);--gdant-success-600:var(--success-600,#009023);--gdant-warning-50:var(--warning-50,#fff3e8);--gdant-warning-100:var(--warning-100,#ffe4cc);--gdant-warning-500:var(--warning-500,#f58634);--gdant-warning-600:var(--warning-600,#d96c1c);--gdant-warning-700:var(--warning-700,#b35316);--gdant-error-50:var(--error-50,#fde9e9);--gdant-error-100:var(--error-100,#fcd4d4);--gdant-error-300:var(--error-300,#f47070);--gdant-error-500:var(--error-500,#ee3939);--gdant-error-600:var(--error-600,#c92626);--gdant-error-700:var(--error-700,#a31c1c);--gdant-radius-xs:var(--radius-xs,2px);--gdant-radius-sm:var(--radius-sm,4px);--gdant-radius-md:var(--radius-md,6px);--gdant-radius-lg:var(--radius-lg,8px);--gdant-radius-xl:var(--radius-xl,12px);--gdant-radius-pill:var(--radius-pill,9999px);--gdant-shadow-raised:var(--shadow-raised,0 1px 2px #0f172a0a, 0 1px 4px #0f172a0f);--gdant-shadow-overlay:var(--shadow-overlay,0 4px 12px #0f172a14, 0 2px 6px #0f172a0a);--gdant-shadow-modal:var(--shadow-modal,0 16px 48px #0f172a29, 0 4px 12px #0f172a14);--gdant-spacing-xs:var(--spacing-xs,4px);--gdant-spacing-sm:var(--spacing-sm,8px);--gdant-spacing-md:var(--spacing-md,12px);--gdant-spacing-base:var(--spacing-base,16px);--gdant-spacing-lg:var(--spacing-lg,20px);--gdant-spacing-xl:var(--spacing-xl,24px);--gdant-text-body:var(--text-body,14px);--gdant-text-body-sm:var(--text-body-sm,12px);--gdant-text-h3:var(--text-h3,16px);--gdant-font-medium:var(--font-medium,500);--gdant-font-semibold:var(--font-semibold,600);--gdant-duration-normal:var(--duration-normal,.2s);--gdant-duration-slow:var(--duration-slow,.3s);--gdant-easing-default:var(--easing-default,cubic-bezier(.2, 0, 0, 1));--gdant-overlay-bg:#ffffffb8;--gdant-z-overlay:var(--z-overlay,1040);--gdant-z-modal:var(--z-modal,1050)}.gd-contract-signing-flow{box-sizing:border-box;border:1px solid var(--gdant-neutral-300);border-radius:var(--gdant-radius-lg);background:var(--gdant-neutral-100);width:100%;min-width:0;min-height:560px;color:var(--gdant-neutral-800);font-family:var(--gdant-font-family);outline:none;font-size:14px;overflow:hidden;container-type:inline-size}.gd-contract-signing-flow:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--gdant-primary-500) 20%, transparent)}.gd-contract-signing-flow__layout{grid-template-columns:minmax(0,1fr) 336px;width:100%;height:100%;min-height:0;display:grid}.gd-contract-signing-flow__canvas-panel{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.gd-contract-signing-flow__canvas-header,.gd-contract-signing-flow__inspector-header{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-md);min-height:64px;padding:var(--gdant-spacing-md) var(--gdant-spacing-base);border-bottom:1px solid var(--gdant-neutral-200);background:var(--gdant-neutral-0);display:flex}.gd-contract-signing-flow__canvas-actions{align-items:center;gap:var(--gdant-spacing-sm);flex-shrink:0;display:flex}.gd-contract-signing-flow__zoom-tools{align-items:center;gap:var(--gdant-spacing-xs);padding:var(--gdant-spacing-xs);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-md);background:var(--gdant-neutral-50);flex:none;display:inline-flex}.gd-contract-signing-flow__zoom-tools .ant-btn{width:calc(var(--gdant-spacing-base) + var(--gdant-spacing-md));height:calc(var(--gdant-spacing-base) + var(--gdant-spacing-md));padding:0}.gd-contract-signing-flow__zoom-value{appearance:none;min-width:calc(var(--gdant-spacing-xl) * 2);height:calc(var(--gdant-spacing-base) + var(--gdant-spacing-md));padding:0 var(--gdant-spacing-xs);border-radius:var(--gdant-radius-sm);color:var(--gdant-neutral-700);font:inherit;font-size:var(--gdant-text-body-sm);font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:0}.gd-contract-signing-flow__zoom-value:hover,.gd-contract-signing-flow__zoom-value:focus-visible{background:var(--gdant-primary-50);color:var(--gdant-primary-700);outline:none}.gd-contract-signing-flow__canvas-header p,.gd-contract-signing-flow__inspector-header p{margin:var(--gdant-spacing-xs) 0 0;color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm)}.gd-contract-signing-flow__inspector-type{padding:0 var(--gdant-spacing-xs);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-sm);background:var(--gdant-neutral-50);color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);flex:none;align-items:center;line-height:1.5;display:inline-flex}.gd-contract-signing-flow__canvas-scroll{background-color:var(--gdant-neutral-50);background-image:radial-gradient(var(--gdant-neutral-300) .7px, transparent .7px);background-size:18px 18px;flex:1;min-height:0;overflow:auto}.gd-contract-signing-flow__canvas-scale{min-width:300px;min-height:100%;position:relative}.gd-contract-signing-flow__canvas{box-sizing:border-box;will-change:transform;min-width:300px;transition:transform var(--gdant-duration-normal);flex-direction:column;align-items:center;padding:28px 20px 36px;display:flex;position:absolute;top:0;left:50%}.gd-contract-signing-flow__step{flex-direction:column;align-items:center;width:100%;display:flex}.gd-contract-signing-flow__node{box-sizing:border-box;cursor:pointer;min-width:0;max-width:100%;transition:border-color var(--gdant-duration-normal), box-shadow var(--gdant-duration-normal);outline:none;flex-direction:column;align-items:center;display:flex;position:relative;overflow:visible}.gd-contract-signing-flow__node.is-disabled{cursor:not-allowed}.gd-contract-signing-flow__node.is-terminal{width:auto;box-shadow:none;gap:var(--gdant-spacing-xs);background:0 0;border:0;padding:0}.gd-contract-signing-flow__node.is-sign,.gd-contract-signing-flow__node.is-unknown{align-items:start;gap:var(--gdant-spacing-sm);width:288px;padding:var(--gdant-spacing-sm) var(--gdant-spacing-md);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-md);background:var(--gdant-neutral-0);box-shadow:var(--gdant-shadow-raised);grid-template-rows:auto;grid-template-columns:36px minmax(0,1fr);display:grid}.gd-contract-signing-flow__node.is-sign{padding-left:calc(var(--gdant-spacing-md) + var(--gdant-spacing-xs))}.gd-contract-signing-flow__node.is-sign:before{content:"";width:var(--gdant-spacing-xs);border-radius:var(--gdant-radius-md) 0 0 var(--gdant-radius-md);background:var(--gdant-primary-500);position:absolute;top:0;bottom:0;left:0}.gd-contract-signing-flow__node.is-sign.is-person:before{background:var(--gdant-warning-500)}.gd-contract-signing-flow__node.is-sign.is-company:before{background:var(--gdant-primary-500)}.gd-contract-signing-flow__node.is-sign:hover{border-color:var(--gdant-primary-300)}.gd-contract-signing-flow__node.is-sign.is-selected,.gd-contract-signing-flow__node.is-sign:focus-visible{border-color:var(--gdant-primary-500);box-shadow:0 0 0 2px color-mix(in srgb, var(--gdant-primary-500) 12%, transparent), var(--gdant-shadow-raised)}.gd-contract-signing-flow__node.is-unknown{border-color:var(--gdant-warning-500)}.gd-contract-signing-flow__node.is-unknown:hover,.gd-contract-signing-flow__node.is-unknown.is-selected,.gd-contract-signing-flow__node.is-unknown:focus-visible{border-color:var(--gdant-warning-600);box-shadow:0 0 0 2px color-mix(in srgb, var(--gdant-warning-500) 12%, transparent), var(--gdant-shadow-raised)}.gd-contract-signing-flow__node-icon{border-radius:var(--gdant-radius-pill);background:var(--gdant-primary-50);width:36px;height:36px;color:var(--gdant-primary-600);font-size:var(--gdant-text-body);flex:none;justify-content:center;align-items:center;display:flex}.gd-contract-signing-flow__node.is-terminal .gd-contract-signing-flow__node-icon{width:40px;height:40px}.gd-contract-signing-flow__node-icon.is-start{background:var(--gdant-success-50);color:var(--gdant-success-600)}.gd-contract-signing-flow__node-icon.is-end{background:var(--gdant-neutral-100);color:var(--gdant-neutral-600)}.gd-contract-signing-flow__node.is-unknown .gd-contract-signing-flow__node-icon{background:var(--gdant-warning-50);color:var(--gdant-warning-600)}.gd-contract-signing-flow__node.is-terminal.is-selected .gd-contract-signing-flow__node-icon,.gd-contract-signing-flow__node.is-terminal:focus-visible .gd-contract-signing-flow__node-icon{box-shadow:0 0 0 2px var(--gdant-primary-500), 0 0 0 4px color-mix(in srgb, var(--gdant-primary-500) 12%, transparent)}.gd-contract-signing-flow__node-caption{color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);line-height:1.5}.gd-contract-signing-flow__node.is-sign .gd-contract-signing-flow__node-icon,.gd-contract-signing-flow__node.is-unknown .gd-contract-signing-flow__node-icon{grid-area:1/1}.gd-contract-signing-flow__node-body{grid-area:1/2;min-width:0}.gd-contract-signing-flow__node-title-row{align-items:center;gap:var(--gdant-spacing-xs);min-width:0;display:flex}.gd-contract-signing-flow__node-name{min-width:0;color:var(--gdant-neutral-800);font-size:var(--gdant-text-body);font-weight:var(--gdant-font-semibold);overflow-wrap:anywhere;line-height:1.4}.gd-contract-signing-flow__node-chips{gap:var(--gdant-spacing-xs);margin-top:var(--gdant-spacing-xs);flex-wrap:wrap;display:flex}.gd-contract-signing-flow__node-chip{max-width:100%;padding:0 var(--gdant-spacing-xs);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-sm);background:var(--gdant-neutral-50);color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);align-items:center;line-height:1.5;display:inline-flex}.gd-contract-signing-flow__node-description{margin:var(--gdant-spacing-xs) 0 0;color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);overflow-wrap:anywhere;line-height:1.5}.gd-contract-signing-flow__node-actions{top:calc(var(--gdant-spacing-md) * -1);right:var(--gdant-spacing-sm);z-index:1;padding:var(--gdant-spacing-xs);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-sm);background:var(--gdant-neutral-0);box-shadow:var(--gdant-shadow-overlay);align-items:center;display:flex;position:absolute}.gd-contract-signing-flow__node-actions .ant-btn{width:26px;height:26px;padding:0}.gd-contract-signing-flow__connector{flex:none;width:24px;height:48px;position:relative}.gd-contract-signing-flow__connector span{background:var(--gdant-neutral-400);width:1px;height:38px;position:absolute;top:0;left:50%}.gd-contract-signing-flow__connector i{left:calc(50% - 4px);bottom:var(--gdant-spacing-xs);border-right:1px solid var(--gdant-neutral-500);border-bottom:1px solid var(--gdant-neutral-500);width:8px;height:8px;position:absolute;transform:rotate(45deg)}.gd-contract-signing-flow__add-on-timeline{appearance:none;align-items:center;gap:var(--gdant-spacing-xs);margin:var(--gdant-spacing-sm) 0 0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.gd-contract-signing-flow__add-on-timeline:disabled{cursor:not-allowed;opacity:.45}.gd-contract-signing-flow__add-on-timeline-icon{border:1px dashed var(--gdant-neutral-300);border-radius:var(--gdant-radius-pill);background:var(--gdant-neutral-0);width:40px;height:40px;color:var(--gdant-primary-600);place-items:center;display:grid}.gd-contract-signing-flow__add-on-timeline:hover:not(:disabled) .gd-contract-signing-flow__add-on-timeline-icon{border-color:var(--gdant-primary-300)}.gd-contract-signing-flow__add-on-timeline:focus-visible{outline:none}.gd-contract-signing-flow__add-on-timeline:focus-visible .gd-contract-signing-flow__add-on-timeline-icon{box-shadow:0 0 0 2px var(--gdant-primary-500), 0 0 0 4px color-mix(in srgb, var(--gdant-primary-500) 12%, transparent)}.gd-contract-signing-flow__add-on-timeline-caption{color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);line-height:1.5}.gd-contract-signing-flow__inspector{border-left:1px solid var(--gdant-neutral-200);background:var(--gdant-neutral-0);flex-direction:column;min-width:0;min-height:0;display:flex}.gd-contract-signing-flow__inspector-scroll{min-height:0;overflow:auto}.gd-contract-signing-flow__form-section{padding:14px var(--gdant-spacing-base);border-bottom:1px solid var(--gdant-neutral-200)}.gd-contract-signing-flow__form-section.is-collapsed .gd-contract-signing-flow__section-heading{margin-bottom:0}.gd-contract-signing-flow__form-section.is-placement{background:var(--gdant-neutral-50)}.gd-contract-signing-flow__section-heading{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-sm);min-height:24px;margin-bottom:11px;display:flex}.gd-contract-signing-flow__section-heading.is-toggle{appearance:none;cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0;padding:0}.gd-contract-signing-flow__section-heading-meta{align-items:center;gap:var(--gdant-spacing-sm);color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);display:inline-flex}.gd-contract-signing-flow__section-heading-meta .anticon{color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);transition:transform var(--gdant-duration-normal)}.gd-contract-signing-flow__section-heading h3{align-items:center;margin:0;font-size:13px;display:flex}.gd-contract-signing-flow__section-heading h3:before{content:"";width:var(--gdant-spacing-xs);height:var(--gdant-spacing-md);border-radius:var(--gdant-radius-xs);background:var(--gdant-primary-500);margin-inline-end:var(--gdant-spacing-sm);display:inline-block}.gd-contract-signing-flow__section-heading p{margin:var(--gdant-spacing-xs) 0 0;color:var(--gdant-neutral-500);font-size:11px}.gd-contract-signing-flow__section-heading .ant-tag{margin-inline-end:0}.gd-contract-signing-flow__rule-summary{padding:0 var(--gdant-spacing-xs);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-sm);background:var(--gdant-neutral-50);color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);flex:none;align-items:center;line-height:1.5;display:inline-flex}.gd-contract-signing-flow__form .ant-form-item{margin-bottom:10px}.gd-contract-signing-flow__form .ant-form-item:last-child{margin-bottom:0}.gd-contract-signing-flow__form .ant-form-item-label,.gd-contract-signing-flow__rule-grid .ant-form-item-label,.gd-contract-signing-flow__inline-form-item .ant-form-item-label{padding-bottom:var(--gdant-spacing-xs)}.gd-contract-signing-flow__form .ant-form-item-label>label,.gd-contract-signing-flow__rule-grid .ant-form-item-label>label,.gd-contract-signing-flow__inline-form-item .ant-form-item-label>label{color:var(--gdant-neutral-600);font-size:12px}.gd-contract-signing-flow__form .ant-input,.gd-contract-signing-flow__form .ant-input-affix-wrapper,.gd-contract-signing-flow__form .ant-select-selector,.gd-contract-signing-flow__rule-grid .ant-select-selector,.gd-contract-signing-flow__inline-form-item .ant-select-selector{border-radius:var(--gdant-radius-md)}.gd-contract-signing-flow__setting-list{gap:10px;margin-top:13px;display:grid}.gd-contract-signing-flow__setting-list.is-compact{gap:0;margin-top:0}.gd-contract-signing-flow__setting-row{min-height:30px;color:var(--gdant-neutral-700);justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}.gd-contract-signing-flow__setting-row>div{gap:2px;display:grid}.gd-contract-signing-flow__setting-row strong{font-size:12px;font-weight:var(--gdant-font-semibold)}.gd-contract-signing-flow__setting-row span{color:var(--gdant-neutral-700)}.gd-contract-signing-flow__setting-row div span{color:var(--gdant-neutral-500);font-size:11px}.gd-contract-signing-flow__setting-list.is-compact .gd-contract-signing-flow__setting-row{border-bottom:1px solid var(--gdant-neutral-100);min-height:32px}.gd-contract-signing-flow__setting-list.is-compact .gd-contract-signing-flow__setting-row:last-child{border-bottom:0}.gd-contract-signing-flow__rule-grid{gap:var(--gdant-spacing-sm);grid-template-columns:1fr;display:grid}.gd-contract-signing-flow__rule-grid .ant-form-item{margin-bottom:0}.gd-contract-signing-flow__inline-form-item{margin:0}.gd-contract-signing-flow__inline-form-item .ant-form-item-control-input{min-height:32px}.gd-contract-signing-flow__field-label{color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);margin:13px 0 7px;display:block}.gd-contract-signing-flow__segmented{width:100%;padding:var(--gdant-spacing-xs);border-radius:var(--gdant-radius-md);background:var(--gdant-neutral-100)}.gd-contract-signing-flow__segmented .ant-radio-group{width:100%;display:grid}.gd-contract-signing-flow__segmented.is-two .ant-radio-group{grid-template-columns:repeat(2,minmax(0,1fr))}.gd-contract-signing-flow__segmented.is-three .ant-radio-group{grid-template-columns:repeat(3,minmax(0,1fr))}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper{min-width:0;height:28px;padding:0 var(--gdant-spacing-xs);border-radius:var(--gdant-radius-sm);color:var(--gdant-neutral-700);text-align:center;box-shadow:none;background:0 0;border:0;justify-content:center;align-items:center;display:flex}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper:before{display:none}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper:not(:first-child){margin-inline-start:0}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:var(--gdant-primary-500);color:var(--gdant-neutral-0)}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover,.gd-contract-signing-flow__segmented .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{background:var(--gdant-primary-600);color:var(--gdant-neutral-0)}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper-checked>span{color:inherit}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper:not(.ant-radio-button-wrapper-checked):not(.ant-radio-button-wrapper-disabled):hover{color:var(--gdant-primary-600)}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper-disabled{color:var(--gdant-neutral-400)}.gd-contract-signing-flow__segmented .ant-radio-button-wrapper-checked.ant-radio-button-wrapper-disabled{background:var(--gdant-neutral-200);color:var(--gdant-neutral-500)}.gd-contract-signing-flow__identity-note{margin:var(--gdant-spacing-sm) 0 0;padding:var(--gdant-spacing-sm);border-left:var(--gdant-spacing-xs) solid var(--gdant-primary-300);background:var(--gdant-neutral-50);color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);line-height:1.5}.gd-contract-signing-flow__seal-list{gap:var(--gdant-spacing-sm);grid-template-columns:1fr 1fr;display:grid}.gd-contract-signing-flow__seal-tile{min-height:32px;padding:var(--gdant-spacing-xs) var(--gdant-spacing-sm);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-sm);background:var(--gdant-neutral-50);color:var(--gdant-neutral-600);align-items:center;font-size:11px;display:flex}.gd-contract-signing-flow__seal-tile.ant-checkbox-wrapper-checked{border-color:var(--gdant-primary-300);background:var(--gdant-primary-50);color:var(--gdant-primary-700)}.gd-contract-signing-flow__placement-summary{align-items:center;gap:var(--gdant-spacing-sm);margin-bottom:var(--gdant-spacing-sm);padding:var(--gdant-spacing-sm) var(--gdant-spacing-md);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-md);background:var(--gdant-neutral-0);display:flex}.gd-contract-signing-flow__placement-summary strong{color:var(--gdant-neutral-800);font-size:var(--gdant-text-body-sm);font-weight:var(--gdant-font-semibold);display:block}.gd-contract-signing-flow__placement-summary p{color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);margin:0;line-height:1.5}.gd-contract-signing-flow__placement-count{border-radius:var(--gdant-radius-sm);background:var(--gdant-success-50);width:32px;height:32px;color:var(--gdant-success-600);font-weight:var(--gdant-font-semibold);flex:none;place-items:center;display:grid}.gd-contract-signing-flow__node-overview{place-items:center;gap:var(--gdant-spacing-sm);text-align:center;min-height:260px;padding:28px;display:grid}.gd-contract-signing-flow__node-overview-icon{border-radius:var(--gdant-radius-pill);background:var(--gdant-warning-50);width:40px;height:40px;color:var(--gdant-warning-600);font-size:var(--gdant-text-body);place-items:center;display:grid}.gd-contract-signing-flow__node-overview.is-start .gd-contract-signing-flow__node-overview-icon{background:var(--gdant-success-50);color:var(--gdant-success-600)}.gd-contract-signing-flow__node-overview.is-end .gd-contract-signing-flow__node-overview-icon{background:var(--gdant-neutral-100);color:var(--gdant-neutral-600)}.gd-contract-signing-flow__node-overview h3{margin:0;font-size:15px}.gd-contract-signing-flow__node-overview p{max-width:220px;color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);margin:0;line-height:1.6}.gd-contract-signing-flow__node-overview-hint{padding:0 var(--gdant-spacing-xs);border:1px solid var(--gdant-neutral-200);border-radius:var(--gdant-radius-sm);background:var(--gdant-neutral-50);color:var(--gdant-neutral-600);font-size:var(--gdant-text-body-sm);align-items:center;line-height:1.5;display:inline-flex}.gd-contract-signing-flow__empty-inspector{flex:1;min-height:260px}.gd-contract-signing-flow.is-disabled{filter:saturate(.75)}@container (width<=820px){.gd-contract-signing-flow__layout{grid-template-rows:minmax(420px,1fr) auto;grid-template-columns:1fr;overflow:auto}.gd-contract-signing-flow__inspector{border-top:1px solid var(--gdant-neutral-200);border-left:0;max-height:none}.gd-contract-signing-flow__canvas-header{align-items:flex-start}.gd-contract-signing-flow__canvas-actions{flex-wrap:wrap;justify-content:flex-end}.gd-contract-signing-flow__node.is-sign,.gd-contract-signing-flow__node.is-unknown{width:100%;min-width:0}}@container (width<=460px){.gd-contract-signing-flow__canvas-header,.gd-contract-signing-flow__inspector-header{padding:var(--gdant-spacing-sm) var(--gdant-spacing-md)}.gd-contract-signing-flow__canvas-header{flex-direction:column}.gd-contract-signing-flow__canvas-header .ant-btn{padding-inline:var(--gdant-spacing-sm)}.gd-contract-signing-flow__canvas-actions{justify-content:space-between;width:100%}.gd-contract-signing-flow__zoom-tools{margin-inline-start:auto}.gd-contract-signing-flow__canvas{min-width:0;padding-inline:12px}.gd-contract-signing-flow__canvas-scale{min-width:0}.gd-contract-signing-flow__node-actions .ant-btn{width:23px}.gd-contract-signing-flow__form-section{padding-inline:12px}}@media (prefers-reduced-motion:reduce){.gd-contract-signing-flow *{transition:none!important}}
@@ -5,6 +5,7 @@ export * from './src/coordinates';
5
5
  export * from './src/location-rules';
6
6
  export * from './src/page-layout';
7
7
  export * from './src/signing-visuals';
8
+ export * from './src/template-source';
8
9
  export * from './src/types';
9
10
  export declare const GdAntContractSigningLocation: SFCWithInstall<typeof ContractSigningLocation>;
10
11
  export default GdAntContractSigningLocation;
@@ -33,8 +33,9 @@ declare const _default: import('vue').DefineComponent<ContractSigningLocationPro
33
33
  "onUpdate:zoom"?: ((value: number) => any) | undefined;
34
34
  "onFile-change"?: ((fileId: string) => any) | undefined;
35
35
  }>, {
36
+ mode: import('./types').ContractSigningLocationMode;
36
37
  disabled: boolean;
37
- modelValue: ContractSigningLocationValue;
38
+ modelValue: import('./types').ContractSigningLocationInput;
38
39
  height: string | number;
39
40
  resizable: boolean;
40
41
  readonly: boolean;
@@ -49,6 +50,7 @@ declare const _default: import('vue').DefineComponent<ContractSigningLocationPro
49
50
  sealMinSize: number;
50
51
  sealMaxSize: number;
51
52
  showSubmitButton: boolean;
53
+ showInspector: boolean;
52
54
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
53
55
  canvasRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
54
56
  file?: import('./types').ContractSigningFile;
@@ -13,14 +13,14 @@ type __VLS_Props = {
13
13
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
14
14
  add: (type: ContractSigningPlacementType) => any;
15
15
  remove: (id: string) => any;
16
- update: (value: Partial<ContractSigningPlacement>) => any;
17
16
  duplicate: () => any;
17
+ update: (value: Partial<ContractSigningPlacement>) => any;
18
18
  locate: (id: string) => any;
19
19
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
20
20
  onAdd?: ((type: ContractSigningPlacementType) => any) | undefined;
21
21
  onRemove?: ((id: string) => any) | undefined;
22
- onUpdate?: ((value: Partial<ContractSigningPlacement>) => any) | undefined;
23
22
  onDuplicate?: (() => any) | undefined;
23
+ onUpdate?: ((value: Partial<ContractSigningPlacement>) => any) | undefined;
24
24
  onLocate?: ((id: string) => any) | undefined;
25
25
  }>, {
26
26
  placement: ContractSigningPlacement;
@@ -0,0 +1,6 @@
1
+ import { ContractSigningTemplateRenderPage } from './template-source';
2
+ type __VLS_Props = {
3
+ page: ContractSigningTemplateRenderPage;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
6
+ export default _default;
@@ -1,6 +1,6 @@
1
- import { ContractSigningLocationError, ContractSigningLocationOutput, ContractSigningLocationRule, ContractSigningLocationValue, ContractSigningLocationValidationOptions, ContractSigningPage, ContractSigningPlacement, ContractSigningPlacementType, ContractSigningSealSizeLimit, ContractSigningSizeProfile, ContractSigningSizeProfileName, ContractSigningSealTypeOption } from './types';
1
+ import { ContractSigningLocationError, ContractSigningLocationOutput, ContractSigningLocationInput, ContractSigningLocationRule, ContractSigningLocationValue, ContractSigningLocationValidationOptions, ContractSigningPage, ContractSigningPlacement, ContractSigningPlacementType, ContractSigningSealSizeLimit, ContractSigningSizeProfile, ContractSigningSizeProfileName, ContractSigningSealTypeOption } from './types';
2
2
  export declare function createContractSigningLocationValue(contractId?: string): ContractSigningLocationValue;
3
- export declare function normalizeContractSigningLocationValue(value: ContractSigningLocationValue | undefined, options?: {
3
+ export declare function normalizeContractSigningLocationValue(value: ContractSigningLocationInput | ContractSigningLocationValue | undefined, options?: {
4
4
  sealSizeLimit?: ContractSigningSealSizeLimit;
5
5
  sealTypeOptions?: readonly ContractSigningSealTypeOption[];
6
6
  }): ContractSigningLocationValue;
@@ -9,7 +9,7 @@ export declare function cloneContractSigningLocationValue(value: ContractSigning
9
9
  * 把宿主页面接口的尺寸/位置统一收敛为 locationRules 使用的 PDF 逻辑坐标。
10
10
  * 该转换只对 dataProvider 返回值执行,不能对已经受控的 modelValue 重复执行。
11
11
  */
12
- export declare function normalizeContractSigningProviderValue(value: ContractSigningLocationValue, coordinateScale?: number): ContractSigningLocationValue;
12
+ export declare function normalizeContractSigningProviderValue(value: ContractSigningLocationInput | ContractSigningLocationValue, coordinateScale?: number): ContractSigningLocationValue;
13
13
  export declare function findContractSigningPage(value: ContractSigningLocationValue, fileId: string, pageIndex: number): ContractSigningPage | undefined;
14
14
  /** 首页按最小零基 pageIndex 取,不假设 pages[0] 已排序。 */
15
15
  export declare function getContractSigningHomePage<T extends {
@@ -0,0 +1,20 @@
1
+ import { ContractSigningFile, ContractSigningLocationError, ContractSigningTemplateFileSource } from './types';
2
+ export interface ContractSigningTemplateRenderPage {
3
+ pageIndex: number;
4
+ pageId: string;
5
+ title: string;
6
+ width: number;
7
+ height: number;
8
+ contentHtml: string;
9
+ errors: string[];
10
+ }
11
+ export declare function isContractSigningTemplateSource(source: ContractSigningFile['source'] | unknown): source is ContractSigningTemplateFileSource;
12
+ export declare function isContractSigningTemplateFile(file: Pick<ContractSigningFile, 'source'> | undefined): boolean;
13
+ /**
14
+ * 把模板设计器 DTO 转成 B 画布可消费的安全逐页快照。
15
+ * 每页单独构建以保留原数组下标;非法页会被跳过并由 errors 显式反馈,而不是让渲染异常逃逸。
16
+ */
17
+ export declare function buildContractSigningTemplateRenderPages(source: ContractSigningFile['source'] | unknown): ContractSigningTemplateRenderPage[];
18
+ /** 模板校验错误转换成 B 的公共错误结构,供 validate/submit 与画布错误态共用。 */
19
+ export declare function validateContractSigningTemplateFile(file: Pick<ContractSigningFile, 'fileId' | 'fileName' | 'source'>): ContractSigningLocationError[];
20
+ export declare function getContractSigningTemplateDisplayError(file: Pick<ContractSigningFile, 'fileId' | 'fileName' | 'source'> | undefined): string;
@@ -1,4 +1,6 @@
1
+ import { ContractTemplateData, ContractTemplateRenderValues } from '../../pro-contract-template-designer/src/types';
1
2
  export type ContractSigningPlacementType = 'seal' | 'signature' | 'date';
3
+ export type ContractSigningLocationMode = 'preview' | 'placement';
2
4
  export interface ContractSigningPage {
3
5
  /** 规则层使用的零基页序。 */
4
6
  pageIndex: number;
@@ -7,14 +9,41 @@ export interface ContractSigningPage {
7
9
  /** locationRules 使用的 PDF 逻辑坐标宽高。 */
8
10
  width: number;
9
11
  height: number;
12
+ /** 模板文件页的稳定页面 ID;预览文件可不传。 */
13
+ pageId?: string;
10
14
  previewUrl?: string;
11
15
  thumbnailUrl?: string;
12
16
  }
17
+ /** 未声明 source 的历史文件继续按页面预览图渲染。 */
18
+ export interface ContractSigningPreviewFileSource {
19
+ type: 'preview';
20
+ }
21
+ /** 直接消费模板设计器数据,不再要求宿主先把 HTML 转成 PDF。 */
22
+ export interface ContractSigningTemplateFileSource {
23
+ type: 'template';
24
+ template: ContractTemplateData;
25
+ /** 可选填写值;缺省时使用模板变量的默认值/占位文案。 */
26
+ values?: ContractTemplateRenderValues;
27
+ }
28
+ export type ContractSigningFileSource = ContractSigningPreviewFileSource | ContractSigningTemplateFileSource;
13
29
  export interface ContractSigningFile {
14
30
  fileId: string;
15
31
  fileName: string;
16
32
  pages: ContractSigningPage[];
33
+ /** 缺省等同于 `{ type: 'preview' }`,保证旧 files[] 输入无须迁移。 */
34
+ source?: ContractSigningFileSource;
35
+ }
36
+ /**
37
+ * 模板文件输入不必重复拼 pages;组件会按模板页序与逐页原始尺寸生成页面元数据。
38
+ * 归一化、change、getValue 与 submit 输出仍统一为 pages 必填的 ContractSigningFile。
39
+ */
40
+ export interface ContractSigningTemplateFileInput {
41
+ fileId: string;
42
+ fileName: string;
43
+ pages?: ContractSigningPage[];
44
+ source: ContractSigningTemplateFileSource;
17
45
  }
46
+ export type ContractSigningFileInput = ContractSigningFile | ContractSigningTemplateFileInput;
18
47
  export interface ContractSigningPlacement {
19
48
  id: string;
20
49
  fileId: string;
@@ -32,6 +61,12 @@ export interface ContractSigningLocationValue {
32
61
  files: ContractSigningFile[];
33
62
  placements: ContractSigningPlacement[];
34
63
  }
64
+ /** modelValue / dataProvider 的宽松输入;模板文件可省略可推导的 pages。 */
65
+ export interface ContractSigningLocationInput {
66
+ contractId?: string;
67
+ files: ContractSigningFileInput[];
68
+ placements: ContractSigningPlacement[];
69
+ }
35
70
  export interface ContractSigningLocationRule {
36
71
  mustSign: boolean;
37
72
  location: {
@@ -57,7 +92,7 @@ export interface ContractSigningLocationProvider {
57
92
  /** 根据 PaaS 合同 ID 加载真实文件和页面元数据。 */
58
93
  loadContract: (input: {
59
94
  contractId: string;
60
- }) => Promise<ContractSigningLocationValue>;
95
+ }) => Promise<ContractSigningLocationInput>;
61
96
  /** 页面预览可按需加载;缩略图与中间大图允许由宿主走不同尺寸接口。 */
62
97
  loadPagePreview?: (input: {
63
98
  contractId?: string;
@@ -108,7 +143,12 @@ export interface ContractSigningSealSizeLimit {
108
143
  }
109
144
  export interface ContractSigningLocationProps {
110
145
  /** 当前标注数据(files + placements),与 v-model 双向绑定 */
111
- modelValue?: ContractSigningLocationValue;
146
+ modelValue?: ContractSigningLocationInput;
147
+ /**
148
+ * preview 用作只读合同预览,默认隐藏右侧属性面板和提交入口;placement 用于配置签署位置。
149
+ * @default 'placement'
150
+ */
151
+ mode?: ContractSigningLocationMode;
112
152
  /**
113
153
  * PaaS 合同 ID;autoLoad 时传给 dataProvider.loadContract
114
154
  * @default ''
@@ -181,6 +221,11 @@ export interface ContractSigningLocationProps {
181
221
  * @default true
182
222
  */
183
223
  showSubmitButton?: boolean;
224
+ /**
225
+ * 是否展示右侧签署工具与属性面板;不传时由 mode 决定,显式传入可覆盖模式默认值。
226
+ * @default mode === 'placement'
227
+ */
228
+ showInspector?: boolean;
184
229
  }
185
230
  export interface ContractSigningLocationError {
186
231
  code: string;
@@ -4,7 +4,9 @@ type __VLS_Props = {
4
4
  selectedKey?: string;
5
5
  readonly?: boolean;
6
6
  disabled?: boolean;
7
+ zoom?: number;
7
8
  };
9
+ declare function fitWidth(): number;
8
10
  declare function __VLS_template(): {
9
11
  attrs: Partial<{}>;
10
12
  slots: Readonly<{
@@ -18,21 +20,35 @@ declare function __VLS_template(): {
18
20
  disabled?: boolean;
19
21
  }) => any;
20
22
  };
21
- refs: {};
23
+ refs: {
24
+ canvasScrollRef: HTMLDivElement;
25
+ canvasElementRef: HTMLDivElement;
26
+ };
22
27
  rootEl: HTMLElement;
23
28
  };
24
29
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
25
- declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
30
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
31
+ fitWidth: typeof fitWidth;
32
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
26
33
  add: () => any;
27
34
  select: (node: ContractSigningFlowNode) => any;
28
35
  remove: (node: ContractSigningFlowNode) => any;
29
36
  move: (node: ContractSigningFlowNode, direction: 1 | -1) => any;
37
+ "zoom-change": (zoom: number) => any;
38
+ "fit-width": () => any;
30
39
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
31
40
  onAdd?: (() => any) | undefined;
32
41
  onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
33
42
  onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
34
43
  onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
35
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
44
+ "onZoom-change"?: ((zoom: number) => any) | undefined;
45
+ "onFit-width"?: (() => any) | undefined;
46
+ }>, {
47
+ zoom: number;
48
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
49
+ canvasScrollRef: HTMLDivElement;
50
+ canvasElementRef: HTMLDivElement;
51
+ }, HTMLElement>;
36
52
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
37
53
  export default _default;
38
54
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -12,7 +12,114 @@ declare function __VLS_template(): {
12
12
  disabled?: boolean;
13
13
  }) => any;
14
14
  };
15
- refs: {};
15
+ refs: {
16
+ rootRef: HTMLDivElement;
17
+ canvasRef: ({
18
+ $: import('vue').ComponentInternalInstance;
19
+ $data: {};
20
+ $props: {
21
+ readonly nodes: ContractSigningFlowNode[];
22
+ readonly selectedKey?: string | undefined;
23
+ readonly readonly?: boolean | undefined;
24
+ readonly disabled?: boolean | undefined;
25
+ readonly zoom?: number | undefined;
26
+ readonly onAdd?: (() => any) | undefined;
27
+ readonly onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
28
+ readonly onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
29
+ readonly onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
30
+ readonly "onZoom-change"?: ((zoom: number) => any) | undefined;
31
+ readonly "onFit-width"?: (() => any) | undefined;
32
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
33
+ $attrs: import('vue').Attrs;
34
+ $refs: {
35
+ [x: string]: unknown;
36
+ } & {
37
+ canvasScrollRef: HTMLDivElement;
38
+ canvasElementRef: HTMLDivElement;
39
+ };
40
+ $slots: Readonly<{
41
+ [name: string]: import('vue').Slot<any> | undefined;
42
+ }>;
43
+ $root: import('vue').ComponentPublicInstance | null;
44
+ $parent: import('vue').ComponentPublicInstance | null;
45
+ $host: Element | null;
46
+ $emit: ((event: "add") => void) & ((event: "select", node: ContractSigningFlowNode) => void) & ((event: "remove", node: ContractSigningFlowNode) => void) & ((event: "move", node: ContractSigningFlowNode, direction: 1 | -1) => void) & ((event: "zoom-change", zoom: number) => void) & ((event: "fit-width") => void);
47
+ $el: HTMLElement;
48
+ $options: import('vue').ComponentOptionsBase<Readonly<{
49
+ nodes: ContractSigningFlowNode[];
50
+ selectedKey?: string;
51
+ readonly?: boolean;
52
+ disabled?: boolean;
53
+ zoom?: number;
54
+ }> & Readonly<{
55
+ onAdd?: (() => any) | undefined;
56
+ onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
57
+ onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
58
+ onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
59
+ "onZoom-change"?: ((zoom: number) => any) | undefined;
60
+ "onFit-width"?: (() => any) | undefined;
61
+ }>, {
62
+ fitWidth: () => number;
63
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
64
+ add: () => any;
65
+ select: (node: ContractSigningFlowNode) => any;
66
+ remove: (node: ContractSigningFlowNode) => any;
67
+ move: (node: ContractSigningFlowNode, direction: 1 | -1) => any;
68
+ "zoom-change": (zoom: number) => any;
69
+ "fit-width": () => any;
70
+ }, string, {
71
+ zoom: number;
72
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
73
+ beforeCreate?: (() => void) | (() => void)[];
74
+ created?: (() => void) | (() => void)[];
75
+ beforeMount?: (() => void) | (() => void)[];
76
+ mounted?: (() => void) | (() => void)[];
77
+ beforeUpdate?: (() => void) | (() => void)[];
78
+ updated?: (() => void) | (() => void)[];
79
+ activated?: (() => void) | (() => void)[];
80
+ deactivated?: (() => void) | (() => void)[];
81
+ beforeDestroy?: (() => void) | (() => void)[];
82
+ beforeUnmount?: (() => void) | (() => void)[];
83
+ destroyed?: (() => void) | (() => void)[];
84
+ unmounted?: (() => void) | (() => void)[];
85
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
86
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
87
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
88
+ };
89
+ $forceUpdate: () => void;
90
+ $nextTick: typeof import('vue').nextTick;
91
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
92
+ } & Readonly<{
93
+ zoom: number;
94
+ }> & Omit<Readonly<{
95
+ nodes: ContractSigningFlowNode[];
96
+ selectedKey?: string;
97
+ readonly?: boolean;
98
+ disabled?: boolean;
99
+ zoom?: number;
100
+ }> & Readonly<{
101
+ onAdd?: (() => any) | undefined;
102
+ onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
103
+ onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
104
+ onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
105
+ "onZoom-change"?: ((zoom: number) => any) | undefined;
106
+ "onFit-width"?: (() => any) | undefined;
107
+ }>, "zoom" | "fitWidth"> & {
108
+ fitWidth: () => number;
109
+ } & {} & import('vue').ComponentCustomProperties & {} & {
110
+ $slots: Readonly<{
111
+ headerExtra?: (props: {
112
+ readonly?: boolean;
113
+ disabled?: boolean;
114
+ }) => any;
115
+ }> & {
116
+ headerExtra?: (props: {
117
+ readonly?: boolean;
118
+ disabled?: boolean;
119
+ }) => any;
120
+ };
121
+ }) | null;
122
+ };
16
123
  rootEl: HTMLDivElement;
17
124
  };
18
125
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
@@ -24,10 +131,15 @@ declare const __VLS_component: import('vue').DefineComponent<ContractSigningFlow
24
131
  removeSignNode: (nodeKey: string) => void;
25
132
  moveSignNode: (nodeKey: string, direction: -1 | 1) => void;
26
133
  setNodeLocationRules: (nodeKey: string, locationRules: ContractSigningFlowLocationRule[]) => void;
134
+ setZoom: (value: number) => number;
135
+ resetZoom: () => number;
136
+ getZoom: () => number;
137
+ fitWidth: () => number;
27
138
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
28
139
  validate: (errors: import('./types').ContractSigningFlowValidationError[]) => any;
29
140
  "update:modelValue": (value: ContractSigningFlowDefinition) => any;
30
141
  change: (value: ContractSigningFlowDefinition) => any;
142
+ "update:zoom": (value: number) => any;
31
143
  "node-add": (node: ContractSigningFlowNode) => any;
32
144
  "node-change": (node: ContractSigningFlowNode) => any;
33
145
  "node-remove": (nodeKey: string) => any;
@@ -38,6 +150,7 @@ declare const __VLS_component: import('vue').DefineComponent<ContractSigningFlow
38
150
  onValidate?: ((errors: import('./types').ContractSigningFlowValidationError[]) => any) | undefined;
39
151
  "onUpdate:modelValue"?: ((value: ContractSigningFlowDefinition) => any) | undefined;
40
152
  onChange?: ((value: ContractSigningFlowDefinition) => any) | undefined;
153
+ "onUpdate:zoom"?: ((value: number) => any) | undefined;
41
154
  "onNode-add"?: ((node: ContractSigningFlowNode) => any) | undefined;
42
155
  "onNode-change"?: ((node: ContractSigningFlowNode) => any) | undefined;
43
156
  "onNode-remove"?: ((nodeKey: string) => any) | undefined;
@@ -48,8 +161,116 @@ declare const __VLS_component: import('vue').DefineComponent<ContractSigningFlow
48
161
  disabled: boolean;
49
162
  height: string | number;
50
163
  readonly: boolean;
164
+ zoom: number;
51
165
  requireSigningLocation: boolean;
52
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
166
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
167
+ rootRef: HTMLDivElement;
168
+ canvasRef: ({
169
+ $: import('vue').ComponentInternalInstance;
170
+ $data: {};
171
+ $props: {
172
+ readonly nodes: ContractSigningFlowNode[];
173
+ readonly selectedKey?: string | undefined;
174
+ readonly readonly?: boolean | undefined;
175
+ readonly disabled?: boolean | undefined;
176
+ readonly zoom?: number | undefined;
177
+ readonly onAdd?: (() => any) | undefined;
178
+ readonly onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
179
+ readonly onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
180
+ readonly onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
181
+ readonly "onZoom-change"?: ((zoom: number) => any) | undefined;
182
+ readonly "onFit-width"?: (() => any) | undefined;
183
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
184
+ $attrs: import('vue').Attrs;
185
+ $refs: {
186
+ [x: string]: unknown;
187
+ } & {
188
+ canvasScrollRef: HTMLDivElement;
189
+ canvasElementRef: HTMLDivElement;
190
+ };
191
+ $slots: Readonly<{
192
+ [name: string]: import('vue').Slot<any> | undefined;
193
+ }>;
194
+ $root: import('vue').ComponentPublicInstance | null;
195
+ $parent: import('vue').ComponentPublicInstance | null;
196
+ $host: Element | null;
197
+ $emit: ((event: "add") => void) & ((event: "select", node: ContractSigningFlowNode) => void) & ((event: "remove", node: ContractSigningFlowNode) => void) & ((event: "move", node: ContractSigningFlowNode, direction: 1 | -1) => void) & ((event: "zoom-change", zoom: number) => void) & ((event: "fit-width") => void);
198
+ $el: HTMLElement;
199
+ $options: import('vue').ComponentOptionsBase<Readonly<{
200
+ nodes: ContractSigningFlowNode[];
201
+ selectedKey?: string;
202
+ readonly?: boolean;
203
+ disabled?: boolean;
204
+ zoom?: number;
205
+ }> & Readonly<{
206
+ onAdd?: (() => any) | undefined;
207
+ onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
208
+ onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
209
+ onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
210
+ "onZoom-change"?: ((zoom: number) => any) | undefined;
211
+ "onFit-width"?: (() => any) | undefined;
212
+ }>, {
213
+ fitWidth: () => number;
214
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
215
+ add: () => any;
216
+ select: (node: ContractSigningFlowNode) => any;
217
+ remove: (node: ContractSigningFlowNode) => any;
218
+ move: (node: ContractSigningFlowNode, direction: 1 | -1) => any;
219
+ "zoom-change": (zoom: number) => any;
220
+ "fit-width": () => any;
221
+ }, string, {
222
+ zoom: number;
223
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
224
+ beforeCreate?: (() => void) | (() => void)[];
225
+ created?: (() => void) | (() => void)[];
226
+ beforeMount?: (() => void) | (() => void)[];
227
+ mounted?: (() => void) | (() => void)[];
228
+ beforeUpdate?: (() => void) | (() => void)[];
229
+ updated?: (() => void) | (() => void)[];
230
+ activated?: (() => void) | (() => void)[];
231
+ deactivated?: (() => void) | (() => void)[];
232
+ beforeDestroy?: (() => void) | (() => void)[];
233
+ beforeUnmount?: (() => void) | (() => void)[];
234
+ destroyed?: (() => void) | (() => void)[];
235
+ unmounted?: (() => void) | (() => void)[];
236
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
237
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
238
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
239
+ };
240
+ $forceUpdate: () => void;
241
+ $nextTick: typeof import('vue').nextTick;
242
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
243
+ } & Readonly<{
244
+ zoom: number;
245
+ }> & Omit<Readonly<{
246
+ nodes: ContractSigningFlowNode[];
247
+ selectedKey?: string;
248
+ readonly?: boolean;
249
+ disabled?: boolean;
250
+ zoom?: number;
251
+ }> & Readonly<{
252
+ onAdd?: (() => any) | undefined;
253
+ onSelect?: ((node: ContractSigningFlowNode) => any) | undefined;
254
+ onRemove?: ((node: ContractSigningFlowNode) => any) | undefined;
255
+ onMove?: ((node: ContractSigningFlowNode, direction: 1 | -1) => any) | undefined;
256
+ "onZoom-change"?: ((zoom: number) => any) | undefined;
257
+ "onFit-width"?: (() => any) | undefined;
258
+ }>, "zoom" | "fitWidth"> & {
259
+ fitWidth: () => number;
260
+ } & {} & import('vue').ComponentCustomProperties & {} & {
261
+ $slots: Readonly<{
262
+ headerExtra?: (props: {
263
+ readonly?: boolean;
264
+ disabled?: boolean;
265
+ }) => any;
266
+ }> & {
267
+ headerExtra?: (props: {
268
+ readonly?: boolean;
269
+ disabled?: boolean;
270
+ }) => any;
271
+ };
272
+ }) | null;
273
+ }, HTMLDivElement>;
53
274
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
54
275
  export default _default;
55
276
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -1,4 +1,19 @@
1
1
  import { ContractSigningFlowIdentity, ContractSigningFlowSignAction } from './types';
2
+ /** 签署流程画布缩放边界与步进;缩放只影响画布视觉,不进入流程 DTO。 */
3
+ export declare const CONTRACT_SIGNING_FLOW_MIN_ZOOM = 0.5;
4
+ export declare const CONTRACT_SIGNING_FLOW_MAX_ZOOM = 1.5;
5
+ export declare const CONTRACT_SIGNING_FLOW_ZOOM_STEP = 0.1;
6
+ export type ContractSigningFlowZoomShortcut = 'in' | 'out' | 'reset';
7
+ /** 根快捷键只响应画布自身,不能截获 Inspector 等表单控件的输入。 */
8
+ export declare function isContractSigningFlowInteractiveTarget(target: EventTarget | null): boolean;
9
+ export declare function resolveContractSigningFlowZoomShortcutForTarget(event: Pick<KeyboardEvent, 'altKey' | 'code' | 'ctrlKey' | 'key' | 'metaKey' | 'target'>): ContractSigningFlowZoomShortcut | undefined;
10
+ /**
11
+ * 统一缩放归一化,避免按钮/滚轮连续运算产生 0.799999 等浮点长尾。
12
+ * 非法值回落 100%,公共 API 与受控 prop 共用同一规则。
13
+ */
14
+ export declare function normalizeContractSigningFlowZoom(value: unknown): number;
15
+ /** 只识别组件内 Ctrl/⌘ 缩放组合键,普通按键继续交给输入框和浏览器。 */
16
+ export declare function resolveContractSigningFlowZoomShortcut(event: Pick<KeyboardEvent, 'altKey' | 'code' | 'ctrlKey' | 'key' | 'metaKey'>): ContractSigningFlowZoomShortcut | undefined;
2
17
  export declare const CONTRACT_SIGNING_FLOW_SIGN_ACTIONS: Array<{
3
18
  value: ContractSigningFlowSignAction;
4
19
  label: string;
@@ -99,6 +99,14 @@ export interface ContractSigningFlowExpose {
99
99
  removeSignNode: (nodeKey: string) => void;
100
100
  moveSignNode: (nodeKey: string, direction: -1 | 1) => void;
101
101
  setNodeLocationRules: (nodeKey: string, locationRules: ContractSigningFlowLocationRule[]) => void;
102
+ /** 设置画布缩放比例,自动裁剪到 0.5~1.5,返回实际比例。 */
103
+ setZoom: (value: number) => number;
104
+ /** 将画布缩放重置为 100%。 */
105
+ resetZoom: () => number;
106
+ /** 获取当前画布缩放比例。 */
107
+ getZoom: () => number;
108
+ /** 按当前画布可用宽度计算缩放比例。 */
109
+ fitWidth: () => number;
102
110
  }
103
111
  export interface ContractSigningFlowProps {
104
112
  modelValue?: ContractSigningFlowDefinition;
@@ -110,6 +118,8 @@ export interface ContractSigningFlowProps {
110
118
  * @default true
111
119
  */
112
120
  requireSigningLocation?: boolean;
121
+ /** 当前画布缩放比例,可使用 v-model:zoom 受控。 */
122
+ zoom?: number;
113
123
  }
114
124
  export interface ContractSigningFlowEmits {
115
125
  'update:modelValue': [value: ContractSigningFlowDefinition];
@@ -121,4 +131,6 @@ export interface ContractSigningFlowEmits {
121
131
  'node-move': [nodeKey: string, direction: -1 | 1];
122
132
  'node-select': [node: ContractSigningFlowNode | undefined];
123
133
  'placement-request': [payload: ContractSigningFlowPlacementRequest];
134
+ /** 画布缩放变化时同步 v-model:zoom。 */
135
+ 'update:zoom': [value: number];
124
136
  }