UNPKG

@theforce/vue

Version:

Vue library for TheForce hand tracking

101 lines (98 loc) 2.73 kB
"use strict"; 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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { Hoverable: () => Hoverable, useHandTracker: () => useHandTracker }); module.exports = __toCommonJS(src_exports); // src/use-hand-tracker.ts var import_vue = require("vue"); var import_core = require("@theforce/core"); function useHandTracker(config) { const handLandmarks = (0, import_vue.ref)([]); const isTracking = (0, import_vue.ref)(false); let tracker = null; const initialize = async (customConfig) => { if (isTracking.value) return; const finalConfig = { ...config, ...customConfig }; tracker = new import_core.HandTracker(finalConfig); tracker.onResults((results) => { handLandmarks.value = results.multiHandLandmarks || []; }); await tracker.start(); isTracking.value = true; }; const stop = async () => { if (!tracker || !isTracking.value) return; await tracker.stop(); tracker = null; isTracking.value = false; handLandmarks.value = []; }; const restart = async (customConfig) => { await stop(); await initialize(customConfig); }; try { if (typeof import_vue.onUnmounted === "function" && (0, import_vue.getCurrentInstance)()) { (0, import_vue.onUnmounted)(() => { if (tracker) { tracker.stop(); } }); } } catch (error) { } return { handLandmarks, isTracking, initialize, stop, restart }; } var Hoverable = { name: "Hoverable", props: { class: { type: String, default: "" } }, setup(props, { slots }) { return () => (0, import_vue.h)( "div", { class: ["force-hoverable", props.class], "data-hoverable": "true" // Add data-hoverable attribute }, slots.default?.() ); } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Hoverable, useHandTracker });