@v-c/util 0.0.1

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 (187) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Children/isFragment.cjs +1 -0
  3. package/dist/Children/isFragment.d.ts +3 -0
  4. package/dist/Children/isFragment.js +7 -0
  5. package/dist/Children/toArray.cjs +1 -0
  6. package/dist/Children/toArray.d.ts +8 -0
  7. package/dist/Children/toArray.js +11 -0
  8. package/dist/Dom/addEventListener.cjs +1 -0
  9. package/dist/Dom/addEventListener.d.ts +8 -0
  10. package/dist/Dom/addEventListener.js +12 -0
  11. package/dist/Dom/canUseDom.cjs +1 -0
  12. package/dist/Dom/canUseDom.d.ts +1 -0
  13. package/dist/Dom/canUseDom.js +6 -0
  14. package/dist/Dom/class.cjs +1 -0
  15. package/dist/Dom/class.d.ts +3 -0
  16. package/dist/Dom/class.js +19 -0
  17. package/dist/Dom/contains.cjs +1 -0
  18. package/dist/Dom/contains.d.ts +1 -0
  19. package/dist/Dom/contains.js +16 -0
  20. package/dist/Dom/css.cjs +1 -0
  21. package/dist/Dom/css.d.ts +20 -0
  22. package/dist/Dom/css.js +75 -0
  23. package/dist/Dom/dynamicCSS.cjs +1 -0
  24. package/dist/Dom/dynamicCSS.d.ts +24 -0
  25. package/dist/Dom/dynamicCSS.js +78 -0
  26. package/dist/Dom/findDOMNode.cjs +1 -0
  27. package/dist/Dom/findDOMNode.d.ts +7 -0
  28. package/dist/Dom/findDOMNode.js +12 -0
  29. package/dist/Dom/focus.cjs +1 -0
  30. package/dist/Dom/focus.d.ts +8 -0
  31. package/dist/Dom/focus.js +40 -0
  32. package/dist/Dom/isVisible.cjs +1 -0
  33. package/dist/Dom/isVisible.d.ts +2 -0
  34. package/dist/Dom/isVisible.js +22 -0
  35. package/dist/Dom/scrollLocker.cjs +1 -0
  36. package/dist/Dom/scrollLocker.d.ts +12 -0
  37. package/dist/Dom/scrollLocker.js +81 -0
  38. package/dist/Dom/shadow.cjs +1 -0
  39. package/dist/Dom/shadow.d.ts +8 -0
  40. package/dist/Dom/shadow.js +14 -0
  41. package/dist/Dom/styleChecker.cjs +1 -0
  42. package/dist/Dom/styleChecker.d.ts +2 -0
  43. package/dist/Dom/styleChecker.js +20 -0
  44. package/dist/Dom/support.cjs +1 -0
  45. package/dist/Dom/support.d.ts +6 -0
  46. package/dist/Dom/support.js +24 -0
  47. package/dist/EventInterface.cjs +1 -0
  48. package/dist/EventInterface.d.ts +18 -0
  49. package/dist/EventInterface.js +1 -0
  50. package/dist/KeyCode.cjs +1 -0
  51. package/dist/KeyCode.d.ts +435 -0
  52. package/dist/KeyCode.js +516 -0
  53. package/dist/Portal.cjs +1 -0
  54. package/dist/Portal.d.ts +8 -0
  55. package/dist/Portal.js +38 -0
  56. package/dist/PortalWrapper.cjs +1 -0
  57. package/dist/PortalWrapper.d.ts +28 -0
  58. package/dist/PortalWrapper.js +114 -0
  59. package/dist/composeProps.cjs +1 -0
  60. package/dist/composeProps.d.ts +2 -0
  61. package/dist/composeProps.js +16 -0
  62. package/dist/createRef.cjs +1 -0
  63. package/dist/createRef.d.ts +12 -0
  64. package/dist/createRef.js +21 -0
  65. package/dist/debug/diff.cjs +1 -0
  66. package/dist/debug/diff.d.ts +1 -0
  67. package/dist/debug/diff.js +41 -0
  68. package/dist/deprecated.cjs +1 -0
  69. package/dist/deprecated.d.ts +1 -0
  70. package/dist/deprecated.js +8 -0
  71. package/dist/getScrollBarSize.cjs +1 -0
  72. package/dist/getScrollBarSize.d.ts +5 -0
  73. package/dist/getScrollBarSize.js +37 -0
  74. package/dist/guid.cjs +1 -0
  75. package/dist/guid.d.ts +1 -0
  76. package/dist/guid.js +7 -0
  77. package/dist/hooks/useId.cjs +1 -0
  78. package/dist/hooks/useId.d.ts +5 -0
  79. package/dist/hooks/useId.js +17 -0
  80. package/dist/hooks/useMemo.cjs +1 -0
  81. package/dist/hooks/useMemo.d.ts +3 -0
  82. package/dist/hooks/useMemo.js +10 -0
  83. package/dist/hooks/useMergedState.cjs +1 -0
  84. package/dist/hooks/useMergedState.d.ts +8 -0
  85. package/dist/hooks/useMergedState.js +21 -0
  86. package/dist/hooks/useState.cjs +1 -0
  87. package/dist/hooks/useState.d.ts +3 -0
  88. package/dist/hooks/useState.js +11 -0
  89. package/dist/index.cjs +1 -0
  90. package/dist/index.d.ts +3 -0
  91. package/dist/index.js +8 -0
  92. package/dist/isEqual.cjs +1 -0
  93. package/dist/isEqual.d.ts +8 -0
  94. package/dist/isEqual.js +32 -0
  95. package/dist/isMobile.cjs +1 -0
  96. package/dist/isMobile.d.ts +2 -0
  97. package/dist/isMobile.js +13 -0
  98. package/dist/omit.cjs +1 -0
  99. package/dist/omit.d.ts +1 -0
  100. package/dist/omit.js +9 -0
  101. package/dist/pickAttrs.cjs +18 -0
  102. package/dist/pickAttrs.d.ts +11 -0
  103. package/dist/pickAttrs.js +41 -0
  104. package/dist/props-util/index.cjs +1 -0
  105. package/dist/props-util/index.d.ts +2 -0
  106. package/dist/props-util/index.js +14 -0
  107. package/dist/raf.cjs +1 -0
  108. package/dist/raf.d.ts +6 -0
  109. package/dist/raf.js +30 -0
  110. package/dist/setStyle.cjs +1 -0
  111. package/dist/setStyle.d.ts +13 -0
  112. package/dist/setStyle.js +13 -0
  113. package/dist/switchScrollingEffect.cjs +1 -0
  114. package/dist/switchScrollingEffect.d.ts +2 -0
  115. package/dist/switchScrollingEffect.js +31 -0
  116. package/dist/test/domHook.cjs +1 -0
  117. package/dist/test/domHook.d.ts +8 -0
  118. package/dist/test/domHook.js +37 -0
  119. package/dist/type.cjs +1 -0
  120. package/dist/type.d.ts +63 -0
  121. package/dist/type.js +49 -0
  122. package/dist/utils/checkSlotProp.cjs +1 -0
  123. package/dist/utils/checkSlotProp.d.ts +1 -0
  124. package/dist/utils/checkSlotProp.js +7 -0
  125. package/dist/utils/get.cjs +1 -0
  126. package/dist/utils/get.d.ts +1 -0
  127. package/dist/utils/get.js +12 -0
  128. package/dist/utils/set.cjs +1 -0
  129. package/dist/utils/set.d.ts +6 -0
  130. package/dist/utils/set.js +41 -0
  131. package/dist/vnode.cjs +1 -0
  132. package/dist/vnode.d.ts +12 -0
  133. package/dist/vnode.js +41 -0
  134. package/dist/warning.cjs +1 -0
  135. package/dist/warning.d.ts +18 -0
  136. package/dist/warning.js +48 -0
  137. package/package.json +37 -0
  138. package/src/Children/isFragment.ts +6 -0
  139. package/src/Children/tests/isFragment.test.tsx +15 -0
  140. package/src/Children/tests/toArray.test.tsx +101 -0
  141. package/src/Children/toArray.ts +27 -0
  142. package/src/Dom/addEventListener.ts +20 -0
  143. package/src/Dom/canUseDom.ts +7 -0
  144. package/src/Dom/class.ts +29 -0
  145. package/src/Dom/contains.ts +19 -0
  146. package/src/Dom/css.ts +113 -0
  147. package/src/Dom/dynamicCSS.ts +173 -0
  148. package/src/Dom/findDOMNode.ts +23 -0
  149. package/src/Dom/focus.ts +96 -0
  150. package/src/Dom/isVisible.ts +23 -0
  151. package/src/Dom/scrollLocker.ts +143 -0
  152. package/src/Dom/shadow.ts +17 -0
  153. package/src/Dom/styleChecker.ts +31 -0
  154. package/src/Dom/support.ts +27 -0
  155. package/src/EventInterface.ts +19 -0
  156. package/src/KeyCode.ts +516 -0
  157. package/src/Portal.tsx +50 -0
  158. package/src/PortalWrapper.tsx +214 -0
  159. package/src/composeProps.ts +23 -0
  160. package/src/createRef.ts +33 -0
  161. package/src/debug/diff.ts +66 -0
  162. package/src/deprecated.ts +8 -0
  163. package/src/getScrollBarSize.tsx +57 -0
  164. package/src/guid.ts +4 -0
  165. package/src/hooks/useId.ts +31 -0
  166. package/src/hooks/useMemo.ts +21 -0
  167. package/src/hooks/useMergedState.ts +44 -0
  168. package/src/hooks/useState.ts +17 -0
  169. package/src/index.ts +3 -0
  170. package/src/isEqual.ts +50 -0
  171. package/src/isMobile.ts +15 -0
  172. package/src/omit.ts +14 -0
  173. package/src/pickAttrs.ts +78 -0
  174. package/src/props-util/index.ts +22 -0
  175. package/src/raf.ts +55 -0
  176. package/src/setStyle.ts +38 -0
  177. package/src/switchScrollingEffect.ts +48 -0
  178. package/src/test/domHook.ts +67 -0
  179. package/src/type.ts +94 -0
  180. package/src/utils/checkSlotProp.ts +10 -0
  181. package/src/utils/get.ts +15 -0
  182. package/src/utils/set.ts +110 -0
  183. package/src/vnode.ts +86 -0
  184. package/src/warning.ts +79 -0
  185. package/tests/Portal.test.tsx +199 -0
  186. package/tsconfig.json +7 -0
  187. package/vite.config.ts +18 -0
@@ -0,0 +1,199 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest'
2
+ import { defineComponent, onMounted, ref } from 'vue'
3
+ import { mount } from '@vue/test-utils'
4
+ import PortalWrapper, { getOpenCount } from '../src/PortalWrapper'
5
+ import Portal from '../src/Portal'
6
+
7
+ describe('portal', () => {
8
+ let domContainer: HTMLDivElement
9
+
10
+ window.requestAnimationFrame = callback => window.setTimeout(callback)
11
+ window.cancelAnimationFrame = id => window.clearTimeout(id)
12
+
13
+ beforeEach(() => {
14
+ domContainer = document.createElement('div')
15
+ document.body.appendChild(domContainer)
16
+ })
17
+
18
+ afterEach(() => {
19
+ document.body.removeChild(domContainer)
20
+ })
21
+ it('forceRender', () => {
22
+ const divRef = ref<HTMLDivElement>()
23
+
24
+ const wrapper = mount(
25
+ <PortalWrapper forceRender>
26
+ {{
27
+ default: () => <div ref={divRef as any}>2333</div>,
28
+ }}
29
+ </PortalWrapper>,
30
+ )
31
+
32
+ expect(divRef.value).toBeTruthy()
33
+ wrapper.unmount()
34
+ })
35
+
36
+ it('didUpdate', () => {
37
+ let times = 0
38
+ const didUpdate = () => {
39
+ ++times
40
+ }
41
+
42
+ let wrapper = mount(
43
+ <Portal
44
+ didUpdate={didUpdate}
45
+ getContainer={() => document.createElement('div')}
46
+ >
47
+ light
48
+ </Portal>,
49
+ )
50
+ expect(times).toEqual(0)
51
+ wrapper.unmount()
52
+ wrapper = mount(
53
+ <Portal
54
+ didUpdate={didUpdate}
55
+ getContainer={() => document.createElement('div')}
56
+ {...{ justForceUpdate: true }}
57
+ >
58
+ light
59
+ </Portal>,
60
+ )
61
+ expect(times).toEqual(1)
62
+ wrapper.unmount()
63
+ })
64
+
65
+ describe('getContainer', () => {
66
+ it('string', () => {
67
+ const div = document.createElement('div')
68
+ div.id = 'bamboo-light'
69
+ document.body.appendChild(div)
70
+
71
+ const wrapper = mount(
72
+ <PortalWrapper visible getContainer="#bamboo-light">
73
+ {() => <div>2333</div>}
74
+ </PortalWrapper>,
75
+ )
76
+
77
+ expect((document as any).querySelector?.('#bamboo-light').childElementCount)
78
+ .toEqual(1)
79
+
80
+ document.body.removeChild(div)
81
+ wrapper.unmount()
82
+ })
83
+
84
+ it('function', () => {
85
+ const div = document.createElement('div')
86
+
87
+ const wrapper = mount(
88
+ <PortalWrapper visible getContainer={() => div}>
89
+ {() => <div>2333</div>}
90
+ </PortalWrapper>,
91
+ )
92
+
93
+ expect(div.childElementCount).toEqual(1)
94
+
95
+ wrapper.unmount()
96
+ })
97
+
98
+ it('htmlElement', () => {
99
+ const div = document.createElement('div')
100
+
101
+ const wrapper = mount(
102
+ <PortalWrapper visible getContainer={div}>
103
+ {() => <div>2333</div>}
104
+ </PortalWrapper>,
105
+ )
106
+
107
+ expect(div.childElementCount).toEqual(1)
108
+ wrapper.unmount()
109
+ })
110
+
111
+ it('delay', () => {
112
+ let dom: any
113
+ const wrapper = mount(defineComponent({
114
+ setup() {
115
+ const divRef = ref<HTMLDivElement>()
116
+ onMounted(() => {
117
+ dom = divRef.value as any
118
+ })
119
+ return () => {
120
+ return (
121
+ <div>
122
+ <PortalWrapper visible getContainer={() => divRef.value!}>
123
+ {() => <div />}
124
+ </PortalWrapper>
125
+ <div ref={divRef as any} />
126
+ </div>
127
+ )
128
+ }
129
+ },
130
+ }))
131
+
132
+ expect(dom?.childElementCount).toEqual(1)
133
+ wrapper.unmount()
134
+ })
135
+ })
136
+
137
+ describe('openCount', () => {
138
+ it('start as 0', () => {
139
+ expect(getOpenCount()).toEqual(0)
140
+
141
+ const wrapper = mount(
142
+ <PortalWrapper visible={false}>{() => <div>2333</div>}</PortalWrapper>,
143
+ )
144
+ expect(getOpenCount()).toEqual(0)
145
+
146
+ const wrapper1 = mount(<PortalWrapper visible>{() => <div>2333</div>}</PortalWrapper>)
147
+ expect(getOpenCount()).toEqual(1)
148
+
149
+ wrapper.unmount()
150
+ wrapper1.unmount()
151
+ })
152
+
153
+ it('correct count', () => {
154
+ const Demo = defineComponent({
155
+ props: {
156
+ count: Number,
157
+ visible: Boolean,
158
+ },
159
+ setup(props) {
160
+ return () => {
161
+ const { count, visible } = props
162
+ const getItem = (index: number) => {
163
+ return (
164
+ <>
165
+ <PortalWrapper key={index} visible={visible}>
166
+ {() => <div>2333</div>}
167
+ </PortalWrapper>
168
+ </>
169
+ )
170
+ }
171
+ return (
172
+ <>
173
+ {Array.from({ length: count as any }).fill(null).map((_, index) => getItem(index))}
174
+ </>
175
+ )
176
+ }
177
+ },
178
+ })
179
+
180
+ expect(getOpenCount()).toEqual(0)
181
+
182
+ let wrapper = mount(<Demo count={1} visible />)
183
+ expect(getOpenCount()).toEqual(1)
184
+ wrapper.unmount()
185
+
186
+ wrapper = mount(<Demo count={2} visible />)
187
+ expect(getOpenCount()).toEqual(2)
188
+ wrapper.unmount()
189
+
190
+ wrapper = mount(<Demo count={1} visible />)
191
+ expect(getOpenCount()).toEqual(1)
192
+ wrapper.unmount()
193
+
194
+ wrapper = mount(<Demo count={1} visible={false} />)
195
+ expect(getOpenCount()).toEqual(0)
196
+ wrapper.unmount()
197
+ })
198
+ })
199
+ })
package/tsconfig.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": ["../../tsconfig.json"],
3
+ "compilerOptions": {
4
+
5
+ },
6
+ "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js", "src/**/*.jsx"]
7
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,18 @@
1
+ import type { UserConfig } from 'vite'
2
+ import { defineConfig, mergeConfig } from 'vite'
3
+ import fg from 'fast-glob'
4
+ import { buildCommon } from '../../scripts/build.common'
5
+
6
+ const entry = fg.sync(['src/**/*.ts', 'src/**/*.tsx', '!src/**/*.test.ts', '!src/**/*.test.tsx', '!src/**/tests'])
7
+
8
+ export default defineConfig({
9
+ ...mergeConfig(buildCommon({
10
+ external: ['vue'],
11
+ }), {
12
+ build: {
13
+ lib: {
14
+ entry,
15
+ },
16
+ },
17
+ } as UserConfig),
18
+ })