vxe-gantt 3.4.1 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +53 -53
  3. package/es/ui/index.js +1 -1
  4. package/es/ui/src/log.js +1 -1
  5. package/lib/index.umd.js +49 -49
  6. package/lib/index.umd.min.js +1 -1
  7. package/lib/ui/index.js +1 -1
  8. package/lib/ui/index.min.js +1 -1
  9. package/lib/ui/src/log.js +1 -1
  10. package/lib/ui/src/log.min.js +1 -1
  11. package/package.json +88 -88
  12. package/packages/components.ts +22 -22
  13. package/packages/gantt/index.ts +32 -32
  14. package/packages/gantt/src/gantt-body.ts +323 -323
  15. package/packages/gantt/src/gantt-chart.ts +542 -542
  16. package/packages/gantt/src/gantt-footer.ts +73 -73
  17. package/packages/gantt/src/gantt-header.ts +162 -162
  18. package/packages/gantt/src/gantt-view.ts +1954 -1954
  19. package/packages/gantt/src/gantt.ts +2827 -2827
  20. package/packages/gantt/src/static.ts +35 -35
  21. package/packages/gantt/src/util.ts +47 -47
  22. package/packages/index.ts +8 -8
  23. package/packages/ui/index.ts +119 -119
  24. package/packages/ui/src/comp.ts +3 -3
  25. package/packages/ui/src/depend.ts +14 -14
  26. package/packages/ui/src/dom.ts +196 -196
  27. package/packages/ui/src/log.ts +8 -8
  28. package/packages/ui/src/utils.ts +67 -67
  29. package/packages/ui/src/vn.ts +13 -13
  30. package/styles/all.scss +3 -3
  31. package/styles/base.scss +2 -2
  32. package/styles/components/gantt-module/gantt-chart.scss +261 -261
  33. package/styles/components/gantt.scss +707 -707
  34. package/styles/helpers/baseMixin.scss +95 -95
  35. package/styles/helpers/baseVar.scss +3 -3
  36. package/styles/helpers/placement.scss +38 -38
  37. package/styles/theme/base.scss +14 -14
  38. package/styles/theme/dark.scss +8 -8
  39. package/styles/theme/light.scss +8 -8
  40. package/types/all.d.ts +16 -16
  41. package/types/index.d.ts +4 -4
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 xuliangzhan
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 xuliangzhan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,53 +1,53 @@
1
- # vxe-gantt
2
-
3
- [![star](https://gitee.com/x-extends/vxe-gantt/badge/star.svg?theme=gvp)](https://gitee.com/x-extends/vxe-gantt/stargazers)
4
- [![npm version](https://img.shields.io/npm/v/vxe-gantt.svg?style=flat-square)](https://www.npmjs.com/package/vxe-gantt)
5
- [![NodeJS with Webpack](https://github.com/x-extends/vxe-gantt/actions/workflows/webpack.yml/badge.svg)](https://github.com/x-extends/vxe-gantt/actions/workflows/webpack.yml)
6
- [![npm downloads](https://img.shields.io/npm/dt/vxe-gantt.svg?style=flat-square)](https://npm-stat.com/charts.html?package=vxe-gantt)
7
- [![issues](https://img.shields.io/github/issues/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/issues)
8
- [![issues closed](https://img.shields.io/github/issues-closed/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/issues?q=is%3Aissue+is%3Aclosed)
9
- [![pull requests](https://img.shields.io/github/issues-pr/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/pulls)
10
- [![pull requests closed](https://img.shields.io/github/issues-pr-closed/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/pulls?q=is%3Apr+is%3Aclosed)
11
- [![npm license](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)
12
-
13
- 一个基于 [Vxe UI](https://github.com/x-extends/vxe-pc-ui) 的基于 PC 端甘特图组件
14
-
15
- ## 浏览器支持
16
-
17
- ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png)
18
- --- | --- | --- | --- | --- |
19
- 80+ ✔ | 80+ ✔ | 90+ ✔ | 75+ ✔ | 10+ ✔ |
20
-
21
- ## 安装
22
-
23
- ```shell
24
- npm install vxe-pc-ui@3 vxe-table@3 vxe-gantt@3
25
- ```
26
-
27
- ```javascript
28
- import Vue from 'vue'
29
- // ...
30
- import VxeUIBase from 'vxe-pc-ui'
31
- import 'vxe-pc-ui/es/style.css'
32
-
33
- import VxeUITable from 'vxe-table'
34
- import 'vxe-table/es/style.css'
35
-
36
- import VxeUIGantt from 'vxe-gantt'
37
- import 'vxe-gantt/lib/style.css'
38
- // ...
39
-
40
- Vue.use(VxeUIBase)
41
- Vue.use(VxeUITable)
42
- Vue.use(VxeUIGantt)
43
- ```
44
-
45
- ## Contributors
46
-
47
- Thank you to everyone who contributed to this project.
48
-
49
- [![vxe-gantt](https://contrib.rocks/image?repo=x-extends/vxe-gantt)](https://github.com/x-extends/vxe-gantt/graphs/contributors)
50
-
51
- ## License
52
-
53
- [MIT](LICENSE) © 2019-present, Xu Liangzhan
1
+ # vxe-gantt
2
+
3
+ [![star](https://gitee.com/x-extends/vxe-gantt/badge/star.svg?theme=gvp)](https://gitee.com/x-extends/vxe-gantt/stargazers)
4
+ [![npm version](https://img.shields.io/npm/v/vxe-gantt.svg?style=flat-square)](https://www.npmjs.com/package/vxe-gantt)
5
+ [![NodeJS with Webpack](https://github.com/x-extends/vxe-gantt/actions/workflows/webpack.yml/badge.svg)](https://github.com/x-extends/vxe-gantt/actions/workflows/webpack.yml)
6
+ [![npm downloads](https://img.shields.io/npm/dt/vxe-gantt.svg?style=flat-square)](https://npm-stat.com/charts.html?package=vxe-gantt)
7
+ [![issues](https://img.shields.io/github/issues/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/issues)
8
+ [![issues closed](https://img.shields.io/github/issues-closed/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/issues?q=is%3Aissue+is%3Aclosed)
9
+ [![pull requests](https://img.shields.io/github/issues-pr/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/pulls)
10
+ [![pull requests closed](https://img.shields.io/github/issues-pr-closed/x-extends/vxe-gantt.svg)](https://github.com/x-extends/vxe-gantt/pulls?q=is%3Apr+is%3Aclosed)
11
+ [![npm license](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)
12
+
13
+ 一个基于 [Vxe UI](https://github.com/x-extends/vxe-pc-ui) 的基于 PC 端甘特图组件
14
+
15
+ ## 浏览器支持
16
+
17
+ ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png)
18
+ --- | --- | --- | --- | --- |
19
+ 80+ ✔ | 80+ ✔ | 90+ ✔ | 75+ ✔ | 10+ ✔ |
20
+
21
+ ## 安装
22
+
23
+ ```shell
24
+ npm install vxe-pc-ui@3 vxe-table@3 vxe-gantt@3
25
+ ```
26
+
27
+ ```javascript
28
+ import Vue from 'vue'
29
+ // ...
30
+ import VxeUIBase from 'vxe-pc-ui'
31
+ import 'vxe-pc-ui/es/style.css'
32
+
33
+ import VxeUITable from 'vxe-table'
34
+ import 'vxe-table/es/style.css'
35
+
36
+ import VxeUIGantt from 'vxe-gantt'
37
+ import 'vxe-gantt/lib/style.css'
38
+ // ...
39
+
40
+ Vue.use(VxeUIBase)
41
+ Vue.use(VxeUITable)
42
+ Vue.use(VxeUIGantt)
43
+ ```
44
+
45
+ ## Contributors
46
+
47
+ Thank you to everyone who contributed to this project.
48
+
49
+ [![vxe-gantt](https://contrib.rocks/image?repo=x-extends/vxe-gantt)](https://github.com/x-extends/vxe-gantt/graphs/contributors)
50
+
51
+ ## License
52
+
53
+ [MIT](LICENSE) © 2019-present, Xu Liangzhan
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { setConfig, setIcon } = VxeUI;
3
- VxeUI.ganttVersion = "3.4.1";
3
+ VxeUI.ganttVersion = "3.4.2";
4
4
  const ymdFormat = 'yyyy-MM-dd';
5
5
  const ymdhmsFormat = 'yyyy-MM-dd HH:mm:ss';
6
6
  setConfig({
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `gantt v${"3.4.1"}`;
3
+ const version = `gantt v${"3.4.2"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
package/lib/index.umd.js CHANGED
@@ -8468,7 +8468,7 @@ var core_ = __webpack_require__(4345);
8468
8468
 
8469
8469
  var setConfig = core_.VxeUI.setConfig,
8470
8470
  setIcon = core_.VxeUI.setIcon;
8471
- core_.VxeUI.ganttVersion = "3.4.1";
8471
+ core_.VxeUI.ganttVersion = "3.4.2";
8472
8472
  var ymdFormat = 'yyyy-MM-dd';
8473
8473
  var ymdhmsFormat = 'yyyy-MM-dd HH:mm:ss';
8474
8474
  setConfig({
@@ -8585,7 +8585,7 @@ var es_array_concat = __webpack_require__(8706);
8585
8585
  ;// ./packages/ui/src/log.ts
8586
8586
 
8587
8587
  var log = core_.VxeUI.log;
8588
- var version = "gantt v".concat("3.4.1");
8588
+ var version = "gantt v".concat("3.4.2");
8589
8589
  var warnLog = log.create('warn', version);
8590
8590
  var errLog = log.create('error', version);
8591
8591
  ;// ./packages/ui/src/depend.ts
@@ -9083,8 +9083,8 @@ function getFuncText(content, args) {
9083
9083
  function formatText(value, placeholder) {
9084
9084
  return '' + (isEmptyValue(value) ? placeholder ? core_.VxeUI.getConfig().emptyCell : '' : value);
9085
9085
  }
9086
- /**
9087
- * 判断值为:'' | null | undefined 时都属于空值
9086
+ /**
9087
+ * 判断值为:'' | null | undefined 时都属于空值
9088
9088
  */
9089
9089
  function eqEmptyValue(cellValue) {
9090
9090
  return cellValue === null || cellValue === undefined || cellValue === '';
@@ -9236,8 +9236,8 @@ function updateCellTitle(overflowElem, column) {
9236
9236
  overflowElem.setAttribute('title', content);
9237
9237
  }
9238
9238
  }
9239
- /**
9240
- * 检查触发源是否属于目标节点
9239
+ /**
9240
+ * 检查触发源是否属于目标节点
9241
9241
  */
9242
9242
  function getEventTargetNode(evnt, container, queryCls, queryMethod) {
9243
9243
  var targetElem;
@@ -9258,8 +9258,8 @@ function getEventTargetNode(evnt, container, queryCls, queryMethod) {
9258
9258
  flag: false
9259
9259
  };
9260
9260
  }
9261
- /**
9262
- * 获取元素相对于 document 的位置
9261
+ /**
9262
+ * 获取元素相对于 document 的位置
9263
9263
  */
9264
9264
  function getOffsetPos(elem, container) {
9265
9265
  return getNodeOffset(elem, container, {
@@ -10736,16 +10736,16 @@ function handleColumnHeader($xeGanttView) {
10736
10736
  groupCols: groupCols
10737
10737
  };
10738
10738
  }
10739
- /**
10740
- * 判断周的年份是否跨年
10739
+ /**
10740
+ * 判断周的年份是否跨年
10741
10741
  */
10742
10742
  function checkWeekOfsetYear(W, M) {
10743
10743
  return "".concat(W) === '1' && "".concat(M) === '12';
10744
10744
  }
10745
- /**
10746
- * 周维度,由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年,例如
10747
- * '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
10748
- * '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
10745
+ /**
10746
+ * 周维度,由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年,例如
10747
+ * '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
10748
+ * '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
10749
10749
  */
10750
10750
  function parseWeekObj(date, firstDay) {
10751
10751
  var currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringDate(date);
@@ -11780,8 +11780,8 @@ function handleScrollEvent($xeGanttView, evnt, isRollY, isRollX, scrollTop, scro
11780
11780
  }
11781
11781
  $xeGantt.dispatchEvent('scroll', evntParams, evnt);
11782
11782
  }
11783
- /**
11784
- * 同步表格滚动
11783
+ /**
11784
+ * 同步表格滚动
11785
11785
  */
11786
11786
  function syncTableScrollTop($xeGanttView, scrollTop) {
11787
11787
  var internalData = $xeGanttView.internalData;
@@ -12653,9 +12653,9 @@ function gantt_createReactData() {
12653
12653
  lineColor = _$xeGantt$computeTask.lineColor;
12654
12654
  return "".concat(lineType || '', "_").concat(lineWidth || '', "_").concat(lineStatus || '', "_").concat(lineColor || '');
12655
12655
  },
12656
- /**
12657
- * 已废弃,保留兼容
12658
- * @deprecated
12656
+ /**
12657
+ * 已废弃,保留兼容
12658
+ * @deprecated
12659
12659
  */
12660
12660
  computeTaskScaleConfs: function computeTaskScaleConfs() {
12661
12661
  return this.computeTaskViewScales;
@@ -13438,9 +13438,9 @@ function gantt_createReactData() {
13438
13438
  var $xeGantt = this;
13439
13439
  return $xeGantt.$refs.refElem;
13440
13440
  },
13441
- /**
13442
- * 提交指令,支持 code 或 button
13443
- * @param {String/Object} code 字符串或对象
13441
+ /**
13442
+ * 提交指令,支持 code 或 button
13443
+ * @param {String/Object} code 字符串或对象
13444
13444
  */
13445
13445
  commitProxy: function commitProxy(proxyTarget) {
13446
13446
  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
@@ -13450,9 +13450,9 @@ function gantt_createReactData() {
13450
13450
  var props = $xeGantt;
13451
13451
  var reactData = $xeGantt.reactData;
13452
13452
  var internalData = $xeGantt.internalData;
13453
- /**
13454
- * 已废弃
13455
- * @deprecated
13453
+ /**
13454
+ * 已废弃
13455
+ * @deprecated
13456
13456
  */
13457
13457
  var toolbar = props.toolbar;
13458
13458
  var showFooter = props.showFooter,
@@ -14200,8 +14200,8 @@ function gantt_createReactData() {
14200
14200
  reactData.showRightView = false;
14201
14201
  return $xeGantt.$nextTick();
14202
14202
  },
14203
- /**
14204
- * 关闭 bar tooltip
14203
+ /**
14204
+ * 关闭 bar tooltip
14205
14205
  */
14206
14206
  closeTaskBarTooltip: function closeTaskBarTooltip() {
14207
14207
  var $xeGantt = this;
@@ -14259,8 +14259,8 @@ function gantt_createReactData() {
14259
14259
  }
14260
14260
  return $xeGantt.$nextTick();
14261
14261
  },
14262
- /**
14263
- * 获取需要排除的高度
14262
+ /**
14263
+ * 获取需要排除的高度
14264
14264
  */
14265
14265
  getExcludeHeight: function getExcludeHeight() {
14266
14266
  var $xeGantt = this;
@@ -14830,8 +14830,8 @@ function gantt_createReactData() {
14830
14830
  }
14831
14831
  return gantt_renderEmptyElement($xeGantt);
14832
14832
  },
14833
- /**
14834
- * 渲染任务视图
14833
+ /**
14834
+ * 渲染任务视图
14835
14835
  */
14836
14836
  renderTaskView: function renderTaskView(h) {
14837
14837
  return h('div', {
@@ -14960,8 +14960,8 @@ function gantt_createReactData() {
14960
14960
  }, $xeGantt.renderChildLayout(h, footKeys)), h('div', {
14961
14961
  ref: 'refPopupContainerElem'
14962
14962
  }), h('div', {}, [
14963
- /**
14964
- * 任务条提示
14963
+ /**
14964
+ * 任务条提示
14965
14965
  */
14966
14966
  h(VxeUITooltipComponent, {
14967
14967
  key: 'gtp',
@@ -15104,39 +15104,39 @@ function gantt_createReactData() {
15104
15104
  }
15105
15105
  })); /* define-vxe-component end */
15106
15106
  ;// ./packages/gantt/src/static.ts
15107
- /**
15108
- * 依赖线枚举类型
15107
+ /**
15108
+ * 依赖线枚举类型
15109
15109
  */
15110
15110
  var VxeGanttDependencyType;
15111
15111
  (function (VxeGanttDependencyType) {
15112
- /**
15113
- * 结束后才开始,表示一个任务必须在另一个任务开始之前完成
15112
+ /**
15113
+ * 结束后才开始,表示一个任务必须在另一个任务开始之前完成
15114
15114
  */
15115
15115
  VxeGanttDependencyType[VxeGanttDependencyType["FinishToStart"] = 0] = "FinishToStart";
15116
- /**
15117
- * 开始到结束,表示从某个过程的开始到结束的整个过程
15116
+ /**
15117
+ * 开始到结束,表示从某个过程的开始到结束的整个过程
15118
15118
  */
15119
15119
  VxeGanttDependencyType[VxeGanttDependencyType["StartToFinish"] = 1] = "StartToFinish";
15120
- /**
15121
- * 开始后才开始,表示一个活动结束了,另一个活动才能开始,它们之间按先后顺序进行
15120
+ /**
15121
+ * 开始后才开始,表示一个活动结束了,另一个活动才能开始,它们之间按先后顺序进行
15122
15122
  */
15123
15123
  VxeGanttDependencyType[VxeGanttDependencyType["StartToStart"] = 2] = "StartToStart";
15124
- /**
15125
- * 完成到完成,表示一个任务必须在另一个任务完成之后才能完成
15124
+ /**
15125
+ * 完成到完成,表示一个任务必须在另一个任务完成之后才能完成
15126
15126
  */
15127
15127
  VxeGanttDependencyType[VxeGanttDependencyType["FinishToFinish"] = 3] = "FinishToFinish";
15128
15128
  })(VxeGanttDependencyType || (VxeGanttDependencyType = {}));
15129
- /**
15130
- * 任务渲染类型
15129
+ /**
15130
+ * 任务渲染类型
15131
15131
  */
15132
15132
  var VxeGanttTaskType;
15133
15133
  (function (VxeGanttTaskType) {
15134
- /**
15135
- * 里程碑类型,该类型节点不需要结束日期
15134
+ /**
15135
+ * 里程碑类型,该类型节点不需要结束日期
15136
15136
  */
15137
15137
  VxeGanttTaskType["Milestone"] = "milestone";
15138
- /**
15139
- * 子视图类型,该类型会将子任务渲染到一行,无需开始日期和结束日期
15138
+ /**
15139
+ * 子视图类型,该类型会将子任务渲染到一行,无需开始日期和结束日期
15140
15140
  */
15141
15141
  VxeGanttTaskType["Subview"] = "subview";
15142
15142
  })(VxeGanttTaskType || (VxeGanttTaskType = {}));