@v-c/resize-observer 0.0.2 → 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/bump.config.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'bumpp'
2
+
3
+ export default defineConfig({
4
+ commit: 'chore(release): @v-c/resize-observer %s',
5
+ tag: '@v-c/resize-observer@%s',
6
+ })
@@ -1 +1,38 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue"),u=Symbol("CollectionContext"),d=n.defineComponent({props:{onBatchResize:{type:Function,required:!1}},setup(o,{slots:t}){const i=n.shallowRef(0),l=n.shallowRef([]),c=n.inject(u,()=>{}),v=(e,r,s)=>{const a=i.value+1;i.value=a,l.value.push({size:e,element:r,data:s}),Promise.resolve().then(()=>{var f;if(i.value===a){const C=l.value;l.value=[],(f=o.onBatchResize)==null||f.call(o,C)}}),c==null||c(e,r,s)};return n.provide(u,v),()=>{var e;return(e=t.default)==null?void 0:e.call(t)}}});exports.Collection=d;exports.CollectionContext=u;
1
+ const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
2
+ let vue = require("vue");
3
+ const CollectionContext = Symbol("CollectionContext");
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
+ }
36
+ });
37
+ exports.Collection = Collection;
38
+ exports.CollectionContext = CollectionContext;
@@ -1,36 +1,36 @@
1
- import { defineComponent as z, shallowRef as f, inject as R, provide as d } from "vue";
2
- const a = Symbol("CollectionContext"), m = /* @__PURE__ */ z({
3
- props: {
4
- onBatchResize: {
5
- type: Function,
6
- required: !1
7
- }
8
- },
9
- setup(n, {
10
- slots: o
11
- }) {
12
- const t = f(0), i = f([]), c = R(a, () => {
13
- });
14
- return d(a, (e, r, u) => {
15
- const l = t.value + 1;
16
- t.value = l, i.value.push({
17
- size: e,
18
- element: r,
19
- data: u
20
- }), Promise.resolve().then(() => {
21
- var s;
22
- if (t.value === l) {
23
- const v = i.value;
24
- i.value = [], (s = n.onBatchResize) == null || s.call(n, v);
25
- }
26
- }), c == null || c(e, r, u);
27
- }), () => {
28
- var e;
29
- return (e = o.default) == null ? void 0 : e.call(o);
30
- };
31
- }
1
+ import { defineComponent, inject, provide, shallowRef } from "vue";
2
+ const CollectionContext = Symbol("CollectionContext");
3
+ const Collection = /* @__PURE__ */ defineComponent({
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
+ }
32
35
  });
33
- export {
34
- m as Collection,
35
- a as CollectionContext
36
- };
36
+ export { Collection, CollectionContext };
@@ -1 +1,7 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("vue"),t=r.defineComponent({setup(n,{slots:e}){return()=>{var u;return(u=e.default)==null?void 0:u.call(e)}}});exports.default=t;
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,14 +1,5 @@
1
- import { defineComponent as p } from "vue";
2
- const f = /* @__PURE__ */ p({
3
- setup(n, {
4
- slots: e
5
- }) {
6
- return () => {
7
- var r;
8
- return (r = e.default) == null ? void 0 : r.call(e);
9
- };
10
- }
11
- });
12
- export {
13
- f as default
14
- };
1
+ import { defineComponent } from "vue";
2
+ var DomWrapper_default = /* @__PURE__ */ defineComponent({ setup(_, { slots }) {
3
+ return () => slots.default?.();
4
+ } });
5
+ export { DomWrapper_default as default };
@@ -1 +1,94 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue"),a=require("@v-c/util/dist/Dom/findDOMNode"),O=require("../Collection.cjs"),w=require("../utils/observerUtil.cjs"),S=require("./DomWrapper.cjs"),x=t.defineComponent({props:{data:{type:null,required:!1},disabled:{type:Boolean,required:!1},onResize:{type:Function,required:!1}},name:"SingleObserver",inheritAttrs:!1,setup(h,{expose:M,slots:f}){const i=t.shallowRef(),c=t.shallowRef(),l=t.inject(O.CollectionContext,()=>{}),n=t.shallowRef({width:-1,height:-1,offsetWidth:-1,offsetHeight:-1}),v=()=>{const e=a(i)||(i.value&&typeof i.value=="object"?a(i.value.nativeElement):null)||a(c.value);return e&&e.nodeType===3&&e.nextElementSibling?e.nextElementSibling:e},g=e=>{const{onResize:m,data:W}=h,{width:u,height:d}=e.getBoundingClientRect(),{offsetHeight:r,offsetWidth:s}=e,b=Math.floor(u),p=Math.floor(d);if(n.value.width!==b||n.value.height!==p||n.value.offsetWidth!==s||n.value.offsetHeight!==r){const R={width:b,height:p,offsetWidth:s,offsetHeight:r};n.value=R;const y=s===Math.round(u)?u:s,H=r===Math.round(d)?d:r,q={...R,offsetWidth:y,offsetHeight:H};l==null||l(q,e,W),m&&Promise.resolve().then(()=>{m(q,e)})}};let o;return t.onMounted(()=>{o=v(),o&&!h.disabled&&w.observe(o,g)}),t.onBeforeUnmount(()=>{o&&w.unobserve(o,g)}),M({getDom:v}),()=>t.createVNode(S.default,{ref:c},{default:()=>{var e;return[(e=f.default)==null?void 0:e.call(f)]}})}});exports.default=x;
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
+ }
92
+ });
93
+ var SingleObserver_default = SingleObserver;
94
+ exports.default = SingleObserver_default;
@@ -1,84 +1,90 @@
1
- import { defineComponent as y, shallowRef as a, inject as z, onMounted as O, onBeforeUnmount as E, createVNode as S } from "vue";
2
- import h from "@v-c/util/dist/Dom/findDOMNode";
3
- import { CollectionContext as q } from "../Collection.js";
4
- import { observe as B, unobserve as C } from "../utils/observerUtil.js";
5
- import D from "./DomWrapper.js";
6
- const P = /* @__PURE__ */ y({
7
- props: {
8
- data: {
9
- type: null,
10
- required: !1
11
- },
12
- disabled: {
13
- type: Boolean,
14
- required: !1
15
- },
16
- onResize: {
17
- type: Function,
18
- required: !1
19
- }
20
- },
21
- name: "SingleObserver",
22
- inheritAttrs: !1,
23
- setup(u, {
24
- expose: w,
25
- slots: r
26
- }) {
27
- const n = a(), m = a(), s = z(q, () => {
28
- }), t = a({
29
- width: -1,
30
- height: -1,
31
- offsetWidth: -1,
32
- offsetHeight: -1
33
- }), c = () => {
34
- const e = h(n) || (n.value && typeof n.value == "object" ? h(n.value.nativeElement) : null) || h(m.value);
35
- return e && e.nodeType === 3 && e.nextElementSibling ? e.nextElementSibling : e;
36
- }, p = (e) => {
37
- const {
38
- onResize: g,
39
- data: x
40
- } = u, {
41
- width: d,
42
- height: l
43
- } = e.getBoundingClientRect(), {
44
- offsetHeight: i,
45
- offsetWidth: f
46
- } = e, v = Math.floor(d), b = Math.floor(l);
47
- if (t.value.width !== v || t.value.height !== b || t.value.offsetWidth !== f || t.value.offsetHeight !== i) {
48
- const R = {
49
- width: v,
50
- height: b,
51
- offsetWidth: f,
52
- offsetHeight: i
53
- };
54
- t.value = R;
55
- const H = f === Math.round(d) ? d : f, M = i === Math.round(l) ? l : i, W = {
56
- ...R,
57
- offsetWidth: H,
58
- offsetHeight: M
59
- };
60
- s == null || s(W, e, x), g && Promise.resolve().then(() => {
61
- g(W, e);
62
- });
63
- }
64
- };
65
- let o;
66
- return O(() => {
67
- o = c(), o && !u.disabled && B(o, p);
68
- }), E(() => {
69
- o && C(o, p);
70
- }), w({
71
- getDom: c
72
- }), () => S(D, {
73
- ref: m
74
- }, {
75
- default: () => {
76
- var e;
77
- return [(e = r.default) == null ? void 0 : e.call(r)];
78
- }
79
- });
80
- }
1
+ import { CollectionContext } from "../Collection.js";
2
+ import { observe, unobserve } from "../utils/observerUtil.js";
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
+ }
81
89
  });
82
- export {
83
- P as default
84
- };
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 +1,48 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue"),s=require("@v-c/util"),c=require("@v-c/util/dist/Children/toArray"),d=require("./Collection.cjs"),f=require("./SingleObserver/index.cjs"),p=require("./utils/observerUtil.cjs");function b(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!t.isVNode(r)}const y="vc-observer-key",u=t.defineComponent({props:{data:{type:null,required:!1},disabled:{type:Boolean,required:!1},onResize:{type:Function,required:!1}},setup(r,{slots:n}){return()=>{var i;const o=c.toArray((i=n.default)==null?void 0:i.call(n));return process.env.NODE_ENV!=="production"&&(o.length>1?s.warning(!1,"Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead."):o.length===0&&s.warning(!1,"`children` of ResizeObserver is empty. Nothing is in observe.")),o.map((e,l)=>{const a=(e==null?void 0:e.key)||`${y}-${l}`;return t.createVNode(f.default,t.mergeProps(r,{key:a}),b(e)?e:{default:()=>[e]})})}}});u.Collection=d.Collection;exports._rs=p._rs;exports.default=u;
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
+ function _isSlot(s) {
10
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s);
11
+ }
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
+ }
44
+ });
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,46 +1,45 @@
1
- import { defineComponent as p, createVNode as a, mergeProps as l, isVNode as u } from "vue";
2
- import { warning as i } from "@v-c/util";
3
- import { toArray as m } from "@v-c/util/dist/Children/toArray";
4
- import { Collection as c } from "./Collection.js";
5
- import d from "./SingleObserver/index.js";
6
- import { _rs as k } from "./utils/observerUtil.js";
7
- function b(r) {
8
- return typeof r == "function" || Object.prototype.toString.call(r) === "[object Object]" && !u(r);
1
+ import { Collection } from "./Collection.js";
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
+ function _isSlot(s) {
8
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
9
9
  }
10
- const y = "vc-observer-key", v = /* @__PURE__ */ p({
11
- props: {
12
- data: {
13
- type: null,
14
- required: !1
15
- },
16
- disabled: {
17
- type: Boolean,
18
- required: !1
19
- },
20
- onResize: {
21
- type: Function,
22
- required: !1
23
- }
24
- },
25
- setup(r, {
26
- slots: o
27
- }) {
28
- return () => {
29
- var n;
30
- const t = m((n = o.default) == null ? void 0 : n.call(o));
31
- return process.env.NODE_ENV !== "production" && (t.length > 1 ? i(!1, "Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.") : t.length === 0 && i(!1, "`children` of ResizeObserver is empty. Nothing is in observe.")), t.map((e, s) => {
32
- const f = (e == null ? void 0 : e.key) || `${y}-${s}`;
33
- return a(d, l(r, {
34
- key: f
35
- }), b(e) ? e : {
36
- default: () => [e]
37
- });
38
- });
39
- };
40
- }
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
+ }
41
42
  });
42
- v.Collection = c;
43
- export {
44
- k as _rs,
45
- v as default
46
- };
43
+ ResizeObserver.Collection = Collection;
44
+ var src_default = ResizeObserver;
45
+ export { _rs, src_default as default };
@@ -1 +1,33 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("resize-observer-polyfill"),o=new Map;function d(c){c.forEach(b=>{var r;const{target:u}=b;(r=o.get(u))==null||r.forEach(v=>v(u))})}const g=new s(d),p=process.env.NODE_ENV!=="production"?o:null,E=process.env.NODE_ENV!=="production"?d:null;function _(c,b){var u,r,v;o.has(c)||(o.set(c,new Set),g.observe(c)),(v=(r=(u=o==null?void 0:o.get)==null?void 0:u.call(o,c))==null?void 0:r.add)==null||v.call(r,b)}function i(c,b){var u,r,v,a,f;o.has(c)&&((v=(r=(u=o==null?void 0:o.get)==null?void 0:u.call(o,c))==null?void 0:r.delete)==null||v.call(r,b),(f=(a=o==null?void 0:o.get)==null?void 0:a.call(o,c))!=null&&f.size||(g.unobserve(c),o.delete(c)))}exports._el=p;exports._rs=E;exports.observe=_;exports.unobserve=i;
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
+ function onResize(entities) {
6
+ entities.forEach((entity) => {
7
+ const { target } = entity;
8
+ elementListeners.get(target)?.forEach((listener) => listener(target));
9
+ });
10
+ }
11
+ var resizeObserver = new resize_observer_polyfill.default(onResize);
12
+ const _el = process.env.NODE_ENV !== "production" ? elementListeners : null;
13
+ const _rs = process.env.NODE_ENV !== "production" ? onResize : null;
14
+ function observe(element, callback) {
15
+ if (!elementListeners.has(element)) {
16
+ elementListeners.set(element, /* @__PURE__ */ new Set());
17
+ resizeObserver.observe(element);
18
+ }
19
+ elementListeners?.get?.(element)?.add?.(callback);
20
+ }
21
+ function unobserve(element, callback) {
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
+ }
30
+ exports._el = _el;
31
+ exports._rs = _rs;
32
+ exports.observe = observe;
33
+ exports.unobserve = unobserve;
@@ -1,24 +1,28 @@
1
- import E from "resize-observer-polyfill";
2
- const o = /* @__PURE__ */ new Map();
3
- function b(c) {
4
- c.forEach((v) => {
5
- var f;
6
- const { target: r } = v;
7
- (f = o.get(r)) == null || f.forEach((u) => u(r));
8
- });
1
+ import ResizeObserver from "resize-observer-polyfill";
2
+ var elementListeners = /* @__PURE__ */ new Map();
3
+ function onResize(entities) {
4
+ entities.forEach((entity) => {
5
+ const { target } = entity;
6
+ elementListeners.get(target)?.forEach((listener) => listener(target));
7
+ });
9
8
  }
10
- const d = new E(b), h = process.env.NODE_ENV !== "production" ? o : null, z = process.env.NODE_ENV !== "production" ? b : null;
11
- function N(c, v) {
12
- var r, f, u;
13
- o.has(c) || (o.set(c, /* @__PURE__ */ new Set()), d.observe(c)), (u = (f = (r = o == null ? void 0 : o.get) == null ? void 0 : r.call(o, c)) == null ? void 0 : f.add) == null || u.call(f, v);
9
+ var resizeObserver = new ResizeObserver(onResize);
10
+ const _el = process.env.NODE_ENV !== "production" ? elementListeners : null;
11
+ const _rs = process.env.NODE_ENV !== "production" ? onResize : null;
12
+ function observe(element, callback) {
13
+ if (!elementListeners.has(element)) {
14
+ elementListeners.set(element, /* @__PURE__ */ new Set());
15
+ resizeObserver.observe(element);
16
+ }
17
+ elementListeners?.get?.(element)?.add?.(callback);
14
18
  }
15
- function O(c, v) {
16
- var r, f, u, a, p;
17
- o.has(c) && ((u = (f = (r = o == null ? void 0 : o.get) == null ? void 0 : r.call(o, c)) == null ? void 0 : f.delete) == null || u.call(f, v), (p = (a = o == null ? void 0 : o.get) == null ? void 0 : a.call(o, c)) != null && p.size || (d.unobserve(c), o.delete(c)));
19
+ function unobserve(element, callback) {
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
+ }
18
27
  }
19
- export {
20
- h as _el,
21
- z as _rs,
22
- N as observe,
23
- O as unobserve
24
- };
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.2",
4
+ "version": "0.0.4",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -16,11 +16,12 @@
16
16
  "vue": "^3.0.0"
17
17
  },
18
18
  "dependencies": {
19
- "classnames": "^2.5.1",
20
19
  "resize-observer-polyfill": "^1.5.1",
21
- "@v-c/util": "0.0.4"
20
+ "@v-c/util": "0.0.15"
22
21
  },
23
22
  "scripts": {
24
- "build": "vite build"
23
+ "build": "vite build",
24
+ "prepublish": "pnpm build",
25
+ "bump": "bumpp --release patch"
25
26
  }
26
27
  }
@@ -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 { defineComponent, inject, onBeforeUnmount, onMounted, shallowRef } from 'vue'
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?.()}