UNPKG

box-overflow-core

Version:

Headless UI for automatically collapsing boxes when overflow.

1 lines 3.05 kB
{"version":3,"file":"observer.cjs","sources":["../../src/observer.ts"],"sourcesContent":["/**\n * @author shunzi <tobyzsj@gmail.com>\n * @date 2024-03-26 00:18:36\n */\n\nimport type { MutationHandler, ResizeHandler } from './types'\nimport { ObserverType } from './types'\n\nexport class Observer<T extends ObserverType > {\n private _observer: ResizeObserver | MutationObserver | null = null\n\n constructor(private readonly type: T, private handler: ResizeHandler | MutationHandler) {\n }\n\n static createResizeObserver(handler: ResizeHandler) {\n return new Observer(ObserverType.Resize, handler)\n }\n\n static createMutationObserver(handler: MutationHandler) {\n return new Observer(ObserverType.Mutation, handler)\n }\n\n get ob() {\n if (this._observer)\n return this._observer\n\n if (this.type === ObserverType.Resize) {\n if (typeof ResizeObserver !== 'undefined') {\n return (this._observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n (this.handler as ResizeHandler)(entry.target as HTMLElement, entry)\n })\n }))\n }\n return null\n }\n else {\n if (typeof MutationObserver !== 'undefined') {\n return (this._observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'childList')\n (this.handler as MutationHandler) (mutation)\n })\n }))\n }\n return null\n }\n }\n\n observe(target: HTMLElement) {\n if (this.type === ObserverType.Resize)\n this.ob?.observe(target, { box: 'border-box' })\n else\n this.ob?.observe(target, { childList: true })\n }\n\n unobserve(target: HTMLElement) {\n this.ob instanceof ResizeObserver && this.ob?.unobserve(target)\n }\n\n disconnect() {\n if (!this.ob)\n return\n this.ob?.disconnect()\n }\n}\n"],"names":["ObserverType"],"mappings":";;;;;;;;;AAQO,MAAM,SAAkC;AAAA,EAG7C,YAA6B,MAAiB,SAA0C;AAFhF,qCAAsD;AAEjC,SAAA,OAAA;AAAiB,SAAA,UAAA;AAAA,EAC9C;AAAA,EAEA,OAAO,qBAAqB,SAAwB;AAClD,WAAO,IAAI,SAASA,MAAAA,aAAa,QAAQ,OAAO;AAAA,EAClD;AAAA,EAEA,OAAO,uBAAuB,SAA0B;AACtD,WAAO,IAAI,SAASA,MAAAA,aAAa,UAAU,OAAO;AAAA,EACpD;AAAA,EAEA,IAAI,KAAK;AACP,QAAI,KAAK;AACP,aAAO,KAAK;AAEV,QAAA,KAAK,SAASA,MAAA,aAAa,QAAQ;AACjC,UAAA,OAAO,mBAAmB,aAAa;AACzC,eAAQ,KAAK,YAAY,IAAI,eAAe,CAAC,YAAY;AAC/C,kBAAA,QAAQ,CAAC,UAAU;AACxB,iBAAK,QAA0B,MAAM,QAAuB,KAAK;AAAA,UAAA,CACnE;AAAA,QAAA,CACF;AAAA,MACH;AACO,aAAA;AAAA,IAAA,OAEJ;AACC,UAAA,OAAO,qBAAqB,aAAa;AAC3C,eAAQ,KAAK,YAAY,IAAI,iBAAiB,CAAC,cAAc;AACjD,oBAAA,QAAQ,CAAC,aAAa;AAC9B,gBAAI,SAAS,SAAS;AACnB,mBAAK,QAA6B,QAAQ;AAAA,UAAA,CAC9C;AAAA,QAAA,CACF;AAAA,MACH;AACO,aAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,QAAQ,QAAqB;;AACvB,QAAA,KAAK,SAASA,MAAAA,aAAa;AAC7B,iBAAK,OAAL,mBAAS,QAAQ,QAAQ,EAAE,KAAK;;AAEhC,iBAAK,OAAL,mBAAS,QAAQ,QAAQ,EAAE,WAAW;EAC1C;AAAA,EAEA,UAAU,QAAqB;;AAC7B,SAAK,cAAc,oBAAkB,UAAK,OAAL,mBAAS,UAAU;AAAA,EAC1D;AAAA,EAEA,aAAa;;AACX,QAAI,CAAC,KAAK;AACR;AACF,eAAK,OAAL,mBAAS;AAAA,EACX;AACF;;"}