{"version":3,"sources":["../../src/mixins/groupable.ts"],"names":[],"mappings":";;;AACA,SAAsB,UAAU,iBAAhC,QAAyD,eAAzD;AAeA,OAAM,SAAU,OAAV,CACJ,SADI,EAEJ,KAFI,EAGJ,MAHI,EAGW;AAEf,WAAO,kBAAkB,SAAlB,EAA6B,KAA7B,EAAoC,MAApC,EAA4C,MAA5C,CAAmD;AACxD,cAAM,WADkD;AAGxD,eAAO;AACL,yBAAa;AACX,sBAAM,MADK;AAEX,uBAFW,sBAEJ;AACL,wBAAI,CAAC,KAAK,SAAL,CAAL,EAAsB,OAAO,SAAP;AAEtB,2BAAO,KAAK,SAAL,EAAgB,WAAvB;AACD;AANU,aADR;AASL,sBAAU;AATL,SAHiD;AAexD,YAfwD,kBAepD;AACF,mBAAO;AACL,0BAAU;AADL,aAAP;AAGD,SAnBuD;;AAqBxD,kBAAU;AACR,wBADQ,0BACI;AACV,oBAAI,CAAC,KAAK,WAAV,EAAuB,OAAO,EAAP;AAEvB,2CACG,KAAK,WADR,EACsB,KAAK,QAD3B;AAGD;AAPO,SArB8C;AA+BxD,eA/BwD,qBA+BjD;AACL,iBAAK,SAAL,KAAoB,KAAK,SAAL,EAAwB,QAAxB,CAAiC,IAAjC,CAApB;AACD,SAjCuD;AAmCxD,qBAnCwD,2BAmC3C;AACX,iBAAK,SAAL,KAAoB,KAAK,SAAL,EAAwB,UAAxB,CAAmC,IAAnC,CAApB;AACD,SArCuD;;AAuCxD,iBAAS;AACP,kBADO,oBACD;AACJ,qBAAK,KAAL,CAAW,QAAX;AACD;AAHM;AAvC+C,KAAnD,CAAP;AA6CD;AAED;AACA,IAAM,YAAY,QAAQ,WAAR,CAAlB;AAEA,eAAe,SAAf","sourcesContent":["// Mixins\nimport { Registrable, inject as RegistrableInject } from './registrable'\n\n// Utilities\nimport { ExtractVue } from '../util/mixins'\nimport { PropValidator } from 'vue/types/options'\nimport { VueConstructor } from 'vue'\n\n/* eslint-disable-next-line no-use-before-define */\nexport type Groupable<T extends string> = VueConstructor<ExtractVue<Registrable<T>> & {\n  activeClass: string\n  isActive: boolean\n  groupClasses: object\n  toggle (): void\n}>\n\nexport function factory<T extends string> (\n  namespace: T,\n  child?: string,\n  parent?: string\n): Groupable<T> {\n  return RegistrableInject(namespace, child, parent).extend({\n    name: 'groupable',\n\n    props: {\n      activeClass: {\n        type: String,\n        default (): string | undefined {\n          if (!this[namespace]) return undefined\n\n          return this[namespace].activeClass\n        }\n      } as any as PropValidator<string>,\n      disabled: Boolean\n    },\n\n    data () {\n      return {\n        isActive: false\n      }\n    },\n\n    computed: {\n      groupClasses (): object {\n        if (!this.activeClass) return {}\n\n        return {\n          [this.activeClass]: this.isActive\n        }\n      }\n    },\n\n    created () {\n      this[namespace] && (this[namespace] as any).register(this)\n    },\n\n    beforeDestroy () {\n      this[namespace] && (this[namespace] as any).unregister(this)\n    },\n\n    methods: {\n      toggle () {\n        this.$emit('change')\n      }\n    }\n  })\n}\n\n/* eslint-disable-next-line no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n"],"sourceRoot":""}