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,6 @@
.v-counter {
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
flex: 0 1 auto;
font-size: 12px;
transition-duration: 150ms;
}

View File

@ -0,0 +1,51 @@
import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from "vue";
// Styles
import "./VCounter.css";
// Components
import { VSlideYTransition } from "../transitions/index.mjs"; // Composables
import { makeComponentProps } from "../../composables/component.mjs";
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Utilities
import { computed } from 'vue';
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVCounterProps = propsFactory({
active: Boolean,
max: [Number, String],
value: {
type: [Number, String],
default: 0
},
...makeComponentProps(),
...makeTransitionProps({
transition: {
component: VSlideYTransition
}
})
}, 'VCounter');
export const VCounter = genericComponent()({
name: 'VCounter',
functional: true,
props: makeVCounterProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const counter = computed(() => {
return props.max ? `${props.value} / ${props.max}` : String(props.value);
});
useRender(() => _createVNode(MaybeTransition, {
"transition": props.transition
}, {
default: () => [_withDirectives(_createVNode("div", {
"class": ['v-counter', props.class],
"style": props.style
}, [slots.default ? slots.default({
counter: counter.value,
max: props.max,
value: props.value
}) : counter.value]), [[_vShow, props.active]])]
}));
return {};
}
});
//# sourceMappingURL=VCounter.mjs.map

View File

@ -0,0 +1 @@
{"version":3,"file":"VCounter.mjs","names":["VSlideYTransition","makeComponentProps","makeTransitionProps","MaybeTransition","computed","genericComponent","propsFactory","useRender","makeVCounterProps","active","Boolean","max","Number","String","value","type","default","transition","component","VCounter","name","functional","props","setup","_ref","slots","counter","_createVNode","_withDirectives","class","style","_vShow"],"sources":["../../../src/components/VCounter/VCounter.tsx"],"sourcesContent":["// Styles\nimport './VCounter.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\n\nexport const makeVCounterProps = propsFactory({\n active: Boolean,\n max: [Number, String],\n value: {\n type: [Number, String],\n default: 0,\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: { component: VSlideYTransition as Component },\n }),\n}, 'VCounter')\n\nexport type VCounterSlot = {\n counter: string\n max: string | number | undefined\n value: string | number | undefined\n}\n\ntype VCounterSlots = {\n default: VCounterSlot\n}\n\nexport const VCounter = genericComponent<VCounterSlots>()({\n name: 'VCounter',\n\n functional: true,\n\n props: makeVCounterProps(),\n\n setup (props, { slots }) {\n const counter = computed(() => {\n return props.max ? `${props.value} / ${props.max}` : String(props.value)\n })\n\n useRender(() => (\n <MaybeTransition transition={ props.transition }>\n <div\n v-show={ props.active }\n class={[\n 'v-counter',\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default\n ? slots.default({\n counter: counter.value,\n max: props.max,\n value: props.value,\n })\n : counter.value\n }\n </div>\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VCounter = InstanceType<typeof VCounter>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB,oCAE1B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,eAAe,4CAE7C;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA,OAAO,MAAMC,iBAAiB,GAAGF,YAAY,CAAC;EAC5CG,MAAM,EAAEC,OAAO;EACfC,GAAG,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAE,CAACH,MAAM,EAAEC,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX,CAAC;EAED,GAAGf,kBAAkB,CAAC,CAAC;EACvB,GAAGC,mBAAmB,CAAC;IACrBe,UAAU,EAAE;MAAEC,SAAS,EAAElB;IAA+B;EAC1D,CAAC;AACH,CAAC,EAAE,UAAU,CAAC;AAYd,OAAO,MAAMmB,QAAQ,GAAGd,gBAAgB,CAAgB,CAAC,CAAC;EACxDe,IAAI,EAAE,UAAU;EAEhBC,UAAU,EAAE,IAAI;EAEhBC,KAAK,EAAEd,iBAAiB,CAAC,CAAC;EAE1Be,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAME,OAAO,GAAGtB,QAAQ,CAAC,MAAM;MAC7B,OAAOkB,KAAK,CAACX,GAAG,GAAI,GAAEW,KAAK,CAACR,KAAM,MAAKQ,KAAK,CAACX,GAAI,EAAC,GAAGE,MAAM,CAACS,KAAK,CAACR,KAAK,CAAC;IAC1E,CAAC,CAAC;IAEFP,SAAS,CAAC,MAAAoB,YAAA,CAAAxB,eAAA;MAAA,cACsBmB,KAAK,CAACL;IAAU;MAAAD,OAAA,EAAAA,CAAA,MAAAY,eAAA,CAAAD,YAAA;QAAA,SAGnC,CACL,WAAW,EACXL,KAAK,CAACO,KAAK,CACZ;QAAA,SACOP,KAAK,CAACQ;MAAK,IAEjBL,KAAK,CAACT,OAAO,GACXS,KAAK,CAACT,OAAO,CAAC;QACdU,OAAO,EAAEA,OAAO,CAACZ,KAAK;QACtBH,GAAG,EAAEW,KAAK,CAACX,GAAG;QACdG,KAAK,EAAEQ,KAAK,CAACR;MACf,CAAC,CAAC,GACAY,OAAO,CAACZ,KAAK,MAAAiB,MAAA,EAbRT,KAAK,CAACb,MAAM;IAAA,EAiB1B,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}

View File

@ -0,0 +1,8 @@
@use '../../styles/settings'
@use './variables' as *
.v-counter
color: $counter-color
flex: $counter-flex
font-size: $counter-font-size
transition-duration: $counter-transition-duration

View File

@ -0,0 +1,7 @@
// VCounter
$counter-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default;
$counter-flex: 0 1 auto !default;
$counter-font-size: 12px !default;
$counter-line-height: $counter-font-size !default;
$counter-min-height: 12px !default;
$counter-transition-duration: 150ms !default;

View File

@ -0,0 +1,207 @@
import * as vue from 'vue';
import { ComponentPropsOptions, ExtractPropTypes, Component } 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>>;
}
type VCounterSlot = {
counter: string;
max: string | number | undefined;
value: string | number | undefined;
};
declare const VCounter: {
new (...args: any[]): vue.CreateComponentPublicInstance<{
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
} & {
max?: string | number | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | {
default?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | ((arg: VCounterSlot) => vue.VNodeChild);
'v-slots'?: {
default?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
} & {
max?: string | number | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | {
default?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | ((arg: VCounterSlot) => vue.VNodeChild);
'v-slots'?: {
default?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
}, {
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
}, true, {}, vue.SlotsType<Partial<{
default: (arg: VCounterSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
} & {
max?: string | number | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | {
default?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | ((arg: VCounterSlot) => vue.VNodeChild);
'v-slots'?: {
default?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
}, {}, {}, {}, {}, {
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
}>;
__isFragment?: undefined;
__isTeleport?: undefined;
__isSuspense?: undefined;
} & vue.ComponentOptionsBase<{
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
} & {
max?: string | number | undefined;
class?: any;
} & {
$children?: vue.VNodeChild | {
default?: ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | ((arg: VCounterSlot) => vue.VNodeChild);
'v-slots'?: {
default?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
} | undefined;
} & {
"v-slot:default"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
active: boolean;
transition: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
value: string | number;
style: vue.StyleValue;
}, {}, string, vue.SlotsType<Partial<{
default: (arg: VCounterSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
transition: Omit<{
type: vue.PropType<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})>;
default: string;
validator: (val: unknown) => boolean;
}, "type" | "default"> & {
type: vue.PropType<NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
}>;
default: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
};
class: vue.PropType<any>;
style: {
type: vue.PropType<vue.StyleValue>;
default: null;
};
active: BooleanConstructor;
max: (StringConstructor | NumberConstructor)[];
value: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
}, vue.ExtractPropTypes<{
transition: Omit<{
type: vue.PropType<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})>;
default: string;
validator: (val: unknown) => boolean;
}, "type" | "default"> & {
type: vue.PropType<NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
}>;
default: NonNullable<string | boolean | (vue.TransitionProps & {
component?: Component | undefined;
})> | {
component: Component;
};
};
class: vue.PropType<any>;
style: {
type: vue.PropType<vue.StyleValue>;
default: null;
};
active: BooleanConstructor;
max: (StringConstructor | NumberConstructor)[];
value: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
}>>;
type VCounter = InstanceType<typeof VCounter>;
export { VCounter };

View File

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

View File

@ -0,0 +1 @@
{"version":3,"file":"index.mjs","names":["VCounter"],"sources":["../../../src/components/VCounter/index.ts"],"sourcesContent":["export { VCounter } from './VCounter'\n"],"mappings":"SAASA,QAAQ"}