@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,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 @@
1
+ export var scrollbarContextKey = Symbol('scrollbarContextKey');
@@ -0,0 +1,2 @@
1
+ import Scrollbar from './Scrollbar.js';
2
+ export default Scrollbar;
@@ -0,0 +1,100 @@
1
+ import { isNumber } from '@jetlinks-web/utils';
2
+ export var scrollbarProps = {
3
+ /**
4
+ * @description height of scrollbar
5
+ */
6
+ height: {
7
+ type: [String, Number],
8
+ default: ''
9
+ },
10
+ /**
11
+ * @description max height of scrollbar
12
+ */
13
+ maxHeight: {
14
+ type: [String, Number],
15
+ default: ''
16
+ },
17
+ /**
18
+ * @description whether to use the native scrollbar
19
+ */
20
+ native: {
21
+ type: Boolean,
22
+ default: false
23
+ },
24
+ /**
25
+ * @description style of wrap
26
+ */
27
+ wrapStyle: {
28
+ type: [String, Object, Array],
29
+ default: ''
30
+ },
31
+ /**
32
+ * @description class of wrap
33
+ */
34
+ wrapClass: {
35
+ type: [String, Array],
36
+ default: ''
37
+ },
38
+ /**
39
+ * @description class of view
40
+ */
41
+ viewClass: {
42
+ type: [String, Array],
43
+ default: ''
44
+ },
45
+ /**
46
+ * @description style of view
47
+ */
48
+ viewStyle: {
49
+ type: [String, Array, Object],
50
+ default: ''
51
+ },
52
+ /**
53
+ * @description do not respond to container size changes, if the container size does not change, it is better to set it to optimize performance
54
+ */
55
+ noresize: Boolean,
56
+ /**
57
+ * @description element tag of the view
58
+ */
59
+ tag: {
60
+ type: String,
61
+ default: 'div'
62
+ },
63
+ /**
64
+ * @description always show
65
+ */
66
+ always: Boolean,
67
+ /**
68
+ * @description minimum size of scrollbar
69
+ */
70
+ minSize: {
71
+ type: Number,
72
+ default: 20
73
+ },
74
+ /**
75
+ * @description id of view
76
+ */
77
+ id: String,
78
+ /**
79
+ * @description role of view
80
+ */
81
+ role: String,
82
+ /**
83
+ * @description aria-label of view
84
+ */
85
+ ariaLabel: String,
86
+ /**
87
+ * @description aria-orientation of view
88
+ */
89
+ ariaOrientation: {
90
+ type: String,
91
+ values: ['horizontal', 'vertical']
92
+ }
93
+ };
94
+ export var scrollbarEmits = {
95
+ scroll: function scroll(_ref) {
96
+ var scrollTop = _ref.scrollTop,
97
+ scrollLeft = _ref.scrollLeft;
98
+ return [scrollTop, scrollLeft].every(isNumber);
99
+ }
100
+ };
@@ -0,0 +1,10 @@
1
+ export var thumbProps = {
2
+ vertical: Boolean,
3
+ size: String,
4
+ move: Number,
5
+ ratio: {
6
+ type: Number,
7
+ required: true
8
+ },
9
+ always: Boolean
10
+ };
@@ -0,0 +1,30 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ export var GAP = 4; // top 2 + bottom 2 of bar instance
3
+ export var BAR_MAP = {
4
+ vertical: {
5
+ offset: 'offsetHeight',
6
+ scroll: 'scrollTop',
7
+ scrollSize: 'scrollHeight',
8
+ size: 'height',
9
+ key: 'vertical',
10
+ axis: 'Y',
11
+ client: 'clientY',
12
+ direction: 'top'
13
+ },
14
+ horizontal: {
15
+ offset: 'offsetWidth',
16
+ scroll: 'scrollLeft',
17
+ scrollSize: 'scrollWidth',
18
+ size: 'width',
19
+ key: 'horizontal',
20
+ axis: 'X',
21
+ client: 'clientX',
22
+ direction: 'left'
23
+ }
24
+ };
25
+ export var renderThumbStyle = function renderThumbStyle(_ref) {
26
+ var move = _ref.move,
27
+ size = _ref.size,
28
+ bar = _ref.bar;
29
+ return _defineProperty(_defineProperty({}, bar.size, size), "transform", "translate".concat(bar.axis, "(").concat(move, "%)"));
30
+ };