{"version":3,"file":"VExpansionPanel.mjs","names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelSymbol","VExpansionPanelText","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeLazyProps","makeRoundedProps","useRounded","makeTagProps","useBackgroundColor","computed","provide","genericComponent","useRender","VExpansionPanel","name","props","title","String","text","bgColor","emits","val","setup","slots","groupItem","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","isDisabled","disabled","value","selectedIndices","group","items","reduce","arr","item","index","selected","includes","id","push","isBeforeSelected","findIndex","isSelected","some","selectedIndex","isAfterSelected","hasText","hasTitle","collapseIcon","color","expandIcon","hideActions","ripple","eager","default"],"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"sourcesContent":["// Components\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VExpansionPanelText } from './VExpansionPanelText'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeLazyProps } from '@/composables/lazy'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\nexport type VExpansionPanelSlots = {\n  default: []\n  title: []\n  text: []\n}\n\nexport const VExpansionPanel = genericComponent<VExpansionPanelSlots>()({\n  name: 'VExpansionPanel',\n\n  props: {\n    title: String,\n    text: String,\n    bgColor: String,\n\n    ...makeElevationProps(),\n    ...makeGroupItemProps(),\n    ...makeLazyProps(),\n    ...makeRoundedProps(),\n    ...makeTagProps(),\n    ...makeVExpansionPanelTitleProps(),\n  },\n\n  emits: {\n    'group:selected': (val: { value: boolean }) => true,\n  },\n\n  setup (props, { slots }) {\n    const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n    const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n    const { elevationClasses } = useElevation(props)\n    const { roundedClasses } = useRounded(props)\n    const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n    const selectedIndices = computed(() => groupItem.group.items.value.reduce<number[]>((arr, item, index) => {\n      if (groupItem.group.selected.value.includes(item.id)) arr.push(index)\n      return arr\n    }, []))\n\n    const isBeforeSelected = computed(() => {\n      const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n      return !groupItem.isSelected.value &&\n        selectedIndices.value.some(selectedIndex => selectedIndex - index === 1)\n    })\n\n    const isAfterSelected = computed(() => {\n      const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n      return !groupItem.isSelected.value &&\n        selectedIndices.value.some(selectedIndex => selectedIndex - index === -1)\n    })\n\n    provide(VExpansionPanelSymbol, groupItem)\n\n    useRender(() => {\n      const hasText = !!(slots.text || props.text)\n      const hasTitle = !!(slots.title || props.title)\n\n      return (\n        <props.tag\n          class={[\n            'v-expansion-panel',\n            {\n              'v-expansion-panel--active': groupItem.isSelected.value,\n              'v-expansion-panel--before-active': isBeforeSelected.value,\n              'v-expansion-panel--after-active': isAfterSelected.value,\n              'v-expansion-panel--disabled': isDisabled.value,\n            },\n            roundedClasses.value,\n            backgroundColorClasses.value,\n          ]}\n          style={ backgroundColorStyles.value }\n          aria-expanded={ groupItem.isSelected.value }\n        >\n          <div\n            class={[\n              'v-expansion-panel__shadow',\n              ...elevationClasses.value,\n            ]}\n          />\n\n          { hasTitle && (\n            <VExpansionPanelTitle\n              key=\"title\"\n              collapseIcon={ props.collapseIcon }\n              color={ props.color }\n              expandIcon={ props.expandIcon }\n              hideActions={ props.hideActions }\n              ripple={ props.ripple }\n            >\n              { slots.title ? slots.title() : props.title }\n            </VExpansionPanelTitle>\n          ) }\n\n          { hasText && (\n            <VExpansionPanelText key=\"text\" eager={ props.eager }>\n              { slots.text ? slots.text() : props.text }\n            </VExpansionPanelText>\n          ) }\n\n          { slots.default?.() }\n        </props.tag>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n"],"mappings":";AAAA;AAAA,SACSA,6BAA6B,EAAEC,oBAAoB;AAAA,SACnDC,qBAAqB;AAAA,SACrBC,mBAAmB,qCAE5B;AAAA,SACSC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,aAAa;AAAA,SACbC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,kBAAkB,uCAE3B;AACA,SAASC,QAAQ,EAAEC,OAAO,QAAQ,KAAK;AAAA,SAC9BC,gBAAgB,EAAEC,SAAS;AAQpC,OAAO,MAAMC,eAAe,GAAGF,gBAAgB,EAAwB,CAAC;EACtEG,IAAI,EAAE,iBAAiB;EAEvBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAAM;IACbC,IAAI,EAAED,MAAM;IACZE,OAAO,EAAEF,MAAM;IAEf,GAAGjB,kBAAkB,EAAE;IACvB,GAAGE,kBAAkB,EAAE;IACvB,GAAGE,aAAa,EAAE;IAClB,GAAGC,gBAAgB,EAAE;IACrB,GAAGE,YAAY,EAAE;IACjB,GAAGX,6BAA6B;EAClC,CAAC;EAEDwB,KAAK,EAAE;IACL,gBAAgB,EAAGC,GAAuB,IAAK;EACjD,CAAC;EAEDC,KAAK,CAAEP,KAAK,QAAa;IAAA,IAAX;MAAEQ;IAAM,CAAC;IACrB,MAAMC,SAAS,GAAGrB,YAAY,CAACY,KAAK,EAAEjB,qBAAqB,CAAC;IAC5D,MAAM;MAAE2B,sBAAsB;MAAEC;IAAsB,CAAC,GAAGlB,kBAAkB,CAACO,KAAK,EAAE,SAAS,CAAC;IAC9F,MAAM;MAAEY;IAAiB,CAAC,GAAG1B,YAAY,CAACc,KAAK,CAAC;IAChD,MAAM;MAAEa;IAAe,CAAC,GAAGtB,UAAU,CAACS,KAAK,CAAC;IAC5C,MAAMc,UAAU,GAAGpB,QAAQ,CAAC,MAAMe,SAAS,EAAEM,QAAQ,CAACC,KAAK,IAAIhB,KAAK,CAACe,QAAQ,CAAC;IAE9E,MAAME,eAAe,GAAGvB,QAAQ,CAAC,MAAMe,SAAS,CAACS,KAAK,CAACC,KAAK,CAACH,KAAK,CAACI,MAAM,CAAW,CAACC,GAAG,EAAEC,IAAI,EAAEC,KAAK,KAAK;MACxG,IAAId,SAAS,CAACS,KAAK,CAACM,QAAQ,CAACR,KAAK,CAACS,QAAQ,CAACH,IAAI,CAACI,EAAE,CAAC,EAAEL,GAAG,CAACM,IAAI,CAACJ,KAAK,CAAC;MACrE,OAAOF,GAAG;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAMO,gBAAgB,GAAGlC,QAAQ,CAAC,MAAM;MACtC,MAAM6B,KAAK,GAAGd,SAAS,CAACS,KAAK,CAACC,KAAK,CAACH,KAAK,CAACa,SAAS,CAACP,IAAI,IAAIA,IAAI,CAACI,EAAE,KAAKjB,SAAS,CAACiB,EAAE,CAAC;MACrF,OAAO,CAACjB,SAAS,CAACqB,UAAU,CAACd,KAAK,IAChCC,eAAe,CAACD,KAAK,CAACe,IAAI,CAACC,aAAa,IAAIA,aAAa,GAAGT,KAAK,KAAK,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,MAAMU,eAAe,GAAGvC,QAAQ,CAAC,MAAM;MACrC,MAAM6B,KAAK,GAAGd,SAAS,CAACS,KAAK,CAACC,KAAK,CAACH,KAAK,CAACa,SAAS,CAACP,IAAI,IAAIA,IAAI,CAACI,EAAE,KAAKjB,SAAS,CAACiB,EAAE,CAAC;MACrF,OAAO,CAACjB,SAAS,CAACqB,UAAU,CAACd,KAAK,IAChCC,eAAe,CAACD,KAAK,CAACe,IAAI,CAACC,aAAa,IAAIA,aAAa,GAAGT,KAAK,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEF5B,OAAO,CAACZ,qBAAqB,EAAE0B,SAAS,CAAC;IAEzCZ,SAAS,CAAC,MAAM;MACd,MAAMqC,OAAO,GAAG,CAAC,EAAE1B,KAAK,CAACL,IAAI,IAAIH,KAAK,CAACG,IAAI,CAAC;MAC5C,MAAMgC,QAAQ,GAAG,CAAC,EAAE3B,KAAK,CAACP,KAAK,IAAID,KAAK,CAACC,KAAK,CAAC;MAE/C;QAAA,SAEW,CACL,mBAAmB,EACnB;UACE,2BAA2B,EAAEQ,SAAS,CAACqB,UAAU,CAACd,KAAK;UACvD,kCAAkC,EAAEY,gBAAgB,CAACZ,KAAK;UAC1D,iCAAiC,EAAEiB,eAAe,CAACjB,KAAK;UACxD,6BAA6B,EAAEF,UAAU,CAACE;QAC5C,CAAC,EACDH,cAAc,CAACG,KAAK,EACpBN,sBAAsB,CAACM,KAAK,CAC7B;QAAA,SACOL,qBAAqB,CAACK,KAAK;QAAA,iBACnBP,SAAS,CAACqB,UAAU,CAACd;MAAK;QAAA;UAAA,SAGjC,CACL,2BAA2B,EAC3B,GAAGJ,gBAAgB,CAACI,KAAK;QAC1B,UAGDmB,QAAQ;UAAA,OAEF,OAAO;UAAA,gBACInC,KAAK,CAACoC,YAAY;UAAA,SACzBpC,KAAK,CAACqC,KAAK;UAAA,cACNrC,KAAK,CAACsC,UAAU;UAAA,eACftC,KAAK,CAACuC,WAAW;UAAA,UACtBvC,KAAK,CAACwC;QAAM;UAAA,gBAEnBhC,KAAK,CAACP,KAAK,GAAGO,KAAK,CAACP,KAAK,EAAE,GAAGD,KAAK,CAACC,KAAK;QAAA,EAE9C,EAECiC,OAAO;UAAA,OACkB,MAAM;UAAA,SAASlC,KAAK,CAACyC;QAAK;UAAA,gBAC/CjC,KAAK,CAACL,IAAI,GAAGK,KAAK,CAACL,IAAI,EAAE,GAAGH,KAAK,CAACG,IAAI;QAAA,EAE3C,EAECK,KAAK,CAACkC,OAAO,IAAI;MAAA;IAGzB,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}