@guodun/antdv 1.7.5 → 1.7.7

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 (42) hide show
  1. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +152 -146
  2. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.mjs +45 -37
  3. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.mjs +266 -264
  4. package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +351 -301
  5. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +939 -914
  6. package/dist/es/components/pro-contract-template-designer/src/composables/use-auto-pagination.mjs +82 -47
  7. package/dist/es/components/pro-contract-template-designer/src/composables/use-draft-cache-session.mjs +1 -1
  8. package/dist/es/components/pro-contract-template-designer/src/composables/use-page-authoring.mjs +22 -21
  9. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-authoring.mjs +37 -36
  10. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +125 -75
  11. package/dist/es/components/pro-contract-template-designer/src/utils/authoring-search.mjs +34 -13
  12. package/dist/es/components/pro-contract-template-designer/src/utils/document-outline.mjs +24 -1
  13. package/dist/es/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.mjs +15 -0
  14. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  15. package/dist/es/index.mjs +21 -21
  16. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -1
  17. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.cjs +1 -1
  18. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.cjs +1 -1
  19. package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
  20. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  21. package/dist/lib/components/pro-contract-template-designer/src/composables/use-auto-pagination.cjs +1 -1
  22. package/dist/lib/components/pro-contract-template-designer/src/composables/use-draft-cache-session.cjs +1 -1
  23. package/dist/lib/components/pro-contract-template-designer/src/composables/use-page-authoring.cjs +1 -1
  24. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-authoring.cjs +1 -1
  25. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
  26. package/dist/lib/components/pro-contract-template-designer/src/utils/authoring-search.cjs +1 -1
  27. package/dist/lib/components/pro-contract-template-designer/src/utils/document-outline.cjs +1 -1
  28. package/dist/lib/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.cjs +1 -0
  29. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  30. package/dist/lib/index.cjs +1 -1
  31. package/dist/theme/icon.css +1 -1
  32. package/dist/theme/index.css +1 -1
  33. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +1 -0
  34. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.d.ts +1 -0
  35. package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +14 -0
  36. package/dist/types/components/pro-contract-template-designer/src/composables/use-auto-pagination.d.ts +8 -2
  37. package/dist/types/components/pro-contract-template-designer/src/composables/use-draft-cache-session.d.ts +1 -1
  38. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +10 -1
  39. package/dist/types/components/pro-contract-template-designer/src/utils/authoring-search.d.ts +5 -0
  40. package/dist/types/components/pro-contract-template-designer/src/utils/document-outline.d.ts +6 -0
  41. package/dist/types/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.d.ts +16 -0
  42. package/package.json +1 -1
package/dist/es/index.mjs CHANGED
@@ -61,24 +61,24 @@ import { CONTRACT_TEXT_STYLE_PRESETS as st, CONTRACT_TEXT_STYLE_PRESET_COMMANDS
61
61
  import { CONTRACT_SIGNING_RENDER_ORIGIN_OFFSET as _t, CONTRACT_SIGNING_SNAP_THRESHOLD_PX as vt, canResizeContractSigningPlacement as yt, clampContractSigningPlacement as bt, clampContractSigningZoom as xt, displayPointToContractPoint as St, getContractSigningPlacementDistances as Ct, getContractSigningPlacementSize as wt, getContractSigningRuleGeometry as Tt, moveContractSigningPlacementByDisplayDelta as Et, normalizeContractSigningCoordinateDimension as Dt, normalizeContractSigningCoordinateScale as Ot, resizeContractSigningSealGeometry as kt, resolveContractSigningSealSizeLimit as At, resolveContractSigningSizeProfile as jt, snapContractSigningPlacement as Mt } from "./components/contract-signing-location/src/coordinates.mjs";
62
62
  import { isContractTemplateAdvancedChoiceFieldType as Nt, isContractTemplateBuiltinSelectorFieldType as Pt, isContractTemplateFieldType as Ft } from "./components/pro-contract-template-designer/src/types.mjs";
63
63
  import { decodeContractTemplateJsonAttribute as It, encodeContractTemplateJsonAttribute as Lt, formatContractTemplateRenderValue as Rt, isAllowedContractTemplateRemoteUrl as zt, isContractTemplateSelectionValue as Bt, normalizeContractTemplateControlOptions as Vt, normalizeContractTemplateJsonObject as Ht, normalizeContractTemplateRequestTimeout as Ut, normalizeContractTemplateSelectionValue as Wt, normalizeContractTemplateSelectionValues as Gt } from "./components/pro-contract-template-designer/src/utils/advanced-controls.mjs";
64
- import { ALL_DEFAULT_FIELD_TYPES as Kt, CONTRACT_TEMPLATE_RENDERER_VERSION as qt, CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS as Jt, CONTRACT_TEMPLATE_STYLE_VERSION as Yt, CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN as Xt, ContractTemplatePageDecorationValidationError as Zt, DEFAULT_ADVANCED_CHOICE_FIELD_TYPES as Qt, DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES as $t, DEFAULT_CUSTOM_FIELD_TYPES as en, DEFAULT_FIELD_STYLE as tn, DEFAULT_FIELD_TYPES as nn, DEFAULT_MULTILINE_LINE_HEIGHT as rn, DEFAULT_MULTILINE_ROWS as an, DEFAULT_PAGE_SIZE as on, PAGE_SIZE_OPTIONS as sn, buildTemplateExpressionHtml as cn, buildTemplateHtml as ln, buildTemplatePreviewHtml as un, buildTemplatePreviewPages as dn, cloneTemplateValue as fn, collectTemplateValueVariableKeys as pn, collectTemplateVariableKeys as mn, constrainTemplatePageSizes as hn, createBlankPage as gn, createBlankTemplate as _n, createDefaultPage as vn, createDefaultTemplate as yn, createDesignerId as bn, createTemplateVariable as xn, exportTemplateValue as Sn, findPageSizeOption as Cn, getFieldOption as wn, getPageSizeKey as Tn, getPageSizeOption as En, inferPageFormat as Dn, normalizeContractTemplateMaxPages as $, normalizePageSizeOptions as On, normalizeTemplateValue as kn, resolvePageSize as An, splitPageContentByMeasurements as jn, syncTemplateVariablesWithPages as Mn, validateContractTemplateVariableKey as Nn, validateTemplateValue as Pn } from "./components/pro-contract-template-designer/src/composables/use-template-designer.mjs";
65
- import { isSafeContractImageUrl as Fn } from "./components/pro-contract-template-designer/src/utils/image-url.mjs";
66
- import { buildInitialRenderValues as In, buildTemplateRenderHtml as Ln, buildTemplateRenderPages as Rn, buildTemplateVariableData as zn, isEmptyRenderValue as Bn, normalizeRenderValues as Vn, resolveTemplateRenderSubmitErrors as Hn, sanitizeContractRendererHtml as Un, validateTemplateRenderStructure as Wn, validateTemplateRenderValues as Gn } from "./components/pro-contract-template-designer/src/utils/template-renderer.mjs";
67
- import { buildContractSigningTemplateRenderPages as Kn, getContractSigningTemplateDisplayError as qn, isContractSigningTemplateFile as Jn, isContractSigningTemplateSource as Yn, validateContractSigningTemplateFile as Xn } from "./components/contract-signing-location/src/template-source.mjs";
68
- import { ContractSigningLocationBuildError as Zn, buildContractSigningLocationOutput as Qn, buildContractSigningLocationRules as $n, cloneContractSigningLocationValue as er, createContractSigningLocationValue as tr, createContractSigningPlacement as nr, findContractSigningPage as rr, getContractSigningHomePage as ir, isContractSigningPageUsable as ar, normalizeContractSigningLocationValue as or, normalizeContractSigningProviderValue as sr, patchContractSigningPlacement as cr, resolveContractSigningDefaultSealTypes as lr, resolveContractSigningPreviewPageSize as ur, validateContractSigningLocationValue as dr } from "./components/contract-signing-location/src/location-rules.mjs";
69
- import { CONTRACT_SIGNING_FALLBACK_PAGE_SIZE as fr, CONTRACT_SIGNING_PAGE_GAP as pr, CONTRACT_SIGNING_VIRTUAL_BUFFER_PAGES as mr, buildPageLayouts as hr, contentPointToPagePoint as gr, findPageAtOffset as _r, getContractSigningAutoScrollDelta as vr, getPageLayoutScrollTop as yr, getPageLayoutsContentSize as br, getVisibleRange as xr } from "./components/contract-signing-location/src/page-layout.mjs";
70
- import { formatContractSigningDate as Sr, getContractSigningDateDataUrl as Cr, getContractSigningDateSvgDataUrl as wr, getContractSigningPlacementDataUrl as Tr, getContractSigningPlacementVisual as Er, getContractSigningSealDataUrl as Dr, getContractSigningSealLabel as Or, getContractSigningSealSvgDataUrl as kr, getContractSigningSignatureDataUrl as Ar, getContractSigningSignaturePngDataUrl as jr, getContractSigningSignatureSvgDataUrl as Mr, isContractSigningVisualDataUrl as Nr, isSafeContractSigningVisualDataUrl as Pr, resolveContractSigningSealLabel as Fr, toContractSigningSvgDataUrl as Ir } from "./components/contract-signing-location/src/signing-visuals.mjs";
71
- import Lr from "./components/contract-signing-location/index.mjs";
72
- import { DEFAULT_CONTRACT_IMAGE_COMPRESSION as Rr, MAX_CONTRACT_IMAGE_BYTES as zr, MAX_CONTRACT_IMAGE_DIMENSION as Br, MIN_CONTRACT_IMAGE_DIMENSION as Vr, compressContractImage as Hr, normalizeContractImageCompression as Ur, normalizeContractImageDimension as Wr, processContractImageFile as Gr, readContractImageFileAsDataUrl as Kr, resolveContractImageResizeDimensions as qr } from "./components/pro-contract-template-designer/src/utils/content-image.mjs";
73
- import { CUSTOM_SIGNING_LAYOUT as Jr, DUAL_PARTY_SIGNING_LAYOUT as Yr, MAX_SIGNING_LAYOUT_PARTY_COUNT as Xr, MIN_SIGNING_LAYOUT_PARTY_COUNT as Zr, SIGNING_LAYOUT_ARRANGEMENTS as Qr, SIGNING_LAYOUT_ARRANGEMENT_LABELS as $r, SIGNING_LAYOUT_ATTRIBUTE_VALUES as ei, SIGNING_LAYOUT_FIELD_KEYS as ti, SIGNING_LAYOUT_FIELD_LABELS as ni, SIGNING_LAYOUT_PRESETS as ri, SIGNING_LAYOUT_PRESET_KEYS as ii, buildDualPartySigningLayoutPreset as ai, buildSigningLayoutContent as oi, buildSigningLayoutPresetContent as si, buildSigningLayoutPreviewModel as ci, describeSigningLayoutOptions as li, isSigningLayoutAttributeValue as ui, isSigningLayoutPresetKey as di, normalizeSigningLayoutOptions as fi, resolvePartyName as pi } from "./components/pro-contract-template-designer/src/utils/signing-layout-presets.mjs";
74
- import { CONTRACT_TEMPLATE_DRAFT_CACHE_VERSION as mi, CONTRACT_TEMPLATE_FILES_DRAFT_CACHE_VERSION as hi, DEFAULT_DRAFT_CACHE_INTERVAL as gi, DEFAULT_DRAFT_CACHE_KEY as _i, DEFAULT_DRAFT_CACHE_MAX_BYTES as vi, clearTemplateDraftCache as yi, createDraftCacheStatus as bi, estimateDraftCacheBytes as xi, formatDraftCacheSavedAt as Si, getBrowserDraftCacheStorage as Ci, isBlankTemplateDraftValue as wi, isBlankTemplateFilesDraftValue as Ti, loadTemplateDraftCache as Ei, loadTemplateFilesDraftCache as Di, saveTemplateDraftCache as Oi, saveTemplateFilesDraftCache as ki } from "./components/pro-contract-template-designer/src/composables/use-template-draft-cache.mjs";
75
- import { cloneContractTemplateFiles as Ai, constrainContractTemplateFiles as ji, createContractTemplateFile as Mi, exportContractTemplateFiles as Ni, moveContractTemplateFile as Pi, normalizeContractTemplateFiles as Fi, removeContractTemplateFile as Ii, renameContractTemplateFile as Li, replaceContractTemplateFile as Ri, resolveContractTemplateActiveFileId as zi } from "./components/pro-contract-template-designer/src/composables/use-template-files.mjs";
76
- import Bi, { GdAntProContractTemplateRenderer as Vi } from "./components/pro-contract-template-designer/index.mjs";
77
- import { CONTRACT_SIGNING_FLOW_ACTION_LABELS as Hi, CONTRACT_SIGNING_FLOW_IDENTITY_OPTIONS as Ui, CONTRACT_SIGNING_FLOW_MAX_ZOOM as Wi, CONTRACT_SIGNING_FLOW_MIN_ZOOM as Gi, CONTRACT_SIGNING_FLOW_SEAL_TYPES as Ki, CONTRACT_SIGNING_FLOW_SIGN_ACTIONS as qi, CONTRACT_SIGNING_FLOW_ZOOM_STEP as Ji, isContractSigningFlowInteractiveTarget as Yi, normalizeContractSigningFlowZoom as Xi, resolveContractSigningFlowZoomShortcut as Zi, resolveContractSigningFlowZoomShortcutForTarget as Qi } from "./components/pro-contract-signing-flow/src/constants.mjs";
78
- import { buildConnectList as $i, createDefaultSignRule as ea, createEndNode as ta, createId as na, createInitialFlow as ra, createSignNode as ia, createStartNode as aa, normalizeContractSigningFlow as oa, normalizeSignRule as sa, useContractSigningFlow as ca, validateContractSigningFlow as la } from "./components/pro-contract-signing-flow/src/composables/use-contract-signing-flow.mjs";
79
- import ua from "./components/pro-contract-signing-flow/index.mjs";
80
- import { useContractTemplateAgent as da } from "./components/pro-contract-template-agent/src/composables/use-contract-template-agent.mjs";
81
- import { adaptContractTemplateAgentSpec as fa } from "./components/pro-contract-template-agent/src/utils/contract-template-agent-adapter.mjs";
82
- import pa, { GdAntProContractTemplateAgentPanel as ma, GdAntProContractTemplateAgentPreview as ha } from "./components/pro-contract-template-agent/index.mjs";
83
- import { setupAppConfig as ga, useBasicAppConfig as _a } from "./components/hooks/use-basic-app-config.mjs";
84
- export { Kt as ALL_DEFAULT_FIELD_TYPES, we as CONTRACT_PRINT_FONT_UNCONFIGURED_MESSAGE, Oe as CONTRACT_SIGNING_AUTO_SCROLL_EDGE_PX, ke as CONTRACT_SIGNING_CSS_PX_PER_POINT, fr as CONTRACT_SIGNING_FALLBACK_PAGE_SIZE, Hi as CONTRACT_SIGNING_FLOW_ACTION_LABELS, Ui as CONTRACT_SIGNING_FLOW_IDENTITY_OPTIONS, Wi as CONTRACT_SIGNING_FLOW_MAX_ZOOM, Gi as CONTRACT_SIGNING_FLOW_MIN_ZOOM, Ki as CONTRACT_SIGNING_FLOW_SEAL_TYPES, qi as CONTRACT_SIGNING_FLOW_SIGN_ACTIONS, Ji as CONTRACT_SIGNING_FLOW_ZOOM_STEP, Ae as CONTRACT_SIGNING_MIN_PLACEMENT_SIZE, pr as CONTRACT_SIGNING_PAGE_GAP, je as CONTRACT_SIGNING_PLACEMENT_LABELS, Me as CONTRACT_SIGNING_PLACEMENT_MIME, Ne as CONTRACT_SIGNING_PREVIEW_CONCURRENCY, Pe as CONTRACT_SIGNING_PX_PER_MM, _t as CONTRACT_SIGNING_RENDER_ORIGIN_OFFSET, Fe as CONTRACT_SIGNING_SEAL_MAX_SIZE, Ie as CONTRACT_SIGNING_SEAL_MIN_SIZE, Le as CONTRACT_SIGNING_SEAL_TYPE_OPTIONS, Re as CONTRACT_SIGNING_SEAL_TYPE_PRESETS, ze as CONTRACT_SIGNING_SIZE_PROFILES, vt as CONTRACT_SIGNING_SNAP_THRESHOLD_PX, mr as CONTRACT_SIGNING_VIRTUAL_BUFFER_PAGES, Be as CONTRACT_SIGNING_VISIBLE_PAGES_DEBOUNCE_MS, mi as CONTRACT_TEMPLATE_DRAFT_CACHE_VERSION, hi as CONTRACT_TEMPLATE_FILES_DRAFT_CACHE_VERSION, qt as CONTRACT_TEMPLATE_RENDERER_VERSION, Jt as CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS, Yt as CONTRACT_TEMPLATE_STYLE_VERSION, Xt as CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN, st as CONTRACT_TEXT_STYLE_PRESETS, ct as CONTRACT_TEXT_STYLE_PRESET_COMMANDS, Jr as CUSTOM_SIGNING_LAYOUT, Zn as ContractSigningLocationBuildError, Zt as ContractTemplatePageDecorationValidationError, u as CoverScrollbarProps, Qt as DEFAULT_ADVANCED_CHOICE_FIELD_TYPES, $t as DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES, lt as DEFAULT_CONTRACT_FONT_FAMILY, Rr as DEFAULT_CONTRACT_IMAGE_COMPRESSION, en as DEFAULT_CUSTOM_FIELD_TYPES, gi as DEFAULT_DRAFT_CACHE_INTERVAL, _i as DEFAULT_DRAFT_CACHE_KEY, vi as DEFAULT_DRAFT_CACHE_MAX_BYTES, tn as DEFAULT_FIELD_STYLE, nn as DEFAULT_FIELD_TYPES, ut as DEFAULT_FONT_FAMILY_OPTIONS, dt as DEFAULT_FONT_SIZE_PRESETS, rn as DEFAULT_MULTILINE_LINE_HEIGHT, an as DEFAULT_MULTILINE_ROWS, on as DEFAULT_PAGE_SIZE, ft as DEFAULT_TEXT_ALIGN_OPTIONS, Se as DRAWER_SIZE_WIDTH, Yr as DUAL_PARTY_SIGNING_LAYOUT, fe as FORM_RENDER_CONTEXT_KEY, pe as FormItemProps, me as FormRenderProps, ne as GET_DEPT_TREE_URL, J as GTE_OPTIONS_URL, M as GTE_ORGTREE_URL, t as GdAntCollapseTranstion, Lr as GdAntContractSigningLocation, d as GdAntCoverScrollBar, ae as GdAntDeptSelector, T as GdAntIcon, A as GdAntPlusUpload, b as GdAntProArea, _e as GdAntProCell, ve as GdAntProCellGroup, ua as GdAntProContractSigningFlow, ma as GdAntProContractTemplateAgentPanel, ha as GdAntProContractTemplateAgentPreview, pa as GdAntProContractTemplateAgentWorkbench, Bi as GdAntProContractTemplateDesigner, Vi as GdAntProContractTemplateRenderer, Ce as GdAntProDrawer, xe as GdAntProDynamicTags, he as GdAntProFormRender, k as GdAntProLoading, le as GdAntProMenuTree, a as GdAntProModal, j as GdAntProOverlay, _ as GdAntProPicker, Q as GdAntProRoleSelector, V as GdAntProSelector, be as GdAntProSelectorGroup, S as GdAntProSignature, w as GdAntProTable, m as GdAntProTag, de as GdAntProTagGroup, s as GdAntProTitle, O as GdAntProUpload, q as GdAntProUserAvatar, k as GdAntProloading, Z as GdAntRoleSelector, f as GdAntScaleVirtualList, l as GdAntScrollBar, K as GdAntUserAvatar, H as GdAntUserSelector, U as GdAntUserSelectorCheckbox, W as GdAntUserSelectorDirectory, G as GdAntUserSelectorDrilldown, zr as MAX_CONTRACT_IMAGE_BYTES, Br as MAX_CONTRACT_IMAGE_DIMENSION, Xr as MAX_SIGNING_LAYOUT_PARTY_COUNT, qe as MAX_SIGNING_MARK_DIMENSION, oe as MENU_TREE_URL, Vr as MIN_CONTRACT_IMAGE_DIMENSION, Zr as MIN_SIGNING_LAYOUT_PARTY_COUNT, Je as MIN_SIGNING_MARK_DIMENSION, sn as PAGE_SIZE_OPTIONS, ge as PRO_CELL_GROUP_KEY, h as PickerApiEnum, v as ProAreaProps, g as ProPickerProps, x as ProSignatureProps, ue as ProTagGroupProps, L as ProUserSelector, z as ProUserSelectorCheckbox, R as ProUserSelectorDrilldown, Qr as SIGNING_LAYOUT_ARRANGEMENTS, $r as SIGNING_LAYOUT_ARRANGEMENT_LABELS, ei as SIGNING_LAYOUT_ATTRIBUTE_VALUES, ti as SIGNING_LAYOUT_FIELD_KEYS, ni as SIGNING_LAYOUT_FIELD_LABELS, ri as SIGNING_LAYOUT_PRESETS, ii as SIGNING_LAYOUT_PRESET_KEYS, Ye as SIGNING_MARK_DEFAULT_LABELS, Xe as SIGNING_MARK_DEFAULT_SIZES, Ze as SIGNING_MARK_TYPE_LABELS, o as TitleProps, E as UploadContextKey, N as UserSelectorProps, fa as adaptContractTemplateAgentSpec, $i as buildConnectList, Qn as buildContractSigningLocationOutput, $n as buildContractSigningLocationRules, Kn as buildContractSigningTemplateRenderPages, ai as buildDualPartySigningLayoutPreset, In as buildInitialRenderValues, hr as buildPageLayouts, oi as buildSigningLayoutContent, si as buildSigningLayoutPresetContent, ci as buildSigningLayoutPreviewModel, Qe as buildSigningMarkAttrs, cn as buildTemplateExpressionHtml, ln as buildTemplateHtml, un as buildTemplatePreviewHtml, dn as buildTemplatePreviewPages, Ln as buildTemplateRenderHtml, Rn as buildTemplateRenderPages, zn as buildTemplateVariableData, yt as canResizeContractSigningPlacement, bt as clampContractSigningPlacement, xt as clampContractSigningZoom, yi as clearTemplateDraftCache, er as cloneContractSigningLocationValue, Ai as cloneContractTemplateFiles, fn as cloneTemplateValue, e as collapseProps, pn as collectTemplateValueVariableKeys, mn as collectTemplateVariableKeys, Hr as compressContractImage, Te as configureContractPrintFonts, ji as constrainContractTemplateFiles, hn as constrainTemplatePageSizes, gr as contentPointToPagePoint, gn as createBlankPage, _n as createBlankTemplate, tr as createContractSigningLocationValue, nr as createContractSigningPlacement, Mi as createContractTemplateFile, vn as createDefaultPage, ea as createDefaultSignRule, yn as createDefaultTemplate, bn as createDesignerId, bi as createDraftCacheStatus, ta as createEndNode, na as createId, ra as createInitialFlow, ia as createSignNode, aa as createStartNode, xn as createTemplateVariable, It as decodeContractTemplateJsonAttribute, re as deptSelectorEmits, ie as deptSelectorProps, li as describeSigningLayoutOptions, St as displayPointToContractPoint, Lt as encodeContractTemplateJsonAttribute, xi as estimateDraftCacheBytes, Ni as exportContractTemplateFiles, Sn as exportTemplateValue, rr as findContractSigningPage, _r as findPageAtOffset, Cn as findPageSizeOption, Sr as formatContractSigningDate, Rt as formatContractTemplateRenderValue, Si as formatDraftCacheSavedAt, ee as generatePalette, Ci as getBrowserDraftCacheStorage, vr as getContractSigningAutoScrollDelta, Cr as getContractSigningDateDataUrl, wr as getContractSigningDateSvgDataUrl, ir as getContractSigningHomePage, Tr as getContractSigningPlacementDataUrl, Ct as getContractSigningPlacementDistances, wt as getContractSigningPlacementSize, Er as getContractSigningPlacementVisual, Tt as getContractSigningRuleGeometry, Dr as getContractSigningSealDataUrl, Or as getContractSigningSealLabel, kr as getContractSigningSealSvgDataUrl, Ar as getContractSigningSignatureDataUrl, jr as getContractSigningSignaturePngDataUrl, Mr as getContractSigningSignatureSvgDataUrl, qn as getContractSigningTemplateDisplayError, pt as getContractTextStylePreset, wn as getFieldOption, yr as getPageLayoutScrollTop, br as getPageLayoutsContentSize, Tn as getPageSizeKey, En as getPageSizeOption, $e as getSigningMarkDefaultLabel, et as getSigningMarkDefaultSize, xr as getVisibleRange, Dn as inferPageFormat, zt as isAllowedContractTemplateRemoteUrl, wi as isBlankTemplateDraftValue, Ti as isBlankTemplateFilesDraftValue, Yi as isContractSigningFlowInteractiveTarget, ar as isContractSigningPageUsable, Jn as isContractSigningTemplateFile, Yn as isContractSigningTemplateSource, Nr as isContractSigningVisualDataUrl, Nt as isContractTemplateAdvancedChoiceFieldType, Pt as isContractTemplateBuiltinSelectorFieldType, Ft as isContractTemplateFieldType, Bt as isContractTemplateSelectionValue, tt as isContractTemplateSigningMarkType, Bn as isEmptyRenderValue, Fn as isSafeContractImageUrl, Pr as isSafeContractSigningVisualDataUrl, ui as isSigningLayoutAttributeValue, di as isSigningLayoutPresetKey, Ei as loadTemplateDraftCache, Di as loadTemplateFilesDraftCache, Ve as millimetersToContractSigningCssPixels, He as millimetersToContractSigningPixels, Et as moveContractSigningPlacementByDisplayDelta, Pi as moveContractTemplateFile, Ur as normalizeContractImageCompression, Wr as normalizeContractImageDimension, Dt as normalizeContractSigningCoordinateDimension, Ot as normalizeContractSigningCoordinateScale, oa as normalizeContractSigningFlow, Xi as normalizeContractSigningFlowZoom, or as normalizeContractSigningLocationValue, sr as normalizeContractSigningProviderValue, Vt as normalizeContractTemplateControlOptions, Fi as normalizeContractTemplateFiles, Ht as normalizeContractTemplateJsonObject, $ as normalizeContractTemplateMaxPages, Ut as normalizeContractTemplateRequestTimeout, Wt as normalizeContractTemplateSelectionValue, Gt as normalizeContractTemplateSelectionValues, mt as normalizeFontFamilyValue, On as normalizePageSizeOptions, Vn as normalizeRenderValues, sa as normalizeSignRule, fi as normalizeSigningLayoutOptions, nt as normalizeSigningMarkDimension, kn as normalizeTemplateValue, cr as patchContractSigningPlacement, se as proMenuTreeEmits, ce as proMenuTreeProps, n as proModalEmits, p as proTagProps, Gr as processContractImageFile, Kr as readContractImageFileAsDataUrl, Ii as removeContractTemplateFile, Li as renameContractTemplateFile, Ri as replaceContractTemplateFile, kt as resizeContractSigningSealGeometry, Ee as resolveContractFontBaseUrl, qr as resolveContractImageResizeDimensions, lr as resolveContractSigningDefaultSealTypes, Zi as resolveContractSigningFlowZoomShortcut, Qi as resolveContractSigningFlowZoomShortcutForTarget, ur as resolveContractSigningPreviewPageSize, Fr as resolveContractSigningSealLabel, Ue as resolveContractSigningSealSizeInCssPixels, We as resolveContractSigningSealSizeInPixels, At as resolveContractSigningSealSizeLimit, Ge as resolveContractSigningSealTypeOption, jt as resolveContractSigningSizeProfile, zi as resolveContractTemplateActiveFileId, ht as resolveContractTextStylePresetCommands, gt as resolveFontFamilyOptions, An as resolvePageSize, pi as resolvePartyName, rt as resolveSigningMarkPresentation, it as resolveSigningMarkResizeDimensions, at as resolveSigningMarkResizeHandles, ot as resolveSigningMarkSealAspectRatio, Hn as resolveTemplateRenderSubmitErrors, P as resolveUserSelectorMaxCount, Y as roleSelectorEmits, X as roleSelectorProps, Un as sanitizeContractRendererHtml, Oi as saveTemplateDraftCache, ki as saveTemplateFilesDraftCache, c as scrollbarProps, ye as selectContextKey, F as selectUserContextKey, ga as setupAppConfig, te as setupTheme, Mt as snapContractSigningPlacement, jn as splitPageContentByMeasurements, Mn as syncTemplateVariablesWithPages, De as toAbsoluteContractFontBaseUrl, Ke as toContractSigningRulePageSize, Ir as toContractSigningSvgDataUrl, _a as useBasicAppConfig, ca as useContractSigningFlow, da as useContractTemplateAgent, y as useProArea, r as useProModal, i as useProModalInit, C as useProTable, D as useUpload, B as useUserSelector, I as userSelectorEmits, la as validateContractSigningFlow, dr as validateContractSigningLocationValue, Xn as validateContractSigningTemplateFile, Nn as validateContractTemplateVariableKey, Wn as validateTemplateRenderStructure, Gn as validateTemplateRenderValues, Pn as validateTemplateValue };
64
+ import { ALL_DEFAULT_FIELD_TYPES as Kt, CONTRACT_TEMPLATE_RENDERER_VERSION as qt, CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS as Jt, CONTRACT_TEMPLATE_STYLE_VERSION as Yt, CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN as Xt, ContractTemplatePageDecorationValidationError as Zt, DEFAULT_ADVANCED_CHOICE_FIELD_TYPES as Qt, DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES as $t, DEFAULT_CUSTOM_FIELD_TYPES as en, DEFAULT_FIELD_STYLE as tn, DEFAULT_FIELD_TYPES as nn, DEFAULT_MULTILINE_LINE_HEIGHT as rn, DEFAULT_MULTILINE_ROWS as an, DEFAULT_PAGE_SIZE as on, PAGE_SIZE_OPTIONS as sn, buildTemplateExpressionHtml as cn, buildTemplateHtml as ln, buildTemplatePreviewHtml as un, buildTemplatePreviewPages as dn, cloneTemplateValue as fn, collectTemplateValueVariableKeys as pn, collectTemplateVariableKeys as mn, constrainTemplatePageSizes as hn, createBlankPage as gn, createBlankTemplate as _n, createDefaultPage as vn, createDefaultTemplate as yn, createDesignerId as bn, createTemplateBodySync as xn, createTemplateVariable as Sn, exportTemplateValue as Cn, findPageSizeOption as wn, getFieldOption as Tn, getPageSizeKey as En, getPageSizeOption as Dn, inferPageFormat as $, normalizeContractTemplateMaxPages as On, normalizePageSizeOptions as kn, normalizeTemplateValue as An, resolvePageSize as jn, splitPageContentByMeasurements as Mn, syncTemplateVariablesWithPages as Nn, validateContractTemplateVariableKey as Pn, validateTemplateValue as Fn } from "./components/pro-contract-template-designer/src/composables/use-template-designer.mjs";
65
+ import { isSafeContractImageUrl as In } from "./components/pro-contract-template-designer/src/utils/image-url.mjs";
66
+ import { buildInitialRenderValues as Ln, buildTemplateRenderHtml as Rn, buildTemplateRenderPages as zn, buildTemplateVariableData as Bn, isEmptyRenderValue as Vn, normalizeRenderValues as Hn, resolveTemplateRenderSubmitErrors as Un, sanitizeContractRendererHtml as Wn, validateTemplateRenderStructure as Gn, validateTemplateRenderValues as Kn } from "./components/pro-contract-template-designer/src/utils/template-renderer.mjs";
67
+ import { buildContractSigningTemplateRenderPages as qn, getContractSigningTemplateDisplayError as Jn, isContractSigningTemplateFile as Yn, isContractSigningTemplateSource as Xn, validateContractSigningTemplateFile as Zn } from "./components/contract-signing-location/src/template-source.mjs";
68
+ import { ContractSigningLocationBuildError as Qn, buildContractSigningLocationOutput as $n, buildContractSigningLocationRules as er, cloneContractSigningLocationValue as tr, createContractSigningLocationValue as nr, createContractSigningPlacement as rr, findContractSigningPage as ir, getContractSigningHomePage as ar, isContractSigningPageUsable as or, normalizeContractSigningLocationValue as sr, normalizeContractSigningProviderValue as cr, patchContractSigningPlacement as lr, resolveContractSigningDefaultSealTypes as ur, resolveContractSigningPreviewPageSize as dr, validateContractSigningLocationValue as fr } from "./components/contract-signing-location/src/location-rules.mjs";
69
+ import { CONTRACT_SIGNING_FALLBACK_PAGE_SIZE as pr, CONTRACT_SIGNING_PAGE_GAP as mr, CONTRACT_SIGNING_VIRTUAL_BUFFER_PAGES as hr, buildPageLayouts as gr, contentPointToPagePoint as _r, findPageAtOffset as vr, getContractSigningAutoScrollDelta as yr, getPageLayoutScrollTop as br, getPageLayoutsContentSize as xr, getVisibleRange as Sr } from "./components/contract-signing-location/src/page-layout.mjs";
70
+ import { formatContractSigningDate as Cr, getContractSigningDateDataUrl as wr, getContractSigningDateSvgDataUrl as Tr, getContractSigningPlacementDataUrl as Er, getContractSigningPlacementVisual as Dr, getContractSigningSealDataUrl as Or, getContractSigningSealLabel as kr, getContractSigningSealSvgDataUrl as Ar, getContractSigningSignatureDataUrl as jr, getContractSigningSignaturePngDataUrl as Mr, getContractSigningSignatureSvgDataUrl as Nr, isContractSigningVisualDataUrl as Pr, isSafeContractSigningVisualDataUrl as Fr, resolveContractSigningSealLabel as Ir, toContractSigningSvgDataUrl as Lr } from "./components/contract-signing-location/src/signing-visuals.mjs";
71
+ import Rr from "./components/contract-signing-location/index.mjs";
72
+ import { DEFAULT_CONTRACT_IMAGE_COMPRESSION as zr, MAX_CONTRACT_IMAGE_BYTES as Br, MAX_CONTRACT_IMAGE_DIMENSION as Vr, MIN_CONTRACT_IMAGE_DIMENSION as Hr, compressContractImage as Ur, normalizeContractImageCompression as Wr, normalizeContractImageDimension as Gr, processContractImageFile as Kr, readContractImageFileAsDataUrl as qr, resolveContractImageResizeDimensions as Jr } from "./components/pro-contract-template-designer/src/utils/content-image.mjs";
73
+ import { CUSTOM_SIGNING_LAYOUT as Yr, DUAL_PARTY_SIGNING_LAYOUT as Xr, MAX_SIGNING_LAYOUT_PARTY_COUNT as Zr, MIN_SIGNING_LAYOUT_PARTY_COUNT as Qr, SIGNING_LAYOUT_ARRANGEMENTS as $r, SIGNING_LAYOUT_ARRANGEMENT_LABELS as ei, SIGNING_LAYOUT_ATTRIBUTE_VALUES as ti, SIGNING_LAYOUT_FIELD_KEYS as ni, SIGNING_LAYOUT_FIELD_LABELS as ri, SIGNING_LAYOUT_PRESETS as ii, SIGNING_LAYOUT_PRESET_KEYS as ai, buildDualPartySigningLayoutPreset as oi, buildSigningLayoutContent as si, buildSigningLayoutPresetContent as ci, buildSigningLayoutPreviewModel as li, describeSigningLayoutOptions as ui, isSigningLayoutAttributeValue as di, isSigningLayoutPresetKey as fi, normalizeSigningLayoutOptions as pi, resolvePartyName as mi } from "./components/pro-contract-template-designer/src/utils/signing-layout-presets.mjs";
74
+ import { CONTRACT_TEMPLATE_DRAFT_CACHE_VERSION as hi, CONTRACT_TEMPLATE_FILES_DRAFT_CACHE_VERSION as gi, DEFAULT_DRAFT_CACHE_INTERVAL as _i, DEFAULT_DRAFT_CACHE_KEY as vi, DEFAULT_DRAFT_CACHE_MAX_BYTES as yi, clearTemplateDraftCache as bi, createDraftCacheStatus as xi, estimateDraftCacheBytes as Si, formatDraftCacheSavedAt as Ci, getBrowserDraftCacheStorage as wi, isBlankTemplateDraftValue as Ti, isBlankTemplateFilesDraftValue as Ei, loadTemplateDraftCache as Di, loadTemplateFilesDraftCache as Oi, saveTemplateDraftCache as ki, saveTemplateFilesDraftCache as Ai } from "./components/pro-contract-template-designer/src/composables/use-template-draft-cache.mjs";
75
+ import { cloneContractTemplateFiles as ji, constrainContractTemplateFiles as Mi, createContractTemplateFile as Ni, exportContractTemplateFiles as Pi, moveContractTemplateFile as Fi, normalizeContractTemplateFiles as Ii, removeContractTemplateFile as Li, renameContractTemplateFile as Ri, replaceContractTemplateFile as zi, resolveContractTemplateActiveFileId as Bi } from "./components/pro-contract-template-designer/src/composables/use-template-files.mjs";
76
+ import Vi, { GdAntProContractTemplateRenderer as Hi } from "./components/pro-contract-template-designer/index.mjs";
77
+ import { CONTRACT_SIGNING_FLOW_ACTION_LABELS as Ui, CONTRACT_SIGNING_FLOW_IDENTITY_OPTIONS as Wi, CONTRACT_SIGNING_FLOW_MAX_ZOOM as Gi, CONTRACT_SIGNING_FLOW_MIN_ZOOM as Ki, CONTRACT_SIGNING_FLOW_SEAL_TYPES as qi, CONTRACT_SIGNING_FLOW_SIGN_ACTIONS as Ji, CONTRACT_SIGNING_FLOW_ZOOM_STEP as Yi, isContractSigningFlowInteractiveTarget as Xi, normalizeContractSigningFlowZoom as Zi, resolveContractSigningFlowZoomShortcut as Qi, resolveContractSigningFlowZoomShortcutForTarget as $i } from "./components/pro-contract-signing-flow/src/constants.mjs";
78
+ import { buildConnectList as ea, createDefaultSignRule as ta, createEndNode as na, createId as ra, createInitialFlow as ia, createSignNode as aa, createStartNode as oa, normalizeContractSigningFlow as sa, normalizeSignRule as ca, useContractSigningFlow as la, validateContractSigningFlow as ua } from "./components/pro-contract-signing-flow/src/composables/use-contract-signing-flow.mjs";
79
+ import da from "./components/pro-contract-signing-flow/index.mjs";
80
+ import { useContractTemplateAgent as fa } from "./components/pro-contract-template-agent/src/composables/use-contract-template-agent.mjs";
81
+ import { adaptContractTemplateAgentSpec as pa } from "./components/pro-contract-template-agent/src/utils/contract-template-agent-adapter.mjs";
82
+ import ma, { GdAntProContractTemplateAgentPanel as ha, GdAntProContractTemplateAgentPreview as ga } from "./components/pro-contract-template-agent/index.mjs";
83
+ import { setupAppConfig as _a, useBasicAppConfig as va } from "./components/hooks/use-basic-app-config.mjs";
84
+ export { Kt as ALL_DEFAULT_FIELD_TYPES, we as CONTRACT_PRINT_FONT_UNCONFIGURED_MESSAGE, Oe as CONTRACT_SIGNING_AUTO_SCROLL_EDGE_PX, ke as CONTRACT_SIGNING_CSS_PX_PER_POINT, pr as CONTRACT_SIGNING_FALLBACK_PAGE_SIZE, Ui as CONTRACT_SIGNING_FLOW_ACTION_LABELS, Wi as CONTRACT_SIGNING_FLOW_IDENTITY_OPTIONS, Gi as CONTRACT_SIGNING_FLOW_MAX_ZOOM, Ki as CONTRACT_SIGNING_FLOW_MIN_ZOOM, qi as CONTRACT_SIGNING_FLOW_SEAL_TYPES, Ji as CONTRACT_SIGNING_FLOW_SIGN_ACTIONS, Yi as CONTRACT_SIGNING_FLOW_ZOOM_STEP, Ae as CONTRACT_SIGNING_MIN_PLACEMENT_SIZE, mr as CONTRACT_SIGNING_PAGE_GAP, je as CONTRACT_SIGNING_PLACEMENT_LABELS, Me as CONTRACT_SIGNING_PLACEMENT_MIME, Ne as CONTRACT_SIGNING_PREVIEW_CONCURRENCY, Pe as CONTRACT_SIGNING_PX_PER_MM, _t as CONTRACT_SIGNING_RENDER_ORIGIN_OFFSET, Fe as CONTRACT_SIGNING_SEAL_MAX_SIZE, Ie as CONTRACT_SIGNING_SEAL_MIN_SIZE, Le as CONTRACT_SIGNING_SEAL_TYPE_OPTIONS, Re as CONTRACT_SIGNING_SEAL_TYPE_PRESETS, ze as CONTRACT_SIGNING_SIZE_PROFILES, vt as CONTRACT_SIGNING_SNAP_THRESHOLD_PX, hr as CONTRACT_SIGNING_VIRTUAL_BUFFER_PAGES, Be as CONTRACT_SIGNING_VISIBLE_PAGES_DEBOUNCE_MS, hi as CONTRACT_TEMPLATE_DRAFT_CACHE_VERSION, gi as CONTRACT_TEMPLATE_FILES_DRAFT_CACHE_VERSION, qt as CONTRACT_TEMPLATE_RENDERER_VERSION, Jt as CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS, Yt as CONTRACT_TEMPLATE_STYLE_VERSION, Xt as CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN, st as CONTRACT_TEXT_STYLE_PRESETS, ct as CONTRACT_TEXT_STYLE_PRESET_COMMANDS, Yr as CUSTOM_SIGNING_LAYOUT, Qn as ContractSigningLocationBuildError, Zt as ContractTemplatePageDecorationValidationError, u as CoverScrollbarProps, Qt as DEFAULT_ADVANCED_CHOICE_FIELD_TYPES, $t as DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES, lt as DEFAULT_CONTRACT_FONT_FAMILY, zr as DEFAULT_CONTRACT_IMAGE_COMPRESSION, en as DEFAULT_CUSTOM_FIELD_TYPES, _i as DEFAULT_DRAFT_CACHE_INTERVAL, vi as DEFAULT_DRAFT_CACHE_KEY, yi as DEFAULT_DRAFT_CACHE_MAX_BYTES, tn as DEFAULT_FIELD_STYLE, nn as DEFAULT_FIELD_TYPES, ut as DEFAULT_FONT_FAMILY_OPTIONS, dt as DEFAULT_FONT_SIZE_PRESETS, rn as DEFAULT_MULTILINE_LINE_HEIGHT, an as DEFAULT_MULTILINE_ROWS, on as DEFAULT_PAGE_SIZE, ft as DEFAULT_TEXT_ALIGN_OPTIONS, Se as DRAWER_SIZE_WIDTH, Xr as DUAL_PARTY_SIGNING_LAYOUT, fe as FORM_RENDER_CONTEXT_KEY, pe as FormItemProps, me as FormRenderProps, ne as GET_DEPT_TREE_URL, J as GTE_OPTIONS_URL, M as GTE_ORGTREE_URL, t as GdAntCollapseTranstion, Rr as GdAntContractSigningLocation, d as GdAntCoverScrollBar, ae as GdAntDeptSelector, T as GdAntIcon, A as GdAntPlusUpload, b as GdAntProArea, _e as GdAntProCell, ve as GdAntProCellGroup, da as GdAntProContractSigningFlow, ha as GdAntProContractTemplateAgentPanel, ga as GdAntProContractTemplateAgentPreview, ma as GdAntProContractTemplateAgentWorkbench, Vi as GdAntProContractTemplateDesigner, Hi as GdAntProContractTemplateRenderer, Ce as GdAntProDrawer, xe as GdAntProDynamicTags, he as GdAntProFormRender, k as GdAntProLoading, le as GdAntProMenuTree, a as GdAntProModal, j as GdAntProOverlay, _ as GdAntProPicker, Q as GdAntProRoleSelector, V as GdAntProSelector, be as GdAntProSelectorGroup, S as GdAntProSignature, w as GdAntProTable, m as GdAntProTag, de as GdAntProTagGroup, s as GdAntProTitle, O as GdAntProUpload, q as GdAntProUserAvatar, k as GdAntProloading, Z as GdAntRoleSelector, f as GdAntScaleVirtualList, l as GdAntScrollBar, K as GdAntUserAvatar, H as GdAntUserSelector, U as GdAntUserSelectorCheckbox, W as GdAntUserSelectorDirectory, G as GdAntUserSelectorDrilldown, Br as MAX_CONTRACT_IMAGE_BYTES, Vr as MAX_CONTRACT_IMAGE_DIMENSION, Zr as MAX_SIGNING_LAYOUT_PARTY_COUNT, qe as MAX_SIGNING_MARK_DIMENSION, oe as MENU_TREE_URL, Hr as MIN_CONTRACT_IMAGE_DIMENSION, Qr as MIN_SIGNING_LAYOUT_PARTY_COUNT, Je as MIN_SIGNING_MARK_DIMENSION, sn as PAGE_SIZE_OPTIONS, ge as PRO_CELL_GROUP_KEY, h as PickerApiEnum, v as ProAreaProps, g as ProPickerProps, x as ProSignatureProps, ue as ProTagGroupProps, L as ProUserSelector, z as ProUserSelectorCheckbox, R as ProUserSelectorDrilldown, $r as SIGNING_LAYOUT_ARRANGEMENTS, ei as SIGNING_LAYOUT_ARRANGEMENT_LABELS, ti as SIGNING_LAYOUT_ATTRIBUTE_VALUES, ni as SIGNING_LAYOUT_FIELD_KEYS, ri as SIGNING_LAYOUT_FIELD_LABELS, ii as SIGNING_LAYOUT_PRESETS, ai as SIGNING_LAYOUT_PRESET_KEYS, Ye as SIGNING_MARK_DEFAULT_LABELS, Xe as SIGNING_MARK_DEFAULT_SIZES, Ze as SIGNING_MARK_TYPE_LABELS, o as TitleProps, E as UploadContextKey, N as UserSelectorProps, pa as adaptContractTemplateAgentSpec, ea as buildConnectList, $n as buildContractSigningLocationOutput, er as buildContractSigningLocationRules, qn as buildContractSigningTemplateRenderPages, oi as buildDualPartySigningLayoutPreset, Ln as buildInitialRenderValues, gr as buildPageLayouts, si as buildSigningLayoutContent, ci as buildSigningLayoutPresetContent, li as buildSigningLayoutPreviewModel, Qe as buildSigningMarkAttrs, cn as buildTemplateExpressionHtml, ln as buildTemplateHtml, un as buildTemplatePreviewHtml, dn as buildTemplatePreviewPages, Rn as buildTemplateRenderHtml, zn as buildTemplateRenderPages, Bn as buildTemplateVariableData, yt as canResizeContractSigningPlacement, bt as clampContractSigningPlacement, xt as clampContractSigningZoom, bi as clearTemplateDraftCache, tr as cloneContractSigningLocationValue, ji as cloneContractTemplateFiles, fn as cloneTemplateValue, e as collapseProps, pn as collectTemplateValueVariableKeys, mn as collectTemplateVariableKeys, Ur as compressContractImage, Te as configureContractPrintFonts, Mi as constrainContractTemplateFiles, hn as constrainTemplatePageSizes, _r as contentPointToPagePoint, gn as createBlankPage, _n as createBlankTemplate, nr as createContractSigningLocationValue, rr as createContractSigningPlacement, Ni as createContractTemplateFile, vn as createDefaultPage, ta as createDefaultSignRule, yn as createDefaultTemplate, bn as createDesignerId, xi as createDraftCacheStatus, na as createEndNode, ra as createId, ia as createInitialFlow, aa as createSignNode, oa as createStartNode, xn as createTemplateBodySync, Sn as createTemplateVariable, It as decodeContractTemplateJsonAttribute, re as deptSelectorEmits, ie as deptSelectorProps, ui as describeSigningLayoutOptions, St as displayPointToContractPoint, Lt as encodeContractTemplateJsonAttribute, Si as estimateDraftCacheBytes, Pi as exportContractTemplateFiles, Cn as exportTemplateValue, ir as findContractSigningPage, vr as findPageAtOffset, wn as findPageSizeOption, Cr as formatContractSigningDate, Rt as formatContractTemplateRenderValue, Ci as formatDraftCacheSavedAt, ee as generatePalette, wi as getBrowserDraftCacheStorage, yr as getContractSigningAutoScrollDelta, wr as getContractSigningDateDataUrl, Tr as getContractSigningDateSvgDataUrl, ar as getContractSigningHomePage, Er as getContractSigningPlacementDataUrl, Ct as getContractSigningPlacementDistances, wt as getContractSigningPlacementSize, Dr as getContractSigningPlacementVisual, Tt as getContractSigningRuleGeometry, Or as getContractSigningSealDataUrl, kr as getContractSigningSealLabel, Ar as getContractSigningSealSvgDataUrl, jr as getContractSigningSignatureDataUrl, Mr as getContractSigningSignaturePngDataUrl, Nr as getContractSigningSignatureSvgDataUrl, Jn as getContractSigningTemplateDisplayError, pt as getContractTextStylePreset, Tn as getFieldOption, br as getPageLayoutScrollTop, xr as getPageLayoutsContentSize, En as getPageSizeKey, Dn as getPageSizeOption, $e as getSigningMarkDefaultLabel, et as getSigningMarkDefaultSize, Sr as getVisibleRange, $ as inferPageFormat, zt as isAllowedContractTemplateRemoteUrl, Ti as isBlankTemplateDraftValue, Ei as isBlankTemplateFilesDraftValue, Xi as isContractSigningFlowInteractiveTarget, or as isContractSigningPageUsable, Yn as isContractSigningTemplateFile, Xn as isContractSigningTemplateSource, Pr as isContractSigningVisualDataUrl, Nt as isContractTemplateAdvancedChoiceFieldType, Pt as isContractTemplateBuiltinSelectorFieldType, Ft as isContractTemplateFieldType, Bt as isContractTemplateSelectionValue, tt as isContractTemplateSigningMarkType, Vn as isEmptyRenderValue, In as isSafeContractImageUrl, Fr as isSafeContractSigningVisualDataUrl, di as isSigningLayoutAttributeValue, fi as isSigningLayoutPresetKey, Di as loadTemplateDraftCache, Oi as loadTemplateFilesDraftCache, Ve as millimetersToContractSigningCssPixels, He as millimetersToContractSigningPixels, Et as moveContractSigningPlacementByDisplayDelta, Fi as moveContractTemplateFile, Wr as normalizeContractImageCompression, Gr as normalizeContractImageDimension, Dt as normalizeContractSigningCoordinateDimension, Ot as normalizeContractSigningCoordinateScale, sa as normalizeContractSigningFlow, Zi as normalizeContractSigningFlowZoom, sr as normalizeContractSigningLocationValue, cr as normalizeContractSigningProviderValue, Vt as normalizeContractTemplateControlOptions, Ii as normalizeContractTemplateFiles, Ht as normalizeContractTemplateJsonObject, On as normalizeContractTemplateMaxPages, Ut as normalizeContractTemplateRequestTimeout, Wt as normalizeContractTemplateSelectionValue, Gt as normalizeContractTemplateSelectionValues, mt as normalizeFontFamilyValue, kn as normalizePageSizeOptions, Hn as normalizeRenderValues, ca as normalizeSignRule, pi as normalizeSigningLayoutOptions, nt as normalizeSigningMarkDimension, An as normalizeTemplateValue, lr as patchContractSigningPlacement, se as proMenuTreeEmits, ce as proMenuTreeProps, n as proModalEmits, p as proTagProps, Kr as processContractImageFile, qr as readContractImageFileAsDataUrl, Li as removeContractTemplateFile, Ri as renameContractTemplateFile, zi as replaceContractTemplateFile, kt as resizeContractSigningSealGeometry, Ee as resolveContractFontBaseUrl, Jr as resolveContractImageResizeDimensions, ur as resolveContractSigningDefaultSealTypes, Qi as resolveContractSigningFlowZoomShortcut, $i as resolveContractSigningFlowZoomShortcutForTarget, dr as resolveContractSigningPreviewPageSize, Ir as resolveContractSigningSealLabel, Ue as resolveContractSigningSealSizeInCssPixels, We as resolveContractSigningSealSizeInPixels, At as resolveContractSigningSealSizeLimit, Ge as resolveContractSigningSealTypeOption, jt as resolveContractSigningSizeProfile, Bi as resolveContractTemplateActiveFileId, ht as resolveContractTextStylePresetCommands, gt as resolveFontFamilyOptions, jn as resolvePageSize, mi as resolvePartyName, rt as resolveSigningMarkPresentation, it as resolveSigningMarkResizeDimensions, at as resolveSigningMarkResizeHandles, ot as resolveSigningMarkSealAspectRatio, Un as resolveTemplateRenderSubmitErrors, P as resolveUserSelectorMaxCount, Y as roleSelectorEmits, X as roleSelectorProps, Wn as sanitizeContractRendererHtml, ki as saveTemplateDraftCache, Ai as saveTemplateFilesDraftCache, c as scrollbarProps, ye as selectContextKey, F as selectUserContextKey, _a as setupAppConfig, te as setupTheme, Mt as snapContractSigningPlacement, Mn as splitPageContentByMeasurements, Nn as syncTemplateVariablesWithPages, De as toAbsoluteContractFontBaseUrl, Ke as toContractSigningRulePageSize, Lr as toContractSigningSvgDataUrl, va as useBasicAppConfig, la as useContractSigningFlow, fa as useContractTemplateAgent, y as useProArea, r as useProModal, i as useProModalInit, C as useProTable, D as useUpload, B as useUserSelector, I as userSelectorEmits, ua as validateContractSigningFlow, fr as validateContractSigningLocationValue, Zn as validateContractSigningTemplateFile, Pn as validateContractTemplateVariableKey, Gn as validateTemplateRenderStructure, Kn as validateTemplateRenderValues, Fn as validateTemplateValue };
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./composables/use-template-designer.cjs`),t=require(`./utils/template-tool-icons.cjs`),n=require(`./ContractTemplatePanelTabs.cjs`),r=require(`./utils/document-outline.cjs`),i=require(`./utils/panel-search.cjs`);let a=require(`vue`),o=require(`ant-design-vue`),s=require(`@ant-design/icons-vue`);var c=[`aria-label`,`aria-expanded`],l={class:`gd-contract-template-designer__panel-stack`},u={class:`gd-contract-authoring-panel__body`},ee={class:`gd-contract-authoring-panel__search`},d={class:`gd-contract-authoring-panel__results`},f={role:`status`,"aria-live":`polite`},p=[`id`,`aria-labelledby`],m={key:0,class:`gd-contract-authoring-panel__empty`},h=[`aria-current`,`aria-label`,`onClick`],g={class:`gd-contract-authoring-panel__page-number`,"aria-hidden":`true`},_={class:`gd-contract-authoring-panel__page-copy`},te={class:`gd-contract-authoring-panel__item-title`},ne={class:`gd-contract-authoring-panel__summary`},re={class:`gd-contract-authoring-panel__meta`},v={key:1,class:`gd-contract-authoring-panel__page-config`},y={class:`gd-contract-authoring-panel__section-heading`},b=[`aria-label`],x={key:0,class:`gd-contract-authoring-panel__field`},S={class:`gd-contract-authoring-panel__meta`},C={class:`gd-contract-authoring-panel__page-actions`},w=[`id`,`aria-labelledby`],T={key:0,class:`gd-contract-authoring-panel__empty`},E={key:0,class:`gd-contract-authoring-panel__meta`},D={class:`gd-contract-authoring-panel__outline-page`},O={class:`gd-contract-authoring-panel__outline-list`},k=[`aria-label`,`onClick`],A={class:`gd-contract-authoring-panel__heading-level`,"aria-hidden":`true`},j=[`id`,`aria-labelledby`],M={key:0,class:`gd-contract-authoring-panel__empty`},N={key:0,class:`gd-contract-authoring-panel__meta`},P=[`aria-pressed`,`aria-label`,`onClick`],F={class:`gd-contract-authoring-panel__variable-icon`,"aria-hidden":`true`},I={class:`gd-contract-authoring-panel__variable-copy`},ie={class:`gd-contract-authoring-panel__item-title`},L={class:`gd-contract-authoring-panel__meta`},R=(0,a.defineComponent)({name:`ContractTemplateDesignerSidebar`,__name:`ContractTemplateDesignerSidebar`,props:{collapsed:{type:Boolean},pages:{},variables:{},decorationVariableKeys:{},activePageId:{},selectedVariableKey:{},normalizedMaxPages:{},pageLimitReached:{type:Boolean},selectedPage:{},selectedPageSize:{},normalizedPageSizeOptions:{},pageSizeOptions:{},selectedPageSizeOptionValue:{},readonly:{type:Boolean},getPageSize:{type:Function}},emits:[`toggle`,`addPage`,`activatePage`,`duplicatePage`,`removePage`,`patchPageFormat`,`scrollToVariable`,`navigateOutline`],setup(R,{emit:z}){let B=R,V=z,H=`gd-contract-navigation-${(0,a.useId)()}`,U=(0,a.shallowRef)(`pages`),W=(0,a.reactive)({pages:``,outline:``,variables:``}),G=[{value:`pages`,label:`页面`},{value:`outline`,label:`大纲`},{value:`variables`,label:`变量`}],K={pages:`搜索页面`,outline:`搜索大纲`,variables:`搜索变量`},q={pages:`页名、页码或正文`,outline:`标题文字或所在页`,variables:`名称、类型或变量标识`},J=(0,a.computed)({get:()=>W[U.value],set:e=>{W[U.value]=e}}),Y=(0,a.computed)(()=>B.pages.map((e,t)=>({page:e,number:t+1,title:e.title||`第 ${t+1} 页`,format:B.getPageSize(e).label||B.getPageSize(e).format||`自定义`,...r.readContractPageNavigation(e)}))),X=(0,a.computed)(()=>Y.value.filter(e=>i.matchesContractPanelSearch(W.pages,e.title,`第 ${e.number} 页`,e.format,e.text))),Z=(0,a.computed)(()=>Y.value.map(e=>({...e,headings:e.headings.filter(t=>i.matchesContractPanelSearch(W.outline,t.text,e.title,`第 ${e.number} 页`))})).filter(e=>e.headings.length>0)),ae=(0,a.computed)(()=>Y.value.reduce((e,t)=>e+t.headings.length,0)),Q=(0,a.computed)(()=>Z.value.reduce((e,t)=>e+t.headings.length,0)),oe=(0,a.computed)(()=>B.variables.map(t=>({variable:t,typeLabel:e.getFieldOption(t.type||`text`).label,decoration:B.decorationVariableKeys.includes(t.key)}))),$=(0,a.computed)(()=>oe.value.filter(e=>i.matchesContractPanelSearch(W.variables,e.variable.label,e.variable.key,e.variable.type||`text`,e.typeLabel,e.decoration?`页面装饰`:`正文`))),se=(0,a.computed)(()=>{let[e,t,n]={pages:[X.value.length,B.pages.length,`页`],outline:[Q.value,ae.value,`个标题`],variables:[$.value.length,B.variables.length,`个变量`]}[U.value];return J.value.trim()?`找到 ${e} / ${t} ${n}`:`共 ${t} ${n}`});function ce(e){(e===`pages`||e===`outline`||e===`variables`)&&(U.value=e)}return(e,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`aside`,{class:(0,a.normalizeClass)([`gd-contract-template-designer__sidebar gd-contract-authoring-panel`,{"is-collapsed":B.collapsed}]),"aria-label":`合同内容导航`},[(0,a.createVNode)((0,a.unref)(o.Tooltip),{title:B.collapsed?`展开页面栏`:`收起页面栏`},{default:(0,a.withCtx)(()=>[(0,a.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-designer__panel-handle gd-contract-authoring-panel__handle`,"aria-label":B.collapsed?`展开页面栏`:`收起页面栏`,"aria-expanded":!B.collapsed,onClick:r[0]||=e=>V(`toggle`)},[B.collapsed?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(s.RightOutlined),{key:0,"aria-hidden":`true`})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(s.LeftOutlined),{key:1,"aria-hidden":`true`}))],8,c)]),_:1},8,[`title`]),(0,a.createElementVNode)(`div`,l,[(0,a.createElementVNode)(`div`,u,[(0,a.createVNode)(n.default,{id:H,"model-value":U.value,items:G,label:`导航视图`,"onUpdate:modelValue":ce},null,8,[`model-value`]),(0,a.createElementVNode)(`div`,ee,[(0,a.createVNode)((0,a.unref)(o.Input),{value:J.value,"onUpdate:value":r[1]||=e=>J.value=e,"allow-clear":``,type:`search`,"aria-label":K[U.value],placeholder:q[U.value]},{prefix:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`,`aria-label`,`placeholder`])]),(0,a.createElementVNode)(`div`,d,[(0,a.createElementVNode)(`span`,f,(0,a.toDisplayString)(se.value),1),U.value===`pages`?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Tooltip),{key:0,title:B.pageLimitReached?`已达 ${B.normalizedMaxPages} 页上限`:`新增页面`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(o.Button),{type:`text`,size:`small`,class:`gd-contract-authoring-panel__action`,disabled:B.readonly||B.pageLimitReached,"aria-label":`新增页面`,onClick:r[2]||=e=>V(`addPage`)},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.PlusOutlined),{"aria-hidden":`true`}),r[10]||=(0,a.createTextVNode)(`新增`,-1)]),_:1},8,[`disabled`])]),_:1},8,[`title`])):(0,a.createCommentVNode)(``,!0)]),(0,a.withDirectives)((0,a.createElementVNode)(`section`,{id:`${H}-panel-pages`,role:`tabpanel`,"aria-labelledby":`${H}-tab-pages`,class:`gd-contract-authoring-panel__view`},[X.value.length?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,m,[(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(W.pages.trim()?`没有匹配的页面`:`暂无页面`),1),W.pages.trim()?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:0,type:`link`,onClick:r[3]||=e=>W.pages=``},{default:(0,a.withCtx)(()=>[...r[11]||=[(0,a.createTextVNode)(`清空搜索`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:1,disabled:B.readonly||B.pageLimitReached,onClick:r[4]||=e=>V(`addPage`)},{default:(0,a.withCtx)(()=>[...r[12]||=[(0,a.createTextVNode)(`新增页面`,-1)]]),_:1},8,[`disabled`]))])),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(X.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:e.page.id,type:`button`,class:(0,a.normalizeClass)([`gd-contract-authoring-panel__page`,{"is-active":B.activePageId===e.page.id}]),"aria-current":B.activePageId===e.page.id?`page`:void 0,"aria-label":`第 ${e.number} 页:${e.title},${e.format}`,onClick:t=>V(`activatePage`,e.page.id)},[(0,a.createElementVNode)(`span`,g,(0,a.toDisplayString)(e.number),1),(0,a.createElementVNode)(`span`,_,[(0,a.createElementVNode)(`span`,te,(0,a.toDisplayString)(e.title),1),(0,a.createElementVNode)(`span`,ne,(0,a.toDisplayString)(e.summary||`暂无正文文字`),1),(0,a.createElementVNode)(`small`,re,`第 `+(0,a.toDisplayString)(e.number)+` 页 · `+(0,a.toDisplayString)(e.format),1)])],10,h))),128)),B.selectedPage?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,v,[(0,a.createElementVNode)(`div`,y,[r[13]||=(0,a.createElementVNode)(`span`,null,`页面数量`,-1),(0,a.createElementVNode)(`small`,{class:`gd-contract-authoring-panel__meta`,"aria-label":`共 ${B.pages.length} 页,上限 ${B.normalizedMaxPages} 页`},(0,a.toDisplayString)(B.pages.length)+` / `+(0,a.toDisplayString)(B.normalizedMaxPages),9,b)]),B.normalizedPageSizeOptions.length>1?((0,a.openBlock)(),(0,a.createElementBlock)(`label`,x,[r[14]||=(0,a.createElementVNode)(`span`,null,`页面格式`,-1),(0,a.createVNode)((0,a.unref)(o.Select),{value:B.selectedPageSizeOptionValue,options:B.pageSizeOptions,disabled:B.readonly,"aria-label":`当前页面格式`,onChange:r[5]||=e=>V(`patchPageFormat`,e)},null,8,[`value`,`options`,`disabled`])])):(0,a.createCommentVNode)(``,!0),(0,a.createElementVNode)(`small`,S,(0,a.toDisplayString)(B.selectedPageSize.width)+` × `+(0,a.toDisplayString)(B.selectedPageSize.height)+` px`,1),(0,a.createElementVNode)(`div`,C,[(0,a.createVNode)((0,a.unref)(o.Button),{disabled:B.readonly||B.pageLimitReached,"aria-label":`复制页面`,onClick:r[6]||=e=>V(`duplicatePage`,B.selectedPage)},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.CopyOutlined),{"aria-hidden":`true`}),r[15]||=(0,a.createTextVNode)(`复制页 `,-1)]),_:1},8,[`disabled`]),(0,a.createVNode)((0,a.unref)(o.Button),{type:`text`,danger:``,disabled:B.readonly||B.pages.length<=1,"aria-label":`删除页面`,onClick:r[7]||=e=>V(`removePage`,B.selectedPage)},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.DeleteOutlined),{"aria-hidden":`true`}),r[16]||=(0,a.createTextVNode)(`删除页 `,-1)]),_:1},8,[`disabled`])])])):(0,a.createCommentVNode)(``,!0)],8,p),[[a.vShow,U.value===`pages`]]),(0,a.withDirectives)((0,a.createElementVNode)(`section`,{id:`${H}-panel-outline`,role:`tabpanel`,"aria-labelledby":`${H}-tab-outline`,class:`gd-contract-authoring-panel__view`},[Q.value?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(W.outline.trim()?`没有匹配的标题`:`正文还没有标题`),1),W.outline.trim()?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:1,type:`link`,onClick:r[8]||=e=>W.outline=``},{default:(0,a.withCtx)(()=>[...r[17]||=[(0,a.createTextVNode)(`清空搜索`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createElementBlock)(`small`,E,`在正文使用标题样式后,即可在这里定位条款。`))])),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(Z.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:e.page.id,class:`gd-contract-authoring-panel__outline-group`},[(0,a.createElementVNode)(`div`,D,`第 `+(0,a.toDisplayString)(e.number)+` 页 · `+(0,a.toDisplayString)(e.title),1),(0,a.createElementVNode)(`ul`,O,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.headings,t=>((0,a.openBlock)(),(0,a.createElementBlock)(`li`,{key:t.headingIndex},[(0,a.createElementVNode)(`button`,{type:`button`,class:(0,a.normalizeClass)([`gd-contract-authoring-panel__outline-item`,{"is-current-page":B.activePageId===t.pageId}]),style:(0,a.normalizeStyle)({"--gd-authoring-outline-depth":t.depth}),"aria-label":`${t.text},第 ${e.number} 页,${t.level} 级标题`,onClick:e=>V(`navigateOutline`,{pageId:t.pageId,headingIndex:t.headingIndex})},[(0,a.createElementVNode)(`small`,A,`H`+(0,a.toDisplayString)(t.level),1),(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(t.text),1)],14,k)]))),128))])]))),128))],8,w),[[a.vShow,U.value===`outline`]]),(0,a.withDirectives)((0,a.createElementVNode)(`section`,{id:`${H}-panel-variables`,role:`tabpanel`,"aria-labelledby":`${H}-tab-variables`,class:`gd-contract-authoring-panel__view`},[r[19]||=(0,a.createElementVNode)(`div`,{class:`gd-contract-authoring-panel__section-heading`},[(0,a.createElementVNode)(`strong`,null,`控件参数`)],-1),$.value.length?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,M,[(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(W.variables.trim()?`没有匹配的变量`:`暂无正文控件`),1),W.variables.trim()?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:1,type:`link`,onClick:r[9]||=e=>W.variables=``},{default:(0,a.withCtx)(()=>[...r[18]||=[(0,a.createTextVNode)(`清空搜索`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createElementBlock)(`small`,N,`从右侧「插入控件」添加,选中后可定位并修改属性。`))])),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)($.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:e.variable.id,type:`button`,class:(0,a.normalizeClass)([`gd-contract-template-designer__nav-item gd-contract-authoring-panel__variable`,{"is-active":B.selectedVariableKey===e.variable.key}]),"aria-pressed":B.selectedVariableKey===e.variable.key,"aria-label":`定位变量:${e.variable.label}(${e.variable.key})`,onClick:t=>V(`scrollToVariable`,e.variable)},[(0,a.createElementVNode)(`span`,F,[((0,a.openBlock)(),(0,a.createBlock)((0,a.resolveDynamicComponent)((0,a.unref)(t.resolveFieldTypeIcon)(e.variable.type))))]),(0,a.createElementVNode)(`span`,I,[(0,a.createElementVNode)(`span`,ie,(0,a.toDisplayString)(e.variable.label),1),(0,a.createElementVNode)(`small`,L,(0,a.toDisplayString)(e.decoration?`页面装饰`:e.typeLabel)+` · `+(0,a.toDisplayString)(e.variable.key),1)])],10,P))),128))],8,j),[[a.vShow,U.value===`variables`]])])])],2))}});exports.default=R;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./composables/use-template-designer.cjs`),t=require(`./utils/template-tool-icons.cjs`),n=require(`./ContractTemplatePanelTabs.cjs`),r=require(`./utils/document-outline.cjs`),i=require(`./utils/panel-search.cjs`);let a=require(`vue`),o=require(`ant-design-vue`),s=require(`@ant-design/icons-vue`);var c=[`aria-label`,`aria-expanded`],l={class:`gd-contract-template-designer__panel-stack`},u={class:`gd-contract-authoring-panel__body`},d={class:`gd-contract-authoring-panel__search`},f={class:`gd-contract-authoring-panel__results`},p={role:`status`,"aria-live":`polite`},m=[`id`,`aria-labelledby`],h={key:0,class:`gd-contract-authoring-panel__empty`},ee=[`aria-current`,`aria-label`,`onClick`],te={class:`gd-contract-authoring-panel__page-number`,"aria-hidden":`true`},ne={class:`gd-contract-authoring-panel__page-copy`},re={class:`gd-contract-authoring-panel__item-title`},ie={class:`gd-contract-authoring-panel__summary`},ae={class:`gd-contract-authoring-panel__meta`},g={key:1,class:`gd-contract-authoring-panel__page-config`},_={class:`gd-contract-authoring-panel__section-heading`},v=[`aria-label`],y={key:0,class:`gd-contract-authoring-panel__field`},b={class:`gd-contract-authoring-panel__meta`},x={class:`gd-contract-authoring-panel__page-actions`},S=[`id`,`aria-labelledby`],C={key:0,class:`gd-contract-authoring-panel__empty`},w={key:0,class:`gd-contract-authoring-panel__meta`},T={class:`gd-contract-authoring-panel__outline-page`},E={class:`gd-contract-authoring-panel__outline-list`},D=[`aria-label`,`onClick`],O={class:`gd-contract-authoring-panel__heading-level`,"aria-hidden":`true`},k=[`id`,`aria-labelledby`],A={key:0,class:`gd-contract-authoring-panel__empty`},j={key:0,class:`gd-contract-authoring-panel__meta`},M=[`aria-pressed`,`aria-label`,`onClick`],N={class:`gd-contract-authoring-panel__variable-icon`,"aria-hidden":`true`},P={class:`gd-contract-authoring-panel__variable-copy`},F={class:`gd-contract-authoring-panel__item-title`},oe={class:`gd-contract-authoring-panel__meta`},I=(0,a.defineComponent)({name:`ContractTemplateDesignerSidebar`,__name:`ContractTemplateDesignerSidebar`,props:{collapsed:{type:Boolean},fileId:{},pages:{},variables:{},decorationVariableKeys:{},activePageId:{},selectedVariableKey:{},normalizedMaxPages:{},pageLimitReached:{type:Boolean},selectedPage:{},selectedPageSize:{},normalizedPageSizeOptions:{},pageSizeOptions:{},selectedPageSizeOptionValue:{},readonly:{type:Boolean},getPageSize:{type:Function}},emits:[`toggle`,`addPage`,`activatePage`,`duplicatePage`,`removePage`,`patchPageFormat`,`scrollToVariable`,`navigateOutline`],setup(I,{emit:L}){let R=I,z=L,B=`gd-contract-navigation-${(0,a.useId)()}`,V=(0,a.shallowRef)(`pages`),H=(0,a.reactive)({pages:``,outline:``,variables:``}),U=[{value:`pages`,label:`页面`},{value:`outline`,label:`大纲`},{value:`variables`,label:`变量`}],W={pages:`搜索页面`,outline:`搜索大纲`,variables:`搜索变量`},G={pages:`页名、页码或正文`,outline:`标题文字或所在页`,variables:`名称、类型或变量标识`},K=(0,a.computed)({get:()=>H[V.value],set:e=>{H[V.value]=e}}),q=r.createContractPageNavigationCache();(0,a.watch)(()=>R.fileId,()=>q.clear(),{flush:`sync`}),(0,a.watch)(()=>JSON.stringify(R.pages.map(e=>e.id)),()=>q.retainPages(R.pages)),(0,a.onScopeDispose)(()=>q.clear());let J=(0,a.computed)(()=>{let e=q.readPages(R.pages);return R.pages.map((t,n)=>{let r=R.getPageSize(t);return{page:t,number:n+1,title:t.title||`第 ${n+1} 页`,format:r.label||r.format||`自定义`,...e[n]}})}),Y=(0,a.computed)(()=>J.value.filter(e=>i.matchesContractPanelSearch(H.pages,e.title,`第 ${e.number} 页`,e.format,e.text))),X=(0,a.computed)(()=>J.value.map(e=>({...e,headings:e.headings.filter(t=>i.matchesContractPanelSearch(H.outline,t.text,e.title,`第 ${e.number} 页`))})).filter(e=>e.headings.length>0)),se=(0,a.computed)(()=>J.value.reduce((e,t)=>e+t.headings.length,0)),Z=(0,a.computed)(()=>X.value.reduce((e,t)=>e+t.headings.length,0)),ce=(0,a.computed)(()=>R.variables.map(t=>({variable:t,typeLabel:e.getFieldOption(t.type||`text`).label,decoration:R.decorationVariableKeys.includes(t.key)}))),Q=(0,a.computed)(()=>ce.value.filter(e=>i.matchesContractPanelSearch(H.variables,e.variable.label,e.variable.key,e.variable.type||`text`,e.typeLabel,e.decoration?`页面装饰`:`正文`))),le=(0,a.computed)(()=>{if(R.collapsed)return``;let[e,t,n]=V.value===`pages`?[Y.value.length,R.pages.length,`页`]:V.value===`outline`?[Z.value,se.value,`个标题`]:[Q.value.length,R.variables.length,`个变量`];return K.value.trim()?`找到 ${e} / ${t} ${n}`:`共 ${t} ${n}`});function $(e){(e===`pages`||e===`outline`||e===`variables`)&&(V.value=e)}return(e,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`aside`,{class:(0,a.normalizeClass)([`gd-contract-template-designer__sidebar gd-contract-authoring-panel`,{"is-collapsed":R.collapsed}]),"aria-label":`合同内容导航`},[(0,a.createVNode)((0,a.unref)(o.Tooltip),{title:R.collapsed?`展开页面栏`:`收起页面栏`},{default:(0,a.withCtx)(()=>[(0,a.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-designer__panel-handle gd-contract-authoring-panel__handle`,"aria-label":R.collapsed?`展开页面栏`:`收起页面栏`,"aria-expanded":!R.collapsed,onClick:r[0]||=e=>z(`toggle`)},[R.collapsed?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(s.RightOutlined),{key:0,"aria-hidden":`true`})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(s.LeftOutlined),{key:1,"aria-hidden":`true`}))],8,c)]),_:1},8,[`title`]),(0,a.createElementVNode)(`div`,l,[(0,a.createElementVNode)(`div`,u,[(0,a.createVNode)(n.default,{id:B,"model-value":V.value,items:U,label:`导航视图`,"onUpdate:modelValue":$},null,8,[`model-value`]),(0,a.createElementVNode)(`div`,d,[(0,a.createVNode)((0,a.unref)(o.Input),{value:K.value,"onUpdate:value":r[1]||=e=>K.value=e,"allow-clear":``,type:`search`,"aria-label":W[V.value],placeholder:G[V.value]},{prefix:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`,`aria-label`,`placeholder`])]),(0,a.createElementVNode)(`div`,f,[(0,a.createElementVNode)(`span`,p,(0,a.toDisplayString)(le.value),1),V.value===`pages`?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Tooltip),{key:0,title:R.pageLimitReached?`已达 ${R.normalizedMaxPages} 页上限`:`新增页面`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(o.Button),{type:`text`,size:`small`,class:`gd-contract-authoring-panel__action`,disabled:R.readonly||R.pageLimitReached,"aria-label":`新增页面`,onClick:r[2]||=e=>z(`addPage`)},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.PlusOutlined),{"aria-hidden":`true`}),r[10]||=(0,a.createTextVNode)(`新增`,-1)]),_:1},8,[`disabled`])]),_:1},8,[`title`])):(0,a.createCommentVNode)(``,!0)]),(0,a.withDirectives)((0,a.createElementVNode)(`section`,{id:`${B}-panel-pages`,role:`tabpanel`,"aria-labelledby":`${B}-tab-pages`,class:`gd-contract-authoring-panel__view`},[!R.collapsed&&V.value===`pages`?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[Y.value.length?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,h,[(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(H.pages.trim()?`没有匹配的页面`:`暂无页面`),1),H.pages.trim()?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:0,type:`link`,onClick:r[3]||=e=>H.pages=``},{default:(0,a.withCtx)(()=>[...r[11]||=[(0,a.createTextVNode)(`清空搜索`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:1,disabled:R.readonly||R.pageLimitReached,onClick:r[4]||=e=>z(`addPage`)},{default:(0,a.withCtx)(()=>[...r[12]||=[(0,a.createTextVNode)(`新增页面`,-1)]]),_:1},8,[`disabled`]))])),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(Y.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:e.page.id,type:`button`,class:(0,a.normalizeClass)([`gd-contract-authoring-panel__page`,{"is-active":R.activePageId===e.page.id}]),"aria-current":R.activePageId===e.page.id?`page`:void 0,"aria-label":`第 ${e.number} 页:${e.title},${e.format}`,onClick:t=>z(`activatePage`,e.page.id)},[(0,a.createElementVNode)(`span`,te,(0,a.toDisplayString)(e.number),1),(0,a.createElementVNode)(`span`,ne,[(0,a.createElementVNode)(`span`,re,(0,a.toDisplayString)(e.title),1),(0,a.createElementVNode)(`span`,ie,(0,a.toDisplayString)(e.summary||`暂无正文文字`),1),(0,a.createElementVNode)(`small`,ae,`第 `+(0,a.toDisplayString)(e.number)+` 页 · `+(0,a.toDisplayString)(e.format),1)])],10,ee))),128)),R.selectedPage?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[r[13]||=(0,a.createElementVNode)(`span`,null,`页面数量`,-1),(0,a.createElementVNode)(`small`,{class:`gd-contract-authoring-panel__meta`,"aria-label":`共 ${R.pages.length} 页,上限 ${R.normalizedMaxPages} 页`},(0,a.toDisplayString)(R.pages.length)+` / `+(0,a.toDisplayString)(R.normalizedMaxPages),9,v)]),R.normalizedPageSizeOptions.length>1?((0,a.openBlock)(),(0,a.createElementBlock)(`label`,y,[r[14]||=(0,a.createElementVNode)(`span`,null,`页面格式`,-1),(0,a.createVNode)((0,a.unref)(o.Select),{value:R.selectedPageSizeOptionValue,options:R.pageSizeOptions,disabled:R.readonly,"aria-label":`当前页面格式`,onChange:r[5]||=e=>z(`patchPageFormat`,e)},null,8,[`value`,`options`,`disabled`])])):(0,a.createCommentVNode)(``,!0),(0,a.createElementVNode)(`small`,b,(0,a.toDisplayString)(R.selectedPageSize.width)+` × `+(0,a.toDisplayString)(R.selectedPageSize.height)+` px`,1),(0,a.createElementVNode)(`div`,x,[(0,a.createVNode)((0,a.unref)(o.Button),{disabled:R.readonly||R.pageLimitReached,"aria-label":`复制页面`,onClick:r[6]||=e=>z(`duplicatePage`,R.selectedPage)},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.CopyOutlined),{"aria-hidden":`true`}),r[15]||=(0,a.createTextVNode)(`复制页 `,-1)]),_:1},8,[`disabled`]),(0,a.createVNode)((0,a.unref)(o.Button),{type:`text`,danger:``,disabled:R.readonly||R.pages.length<=1,"aria-label":`删除页面`,onClick:r[7]||=e=>z(`removePage`,R.selectedPage)},{default:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(s.DeleteOutlined),{"aria-hidden":`true`}),r[16]||=(0,a.createTextVNode)(`删除页 `,-1)]),_:1},8,[`disabled`])])])):(0,a.createCommentVNode)(``,!0)],64)):(0,a.createCommentVNode)(``,!0)],8,m),[[a.vShow,V.value===`pages`]]),(0,a.withDirectives)((0,a.createElementVNode)(`section`,{id:`${B}-panel-outline`,role:`tabpanel`,"aria-labelledby":`${B}-tab-outline`,class:`gd-contract-authoring-panel__view`},[!R.collapsed&&V.value===`outline`?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[Z.value?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(H.outline.trim()?`没有匹配的标题`:`正文还没有标题`),1),H.outline.trim()?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:1,type:`link`,onClick:r[8]||=e=>H.outline=``},{default:(0,a.withCtx)(()=>[...r[17]||=[(0,a.createTextVNode)(`清空搜索`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createElementBlock)(`small`,w,`在正文使用标题样式后,即可在这里定位条款。`))])),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(X.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:e.page.id,class:`gd-contract-authoring-panel__outline-group`},[(0,a.createElementVNode)(`div`,T,`第 `+(0,a.toDisplayString)(e.number)+` 页 · `+(0,a.toDisplayString)(e.title),1),(0,a.createElementVNode)(`ul`,E,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.headings,t=>((0,a.openBlock)(),(0,a.createElementBlock)(`li`,{key:t.headingIndex},[(0,a.createElementVNode)(`button`,{type:`button`,class:(0,a.normalizeClass)([`gd-contract-authoring-panel__outline-item`,{"is-current-page":R.activePageId===t.pageId}]),style:(0,a.normalizeStyle)({"--gd-authoring-outline-depth":t.depth}),"aria-label":`${t.text},第 ${e.number} 页,${t.level} 级标题`,onClick:e=>z(`navigateOutline`,{pageId:t.pageId,headingIndex:t.headingIndex})},[(0,a.createElementVNode)(`small`,O,`H`+(0,a.toDisplayString)(t.level),1),(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(t.text),1)],14,D)]))),128))])]))),128))],64)):(0,a.createCommentVNode)(``,!0)],8,S),[[a.vShow,V.value===`outline`]]),(0,a.withDirectives)((0,a.createElementVNode)(`section`,{id:`${B}-panel-variables`,role:`tabpanel`,"aria-labelledby":`${B}-tab-variables`,class:`gd-contract-authoring-panel__view`},[!R.collapsed&&V.value===`variables`?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[r[19]||=(0,a.createElementVNode)(`div`,{class:`gd-contract-authoring-panel__section-heading`},[(0,a.createElementVNode)(`strong`,null,`控件参数`)],-1),Q.value.length?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,A,[(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(H.variables.trim()?`没有匹配的变量`:`暂无正文控件`),1),H.variables.trim()?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Button),{key:1,type:`link`,onClick:r[9]||=e=>H.variables=``},{default:(0,a.withCtx)(()=>[...r[18]||=[(0,a.createTextVNode)(`清空搜索`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createElementBlock)(`small`,j,`从右侧「插入控件」添加,选中后可定位并修改属性。`))])),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(Q.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:e.variable.id,type:`button`,class:(0,a.normalizeClass)([`gd-contract-template-designer__nav-item gd-contract-authoring-panel__variable`,{"is-active":R.selectedVariableKey===e.variable.key}]),"aria-pressed":R.selectedVariableKey===e.variable.key,"aria-label":`定位变量:${e.variable.label}(${e.variable.key})`,onClick:t=>z(`scrollToVariable`,e.variable)},[(0,a.createElementVNode)(`span`,N,[((0,a.openBlock)(),(0,a.createBlock)((0,a.resolveDynamicComponent)((0,a.unref)(t.resolveFieldTypeIcon)(e.variable.type))))]),(0,a.createElementVNode)(`span`,P,[(0,a.createElementVNode)(`span`,F,(0,a.toDisplayString)(e.variable.label),1),(0,a.createElementVNode)(`small`,oe,(0,a.toDisplayString)(e.decoration?`页面装饰`:e.typeLabel)+` · `+(0,a.toDisplayString)(e.variable.key),1)])],10,M))),128))],64)):(0,a.createCommentVNode)(``,!0)],8,k),[[a.vShow,V.value===`variables`]])])])],2))}});exports.default=I;
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractTemplateRendererToolbar.cjs`);let t=require(`vue`),n=require(`ant-design-vue`),r=require(`@ant-design/icons-vue`);var i={class:`gd-contract-template-renderer__header`},a={class:`gd-contract-template-renderer__title`},o={class:`gd-contract-template-renderer__header-meta`},s={class:`gd-contract-template-renderer__header-actions`},c=(0,t.defineComponent)({name:`ContractTemplateRendererHeader`,__name:`ContractTemplateRendererHeader`,props:{title:{},filledCount:{},totalCount:{},requiredMissingCount:{},zoom:{},pages:{},activePageId:{},minZoom:{},maxZoom:{},showToolbar:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showSubmitButton:{type:Boolean,default:!0},showPanelToggle:{type:Boolean,default:!1},panelCollapsed:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`zoomIn`,`zoomOut`,`resetZoom`,`fitWidth`,`selectPage`,`validate`,`reset`,`submit`,`togglePanel`],setup(c,{emit:l}){let u=l;return(l,d)=>((0,t.openBlock)(),(0,t.createElementBlock)(`header`,i,[(0,t.createElementVNode)(`div`,a,[d[9]||=(0,t.createElementVNode)(`span`,{class:`gd-contract-template-renderer__title-bar`,"aria-hidden":`true`},null,-1),(0,t.createElementVNode)(`div`,o,[(0,t.createElementVNode)(`strong`,null,(0,t.toDisplayString)(c.title),1),(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(c.filledCount)+` / `+(0,t.toDisplayString)(c.totalCount)+` 已填写`,1)]),(0,t.createElementVNode)(`span`,{class:(0,t.normalizeClass)([`gd-contract-template-renderer__progress-pill`,{"is-warning":c.requiredMissingCount>0}])},(0,t.toDisplayString)(c.requiredMissingCount>0?`${c.requiredMissingCount} 项必填未完成`:`必填项已完成`),3)]),c.showToolbar?((0,t.openBlock)(),(0,t.createBlock)(e.default,{key:0,zoom:c.zoom,pages:c.pages,"active-page-id":c.activePageId,"min-zoom":c.minZoom,"max-zoom":c.maxZoom,onZoomIn:d[0]||=e=>u(`zoomIn`),onZoomOut:d[1]||=e=>u(`zoomOut`),onResetZoom:d[2]||=e=>u(`resetZoom`),onFitWidth:d[3]||=e=>u(`fitWidth`),onSelectPage:d[4]||=e=>u(`selectPage`,e)},null,8,[`zoom`,`pages`,`active-page-id`,`min-zoom`,`max-zoom`])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,s,[c.showPanelToggle?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:0,title:c.panelCollapsed?`展开填写面板`:`收起填写面板`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button gd-contract-template-renderer__panel-toggle`,"aria-label":c.panelCollapsed?`展开填写面板`:`收起填写面板`,"aria-expanded":!c.panelCollapsed,onClick:d[5]||=e=>u(`togglePanel`)},{default:(0,t.withCtx)(()=>[c.panelCollapsed?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.MenuUnfoldOutlined),{key:0,"aria-hidden":`true`})):((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.MenuFoldOutlined),{key:1,"aria-hidden":`true`}))]),_:1},8,[`aria-label`,`aria-expanded`])]),_:1},8,[`title`])):(0,t.createCommentVNode)(``,!0),(0,t.renderSlot)(l.$slots,`extra`),c.showValidateButton?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:1,title:`校验`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button`,disabled:c.readonly||c.disabled,"aria-label":`校验`,onClick:d[6]||=e=>u(`validate`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.AuditOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),_:1})):(0,t.createCommentVNode)(``,!0),c.showResetButton?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:2,title:`重置默认值`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button`,disabled:c.readonly||c.disabled,"aria-label":`重置默认值`,onClick:d[7]||=e=>u(`reset`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.UndoOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),_:1})):(0,t.createCommentVNode)(``,!0),c.showSubmitButton&&!c.readonly?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Button),{key:3,type:`primary`,size:`small`,disabled:c.disabled,onClick:d[8]||=e=>u(`submit`)},{icon:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.SendOutlined),{"aria-hidden":`true`})]),default:(0,t.withCtx)(()=>[d[10]||=(0,t.createTextVNode)(` 提交填写数据 `,-1)]),_:1},8,[`disabled`])):(0,t.createCommentVNode)(``,!0)])]))}});exports.default=c;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractTemplateRendererToolbar.cjs`);let t=require(`vue`),n=require(`ant-design-vue`),r=require(`@ant-design/icons-vue`);var i={class:`gd-contract-template-renderer__header`},a={class:`gd-contract-template-renderer__title`},o={class:`gd-contract-template-renderer__header-meta`},s=[`aria-valuenow`],c={class:`gd-contract-template-renderer__header-actions`},l=(0,t.defineComponent)({name:`ContractTemplateRendererHeader`,__name:`ContractTemplateRendererHeader`,props:{title:{},filledCount:{},totalCount:{},progressPercent:{},requiredMissingCount:{},zoom:{},pages:{},activePageId:{},minZoom:{},maxZoom:{},showToolbar:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showSubmitButton:{type:Boolean,default:!0},showPanelToggle:{type:Boolean,default:!1},panelCollapsed:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:[`zoomIn`,`zoomOut`,`resetZoom`,`fitWidth`,`selectPage`,`validate`,`reset`,`submit`,`togglePanel`],setup(l,{emit:u}){let d=u;return(u,f)=>((0,t.openBlock)(),(0,t.createElementBlock)(`header`,i,[(0,t.createElementVNode)(`div`,a,[f[9]||=(0,t.createElementVNode)(`span`,{class:`gd-contract-template-renderer__title-bar`,"aria-hidden":`true`},null,-1),(0,t.createElementVNode)(`div`,o,[(0,t.createElementVNode)(`strong`,null,(0,t.toDisplayString)(l.title),1),(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(l.filledCount)+` / `+(0,t.toDisplayString)(l.totalCount)+` 已填写`,1)]),(0,t.createElementVNode)(`div`,{class:`gd-contract-template-renderer__header-progress`,role:`progressbar`,"aria-valuenow":l.progressPercent,"aria-valuemin":`0`,"aria-valuemax":`100`},[(0,t.createElementVNode)(`span`,{style:(0,t.normalizeStyle)({width:`${l.progressPercent}%`})},null,4),(0,t.createElementVNode)(`em`,null,(0,t.toDisplayString)(l.progressPercent)+`%`,1)],8,s),(0,t.createElementVNode)(`span`,{class:(0,t.normalizeClass)([`gd-contract-template-renderer__progress-pill`,{"is-warning":l.requiredMissingCount>0}])},(0,t.toDisplayString)(l.requiredMissingCount>0?`${l.requiredMissingCount} 项必填未完成`:`必填项已完成`),3)]),l.showToolbar?((0,t.openBlock)(),(0,t.createBlock)(e.default,{key:0,zoom:l.zoom,pages:l.pages,"active-page-id":l.activePageId,"min-zoom":l.minZoom,"max-zoom":l.maxZoom,onZoomIn:f[0]||=e=>d(`zoomIn`),onZoomOut:f[1]||=e=>d(`zoomOut`),onResetZoom:f[2]||=e=>d(`resetZoom`),onFitWidth:f[3]||=e=>d(`fitWidth`),onSelectPage:f[4]||=e=>d(`selectPage`,e)},null,8,[`zoom`,`pages`,`active-page-id`,`min-zoom`,`max-zoom`])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,c,[l.showPanelToggle?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:0,title:l.panelCollapsed?`展开填写面板`:`收起填写面板`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button gd-contract-template-renderer__panel-toggle`,"aria-label":l.panelCollapsed?`展开填写面板`:`收起填写面板`,"aria-expanded":!l.panelCollapsed,onClick:f[5]||=e=>d(`togglePanel`)},{default:(0,t.withCtx)(()=>[l.panelCollapsed?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.MenuUnfoldOutlined),{key:0,"aria-hidden":`true`})):((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(r.MenuFoldOutlined),{key:1,"aria-hidden":`true`}))]),_:1},8,[`aria-label`,`aria-expanded`])]),_:1},8,[`title`])):(0,t.createCommentVNode)(``,!0),(0,t.renderSlot)(u.$slots,`extra`),l.showValidateButton?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:1,title:`校验`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button`,disabled:l.readonly||l.disabled,"aria-label":`校验`,onClick:f[6]||=e=>d(`validate`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.AuditOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),_:1})):(0,t.createCommentVNode)(``,!0),l.showResetButton?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Tooltip),{key:2,title:`重置默认值`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(n.Button),{size:`small`,class:`gd-contract-template-renderer__icon-button`,disabled:l.readonly||l.disabled,"aria-label":`重置默认值`,onClick:f[7]||=e=>d(`reset`)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.UndoOutlined),{"aria-hidden":`true`})]),_:1},8,[`disabled`])]),_:1})):(0,t.createCommentVNode)(``,!0),l.showSubmitButton&&!l.readonly?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(n.Button),{key:3,type:`primary`,size:`small`,disabled:l.disabled,onClick:f[8]||=e=>d(`submit`)},{icon:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.SendOutlined),{"aria-hidden":`true`})]),default:(0,t.withCtx)(()=>[f[10]||=(0,t.createTextVNode)(` 提交填写数据 `,-1)]),_:1},8,[`disabled`])):(0,t.createCommentVNode)(``,!0)])]))}});exports.default=l;
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/advanced-controls.cjs`),n=require(`./utils/template-renderer.cjs`),r=require(`./ContractTemplateRendererField.cjs`),i=require(`./ContractTemplateRendererHeader.cjs`),a=require(`./ContractTemplateRendererPage.cjs`),o=require(`./ContractTemplateRendererValidation.cjs`);let s=require(`vue`),c=require(`ant-design-vue`),ee=require(`@vueuse/core`),l=require(`@ant-design/icons-vue`);var te={key:2,class:`gd-contract-template-renderer__empty`},ne=[`data-highlighted-variable-key`],re={class:`gd-contract-template-renderer__pages`},ie=[`aria-label`,`aria-expanded`],ae={class:`gd-contract-template-renderer__panel-clip`},oe={class:`gd-contract-template-renderer__panel`},se={class:`gd-contract-template-renderer__panel-head`},ce={class:`gd-contract-template-renderer__panel-head-row`},le={class:`gd-contract-template-renderer__panel-head-actions`},ue={class:`gd-contract-template-renderer__field-group-head`},de={class:`gd-contract-template-renderer__field-group-items`},fe=[`data-field-key`],pe=.5,me=1.5,u=.1,he=3e3,d=(0,s.defineComponent)({name:`ContractTemplateSingleRenderer`,__name:`ContractTemplateSingleRenderer`,props:{files:{},activeFileId:{},valuesByFile:{},template:{default:void 0},values:{default:void 0},interactionMode:{default:`panel`},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},title:{default:`合同填写`},showSubmitButton:{type:Boolean,default:!0},validateOnSubmit:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},showPageMeta:{type:Boolean,default:!0},collapsiblePanel:{type:Boolean,default:!0},zoom:{default:1},controlRegistry:{default:()=>({})},optionResolver:{type:Function,default:void 0},requester:{type:Function,default:void 0},allowedRemoteOrigins:{default:()=>[]},remoteRequestTimeoutMs:{default:1e4},remoteOptionsCacheTtlMs:{default:3e4},selectorHttp:{default:void 0},selectorUrlPrefix:{default:``},contractFontBaseUrl:{default:void 0}},emits:[`update:activeFileId`,`update:valuesByFile`,`update:values`,`change`,`validate`,`submit`,`update:zoom`,`control-warning`],setup(d,{expose:ge,emit:_e}){let f=d,p=_e,ve=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],ye=(0,s.ref)(),m=(0,s.ref)(),h=(0,s.ref)(),g=(0,s.ref)(n.normalizeRenderValues(f.template,f.values)),be=(0,s.ref)({...g.value}),_=(0,s.ref)(!1),v=(0,s.ref)([]),y=(0,s.ref)(!1),b=(0,s.ref)(!1),x=(0,s.ref)(``),S=(0,s.ref)(``),C=(0,s.ref)(``),xe=(0,s.ref)(0),w=(0,s.ref)(mt(f.zoom)),T=(0,s.ref)(``),E=(0,s.ref)(`all`),D=(0,s.ref)(!1),O=(0,s.ref)(new Map),k=new Map,Se=new Map,A=new Map,j=new Set,{width:Ce}=(0,ee.useElementSize)(m),we=(0,s.computed)(()=>f.readonly||f.disabled),M=(0,s.computed)(()=>n.validateTemplateRenderStructure(f.template)),N=(0,s.computed)(()=>_.value?v.value:M.value),P=(0,s.computed)(()=>(Array.isArray(f.template?.variables)?f.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Te=(0,s.computed)(()=>{let e={...g.value};return P.value.forEach(n=>{let r=Je(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),Ee=(0,s.computed)(()=>P.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),De=(0,s.computed)(()=>{let e=new Map;return N.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),F=(0,s.computed)(()=>{let e=f.interactionMode===`panel`;return n.buildTemplateRenderPages(f.template,e?Te.value:be.value,{readonly:f.readonly,disabled:f.disabled,mode:e?`display`:`control`})}),Oe=(0,s.computed)(()=>{let e=new Map,t=new Set(P.value.map(e=>e.key));return F.value.forEach(n=>{ct(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),I=(0,s.computed)(()=>P.value.filter(rt)),ke=(0,s.computed)(()=>{let e=F.value.map((e,t)=>({id:`page:${e.id}`,pageId:e.id,title:`第 ${t+1} 页${e.title?` · ${e.title}`:``}`,allVariables:[],variables:[]})),t=new Map(e.map(e=>[e.pageId,e])),n={id:`unlocated`,title:`未定位字段`,allVariables:[],variables:[]};return P.value.forEach(e=>{let r=t.get(Oe.value.get(e.key)??``)??n;r.allVariables.push(e),rt(e)&&r.variables.push(e)}),[...e,n].filter(e=>e.variables.length>0).map(e=>({id:e.id,title:e.title,totalCount:e.allVariables.length,variables:e.variables}))}),L=(0,s.computed)(()=>F.value.length>0),R=(0,s.computed)(()=>P.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),z=(0,s.computed)(()=>P.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Ae=(0,s.computed)(()=>P.value.length?Math.round(R.value/P.value.length*100):0),je=(0,s.computed)(()=>_.value&&v.value.length===0),Me=(0,s.computed)(()=>_.value?je.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:M.value.length?`模板存在 ${M.value.length} 个问题,已安全降级展示`:``),Ne=(0,s.computed)(()=>_.value?N.value.length>0||b.value:M.value.length>0);(0,s.watch)(()=>f.template,e=>{B(n.normalizeRenderValues(e,f.values),!1),W();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(C.value)||(C.value=t.find(Boolean)??``),S.value&&!P.value.some(e=>e.key===S.value)&&We()},{deep:!0}),(0,s.watch)(()=>[f.template?.variables,f.optionResolver,f.requester,f.allowedRemoteOrigins,f.remoteRequestTimeoutMs,f.remoteOptionsCacheTtlMs],()=>{Xe()},{deep:!0,immediate:!0}),(0,s.watch)(()=>f.values,e=>{let t=n.normalizeRenderValues(f.template,e);ht(t,g.value)||(B(t,!1,{refreshInlineHtml:f.interactionMode!==`inline`}),W())},{deep:!0}),(0,s.watch)(()=>f.interactionMode,e=>{e===`inline`&&(be.value={...g.value})}),(0,s.watch)(()=>f.collapsiblePanel,e=>{e||(D.value=!1)}),(0,s.watch)(()=>f.zoom,e=>w.value=mt(e)),(0,s.watch)(F,e=>{!C.value&&e.length&&(C.value=e[0].id)},{immediate:!0});function B(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(p(`update:values`,{...g.value}),p(`change`,{...g.value}))}function V(e,t){!e||we.value||(B({...g.value,[e]:t},!0,{refreshInlineHtml:f.interactionMode!==`inline`}),_.value&&U())}function Pe(e){if(f.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?V(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?V(n,t.value===``?void 0:t.valueAsNumber):V(n,t.value))}function Fe(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(C.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&Y(r)}function Ie(e){let t=F.value.find(t=>t.id===e.pageId),n=P.value.some(t=>t.key===e.key);if(!(!t||!n||!ct(t.contentHtml).has(e.key))&&!(e.kind===`input`&&f.interactionMode!==`inline`)){if(C.value=e.pageId,e.kind===`input`){V(e.key,e.value);return}Y(e.key)}}function Le(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),Y(t.dataset.key))}function H(){return{...g.value}}function Re(e){B(n.normalizeRenderValues(f.template,e))}function U(){let e=n.validateTemplateRenderValues(f.template,g.value);return G(e),p(`validate`,e),e}function ze(){let e=n.resolveTemplateRenderSubmitErrors(f.template,g.value,f.validateOnSubmit);if((f.validateOnSubmit||e.length)&&(G(e),p(`validate`,e)),e.length)return Ke(e[0]),!1;let t=H();return p(`submit`,t),t}function Be(){return B(n.buildInitialRenderValues(f.template)),W(),H()}function Ve(){we.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Be()})}function W(){_.value=!1,v.value=[],y.value=!1,b.value=!1,q()}function G(e){if(v.value=e,_.value=!0,y.value=!1,e.length){b.value=!1,q();return}He()}let K;function q(){K&&=(clearTimeout(K),void 0)}function He(){q(),b.value=!0,K=setTimeout(()=>{b.value=!1,K=void 0},he)}function J(e){Y(e,!0)}function Ue(e){f.interactionMode===`panel`&&(D.value&&=!1,P.value.some(t=>t.key===e)&&!I.value.some(t=>t.key===e)&&it())}function Y(e,t=!1){if(!e)return;Ue(e),S.value=e,x.value=e;let n=Oe.value.get(e);n&&(C.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{Ge(e);let r=n?m.value?.querySelector(`[data-render-page-id="${$(n)}"]`):void 0;t&&r?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),f.interactionMode===`panel`&&h.value?.querySelector(`[data-field-key="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function We(){S.value=``,x.value=``,Ge(``)}function Ge(e){m.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function Ke(e){e.variableKey?J(e.variableKey):e.pageId&&pt(e.pageId)}function qe(e){return De.value.get(e)??[]}function X(e){return O.value.get(e.key)??{options:e.options??[],loading:!1}}function Je(e){let t=e.componentKey||e.type||``;return t?f.controlRegistry?.[t]:void 0}function Z(e,t){let n=new Map(O.value);n.set(e,t),O.value=n}function Ye(e){p(`control-warning`,e)}async function Xe(){k.forEach(e=>e.abort()),k.clear(),Se.clear(),j.clear();let e=Array.isArray(f.template?.variables)?f.template.variables:[];await Promise.all(e.map(async e=>{if(!e?.key)return;let t=Array.isArray(e.options)?e.options.map(e=>({...e})):[];if(e.dataSource?await Ze(e,t):Z(e.key,{options:t,loading:!1}),e.type===`custom`&&!Je(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;j.has(n)||(j.add(n),Ye({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function Ze(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),Z(e.key,{options:n,loading:!0});let a=Qe(e),o=Date.now(),s=Se.get(a);if(s&&s.expiresAt>o){Z(e.key,{options:s.options,loading:!1}),k.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,f.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=A.get(a);o||(o=$e(e,r,c,i),A.set(a,o),o.finally(()=>{A.get(a)===o&&A.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let ee=Math.max(0,Number(f.remoteOptionsCacheTtlMs)||0);ee>0&&Se.set(a,{options:s,expiresAt:Date.now()+ee}),Z(e.key,{options:s.length?s:n,loading:!1})}catch(t){let r=t instanceof Error&&t.message.startsWith(`高级控件请求超时`);if(i.signal.aborted&&!r)return;let a=t instanceof Error?t.message:`高级控件选项加载失败`;Z(e.key,{options:n,loading:!1,error:a}),Ye({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function Qe(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function $e(e,n,r,i){let a;if(n.kind===`resolver`){if(!f.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await f.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,f.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!f.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,f.remoteRequestTimeoutMs);a=await et(f.requester({url:n.url,method:n.method||`GET`,params:n.params,headers:n.headers,timeoutMs:r,signal:i.signal,variable:e}),i,r)}return t.normalizeContractTemplateControlOptions(a,n.kind===`url`?n:void 0,e.type||`select`)}function et(e,t,n){return new Promise((r,i)=>{let a=()=>{clearTimeout(c),t.signal.removeEventListener(`abort`,s)},o=e=>{a(),e()},s=()=>o(()=>i(Error(`高级控件请求已取消`))),c=setTimeout(()=>{o(()=>i(Error(`高级控件请求超时(${n}ms)`))),t.abort()},n);t.signal.addEventListener(`abort`,s,{once:!0}),e.then(e=>o(()=>r(e)),e=>o(()=>i(e)))})}function tt(e){let t=X(e);return{variable:e,value:g.value[e.key],errors:qe(e.key),active:S.value===e.key,readonly:f.readonly,disabled:f.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>V(e.key,t),focusVariable:()=>J(e.key)}}function nt(){let e=P.value;if(!e.length)return;let t=e.findIndex(e=>e.key===S.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(g.value[i.key])){J(i.key);return}}}function rt(e){let t=T.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?E.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):E.value===`error`?qe(e.key).length>0:!0:!1}function it(){T.value=``,E.value=`all`}function at(e,t){let n=I.value;if(!n.length)return;let r=n.findIndex(t=>t.key===e),i=n[r<0?0:(r+t+n.length)%n.length]?.key;i&&(J(i),(0,s.nextTick)(()=>ot(i)))}function ot(e){(h.value?.querySelector(`[data-field-key="${$(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function st(e){if(e.key!==`Enter`||e.target instanceof HTMLTextAreaElement)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-field-key]`)?.dataset.fieldKey;n&&(e.preventDefault(),at(n,e.shiftKey?-1:1))}function ct(e){let t=new Set;if(typeof DOMParser<`u`)return new DOMParser().parseFromString(e,`text/html`).querySelectorAll(`[data-key]`).forEach(e=>{let n=e.getAttribute(`data-key`)?.trim();n&&t.add(n)}),t;let n=/\bdata-key\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+))/gi,r;for(;r=n.exec(e);){let e=(r[1]??r[2]??r[3]??``).trim();e&&t.add(e)}return t}function lt(){!f.collapsiblePanel||f.interactionMode!==`panel`||(D.value=!D.value)}function Q(e){let t=mt(e);return w.value=t,p(`update:zoom`,t),t}function ut(){return Q(1)}function dt(){return w.value}function ft(){let e=Math.max(...F.value.map(e=>e.width),1);return Q(Math.max(0,Ce.value-48)/e)}function pt(e){e&&(C.value=e,(0,s.nextTick)(()=>{m.value?.querySelector(`[data-render-page-id="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function mt(e){let t=Number(e);return Number.isFinite(t)?Math.min(me,Math.max(pe,Math.round(t*100)/100)):1}function $(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function ht(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function gt(e){!(e.ctrlKey||e.metaKey)||!L.value||(e.preventDefault(),Q(e.deltaY>0?w.value-u:w.value+u))}let _t;function vt(){_t?.removeEventListener(`wheel`,gt),_t=void 0}function yt(e){vt(),e&&(e.addEventListener(`wheel`,gt,{passive:!1}),_t=e)}return(0,s.watch)(m,e=>{yt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{vt(),q(),k.forEach(e=>e.abort()),k.clear()}),ge({showValidation:G,focusError:e=>{Ke(e),e.variableKey&&(0,s.nextTick)(()=>ot(e.variableKey))},getValues:H,setValues:Re,validate:U,submit:ze,resetValues:Be,scrollToVariable:J,setZoom:Q,resetZoom:ut,getZoom:dt,fitWidth:ft,scrollToPage:pt}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ye,class:(0,s.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":d.disabled,"is-readonly":d.readonly,"is-panel":d.interactionMode===`panel`,"is-inline":d.interactionMode===`inline`}]),onClick:Fe,onKeydown:Le,onInput:Pe,onChange:Pe},[(0,s.renderSlot)(e.$slots,`fileBar`),L.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:d.title,"filled-count":R.value,"total-count":P.value.length,"required-missing-count":z.value,zoom:w.value,pages:F.value,"active-page-id":C.value,"min-zoom":pe,"max-zoom":me,"show-toolbar":d.showToolbar,"show-validate-button":d.showValidateButton,"show-reset-button":d.showResetButton,"show-submit-button":d.showSubmitButton,"show-panel-toggle":d.interactionMode===`panel`&&d.collapsiblePanel,"panel-collapsed":D.value,readonly:d.readonly,disabled:d.disabled,onZoomIn:t[0]||=e=>Q(w.value+u),onZoomOut:t[1]||=e=>Q(w.value-u),onResetZoom:ut,onFitWidth:ft,onSelectPage:pt,onValidate:U,onReset:Ve,onSubmit:ze,onTogglePanel:lt},{extra:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`required-missing-count`,`zoom`,`pages`,`active-page-id`,`show-toolbar`,`show-validate-button`,`show-reset-button`,`show-submit-button`,`show-panel-toggle`,`panel-collapsed`,`readonly`,`disabled`])):(0,s.createCommentVNode)(``,!0),Ne.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:je.value,summary:Me.value,errors:N.value,expanded:y.value,onToggle:t[2]||=e=>y.value=!y.value,onFocusError:Ke},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),L.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,class:(0,s.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":d.interactionMode===`inline`}])},[(0,s.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:m,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":x.value},[(0,s.createElementVNode)(`div`,re,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(F.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:F.value.length,zoom:w.value,"show-meta":d.showPageMeta,"font-base-url":d.contractFontBaseUrl,"active-key":x.value,"scroll-request":xe.value,onInteraction:Ie},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`]))),128))])],8,ne),d.interactionMode===`panel`?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":D.value&&d.collapsiblePanel}])},[d.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:D.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":D.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!D.value,onClick:t[3]||=e=>D.value=!D.value},[D.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(l.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(l.RightOutlined),{key:1,"aria-hidden":`true`}))],8,ie)]),_:1},8,[`title`])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,ae,[(0,s.createElementVNode)(`aside`,oe,[(0,s.createElementVNode)(`div`,se,[(0,s.createElementVNode)(`div`,ce,[(0,s.createElementVNode)(`div`,null,[t[6]||=(0,s.createElementVNode)(`strong`,null,`填写项`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(R.value)+` / `+(0,s.toDisplayString)(P.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(z.value?`${z.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:T.value,"onUpdate:value":t[4]||=e=>T.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(l.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,le,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:E.value,"onUpdate:value":t[5]||=e=>E.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:ve},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!Ee.value,onClick:nt},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:Ae.value,size:`small`,"show-info":!1},null,8,[`percent`])]),I.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:h,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:st},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(ke.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,s.createElementVNode)(`div`,ue,[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(t.title),1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.variables.length)+` / `+(0,s.toDisplayString)(t.totalCount)+` 项`,1)]),(0,s.createElementVNode)(`div`,de,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(t.variables,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,s.renderSlot)(e.$slots,`field`,(0,s.mergeProps)({ref_for:!0},tt(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:qe(t.key),active:S.value===t.key,readonly:d.readonly,disabled:d.disabled,options:X(t).options,loading:X(t).loading,"load-error":X(t).error,registration:Je(t),"selector-http":d.selectorHttp,"selector-url-prefix":d.selectorUrlPrefix,onUpdateValue:e=>V(t.key,e),onFocusVariable:e=>J(t.key)},null,8,[`variable`,`value`,`errors`,`active`,`readonly`,`disabled`,`options`,`loading`,`load-error`,`registration`,`selector-http`,`selector-url-prefix`,`onUpdateValue`,`onFocusVariable`])])],8,fe))),128))])]))),128))],544)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:P.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[T.value||E.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:it},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[T.value||E.value!==`all`?{name:`description`,fn:(0,s.withCtx)(()=>[t[8]||=(0,s.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,s.createCommentVNode)(``,!0)],2)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,te,[(0,s.createVNode)((0,s.unref)(c.Empty),{description:`暂无可渲染的合同页面`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=d;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/advanced-controls.cjs`),n=require(`./utils/template-renderer.cjs`),r=require(`./ContractTemplateRendererField.cjs`),i=require(`./ContractTemplateRendererHeader.cjs`),a=require(`./ContractTemplateRendererPage.cjs`),o=require(`./ContractTemplateRendererValidation.cjs`);let s=require(`vue`),c=require(`ant-design-vue`),l=require(`@vueuse/core`),u=require(`@ant-design/icons-vue`);var ee={key:2,class:`gd-contract-template-renderer__empty`},te=[`data-highlighted-variable-key`],ne={class:`gd-contract-template-renderer__pages`},re=[`aria-label`,`aria-expanded`],ie={class:`gd-contract-template-renderer__panel-clip`},ae={class:`gd-contract-template-renderer__panel`},oe={class:`gd-contract-template-renderer__panel-head`},se={class:`gd-contract-template-renderer__panel-head-row`},ce={class:`gd-contract-template-renderer__panel-head-actions`},le={class:`gd-contract-template-renderer__field-group-head`},ue={class:`gd-contract-template-renderer__field-group-items`},de=[`data-field-key`],fe=.5,pe=1.5,d=.1,me=3e3,f=(0,s.defineComponent)({name:`ContractTemplateSingleRenderer`,__name:`ContractTemplateSingleRenderer`,props:{files:{},activeFileId:{},valuesByFile:{},template:{default:void 0},values:{default:void 0},interactionMode:{default:`panel`},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},title:{default:`合同填写`},showSubmitButton:{type:Boolean,default:!0},validateOnSubmit:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},showPageMeta:{type:Boolean,default:!0},collapsiblePanel:{type:Boolean,default:!0},zoom:{default:1},controlRegistry:{default:()=>({})},optionResolver:{type:Function,default:void 0},requester:{type:Function,default:void 0},allowedRemoteOrigins:{default:()=>[]},remoteRequestTimeoutMs:{default:1e4},remoteOptionsCacheTtlMs:{default:3e4},selectorHttp:{default:void 0},selectorUrlPrefix:{default:``},contractFontBaseUrl:{default:void 0}},emits:[`update:activeFileId`,`update:valuesByFile`,`update:values`,`change`,`validate`,`submit`,`update:zoom`,`control-warning`],setup(f,{expose:he,emit:ge}){let p=f,m=ge,_e=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],ve=(0,s.ref)(),h=(0,s.ref)(),ye=(0,s.ref)(),g=(0,s.ref)(n.normalizeRenderValues(p.template,p.values)),be=(0,s.ref)({...g.value}),_=(0,s.ref)(!1),v=(0,s.ref)([]),y=(0,s.ref)(!1),b=(0,s.ref)(!1),x=(0,s.ref)(``),S=(0,s.ref)(``),C=(0,s.ref)(``),xe=(0,s.ref)(0),w=(0,s.ref)(ht(p.zoom)),T=(0,s.ref)(``),E=(0,s.ref)(`all`),D=(0,s.ref)(!1),O=(0,s.ref)(new Map),k=new Map,A=new Map,j=new Map,M=new Set,{width:Se}=(0,l.useElementSize)(h),Ce=(0,s.computed)(()=>p.readonly||p.disabled),N=(0,s.computed)(()=>n.validateTemplateRenderStructure(p.template)),P=(0,s.computed)(()=>_.value?v.value:N.value),F=(0,s.computed)(()=>(Array.isArray(p.template?.variables)?p.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),we=(0,s.computed)(()=>{let e={...g.value};return F.value.forEach(n=>{let r=Xe(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),Te=(0,s.computed)(()=>F.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),Ee=(0,s.computed)(()=>{let e=new Map;return P.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),I=(0,s.computed)(()=>{let e=p.interactionMode===`panel`;return n.buildTemplateRenderPages(p.template,e?we.value:be.value,{readonly:p.readonly,disabled:p.disabled,mode:e?`display`:`control`})}),De=(0,s.computed)(()=>{let e=new Map,t=new Set(F.value.map(e=>e.key));return I.value.forEach(n=>{lt(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),L=(0,s.computed)(()=>F.value.filter(at)),Oe=(0,s.computed)(()=>{let e=I.value.map((e,t)=>({id:`page:${e.id}`,pageId:e.id,title:`第 ${t+1} 页${e.title?` · ${e.title}`:``}`,allVariables:[],variables:[]})),t=new Map(e.map(e=>[e.pageId,e])),n={id:`unlocated`,title:`未定位字段`,allVariables:[],variables:[]};return F.value.forEach(e=>{let r=t.get(De.value.get(e.key)??``)??n;r.allVariables.push(e),at(e)&&r.variables.push(e)}),[...e,n].filter(e=>e.variables.length>0).map(e=>({id:e.id,title:e.title,totalCount:e.allVariables.length,variables:e.variables}))}),R=(0,s.computed)(()=>I.value.length>0),z=(0,s.computed)(()=>F.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),B=(0,s.computed)(()=>F.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),ke=(0,s.computed)(()=>F.value.length?Math.round(z.value/F.value.length*100):0),Ae=(0,s.computed)(()=>_.value&&v.value.length===0),je=(0,s.computed)(()=>_.value?Ae.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:N.value.length?`模板存在 ${N.value.length} 个问题,已安全降级展示`:``),Me=(0,s.computed)(()=>_.value?P.value.length>0||b.value:N.value.length>0);(0,s.watch)(()=>p.template,e=>{V(n.normalizeRenderValues(e,p.values),!1),He();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(C.value)||(C.value=t.find(Boolean)??``),S.value&&!F.value.some(e=>e.key===S.value)&&Ke()},{deep:!0}),(0,s.watch)(()=>[p.template?.variables,p.optionResolver,p.requester,p.allowedRemoteOrigins,p.remoteRequestTimeoutMs,p.remoteOptionsCacheTtlMs],()=>{Qe()},{deep:!0,immediate:!0}),(0,s.watch)(()=>p.values,e=>{let t=n.normalizeRenderValues(p.template,e);gt(t,g.value)||(V(t,!1,{refreshInlineHtml:p.interactionMode!==`inline`}),He())},{deep:!0}),(0,s.watch)(()=>p.interactionMode,e=>{e===`inline`&&(be.value={...g.value})}),(0,s.watch)(()=>p.collapsiblePanel,e=>{e||(D.value=!1)}),(0,s.watch)(()=>p.zoom,e=>w.value=ht(e)),(0,s.watch)(I,e=>{!C.value&&e.length&&(C.value=e[0].id)},{immediate:!0});function V(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(m(`update:values`,{...g.value}),m(`change`,{...g.value}))}function H(e,t){!e||Ce.value||(V({...g.value,[e]:t},!0,{refreshInlineHtml:p.interactionMode!==`inline`}),_.value&&Re())}function Ne(e){if(p.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?H(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?H(n,t.value===``?void 0:t.valueAsNumber):H(n,t.value))}function Pe(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(C.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&q(r)}function Fe(e){let t=I.value.find(t=>t.id===e.pageId),n=F.value.some(t=>t.key===e.key);if(!(!t||!n||!lt(t.contentHtml).has(e.key))&&!(e.kind===`input`&&p.interactionMode!==`inline`)){if(C.value=e.pageId,e.kind===`input`){H(e.key,e.value);return}q(e.key)}}function Ie(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),q(t.dataset.key))}function U(){return{...g.value}}function Le(e){V(n.normalizeRenderValues(p.template,e))}function Re(){let e=n.validateTemplateRenderValues(p.template,g.value);return Ue(e),m(`validate`,e),e}function ze(){let e=n.resolveTemplateRenderSubmitErrors(p.template,g.value,p.validateOnSubmit);if((p.validateOnSubmit||e.length)&&(Ue(e),m(`validate`,e)),e.length)return Je(e[0]),!1;let t=U();return m(`submit`,t),t}function Be(){return V(n.buildInitialRenderValues(p.template)),He(),U()}function Ve(){Ce.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Be()})}function He(){_.value=!1,v.value=[],y.value=!1,b.value=!1,G()}function Ue(e){if(v.value=e,_.value=!0,y.value=!1,e.length){b.value=!1,G();return}We()}let W;function G(){W&&=(clearTimeout(W),void 0)}function We(){G(),b.value=!0,W=setTimeout(()=>{b.value=!1,W=void 0},me)}function K(e){q(e,!0)}function Ge(e){p.interactionMode===`panel`&&(D.value&&=!1,F.value.some(t=>t.key===e)&&!L.value.some(t=>t.key===e)&&ot())}function q(e,t=!1){if(!e)return;Ge(e),S.value=e,x.value=e;let n=De.value.get(e);n&&(C.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{qe(e);let r=n?h.value?.querySelector(`[data-render-page-id="${Q(n)}"]`):void 0;t&&r?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),p.interactionMode===`panel`&&ye.value?.querySelector(`[data-field-key="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function Ke(){S.value=``,x.value=``,qe(``)}function qe(e){h.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function Je(e){e.variableKey?(K(e.variableKey),p.interactionMode===`panel`&&(0,s.nextTick)(()=>X(e.variableKey))):e.pageId&&mt(e.pageId)}function Ye(e){return Ee.value.get(e)??[]}function J(e){return O.value.get(e.key)??{options:e.options??[],loading:!1}}function Xe(e){let t=e.componentKey||e.type||``;return t?p.controlRegistry?.[t]:void 0}function Y(e,t){let n=new Map(O.value);n.set(e,t),O.value=n}function Ze(e){m(`control-warning`,e)}async function Qe(){k.forEach(e=>e.abort()),k.clear(),A.clear(),M.clear();let e=Array.isArray(p.template?.variables)?p.template.variables:[];await Promise.all(e.map(async e=>{if(!e?.key)return;let t=Array.isArray(e.options)?e.options.map(e=>({...e})):[];if(e.dataSource?await $e(e,t):Y(e.key,{options:t,loading:!1}),e.type===`custom`&&!Xe(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;M.has(n)||(M.add(n),Ze({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function $e(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),Y(e.key,{options:n,loading:!0});let a=et(e),o=Date.now(),s=A.get(a);if(s&&s.expiresAt>o){Y(e.key,{options:s.options,loading:!1}),k.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,p.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=j.get(a);o||(o=tt(e,r,c,i),j.set(a,o),o.finally(()=>{j.get(a)===o&&j.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let l=Math.max(0,Number(p.remoteOptionsCacheTtlMs)||0);l>0&&A.set(a,{options:s,expiresAt:Date.now()+l}),Y(e.key,{options:s.length?s:n,loading:!1})}catch(t){let r=t instanceof Error&&t.message.startsWith(`高级控件请求超时`);if(i.signal.aborted&&!r)return;let a=t instanceof Error?t.message:`高级控件选项加载失败`;Y(e.key,{options:n,loading:!1,error:a}),Ze({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function et(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function tt(e,n,r,i){let a;if(n.kind===`resolver`){if(!p.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await p.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,p.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!p.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,p.remoteRequestTimeoutMs);a=await nt(p.requester({url:n.url,method:n.method||`GET`,params:n.params,headers:n.headers,timeoutMs:r,signal:i.signal,variable:e}),i,r)}return t.normalizeContractTemplateControlOptions(a,n.kind===`url`?n:void 0,e.type||`select`)}function nt(e,t,n){return new Promise((r,i)=>{let a=()=>{clearTimeout(c),t.signal.removeEventListener(`abort`,s)},o=e=>{a(),e()},s=()=>o(()=>i(Error(`高级控件请求已取消`))),c=setTimeout(()=>{o(()=>i(Error(`高级控件请求超时(${n}ms)`))),t.abort()},n);t.signal.addEventListener(`abort`,s,{once:!0}),e.then(e=>o(()=>r(e)),e=>o(()=>i(e)))})}function rt(e){let t=J(e);return{variable:e,value:g.value[e.key],errors:Ye(e.key),active:S.value===e.key,readonly:p.readonly,disabled:p.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>H(e.key,t),focusVariable:()=>K(e.key)}}function it(){let e=F.value;if(!e.length)return;let t=e.findIndex(e=>e.key===S.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(g.value[i.key])){K(i.key);return}}}function at(e){let t=T.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?E.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):E.value===`error`?Ye(e.key).length>0:!0:!1}function ot(){T.value=``,E.value=`all`}function st(e,t){let n=L.value;if(!n.length)return;let r=n.findIndex(t=>t.key===e),i=n[r<0?0:(r+t+n.length)%n.length]?.key;i&&(K(i),(0,s.nextTick)(()=>X(i)))}function X(e){(ye.value?.querySelector(`[data-field-key="${Q(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function ct(e){if(e.key!==`Enter`||e.target instanceof HTMLTextAreaElement)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-field-key]`)?.dataset.fieldKey;n&&(e.preventDefault(),st(n,e.shiftKey?-1:1))}function lt(e){let t=new Set;if(typeof DOMParser<`u`)return new DOMParser().parseFromString(e,`text/html`).querySelectorAll(`[data-key]`).forEach(e=>{let n=e.getAttribute(`data-key`)?.trim();n&&t.add(n)}),t;let n=/\bdata-key\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+))/gi,r;for(;r=n.exec(e);){let e=(r[1]??r[2]??r[3]??``).trim();e&&t.add(e)}return t}function ut(){!p.collapsiblePanel||p.interactionMode!==`panel`||(D.value=!D.value)}function Z(e){let t=ht(e);return w.value=t,m(`update:zoom`,t),t}function dt(){return Z(1)}function ft(){return w.value}function pt(){let e=Math.max(...I.value.map(e=>e.width),1);return Z(Math.max(0,Se.value-48)/e)}function mt(e){e&&(C.value=e,(0,s.nextTick)(()=>{h.value?.querySelector(`[data-render-page-id="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function ht(e){let t=Number(e);return Number.isFinite(t)?Math.min(pe,Math.max(fe,Math.round(t*100)/100)):1}function Q(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function gt(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function _t(e){!(e.ctrlKey||e.metaKey)||!R.value||(e.preventDefault(),Z(e.deltaY>0?w.value-d:w.value+d))}let $;function vt(){$?.removeEventListener(`wheel`,_t),$=void 0}function yt(e){vt(),e&&(e.addEventListener(`wheel`,_t,{passive:!1}),$=e)}return(0,s.watch)(h,e=>{yt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{vt(),G(),k.forEach(e=>e.abort()),k.clear()}),he({showValidation:Ue,focusError:e=>{Je(e),e.variableKey&&(0,s.nextTick)(()=>X(e.variableKey))},getValues:U,setValues:Le,validate:Re,submit:ze,resetValues:Be,scrollToVariable:K,setZoom:Z,resetZoom:dt,getZoom:ft,fitWidth:pt,scrollToPage:mt}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ve,class:(0,s.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":f.disabled,"is-readonly":f.readonly,"is-panel":f.interactionMode===`panel`,"is-inline":f.interactionMode===`inline`}]),onClick:Pe,onKeydown:Ie,onInput:Ne,onChange:Ne},[(0,s.renderSlot)(e.$slots,`fileBar`),R.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:f.title,"filled-count":z.value,"total-count":F.value.length,"progress-percent":ke.value,"required-missing-count":B.value,zoom:w.value,pages:I.value,"active-page-id":C.value,"min-zoom":fe,"max-zoom":pe,"show-toolbar":f.showToolbar,"show-validate-button":f.showValidateButton,"show-reset-button":f.showResetButton,"show-submit-button":f.showSubmitButton,"show-panel-toggle":f.interactionMode===`panel`&&f.collapsiblePanel,"panel-collapsed":D.value,readonly:f.readonly,disabled:f.disabled,onZoomIn:t[0]||=e=>Z(w.value+d),onZoomOut:t[1]||=e=>Z(w.value-d),onResetZoom:dt,onFitWidth:pt,onSelectPage:mt,onValidate:Re,onReset:Ve,onSubmit:ze,onTogglePanel:ut},{extra:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`progress-percent`,`required-missing-count`,`zoom`,`pages`,`active-page-id`,`show-toolbar`,`show-validate-button`,`show-reset-button`,`show-submit-button`,`show-panel-toggle`,`panel-collapsed`,`readonly`,`disabled`])):(0,s.createCommentVNode)(``,!0),Me.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:Ae.value,summary:je.value,errors:P.value,expanded:y.value,onToggle:t[2]||=e=>y.value=!y.value,onFocusError:Je},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),R.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,class:(0,s.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":f.interactionMode===`inline`}])},[(0,s.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:h,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":x.value},[(0,s.createElementVNode)(`div`,ne,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(I.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:I.value.length,zoom:w.value,"show-meta":f.showPageMeta,"font-base-url":f.contractFontBaseUrl,"active-key":x.value,"scroll-request":xe.value,onInteraction:Fe},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`]))),128))])],8,te),f.interactionMode===`panel`?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":D.value&&f.collapsiblePanel}])},[f.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:D.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":D.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!D.value,onClick:t[3]||=e=>D.value=!D.value},[D.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(u.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(u.RightOutlined),{key:1,"aria-hidden":`true`}))],8,re)]),_:1},8,[`title`])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,ie,[(0,s.createElementVNode)(`aside`,ae,[(0,s.createElementVNode)(`div`,oe,[(0,s.createElementVNode)(`div`,se,[(0,s.createElementVNode)(`div`,null,[t[6]||=(0,s.createElementVNode)(`strong`,null,`填写项`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(z.value)+` / `+(0,s.toDisplayString)(F.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(B.value?`${B.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:T.value,"onUpdate:value":t[4]||=e=>T.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,ce,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:E.value,"onUpdate:value":t[5]||=e=>E.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:_e},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!Te.value,onClick:it},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:ke.value,size:`small`,"show-info":!1},null,8,[`percent`])]),L.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:ye,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:ct},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(Oe.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,s.createElementVNode)(`div`,le,[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(t.title),1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.variables.length)+` / `+(0,s.toDisplayString)(t.totalCount)+` 项`,1)]),(0,s.createElementVNode)(`div`,ue,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(t.variables,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,s.renderSlot)(e.$slots,`field`,(0,s.mergeProps)({ref_for:!0},rt(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:Ye(t.key),active:S.value===t.key,readonly:f.readonly,disabled:f.disabled,options:J(t).options,loading:J(t).loading,"load-error":J(t).error,registration:Xe(t),"selector-http":f.selectorHttp,"selector-url-prefix":f.selectorUrlPrefix,onUpdateValue:e=>H(t.key,e),onFocusVariable:e=>K(t.key)},null,8,[`variable`,`value`,`errors`,`active`,`readonly`,`disabled`,`options`,`loading`,`load-error`,`registration`,`selector-http`,`selector-url-prefix`,`onUpdateValue`,`onFocusVariable`])])],8,de))),128))])]))),128))],544)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:F.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[T.value||E.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:ot},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[T.value||E.value!==`all`?{name:`description`,fn:(0,s.withCtx)(()=>[t[8]||=(0,s.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,s.createCommentVNode)(``,!0)],2)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,ee,[(0,s.createVNode)((0,s.unref)(c.Empty),{description:`暂无可渲染的合同页面`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=f;
@@ -1,2 +1,2 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./composables/use-template-designer.cjs`),r=require(`./composables/use-page-authoring.cjs`),i=require(`./extensions/template-variable.cjs`),a=require(`./utils/content-image.cjs`),o=require(`./extensions/editor-extensions.cjs`),s=require(`./utils/context-variable.cjs`),ee=require(`./utils/block-style.cjs`),te=require(`./ContractTemplatePageDecorations.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),u=require(`@tiptap/vue-3`),ne=require(`@tiptap/core`),d=require(`@tiptap/pm/tables`),f=require(`@tiptap/pm/state`);var p={class:`gd-contract-template-designer__page-title`},m=`application/x-gd-contract-variable-move`,h=8,g=(0,c.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}},emits:[`page-update`,`variable-drop`,`variable-select`,`variable-move-blocked`,`editor-focus`,`editor-ready`,`editor-state-change`,`editor-context-menu`,`word-paste`],setup(g,{expose:re,emit:ie}){let _=g,v=ie,y=(0,c.computed)(()=>_.readonly||_.disabled),b=(0,c.ref)();function ae(e){let t=e.filter(Boolean).join(`、`);return typeof window>`u`?!1:new Promise(e=>{l.Modal.confirm({title:`粘贴内容包含不兼容字体`,content:`检测到 ${t||`外部`} 字体。为保证 Mac 与 Windows 排版一致,将统一转换为合同标准字体(GD Contract Latin + 系统宋体)。是否继续粘贴?`,okText:`继续粘贴`,cancelText:`取消粘贴`,onOk:()=>e(!0),onCancel:()=>e(!1)})})}let x=o.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:_.processImageFile,confirmExternalFontPaste:ae,getZoom:()=>Math.max(.1,_.zoom||1)}),S=(0,u.useEditor)({content:_.page.contentHtml,editable:!y.value,extensions:x,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:{contextmenu:(e,t)=>{if(y.value)return!1;let n=B(e,t.target);if(n)return t.preventDefault(),L({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=S.value?.state.selection,i=r instanceof d.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=s.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||A(t.clientX,t.clientY,t.target))?(V({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(F({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(m,_.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(m);return!n||n===_.page.id?!1:(t.preventDefault(),v(`variable-move-blocked`,_.page.id),!0)}},handleKeyDown:(e,t)=>{if(y.value||!ue(t))return!1;let n=S.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=z();if(i){let e=n.view.coordsAtPos(r.from);return L({pageId:_.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof d.CellSelection;if(s.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=fe();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(d.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return V({pageId:_.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return F({pageId:_.page.id,clientX:o.left,clientY:o.bottom}),!0}},onUpdate:({editor:e})=>{v(`page-update`,{..._.page,contentHtml:e.getHTML(),contentJson:e.getJSON()}),W()},onFocus:()=>{v(`editor-focus`,_.page.id),W()},onBlur:W,onSelectionUpdate:W,onCreate:({editor:e})=>{e.on(`contract-word-paste`,E),W(),v(`editor-ready`,_.page.id)}}),{findText:oe,revealSearchMatch:C,replaceSearchMatches:w,focusHeading:T}=r.usePageAuthoring({editor:()=>S.value,readonly:()=>y.value,search:()=>({query:_.searchQuery,matchCase:_.searchMatchCase,activeMatch:_.activeSearchMatch})});function E(e){v(`word-paste`,e)}function D(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 O(){if(!S.value)return``;let{from:e,to:t}=S.value.state.selection;return S.value.state.doc.textBetween(e,t,`
2
- `)}function se(){let e=S.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)>h)return;let i=Math.abs(r.left-n.left)/K.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ce(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof d.CellSelection||t instanceof f.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 le(){let e=S.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 ue(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function k(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 de(e,t){let n=S.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return k(n.state.doc.resolve(r))}function fe(){let e=S.value;if(e)return k(e.state.selection.$from)}function A(e,t,n){let r=S.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof d.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=de(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(d.CellSelection.create(r.state.doc,a))),!0):!1}function j(){let e=S.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 M(){let e=S.value,t=e?.state.selection;if(!e||!(t instanceof d.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 N(e=S.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function P(e){let t=S.value;if(!t)return 0;let n=N(t.state.doc),r=n,i=e=>{r=N(e.doc)};return e===`delete-table-row`?(0,d.deleteRow)(t.state,i):e===`delete-table-column`?(0,d.deleteColumn)(t.state,i):(0,d.deleteTable)(t.state,i),Math.max(0,n-r)}function F(e){let t=S.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?se():void 0,leadingText:le()})}function I(e,t){F({pageId:_.page.id,clientX:e,clientY:t})}function L(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function R(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:a.normalizeContractImageDimension(e.attrs.width),height:a.normalizeContractImageDimension(e.attrs.height)}}function z(){let e=S.value?.state.selection;if(e instanceof f.NodeSelection)return R(e.node,e.from)}function B(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 f.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(f.NodeSelection.create(e.state.doc,t))),R(r,t))}catch{return}}function V(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:j(),activeAlignment:M(),affectedVariableCounts:{deleteRow:P(`delete-table-row`),deleteColumn:P(`delete-table-column`),deleteTable:P(`delete-table`)}})}function pe(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function H(){let e=S.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`&&pe(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=H();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function he(){return H().length>1}function ge(){return[`center`,`right`].find(e=>S.value?.isActive(`heading`,{textAlign:e})||S.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function U(){let e=S.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:he(),textAlign:ge(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:D(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:O(),selectedContentImage:z()}}function W(){v(`editor-state-change`,_.page.id,U())}(0,c.watch)(y,e=>{S.value?.setEditable(!e),W()}),(0,c.watch)(()=>_.page.contentHtml,e=>{!S.value||e===S.value.getHTML()||(S.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W())});let G=(0,c.computed)(()=>{let e=t.normalizePageDecorations(_.pageDecorations),n=_.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:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-r-i)}px`}}),K=(0,c.computed)(()=>Math.max(.1,_.zoom||1)),_e=(0,c.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*K.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*K.value)}px`})),ve=(0,c.computed)(()=>({"--gd-contract-page-zoom":String(K.value)})),ye=(0,c.computed)(()=>n.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(m);n&&n!==_.page.id&&(e.preventDefault(),e.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function xe(e,t){let n=S.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return i.insertTemplateVariableNode(n,e,r),$(),q()}function Se(e,t){let n=S.value;if(n)return o.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),q()}function Ce(e){let t=S.value,n=t?.state.selection;if(!t||!(n instanceof f.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:a.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let o=t.state.tr.setNodeMarkup(n.from,void 0,r);return o.setSelection(f.NodeSelection.create(o.doc,n.from)),t.view.dispatch(o),q()}function we(){let e=S.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function q(){return{..._.page,pageSize:ye.value,contentHtml:S.value?.getHTML()??_.page.contentHtml,contentJson:S.value?.getJSON()??_.page.contentJson}}function J(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function Te(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Ee(e){return(0,ne.generateHTML)(J(e),x)}function De(){if(_.pageDecorations){let e=t.normalizePageDecorations(_.pageDecorations),n=_.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,_.pageSize.height-r-i)}let e=b.value;if(!e)return _.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,_.pageSize.height-r-i)}function Oe(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=K.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(!S.value)return;let e=S.value.getJSON();return n.splitPageContentByMeasurements(e.content,Oe(),De())}function ke(){return!!Y()}function Ae(){if(!S.value)return;let e=Y();if(e)return S.value.commands.setContent(J(e.currentContent),{emitUpdate:!1}),{page:q(),overflowContent:e.overflowContent,overflowHtml:Ee(e.overflowContent)}}function je(e){if(!S.value||!e.length)return;let t=S.value.getJSON().content,n=[...e,...Te(t)?[]:t??[]];return S.value.commands.setContent(J(n),{emitUpdate:!1}),q()}function X(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 Me(e,t=e.key){if(!S.value)return;let n=i.buildTemplateVariableAttrs(e),r=!1;return S.value.commands.command(({tr:e,state:i,dispatch:a})=>(X(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),$(),r?q():void 0}function Ne(e){if(!S.value)return;let t=0;return S.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=X(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?q():void 0}function Z(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function Q(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function Pe(e){Z();let t=Q(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),S.value?.commands.focus(),!0):!1}function $(){Z(),Q(_.selectedVariableKey)?.classList.add(`is-active`)}function Fe(t){let r=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),i=S.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,c.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,c.nextTick)($)},{deep:!0,flush:`post`});function Ie(e){y.value||(e.type===`apply-block-style`?S.value&&ee.applyContractTemplateBlockStyle(S.value,e.format):e.type===`apply-text-style-preset`?Fe(e.preset):o.runContractTemplateEditorCommand(S.value,e),W())}function Le(){S.value?.commands.focus()}function Re(){return S.value?.getJSON()}function ze(){return S.value?.getHTML()??_.page.contentHtml}function Be(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?Q(t.key):void 0;$(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function Ve(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,c.onBeforeUnmount)(()=>{S.value?.off(`contract-word-paste`,E),S.value?.destroy()}),re({findText:oe,revealSearchMatch:C,replaceSearchMatches:w,focusHeading:T,focus:Le,getHTML:ze,getJSON:Re,getEditorState:U,getTableCommandCapabilities:j,getAffectedVariableCount:P,insertVariable:xe,insertContentImage:Se,updateSelectedContentImage:Ce,getSelectionRange:we,getSelectionViewportRect:ce,requestTextContextMenu:I,hasOverflowContent:ke,updateVariable:Me,removeVariable:Ne,splitOverflowContent:Ae,prependContent:je,runCommand:Ie,scrollIntoField:Be,scrollIntoVariable:Pe,scrollIntoPage:Ve}),(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,c.normalizeStyle)(_e.value)},[(0,c.createElementVNode)(`div`,{class:(0,c.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,c.normalizeStyle)(ve.value)},[(0,c.createElementVNode)(`header`,p,[(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,c.createElementVNode)(`span`,null,`第 `+(0,c.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,c.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,c.toDisplayString)(g.pageSize.width)+` × `+(0,c.toDisplayString)(g.pageSize.height),1)]),(0,c.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,c.normalizeStyle)(G.value),onDragover:t[0]||=(0,c.withModifiers)(()=>{},[`prevent`]),onDrop:be,onClick:t[1]||=e=>v(`editor-focus`,g.page.id)},[(0,c.createVNode)(te.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,c.unref)(S)?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,c.unref)(S)},null,8,[`editor`])):(0,c.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=g;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./composables/use-template-designer.cjs`),r=require(`./utils/editor-snapshot-cache.cjs`),i=require(`./composables/use-page-authoring.cjs`),a=require(`./extensions/template-variable.cjs`),o=require(`./utils/content-image.cjs`),s=require(`./extensions/editor-extensions.cjs`),c=require(`./utils/context-variable.cjs`),ee=require(`./utils/block-style.cjs`),te=require(`./ContractTemplatePageDecorations.cjs`);let l=require(`vue`),ne=require(`ant-design-vue`),u=require(`@tiptap/vue-3`),re=require(`@tiptap/core`),d=require(`@tiptap/pm/tables`),f=require(`@tiptap/pm/state`);var ie={class:`gd-contract-template-designer__page-title`},p=`application/x-gd-contract-variable-move`,ae=8,m=(0,l.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}},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(m,{expose:oe,emit:se}){let h=m,g=se,_=(0,l.computed)(()=>h.readonly||h.disabled),v=(0,l.ref)(),y=r.createEditorSnapshotCache(),b=!1,x,S,C=!1,w=!1,ce=h.page.contentHtml;function T(){return w&&!C}function E(){return b||!!O.value?.view.composing}function le(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 D=s.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:h.processImageFile,confirmExternalFontPaste:le,getZoom:()=>Math.max(.1,h.zoom||1)}),O=(0,u.useEditor)({content:h.page.contentHtml,editable:!_.value,extensions:D,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=h.variables.find(e=>e.key===r);return i&&g(`variable-select`,i.key),!1},handleDOMEvents:{compositionstart:()=>(b=!0,x!==void 0&&clearTimeout(x),!1),compositionend:()=>(b=!1,x=setTimeout(()=>{if(x=void 0,!(C||E())){if(S!==void 0){let e=S;S=void 0,H(e)}g(`page-update`,W()),g(`composition-end`,h.page.id)}},0),!1),contextmenu:(e,t)=>{if(_.value)return!1;let n=Te(e,t.target);if(n)return t.preventDefault(),F({pageId:h.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=O.value?.state.selection,i=r instanceof d.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=c.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||Se(t.clientX,t.clientY,t.target))?(R({pageId:h.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(P({pageId:h.page.id,clientX:t.clientX,clientY:t.clientY}),!0)},dragstart:(e,t)=>_.value?(t.preventDefault(),!0):(t.target instanceof HTMLElement?t.target:null)?.closest(`[data-template-variable]`)?(t.dataTransfer?.setData(p,h.page.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`),v.value?.classList.add(`is-variable-dragging`),!1):!1,dragend:()=>(v.value?.classList.remove(`is-variable-dragging`),!1),drop:(e,t)=>{if(_.value)return t.preventDefault(),t.stopPropagation(),!0;let n=t.dataTransfer?.getData(p);return!n||n===h.page.id?!1:(t.preventDefault(),g(`variable-move-blocked`,h.page.id),!0)}},handleKeyDown:(e,t)=>{if(_.value||!ye(t))return!1;let n=O.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=L();if(i){let e=n.view.coordsAtPos(r.from);return F({pageId:h.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof d.CellSelection;if(c.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=xe();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(d.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return R({pageId:h.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return P({pageId:h.page.id,clientX:o.left,clientY:o.bottom}),!0}},onUpdate:({editor:e})=>{g(`page-update`,{...h.page,contentHtml:y.read(e).getHTML(),contentJson:y.read(e).getJSON()}),V()},onFocus:()=>{g(`editor-focus`,h.page.id),V()},onBlur:V,onSelectionUpdate:V,onCreate:({editor:e})=>{h.page.contentHtml!==ce&&h.page.contentHtml!==y.read(e).getHTML()&&(b||e.view.composing?S=h.page.contentHtml:e.commands.setContent(h.page.contentHtml||`<p></p>`,{emitUpdate:!1})),w=!0,e.on(`contract-word-paste`,k),V(),g(`editor-ready`,h.page.id)}}),{findText:ue,revealSearchMatch:de,replaceSearchMatches:fe,focusHeading:pe}=i.usePageAuthoring({editor:()=>O.value,readonly:()=>_.value,search:()=>({query:h.searchQuery,matchCase:h.searchMatchCase,activeMatch:h.activeSearchMatch})});function k(e){g(`word-paste`,e)}function me(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 he(){if(!O.value)return``;let{from:e,to:t}=O.value.state.selection;return O.value.state.doc.textBetween(e,t,`
2
+ `)}function ge(){let e=O.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)>ae)return;let i=Math.abs(r.left-n.left)/U.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function _e(){let e=O.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof d.CellSelection||t instanceof f.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 ve(){let e=O.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 ye(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function A(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 be(e,t){let n=O.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return A(n.state.doc.resolve(r))}function xe(){let e=O.value;if(e)return A(e.state.selection.$from)}function Se(e,t,n){let r=O.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof d.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=be(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(d.CellSelection.create(r.state.doc,a))),!0):!1}function j(){let e=O.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 Ce(){let e=O.value,t=e?.state.selection;if(!e||!(t instanceof d.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 M(e=O.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function N(e){let t=O.value;if(!t)return 0;let n=M(t.state.doc),r=n,i=e=>{r=M(e.doc)};return e===`delete-table-row`?(0,d.deleteRow)(t.state,i):e===`delete-table-column`?(0,d.deleteColumn)(t.state,i):(0,d.deleteTable)(t.state,i),Math.max(0,n-r)}function P(e){let t=O.value?.state.selection,n=!!(t&&!t.empty);g(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?ge():void 0,leadingText:ve()})}function we(e,t){P({pageId:h.page.id,clientX:e,clientY:t})}function F(e,t){g(`editor-context-menu`,{type:`image`,...e,image:t})}function I(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:o.normalizeContractImageDimension(e.attrs.width),height:o.normalizeContractImageDimension(e.attrs.height)}}function L(){let e=O.value?.state.selection;if(e instanceof f.NodeSelection)return I(e.node,e.from)}function Te(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`&&g(`variable-select`,r.attrs.key),(!(e.state.selection instanceof f.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(f.NodeSelection.create(e.state.doc,t))),I(r,t))}catch{return}}function R(e){g(`editor-context-menu`,{type:`table`,...e,capabilities:j(),activeAlignment:Ce(),affectedVariableCounts:{deleteRow:N(`delete-table-row`),deleteColumn:N(`delete-table-column`),deleteTable:N(`delete-table`)}})}function Ee(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function z(){let e=O.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`&&Ee(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 De(){let e=z();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function Oe(){return z().length>1}function ke(){return[`center`,`right`].find(e=>O.value?.isActive(`heading`,{textAlign:e})||O.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function B(){let e=O.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:De(),hasMixedBlockFormats:Oe(),textAlign:ke(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:me(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:he(),selectedContentImage:L()}}function V(){g(`editor-state-change`,h.page.id,B())}(0,l.watch)(_,e=>{O.value?.setEditable(!e),V()}),(0,l.watch)(()=>h.page.contentHtml,e=>{H(e)});function H(e){if(!O.value||e===$()){S=void 0;return}if(E()){S=e;return}O.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),V()}let Ae=(0,l.computed)(()=>{let e=t.normalizePageDecorations(h.pageDecorations),n=h.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:`${h.pageSize.width}px`,height:`${h.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,h.pageSize.height-r-i)}px`}}),U=(0,l.computed)(()=>Math.max(.1,h.zoom||1)),je=(0,l.computed)(()=>({width:`${Math.ceil((h.pageSize.width+10)*U.value)}px`,height:`${Math.ceil((h.pageSize.height+40)*U.value)}px`})),Me=(0,l.computed)(()=>({"--gd-contract-page-zoom":String(U.value)})),Ne=(0,l.computed)(()=>n.resolvePageSize(h.pageSize));function Pe(e){if(h.readonly||h.disabled){e.preventDefault(),e.stopPropagation();return}let t=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(t){e.preventDefault(),e.stopPropagation(),g(`variable-drop`,h.page.id,t,e.clientX,e.clientY);return}let n=e.dataTransfer?.getData(p);n&&n!==h.page.id&&(e.preventDefault(),e.stopPropagation(),g(`variable-move-blocked`,h.page.id))}function Fe(e,t){let n=O.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return a.insertTemplateVariableNode(n,e,r),Z(),W()}function Ie(e,t){let n=O.value;if(n)return s.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),W()}function Le(e){let t=O.value,n=t?.state.selection;if(!t||!(n instanceof f.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:o.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(f.NodeSelection.create(a.doc,n.from)),t.view.dispatch(a),W()}function Re(){let e=O.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function W(){return{...h.page,pageSize:Ne.value,contentHtml:$(),contentJson:Q()??h.page.contentJson}}function ze(e){if(!T())return{contentHtml:e.contentHtml,contentJson:e.contentJson};let t=$();return!E()&&e.contentHtml!==h.page.contentHtml&&e.contentHtml!==t?{contentHtml:e.contentHtml,contentJson:e.contentJson}:{contentHtml:t,contentJson:Q()}}function G(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function Be(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Ve(e){return(0,re.generateHTML)(G(e),D)}function He(){if(h.pageDecorations){let e=t.normalizePageDecorations(h.pageDecorations),n=h.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,h.pageSize.height-r-i)}let e=v.value;if(!e)return h.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,h.pageSize.height-r-i)}function Ue(){let e=v.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=U.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 K(){if(!O.value)return;let e=Ue(),t=He();if(e.some(e=>e.top+e.height>t+1))return n.splitPageContentByMeasurements(Q()?.content,e,t)}function We(){return!!K()}function Ge(){if(!O.value||!T()||E())return;let e=K();if(e)return O.value.commands.setContent(G(e.currentContent),{emitUpdate:!1}),{page:W(),overflowContent:e.overflowContent,overflowHtml:Ve(e.overflowContent)}}function Ke(e){if(!O.value||!T()||E()||!e.length)return;let t=Q()?.content,n=[...e,...Be(t)?[]:t??[]];return O.value.commands.setContent(G(n),{emitUpdate:!1}),W()}function q(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 J(e,t=e.key){if(!O.value)return;let n=a.buildTemplateVariableAttrs(e),r=!1;return O.value.commands.command(({tr:e,state:i,dispatch:a})=>(q(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),Z(),r?W():void 0}function qe(e){if(!O.value)return;let t=0;return O.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=q(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?W():void 0}function Y(){v.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function X(e){if(e)return Array.from(v.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function Je(e){Y();let t=X(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),O.value?.commands.focus(),!0):!1}function Z(){Y(),X(h.selectedVariableKey)?.classList.add(`is-active`)}function Ye(t){let r=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),i=O.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,l.watch)([()=>h.selectedVariableKey,()=>h.variables],()=>{(0,l.nextTick)(Z)},{deep:!0,flush:`post`});function Xe(e){_.value||(e.type===`apply-block-style`?O.value&&ee.applyContractTemplateBlockStyle(O.value,e.format):e.type===`apply-text-style-preset`?Ye(e.preset):s.runContractTemplateEditorCommand(O.value,e),V())}function Ze(){O.value?.commands.focus()}function Q(){return O.value?y.read(O.value).getJSON():h.page.contentJson}function $(){return O.value?y.read(O.value).getHTML():h.page.contentHtml}function Qe(e){let t=h.variables.find(t=>t.id===e||t.key===e),n=t?X(t.key):void 0;Z(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function $e(){v.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,l.onBeforeUnmount)(()=>{C=!0,x!==void 0&&clearTimeout(x),O.value?.off(`contract-word-paste`,k),O.value?.destroy()}),oe({findText:ue,revealSearchMatch:de,replaceSearchMatches:fe,focusHeading:pe,focus:Ze,getHTML:$,getJSON:Q,getContentSnapshot:ze,getEditorState:B,getTableCommandCapabilities:j,getAffectedVariableCount:N,insertVariable:Fe,insertContentImage:Ie,updateSelectedContentImage:Le,getSelectionRange:Re,getSelectionViewportRect:_e,requestTextContextMenu:we,isReady:T,isComposing:E,hasOverflowContent:We,updateVariable:J,removeVariable:qe,splitOverflowContent:Ge,prependContent:Ke,runCommand:Xe,scrollIntoField:Qe,scrollIntoVariable:Je,scrollIntoPage:$e}),(e,t)=>((0,l.openBlock)(),(0,l.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,l.normalizeStyle)(je.value)},[(0,l.createElementVNode)(`div`,{class:(0,l.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":m.active}]),style:(0,l.normalizeStyle)(Me.value)},[(0,l.createElementVNode)(`header`,ie,[(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(m.page.title||`第 ${m.pageIndex+1} 页`),1),(0,l.createElementVNode)(`span`,null,`第 `+(0,l.toDisplayString)(m.pageIndex+1)+` 页 · `+(0,l.toDisplayString)(m.pageSize.label||`A4`)+` · `+(0,l.toDisplayString)(m.pageSize.width)+` × `+(0,l.toDisplayString)(m.pageSize.height),1)]),(0,l.createElementVNode)(`div`,{ref_key:`pageElement`,ref:v,class:`gd-contract-template-designer__page`,style:(0,l.normalizeStyle)(Ae.value),onLoadCapture:t[0]||=e=>g(`page-layout-change`,m.page.id),onDragover:t[1]||=(0,l.withModifiers)(()=>{},[`prevent`]),onDrop:Pe,onClick:t[2]||=e=>g(`editor-focus`,m.page.id)},[(0,l.createVNode)(te.default,{decorations:m.pageDecorations,"page-number":m.pageIndex+1,"total-pages":m.totalPages,variables:m.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,l.unref)(O)?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,l.unref)(O)},null,8,[`editor`])):(0,l.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=m;