Jelajahi Sumber

docs: added scenes to docs with provider context

alvarosabu 2 tahun lalu
induk
melakukan
e3da1ea2f3

+ 0 - 262
docs/.vitepress/cache/deps/@huntersofbook_plausible-vue.js

@@ -1,262 +0,0 @@
-import {
-  inject
-} from "./chunk-LZPJ5JBW.js";
-import "./chunk-JC4IRQUL.js";
-
-// node_modules/.pnpm/defu@6.1.2/node_modules/defu/dist/defu.mjs
-function isObject(value) {
-  return value !== null && typeof value === "object";
-}
-function _defu(baseObject, defaults, namespace = ".", merger) {
-  if (!isObject(defaults)) {
-    return _defu(baseObject, {}, namespace, merger);
-  }
-  const object = Object.assign({}, defaults);
-  for (const key in baseObject) {
-    if (key === "__proto__" || key === "constructor") {
-      continue;
-    }
-    const value = baseObject[key];
-    if (value === null || value === void 0) {
-      continue;
-    }
-    if (merger && merger(object, key, value, namespace)) {
-      continue;
-    }
-    if (Array.isArray(value) && Array.isArray(object[key])) {
-      object[key] = [...value, ...object[key]];
-    } else if (isObject(value) && isObject(object[key])) {
-      object[key] = _defu(
-        value,
-        object[key],
-        (namespace ? `${namespace}.` : "") + key.toString(),
-        merger
-      );
-    } else {
-      object[key] = value;
-    }
-  }
-  return object;
-}
-function createDefu(merger) {
-  return (...arguments_) => (
-    // eslint-disable-next-line unicorn/no-array-reduce
-    arguments_.reduce((p, c) => _defu(p, c, "", merger), {})
-  );
-}
-var defu = createDefu();
-var defuFn = createDefu((object, key, currentValue) => {
-  if (typeof object[key] !== "undefined" && typeof currentValue === "function") {
-    object[key] = currentValue(object[key]);
-    return true;
-  }
-});
-var defuArrayFn = createDefu((object, key, currentValue) => {
-  if (Array.isArray(object[key]) && typeof currentValue === "function") {
-    object[key] = currentValue(object[key]);
-    return true;
-  }
-});
-
-// node_modules/.pnpm/plausible-tracker@0.3.8/node_modules/plausible-tracker/build/module/lib/request.js
-function sendEvent(eventName, data, options) {
-  const isLocalhost = /^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*:)*?:?0*1$/.test(location.hostname) || location.protocol === "file:";
-  if (!data.trackLocalhost && isLocalhost) {
-    return console.warn("[Plausible] Ignoring event because website is running locally");
-  }
-  try {
-    if (window.localStorage.plausible_ignore === "true") {
-      return console.warn('[Plausible] Ignoring event because "plausible_ignore" is set to "true" in localStorage');
-    }
-  } catch (e) {
-    null;
-  }
-  const payload = {
-    n: eventName,
-    u: data.url,
-    d: data.domain,
-    r: data.referrer,
-    w: data.deviceWidth,
-    h: data.hashMode ? 1 : 0,
-    p: options && options.props ? JSON.stringify(options.props) : void 0
-  };
-  const req = new XMLHttpRequest();
-  req.open("POST", `${data.apiHost}/api/event`, true);
-  req.setRequestHeader("Content-Type", "text/plain");
-  req.send(JSON.stringify(payload));
-  req.onreadystatechange = () => {
-    if (req.readyState !== 4)
-      return;
-    if (options && options.callback) {
-      options.callback();
-    }
-  };
-}
-
-// node_modules/.pnpm/plausible-tracker@0.3.8/node_modules/plausible-tracker/build/module/lib/tracker.js
-function Plausible(defaults) {
-  const getConfig = () => ({
-    hashMode: false,
-    trackLocalhost: false,
-    url: location.href,
-    domain: location.hostname,
-    referrer: document.referrer || null,
-    deviceWidth: window.innerWidth,
-    apiHost: "https://plausible.io",
-    ...defaults
-  });
-  const trackEvent = (eventName, options, eventData) => {
-    sendEvent(eventName, { ...getConfig(), ...eventData }, options);
-  };
-  const trackPageview = (eventData, options) => {
-    trackEvent("pageview", options, eventData);
-  };
-  const enableAutoPageviews = () => {
-    const page = () => trackPageview();
-    const originalPushState = history.pushState;
-    if (originalPushState) {
-      history.pushState = function(data, title, url) {
-        originalPushState.apply(this, [data, title, url]);
-        page();
-      };
-      addEventListener("popstate", page);
-    }
-    if (defaults && defaults.hashMode) {
-      addEventListener("hashchange", page);
-    }
-    trackPageview();
-    return function cleanup() {
-      if (originalPushState) {
-        history.pushState = originalPushState;
-        removeEventListener("popstate", page);
-      }
-      if (defaults && defaults.hashMode) {
-        removeEventListener("hashchange", page);
-      }
-    };
-  };
-  const enableAutoOutboundTracking = (targetNode = document, observerInit = {
-    subtree: true,
-    childList: true,
-    attributes: true,
-    attributeFilter: ["href"]
-  }) => {
-    function trackClick(event) {
-      trackEvent("Outbound Link: Click", { props: { url: this.href } });
-      if (!(typeof process !== "undefined" && process && false)) {
-        setTimeout(() => {
-          location.href = this.href;
-        }, 150);
-      }
-      event.preventDefault();
-    }
-    const tracked = /* @__PURE__ */ new Set();
-    function addNode(node) {
-      if (node instanceof HTMLAnchorElement) {
-        if (node.host !== location.host) {
-          node.addEventListener("click", trackClick);
-          tracked.add(node);
-        }
-      } else if ("querySelectorAll" in node) {
-        node.querySelectorAll("a").forEach(addNode);
-      }
-    }
-    function removeNode(node) {
-      if (node instanceof HTMLAnchorElement) {
-        node.removeEventListener("click", trackClick);
-        tracked.delete(node);
-      } else if ("querySelectorAll" in node) {
-        node.querySelectorAll("a").forEach(removeNode);
-      }
-    }
-    const observer = new MutationObserver((mutations) => {
-      mutations.forEach((mutation) => {
-        if (mutation.type === "attributes") {
-          removeNode(mutation.target);
-          addNode(mutation.target);
-        } else if (mutation.type === "childList") {
-          mutation.addedNodes.forEach(addNode);
-          mutation.removedNodes.forEach(removeNode);
-        }
-      });
-    });
-    targetNode.querySelectorAll("a").forEach(addNode);
-    observer.observe(targetNode, observerInit);
-    return function cleanup() {
-      tracked.forEach((a) => {
-        a.removeEventListener("click", trackClick);
-      });
-      tracked.clear();
-      observer.disconnect();
-    };
-  };
-  return {
-    trackEvent,
-    trackPageview,
-    enableAutoPageviews,
-    enableAutoOutboundTracking
-  };
-}
-
-// node_modules/.pnpm/plausible-tracker@0.3.8/node_modules/plausible-tracker/build/module/index.js
-var module_default = Plausible;
-
-// node_modules/.pnpm/@huntersofbook+plausible-vue@1.0.0/node_modules/@huntersofbook/plausible-vue/dist/index.mjs
-var loadScript = (source, options = {}) => {
-  return new Promise((resolve, reject) => {
-    const head = document.head || document.getElementsByTagName("head")[0];
-    const script = document.createElement("script");
-    const {
-      src,
-      type = options.partytown ? "text/partytown" : "text/javascript",
-      defer = false,
-      async = false,
-      ...restAttrs
-    } = options;
-    script.type = type;
-    script.defer = defer;
-    script.async = async;
-    script.src = src || source;
-    script.setAttribute("data-domain", options["data-domain"]);
-    Object.keys(restAttrs).forEach((key) => {
-      script[key] = restAttrs[key];
-    });
-    head.appendChild(script);
-    script.onload = resolve;
-    script.onerror = reject;
-  });
-};
-var createPlausible = (options) => {
-  const plausible = {
-    install(app) {
-      const data = defu(options.init, {
-        apiHost: "https://plausible.io",
-        enableAutoPageviews: true
-      });
-      const plausible2 = module_default(data);
-      if (options.settings.enableAutoPageviews === true)
-        plausible2.enableAutoPageviews();
-      if (options.settings.enableAutoOutboundTracking === true)
-        plausible2.enableAutoOutboundTracking();
-      loadScript(`${data.apiHost}/js/script.js`, {
-        "defer": true,
-        "data-domain": data.apiHost || "https://plausible.io",
-        "partytown": options.partytown || false
-      });
-      app.config.globalProperties.$plausible = plausible2;
-      app.provide("$plausible", plausible2);
-    }
-  };
-  return plausible;
-};
-var usePlausible = () => {
-  const plausible = inject("$plausible");
-  return {
-    ...plausible
-  };
-};
-export {
-  createPlausible,
-  usePlausible
-};
-//# sourceMappingURL=@huntersofbook_plausible-vue.js.map

File diff ditekan karena terlalu besar
+ 0 - 3
docs/.vitepress/cache/deps/@huntersofbook_plausible-vue.js.map


File diff ditekan karena terlalu besar
+ 112 - 880
docs/.vitepress/cache/deps/@tresjs_cientos.js


File diff ditekan karena terlalu besar
+ 0 - 1
docs/.vitepress/cache/deps/@tresjs_cientos.js.map


+ 38 - 0
docs/.vitepress/cache/deps/@tresjs_core.js

@@ -0,0 +1,38 @@
+import {
+  $,
+  G,
+  L,
+  Ne,
+  ce,
+  dt,
+  gt,
+  j,
+  lt,
+  me,
+  nt,
+  se,
+  tt,
+  vt,
+  wt
+} from "./chunk-ZUTZQNJG.js";
+import "./chunk-UMTEG5DH.js";
+import "./chunk-LZPJ5JBW.js";
+import "./chunk-JC4IRQUL.js";
+export {
+  Ne as CameraType,
+  lt as TresCanvas,
+  G as catalogue,
+  wt as default,
+  se as extend,
+  gt as isProd,
+  nt as trasverseObjects,
+  ce as useCamera,
+  dt as useLoader,
+  j as useLogger,
+  me as useRaycaster,
+  $ as useRenderLoop,
+  tt as useRenderer,
+  vt as useTexture,
+  L as useTres
+};
+//# sourceMappingURL=@tresjs_core.js.map

+ 7 - 0
docs/.vitepress/cache/deps/@tresjs_core.js.map

@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": [],
+  "sourcesContent": [],
+  "mappings": "",
+  "names": []
+}

+ 28 - 19
docs/.vitepress/cache/deps/_metadata.json

@@ -1,59 +1,68 @@
 {
 {
-  "hash": "c17ae1f0",
-  "browserHash": "5bb77dae",
+  "hash": "02bd31c1",
+  "browserHash": "823e2554",
   "optimized": {
   "optimized": {
     "vue": {
     "vue": {
       "src": "../../../../node_modules/.pnpm/vue@3.2.47/node_modules/vue/dist/vue.runtime.esm-bundler.js",
       "src": "../../../../node_modules/.pnpm/vue@3.2.47/node_modules/vue/dist/vue.runtime.esm-bundler.js",
       "file": "vue.js",
       "file": "vue.js",
-      "fileHash": "d044c9b0",
-      "needsInterop": false
-    },
-    "@huntersofbook/plausible-vue": {
-      "src": "../../../../node_modules/.pnpm/@huntersofbook+plausible-vue@1.0.0/node_modules/@huntersofbook/plausible-vue/dist/index.mjs",
-      "file": "@huntersofbook_plausible-vue.js",
-      "fileHash": "848179d8",
+      "fileHash": "e62c8883",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "three": {
     "three": {
-      "src": "../../../../node_modules/.pnpm/three@0.151.2/node_modules/three/build/three.module.js",
+      "src": "../../../../node_modules/.pnpm/three@0.151.3/node_modules/three/build/three.module.js",
       "file": "three.js",
       "file": "three.js",
-      "fileHash": "7beb728f",
+      "fileHash": "36538c0a",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "@tresjs/cientos": {
     "@tresjs/cientos": {
-      "src": "../../../../node_modules/.pnpm/@tresjs+cientos@2.0.0-alpha.5_three@0.151.2/node_modules/@tresjs/cientos/dist/trescientos.js",
+      "src": "../../../../node_modules/.pnpm/@tresjs+cientos@2.0.0-alpha.5_three@0.151.3/node_modules/@tresjs/cientos/dist/trescientos.js",
       "file": "@tresjs_cientos.js",
       "file": "@tresjs_cientos.js",
-      "fileHash": "8825b321",
+      "fileHash": "ef210087",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "@stackblitz/sdk": {
     "@stackblitz/sdk": {
       "src": "../../../../node_modules/.pnpm/@stackblitz+sdk@1.8.2/node_modules/@stackblitz/sdk/bundles/sdk.m.js",
       "src": "../../../../node_modules/.pnpm/@stackblitz+sdk@1.8.2/node_modules/@stackblitz/sdk/bundles/sdk.m.js",
       "file": "@stackblitz_sdk.js",
       "file": "@stackblitz_sdk.js",
-      "fileHash": "9c76117e",
+      "fileHash": "0b9798ce",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "gsap": {
     "gsap": {
       "src": "../../../../node_modules/.pnpm/gsap@3.11.5/node_modules/gsap/index.js",
       "src": "../../../../node_modules/.pnpm/gsap@3.11.5/node_modules/gsap/index.js",
       "file": "gsap.js",
       "file": "gsap.js",
-      "fileHash": "a4e1e619",
+      "fileHash": "5d5aba65",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "@vueuse/core": {
     "@vueuse/core": {
       "src": "../../../../node_modules/.pnpm/@vueuse+core@9.13.0/node_modules/@vueuse/core/index.mjs",
       "src": "../../../../node_modules/.pnpm/@vueuse+core@9.13.0/node_modules/@vueuse/core/index.mjs",
       "file": "@vueuse_core.js",
       "file": "@vueuse_core.js",
-      "fileHash": "78c5386e",
+      "fileHash": "c8b219d1",
+      "needsInterop": false
+    },
+    "three/src/math/MathUtils": {
+      "src": "../../../../node_modules/.pnpm/three@0.151.3/node_modules/three/src/math/MathUtils.js",
+      "file": "three_src_math_MathUtils.js",
+      "fileHash": "b451a408",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "@alvarosabu/utils": {
     "@alvarosabu/utils": {
       "src": "../../../../node_modules/.pnpm/@alvarosabu+utils@2.3.0/node_modules/@alvarosabu/utils/dist/as-utils.js",
       "src": "../../../../node_modules/.pnpm/@alvarosabu+utils@2.3.0/node_modules/@alvarosabu/utils/dist/as-utils.js",
       "file": "@alvarosabu_utils.js",
       "file": "@alvarosabu_utils.js",
-      "fileHash": "da5ce369",
+      "fileHash": "e66a408e",
+      "needsInterop": false
+    },
+    "@tresjs/core": {
+      "src": "../../../../node_modules/.pnpm/@tresjs+core@2.0.0-alpha.1_three@0.151.3+vue@3.2.47/node_modules/@tresjs/core/dist/tres.js",
+      "file": "@tresjs_core.js",
+      "fileHash": "013cca1c",
       "needsInterop": false
       "needsInterop": false
     }
     }
   },
   },
   "chunks": {
   "chunks": {
-    "chunk-XEKPWTXV": {
-      "file": "chunk-XEKPWTXV.js"
+    "chunk-ZUTZQNJG": {
+      "file": "chunk-ZUTZQNJG.js"
+    },
+    "chunk-UMTEG5DH": {
+      "file": "chunk-UMTEG5DH.js"
     },
     },
     "chunk-LZPJ5JBW": {
     "chunk-LZPJ5JBW": {
       "file": "chunk-LZPJ5JBW.js"
       "file": "chunk-LZPJ5JBW.js"

+ 2 - 2
docs/.vitepress/cache/deps/chunk-XEKPWTXV.js → docs/.vitepress/cache/deps/chunk-UMTEG5DH.js

@@ -2,7 +2,7 @@ import {
   __export
   __export
 } from "./chunk-JC4IRQUL.js";
 } from "./chunk-JC4IRQUL.js";
 
 
-// node_modules/.pnpm/three@0.151.2/node_modules/three/build/three.module.js
+// node_modules/.pnpm/three@0.151.3/node_modules/three/build/three.module.js
 var three_module_exports = {};
 var three_module_exports = {};
 __export(three_module_exports, {
 __export(three_module_exports, {
   ACESFilmicToneMapping: () => ACESFilmicToneMapping,
   ACESFilmicToneMapping: () => ACESFilmicToneMapping,
@@ -30489,4 +30489,4 @@ three/build/three.module.js:
    * SPDX-License-Identifier: MIT
    * SPDX-License-Identifier: MIT
    *)
    *)
 */
 */
-//# sourceMappingURL=chunk-XEKPWTXV.js.map
+//# sourceMappingURL=chunk-UMTEG5DH.js.map

File diff ditekan karena terlalu besar
+ 1 - 1
docs/.vitepress/cache/deps/chunk-UMTEG5DH.js.map


+ 853 - 0
docs/.vitepress/cache/deps/chunk-ZUTZQNJG.js

@@ -0,0 +1,853 @@
+import {
+  ACESFilmicToneMapping,
+  Clock,
+  Color,
+  LinearEncoding,
+  LoadingManager,
+  MathUtils,
+  Mesh,
+  NoToneMapping,
+  OrthographicCamera,
+  PCFShadowMap,
+  PCFSoftShadowMap,
+  PerspectiveCamera,
+  Raycaster,
+  Scene,
+  TextureLoader,
+  Vector2,
+  WebGLRenderer,
+  sRGBEncoding,
+  three_module_exports
+} from "./chunk-UMTEG5DH.js";
+import {
+  computed,
+  createRenderer,
+  defineComponent,
+  getCurrentInstance,
+  getCurrentScope,
+  h,
+  nextTick,
+  onMounted,
+  onScopeDispose,
+  readonly,
+  ref,
+  shallowReactive,
+  shallowRef,
+  toRef,
+  toRefs,
+  unref,
+  watch,
+  watchEffect
+} from "./chunk-LZPJ5JBW.js";
+
+// node_modules/.pnpm/@vueuse+shared@9.13.0_vue@3.2.47/node_modules/@vueuse/shared/index.mjs
+var _a;
+var isClient = typeof window !== "undefined";
+var isFunction = (val) => typeof val === "function";
+var isString = (val) => typeof val === "string";
+var noop = () => {
+};
+var isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
+function resolveUnref(r) {
+  return typeof r === "function" ? r() : unref(r);
+}
+function identity(arg) {
+  return arg;
+}
+function tryOnScopeDispose(fn) {
+  if (getCurrentScope()) {
+    onScopeDispose(fn);
+    return true;
+  }
+  return false;
+}
+function createEventHook() {
+  const fns = [];
+  const off = (fn) => {
+    const index = fns.indexOf(fn);
+    if (index !== -1)
+      fns.splice(index, 1);
+  };
+  const on = (fn) => {
+    fns.push(fn);
+    const offFn = () => off(fn);
+    tryOnScopeDispose(offFn);
+    return {
+      off: offFn
+    };
+  };
+  const trigger = (param) => {
+    fns.forEach((fn) => fn(param));
+  };
+  return {
+    on,
+    off,
+    trigger
+  };
+}
+function tryOnMounted(fn, sync = true) {
+  if (getCurrentInstance())
+    onMounted(fn);
+  else if (sync)
+    fn();
+  else
+    nextTick(fn);
+}
+
+// node_modules/.pnpm/@vueuse+core@9.13.0_vue@3.2.47/node_modules/@vueuse/core/index.mjs
+function unrefElement(elRef) {
+  var _a2;
+  const plain = resolveUnref(elRef);
+  return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;
+}
+var defaultWindow = isClient ? window : void 0;
+var defaultDocument = isClient ? window.document : void 0;
+var defaultNavigator = isClient ? window.navigator : void 0;
+var defaultLocation = isClient ? window.location : void 0;
+function useEventListener(...args) {
+  let target;
+  let events;
+  let listeners;
+  let options;
+  if (isString(args[0]) || Array.isArray(args[0])) {
+    [events, listeners, options] = args;
+    target = defaultWindow;
+  } else {
+    [target, events, listeners, options] = args;
+  }
+  if (!target)
+    return noop;
+  if (!Array.isArray(events))
+    events = [events];
+  if (!Array.isArray(listeners))
+    listeners = [listeners];
+  const cleanups = [];
+  const cleanup = () => {
+    cleanups.forEach((fn) => fn());
+    cleanups.length = 0;
+  };
+  const register = (el, event, listener, options2) => {
+    el.addEventListener(event, listener, options2);
+    return () => el.removeEventListener(event, listener, options2);
+  };
+  const stopWatch = watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => {
+    cleanup();
+    if (!el)
+      return;
+    cleanups.push(...events.flatMap((event) => {
+      return listeners.map((listener) => register(el, event, listener, options2));
+    }));
+  }, { immediate: true, flush: "post" });
+  const stop = () => {
+    stopWatch();
+    cleanup();
+  };
+  tryOnScopeDispose(stop);
+  return stop;
+}
+function useSupported(callback, sync = false) {
+  const isSupported = ref();
+  const update = () => isSupported.value = Boolean(callback());
+  update();
+  tryOnMounted(update, sync);
+  return isSupported;
+}
+var _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
+var globalKey = "__vueuse_ssr_handlers__";
+_global[globalKey] = _global[globalKey] || {};
+var handlers = _global[globalKey];
+function useDevicePixelRatio({
+  window: window2 = defaultWindow
+} = {}) {
+  const pixelRatio = ref(1);
+  if (window2) {
+    let observe = function() {
+      pixelRatio.value = window2.devicePixelRatio;
+      cleanup();
+      media = window2.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);
+      media.addEventListener("change", observe, { once: true });
+    }, cleanup = function() {
+      media == null ? void 0 : media.removeEventListener("change", observe);
+    };
+    let media;
+    observe();
+    tryOnScopeDispose(cleanup);
+  }
+  return { pixelRatio };
+}
+var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
+var __hasOwnProp$g = Object.prototype.hasOwnProperty;
+var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
+var __objRest$2 = (source, exclude) => {
+  var target = {};
+  for (var prop in source)
+    if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0)
+      target[prop] = source[prop];
+  if (source != null && __getOwnPropSymbols$g)
+    for (var prop of __getOwnPropSymbols$g(source)) {
+      if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop))
+        target[prop] = source[prop];
+    }
+  return target;
+};
+function useResizeObserver(target, callback, options = {}) {
+  const _a2 = options, { window: window2 = defaultWindow } = _a2, observerOptions = __objRest$2(_a2, ["window"]);
+  let observer;
+  const isSupported = useSupported(() => window2 && "ResizeObserver" in window2);
+  const cleanup = () => {
+    if (observer) {
+      observer.disconnect();
+      observer = void 0;
+    }
+  };
+  const stopWatch = watch(() => unrefElement(target), (el) => {
+    cleanup();
+    if (isSupported.value && window2 && el) {
+      observer = new ResizeObserver(callback);
+      observer.observe(el, observerOptions);
+    }
+  }, { immediate: true, flush: "post" });
+  const stop = () => {
+    cleanup();
+    stopWatch();
+  };
+  tryOnScopeDispose(stop);
+  return {
+    isSupported,
+    stop
+  };
+}
+function useRafFn(fn, options = {}) {
+  const {
+    immediate = true,
+    window: window2 = defaultWindow
+  } = options;
+  const isActive = ref(false);
+  let previousFrameTimestamp = 0;
+  let rafId = null;
+  function loop(timestamp2) {
+    if (!isActive.value || !window2)
+      return;
+    const delta = timestamp2 - previousFrameTimestamp;
+    fn({ delta, timestamp: timestamp2 });
+    previousFrameTimestamp = timestamp2;
+    rafId = window2.requestAnimationFrame(loop);
+  }
+  function resume() {
+    if (!isActive.value && window2) {
+      isActive.value = true;
+      rafId = window2.requestAnimationFrame(loop);
+    }
+  }
+  function pause() {
+    isActive.value = false;
+    if (rafId != null && window2) {
+      window2.cancelAnimationFrame(rafId);
+      rafId = null;
+    }
+  }
+  if (immediate)
+    resume();
+  tryOnScopeDispose(pause);
+  return {
+    isActive: readonly(isActive),
+    pause,
+    resume
+  };
+}
+function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {
+  const { window: window2 = defaultWindow, box = "content-box" } = options;
+  const isSVG = computed(() => {
+    var _a2, _b;
+    return (_b = (_a2 = unrefElement(target)) == null ? void 0 : _a2.namespaceURI) == null ? void 0 : _b.includes("svg");
+  });
+  const width = ref(initialSize.width);
+  const height = ref(initialSize.height);
+  useResizeObserver(target, ([entry]) => {
+    const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;
+    if (window2 && isSVG.value) {
+      const $elem = unrefElement(target);
+      if ($elem) {
+        const styles = window2.getComputedStyle($elem);
+        width.value = parseFloat(styles.width);
+        height.value = parseFloat(styles.height);
+      }
+    } else {
+      if (boxSize) {
+        const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];
+        width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);
+        height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);
+      } else {
+        width.value = entry.contentRect.width;
+        height.value = entry.contentRect.height;
+      }
+    }
+  }, options);
+  watch(() => unrefElement(target), (ele) => {
+    width.value = ele ? initialSize.width : 0;
+    height.value = ele ? initialSize.height : 0;
+  });
+  return {
+    width,
+    height
+  };
+}
+var defaultState = {
+  x: 0,
+  y: 0,
+  pointerId: 0,
+  pressure: 0,
+  tiltX: 0,
+  tiltY: 0,
+  width: 0,
+  height: 0,
+  twist: 0,
+  pointerType: null
+};
+var keys = Object.keys(defaultState);
+var SwipeDirection;
+(function(SwipeDirection2) {
+  SwipeDirection2["UP"] = "UP";
+  SwipeDirection2["RIGHT"] = "RIGHT";
+  SwipeDirection2["DOWN"] = "DOWN";
+  SwipeDirection2["LEFT"] = "LEFT";
+  SwipeDirection2["NONE"] = "NONE";
+})(SwipeDirection || (SwipeDirection = {}));
+var __defProp = Object.defineProperty;
+var __getOwnPropSymbols = Object.getOwnPropertySymbols;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __propIsEnum = Object.prototype.propertyIsEnumerable;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __spreadValues = (a, b2) => {
+  for (var prop in b2 || (b2 = {}))
+    if (__hasOwnProp.call(b2, prop))
+      __defNormalProp(a, prop, b2[prop]);
+  if (__getOwnPropSymbols)
+    for (var prop of __getOwnPropSymbols(b2)) {
+      if (__propIsEnum.call(b2, prop))
+        __defNormalProp(a, prop, b2[prop]);
+    }
+  return a;
+};
+var _TransitionPresets = {
+  easeInSine: [0.12, 0, 0.39, 0],
+  easeOutSine: [0.61, 1, 0.88, 1],
+  easeInOutSine: [0.37, 0, 0.63, 1],
+  easeInQuad: [0.11, 0, 0.5, 0],
+  easeOutQuad: [0.5, 1, 0.89, 1],
+  easeInOutQuad: [0.45, 0, 0.55, 1],
+  easeInCubic: [0.32, 0, 0.67, 0],
+  easeOutCubic: [0.33, 1, 0.68, 1],
+  easeInOutCubic: [0.65, 0, 0.35, 1],
+  easeInQuart: [0.5, 0, 0.75, 0],
+  easeOutQuart: [0.25, 1, 0.5, 1],
+  easeInOutQuart: [0.76, 0, 0.24, 1],
+  easeInQuint: [0.64, 0, 0.78, 0],
+  easeOutQuint: [0.22, 1, 0.36, 1],
+  easeInOutQuint: [0.83, 0, 0.17, 1],
+  easeInExpo: [0.7, 0, 0.84, 0],
+  easeOutExpo: [0.16, 1, 0.3, 1],
+  easeInOutExpo: [0.87, 0, 0.13, 1],
+  easeInCirc: [0.55, 0, 1, 0.45],
+  easeOutCirc: [0, 0.55, 0.45, 1],
+  easeInOutCirc: [0.85, 0, 0.15, 1],
+  easeInBack: [0.36, 0, 0.66, -0.56],
+  easeOutBack: [0.34, 1.56, 0.64, 1],
+  easeInOutBack: [0.68, -0.6, 0.32, 1.6]
+};
+var TransitionPresets = __spreadValues({
+  linear: identity
+}, _TransitionPresets);
+function useWindowSize(options = {}) {
+  const {
+    window: window2 = defaultWindow,
+    initialWidth = Infinity,
+    initialHeight = Infinity,
+    listenOrientation = true,
+    includeScrollbar = true
+  } = options;
+  const width = ref(initialWidth);
+  const height = ref(initialHeight);
+  const update = () => {
+    if (window2) {
+      if (includeScrollbar) {
+        width.value = window2.innerWidth;
+        height.value = window2.innerHeight;
+      } else {
+        width.value = window2.document.documentElement.clientWidth;
+        height.value = window2.document.documentElement.clientHeight;
+      }
+    }
+  };
+  update();
+  tryOnMounted(update);
+  useEventListener("resize", update, { passive: true });
+  if (listenOrientation)
+    useEventListener("orientationchange", update, { passive: true });
+  return { width, height };
+}
+
+// node_modules/.pnpm/@tresjs+core@2.0.0-alpha.1_three@0.151.3+vue@3.2.47/node_modules/@tresjs/core/dist/tres.js
+var G = ref({ uuid: MathUtils.generateUUID() });
+var se = (e) => void Object.assign(G.value, e);
+var Ne = ((e) => (e.Perspective = "Perspective", e.Orthographic = "Orthographic", e))(Ne || {});
+var qe = 45;
+var y;
+function ce() {
+  const { state: e, setState: t, aspectRatio: r } = L();
+  function o(a = "Perspective", s) {
+    var l, p, m;
+    if (a === "Perspective") {
+      const { near: d, far: w, fov: v } = s || {
+        near: 0.1,
+        far: 1e3,
+        fov: qe
+      };
+      y = new PerspectiveCamera(v, ((l = e.aspectRatio) == null ? void 0 : l.value) || window.innerWidth / window.innerHeight, d, w), (p = e.cameras) == null || p.push(y);
+    } else {
+      const { left: d, right: w, top: v, bottom: g, near: E, far: x } = s || {
+        left: -100,
+        right: 100,
+        top: 100,
+        bottom: -100,
+        near: 0.1,
+        far: 1e3
+      };
+      y = new OrthographicCamera(d, w, v, g, E, x), (m = e.cameras) == null || m.push(y);
+    }
+    return e.camera = y, t("camera", e.camera), y;
+  }
+  function n() {
+    var a;
+    e.camera instanceof PerspectiveCamera && e.aspectRatio && (e.camera.aspect = e.aspectRatio.value), (a = e.camera) == null || a.updateProjectionMatrix();
+  }
+  function i(a) {
+    var s;
+    (s = e.cameras) == null || s.push(a), a instanceof PerspectiveCamera && e.aspectRatio && (a.aspect = e.aspectRatio.value), a.updateProjectionMatrix(), t("camera", a);
+  }
+  function c() {
+    e.cameras = [];
+  }
+  return watchEffect(() => {
+    r != null && r.value && n();
+  }), {
+    activeCamera: toRef(e, "camera"),
+    createCamera: o,
+    updateCamera: n,
+    pushCamera: i,
+    clearCameras: c
+  };
+}
+var ue = createEventHook();
+var le = createEventHook();
+var V = createEventHook();
+var b = new Clock();
+var A = 0;
+var k = 0;
+var { pause: Je, resume: Ke, isActive: Xe } = useRafFn(
+  () => {
+    ue.trigger({ delta: A, elapsed: k, clock: b }), le.trigger({ delta: A, elapsed: k, clock: b }), V.trigger({ delta: A, elapsed: k, clock: b });
+  },
+  { immediate: false }
+);
+V.on(() => {
+  A = b.getDelta(), k = b.getElapsedTime();
+});
+function $() {
+  return {
+    onBeforeLoop: ue.on,
+    onLoop: le.on,
+    onAfterLoop: V.on,
+    pause: Je,
+    resume: Ke,
+    isActive: Xe
+  };
+}
+function Ye(e) {
+  return e instanceof Color ? e : Array.isArray(e) ? new Color(...e) : new Color(e);
+}
+var B = {
+  realistic: {
+    outputEncoding: sRGBEncoding,
+    toneMapping: ACESFilmicToneMapping,
+    toneMappingExposure: 3,
+    shadowMap: {
+      enabled: true,
+      type: PCFSoftShadowMap
+    }
+  }
+};
+var fe = (e, t) => {
+  for (const r of Object.keys(t))
+    t[r] instanceof Object && Object.assign(t[r], fe(e[r], t[r]));
+  return Object.assign(e || {}, t), e;
+};
+var Qe = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
+var Ze = et(Qe);
+function I(e) {
+  return e.replace(/-([a-z])/g, (t, r) => r.toUpperCase());
+}
+function et(e, t) {
+  const r = /* @__PURE__ */ Object.create(null), o = e.split(",");
+  for (let n = 0; n < o.length; n++)
+    r[o[n]] = true;
+  return t ? (n) => !!r[n.toLowerCase()] : (n) => !!r[n];
+}
+var f = shallowRef();
+var H = ref(false);
+function tt(e, t, r) {
+  const {
+    alpha: o = true,
+    antialias: n = true,
+    depth: i,
+    logarithmicDepthBuffer: c,
+    failIfMajorPerformanceCaveat: a,
+    precision: s,
+    premultipliedAlpha: l,
+    stencil: p,
+    shadows: m = false,
+    shadowMapType: d = PCFShadowMap,
+    physicallyCorrectLights: w = false,
+    useLegacyLights: v = false,
+    outputEncoding: g = LinearEncoding,
+    toneMapping: E = NoToneMapping,
+    toneMappingExposure: x = 1,
+    context: de = void 0,
+    powerPreference: ve = "default",
+    preserveDrawingBuffer: ge = false,
+    clearColor: C,
+    windowSize: we = false,
+    preset: he = void 0
+  } = toRefs(r), { setState: D } = L(), { width: N, height: q } = resolveUnref(we) ? useWindowSize() : useElementSize(t), { logError: ye } = j(), { pixelRatio: J } = useDevicePixelRatio(), { pause: Me, resume: Ce } = $(), F = computed(() => N.value / q.value), K = () => {
+    f.value && (f.value.setSize(N.value, q.value), f.value.setPixelRatio(Math.min(J.value, 2)));
+  }, X = () => {
+    if (!f.value)
+      return;
+    const h2 = resolveUnref(he);
+    if (h2) {
+      h2 in B || ye("Renderer Preset must be one of these: " + Object.keys(B).join(", ")), fe(f.value, B[h2]);
+      return;
+    }
+    f.value.shadowMap.enabled = resolveUnref(m), f.value.shadowMap.type = resolveUnref(d), f.value.toneMapping = resolveUnref(E) || NoToneMapping, f.value.toneMappingExposure = resolveUnref(x), f.value.outputEncoding = resolveUnref(g) || LinearEncoding, C != null && C.value && f.value.setClearColor(Ye(resolveUnref(C))), f.value.useLegacyLights = resolveUnref(v);
+  }, be = () => {
+    const h2 = unrefElement(e);
+    h2 && (f.value = new WebGLRenderer({
+      canvas: h2,
+      alpha: resolveUnref(o),
+      antialias: resolveUnref(n),
+      context: resolveUnref(de),
+      depth: resolveUnref(i),
+      failIfMajorPerformanceCaveat: resolveUnref(a),
+      logarithmicDepthBuffer: resolveUnref(c),
+      powerPreference: resolveUnref(ve),
+      precision: resolveUnref(s),
+      stencil: resolveUnref(p),
+      preserveDrawingBuffer: resolveUnref(ge),
+      premultipliedAlpha: resolveUnref(l)
+    }), D("renderer", f.value), D("clock", new Clock()), D("aspectRatio", F), X(), K(), Ce(), H.value = true);
+  }, Le = () => {
+    f.value && (f.value.dispose(), f.value = void 0, H.value = false, Me());
+  };
+  return watch([F, J], K), watch(
+    [m, d, g, v, E, x, C],
+    X
+  ), watch(
+    () => [e, t],
+    () => {
+      unrefElement(e) && unrefElement(t) && be();
+    },
+    { immediate: true, deep: true }
+  ), {
+    renderer: f,
+    isReady: H,
+    dispose: Le,
+    aspectRatio: F
+  };
+}
+var pe = (e) => !!e && e.constructor === Array;
+function nt(e) {
+  const t = { nodes: {}, materials: {} };
+  return e && e.traverse((r) => {
+    r.name && (t.nodes[r.name] = r), r.material && !t.materials[r.material.name] && (t.materials[r.material.name] = r.material);
+  }), t;
+}
+async function dt(e, t, r, o, n) {
+  const { logError: i } = j(), c = new e();
+  n && n(c), r && r(c);
+  const s = (Array.isArray(t) ? t : [t]).map(
+    (l) => new Promise((p, m) => {
+      c.load(
+        l,
+        (d) => {
+          d.scene && Object.assign(d, nt(d.scene)), p(d);
+        },
+        o,
+        (d) => m(i("[useLoader] - Failed to load resource", d))
+      );
+    })
+  );
+  return pe(t) ? await Promise.all(s) : await s[0];
+}
+async function vt(e) {
+  const t = new LoadingManager(), r = new TextureLoader(t), o = (n) => new Promise((i, c) => {
+    r.load(
+      n,
+      (a) => i(a),
+      () => null,
+      () => {
+        c(new Error("[useTextures] - Failed to load texture"));
+      }
+    );
+  });
+  if (pe(e)) {
+    const n = await Promise.all(e.map((i) => o(i)));
+    return e.length > 1 ? n : n[0];
+  } else {
+    const { map: n, displacementMap: i, normalMap: c, roughnessMap: a, metalnessMap: s, aoMap: l } = e;
+    return {
+      map: n ? await o(n) : null,
+      displacementMap: i ? await o(i) : null,
+      normalMap: c ? await o(c) : null,
+      roughnessMap: a ? await o(a) : null,
+      metalnessMap: s ? await o(s) : null,
+      aoMap: l ? await o(l) : null
+    };
+  }
+}
+var R = shallowReactive({
+  camera: void 0,
+  cameras: [],
+  aspectRatio: computed(() => window.innerWidth / window.innerHeight)
+});
+function L() {
+  function e(r) {
+    return R[r];
+  }
+  function t(r, o) {
+    R[r] = o;
+  }
+  return {
+    state: R,
+    ...toRefs(R),
+    getState: e,
+    setState: t
+  };
+}
+var ee = shallowRef(new Raycaster());
+var S = ref(new Vector2());
+var at = ref(null);
+function me() {
+  const { setState: e } = L();
+  e("raycaster", ee.value), e("pointer", S), e("currentInstance", at);
+  function t(r) {
+    S.value.x = r.clientX / window.innerWidth * 2 - 1, S.value.y = -(r.clientY / window.innerHeight) * 2 + 1;
+  }
+  return window.addEventListener("pointermove", t), {
+    raycaster: ee,
+    pointer: S
+  };
+}
+var gt = true;
+var te = "[TresJS ▲ ■ ●] ";
+function j() {
+  function e(o, n) {
+    console.error(`${te} ${o}`, n || "");
+  }
+  function t(o) {
+    console.warn(`${te} ${o}`);
+  }
+  function r(o, n) {
+  }
+  return {
+    logError: e,
+    logWarning: t,
+    logMessage: r
+  };
+}
+var { logWarning: rt } = j();
+function ot(e) {
+  for (const t in e)
+    if (t.indexOf("on") === 0)
+      return true;
+  return false;
+}
+var T = null;
+var it = {
+  createElement(e, t, r, o) {
+    if (e === "template" || Ze(e))
+      return null;
+    let n;
+    if (o === null && (o = {}), o != null && o.args ? n = new G.value[e.replace("Tres", "")](...o.args) : n = new G.value[e.replace("Tres", "")](), n.isCamera) {
+      (!(o != null && o.position) || o != null && o.position.every((c) => c == 0)) && rt(
+        // eslint-disable-next-line max-len
+        "Camera is positioned at the center of the scene [0,0,0], if this is not intentional try setting a position if your scene seems empty 🤗"
+      );
+      const { pushCamera: i } = ce();
+      i(n);
+    }
+    return (o == null ? void 0 : o.attach) === void 0 && (n.isMaterial ? n.attach = "material" : n.isBufferGeometry && (n.attach = "geometry")), n;
+  },
+  insert(e, t, r) {
+    if (T === null && t.isScene && (T = t), t === null && (t = T), t != null && t.isObject3D && (e != null && e.isObject3D)) {
+      const a = r ? t.children.indexOf(r) : 0;
+      e.parent = t, t.children.splice(a, 0, e), e.dispatchEvent({ type: "added" });
+    } else
+      typeof (e == null ? void 0 : e.attach) == "string" && (e.__previousAttach = e[t == null ? void 0 : t.attach], t && (t[e.attach] = e));
+    const { onLoop: o } = $();
+    let n = null, i = null;
+    const { raycaster: c } = me();
+    e && e instanceof Mesh && ot(e) && (o(() => {
+      var a, s, l;
+      if (t != null && t.children && e && c) {
+        const p = c.value.intersectObjects(t.children);
+        p.length > 0 && p[0].object.uuid === e.uuid ? (i = p[0], (n === null || n.object.uuid !== (i == null ? void 0 : i.object.uuid)) && ((a = e.onPointerEnter) == null || a.call(e, i)), (s = e.onPointerMove) == null || s.call(e, i)) : (i = null, n !== null && ((l = e.onPointerLeave) == null || l.call(e, n))), n = i;
+      }
+    }), useEventListener(window, "click", () => {
+      var a;
+      i !== null && ((a = e.onClick) == null || a.call(e, i));
+    }));
+  },
+  remove(e) {
+    if (!e)
+      return;
+    const t = e.parentNode;
+    t && t.removeChild(e);
+  },
+  patchProp(e, t, r, o) {
+    if (e) {
+      let n = e, i = t;
+      const c = I(i);
+      let a = n == null ? void 0 : n[c];
+      if (e.parent || (e.parent = T), i.includes("-") && a === void 0) {
+        const l = i.split("-");
+        a = l.reduce((p, m) => p[I(m)], n), i = l.pop(), a != null && a.set || (n = l.reduce((p, m) => p[I(m)], n));
+      }
+      let s = o;
+      if (s === "" && (s = true), isFunction(a))
+        return;
+      !(a != null && a.set) && !isFunction(a) ? n[c] = s : a.constructor === s.constructor && (a != null && a.copy) ? a == null || a.copy(s) : Array.isArray(s) ? a.set(...s) : !a.isColor && a.setScalar ? a.setScalar(s) : a.set(s);
+    }
+  },
+  parentNode(e) {
+    return (e == null ? void 0 : e.parent) || null;
+  },
+  createText: () => void 0,
+  createComment: () => void 0,
+  setText: () => void 0,
+  setElementText: () => void 0,
+  nextSibling: () => void 0,
+  querySelector: () => void 0,
+  setScopeId: () => void 0,
+  cloneNode: () => void 0,
+  insertStaticContent: () => void 0
+};
+var { createApp: st } = createRenderer(it);
+var ct = (e) => {
+  const t = st(r);
+  function r() {
+    return e && e.default ? e.default() : [];
+  }
+  return t;
+};
+se(three_module_exports);
+var { logWarning: ut } = j();
+var lt = defineComponent({
+  name: "TresCanvas",
+  props: [
+    "shadows",
+    "shadowMapType",
+    "physicallyCorrectLights",
+    "useLegacyLights",
+    "outputEncoding",
+    "toneMapping",
+    "toneMappingExposure",
+    "context",
+    "powerPreference",
+    "preserveDrawingBuffer",
+    "clearColor",
+    "windowSize",
+    "preset"
+  ],
+  setup(e, { slots: t, expose: r }) {
+    e.physicallyCorrectLights === true && ut("physicallyCorrectLights is deprecated, useLegacyLights is now false by default");
+    const o = ref(), n = ref(), i = new Scene(), { setState: c } = L();
+    c("scene", i);
+    function a() {
+      const { renderer: p } = tt(n, o, e), { activeCamera: m } = ce(), { onLoop: d } = $(), { raycaster: w, pointer: v } = me();
+      d(() => {
+        var g;
+        m.value && (w.value.setFromCamera(v.value, m.value), (g = p.value) == null || g.render(i, m.value));
+      });
+    }
+    watch(n, a);
+    let s;
+    function l() {
+      s = ct(t), s.provide("useTres", L()), s.provide("extend", se), s.mount(i);
+    }
+    return l(), r({
+      scene: i
+    }), () => h(
+      h(
+        "div",
+        {
+          ref: o,
+          style: {
+            position: "relative",
+            width: "100%",
+            height: "100%",
+            pointerEvents: "auto",
+            touchAction: "none"
+          }
+        },
+        [
+          h(
+            "div",
+            {
+              style: {
+                width: "100%",
+                height: "100%"
+              }
+            },
+            [
+              h("canvas", {
+                ref: n,
+                style: {
+                  display: "block",
+                  width: "100%",
+                  height: "100%",
+                  position: e.windowSize ? "fixed" : "absolute",
+                  top: 0,
+                  left: 0
+                }
+              })
+            ]
+          )
+        ]
+      )
+    );
+  }
+});
+var wt = {
+  install(e) {
+    e.component("TresCanvas", lt);
+  }
+};
+
+export {
+  G,
+  se,
+  Ne,
+  ce,
+  $,
+  tt,
+  nt,
+  dt,
+  vt,
+  L,
+  me,
+  gt,
+  j,
+  lt,
+  wt
+};
+//# sourceMappingURL=chunk-ZUTZQNJG.js.map

File diff ditekan karena terlalu besar
+ 3 - 0
docs/.vitepress/cache/deps/chunk-ZUTZQNJG.js.map


+ 1 - 1
docs/.vitepress/cache/deps/three.js

@@ -408,7 +408,7 @@ import {
   ZeroStencilOp,
   ZeroStencilOp,
   _SRGBAFormat,
   _SRGBAFormat,
   sRGBEncoding
   sRGBEncoding
-} from "./chunk-XEKPWTXV.js";
+} from "./chunk-UMTEG5DH.js";
 import "./chunk-JC4IRQUL.js";
 import "./chunk-JC4IRQUL.js";
 export {
 export {
   ACESFilmicToneMapping,
   ACESFilmicToneMapping,

+ 208 - 0
docs/.vitepress/cache/deps/three_src_math_MathUtils.js

@@ -0,0 +1,208 @@
+import "./chunk-JC4IRQUL.js";
+
+// node_modules/.pnpm/three@0.151.3/node_modules/three/src/math/MathUtils.js
+var _lut = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"];
+var _seed = 1234567;
+var DEG2RAD = Math.PI / 180;
+var RAD2DEG = 180 / Math.PI;
+function generateUUID() {
+  const d0 = Math.random() * 4294967295 | 0;
+  const d1 = Math.random() * 4294967295 | 0;
+  const d2 = Math.random() * 4294967295 | 0;
+  const d3 = Math.random() * 4294967295 | 0;
+  const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + "-" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + "-" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + "-" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + "-" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];
+  return uuid.toLowerCase();
+}
+function clamp(value, min, max) {
+  return Math.max(min, Math.min(max, value));
+}
+function euclideanModulo(n, m) {
+  return (n % m + m) % m;
+}
+function mapLinear(x, a1, a2, b1, b2) {
+  return b1 + (x - a1) * (b2 - b1) / (a2 - a1);
+}
+function inverseLerp(x, y, value) {
+  if (x !== y) {
+    return (value - x) / (y - x);
+  } else {
+    return 0;
+  }
+}
+function lerp(x, y, t) {
+  return (1 - t) * x + t * y;
+}
+function damp(x, y, lambda, dt) {
+  return lerp(x, y, 1 - Math.exp(-lambda * dt));
+}
+function pingpong(x, length = 1) {
+  return length - Math.abs(euclideanModulo(x, length * 2) - length);
+}
+function smoothstep(x, min, max) {
+  if (x <= min)
+    return 0;
+  if (x >= max)
+    return 1;
+  x = (x - min) / (max - min);
+  return x * x * (3 - 2 * x);
+}
+function smootherstep(x, min, max) {
+  if (x <= min)
+    return 0;
+  if (x >= max)
+    return 1;
+  x = (x - min) / (max - min);
+  return x * x * x * (x * (x * 6 - 15) + 10);
+}
+function randInt(low, high) {
+  return low + Math.floor(Math.random() * (high - low + 1));
+}
+function randFloat(low, high) {
+  return low + Math.random() * (high - low);
+}
+function randFloatSpread(range) {
+  return range * (0.5 - Math.random());
+}
+function seededRandom(s) {
+  if (s !== void 0)
+    _seed = s;
+  let t = _seed += 1831565813;
+  t = Math.imul(t ^ t >>> 15, t | 1);
+  t ^= t + Math.imul(t ^ t >>> 7, t | 61);
+  return ((t ^ t >>> 14) >>> 0) / 4294967296;
+}
+function degToRad(degrees) {
+  return degrees * DEG2RAD;
+}
+function radToDeg(radians) {
+  return radians * RAD2DEG;
+}
+function isPowerOfTwo(value) {
+  return (value & value - 1) === 0 && value !== 0;
+}
+function ceilPowerOfTwo(value) {
+  return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));
+}
+function floorPowerOfTwo(value) {
+  return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));
+}
+function setQuaternionFromProperEuler(q, a, b, c, order) {
+  const cos = Math.cos;
+  const sin = Math.sin;
+  const c2 = cos(b / 2);
+  const s2 = sin(b / 2);
+  const c13 = cos((a + c) / 2);
+  const s13 = sin((a + c) / 2);
+  const c1_3 = cos((a - c) / 2);
+  const s1_3 = sin((a - c) / 2);
+  const c3_1 = cos((c - a) / 2);
+  const s3_1 = sin((c - a) / 2);
+  switch (order) {
+    case "XYX":
+      q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);
+      break;
+    case "YZY":
+      q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);
+      break;
+    case "ZXZ":
+      q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);
+      break;
+    case "XZX":
+      q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);
+      break;
+    case "YXY":
+      q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);
+      break;
+    case "ZYZ":
+      q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);
+      break;
+    default:
+      console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: " + order);
+  }
+}
+function denormalize(value, array) {
+  switch (array.constructor) {
+    case Float32Array:
+      return value;
+    case Uint16Array:
+      return value / 65535;
+    case Uint8Array:
+      return value / 255;
+    case Int16Array:
+      return Math.max(value / 32767, -1);
+    case Int8Array:
+      return Math.max(value / 127, -1);
+    default:
+      throw new Error("Invalid component type.");
+  }
+}
+function normalize(value, array) {
+  switch (array.constructor) {
+    case Float32Array:
+      return value;
+    case Uint16Array:
+      return Math.round(value * 65535);
+    case Uint8Array:
+      return Math.round(value * 255);
+    case Int16Array:
+      return Math.round(value * 32767);
+    case Int8Array:
+      return Math.round(value * 127);
+    default:
+      throw new Error("Invalid component type.");
+  }
+}
+var MathUtils = {
+  DEG2RAD,
+  RAD2DEG,
+  generateUUID,
+  clamp,
+  euclideanModulo,
+  mapLinear,
+  inverseLerp,
+  lerp,
+  damp,
+  pingpong,
+  smoothstep,
+  smootherstep,
+  randInt,
+  randFloat,
+  randFloatSpread,
+  seededRandom,
+  degToRad,
+  radToDeg,
+  isPowerOfTwo,
+  ceilPowerOfTwo,
+  floorPowerOfTwo,
+  setQuaternionFromProperEuler,
+  normalize,
+  denormalize
+};
+export {
+  DEG2RAD,
+  MathUtils,
+  RAD2DEG,
+  ceilPowerOfTwo,
+  clamp,
+  damp,
+  degToRad,
+  denormalize,
+  euclideanModulo,
+  floorPowerOfTwo,
+  generateUUID,
+  inverseLerp,
+  isPowerOfTwo,
+  lerp,
+  mapLinear,
+  normalize,
+  pingpong,
+  radToDeg,
+  randFloat,
+  randFloatSpread,
+  randInt,
+  seededRandom,
+  setQuaternionFromProperEuler,
+  smootherstep,
+  smoothstep
+};
+//# sourceMappingURL=three_src_math_MathUtils.js.map

File diff ditekan karena terlalu besar
+ 3 - 0
docs/.vitepress/cache/deps/three_src_math_MathUtils.js.map


+ 8 - 1
docs/.vitepress/config.ts

@@ -2,6 +2,7 @@ import Unocss from 'unocss/vite'
 import svgLoader from 'vite-svg-loader'
 import svgLoader from 'vite-svg-loader'
 import { defineConfig } from 'vitepress'
 import { defineConfig } from 'vitepress'
 import { resolve } from 'pathe'
 import { resolve } from 'pathe'
+import Components from 'unplugin-vue-components/vite'
 
 
 export default defineConfig({
 export default defineConfig({
   title: 'TresJS',
   title: 'TresJS',
@@ -95,7 +96,13 @@ export default defineConfig({
     ],
     ],
   },
   },
   vite: {
   vite: {
-    plugins: [svgLoader(), Unocss()],
+    plugins: [
+      svgLoader(),
+      Unocss(),
+      Components({
+        dirs: ['./theme/components'],
+      }),
+    ],
     resolve: {
     resolve: {
       alias: {
       alias: {
         '/@': resolve(__dirname, '../../src'),
         '/@': resolve(__dirname, '../../src'),

+ 27 - 0
docs/.vitepress/theme/components/DonutExample.vue

@@ -0,0 +1,27 @@
+<script setup lang="ts">
+import { TresCanvas } from '@tresjs/core'
+import { BasicShadowMap, sRGBEncoding, NoToneMapping } from 'three'
+
+import { OrbitControls } from '@tresjs/cientos'
+
+const gl = {
+  clearColor: '#82DBC5',
+  shadows: true,
+  alpha: false,
+  shadowMapType: BasicShadowMap,
+  outputEncoding: sRGBEncoding,
+  toneMapping: NoToneMapping,
+}
+</script>
+
+<template>
+  <TresCanvas v-bind="gl">
+    <TresPerspectiveCamera :position="[3, 3, 3]" />
+    <OrbitControls />
+    <TresMesh>
+      <TresTorusGeometry :args="[1, 0.5, 16, 32]" />
+      <TresMeshBasicMaterial color="orange" />
+    </TresMesh>
+    <TresAmbientLight :intensity="1" />
+  </TresCanvas>
+</template>

+ 1 - 1
docs/.vitepress/theme/components/FirstScene.vue

@@ -18,9 +18,9 @@ onMounted(() => {
 
 
 <template>
 <template>
   <TresCanvas clear-color="#82DBC5" shadows alpha physically-correct-lights :output-encoding="sRGBEncoding">
   <TresCanvas clear-color="#82DBC5" shadows alpha physically-correct-lights :output-encoding="sRGBEncoding">
-    <OrbitControls />
     <TresPerspectiveCamera :position="[11, 11, 11]" :fov="45" :aspect="1" :near="0.1" :far="1000" />
     <TresPerspectiveCamera :position="[11, 11, 11]" :fov="45" :aspect="1" :near="0.1" :far="1000" />
 
 
+    <OrbitControls />
     <TresMesh :position="[-2, 6, 0]" :rotation="[0, Math.PI, 0]" cast-shadow>
     <TresMesh :position="[-2, 6, 0]" :rotation="[0, Math.PI, 0]" cast-shadow>
       <TresConeGeometry :args="[1, 1.5, 3]" />
       <TresConeGeometry :args="[1, 1.5, 3]" />
       <TresMeshToonMaterial color="#82DBC5" />
       <TresMeshToonMaterial color="#82DBC5" />

+ 2 - 6
docs/.vitepress/theme/index.ts

@@ -3,10 +3,10 @@ import 'uno.css'
 import DefaultTheme from 'vitepress/theme'
 import DefaultTheme from 'vitepress/theme'
 import './config.css'
 import './config.css'
 import FirstScene from './components/FirstScene.vue'
 import FirstScene from './components/FirstScene.vue'
-import { createPlausible } from '@huntersofbook/plausible-vue'
 
 
 import StackBlitzEmbed from './components/StackBlitzEmbed.vue'
 import StackBlitzEmbed from './components/StackBlitzEmbed.vue'
 import EmbedExperiment from './components/EmbedExperiment.vue'
 import EmbedExperiment from './components/EmbedExperiment.vue'
+import DonutExample from './components/DonutExample.vue'
 
 
 import TresLayout from './TresLayout.vue'
 import TresLayout from './TresLayout.vue'
 
 
@@ -29,13 +29,9 @@ export default {
     ctx.app.component('FirstScene', FirstScene)
     ctx.app.component('FirstScene', FirstScene)
     ctx.app.component('StackBlitzEmbed', StackBlitzEmbed)
     ctx.app.component('StackBlitzEmbed', StackBlitzEmbed)
     ctx.app.component('EmbedExperiment', EmbedExperiment)
     ctx.app.component('EmbedExperiment', EmbedExperiment)
+    ctx.app.component('DonutExample', DonutExample)
 
 
     /* ctx.app.use(plausible) */
     /* ctx.app.use(plausible) */
   },
   },
   Layout: TresLayout,
   Layout: TresLayout,
-  /* Layout() {
-    return h(DefaultTheme.Layout, null, {
-      'home-hero-image': () => h('div', null, 'Hello'),
-    })
-  }, */
 }
 }

+ 3 - 0
docs/examples/orbit-controls.md

@@ -36,6 +36,7 @@ Now you can use the `TresOrbitControls` component in your scene.
 ```vue
 ```vue
 <template>
 <template>
   <TresCanvas shadows alpha>
   <TresCanvas shadows alpha>
+    <TresPerspectiveCamera :args="[45," 1, 0.1, 1000] />
     <TresOrbitControls v-if="state.renderer" :args="[state.camera, state.renderer?.domElement]" />
     <TresOrbitControls v-if="state.renderer" :args="[state.camera, state.renderer?.domElement]" />
   </TresCanvas>
   </TresCanvas>
 </template>
 </template>
@@ -65,6 +66,7 @@ const { state } = useThree()
 </script>
 </script>
 <template>
 <template>
   <TresCanvas shadows alpha>
   <TresCanvas shadows alpha>
+    <TresPerspectiveCamera :args="[45," 1, 0.1, 1000] />
     <TresOrbitControls v-if="state.renderer" :args="[state.camera, state.renderer?.domElement]" />
     <TresOrbitControls v-if="state.renderer" :args="[state.camera, state.renderer?.domElement]" />
   </TresCanvas>
   </TresCanvas>
 </template>
 </template>
@@ -81,6 +83,7 @@ It just works. 💯
 ```vue
 ```vue
 <template>
 <template>
   <TresCanvas shadows alpha>
   <TresCanvas shadows alpha>
+    <TresPerspectiveCamera :args="[45," 1, 0.1, 1000] />
     <OrbitControls />
     <OrbitControls />
   </TresCanvas>
   </TresCanvas>
 </template>
 </template>

+ 3 - 1
docs/guide/your-first-scene.md

@@ -85,6 +85,8 @@ Now let's see how we can easily achieve the same with **TresJS**. To do that we
 Notice that we don't need to import anything, that's because **TresJS** automatically generate a **Vue Component based on the Three Object you want to use in CamelCase with a Tres prefix**. For example, if you want to use an `AmbientLight` you would use `<TresAmbientLight />` component.
 Notice that we don't need to import anything, that's because **TresJS** automatically generate a **Vue Component based on the Three Object you want to use in CamelCase with a Tres prefix**. For example, if you want to use an `AmbientLight` you would use `<TresAmbientLight />` component.
 :::
 :::
 
 
-<EmbedExperiment src="https://playground.tresjs.org/experiments/tres-donut/" />
+<ClientOnly>
+    <DonutExample style="aspect-ratio: 16/9; height: auto; margin: 2rem 0; border-radius: 8px; overflow:hidden;"/>
+</ClientOnly>
 
 
 From here onwards you can start adding more objects to your scene and start playing with the properties of the components to see how they affect the scene.
 From here onwards you can start adding more objects to your scene and start playing with the properties of the components to see how they affect the scene.

+ 2 - 0
package.json

@@ -56,6 +56,7 @@
     "vue": "^3.2.47"
     "vue": "^3.2.47"
   },
   },
   "dependencies": {
   "dependencies": {
+    "-": "^0.0.1",
     "@alvarosabu/utils": "^2.3.0",
     "@alvarosabu/utils": "^2.3.0",
     "@vueuse/core": "^9.13.0"
     "@vueuse/core": "^9.13.0"
   },
   },
@@ -88,6 +89,7 @@
     "three": "latest",
     "three": "latest",
     "unocss": "^0.48.0",
     "unocss": "^0.48.0",
     "unplugin": "^1.3.1",
     "unplugin": "^1.3.1",
+    "unplugin-vue-components": "^0.24.1",
     "vite": "^4.1.4",
     "vite": "^4.1.4",
     "vite-plugin-banner": "^0.7.0",
     "vite-plugin-banner": "^0.7.0",
     "vite-plugin-dts": "2.1.0",
     "vite-plugin-dts": "2.1.0",

+ 62 - 12
pnpm-lock.yaml

@@ -4,6 +4,7 @@ importers:
 
 
   .:
   .:
     specifiers:
     specifiers:
+      '-': ^0.0.1
       '@alvarosabu/prettier-config': ^1.2.0
       '@alvarosabu/prettier-config': ^1.2.0
       '@alvarosabu/utils': ^2.3.0
       '@alvarosabu/utils': ^2.3.0
       '@huntersofbook/plausible-vue': ^1.0.0
       '@huntersofbook/plausible-vue': ^1.0.0
@@ -34,6 +35,7 @@ importers:
       three: latest
       three: latest
       unocss: ^0.48.0
       unocss: ^0.48.0
       unplugin: ^1.3.1
       unplugin: ^1.3.1
+      unplugin-vue-components: ^0.24.1
       vite: ^4.1.4
       vite: ^4.1.4
       vite-plugin-banner: ^0.7.0
       vite-plugin-banner: ^0.7.0
       vite-plugin-dts: 2.1.0
       vite-plugin-dts: 2.1.0
@@ -44,6 +46,7 @@ importers:
       vitest: ^0.29.2
       vitest: ^0.29.2
       vue-demi: ^0.13.11
       vue-demi: ^0.13.11
     dependencies:
     dependencies:
+      '-': 0.0.1
       '@alvarosabu/utils': 2.3.0
       '@alvarosabu/utils': 2.3.0
       '@vueuse/core': 9.13.0
       '@vueuse/core': 9.13.0
     devDependencies:
     devDependencies:
@@ -51,7 +54,7 @@ importers:
       '@huntersofbook/plausible-vue': 1.0.0
       '@huntersofbook/plausible-vue': 1.0.0
       '@release-it/conventional-changelog': 5.1.1_release-it@15.9.1
       '@release-it/conventional-changelog': 5.1.1_release-it@15.9.1
       '@stackblitz/sdk': 1.8.2
       '@stackblitz/sdk': 1.8.2
-      '@tresjs/cientos': 2.0.0-alpha.5_three@0.151.2
+      '@tresjs/cientos': 2.0.0-alpha.5_three@0.151.3
       '@types/three': 0.150.1
       '@types/three': 0.150.1
       '@typescript-eslint/eslint-plugin': 5.56.0_cnkxirszkzb4o6ts7gbclno24e
       '@typescript-eslint/eslint-plugin': 5.56.0_cnkxirszkzb4o6ts7gbclno24e
       '@typescript-eslint/parser': 5.56.0_eslint@8.36.0
       '@typescript-eslint/parser': 5.56.0_eslint@8.36.0
@@ -72,9 +75,10 @@ importers:
       rollup-plugin-analyzer: 4.0.0
       rollup-plugin-analyzer: 4.0.0
       rollup-plugin-copy: 3.4.0
       rollup-plugin-copy: 3.4.0
       rollup-plugin-visualizer: 5.9.0
       rollup-plugin-visualizer: 5.9.0
-      three: 0.151.2
+      three: 0.151.3
       unocss: 0.48.5_vite@4.1.4
       unocss: 0.48.5_vite@4.1.4
       unplugin: 1.3.1
       unplugin: 1.3.1
+      unplugin-vue-components: 0.24.1
       vite: 4.1.4
       vite: 4.1.4
       vite-plugin-banner: 0.7.0
       vite-plugin-banner: 0.7.0
       vite-plugin-dts: 2.1.0_vite@4.1.4
       vite-plugin-dts: 2.1.0_vite@4.1.4
@@ -192,6 +196,10 @@ importers:
 
 
 packages:
 packages:
 
 
+  /-/0.0.1:
+    resolution: {integrity: sha512-3HfneK3DGAm05fpyj20sT3apkNcvPpCuccOThOPdzz8sY7GgQGe0l93XH9bt+YzibcTIgUAIMoyVJI740RtgyQ==}
+    dev: false
+
   /@algolia/autocomplete-core/1.7.4:
   /@algolia/autocomplete-core/1.7.4:
     resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==}
     resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==}
     dependencies:
     dependencies:
@@ -1135,21 +1143,21 @@ packages:
     engines: {node: '>= 10'}
     engines: {node: '>= 10'}
     dev: true
     dev: true
 
 
-  /@tresjs/cientos/2.0.0-alpha.5_three@0.151.2:
+  /@tresjs/cientos/2.0.0-alpha.5_three@0.151.3:
     resolution: {integrity: sha512-8SCxT8rIZ/5bPWLsp/T/YwqbmkoQ8OdRJfAKU2WrOVZpr01tpn6w+T6jFQDb8uFDiHatYR0PdHT7LejUi2tORw==}
     resolution: {integrity: sha512-8SCxT8rIZ/5bPWLsp/T/YwqbmkoQ8OdRJfAKU2WrOVZpr01tpn6w+T6jFQDb8uFDiHatYR0PdHT7LejUi2tORw==}
     peerDependencies:
     peerDependencies:
       three: latest
       three: latest
     dependencies:
     dependencies:
-      '@tresjs/core': 2.0.0-alpha.1_three@0.151.2+vue@3.2.47
+      '@tresjs/core': 2.0.0-alpha.1_three@0.151.3+vue@3.2.47
       '@vueuse/core': 9.13.0_vue@3.2.47
       '@vueuse/core': 9.13.0_vue@3.2.47
-      three: 0.151.2
-      three-stdlib: 2.21.8_three@0.151.2
+      three: 0.151.3
+      three-stdlib: 2.21.8_three@0.151.3
       vue: 3.2.47
       vue: 3.2.47
     transitivePeerDependencies:
     transitivePeerDependencies:
       - '@vue/composition-api'
       - '@vue/composition-api'
     dev: true
     dev: true
 
 
-  /@tresjs/core/2.0.0-alpha.1_three@0.151.2+vue@3.2.47:
+  /@tresjs/core/2.0.0-alpha.1_three@0.151.3+vue@3.2.47:
     resolution: {integrity: sha512-yxsVnhKmpzsvDzr35wLymHj42sK3DIN32RJHc4o2Ds1R8K6dOL/Qh7hs5QSG+Ebydi2oDSlmLp3Qv3lK+4qxHA==}
     resolution: {integrity: sha512-yxsVnhKmpzsvDzr35wLymHj42sK3DIN32RJHc4o2Ds1R8K6dOL/Qh7hs5QSG+Ebydi2oDSlmLp3Qv3lK+4qxHA==}
     peerDependencies:
     peerDependencies:
       three: latest
       three: latest
@@ -1157,7 +1165,7 @@ packages:
     dependencies:
     dependencies:
       '@alvarosabu/utils': 2.3.0
       '@alvarosabu/utils': 2.3.0
       '@vueuse/core': 9.13.0_vue@3.2.47
       '@vueuse/core': 9.13.0_vue@3.2.47
-      three: 0.151.2
+      three: 0.151.3
       vue: 3.2.47
       vue: 3.2.47
     transitivePeerDependencies:
     transitivePeerDependencies:
       - '@vue/composition-api'
       - '@vue/composition-api'
@@ -4654,6 +4662,13 @@ packages:
       '@jridgewell/sourcemap-codec': 1.4.14
       '@jridgewell/sourcemap-codec': 1.4.14
     dev: true
     dev: true
 
 
+  /magic-string/0.30.0:
+    resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==}
+    engines: {node: '>=12'}
+    dependencies:
+      '@jridgewell/sourcemap-codec': 1.4.14
+    dev: true
+
   /make-dir/3.1.0:
   /make-dir/3.1.0:
     resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
     resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
@@ -4763,6 +4778,13 @@ packages:
       brace-expansion: 2.0.1
       brace-expansion: 2.0.1
     dev: true
     dev: true
 
 
+  /minimatch/7.4.5:
+    resolution: {integrity: sha512-OzOamaOmNBJZUv2qqY1OSWa+++4YPpOkLgkc0w30Oov5ufKlWWXnFUl0l4dgmSv5Shq/zRVkEOXAe2NaqO4l5Q==}
+    engines: {node: '>=10'}
+    dependencies:
+      brace-expansion: 2.0.1
+    dev: true
+
   /minimist-options/4.1.0:
   /minimist-options/4.1.0:
     resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
     resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
     engines: {node: '>= 6'}
     engines: {node: '>= 6'}
@@ -6178,7 +6200,7 @@ packages:
     resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
     resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
     dev: true
     dev: true
 
 
-  /three-stdlib/2.21.8_three@0.151.2:
+  /three-stdlib/2.21.8_three@0.151.3:
     resolution: {integrity: sha512-kqisiKvO4mSy59v5vWqBQSH8famLxp7Z51LxpMJI9GwDxqODaW02rhIwmjYDEzZWNFpjZpoDHVGbdpeHf8h3SA==}
     resolution: {integrity: sha512-kqisiKvO4mSy59v5vWqBQSH8famLxp7Z51LxpMJI9GwDxqODaW02rhIwmjYDEzZWNFpjZpoDHVGbdpeHf8h3SA==}
     peerDependencies:
     peerDependencies:
       three: '>=0.122.0'
       three: '>=0.122.0'
@@ -6193,15 +6215,15 @@ packages:
       mmd-parser: 1.0.4
       mmd-parser: 1.0.4
       opentype.js: 1.3.4
       opentype.js: 1.3.4
       potpack: 1.0.2
       potpack: 1.0.2
-      three: 0.151.2
+      three: 0.151.3
       zstddec: 0.0.2
       zstddec: 0.0.2
     dev: true
     dev: true
 
 
   /three/0.150.1:
   /three/0.150.1:
     resolution: {integrity: sha512-5C1MqKUWaHYo13BX0Q64qcdwImgnnjSOFgBscOzAo8MYCzEtqfQqorEKMcajnA3FHy1yVlIe9AmaMQ0OQracNA==}
     resolution: {integrity: sha512-5C1MqKUWaHYo13BX0Q64qcdwImgnnjSOFgBscOzAo8MYCzEtqfQqorEKMcajnA3FHy1yVlIe9AmaMQ0OQracNA==}
 
 
-  /three/0.151.2:
-    resolution: {integrity: sha512-tGaLRP2H6++tj2JumHD25slhFAx0C619rl6G6Utjq7JTrDGJwDxpu+J2XpnYIUMfEmhNvIFDQJfp79JtKmNBWw==}
+  /three/0.151.3:
+    resolution: {integrity: sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ==}
     dev: true
     dev: true
 
 
   /through/2.3.8:
   /through/2.3.8:
@@ -6503,6 +6525,34 @@ packages:
     engines: {node: '>= 0.8'}
     engines: {node: '>= 0.8'}
     dev: true
     dev: true
 
 
+  /unplugin-vue-components/0.24.1:
+    resolution: {integrity: sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      '@babel/parser': ^7.15.8
+      '@nuxt/kit': ^3.2.2
+      vue: 2 || 3
+    peerDependenciesMeta:
+      '@babel/parser':
+        optional: true
+      '@nuxt/kit':
+        optional: true
+    dependencies:
+      '@antfu/utils': 0.7.2
+      '@rollup/pluginutils': 5.0.2
+      chokidar: 3.5.3
+      debug: 4.3.4
+      fast-glob: 3.2.12
+      local-pkg: 0.4.3
+      magic-string: 0.30.0
+      minimatch: 7.4.5
+      resolve: 1.22.1
+      unplugin: 1.3.1
+    transitivePeerDependencies:
+      - rollup
+      - supports-color
+    dev: true
+
   /unplugin/1.3.1:
   /unplugin/1.3.1:
     resolution: {integrity: sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==}
     resolution: {integrity: sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==}
     dependencies:
     dependencies:

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini