@ibiz-template/vue3-util 0.7.41-alpha.2 → 0.7.41-alpha.20

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 (121) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/index.system.min.js +1 -1
  3. package/es/common/badge/badge.css +1 -1
  4. package/es/common/control-base/control-base.css +1 -1
  5. package/es/common/control-base/control-base.d.ts +1 -0
  6. package/es/common/control-base/control-base.d.ts.map +1 -1
  7. package/es/common/control-base/control-base.mjs +38 -4
  8. package/es/common/custom-render/custom-render.d.ts.map +1 -1
  9. package/es/common/custom-render/custom-render.mjs +2 -2
  10. package/es/common/index.d.ts +1 -0
  11. package/es/common/index.d.ts.map +1 -1
  12. package/es/common/index.mjs +1 -0
  13. package/es/common/signature-pad/signature-pad.css +1 -0
  14. package/es/common/signature-pad/signature-pad.d.ts +19 -0
  15. package/es/common/signature-pad/signature-pad.d.ts.map +1 -0
  16. package/es/common/signature-pad/signature-pad.mjs +165 -0
  17. package/es/common/signature-pad/util/bezier.d.ts +58 -0
  18. package/es/common/signature-pad/util/bezier.d.ts.map +1 -0
  19. package/es/common/signature-pad/util/bezier.mjs +109 -0
  20. package/es/common/signature-pad/util/point.d.ts +55 -0
  21. package/es/common/signature-pad/util/point.d.ts.map +1 -0
  22. package/es/common/signature-pad/util/point.mjs +51 -0
  23. package/es/common/signature-pad/util/signature_pad.d.ts +593 -0
  24. package/es/common/signature-pad/util/signature_pad.d.ts.map +1 -0
  25. package/es/common/signature-pad/util/signature_pad.mjs +1018 -0
  26. package/es/common/view-shell/view-shell.d.ts +8 -1
  27. package/es/common/view-shell/view-shell.d.ts.map +1 -1
  28. package/es/common/view-shell/view-shell.mjs +13 -2
  29. package/es/control/panel/panel/panel.d.ts.map +1 -1
  30. package/es/control/panel/panel/panel.mjs +12 -1
  31. package/es/control/panel/view-layout-panel/view-layout-panel.d.ts +1 -1
  32. package/es/control/panel/view-layout-panel/view-layout-panel.d.ts.map +1 -1
  33. package/es/control/panel/view-layout-panel/view-layout-panel.mjs +12 -1
  34. package/es/index.mjs +2 -0
  35. package/es/locale/en/index.d.ts +1 -0
  36. package/es/locale/en/index.d.ts.map +1 -1
  37. package/es/locale/en/index.mjs +2 -1
  38. package/es/locale/zh-CN/index.d.ts +1 -0
  39. package/es/locale/zh-CN/index.d.ts.map +1 -1
  40. package/es/locale/zh-CN/index.mjs +2 -1
  41. package/es/panel-component/multi-data-container/multi-data-container.d.ts +1 -1
  42. package/es/panel-component/multi-data-container/multi-data-container.d.ts.map +1 -1
  43. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.d.ts +1 -1
  44. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.d.ts.map +1 -1
  45. package/es/panel-component/nav-pos/nav-pos.controller.d.ts +1 -1
  46. package/es/panel-component/nav-pos/nav-pos.d.ts +1 -1
  47. package/es/panel-component/panel-container/panel-container.d.ts.map +1 -1
  48. package/es/panel-component/panel-container/panel-container.mjs +30 -2
  49. package/es/panel-component/panel-field/panel-field.controller.mjs +1 -1
  50. package/es/panel-component/panel-tab-page/panel-tab-page.d.ts +1 -1
  51. package/es/panel-component/single-data-container/single-data-container.d.ts +1 -1
  52. package/es/panel-component/single-data-container/single-data-container.d.ts.map +1 -1
  53. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts +1 -0
  54. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts.map +1 -1
  55. package/es/panel-component/teleport-placeholder/teleport-placeholder.state.d.ts +1 -1
  56. package/es/panel-component/teleport-placeholder/teleport-placeholder.state.mjs +1 -1
  57. package/es/plugin/plugin-factory/plugin-factory.d.ts +13 -12
  58. package/es/plugin/plugin-factory/plugin-factory.d.ts.map +1 -1
  59. package/es/plugin/plugin-factory/plugin-factory.mjs +24 -18
  60. package/es/use/index.d.ts +1 -0
  61. package/es/use/index.d.ts.map +1 -1
  62. package/es/use/index.mjs +2 -0
  63. package/es/use/storage/index.d.ts +4 -6
  64. package/es/use/storage/index.d.ts.map +1 -1
  65. package/es/use/storage/index.mjs +16 -11
  66. package/es/use/vue-use/computed-async.d.ts +51 -0
  67. package/es/use/vue-use/computed-async.d.ts.map +1 -0
  68. package/es/use/vue-use/computed-async.mjs +66 -0
  69. package/es/use/vue-use/index.d.ts +2 -0
  70. package/es/use/vue-use/index.d.ts.map +1 -0
  71. package/es/use/vue-use/index.mjs +3 -0
  72. package/es/util/install.d.ts.map +1 -1
  73. package/es/util/overlay-container/overlay-container.d.ts +1 -1
  74. package/es/util/overlay-container/overlay-container.d.ts.map +1 -1
  75. package/es/util/overlay-container/overlay-container.mjs +7 -2
  76. package/es/util/overlay-view-util/overlay-view-util.d.ts +2 -2
  77. package/es/util/overlay-view-util/overlay-view-util.d.ts.map +1 -1
  78. package/es/util/overlay-view-util/overlay-view-util.mjs +2 -1
  79. package/es/util/render/render.d.ts.map +1 -1
  80. package/es/util/render/render.mjs +4 -1
  81. package/es/util/route/route.d.ts.map +1 -1
  82. package/es/util/route/route.mjs +18 -3
  83. package/es/view/common/index.d.ts.map +1 -1
  84. package/es/view/common/index.mjs +2 -0
  85. package/es/view/common/view.d.ts.map +1 -1
  86. package/es/view/common/view.mjs +14 -1
  87. package/es/view/md-custom-view/md-custom-view.provider.d.ts +13 -0
  88. package/es/view/md-custom-view/md-custom-view.provider.d.ts.map +1 -0
  89. package/es/view/md-custom-view/md-custom-view.provider.mjs +13 -0
  90. package/lib/common/badge/badge.css +1 -1
  91. package/lib/common/control-base/control-base.cjs +37 -3
  92. package/lib/common/control-base/control-base.css +1 -1
  93. package/lib/common/custom-render/custom-render.cjs +1 -1
  94. package/lib/common/index.cjs +2 -0
  95. package/lib/common/signature-pad/signature-pad.cjs +167 -0
  96. package/lib/common/signature-pad/signature-pad.css +1 -0
  97. package/lib/common/signature-pad/util/bezier.cjs +111 -0
  98. package/lib/common/signature-pad/util/point.cjs +53 -0
  99. package/lib/common/signature-pad/util/signature_pad.cjs +1022 -0
  100. package/lib/common/view-shell/view-shell.cjs +13 -2
  101. package/lib/control/panel/panel/panel.cjs +12 -1
  102. package/lib/control/panel/view-layout-panel/view-layout-panel.cjs +12 -1
  103. package/lib/index.cjs +4 -0
  104. package/lib/locale/en/index.cjs +2 -1
  105. package/lib/locale/zh-CN/index.cjs +2 -1
  106. package/lib/panel-component/panel-container/panel-container.cjs +29 -1
  107. package/lib/panel-component/panel-field/panel-field.controller.cjs +1 -1
  108. package/lib/panel-component/teleport-placeholder/teleport-placeholder.state.cjs +1 -1
  109. package/lib/plugin/plugin-factory/plugin-factory.cjs +24 -18
  110. package/lib/use/index.cjs +3 -0
  111. package/lib/use/storage/index.cjs +16 -11
  112. package/lib/use/vue-use/computed-async.cjs +68 -0
  113. package/lib/use/vue-use/index.cjs +7 -0
  114. package/lib/util/overlay-container/overlay-container.cjs +7 -2
  115. package/lib/util/overlay-view-util/overlay-view-util.cjs +2 -1
  116. package/lib/util/render/render.cjs +4 -1
  117. package/lib/util/route/route.cjs +18 -3
  118. package/lib/view/common/index.cjs +2 -0
  119. package/lib/view/common/view.cjs +13 -0
  120. package/lib/view/md-custom-view/md-custom-view.provider.cjs +15 -0
  121. package/package.json +7 -7
@@ -0,0 +1,167 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var lodashEs = require('lodash-es');
5
+ require('../../use/index.cjs');
6
+ var signature_pad = require('./util/signature_pad.cjs');
7
+ require('./signature-pad.css');
8
+ var namespace = require('../../use/namespace/namespace.cjs');
9
+
10
+ "use strict";
11
+ const IBizSignaturePad = /* @__PURE__ */ vue.defineComponent({
12
+ name: "IBizSignaturePad",
13
+ props: {
14
+ options: {
15
+ type: Object
16
+ }
17
+ },
18
+ setup(props) {
19
+ const ns = namespace.useNamespace("signature-pad");
20
+ const signaturePadRef = vue.ref();
21
+ const canvasRef = vue.ref();
22
+ const signaturePad = vue.ref();
23
+ const getSignatureOptions = () => {
24
+ const _options = {};
25
+ if (props.options) {
26
+ const {
27
+ dotsize,
28
+ minwidth,
29
+ maxwidth,
30
+ pencolor,
31
+ velocityfilterweight,
32
+ compositeoperation,
33
+ mindistance,
34
+ backgroundcolor,
35
+ throttle,
36
+ canvascontextoptions
37
+ } = props.options;
38
+ if (dotsize) {
39
+ Object.assign(_options, {
40
+ dotSize: Number(dotsize)
41
+ });
42
+ }
43
+ if (minwidth) {
44
+ Object.assign(_options, {
45
+ minWidth: Number(minwidth)
46
+ });
47
+ }
48
+ if (maxwidth) {
49
+ Object.assign(_options, {
50
+ maxWidth: Number(maxwidth)
51
+ });
52
+ }
53
+ if (velocityfilterweight) {
54
+ Object.assign(_options, {
55
+ velocityFilterWeight: Number(velocityfilterweight)
56
+ });
57
+ }
58
+ if (mindistance) {
59
+ Object.assign(_options, {
60
+ minDistance: Number(mindistance)
61
+ });
62
+ }
63
+ if (throttle) {
64
+ Object.assign(_options, {
65
+ throttle: Number(throttle)
66
+ });
67
+ }
68
+ if (pencolor) {
69
+ Object.assign(_options, {
70
+ penColor: String(pencolor)
71
+ });
72
+ }
73
+ if (compositeoperation) {
74
+ Object.assign(_options, {
75
+ compositeOperation: String(compositeoperation)
76
+ });
77
+ }
78
+ if (backgroundcolor) {
79
+ Object.assign(_options, {
80
+ backgroundColor: String(backgroundcolor)
81
+ });
82
+ }
83
+ if (canvascontextoptions) {
84
+ let canvasContextOptions = canvascontextoptions;
85
+ if (lodashEs.isString(canvascontextoptions)) {
86
+ try {
87
+ canvasContextOptions = JSON.parse(canvascontextoptions);
88
+ } catch (error) {
89
+ ibiz.log.error(error);
90
+ canvasContextOptions = void 0;
91
+ }
92
+ }
93
+ Object.assign(_options, {
94
+ canvasContextOptions: {
95
+ ...canvasContextOptions
96
+ }
97
+ });
98
+ }
99
+ }
100
+ return _options;
101
+ };
102
+ const preventScroll = (_e) => {
103
+ _e.preventDefault();
104
+ };
105
+ const initSignaturePad = (_callback) => {
106
+ vue.nextTick(() => {
107
+ const canvas = canvasRef.value;
108
+ const signatures = signaturePadRef.value;
109
+ if (!canvas)
110
+ return;
111
+ const dpr = window.devicePixelRatio || 1;
112
+ const rect = signatures.getBoundingClientRect();
113
+ const canvasWidth = rect.width < 300 ? 300 : rect.width;
114
+ const canvasHeight = rect.height < 150 ? 150 : rect.height;
115
+ canvas.width = canvasWidth * dpr;
116
+ canvas.height = canvasHeight * dpr;
117
+ canvas.style.width = "".concat(canvasWidth, "px");
118
+ canvas.style.height = "".concat(canvasHeight, "px");
119
+ signaturePad.value = new signature_pad.default(canvas, {
120
+ ...getSignatureOptions()
121
+ });
122
+ const ctx = canvas.getContext("2d");
123
+ ctx.scale(dpr, dpr);
124
+ canvas.addEventListener("touchstart", preventScroll, {
125
+ passive: false
126
+ });
127
+ canvas.addEventListener("touchmove", preventScroll, {
128
+ passive: false
129
+ });
130
+ _callback == null ? void 0 : _callback();
131
+ });
132
+ };
133
+ const updateSignaturePad = (_callback) => initSignaturePad(_callback);
134
+ const handleResize = () => {
135
+ if (signaturePad.value) {
136
+ signaturePad.value.off();
137
+ updateSignaturePad();
138
+ }
139
+ };
140
+ vue.onMounted(() => {
141
+ initSignaturePad();
142
+ window.addEventListener("resize", handleResize);
143
+ });
144
+ vue.onUnmounted(() => {
145
+ window.removeEventListener("resize", handleResize);
146
+ });
147
+ return {
148
+ ns,
149
+ canvasRef,
150
+ signaturePadRef,
151
+ signaturePad,
152
+ updateSignaturePad
153
+ };
154
+ },
155
+ render() {
156
+ return vue.createVNode("div", {
157
+ "class": this.ns.b(),
158
+ "ref": "signaturePadRef"
159
+ }, [vue.createVNode("div", {
160
+ "class": this.ns.e("container")
161
+ }, [vue.createVNode("canvas", {
162
+ "ref": "canvasRef"
163
+ }, null)])]);
164
+ }
165
+ });
166
+
167
+ exports.IBizSignaturePad = IBizSignaturePad;
@@ -0,0 +1 @@
1
+ .ibiz-signature-pad{width:100%;height:100%}.ibiz-signature-pad__container{width:100%;height:100%;background-color:var(--ibiz-color-bg-1)}
@@ -0,0 +1,111 @@
1
+ 'use strict';
2
+
3
+ var point = require('./point.cjs');
4
+
5
+ "use strict";
6
+ class Bezier {
7
+ /**
8
+ * 贝塞尔曲线构造函数
9
+ * @param startPoint 起始点
10
+ * @param control2 第二个控制点
11
+ * @param control1 第一个控制点
12
+ * @param endPoint 结束点
13
+ * @param startWidth 起始点宽度
14
+ * @param endWidth 结束点宽度
15
+ */
16
+ constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {
17
+ this.startPoint = startPoint;
18
+ this.control2 = control2;
19
+ this.control1 = control1;
20
+ this.endPoint = endPoint;
21
+ this.startWidth = startWidth;
22
+ this.endWidth = endWidth;
23
+ }
24
+ /**
25
+ * 从点数组创建贝塞尔曲线
26
+ * @param points 点数组,至少需要4个点来计算曲线
27
+ * @param widths 包含起点和终点宽度的对象
28
+ * @returns 新创建的贝塞尔曲线实例
29
+ */
30
+ static fromPoints(points, widths) {
31
+ const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;
32
+ const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;
33
+ return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);
34
+ }
35
+ /**
36
+ * 计算贝塞尔曲线的控制点
37
+ * @param s1 第一个点
38
+ * @param s2 第二个点(中间点)
39
+ * @param s3 第三个点
40
+ * @returns 包含两个控制点的对象
41
+ */
42
+ static calculateControlPoints(s1, s2, s3) {
43
+ const dx1 = s1.x - s2.x;
44
+ const dy1 = s1.y - s2.y;
45
+ const dx2 = s2.x - s3.x;
46
+ const dy2 = s2.y - s3.y;
47
+ const m1 = { x: (s1.x + s2.x) / 2, y: (s1.y + s2.y) / 2 };
48
+ const m2 = { x: (s2.x + s3.x) / 2, y: (s2.y + s3.y) / 2 };
49
+ const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);
50
+ const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);
51
+ const dxm = m1.x - m2.x;
52
+ const dym = m1.y - m2.y;
53
+ const k = l1 + l2 === 0 ? 0 : l2 / (l1 + l2);
54
+ const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };
55
+ const tx = s2.x - cm.x;
56
+ const ty = s2.y - cm.y;
57
+ return {
58
+ c1: new point.Point(m1.x + tx, m1.y + ty),
59
+ c2: new point.Point(m2.x + tx, m2.y + ty)
60
+ };
61
+ }
62
+ /**
63
+ * 计算贝塞尔曲线的近似长度
64
+ * @returns 曲线的近似长度
65
+ */
66
+ length() {
67
+ const steps = 10;
68
+ let length = 0;
69
+ let px;
70
+ let py;
71
+ for (let i = 0; i <= steps; i += 1) {
72
+ const t = i / steps;
73
+ const cx = this.point(
74
+ t,
75
+ this.startPoint.x,
76
+ this.control1.x,
77
+ this.control2.x,
78
+ this.endPoint.x
79
+ );
80
+ const cy = this.point(
81
+ t,
82
+ this.startPoint.y,
83
+ this.control1.y,
84
+ this.control2.y,
85
+ this.endPoint.y
86
+ );
87
+ if (i > 0) {
88
+ const xdiff = cx - px;
89
+ const ydiff = cy - py;
90
+ length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);
91
+ }
92
+ px = cx;
93
+ py = cy;
94
+ }
95
+ return length;
96
+ }
97
+ /**
98
+ * 计算三次贝塞尔曲线在参数t处的x或y坐标值
99
+ * @param t 参数t,范围0到1
100
+ * @param start 起始点的坐标值(x或y)
101
+ * @param c1 第一个控制点的坐标值(x或y)
102
+ * @param c2 第二个控制点的坐标值(x或y)
103
+ * @param end 结束点的坐标值(x或y)
104
+ * @returns 计算得到的坐标值
105
+ */
106
+ point(t, start, c1, c2, end) {
107
+ return start * (1 - t) * (1 - t) * (1 - t) + 3 * c1 * (1 - t) * (1 - t) * t + 3 * c2 * (1 - t) * t * t + end * t * t * t;
108
+ }
109
+ }
110
+
111
+ exports.Bezier = Bezier;
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ "use strict";
4
+ class Point {
5
+ /**
6
+ * 构造函数,创建一个Point实例
7
+ * @param x X坐标
8
+ * @param y Y坐标
9
+ * @param pressure 压力值,可选,默认为0
10
+ * @param time 时间戳,可选,默认为当前时间
11
+ * @throws 如果x或y是NaN,抛出错误
12
+ */
13
+ constructor(x, y, pressure, time) {
14
+ if (Number.isNaN(x) || Number.isNaN(y)) {
15
+ throw new Error(
16
+ ibiz.i18n.t("vue3Util.common.invalidPointCoordinates", {
17
+ x,
18
+ y
19
+ })
20
+ );
21
+ }
22
+ this.x = +x;
23
+ this.y = +y;
24
+ this.pressure = pressure || 0;
25
+ this.time = time || Date.now();
26
+ }
27
+ /**
28
+ * 计算当前点到另一个点的直线距离
29
+ * @param start 起始点(另一个点)
30
+ * @returns 两点之间的距离
31
+ */
32
+ distanceTo(start) {
33
+ return Math.sqrt((this.x - start.x) ** 2 + (this.y - start.y) ** 2);
34
+ }
35
+ /**
36
+ * 判断当前点是否与另一个点相等
37
+ * @param other 要比较的另一个点
38
+ * @returns 如果所有属性都相等则返回true,否则返回false
39
+ */
40
+ equals(other) {
41
+ return this.x === other.x && this.y === other.y && this.pressure === other.pressure && this.time === other.time;
42
+ }
43
+ /**
44
+ * 计算从起始点到当前点的移动速度
45
+ * @param start 起始点
46
+ * @returns 速度值(距离/时间),如果时间相同则返回0
47
+ */
48
+ velocityFrom(start) {
49
+ return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 0;
50
+ }
51
+ }
52
+
53
+ exports.Point = Point;