@manapotion/vue
Version:
448 lines (429 loc) • 16.2 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
DeviceTypeListener: () => DeviceTypeListener,
FullscreenListener: () => FullscreenListener,
JoystickArea: () => JoystickArea,
KeyboardListener: () => KeyboardListener,
Listeners: () => Listeners,
MouseButtonsListener: () => MouseButtonsListener,
MouseMoveListener: () => MouseMoveListener,
MouseScrollListener: () => MouseScrollListener,
PageFocusListener: () => PageFocusListener,
PageVisibilityListener: () => PageVisibilityListener,
PointerLockListener: () => PointerLockListener,
ResizeListener: () => ResizeListener,
ScreenOrientationListener: () => ScreenOrientationListener,
browser: () => browser,
joysticks: () => joysticks,
keyboard: () => keyboard,
mouse: () => mouse,
useMainLoop: () => useMainLoop
});
module.exports = __toCommonJS(src_exports);
// src/Listeners.vue.ts
var import_vue12 = require("vue");
// src/listeners/DeviceTypeListener.vue.ts
var import_vue = require("vue");
var import_core = require("@manapotion/core");
var DeviceTypeListener = (0, import_vue.defineComponent)({
emits: { deviceTypeChange: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue.onMounted)(() => {
const unsub = (0, import_core.mountDeviceTypeListener)({
onDeviceTypeChange: (payload) => emit("deviceTypeChange", payload)
});
(0, import_vue.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/FullscreenListener.vue.ts
var import_vue2 = require("vue");
var import_core2 = require("@manapotion/core");
var FullscreenListener = (0, import_vue2.defineComponent)({
emits: { fullscreenChange: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue2.onMounted)(() => {
const unsub = (0, import_core2.mountFullscreenListener)({
onFullscreenChange: (payload) => emit("fullscreenChange", payload)
});
(0, import_vue2.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/KeyboardListener.vue.ts
var import_vue3 = require("vue");
var import_core3 = require("@manapotion/core");
var KeyboardListener = (0, import_vue3.defineComponent)({
emits: {
keyDown: (payload) => payload,
keyUp: (payload) => payload
},
setup: (_, { emit }) => {
(0, import_vue3.onMounted)(() => {
const unsub = (0, import_core3.mountKeyboardListener)({
onKeyDown: (payload) => emit("keyDown", payload),
onKeyUp: (payload) => emit("keyUp", payload)
});
(0, import_vue3.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/MouseButtonsListener.vue.ts
var import_vue4 = require("vue");
var import_core4 = require("@manapotion/core");
var MouseButtonsListener = (0, import_vue4.defineComponent)({
emits: {
leftMouseButtonDown: (payload) => payload,
middleMouseButtonDown: (payload) => payload,
rightMouseButtonDown: (payload) => payload,
leftMouseButtonUp: (payload) => payload,
middleMouseButtonUp: (payload) => payload,
rightMouseButtonUp: (payload) => payload
},
setup: (_, { emit }) => {
(0, import_vue4.onMounted)(() => {
const unsub = (0, import_core4.mountMouseButtonsListener)({
onLeftMouseButtonDown: (payload) => emit("leftMouseButtonDown", payload),
onMiddleMouseButtonDown: (payload) => emit("middleMouseButtonDown", payload),
onRightMouseButtonDown: (payload) => emit("rightMouseButtonDown", payload),
onLeftMouseButtonUp: (payload) => emit("leftMouseButtonUp", payload),
onMiddleMouseButtonUp: (payload) => emit("middleMouseButtonUp", payload),
onRightMouseButtonUp: (payload) => emit("rightMouseButtonUp", payload)
});
(0, import_vue4.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/MouseMoveListener.vue.ts
var import_vue5 = require("vue");
var import_core5 = require("@manapotion/core");
var MouseMoveListener = (0, import_vue5.defineComponent)({
// eslint-disable-next-line vue/require-default-prop
props: { mouseMovementResetDelay: { type: Number } },
emits: { mouseMove: (payload) => payload },
setup: (props, { emit }) => {
(0, import_vue5.onMounted)(() => {
let unsub = (0, import_core5.mountMouseMoveListener)({
onMouseMove: (payload) => emit("mouseMove", payload),
mouseMovementResetDelay: props.mouseMovementResetDelay
});
(0, import_vue5.watch)(
() => props.mouseMovementResetDelay,
(newDelay) => {
unsub();
unsub = (0, import_core5.mountMouseMoveListener)({
onMouseMove: (payload) => emit("mouseMove", payload),
mouseMovementResetDelay: newDelay
});
}
);
(0, import_vue5.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/MouseScrollListener.vue.ts
var import_vue6 = require("vue");
var import_core6 = require("@manapotion/core");
var MouseScrollListener = (0, import_vue6.defineComponent)({
// eslint-disable-next-line vue/require-default-prop
props: { mouseScrollResetDelay: { type: Number } },
emits: { scroll: (payload) => payload },
setup: (props, { emit }) => {
(0, import_vue6.onMounted)(() => {
let unsub = (0, import_core6.mountMouseScrollListener)({
onScroll: (payload) => emit("scroll", payload),
mouseScrollResetDelay: props.mouseScrollResetDelay
});
(0, import_vue6.watch)(
() => props.mouseScrollResetDelay,
(newDelay) => {
unsub();
unsub = (0, import_core6.mountMouseScrollListener)({
onScroll: (payload) => emit("scroll", payload),
mouseScrollResetDelay: newDelay
});
}
);
(0, import_vue6.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/PageFocusListener.vue.ts
var import_vue7 = require("vue");
var import_core7 = require("@manapotion/core");
var PageFocusListener = (0, import_vue7.defineComponent)({
emits: { pageFocusChange: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue7.onMounted)(() => {
const unsub = (0, import_core7.mountPageFocusListener)({
onPageFocusChange: (payload) => emit("pageFocusChange", payload)
});
(0, import_vue7.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/PageVisibilityListener.vue.ts
var import_vue8 = require("vue");
var import_core8 = require("@manapotion/core");
var PageVisibilityListener = (0, import_vue8.defineComponent)({
emits: { pageVisibilityChange: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue8.onMounted)(() => {
const unsub = (0, import_core8.mountPageVisibilityListener)({
onPageVisibilityChange: (payload) => emit("pageVisibilityChange", payload)
});
(0, import_vue8.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/PointerLockListener.vue.ts
var import_vue9 = require("vue");
var import_core9 = require("@manapotion/core");
var PointerLockListener = (0, import_vue9.defineComponent)({
emits: { pointerLockChange: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue9.onMounted)(() => {
const unsub = (0, import_core9.mountPointerLockListener)({
onPointerLockChange: (payload) => emit("pointerLockChange", payload)
});
(0, import_vue9.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/ResizeListener.vue.ts
var import_vue10 = require("vue");
var import_core10 = require("@manapotion/core");
var ResizeListener = (0, import_vue10.defineComponent)({
emits: { resize: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue10.onMounted)(() => {
const unsub = (0, import_core10.mountResizeListener)({
onResize: (payload) => emit("resize", payload)
});
(0, import_vue10.onUnmounted)(unsub);
});
},
render: () => null
});
// src/listeners/ScreenOrientationListener.vue.ts
var import_vue11 = require("vue");
var import_core11 = require("@manapotion/core");
var ScreenOrientationListener = (0, import_vue11.defineComponent)({
emits: { screenOrientationChange: (payload) => payload },
setup: (_, { emit }) => {
(0, import_vue11.onMounted)(() => {
const unsub = (0, import_core11.mountScreenOrientationListener)({
onScreenOrientationChange: (payload) => emit("screenOrientationChange", payload)
});
(0, import_vue11.onUnmounted)(unsub);
});
},
render: () => null
});
// src/Listeners.vue.ts
var Listeners = (0, import_vue12.defineComponent)({
props: {
// eslint-disable-next-line vue/require-default-prop
mouseMovementResetDelay: { type: Number },
// eslint-disable-next-line vue/require-default-prop
mouseScrollResetDelay: { type: Number }
},
emits: {
mouseMove: (payload) => payload,
pointerLockChange: (payload) => payload,
pageVisibilityChange: (payload) => payload,
fullscreenChange: (payload) => payload,
deviceTypeChange: (payload) => payload,
resize: (payload) => payload,
screenOrientationChange: (payload) => payload,
pageFocusChange: (payload) => payload,
scroll: (payload) => payload,
keyDown: (payload) => payload,
keyUp: (payload) => payload,
leftMouseDown: (payload) => payload,
middleMouseDown: (payload) => payload,
rightMouseDown: (payload) => payload,
leftMouseUp: (payload) => payload,
middleMouseUp: (payload) => payload,
rightMouseUp: (payload) => payload
},
setup: (props, { emit }) => () => [
(0, import_vue12.h)(FullscreenListener, { onFullscreenChange: (payload) => emit("fullscreenChange", payload) }),
(0, import_vue12.h)(PointerLockListener, {
onPointerLockChange: (payload) => emit("pointerLockChange", payload)
}),
(0, import_vue12.h)(MouseMoveListener, {
onMouseMove: (payload) => emit("mouseMove", payload),
mouseMovementResetDelay: props.mouseMovementResetDelay
}),
(0, import_vue12.h)(PageVisibilityListener, {
onPageVisibilityChange: (payload) => emit("pageVisibilityChange", payload)
}),
(0, import_vue12.h)(PageFocusListener, { onPageFocusChange: (payload) => emit("pageFocusChange", payload) }),
(0, import_vue12.h)(ResizeListener, { onResize: (payload) => emit("resize", payload) }),
(0, import_vue12.h)(DeviceTypeListener, { onDeviceTypeChange: (payload) => emit("deviceTypeChange", payload) }),
(0, import_vue12.h)(ScreenOrientationListener, {
onScreenOrientationChange: (payload) => emit("screenOrientationChange", payload)
}),
(0, import_vue12.h)(MouseButtonsListener, {
onLeftMouseButtonDown: (payload) => emit("leftMouseDown", payload),
onMiddleMouseButtonDown: (payload) => emit("middleMouseDown", payload),
onRightMouseButtonDown: (payload) => emit("rightMouseDown", payload),
onLeftMouseButtonUp: (payload) => emit("leftMouseUp", payload),
onMiddleMouseButtonUp: (payload) => emit("middleMouseUp", payload),
onRightMouseButtonUp: (payload) => emit("rightMouseUp", payload)
}),
(0, import_vue12.h)(KeyboardListener, {
onKeyDown: (payload) => emit("keyDown", payload),
onKeyUp: (payload) => emit("keyUp", payload)
}),
(0, import_vue12.h)(MouseScrollListener, {
onScroll: (payload) => emit("scroll", payload),
mouseScrollResetDelay: props.mouseScrollResetDelay
})
]
});
// src/vue-store.ts
var import_vue13 = require("vue");
var import_core12 = require("@manapotion/core");
var browser = (0, import_vue13.reactive)(import_core12.browserStore.getInitialState());
import_core12.browserStore.subscribe((state) => Object.assign(browser, state));
var mouse = (0, import_vue13.reactive)(import_core12.mouseStore.getInitialState());
import_core12.mouseStore.subscribe((state) => Object.assign(mouse, state));
var keyboard = (0, import_vue13.reactive)(import_core12.keyboardStore.getInitialState());
import_core12.keyboardStore.subscribe((state) => Object.assign(keyboard, state));
var joysticks = (0, import_vue13.reactive)(import_core12.joysticksStore.getInitialState());
import_core12.joysticksStore.subscribe((state) => Object.assign(joysticks, state));
// src/vue-loops.ts
var import_vue14 = require("vue");
var import_core13 = require("@manapotion/core");
var useMainLoop = (callback, options) => {
(0, import_vue14.onMounted)(() => {
const unsub = (0, import_core13.addMainLoopEffect)(callback, options);
(0, import_vue14.onUnmounted)(unsub);
});
};
// src/JoystickArea.vue.ts
var import_vue15 = require("vue");
var import_core14 = require("@manapotion/core");
var JoystickArea = (0, import_vue15.defineComponent)({
name: "JoystickArea",
props: {
mode: {
type: String,
default: "follow"
},
joystick: {
type: Object,
required: true
},
// eslint-disable-next-line vue/require-default-prop
maxFollowDistance: { type: Number },
// eslint-disable-next-line vue/require-default-prop
maxOriginDistance: { type: Number },
// eslint-disable-next-line vue/require-default-prop
onEnd: { type: Function },
// eslint-disable-next-line vue/require-default-prop
onMove: { type: Function },
// eslint-disable-next-line vue/require-default-prop
onStart: { type: Function },
// eslint-disable-next-line vue/require-default-prop
containerProps: { type: Object }
},
setup(props, { slots, attrs }) {
const localRef = (0, import_vue15.ref)(null);
(0, import_vue15.onMounted)(() => {
let unsub = (0, import_core14.mountJoystickArea)({
mode: props.mode,
joystick: props.joystick,
maxFollowDistance: props.maxFollowDistance,
maxOriginDistance: props.maxOriginDistance,
onEnd: props.onEnd,
onMove: props.onMove,
onStart: props.onStart,
element: localRef.value
});
(0, import_vue15.watch)(
() => props.mode,
(newMode) => {
unsub();
unsub = (0, import_core14.mountJoystickArea)({
mode: newMode,
joystick: props.joystick,
maxFollowDistance: props.maxFollowDistance,
maxOriginDistance: props.maxOriginDistance,
onEnd: props.onEnd,
onMove: props.onMove,
onStart: props.onStart,
element: localRef.value
});
}
);
(0, import_vue15.onUnmounted)(() => {
unsub();
});
});
return () => (0, import_vue15.h)(
"div",
{
...props.containerProps,
ref: localRef,
...attrs
},
slots.default ? slots.default() : []
);
}
});
// src/index.ts
__reExport(src_exports, require("@manapotion/core"), module.exports);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
DeviceTypeListener,
FullscreenListener,
JoystickArea,
KeyboardListener,
Listeners,
MouseButtonsListener,
MouseMoveListener,
MouseScrollListener,
PageFocusListener,
PageVisibilityListener,
PointerLockListener,
ResizeListener,
ScreenOrientationListener,
browser,
joysticks,
keyboard,
mouse,
useMainLoop,
...require("@manapotion/core")
});
;