@jetlinks-web/components 2.0.2 → 2.0.3

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 (237) hide show
  1. package/es/AMap/Map.js +124 -0
  2. package/es/AMap/index.js +2 -0
  3. package/es/AMap/util.js +56 -0
  4. package/es/BadgeStatus/Badge.js +54 -0
  5. package/es/BadgeStatus/color.js +21 -0
  6. package/es/BadgeStatus/index.js +3 -0
  7. package/es/CardSelect/CardSelect.js +123 -0
  8. package/es/CardSelect/index.js +2 -0
  9. package/es/CheckButton/CheckButton.js +121 -0
  10. package/es/CheckButton/index.js +2 -0
  11. package/es/ConfigProvider/context.js +12 -0
  12. package/es/ConfigProvider/index.js +31 -0
  13. package/es/Echarts/Echarts.js +47 -0
  14. package/es/Echarts/index.js +2 -0
  15. package/es/Ellipsis/Ellipsis.js +189 -0
  16. package/es/Ellipsis/index.js +2 -0
  17. package/es/Empty/Empty.js +56 -0
  18. package/es/Empty/image.js +2 -0
  19. package/es/Empty/index.js +2 -0
  20. package/es/FullPage/FullPage.js +31 -0
  21. package/es/FullPage/index.js +2 -0
  22. package/es/Icon/icon.js +42 -0
  23. package/{src/Icon/index.ts → es/Icon/index.js} +2 -3
  24. package/es/MonacoEditor/Monaco.js +238 -0
  25. package/es/MonacoEditor/index.js +2 -0
  26. package/es/PermissionButton/index.js +117 -0
  27. package/es/ProLayout/Basic/BasicLayout.js +259 -0
  28. package/es/ProLayout/Basic/Header.js +97 -0
  29. package/es/ProLayout/PageContainer/index.js +324 -0
  30. package/es/ProLayout/PageContainer/typings.js +1 -0
  31. package/es/ProLayout/RouteContext.js +22 -0
  32. package/es/ProLayout/SiderMenu/BaseMenu.js +285 -0
  33. package/es/ProLayout/SiderMenu/SiderMenu.js +278 -0
  34. package/es/ProLayout/SiderMenu/index.js +2 -0
  35. package/es/ProLayout/SiderMenu/typings.js +1 -0
  36. package/es/ProLayout/TopHeader/index.js +163 -0
  37. package/es/ProLayout/defaultSettings.js +66 -0
  38. package/{src/ProLayout/index.ts → es/ProLayout/index.js} +4 -6
  39. package/{src → es}/ProLayout/style/default.less +4 -4
  40. package/es/ProLayout/style/index.js +1 -0
  41. package/es/ProLayout/typings.js +1 -0
  42. package/es/ProLayout/util.js +61 -0
  43. package/es/ProTable/index.js +411 -0
  44. package/es/ProTable/proTableTypes.js +11 -0
  45. package/es/ProTable/style/index.css +65 -0
  46. package/es/ProTable/style/index.js +1 -0
  47. package/es/Scrollbar/Bar.js +114 -0
  48. package/es/Scrollbar/Scrollbar.js +212 -0
  49. package/es/Scrollbar/Thumb.js +189 -0
  50. package/es/Scrollbar/constants.js +1 -0
  51. package/es/Scrollbar/index.js +2 -0
  52. package/es/Scrollbar/scrollbarProps.js +100 -0
  53. package/es/Scrollbar/thumbProps.js +10 -0
  54. package/es/Scrollbar/util.js +30 -0
  55. package/es/Search/Advanced/History.js +183 -0
  56. package/es/Search/Advanced/SaveHistory.js +153 -0
  57. package/es/Search/Advanced/index.js +520 -0
  58. package/es/Search/Item.js +497 -0
  59. package/es/Search/Search.js +249 -0
  60. package/es/Search/hooks/index.js +1 -0
  61. package/es/Search/hooks/useSearchItems.js +40 -0
  62. package/es/Search/index.js +4 -0
  63. package/es/Search/setting.js +91 -0
  64. package/es/Search/style/Item.less +33 -0
  65. package/es/Search/style/Search.less +179 -0
  66. package/es/Search/style/index.js +2 -0
  67. package/es/Search/typing.js +1 -0
  68. package/es/Search/util.js +234 -0
  69. package/es/ValueItem/ValueItem.js +233 -0
  70. package/es/ValueItem/index.js +2 -0
  71. package/es/ValueItem/util.js +16 -0
  72. package/es/index.js +24 -0
  73. package/es/style/index.js +3 -0
  74. package/es/style/variable.css +0 -0
  75. package/{src → es}/style/variable.less +0 -2
  76. package/es/style.js +3 -0
  77. package/lib/AMap/Map.js +124 -0
  78. package/lib/AMap/index.js +9 -0
  79. package/lib/AMap/util.js +62 -0
  80. package/lib/BadgeStatus/Badge.js +54 -0
  81. package/lib/BadgeStatus/color.js +27 -0
  82. package/lib/BadgeStatus/index.js +22 -0
  83. package/lib/CardSelect/CardSelect.js +123 -0
  84. package/lib/CardSelect/index.js +9 -0
  85. package/lib/CheckButton/CheckButton.js +121 -0
  86. package/lib/CheckButton/index.js +9 -0
  87. package/lib/ConfigProvider/context.js +19 -0
  88. package/lib/ConfigProvider/index.js +37 -0
  89. package/lib/Echarts/Echarts.js +47 -0
  90. package/lib/Echarts/index.js +9 -0
  91. package/lib/Ellipsis/Ellipsis.js +189 -0
  92. package/lib/Ellipsis/index.js +9 -0
  93. package/lib/Empty/Empty.js +56 -0
  94. package/lib/Empty/image.js +8 -0
  95. package/lib/Empty/index.js +9 -0
  96. package/lib/FullPage/FullPage.js +31 -0
  97. package/lib/FullPage/index.js +9 -0
  98. package/lib/Icon/icon.js +52 -0
  99. package/lib/Icon/index.js +9 -0
  100. package/lib/MonacoEditor/Monaco.js +238 -0
  101. package/lib/MonacoEditor/index.js +9 -0
  102. package/lib/PermissionButton/index.js +124 -0
  103. package/lib/ProLayout/Basic/BasicLayout.js +268 -0
  104. package/lib/ProLayout/Basic/BasicLayout.less +66 -0
  105. package/lib/ProLayout/Basic/Header.js +103 -0
  106. package/lib/ProLayout/Basic/Header.less +8 -0
  107. package/lib/ProLayout/PageContainer/index.js +327 -0
  108. package/lib/ProLayout/PageContainer/index.less +103 -0
  109. package/lib/ProLayout/PageContainer/typings.js +5 -0
  110. package/lib/ProLayout/RouteContext.js +28 -0
  111. package/lib/ProLayout/SiderMenu/BaseMenu.js +290 -0
  112. package/lib/ProLayout/SiderMenu/SiderMenu.js +287 -0
  113. package/lib/ProLayout/SiderMenu/index.js +20 -0
  114. package/lib/ProLayout/SiderMenu/index.less +212 -0
  115. package/lib/ProLayout/SiderMenu/typings.js +5 -0
  116. package/lib/ProLayout/TopHeader/index.js +168 -0
  117. package/lib/ProLayout/TopHeader/index.less +174 -0
  118. package/lib/ProLayout/defaultSettings.js +72 -0
  119. package/lib/ProLayout/index.js +16 -0
  120. package/lib/ProLayout/style/default.less +4 -0
  121. package/lib/ProLayout/style/index.js +3 -0
  122. package/lib/ProLayout/style/style.less +7 -0
  123. package/lib/ProLayout/typings.js +5 -0
  124. package/lib/ProLayout/util.js +72 -0
  125. package/lib/ProTable/index.js +417 -0
  126. package/lib/ProTable/proTableTypes.js +17 -0
  127. package/lib/ProTable/style/index.css +65 -0
  128. package/lib/ProTable/style/index.js +3 -0
  129. package/lib/ProTable/style/index.less +92 -0
  130. package/lib/Scrollbar/Bar.js +114 -0
  131. package/lib/Scrollbar/Scrollbar.js +212 -0
  132. package/lib/Scrollbar/Thumb.js +189 -0
  133. package/lib/Scrollbar/constants.js +7 -0
  134. package/lib/Scrollbar/index.js +9 -0
  135. package/{src/Scrollbar/scrollbar.ts → lib/Scrollbar/scrollbarProps.js} +106 -108
  136. package/lib/Scrollbar/thumbProps.js +16 -0
  137. package/lib/Scrollbar/util.js +37 -0
  138. package/lib/Search/Advanced/History.js +183 -0
  139. package/lib/Search/Advanced/SaveHistory.js +153 -0
  140. package/lib/Search/Advanced/index.js +520 -0
  141. package/lib/Search/Item.js +497 -0
  142. package/lib/Search/Search.js +249 -0
  143. package/lib/Search/hooks/index.js +16 -0
  144. package/lib/Search/hooks/useSearchItems.js +47 -0
  145. package/lib/Search/index.js +16 -0
  146. package/lib/Search/setting.js +97 -0
  147. package/lib/Search/style/Item.less +33 -0
  148. package/lib/Search/style/Search.less +179 -0
  149. package/lib/Search/style/index.js +4 -0
  150. package/lib/Search/typing.js +5 -0
  151. package/lib/Search/util.js +241 -0
  152. package/lib/ValueItem/ValueItem.js +233 -0
  153. package/lib/ValueItem/index.js +9 -0
  154. package/lib/ValueItem/util.js +22 -0
  155. package/lib/index.js +158 -0
  156. package/lib/style/components.less +1 -0
  157. package/lib/style/index.js +4 -0
  158. package/lib/style/variable.css +0 -0
  159. package/lib/style/variable.less +2 -0
  160. package/lib/style.js +5 -0
  161. package/package.json +122 -13
  162. package/index.ts +0 -64
  163. package/src/AMap/Map.vue +0 -110
  164. package/src/AMap/index.ts +0 -1
  165. package/src/AMap/util.ts +0 -56
  166. package/src/BadgeStatus/Badge.vue +0 -41
  167. package/src/BadgeStatus/color.ts +0 -25
  168. package/src/BadgeStatus/index.ts +0 -4
  169. package/src/CardSelect/CardSelect.vue +0 -136
  170. package/src/CardSelect/index.ts +0 -3
  171. package/src/CheckButton/CheckButton.vue +0 -146
  172. package/src/CheckButton/index.md +0 -27
  173. package/src/CheckButton/index.ts +0 -3
  174. package/src/ConfigProvider/context.ts +0 -17
  175. package/src/ConfigProvider/index.tsx +0 -42
  176. package/src/Echarts/Echarts.vue +0 -43
  177. package/src/Echarts/index.ts +0 -3
  178. package/src/Ellipsis/Ellipsis.vue +0 -182
  179. package/src/Ellipsis/index.ts +0 -3
  180. package/src/Empty/Empty.vue +0 -43
  181. package/src/Empty/image.ts +0 -3
  182. package/src/Empty/index.ts +0 -2
  183. package/src/FullPage/FullPage.vue +0 -30
  184. package/src/FullPage/index.ts +0 -3
  185. package/src/Icon/icon.tsx +0 -40
  186. package/src/MonacoEditor/Monaco.vue +0 -242
  187. package/src/MonacoEditor/index.md +0 -26
  188. package/src/MonacoEditor/index.ts +0 -2
  189. package/src/PermissionButton/index.tsx +0 -110
  190. package/src/ProLayout/Basic/BasicLayout.tsx +0 -392
  191. package/src/ProLayout/Basic/Header.tsx +0 -115
  192. package/src/ProLayout/PageContainer/index.tsx +0 -441
  193. package/src/ProLayout/PageContainer/typings.ts +0 -56
  194. package/src/ProLayout/RouteContext.ts +0 -87
  195. package/src/ProLayout/SiderMenu/BaseMenu.tsx +0 -296
  196. package/src/ProLayout/SiderMenu/SiderMenu.tsx +0 -320
  197. package/src/ProLayout/SiderMenu/index.ts +0 -2
  198. package/src/ProLayout/SiderMenu/typings.ts +0 -49
  199. package/src/ProLayout/TopHeader/index.tsx +0 -210
  200. package/src/ProLayout/defaultSettings.ts +0 -106
  201. package/src/ProLayout/style/index.ts +0 -1
  202. package/src/ProLayout/typings.ts +0 -87
  203. package/src/ProLayout/util.ts +0 -64
  204. package/src/ProTable/index.md +0 -53
  205. package/src/ProTable/index.tsx +0 -551
  206. package/src/ProTable/proTableTypes.ts +0 -70
  207. package/src/ProTable/style/index.ts +0 -1
  208. package/src/Scrollbar/Bar.vue +0 -75
  209. package/src/Scrollbar/Scrollbar.vue +0 -260
  210. package/src/Scrollbar/Thumb.vue +0 -163
  211. package/src/Scrollbar/constants.ts +0 -10
  212. package/src/Scrollbar/index.ts +0 -4
  213. package/src/Scrollbar/thumb.ts +0 -16
  214. package/src/Scrollbar/util.ts +0 -38
  215. package/src/Search/Advanced/History.vue +0 -140
  216. package/src/Search/Advanced/SaveHistory.vue +0 -108
  217. package/src/Search/Advanced/index.vue +0 -435
  218. package/src/Search/Item.vue +0 -525
  219. package/src/Search/Search.vue +0 -398
  220. package/src/Search/hooks/index.ts +0 -1
  221. package/src/Search/hooks/useSearchItems.ts +0 -68
  222. package/src/Search/index.md +0 -57
  223. package/src/Search/index.ts +0 -5
  224. package/src/Search/setting.ts +0 -55
  225. package/src/Search/typing.ts +0 -76
  226. package/src/Search/util.ts +0 -263
  227. package/src/ValueItem/ValueItem.vue +0 -192
  228. package/src/ValueItem/index.ts +0 -3
  229. package/src/ValueItem/util.ts +0 -16
  230. package/src/style/index.ts +0 -3
  231. /package/{src → es}/ProLayout/Basic/BasicLayout.less +0 -0
  232. /package/{src → es}/ProLayout/Basic/Header.less +0 -0
  233. /package/{src → es}/ProLayout/PageContainer/index.less +0 -0
  234. /package/{src → es}/ProLayout/SiderMenu/index.less +0 -0
  235. /package/{src → es}/ProLayout/TopHeader/index.less +0 -0
  236. /package/{src → es}/ProLayout/style/style.less +0 -0
  237. /package/{src → es}/ProTable/style/index.less +0 -0
@@ -0,0 +1,92 @@
1
+ @import '../../style/variable.less';
2
+ //@import 'ant-design-vue/es/style/themes/variable.less';
3
+
4
+ .jtable-body-spin {
5
+ min-height: 100%;
6
+ width: 100%;
7
+ padding: 16px 24px 24px;
8
+ background-color: #fff;
9
+
10
+ .ant-spin-nested-loading {
11
+ height: 100%;
12
+ .ant-spin-container {
13
+ height: 100%;
14
+ }
15
+ }
16
+
17
+ .jtable-body {
18
+ width: 100%;
19
+ box-sizing: border-box;
20
+ height: 100%;
21
+ display: flex;
22
+ flex-direction: column;
23
+
24
+ .jtable-body-header {
25
+ display: flex;
26
+ justify-content: space-between;
27
+ align-items: center;
28
+
29
+ .jtable-body-header-right {
30
+ display: flex;
31
+ gap: 8px;
32
+ align-items: center;
33
+
34
+ .jtable-body-header-right-button {
35
+ .right-button-icon {
36
+ font-size: 16px;
37
+ color: #d9d9d9;
38
+ }
39
+
40
+ .ant-radio-button-wrapper {
41
+ padding: 0 8px;
42
+ }
43
+
44
+ .ant-radio-button-wrapper-checked {
45
+ .right-button-icon {
46
+ color: @primary-color;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ .jtable-content {
54
+ flex: 1;
55
+ padding: 16px 0;
56
+
57
+ .jtable-alert {
58
+ margin-bottom: 16px;
59
+ }
60
+
61
+ .jtable-card {
62
+ .jtable-card-items {
63
+ display: grid;
64
+ grid-gap: 26px;
65
+
66
+ .jtable-card-item {
67
+ display: flex;
68
+ min-width: 0;
69
+ }
70
+ }
71
+ }
72
+ }
73
+
74
+ .jtable-pagination {
75
+ // position: absolute;
76
+ // background-color: white;
77
+ // padding: 10px 0;
78
+ // right: 0;
79
+ // bottom: 0;
80
+ width: 100%;
81
+ display: flex;
82
+ justify-content: flex-end;
83
+ }
84
+
85
+ .j-table-empty {
86
+ display: flex;
87
+ justify-content: center;
88
+ align-items: center;
89
+ margin: 10% 0;
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,114 @@
1
+ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) {
2
+ const op = ops[i];
3
+ const fn = ops[i + 1];
4
+ i += 2;
5
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
6
+ return undefined;
7
+ }
8
+ if (op === 'access' || op === 'optionalAccess') {
9
+ lastAccessLHS = value;
10
+ value = fn(value);
11
+ }
12
+ else if (op === 'call' || op === 'optionalCall') {
13
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
14
+ lastAccessLHS = undefined;
15
+ }
16
+ } return value; }
17
+ /* Analyzed bindings: {
18
+ "always": "props",
19
+ "minSize": "props",
20
+ "inject": "setup-const",
21
+ "ref": "setup-const",
22
+ "GAP": "setup-maybe-ref",
23
+ "Thumb": "setup-const",
24
+ "scrollbarContextKey": "setup-maybe-ref",
25
+ "props": "setup-reactive-const",
26
+ "scrollbar": "setup-maybe-ref",
27
+ "moveX": "setup-ref",
28
+ "moveY": "setup-ref",
29
+ "sizeWidth": "setup-ref",
30
+ "sizeHeight": "setup-ref",
31
+ "ratioY": "setup-ref",
32
+ "ratioX": "setup-ref",
33
+ "handleScroll": "setup-const",
34
+ "update": "setup-const"
35
+ } */
36
+ import { defineComponent as _defineComponent } from 'vue';
37
+ import { createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
38
+ import { inject, ref } from 'vue';
39
+ import { GAP } from './util';
40
+ import Thumb from './Thumb.js';
41
+ import { scrollbarContextKey } from './constants';
42
+ const __sfc_main__ = _defineComponent({
43
+ props: {
44
+ always: {
45
+ type: Boolean,
46
+ default: true,
47
+ },
48
+ minSize: {
49
+ type: Number,
50
+ required: true,
51
+ }
52
+ },
53
+ setup(__props, { expose: __expose }) {
54
+ const props = __props;
55
+ const scrollbar = inject(scrollbarContextKey);
56
+ const moveX = ref(0);
57
+ const moveY = ref(0);
58
+ const sizeWidth = ref('');
59
+ const sizeHeight = ref('');
60
+ const ratioY = ref(1);
61
+ const ratioX = ref(1);
62
+ const handleScroll = (wrap) => {
63
+ if (wrap) {
64
+ const offsetHeight = wrap.offsetHeight - GAP;
65
+ const offsetWidth = wrap.offsetWidth - GAP;
66
+ moveY.value = ((wrap.scrollTop * 100) / offsetHeight) * ratioY.value;
67
+ moveX.value = ((wrap.scrollLeft * 100) / offsetWidth) * ratioX.value;
68
+ }
69
+ };
70
+ const update = () => {
71
+ const wrap = _optionalChain([scrollbar, 'optionalAccess', _ => _.wrapElement]);
72
+ if (!wrap)
73
+ return;
74
+ const offsetHeight = wrap.offsetHeight - GAP;
75
+ const offsetWidth = wrap.offsetWidth - GAP;
76
+ const originalHeight = offsetHeight ** 2 / wrap.scrollHeight;
77
+ const originalWidth = offsetWidth ** 2 / wrap.scrollWidth;
78
+ const height = Math.max(originalHeight, props.minSize);
79
+ const width = Math.max(originalWidth, props.minSize);
80
+ ratioY.value =
81
+ originalHeight /
82
+ (offsetHeight - originalHeight) /
83
+ (height / (offsetHeight - height));
84
+ ratioX.value =
85
+ originalWidth /
86
+ (offsetWidth - originalWidth) /
87
+ (width / (offsetWidth - width));
88
+ sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : '';
89
+ sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : '';
90
+ };
91
+ __expose({
92
+ handleScroll,
93
+ update,
94
+ });
95
+ return (_ctx, _cache) => {
96
+ return (_openBlock(), _createElementBlock(_Fragment, null, [
97
+ _createVNode(Thumb, {
98
+ move: moveX.value,
99
+ ratio: ratioX.value,
100
+ size: sizeWidth.value,
101
+ always: __props.always
102
+ }, null, 8 /* PROPS */, ["move", "ratio", "size", "always"]),
103
+ _createVNode(Thumb, {
104
+ move: moveY.value,
105
+ ratio: ratioY.value,
106
+ size: sizeHeight.value,
107
+ vertical: "",
108
+ always: __props.always
109
+ }, null, 8 /* PROPS */, ["move", "ratio", "size", "always"])
110
+ ], 64 /* STABLE_FRAGMENT */));
111
+ };
112
+ }
113
+ });
114
+ export default __sfc_main__;
@@ -0,0 +1,212 @@
1
+ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) {
2
+ const op = ops[i];
3
+ const fn = ops[i + 1];
4
+ i += 2;
5
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
6
+ return undefined;
7
+ }
8
+ if (op === 'access' || op === 'optionalAccess') {
9
+ lastAccessLHS = value;
10
+ value = fn(value);
11
+ }
12
+ else if (op === 'call' || op === 'optionalCall') {
13
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
14
+ lastAccessLHS = undefined;
15
+ }
16
+ } return value; }
17
+ /* Analyzed bindings: {
18
+ "computed": "setup-const",
19
+ "nextTick": "setup-const",
20
+ "onMounted": "setup-const",
21
+ "onUpdated": "setup-const",
22
+ "provide": "setup-const",
23
+ "reactive": "setup-const",
24
+ "ref": "setup-const",
25
+ "watch": "setup-const",
26
+ "useEventListener": "setup-maybe-ref",
27
+ "useResizeObserver": "setup-maybe-ref",
28
+ "isNumber": "setup-maybe-ref",
29
+ "isObject": "setup-maybe-ref",
30
+ "Bar": "setup-const",
31
+ "scrollbarContextKey": "setup-maybe-ref",
32
+ "scrollbarEmits": "setup-maybe-ref",
33
+ "scrollbarProps": "setup-maybe-ref",
34
+ "BarInstance": "setup-maybe-ref",
35
+ "COMPONENT_NAME": "literal-const",
36
+ "props": "setup-reactive-const",
37
+ "emit": "setup-const",
38
+ "stopResizeObserver": "setup-let",
39
+ "stopResizeListener": "setup-let",
40
+ "scrollbarRef": "setup-ref",
41
+ "wrapRef": "setup-ref",
42
+ "resizeRef": "setup-ref",
43
+ "barRef": "setup-ref",
44
+ "wrapStyle": "setup-ref",
45
+ "wrapKls": "setup-ref",
46
+ "resizeKls": "setup-ref",
47
+ "handleScroll": "setup-const",
48
+ "scrollTo": "setup-const",
49
+ "setScrollTop": "setup-const",
50
+ "setScrollLeft": "setup-const",
51
+ "update": "setup-const"
52
+ } */
53
+ import { defineComponent as _defineComponent } from 'vue';
54
+ import { renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from "vue";
55
+ import { computed, nextTick, onMounted, onUpdated, provide, reactive, ref, watch, } from 'vue';
56
+ import { useEventListener, useResizeObserver } from '@vueuse/core';
57
+ import { isNumber, isObject } from '@jetlinks-web/utils';
58
+ import Bar from './Bar.js';
59
+ import { scrollbarContextKey } from './constants';
60
+ import { scrollbarEmits, scrollbarProps, } from './scrollbarProps';
61
+ const COMPONENT_NAME = 'JScrollbar';
62
+ const __sfc_main__ = _defineComponent({
63
+ ...{
64
+ name: COMPONENT_NAME,
65
+ },
66
+ props: scrollbarProps,
67
+ emits: scrollbarEmits,
68
+ setup(__props, { expose: __expose, emit: __emit }) {
69
+ const props = __props;
70
+ const emit = __emit;
71
+ let stopResizeObserver = undefined;
72
+ let stopResizeListener = undefined;
73
+ const scrollbarRef = ref();
74
+ const wrapRef = ref();
75
+ const resizeRef = ref();
76
+ const barRef = ref();
77
+ const wrapStyle = computed(() => {
78
+ const style = {};
79
+ if (props.height)
80
+ style.height = `${props.height}px`;
81
+ if (props.maxHeight)
82
+ style.maxHeight = `${props.maxHeight}px`;
83
+ return [props.wrapStyle, style];
84
+ });
85
+ const wrapKls = computed(() => {
86
+ return [
87
+ 'j-scrollbar__wrap',
88
+ 'j-scrollbar__wrap--hidden-default'
89
+ ];
90
+ });
91
+ const resizeKls = computed(() => {
92
+ return ['j-scrollbar__view', props.viewClass];
93
+ });
94
+ const handleScroll = () => {
95
+ if (wrapRef.value) {
96
+ _optionalChain([barRef, 'access', _2 => _2.value, 'optionalAccess', _3 => _3.handleScroll, 'call', _4 => _4(wrapRef.value)]);
97
+ emit('scroll', {
98
+ scrollTop: wrapRef.value.scrollTop,
99
+ scrollLeft: wrapRef.value.scrollLeft,
100
+ });
101
+ }
102
+ };
103
+ function scrollTo(arg1, arg2) {
104
+ if (isObject(arg1)) {
105
+ wrapRef.value.scrollTo(arg1);
106
+ }
107
+ else if (isNumber(arg1) && isNumber(arg2)) {
108
+ wrapRef.value.scrollTo(arg1, arg2);
109
+ }
110
+ }
111
+ const setScrollTop = (value) => {
112
+ if (!isNumber(value)) {
113
+ throw new Error('value must be a number');
114
+ }
115
+ wrapRef.value.scrollTop = value;
116
+ };
117
+ const setScrollLeft = (value) => {
118
+ if (!isNumber(value)) {
119
+ throw new Error(`[${COMPONENT_NAME}] value must be a number`);
120
+ }
121
+ wrapRef.value.scrollLeft = value;
122
+ };
123
+ const update = () => {
124
+ _optionalChain([barRef, 'access', _5 => _5.value, 'optionalAccess', _6 => _6.update, 'call', _7 => _7()]);
125
+ };
126
+ watch(() => props.noresize, (noResize) => {
127
+ if (noResize) {
128
+ _optionalChain([stopResizeObserver, 'optionalCall', _8 => _8()]);
129
+ _optionalChain([stopResizeListener, 'optionalCall', _9 => _9()]);
130
+ }
131
+ else {
132
+ ;
133
+ ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update));
134
+ stopResizeListener = useEventListener('resize', update);
135
+ }
136
+ }, { immediate: true });
137
+ watch(() => [props.maxHeight, props.height], () => {
138
+ if (!props.native)
139
+ nextTick(() => {
140
+ update();
141
+ if (wrapRef.value) {
142
+ _optionalChain([barRef, 'access', _10 => _10.value, 'optionalAccess', _11 => _11.handleScroll, 'call', _12 => _12(wrapRef.value)]);
143
+ }
144
+ });
145
+ });
146
+ provide(scrollbarContextKey, reactive({
147
+ scrollbarElement: scrollbarRef,
148
+ wrapElement: wrapRef,
149
+ }));
150
+ onMounted(() => {
151
+ if (!props.native)
152
+ nextTick(() => {
153
+ update();
154
+ });
155
+ });
156
+ onUpdated(() => update());
157
+ __expose({
158
+ /** @description scrollbar wrap ref */
159
+ wrapRef,
160
+ /** @description update scrollbar state manually */
161
+ update,
162
+ /** @description scrolls to a particular set of coordinates */
163
+ scrollTo,
164
+ /** @description set distance to scroll top */
165
+ setScrollTop,
166
+ /** @description set distance to scroll left */
167
+ setScrollLeft,
168
+ /** @description handle scroll event */
169
+ handleScroll,
170
+ });
171
+ return (_ctx, _cache) => {
172
+ return (_openBlock(), _createElementBlock("div", {
173
+ ref_key: "scrollbarRef",
174
+ ref: scrollbarRef,
175
+ class: "j-scrollbar"
176
+ }, [
177
+ _createElementVNode("div", {
178
+ ref_key: "wrapRef",
179
+ ref: wrapRef,
180
+ class: _normalizeClass(wrapKls.value),
181
+ style: _normalizeStyle(wrapStyle.value),
182
+ onScroll: handleScroll
183
+ }, [
184
+ (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.tag), {
185
+ id: _ctx.id,
186
+ ref_key: "resizeRef",
187
+ ref: resizeRef,
188
+ class: _normalizeClass(resizeKls.value),
189
+ role: _ctx.role,
190
+ "aria-label": _ctx.ariaLabel,
191
+ "aria-orientation": _ctx.ariaOrientation
192
+ }, {
193
+ default: _withCtx(() => [
194
+ _renderSlot(_ctx.$slots, "default")
195
+ ]),
196
+ _: 3 /* FORWARDED */
197
+ }, 8 /* PROPS */, ["id", "class", "role", "aria-label", "aria-orientation"]))
198
+ ], 38 /* CLASS, STYLE, NEED_HYDRATION */),
199
+ (!_ctx.native)
200
+ ? (_openBlock(), _createBlock(Bar, {
201
+ key: 0,
202
+ ref_key: "barRef",
203
+ ref: barRef,
204
+ always: _ctx.always,
205
+ "min-size": _ctx.minSize
206
+ }, null, 8 /* PROPS */, ["always", "min-size"]))
207
+ : _createCommentVNode("v-if", true)
208
+ ], 512 /* NEED_PATCH */));
209
+ };
210
+ }
211
+ });
212
+ export default __sfc_main__;
@@ -0,0 +1,189 @@
1
+ function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) {
2
+ const op = ops[i];
3
+ const fn = ops[i + 1];
4
+ i += 2;
5
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
6
+ return undefined;
7
+ }
8
+ if (op === 'access' || op === 'optionalAccess') {
9
+ lastAccessLHS = value;
10
+ value = fn(value);
11
+ }
12
+ else if (op === 'call' || op === 'optionalCall') {
13
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
14
+ lastAccessLHS = undefined;
15
+ }
16
+ } return value; }
17
+ /* Analyzed bindings: {
18
+ "computed": "setup-const",
19
+ "inject": "setup-const",
20
+ "onBeforeUnmount": "setup-const",
21
+ "ref": "setup-const",
22
+ "toRef": "setup-const",
23
+ "useEventListener": "setup-maybe-ref",
24
+ "isClient": "setup-maybe-ref",
25
+ "scrollbarContextKey": "setup-maybe-ref",
26
+ "BAR_MAP": "setup-maybe-ref",
27
+ "renderThumbStyle": "setup-maybe-ref",
28
+ "thumbProps": "setup-maybe-ref",
29
+ "props": "setup-reactive-const",
30
+ "scrollbar": "setup-maybe-ref",
31
+ "instance": "setup-ref",
32
+ "thumb": "setup-ref",
33
+ "thumbState": "setup-ref",
34
+ "visible": "setup-ref",
35
+ "cursorDown": "setup-let",
36
+ "cursorLeave": "setup-let",
37
+ "originalOnSelectStart": "setup-let",
38
+ "bar": "setup-ref",
39
+ "thumbStyle": "setup-ref",
40
+ "offsetRatio": "setup-ref",
41
+ "clickThumbHandler": "setup-const",
42
+ "clickTrackHandler": "setup-const",
43
+ "startDrag": "setup-const",
44
+ "mouseMoveDocumentHandler": "setup-const",
45
+ "mouseUpDocumentHandler": "setup-const",
46
+ "mouseMoveScrollbarHandler": "setup-const",
47
+ "mouseLeaveScrollbarHandler": "setup-const",
48
+ "restoreOnselectstart": "setup-const"
49
+ } */
50
+ import { defineComponent as _defineComponent } from 'vue';
51
+ import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, vShow as _vShow, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from "vue";
52
+ import { computed, inject, onBeforeUnmount, ref, toRef } from 'vue';
53
+ import { useEventListener } from '@vueuse/core';
54
+ import { isClient } from '@jetlinks-web/utils';
55
+ import { scrollbarContextKey } from './constants';
56
+ import { BAR_MAP, renderThumbStyle } from './util';
57
+ import { thumbProps } from './thumbProps';
58
+ const __sfc_main__ = _defineComponent({
59
+ props: thumbProps,
60
+ setup(__props) {
61
+ const props = __props;
62
+ const scrollbar = inject(scrollbarContextKey);
63
+ if (!scrollbar)
64
+ throw new Error('can not inject scrollbar context');
65
+ const instance = ref();
66
+ const thumb = ref();
67
+ const thumbState = ref({});
68
+ const visible = ref(false);
69
+ let cursorDown = false;
70
+ let cursorLeave = false;
71
+ let originalOnSelectStart = isClient ? document.onselectstart : null;
72
+ const bar = computed(() => BAR_MAP[props.vertical ? 'vertical' : 'horizontal']);
73
+ const thumbStyle = computed(() => renderThumbStyle({
74
+ size: props.size,
75
+ move: props.move,
76
+ bar: bar.value,
77
+ }));
78
+ const offsetRatio = computed(() => instance.value[bar.value.offset] ** 2 /
79
+ scrollbar.wrapElement[bar.value.scrollSize] /
80
+ props.ratio /
81
+ Thumb.value[bar.value.offset]);
82
+ const clickThumbHandler = (e) => {
83
+ // prevent click event of middle and right button
84
+ e.stopPropagation();
85
+ if (e.ctrlKey || [1, 2].includes(e.button))
86
+ return;
87
+ _optionalChain([window, 'access', _2 => _2.getSelection, 'call', _3 => _3(), 'optionalAccess', _4 => _4.removeAllRanges, 'call', _5 => _5()]);
88
+ startDrag(e);
89
+ const el = e.currentTarget;
90
+ if (!el)
91
+ return;
92
+ thumbState.value[bar.value.axis] =
93
+ el[bar.value.offset] -
94
+ (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]);
95
+ };
96
+ const clickTrackHandler = (e) => {
97
+ if (!Thumb.value || !instance.value || !scrollbar.wrapElement)
98
+ return;
99
+ const offset = Math.abs((e.target).getBoundingClientRect()[bar.value.direction] -
100
+ e[bar.value.client]);
101
+ const thumbHalf = Thumb.value[bar.value.offset] / 2;
102
+ const thumbPositionPercentage = ((offset - thumbHalf) * 100 * offsetRatio.value) /
103
+ instance.value[bar.value.offset];
104
+ scrollbar.wrapElement[bar.value.scroll] =
105
+ (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) /
106
+ 100;
107
+ };
108
+ const startDrag = (e) => {
109
+ e.stopImmediatePropagation();
110
+ cursorDown = true;
111
+ document.addEventListener('mousemove', mouseMoveDocumentHandler);
112
+ document.addEventListener('mouseup', mouseUpDocumentHandler);
113
+ originalOnSelectStart = document.onselectstart;
114
+ document.onselectstart = () => false;
115
+ };
116
+ const mouseMoveDocumentHandler = (e) => {
117
+ if (!instance.value || !Thumb.value)
118
+ return;
119
+ if (cursorDown === false)
120
+ return;
121
+ const prevPage = thumbState.value[bar.value.axis];
122
+ if (!prevPage)
123
+ return;
124
+ const offset = (instance.value.getBoundingClientRect()[bar.value.direction] -
125
+ e[bar.value.client]) *
126
+ -1;
127
+ const thumbClickPosition = Thumb.value[bar.value.offset] - prevPage;
128
+ const thumbPositionPercentage = ((offset - thumbClickPosition) * 100 * offsetRatio.value) /
129
+ instance.value[bar.value.offset];
130
+ scrollbar.wrapElement[bar.value.scroll] =
131
+ (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) /
132
+ 100;
133
+ };
134
+ const mouseUpDocumentHandler = () => {
135
+ cursorDown = false;
136
+ thumbState.value[bar.value.axis] = 0;
137
+ document.removeEventListener('mousemove', mouseMoveDocumentHandler);
138
+ document.removeEventListener('mouseup', mouseUpDocumentHandler);
139
+ restoreOnselectstart();
140
+ if (cursorLeave)
141
+ visible.value = false;
142
+ };
143
+ const mouseMoveScrollbarHandler = () => {
144
+ cursorLeave = false;
145
+ visible.value = !!props.size;
146
+ };
147
+ const mouseLeaveScrollbarHandler = () => {
148
+ cursorLeave = true;
149
+ visible.value = cursorDown;
150
+ };
151
+ onBeforeUnmount(() => {
152
+ restoreOnselectstart();
153
+ document.removeEventListener('mouseup', mouseUpDocumentHandler);
154
+ });
155
+ const restoreOnselectstart = () => {
156
+ if (document.onselectstart !== originalOnSelectStart)
157
+ document.onselectstart = originalOnSelectStart;
158
+ };
159
+ useEventListener(toRef(scrollbar, 'scrollbarElement'), 'mousemove', mouseMoveScrollbarHandler);
160
+ useEventListener(toRef(scrollbar, 'scrollbarElement'), 'mouseleave', mouseLeaveScrollbarHandler);
161
+ return (_ctx, _cache) => {
162
+ return (_openBlock(), _createBlock(_Transition, {
163
+ name: "j-scrollbar-fade",
164
+ persisted: ""
165
+ }, {
166
+ default: _withCtx(() => [
167
+ _withDirectives(_createElementVNode("div", {
168
+ ref_key: "instance",
169
+ ref: instance,
170
+ class: _normalizeClass(['j-scrollbar__bar', props.vertical ? 'is-vertical' : 'is-horizontal']),
171
+ onMousedown: clickTrackHandler
172
+ }, [
173
+ _createElementVNode("div", {
174
+ ref_key: "thumb",
175
+ ref: thumb,
176
+ class: "j-scrollbar__thumb",
177
+ style: _normalizeStyle(thumbStyle.value),
178
+ onMousedown: clickThumbHandler
179
+ }, null, 36 /* STYLE, NEED_HYDRATION */)
180
+ ], 34 /* CLASS, NEED_HYDRATION */), [
181
+ [_vShow, _ctx.always || visible.value]
182
+ ])
183
+ ]),
184
+ _: 1 /* STABLE */
185
+ }));
186
+ };
187
+ }
188
+ });
189
+ export default __sfc_main__;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.scrollbarContextKey = void 0;
7
+ var scrollbarContextKey = exports.scrollbarContextKey = Symbol('scrollbarContextKey');
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _Scrollbar = _interopRequireDefault(require("./Scrollbar.js"));
9
+ var _default = exports.default = _Scrollbar.default;