{"version":3,"file":"VTreeviewItem.mjs","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","IconValue","useLink","computed","inject","ref","genericComponent","propsFactory","useRender","VTreeviewSymbol","VProgressCircular","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","setup","_ref","attrs","slots","emit","link","id","value","undefined","href","vListItemRef","isClickable","disabled","list","onClick","e","isGroupActivator","select","isSelected","onKeyDown","key","preventDefault","visibleIds","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","has","class","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'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useLink } from '@/composables/router'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport { VProgressCircular } from '../allComponents'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n  loading: Boolean,\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 id = computed(() => props.value === undefined ? link.href.value : props.value)\n    const vListItemRef = ref<VListItem>()\n\n    const isClickable = computed(() =>\n      !props.disabled &&\n      props.link !== false &&\n      (props.link || link.isClickable.value || (props.value != null && !!vListItemRef.value?.list))\n    )\n\n    function onClick (e: MouseEvent | KeyboardEvent) {\n      if (!vListItemRef.value?.isGroupActivator || !isClickable.value) return\n      props.value != null && vListItemRef.value?.select(!vListItemRef.value?.isSelected, e)\n    }\n\n    function onKeyDown (e: KeyboardEvent) {\n      if (e.key === 'Enter' || e.key === ' ') {\n        e.preventDefault()\n        onClick(e as any as MouseEvent)\n      }\n    }\n\n    const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n    useRender(() => {\n      const listItemProps = VListItem.filterProps(props)\n      const hasPrepend = slots.prepend || props.toggleIcon\n\n      return (\n        <VListItem\n          ref={ vListItemRef }\n          { ...listItemProps }\n          class={[\n            'v-treeview-item',\n            {\n              'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value),\n            },\n            props.class,\n          ]}\n          onClick={ onClick }\n          onKeydown={ isClickable.value && onKeyDown }\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                      >\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":[]}