Events.js 1.3 KB

12345678910111213141516171819202122232425
  1. import { __rest } from "tslib";
  2. import { jsx as _jsx } from "react/jsx-runtime";
  3. import { useContext, useEffect } from "react";
  4. import { KrpanoRendererContext } from "../contexts/KrpanoRendererContext";
  5. import { mapEventPropsToJSCall } from "../utils";
  6. const GlobalEvents = "__GlobalEvents";
  7. export const Events = (_a) => {
  8. var { name, keep } = _a, EventsAttrs = __rest(_a, ["name", "keep"]);
  9. const renderer = useContext(KrpanoRendererContext);
  10. const EventSelector = `events[${name || GlobalEvents}]`;
  11. // 在renderer上绑定回调
  12. useEffect(() => {
  13. renderer === null || renderer === void 0 ? void 0 : renderer.bindEvents(EventSelector, Object.assign({}, EventsAttrs));
  14. return () => {
  15. renderer === null || renderer === void 0 ? void 0 : renderer.unbindEvents(EventSelector, Object.assign({}, EventsAttrs));
  16. };
  17. }, [renderer, EventsAttrs]);
  18. // Krpano标签上添加js call,触发事件
  19. useEffect(() => {
  20. renderer === null || renderer === void 0 ? void 0 : renderer.setTag("events",
  21. // 全局事件直接设置
  22. name || null, Object.assign(Object.assign({}, mapEventPropsToJSCall(Object.assign({}, EventsAttrs), (eventName) => `js(${renderer.name}.fire(${eventName},${EventSelector}))`)), { keep }), true);
  23. }, [name, renderer]);
  24. return _jsx("div", { className: "events" });
  25. };