{ "version": 3, "sources": ["../../../../src/lib/ui/components/DebugPanel.tsx"], "sourcesContent": ["import {\n\tcreateShapeId,\n\tDebugFlag,\n\tdebugFlags,\n\tEditor,\n\tfeatureFlags,\n\thardResetEditor,\n\tTLShapePartial,\n\ttrack,\n\tuniqueId,\n\tuseEditor,\n\tuseValue,\n} from '@tldraw/editor'\nimport * as React from 'react'\nimport { useDialogs } from '../hooks/useDialogsProvider'\nimport { useToasts } from '../hooks/useToastsProvider'\nimport { useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { Button } from './primitives/Button'\nimport * as Dialog from './primitives/Dialog'\nimport * as DropdownMenu from './primitives/DropdownMenu'\n\nlet t = 0\n\nfunction createNShapes(editor: Editor, n: number) {\n\tconst shapesToCreate: TLShapePartial[] = Array(n)\n\tconst cols = Math.floor(Math.sqrt(n))\n\n\tfor (let i = 0; i < n; i++) {\n\t\tt++\n\t\tshapesToCreate[i] = {\n\t\t\tid: createShapeId('box' + t),\n\t\t\ttype: 'geo',\n\t\t\tx: (i % cols) * 132,\n\t\t\ty: Math.floor(i / cols) * 132,\n\t\t}\n\t}\n\n\teditor.batch(() => {\n\t\teditor.createShapes(shapesToCreate).setSelectedShapes(shapesToCreate.map((s) => s.id))\n\t})\n}\n\n/** @internal */\nexport const DebugPanel = React.memo(function DebugPanel({\n\trenderDebugMenuItems,\n}: {\n\trenderDebugMenuItems: (() => React.ReactNode) | null\n}) {\n\tconst msg = useTranslation()\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t)\n})\n\nconst CurrentState = track(function CurrentState() {\n\tconst editor = useEditor()\n\treturn
{editor.root.path.value}
\n})\n\nconst ShapeCount = function ShapeCount() {\n\tconst editor = useEditor()\n\tconst count = useValue('rendering shapes count', () => editor.renderingShapes.length, [editor])\n\n\treturn
{count} Shapes
\n}\n\nconst DebugMenuContent = track(function DebugMenuContent({\n\trenderDebugMenuItems,\n}: {\n\trenderDebugMenuItems: (() => React.ReactNode) | null\n}) {\n\tconst editor = useEditor()\n\tconst { addToast } = useToasts()\n\tconst { addDialog } = useDialogs()\n\n\tconst [error, setError] = React.useState(false)\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\taddToast({\n\t\t\t\t\t\t\tid: uniqueId(),\n\t\t\t\t\t\t\ttitle: 'Something happened',\n\t\t\t\t\t\t\tdescription: 'Hey, attend to this thing over here. It might be important!',\n\t\t\t\t\t\t\t// icon?: string\n\t\t\t\t\t\t\t// title?: string\n\t\t\t\t\t\t\t// description?: string\n\t\t\t\t\t\t\t// actions?: TLUiToastAction[]\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tShow toast\n\t\t\t\t\n\n\t\t\t\t {\n\t\t\t\t\t\taddDialog({\n\t\t\t\t\t\t\tcomponent: ({ onClose }) => (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tonClose()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonContinue={() => {\n\t\t\t\t\t\t\t\t\t\tonClose()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tonClose: () => {\n\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tShow dialog\n\t\t\t\t\n\t\t\t\t createNShapes(editor, 100)}>\n\t\t\t\t\tCreate 100 shapes\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tfunction countDescendants({ children }: HTMLElement) {\n\t\t\t\t\t\t\tlet count = 0\n\t\t\t\t\t\t\tif (!children.length) return 0\n\t\t\t\t\t\t\tfor (const el of [...(children as any)]) {\n\t\t\t\t\t\t\t\tcount++\n\t\t\t\t\t\t\t\tcount += countDescendants(el)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn count\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst { selectedShapes } = editor\n\n\t\t\t\t\t\tconst shapes = selectedShapes.length === 0 ? editor.renderingShapes : selectedShapes\n\n\t\t\t\t\t\tconst elms = shapes.map(\n\t\t\t\t\t\t\t(shape) => (document.getElementById(shape.id) as HTMLElement)!.parentElement!\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tlet descendants = elms.length\n\n\t\t\t\t\t\tfor (const elm of elms) {\n\t\t\t\t\t\t\tdescendants += countDescendants(elm)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twindow.alert(`Shapes ${shapes.length}, DOM nodes:${descendants}`)\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tCount shapes and nodes\n\t\t\t\t\n\n\t\t\t\t{(() => {\n\t\t\t\t\tif (error) throw Error('oh no!')\n\t\t\t\t})()}\n\t\t\t\t {\n\t\t\t\t\t\tsetError(true)\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tThrow error\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\thardResetEditor()\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tHard reset\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{Object.values(featureFlags).map((flag) => {\n\t\t\t\t\treturn \n\t\t\t\t})}\n\t\t\t\n\t\t\t{renderDebugMenuItems?.()}\n\t\t\n\t)\n})\n\nfunction Toggle({\n\tlabel,\n\tvalue,\n\tonChange,\n}: {\n\tlabel: string\n\tvalue: boolean\n\tonChange: (newValue: boolean) => void\n}) {\n\treturn (\n\t\t onChange(!value)}>\n\t\t\t{label}\n\t\t\n\t)\n}\n\nconst DebugFlagToggle = track(function DebugFlagToggle({\n\tflag,\n\tonChange,\n}: {\n\tflag: DebugFlag\n\tonChange?: (newValue: boolean) => void\n}) {\n\treturn (\n\t\t `${m[0]} ${m[1].toLowerCase()}`)\n\t\t\t\t.replace(/^[a-z]/, (m) => m.toUpperCase())}\n\t\t\tvalue={flag.value}\n\t\t\tonChange={(newValue) => {\n\t\t\t\tflag.set(newValue)\n\t\t\t\tonChange?.(newValue)\n\t\t\t}}\n\t\t/>\n\t)\n})\n\nfunction ExampleDialog({\n\ttitle = 'title',\n\tbody = 'hello hello hello',\n\tcancel = 'Cancel',\n\tconfirm = 'Continue',\n\tdisplayDontShowAgain = false,\n\tonCancel,\n\tonContinue,\n}: {\n\ttitle?: string\n\tbody?: string\n\tcancel?: string\n\tconfirm?: string\n\tdisplayDontShowAgain?: boolean\n\tonCancel: () => void\n\tonContinue: () => void\n}) {\n\tconst [dontShowAgain, setDontShowAgain] = React.useState(false)\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{title}\n\t\t\t\t\n\t\t\t\n\t\t\t{body}\n\t\t\t\n\t\t\t\t{displayDontShowAgain && (\n\t\t\t\t\t setDontShowAgain(!dontShowAgain)}\n\t\t\t\t\t\ticonLeft={dontShowAgain ? 'checkbox-checked' : 'checkbox-empty'}\n\t\t\t\t\t\tstyle={{ marginRight: 'auto' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{`Don't show again`}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n"], "mappings": "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", "names": ["DebugPanel", "CurrentState", "ShapeCount", "DebugMenuContent", "DebugFlagToggle"] }