@v-c/resize-observer 0.0.3 → 0.0.4
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.
- package/dist/Collection.cjs +34 -40
- package/dist/Collection.js +33 -41
- package/dist/SingleObserver/DomWrapper.cjs +7 -11
- package/dist/SingleObserver/DomWrapper.js +4 -10
- package/dist/SingleObserver/index.cjs +93 -104
- package/dist/SingleObserver/index.js +87 -102
- package/dist/_virtual/rolldown_runtime.cjs +21 -0
- package/dist/index.cjs +45 -53
- package/dist/index.js +39 -50
- package/dist/utils/observerUtil.cjs +21 -21
- package/dist/utils/observerUtil.js +19 -24
- package/package.json +2 -2
- package/src/SingleObserver/index.tsx +19 -2
package/dist/Collection.cjs
CHANGED
|
@@ -1,44 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const vue = require("vue");
|
|
1
|
+
const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
|
|
2
|
+
let vue = require("vue");
|
|
4
3
|
const CollectionContext = Symbol("CollectionContext");
|
|
5
|
-
const Collection = /* @__PURE__ */ vue.defineComponent({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
vue.provide(CollectionContext, onResize);
|
|
38
|
-
return () => {
|
|
39
|
-
return slots.default?.();
|
|
40
|
-
};
|
|
41
|
-
}
|
|
4
|
+
const Collection = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
5
|
+
props: { onBatchResize: {
|
|
6
|
+
type: Function,
|
|
7
|
+
required: false,
|
|
8
|
+
default: void 0
|
|
9
|
+
} },
|
|
10
|
+
setup(props, { slots }) {
|
|
11
|
+
const resizeIdRef = (0, vue.shallowRef)(0);
|
|
12
|
+
const resizeInfosRef = (0, vue.shallowRef)([]);
|
|
13
|
+
const onCollectionResize = (0, vue.inject)(CollectionContext, () => {});
|
|
14
|
+
const onResize = (size, element, data) => {
|
|
15
|
+
const resizeId = resizeIdRef.value + 1;
|
|
16
|
+
resizeIdRef.value = resizeId;
|
|
17
|
+
resizeInfosRef.value.push({
|
|
18
|
+
size,
|
|
19
|
+
element,
|
|
20
|
+
data
|
|
21
|
+
});
|
|
22
|
+
Promise.resolve().then(() => {
|
|
23
|
+
if (resizeIdRef.value === resizeId) {
|
|
24
|
+
const resizeInfos = resizeInfosRef.value;
|
|
25
|
+
resizeInfosRef.value = [];
|
|
26
|
+
props.onBatchResize?.(resizeInfos);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
onCollectionResize?.(size, element, data);
|
|
30
|
+
};
|
|
31
|
+
(0, vue.provide)(CollectionContext, onResize);
|
|
32
|
+
return () => {
|
|
33
|
+
return slots.default?.();
|
|
34
|
+
};
|
|
35
|
+
}
|
|
42
36
|
});
|
|
43
37
|
exports.Collection = Collection;
|
|
44
38
|
exports.CollectionContext = CollectionContext;
|
package/dist/Collection.js
CHANGED
|
@@ -1,44 +1,36 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, inject, provide, shallowRef } from "vue";
|
|
2
2
|
const CollectionContext = Symbol("CollectionContext");
|
|
3
3
|
const Collection = /* @__PURE__ */ defineComponent({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
provide(CollectionContext, onResize);
|
|
36
|
-
return () => {
|
|
37
|
-
return slots.default?.();
|
|
38
|
-
};
|
|
39
|
-
}
|
|
4
|
+
props: { onBatchResize: {
|
|
5
|
+
type: Function,
|
|
6
|
+
required: false,
|
|
7
|
+
default: void 0
|
|
8
|
+
} },
|
|
9
|
+
setup(props, { slots }) {
|
|
10
|
+
const resizeIdRef = shallowRef(0);
|
|
11
|
+
const resizeInfosRef = shallowRef([]);
|
|
12
|
+
const onCollectionResize = inject(CollectionContext, () => {});
|
|
13
|
+
const onResize = (size, element, data) => {
|
|
14
|
+
const resizeId = resizeIdRef.value + 1;
|
|
15
|
+
resizeIdRef.value = resizeId;
|
|
16
|
+
resizeInfosRef.value.push({
|
|
17
|
+
size,
|
|
18
|
+
element,
|
|
19
|
+
data
|
|
20
|
+
});
|
|
21
|
+
Promise.resolve().then(() => {
|
|
22
|
+
if (resizeIdRef.value === resizeId) {
|
|
23
|
+
const resizeInfos = resizeInfosRef.value;
|
|
24
|
+
resizeInfosRef.value = [];
|
|
25
|
+
props.onBatchResize?.(resizeInfos);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
onCollectionResize?.(size, element, data);
|
|
29
|
+
};
|
|
30
|
+
provide(CollectionContext, onResize);
|
|
31
|
+
return () => {
|
|
32
|
+
return slots.default?.();
|
|
33
|
+
};
|
|
34
|
+
}
|
|
40
35
|
});
|
|
41
|
-
export {
|
|
42
|
-
Collection,
|
|
43
|
-
CollectionContext
|
|
44
|
-
};
|
|
36
|
+
export { Collection, CollectionContext };
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return () => slots.default?.();
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
exports.default = DomWrapper;
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
|
|
3
|
+
let vue = require("vue");
|
|
4
|
+
var DomWrapper_default = /* @__PURE__ */ (0, vue.defineComponent)({ setup(_, { slots }) {
|
|
5
|
+
return () => slots.default?.();
|
|
6
|
+
} });
|
|
7
|
+
exports.default = DomWrapper_default;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { defineComponent } from "vue";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return () => slots.default?.();
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
|
-
export {
|
|
10
|
-
DomWrapper as default
|
|
11
|
-
};
|
|
2
|
+
var DomWrapper_default = /* @__PURE__ */ defineComponent({ setup(_, { slots }) {
|
|
3
|
+
return () => slots.default?.();
|
|
4
|
+
} });
|
|
5
|
+
export { DomWrapper_default as default };
|
|
@@ -1,105 +1,94 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
});
|
|
93
|
-
expose({
|
|
94
|
-
getDom
|
|
95
|
-
});
|
|
96
|
-
return () => {
|
|
97
|
-
return vue.createVNode(DomWrapper.default, {
|
|
98
|
-
"ref": wrapperRef
|
|
99
|
-
}, {
|
|
100
|
-
default: () => [slots.default?.()]
|
|
101
|
-
});
|
|
102
|
-
};
|
|
103
|
-
}
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
|
|
3
|
+
const require_Collection = require("../Collection.cjs");
|
|
4
|
+
const require_observerUtil = require("../utils/observerUtil.cjs");
|
|
5
|
+
const require_DomWrapper = require("./DomWrapper.cjs");
|
|
6
|
+
let vue = require("vue");
|
|
7
|
+
let __v_c_util_dist_Dom_findDOMNode = require("@v-c/util/dist/Dom/findDOMNode");
|
|
8
|
+
__v_c_util_dist_Dom_findDOMNode = require_rolldown_runtime.__toESM(__v_c_util_dist_Dom_findDOMNode);
|
|
9
|
+
let __v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
|
|
10
|
+
var SingleObserver = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
11
|
+
props: {
|
|
12
|
+
data: {
|
|
13
|
+
type: null,
|
|
14
|
+
required: false,
|
|
15
|
+
default: void 0
|
|
16
|
+
},
|
|
17
|
+
disabled: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
required: false,
|
|
20
|
+
default: void 0
|
|
21
|
+
},
|
|
22
|
+
onResize: {
|
|
23
|
+
type: Function,
|
|
24
|
+
required: false,
|
|
25
|
+
default: void 0
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
name: "SingleObserver",
|
|
29
|
+
inheritAttrs: false,
|
|
30
|
+
setup(props, { expose, slots }) {
|
|
31
|
+
const elementRef = (0, vue.shallowRef)();
|
|
32
|
+
const wrapperRef = (0, vue.shallowRef)();
|
|
33
|
+
const setWrapperRef = (el) => {
|
|
34
|
+
if (el?.elementEl && typeof el.elementEl === "object") elementRef.value = el.elementEl;
|
|
35
|
+
else if (el?.__$el && typeof el.__$el === "object") elementRef.value = el.__$el;
|
|
36
|
+
else wrapperRef.value = el;
|
|
37
|
+
};
|
|
38
|
+
const onCollectionResize = (0, vue.inject)(require_Collection.CollectionContext, () => {});
|
|
39
|
+
const sizeRef = (0, vue.shallowRef)({
|
|
40
|
+
width: -1,
|
|
41
|
+
height: -1,
|
|
42
|
+
offsetWidth: -1,
|
|
43
|
+
offsetHeight: -1
|
|
44
|
+
});
|
|
45
|
+
const getDom = () => {
|
|
46
|
+
const dom = (0, __v_c_util_dist_Dom_findDOMNode.default)(elementRef) || (elementRef.value && typeof elementRef.value === "object" ? (0, __v_c_util_dist_Dom_findDOMNode.default)(elementRef.value.nativeElement) : null) || (0, __v_c_util_dist_Dom_findDOMNode.default)(wrapperRef.value);
|
|
47
|
+
if (dom && dom.nodeType === 3 && dom.nextElementSibling) return dom.nextElementSibling;
|
|
48
|
+
return dom;
|
|
49
|
+
};
|
|
50
|
+
const onInternalResize = (target) => {
|
|
51
|
+
const { onResize, data } = props;
|
|
52
|
+
const { width, height } = target.getBoundingClientRect();
|
|
53
|
+
const { offsetHeight, offsetWidth } = target;
|
|
54
|
+
const fixedWidth = Math.floor(width);
|
|
55
|
+
const fixedHeight = Math.floor(height);
|
|
56
|
+
if (sizeRef.value.width !== fixedWidth || sizeRef.value.height !== fixedHeight || sizeRef.value.offsetWidth !== offsetWidth || sizeRef.value.offsetHeight !== offsetHeight) {
|
|
57
|
+
const size = {
|
|
58
|
+
width: fixedWidth,
|
|
59
|
+
height: fixedHeight,
|
|
60
|
+
offsetWidth,
|
|
61
|
+
offsetHeight
|
|
62
|
+
};
|
|
63
|
+
sizeRef.value = size;
|
|
64
|
+
const mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;
|
|
65
|
+
const mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;
|
|
66
|
+
const sizeInfo = {
|
|
67
|
+
...size,
|
|
68
|
+
offsetWidth: mergedOffsetWidth,
|
|
69
|
+
offsetHeight: mergedOffsetHeight
|
|
70
|
+
};
|
|
71
|
+
onCollectionResize?.(sizeInfo, target, data);
|
|
72
|
+
if (onResize) Promise.resolve().then(() => {
|
|
73
|
+
onResize(sizeInfo, target);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
let currentElement;
|
|
78
|
+
(0, vue.onMounted)(() => {
|
|
79
|
+
currentElement = getDom();
|
|
80
|
+
if (currentElement && !props.disabled) require_observerUtil.observe(currentElement, onInternalResize);
|
|
81
|
+
});
|
|
82
|
+
(0, vue.onBeforeUnmount)(() => {
|
|
83
|
+
if (currentElement) require_observerUtil.unobserve(currentElement, onInternalResize);
|
|
84
|
+
});
|
|
85
|
+
expose({ getDom });
|
|
86
|
+
return () => {
|
|
87
|
+
const children = (0, __v_c_util_dist_props_util.filterEmpty)(slots?.default?.());
|
|
88
|
+
if (children.length === 1 && (0, vue.isVNode)(children[0])) return (0, vue.createVNode)(children[0], { ref: setWrapperRef });
|
|
89
|
+
return (0, vue.createVNode)(require_DomWrapper.default, { "ref": wrapperRef }, { default: () => [slots.default?.()] });
|
|
90
|
+
};
|
|
91
|
+
}
|
|
104
92
|
});
|
|
105
|
-
|
|
93
|
+
var SingleObserver_default = SingleObserver;
|
|
94
|
+
exports.default = SingleObserver_default;
|
|
@@ -1,105 +1,90 @@
|
|
|
1
|
-
import { defineComponent, shallowRef, inject, onMounted, onBeforeUnmount, createVNode } from "vue";
|
|
2
|
-
import findDOMNode from "@v-c/util/dist/Dom/findDOMNode";
|
|
3
1
|
import { CollectionContext } from "../Collection.js";
|
|
4
2
|
import { observe, unobserve } from "../utils/observerUtil.js";
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
expose({
|
|
92
|
-
getDom
|
|
93
|
-
});
|
|
94
|
-
return () => {
|
|
95
|
-
return createVNode(DomWrapper, {
|
|
96
|
-
"ref": wrapperRef
|
|
97
|
-
}, {
|
|
98
|
-
default: () => [slots.default?.()]
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
}
|
|
3
|
+
import DomWrapper_default from "./DomWrapper.js";
|
|
4
|
+
import { createVNode, defineComponent, inject, isVNode, onBeforeUnmount, onMounted, shallowRef } from "vue";
|
|
5
|
+
import findDOMNode from "@v-c/util/dist/Dom/findDOMNode";
|
|
6
|
+
import { filterEmpty } from "@v-c/util/dist/props-util";
|
|
7
|
+
var SingleObserver_default = /* @__PURE__ */ defineComponent({
|
|
8
|
+
props: {
|
|
9
|
+
data: {
|
|
10
|
+
type: null,
|
|
11
|
+
required: false,
|
|
12
|
+
default: void 0
|
|
13
|
+
},
|
|
14
|
+
disabled: {
|
|
15
|
+
type: Boolean,
|
|
16
|
+
required: false,
|
|
17
|
+
default: void 0
|
|
18
|
+
},
|
|
19
|
+
onResize: {
|
|
20
|
+
type: Function,
|
|
21
|
+
required: false,
|
|
22
|
+
default: void 0
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
name: "SingleObserver",
|
|
26
|
+
inheritAttrs: false,
|
|
27
|
+
setup(props, { expose, slots }) {
|
|
28
|
+
const elementRef = shallowRef();
|
|
29
|
+
const wrapperRef = shallowRef();
|
|
30
|
+
const setWrapperRef = (el) => {
|
|
31
|
+
if (el?.elementEl && typeof el.elementEl === "object") elementRef.value = el.elementEl;
|
|
32
|
+
else if (el?.__$el && typeof el.__$el === "object") elementRef.value = el.__$el;
|
|
33
|
+
else wrapperRef.value = el;
|
|
34
|
+
};
|
|
35
|
+
const onCollectionResize = inject(CollectionContext, () => {});
|
|
36
|
+
const sizeRef = shallowRef({
|
|
37
|
+
width: -1,
|
|
38
|
+
height: -1,
|
|
39
|
+
offsetWidth: -1,
|
|
40
|
+
offsetHeight: -1
|
|
41
|
+
});
|
|
42
|
+
const getDom = () => {
|
|
43
|
+
const dom = findDOMNode(elementRef) || (elementRef.value && typeof elementRef.value === "object" ? findDOMNode(elementRef.value.nativeElement) : null) || findDOMNode(wrapperRef.value);
|
|
44
|
+
if (dom && dom.nodeType === 3 && dom.nextElementSibling) return dom.nextElementSibling;
|
|
45
|
+
return dom;
|
|
46
|
+
};
|
|
47
|
+
const onInternalResize = (target) => {
|
|
48
|
+
const { onResize, data } = props;
|
|
49
|
+
const { width, height } = target.getBoundingClientRect();
|
|
50
|
+
const { offsetHeight, offsetWidth } = target;
|
|
51
|
+
const fixedWidth = Math.floor(width);
|
|
52
|
+
const fixedHeight = Math.floor(height);
|
|
53
|
+
if (sizeRef.value.width !== fixedWidth || sizeRef.value.height !== fixedHeight || sizeRef.value.offsetWidth !== offsetWidth || sizeRef.value.offsetHeight !== offsetHeight) {
|
|
54
|
+
const size = {
|
|
55
|
+
width: fixedWidth,
|
|
56
|
+
height: fixedHeight,
|
|
57
|
+
offsetWidth,
|
|
58
|
+
offsetHeight
|
|
59
|
+
};
|
|
60
|
+
sizeRef.value = size;
|
|
61
|
+
const mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;
|
|
62
|
+
const mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;
|
|
63
|
+
const sizeInfo = {
|
|
64
|
+
...size,
|
|
65
|
+
offsetWidth: mergedOffsetWidth,
|
|
66
|
+
offsetHeight: mergedOffsetHeight
|
|
67
|
+
};
|
|
68
|
+
onCollectionResize?.(sizeInfo, target, data);
|
|
69
|
+
if (onResize) Promise.resolve().then(() => {
|
|
70
|
+
onResize(sizeInfo, target);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
let currentElement;
|
|
75
|
+
onMounted(() => {
|
|
76
|
+
currentElement = getDom();
|
|
77
|
+
if (currentElement && !props.disabled) observe(currentElement, onInternalResize);
|
|
78
|
+
});
|
|
79
|
+
onBeforeUnmount(() => {
|
|
80
|
+
if (currentElement) unobserve(currentElement, onInternalResize);
|
|
81
|
+
});
|
|
82
|
+
expose({ getDom });
|
|
83
|
+
return () => {
|
|
84
|
+
const children = filterEmpty(slots?.default?.());
|
|
85
|
+
if (children.length === 1 && isVNode(children[0])) return createVNode(children[0], { ref: setWrapperRef });
|
|
86
|
+
return createVNode(DomWrapper_default, { "ref": wrapperRef }, { default: () => [slots.default?.()] });
|
|
87
|
+
};
|
|
88
|
+
}
|
|
102
89
|
});
|
|
103
|
-
export {
|
|
104
|
-
SingleObserver as default
|
|
105
|
-
};
|
|
90
|
+
export { SingleObserver_default as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
9
|
+
key = keys[i];
|
|
10
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
11
|
+
get: ((k) => from[k]).bind(null, key),
|
|
12
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
18
|
+
value: mod,
|
|
19
|
+
enumerable: true
|
|
20
|
+
}) : target, mod));
|
|
21
|
+
exports.__toESM = __toESM;
|
package/dist/index.cjs
CHANGED
|
@@ -1,56 +1,48 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
|
|
3
|
+
const require_Collection = require("./Collection.cjs");
|
|
4
|
+
const require_observerUtil = require("./utils/observerUtil.cjs");
|
|
5
|
+
const require_index = require("./SingleObserver/index.cjs");
|
|
6
|
+
let vue = require("vue");
|
|
7
|
+
let __v_c_util = require("@v-c/util");
|
|
8
|
+
let __v_c_util_dist_Children_toArray = require("@v-c/util/dist/Children/toArray");
|
|
9
9
|
function _isSlot(s) {
|
|
10
|
-
|
|
10
|
+
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s);
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const key = child?.key || `${INTERNAL_PREFIX_KEY}-${index$1}`;
|
|
45
|
-
return vue.createVNode(index.default, vue.mergeProps(props, {
|
|
46
|
-
"key": key
|
|
47
|
-
}), _isSlot(child) ? child : {
|
|
48
|
-
default: () => [child]
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
}
|
|
12
|
+
var INTERNAL_PREFIX_KEY = "vc-observer-key";
|
|
13
|
+
var ResizeObserver = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
14
|
+
props: {
|
|
15
|
+
data: {
|
|
16
|
+
type: null,
|
|
17
|
+
required: false,
|
|
18
|
+
default: void 0
|
|
19
|
+
},
|
|
20
|
+
disabled: {
|
|
21
|
+
type: Boolean,
|
|
22
|
+
required: false,
|
|
23
|
+
default: void 0
|
|
24
|
+
},
|
|
25
|
+
onResize: {
|
|
26
|
+
type: Function,
|
|
27
|
+
required: false,
|
|
28
|
+
default: void 0
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
setup(props, { slots }) {
|
|
32
|
+
return () => {
|
|
33
|
+
const childNodes = (0, __v_c_util_dist_Children_toArray.toArray)(slots.default?.());
|
|
34
|
+
if (process.env.NODE_ENV !== "production") {
|
|
35
|
+
if (childNodes.length > 1) (0, __v_c_util.warning)(false, "Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.");
|
|
36
|
+
else if (childNodes.length === 0) (0, __v_c_util.warning)(false, "`children` of ResizeObserver is empty. Nothing is in observe.");
|
|
37
|
+
}
|
|
38
|
+
return childNodes.map((child, index) => {
|
|
39
|
+
const key = child?.key || `${INTERNAL_PREFIX_KEY}-${index}`;
|
|
40
|
+
return (0, vue.createVNode)(require_index.default, (0, vue.mergeProps)(props, { "key": key }), _isSlot(child) ? child : { default: () => [child] });
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
}
|
|
53
44
|
});
|
|
54
|
-
ResizeObserver.Collection =
|
|
55
|
-
|
|
56
|
-
exports.
|
|
45
|
+
ResizeObserver.Collection = require_Collection.Collection;
|
|
46
|
+
var src_default = ResizeObserver;
|
|
47
|
+
exports._rs = require_observerUtil._rs;
|
|
48
|
+
exports.default = src_default;
|
package/dist/index.js
CHANGED
|
@@ -1,56 +1,45 @@
|
|
|
1
|
-
import { defineComponent, createVNode, mergeProps, isVNode } from "vue";
|
|
2
|
-
import { warning } from "@v-c/util";
|
|
3
|
-
import { toArray } from "@v-c/util/dist/Children/toArray";
|
|
4
1
|
import { Collection } from "./Collection.js";
|
|
5
|
-
import SingleObserver from "./SingleObserver/index.js";
|
|
6
2
|
import { _rs } from "./utils/observerUtil.js";
|
|
3
|
+
import SingleObserver_default from "./SingleObserver/index.js";
|
|
4
|
+
import { createVNode, defineComponent, isVNode, mergeProps } from "vue";
|
|
5
|
+
import { warning } from "@v-c/util";
|
|
6
|
+
import { toArray } from "@v-c/util/dist/Children/toArray";
|
|
7
7
|
function _isSlot(s) {
|
|
8
|
-
|
|
8
|
+
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const key = child?.key || `${INTERNAL_PREFIX_KEY}-${index}`;
|
|
43
|
-
return createVNode(SingleObserver, mergeProps(props, {
|
|
44
|
-
"key": key
|
|
45
|
-
}), _isSlot(child) ? child : {
|
|
46
|
-
default: () => [child]
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
}
|
|
10
|
+
var INTERNAL_PREFIX_KEY = "vc-observer-key";
|
|
11
|
+
var ResizeObserver = /* @__PURE__ */ defineComponent({
|
|
12
|
+
props: {
|
|
13
|
+
data: {
|
|
14
|
+
type: null,
|
|
15
|
+
required: false,
|
|
16
|
+
default: void 0
|
|
17
|
+
},
|
|
18
|
+
disabled: {
|
|
19
|
+
type: Boolean,
|
|
20
|
+
required: false,
|
|
21
|
+
default: void 0
|
|
22
|
+
},
|
|
23
|
+
onResize: {
|
|
24
|
+
type: Function,
|
|
25
|
+
required: false,
|
|
26
|
+
default: void 0
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
setup(props, { slots }) {
|
|
30
|
+
return () => {
|
|
31
|
+
const childNodes = toArray(slots.default?.());
|
|
32
|
+
if (process.env.NODE_ENV !== "production") {
|
|
33
|
+
if (childNodes.length > 1) warning(false, "Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.");
|
|
34
|
+
else if (childNodes.length === 0) warning(false, "`children` of ResizeObserver is empty. Nothing is in observe.");
|
|
35
|
+
}
|
|
36
|
+
return childNodes.map((child, index) => {
|
|
37
|
+
const key = child?.key || `${INTERNAL_PREFIX_KEY}-${index}`;
|
|
38
|
+
return createVNode(SingleObserver_default, mergeProps(props, { "key": key }), _isSlot(child) ? child : { default: () => [child] });
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
51
42
|
});
|
|
52
43
|
ResizeObserver.Collection = Collection;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
ResizeObserver as default
|
|
56
|
-
};
|
|
44
|
+
var src_default = ResizeObserver;
|
|
45
|
+
export { _rs, src_default as default };
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
|
|
2
|
+
let resize_observer_polyfill = require("resize-observer-polyfill");
|
|
3
|
+
resize_observer_polyfill = require_rolldown_runtime.__toESM(resize_observer_polyfill);
|
|
4
|
+
var elementListeners = /* @__PURE__ */ new Map();
|
|
5
5
|
function onResize(entities) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
entities.forEach((entity) => {
|
|
7
|
+
const { target } = entity;
|
|
8
|
+
elementListeners.get(target)?.forEach((listener) => listener(target));
|
|
9
|
+
});
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
var resizeObserver = new resize_observer_polyfill.default(onResize);
|
|
12
12
|
const _el = process.env.NODE_ENV !== "production" ? elementListeners : null;
|
|
13
13
|
const _rs = process.env.NODE_ENV !== "production" ? onResize : null;
|
|
14
14
|
function observe(element, callback) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
if (!elementListeners.has(element)) {
|
|
16
|
+
elementListeners.set(element, /* @__PURE__ */ new Set());
|
|
17
|
+
resizeObserver.observe(element);
|
|
18
|
+
}
|
|
19
|
+
elementListeners?.get?.(element)?.add?.(callback);
|
|
20
20
|
}
|
|
21
21
|
function unobserve(element, callback) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
if (elementListeners.has(element)) {
|
|
23
|
+
elementListeners?.get?.(element)?.delete?.(callback);
|
|
24
|
+
if (!elementListeners?.get?.(element)?.size) {
|
|
25
|
+
resizeObserver.unobserve(element);
|
|
26
|
+
elementListeners.delete(element);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
29
|
}
|
|
30
30
|
exports._el = _el;
|
|
31
31
|
exports._rs = _rs;
|
|
@@ -1,33 +1,28 @@
|
|
|
1
1
|
import ResizeObserver from "resize-observer-polyfill";
|
|
2
|
-
|
|
2
|
+
var elementListeners = /* @__PURE__ */ new Map();
|
|
3
3
|
function onResize(entities) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
entities.forEach((entity) => {
|
|
5
|
+
const { target } = entity;
|
|
6
|
+
elementListeners.get(target)?.forEach((listener) => listener(target));
|
|
7
|
+
});
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
var resizeObserver = new ResizeObserver(onResize);
|
|
10
10
|
const _el = process.env.NODE_ENV !== "production" ? elementListeners : null;
|
|
11
11
|
const _rs = process.env.NODE_ENV !== "production" ? onResize : null;
|
|
12
12
|
function observe(element, callback) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
if (!elementListeners.has(element)) {
|
|
14
|
+
elementListeners.set(element, /* @__PURE__ */ new Set());
|
|
15
|
+
resizeObserver.observe(element);
|
|
16
|
+
}
|
|
17
|
+
elementListeners?.get?.(element)?.add?.(callback);
|
|
18
18
|
}
|
|
19
19
|
function unobserve(element, callback) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
if (elementListeners.has(element)) {
|
|
21
|
+
elementListeners?.get?.(element)?.delete?.(callback);
|
|
22
|
+
if (!elementListeners?.get?.(element)?.size) {
|
|
23
|
+
resizeObserver.unobserve(element);
|
|
24
|
+
elementListeners.delete(element);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
27
|
}
|
|
28
|
-
export {
|
|
29
|
-
_el,
|
|
30
|
-
_rs,
|
|
31
|
-
observe,
|
|
32
|
-
unobserve
|
|
33
|
-
};
|
|
28
|
+
export { _el, _rs, observe, unobserve };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@v-c/resize-observer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.4",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"resize-observer-polyfill": "^1.5.1",
|
|
20
|
-
"@v-c/util": "0.0.
|
|
20
|
+
"@v-c/util": "0.0.15"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "vite build",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ResizeObserverProps, SizeInfo } from '../index.tsx'
|
|
2
2
|
import findDOMNode from '@v-c/util/dist/Dom/findDOMNode'
|
|
3
|
-
import {
|
|
3
|
+
import { filterEmpty } from '@v-c/util/dist/props-util'
|
|
4
|
+
import { createVNode, defineComponent, inject, isVNode, onBeforeUnmount, onMounted, shallowRef } from 'vue'
|
|
4
5
|
import { CollectionContext } from '../Collection'
|
|
5
6
|
import { observe, unobserve } from '../utils/observerUtil.ts'
|
|
6
7
|
import DomWrapper from './DomWrapper'
|
|
@@ -11,6 +12,17 @@ const SingleObserver = defineComponent<ResizeObserverProps>({
|
|
|
11
12
|
setup(props, { expose, slots }) {
|
|
12
13
|
const elementRef = shallowRef<HTMLElement>()
|
|
13
14
|
const wrapperRef = shallowRef()
|
|
15
|
+
const setWrapperRef = (el: any) => {
|
|
16
|
+
if (el?.elementEl && typeof el.elementEl === 'object') {
|
|
17
|
+
elementRef.value = el.elementEl
|
|
18
|
+
}
|
|
19
|
+
else if (el?.__$el && typeof el.__$el === 'object') {
|
|
20
|
+
elementRef.value = el.__$el
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
wrapperRef.value = el
|
|
24
|
+
}
|
|
25
|
+
}
|
|
14
26
|
const onCollectionResize = inject(CollectionContext, () => {})
|
|
15
27
|
const sizeRef = shallowRef<SizeInfo>({ width: -1, height: -1, offsetWidth: -1, offsetHeight: -1 })
|
|
16
28
|
const getDom = () => {
|
|
@@ -20,7 +32,6 @@ const SingleObserver = defineComponent<ResizeObserverProps>({
|
|
|
20
32
|
// 判断当前的dom是不是一个text元素
|
|
21
33
|
if (dom && dom.nodeType === 3 && dom.nextElementSibling)
|
|
22
34
|
return dom.nextElementSibling as HTMLElement
|
|
23
|
-
|
|
24
35
|
return dom
|
|
25
36
|
}
|
|
26
37
|
|
|
@@ -80,6 +91,12 @@ const SingleObserver = defineComponent<ResizeObserverProps>({
|
|
|
80
91
|
getDom,
|
|
81
92
|
})
|
|
82
93
|
return () => {
|
|
94
|
+
const children = filterEmpty(slots?.default?.())
|
|
95
|
+
if (children.length === 1 && isVNode(children[0])) {
|
|
96
|
+
return createVNode(children[0], {
|
|
97
|
+
ref: setWrapperRef,
|
|
98
|
+
})
|
|
99
|
+
}
|
|
83
100
|
return (
|
|
84
101
|
<DomWrapper ref={wrapperRef}>
|
|
85
102
|
{slots.default?.()}
|