react-grab 0.1.48-dev.94c316a → 0.1.48-dev.a65a972

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +17 -58
  2. package/dist/{copy-content-CJ_7MSY-.d.ts → copy-content-CNRKFr6F.d.ts} +32 -18
  3. package/dist/{copy-content-lXPMxPt1.d.cts → copy-content-CtYUWe5l.d.cts} +32 -18
  4. package/dist/core/index.cjs +1 -1
  5. package/dist/core/index.d.cts +2 -2
  6. package/dist/core/index.d.ts +2 -2
  7. package/dist/core/index.js +1 -1
  8. package/dist/core-BGWz5Xdb.js +14 -0
  9. package/dist/core-Bj2-aiid.cjs +14 -0
  10. package/dist/errors-BEgowzRA.d.ts +29 -0
  11. package/dist/errors-CTlIFDQs.d.cts +29 -0
  12. package/dist/execute-context-menu-action-5GF3F1T7.cjs +9 -0
  13. package/dist/execute-context-menu-action-DFD7JFdL.js +9 -0
  14. package/dist/freeze-updates-B9IyvOJE.js +52 -0
  15. package/dist/freeze-updates-BRtdRZ8H.cjs +52 -0
  16. package/dist/{index-Dvl3pv9l.d.cts → index-BgTe-uWs.d.cts} +1 -1
  17. package/dist/{index-j4NFBY6x.d.ts → index-CdWMNcJF.d.ts} +1 -1
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.d.cts +10 -8
  20. package/dist/index.d.ts +10 -8
  21. package/dist/index.global.js +20 -19
  22. package/dist/index.js +1 -1
  23. package/dist/open-file-C9XvlQp8.js +29 -0
  24. package/dist/open-file-DN9JigiU.cjs +20 -0
  25. package/dist/primitives.cjs +2 -2
  26. package/dist/primitives.d.cts +41 -3
  27. package/dist/primitives.d.ts +41 -3
  28. package/dist/primitives.js +2 -2
  29. package/dist/renderer-DpKRxKYo.js +9 -0
  30. package/dist/renderer-h9VENmwz.cjs +9 -0
  31. package/package.json +9 -3
  32. package/dist/copy-content-D1qnwKTs.js +0 -10
  33. package/dist/copy-content-DYW9C_RD.cjs +0 -10
  34. package/dist/core-B-v0HAqX.cjs +0 -14
  35. package/dist/core-CgjUt7EV.js +0 -14
  36. package/dist/errors-0FkK6sRG.d.ts +0 -17
  37. package/dist/errors-CgCtKMy4.d.cts +0 -17
  38. package/dist/execute-context-menu-action-BO602H6y.cjs +0 -9
  39. package/dist/execute-context-menu-action-D7ikAtrw.js +0 -9
  40. package/dist/freeze-updates-CJ_92KF5.js +0 -61
  41. package/dist/freeze-updates-D_nvJFva.cjs +0 -61
  42. package/dist/renderer-BR3giix6.cjs +0 -9
  43. package/dist/renderer-DPMen-tz.js +0 -9
package/README.md CHANGED
@@ -114,72 +114,31 @@ if (process.env.NODE_ENV === "development") {
114
114
  }
115
115
  ```
116
116
 
117
- ## Plugins
117
+ ## Build your own React Grab
118
118
 
119
- Use plugins to extend React Grab's built-in UI with context menu actions, toolbar menu items, lifecycle hooks, and theme overrides.
119
+ Build a custom interface with the selection engine from `react-grab/primitives`. Use its APIs for hit testing, source context, page freezing, clipboard access, and editor navigation.
120
120
 
121
- Register a plugin using the `registerPlugin` export:
121
+ ### Customize hit testing
122
122
 
123
- ```js
124
- import { registerPlugin } from "react-grab";
123
+ Scope hit testing to a container or replace the default element filter with your own rules.
125
124
 
126
- registerPlugin({
127
- name: "my-plugin",
128
- hooks: {
129
- onElementSelect: (element) => {
130
- console.log("Selected:", element.tagName);
131
- },
132
- },
133
- });
134
- ```
135
-
136
- If writing in React, register inside a `useEffect`:
125
+ ```typescript
126
+ import { getElementAtPoint, isElementGrabbable } from "react-grab/primitives";
137
127
 
138
- ```jsx
139
- import { registerPlugin, unregisterPlugin } from "react-grab";
140
-
141
- useEffect(() => {
142
- registerPlugin({
143
- name: "my-plugin",
144
- actions: [
145
- {
146
- id: "my-action",
147
- label: "My Action",
148
- shortcut: "M",
149
- onAction: (context) => {
150
- console.log("Action on:", context.element);
151
- context.hideContextMenu();
152
- },
153
- },
154
- ],
128
+ export const getPickerTarget = (
129
+ event: PointerEvent,
130
+ appElement: Element,
131
+ toolbarElement: Element,
132
+ ): Element | null =>
133
+ getElementAtPoint(event.clientX, event.clientY, {
134
+ container: appElement,
135
+ filter: (candidate) =>
136
+ isElementGrabbable(candidate) &&
137
+ !toolbarElement.contains(candidate),
155
138
  });
156
-
157
- return () => unregisterPlugin("my-plugin");
158
- }, []);
159
- ```
160
-
161
- Actions use a `target` field to control where they appear. Omit `target` (or set `"context-menu"`) for the right-click menu, or set `"toolbar"` for the toolbar dropdown:
162
-
163
- ```js
164
- actions: [
165
- {
166
- id: "inspect",
167
- label: "Inspect",
168
- shortcut: "I",
169
- onAction: (ctx) => console.dir(ctx.element),
170
- },
171
- {
172
- id: "toggle-freeze",
173
- label: "Freeze",
174
- // Only show in the toolbar
175
- target: "toolbar",
176
- isActive: () => isFrozen,
177
- onAction: () => toggleFreeze(),
178
- },
179
- ];
180
139
  ```
181
140
 
182
- See [`packages/react-grab/src/types.ts`](https://github.com/aidenybai/react-grab/blob/main/packages/react-grab/src/types.ts) for the full `Plugin`, `PluginHooks`, and `PluginConfig` interfaces.
141
+ Add `data-react-grab-ignore` to your picker interface so hit testing skips its subtree.
183
142
 
184
143
  ## Resources & Contributing Back
185
144
 
@@ -25,6 +25,17 @@ interface Position {
25
25
  x: number;
26
26
  y: number;
27
27
  }
28
+ interface ElementAtPointOptions {
29
+ container?: Element;
30
+ filter?: (element: Element) => boolean;
31
+ }
32
+ interface ElementBounds {
33
+ x: number;
34
+ y: number;
35
+ width: number;
36
+ height: number;
37
+ borderRadius: string;
38
+ }
28
39
  type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? T[P] extends ((...args: unknown[]) => unknown) ? T[P] : DeepPartial<T[P]> : T[P] };
29
40
  interface Theme {
30
41
  /**
@@ -140,11 +151,13 @@ interface AgentContext<T = unknown> {
140
151
  sessionId?: string;
141
152
  }
142
153
  type ActivationMode = "toggle" | "hold";
143
- interface ActionContextHooks {
144
- transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
154
+ interface OpenFileActionHooks {
145
155
  onOpenFile: (filePath: string, lineNumber?: number) => boolean | void;
146
156
  transformOpenFileUrl: (url: string, filePath: string, lineNumber?: number) => string;
147
157
  }
158
+ interface ActionContextHooks extends OpenFileActionHooks {
159
+ transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
160
+ }
148
161
  interface ActionContext {
149
162
  element: Element;
150
163
  elements: Element[];
@@ -260,24 +273,24 @@ interface HierarchyState {
260
273
  activeIndex: number;
261
274
  }
262
275
  interface PluginHooks {
263
- onActivate?: () => void;
264
- onDeactivate?: () => void;
265
- onElementHover?: (element: Element) => void;
276
+ onActivate?: () => void | Promise<void>;
277
+ onDeactivate?: () => void | Promise<void>;
278
+ onElementHover?: (element: Element) => void | Promise<void>;
266
279
  onElementSelect?: (element: Element) => boolean | void | Promise<boolean>;
267
- onDragStart?: (startX: number, startY: number) => void;
268
- onDragEnd?: (elements: Element[], bounds: DragRect) => void;
280
+ onDragStart?: (startX: number, startY: number) => void | Promise<void>;
281
+ onDragEnd?: (elements: Element[], bounds: DragRect) => void | Promise<void>;
269
282
  onBeforeCopy?: (elements: Element[]) => void | Promise<void>;
270
283
  transformCopyContent?: (content: string, elements: Element[]) => string | Promise<string>;
271
- onAfterCopy?: (elements: Element[], success: boolean) => void;
272
- onCopySuccess?: (elements: Element[], content: string) => void;
273
- onCopyError?: (error: Error) => void;
274
- onStateChange?: (state: ReactGrabState) => void;
275
- onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void;
276
- onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void;
277
- onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void;
278
- onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void;
279
- onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void;
280
- onContextMenu?: (element: Element, position: Position) => void;
284
+ onAfterCopy?: (elements: Element[], success: boolean) => void | Promise<void>;
285
+ onCopySuccess?: (elements: Element[], content: string) => void | Promise<void>;
286
+ onCopyError?: (error: Error) => void | Promise<void>;
287
+ onStateChange?: (state: ReactGrabState) => void | Promise<void>;
288
+ onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void | Promise<void>;
289
+ onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void | Promise<void>;
290
+ onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void | Promise<void>;
291
+ onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void | Promise<void>;
292
+ onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void | Promise<void>;
293
+ onContextMenu?: (element: Element, position: Position) => void | Promise<void>;
281
294
  onOpenFile?: (filePath: string, lineNumber?: number) => boolean | void;
282
295
  transformHtmlContent?: (html: string, elements: Element[]) => string | Promise<string>;
283
296
  transformAgentContext?: (context: AgentContext, elements: Element[]) => AgentContext | Promise<AgentContext>;
@@ -476,6 +489,7 @@ interface ReactGrabRendererProps {
476
489
  onToggleExpand?: () => void;
477
490
  selectionLabelShakeCount?: number;
478
491
  onConfirmDismiss?: () => void;
492
+ onOpenSelectionFile?: () => void;
479
493
  discardPrompt?: SelectionDiscardPrompt;
480
494
  toolbarVisible?: boolean;
481
495
  isActive?: boolean;
@@ -768,4 +782,4 @@ interface CopyContentOptions {
768
782
  }
769
783
  declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
770
784
  //#endregion
771
- export { SourceInfo as A, PromptModeContext as C, Rect as D, ReactGrabState as E, ToolbarState as M, SelectedElementPayload as O, Position as S, ReactGrabRendererProps as T, Options as _, ActionContext as a, PluginConfig as b, AgentContext as c, DeepPartial as d, DragRect as f, GrabbedBox as g, ElementSelectedEventDetail as h, Fiber as i, Theme as j, SettableOptions as k, ContextMenuAction as l, ElementLabelVariant as m, isInstrumentationActive as n, ActionContextHooks as o, ElementLabelContext as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, OverlayBounds as v, ReactGrabAPI as w, PluginHooks as x, Plugin as y };
785
+ export { Rect as A, PluginConfig as C, ReactGrabAPI as D, PromptModeContext as E, ToolbarState as F, SettableOptions as M, SourceInfo as N, ReactGrabRendererProps as O, Theme as P, Plugin as S, Position as T, ElementSelectedEventDetail as _, ActionContext as a, Options as b, AgentContext as c, DeepPartial as d, DragRect as f, ElementLabelVariant as g, ElementLabelContext as h, Fiber as i, SelectedElementPayload as j, ReactGrabState as k, ContextMenuAction as l, ElementBounds as m, isInstrumentationActive as n, ActionContextHooks as o, ElementAtPointOptions as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, GrabbedBox as v, PluginHooks as w, OverlayBounds as x, OpenFileActionHooks as y };
@@ -25,6 +25,17 @@ interface Position {
25
25
  x: number;
26
26
  y: number;
27
27
  }
28
+ interface ElementAtPointOptions {
29
+ container?: Element;
30
+ filter?: (element: Element) => boolean;
31
+ }
32
+ interface ElementBounds {
33
+ x: number;
34
+ y: number;
35
+ width: number;
36
+ height: number;
37
+ borderRadius: string;
38
+ }
28
39
  type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? T[P] extends ((...args: unknown[]) => unknown) ? T[P] : DeepPartial<T[P]> : T[P] };
29
40
  interface Theme {
30
41
  /**
@@ -140,11 +151,13 @@ interface AgentContext<T = unknown> {
140
151
  sessionId?: string;
141
152
  }
142
153
  type ActivationMode = "toggle" | "hold";
143
- interface ActionContextHooks {
144
- transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
154
+ interface OpenFileActionHooks {
145
155
  onOpenFile: (filePath: string, lineNumber?: number) => boolean | void;
146
156
  transformOpenFileUrl: (url: string, filePath: string, lineNumber?: number) => string;
147
157
  }
158
+ interface ActionContextHooks extends OpenFileActionHooks {
159
+ transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
160
+ }
148
161
  interface ActionContext {
149
162
  element: Element;
150
163
  elements: Element[];
@@ -260,24 +273,24 @@ interface HierarchyState {
260
273
  activeIndex: number;
261
274
  }
262
275
  interface PluginHooks {
263
- onActivate?: () => void;
264
- onDeactivate?: () => void;
265
- onElementHover?: (element: Element) => void;
276
+ onActivate?: () => void | Promise<void>;
277
+ onDeactivate?: () => void | Promise<void>;
278
+ onElementHover?: (element: Element) => void | Promise<void>;
266
279
  onElementSelect?: (element: Element) => boolean | void | Promise<boolean>;
267
- onDragStart?: (startX: number, startY: number) => void;
268
- onDragEnd?: (elements: Element[], bounds: DragRect) => void;
280
+ onDragStart?: (startX: number, startY: number) => void | Promise<void>;
281
+ onDragEnd?: (elements: Element[], bounds: DragRect) => void | Promise<void>;
269
282
  onBeforeCopy?: (elements: Element[]) => void | Promise<void>;
270
283
  transformCopyContent?: (content: string, elements: Element[]) => string | Promise<string>;
271
- onAfterCopy?: (elements: Element[], success: boolean) => void;
272
- onCopySuccess?: (elements: Element[], content: string) => void;
273
- onCopyError?: (error: Error) => void;
274
- onStateChange?: (state: ReactGrabState) => void;
275
- onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void;
276
- onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void;
277
- onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void;
278
- onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void;
279
- onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void;
280
- onContextMenu?: (element: Element, position: Position) => void;
284
+ onAfterCopy?: (elements: Element[], success: boolean) => void | Promise<void>;
285
+ onCopySuccess?: (elements: Element[], content: string) => void | Promise<void>;
286
+ onCopyError?: (error: Error) => void | Promise<void>;
287
+ onStateChange?: (state: ReactGrabState) => void | Promise<void>;
288
+ onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void | Promise<void>;
289
+ onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void | Promise<void>;
290
+ onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void | Promise<void>;
291
+ onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void | Promise<void>;
292
+ onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void | Promise<void>;
293
+ onContextMenu?: (element: Element, position: Position) => void | Promise<void>;
281
294
  onOpenFile?: (filePath: string, lineNumber?: number) => boolean | void;
282
295
  transformHtmlContent?: (html: string, elements: Element[]) => string | Promise<string>;
283
296
  transformAgentContext?: (context: AgentContext, elements: Element[]) => AgentContext | Promise<AgentContext>;
@@ -476,6 +489,7 @@ interface ReactGrabRendererProps {
476
489
  onToggleExpand?: () => void;
477
490
  selectionLabelShakeCount?: number;
478
491
  onConfirmDismiss?: () => void;
492
+ onOpenSelectionFile?: () => void;
479
493
  discardPrompt?: SelectionDiscardPrompt;
480
494
  toolbarVisible?: boolean;
481
495
  isActive?: boolean;
@@ -768,4 +782,4 @@ interface CopyContentOptions {
768
782
  }
769
783
  declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
770
784
  //#endregion
771
- export { SourceInfo as A, PromptModeContext as C, Rect as D, ReactGrabState as E, ToolbarState as M, SelectedElementPayload as O, Position as S, ReactGrabRendererProps as T, Options as _, ActionContext as a, PluginConfig as b, AgentContext as c, DeepPartial as d, DragRect as f, GrabbedBox as g, ElementSelectedEventDetail as h, Fiber as i, Theme as j, SettableOptions as k, ContextMenuAction as l, ElementLabelVariant as m, isInstrumentationActive as n, ActionContextHooks as o, ElementLabelContext as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, OverlayBounds as v, ReactGrabAPI as w, PluginHooks as x, Plugin as y };
785
+ export { Rect as A, PluginConfig as C, ReactGrabAPI as D, PromptModeContext as E, ToolbarState as F, SettableOptions as M, SourceInfo as N, ReactGrabRendererProps as O, Theme as P, Plugin as S, Position as T, ElementSelectedEventDetail as _, ActionContext as a, Options as b, AgentContext as c, DeepPartial as d, DragRect as f, ElementLabelVariant as g, ElementLabelContext as h, Fiber as i, SelectedElementPayload as j, ReactGrabState as k, ContextMenuAction as l, ElementBounds as m, isInstrumentationActive as n, ActionContextHooks as o, ElementAtPointOptions as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, GrabbedBox as v, PluginHooks as w, OverlayBounds as x, OpenFileActionHooks as y };
@@ -6,4 +6,4 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../core-B-v0HAqX.cjs`),t=require(`../freeze-updates-D_nvJFva.cjs`),n=require(`../copy-content-DYW9C_RD.cjs`);exports.DEFAULT_THEME=e.a,exports.copyContent=n.t,exports.formatElementInfo=n.n,exports.generateSnippet=e.n,exports.getStack=n.o,exports.init=e.t,exports.isInstrumentationActive=t.G;
9
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../core-Bj2-aiid.cjs`),t=require(`../freeze-updates-BRtdRZ8H.cjs`),n=require(`../open-file-DN9JigiU.cjs`);exports.DEFAULT_THEME=e.l,exports.copyContent=n.n,exports.formatElementInfo=n.r,exports.generateSnippet=e.n,exports.getStack=n.s,exports.init=e.t,exports.isInstrumentationActive=t.U;
@@ -6,6 +6,6 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- import { A as SourceInfo, T as ReactGrabRendererProps, _ as Options, a as ActionContext, b as PluginConfig, c as AgentContext, k as SettableOptions, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, v as OverlayBounds, w as ReactGrabAPI, x as PluginHooks, y as Plugin } from "../copy-content-lXPMxPt1.cjs";
10
- import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-Dvl3pv9l.cjs";
9
+ import { C as PluginConfig, D as ReactGrabAPI, M as SettableOptions, N as SourceInfo, O as ReactGrabRendererProps, S as Plugin, a as ActionContext, b as Options, c as AgentContext, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, w as PluginHooks, x as OverlayBounds } from "../copy-content-CtYUWe5l.cjs";
10
+ import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-BgTe-uWs.cjs";
11
11
  export { ActionContext, AgentContext, ContextMenuAction, DEFAULT_THEME, Options, OverlayBounds, Plugin, PluginConfig, PluginHooks, ReactGrabAPI, ReactGrabRendererProps, SettableOptions, SourceInfo, copyContent, formatElementInfo, generateSnippet, getStack, init, isInstrumentationActive };
@@ -6,6 +6,6 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- import { A as SourceInfo, T as ReactGrabRendererProps, _ as Options, a as ActionContext, b as PluginConfig, c as AgentContext, k as SettableOptions, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, v as OverlayBounds, w as ReactGrabAPI, x as PluginHooks, y as Plugin } from "../copy-content-CJ_7MSY-.js";
10
- import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-j4NFBY6x.js";
9
+ import { C as PluginConfig, D as ReactGrabAPI, M as SettableOptions, N as SourceInfo, O as ReactGrabRendererProps, S as Plugin, a as ActionContext, b as Options, c as AgentContext, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, w as PluginHooks, x as OverlayBounds } from "../copy-content-CNRKFr6F.js";
10
+ import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-CdWMNcJF.js";
11
11
  export { ActionContext, AgentContext, ContextMenuAction, DEFAULT_THEME, Options, OverlayBounds, Plugin, PluginConfig, PluginHooks, ReactGrabAPI, ReactGrabRendererProps, SettableOptions, SourceInfo, copyContent, formatElementInfo, generateSnippet, getStack, init, isInstrumentationActive };
@@ -6,4 +6,4 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- import{a as e,n as t,t as n}from"../core-CgjUt7EV.js";import{G as r}from"../freeze-updates-CJ_92KF5.js";import{n as i,o as a,t as o}from"../copy-content-D1qnwKTs.js";export{e as DEFAULT_THEME,o as copyContent,i as formatElementInfo,t as generateSnippet,a as getStack,n as init,r as isInstrumentationActive};
9
+ import{l as e,n as t,t as n}from"../core-BGWz5Xdb.js";import{U as r}from"../freeze-updates-B9IyvOJE.js";import{n as i,r as a,s as o}from"../open-file-C9XvlQp8.js";export{e as DEFAULT_THEME,i as copyContent,a as formatElementInfo,t as generateSnippet,o as getStack,n as init,r as isInstrumentationActive};