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.
33 lines
935 B
TypeScript
33 lines
935 B
TypeScript
import { ref } from 'vue';
|
|
import type { IApplicationCode } from '@/application/Context/State/Code/IApplicationCode';
|
|
import type { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
|
|
import { useCollectionState } from './UseCollectionState';
|
|
|
|
export function useCurrentCode(
|
|
state: ReturnType<typeof useCollectionState>,
|
|
events: IEventSubscriptionCollection,
|
|
) {
|
|
const { onStateChange } = state;
|
|
|
|
const currentCode = ref<string>('');
|
|
|
|
onStateChange((newState) => {
|
|
updateCurrentCode(newState.code.current);
|
|
subscribeToCodeChanges(newState.code);
|
|
}, { immediate: true });
|
|
|
|
function subscribeToCodeChanges(code: IApplicationCode) {
|
|
events.unsubscribeAllAndRegister([
|
|
code.changed.on((newCode) => updateCurrentCode(newCode.code)),
|
|
]);
|
|
}
|
|
|
|
function updateCurrentCode(newCode: string) {
|
|
currentCode.value = newCode;
|
|
}
|
|
|
|
return {
|
|
currentCode,
|
|
};
|
|
}
|