├── .gitignore ├── dist ├── favicon.ico ├── fonts │ ├── element-icons.f1a45d74.ttf │ └── element-icons.ff18efd1.woff ├── css │ └── app.22df10af.css └── js │ ├── app.0c429e75.js │ └── app.0c429e75.js.map ├── demo ├── public │ ├── favicon.ico │ └── index.html ├── babel.config.js ├── vue.config.js ├── jsconfig.json ├── src │ ├── main.js │ ├── components │ │ ├── Year.vue │ │ ├── YearMonth.vue │ │ ├── Base.vue │ │ ├── Segment.vue │ │ ├── CustomZoom.vue │ │ ├── Custom.vue │ │ └── MultiSegment.vue │ └── App.vue ├── README.md └── package.json ├── package ├── README.md ├── index.js ├── package.json ├── package-lock.json └── src │ ├── constant.js │ ├── WindowListItem.vue │ └── index.vue ├── .prettierrc ├── copy.js ├── index.html └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /dist/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanglin2/VideoTimeLine/HEAD/dist/favicon.ico -------------------------------------------------------------------------------- /demo/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanglin2/VideoTimeLine/HEAD/demo/public/favicon.ico -------------------------------------------------------------------------------- /package/README.md: -------------------------------------------------------------------------------- 1 | 文档见:[https://github.com/wanglin2/VideoTimeLine](https://github.com/wanglin2/VideoTimeLine) -------------------------------------------------------------------------------- /demo/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | semi: false 2 | singleQuote: true 3 | printWidth: 80 4 | trailingComma: 'none' 5 | arrowParens: 'avoid' -------------------------------------------------------------------------------- /dist/fonts/element-icons.f1a45d74.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanglin2/VideoTimeLine/HEAD/dist/fonts/element-icons.f1a45d74.ttf -------------------------------------------------------------------------------- /dist/fonts/element-icons.ff18efd1.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanglin2/VideoTimeLine/HEAD/dist/fonts/element-icons.ff18efd1.woff -------------------------------------------------------------------------------- /package/index.js: -------------------------------------------------------------------------------- 1 | import src from './src/index.vue'; 2 | 3 | const install = function(Vue) { 4 | Vue.component(src.name, src); 5 | }; 6 | 7 | export default { 8 | install 9 | }; 10 | -------------------------------------------------------------------------------- /demo/vue.config.js: -------------------------------------------------------------------------------- 1 | const { defineConfig } = require('@vue/cli-service') 2 | const isDev = process.env.NODE_ENV === 'development' 3 | module.exports = defineConfig({ 4 | publicPath: isDev ? '' : './dist', 5 | outputDir: '../dist', 6 | transpileDependencies: true, 7 | lintOnSave: false 8 | }) 9 | -------------------------------------------------------------------------------- /copy.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | 4 | const src = path.resolve(__dirname, './dist/index.html') 5 | const dest = path.resolve(__dirname, './index.html') 6 | 7 | if (fs.existsSync(dest)) { 8 | fs.unlinkSync(dest) 9 | } 10 | 11 | if (fs.existsSync(src)) { 12 | fs.copyFileSync(src, dest) 13 | fs.unlinkSync(src) 14 | } -------------------------------------------------------------------------------- /demo/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | "@/*": [ 9 | "src/*" 10 | ] 11 | }, 12 | "lib": [ 13 | "esnext", 14 | "dom", 15 | "dom.iterable", 16 | "scripthost" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /demo/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import VideoTimeline from '@wanglin1994/video-timeline' 4 | import ElementUI from 'element-ui' 5 | import 'element-ui/lib/theme-chalk/index.css' 6 | 7 | Vue.use(VideoTimeline) 8 | Vue.use(ElementUI) 9 | 10 | Vue.config.productionTip = false 11 | 12 | new Vue({ 13 | render: h => h(App), 14 | }).$mount('#app') 15 | -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | # demo 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | demo
-------------------------------------------------------------------------------- /package/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wanglin1994/video-timeline", 3 | "version": "0.1.10", 4 | "description": "一个基于Vue2的时间轴组件,一般用于监控视频的回放。", 5 | "main": "index.js", 6 | "scripts": {}, 7 | "authors": [ 8 | { 9 | "name": "街角小林", 10 | "email": "1013335014@qq.com" 11 | }, 12 | { 13 | "name": "理想青年实验室", 14 | "url": "http://lxqnsys.com/" 15 | } 16 | ], 17 | "license": "MIT", 18 | "repository": { 19 | "type": "git", 20 | "url": "https://github.com/wanglin2/VideoTimeLine" 21 | }, 22 | "dependencies": { 23 | "dayjs": "^1.10.3" 24 | }, 25 | "keywords": [ 26 | "canvas", 27 | "timeline" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /demo/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /package/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wanglin1994/video-timeline", 3 | "version": "0.1.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@wanglin1994/video-timeline", 9 | "version": "0.1.1", 10 | "license": "MIT", 11 | "dependencies": { 12 | "dayjs": "^1.10.3" 13 | } 14 | }, 15 | "node_modules/dayjs": { 16 | "version": "1.11.6", 17 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", 18 | "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" 19 | } 20 | }, 21 | "dependencies": { 22 | "dayjs": { 23 | "version": "1.11.6", 24 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", 25 | "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build && node ../copy.js", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "core-js": "^3.8.3", 12 | "dayjs": "^1.11.6", 13 | "element-ui": "^2.15.10", 14 | "vue": "^2.6.14" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.12.16", 18 | "@babel/eslint-parser": "^7.12.16", 19 | "@vue/cli-plugin-babel": "~5.0.0", 20 | "@vue/cli-plugin-eslint": "~5.0.0", 21 | "@vue/cli-service": "~5.0.0", 22 | "eslint": "^7.32.0", 23 | "eslint-plugin-vue": "^8.0.3", 24 | "less": "^4.1.3", 25 | "less-loader": "^11.1.0", 26 | "vue-template-compiler": "^2.6.14" 27 | }, 28 | "eslintConfig": { 29 | "root": true, 30 | "env": { 31 | "node": true 32 | }, 33 | "extends": [ 34 | "plugin:vue/essential", 35 | "eslint:recommended" 36 | ], 37 | "parserOptions": { 38 | "parser": "@babel/eslint-parser" 39 | }, 40 | "rules": {} 41 | }, 42 | "browserslist": [ 43 | "> 1%", 44 | "last 2 versions", 45 | "not dead" 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /demo/src/components/Year.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 33 | 34 | 41 | -------------------------------------------------------------------------------- /demo/src/components/YearMonth.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 33 | 34 | 41 | -------------------------------------------------------------------------------- /package/src/constant.js: -------------------------------------------------------------------------------- 1 | // 一小时的毫秒数 2 | export const ONE_HOUR_STAMP = 60 * 60 * 1000 3 | // 时间分辨率,即整个时间轴表示的时间范围 4 | export const ZOOM = [0.5, 1, 2, 6, 12, 24, 72, 360, 720, 8760, 87600]// 半小时、1小时、2小时、6小时、12小时、1天、3天、15天、30天、365天、365*10天 5 | // 时间分辨率对应的每格小时数,即最小格代表多少小时 6 | export const ZOOM_HOUR_GRID = [1 / 60, 1 / 60, 2 / 60, 1 / 6, 0.25, 0.5, 1, 4, 4, 720, 7200] 7 | export const MOBILE_ZOOM_HOUR_GRID = [ 8 | 1 / 20, 9 | 1 / 30, 10 | 1 / 20, 11 | 1 / 3, 12 | 0.5, 13 | 2, 14 | 4, 15 | 4, 16 | 4, 17 | 720, 7200 18 | ] 19 | // 时间分辨率对应的时间显示判断条件 20 | export const ZOOM_DATE_SHOW_RULE = [ 21 | () => { // 全部显示 22 | return true 23 | }, 24 | date => { // 每五分钟显示 25 | return date.getMinutes() % 5 === 0 26 | }, 27 | date => { // 每十分钟显示 28 | return date.getMinutes() % 10 === 0 29 | }, 30 | date => { // 整点和半点显示 31 | return date.getMinutes() === 0 || date.getMinutes() === 30 32 | }, 33 | date => { // 整点显示 34 | return date.getMinutes() === 0 35 | }, 36 | date => { // 偶数整点的小时 37 | return date.getHours() % 2 === 0 && date.getMinutes() === 0 38 | }, 39 | date => { // 每三小时小时 40 | return date.getHours() % 3 === 0 && date.getMinutes() === 0 41 | }, 42 | date => { // 每12小时 43 | return date.getHours() % 12 === 0 && date.getMinutes() === 0 44 | }, 45 | date => { // 全不显示 46 | return false 47 | }, 48 | date => { 49 | return true 50 | }, 51 | date => { 52 | return true 53 | } 54 | ] 55 | export const MOBILE_ZOOM_DATE_SHOW_RULE = [ 56 | () => { // 全部显示 57 | return true 58 | }, 59 | date => { // 每五分钟显示 60 | return date.getMinutes() % 5 === 0 61 | }, 62 | date => { // 每十分钟显示 63 | return date.getMinutes() % 10 === 0 64 | }, 65 | date => { // 整点和半点显示 66 | return date.getMinutes() === 0 || date.getMinutes() === 30 67 | }, 68 | date => { // 偶数整点的小时 69 | return date.getHours() % 2 === 0 && date.getMinutes() === 0 70 | }, 71 | date => { // 偶数整点的小时 72 | return date.getHours() % 4 === 0 && date.getMinutes() === 0 73 | }, 74 | date => { // 每三小时小时 75 | return date.getHours() % 3 === 0 && date.getMinutes() === 0 76 | }, 77 | date => { // 每12小时 78 | return date.getHours() % 12 === 0 && date.getMinutes() === 0 79 | }, 80 | date => { // 全不显示 81 | return false 82 | }, 83 | date => { 84 | return true 85 | }, 86 | date => { 87 | return true 88 | } 89 | ] -------------------------------------------------------------------------------- /demo/src/App.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 75 | 76 | 100 | -------------------------------------------------------------------------------- /demo/src/components/Base.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 70 | 71 | -------------------------------------------------------------------------------- /dist/css/app.22df10af.css: -------------------------------------------------------------------------------- 1 | .container[data-v-41b27e10]{width:1200px;height:100%;margin:0 auto;display:flex;position:relative;justify-content:center;flex-direction:column}.container .timeLine[data-v-41b27e10]{height:50px}.btns[data-v-41b27e10],.timeShow[data-v-41b27e10]{margin:10px 0;display:flex;justify-content:center}.timeShow[data-v-41b27e10]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.container[data-v-4951fd2c]{width:1200px;height:100%;margin:0 auto;display:flex;position:relative;justify-content:center;flex-direction:column}.container .timeLine4[data-v-4951fd2c]{height:200px}.timeShow[data-v-4951fd2c]{margin:10px 0;display:flex;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.icon[data-v-4951fd2c]{position:fixed;font-size:30px}.container[data-v-0f18e806]{width:1200px;height:100%;margin:0 auto;display:flex;position:relative;justify-content:center;flex-direction:column}.container .timeline3[data-v-0f18e806]{height:200px}.timeShow[data-v-0f18e806]{margin:10px 0;display:flex;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.container[data-v-45a3b121]{width:1200px;height:100%;margin:0 auto;display:flex;position:relative;justify-content:center;flex-direction:column}.container .timeLine[data-v-45a3b121]{height:50px}.timeShow[data-v-45a3b121]{margin:10px 0;display:flex;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.container[data-v-1a36b017],.container[data-v-3aed7087]{width:1200px;height:100px;margin:0 auto}.container[data-v-f7bac5fc]{width:1200px;height:100%;margin:0 auto;display:flex;position:relative;justify-content:center;flex-direction:column}.container .timeLine[data-v-f7bac5fc]{height:50px}.btns[data-v-f7bac5fc],.timeShow[data-v-f7bac5fc]{margin:10px 0;display:flex;justify-content:center}.timeShow[data-v-f7bac5fc]{-webkit-user-select:none;-moz-user-select:none;user-select:none}*{margin:0;padding:0;box-sizing:border-box}#app,body,html{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column}.box{width:100%;height:300px;margin-top:20px}.windowListItem[data-v-5d855ac8]{width:100%;height:30px;position:relative;border-bottom:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.windowListItem.active[data-v-5d855ac8]{background-color:#000}.windowListItem .order[data-v-5d855ac8]{position:absolute;width:30px;height:30px;display:flex;justify-content:center;align-items:center;color:#fff;border-right:1px solid #999}.timeLineContainer[data-v-35dbafe4]{width:100%;height:100%;cursor:pointer;display:flex;flex-direction:column}.timeLineContainer .canvas[data-v-35dbafe4]{flex-grow:0;flex-shrink:0}.timeLineContainer .windowList[data-v-35dbafe4]{width:100%;height:100%;overflow:auto;overflow-x:hidden;border-top:1px solid #999;display:flex;flex-direction:column}.timeLineContainer .windowList[data-v-35dbafe4]::-webkit-scrollbar{display:none} -------------------------------------------------------------------------------- /demo/src/components/Segment.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 74 | 75 | -------------------------------------------------------------------------------- /demo/src/components/CustomZoom.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 87 | 88 | 116 | -------------------------------------------------------------------------------- /demo/src/components/Custom.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 88 | 89 | -------------------------------------------------------------------------------- /demo/src/components/MultiSegment.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 119 | 120 | -------------------------------------------------------------------------------- /package/src/WindowListItem.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 172 | 173 | 197 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 一个基于Vue2的时间轴组件,一般用于监控视频的回放。 2 | 3 | # 文章 4 | 5 | [手摸手带你实现一个时间轴组件](https://juejin.cn/post/7157917487953084429) 6 | 7 | # 本地开发 8 | 9 | ```bash 10 | git clone https://github.com/wanglin2/VideoTimeLine.git 11 | cd package 12 | npm i 13 | npm link 14 | cd .. 15 | cd demo 16 | npm i 17 | npm link @wanglin1994/video-timeline 18 | npm run serve 19 | ``` 20 | 21 | # 安装 22 | 23 | ```bash 24 | npm i @wanglin1994/video-timeline 25 | ``` 26 | 27 | > 注意:源码未打包直接发布,有需要请自行配置打包文件。 28 | 29 | # 引入 30 | 31 | ```js 32 | import VideoTimeline from '@wanglin1994/video-timeline' 33 | Vue.use(VideoTimeline) 34 | ``` 35 | 36 | # 基础用法 37 | 38 | ```vue 39 | 65 | 66 | 114 | 115 | 142 | ``` 143 | 144 | # 显示时间段 145 | 146 | ```vue 147 | 161 | 162 | 214 | 215 | 236 | ``` 237 | 238 | # 多个时间轴 239 | 240 | 当超过一个播放窗口时可以显示多个时间轴。 241 | 242 | ```vue 243 | 259 | 260 | 363 | 364 | 385 | ``` 386 | 387 | # 显示自定义元素 388 | 389 | 有时候会想在时间轴上显示一些自定义的东西,比如某个时间段显示一张图片之类的,这可以通过监听某个时间点的位置来实现。 390 | 391 | ```vue 392 | 402 | 403 | 475 | 476 | 502 | ``` 503 | 504 | # API 505 | 506 | ## 属性 507 | 508 | | 参数 | 说明 | 类型 | 可选值 | 默认值 | 509 | | ----- | ---------------------------------- | ------ | ------ | ------ | 510 | | initTime | 初始时间,中点所在的时间,默认为当天0点。可以传递数字类型的时间戳或字符串类型的时间,如:2020-12-19 18:30:00 | Number/String | — | | 511 | | timeRange | 中间刻度所允许显示的时间范围,即当前时间的限定范围,对象类型,字段见表1-1 | Object | — | | 512 | | initZoomIndex | 初始的时间分辨率,数字索引,时间分辨率数组为:['半小时', '1小时', '2小时', '6小时', '12小时', '1天', '3天', '15天', '30天', '365天', '3650天'] | Number | — | 5 | 513 | | showCenterLine | 是否显示中间的竖线 | Boolean | — | true | 514 | | centerLineStyle | 中间竖线的样式,对象类型,字段见表1-2 | Object | — | | 515 | | textColor | 日期时间文字的颜色 | String | — | rgba(151,158,167,1) | 516 | | hoverTextColor | 鼠标滑过显示的时间文字颜色 | String | — | rgb(194, 202, 215) | 517 | | lineColor | 时间刻度的颜色 | String | — | rgba(151,158,167,1) | 518 | | lineHeightRatio | 时间刻度高度占时间轴高度的比例,对象格式,字段见表1-3 | Object | — | | 519 | | showHoverTime | 鼠标滑过时是否显示实时所在的时间 | Boolean | — | true | 520 | | timeSegments | 要显示的时间颜色段,对象数组类型,对象字段见表1-4 | Array | — | [] | 521 | | backgroundColor | 时间轴背景颜色 | String | — | #262626 | 522 | | enableZoom | 是否允许鼠标滚动切换时间分辨率 | Boolean | — | true | 523 | | enableDrag | 是否允许拖动 | Boolean | — | true | 524 | | windowList | 播放窗口列表,播放窗口数量大于1的话可以配置此项,会显示和窗口对应数量的时间轴,只有一个窗口的话请直接使用基本时间轴,对象数组类型,对象字段见表1-5 | Array | — | [] | 525 | | baseTimeLineHeight | 当显示windowList时的基础时间轴高度 | Number | — | 50 | 526 | | initSelectWindowTimeLineIndex | 初始选中的窗口时间轴索引 | Number | — | -1 | 527 | | maxClickDistance(v0.1.2+) | 鼠标按下和松开的距离小于该值认为是点击事件 | Number | — | 3 | 528 | | roundWidthTimeSegments(v0.1.6+) | 绘制时间段时对计算出来的坐标进行四舍五入,可以防止相连的时间段绘制出来有间隔的问题 | Boolean | — | true | 529 | | customShowTime(v0.1.7+) | 自定义显示哪些时间,详细请阅读下方【属性详解1-1】 | Function | — | | 530 | | hoverTimeFormat(v0.1.9+) | 格式化鼠标滑过时间,函数类型,接收一个`time`参数,代表当前鼠标所在的时间戳,函数需要返回一个格式化后的时间字符串,默认显示的时间格式为`YYYY-MM-DD HH:mm:ss` | Function | — | | 531 | | showDateAtZero(v0.1.9+) | `0`点处是否显示日期,时间轴上默认`0`点处显示的日期,需要显示成时间,那么就需要设为`false`,然后通过`formatTime`属性自定义格式化 | Boolean | — | true | 532 | | formatTime(v0.1.9+) | 格式化时间轴显示时间,默认规则是`年`模式`YYYY`、`年月`模式`YYYY-MM`、`0`点`MM-DD`、其他`HH:mm`,如果想自定义,比如`0`点还是显示时间,不显示日期,就可以通过该函数进行格式化。如果该函数返回值为空值,那么还会走内部规则。 | Function | — | | 533 | | extendZOOM(v0.1.9+) | 扩展ZOOM列表,详细请参考下方【属性详解1-2】 | Array | — | [] | 534 | 535 | ### 属性详解1-1 customShowTime的用法 536 | 537 | > 该属性在v0.1.7+版本开始支持 538 | 539 | 当你在使用本组件的时候可能会遇到一个很常见的问题,比如容器的宽度很小,然后时间段展示的又是几天、甚至半个月的时间,那么很容易遇到时间段里面时间都挤在一起的问题,比如这个[issue](https://github.com/wanglin2/VideoTimeLine/issues/3),其实组件内部是内置了一些判断方法,比如在`3天`的时间分辨率下,对应的`initZoomIndex=6`,对应关系可参考上方属性表格,那么就会使用`3天`的这个判断规则,如下: 540 | 541 | ```js 542 | date => { // 每三小时显示 543 | return date.getHours() % 3 === 0 && date.getMinutes() === 0 544 | } 545 | ``` 546 | 547 | 意思是显示`3`的倍数的整点小时,那么当你容器宽度不够,且时间分辨率设置的比较大,那么时间就会挤在一起看不清,这时候你就可以通过`customShowTime`属性传入自定义的判断方法,这个方法接收两个参数: 548 | 549 | - `date`:是否要显示的时间,可以根据该时间进行判断是否要显示这个时间 550 | - `currentZoomIndex`:当前的时间分辨率,比如`3天`对应的就是`6`,对应关系可参考上方属性表格 551 | 552 | 那么如果内置的规则不满足的话,就可以自定义,比如`3天`的时间分辨率下我想只显示`12`倍数的小时,可以这么做: 553 | 554 | ```html 555 | 556 | ``` 557 | 558 | ```js 559 | export default { 560 | methods: { 561 | customShowTime(date, zoomIndex) { 562 | if (zoomIndex === 6) { 563 | return date.getHours() % 12 === 0 && date.getMinutes() === 0 564 | } 565 | } 566 | } 567 | } 568 | ``` 569 | 570 | 函数返回值需要注意一下,如果要显示返回`true`,如果不显示返回`false`,如果不处理,仍旧交给内部规则,返回其他值。 571 | 572 | 573 | 574 | ### 属性详解1-2 extendZOOM的用法 575 | 576 | 该属性用于扩展`ZOOM`列表,即时间分辨率,内置了`11`个时间分辨率,可以参考上方表格`initZoomIndex`属性,如果内置的时间分辨率满足不了你,那么可以通过该属性进行扩展。 577 | 578 | `extendZOOM`为数组类型,数组的每一项为: 579 | 580 | ```js 581 | { 582 | zoom: 26, // 时间分辨率,整个时间轴表示的时间范围,单位:小时 583 | zoomHourGrid: 0.5, //时间分辨率对应的每格小时数,即时间轴上最小格代表多少小时 584 | mobileZoomHourGrid: 2, // 手机模式下时间分辨率对应的每格小时数,如果不用适配手机端,可以不用设置 585 | } 586 | ``` 587 | 588 | 这个数组的数据会追加到内部的`ZOOM`数组,对应的`zoomIndex`往后累加即可,内部一共有`11`个`zoom`,那么你追加了一项,对应的`zoomIndex`为11,因为是从零开始计数。 589 | 590 | 同时你需要传递`customShowTime`属性来自定义控制时间显示,否则会报错,因为内置的规则只有`11`个。 591 | 592 | 接下来看一个案例。 593 | 594 | > 只显示当天的时间, 从00:00:00到23:59:59,详细请看这个[issue](https://github.com/wanglin2/VideoTimeLine/issues/6) 595 | 596 | 首先默认的`initZoomIndex`为`5`,即`1`天,刚好满足,不用修改,然后将`enableZoom`设为`false`,不允许修改时间分辨率;将`enableDrag`设为`false`,不允许拖拽; 然后再将`initTime`设为当天的`12:00:00`,那么刚好整个时间轴显示的就是当前的时间,到这里,似乎就可以了。但是实际上会存在一些问题,如前面的`issue`中所示。 597 | 598 | 问题1:`0`点处显示的是日期,需要改成时间 599 | 600 | 很简单,将`showDateAtZero`设为`false`,`0`点就不会显示日期了 601 | 602 | 问题2:鼠标滑过显示的还是带日期的,这个好办,通过`hoverTimeFormat`属性自定义格式化规则即可: 603 | 604 | ```js 605 | hoverTimeFormat(time) { 606 | // 小于今天,大于今天的时间不显示 607 | if ( 608 | dayjs(time).isBefore(dayjs().format('YYYY-MM-DD 00:00:00')) || 609 | dayjs(time).isAfter(dayjs().format('YYYY-MM-DD 23:59:59')) 610 | ) { 611 | return '' 612 | } 613 | return dayjs(time).format('HH:mm:ss') 614 | } 615 | ``` 616 | 617 | 问题3:左右两侧的时间显示不出来 618 | 619 | 即`0`点和`24`点的时间刚好是两端,因实现原理问题,无法显示,怎么办呢,其实很简单,假如时间轴表示的时间范围为`25`小时,那么左右两端不就会各多出半小时的时间吗,这个空间足够显示时间了,但是内部的时间分辨率没有`25`小时的,这时就需要扩展时间分辨率了: 620 | 621 | ```js 622 | extendZOOM: [ 623 | { 624 | zoom: 25, 625 | zoomHourGrid: 0.5 626 | } 627 | ] 628 | ``` 629 | 630 | 扩展了`extendZOOM`,`customShowTime`不能少,否则会报错: 631 | 632 | ```js 633 | customShowTime(date, zoomIndex) { 634 | // 当zoomIndex等于11,也就是等于我们开展的zoom时才自己处理 635 | if (zoomIndex === 11) { 636 | // 时间是2的倍数时才会显示 637 | return date.getHours() % 2 === 0 && date.getMinutes() === 0 638 | } 639 | } 640 | ``` 641 | 642 | 到这里,你还会发现一个问题,`24`点实际上是下一天的`0`点,所以显示的是`00:00`,这样可能不符合我们的需求,这时我们可以通过`formatTime`来格式化时间轴上的时间显示,判断是下一天的`0`点,那么就改成`24:00`: 643 | 644 | ```js 645 | formatTime(time) { 646 | // 下一天的00:00显示24:00 647 | if (time.isAfter(dayjs().format('YYYY-MM-DD 23:59:59'))) { 648 | return '24:00' 649 | } 650 | if ( 651 | time.hour() === 0 && 652 | time.minute() === 0 && 653 | time.millisecond() === 0 654 | ) { 655 | return time.format('HH:mm') 656 | } 657 | } 658 | ``` 659 | 660 | 完整代码请参考:[CustomZoom.vue](https://github.com/wanglin2/VideoTimeLine/blob/main/demo/src/components/CustomZoom.vue)。 661 | 662 | 663 | 664 | ### 表1-1 timeRange对象的字段格式 665 | 666 | | 字段名 | 说明 | 类型 | 可选值 | 默认值 | 667 | | ----- | ---------------------------------- | ------ | ------ | ------ | 668 | | start | 允许显示的最小时间,可以传递数字类型的时间戳或字符串类型的时间,如:2020-12-19 18:30:00 | Number/String | — | | 669 | | end | 允许显示的最大时间,可以传递数字类型的时间戳或字符串类型的时间,如:2020-12-19 18:30:00 | Number/String | — | | 670 | 671 | ### 表1-2 centerLineStyle对象的字段格式 672 | 673 | | 字段名 | 说明 | 类型 | 可选值 | 默认值 | 674 | | ----- | ---------------------------------- | ------ | ------ | ------ | 675 | | width | 线的宽度,单位px | Number | — | 2 | 676 | | color | 线的颜色 | String | — | #fff | 677 | 678 | ### 表1-3 lineHeightRatio对象的字段格式 679 | 680 | | 字段名 | 说明 | 类型 | 可选值 | 默认值 | 681 | | ----- | ---------------------------------- | ------ | ------ | ------ | 682 | | date | 0点时的日期线段高度 | Number | — | 0.3 | 683 | | time | 显示时间的线段高度 | Number | — | 0.2 | 684 | | none | 不显示时间的线段高度 | Number | — | 0.1 | 685 | | hover | 鼠标滑过时显示的时间段高度 | Number | — | 0.3 | 686 | 687 | ### 表1-4 timeSegments数组的对象元素的字段格式 688 | 689 | | 字段名 | 说明 | 类型 | 可选值 | 默认值 | 690 | | ----- | ---------------------------------- | ------ | ------ | ------ | 691 | | beginTime | 起始时间戳,必填 | Number | — | | 692 | | endTime | 结束时间戳,必填 | Number | — | | 693 | | color | 颜色,必填 | String | — | | 694 | | startRatio | 高度的起始比例,即top=时间轴高度*startRatio | Number | — | 0.6 | 695 | | endRatio | 高度的结束比例,即bottom=时间轴高度*endRatio | Number | — | 0.9 | 696 | 697 | > 从v0.1.8+版本开始,时间段可以只传一个beginTime,绘制一根宽度为1px的线段 698 | 699 | ### 表1-5 windowList数组的对象元素的字段格式 700 | 701 | | 字段名 | 说明 | 类型 | 可选值 | 默认值 | 702 | | ----- | ---------------------------------- | ------ | ------ | ------ | 703 | | timeSegments | 要显示的时间段,对象数组,对象字段见表1-4 | Array | — | [] | 704 | 可以添加你需要的其他任意字段 705 | 706 | ## 事件 707 | 708 | | 事件 | 说明 | 回调函数参数 | 709 | | ----- | ---------------------------------- | ------ | 710 | | timeChange | 当前时间切换事件 | currentTime(当前时间,时间戳格式) | 711 | | dragTimeChange | 拖动时间条结束后的事件 | currentTime(当前时间,时间戳格式) | 712 | | mousedown | 鼠标按下事件 | e(事件对象) | 713 | | mouseup | 鼠标松开事件 | e(事件对象) | 714 | | click_timeSegments | 点击到了基础时间轴里的时间段时触发 | timeSegments(点击到的时间段,数组类型)、time(v0.1.10+,点击位置对应的时间戳)、 date(v0.1.10+,点击位置对应的日期时间字符串)、 x(v0.1.10+,点击位置相对时间轴左侧的距离) | 715 | | click_window_timeSegments | 点击到了窗口时间轴里的时间段时触发 | timeSegments(点击到的时间段,数组类型)、index(时间轴索引)、item(时间轴数据) | 716 | | change_window_time_line | 点击窗口时间轴进行切换选中时触发 | index(时间轴索引)、item(时间轴数据) | 717 | | click_timeline(v0.1.2+) | 时间轴的点击事件 | time(点击位置对应的时间戳)、 date(点击位置对应的日期时间字符串)、 x(点击位置相对时间轴左侧的距离) | 718 | 719 | ## 方法 720 | 721 | | 方法名 | 说明 | 参数 | 722 | | ----- | ---------------------------------- | ------ | 723 | | updateWatchTime | 手动更新观察的时间位置,比如页面滚动后时间轴的整体位置变化了需要调用,如果没有显示自定义元素时无需调用 | | 724 | | reRender | 重新渲染 | | 725 | | setTime | 设置当前时间 | t(数字类型的时间戳或字符串类型的时间,如:2020-12-19 18:30:00) | 726 | | setZoom | 设置分辨率 | index(分辨率索引) | 727 | | watchTime | 设置要观察的时间点,会返回该时间点的实时位置,可以根据该位置来设置一些自定义元素的位置,位置为相对于浏览器可视窗口的位置 | time(要观察的时间,数字类型的时间戳或字符串类型的时间,如:2020-12-19 18:30:00), callback(时间点位置变化时会调用,回调参数为x水平位置、y重置位置,单位px), windowTimeLineIndex(如果自定义元素是要显示到某个窗口时间轴里的话,可以通过该参数来指定第几个时间轴,数字索引,从1开始) | 728 | | onResize | 如果时间轴所在的容器尺寸变化了需要调用该方法来适应 | | 729 | -------------------------------------------------------------------------------- /dist/js/app.0c429e75.js: -------------------------------------------------------------------------------- 1 | (function(){"use strict";var t={5030:function(t,e,i){var n=i(6369),s=function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"app"}},[e("el-radio-group",{attrs:{size:"small"},model:{value:t.activeComp,callback:function(e){t.activeComp=e},expression:"activeComp"}},t._l(t.list,(function(i){return e("el-radio-button",{attrs:{label:i.value}},[t._v(t._s(i.name))])})),1),e("div",{staticClass:"box"},[e(t.activeComp,{tag:"component"})],1),t._m(0)],1)},o=[function(){var t=this,e=t._self._c;return e("div",[e("a",{attrs:{href:"https://github.com/wanglin2/VideoTimeLine/tree/main/demo/src/components"}},[t._v("demo源码")])])}],a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("div",{staticClass:"timeShow"},[t._v("当前时间:"+t._s(t.showTime))]),e("div",{staticClass:"timeLine"},[e("TimeLine",{ref:"Timeline",on:{timeChange:t.timeChange}})],1),e("div",{staticClass:"btns"},[e("el-button",{attrs:{type:"primary"},on:{click:t.reRender}},[t._v("重新渲染")]),e("el-button",{attrs:{type:"primary"},on:{click:t.jump}},[t._v("跳转到2021-01-01零点")]),e("el-select",{staticStyle:{width:"100px",margin:"0 10px"},attrs:{placeholder:"请选择"},on:{change:t.zoomChange},model:{value:t.zoom,callback:function(e){t.zoom=e},expression:"zoom"}},t._l(t.zoomList,(function(t){return e("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})})),1)],1)])},m=[],r=i(5743),h=i.n(r),l={data(){return{time:Date.now(),zoom:5,zoomList:["半小时","1小时","2小时","6小时","12小时","1天","3天","15天","30天","1年","10年"].map(((t,e)=>({label:t,value:e}))),timer:null}},computed:{showTime(){return h()(this.time).format("YYYY-MM-DD HH:mm:ss")}},mounted(){this.timer=setInterval((()=>{this.time+=1e3,this.$refs.Timeline.setTime(this.time)}),1e3)},beforeDestroy(){clearTimeout(this.timer)},methods:{timeChange(t){this.time=t},reRender(){this.initZoomIndex=8,this.$refs.Timeline.reRender()},jump(){this.$refs.Timeline.setTime("2021-01-01 00:00:00")},zoomChange(t){this.$refs.Timeline.setZoom(t)}}},c=l,d=i(1001),u=(0,d.Z)(c,a,m,!1,null,"41b27e10",null),g=u.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("div",{staticClass:"timeShow"},[t._v("当前时间:"+t._s(t.showTime4))]),e("div",{staticClass:"timeLine4"},[e("TimeLine",{ref:"Timeline4",attrs:{initTime:t.time4,windowList:t.windowList4},on:{timeChange:t.timeChange4}})],1),e("i",{ref:"flagIcon",staticClass:"icon el-icon-s-flag",staticStyle:{color:"#E72528"}}),e("i",{ref:"carIcon",staticClass:"icon el-icon-bicycle",staticStyle:{color:"#2196F3"}})])},T=[],f={data(){return{time4:"2021-01-02 00:00:00",windowList4:[{name:"窗口1"},{name:"窗口2"},{name:"窗口3"},{name:"窗口4"},{name:"窗口5"},{name:"窗口6"}],timer:null}},computed:{showTime4(){return h()(this.time4).format("YYYY-MM-DD HH:mm:ss")}},mounted(){this.timer=setInterval((()=>{this.time4+=1e3,this.$refs.Timeline4.setTime(this.time4)}),1e3),window.addEventListener("scroll",(()=>{this.$refs.Timeline4.updateWatchTime()})),this.$refs.Timeline4.watchTime("2021-01-01 23:30:00",((t,e)=>{-1===t||-1===e?this.$refs.flagIcon.style.display="none":(this.$refs.flagIcon.style.display="block",this.$refs.flagIcon.style.left=t+"px",this.$refs.flagIcon.style.top=e+24+"px")})),this.$refs.Timeline4.watchTime("2021-01-02 02:30:00",((t,e)=>{-1===t||-1===e?this.$refs.carIcon.style.display="none":(this.$refs.carIcon.style.display="block",this.$refs.carIcon.style.left=t+"px",this.$refs.carIcon.style.top=e+"px")}),2)},beforeDestroy(){clearTimeout(this.timer)},methods:{timeChange4(t){this.time4=t}}},p=f,v=(0,d.Z)(p,w,T,!1,null,"4951fd2c",null),C=v.exports,M=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("div",{staticClass:"timeShow"},[t._v("当前时间:"+t._s(t.showTime3))]),e("div",{staticClass:"timeline3"},[e("TimeLine",{ref:"Timeline3",attrs:{initTime:t.time3,timeSegments:t.timeSegments3,windowList:t.windowList},on:{timeChange:t.timeChange3,click_timeSegments:t.click_timeSegments3,click_window_timeSegments:t.click_window_timeSegments}})],1)])},S=[],b={data(){return{time3:"2021-01-15 00:00:00",timeSegments3:[{name:"时间段1",beginTime:new Date("2021-01-13 10:00:00").getTime(),endTime:new Date("2021-01-14 23:00:00").getTime(),color:"#FA3239",startRatio:.65,endRatio:.9},{name:"时间段2",beginTime:new Date("2021-01-15 02:00:00").getTime(),endTime:new Date("2021-01-15 18:00:00").getTime(),color:"#836ABB",startRatio:.65,endRatio:.9}],windowList:[{name:"窗口1",timeSegments:[{name:"窗口1的时间段1",beginTime:new Date("2021-01-13 10:00:00").getTime(),endTime:new Date("2021-01-14 23:00:00").getTime(),color:"#FA3239",startRatio:.1,endRatio:.9},{name:"窗口1的时间段2",beginTime:new Date("2021-01-12 18:00:00").getTime(),endTime:new Date("2021-01-13 00:00:00").getTime(),color:"#00AEFF",startRatio:.1,endRatio:.9}]},{name:"窗口2",timeSegments:[{name:"窗口2的时间段1",beginTime:new Date("2021-01-15 02:00:00").getTime(),endTime:new Date("2021-01-15 18:00:00").getTime(),color:"#FFCC00",startRatio:.1,endRatio:.9}]},{name:"窗口3"},{name:"窗口4"},{name:"窗口5"},{name:"窗口6"}],timer:null}},computed:{showTime3(){return h()(this.time3).format("YYYY-MM-DD HH:mm:ss")}},mounted(){this.timer=setInterval((()=>{this.time3+=1e3,this.$refs.Timeline3.setTime(this.time3)}),1e3)},beforeDestroy(){clearTimeout(this.timer)},methods:{timeChange3(t){this.time3=t},click_timeSegments3(t){alert("点击了:"+t[0].name)},click_window_timeSegments(t,e,i){alert("点击了窗口时间轴的时间段:"+t[0].name)}}},x=b,y=(0,d.Z)(x,M,S,!1,null,"0f18e806",null),L=y.exports,R=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("div",{staticClass:"timeShow"},[t._v("当前时间:"+t._s(t.showTime2))]),e("div",{staticClass:"timeLine"},[e("TimeLine",{ref:"Timeline2",attrs:{initTime:t.time2,timeSegments:t.timeSegments},on:{timeChange:t.timeChange2,click_timeSegments:t.click_timeSegments,click_timeline:t.onClickTimeLine,dragTimeChange:t.onDragTimeChange}})],1)])},_=[],D={data(){return{time2:"2021-01-15 00:00:00",timeSegments:[{name:"时间段1",beginTime:new Date("2021-01-13 10:00:00").getTime(),endTime:new Date("2021-01-14 23:00:00").getTime(),color:"#FA3239",startRatio:.65,endRatio:.9},{name:"时间段2",beginTime:new Date("2021-01-15 02:00:00").getTime(),endTime:new Date("2021-01-15 18:00:00").getTime(),color:"#836ABB",startRatio:.65,endRatio:.9}],timer:null}},computed:{showTime2(){return h()(this.time2).format("YYYY-MM-DD HH:mm:ss")}},mounted(){this.timer=setInterval((()=>{this.time2+=1e3,this.$refs.Timeline2.setTime(this.time2)}),1e3)},beforeDestroy(){clearTimeout(this.timer)},methods:{timeChange2(t){this.time2=t},click_timeSegments(t,...e){console.log("onClickTimeSegments",t,e),alert("点击了:"+t[0].name)},onClickTimeLine(...t){console.log("onClickTimeLine",t)},onDragTimeChange(...t){console.log("onDragTimeChange",t)}}},I=D,Y=(0,d.Z)(I,R,_,!1,null,"45a3b121",null),k=Y.exports,Z=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("TimeLine",{ref:"Timeline",attrs:{enableZoom:!1,initZoomIndex:10,timeSegments:t.timeSegments}})],1)},$=[],H={data(){return{timeSegments:[{name:"时间段1",beginTime:new Date("2021-01-13 10:00:00").getTime(),endTime:new Date("2025-01-14 23:00:00").getTime(),color:"#FA3239",startRatio:.65,endRatio:.9},{name:"时间段2",beginTime:new Date("2008-01-01 00:00:00").getTime(),endTime:new Date("2021-01-15 18:00:00").getTime(),color:"#836ABB",startRatio:.65,endRatio:.9}]}}},O=H,A=(0,d.Z)(O,Z,$,!1,null,"1a36b017",null),B=A.exports,W=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("TimeLine",{ref:"Timeline",attrs:{enableZoom:!1,initZoomIndex:9,timeSegments:t.timeSegments}})],1)},P=[],E={data(){return{timeSegments:[{name:"时间段1",beginTime:new Date("2021-01-13 10:00:00").getTime(),endTime:new Date("2025-01-14 23:00:00").getTime(),color:"#FA3239",startRatio:.65,endRatio:.9},{name:"时间段2",beginTime:new Date("2008-01-01 00:00:00").getTime(),endTime:new Date("2021-01-15 18:00:00").getTime(),color:"#836ABB",startRatio:.65,endRatio:.9}]}}},F=E,z=(0,d.Z)(F,W,P,!1,null,"3aed7087",null),j=z.exports,X=function(){var t=this,e=t._self._c;return e("div",{staticClass:"container"},[e("div",{staticClass:"timeShow"},[t._v("当前时间:"+t._s(t.showTime))]),e("div",{ref:"timeLine",staticClass:"timeLine"},[e("TimeLine",{ref:"Timeline",attrs:{enableZoom:!1,enableDrag:!1,showDateAtZero:!1,initZoomIndex:11,initTime:t.initTime,customShowTime:t.customShowTime,extendZOOM:t.extendZOOM,formatTime:t.formatTime,hoverTimeFormat:t.hoverTimeFormat},on:{click_timeline:t.click_timeline}})],1)])},N=[],G={data(){return{time:Date.now(),initTime:h()().format("YYYY-MM-DD 12:00:00").valueOf(),extendZOOM:[{zoom:25,zoomHourGrid:.5}]}},computed:{showTime(){return h()(this.time).format("YYYY-MM-DD HH:mm:ss")}},mounted(){console.log(this.$refs.timeLine.getBoundingClientRect())},methods:{click_timeline(t,e){this.time=t},formatTime(t){return t.isAfter(h()().format("YYYY-MM-DD 23:59:59"))?"24:00":0===t.hour()&&0===t.minute()&&0===t.millisecond()?t.format("HH:mm"):void 0},hoverTimeFormat(t){return h()(t).isBefore(h()().format("YYYY-MM-DD 00:00:00"))||h()(t).isAfter(h()().format("YYYY-MM-DD 23:59:59"))?"":h()(t).format("HH:mm:ss")},customShowTime(t,e){if(11===e)return t.getHours()%2===0&&0===t.getMinutes()}}},U=G,V=(0,d.Z)(U,X,N,!1,null,"f7bac5fc",null),q=V.exports,J={name:"App",components:{Custom:C,Base:g,MultiSegment:L,Segment:k,Year:B,YearMonth:j,CustomZoom:q},data(){return{activeComp:"Base",list:[{name:"基础用法",value:"Base"},{name:"显示时间段",value:"Segment"},{name:"多个时间轴",value:"MultiSegment"},{name:"显示自定义元素",value:"Custom"},{name:"显示到年",value:"Year"},{name:"显示到年月",value:"YearMonth"},{name:"自定义时间分辨率",value:"CustomZoom"}]}},methods:{change(t){this.activeComp=t}}},K=J,Q=(0,d.Z)(K,s,o,!1,null,null,null),tt=Q.exports,et=function(){var t=this,e=t._self._c;return e("div",{ref:"timeLineContainer",staticClass:"timeLineContainer",style:{backgroundColor:t.backgroundColor},on:{touchstart:t.onTouchstart,touchmove:t.onTouchmove,mousedown:t.onMousedown,mouseout:t.onMouseout,mousemove:t.onMousemove,mouseleave:t.onMouseleave}},[e("canvas",{ref:"canvas",staticClass:"canvas",on:{mousewheel:function(e){return e.stopPropagation(),e.preventDefault(),t.onMouseweel.apply(null,arguments)}}}),t.showWindowList&&t.windowList&&t.windowList.length>1?e("div",{ref:"windowList",staticClass:"windowList",on:{scroll:t.onWindowListScroll}},t._l(t.windowListInner,(function(i,n){return e("WindowListItem",{key:n,ref:"WindowListItem",refInFor:!0,attrs:{index:n,data:i,totalMS:t.totalMS,startTimestamp:t.startTimestamp,width:t.width,active:i.active},on:{click_window_timeSegments:t.triggerClickWindowTimeSegments,click:function(e){return t.toggleActive(n)}}})})),1):t._e()])},it=[],nt=(i(8496),i(7085)),st=i.n(nt),ot=function(){var t=this,e=t._self._c;return e("div",{ref:"windowListItem",staticClass:"windowListItem",class:{active:t.active},on:{click:t.onClick}},[e("span",{staticClass:"order"},[t._v(t._s(t.index+1))]),e("canvas",{ref:"canvas",staticClass:"windowListItemCanvas"})])},at=[],mt={name:"WindowListItem",props:{index:{type:Number},data:{type:Object,default(){return{}}},totalMS:{type:Number},startTimestamp:{type:Number},width:{type:Number},active:{type:Boolean,default:!1}},data(){return{height:0,ctx:null}},mounted(){this.init(),this.drawTimeSegments()},methods:{init(){let{height:t}=this.$refs.windowListItem.getBoundingClientRect();this.height=t-1,this.$refs.canvas.width=this.width,this.$refs.canvas.height=this.height,this.ctx=this.$refs.canvas.getContext("2d")},drawTimeSegments(t,e){if(!this.data.timeSegments||this.data.timeSegments.length<=0)return;const i=this.width/this.totalMS;this.data.timeSegments.forEach((n=>{if(n.beginTime<=this.startTimestamp+this.totalMS&&n.endTime>=this.startTimestamp){this.ctx.beginPath();let s,o=(n.beginTime-this.startTimestamp)*i;o<0?(o=0,s=(n.endTime-this.startTimestamp)*i):s=(n.endTime-n.beginTime)*i;let a=void 0===n.startRatio?.6:n.startRatio,m=void 0===n.endRatio?.9:n.endRatio;e?this.ctx.rect(o,this.height*a,s,this.height*(m-a)):(this.ctx.fillStyle=n.color,this.ctx.fillRect(o,this.height*a,s,this.height*(m-a))),t&&t(n)}}))},clearCanvas(){this.ctx.clearRect(0,0,this.width,this.height)},draw(){this.$nextTick((()=>{this.clearCanvas(),this.drawTimeSegments()}))},onClick(t){this.$emit("click",t);let{left:e,top:i}=this.$refs.windowListItem.getBoundingClientRect(),n=t.clientX-e,s=t.clientY-i,o=this.getClickTimeSegments(n,s);o.length>0&&this.$emit("click_window_timeSegments",o,this.index,this.data)},getClickTimeSegments(t,e){if(!this.data.timeSegments||this.data.timeSegments.length<=0)return[];let i=[];return this.drawTimeSegments((n=>{this.ctx.isPointInPath(t,e)&&i.push(n)}),!0),i},getRect(){return this.$refs.windowListItem?this.$refs.windowListItem.getBoundingClientRect():null}}},rt=mt,ht=(0,d.Z)(rt,ot,at,!1,null,"5d855ac8",null),lt=ht.exports;const ct=36e5,dt=[.5,1,2,6,12,24,72,360,720,8760,87600],ut=[1/60,1/60,2/60,1/6,.25,.5,1,4,4,720,7200],gt=[.05,1/30,.05,1/3,.5,2,4,4,4,720,7200],wt=[()=>!0,t=>t.getMinutes()%5===0,t=>t.getMinutes()%10===0,t=>0===t.getMinutes()||30===t.getMinutes(),t=>0===t.getMinutes(),t=>t.getHours()%2===0&&0===t.getMinutes(),t=>t.getHours()%3===0&&0===t.getMinutes(),t=>t.getHours()%12===0&&0===t.getMinutes(),t=>!1,t=>!0,t=>!0],Tt=[()=>!0,t=>t.getMinutes()%5===0,t=>t.getMinutes()%10===0,t=>0===t.getMinutes()||30===t.getMinutes(),t=>t.getHours()%2===0&&0===t.getMinutes(),t=>t.getHours()%4===0&&0===t.getMinutes(),t=>t.getHours()%3===0&&0===t.getMinutes(),t=>t.getHours()%12===0&&0===t.getMinutes(),t=>!1,t=>!0,t=>!0];var ft={name:"TimeLine",components:{WindowListItem:lt},props:{initTime:{type:[Number,String],default:""},timeRange:{type:Object,default(){return{}}},initZoomIndex:{type:Number,default:5},showCenterLine:{type:Boolean,default:!0},centerLineStyle:{type:Object,default(){return{width:2,color:"#fff"}}},textColor:{type:String,default:"rgba(151,158,167,1)"},hoverTextColor:{type:String,default:"rgb(194, 202, 215)"},lineColor:{type:String,default:"rgba(151,158,167,1)"},lineHeightRatio:{type:Object,default(){return{date:.3,time:.2,none:.1,hover:.3}}},showHoverTime:{type:Boolean,default:!0},hoverTimeFormat:{type:Function},timeSegments:{type:Array,default:()=>[]},backgroundColor:{type:String,default:"#262626"},enableZoom:{type:Boolean,default:!0},enableDrag:{type:Boolean,default:!0},windowList:{type:Array,default(){return[]}},baseTimeLineHeight:{type:Number,default:50},initSelectWindowTimeLineIndex:{type:Number,default:-1},isMobile:{type:Boolean,default:!1},maxClickDistance:{type:Number,default:3},roundWidthTimeSegments:{type:Boolean,default:!0},customShowTime:{type:Function},showDateAtZero:{type:Boolean,default:!0},extendZOOM:{type:Array,default(){return[]}},formatTime:{type:Function}},data(){return{width:0,height:0,ctx:null,currentZoomIndex:0,currentTime:0,startTimestamp:0,mousedown:!1,mousedownX:0,mousedownY:0,mousedownCacheStartTimestamp:0,showWindowList:!1,windowListInner:[],mousemoveX:-1,watchTimeList:[]}},computed:{totalMS(){return dt[this.currentZoomIndex]*ct},timeRangeTimestamp(){let t={};return this.timeRange.start&&(t.start="number"===typeof this.timeRange.start?this.timeRange.start:new Date(this.timeRange.start).getTime()),this.timeRange.end&&(t.end="number"===typeof this.timeRange.end?this.timeRange.end:new Date(this.timeRange.end).getTime()),t},ACT_ZOOM_HOUR_GRID(){return this.isMobile?gt:ut},ACT_ZOOM_DATE_SHOW_RULE(){return this.isMobile?Tt:wt},yearMonthMode(){return 9===this.currentZoomIndex},yearMode(){return 10===this.currentZoomIndex}},watch:{timeSegments:{deep:!0,handler:"reRender"}},created(){this.extendZOOM.forEach((t=>{dt.push(t.zoom),ut.push(t.zoomHourGrid),gt.push(t.mobileZoomHourGrid)}))},mounted(){this.setInitData(),this.init(),this.draw(),this.onMouseup=this.onMouseup.bind(this),this.onResize=this.onResize.bind(this),this.onTouchend=this.onTouchend.bind(this),this.isMobile?window.addEventListener("touchend",this.onTouchend):window.addEventListener("mouseup",this.onMouseup),window.addEventListener("resize",this.onResize)},beforeDestroy(){this.isMobile?window.removeEventListener("touchend",this.onTouchend):window.removeEventListener("mouseup",this.onMouseup),window.removeEventListener("resize",this.onResize)},methods:{setInitData(){this.windowListInner=this.windowList.map(((t,e)=>({...t,active:this.initSelectWindowTimeLineIndex===e}))),this.currentZoomIndex=this.initZoomIndex>=0&&this.initZoomIndexthis.timeRangeTimestamp.end&&(this.startTimestamp=this.timeRangeTimestamp.end-t)},init(){let{width:t,height:e}=this.$refs.timeLineContainer.getBoundingClientRect();this.width=t,this.height=this.windowList.length>1?this.baseTimeLineHeight:e,this.$refs.canvas.width=this.width,this.$refs.canvas.height=this.height,this.ctx=this.$refs.canvas.getContext("2d"),this.showWindowList=!0},draw(){this.drawTimeSegments(),this.addGraduations(),this.drawMiddleLine(),this.currentTime=this.startTimestamp+this.totalMS/2,this.$emit("timeChange",this.currentTime);try{this.$refs.WindowListItem.forEach((t=>{t.draw()}))}catch(t){}this.updateWatchTime()},updateWatchTime(){this.watchTimeList.forEach((t=>{if(t.timethis.startTimestamp+this.totalMS)t.callback(-1,-1);else{let e=(t.time-this.startTimestamp)*(this.width/this.totalMS),i=0,{left:n,top:s}=this.$refs.canvas.getBoundingClientRect();if(-1!==t.windowTimeLineIndex&&this.windowList.length>1&&t.windowTimeLineIndex>=0&&t.windowTimeLineIndex{if(n.beginTime<=this.startTimestamp+this.totalMS){let s=n.endTime>=this.startTimestamp;this.ctx.beginPath();let o,a=(n.beginTime-this.startTimestamp)*i;a<0?(a=0,o=s?(n.endTime-this.startTimestamp)*i:1):o=s?(n.endTime-n.beginTime)*i:1;let m=void 0===n.startRatio?.6:n.startRatio,r=void 0===n.endRatio?.9:n.endRatio;this.roundWidthTimeSegments&&(a=Math.round(a),o=Math.round(o)),o=Math.max(1,o),e?this.ctx.rect(a,this.height*m,o,this.height*(r-m)):(this.ctx.fillStyle=n.color,this.ctx.fillRect(a,this.height*m,o,this.height*(r-m))),t&&t(n)}}))},onTouchstart(t){this.isMobile&&(t=t.touches[0],this.onPointerdown(t))},onMousedown(t){this.isMobile||this.onPointerdown(t)},onPointerdown(t){let e=this.getClientOffset(t);this.mousedownX=e[0],this.mousedownY=e[1],this.mousedown=!0,this.mousedownCacheStartTimestamp=this.startTimestamp,this.$emit("mousedown",t)},onTouchend(t){this.isMobile&&(t=t.touches[0],this.onPointerup(t))},onMouseup(t){this.isMobile||this.onPointerup(t)},onPointerup(t){let e=this.getClientOffset(t);const i=()=>{this.mousedown=!1,this.mousedownX=0,this.mousedownY=0,this.mousedownCacheStartTimestamp=0};if(Math.abs(e[0]-this.mousedownX)<=this.maxClickDistance&&Math.abs(e[1]-this.mousedownY)<=this.maxClickDistance)return i(),void this.onClick(...e);this.mousedown&&this.enableDrag?(i(),this.$emit("dragTimeChange",this.currentTime)):i(),this.$emit("mouseup",t)},onTouchmove(t){this.isMobile&&(t=t.touches[0],this.onPointermove(t))},onMousemove(t){this.isMobile||this.onPointermove(t)},onPointermove(t){let e=this.getClientOffset(t)[0];this.mousemoveX=e,this.mousedown&&this.enableDrag?this.drag(e):this.showHoverTime&&this.hoverShow(e)},onMouseleave(){this.mousemoveX=-1},drag(t){if(!this.enableDrag)return;const e=this.width/this.totalMS;let i=t-this.mousedownX,n=this.totalMS/2,s=this.mousedownCacheStartTimestamp-Math.round(i/e),o=s+n;this.timeRangeTimestamp.start&&othis.timeRangeTimestamp.end&&(s=this.timeRangeTimestamp.end-n),this.startTimestamp=s,this.clearCanvas(this.width,this.height),this.draw()},hoverShow(t,e){const i=this.width/this.totalMS;let n=this.startTimestamp+t/i;e||(this.clearCanvas(this.width,this.height),this.draw());let s=this.height*(void 0===this.lineHeightRatio.hover?.3:this.lineHeightRatio.hover);this.drawLine(t,0,t,s,1,this.lineColor),this.ctx.fillStyle=this.hoverTextColor;let o=this.hoverTimeFormat?this.hoverTimeFormat(n):st()(n).format("YYYY-MM-DD HH:mm:ss"),a=this.ctx.measureText(o).width;this.ctx.fillText(o,t-a/2,s+20)},onMouseout(){this.clearCanvas(this.width,this.height),this.draw()},onMouseweel(t){if(!this.enableZoom)return;let e=window.event||t,i=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail));i<0?this.currentZoomIndex+1>=dt.length-1?this.currentZoomIndex=dt.length-1:this.currentZoomIndex++:i>0&&(this.currentZoomIndex-1<=0?this.currentZoomIndex=0:this.currentZoomIndex--),this.clearCanvas(this.width,this.height),this.startTimestamp=this.currentTime-this.totalMS/2,this.draw()},onClick(t,e){const i=this.width/this.totalMS;let n=this.startTimestamp+t/i,s=st()(n).format("YYYY-MM-DD HH:mm:ss"),o=this.getClickTimeSegments(t,e);o&&o.length>0?this.$emit("click_timeSegments",o,n,s,t):this.onCanvasClick(n,s,t)},getClickTimeSegments(t,e){let i=[];return this.drawTimeSegments((n=>{this.ctx.isPointInPath(t,e)&&i.push(n)}),!0),i},getClientOffset(t){if(!this.$refs.timeLineContainer||!t)return[0,0];let{left:e,top:i}=this.$refs.timeLineContainer.getBoundingClientRect();return[t.clientX-e,t.clientY-i]},clearCanvas(t,e){this.ctx.clearRect(0,0,t,e)},graduationTitle(t){let e=st()(t),i="";return this.formatTime&&(i=this.formatTime(e)),i||(this.yearMode?e.format("YYYY"):this.yearMonthMode?e.format("YYYY-MM"):0===e.hour()&&0===e.minute()&&0===e.millisecond()?e.format("MM-DD"):e.format("HH:mm"))},drawLine(t,e,i,n,s=1,o="#fff"){this.ctx.beginPath(),this.ctx.strokeStyle=o,this.ctx.lineWidth=s,this.ctx.moveTo(t,e),this.ctx.lineTo(i,n),this.ctx.stroke()},reRender(){this.$nextTick((()=>{this.clearCanvas(this.width,this.height),this.reset(),this.setInitData(),this.init(),this.draw()}))},reset(){this.width=0,this.height=0,this.ctx=null,this.currentZoomIndex=0,this.currentTime=0,this.startTimestamp=0,this.mousedown=!1,this.mousedownX=0,this.mousedownCacheStartTimestamp=0},setTime(t){if(this.mousedown)return;let e="number"===typeof t?t:new Date(t).getTime();this.startTimestamp=e-this.totalMS/2,this.fixStartTimestamp(),this.clearCanvas(this.width,this.height),this.draw(),-1===this.mousemoveX||this.isMobile||this.hoverShow(this.mousemoveX,!0)},triggerClickWindowTimeSegments(t,e,i){this.$emit("click_window_timeSegments",t,e,i)},setZoom(t){this.currentZoomIndex=t>=0&&t{t.active=!1})),this.windowListInner[t].active=!0,this.$emit("change_window_time_line",t,this.windowListInner[t])},watchTime(t,e,i){t&&e&&this.watchTimeList.push({time:"number"===typeof t?t:new Date(t).getTime(),callback:e,windowTimeLineIndex:"number"===typeof i?i-1:-1})},onWindowListScroll(){this.updateWatchTime()},onResize(){this.init(),this.draw();try{this.$refs.WindowListItem.forEach((t=>{t.init()}))}catch(t){}},onCanvasClick(...t){this.$emit("click_timeline",...t)}}},pt=ft,vt=(0,d.Z)(pt,et,it,!1,null,"35dbafe4",null),Ct=vt.exports;const Mt=function(t){t.component(Ct.name,Ct)};var St={install:Mt},bt=i(8499),xt=i.n(bt);n["default"].use(St),n["default"].use(xt()),n["default"].config.productionTip=!1,new n["default"]({render:t=>t(tt)}).$mount("#app")}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,i),o.exports}i.m=t,function(){var t=[];i.O=function(e,n,s,o){if(!n){var a=1/0;for(l=0;l=o)&&Object.keys(i.O).every((function(t){return i.O[t](n[r])}))?n.splice(r--,1):(m=!1,o0&&t[l-1][2]>o;l--)t[l]=t[l-1];t[l]=[n,s,o]}}(),function(){i.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return i.d(e,{a:e}),e}}(),function(){i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})}}(),function(){i.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){i.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}}(),function(){var t={143:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var s,o,a=n[0],m=n[1],r=n[2],h=0;if(a.some((function(e){return 0!==t[e]}))){for(s in m)i.o(m,s)&&(i.m[s]=m[s]);if(r)var l=r(i)}for(e&&e(n);h 2 |
15 | 20 |
26 | 39 |
40 |
41 | 42 | 43 | 1020 | 1021 | 1049 | -------------------------------------------------------------------------------- /dist/js/app.0c429e75.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"js/app.0c429e75.js","mappings":"mEAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,QAAQ,CAACF,EAAG,iBAAiB,CAACE,MAAM,CAAC,KAAO,SAASC,MAAM,CAACC,MAAON,EAAIO,WAAYC,SAAS,SAAUC,GAAMT,EAAIO,WAAWE,CAAG,EAAEC,WAAW,eAAeV,EAAIW,GAAIX,EAAIY,MAAM,SAASC,GAAM,OAAOX,EAAG,kBAAkB,CAACE,MAAM,CAAC,MAAQS,EAAKP,QAAQ,CAACN,EAAIc,GAAGd,EAAIe,GAAGF,EAAKG,QAAQ,IAAG,GAAGd,EAAG,MAAM,CAACe,YAAY,OAAO,CAACf,EAAGF,EAAIO,WAAW,CAACW,IAAI,eAAe,GAAGlB,EAAImB,GAAG,IAAI,EACjc,EACIC,EAAkB,CAAC,WAAY,IAAIpB,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,IAAI,CAACE,MAAM,CAAC,KAAO,4EAA4E,CAACJ,EAAIc,GAAG,aAC3L,GCHIf,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,MAAM,CAACe,YAAY,YAAY,CAACjB,EAAIc,GAAG,QAAQd,EAAIe,GAAGf,EAAIqB,aAAanB,EAAG,MAAM,CAACe,YAAY,YAAY,CAACf,EAAG,WAAW,CAACoB,IAAI,WAAWC,GAAG,CAAC,WAAavB,EAAIwB,eAAe,GAAGtB,EAAG,MAAM,CAACe,YAAY,QAAQ,CAACf,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAWmB,GAAG,CAAC,MAAQvB,EAAIyB,WAAW,CAACzB,EAAIc,GAAG,UAAUZ,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAWmB,GAAG,CAAC,MAAQvB,EAAI0B,OAAO,CAAC1B,EAAIc,GAAG,qBAAqBZ,EAAG,YAAY,CAACyB,YAAY,CAAC,MAAQ,QAAQ,OAAS,UAAUvB,MAAM,CAAC,YAAc,OAAOmB,GAAG,CAAC,OAASvB,EAAI4B,YAAYvB,MAAM,CAACC,MAAON,EAAI6B,KAAMrB,SAAS,SAAUC,GAAMT,EAAI6B,KAAKpB,CAAG,EAAEC,WAAW,SAASV,EAAIW,GAAIX,EAAI8B,UAAU,SAASjB,GAAM,OAAOX,EAAG,YAAY,CAAC6B,IAAIlB,EAAKP,MAAMF,MAAM,CAAC,MAAQS,EAAKmB,MAAM,MAAQnB,EAAKP,QAAQ,IAAG,IAAI,IACxzB,EACIc,EAAkB,G,mBCkBtB,GACAa,OACA,OAEAC,KAAAA,KAAAA,MACAL,KAAAA,EACAC,SAAAA,CAAAA,MAAAA,MAAAA,MAAAA,MAAAA,OAAAA,KAAAA,KAAAA,MAAAA,MAAAA,KAAAA,OAAAA,KAAAA,CAAAA,EAAAA,KACA,CACAE,MAAAA,EACA1B,MAAAA,MAGA6B,MAAAA,KAEA,EACAC,SAAAA,CAEAf,WACA,mDACA,GAEAgB,UAEA,6BACA,eACA,yCACA,IACA,EACAC,gBACAC,aAAAA,KAAAA,MACA,EACAC,QAAAA,CAEAhB,WAAAA,GACA,WACA,EACAC,WACA,qBACA,8BACA,EACAC,OACA,kDACA,EACAE,WAAAA,GACA,8BACA,ICjE4T,I,UCQxTa,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAeA,EAAiB,QCnB5B1C,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,MAAM,CAACe,YAAY,YAAY,CAACjB,EAAIc,GAAG,QAAQd,EAAIe,GAAGf,EAAI0C,cAAcxC,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,WAAW,CAACoB,IAAI,YAAYlB,MAAM,CAAC,SAAWJ,EAAI2C,MAAM,WAAa3C,EAAI4C,aAAarB,GAAG,CAAC,WAAavB,EAAI6C,gBAAgB,GAAG3C,EAAG,IAAI,CAACoB,IAAI,WAAWL,YAAY,sBAAsBU,YAAY,CAAC,MAAQ,aAAazB,EAAG,IAAI,CAACoB,IAAI,UAAUL,YAAY,uBAAuBU,YAAY,CAAC,MAAQ,cAChgB,EACIP,EAAkB,GCYtB,GACAa,OACA,OAEAU,MAAAA,sBACAC,YAAAA,CACA,CACA5B,KAAAA,OAEA,CACAA,KAAAA,OAEA,CACAA,KAAAA,OAEA,CACAA,KAAAA,OAEA,CACAA,KAAAA,OAEA,CACAA,KAAAA,QAGAmB,MAAAA,KAEA,EACAC,SAAAA,CAEAM,YACA,oDACA,GAEAL,UAEA,6BACA,gBACA,2CACA,KACAS,OAAAA,iBAAAA,UAAAA,KACA,0CAEA,+DACA,cACA,0CAEA,0CACA,sCACA,wCACA,IAEA,+DACA,cACA,yCAEA,yCACA,qCACA,oCACA,GACA,EACA,EACAR,gBACAC,aAAAA,KAAAA,MACA,EACAC,QAAAA,CAEAK,YAAAA,GACA,YACA,ICnF8T,ICQ1T,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QCnB5B9C,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,MAAM,CAACe,YAAY,YAAY,CAACjB,EAAIc,GAAG,QAAQd,EAAIe,GAAGf,EAAI+C,cAAc7C,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,WAAW,CAACoB,IAAI,YAAYlB,MAAM,CAAC,SAAWJ,EAAIgD,MAAM,aAAehD,EAAIiD,cAAc,WAAajD,EAAIkD,YAAY3B,GAAG,CAAC,WAAavB,EAAImD,YAAY,mBAAqBnD,EAAIoD,oBAAoB,0BAA4BpD,EAAIqD,8BAA8B,IAC3d,EACIjC,EAAkB,GCYtB,GACAa,OACA,OAEAe,MAAAA,sBACAC,cAAAA,CACA,CACAjC,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,IAEA,CACA1C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,KAGAR,WAAAA,CACA,CACAlC,KAAAA,MACA2C,aAAAA,CACA,CACA3C,KAAAA,WACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,GACAC,SAAAA,IAEA,CACA1C,KAAAA,WACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,GACAC,SAAAA,MAIA,CACA1C,KAAAA,MACA2C,aAAAA,CACA,CACA3C,KAAAA,WACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,GACAC,SAAAA,MAIA,CACA1C,KAAAA,OAEA,CACAA,KAAAA,OAEA,CACAA,KAAAA,OAEA,CACAA,KAAAA,QAGAmB,MAAAA,KAEA,EACAC,SAAAA,CAEAW,YACA,oDACA,GAEAV,UAEA,6BACA,gBACA,2CACA,IACA,EACAC,gBACAC,aAAAA,KAAAA,MACA,EACAC,QAAAA,CAEAW,YAAAA,GACA,YACA,EACAC,oBAAAA,GACAQ,MAAAA,OAAAA,EAAAA,GAAAA,KACA,EACAP,0BAAAA,EAAAA,EAAAA,GACAO,MAAAA,gBAAAA,EAAAA,GAAAA,KACA,IClHoU,ICQhU,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QCnB5B7D,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,MAAM,CAACe,YAAY,YAAY,CAACjB,EAAIc,GAAG,QAAQd,EAAIe,GAAGf,EAAI6D,cAAc3D,EAAG,MAAM,CAACe,YAAY,YAAY,CAACf,EAAG,WAAW,CAACoB,IAAI,YAAYlB,MAAM,CAAC,SAAWJ,EAAI8D,MAAM,aAAe9D,EAAI2D,cAAcpC,GAAG,CAAC,WAAavB,EAAI+D,YAAY,mBAAqB/D,EAAIgE,mBAAmB,eAAiBhE,EAAIiE,gBAAgB,eAAiBjE,EAAIkE,qBAAqB,IAC7c,EACI9C,EAAkB,GCWtB,GACAa,OACA,OAEA6B,MAAAA,sBACAH,aAAAA,CACA,CACA3C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,IAEA,CACA1C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,KAGAvB,MAAAA,KAEA,EACAC,SAAAA,CAEAyB,YACA,oDACA,GAEAxB,UAEA,6BACA,gBACA,2CACA,IACA,EACAC,gBACAC,aAAAA,KAAAA,MACA,EACAC,QAAAA,CAEAuB,YAAAA,GACA,YACA,EACAC,mBAAAA,KAAAA,GACAG,QAAAA,IAAAA,sBAAAA,EAAAA,GACAP,MAAAA,OAAAA,EAAAA,GAAAA,KACA,EACAK,mBAAAA,GACAE,QAAAA,IAAAA,kBAAAA,EACA,EACAD,oBAAAA,GACAC,QAAAA,IAAAA,mBAAAA,EACA,ICrE+T,ICQ3T,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QCnB5BpE,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,WAAW,CAACoB,IAAI,WAAWlB,MAAM,CAAC,YAAa,EAAM,cAAgB,GAAG,aAAeJ,EAAI2D,iBAAiB,EACtN,EACIvC,EAAkB,GCKtB,GACAa,OACA,OACA0B,aAAAA,CACA,CACA3C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,IAEA,CACA1C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,KAIA,GC7B4T,ICQxT,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QCnB5B3D,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,WAAW,CAACoB,IAAI,WAAWlB,MAAM,CAAC,YAAa,EAAM,cAAgB,EAAE,aAAeJ,EAAI2D,iBAAiB,EACrN,EACIvC,EAAkB,GCKtB,GACAa,OACA,OACA0B,aAAAA,CACA,CACA3C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,IAEA,CACA1C,KAAAA,OACAsC,UAAAA,IAAAA,KAAAA,uBAAAA,UACAC,QAAAA,IAAAA,KAAAA,uBAAAA,UACAC,MAAAA,UACAC,WAAAA,IACAC,SAAAA,KAIA,GC7BiU,ICQ7T,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QCnB5B3D,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACe,YAAY,aAAa,CAACf,EAAG,MAAM,CAACe,YAAY,YAAY,CAACjB,EAAIc,GAAG,QAAQd,EAAIe,GAAGf,EAAIqB,aAAanB,EAAG,MAAM,CAACoB,IAAI,WAAWL,YAAY,YAAY,CAACf,EAAG,WAAW,CAACoB,IAAI,WAAWlB,MAAM,CAAC,YAAa,EAAM,YAAa,EAAM,gBAAiB,EAAM,cAAgB,GAAG,SAAWJ,EAAIoE,SAAS,eAAiBpE,EAAIqE,eAAe,WAAarE,EAAIsE,WAAW,WAAatE,EAAIuE,WAAW,gBAAkBvE,EAAIwE,iBAAiBjD,GAAG,CAAC,eAAiBvB,EAAIyE,mBAAmB,IAC/hB,EACIrD,EAAkB,GCsBtB,GACAa,OACA,OACAC,KAAAA,KAAAA,MACAkC,SAAAA,MAAAA,OAAAA,uBAAAA,UAEAE,WAAAA,CACA,CACAzC,KAAAA,GACA6C,aAAAA,KAIA,EACAtC,SAAAA,CACAf,WACA,mDACA,GAEAgB,UACA8B,QAAAA,IAAAA,KAAAA,MAAAA,SAAAA,wBACA,EACA3B,QAAAA,CACAiC,eAAAA,EAAAA,GACA,WACA,EAEAF,WAAAA,GAEA,sDACA,QAGArC,IAAAA,EAAAA,QACAA,IAAAA,EAAAA,UACAA,IAAAA,EAAAA,cAEA,uBALA,CAOA,EAEAsC,gBAAAA,GAEA,OACAG,IAAAA,GAAAA,SAAAA,MAAAA,OAAAA,yBACAA,IAAAA,GAAAA,QAAAA,MAAAA,OAAAA,wBAEA,GAEA,yBACA,EAEAN,eAAAA,EAAAA,GAEA,UAEA,6CAEA,IClFkU,ICQ9T,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QCIhC,GACArD,KAAAA,MACA4D,WAAAA,CACAC,OAAAA,EACAC,KAAAA,EACAC,aAAAA,EACAC,QAAAA,EACAC,KAAAA,EACAC,UAAAA,EACAC,WAAAA,GAEAlD,OACA,OACA1B,WAAAA,OACAK,KAAAA,CACA,CACAI,KAAAA,OACAV,MAAAA,QACA,CACAU,KAAAA,QACAV,MAAAA,WAEA,CACAU,KAAAA,QACAV,MAAAA,gBAEA,CACAU,KAAAA,UACAV,MAAAA,UAEA,CACAU,KAAAA,OACAV,MAAAA,QAEA,CACAU,KAAAA,QACAV,MAAAA,aACA,CACAU,KAAAA,WACAV,MAAAA,eAIA,EACAkC,QAAAA,CACA4C,OAAAA,GACA,iBACA,ICtE+S,ICQ3S,GAAY,OACd,EACArF,EACAqB,GACA,EACA,KACA,KACA,MAIF,GAAe,EAAiB,QCnB5BrB,GAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACoB,IAAI,oBAAoBL,YAAY,oBAAoBoE,MAAO,CACxIC,gBAAiBtF,EAAIsF,iBACpB/D,GAAG,CAAC,WAAavB,EAAIuF,aAAa,UAAYvF,EAAIwF,YAAY,UAAYxF,EAAIyF,YAAY,SAAWzF,EAAI0F,WAAW,UAAY1F,EAAI2F,YAAY,WAAa3F,EAAI4F,eAAe,CAAC1F,EAAG,SAAS,CAACoB,IAAI,SAASL,YAAY,SAASM,GAAG,CAAC,WAAa,SAASsE,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwB/F,EAAIgG,YAAYC,MAAM,KAAMC,UAAU,KAAMlG,EAAImG,gBAAkBnG,EAAIkD,YAAclD,EAAIkD,WAAWkD,OAAS,EAAGlG,EAAG,MAAM,CAACoB,IAAI,aAAaL,YAAY,aAAaM,GAAG,CAAC,OAASvB,EAAIqG,qBAAqBrG,EAAIW,GAAIX,EAAIsG,iBAAiB,SAASzF,EAAK0F,GAAO,OAAOrG,EAAG,iBAAiB,CAAC6B,IAAIwE,EAAMjF,IAAI,iBAAiBkF,UAAS,EAAKpG,MAAM,CAAC,MAAQmG,EAAM,KAAO1F,EAAK,QAAUb,EAAIyG,QAAQ,eAAiBzG,EAAI0G,eAAe,MAAQ1G,EAAI2G,MAAM,OAAS9F,EAAK+F,QAAQrF,GAAG,CAAC,0BAA4BvB,EAAI6G,+BAA+B,MAAQ,SAAShB,GAAQ,OAAO7F,EAAI8G,aAAaP,EAAM,IAAI,IAAG,GAAGvG,EAAI+G,MAC94B,EACI3F,GAAkB,G,gCCJlBrB,GAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACoB,IAAI,iBAAiBL,YAAY,iBAAiB+F,MAAM,CAACJ,OAAQ5G,EAAI4G,QAAQrF,GAAG,CAAC,MAAQvB,EAAIiH,UAAU,CAAC/G,EAAG,OAAO,CAACe,YAAY,SAAS,CAACjB,EAAIc,GAAGd,EAAIe,GAAGf,EAAIuG,MAAQ,MAAMrG,EAAG,SAAS,CAACoB,IAAI,SAASL,YAAY,0BAC5R,EACIG,GAAkB,GAMtB,IACAJ,KAAAA,iBACAkG,MAAAA,CACAX,MAAAA,CACAY,KAAAA,QAEAlF,KAAAA,CACAkF,KAAAA,OACAC,UACA,QACA,GAEAX,QAAAA,CACAU,KAAAA,QAEAT,eAAAA,CACAS,KAAAA,QAEAR,MAAAA,CACAQ,KAAAA,QAEAP,OAAAA,CACAO,KAAAA,QACAC,SAAAA,IAGAnF,OACA,OACAoF,OAAAA,EACAC,IAAAA,KAEA,EACAjF,UACA,YACA,uBACA,EACAG,QAAAA,CAMA+E,OACA,WAAAF,GAAA,kDACA,gBACA,mCACA,qCACA,2CACA,EAOAG,iBAAAA,EAAAA,GACA,6DACA,OAEA,gCACA,oCACA,GACA3G,EAAAA,WAAAA,KAAAA,eAAAA,KAAAA,SACAA,EAAAA,SAAAA,KAAAA,eACA,CACA,qBACA,IACA,EADA,sCAEA,KACA4G,EAAAA,EACAC,GAAAA,EAAAA,QAAAA,KAAAA,gBAAAA,GAEAA,GAAAA,EAAAA,QAAAA,EAAAA,WAAAA,EAEA,4CACA,oCACA,EACA,cACAD,EACA,cACAC,EACA,oBAGA,2BACA,kBACAD,EACA,cACAC,EACA,oBAGAlH,GAAAA,EAAAA,EACA,IAEA,EAOAmH,cACA,8CACA,EAOAC,OACA,qBACA,mBACA,0BAEA,EAOAX,QAAAA,GACA,sBACA,SAAAY,EAAAA,IAAAC,GAAA,kDACA,cACA,cACA,iCACA,YACA,8DAEA,EAOAC,qBAAAA,EAAAA,GACA,6DACA,SAEA,SAMA,OALA,2BACA,6BACAC,EAAAA,KAAAA,EACA,IACA,GACA,CACA,EAOAC,UACA,uFACA,ICvKkV,MCQ9U,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QClBzB,MAAMC,GAAiB,KAEjBC,GAAO,CAAC,GAAK,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,OAElDC,GAAiB,CAAC,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAI,EAAG,IAAM,GAAK,EAAG,EAAG,EAAG,IAAK,MAC1EC,GAAwB,CACnC,IACA,EAAI,GACJ,IACA,EAAI,EACJ,GACA,EACA,EACA,EACA,EACA,IAAK,MAGMC,GAAsB,CACjC,KACS,EAETC,GACSA,EAAKC,aAAe,IAAM,EAEnCD,GACSA,EAAKC,aAAe,KAAO,EAEpCD,GAC+B,IAAtBA,EAAKC,cAA4C,KAAtBD,EAAKC,aAEzCD,GAC+B,IAAtBA,EAAKC,aAEdD,GACSA,EAAKE,WAAa,IAAM,GAA2B,IAAtBF,EAAKC,aAE3CD,GACSA,EAAKE,WAAa,IAAM,GAA2B,IAAtBF,EAAKC,aAE3CD,GACSA,EAAKE,WAAa,KAAO,GAA2B,IAAtBF,EAAKC,aAE5CD,IACS,EAETA,IACS,EAETA,IACS,GAGEG,GAA6B,CACxC,KACS,EAETH,GACSA,EAAKC,aAAe,IAAM,EAEnCD,GACSA,EAAKC,aAAe,KAAO,EAEpCD,GAC+B,IAAtBA,EAAKC,cAA4C,KAAtBD,EAAKC,aAEzCD,GACSA,EAAKE,WAAa,IAAM,GAA2B,IAAtBF,EAAKC,aAE3CD,GACSA,EAAKE,WAAa,IAAM,GAA2B,IAAtBF,EAAKC,aAE3CD,GACSA,EAAKE,WAAa,IAAM,GAA2B,IAAtBF,EAAKC,aAE3CD,GACSA,EAAKE,WAAa,KAAO,GAA2B,IAAtBF,EAAKC,aAE5CD,IACS,EAETA,IACS,EAETA,IACS,GJ3BX,QACAvH,KAAAA,WACA4D,WAAAA,CACA+D,eAAAA,IAEAzB,MAAAA,CAEA9C,SAAAA,CACA+C,KAAAA,CAAAA,OAAAA,QACAC,QAAAA,IASAwB,UAAAA,CACAzB,KAAAA,OACAC,UACA,QACA,GAGAyB,cAAAA,CACA1B,KAAAA,OACAC,QAAAA,GAGA0B,eAAAA,CACA3B,KAAAA,QACAC,SAAAA,GAGA2B,gBAAAA,CACA5B,KAAAA,OACAC,UACA,OACAT,MAAAA,EACAnD,MAAAA,OAEA,GAGAwF,UAAAA,CACA7B,KAAAA,OACAC,QAAAA,uBAGA6B,eAAAA,CACA9B,KAAAA,OACAC,QAAAA,sBAGA8B,UAAAA,CACA/B,KAAAA,OACAC,QAAAA,uBAGA+B,gBAAAA,CACAhC,KAAAA,OACAC,UACA,OACAmB,KAAAA,GACArG,KAAAA,GACAkH,KAAAA,GACAC,MAAAA,GAEA,GAGAC,cAAAA,CACAnC,KAAAA,QACAC,SAAAA,GAGA5C,gBAAAA,CACA2C,KAAAA,UAYAxD,aAAAA,CACAwD,KAAAA,MACAC,QAAAA,IAAAA,IAGA9B,gBAAAA,CACA6B,KAAAA,OACAC,QAAAA,WAGAmC,WAAAA,CACApC,KAAAA,QACAC,SAAAA,GAGAoC,WAAAA,CACArC,KAAAA,QACAC,SAAAA,GAiBAlE,WAAAA,CACAiE,KAAAA,MACAC,UACA,QACA,GAGAqC,mBAAAA,CACAtC,KAAAA,OACAC,QAAAA,IAGAsC,8BAAAA,CACAvC,KAAAA,OACAC,SAAAA,GAGAuC,SAAAA,CACAxC,KAAAA,QACAC,SAAAA,GAGAwC,iBAAAA,CACAzC,KAAAA,OACAC,QAAAA,GAGAyC,uBAAAA,CACA1C,KAAAA,QACAC,SAAAA,GAGA/C,eAAAA,CACA8C,KAAAA,UAGA2C,eAAAA,CACA3C,KAAAA,QACAC,SAAAA,GAYA9C,WAAAA,CACA6C,KAAAA,MACAC,UACA,QACA,GAGA7C,WAAAA,CACA4C,KAAAA,WAGAlF,OACA,OACA0E,MAAAA,EACAU,OAAAA,EACAC,IAAAA,KACAyC,iBAAAA,EACAC,YAAAA,EACAtD,eAAAA,EACAuD,WAAAA,EACAC,WAAAA,EACAC,WAAAA,EACAC,6BAAAA,EACAjE,gBAAAA,EACAG,gBAAAA,GACA+D,YAAAA,EACAC,cAAAA,GAEA,EACAlI,SAAAA,CAEAqE,UACA,mCACA,EAEA8D,qBACA,SAOA,OANA,uBACAC,EAAAA,MAAAA,kBAAAA,KAAAA,UAAAA,MAAAA,KAAAA,UAAAA,MAAAA,IAAAA,KAAAA,KAAAA,UAAAA,OAAAA,WAEA,qBACAA,EAAAA,IAAAA,kBAAAA,KAAAA,UAAAA,IAAAA,KAAAA,UAAAA,IAAAA,IAAAA,KAAAA,KAAAA,UAAAA,KAAAA,WAEA,CACA,EACAC,qBACA,0BACA,EACAC,0BACA,0BACA,EAEAC,gBACA,gCACA,EAEAC,WACA,iCACA,GAEAC,MAAAA,CACAlH,aAAAA,CACAmH,MAAAA,EACAC,QAAAA,aAGAC,UACA,6BACA7C,GAAAA,KAAAA,EAAAA,MACAC,GAAAA,KAAAA,EAAAA,cACAC,GAAAA,KAAAA,EAAAA,mBAAAA,GAEA,EACAhG,UACA,mBACA,YACA,YACA,yCACA,uCACA,2CACA,cACAS,OAAAA,iBAAAA,WAAAA,KAAAA,YAEAA,OAAAA,iBAAAA,UAAAA,KAAAA,WAEAA,OAAAA,iBAAAA,SAAAA,KAAAA,SACA,EACAR,gBACA,cACAQ,OAAAA,oBAAAA,WAAAA,KAAAA,YAEAA,OAAAA,oBAAAA,UAAAA,KAAAA,WAEAA,OAAAA,oBAAAA,SAAAA,KAAAA,SACA,EACAN,QAAAA,CAMAyI,cAEA,kDACA,IACA,EACArE,OAAAA,KAAAA,gCAAAA,MAKA,sBACA,oDACA,mBACA,EAEA,qBACA,cACA,gFACA,0DACA,eAEA,wBACA,EAOAsE,oBACA,qBACA,wBACA,iEACA,qDAEA,6DACA,kDAEA,EAOA3D,OACA,UACAZ,EAAAA,OACAU,GACA,qDACA,aACA,YACA,mDACA,mCACA,qCACA,4CACA,sBACA,EAOAO,OAEA,wBACA,sBACA,sBAEA,oDACA,0CAGA,IACA,uCACA/G,EAAAA,MAAAA,GAEA,WAGA,sBACA,EAOAsK,kBACA,gCAEA,uEACAtK,EAAAA,UAAAA,GAAAA,OACA,CACA,6DACA,KACA,KAAAgH,EAAAA,IAAAC,GAAA,0CACA,iIACA,iEACAsD,EAAAA,EAAAA,EAAAA,IAAAA,CACA,MACAA,EAAAA,EAEAvK,EAAAA,SAAAA,EAAAA,EAAAA,EACA,IAEA,EAOAwK,iBACA,wBACA,OAEA,qBACA,UAAA1E,EAAAA,MAAAnD,GAAA,qBACA,eACA,oCACA,EAOA8H,iBACA,qBAEA,MACAnD,GAAAA,KAAAA,kBAAAA,KAAAA,mBAAAA,KAAAA,kBAEA,oDAEA,eAEA,0BACA,QACA,qBACA,gCACA,IAEA,cACAoD,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,KAAAA,GAAAA,OAAAA,0BAAAA,UACA,qBAEAA,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,KAAAA,GAAAA,OAAAA,WAAAA,KAAAA,GAAAA,OAAAA,qBAAAA,WAEA,kBACA,MACA,IACA,cAEA,2DACAC,EAAAA,KAAAA,aAAAA,IAAAA,KAAAA,gBAAAA,KAAAA,GAAAA,KAAAA,gBAAAA,MACA,kCACA,kBACA,wBACA/D,EAAAA,GACA+D,EAAAA,KAEA,uBAEAA,EAAAA,KAAAA,aAAAA,IAAAA,KAAAA,gBAAAA,KAAAA,GAAAA,KAAAA,gBAAAA,MACA,kCACA,kBACA,wBACA/D,EAAAA,GACA+D,EAAAA,KAIAA,EAAAA,KAAAA,aAAAA,IAAAA,KAAAA,gBAAAA,KAAAA,GAAAA,KAAAA,gBAAAA,MAEA,uCACA,CACA,EAGAC,cAAAA,GACA,wBACA,mDACA,UACA,SACA,UACA,QAEA,CACA,6DACA,EAOAjE,iBAAAA,EAAAA,GACA,gCACA,+BACA,GACA3G,EAAAA,WAAAA,KAAAA,eAAAA,KAAAA,QACA,CACA,qCACA,qBACA,IACA,EADA,sCAEA,KACA4G,EAAAA,EACAC,EAAAA,GAAAA,EAAAA,QAAAA,KAAAA,gBAAAA,EAAAA,GAEAA,EAAAA,GAAAA,EAAAA,QAAAA,EAAAA,WAAAA,EAAAA,EAEA,4CACA,oCACA,8BACAD,EAAAA,KAAAA,MAAAA,GACAC,EAAAA,KAAAA,MAAAA,IAGAA,EAAAA,KAAAA,IAAAA,EAAAA,GACA,EACA,cACAD,EACA,cACAC,EACA,oBAGA,2BACA,kBACAD,EACA,cACAC,EACA,oBAGAlH,GAAAA,EAAAA,EACA,IAEA,EAGA+E,aAAAA,GACA,gBAGAmG,EAAAA,EAAAA,QAAAA,GACA,sBACA,EAOAjG,YAAAA,GACA,eAGA,qBACA,EAGAkG,cAAAA,GACA,8BACA,qBACA,qBACA,kBACA,sDACA,yBACA,EAGAC,WAAAA,GACA,gBAGAF,EAAAA,EAAAA,QAAAA,GACA,oBACA,EAOAG,UAAAA,GACA,eAGA,mBACA,EAGAC,YAAAA,GAEA,8BACA,aACA,kBACA,kBACA,kBACA,qCAEA,GACAC,KAAAA,IAAAA,EAAAA,GAAAA,KAAAA,aAAAA,KAAAA,kBACAA,KAAAA,IAAAA,EAAAA,GAAAA,KAAAA,aAAAA,KAAAA,iBAIA,OAFAC,SACA,mBAGA,iCACAA,IACA,+CAEAA,IAEA,uBACA,EAGAxG,YAAAA,GACA,gBAGAkG,EAAAA,EAAAA,QAAAA,GACA,sBACA,EAOA/F,YAAAA,GACA,eAGA,qBACA,EAGAsG,cAAAA,GACA,iCACA,kBAEA,gCACA,aACA,oBAEA,iBAEA,EAOArG,eACA,kBACA,EAOAsG,KAAAA,GACA,oBACA,OAEA,gCACA,wBAEA,iBACA,EACA,kDACA,MACA,iEACAC,EAAAA,KAAAA,mBAAAA,MAAAA,GAEA,6DACAA,EAAAA,KAAAA,mBAAAA,IAAAA,GAEA,sBACA,yCACA,WACA,EAOAC,UAAAA,EAAAA,GACA,gCACA,8BACA,IACA,yCACA,aAEA,sFACA,wCACA,uCACA,yFACA,gCACA,+BACA,EAOA1G,aACA,yCACA,WACA,EAOAM,YAAAA,GACA,oBACA,OAEA,sBACA,mDACA,IACA,qCACA,kCAEA,wBAEA,MAEA,2BACA,wBAEA,yBAGA,yCACA,oDACA,WACA,EAOAiB,QAAAA,EAAAA,GACA,gCACA,8BACA,wCACA,iCACA,cACA,yCAEA,yBAEA,EAOAc,qBAAAA,EAAAA,GACA,SAMA,OALA,2BACA,6BACAC,EAAAA,KAAAA,EACA,IACA,GACA,CACA,EAOAqE,gBAAAA,GACA,qCACA,YAEA,SAAAxE,EAAAA,IAAAC,GAAA,qDACA,+BACA,EAOAH,YAAAA,EAAAA,GACA,2BACA,EAOA2E,gBAAAA,GACA,cACA,KAIA,OAHA,kBACAC,EAAAA,KAAAA,WAAAA,IAEA,IAGA,cACA,iBACA,mBACA,oBAEArK,IAAAA,EAAAA,QACAA,IAAAA,EAAAA,UACAA,IAAAA,EAAAA,cAEA,kBAEA,kBAEA,EAOAsK,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,QACA,qBACA,uBACA,qBACA,qBACA,qBACA,iBACA,EAOA/K,WACA,qBACA,yCACA,aACA,mBACA,YACA,cAEA,EAOAuK,QACA,aACA,cACA,cACA,wBACA,mBACA,sBACA,kBACA,kBACA,mCACA,EAOAS,QAAAA,GACA,kBACA,OAEA,kDACA,qCACA,yBACA,yCACA,aACA,oCACA,kCAEA,EAOA5F,+BAAAA,EAAAA,EAAAA,GACA,6CACA,EAOA6F,QAAAA,GACA,sBACAnG,GAAAA,GAAAA,EAAAA,GAAAA,OACAA,EACA,EACA,yCACA,oDACA,WACA,EAOAO,aAAAA,GACA,kCACAjG,EAAAA,QAAAA,CAAAA,IAEA,kCACA,+DACA,EAOA8L,UAAAA,EAAAA,EAAAA,GACA,MAGA,yBACAzK,KAAAA,kBAAAA,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,UACA1B,WACAoM,oBAAAA,kBAAAA,EAAAA,EAAAA,GAAAA,GAEA,EAOAvG,qBACA,sBACA,EAOAwG,WACA,YACA,YACA,IACA,uCACAhM,EAAAA,MAAAA,GAEA,WACA,EAGAiM,iBAAAA,GACA,iCACA,IKv/ByU,MCQrU,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCjBhC,MAAMC,GAAU,SAASC,GACvBA,EAAIvK,UAAUwK,GAAIjM,KAAMiM,GAC1B,EAEA,QACEF,Y,sBCDFC,EAAAA,WAAAA,IAAQE,IACRF,EAAAA,WAAAA,IAAQG,MAERH,EAAAA,WAAAA,OAAAA,eAA2B,EAE3B,IAAIA,EAAAA,WAAI,CACNjN,OAAQyL,GAAKA,EAAE4B,MACdC,OAAO,O,GCZNC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUM,KAAKF,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAGpEK,EAAOD,OACf,CAGAJ,EAAoBQ,EAAIF,E,WCzBxB,IAAIG,EAAW,GACfT,EAAoBU,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIR,EAAS5H,OAAQoI,IAAK,CACrCL,EAAWH,EAASQ,GAAG,GACvBJ,EAAKJ,EAASQ,GAAG,GACjBH,EAAWL,EAASQ,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAS/H,OAAQsI,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKrB,EAAoBU,GAAGY,OAAM,SAAS9M,GAAO,OAAOwL,EAAoBU,EAAElM,GAAKoM,EAASO,GAAK,IAChKP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbT,EAASc,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACEV,IAANqB,IAAiBb,EAASa,EAC/B,CACD,CACA,OAAOb,CArBP,CAJCG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIR,EAAS5H,OAAQoI,EAAI,GAAKR,EAASQ,EAAI,GAAG,GAAKH,EAAUG,IAAKR,EAASQ,GAAKR,EAASQ,EAAI,GACrGR,EAASQ,GAAK,CAACL,EAAUC,EAAIC,EAwB/B,C,eC5BAd,EAAoByB,EAAI,SAASpB,GAChC,IAAIqB,EAASrB,GAAUA,EAAOsB,WAC7B,WAAa,OAAOtB,EAAO,UAAY,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAL,EAAoB4B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,C,eCNA1B,EAAoB4B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAItN,KAAOsN,EACX9B,EAAoB+B,EAAED,EAAYtN,KAASwL,EAAoB+B,EAAE3B,EAAS5L,IAC5E4M,OAAOY,eAAe5B,EAAS5L,EAAK,CAAEyN,YAAY,EAAMC,IAAKJ,EAAWtN,IAG3E,C,eCPAwL,EAAoBmC,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO1P,MAAQ,IAAI2P,SAAS,cAAb,EAGhB,CAFE,MAAOlE,GACR,GAAsB,kBAAX5I,OAAqB,OAAOA,MACxC,CACA,CAPuB,E,eCAxByK,EAAoB+B,EAAI,SAASO,EAAKC,GAAQ,OAAOnB,OAAOoB,UAAUC,eAAelC,KAAK+B,EAAKC,EAAO,C,eCCtGvC,EAAoBwB,EAAI,SAASpB,GACX,qBAAXsC,QAA0BA,OAAOC,aAC1CvB,OAAOY,eAAe5B,EAASsC,OAAOC,YAAa,CAAE5P,MAAO,WAE7DqO,OAAOY,eAAe5B,EAAS,aAAc,CAAErN,OAAO,GACvD,C,eCDA,IAAI6P,EAAkB,CACrB,IAAK,GAaN5C,EAAoBU,EAAES,EAAI,SAAS0B,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4BrO,GAC/D,IAKIuL,EAAU4C,EALVjC,EAAWlM,EAAK,GAChBsO,EAActO,EAAK,GACnBuO,EAAUvO,EAAK,GAGIuM,EAAI,EAC3B,GAAGL,EAASsC,MAAK,SAASC,GAAM,OAA+B,IAAxBP,EAAgBO,EAAW,IAAI,CACrE,IAAIlD,KAAY+C,EACZhD,EAAoB+B,EAAEiB,EAAa/C,KACrCD,EAAoBQ,EAAEP,GAAY+C,EAAY/C,IAGhD,GAAGgD,EAAS,IAAItC,EAASsC,EAAQjD,EAClC,CAEA,IADG+C,GAA4BA,EAA2BrO,GACrDuM,EAAIL,EAAS/H,OAAQoI,IACzB4B,EAAUjC,EAASK,GAChBjB,EAAoB+B,EAAEa,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO7C,EAAoBU,EAAEC,EAC9B,EAEIyC,EAAqBC,KAAK,oBAAsBA,KAAK,qBAAuB,GAChFD,EAAmBE,QAAQR,EAAqBS,KAAK,KAAM,IAC3DH,EAAmBI,KAAOV,EAAqBS,KAAK,KAAMH,EAAmBI,KAAKD,KAAKH,G,IC/CvF,IAAIK,EAAsBzD,EAAoBU,OAAEP,EAAW,CAAC,MAAM,WAAa,OAAOH,EAAoB,KAAO,IACjHyD,EAAsBzD,EAAoBU,EAAE+C,E","sources":["webpack://demo/./src/App.vue","webpack://demo/./src/components/Base.vue","webpack://demo/src/components/Base.vue","webpack://demo/./src/components/Base.vue?d370","webpack://demo/./src/components/Base.vue?ae3d","webpack://demo/./src/components/Custom.vue","webpack://demo/src/components/Custom.vue","webpack://demo/./src/components/Custom.vue?18d6","webpack://demo/./src/components/Custom.vue?c531","webpack://demo/./src/components/MultiSegment.vue","webpack://demo/src/components/MultiSegment.vue","webpack://demo/./src/components/MultiSegment.vue?334a","webpack://demo/./src/components/MultiSegment.vue?7410","webpack://demo/./src/components/Segment.vue","webpack://demo/src/components/Segment.vue","webpack://demo/./src/components/Segment.vue?2015","webpack://demo/./src/components/Segment.vue?71fd","webpack://demo/./src/components/Year.vue","webpack://demo/src/components/Year.vue","webpack://demo/./src/components/Year.vue?3d51","webpack://demo/./src/components/Year.vue?2369","webpack://demo/./src/components/YearMonth.vue","webpack://demo/src/components/YearMonth.vue","webpack://demo/./src/components/YearMonth.vue?28b1","webpack://demo/./src/components/YearMonth.vue?86be","webpack://demo/./src/components/CustomZoom.vue","webpack://demo/src/components/CustomZoom.vue","webpack://demo/./src/components/CustomZoom.vue?f4b0","webpack://demo/./src/components/CustomZoom.vue?a9cf","webpack://demo/src/App.vue","webpack://demo/./src/App.vue?029f","webpack://demo/./src/App.vue?834c","webpack://demo/../package/src/index.vue","webpack://demo/../package/src/WindowListItem.vue","webpack://demo/../package/src/WindowListItem.vue?f236","webpack://demo/../package/src/WindowListItem.vue?f24c","webpack://demo/../package/src/constant.js","webpack://demo/../package/src/index.vue?b409","webpack://demo/../package/src/index.vue?b584","webpack://demo/../package/index.js","webpack://demo/./src/main.js","webpack://demo/webpack/bootstrap","webpack://demo/webpack/runtime/chunk loaded","webpack://demo/webpack/runtime/compat get default export","webpack://demo/webpack/runtime/define property getters","webpack://demo/webpack/runtime/global","webpack://demo/webpack/runtime/hasOwnProperty shorthand","webpack://demo/webpack/runtime/make namespace object","webpack://demo/webpack/runtime/jsonp chunk loading","webpack://demo/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app\"}},[_c('el-radio-group',{attrs:{\"size\":\"small\"},model:{value:(_vm.activeComp),callback:function ($$v) {_vm.activeComp=$$v},expression:\"activeComp\"}},_vm._l((_vm.list),function(item){return _c('el-radio-button',{attrs:{\"label\":item.value}},[_vm._v(_vm._s(item.name))])}),1),_c('div',{staticClass:\"box\"},[_c(_vm.activeComp,{tag:\"component\"})],1),_vm._m(0)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('a',{attrs:{\"href\":\"https://github.com/wanglin2/VideoTimeLine/tree/main/demo/src/components\"}},[_vm._v(\"demo源码\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"timeShow\"},[_vm._v(\"当前时间:\"+_vm._s(_vm.showTime))]),_c('div',{staticClass:\"timeLine\"},[_c('TimeLine',{ref:\"Timeline\",on:{\"timeChange\":_vm.timeChange}})],1),_c('div',{staticClass:\"btns\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.reRender}},[_vm._v(\"重新渲染\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.jump}},[_vm._v(\"跳转到2021-01-01零点\")]),_c('el-select',{staticStyle:{\"width\":\"100px\",\"margin\":\"0 10px\"},attrs:{\"placeholder\":\"请选择\"},on:{\"change\":_vm.zoomChange},model:{value:(_vm.zoom),callback:function ($$v) {_vm.zoom=$$v},expression:\"zoom\"}},_vm._l((_vm.zoomList),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n \r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Base.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Base.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Base.vue?vue&type=template&id=41b27e10&scoped=true&\"\nimport script from \"./Base.vue?vue&type=script&lang=js&\"\nexport * from \"./Base.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Base.vue?vue&type=style&index=0&id=41b27e10&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41b27e10\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"timeShow\"},[_vm._v(\"当前时间:\"+_vm._s(_vm.showTime4))]),_c('div',{staticClass:\"timeLine4\"},[_c('TimeLine',{ref:\"Timeline4\",attrs:{\"initTime\":_vm.time4,\"windowList\":_vm.windowList4},on:{\"timeChange\":_vm.timeChange4}})],1),_c('i',{ref:\"flagIcon\",staticClass:\"icon el-icon-s-flag\",staticStyle:{\"color\":\"#E72528\"}}),_c('i',{ref:\"carIcon\",staticClass:\"icon el-icon-bicycle\",staticStyle:{\"color\":\"#2196F3\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n \r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Custom.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Custom.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Custom.vue?vue&type=template&id=4951fd2c&scoped=true&\"\nimport script from \"./Custom.vue?vue&type=script&lang=js&\"\nexport * from \"./Custom.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Custom.vue?vue&type=style&index=0&id=4951fd2c&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4951fd2c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"timeShow\"},[_vm._v(\"当前时间:\"+_vm._s(_vm.showTime3))]),_c('div',{staticClass:\"timeline3\"},[_c('TimeLine',{ref:\"Timeline3\",attrs:{\"initTime\":_vm.time3,\"timeSegments\":_vm.timeSegments3,\"windowList\":_vm.windowList},on:{\"timeChange\":_vm.timeChange3,\"click_timeSegments\":_vm.click_timeSegments3,\"click_window_timeSegments\":_vm.click_window_timeSegments}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n \r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MultiSegment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MultiSegment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MultiSegment.vue?vue&type=template&id=0f18e806&scoped=true&\"\nimport script from \"./MultiSegment.vue?vue&type=script&lang=js&\"\nexport * from \"./MultiSegment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultiSegment.vue?vue&type=style&index=0&id=0f18e806&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f18e806\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"timeShow\"},[_vm._v(\"当前时间:\"+_vm._s(_vm.showTime2))]),_c('div',{staticClass:\"timeLine\"},[_c('TimeLine',{ref:\"Timeline2\",attrs:{\"initTime\":_vm.time2,\"timeSegments\":_vm.timeSegments},on:{\"timeChange\":_vm.timeChange2,\"click_timeSegments\":_vm.click_timeSegments,\"click_timeline\":_vm.onClickTimeLine,\"dragTimeChange\":_vm.onDragTimeChange}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n \r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Segment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Segment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Segment.vue?vue&type=template&id=45a3b121&scoped=true&\"\nimport script from \"./Segment.vue?vue&type=script&lang=js&\"\nexport * from \"./Segment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Segment.vue?vue&type=style&index=0&id=45a3b121&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45a3b121\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('TimeLine',{ref:\"Timeline\",attrs:{\"enableZoom\":false,\"initZoomIndex\":10,\"timeSegments\":_vm.timeSegments}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Year.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Year.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Year.vue?vue&type=template&id=1a36b017&scoped=true&\"\nimport script from \"./Year.vue?vue&type=script&lang=js&\"\nexport * from \"./Year.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Year.vue?vue&type=style&index=0&id=1a36b017&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a36b017\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('TimeLine',{ref:\"Timeline\",attrs:{\"enableZoom\":false,\"initZoomIndex\":9,\"timeSegments\":_vm.timeSegments}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./YearMonth.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./YearMonth.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./YearMonth.vue?vue&type=template&id=3aed7087&scoped=true&\"\nimport script from \"./YearMonth.vue?vue&type=script&lang=js&\"\nexport * from \"./YearMonth.vue?vue&type=script&lang=js&\"\nimport style0 from \"./YearMonth.vue?vue&type=style&index=0&id=3aed7087&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3aed7087\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"timeShow\"},[_vm._v(\"当前时间:\"+_vm._s(_vm.showTime))]),_c('div',{ref:\"timeLine\",staticClass:\"timeLine\"},[_c('TimeLine',{ref:\"Timeline\",attrs:{\"enableZoom\":false,\"enableDrag\":false,\"showDateAtZero\":false,\"initZoomIndex\":11,\"initTime\":_vm.initTime,\"customShowTime\":_vm.customShowTime,\"extendZOOM\":_vm.extendZOOM,\"formatTime\":_vm.formatTime,\"hoverTimeFormat\":_vm.hoverTimeFormat},on:{\"click_timeline\":_vm.click_timeline}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomZoom.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomZoom.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomZoom.vue?vue&type=template&id=f7bac5fc&scoped=true&\"\nimport script from \"./CustomZoom.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomZoom.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomZoom.vue?vue&type=style&index=0&id=f7bac5fc&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f7bac5fc\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=71bb0826&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=71bb0826&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"timeLineContainer\",staticClass:\"timeLineContainer\",style:({\n backgroundColor: _vm.backgroundColor,\n }),on:{\"touchstart\":_vm.onTouchstart,\"touchmove\":_vm.onTouchmove,\"mousedown\":_vm.onMousedown,\"mouseout\":_vm.onMouseout,\"mousemove\":_vm.onMousemove,\"mouseleave\":_vm.onMouseleave}},[_c('canvas',{ref:\"canvas\",staticClass:\"canvas\",on:{\"mousewheel\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onMouseweel.apply(null, arguments)}}}),(_vm.showWindowList && _vm.windowList && _vm.windowList.length > 1)?_c('div',{ref:\"windowList\",staticClass:\"windowList\",on:{\"scroll\":_vm.onWindowListScroll}},_vm._l((_vm.windowListInner),function(item,index){return _c('WindowListItem',{key:index,ref:\"WindowListItem\",refInFor:true,attrs:{\"index\":index,\"data\":item,\"totalMS\":_vm.totalMS,\"startTimestamp\":_vm.startTimestamp,\"width\":_vm.width,\"active\":item.active},on:{\"click_window_timeSegments\":_vm.triggerClickWindowTimeSegments,\"click\":function($event){return _vm.toggleActive(index)}}})}),1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"windowListItem\",staticClass:\"windowListItem\",class:{active: _vm.active},on:{\"click\":_vm.onClick}},[_c('span',{staticClass:\"order\"},[_vm._v(_vm._s(_vm.index + 1))]),_c('canvas',{ref:\"canvas\",staticClass:\"windowListItemCanvas\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../demo/node_modules/thread-loader/dist/cjs.js!../../demo/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../demo/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WindowListItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../demo/node_modules/thread-loader/dist/cjs.js!../../demo/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../demo/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WindowListItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WindowListItem.vue?vue&type=template&id=5d855ac8&scoped=true&\"\nimport script from \"./WindowListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./WindowListItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WindowListItem.vue?vue&type=style&index=0&id=5d855ac8&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../demo/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d855ac8\",\n null\n \n)\n\nexport default component.exports","// 一小时的毫秒数\r\nexport const ONE_HOUR_STAMP = 60 * 60 * 1000\r\n// 时间分辨率,即整个时间轴表示的时间范围\r\nexport const ZOOM = [0.5, 1, 2, 6, 12, 24, 72, 360, 720, 8760, 87600]// 半小时、1小时、2小时、6小时、12小时、1天、3天、15天、30天、365天、365*10天\r\n// 时间分辨率对应的每格小时数,即最小格代表多少小时\r\nexport const ZOOM_HOUR_GRID = [1 / 60, 1 / 60, 2 / 60, 1 / 6, 0.25, 0.5, 1, 4, 4, 720, 7200]\r\nexport const MOBILE_ZOOM_HOUR_GRID = [\r\n 1 / 20,\r\n 1 / 30,\r\n 1 / 20,\r\n 1 / 3,\r\n 0.5,\r\n 2,\r\n 4,\r\n 4,\r\n 4,\r\n 720, 7200\r\n]\r\n// 时间分辨率对应的时间显示判断条件\r\nexport const ZOOM_DATE_SHOW_RULE = [\r\n () => { // 全部显示\r\n return true\r\n },\r\n date => { // 每五分钟显示\r\n return date.getMinutes() % 5 === 0\r\n },\r\n date => { // 每十分钟显示\r\n return date.getMinutes() % 10 === 0\r\n },\r\n date => { // 整点和半点显示\r\n return date.getMinutes() === 0 || date.getMinutes() === 30\r\n },\r\n date => { // 整点显示\r\n return date.getMinutes() === 0\r\n },\r\n date => { // 偶数整点的小时\r\n return date.getHours() % 2 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 每三小时小时\r\n return date.getHours() % 3 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 每12小时\r\n return date.getHours() % 12 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 全不显示\r\n return false\r\n },\r\n date => {\r\n return true\r\n },\r\n date => {\r\n return true\r\n }\r\n]\r\nexport const MOBILE_ZOOM_DATE_SHOW_RULE = [\r\n () => { // 全部显示\r\n return true\r\n },\r\n date => { // 每五分钟显示\r\n return date.getMinutes() % 5 === 0\r\n },\r\n date => { // 每十分钟显示\r\n return date.getMinutes() % 10 === 0\r\n },\r\n date => { // 整点和半点显示\r\n return date.getMinutes() === 0 || date.getMinutes() === 30\r\n },\r\n date => { // 偶数整点的小时\r\n return date.getHours() % 2 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 偶数整点的小时\r\n return date.getHours() % 4 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 每三小时小时\r\n return date.getHours() % 3 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 每12小时\r\n return date.getHours() % 12 === 0 && date.getMinutes() === 0\r\n },\r\n date => { // 全不显示\r\n return false\r\n },\r\n date => {\r\n return true\r\n },\r\n date => {\r\n return true\r\n }\r\n]","import mod from \"-!../../demo/node_modules/thread-loader/dist/cjs.js!../../demo/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../demo/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../demo/node_modules/thread-loader/dist/cjs.js!../../demo/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../demo/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=35dbafe4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=35dbafe4&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../demo/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35dbafe4\",\n null\n \n)\n\nexport default component.exports","import src from './src/index.vue';\r\n\r\nconst install = function(Vue) {\r\n Vue.component(src.name, src);\r\n};\r\n\r\nexport default {\r\n install\r\n};\r\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport VideoTimeline from '@wanglin1994/video-timeline'\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css'\r\n\r\nVue.use(VideoTimeline)\r\nVue.use(ElementUI)\r\n\r\nVue.config.productionTip = false\r\n\r\nnew Vue({\r\n render: h => h(App),\r\n}).$mount('#app')\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdemo\"] = self[\"webpackChunkdemo\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(5030); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","attrs","model","value","activeComp","callback","$$v","expression","_l","list","item","_v","_s","name","staticClass","tag","_m","staticRenderFns","showTime","ref","on","timeChange","reRender","jump","staticStyle","zoomChange","zoom","zoomList","key","label","data","time","timer","computed","mounted","beforeDestroy","clearTimeout","methods","component","showTime4","time4","windowList4","timeChange4","window","showTime3","time3","timeSegments3","windowList","timeChange3","click_timeSegments3","click_window_timeSegments","beginTime","endTime","color","startRatio","endRatio","timeSegments","alert","showTime2","time2","timeChange2","click_timeSegments","onClickTimeLine","onDragTimeChange","console","initTime","customShowTime","extendZOOM","formatTime","hoverTimeFormat","click_timeline","zoomHourGrid","dayjs","components","Custom","Base","MultiSegment","Segment","Year","YearMonth","CustomZoom","change","style","backgroundColor","onTouchstart","onTouchmove","onMousedown","onMouseout","onMousemove","onMouseleave","$event","stopPropagation","preventDefault","onMouseweel","apply","arguments","showWindowList","length","onWindowListScroll","windowListInner","index","refInFor","totalMS","startTimestamp","width","active","triggerClickWindowTimeSegments","toggleActive","_e","class","onClick","props","type","default","height","ctx","init","drawTimeSegments","x","w","clearCanvas","draw","left","top","getClickTimeSegments","inItems","getRect","ONE_HOUR_STAMP","ZOOM","ZOOM_HOUR_GRID","MOBILE_ZOOM_HOUR_GRID","ZOOM_DATE_SHOW_RULE","date","getMinutes","getHours","MOBILE_ZOOM_DATE_SHOW_RULE","WindowListItem","timeRange","initZoomIndex","showCenterLine","centerLineStyle","textColor","hoverTextColor","lineColor","lineHeightRatio","none","hover","showHoverTime","enableZoom","enableDrag","baseTimeLineHeight","initSelectWindowTimeLineIndex","isMobile","maxClickDistance","roundWidthTimeSegments","showDateAtZero","currentZoomIndex","currentTime","mousedown","mousedownX","mousedownY","mousedownCacheStartTimestamp","mousemoveX","watchTimeList","timeRangeTimestamp","t","ACT_ZOOM_HOUR_GRID","ACT_ZOOM_DATE_SHOW_RULE","yearMonthMode","yearMode","watch","deep","handler","created","setInitData","fixStartTimestamp","updateWatchTime","y","drawMiddleLine","addGraduations","adjustMsOffset","h","checkShowTime","e","onPointerdown","onTouchend","onMouseup","onPointerup","Math","reset","onPointermove","drag","_newStartTimestamp","hoverShow","getClientOffset","graduationTitle","res","drawLine","setTime","setZoom","watchTime","windowTimeLineIndex","onResize","onCanvasClick","install","Vue","src","VideoTimeline","ElementUI","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} --------------------------------------------------------------------------------