@yimou6/common-ui 1.12.3 → 1.12.4

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 (71) hide show
  1. package/cdn/index.cdn.js +15 -15
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +15 -15
  4. package/cdn/index.cdn.mjs.map +1 -1
  5. package/cdn/index.css +1 -1
  6. package/es/components/image-verification/index.mjs.map +1 -1
  7. package/es/components/index.d.ts +22 -21
  8. package/es/components/index.mjs +1 -0
  9. package/es/components/index.mjs.map +1 -1
  10. package/es/components/monitor-playback/index.d.ts +573 -0
  11. package/es/components/monitor-playback/index.mjs +8 -0
  12. package/es/components/monitor-playback/index.mjs.map +1 -0
  13. package/es/components/monitor-playback/src/monitor-playback.d.ts +30 -0
  14. package/es/components/monitor-playback/src/monitor-playback.mjs +44 -0
  15. package/es/components/monitor-playback/src/monitor-playback.mjs.map +1 -0
  16. package/es/components/monitor-playback/src/monitor-playback.vue.d.ts +573 -0
  17. package/es/components/monitor-playback/src/monitor-playback.vue.mjs +6 -0
  18. package/es/components/monitor-playback/src/monitor-playback.vue.mjs.map +1 -0
  19. package/es/components/monitor-playback/src/monitor-playback.vue2.mjs +202 -0
  20. package/es/components/monitor-playback/src/monitor-playback.vue2.mjs.map +1 -0
  21. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.d.ts +25 -0
  22. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.mjs +26 -0
  23. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.mjs.map +1 -0
  24. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue.d.ts +104 -0
  25. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue.mjs +6 -0
  26. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue.mjs.map +1 -0
  27. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue2.mjs +507 -0
  28. package/es/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue2.mjs.map +1 -0
  29. package/es/components/page-header/src/page-header.d.ts +2 -2
  30. package/es/components/page-header/src/page-header.mjs.map +1 -1
  31. package/es/components/tzj-player/src/easyPlayer.vue2.mjs +2 -10
  32. package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
  33. package/es/index.mjs +1 -0
  34. package/es/index.mjs.map +1 -1
  35. package/es/installer.mjs +2 -0
  36. package/es/installer.mjs.map +1 -1
  37. package/global.d.ts +2 -0
  38. package/lib/components/image-verification/index.js.map +1 -1
  39. package/lib/components/index.d.ts +22 -21
  40. package/lib/components/index.js +23 -21
  41. package/lib/components/index.js.map +1 -1
  42. package/lib/components/monitor-playback/index.d.ts +573 -0
  43. package/lib/components/monitor-playback/index.js +13 -0
  44. package/lib/components/monitor-playback/index.js.map +1 -0
  45. package/lib/components/monitor-playback/src/monitor-playback.d.ts +30 -0
  46. package/lib/components/monitor-playback/src/monitor-playback.js +46 -0
  47. package/lib/components/monitor-playback/src/monitor-playback.js.map +1 -0
  48. package/lib/components/monitor-playback/src/monitor-playback.vue.d.ts +573 -0
  49. package/lib/components/monitor-playback/src/monitor-playback.vue.js +10 -0
  50. package/lib/components/monitor-playback/src/monitor-playback.vue.js.map +1 -0
  51. package/lib/components/monitor-playback/src/monitor-playback.vue2.js +206 -0
  52. package/lib/components/monitor-playback/src/monitor-playback.vue2.js.map +1 -0
  53. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.d.ts +25 -0
  54. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.js +28 -0
  55. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.js.map +1 -0
  56. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue.d.ts +104 -0
  57. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue.js +10 -0
  58. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue.js.map +1 -0
  59. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue2.js +511 -0
  60. package/lib/components/monitor-playback/timeline-ruler/src/timeline-ruler.vue2.js.map +1 -0
  61. package/lib/components/page-header/src/page-header.d.ts +2 -2
  62. package/lib/components/page-header/src/page-header.js.map +1 -1
  63. package/lib/components/tzj-player/src/easyPlayer.vue2.js +2 -10
  64. package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
  65. package/lib/index.js +27 -25
  66. package/lib/index.js.map +1 -1
  67. package/lib/installer.js +6 -4
  68. package/lib/installer.js.map +1 -1
  69. package/package.json +1 -1
  70. package/theme-default/i-monitor-playback.css +1 -0
  71. package/theme-default/index.css +1 -1
@@ -0,0 +1,202 @@
1
+ import { defineComponent, ref, onMounted, onBeforeUnmount, openBlock, createElementBlock, createCommentVNode, createElementVNode, withModifiers, createVNode } from 'vue';
2
+ import '../timeline-ruler/src/timeline-ruler.vue.mjs';
3
+ import { MonitorPlaybackProps } from './monitor-playback.mjs';
4
+ import _sfc_main$1 from '../timeline-ruler/src/timeline-ruler.vue2.mjs';
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ const _hoisted_1 = { class: "replay-page" };
9
+ const _hoisted_2 = { class: "player-wrap" };
10
+ var _sfc_main = /* @__PURE__ */ defineComponent({
11
+ ...{
12
+ name: "IMonitorPlayback"
13
+ },
14
+ __name: "monitor-playback",
15
+ props: MonitorPlaybackProps,
16
+ setup(__props) {
17
+ const props = __props;
18
+ const videoRef = ref(null);
19
+ const timelineRef = ref(null);
20
+ const kbpsInfo = ref("-- KB/s");
21
+ const overlayTimeText = ref("2026-05-02 15:02:17");
22
+ let mpegts = null;
23
+ let player = null;
24
+ const currentUrl = ref(
25
+ props.url || "ws://cms.abaixun.com/websocket/0402b0580060f0df/0000000001.flv?starttime=20260502T150217&duration=3600&uuid=s1vwaoh0rse31rpgars33u1d68384buc"
26
+ );
27
+ let playTimerId = null;
28
+ function pad(n) {
29
+ return String(n).padStart(2, "0");
30
+ }
31
+ __name(pad, "pad");
32
+ function syncStartTimeToUrl(unixSec) {
33
+ const d = new Date(unixSec * 1e3);
34
+ const val = `${pad(d.getFullYear()) + pad(d.getMonth() + 1) + pad(d.getDate())}T${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;
35
+ currentUrl.value = currentUrl.value.replace(
36
+ /starttime=\d{8}T\d{6}/i,
37
+ `starttime=${val}`
38
+ );
39
+ }
40
+ __name(syncStartTimeToUrl, "syncStartTimeToUrl");
41
+ function commitWithTime(sec) {
42
+ syncStartTimeToUrl(sec);
43
+ playStream(currentUrl.value);
44
+ }
45
+ __name(commitWithTime, "commitWithTime");
46
+ function fmtTF(s) {
47
+ const d = new Date(s * 1e3);
48
+ return `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
49
+ }
50
+ __name(fmtTF, "fmtTF");
51
+ function fmtD(s) {
52
+ const d = new Date(s * 1e3);
53
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
54
+ }
55
+ __name(fmtD, "fmtD");
56
+ function parseStartTime(url) {
57
+ const m = url.match(/starttime=(\d{8}T\d{6})/i);
58
+ if (m)
59
+ return new Date(
60
+ m[1].replace(
61
+ /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})/,
62
+ "$1-$2-$3T$4:$5:$6"
63
+ )
64
+ );
65
+ const dm = url.match(/duration=(\d+)/i);
66
+ if (dm) return parseInt(dm[1]);
67
+ return null;
68
+ }
69
+ __name(parseStartTime, "parseStartTime");
70
+ function playStream(url) {
71
+ if (!url) return;
72
+ if (!mpegts || !mpegts.isSupported()) return;
73
+ destroyPlayer();
74
+ const st = parseStartTime(url);
75
+ let dur = 3600;
76
+ const dm = url.match(/duration=(\d+)/i);
77
+ if (dm) dur = parseInt(dm[1]);
78
+ if (st && timelineRef.value) {
79
+ timelineRef.value.initRuler(st, dur);
80
+ }
81
+ player = mpegts.createPlayer(
82
+ { type: "flv", isLive: false, hasAudio: false, url },
83
+ {
84
+ enableStashBuffer: false,
85
+ stashInitialSize: 128,
86
+ lazyLoadMaxDuration: 1800,
87
+ seekType: "range"
88
+ }
89
+ );
90
+ player.attachMediaElement(videoRef.value);
91
+ player.on(mpegts.Events.ERROR, () => {
92
+ });
93
+ player.on(mpegts.Events.LOADING_COMPLETE, () => {
94
+ });
95
+ player.on(mpegts.Events.MEDIA_INFO, (_e) => {
96
+ });
97
+ player.on(mpegts.Events.STATISTICS_INFO, (s) => {
98
+ kbpsInfo.value = `${Math.round(s.speed / 1024)}KB/s`;
99
+ });
100
+ player.load();
101
+ videoRef.value.play().catch(() => {
102
+ });
103
+ }
104
+ __name(playStream, "playStream");
105
+ function destroyPlayer() {
106
+ if (!player) return;
107
+ try {
108
+ player.pause();
109
+ player.unload();
110
+ player.detachMediaElement();
111
+ player.destroy();
112
+ } catch (_e) {
113
+ }
114
+ player = null;
115
+ }
116
+ __name(destroyPlayer, "destroyPlayer");
117
+ function onTimelineSeek(sec) {
118
+ commitWithTime(sec);
119
+ }
120
+ __name(onTimelineSeek, "onTimelineSeek");
121
+ const win = window;
122
+ onMounted(async () => {
123
+ if (typeof window !== "undefined" && !win.mpegts) {
124
+ const script = document.createElement("script");
125
+ script.src = "https://cdn.jsdelivr.net/npm/mpegts.js@1.7.3/dist/mpegts.min.js";
126
+ script.onload = () => {
127
+ mpegts = win.mpegts;
128
+ playStream(currentUrl.value);
129
+ startPlayTimer();
130
+ };
131
+ script.onerror = () => {
132
+ };
133
+ document.head.appendChild(script);
134
+ } else {
135
+ mpegts = win.mpegts;
136
+ playStream(currentUrl.value);
137
+ startPlayTimer();
138
+ }
139
+ });
140
+ function startPlayTimer() {
141
+ playTimerId = setInterval(() => {
142
+ if (!player || !videoRef.value || videoRef.value.paused || !timelineRef.value)
143
+ return;
144
+ const baseMatch = currentUrl.value.match(/starttime=(\d{8}T\d{6})/i);
145
+ if (baseMatch && baseMatch[1]) {
146
+ const base = new Date(
147
+ baseMatch[1].replace(
148
+ /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})/,
149
+ "$1-$2-$3T$4:$5:$6"
150
+ )
151
+ );
152
+ const timeMs = base.getTime() + videoRef.value.currentTime * (videoRef.value.playbackRate || 1) * 1e3;
153
+ timelineRef.value.updateRulerTime(timeMs);
154
+ timelineRef.value.autoFollow();
155
+ overlayTimeText.value = `${fmtD(timeMs / 1e3)} ${fmtTF(timeMs / 1e3)}`;
156
+ }
157
+ }, 250);
158
+ }
159
+ __name(startPlayTimer, "startPlayTimer");
160
+ onBeforeUnmount(() => {
161
+ if (playTimerId) clearInterval(playTimerId);
162
+ destroyPlayer();
163
+ });
164
+ return (_ctx, _cache) => {
165
+ return openBlock(), createElementBlock("div", _hoisted_1, [
166
+ createCommentVNode(" \u64AD\u653E\u5668 "),
167
+ createElementVNode("div", _hoisted_2, [
168
+ createElementVNode(
169
+ "video",
170
+ {
171
+ id: "player",
172
+ ref_key: "videoRef",
173
+ ref: videoRef,
174
+ muted: "",
175
+ controls: "",
176
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {
177
+ }, ["prevent"]))
178
+ },
179
+ null,
180
+ 512
181
+ /* NEED_PATCH */
182
+ )
183
+ ]),
184
+ createCommentVNode(" \u523B\u5EA6\u5C3A\u65F6\u95F4\u8F74 "),
185
+ createVNode(
186
+ _sfc_main$1,
187
+ {
188
+ ref_key: "timelineRef",
189
+ ref: timelineRef,
190
+ onSeek: onTimelineSeek
191
+ },
192
+ null,
193
+ 512
194
+ /* NEED_PATCH */
195
+ )
196
+ ]);
197
+ };
198
+ }
199
+ });
200
+
201
+ export { _sfc_main as default };
202
+ //# sourceMappingURL=monitor-playback.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-playback.vue2.mjs","sources":["../../../../../../../packages/components/monitor-playback/src/monitor-playback.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from \"vue\";\nimport ITimelineRuler from \"../timeline-ruler/src/timeline-ruler.vue\";\nimport { MonitorPlaybackProps } from \"./monitor-playback\";\n\ndefineOptions({\n name: \"IMonitorPlayback\",\n});\n\n// ==================== Props / State ====================\nconst props = defineProps(MonitorPlaybackProps);\n\n// ==================== DOM Refs ====================\nconst videoRef = ref<HTMLVideoElement | null>(null);\nconst timelineRef = ref<InstanceType<typeof ITimelineRuler> | null>(null);\n\n// ==================== UI State ====================\nconst kbpsInfo = ref(\"-- KB/s\");\nconst overlayTimeText = ref(\"2026-05-02 15:02:17\");\n\n// ==================== Player State ====================\nlet mpegts: any = null;\nlet player: any = null;\nconst currentUrl = ref(\n props.url ||\n \"ws://cms.abaixun.com/websocket/0402b0580060f0df/0000000001.flv?starttime=20260502T150217&duration=3600&uuid=s1vwaoh0rse31rpgars33u1d68384buc\",\n);\n\n// Timer ref\nlet playTimerId: ReturnType<typeof setInterval> | null = null;\n\n// ==================== Utils ====================\nfunction pad(n: number) {\n return String(n).padStart(2, \"0\");\n}\n\nfunction syncStartTimeToUrl(unixSec: number) {\n const d = new Date(unixSec * 1000);\n const val = `${\n pad(d.getFullYear()) + pad(d.getMonth() + 1) + pad(d.getDate())\n }T${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;\n currentUrl.value = currentUrl.value.replace(\n /starttime=\\d{8}T\\d{6}/i,\n `starttime=${val}`,\n );\n}\n\nfunction commitWithTime(sec: number) {\n syncStartTimeToUrl(sec);\n playStream(currentUrl.value);\n}\n\nfunction fmtTF(s: number) {\n const d = new Date(s * 1000);\n return `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;\n}\n\nfunction fmtD(s: number) {\n const d = new Date(s * 1000);\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\n// ==================== Player Functions ====================\nfunction parseStartTime(url: string): Date | number | null {\n const m = url.match(/starttime=(\\d{8}T\\d{6})/i);\n if (m)\n return new Date(\n m[1].replace(\n /^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})/,\n \"$1-$2-$3T$4:$5:$6\",\n ),\n );\n const dm = url.match(/duration=(\\d+)/i);\n if (dm) return parseInt(dm[1]);\n return null;\n}\n\nfunction playStream(url: string) {\n if (!url) return;\n if (!mpegts || !mpegts.isSupported()) return;\n\n destroyPlayer();\n\n const st = parseStartTime(url);\n let dur = 3600;\n const dm = url.match(/duration=(\\d+)/i);\n if (dm) dur = parseInt(dm[1]);\n\n if (st && timelineRef.value) {\n timelineRef.value.initRuler(st as Date, dur);\n }\n\n player = mpegts.createPlayer(\n { type: \"flv\", isLive: false, hasAudio: false, url },\n {\n enableStashBuffer: false,\n stashInitialSize: 128,\n lazyLoadMaxDuration: 1800,\n seekType: \"range\",\n },\n );\n player.attachMediaElement(videoRef.value!);\n\n player.on(mpegts.Events.ERROR, () => {});\n player.on(mpegts.Events.LOADING_COMPLETE, () => {});\n player.on(mpegts.Events.MEDIA_INFO, (_e: unknown) => {});\n player.on(mpegts.Events.STATISTICS_INFO, (s: any) => {\n kbpsInfo.value = `${Math.round(s.speed / 1024)}KB/s`;\n });\n\n player.load();\n videoRef.value!.play().catch(() => {});\n}\n\nfunction destroyPlayer() {\n if (!player) return;\n try {\n player.pause();\n player.unload();\n player.detachMediaElement();\n player.destroy();\n } catch (_e) {}\n player = null;\n}\n\n/** 时间轴 seek 跳转 */\nfunction onTimelineSeek(sec: number) {\n commitWithTime(sec);\n}\n\n// ==================== Lifecycle ====================\n// mpegts is loaded dynamically via script tag\nconst win = window as any;\nonMounted(async () => {\n // 加载 mpegts.js\n if (typeof window !== \"undefined\" && !win.mpegts) {\n const script = document.createElement(\"script\");\n script.src =\n \"https://cdn.jsdelivr.net/npm/mpegts.js@1.7.3/dist/mpegts.min.js\";\n script.onload = () => {\n mpegts = win.mpegts;\n playStream(currentUrl.value);\n startPlayTimer();\n };\n script.onerror = () => {};\n document.head.appendChild(script);\n } else {\n mpegts = win.mpegts;\n playStream(currentUrl.value);\n startPlayTimer();\n }\n});\n\n/** 定时同步播放进度到时间轴 */\nfunction startPlayTimer() {\n playTimerId = setInterval(() => {\n if (\n !player ||\n !videoRef.value ||\n videoRef.value.paused ||\n !timelineRef.value\n )\n return;\n const baseMatch = currentUrl.value.match(/starttime=(\\d{8}T\\d{6})/i);\n if (baseMatch && baseMatch[1]) {\n const base = new Date(\n baseMatch[1].replace(\n /^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})/,\n \"$1-$2-$3T$4:$5:$6\",\n ),\n );\n const timeMs =\n base.getTime() +\n videoRef.value!.currentTime *\n (videoRef.value!.playbackRate || 1) *\n 1000;\n timelineRef.value.updateRulerTime(timeMs);\n timelineRef.value.autoFollow();\n\n // 更新叠加时间\n overlayTimeText.value = `${fmtD(timeMs / 1000)} ${fmtTF(timeMs / 1000)}`;\n }\n }, 250);\n}\n\nonBeforeUnmount(() => {\n if (playTimerId) clearInterval(playTimerId);\n destroyPlayer();\n});\n</script>\n\n<template>\n <div class=\"replay-page\">\n <!-- 播放器 -->\n <div class=\"player-wrap\">\n <video id=\"player\" ref=\"videoRef\" muted controls @click.prevent />\n </div>\n\n <!-- 刻度尺时间轴 -->\n <ITimelineRuler ref=\"timelineRef\" @seek=\"onTimelineSeek\" />\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createCommentVNode","_createElementVNode","_createVNode","ITimelineRuler"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ExtractPropTypes } from "vue";
2
+ import type TimelineRuler from "./timeline-ruler.vue";
3
+ export declare const TimelineRulerProps: {
4
+ startTime: {
5
+ type: DateConstructor;
6
+ default: null;
7
+ };
8
+ duration: {
9
+ type: NumberConstructor;
10
+ default: number;
11
+ };
12
+ currentTimeMs: {
13
+ type: NumberConstructor;
14
+ default: null;
15
+ };
16
+ };
17
+ export type TimelineRulerPropsType = ExtractPropTypes<typeof TimelineRulerProps>;
18
+ export type TimelineRulerInstance = InstanceType<typeof TimelineRuler>;
19
+ export interface TickCfg {
20
+ iv: number;
21
+ h: number;
22
+ w: number;
23
+ c: string;
24
+ lbl?: boolean;
25
+ }
@@ -0,0 +1,26 @@
1
+ const TimelineRulerProps = {
2
+ /**
3
+ * 起始时间(Date 对象)
4
+ */
5
+ startTime: {
6
+ type: Date,
7
+ default: null
8
+ },
9
+ /**
10
+ * 持续时长(秒)
11
+ */
12
+ duration: {
13
+ type: Number,
14
+ default: 3600
15
+ },
16
+ /**
17
+ * 当前播放位置(毫秒时间戳),由外部同步
18
+ */
19
+ currentTimeMs: {
20
+ type: Number,
21
+ default: null
22
+ }
23
+ };
24
+
25
+ export { TimelineRulerProps };
26
+ //# sourceMappingURL=timeline-ruler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-ruler.mjs","sources":["../../../../../../../../packages/components/monitor-playback/timeline-ruler/src/timeline-ruler.ts"],"sourcesContent":["import type { ExtractPropTypes } from \"vue\";\n\nimport type TimelineRuler from \"./timeline-ruler.vue\";\n\nexport const TimelineRulerProps = {\n /**\n * 起始时间(Date 对象)\n */\n startTime: {\n type: Date,\n default: null,\n },\n /**\n * 持续时长(秒)\n */\n duration: {\n type: Number,\n default: 3600,\n },\n /**\n * 当前播放位置(毫秒时间戳),由外部同步\n */\n currentTimeMs: {\n type: Number,\n default: null,\n },\n};\n\nexport type TimelineRulerPropsType = ExtractPropTypes<\n typeof TimelineRulerProps\n>;\nexport type TimelineRulerInstance = InstanceType<typeof TimelineRuler>;\n\n/** 刻度配置项 */\nexport interface TickCfg {\n iv: number;\n h: number;\n w: number;\n c: string;\n lbl?: boolean;\n}\n"],"names":[],"mappings":"AAIO,MAAM,kBAAqB,GAAA;AAAA;AAAA;AAAA;AAAA,EAIhC,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,IAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA;AAAA;AAEb;;;;"}
@@ -0,0 +1,104 @@
1
+ import type { TickCfg } from "./timeline-ruler";
2
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
+ startTime: {
4
+ type: DateConstructor;
5
+ default: null;
6
+ };
7
+ duration: {
8
+ type: NumberConstructor;
9
+ default: number;
10
+ };
11
+ currentTimeMs: {
12
+ type: NumberConstructor;
13
+ default: null;
14
+ };
15
+ }>, {
16
+ props: import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
17
+ startTime: {
18
+ type: DateConstructor;
19
+ default: null;
20
+ };
21
+ duration: {
22
+ type: NumberConstructor;
23
+ default: number;
24
+ };
25
+ currentTimeMs: {
26
+ type: NumberConstructor;
27
+ default: null;
28
+ };
29
+ }>> & Readonly<{
30
+ onSeek?: ((...args: any[]) => any) | undefined;
31
+ }> & {}>;
32
+ emit: (event: "seek", ...args: any[]) => void;
33
+ canvasRef: import("vue").Ref<HTMLCanvasElement | null, HTMLCanvasElement | null>;
34
+ rulerAreaRef: import("vue").Ref<HTMLElement | null, HTMLElement | null>;
35
+ recTrackRef: import("vue").Ref<HTMLElement | null, HTMLElement | null>;
36
+ timeBigHtml: import("vue").Ref<string, string>;
37
+ timeDateText: import("vue").Ref<string, string>;
38
+ tipShow: import("vue").Ref<boolean, boolean>;
39
+ tipText: import("vue").Ref<string, string>;
40
+ tipElProxy: Element | null;
41
+ tipStyle: import("vue").Ref<Record<string, string>, Record<string, string>>;
42
+ zoomTagText: import("vue").Ref<string, string>;
43
+ RH: number;
44
+ BASE_Y: number;
45
+ FRIC: number;
46
+ BASE_TIME: number | null;
47
+ pph: number;
48
+ tPph: number;
49
+ offX: number;
50
+ dragging: boolean;
51
+ dragSX: number;
52
+ dragSO: number;
53
+ vel: number;
54
+ lpX: number;
55
+ lpT: number;
56
+ mX: number;
57
+ mIn: boolean;
58
+ _startTime: Date | null;
59
+ _durationSec: number;
60
+ _currentPlayMs: number | null;
61
+ cvs: HTMLCanvasElement | null;
62
+ cx: CanvasRenderingContext2D | null;
63
+ dpr: number;
64
+ rafId: number | null;
65
+ pad: (n: number) => string;
66
+ fmtT: (s: number) => string;
67
+ fmtTF: (s: number) => string;
68
+ fmtD: (s: number) => string;
69
+ dateToSec: (dt: Date) => number;
70
+ t2x: (t: number) => number;
71
+ x2t: (x: number) => number;
72
+ resize: () => void;
73
+ tCfg: () => Record<string, TickCfg>;
74
+ draw: () => void;
75
+ renderRecSegs: (w?: number) => void;
76
+ loop: () => void;
77
+ gx: (e: MouseEvent | TouchEvent) => number;
78
+ onDown: (e: MouseEvent | TouchEvent) => void;
79
+ onMove: (e: MouseEvent | TouchEvent) => void;
80
+ onUp: () => void;
81
+ initRuler: (startTimeDate: Date, durationSeconds?: number) => void;
82
+ updateRulerTime: (timeMs: number) => void;
83
+ autoFollow: () => void;
84
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "seek"[], "seek", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
85
+ startTime: {
86
+ type: DateConstructor;
87
+ default: null;
88
+ };
89
+ duration: {
90
+ type: NumberConstructor;
91
+ default: number;
92
+ };
93
+ currentTimeMs: {
94
+ type: NumberConstructor;
95
+ default: null;
96
+ };
97
+ }>> & Readonly<{
98
+ onSeek?: ((...args: any[]) => any) | undefined;
99
+ }>, {
100
+ duration: number;
101
+ startTime: Date;
102
+ currentTimeMs: number;
103
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
104
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import _sfc_main from './timeline-ruler.vue2.mjs';
2
+
3
+
4
+
5
+ export { _sfc_main as default };
6
+ //# sourceMappingURL=timeline-ruler.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-ruler.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}