UNPKG

@tldraw/editor

Version:

tldraw infinite canvas SDK (editor).

152 lines (151 loc) • 5.38 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); var debug_flags_exports = {}; __export(debug_flags_exports, { debugFlags: () => debugFlags, featureFlags: () => featureFlags, pointerCaptureTrackingObject: () => pointerCaptureTrackingObject }); module.exports = __toCommonJS(debug_flags_exports); var import_state = require("@tldraw/state"); var import_utils = require("@tldraw/utils"); const featureFlags = {}; const pointerCaptureTrackingObject = createDebugValue( "pointerCaptureTrackingObject", // ideally we wouldn't store this mutable value in an atom but it's not // a big deal for debug values { defaults: { all: /* @__PURE__ */ new Map() }, shouldStoreForSession: false } ); const debugFlags = { // --- DEBUG VALUES --- logPreventDefaults: createDebugValue("logPreventDefaults", { defaults: { all: false } }), logPointerCaptures: createDebugValue("logPointerCaptures", { defaults: { all: false } }), logElementRemoves: createDebugValue("logElementRemoves", { defaults: { all: false } }), debugSvg: createDebugValue("debugSvg", { defaults: { all: false } }), showFps: createDebugValue("showFps", { defaults: { all: false } }), measurePerformance: createDebugValue("measurePerformance", { defaults: { all: false } }), throwToBlob: createDebugValue("throwToBlob", { defaults: { all: false } }), reconnectOnPing: createDebugValue("reconnectOnPing", { defaults: { all: false } }), debugCursors: createDebugValue("debugCursors", { defaults: { all: false } }), forceSrgb: createDebugValue("forceSrgbColors", { defaults: { all: false } }), debugGeometry: createDebugValue("debugGeometry", { defaults: { all: false } }), hideShapes: createDebugValue("hideShapes", { defaults: { all: false } }), editOnType: createDebugValue("editOnType", { defaults: { all: false } }), a11y: createDebugValue("a11y", { defaults: { all: false } }), debugElbowArrows: createDebugValue("debugElbowArrows", { defaults: { all: false } }) }; if (typeof Element !== "undefined") { const nativeElementRemoveChild = Element.prototype.removeChild; (0, import_state.react)("element removal logging", () => { if (debugFlags.logElementRemoves.get()) { Element.prototype.removeChild = function(child) { console.warn("[tldraw] removing child:", child); return nativeElementRemoveChild.call(this, child); }; } else { Element.prototype.removeChild = nativeElementRemoveChild; } }); } function createDebugValue(name, { defaults, shouldStoreForSession = true }) { return createDebugValueBase({ name, defaults, shouldStoreForSession }); } function createDebugValueBase(def) { const defaultValue = getDefaultValue(def); const storedValue = def.shouldStoreForSession ? getStoredInitialValue(def.name) : null; const valueAtom = (0, import_state.atom)(`debug:${def.name}`, storedValue ?? defaultValue); if (typeof window !== "undefined") { if (def.shouldStoreForSession) { (0, import_state.react)(`debug:${def.name}`, () => { const currentValue = valueAtom.get(); if (currentValue === defaultValue) { (0, import_utils.deleteFromSessionStorage)(`tldraw_debug:${def.name}`); } else { (0, import_utils.setInSessionStorage)(`tldraw_debug:${def.name}`, JSON.stringify(currentValue)); } }); } Object.defineProperty(window, `tldraw${def.name.replace(/^[a-z]/, (l) => l.toUpperCase())}`, { get() { return valueAtom.get(); }, set(newValue) { valueAtom.set(newValue); }, configurable: true }); } return Object.assign(valueAtom, def, { reset: () => valueAtom.set(defaultValue) }); } function getStoredInitialValue(name) { try { return JSON.parse((0, import_utils.getFromSessionStorage)(`tldraw_debug:${name}`) ?? "null"); } catch { return null; } } function readEnv(fn) { try { return fn(); } catch { return null; } } function getDefaultValue(def) { const env = readEnv(() => process.env.TLDRAW_ENV) ?? readEnv(() => process.env.VERCEL_PUBLIC_TLDRAW_ENV) ?? readEnv(() => process.env.NEXT_PUBLIC_TLDRAW_ENV) ?? // default to production because if we don't have one of these, this is probably a library use "production"; switch (env) { case "production": return def.defaults.production ?? def.defaults.all; case "preview": case "staging": return def.defaults.staging ?? def.defaults.all; default: return def.defaults.development ?? def.defaults.all; } } //# sourceMappingURL=debug-flags.js.map