{"version":3,"file":"VTreeviewItem.mjs","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","IconValue","useNestedItem","useLink","computed","inject","ref","EventProp","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","onToggleExpand","toggleIcon","slim","VTreeviewItem","name","props","setup","_ref","attrs","slots","emit","link","rawId","value","undefined","href","vListItemRef","activate","isActivated","isGroupActivator","root","id","isActivatableGroupActivator","activatable","isClickable","disabled","list","activateItem","e","visibleIds","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","has","class","onClick","slotProps","_Fragment","default","loader"],"sources":["../../../src/labs/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { useLink } from '@/composables/router'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport { EventProp, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n  loading: Boolean,\n  onToggleExpand: EventProp<[MouseEvent]>(),\n  toggleIcon: IconValue,\n\n  ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n  name: 'VTreeviewItem',\n\n  props: makeVTreeviewItemProps(),\n\n  setup (props, { attrs, slots, emit }) {\n    const link = useLink(props, attrs)\n    const rawId = computed(() => props.value === undefined ? link.href.value : props.value)\n    const vListItemRef = ref<VListItem>()\n\n    const {\n      activate,\n      isActivated,\n      isGroupActivator,\n      root,\n      id,\n    } = useNestedItem(rawId, false)\n\n    const isActivatableGroupActivator = computed(() =>\n      (root.activatable.value) &&\n      isGroupActivator\n    )\n\n    const isClickable = computed(() =>\n      !props.disabled &&\n      props.link !== false &&\n      (props.link || link.isClickable.value || (props.value != null && !!vListItemRef.value?.list) || isActivatableGroupActivator.value)\n    )\n\n    function activateItem (e: MouseEvent | KeyboardEvent) {\n      if (\n        !isClickable.value ||\n        (!isActivatableGroupActivator.value && isGroupActivator)\n      ) return\n\n      if (root.activatable.value) {\n        if (isActivatableGroupActivator.value) {\n          activate(!isActivated.value, e)\n        } else {\n          vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e)\n        }\n      }\n    }\n\n    const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n    useRender(() => {\n      const listItemProps = omit(VListItem.filterProps(props), ['onClick'])\n      const hasPrepend = slots.prepend || props.toggleIcon\n\n      return (\n        <VListItem\n          { ...listItemProps }\n          active={ isActivated.value }\n          class={[\n            'v-treeview-item',\n            {\n              'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,\n              'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value),\n            },\n            props.class,\n          ]}\n          ripple={ false }\n          onClick={ props.onClick ?? activateItem }\n        >\n          {{\n            ...slots,\n            prepend: hasPrepend ? slotProps => {\n              return (\n                <>\n                  { props.toggleIcon && (\n                    <VListItemAction start={ false }>\n                      <VBtn\n                        density=\"compact\"\n                        icon={ props.toggleIcon }\n                        loading={ props.loading }\n                        variant=\"text\"\n                        onClick={ props.onToggleExpand }\n                      >\n                        {{\n                          loader () {\n                            return (\n                              <VProgressCircular\n                                indeterminate=\"disable-shrink\"\n                                size=\"20\"\n                                width=\"2\"\n                              />\n                            )\n                          },\n                        }}\n                      </VBtn>\n                    </VListItemAction>\n                  )}\n\n                  { slots.prepend?.(slotProps) }\n                </>\n              )\n            } : undefined,\n          }}\n        </VListItem>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}