@skewedaspect/sage-vue 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export * from './packages/sage-vue/src/index'
2
+ export {}
@@ -0,0 +1,7 @@
1
+ export { default as SageCanvas } from './sageCanvas.vue';
2
+ export { useSageEngine } from "./useSageEngine.d.ts";
3
+ export { useSageEvent } from "./useSageEvent.d.ts";
4
+ export { useSageAction } from "./useSageAction.d.ts";
5
+ export { useSageState } from "./useSageState.d.ts";
6
+ export { useSageTimer } from "./useSageTimer.d.ts";
7
+ export { SAGE_ENGINE_KEY } from "./symbols.d.ts";
@@ -0,0 +1,42 @@
1
+ import { GameEngine, GameEntityDefinition, SageOptions } from "../../../src/sage.d.ts";
2
+ type __VLS_Props = {
3
+ entityDefinitions?: GameEntityDefinition[];
4
+ options?: SageOptions;
5
+ engine?: GameEngine;
6
+ };
7
+ declare function __VLS_template(): {
8
+ attrs: Partial<{}>;
9
+ slots: {
10
+ default?(_: {
11
+ loading: boolean;
12
+ error: unknown;
13
+ engine: GameEngine | null;
14
+ }): any;
15
+ };
16
+ refs: {
17
+ containerRef: HTMLDivElement;
18
+ canvasRef: HTMLCanvasElement;
19
+ };
20
+ rootEl: HTMLDivElement;
21
+ };
22
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
23
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
24
+ "engine-ready": (engine: GameEngine) => any;
25
+ "engine-error": (error: unknown) => any;
26
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
27
+ "onEngine-ready"?: ((engine: GameEngine) => any) | undefined;
28
+ "onEngine-error"?: ((error: unknown) => any) | undefined;
29
+ }>, {
30
+ options: SageOptions;
31
+ entityDefinitions: GameEntityDefinition[];
32
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
33
+ containerRef: HTMLDivElement;
34
+ canvasRef: HTMLCanvasElement;
35
+ }, HTMLDivElement>;
36
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
37
+ export default _default;
38
+ type __VLS_WithTemplateSlots<T, S> = T & {
39
+ new (): {
40
+ $slots: S;
41
+ };
42
+ };
@@ -0,0 +1,3 @@
1
+ import { InjectionKey, ShallowRef } from 'vue';
2
+ import { GameEngine } from "../../../src/sage.d.ts";
3
+ export declare const SAGE_ENGINE_KEY: InjectionKey<ShallowRef<GameEngine | null>>;
@@ -0,0 +1,2 @@
1
+ import { Ref } from 'vue';
2
+ export declare function useSageAction(actionName: string): Ref<boolean | number>;
@@ -0,0 +1,8 @@
1
+ import { ComputedRef, ShallowRef } from 'vue';
2
+ import { GameEngine, GameEventBus } from "../../../src/sage.d.ts";
3
+ interface SageEngineContext {
4
+ engine: ShallowRef<GameEngine | null>;
5
+ eventBus: ComputedRef<GameEventBus | null>;
6
+ }
7
+ export declare function useSageEngine(): SageEngineContext;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ import { GameEvent } from "../../../src/sage.d.ts";
2
+ type EventHandler = (event: GameEvent) => void | Promise<void>;
3
+ export declare function useSageEvent(pattern: string | RegExp, handler: EventHandler): void;
4
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Ref } from 'vue';
2
+ /**
3
+ * Returns a reactive ref synced to an entity's state. If `key` is provided, tracks only that property; otherwise
4
+ * tracks the entire state object.
5
+ */
6
+ export declare function useSageState<T = unknown>(entityId: string, key?: string): Ref<T>;
@@ -0,0 +1,12 @@
1
+ import { CooldownHandle } from "../../../src/sage.d.ts";
2
+ interface SageTimerComposable {
3
+ delay: (ms: number, callback: () => void) => () => void;
4
+ interval: (ms: number, callback: () => void) => () => void;
5
+ cooldown: (ms: number) => CooldownHandle;
6
+ }
7
+ /**
8
+ * Returns pause-aware timer functions (delay, interval, cooldown) from the game engine. All active timers are
9
+ * automatically cancelled when the component unmounts.
10
+ */
11
+ export declare function useSageTimer(): SageTimerComposable;
12
+ export {};
@@ -0,0 +1 @@
1
+ .sage-container[data-v-7932fefe]{position:relative;width:100%;height:100%}.sage-canvas[data-v-7932fefe]{display:block;width:100%;height:100%}.sage-overlay[data-v-7932fefe]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.sage-overlay[data-v-7932fefe] *{pointer-events:auto}
@@ -0,0 +1,144 @@
1
+ import { defineComponent as h, useTemplateRef as m, shallowRef as O, ref as v, provide as R, onMounted as w, onUnmounted as d, openBlock as b, createElementBlock as x, createElementVNode as y, renderSlot as C, inject as N, computed as B, watch as k } from "vue";
2
+ import { createGameEngine as z } from "@skewedaspect/sage";
3
+ const E = /* @__PURE__ */ Symbol("sage-engine"), D = { class: "sage-overlay" }, G = /* @__PURE__ */ h({
4
+ __name: "sageCanvas",
5
+ props: {
6
+ entityDefinitions: { default: () => [] },
7
+ options: { default: () => ({}) },
8
+ engine: {}
9
+ },
10
+ emits: ["engine-ready", "engine-error"],
11
+ setup(e, { emit: n }) {
12
+ const r = e, t = n, s = m("containerRef"), a = m("canvasRef"), o = O(null), i = v(!0), u = v(null);
13
+ let p = !1, c = null;
14
+ return R(E, o), w(async () => {
15
+ let f = !1;
16
+ if (d(() => {
17
+ f = !0;
18
+ }), !!a.value)
19
+ try {
20
+ let l;
21
+ if (r.engine ? (l = r.engine, p = !0) : l = await z(a.value, r.entityDefinitions, r.options), f)
22
+ return;
23
+ o.value = l, s.value && (c = new ResizeObserver(() => {
24
+ l.renderEngine.resize();
25
+ }), c.observe(s.value)), t("engine-ready", l), i.value = !1;
26
+ } catch (l) {
27
+ if (f)
28
+ return;
29
+ u.value = l, t("engine-error", l), i.value = !1;
30
+ }
31
+ }), d(async () => {
32
+ c && (c.disconnect(), c = null), !p && o.value && (await o.value.stop(), o.value.renderEngine.dispose());
33
+ }), (f, l) => (b(), x("div", {
34
+ ref_key: "containerRef",
35
+ ref: s,
36
+ class: "sage-container"
37
+ }, [
38
+ y("canvas", {
39
+ ref_key: "canvasRef",
40
+ ref: a,
41
+ class: "sage-canvas"
42
+ }, null, 512),
43
+ y("div", D, [
44
+ C(f.$slots, "default", {
45
+ loading: i.value,
46
+ error: u.value,
47
+ engine: o.value
48
+ }, void 0, !0)
49
+ ])
50
+ ], 512));
51
+ }
52
+ }), P = (e, n) => {
53
+ const r = e.__vccOpts || e;
54
+ for (const [t, s] of n)
55
+ r[t] = s;
56
+ return r;
57
+ }, T = /* @__PURE__ */ P(G, [["__scopeId", "data-v-7932fefe"]]);
58
+ function g() {
59
+ const e = N(E);
60
+ if (!e)
61
+ throw new Error("useSageEngine() must be used inside a <SageCanvas> component.");
62
+ return {
63
+ engine: e,
64
+ eventBus: B(() => e.value?.eventBus ?? null)
65
+ };
66
+ }
67
+ function S(e, n) {
68
+ const { engine: r } = g();
69
+ let t = null;
70
+ k(r, (s) => {
71
+ t && (t(), t = null), s && (t = s.eventBus.subscribePattern(
72
+ e,
73
+ n
74
+ ));
75
+ }, { immediate: !0 }), d(() => {
76
+ t && (t(), t = null);
77
+ });
78
+ }
79
+ function $(e) {
80
+ const n = v(0);
81
+ return S(`action:${e}`, (r) => {
82
+ n.value = r.payload.value;
83
+ }), n;
84
+ }
85
+ function j(e, n) {
86
+ const { engine: r } = g(), t = () => {
87
+ const a = r.value?.managers.entityManager.getEntity(e);
88
+ if (a)
89
+ return n ? a.state[n] : a.state;
90
+ }, s = v(t());
91
+ return S("entity:state-changed", (a) => {
92
+ a.payload.entityId === e && (s.value = t());
93
+ }), s;
94
+ }
95
+ const _ = () => {
96
+ }, A = {
97
+ get ready() {
98
+ return !1;
99
+ },
100
+ reset() {
101
+ }
102
+ };
103
+ function K() {
104
+ const { engine: e } = g(), n = [];
105
+ d(() => {
106
+ for (const a of n)
107
+ a();
108
+ n.length = 0;
109
+ });
110
+ function r(a, o) {
111
+ if (!e.value)
112
+ return _;
113
+ const i = e.value.timer.delay(a, o);
114
+ return n.push(i), () => {
115
+ i();
116
+ const u = n.indexOf(i);
117
+ u >= 0 && n.splice(u, 1);
118
+ };
119
+ }
120
+ function t(a, o) {
121
+ if (!e.value)
122
+ return _;
123
+ const i = e.value.timer.interval(a, o);
124
+ return n.push(i), () => {
125
+ i();
126
+ const u = n.indexOf(i);
127
+ u >= 0 && n.splice(u, 1);
128
+ };
129
+ }
130
+ function s(a) {
131
+ return e.value ? e.value.timer.cooldown(a) : A;
132
+ }
133
+ return { delay: r, interval: t, cooldown: s };
134
+ }
135
+ export {
136
+ E as SAGE_ENGINE_KEY,
137
+ T as SageCanvas,
138
+ $ as useSageAction,
139
+ g as useSageEngine,
140
+ S as useSageEvent,
141
+ j as useSageState,
142
+ K as useSageTimer
143
+ };
144
+ //# sourceMappingURL=sage-vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sage-vue.js","sources":["../src/symbols.ts","../src/sageCanvas.vue","../src/useSageEngine.ts","../src/useSageEvent.ts","../src/useSageAction.ts","../src/useSageState.ts","../src/useSageTimer.ts"],"sourcesContent":["//----------------------------------------------------------------------------------------------------------------------\n// Injection Key Symbols\n//----------------------------------------------------------------------------------------------------------------------\n\nimport type { InjectionKey, ShallowRef } from 'vue';\nimport type { GameEngine } from '@skewedaspect/sage';\n\n//----------------------------------------------------------------------------------------------------------------------\n\nexport const SAGE_ENGINE_KEY : InjectionKey<ShallowRef<GameEngine | null>> = Symbol('sage-engine');\n\n//----------------------------------------------------------------------------------------------------------------------\n","<!----------------------------------------------------------------------------------------------------------------------\n - SageCanvas - Vue wrapper component for the SAGE game engine\n ----------------------------------------------------------------------------------------------------------------------->\n\n<template>\n <div ref=\"containerRef\" class=\"sage-container\">\n <canvas ref=\"canvasRef\" class=\"sage-canvas\"></canvas>\n <div class=\"sage-overlay\">\n <slot :loading=\"loading\" :error=\"error\" :engine=\"engineRef\"></slot>\n </div>\n </div>\n</template>\n\n<!--------------------------------------------------------------------------------------------------------------------->\n\n<style scoped>\n .sage-container {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .sage-canvas {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .sage-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n }\n\n .sage-overlay :deep(*) {\n pointer-events: auto;\n }\n</style>\n\n<!--------------------------------------------------------------------------------------------------------------------->\n\n<script setup lang=\"ts\">\n import { ref, shallowRef, provide, onMounted, onUnmounted, useTemplateRef } from 'vue';\n import { createGameEngine } from '@skewedaspect/sage';\n import type { GameEngine, GameEntityDefinition, SageOptions } from '@skewedaspect/sage';\n import { SAGE_ENGINE_KEY } from './symbols.ts';\n\n //------------------------------------------------------------------------------------------------------------------\n // Props & Emits\n //------------------------------------------------------------------------------------------------------------------\n\n const props = withDefaults(defineProps<{\n entityDefinitions ?: GameEntityDefinition[];\n options ?: SageOptions;\n engine ?: GameEngine;\n }>(), {\n entityDefinitions: () => [],\n options: () => ({}),\n });\n\n const emit = defineEmits<{\n 'engine-ready': [engine : GameEngine];\n 'engine-error': [error : unknown];\n }>();\n\n //------------------------------------------------------------------------------------------------------------------\n // State\n //------------------------------------------------------------------------------------------------------------------\n\n const containerRef = useTemplateRef<HTMLDivElement>('containerRef');\n const canvasRef = useTemplateRef<HTMLCanvasElement>('canvasRef');\n const engineRef = shallowRef<GameEngine | null>(null);\n const loading = ref(true);\n const error = ref<unknown>(null);\n let controlled = false;\n let resizeObserver : ResizeObserver | null = null;\n\n // Provide the engine ref synchronously so child composables can inject it\n provide(SAGE_ENGINE_KEY, engineRef);\n\n //------------------------------------------------------------------------------------------------------------------\n // Lifecycle\n //------------------------------------------------------------------------------------------------------------------\n\n onMounted(async() =>\n {\n let disposed = false;\n\n onUnmounted(() =>\n {\n disposed = true;\n });\n\n if(!canvasRef.value)\n {\n return;\n }\n\n try\n {\n let engine : GameEngine;\n\n if(props.engine)\n {\n engine = props.engine;\n controlled = true;\n }\n else\n {\n engine = await createGameEngine(canvasRef.value, props.entityDefinitions, props.options);\n }\n\n if(disposed) { return; }\n\n engineRef.value = engine;\n\n // Set up resize observer on the container\n if(containerRef.value)\n {\n resizeObserver = new ResizeObserver(() =>\n {\n engine.renderEngine.resize();\n });\n resizeObserver.observe(containerRef.value);\n }\n\n emit('engine-ready', engine);\n loading.value = false;\n }\n catch(err)\n {\n if(disposed) { return; }\n\n error.value = err;\n emit('engine-error', err);\n loading.value = false;\n }\n });\n\n onUnmounted(async() =>\n {\n if(resizeObserver)\n {\n resizeObserver.disconnect();\n resizeObserver = null;\n }\n\n if(!controlled && engineRef.value)\n {\n await engineRef.value.stop();\n engineRef.value.renderEngine.dispose();\n }\n });\n</script>\n\n<!--------------------------------------------------------------------------------------------------------------------->\n","//----------------------------------------------------------------------------------------------------------------------\n// useSageEngine Composable\n//----------------------------------------------------------------------------------------------------------------------\n\nimport { type ComputedRef, type ShallowRef, computed, inject } from 'vue';\nimport type { GameEngine, GameEventBus } from '@skewedaspect/sage';\nimport { SAGE_ENGINE_KEY } from './symbols.ts';\n\n//----------------------------------------------------------------------------------------------------------------------\n\ninterface SageEngineContext\n{\n engine : ShallowRef<GameEngine | null>;\n eventBus : ComputedRef<GameEventBus | null>;\n}\n\nexport function useSageEngine() : SageEngineContext\n{\n const engine = inject(SAGE_ENGINE_KEY);\n if(!engine)\n {\n throw new Error('useSageEngine() must be used inside a <SageCanvas> component.');\n }\n\n return {\n engine,\n eventBus: computed(() => engine.value?.eventBus ?? null),\n };\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n","//----------------------------------------------------------------------------------------------------------------------\n// useSageEvent Composable\n//----------------------------------------------------------------------------------------------------------------------\n\nimport { onUnmounted, watch } from 'vue';\nimport type { GameEvent, Unsubscribe, WildcardEventCallback, WildcardPattern } from '@skewedaspect/sage';\nimport { useSageEngine } from './useSageEngine.ts';\n\n//----------------------------------------------------------------------------------------------------------------------\n\ntype EventHandler = (event : GameEvent) => void | Promise<void>;\n\nexport function useSageEvent(pattern : string | RegExp, handler : EventHandler) : void\n{\n const { engine } = useSageEngine();\n let unsub : Unsubscribe | null = null;\n\n watch(engine, (eng) =>\n {\n if(unsub)\n {\n unsub();\n unsub = null;\n }\n\n if(eng)\n {\n unsub = eng.eventBus.subscribePattern(\n pattern as WildcardPattern | RegExp,\n handler as WildcardEventCallback\n );\n }\n }, { immediate: true });\n\n onUnmounted(() =>\n {\n if(unsub)\n {\n unsub();\n unsub = null;\n }\n });\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n","//----------------------------------------------------------------------------------------------------------------------\n// useSageAction Composable\n//----------------------------------------------------------------------------------------------------------------------\n\nimport { type Ref, ref } from 'vue';\nimport { useSageEvent } from './useSageEvent.ts';\n\n//----------------------------------------------------------------------------------------------------------------------\n\nexport function useSageAction(actionName : string) : Ref<boolean | number>\n{\n const value = ref<boolean | number>(0);\n\n useSageEvent(`action:${ actionName }`, (event) =>\n {\n value.value = (event.payload as { value : boolean | number }).value;\n });\n\n return value;\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n","//----------------------------------------------------------------------------------------------------------------------\n// useSageState Composable\n//----------------------------------------------------------------------------------------------------------------------\n\nimport { type Ref, ref } from 'vue';\nimport type { EntityStateChangedPayload } from '@skewedaspect/sage';\nimport { useSageEngine } from './useSageEngine.ts';\nimport { useSageEvent } from './useSageEvent.ts';\n\n//----------------------------------------------------------------------------------------------------------------------\n\n/**\n * Returns a reactive ref synced to an entity's state. If `key` is provided, tracks only that property; otherwise\n * tracks the entire state object.\n */\nexport function useSageState<T = unknown>(entityId : string, key ?: string) : Ref<T>\n{\n const { engine } = useSageEngine();\n\n // Read initial state from the entity (if it exists yet)\n const readState = () : T =>\n {\n const entity = engine.value?.managers.entityManager.getEntity(entityId);\n if(!entity)\n {\n return undefined as T;\n }\n\n if(key)\n {\n return (entity.state as Record<string, unknown>)[key] as T;\n }\n\n return entity.state as T;\n };\n\n const state = ref<T>(readState()) as Ref<T>;\n\n useSageEvent('entity:state-changed', (event) =>\n {\n const payload = event.payload as EntityStateChangedPayload;\n if(payload.entityId !== entityId)\n {\n return;\n }\n\n // Re-read from the entity to get the authoritative value\n state.value = readState();\n });\n\n return state;\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n","//----------------------------------------------------------------------------------------------------------------------\n// useSageTimer Composable\n//----------------------------------------------------------------------------------------------------------------------\n\nimport { onUnmounted } from 'vue';\nimport type { CooldownHandle } from '@skewedaspect/sage';\nimport { useSageEngine } from './useSageEngine.ts';\n\n//----------------------------------------------------------------------------------------------------------------------\n\ninterface SageTimerComposable\n{\n delay : (ms : number, callback : () => void) => () => void;\n interval : (ms : number, callback : () => void) => () => void;\n cooldown : (ms : number) => CooldownHandle;\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst NOOP = () : void => {};\n\nconst NOOP_COOLDOWN : CooldownHandle = {\n get ready() : boolean { return false; },\n reset() : void { /* no-op */ },\n};\n\n//----------------------------------------------------------------------------------------------------------------------\n\n/**\n * Returns pause-aware timer functions (delay, interval, cooldown) from the game engine. All active timers are\n * automatically cancelled when the component unmounts.\n */\nexport function useSageTimer() : SageTimerComposable\n{\n const { engine } = useSageEngine();\n const cancellers : (() => void)[] = [];\n\n onUnmounted(() =>\n {\n for(const cancel of cancellers)\n {\n cancel();\n }\n\n cancellers.length = 0;\n });\n\n function delay(ms : number, callback : () => void) : () => void\n {\n if(!engine.value)\n {\n return NOOP;\n }\n\n const cancel = engine.value.timer.delay(ms, callback);\n cancellers.push(cancel);\n\n return () =>\n {\n cancel();\n const idx = cancellers.indexOf(cancel);\n if(idx >= 0)\n {\n cancellers.splice(idx, 1);\n }\n };\n }\n\n function interval(ms : number, callback : () => void) : () => void\n {\n if(!engine.value)\n {\n return NOOP;\n }\n\n const cancel = engine.value.timer.interval(ms, callback);\n cancellers.push(cancel);\n\n return () =>\n {\n cancel();\n const idx = cancellers.indexOf(cancel);\n if(idx >= 0)\n {\n cancellers.splice(idx, 1);\n }\n };\n }\n\n function cooldown(ms : number) : CooldownHandle\n {\n if(!engine.value)\n {\n return NOOP_COOLDOWN;\n }\n\n const handle = engine.value.timer.cooldown(ms);\n\n // There's no cancel for cooldowns, but we don't need to track them — they're passive pollable objects\n return handle;\n }\n\n return { delay, interval, cooldown };\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n"],"names":["SAGE_ENGINE_KEY","props","__props","emit","__emit","containerRef","useTemplateRef","canvasRef","engineRef","shallowRef","loading","ref","error","controlled","resizeObserver","provide","onMounted","disposed","onUnmounted","engine","createGameEngine","err","_createElementBlock","_createElementVNode","_hoisted_1","_renderSlot","_ctx","useSageEngine","inject","computed","useSageEvent","pattern","handler","unsub","watch","eng","useSageAction","actionName","value","event","useSageState","entityId","key","readState","entity","state","NOOP","NOOP_COOLDOWN","useSageTimer","cancellers","cancel","delay","ms","callback","idx","interval","cooldown"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@skewedaspect/sage-vue",
3
+ "version": "0.8.0",
4
+ "type": "module",
5
+ "main": "dist/sage-vue.es.js",
6
+ "module": "dist/sage-vue.es.js",
7
+ "types": "dist/index.d.ts",
8
+ "author": "Christopher S. Case<chris.case@g33xnexus.com>",
9
+ "license": "MIT",
10
+ "description": "Vue 3 integration components for the SAGE game engine.",
11
+ "scripts": {
12
+ "build": "vite build"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "peerDependencies": {
18
+ "@skewedaspect/sage": "*",
19
+ "vue": "^3.5.0"
20
+ },
21
+ "devDependencies": {
22
+ "@vitejs/plugin-vue": "^6.0.3",
23
+ "vite": "^7.3.1",
24
+ "vite-plugin-dts": "^4.5.3",
25
+ "typescript": "^5.8.3",
26
+ "vue": "^3.5.27"
27
+ }
28
+ }