{"version":3,"file":"gradePicker.obs.js","sources":["../../../Framework/Controls/gradePicker.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <BaseAsyncPicker v-model=\"internalValue\"\r\n                     v-bind=\"standardProps\"\r\n                     :items=\"actualItems\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { standardAsyncPickerProps, useStandardAsyncPickerProps, useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\n    import { useHttp } from \"@Obsidian/Utility/http\";\r\n    import { GradePickerGetGradesOptionsBag } from \"@Obsidian/ViewModels/Rest/Controls/gradePickerGetGradesOptionsBag\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n    import { computed, PropType, ref, watch } from \"vue\";\r\n    import BaseAsyncPicker from \"./baseAsyncPicker.obs\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Object as PropType<ListItemBag | ListItemBag[] | null>,\r\n            required: false\r\n        },\r\n\r\n        useAbbreviation: {\r\n            type: Boolean as PropType<boolean>,\r\n            default: false\r\n        },\r\n\r\n        useGuidAsValue: {\r\n            type: Boolean as PropType<boolean>,\r\n            default: false\r\n        },\r\n\r\n        ...standardAsyncPickerProps\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: ListItemBag | ListItemBag[] | null): void;\r\n    }>();\r\n\r\n    // #region Values\r\n\r\n    const internalValue = useVModelPassthrough(props, \"modelValue\", emit);\r\n    const standardProps = useStandardAsyncPickerProps(props);\r\n    const http = useHttp();\r\n    const loadedItems = ref<ListItemBag[] | null>(null);\r\n\r\n    // #endregion\r\n\r\n    // #region Computed Values\r\n\r\n    /**\r\n     * The actual items to make available to the picker. This allows us to do any\r\n     * post-processing, such as adding additional items, and still be lazy loaded as well.\r\n     */\r\n    const actualItems = computed((): ListItemBag[] | (() => Promise<ListItemBag[]>) => {\r\n        return loadedItems.value || loadOptions;\r\n    });\r\n\r\n    // #endregion\r\n\r\n    // #region Functions\r\n\r\n    /**\r\n     * Loads the items from the server.\r\n     */\r\n    const loadOptions = async (): Promise<ListItemBag[]> => {\r\n        const options: GradePickerGetGradesOptionsBag = {\r\n            useAbbreviation: props.useAbbreviation,\r\n            useGuidAsValue: props.useGuidAsValue\r\n        };\r\n        const result = await http.post<ListItemBag[]>(\"/api/v2/Controls/GradePickerGetGrades\", undefined, options);\r\n\r\n        if (result.isSuccess && result.data) {\r\n            loadedItems.value = result.data;\r\n            return result.data;\r\n        }\r\n        else {\r\n            console.error(result.errorMessage ?? \"Unknown error while loading data.\");\r\n            loadedItems.value = [];\r\n            return [];\r\n        }\r\n    };\r\n\r\n    // #endregion\r\n\r\n    // #region Watchers\r\n\r\n    watch(() => [props.useAbbreviation, props.useGuidAsValue], () => {\r\n        loadedItems.value = null;\r\n    });\r\n\r\n    // #endregion\r\n</script>\r\n"],"names":["internalValue","useVModelPassthrough","props","emit","standardProps","useStandardAsyncPickerProps","http","useHttp","loadedItems","ref","actualItems","computed","value","loadOptions","_ref2","_asyncToGenerator","options","useAbbreviation","useGuidAsValue","result","post","undefined","isSuccess","data","_result$errorMessage","console","error","errorMessage","apply","arguments","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAwCI,IAAMA,aAAa,GAAGC,oBAAoB,CAACC,KAAK,EAAE,YAAY,EAAEC,IAAI,CAAC,CAAA;MACrE,IAAA,IAAMC,aAAa,GAAGC,2BAA2B,CAACH,KAAK,CAAC,CAAA;UACxD,IAAMI,IAAI,GAAGC,OAAO,EAAE,CAAA;MACtB,IAAA,IAAMC,WAAW,GAAGC,GAAG,CAAuB,IAAI,CAAC,CAAA;MAUnD,IAAA,IAAMC,WAAW,GAAGC,QAAQ,CAAC,MAAsD;MAC/E,MAAA,OAAOH,WAAW,CAACI,KAAK,IAAIC,WAAW,CAAA;MAC3C,KAAC,CAAC,CAAA;MASF,IAAA,IAAMA,WAAW,GAAA,YAAA;MAAA,MAAA,IAAAC,KAAA,GAAAC,iBAAA,CAAG,aAAoC;MACpD,QAAA,IAAMC,OAAuC,GAAG;gBAC5CC,eAAe,EAAEf,KAAK,CAACe,eAAe;gBACtCC,cAAc,EAAEhB,KAAK,CAACgB,cAAAA;eACzB,CAAA;cACD,IAAMC,MAAM,GAASb,MAAAA,IAAI,CAACc,IAAI,CAAgB,uCAAuC,EAAEC,SAAS,EAAEL,OAAO,CAAC,CAAA;MAE1G,QAAA,IAAIG,MAAM,CAACG,SAAS,IAAIH,MAAM,CAACI,IAAI,EAAE;MACjCf,UAAAA,WAAW,CAACI,KAAK,GAAGO,MAAM,CAACI,IAAI,CAAA;gBAC/B,OAAOJ,MAAM,CAACI,IAAI,CAAA;MACtB,SAAC,MACI;MAAA,UAAA,IAAAC,oBAAA,CAAA;MACDC,UAAAA,OAAO,CAACC,KAAK,CAAAF,CAAAA,oBAAA,GAACL,MAAM,CAACQ,YAAY,MAAA,IAAA,IAAAH,oBAAA,KAAA,KAAA,CAAA,GAAAA,oBAAA,GAAI,mCAAmC,CAAC,CAAA;gBACzEhB,WAAW,CAACI,KAAK,GAAG,EAAE,CAAA;MACtB,UAAA,OAAO,EAAE,CAAA;MACb,SAAA;aACH,CAAA,CAAA;MAAA,MAAA,OAAA,SAhBKC,WAAWA,GAAA;MAAA,QAAA,OAAAC,KAAA,CAAAc,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;MAAA,OAAA,CAAA;WAgBhB,EAAA,CAAA;MAMDC,IAAAA,KAAK,CAAC,MAAM,CAAC5B,KAAK,CAACe,eAAe,EAAEf,KAAK,CAACgB,cAAc,CAAC,EAAE,MAAM;YAC7DV,WAAW,CAACI,KAAK,GAAG,IAAI,CAAA;MAC5B,KAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;"}