This commit upgrades TypeScript to the latest version 5.3 and introduces `verbatimModuleSyntax` in line with the official Vue guide recommendatinos (vuejs/docs#2592). By enforcing `import type` for type-only imports, this commit improves code clarity and supports tooling optimization, ensuring imports are only bundled when necessary for runtime. Changes: - Bump TypeScript to 5.3.3 across the project. - Adjust import statements to utilize `import type` where applicable, promoting cleaner and more efficient code.
32 lines
916 B
TypeScript
32 lines
916 B
TypeScript
import {
|
|
type WatchSource, computed, ref, watch,
|
|
} from 'vue';
|
|
import type { IconName } from '@/presentation/components/Shared/Icon/IconName';
|
|
import { useSvgLoader } from '@/presentation/components/Shared/Icon/UseSvgLoader';
|
|
|
|
export class UseSvgLoaderStub {
|
|
private readonly icons = new Map<IconName, string>();
|
|
|
|
public withSvgIcon(name: IconName, svgContent: string): this {
|
|
this.icons.set(name, svgContent);
|
|
return this;
|
|
}
|
|
|
|
public get(): typeof useSvgLoader {
|
|
return (iconWatcher: WatchSource<IconName>) => {
|
|
const iconName = ref<IconName | undefined>();
|
|
watch(iconWatcher, (newIconName) => {
|
|
iconName.value = newIconName;
|
|
}, { immediate: true });
|
|
return {
|
|
svgContent: computed<string>(() => {
|
|
if (!iconName.value) {
|
|
return '';
|
|
}
|
|
return this.icons.get(iconName.value) || '';
|
|
}),
|
|
};
|
|
};
|
|
}
|
|
}
|