@jc-times/business-ui 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/AGENTS.md +15 -0
  2. package/CHANGELOG.md +23 -0
  3. package/README.md +2 -0
  4. package/THIRD_PARTY_NOTICES.md +8 -0
  5. package/assets/pdf-fonts/NotoSans-Bold.ttf +0 -0
  6. package/assets/pdf-fonts/NotoSans-BoldItalic.ttf +0 -0
  7. package/assets/pdf-fonts/NotoSans-Italic.ttf +0 -0
  8. package/assets/pdf-fonts/NotoSans-Regular.ttf +0 -0
  9. package/assets/pdf-fonts/NotoSansHans-Regular.otf +0 -0
  10. package/assets/pdf-fonts/OFL-CJK.txt +92 -0
  11. package/assets/pdf-fonts/OFL-Latin.txt +94 -0
  12. package/assets/pdf-fonts/README.md +11 -0
  13. package/bin/business-ui-gate.mjs +2 -2
  14. package/dist/AntDateWheelView.js +131 -0
  15. package/dist/AntOptionWheelView.js +76 -0
  16. package/dist/Cascader.js +56 -51
  17. package/dist/DateInput.js +84 -66
  18. package/dist/DateWheelPicker.js +58 -0
  19. package/dist/ModalShell.js +84 -72
  20. package/dist/MultiSelect.js +5 -1
  21. package/dist/OptionWheelDialog.js +99 -0
  22. package/dist/Select.js +116 -61
  23. package/dist/StructuredAddressInput.js +72 -70
  24. package/dist/TreeSelect.js +4 -1
  25. package/dist/WheelCascader.js +123 -0
  26. package/dist/WheelDateInput.js +97 -0
  27. package/dist/business-ui.js +42 -39
  28. package/dist/date-wheel-model.js +27 -0
  29. package/dist/document-viewer-v2/DocumentViewerV2.js +49 -48
  30. package/dist/document-viewer-v2/HeadlessPdfViewer.js +128 -124
  31. package/dist/document-viewer-v2/pdf-font-fallback.js +35 -0
  32. package/dist/option-wheel-model.js +49 -0
  33. package/dist/styles.css +1 -1
  34. package/dist/types/AntDateWheelView.d.ts +9 -0
  35. package/dist/types/AntOptionWheelView.d.ts +8 -0
  36. package/dist/types/Cascader.d.ts +2 -0
  37. package/dist/types/DateInput.d.ts +4 -0
  38. package/dist/types/DateWheelPicker.d.ts +13 -0
  39. package/dist/types/ModalShell.d.ts +3 -1
  40. package/dist/types/OptionWheelDialog.d.ts +18 -0
  41. package/dist/types/Select.d.ts +4 -1
  42. package/dist/types/StructuredAddressInput.d.ts +3 -1
  43. package/dist/types/WheelCascader.d.ts +6 -0
  44. package/dist/types/WheelDateInput.d.ts +11 -0
  45. package/dist/types/date-wheel-model.d.ts +8 -0
  46. package/dist/types/document-viewer-v2/pdf-font-fallback.d.ts +2 -0
  47. package/dist/types/index.d.ts +3 -0
  48. package/dist/types/option-wheel-model.d.ts +19 -0
  49. package/dist/types/usePhoneWheel.d.ts +2 -0
  50. package/dist/types/useSheetViewport.d.ts +3 -0
  51. package/dist/usePhoneWheel.js +16 -0
  52. package/dist/useSheetViewport.js +26 -0
  53. package/docs/agent-guide.md +15 -5
  54. package/docs/api.md +14 -0
  55. package/docs/cascader.md +2 -0
  56. package/docs/component-strategy.md +3 -0
  57. package/docs/date-wheel.md +25 -0
  58. package/docs/dependencies.md +2 -0
  59. package/docs/document-viewer-v2.md +2 -2
  60. package/docs/mobile-controls.md +54 -0
  61. package/docs/modal-shell-migration.md +25 -0
  62. package/docs/release.md +7 -0
  63. package/docs/viewport-qa.md +38 -0
  64. package/licenses/antd-mobile-MIT.txt +22 -0
  65. package/package.json +17 -4
@@ -1,20 +1,21 @@
1
1
  import { DocumentViewer as e } from "../document-viewer/DocumentViewer.js";
2
- import { Suspense as t, lazy as n, useCallback as r, useMemo as i } from "react";
3
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
2
+ import { pdfFontFallback as t } from "./pdf-font-fallback.js";
3
+ import { Suspense as n, lazy as r, useCallback as i, useMemo as a } from "react";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
5
  //#region src/document-viewer-v2/DocumentViewerV2.tsx
5
- var s = n(() => import("@embedpdf/react-pdf-viewer").then((e) => ({ default: e.PDFViewer }))), c = n(() => import("./HeadlessPdfViewer.js")), l = [
6
+ var c = r(() => import("@embedpdf/react-pdf-viewer").then((e) => ({ default: e.PDFViewer }))), l = r(() => import("./HeadlessPdfViewer.js")), u = [
6
7
  "annotation",
7
8
  "redaction",
8
9
  "insert",
9
10
  "form"
10
- ], u = "data-business-ui-document-viewer-v2-toolbar", d = "\n[data-epdf-i=\"main-toolbar\"] {\n min-height: 52px;\n gap: 8px;\n padding: 7px 12px;\n border-bottom-color: var(--ui-border, #dde0eb);\n background: var(--ui-surface, #fff);\n box-shadow: 0 1px 0 color-mix(in srgb, var(--ui-text, #242837) 3%, transparent);\n}\n\n[data-epdf-i=\"main-toolbar\"] [data-epdf-i$=\"-group\"] {\n gap: 4px;\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]) {\n width: 36px;\n min-width: 36px;\n height: 36px;\n padding: 7px;\n border: 1px solid transparent;\n border-radius: var(--ui-radius, 8px);\n color: var(--ui-muted, #70778b);\n background: transparent;\n box-shadow: none;\n transition:\n color var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease),\n background-color var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease),\n border-color var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease),\n box-shadow var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease);\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]):hover:not(:disabled) {\n border-color: color-mix(in srgb, var(--ui-primary, #5965a8) 22%, var(--ui-border, #dde0eb));\n color: var(--ui-primary-hover, #414a78);\n background: var(--ui-primary-soft, #eef0fb);\n box-shadow: none;\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]):focus-visible {\n border-color: var(--ui-primary, #5965a8);\n outline: 3px solid var(--ui-focus, rgb(89 101 168 / 28%));\n outline-offset: 1px;\n}\n\n[data-epdf-i=\"main-toolbar\"] button.bg-interactive-selected {\n border-color: color-mix(in srgb, var(--ui-primary, #5965a8) 42%, var(--ui-border, #dde0eb));\n color: var(--ui-primary-hover, #414a78);\n background: var(--ui-primary-soft, #eef0fb);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--ui-primary, #5965a8) 16%, transparent);\n}\n\n[data-epdf-i=\"main-toolbar\"] button:disabled {\n opacity: .48;\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]) > svg {\n width: 20px;\n height: 20px;\n}\n\n[data-epdf-i=\"zoom-toolbar\"] > .relative > .flex {\n height: 36px;\n padding-left: 8px;\n overflow: hidden;\n border: 1px solid var(--ui-border, #dde0eb);\n border-radius: var(--ui-radius, 8px);\n color: var(--ui-text, #242837);\n background: var(--ui-surface, #fff);\n}\n\n[data-epdf-i=\"zoom-toolbar\"] input[name=\"zoom\"] {\n width: 36px;\n color: var(--ui-text, #242837);\n font-weight: 700;\n}\n\n[data-epdf-i=\"zoom-toolbar\"] > .relative > .flex > button {\n width: 34px;\n min-width: 34px;\n height: 34px;\n padding: 7px;\n border: 0;\n border-radius: 6px;\n}\n\n[data-epdf-i=\"main-toolbar\"] [aria-hidden=\"true\"] > div {\n background: var(--ui-border, #dde0eb);\n}\n\n@container (max-width: 640px) {\n [data-epdf-i=\"main-toolbar\"] {\n min-height: 56px;\n padding: 7px 8px;\n }\n\n [data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]) {\n width: 40px;\n min-width: 40px;\n height: 40px;\n }\n}\n";
11
- function f(e) {
11
+ ], d = "data-business-ui-document-viewer-v2-toolbar", f = "\n[data-epdf-i=\"main-toolbar\"] {\n min-height: 52px;\n gap: 8px;\n padding: 7px 12px;\n border-bottom-color: var(--ui-border, #dde0eb);\n background: var(--ui-surface, #fff);\n box-shadow: 0 1px 0 color-mix(in srgb, var(--ui-text, #242837) 3%, transparent);\n}\n\n[data-epdf-i=\"main-toolbar\"] [data-epdf-i$=\"-group\"] {\n gap: 4px;\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]) {\n width: 36px;\n min-width: 36px;\n height: 36px;\n padding: 7px;\n border: 1px solid transparent;\n border-radius: var(--ui-radius, 8px);\n color: var(--ui-muted, #70778b);\n background: transparent;\n box-shadow: none;\n transition:\n color var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease),\n background-color var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease),\n border-color var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease),\n box-shadow var(--ui-motion-fast, 120ms) var(--ui-ease-standard, ease);\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]):hover:not(:disabled) {\n border-color: color-mix(in srgb, var(--ui-primary, #5965a8) 22%, var(--ui-border, #dde0eb));\n color: var(--ui-primary-hover, #414a78);\n background: var(--ui-primary-soft, #eef0fb);\n box-shadow: none;\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]):focus-visible {\n border-color: var(--ui-primary, #5965a8);\n outline: 3px solid var(--ui-focus, rgb(89 101 168 / 28%));\n outline-offset: 1px;\n}\n\n[data-epdf-i=\"main-toolbar\"] button.bg-interactive-selected {\n border-color: color-mix(in srgb, var(--ui-primary, #5965a8) 42%, var(--ui-border, #dde0eb));\n color: var(--ui-primary-hover, #414a78);\n background: var(--ui-primary-soft, #eef0fb);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--ui-primary, #5965a8) 16%, transparent);\n}\n\n[data-epdf-i=\"main-toolbar\"] button:disabled {\n opacity: .48;\n}\n\n[data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]) > svg {\n width: 20px;\n height: 20px;\n}\n\n[data-epdf-i=\"zoom-toolbar\"] > .relative > .flex {\n height: 36px;\n padding-left: 8px;\n overflow: hidden;\n border: 1px solid var(--ui-border, #dde0eb);\n border-radius: var(--ui-radius, 8px);\n color: var(--ui-text, #242837);\n background: var(--ui-surface, #fff);\n}\n\n[data-epdf-i=\"zoom-toolbar\"] input[name=\"zoom\"] {\n width: 36px;\n color: var(--ui-text, #242837);\n font-weight: 700;\n}\n\n[data-epdf-i=\"zoom-toolbar\"] > .relative > .flex > button {\n width: 34px;\n min-width: 34px;\n height: 34px;\n padding: 7px;\n border: 0;\n border-radius: 6px;\n}\n\n[data-epdf-i=\"main-toolbar\"] [aria-hidden=\"true\"] > div {\n background: var(--ui-border, #dde0eb);\n}\n\n@container (max-width: 640px) {\n [data-epdf-i=\"main-toolbar\"] {\n min-height: 56px;\n padding: 7px 8px;\n }\n\n [data-epdf-i=\"main-toolbar\"] button:not([role=\"tab\"]) {\n width: 40px;\n min-width: 40px;\n height: 40px;\n }\n}\n";
12
+ function p(e) {
12
13
  let { shadowRoot: t } = e;
13
14
  if (!t || t.querySelector("[data-business-ui-document-viewer-v2-toolbar]")) return;
14
15
  let n = t.ownerDocument.createElement("style");
15
- n.setAttribute(u, ""), n.textContent = d, t.append(n);
16
+ n.setAttribute(d, ""), n.textContent = f, t.append(n);
16
17
  }
17
- var p = {
18
+ var m = {
18
19
  preference: "system",
19
20
  light: {
20
21
  background: {
@@ -58,113 +59,113 @@ var p = {
58
59
  }
59
60
  }
60
61
  };
61
- function m(e) {
62
+ function h(e) {
62
63
  return {
63
- ...p,
64
+ ...m,
64
65
  ...e,
65
66
  light: {
66
- ...p.light,
67
+ ...m.light,
67
68
  ...e?.light,
68
69
  background: {
69
- ...p.light?.background,
70
+ ...m.light?.background,
70
71
  ...e?.light?.background
71
72
  },
72
73
  foreground: {
73
- ...p.light?.foreground,
74
+ ...m.light?.foreground,
74
75
  ...e?.light?.foreground
75
76
  },
76
77
  border: {
77
- ...p.light?.border,
78
+ ...m.light?.border,
78
79
  ...e?.light?.border
79
80
  },
80
81
  accent: {
81
- ...p.light?.accent,
82
+ ...m.light?.accent,
82
83
  ...e?.light?.accent
83
84
  },
84
85
  interactive: {
85
- ...p.light?.interactive,
86
+ ...m.light?.interactive,
86
87
  ...e?.light?.interactive
87
88
  }
88
89
  }
89
90
  };
90
91
  }
91
- function h(e, t = {}) {
92
- let { documentManager: n, disabledCategories: r, fonts: i, i18n: a, theme: o, ...s } = t, { id: c, kind: u, ...d } = e;
92
+ function g(e, n = {}) {
93
+ let { documentManager: r, disabledCategories: i, fonts: a, i18n: o, theme: s, ...c } = n, { id: l, kind: d, ...f } = e;
93
94
  return {
94
95
  worker: !0,
95
96
  tabBar: "never",
96
- fontFallback: null,
97
- ...s,
98
- disabledCategories: r ?? [...l],
97
+ fontFallback: t,
98
+ ...c,
99
+ disabledCategories: i ?? [...u],
99
100
  fonts: {
100
101
  ui: null,
101
102
  signature: null,
102
- ...i
103
+ ...a
103
104
  },
104
105
  i18n: {
105
106
  defaultLocale: "zh-CN",
106
- ...a
107
+ ...o
107
108
  },
108
- theme: m(o),
109
+ theme: h(s),
109
110
  documentManager: {
110
111
  maxDocuments: 1,
111
- ...n,
112
+ ...r,
112
113
  initialDocuments: [{
113
- ...d,
114
- documentId: c,
114
+ ...f,
115
+ documentId: l,
115
116
  autoActivate: !0
116
117
  }]
117
118
  }
118
119
  };
119
120
  }
120
- function g(n) {
121
- return n.renderer === "headless" ? /* @__PURE__ */ a(t, {
122
- fallback: /* @__PURE__ */ a("div", {
121
+ function _(t) {
122
+ return t.renderer === "headless" ? /* @__PURE__ */ o(n, {
123
+ fallback: /* @__PURE__ */ o("div", {
123
124
  role: "status",
124
125
  children: "正在加载 PDF 查看器…"
125
126
  }),
126
- children: /* @__PURE__ */ a(c, { ...n }, `${n.source.kind}:${n.source.id}`)
127
- }) : _(n) ? /* @__PURE__ */ a(v, { ...n }) : /* @__PURE__ */ a(e, {
128
- ...n,
129
- className: ["ui-document-viewer-v2-compat", n.className].filter(Boolean).join(" ")
127
+ children: /* @__PURE__ */ o(l, { ...t }, `${t.source.kind}:${t.source.id}`)
128
+ }) : v(t) ? /* @__PURE__ */ o(y, { ...t }) : /* @__PURE__ */ o(e, {
129
+ ...t,
130
+ className: ["ui-document-viewer-v2-compat", t.className].filter(Boolean).join(" ")
130
131
  });
131
132
  }
132
- function _(e) {
133
+ function v(e) {
133
134
  return e.source.kind === "url" || e.source.kind === "buffer";
134
135
  }
135
- function v({ source: e, config: n, className: c, style: l, layoutMode: u = "standalone", ariaLabel: d = "PDF 文档查看器", onInit: p, onReady: m, title: g, toolbar: _, footer: v }) {
136
- let y = i(() => h(e, n), [e, n]), b = r((e) => {
137
- f(e), p?.(e);
138
- }, [p]);
139
- return /* @__PURE__ */ o("section", {
136
+ function y({ source: e, config: t, className: r, style: l, layoutMode: u = "standalone", ariaLabel: d = "PDF 文档查看器", onInit: f, onReady: m, title: h, toolbar: _, footer: v }) {
137
+ let y = a(() => g(e, t), [e, t]), b = i((e) => {
138
+ p(e), f?.(e);
139
+ }, [f]);
140
+ return /* @__PURE__ */ s("section", {
140
141
  className: [
141
142
  "ui-document-viewer-v2",
142
143
  u === "fill" && "ui-viewer-fill",
143
- c
144
+ r
144
145
  ].filter(Boolean).join(" "),
145
146
  style: l,
146
147
  "aria-label": d,
147
148
  children: [
148
- (g !== void 0 || _ !== void 0) && /* @__PURE__ */ o("div", {
149
+ (h !== void 0 || _ !== void 0) && /* @__PURE__ */ s("div", {
149
150
  className: "ui-viewer-toolbar",
150
- children: [g !== void 0 && /* @__PURE__ */ a("div", {
151
+ children: [h !== void 0 && /* @__PURE__ */ o("div", {
151
152
  className: "ui-viewer-title",
152
- children: g
153
+ children: h
153
154
  }), _]
154
155
  }),
155
- /* @__PURE__ */ a(t, {
156
- fallback: /* @__PURE__ */ a("div", {
156
+ /* @__PURE__ */ o(n, {
157
+ fallback: /* @__PURE__ */ o("div", {
157
158
  role: "status",
158
159
  children: "正在加载 PDF 查看器…"
159
160
  }),
160
- children: /* @__PURE__ */ a(s, {
161
+ children: /* @__PURE__ */ o(c, {
161
162
  className: "ui-document-viewer-v2-engine",
162
163
  config: y,
163
164
  onInit: b,
164
165
  onReady: m
165
166
  }, e.id)
166
167
  }),
167
- v !== void 0 && /* @__PURE__ */ a("div", {
168
+ v !== void 0 && /* @__PURE__ */ o("div", {
168
169
  className: "ui-viewer-footer",
169
170
  children: v
170
171
  })
@@ -172,4 +173,4 @@ function v({ source: e, config: n, className: c, style: l, layoutMode: u = "stan
172
173
  });
173
174
  }
174
175
  //#endregion
175
- export { l as DOCUMENT_VIEWER_V2_DISABLED_CATEGORIES, u as DOCUMENT_VIEWER_V2_TOOLBAR_STYLE_ATTRIBUTE, g as DocumentViewerV2, f as applyDocumentViewerV2ToolbarStyles, h as createDocumentViewerV2Config };
176
+ export { u as DOCUMENT_VIEWER_V2_DISABLED_CATEGORIES, d as DOCUMENT_VIEWER_V2_TOOLBAR_STYLE_ATTRIBUTE, _ as DocumentViewerV2, p as applyDocumentViewerV2ToolbarStyles, g as createDocumentViewerV2Config };