Tracking de l'application VApp (IHM du jeu)

This commit is contained in:
2025-05-11 18:04:12 +02:00
commit 89e9db9b62
17763 changed files with 3718499 additions and 0 deletions

View File

@ -0,0 +1,9 @@
.v-layout {
--v-scrollbar-offset: 0px;
display: flex;
flex: 1 1 auto;
}
.v-layout--full-height {
--v-scrollbar-offset: inherit;
height: 100%;
}

View File

@ -0,0 +1,38 @@
import { createVNode as _createVNode } from "vue";
// Styles
import "./VLayout.css";
// Composables
import { makeComponentProps } from "../../composables/component.mjs";
import { createLayout, makeLayoutProps } from "../../composables/layout.mjs"; // Utilities
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
export const makeVLayoutProps = propsFactory({
...makeComponentProps(),
...makeLayoutProps()
}, 'VLayout');
export const VLayout = genericComponent()({
name: 'VLayout',
props: makeVLayoutProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const {
layoutClasses,
layoutStyles,
getLayoutItem,
items,
layoutRef
} = createLayout(props);
useRender(() => _createVNode("div", {
"ref": layoutRef,
"class": [layoutClasses.value, props.class],
"style": [layoutStyles.value, props.style]
}, [slots.default?.()]));
return {
getLayoutItem,
items
};
}
});
//# sourceMappingURL=VLayout.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"VLayout.mjs","names":["makeComponentProps","createLayout","makeLayoutProps","genericComponent","propsFactory","useRender","makeVLayoutProps","VLayout","name","props","setup","_ref","slots","layoutClasses","layoutStyles","getLayoutItem","items","layoutRef","_createVNode","value","class","style","default"],"sources":["../../../src/components/VLayout/VLayout.tsx"],"sourcesContent":["// Styles\nimport './VLayout.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps(),\n}, 'VLayout')\n\nexport const VLayout = genericComponent()({\n name: 'VLayout',\n\n props: makeVLayoutProps(),\n\n setup (props, { slots }) {\n const { layoutClasses, layoutStyles, getLayoutItem, items, layoutRef } = createLayout(props)\n\n useRender(() => (\n <div\n ref={ layoutRef }\n class={[\n layoutClasses.value,\n props.class,\n ]}\n style={[\n layoutStyles.value,\n props.style,\n ]}\n >\n { slots.default?.() }\n </div>\n ))\n\n return {\n getLayoutItem,\n items,\n }\n },\n})\n\nexport type VLayout = InstanceType<typeof VLayout>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,YAAY,EAAEC,eAAe,wCAEtC;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,gBAAgB,GAAGF,YAAY,CAAC;EAC3C,GAAGJ,kBAAkB,CAAC,CAAC;EACvB,GAAGE,eAAe,CAAC;AACrB,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,MAAMK,OAAO,GAAGJ,gBAAgB,CAAC,CAAC,CAAC;EACxCK,IAAI,EAAE,SAAS;EAEfC,KAAK,EAAEH,gBAAgB,CAAC,CAAC;EAEzBI,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE,aAAa;MAAEC,YAAY;MAAEC,aAAa;MAAEC,KAAK;MAAEC;IAAU,CAAC,GAAGhB,YAAY,CAACQ,KAAK,CAAC;IAE5FJ,SAAS,CAAC,MAAAa,YAAA;MAAA,OAEAD,SAAS;MAAA,SACR,CACLJ,aAAa,CAACM,KAAK,EACnBV,KAAK,CAACW,KAAK,CACZ;MAAA,SACM,CACLN,YAAY,CAACK,KAAK,EAClBV,KAAK,CAACY,KAAK;IACZ,IAECT,KAAK,CAACU,OAAO,GAAG,CAAC,EAEtB,CAAC;IAEF,OAAO;MACLP,aAAa;MACbC;IACF,CAAC;EACH;AACF,CAAC,CAAC"}

View File

@ -0,0 +1,8 @@
.v-layout
--v-scrollbar-offset: 0px
display: flex
flex: 1 1 auto
&--full-height
--v-scrollbar-offset: inherit
height: 100%

View File

@ -0,0 +1,8 @@
.v-layout-item {
position: absolute;
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.v-layout-item--absolute {
position: absolute;
}

View File

@ -0,0 +1,47 @@
import { createVNode as _createVNode } from "vue";
// Styles
import "./VLayoutItem.css";
// Composables
import { makeComponentProps } from "../../composables/component.mjs";
import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.mjs"; // Utilities
import { computed, toRef } from 'vue';
import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
export const makeVLayoutItemProps = propsFactory({
position: {
type: String,
required: true
},
size: {
type: [Number, String],
default: 300
},
modelValue: Boolean,
...makeComponentProps(),
...makeLayoutItemProps()
}, 'VLayoutItem');
export const VLayoutItem = genericComponent()({
name: 'VLayoutItem',
props: makeVLayoutItemProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const {
layoutItemStyles
} = useLayoutItem({
id: props.name,
order: computed(() => parseInt(props.order, 10)),
position: toRef(props, 'position'),
elementSize: toRef(props, 'size'),
layoutSize: toRef(props, 'size'),
active: toRef(props, 'modelValue'),
absolute: toRef(props, 'absolute')
});
return () => _createVNode("div", {
"class": ['v-layout-item', props.class],
"style": [layoutItemStyles.value, props.style]
}, [slots.default?.()]);
}
});
//# sourceMappingURL=VLayoutItem.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"VLayoutItem.mjs","names":["makeComponentProps","makeLayoutItemProps","useLayoutItem","computed","toRef","genericComponent","propsFactory","makeVLayoutItemProps","position","type","String","required","size","Number","default","modelValue","Boolean","VLayoutItem","name","props","setup","_ref","slots","layoutItemStyles","id","order","parseInt","elementSize","layoutSize","active","absolute","_createVNode","class","value","style"],"sources":["../../../src/components/VLayout/VLayoutItem.tsx"],"sourcesContent":["// Styles\nimport './VLayoutItem.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLayoutItemProps = propsFactory({\n position: {\n type: String as PropType<'top' | 'right' | 'bottom' | 'left'>,\n required: true,\n },\n size: {\n type: [Number, String],\n default: 300,\n },\n modelValue: Boolean,\n\n ...makeComponentProps(),\n ...makeLayoutItemProps(),\n}, 'VLayoutItem')\n\nexport const VLayoutItem = genericComponent()({\n name: 'VLayoutItem',\n\n props: makeVLayoutItemProps(),\n\n setup (props, { slots }) {\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'position'),\n elementSize: toRef(props, 'size'),\n layoutSize: toRef(props, 'size'),\n active: toRef(props, 'modelValue'),\n absolute: toRef(props, 'absolute'),\n })\n\n return () => (\n <div\n class={[\n 'v-layout-item',\n props.class,\n ]}\n style={[\n layoutItemStyles.value,\n props.style,\n ]}\n >\n { slots.default?.() }\n </div>\n )\n },\n})\n\nexport type VLayoutItem = InstanceType<typeof VLayoutItem>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,aAAa,wCAE3C;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,YAAY,gCAEvC;AAGA,OAAO,MAAMC,oBAAoB,GAAGD,YAAY,CAAC;EAC/CE,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAAuD;IAC7DC,QAAQ,EAAE;EACZ,CAAC;EACDC,IAAI,EAAE;IACJH,IAAI,EAAE,CAACI,MAAM,EAAEH,MAAM,CAAC;IACtBI,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAEC,OAAO;EAEnB,GAAGhB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,mBAAmB,CAAC;AACzB,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAMgB,WAAW,GAAGZ,gBAAgB,CAAC,CAAC,CAAC;EAC5Ca,IAAI,EAAE,aAAa;EAEnBC,KAAK,EAAEZ,oBAAoB,CAAC,CAAC;EAE7Ba,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAiB,CAAC,GAAGrB,aAAa,CAAC;MACzCsB,EAAE,EAAEL,KAAK,CAACD,IAAI;MACdO,KAAK,EAAEtB,QAAQ,CAAC,MAAMuB,QAAQ,CAACP,KAAK,CAACM,KAAK,EAAE,EAAE,CAAC,CAAC;MAChDjB,QAAQ,EAAEJ,KAAK,CAACe,KAAK,EAAE,UAAU,CAAC;MAClCQ,WAAW,EAAEvB,KAAK,CAACe,KAAK,EAAE,MAAM,CAAC;MACjCS,UAAU,EAAExB,KAAK,CAACe,KAAK,EAAE,MAAM,CAAC;MAChCU,MAAM,EAAEzB,KAAK,CAACe,KAAK,EAAE,YAAY,CAAC;MAClCW,QAAQ,EAAE1B,KAAK,CAACe,KAAK,EAAE,UAAU;IACnC,CAAC,CAAC;IAEF,OAAO,MAAAY,YAAA;MAAA,SAEI,CACL,eAAe,EACfZ,KAAK,CAACa,KAAK,CACZ;MAAA,SACM,CACLT,gBAAgB,CAACU,KAAK,EACtBd,KAAK,CAACe,KAAK;IACZ,IAECZ,KAAK,CAACR,OAAO,GAAG,CAAC,EAEtB;EACH;AACF,CAAC,CAAC"}

View File

@ -0,0 +1,8 @@
@use '../../styles/settings'
.v-layout-item
position: absolute
transition: 0.2s settings.$standard-easing
.v-layout-item--absolute
position: absolute

View File

@ -0,0 +1,336 @@
import * as vue from 'vue';
import { ComponentPropsOptions, ExtractPropTypes, PropType } from 'vue';
interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
}
declare const VLayout: {
new (...args: any[]): vue.CreateComponentPublicInstance<{
style: vue.StyleValue;
fullHeight: boolean;
} & {
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, {
getLayoutItem: (id: string) => {
size: number;
position: "left" | "top" | "bottom" | "right";
top: number;
bottom: number;
left: number;
right: number;
id: string;
} | undefined;
items: vue.ComputedRef<{
size: number;
position: "left" | "top" | "bottom" | "right";
top: number;
bottom: number;
left: number;
right: number;
id: string;
}[]>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
style: vue.StyleValue;
fullHeight: boolean;
} & {
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, {
style: vue.StyleValue;
fullHeight: boolean;
}, true, {}, vue.SlotsType<Partial<{
default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
style: vue.StyleValue;
fullHeight: boolean;
} & {
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, {
getLayoutItem: (id: string) => {
size: number;
position: "left" | "top" | "bottom" | "right";
top: number;
bottom: number;
left: number;
right: number;
id: string;
} | undefined;
items: vue.ComputedRef<{
size: number;
position: "left" | "top" | "bottom" | "right";
top: number;
bottom: number;
left: number;
right: number;
id: string;
}[]>;
}, {}, {}, {}, {
style: vue.StyleValue;
fullHeight: boolean;
}>;
__isFragment?: undefined;
__isTeleport?: undefined;
__isSuspense?: undefined;
} & vue.ComponentOptionsBase<{
style: vue.StyleValue;
fullHeight: boolean;
} & {
class?: any;
overlaps?: string[] | undefined;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, {
getLayoutItem: (id: string) => {
size: number;
position: "left" | "top" | "bottom" | "right";
top: number;
bottom: number;
left: number;
right: number;
id: string;
} | undefined;
items: vue.ComputedRef<{
size: number;
position: "left" | "top" | "bottom" | "right";
top: number;
bottom: number;
left: number;
right: number;
id: string;
}[]>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
style: vue.StyleValue;
fullHeight: boolean;
}, {}, string, vue.SlotsType<Partial<{
default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
overlaps: vue.Prop<string[]>;
fullHeight: BooleanConstructor;
class: vue.PropType<any>;
style: {
type: vue.PropType<vue.StyleValue>;
default: null;
};
}, vue.ExtractPropTypes<{
overlaps: vue.Prop<string[]>;
fullHeight: BooleanConstructor;
class: vue.PropType<any>;
style: {
type: vue.PropType<vue.StyleValue>;
default: null;
};
}>>;
type VLayout = InstanceType<typeof VLayout>;
declare const VLayoutItem: {
new (...args: any[]): vue.CreateComponentPublicInstance<{
absolute: boolean;
order: string | number;
position: "left" | "top" | "bottom" | "right";
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
} & {
name?: string | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, () => JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
absolute: boolean;
order: string | number;
position: "left" | "top" | "bottom" | "right";
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
} & {
name?: string | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, {
absolute: boolean;
order: string | number;
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
}, true, {}, vue.SlotsType<Partial<{
default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
absolute: boolean;
order: string | number;
position: "left" | "top" | "bottom" | "right";
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
} & {
name?: string | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, () => JSX.Element, {}, {}, {}, {
absolute: boolean;
order: string | number;
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
}>;
__isFragment?: undefined;
__isTeleport?: undefined;
__isSuspense?: undefined;
} & vue.ComponentOptionsBase<{
absolute: boolean;
order: string | number;
position: "left" | "top" | "bottom" | "right";
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
} & {
name?: string | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
default?: (() => vue.VNodeChild) | undefined;
};
'v-slots'?: {
default?: false | (() => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
}, () => JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
absolute: boolean;
order: string | number;
style: vue.StyleValue;
size: string | number;
modelValue: boolean;
}, {}, string, vue.SlotsType<Partial<{
default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
name: {
type: StringConstructor;
};
order: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
absolute: BooleanConstructor;
class: PropType<any>;
style: {
type: PropType<vue.StyleValue>;
default: null;
};
position: {
type: PropType<"left" | "top" | "bottom" | "right">;
required: true;
};
size: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
modelValue: BooleanConstructor;
}, vue.ExtractPropTypes<{
name: {
type: StringConstructor;
};
order: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
absolute: BooleanConstructor;
class: PropType<any>;
style: {
type: PropType<vue.StyleValue>;
default: null;
};
position: {
type: PropType<"left" | "top" | "bottom" | "right">;
required: true;
};
size: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
modelValue: BooleanConstructor;
}>>;
type VLayoutItem = InstanceType<typeof VLayoutItem>;
export { VLayout, VLayoutItem };

View File

@ -0,0 +1,3 @@
export { VLayout } from "./VLayout.mjs";
export { VLayoutItem } from "./VLayoutItem.mjs";
//# sourceMappingURL=index.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.mjs","names":["VLayout","VLayoutItem"],"sources":["../../../src/components/VLayout/index.ts"],"sourcesContent":["export { VLayout } from './VLayout'\nexport { VLayoutItem } from './VLayoutItem'\n"],"mappings":"SAASA,OAAO;AAAA,SACPC,WAAW"}