@dimailn/vuetify 2.7.2-alpha56 → 2.7.2-alpha58
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/json/attributes.json +3945 -417
- package/dist/json/tags.json +1120 -133
- package/dist/json/web-types.json +12516 -2651
- package/dist/vuetify.js +93 -102
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +1 -1
- package/dist/vuetify.min.js +2 -2
- package/es5/directives/click-outside/index.js +19 -21
- package/es5/directives/click-outside/index.js.map +1 -1
- package/es5/directives/intersect/index.js +12 -17
- package/es5/directives/intersect/index.js.map +1 -1
- package/es5/directives/mutate/index.js +9 -11
- package/es5/directives/mutate/index.js.map +1 -1
- package/es5/directives/resize/index.js +8 -10
- package/es5/directives/resize/index.js.map +1 -1
- package/es5/directives/scroll/index.js +11 -12
- package/es5/directives/scroll/index.js.map +1 -1
- package/es5/directives/touch/index.js +6 -5
- package/es5/directives/touch/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/overlayable/index.js +27 -26
- package/es5/mixins/overlayable/index.js.map +1 -1
- package/es5/services/theme/utils.js.map +1 -1
- package/lib/directives/click-outside/index.js +17 -19
- package/lib/directives/click-outside/index.js.map +1 -1
- package/lib/directives/intersect/index.js +12 -16
- package/lib/directives/intersect/index.js.map +1 -1
- package/lib/directives/mutate/index.js +9 -11
- package/lib/directives/mutate/index.js.map +1 -1
- package/lib/directives/resize/index.js +8 -8
- package/lib/directives/resize/index.js.map +1 -1
- package/lib/directives/scroll/index.js +8 -8
- package/lib/directives/scroll/index.js.map +1 -1
- package/lib/directives/touch/index.js +6 -5
- package/lib/directives/touch/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/overlayable/index.js +28 -27
- package/lib/mixins/overlayable/index.js.map +1 -1
- package/lib/services/theme/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/components/VMenu/__tests__/VMenuActivatorTest.spec.ts +25 -0
- package/src/components/VMenu/__tests__/test-with-directives.spec.ts +50 -0
- package/src/directives/click-outside/__tests__/click-outside-shadow-dom.spec.ts +2 -1
- package/src/directives/click-outside/__tests__/click-outside.spec.ts +2 -1
- package/src/directives/click-outside/index.ts +25 -18
- package/src/directives/intersect/__tests__/intersect.spec.ts +31 -13
- package/src/directives/intersect/index.ts +15 -19
- package/src/directives/mutate/__tests__/mutate.spec.ts +35 -27
- package/src/directives/mutate/index.ts +12 -6
- package/src/directives/resize/__tests__/resize.spec.ts +4 -4
- package/src/directives/resize/index.ts +11 -18
- package/src/directives/scroll/__tests__/scroll.spec.ts +5 -29
- package/src/directives/scroll/index.ts +14 -7
- package/src/directives/touch/index.ts +6 -5
- package/src/mixins/overlayable/__tests__/overlayable.spec.ts +24 -0
- package/src/mixins/overlayable/index.ts +25 -23
- package/src/services/theme/utils.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mixins/overlayable/index.ts"],"names":[],"mappings":";;;;;;;AACA;;AAGA;;AASA;;;;;;;;;;AAkBA;eACe,0BAAgB;AAC7B,EAAA,IAAI,EAAE,aADuB;AAG7B,EAAA,KAAK,EAAE;AACL,IAAA,WAAW,EAAE,OADR;AAEL,IAAA,YAAY,EAAE,MAFT;AAGL,IAAA,cAAc,EAAE,CAAC,MAAD,EAAS,MAAT;AAHX,GAHsB;AAS7B,EAAA,IAT6B,kBASzB;AACF,WAAO;AACL,MAAA,cAAc,EAAE,CADX;AAEL,MAAA,OAAO,EAAE,IAFJ;AAGL,MAAA,UAAU,EAAE;AAHP,KAAP;AAKD,GAf4B;AAiB7B,EAAA,KAAK,EAAE;AACL,IAAA,WADK,uBACQ,KADR,EACa;AAChB,UAAI,CAAC,KAAK,QAAV,EAAoB;AAEpB,UAAI,KAAJ,EAAW,KAAK,aAAL,GAAX,KACK,KAAK,UAAL;AACN;AANI,GAjBsB;AA0B7B,EAAA,aA1B6B,2BA0BhB;AACX,SAAK,aAAL;AACD,GA5B4B;AA8B7B,EAAA,OAAO,EAAE;AACP,IAAA,aADO,2BACM;AACX;AACA,UAAM,SAAS,GAAG,QAAQ,CAAC,aAAT,CAAuB,KAAvB,CAAlB;AAEA,UAAM,KAAK,GAAG;AACZ,QAAA,QAAQ,EAAE,KAAK,QADH;AAEZ,QAAA,KAAK,EAAE,KAAK,YAFA;AAGZ,QAAA,OAAO,EAAE,KAAK;AAHF,OAAd;AAKA,UAAM,OAAO,GAAG;AACd,QAAA,IADc,kBACV;AACF,iBAAO;AAAE,YAAA,KAAK,EAAE,KAAT;AAAgB,YAAA,MAAM,EAAE;AAAxB,WAAP;AACD,SAHa;AAId,QAAA,MAJc,oBAIR;AACJ,iBAAO,YAAE,iBAAF;AACL,YAAA,UAAU,EAAE,KAAK,KADZ;AAEL,YAAA,MAAM,EAAE,KAAK;AAFR,aAGF,KAHE,EAAP;AAKD;AAVa,OAAhB,CATW,CAqBX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM,UAAU,GAAG,oBAAU,OAAV,CAAnB,CA7BW,CA+BX;;AACA,UAAM,eAAe,GAAG,UAAU,CAAC,KAAX,CAAiB,SAAjB,CAAxB,CAhCW,CAkCX;;AACA,UAAM,MAAM,GAAG,KAAK,QAAL,GACX,KAAK,GAAL,CAAS,UADE,GAEX,QAAQ,CAAC,aAAT,CAAuB,YAAvB,CAFJ;;AAIA,UAAI,MAAJ,EAAY;AACV,QAAA,MAAM,CAAC,YAAP,CAAoB,SAApB,EAA+B,MAAM,CAAC,UAAtC;AACD;;AAED,WAAK,OAAL,GAAe,eAAf;AACA,WAAK,UAAL,GAAkB,UAAlB;AACD,KA9CM;AA+CP,IAAA,UA/CO,wBA+CG;AAAA;;;;AACR,WAAK,UAAL;AAEA,UAAI,KAAK,WAAT,EAAsB;;AAEtB,UAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,OAAL,MAAY,IAAZ,IAAY,EAAA,KAAA,KAAA,CAAZ,GAAY,KAAA,CAAZ,GAAY,EAAA,CAAE,GAAd,MAAiB,IAAjB,IAAiB,EAAA,KAAA,KAAA,CAAjB,GAAiB,KAAA,CAAjB,GAAiB,EAAA,CAAE,WAApB,CAAJ,EAAqC;AACnC,YAAI,KAAK,OAAT,EAAkB;AAChB,UAAA,oBAAoB,CAAC,KAAK,cAAN,CAApB;AACA,cAAM,SAAS,GAAG,CAAA,EAAA,GAAA,KAAK,OAAL,CAAa,GAAb,MAAgB,IAAhB,IAAgB,EAAA,KAAA,KAAA,CAAhB,GAAgB,KAAA,CAAhB,GAAgB,EAAA,CAAE,UAApC;AACA,WAAA,EAAA,GAAA,KAAK,UAAL,MAAe,IAAf,IAAe,EAAA,KAAA,KAAA,CAAf,GAAe,KAAA,CAAf,GAAe,EAAA,CAAE,OAAF,EAAf;AACA,eAAK,UAAL,GAAkB,IAAlB;AACA,cAAI,SAAS,KAAA,IAAT,IAAA,SAAS,KAAA,KAAA,CAAT,GAAS,KAAA,CAAT,GAAA,SAAS,CAAE,UAAf,EAA2B,SAAS,CAAC,UAAV,CAAqB,WAArB,CAAiC,SAAjC;AAC3B,eAAK,OAAL,GAAe,IAAf;AACD;;AACD,aAAK,aAAL;AACD;;AAED,WAAK,cAAL,GAAsB,qBAAqB,CAAC,YAAK;AAC/C,YAAI,CAAC,KAAI,CAAC,OAAV,EAAmB;;AAEnB,YAAI,KAAI,CAAC,YAAL,KAAsB,SAA1B,EAAqC;AACnC,UAAA,KAAI,CAAC,OAAL,CAAa,MAAb,GAAsB,MAAM,CAAC,KAAI,CAAC,YAAL,GAAoB,CAArB,CAA5B;AACD,SAFD,MAEO,IAAI,KAAI,CAAC,GAAT,EAAc;AACnB,UAAA,KAAI,CAAC,OAAL,CAAa,MAAb,GAAsB,wBAAU,KAAI,CAAC,GAAf,CAAtB;AACD;;AAED,QAAA,KAAI,CAAC,OAAL,CAAa,KAAb,GAAqB,IAArB;AACD,OAV0C,CAA3C;AAYA,aAAO,IAAP;AACD,KA7EM;;AA8EP;AACA,IAAA,aA/EO,2BA+EyB;AAAA;;AAAA,UAAjB,UAAiB,uEAAJ,IAAI;;;;AAC9B,UAAI,KAAK,OAAT,EAAkB;AAChB,YAAI,EAAC,CAAA,EAAA,GAAA,KAAK,OAAL,CAAa,GAAb,MAAgB,IAAhB,IAAgB,EAAA,KAAA,KAAA,CAAhB,GAAgB,KAAA,CAAhB,GAAgB,EAAA,CAAE,WAAnB,CAAJ,EAAoC;AAClC,UAAA,oBAAoB,CAAC,KAAK,cAAN,CAApB;AACA,WAAA,EAAA,GAAA,KAAK,UAAL,MAAe,IAAf,IAAe,EAAA,KAAA,KAAA,CAAf,GAAe,KAAA,CAAf,GAAe,EAAA,CAAE,OAAF,EAAf;AACA,eAAK,UAAL,GAAkB,IAAlB;AACA,eAAK,OAAL,GAAe,IAAf;AACA,UAAA,UAAU,IAAI,KAAK,UAAL,EAAd;AACA;AACD;;AAED,2CAAqB,KAAK,OAAL,CAAa,GAAlC,EAAuC,eAAvC,EAAwD,YAAK;;;AAC3D,cACE,CAAC,MAAI,CAAC,OAAN,IACA,CAAC,MAAI,CAAC,OAAL,CAAa,GADd,IAEA,CAAC,MAAI,CAAC,OAAL,CAAa,GAAb,CAAiB,UAFlB,IAGA,MAAI,CAAC,OAAL,CAAa,KAHb,IAIA,MAAI,CAAC,QALP,EAME;AAEF,cAAM,gBAAgB,GAAG,MAAI,CAAC,OAAL,CAAa,GAAb,CAAiB,UAA1C;AAEA,WAAA,EAAA,GAAA,MAAI,CAAC,UAAL,MAAe,IAAf,IAAe,EAAA,KAAA,KAAA,CAAf,GAAe,KAAA,CAAf,GAAe,EAAA,CAAE,OAAF,EAAf;AACA,UAAA,MAAI,CAAC,UAAL,GAAkB,IAAlB;;AAEA,cAAI,gBAAgB,KAAA,IAAhB,IAAA,gBAAgB,KAAA,KAAA,CAAhB,GAAgB,KAAA,CAAhB,GAAA,gBAAgB,CAAE,UAAtB,EAAkC;AAChC,YAAA,gBAAgB,CAAC,UAAjB,CAA4B,WAA5B,CAAwC,gBAAxC;AACD;;AAED,UAAA,MAAI,CAAC,OAAL,GAAe,IAAf;AACD,SAnBD,EAVgB,CA+BhB;AACA;AACA;;AACA,QAAA,oBAAoB,CAAC,KAAK,cAAN,CAApB;AAEA,aAAK,OAAL,CAAa,KAAb,GAAqB,KAArB;AACD;;AAED,MAAA,UAAU,IAAI,KAAK,UAAL,EAAd;AACD,KAxHM;AAyHP,IAAA,cAzHO,0BAyHS,CAzHT,EAyHsC;AAC3C,UAAI,SAAS,CAAb,EAAgB;AACd,YACE,CAAC,OAAD,EAAU,UAAV,EAAsB,QAAtB,EAAgC,QAAhC,CAA0C,CAAC,CAAC,MAAF,CAAqB,OAA/D,KACA;AACC,QAAA,CAAC,CAAC,MAAF,CAAyB,iBAH5B,EAIE;AAEF,YAAM,EAAE,GAAG,CAAC,kBAAS,EAAV,EAAc,kBAAS,MAAvB,CAAX;AACA,YAAM,IAAI,GAAG,CAAC,kBAAS,IAAV,EAAgB,kBAAS,QAAzB,CAAb;;AAEA,YAAI,EAAE,CAAC,QAAH,CAAY,CAAC,CAAC,OAAd,CAAJ,EAA2E;AACxE,UAAA,CAAS,CAAC,MAAV,GAAmB,CAAC,CAApB;AACF,SAFD,MAEO,IAAI,IAAI,CAAC,QAAL,CAAc,CAAC,CAAC,OAAhB,CAAJ,EAAiF;AACrF,UAAA,CAAS,CAAC,MAAV,GAAmB,CAAnB;AACF,SAFM,MAEA;AACL;AACD;AACF;;AAED,UAAI,CAAC,CAAC,MAAF,KAAa,KAAK,OAAlB,IACD,CAAC,CAAC,IAAF,KAAW,SAAX,IAAwB,CAAC,CAAC,MAAF,KAAa,QAAQ,CAAC,IAD7C,IAEF,KAAK,SAAL,CAAe,CAAf,CAFF,EAEmC,CAAC,CAAC,cAAF;AACpC,KAhJM;AAiJP,IAAA,YAjJO,wBAiJO,EAjJP,EAiJmB;AACxB,UAAI,CAAC,EAAD,IAAO,EAAE,CAAC,QAAH,KAAgB,IAAI,CAAC,YAAhC,EAA8C,OAAO,KAAP;AAE9C,UAAM,KAAK,GAAG,MAAM,CAAC,gBAAP,CAAwB,EAAxB,CAAd;AACA,aAAQ,CAAC,CAAC,MAAD,EAAS,QAAT,EAAmB,QAAnB,CAA4B,KAAK,CAAC,SAAlC,KAAiD,EAAE,CAAC,OAAH,KAAe,QAAjE,KAA8E,EAAE,CAAC,YAAH,GAAkB,EAAE,CAAC,YAApG,IACL,CAAC,MAAD,EAAS,QAAT,EAAmB,QAAnB,CAA4B,KAAK,CAAC,SAAlC,CAAD,IAAmD,EAAE,CAAC,WAAH,GAAiB,EAAE,CAAC,WADxE;AAED,KAvJM;AAwJP,IAAA,YAxJO,wBAwJO,EAxJP,EAwJoB,CAxJpB,EAwJiC;AACtC,UAAI,EAAE,CAAC,YAAH,CAAgB,UAAhB,CAAJ,EAAiC,OAAO,KAAP;AAEjC,UAAM,GAAG,GAAG,CAAC,CAAC,QAAF,IAAc,CAAC,CAAC,MAAhB,GAAyB,GAAzB,GAA+B,GAA3C;AACA,UAAM,KAAK,GAAG,GAAG,KAAK,GAAR,GAAc,CAAC,CAAC,MAAhB,GAAyB,CAAC,CAAC,MAAF,IAAY,CAAC,CAAC,MAArD;AAEA,UAAI,cAAJ;AACA,UAAI,YAAJ;;AACA,UAAI,GAAG,KAAK,GAAZ,EAAiB;AACf,QAAA,cAAc,GAAG,EAAE,CAAC,SAAH,KAAiB,CAAlC;AACA,QAAA,YAAY,GAAG,EAAE,CAAC,SAAH,GAAe,EAAE,CAAC,YAAlB,KAAmC,EAAE,CAAC,YAArD;AACD,OAHD,MAGO;AACL,QAAA,cAAc,GAAG,EAAE,CAAC,UAAH,KAAkB,CAAnC;AACA,QAAA,YAAY,GAAG,EAAE,CAAC,UAAH,GAAgB,EAAE,CAAC,WAAnB,KAAmC,EAAE,CAAC,WAArD;AACD;;AAED,UAAM,WAAW,GAAG,KAAK,GAAG,CAA5B;AACA,UAAM,aAAa,GAAG,KAAK,GAAG,CAA9B;AAEA,UAAI,CAAC,cAAD,IAAmB,WAAvB,EAAoC,OAAO,IAAP;AACpC,UAAI,CAAC,YAAD,IAAiB,aAArB,EAAoC,OAAO,IAAP;;AACpC,UAAI,CAAC,cAAc,IAAI,YAAnB,KAAoC,EAAE,CAAC,UAA3C,EAAuD;AACrD,eAAO,KAAK,YAAL,CAAkB,EAAE,CAAC,UAArB,EAA4C,CAA5C,CAAP;AACD;;AAED,aAAO,KAAP;AACD,KAlLM;AAmLP,IAAA,QAnLO,oBAmLG,EAnLH,EAmLgB,MAnLhB,EAmL+B;AACpC,UAAI,EAAE,KAAK,MAAX,EAAmB;AACjB,eAAO,IAAP;AACD,OAFD,MAEO,IAAI,EAAE,KAAK,IAAP,IAAe,EAAE,KAAK,QAAQ,CAAC,IAAnC,EAAyC;AAC9C,eAAO,KAAP;AACD,OAFM,MAEA;AACL,eAAO,KAAK,QAAL,CAAc,EAAE,CAAC,UAAjB,EAAwC,MAAxC,CAAP;AACD;AACF,KA3LM;AA4LP,IAAA,SA5LO,qBA4LI,CA5LJ,EA4LiB;AACtB,UAAM,IAAI,GAAG,2BAAa,CAAb,CAAb;;AAEA,UAAI,CAAC,CAAC,IAAF,KAAW,SAAX,IAAwB,IAAI,CAAC,CAAD,CAAJ,KAAY,QAAQ,CAAC,IAAjD,EAAuD;AACrD,YAAM,MAAM,GAAG,KAAK,KAAL,CAAW,MAA1B,CADqD,CAErD;;AACA,YAAM,QAAQ,GAAG,MAAM,CAAC,YAAP,GAAuB,UAAxC;;AACA,YAAI,MAAM,IAAI,KAAK,YAAL,CAAkB,MAAlB,CAAV,IAAuC,KAAK,QAAL,CAAc,QAAd,EAAwB,MAAxB,CAA3C,EAA4E;AAC1E,iBAAO,CAAC,KAAK,YAAL,CAAkB,MAAlB,EAA0B,CAA1B,CAAR;AACD;;AACD,eAAO,IAAP;AACD;;AAED,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,IAAI,CAAC,MAAjC,EAAyC,KAAK,EAA9C,EAAkD;AAChD,YAAM,EAAE,GAAG,IAAI,CAAC,KAAD,CAAf;AAEA,YAAI,EAAE,KAAK,QAAX,EAAqB,OAAO,IAAP;AACrB,YAAI,EAAE,KAAK,QAAQ,CAAC,eAApB,EAAqC,OAAO,IAAP;AACrC,YAAI,EAAE,KAAK,KAAK,KAAL,CAAW,OAAtB,EAA+B,OAAO,IAAP;AAE/B,YAAI,KAAK,YAAL,CAAkB,EAAlB,CAAJ,EAAsC,OAAO,CAAC,KAAK,YAAL,CAAkB,EAAlB,EAAiC,CAAjC,CAAR;AACvC;;AAED,aAAO,IAAP;AACD,KApNM;AAqNP,IAAA,UArNO,wBAqNG;AACR,UAAI,KAAK,QAAL,CAAc,UAAd,CAAyB,SAA7B,EAAwC;AACtC,QAAA,QAAQ,CAAC,eAAT,CAA0B,SAA1B,CAAoC,GAApC,CAAwC,mBAAxC;AACD,OAFD,MAEO;AACL,8CAAwB,MAAxB,EAAgC,OAAhC,EAAyC,KAAK,cAA9C,EAA8D;AAAE,UAAA,OAAO,EAAE;AAAX,SAA9D;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,SAAxB,EAAmC,KAAK,cAAxC;AACD;AACF,KA5NM;AA6NP,IAAA,UA7NO,wBA6NG;AACR,MAAA,QAAQ,CAAC,eAAT,CAA0B,SAA1B,CAAoC,MAApC,CAA2C,mBAA3C;AACA,MAAA,MAAM,CAAC,mBAAP,CAA2B,OAA3B,EAAoC,KAAK,cAAzC;AACA,MAAA,MAAM,CAAC,mBAAP,CAA2B,SAA3B,EAAsC,KAAK,cAA3C;AACD;AAjOM;AA9BoB,CAAhB,C","sourcesContent":["// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath\n} from '../../util/helpers'\n\n// Types\nimport { defineComponent, App, createApp, h } from 'vue'\n\ninterface Toggleable extends App {\n isActive?: boolean\n}\n\ninterface Stackable extends App {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default defineComponent({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String]\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n overlayApp: null as App<Element> | null\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n }\n },\n\n beforeUnmount () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n // Create a container element\n const container = document.createElement('div')\n\n const props = {\n absolute: this.absolute,\n color: this.overlayColor,\n opacity: this.overlayOpacity\n }\n const wrapper = {\n data () {\n return { value: false, zIndex: undefined }\n },\n render () {\n return h(VOverlay, {\n modelValue: this.value,\n zIndex: this.zIndex,\n ...props\n })\n }\n }\n // // Create the overlay app\n // const overlayApp = createApp(VOverlay, {\n // absolute: this.absolute,\n // value: false,\n // color: this.overlayColor,\n // opacity: this.overlayOpacity,\n // });\n\n const overlayApp = createApp(wrapper)\n\n // Mount the app to the container\n const overlayInstance = overlayApp.mount(container)\n\n // Determine the parent element\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n if (parent) {\n parent.insertBefore(container, parent.firstChild)\n }\n\n this.overlay = overlayInstance\n this.overlayApp = overlayApp\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay?.$el?.isConnected) {\n if (this.overlay) {\n cancelAnimationFrame(this.animationFrame)\n const container = this.overlay.$el?.parentNode as HTMLElement | null\n this.overlayApp?.unmount()\n this.overlayApp = null\n if (container?.parentNode) container.parentNode.removeChild(container)\n this.overlay = null\n }\n this.createOverlay()\n }\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n if (!this.overlay.$el?.isConnected) {\n cancelAnimationFrame(this.animationFrame)\n this.overlayApp?.unmount()\n this.overlayApp = null\n this.overlay = null\n showScroll && this.showScroll()\n return\n }\n\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n const overlayContainer = this.overlay.$el.parentNode as HTMLElement | null\n\n this.overlayApp?.unmount()\n this.overlayApp = null\n\n if (overlayContainer?.parentNode) {\n overlayContainer.parentNode.removeChild(overlayContainer)\n }\n\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode as typeof keyCodes.up | typeof keyCodes.pageup)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode as typeof keyCodes.down | typeof keyCodes.pagedown)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n }\n }\n})\n"],"sourceRoot":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mixins/overlayable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath\n} from '../../util/helpers'\n\n// Types\nimport { defineComponent, App, createApp, h } from 'vue'\n\ninterface Toggleable extends App {\n isActive?: boolean\n}\n\ninterface Stackable extends App {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default defineComponent({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String]\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n overlayApp: null as App<Element> | null\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n }\n },\n\n beforeUnmount () {\n this.destroyOverlay()\n },\n\n methods: {\n createOverlay () {\n // Create a container element\n const container = document.createElement('div')\n\n const props = {\n absolute: this.absolute,\n color: this.overlayColor,\n opacity: this.overlayOpacity\n }\n const wrapper = {\n data () {\n return { value: false, zIndex: undefined }\n },\n render () {\n return h(VOverlay, {\n modelValue: this.value,\n zIndex: this.zIndex,\n ...props\n })\n }\n }\n // // Create the overlay app\n // const overlayApp = createApp(VOverlay, {\n // absolute: this.absolute,\n // value: false,\n // color: this.overlayColor,\n // opacity: this.overlayOpacity,\n // });\n\n const overlayApp = createApp(wrapper)\n\n // Mount the app to the container\n const overlayInstance = overlayApp.mount(container)\n\n // Determine the parent element\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n if (parent) {\n parent.insertBefore(container, parent.firstChild)\n }\n\n this.overlay = overlayInstance\n this.overlayApp = overlayApp\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay?.$el?.isConnected) {\n this.teardownOverlay()\n this.createOverlay()\n }\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n if (!this.overlay.$el?.isConnected) {\n this.teardownOverlay()\n showScroll && this.showScroll()\n return\n }\n\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.teardownOverlay()\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n teardownOverlay () {\n cancelAnimationFrame(this.animationFrame)\n\n if (!this.overlay) return\n\n const container = this.overlay.$el?.parentNode as HTMLElement | null\n\n this.overlayApp?.unmount()\n this.overlayApp = null\n\n if (container?.parentNode) {\n container.parentNode.removeChild(container)\n }\n\n this.overlay = null\n },\n /** Синхронно уничтожает оверлей независимо от isActive/анимации. Для unmount. */\n destroyOverlay () {\n this.teardownOverlay()\n this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode as typeof keyCodes.up | typeof keyCodes.pageup)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode as typeof keyCodes.down | typeof keyCodes.pagedown)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n }\n }\n})\n"],"sourceRoot":"","file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/theme/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { keys } from '../../util/helpers'\nimport { colorToInt, intToHex, colorToHex, ColorInt } from '../../util/colorUtils'\nimport * as sRGB from '../../util/color/transformSRGB'\nimport * as LAB from '../../util/color/transformCIELAB'\nimport {\n VuetifyParsedTheme,\n VuetifyThemeItem\n} from 'vuetify/types/services/theme'\n\nexport function parse (\n theme: Record<string, VuetifyThemeItem>,\n isItem = false,\n variations = true\n): VuetifyParsedTheme {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n const parsedTheme: any = {}\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n if (value == null) continue\n\n if (!variations) {\n parsedTheme[name] = { base: intToHex(colorToInt(value)) }\n } else if (isItem) {\n /* istanbul ignore else */\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = colorToHex(value)\n }\n } else if (typeof value === 'object') {\n parsedTheme[name] = parse(value, true, variations)\n } else {\n parsedTheme[name] = genVariations(name, colorToInt(value))\n }\n }\n\n if (!isItem) {\n parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base\n }\n\n return parsedTheme\n}\n\n/**\n * Generate the CSS for a base color (.primary)\n */\nconst genBaseColor = (name: string, value: string): string => {\n return `\n.v-application .${name} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nconst genVariantColor = (name: string, variant: string, value: string): string => {\n const [type, n] = variant.split(/(\\d)/, 2)\n return `\n.v-application .${name}.${type}-${n} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\nconst genColorVariableName = (name: string, variant = 'base'): string => `--v-${name}-${variant}`\n\nconst genColorVariable = (name: string, variant = 'base'): string => `var(${genColorVariableName(name, variant)})`\n\nexport function genStyles (theme: VuetifyParsedTheme, cssVar = false): string {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n\n if (!colors.length) return ''\n\n let variablesCss = ''\n let css = ''\n\n const aColor = cssVar ? genColorVariable('anchor') : anchor\n css += `.v-application a { color: ${aColor}; }`\n cssVar && (variablesCss += ` ${genColorVariableName('anchor')}: ${anchor};\\n`)\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base)\n cssVar && (variablesCss += ` ${genColorVariableName(name)}: ${value.base};\\n`)\n\n const variants = keys(value)\n for (let i = 0; i < variants.length; ++i) {\n const variant = variants[i]\n const variantValue = value[variant]\n if (variant === 'base') continue\n\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue)\n cssVar && (variablesCss += ` ${genColorVariableName(name, variant)}: ${variantValue};\\n`)\n }\n }\n\n if (cssVar) {\n variablesCss = `:root {\\n${variablesCss}}\\n\\n`\n }\n\n return variablesCss + css\n}\n\nexport function genVariations (name: string, value: ColorInt): Record<string, string> {\n const values: Record<string, string> = {\n base: intToHex(value)\n }\n\n for (let i = 5; i > 0; --i) {\n values[`lighten${i}`] = intToHex(lighten(value, i))\n }\n\n for (let i = 1; i <= 4; ++i) {\n values[`darken${i}`] = intToHex(darken(value, i))\n }\n\n return values\n}\n\nexport function lighten (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n\nexport function darken (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n"],"sourceRoot":"","file":"utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/services/theme/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { keys } from '../../util/helpers'\nimport { colorToInt, intToHex, colorToHex, ColorInt } from '../../util/colorUtils'\nimport * as sRGB from '../../util/color/transformSRGB'\nimport * as LAB from '../../util/color/transformCIELAB'\nimport {\n VuetifyParsedTheme,\n VuetifyThemeItem\n} from 'vuetify/types/services/theme'\n\nexport function parse (\n theme: Record<string, VuetifyThemeItem>,\n isItem = false,\n variations = true\n): VuetifyParsedTheme {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n const parsedTheme: any = {}\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n if (value == null) continue\n\n if (!variations) {\n parsedTheme[name] = { base: intToHex(colorToInt(value)) }\n } else if (isItem) {\n /* istanbul ignore else */\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = colorToHex(value)\n }\n } else if (typeof value === 'object') {\n parsedTheme[name] = parse(value, true, variations)\n } else {\n parsedTheme[name] = genVariations(name, colorToInt(value))\n }\n }\n\n if (!isItem) {\n parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base\n }\n\n return parsedTheme\n}\n\n/**\n * Generate the CSS for a base color (.primary)\n */\nconst genBaseColor = (name: string, value: string): string => {\n return `\n.v-application .${name} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nconst genVariantColor = (name: string, variant: string, value: string): string => {\n const [type, n] = variant.split(/(\\d)/, 2)\n return `\n.v-application .${name}.${type}-${n} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\nconst genColorVariableName = (name: string, variant = 'base'): string => `--v-${name}-${variant}`\n\nconst genColorVariable = (name: string, variant = 'base'): string => `var(${genColorVariableName(name, variant)})`\n\nexport function genStyles (theme: VuetifyParsedTheme, cssVar = false): string {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n\n if (!colors.length) return ''\n\n let variablesCss = ''\n let css = ''\n\n const aColor = cssVar ? genColorVariable('anchor') : anchor\n css += `.v-application a { color: ${aColor}; }`\n cssVar && (variablesCss += ` ${genColorVariableName('anchor')}: ${anchor};\\n`)\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base)\n cssVar && (variablesCss += ` ${genColorVariableName(name)}: ${value.base};\\n`)\n\n const variants = keys(value)\n for (let i = 0; i < variants.length; ++i) {\n const variant = variants[i] as string\n const variantValue = value[variant]\n if (variant === 'base') continue\n\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue)\n cssVar && (variablesCss += ` ${genColorVariableName(name, variant)}: ${variantValue};\\n`)\n }\n }\n\n if (cssVar) {\n variablesCss = `:root {\\n${variablesCss}}\\n\\n`\n }\n\n return variablesCss + css\n}\n\nexport function genVariations (name: string, value: ColorInt): Record<string, string> {\n const values: Record<string, string> = {\n base: intToHex(value)\n }\n\n for (let i = 5; i > 0; --i) {\n values[`lighten${i}`] = intToHex(lighten(value, i))\n }\n\n for (let i = 1; i <= 4; ++i) {\n values[`darken${i}`] = intToHex(darken(value, i))\n }\n\n return values\n}\n\nexport function lighten (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n\nexport function darken (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n"],"sourceRoot":"","file":"utils.js"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { attachedRoot } from '../../util/dom';
|
|
2
|
+
const clickOutsideState = new WeakMap();
|
|
2
3
|
|
|
3
4
|
function defaultConditional() {
|
|
4
5
|
return true;
|
|
@@ -36,7 +37,9 @@ function checkIsActive(e, binding) {
|
|
|
36
37
|
|
|
37
38
|
function directive(e, el, binding) {
|
|
38
39
|
const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;
|
|
39
|
-
|
|
40
|
+
const state = clickOutsideState.get(el);
|
|
41
|
+
if (!state) return;
|
|
42
|
+
state.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {
|
|
40
43
|
checkIsActive(e, binding) && handler && handler(e);
|
|
41
44
|
}, 0);
|
|
42
45
|
}
|
|
@@ -60,40 +63,35 @@ export const ClickOutside = {
|
|
|
60
63
|
const onClick = e => directive(e, el, binding);
|
|
61
64
|
|
|
62
65
|
const onMousedown = e => {
|
|
63
|
-
|
|
66
|
+
const state = clickOutsideState.get(el);
|
|
67
|
+
if (!state) return;
|
|
68
|
+
state.lastMousedownWasOutside = checkEvent(e, el, binding);
|
|
64
69
|
};
|
|
65
70
|
|
|
71
|
+
clickOutsideState.set(el, {
|
|
72
|
+
onClick,
|
|
73
|
+
onMousedown,
|
|
74
|
+
lastMousedownWasOutside: true
|
|
75
|
+
});
|
|
66
76
|
handleShadow(el, app => {
|
|
67
77
|
app.addEventListener('click', onClick, true);
|
|
68
78
|
app.addEventListener('mousedown', onMousedown, true);
|
|
69
79
|
});
|
|
70
|
-
|
|
71
|
-
if (!el._clickOutside) {
|
|
72
|
-
el._clickOutside = {
|
|
73
|
-
lastMousedownWasOutside: true
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
el._clickOutside[vnode.ctx.uid] = {
|
|
78
|
-
onClick,
|
|
79
|
-
onMousedown
|
|
80
|
-
};
|
|
81
80
|
},
|
|
82
81
|
|
|
83
82
|
unmounted(el, binding, vnode) {
|
|
84
|
-
|
|
83
|
+
const state = clickOutsideState.get(el);
|
|
84
|
+
if (!state) return;
|
|
85
85
|
handleShadow(el, app => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (!app || !((_a = el._clickOutside) === null || _a === void 0 ? void 0 : _a[vnode.ctx.uid])) return;
|
|
86
|
+
if (!app) return;
|
|
89
87
|
const {
|
|
90
88
|
onClick,
|
|
91
89
|
onMousedown
|
|
92
|
-
} =
|
|
90
|
+
} = state;
|
|
93
91
|
app.removeEventListener('click', onClick, true);
|
|
94
92
|
app.removeEventListener('mousedown', onMousedown, true);
|
|
95
93
|
});
|
|
96
|
-
delete
|
|
94
|
+
clickOutsideState.delete(el);
|
|
97
95
|
}
|
|
98
96
|
|
|
99
97
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/directives/click-outside/index.ts"],"names":[],"mappings":"AAAA,SAAS,YAAT,QAA6B,gBAA7B;;
|
|
1
|
+
{"version":3,"sources":["../../../src/directives/click-outside/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { attachedRoot } from '../../util/dom'\nimport type { VNodeDirective } from '../../types/vue-internal'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: Event) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ntype ClickOutsideDirective = VNodeDirective & {\n value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\ninterface ClickOutsideState {\n onClick: (e: Event) => void\n onMousedown: (e: Event) => void\n lastMousedownWasOutside: boolean\n}\n\nconst clickOutsideState = new WeakMap<HTMLElement, ClickOutsideState>()\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n const state = clickOutsideState.get(el)\n if (!state) return\n\n state.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding)\n const onMousedown = (e: Event) => {\n const state = clickOutsideState.get(el)\n if (!state) return\n state.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n clickOutsideState.set(el, {\n onClick,\n onMousedown,\n lastMousedownWasOutside: true\n })\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const state = clickOutsideState.get(el)\n if (!state) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app) return\n\n const { onClick, onMousedown } = state\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n clickOutsideState.delete(el)\n }\n}\n\nexport default ClickOutside\n"],"sourceRoot":"","file":"index.js"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const intersectState = new WeakMap();
|
|
2
|
+
|
|
1
3
|
function mounted(el, binding, vnode) {
|
|
2
4
|
if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
|
|
3
5
|
return;
|
|
@@ -14,26 +16,22 @@ function mounted(el, binding, vnode) {
|
|
|
14
16
|
};
|
|
15
17
|
if (!handler) return;
|
|
16
18
|
const observer = new IntersectionObserver((entries = [], observer) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const _observe = (_a = el._observe) === null || _a === void 0 ? void 0 : _a[vnode.ctx.uid];
|
|
20
|
-
|
|
21
|
-
if (!_observe) return; // Just in case, should never fire
|
|
19
|
+
const state = intersectState.get(el);
|
|
20
|
+
if (!state) return; // Just in case, should never fire
|
|
22
21
|
|
|
23
22
|
const isIntersecting = entries.some(entry => entry.isIntersecting); // If is not quiet or has already been
|
|
24
23
|
// initted, invoke the user callback
|
|
25
24
|
|
|
26
|
-
if (handler && typeof handler === 'function' && (!modifiers.quiet ||
|
|
25
|
+
if (handler && typeof handler === 'function' && (!modifiers.quiet || state.init) && (!modifiers.once || isIntersecting || state.init)) {
|
|
27
26
|
handler(entries, observer, isIntersecting);
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
if (isIntersecting && modifiers.once) unmounted(el, binding, vnode);else
|
|
29
|
+
if (isIntersecting && modifiers.once) unmounted(el, binding, vnode);else state.init = true;
|
|
31
30
|
}, options);
|
|
32
|
-
|
|
33
|
-
el._observe[vnode.ctx.uid] = {
|
|
31
|
+
intersectState.set(el, {
|
|
34
32
|
init: false,
|
|
35
33
|
observer
|
|
36
|
-
};
|
|
34
|
+
});
|
|
37
35
|
observer.observe(el);
|
|
38
36
|
}
|
|
39
37
|
|
|
@@ -46,12 +44,10 @@ function updated(el, binding, vnode) {
|
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
function unmounted(el, binding, vnode) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
observe.observer.unobserve(el);
|
|
54
|
-
delete el._observe[vnode.ctx.uid];
|
|
47
|
+
const state = intersectState.get(el);
|
|
48
|
+
if (!state) return;
|
|
49
|
+
state.observer.unobserve(el);
|
|
50
|
+
intersectState.delete(el);
|
|
55
51
|
}
|
|
56
52
|
|
|
57
53
|
export const Intersect = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/directives/intersect/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/directives/intersect/index.ts"],"names":[],"mappings":"AAwBA,MAAM,cAAc,GAAG,IAAI,OAAJ,EAAvB;;AAEA,SAAS,OAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,MAAI,OAAO,MAAP,KAAkB,WAAlB,IAAiC,EAAE,0BAA0B,MAA5B,CAArC,EAA0E;AAAE;AAAQ;;AAEpF,QAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,EAAvC;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM;AAAE,IAAA,OAAF;AAAW,IAAA;AAAX,MACJ,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,KAAK,IAAvC,IAA+C,aAAa,KAA5D,GACI,KADJ,GAEI;AAAE,IAAA,OAAO,EAAE,KAAX;AAAkB,IAAA,OAAO,EAAE;AAA3B,GAHN;AAKA,MAAI,CAAC,OAAL,EAAc;AAEd,QAAM,QAAQ,GAAG,IAAI,oBAAJ,CACf,CACE,OAAA,GAAuC,EADzC,EAEE,QAFF,KAGI;AACF,UAAM,KAAK,GAAG,cAAc,CAAC,GAAf,CAAmB,EAAnB,CAAd;AACA,QAAI,CAAC,KAAL,EAAY,OAFV,CAEiB;;AAEnB,UAAM,cAAc,GAAG,OAAO,CAAC,IAAR,CAAa,KAAK,IAAI,KAAK,CAAC,cAA5B,CAAvB,CAJE,CAMF;AACA;;AACA,QACE,OAAO,IACP,OAAO,OAAP,KAAmB,UADnB,KAEC,CAAC,SAAS,CAAC,KAAX,IAAoB,KAAK,CAAC,IAF3B,MAGC,CAAC,SAAS,CAAC,IAAX,IAAmB,cAAnB,IAAqC,KAAK,CAAC,IAH5C,CADF,EAKE;AACA,MAAA,OAAO,CAAC,OAAD,EAAU,QAAV,EAAoB,cAApB,CAAP;AACD;;AAED,QAAI,cAAc,IAAI,SAAS,CAAC,IAAhC,EAAsC,SAAS,CAAC,EAAD,EAAK,OAAL,EAAc,KAAd,CAAT,CAAtC,KACK,KAAK,CAAC,IAAN,GAAa,IAAb;AACN,GAvBc,EAwBf,OAxBe,CAAjB;AA2BA,EAAA,cAAc,CAAC,GAAf,CAAmB,EAAnB,EAAuB;AAAE,IAAA,IAAI,EAAE,KAAR;AAAe,IAAA;AAAf,GAAvB;AAEA,EAAA,QAAQ,CAAC,OAAT,CAAiB,EAAjB;AACD;;AAED,SAAS,OAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ;AACA,MAAI,OAAO,CAAC,KAAR,KAAkB,OAAO,CAAC,QAA9B,EAAwC;AACtC,IAAA,SAAS,CAAC,EAAD,EAAK,OAAL,EAAc,KAAd,CAAT;AACA,IAAA,OAAO,CAAC,EAAD,EAAK,OAAL,EAAc,KAAd,CAAP;AACD;AACF;;AAED,SAAS,SAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM,KAAK,GAAG,cAAc,CAAC,GAAf,CAAmB,EAAnB,CAAd;AACA,MAAI,CAAC,KAAL,EAAY;AAEZ,EAAA,KAAK,CAAC,QAAN,CAAe,SAAf,CAAyB,EAAzB;AACA,EAAA,cAAc,CAAC,MAAf,CAAsB,EAAtB;AACD;;AAED,OAAO,MAAM,SAAS,GAIlB;AACF,EAAA,OADE;AAEF,EAAA,OAFE;AAGF,EAAA;AAHE,CAJG;AAUP,eAAe,SAAf","sourcesContent":["import { DirectiveBinding, ObjectDirective, VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean\n) => void;\n\ninterface ObserveDirectiveBinding\n extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?:\n | ObserveHandler\n | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\ninterface IntersectState {\n init: boolean\n observer: IntersectionObserver\n}\n\nconst intersectState = new WeakMap<HTMLElement, IntersectState>()\n\nfunction mounted (\n el: HTMLElement,\n binding: ObserveDirectiveBinding,\n vnode: VNode\n) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) { return }\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } =\n typeof value === 'object' && value !== null && 'handler' in value\n ? value\n : { handler: value, options: {} }\n\n if (!handler) return\n\n const observer = new IntersectionObserver(\n (\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const state = intersectState.get(el)\n if (!state) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler &&\n typeof handler === 'function' &&\n (!modifiers.quiet || state.init) &&\n (!modifiers.once || isIntersecting || state.init)\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unmounted(el, binding, vnode)\n else state.init = true\n },\n options\n )\n\n intersectState.set(el, { init: false, observer })\n\n observer.observe(el)\n}\n\nfunction updated (\n el: HTMLElement,\n binding: ObserveDirectiveBinding,\n vnode: VNode\n) {\n // Если значение изменилось, пересоздаем observer\n if (binding.value !== binding.oldValue) {\n unmounted(el, binding, vnode)\n mounted(el, binding, vnode)\n }\n}\n\nfunction unmounted (\n el: HTMLElement,\n binding: ObserveDirectiveBinding,\n vnode: VNode\n) {\n const state = intersectState.get(el)\n if (!state) return\n\n state.observer.unobserve(el)\n intersectState.delete(el)\n}\n\nexport const Intersect: ObjectDirective<\n HTMLElement,\n | ObserveHandler\n | { handler: ObserveHandler, options?: IntersectionObserverInit }\n> = {\n mounted,\n updated,\n unmounted\n}\n\nexport default Intersect\n"],"sourceRoot":"","file":"index.js"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const mutateState = new WeakMap();
|
|
2
|
+
|
|
1
3
|
function mounted(el, binding, vnode) {
|
|
2
4
|
const modifiers = binding.modifiers || {};
|
|
3
5
|
const value = binding.value;
|
|
@@ -23,27 +25,23 @@ function mounted(el, binding, vnode) {
|
|
|
23
25
|
};
|
|
24
26
|
const observer = new MutationObserver((mutationsList, observer) => {
|
|
25
27
|
/* istanbul ignore if */
|
|
26
|
-
if (!el
|
|
28
|
+
if (!mutateState.has(el)) return; // Just in case, should never fire
|
|
27
29
|
|
|
28
30
|
callback(mutationsList, observer); // If has the once modifier, unbind
|
|
29
31
|
|
|
30
32
|
once && unmounted(el, binding, vnode);
|
|
31
33
|
});
|
|
32
34
|
observer.observe(el, options);
|
|
33
|
-
|
|
34
|
-
el._mutate[vnode.ctx.uid] = {
|
|
35
|
+
mutateState.set(el, {
|
|
35
36
|
observer
|
|
36
|
-
};
|
|
37
|
+
});
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
function unmounted(el, binding, vnode) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
el._mutate[vnode.ctx.uid].observer.disconnect();
|
|
45
|
-
|
|
46
|
-
delete el._mutate[vnode.ctx.uid];
|
|
41
|
+
const state = mutateState.get(el);
|
|
42
|
+
if (!state) return;
|
|
43
|
+
state.observer.disconnect();
|
|
44
|
+
mutateState.delete(el);
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
export const Mutate = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/directives/mutate/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/directives/mutate/index.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,GAAG,IAAI,OAAJ,EAApB;;AAEA,SAAS,OAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM,SAAS,GAAI,OAAO,CAAC,SAAR,IAAyC,EAA5D;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM,QAAQ,GAAG,OAAO,KAAP,KAAiB,QAAjB,GAA4B,KAAK,CAAC,OAAlC,GAA4C,KAA7D;AACA,QAAM;AAAE,IAAA,IAAF;AAAQ,OAAG;AAAX,MAA4B,SAAlC;AACA,QAAM,YAAY,GAAG,MAAM,CAAC,IAAP,CAAY,YAAZ,EAA0B,MAA1B,GAAmC,CAAxD,CANY,CAQZ;;AACA,QAAM,OAAO,GACX,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,CAAC,OAAnC,GACI,KAAK,CAAC,OADV,GAEI,YAAY,GACV;AACA;AACE,IAAA,UAAU,EAAE,YAAY,CAAC,IAF3B;AAGE,IAAA,SAAS,EAAE,YAAY,CAAC,KAH1B;AAIE,IAAA,OAAO,EAAE,YAAY,CAAC,GAJxB;AAKE,IAAA,aAAa,EAAE,YAAY,CAAC;AAL9B,GADU,GAQV;AACA;AACE,IAAA,UAAU,EAAE,IAFd;AAGE,IAAA,SAAS,EAAE,IAHb;AAIE,IAAA,OAAO,EAAE,IAJX;AAKE,IAAA,aAAa,EAAE;AALjB,GAXR;AAmBA,QAAM,QAAQ,GAAG,IAAI,gBAAJ,CACf,CAAC,aAAD,EAAkC,QAAlC,KAAgE;AAC9D;AACA,QAAI,CAAC,WAAW,CAAC,GAAZ,CAAgB,EAAhB,CAAL,EAA0B,OAFoC,CAE7B;;AAEjC,IAAA,QAAQ,CAAC,aAAD,EAAgB,QAAhB,CAAR,CAJ8D,CAM9D;;AACA,IAAA,IAAI,IAAI,SAAS,CAAC,EAAD,EAAK,OAAL,EAAc,KAAd,CAAjB;AACD,GATc,CAAjB;AAYA,EAAA,QAAQ,CAAC,OAAT,CAAiB,EAAjB,EAAqB,OAArB;AACA,EAAA,WAAW,CAAC,GAAZ,CAAgB,EAAhB,EAAoB;AAAE,IAAA;AAAF,GAApB;AACD;;AAED,SAAS,SAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM,KAAK,GAAG,WAAW,CAAC,GAAZ,CAAgB,EAAhB,CAAd;AACA,MAAI,CAAC,KAAL,EAAY;AAEZ,EAAA,KAAK,CAAC,QAAN,CAAe,UAAf;AACA,EAAA,WAAW,CAAC,MAAZ,CAAmB,EAAnB;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,OADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["import { DirectiveBinding, VNode } from 'vue'\n\ntype MutateHandler = (\n mutationsList: MutationRecord[],\n observer: MutationObserver\n) => void;\n\ntype MutateValue =\n | MutateHandler\n | { handler: MutateHandler, options?: MutationObserverInit };\n\ntype MutateModifiers = {\n once?: boolean\n attr?: boolean\n child?: boolean\n sub?: boolean\n char?: boolean\n};\n\ninterface MutateState {\n observer: MutationObserver\n}\n\nconst mutateState = new WeakMap<HTMLElement, MutateState>()\n\nfunction mounted (\n el: HTMLElement,\n binding: DirectiveBinding<MutateValue>,\n vnode: VNode\n) {\n const modifiers = (binding.modifiers as MutateModifiers) || {}\n const value = binding.value\n const callback = typeof value === 'object' ? value.handler : value!\n const { once, ...modifierKeys } = modifiers\n const hasModifiers = Object.keys(modifierKeys).length > 0\n\n // Options take top priority\n const options =\n typeof value === 'object' && value.options\n ? value.options\n : hasModifiers\n ? {\n // If we have modifiers, use only those provided\n attributes: modifierKeys.attr,\n childList: modifierKeys.child,\n subtree: modifierKeys.sub,\n characterData: modifierKeys.char\n }\n : {\n // Defaults to everything on\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true\n }\n\n const observer = new MutationObserver(\n (mutationsList: MutationRecord[], observer: MutationObserver) => {\n /* istanbul ignore if */\n if (!mutateState.has(el)) return // Just in case, should never fire\n\n callback(mutationsList, observer)\n\n // If has the once modifier, unbind\n once && unmounted(el, binding, vnode)\n }\n )\n\n observer.observe(el, options)\n mutateState.set(el, { observer })\n}\n\nfunction unmounted (\n el: HTMLElement,\n binding: DirectiveBinding<MutateValue>,\n vnode: VNode\n) {\n const state = mutateState.get(el)\n if (!state) return\n\n state.observer.disconnect()\n mutateState.delete(el)\n}\n\nexport const Mutate = {\n mounted,\n unmounted\n}\n\nexport default Mutate\n"],"sourceRoot":"","file":"index.js"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
const resizeState = new WeakMap();
|
|
2
|
+
|
|
1
3
|
function mounted(el, binding, vnode) {
|
|
2
4
|
const callback = binding.value;
|
|
3
5
|
const options = binding.options || {
|
|
4
6
|
passive: true
|
|
5
7
|
};
|
|
6
8
|
window.addEventListener('resize', callback, options);
|
|
7
|
-
|
|
8
|
-
el._onResize[vnode.ctx.uid] = {
|
|
9
|
+
resizeState.set(el, {
|
|
9
10
|
callback,
|
|
10
11
|
options
|
|
11
|
-
};
|
|
12
|
+
});
|
|
12
13
|
|
|
13
14
|
if (!binding.modifiers || !binding.modifiers.quiet) {
|
|
14
15
|
callback();
|
|
@@ -16,15 +17,14 @@ function mounted(el, binding, vnode) {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
function unmounted(el, binding, vnode) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (!((_a = el._onResize) === null || _a === void 0 ? void 0 : _a[vnode.ctx.uid])) return;
|
|
20
|
+
const state = resizeState.get(el);
|
|
21
|
+
if (!state) return;
|
|
22
22
|
const {
|
|
23
23
|
callback,
|
|
24
24
|
options
|
|
25
|
-
} =
|
|
25
|
+
} = state;
|
|
26
26
|
window.removeEventListener('resize', callback, options);
|
|
27
|
-
delete
|
|
27
|
+
resizeState.delete(el);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export const Resize = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/directives/resize/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/directives/resize/index.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,GAAG,IAAI,OAAJ,EAApB;;AAEA,SAAS,OAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM,QAAQ,GAAG,OAAO,CAAC,KAAzB;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,OAAR,IAAmB;AAAE,IAAA,OAAO,EAAE;AAAX,GAAnC;AAEA,EAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,QAAlC,EAA4C,OAA5C;AAEA,EAAA,WAAW,CAAC,GAAZ,CAAgB,EAAhB,EAAoB;AAClB,IAAA,QADkB;AAElB,IAAA;AAFkB,GAApB;;AAKA,MAAI,CAAC,OAAO,CAAC,SAAT,IAAsB,CAAC,OAAO,CAAC,SAAR,CAAkB,KAA7C,EAAoD;AAClD,IAAA,QAAQ;AACT;AACF;;AAED,SAAS,SAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM,KAAK,GAAG,WAAW,CAAC,GAAZ,CAAgB,EAAhB,CAAd;AACA,MAAI,CAAC,KAAL,EAAY;AACZ,QAAM;AAAE,IAAA,QAAF;AAAY,IAAA;AAAZ,MAAwB,KAA9B;AAEA,EAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,QAArC,EAA+C,OAA/C;AACA,EAAA,WAAW,CAAC,MAAZ,CAAmB,EAAnB;AACD;;AAED,OAAO,MAAM,MAAM,GAAoB;AACrC,EAAA,OADqC;AAErC,EAAA;AAFqC,CAAhC;AAKP,eAAe,MAAf","sourcesContent":["import { DirectiveBinding, ObjectDirective, VNode } from 'vue'\n\ninterface ResizeDirectiveBinding extends DirectiveBinding {\n value: () => void\n options?: boolean | AddEventListenerOptions\n}\n\ninterface ResizeState {\n callback: () => void\n options: boolean | AddEventListenerOptions\n}\n\nconst resizeState = new WeakMap<HTMLElement, ResizeState>()\n\nfunction mounted (\n el: HTMLElement,\n binding: ResizeDirectiveBinding,\n vnode: VNode\n) {\n const callback = binding.value\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n resizeState.set(el, {\n callback,\n options\n })\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unmounted (\n el: HTMLElement,\n binding: ResizeDirectiveBinding,\n vnode: VNode\n) {\n const state = resizeState.get(el)\n if (!state) return\n const { callback, options } = state\n\n window.removeEventListener('resize', callback, options)\n resizeState.delete(el)\n}\n\nexport const Resize: ObjectDirective = {\n mounted,\n unmounted\n}\n\nexport default Resize\n"],"sourceRoot":"","file":"index.js"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const scrollState = new WeakMap();
|
|
2
|
+
|
|
1
3
|
function mounted(el, binding, vnode) {
|
|
2
4
|
const {
|
|
3
5
|
self = false
|
|
@@ -10,26 +12,24 @@ function mounted(el, binding, vnode) {
|
|
|
10
12
|
const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
|
|
11
13
|
if (!target) return;
|
|
12
14
|
target.addEventListener('scroll', handler, options);
|
|
13
|
-
|
|
14
|
-
el._onScroll[vnode.ctx.uid] = {
|
|
15
|
+
scrollState.set(el, {
|
|
15
16
|
handler,
|
|
16
17
|
options,
|
|
17
18
|
// Don't reference self
|
|
18
19
|
target: self ? undefined : target
|
|
19
|
-
};
|
|
20
|
+
});
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
function unmounted(el, binding, vnode) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (!((_a = el._onScroll) === null || _a === void 0 ? void 0 : _a[vnode.ctx.uid])) return;
|
|
24
|
+
const state = scrollState.get(el);
|
|
25
|
+
if (!state) return;
|
|
26
26
|
const {
|
|
27
27
|
handler,
|
|
28
28
|
options,
|
|
29
29
|
target = el
|
|
30
|
-
} =
|
|
30
|
+
} = state;
|
|
31
31
|
target.removeEventListener('scroll', handler, options);
|
|
32
|
-
delete
|
|
32
|
+
scrollState.delete(el);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export const Scroll = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/directives/scroll/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/directives/scroll/index.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,GAAG,IAAI,OAAJ,EAApB;;AAEA,SAAS,OAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM;AAAE,IAAA,IAAI,GAAG;AAAT,MAAmB,OAAO,CAAC,SAAR,IAAqB,EAA9C;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM,OAAO,GAAI,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,CAAC,OAApC,IAAgD;AAC9D,IAAA,OAAO,EAAE;AADqD,GAAhE;AAGA,QAAM,OAAO,GACX,OAAO,KAAP,KAAiB,UAAjB,IAA+B,iBAAiB,KAAhD,GACI,KADJ,GAEI,KAAK,CAAC,OAHZ;AAKA,QAAM,MAAM,GAAG,IAAI,GACf,EADe,GAEf,OAAO,CAAC,GAAR,GACE,QAAQ,CAAC,aAAT,CAAuB,OAAO,CAAC,GAA/B,CADF,GAEE,MAJN;AAMA,MAAI,CAAC,MAAL,EAAa;AAEb,EAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,OAAlC,EAA2C,OAA3C;AAEA,EAAA,WAAW,CAAC,GAAZ,CAAgB,EAAhB,EAAoB;AAClB,IAAA,OADkB;AAElB,IAAA,OAFkB;AAGlB;AACA,IAAA,MAAM,EAAE,IAAI,GAAG,SAAH,GAAe;AAJT,GAApB;AAMD;;AAED,SAAS,SAAT,CACE,EADF,EAEE,OAFF,EAGE,KAHF,EAGc;AAEZ,QAAM,KAAK,GAAG,WAAW,CAAC,GAAZ,CAAgB,EAAhB,CAAd;AACA,MAAI,CAAC,KAAL,EAAY;AACZ,QAAM;AAAE,IAAA,OAAF;AAAW,IAAA,OAAX;AAAoB,IAAA,MAAM,GAAG;AAA7B,MAAoC,KAA1C;AAEA,EAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,OAArC,EAA8C,OAA9C;AACA,EAAA,WAAW,CAAC,MAAZ,CAAmB,EAAnB;AACD;;AAED,OAAO,MAAM,MAAM,GAAoB;AACrC,EAAA,OADqC;AAErC,EAAA;AAFqC,CAAhC;AAKP,eAAe,MAAf","sourcesContent":["import { DirectiveBinding, VNode, ObjectDirective } from 'vue'\n\ninterface ScrollDirectiveBinding extends Omit<DirectiveBinding, 'modifiers'> {\n value:\n | EventListener\n | {\n handler: EventListener\n options?: boolean | AddEventListenerOptions\n }\n | (EventListenerObject & { options?: boolean | AddEventListenerOptions })\n modifiers?: {\n self?: boolean\n }\n}\n\ninterface ScrollState {\n handler: EventListener | EventListenerObject\n options: boolean | AddEventListenerOptions\n target?: EventTarget\n}\n\nconst scrollState = new WeakMap<HTMLElement, ScrollState>()\n\nfunction mounted (\n el: HTMLElement,\n binding: ScrollDirectiveBinding,\n vnode: VNode\n) {\n const { self = false } = binding.modifiers || {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || {\n passive: true\n }\n const handler =\n typeof value === 'function' || 'handleEvent' in value\n ? value\n : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n scrollState.set(el, {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target\n })\n}\n\nfunction unmounted (\n el: HTMLElement,\n binding: ScrollDirectiveBinding,\n vnode: VNode\n) {\n const state = scrollState.get(el)\n if (!state) return\n const { handler, options, target = el } = state\n\n target.removeEventListener('scroll', handler, options)\n scrollState.delete(el)\n}\n\nexport const Scroll: ObjectDirective = {\n mounted,\n unmounted\n}\n\nexport default Scroll\n"],"sourceRoot":"","file":"index.js"}
|
|
@@ -71,6 +71,8 @@ function createHandlers(value) {
|
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
const touchState = new WeakMap();
|
|
75
|
+
|
|
74
76
|
function mounted(el, binding, vnode) {
|
|
75
77
|
const value = binding.value;
|
|
76
78
|
const target = value.parent ? el.parentElement : el;
|
|
@@ -80,8 +82,7 @@ function mounted(el, binding, vnode) {
|
|
|
80
82
|
|
|
81
83
|
if (!target) return;
|
|
82
84
|
const handlers = createHandlers(binding.value);
|
|
83
|
-
|
|
84
|
-
target._touchHandlers[vnode.ctx.uid] = handlers;
|
|
85
|
+
touchState.set(target, handlers);
|
|
85
86
|
keys(handlers).forEach(eventName => {
|
|
86
87
|
target.addEventListener(eventName, handlers[eventName], options);
|
|
87
88
|
});
|
|
@@ -89,14 +90,14 @@ function mounted(el, binding, vnode) {
|
|
|
89
90
|
|
|
90
91
|
function unmounted(el, binding, vnode) {
|
|
91
92
|
const target = binding.value.parent ? el.parentElement : el;
|
|
92
|
-
if (!target
|
|
93
|
-
const handlers = target
|
|
93
|
+
if (!target) return;
|
|
94
|
+
const handlers = touchState.get(target);
|
|
94
95
|
|
|
95
96
|
if (handlers) {
|
|
96
97
|
keys(handlers).forEach(eventName => {
|
|
97
98
|
target.removeEventListener(eventName, handlers[eventName]);
|
|
98
99
|
});
|
|
99
|
-
delete
|
|
100
|
+
touchState.delete(target);
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/directives/touch/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../src/directives/touch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DirectiveBinding, VNode, ObjectDirective } from 'vue'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\nimport makeDirectiveActivatable from '../../util/make-directive-activatable'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left &&\n touchendX < touchstartX - minDistance &&\n wrapper.left(wrapper)\n wrapper.right &&\n touchendX > touchstartX + minDistance &&\n wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper)\n wrapper.down &&\n touchendY > touchstartY + minDistance &&\n wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start && wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end && wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper)\n }\n}\n\nconst touchState = new WeakMap<EventTarget, TouchStoredHandlers>()\n\nfunction mounted (\n el: HTMLElement,\n binding: DirectiveBinding<TouchValue>,\n vnode: VNode\n) {\n const value = binding.value\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value)\n touchState.set(target, handlers)\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(\n eventName,\n handlers[eventName] as EventListener,\n options\n )\n })\n}\n\nfunction unmounted (\n el: HTMLElement,\n binding: DirectiveBinding<TouchValue>,\n vnode: VNode\n) {\n const target = binding.value.parent ? el.parentElement : el\n if (!target) return\n\n const handlers = touchState.get(target)\n if (handlers) {\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n touchState.delete(target)\n }\n}\n\nexport const Touch: ObjectDirective<HTMLElement, TouchValue> = {\n mounted,\n unmounted\n}\n\nexport default makeDirectiveActivatable(Touch)\n"],"sourceRoot":"","file":"index.js"}
|