Files
halo/ui/console-src/composables/use-entity-extension-points.ts
Ryan Wang a93479dc34 chore: organize and fix imports (#6152)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.17.x

#### What this PR does / why we need it:

重新组织和固定 UI 部分代码的 imports 导入,防止后续因为 imports 的顺序造成不必要的 diff。

基于:https://github.com/halo-dev/halo/pull/6151

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-06-26 10:42:50 +00:00

48 lines
1.3 KiB
TypeScript

import { usePluginModuleStore } from "@/stores/plugin";
import type { EntityFieldItem, PluginModule } from "@halo-dev/console-shared";
import { computed, onMounted, ref, type ComputedRef, type Ref } from "vue";
export function useEntityFieldItemExtensionPoint<T>(
extensionPointName: string,
entity: Ref<T>,
presets: ComputedRef<EntityFieldItem[]>
) {
const { pluginModules } = usePluginModuleStore();
const itemsFromPlugins = ref<EntityFieldItem[]>([]);
const allItems = computed(() => {
return [...presets.value, ...itemsFromPlugins.value];
});
onMounted(() => {
pluginModules.forEach((pluginModule: PluginModule) => {
const { extensionPoints } = pluginModule;
if (!extensionPoints?.[extensionPointName]) {
return;
}
const items = extensionPoints[extensionPointName](
entity
) as EntityFieldItem[];
itemsFromPlugins.value.push(...items);
});
});
const startFields = computed(() => {
return allItems.value
.filter((item) => item.position === "start")
.sort((a, b) => {
return a.priority - b.priority;
});
});
const endFields = computed(() => {
return allItems.value
.filter((item) => item.position === "end")
.sort((a, b) => {
return a.priority - b.priority;
});
});
return { startFields, endFields };
}