@refinedev/devtools 2.0.2 → 2.0.4

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.
package/dist/index.cjs CHANGED
@@ -1,5 +1,404 @@
1
1
  "use client"
2
- var se=Object.create;var C=Object.defineProperty;var ae=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,pe=Object.prototype.hasOwnProperty;var me=(e,t)=>{for(var r in t)C(e,r,{get:t[r],enumerable:!0})},U=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ce(t))!pe.call(e,i)&&i!==r&&C(e,i,{get:()=>t[i],enumerable:!(o=ae(t,i))||o.enumerable});return e};var g=(e,t,r)=>(r=e!=null?se(de(e)):{},U(t||!e||!e.__esModule?C(r,"default",{value:e,enumerable:!0}):r,e)),ue=e=>U(C({},"__esModule",{value:!0}),e);var Me={};me(Me,{DevtoolsPanel:()=>oe,DevtoolsProvider:()=>le});module.exports=ue(Me);var u=g(require("react"));var F=g(require("react"));var D=g(require("react"));var S=g(require("react")),k=require("@refinedev/devtools-shared");var f=require("@aliemir/dom-to-fiber-utils"),he=e=>e?e.child:null,fe=e=>{let t=e;for(;t;){let r=(0,f.getElementFromFiber)(t);if(r&&r instanceof HTMLElement)return r;t=he(t)}return null},ge=e=>{let t=e;for(;t;){let r=(0,f.getElementFromFiber)(t);if(r&&r instanceof HTMLElement)return r;t=(0,f.getParentOfFiber)(t)}return null},xe=e=>{let t=fe(e);return t?[t,"child"]:(t=ge(e),t?[t,"parent"]:[document.body,"body"])},Ee=(e,t)=>{let r=e,o=null,i=null,n=!1;for(;!n&&r;)o=(0,f.getFirstFiberHasName)(r),i=(0,f.getFirstStateNodeFiber)(o),n=t.includes((0,f.getNameFromFiber)(o)??""),n||(r=(0,f.getParentOfFiber)(r));return i&&o?{stateNode:i,nameFiber:o}:{stateNode:null,nameFiber:null}},z=e=>e.filter(t=>t.element.offsetWidth>0&&t.element.offsetHeight>0),Z=e=>{let t=[];return e.forEach(r=>{t.find(i=>i.element===r.element&&i.name===r.name)||t.push(r)}),t},L=(e,t)=>{var n;if(!e)return[];let r=[],o=(0,f.getFiberFromElement)(e),i=Ee(o,t);if(i.nameFiber){let[s]=xe(i.nameFiber),c=(0,f.getNameFromFiber)(i.nameFiber);s&&c&&r.push({element:s,name:c})}for(let s=0;s<(((n=e==null?void 0:e.children)==null?void 0:n.length)??0);s++)r.push(...L(e.children[s],t));return r};var W=e=>{let{httpUrl:t}=S.default.useContext(k.DevToolsContext),[r,o]=S.default.useState([]),i=S.default.useCallback(async()=>(await(await fetch(`${t}/api/unique-trace-items`)).json()).data,[t]),n=S.default.useCallback(async()=>{let s=await i(),c=L(document.body,s),a=z(c),d=Z(a);o(d)},[i]);return S.default.useEffect(()=>{e&&n()},[e,n]),{selectableElements:r}};var Y=g(require("react")),_=({children:e})=>(Y.default.useEffect(()=>{let t=document.createElement("style");return t.innerHTML=e,document.head.appendChild(t),()=>{document.head.removeChild(t)}},[e]),null);var h=g(require("react")),A=g(require("lodash/debounce")),K=require("react-dom");var T=g(require("react")),$=e=>T.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 16 16",fill:"none",...e},T.default.createElement("path",{fill:"#0FBDBD",fillRule:"evenodd",d:"M9 1a1 1 0 0 0-2 0v2.1A5.006 5.006 0 0 0 3.1 7H1a1 1 0 0 0 0 2h2.1A5.006 5.006 0 0 0 7 12.9V15a1 1 0 1 0 2 0v-2.1A5.006 5.006 0 0 0 12.9 9H15a1 1 0 1 0 0-2h-2.1A5.006 5.006 0 0 0 9 3.1V1Zm2 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0Z",clipRule:"evenodd"})),G=e=>T.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 16 16",fill:"none",...e},T.default.createElement("path",{fill:"#14141F",fillRule:"evenodd",d:"M9 1a1 1 0 0 0-2 0v2.1A5.006 5.006 0 0 0 3.1 7H1a1 1 0 0 0 0 2h2.1A5.006 5.006 0 0 0 7 12.9V15a1 1 0 1 0 2 0v-2.1A5.006 5.006 0 0 0 12.9 9H15a1 1 0 1 0 0-2h-2.1A5.006 5.006 0 0 0 9 3.1V1Zm2 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0Z",clipRule:"evenodd"}));var I=22,X=(e,t)=>{let{top:r,left:o,width:i,height:n}=e.getBoundingClientRect(),{scrollLeft:s,scrollTop:c}=t.documentElement,a=o+s-Math.max(0,I-i)/2,d=r+c-Math.max(0,I-n)/2;return{left:a,top:d,width:Math.max(I,i),height:Math.max(I,n)}},ve=({element:e,name:t,onSelect:r})=>{let[o]=h.default.useState(()=>X(e,document)),i=h.default.useRef(null);h.default.useEffect(()=>{let s=(0,A.default)(()=>{var d;let a=X(e,document);["left","top","width","height"].forEach(E=>{var l;(l=i.current)==null||l.style.setProperty(E,`${a[E]}px`)}),(d=i.current)==null||d.style.setProperty("opacity","1")},200,{leading:!1,trailing:!0}),c=(0,A.default)(()=>{var a;(a=i.current)==null||a.style.setProperty("opacity","0")},200,{leading:!0,trailing:!1});return document.addEventListener("scroll",s),document.addEventListener("scroll",c),()=>{document.removeEventListener("scroll",s),document.removeEventListener("scroll",c)}},[e]);let n=h.default.useMemo(()=>{let s={width:22,height:22},c=t.length*7.5,a={width:s.width+c,height:s.height},d=4;return o.top-a.height>0&&o.left+a.width<window.innerWidth&&o.width>a.width?{left:d/2,top:a.height*-1-d}:o.height>=a.height*1.5&&o.width>=a.width*1.5?{left:0+d,top:0+d}:o.left-a.width>0?{right:o.width+d,top:0-1}:o.left+o.width+a.width<window.innerWidth?{left:o.width+d,top:0-1}:o.top+o.height+a.height<document.documentElement.scrollHeight?{left:0-1,top:o.height+d}:{left:0,top:0}},[o,t.length]);return h.default.createElement("button",{type:"button",className:"selector-xray-box",onClick:s=>{s==null||s.preventDefault(),s==null||s.stopPropagation(),r(t)},ref:i,style:{position:"absolute",...o}},h.default.createElement("div",{style:{position:"absolute",...n},className:"selector-xray-info"},h.default.createElement("span",{className:"selector-xray-info-icon"},h.default.createElement(G,{width:12,height:12,style:{pointerEvents:"none"}})),h.default.createElement("span",{className:"selector-xray-info-title"},` ${t}`)))},j=({elements:e,onSelect:t})=>{let[r,o]=h.default.useState(null);return h.default.useEffect(()=>{if(!r){let i=document.createElement("div");return i.id="selector-box-root",document.body.appendChild(i),o(i),()=>{document.body.removeChild(i),o(null)}}return()=>0},[]),r?h.default.createElement(h.default.Fragment,null,(0,K.createPortal)(e.map((i,n)=>h.default.createElement(ve,{key:`selector-element-${n}-${i.name}`,...i,onSelect:t})),r),h.default.createElement(_,null,`
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ DevtoolsPanel: () => DevtoolsPanel,
34
+ DevtoolsProvider: () => DevtoolsProvider
35
+ });
36
+ module.exports = __toCommonJS(src_exports);
37
+
38
+ // src/panel.tsx
39
+ var import_react9 = __toESM(require("react"));
40
+
41
+ // src/components/devtools-pin.tsx
42
+ var import_react6 = __toESM(require("react"));
43
+
44
+ // src/components/devtools-selector.tsx
45
+ var import_react5 = __toESM(require("react"));
46
+
47
+ // src/utilities/use-selector.tsx
48
+ var import_react = __toESM(require("react"));
49
+ var import_devtools_shared = require("@refinedev/devtools-shared");
50
+
51
+ // src/utilities/selector-helpers.ts
52
+ var import_dom_to_fiber_utils = require("@aliemir/dom-to-fiber-utils");
53
+ var getChildOfFiber = (fiber) => {
54
+ if (!fiber) {
55
+ return null;
56
+ }
57
+ return fiber.child;
58
+ };
59
+ var getFirstHTMLElementFromFiberByChild = (fiber) => {
60
+ let child = fiber;
61
+ while (child) {
62
+ const element = (0, import_dom_to_fiber_utils.getElementFromFiber)(child);
63
+ if (element && element instanceof HTMLElement) {
64
+ return element;
65
+ }
66
+ child = getChildOfFiber(child);
67
+ }
68
+ return null;
69
+ };
70
+ var getFirstHTMLElementFromFiberByParent = (fiber) => {
71
+ let parent = fiber;
72
+ while (parent) {
73
+ const element = (0, import_dom_to_fiber_utils.getElementFromFiber)(parent);
74
+ if (element && element instanceof HTMLElement) {
75
+ return element;
76
+ }
77
+ parent = (0, import_dom_to_fiber_utils.getParentOfFiber)(parent);
78
+ }
79
+ return null;
80
+ };
81
+ var getFirstHTMLElementFromFiber = (fiber) => {
82
+ let element = getFirstHTMLElementFromFiberByChild(fiber);
83
+ if (element) {
84
+ return [element, "child"];
85
+ }
86
+ element = getFirstHTMLElementFromFiberByParent(fiber);
87
+ if (element) {
88
+ return [element, "parent"];
89
+ }
90
+ return [document.body, "body"];
91
+ };
92
+ var selectFiber = (start, activeTraceItems) => {
93
+ let fiber = start;
94
+ let firstParentOfNodeWithName = null;
95
+ let fiberWithStateNode = null;
96
+ let acceptedName = false;
97
+ while (!acceptedName && fiber) {
98
+ firstParentOfNodeWithName = (0, import_dom_to_fiber_utils.getFirstFiberHasName)(fiber);
99
+ fiberWithStateNode = (0, import_dom_to_fiber_utils.getFirstStateNodeFiber)(firstParentOfNodeWithName);
100
+ acceptedName = activeTraceItems.includes(
101
+ (0, import_dom_to_fiber_utils.getNameFromFiber)(firstParentOfNodeWithName) ?? ""
102
+ );
103
+ if (!acceptedName) {
104
+ fiber = (0, import_dom_to_fiber_utils.getParentOfFiber)(fiber);
105
+ }
106
+ }
107
+ if (fiberWithStateNode && firstParentOfNodeWithName) {
108
+ return {
109
+ stateNode: fiberWithStateNode,
110
+ nameFiber: firstParentOfNodeWithName
111
+ };
112
+ }
113
+ return {
114
+ stateNode: null,
115
+ nameFiber: null
116
+ };
117
+ };
118
+ var filterInvisibleNodes = (nodes) => {
119
+ return nodes.filter(
120
+ (item) => item.element.offsetWidth > 0 && item.element.offsetHeight > 0
121
+ );
122
+ };
123
+ var getUniqueNodes = (nodes) => {
124
+ const uniques = [];
125
+ nodes.forEach((node) => {
126
+ const isElementExist = uniques.find(
127
+ (item) => item.element === node.element && item.name === node.name
128
+ );
129
+ if (!isElementExist) {
130
+ uniques.push(node);
131
+ }
132
+ });
133
+ return uniques;
134
+ };
135
+ var traverseDom = (node, activeTraceItems) => {
136
+ var _a;
137
+ if (!node) {
138
+ return [];
139
+ }
140
+ const items = [];
141
+ const fiber = (0, import_dom_to_fiber_utils.getFiberFromElement)(node);
142
+ const targetFiber = selectFiber(fiber, activeTraceItems);
143
+ if (targetFiber.nameFiber) {
144
+ const [element] = getFirstHTMLElementFromFiber(targetFiber.nameFiber);
145
+ const name = (0, import_dom_to_fiber_utils.getNameFromFiber)(targetFiber.nameFiber);
146
+ if (element && name) {
147
+ items.push({
148
+ element,
149
+ name
150
+ });
151
+ }
152
+ }
153
+ for (let i = 0; i < (((_a = node == null ? void 0 : node.children) == null ? void 0 : _a.length) ?? 0); i++) {
154
+ items.push(
155
+ ...traverseDom(node.children[i], activeTraceItems)
156
+ );
157
+ }
158
+ return items;
159
+ };
160
+
161
+ // src/utilities/use-selector.tsx
162
+ var useSelector = (active) => {
163
+ const { httpUrl } = import_react.default.useContext(import_devtools_shared.DevToolsContext);
164
+ const [selectableElements, setSelectableElements] = import_react.default.useState([]);
165
+ const fetchTraceItems = import_react.default.useCallback(async () => {
166
+ const response = await fetch(`${httpUrl}/api/unique-trace-items`);
167
+ const data = await response.json();
168
+ return data.data;
169
+ }, [httpUrl]);
170
+ const prepareSelector = import_react.default.useCallback(async () => {
171
+ const fetchedTraceItems = await fetchTraceItems();
172
+ const traversedNodes = traverseDom(document.body, fetchedTraceItems);
173
+ const filterInvisible = filterInvisibleNodes(traversedNodes);
174
+ const uniqueNodes = getUniqueNodes(filterInvisible);
175
+ setSelectableElements(uniqueNodes);
176
+ }, [fetchTraceItems]);
177
+ import_react.default.useEffect(() => {
178
+ if (active) {
179
+ prepareSelector();
180
+ }
181
+ }, [active, prepareSelector]);
182
+ return {
183
+ selectableElements
184
+ };
185
+ };
186
+
187
+ // src/components/apply-styles.tsx
188
+ var import_react2 = __toESM(require("react"));
189
+ var ApplyStyles = ({ children }) => {
190
+ import_react2.default.useEffect(() => {
191
+ const element = document.createElement("style");
192
+ element.innerHTML = children;
193
+ document.head.appendChild(element);
194
+ return () => {
195
+ document.head.removeChild(element);
196
+ };
197
+ }, [children]);
198
+ return null;
199
+ };
200
+
201
+ // src/components/selectable-elements.tsx
202
+ var import_react4 = __toESM(require("react"));
203
+ var import_debounce = __toESM(require("lodash/debounce"));
204
+ var import_react_dom = require("react-dom");
205
+
206
+ // src/components/icons/selector-button.tsx
207
+ var import_react3 = __toESM(require("react"));
208
+ var SelectorButtonIcon = (props) => /* @__PURE__ */ import_react3.default.createElement(
209
+ "svg",
210
+ {
211
+ xmlns: "http://www.w3.org/2000/svg",
212
+ width: 16,
213
+ height: 16,
214
+ viewBox: "0 0 16 16",
215
+ fill: "none",
216
+ ...props
217
+ },
218
+ /* @__PURE__ */ import_react3.default.createElement(
219
+ "path",
220
+ {
221
+ fill: "#0FBDBD",
222
+ fillRule: "evenodd",
223
+ d: "M9 1a1 1 0 0 0-2 0v2.1A5.006 5.006 0 0 0 3.1 7H1a1 1 0 0 0 0 2h2.1A5.006 5.006 0 0 0 7 12.9V15a1 1 0 1 0 2 0v-2.1A5.006 5.006 0 0 0 12.9 9H15a1 1 0 1 0 0-2h-2.1A5.006 5.006 0 0 0 9 3.1V1Zm2 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0Z",
224
+ clipRule: "evenodd"
225
+ }
226
+ )
227
+ );
228
+ var SelectorIcon = (props) => /* @__PURE__ */ import_react3.default.createElement(
229
+ "svg",
230
+ {
231
+ xmlns: "http://www.w3.org/2000/svg",
232
+ width: 16,
233
+ height: 16,
234
+ viewBox: "0 0 16 16",
235
+ fill: "none",
236
+ ...props
237
+ },
238
+ /* @__PURE__ */ import_react3.default.createElement(
239
+ "path",
240
+ {
241
+ fill: "#14141F",
242
+ fillRule: "evenodd",
243
+ d: "M9 1a1 1 0 0 0-2 0v2.1A5.006 5.006 0 0 0 3.1 7H1a1 1 0 0 0 0 2h2.1A5.006 5.006 0 0 0 7 12.9V15a1 1 0 1 0 2 0v-2.1A5.006 5.006 0 0 0 12.9 9H15a1 1 0 1 0 0-2h-2.1A5.006 5.006 0 0 0 9 3.1V1Zm2 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0Z",
244
+ clipRule: "evenodd"
245
+ }
246
+ )
247
+ );
248
+
249
+ // src/components/selectable-elements.tsx
250
+ var MIN_SIZE = 22;
251
+ var getPosition = (element, document2) => {
252
+ const { top, left, width, height } = element.getBoundingClientRect();
253
+ const { scrollLeft, scrollTop } = document2.documentElement;
254
+ const positionLeft = left + scrollLeft - Math.max(0, MIN_SIZE - width) / 2;
255
+ const positionTop = top + scrollTop - Math.max(0, MIN_SIZE - height) / 2;
256
+ return {
257
+ left: positionLeft,
258
+ top: positionTop,
259
+ width: Math.max(MIN_SIZE, width),
260
+ height: Math.max(MIN_SIZE, height)
261
+ };
262
+ };
263
+ var SelectableElement = ({
264
+ element,
265
+ name,
266
+ onSelect
267
+ }) => {
268
+ const [position] = import_react4.default.useState(() => getPosition(element, document));
269
+ const elementRef = import_react4.default.useRef(null);
270
+ import_react4.default.useEffect(() => {
271
+ const onScroll = (0, import_debounce.default)(
272
+ () => {
273
+ var _a;
274
+ const nextPos = getPosition(element, document);
275
+ ["left", "top", "width", "height"].forEach((prop) => {
276
+ var _a2;
277
+ (_a2 = elementRef.current) == null ? void 0 : _a2.style.setProperty(prop, `${nextPos[prop]}px`);
278
+ });
279
+ (_a = elementRef.current) == null ? void 0 : _a.style.setProperty("opacity", "1");
280
+ },
281
+ 200,
282
+ {
283
+ leading: false,
284
+ trailing: true
285
+ }
286
+ );
287
+ const opacityOnScroll = (0, import_debounce.default)(
288
+ () => {
289
+ var _a;
290
+ (_a = elementRef.current) == null ? void 0 : _a.style.setProperty("opacity", "0");
291
+ },
292
+ 200,
293
+ {
294
+ leading: true,
295
+ trailing: false
296
+ }
297
+ );
298
+ document.addEventListener("scroll", onScroll);
299
+ document.addEventListener("scroll", opacityOnScroll);
300
+ return () => {
301
+ document.removeEventListener("scroll", onScroll);
302
+ document.removeEventListener("scroll", opacityOnScroll);
303
+ };
304
+ }, [element]);
305
+ const placement = import_react4.default.useMemo(() => {
306
+ const tooltipBaseSize = { width: 22, height: 22 };
307
+ const nameWidth = name.length * 7.5;
308
+ const tooltipSize = {
309
+ width: tooltipBaseSize.width + nameWidth,
310
+ height: tooltipBaseSize.height
311
+ };
312
+ const gap = 4;
313
+ if (position.top - tooltipSize.height > 0 && position.left + tooltipSize.width < window.innerWidth && position.width > tooltipSize.width) {
314
+ return { left: gap / 2, top: tooltipSize.height * -1 - gap };
315
+ }
316
+ if (position.height >= tooltipSize.height * 1.5 && position.width >= tooltipSize.width * 1.5) {
317
+ return { left: 0 + gap, top: 0 + gap };
318
+ }
319
+ if (position.left - tooltipSize.width > 0) {
320
+ return { right: position.width + gap, top: 0 - 1 };
321
+ }
322
+ if (position.left + position.width + tooltipSize.width < window.innerWidth) {
323
+ return { left: position.width + gap, top: 0 - 1 };
324
+ }
325
+ if (position.top + position.height + tooltipSize.height < document.documentElement.scrollHeight) {
326
+ return { left: 0 - 1, top: position.height + gap };
327
+ }
328
+ return { left: 0, top: 0 };
329
+ }, [position, name.length]);
330
+ return /* @__PURE__ */ import_react4.default.createElement(
331
+ "button",
332
+ {
333
+ type: "button",
334
+ className: "selector-xray-box",
335
+ onClick: (event) => {
336
+ event == null ? void 0 : event.preventDefault();
337
+ event == null ? void 0 : event.stopPropagation();
338
+ onSelect(name);
339
+ },
340
+ ref: elementRef,
341
+ style: {
342
+ position: "absolute",
343
+ ...position
344
+ }
345
+ },
346
+ /* @__PURE__ */ import_react4.default.createElement(
347
+ "div",
348
+ {
349
+ style: {
350
+ position: "absolute",
351
+ ...placement
352
+ },
353
+ className: "selector-xray-info"
354
+ },
355
+ /* @__PURE__ */ import_react4.default.createElement("span", { className: "selector-xray-info-icon" }, /* @__PURE__ */ import_react4.default.createElement(
356
+ SelectorIcon,
357
+ {
358
+ width: 12,
359
+ height: 12,
360
+ style: { pointerEvents: "none" }
361
+ }
362
+ )),
363
+ /* @__PURE__ */ import_react4.default.createElement("span", { className: "selector-xray-info-title" }, ` ${name}`)
364
+ )
365
+ );
366
+ };
367
+ var SelectableElements = ({
368
+ elements,
369
+ onSelect
370
+ }) => {
371
+ const [selectorBoxRoot, setSelectorBoxRoot] = import_react4.default.useState(null);
372
+ import_react4.default.useEffect(() => {
373
+ if (!selectorBoxRoot) {
374
+ const element = document.createElement("div");
375
+ element.id = "selector-box-root";
376
+ document.body.appendChild(element);
377
+ setSelectorBoxRoot(element);
378
+ return () => {
379
+ document.body.removeChild(element);
380
+ setSelectorBoxRoot(null);
381
+ };
382
+ }
383
+ return () => 0;
384
+ }, []);
385
+ if (!selectorBoxRoot)
386
+ return null;
387
+ return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, (0, import_react_dom.createPortal)(
388
+ elements.map((element, idx) => /* @__PURE__ */ import_react4.default.createElement(
389
+ SelectableElement,
390
+ {
391
+ key: `selector-element-${idx}-${element.name}`,
392
+ ...element,
393
+ onSelect
394
+ }
395
+ )),
396
+ selectorBoxRoot
397
+ ), /* @__PURE__ */ import_react4.default.createElement(
398
+ ApplyStyles,
399
+ null,
400
+ /* css */
401
+ `
3
402
  .selector-xray-box {
4
403
  display: flex;
5
404
  margin: 0;
@@ -58,7 +457,43 @@ var se=Object.create;var C=Object.defineProperty;var ae=Object.getOwnPropertyDes
58
457
  .selector-xray-box:hover .selector-xray-info-title {
59
458
  z-index: 90;
60
459
  }
61
- `)):null};var q=({active:e,setActive:t,onHighlight:r,icon:o,style:i})=>{let{selectableElements:n}=W(e);return D.default.createElement("div",{style:i},D.default.createElement("div",{role:"button",title:"Element Selector",className:"refine-devtools-selector-button",onClick:c=>{var a;c.preventDefault(),c.stopPropagation(),(a=document==null?void 0:document.activeElement)==null||a.blur(),t(d=>!d)}},o),e&&D.default.createElement(j,{elements:n,onSelect:c=>{r(c),t(!1)}}),D.default.createElement(_,null,`
460
+ `
461
+ ));
462
+ };
463
+
464
+ // src/components/devtools-selector.tsx
465
+ var DevtoolsSelector = ({
466
+ active,
467
+ setActive,
468
+ onHighlight,
469
+ icon,
470
+ style
471
+ }) => {
472
+ const { selectableElements } = useSelector(active);
473
+ const onSelect = (name) => {
474
+ onHighlight(name);
475
+ setActive(false);
476
+ };
477
+ return /* @__PURE__ */ import_react5.default.createElement("div", { style }, /* @__PURE__ */ import_react5.default.createElement(
478
+ "div",
479
+ {
480
+ role: "button",
481
+ title: "Element Selector",
482
+ className: "refine-devtools-selector-button",
483
+ onClick: (event) => {
484
+ var _a;
485
+ event.preventDefault();
486
+ event.stopPropagation();
487
+ (_a = document == null ? void 0 : document.activeElement) == null ? void 0 : _a.blur();
488
+ setActive((active2) => !active2);
489
+ }
490
+ },
491
+ icon
492
+ ), active && /* @__PURE__ */ import_react5.default.createElement(SelectableElements, { elements: selectableElements, onSelect }), /* @__PURE__ */ import_react5.default.createElement(
493
+ ApplyStyles,
494
+ null,
495
+ /* css */
496
+ `
62
497
  .refine-devtools-selector-button {
63
498
  padding: 0;
64
499
  margin: 0;
@@ -72,7 +507,85 @@ var se=Object.create;var C=Object.defineProperty;var ae=Object.getOwnPropertyDes
72
507
  .refine-devtools-selector-button:hover {
73
508
  transform: rotate(180deg);
74
509
  }
75
- `))};var b=g(require("react")),J=e=>b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:157,height:25,viewBox:"0 0 157 25",fill:"none",...e},b.createElement("g",null,b.createElement("path",{fill:"#1D1E30",d:"M17 1h123v24H17z"}),b.createElement("path",{fill:"#1D1E30",d:"M6.265 9.205A12 12 0 0 1 17.649 1H25v24H1L6.265 9.205ZM150.735 9.205A12 12 0 0 0 139.351 1H132v24h24l-5.265-15.795Z"}),b.createElement("path",{fill:"currentColor",d:"M25 14.333A1.333 1.333 0 1 1 25 17a1.333 1.333 0 0 1 0-2.667Z"}),b.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M23.211 20.578a4 4 0 0 0 3.578 0l4-2A4 4 0 0 0 33 15v-4a4 4 0 0 0-2.211-3.578l-4-2a4 4 0 0 0-3.578 0l-4 2A4 4 0 0 0 17 11v4a4 4 0 0 0 2.211 3.578l4 2Zm-.878-4.911a2.667 2.667 0 0 0 5.334 0v-5.334a2.667 2.667 0 0 0-5.334 0v5.334Z",clipRule:"evenodd"}),b.createElement("path",{fill:"#CFD7E2",d:"M42.152 17a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h4.2c.288 0 .56.056.816.168a2.135 2.135 0 0 1 1.14 1.128c.112.256.168.532.168.828v3.984c0 .296-.056.572-.168.828a2.135 2.135 0 0 1-1.14 1.128 2.014 2.014 0 0 1-.816.168h-4.2Zm1.38-1.644h2.82a.455.455 0 0 0 .336-.132.497.497 0 0 0 .132-.348v-3.984a.455.455 0 0 0-.132-.336.436.436 0 0 0-.336-.144h-2.82v4.944Zm13.18-5.196a.244.244 0 0 1-.253.252h-4.44v1.656h4.02c.072 0 .132.024.18.072a.227.227 0 0 1 .084.18v1.128a.264.264 0 0 1-.084.192.244.244 0 0 1-.18.072h-4.02v1.644h4.44c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.116a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072h-5.832a.244.244 0 0 1-.18-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.227.227 0 0 1 .18-.084h5.832c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.128ZM63.014 17h-2.232a.387.387 0 0 1-.216-.072.356.356 0 0 1-.144-.168l-1.716-4.296a.853.853 0 0 1-.072-.24 1.783 1.783 0 0 1-.024-.264V9.032c0-.072.024-.132.072-.18a.227.227 0 0 1 .18-.084h1.128c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v2.616c0 .072.008.156.024.252s.04.176.072.24l1.284 3.216h.528l1.284-3.216a.853.853 0 0 0 .072-.24c.016-.096.024-.18.024-.252V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.128c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v2.928c0 .072-.008.16-.024.264a.853.853 0 0 1-.072.24l-1.716 4.296a.356.356 0 0 1-.144.168.387.387 0 0 1-.216.072ZM73.29 8.768c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v1.128a.227.227 0 0 1-.084.18.244.244 0 0 1-.18.072h-2.208v6.324a.264.264 0 0 1-.084.192.244.244 0 0 1-.18.072H69.69a.244.244 0 0 1-.18-.072.287.287 0 0 1-.072-.192v-6.324H67.23a.287.287 0 0 1-.192-.072.244.244 0 0 1-.072-.18V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h6.06Zm6.507.012c.296 0 .572.056.828.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v3.996c0 .288-.056.56-.168.816a2.171 2.171 0 0 1-1.128 1.128 2.043 2.043 0 0 1-.828.168h-2.34c-.296 0-.572-.056-.828-.168a2.171 2.171 0 0 1-1.128-1.128 2.014 2.014 0 0 1-.168-.816v-3.996c0-.288.056-.56.168-.816a2.171 2.171 0 0 1 1.128-1.128c.256-.112.532-.168.828-.168h2.34Zm.48 2.112a.436.436 0 0 0-.144-.336.455.455 0 0 0-.336-.132h-2.34a.497.497 0 0 0-.348.132.455.455 0 0 0-.132.336v3.996c0 .136.044.248.132.336a.497.497 0 0 0 .348.132h2.34a.455.455 0 0 0 .336-.132.436.436 0 0 0 .144-.336v-3.996Zm7.888-2.112c.295 0 .572.056.828.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v3.996c0 .288-.056.56-.168.816a2.171 2.171 0 0 1-1.128 1.128 2.043 2.043 0 0 1-.828.168h-2.34c-.297 0-.573-.056-.829-.168a2.171 2.171 0 0 1-1.127-1.128 2.014 2.014 0 0 1-.168-.816v-3.996c0-.288.056-.56.168-.816a2.171 2.171 0 0 1 1.127-1.128c.257-.112.532-.168.829-.168h2.34Zm.48 2.112a.436.436 0 0 0-.144-.336.455.455 0 0 0-.337-.132h-2.34a.497.497 0 0 0-.347.132.455.455 0 0 0-.133.336v3.996c0 .136.044.248.133.336a.497.497 0 0 0 .347.132h2.34a.455.455 0 0 0 .337-.132.436.436 0 0 0 .143-.336v-3.996ZM98.294 17H92.68a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.116c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v6.324h4.236c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.116a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072Zm7.336-5.76a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192v-.084a.455.455 0 0 0-.132-.336.436.436 0 0 0-.336-.144h-2.352a.46.46 0 0 0-.336.144.455.455 0 0 0-.132.336v.696c0 .136.044.252.132.348a.482.482 0 0 0 .336.132h2.352c.288 0 .56.056.816.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v.696c0 .296-.056.572-.168.828a2.171 2.171 0 0 1-1.128 1.128 2.014 2.014 0 0 1-.816.168h-2.352c-.288 0-.56-.056-.816-.168a2.171 2.171 0 0 1-1.128-1.128 2.043 2.043 0 0 1-.168-.828v-.084c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.116c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v.084c0 .136.044.252.132.348a.482.482 0 0 0 .336.132h2.352a.455.455 0 0 0 .336-.132.497.497 0 0 0 .132-.348v-.696a.455.455 0 0 0-.132-.336.455.455 0 0 0-.336-.132h-2.352c-.288 0-.56-.056-.816-.168a2.171 2.171 0 0 1-1.128-1.128 2.099 2.099 0 0 1-.168-.828v-.696c0-.296.056-.572.168-.828a2.171 2.171 0 0 1 1.128-1.128c.256-.112.528-.168.816-.168h2.352c.288 0 .56.056.816.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.532.168.828v.084a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072h-1.128Z"})));var Q=({onClick:e,onSelectorHighlight:t,selectorActive:r,setSelectorActive:o})=>F.default.createElement("div",{role:"button",className:"devtools-selector-pin-box",onClick:e},F.default.createElement(J,null),F.default.createElement(q,{style:{position:"absolute",top:5,right:18,width:"16px",height:"16px"},icon:F.default.createElement($,{width:16,height:16,style:{pointerEvents:"none"}}),onHighlight:t,active:r,setActive:o}),F.default.createElement(_,null,`
510
+ `
511
+ ));
512
+ };
513
+
514
+ // src/components/icons/devtools-icon.tsx
515
+ var React6 = __toESM(require("react"));
516
+ var DevtoolsIcon = (props) => /* @__PURE__ */ React6.createElement(
517
+ "svg",
518
+ {
519
+ xmlns: "http://www.w3.org/2000/svg",
520
+ width: 157,
521
+ height: 25,
522
+ viewBox: "0 0 157 25",
523
+ fill: "none",
524
+ ...props
525
+ },
526
+ /* @__PURE__ */ React6.createElement("g", null, /* @__PURE__ */ React6.createElement("path", { fill: "#1D1E30", d: "M17 1h123v24H17z" }), /* @__PURE__ */ React6.createElement(
527
+ "path",
528
+ {
529
+ fill: "#1D1E30",
530
+ d: "M6.265 9.205A12 12 0 0 1 17.649 1H25v24H1L6.265 9.205ZM150.735 9.205A12 12 0 0 0 139.351 1H132v24h24l-5.265-15.795Z"
531
+ }
532
+ ), /* @__PURE__ */ React6.createElement(
533
+ "path",
534
+ {
535
+ fill: "currentColor",
536
+ d: "M25 14.333A1.333 1.333 0 1 1 25 17a1.333 1.333 0 0 1 0-2.667Z"
537
+ }
538
+ ), /* @__PURE__ */ React6.createElement(
539
+ "path",
540
+ {
541
+ fill: "currentColor",
542
+ fillRule: "evenodd",
543
+ d: "M23.211 20.578a4 4 0 0 0 3.578 0l4-2A4 4 0 0 0 33 15v-4a4 4 0 0 0-2.211-3.578l-4-2a4 4 0 0 0-3.578 0l-4 2A4 4 0 0 0 17 11v4a4 4 0 0 0 2.211 3.578l4 2Zm-.878-4.911a2.667 2.667 0 0 0 5.334 0v-5.334a2.667 2.667 0 0 0-5.334 0v5.334Z",
544
+ clipRule: "evenodd"
545
+ }
546
+ ), /* @__PURE__ */ React6.createElement(
547
+ "path",
548
+ {
549
+ fill: "#CFD7E2",
550
+ d: "M42.152 17a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h4.2c.288 0 .56.056.816.168a2.135 2.135 0 0 1 1.14 1.128c.112.256.168.532.168.828v3.984c0 .296-.056.572-.168.828a2.135 2.135 0 0 1-1.14 1.128 2.014 2.014 0 0 1-.816.168h-4.2Zm1.38-1.644h2.82a.455.455 0 0 0 .336-.132.497.497 0 0 0 .132-.348v-3.984a.455.455 0 0 0-.132-.336.436.436 0 0 0-.336-.144h-2.82v4.944Zm13.18-5.196a.244.244 0 0 1-.253.252h-4.44v1.656h4.02c.072 0 .132.024.18.072a.227.227 0 0 1 .084.18v1.128a.264.264 0 0 1-.084.192.244.244 0 0 1-.18.072h-4.02v1.644h4.44c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.116a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072h-5.832a.244.244 0 0 1-.18-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.227.227 0 0 1 .18-.084h5.832c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.128ZM63.014 17h-2.232a.387.387 0 0 1-.216-.072.356.356 0 0 1-.144-.168l-1.716-4.296a.853.853 0 0 1-.072-.24 1.783 1.783 0 0 1-.024-.264V9.032c0-.072.024-.132.072-.18a.227.227 0 0 1 .18-.084h1.128c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v2.616c0 .072.008.156.024.252s.04.176.072.24l1.284 3.216h.528l1.284-3.216a.853.853 0 0 0 .072-.24c.016-.096.024-.18.024-.252V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.128c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v2.928c0 .072-.008.16-.024.264a.853.853 0 0 1-.072.24l-1.716 4.296a.356.356 0 0 1-.144.168.387.387 0 0 1-.216.072ZM73.29 8.768c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v1.128a.227.227 0 0 1-.084.18.244.244 0 0 1-.18.072h-2.208v6.324a.264.264 0 0 1-.084.192.244.244 0 0 1-.18.072H69.69a.244.244 0 0 1-.18-.072.287.287 0 0 1-.072-.192v-6.324H67.23a.287.287 0 0 1-.192-.072.244.244 0 0 1-.072-.18V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h6.06Zm6.507.012c.296 0 .572.056.828.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v3.996c0 .288-.056.56-.168.816a2.171 2.171 0 0 1-1.128 1.128 2.043 2.043 0 0 1-.828.168h-2.34c-.296 0-.572-.056-.828-.168a2.171 2.171 0 0 1-1.128-1.128 2.014 2.014 0 0 1-.168-.816v-3.996c0-.288.056-.56.168-.816a2.171 2.171 0 0 1 1.128-1.128c.256-.112.532-.168.828-.168h2.34Zm.48 2.112a.436.436 0 0 0-.144-.336.455.455 0 0 0-.336-.132h-2.34a.497.497 0 0 0-.348.132.455.455 0 0 0-.132.336v3.996c0 .136.044.248.132.336a.497.497 0 0 0 .348.132h2.34a.455.455 0 0 0 .336-.132.436.436 0 0 0 .144-.336v-3.996Zm7.888-2.112c.295 0 .572.056.828.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v3.996c0 .288-.056.56-.168.816a2.171 2.171 0 0 1-1.128 1.128 2.043 2.043 0 0 1-.828.168h-2.34c-.297 0-.573-.056-.829-.168a2.171 2.171 0 0 1-1.127-1.128 2.014 2.014 0 0 1-.168-.816v-3.996c0-.288.056-.56.168-.816a2.171 2.171 0 0 1 1.127-1.128c.257-.112.532-.168.829-.168h2.34Zm.48 2.112a.436.436 0 0 0-.144-.336.455.455 0 0 0-.337-.132h-2.34a.497.497 0 0 0-.347.132.455.455 0 0 0-.133.336v3.996c0 .136.044.248.133.336a.497.497 0 0 0 .347.132h2.34a.455.455 0 0 0 .337-.132.436.436 0 0 0 .143-.336v-3.996ZM98.294 17H92.68a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192V9.032c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.116c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v6.324h4.236c.072 0 .132.028.18.084a.244.244 0 0 1 .072.18v1.116a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072Zm7.336-5.76a.287.287 0 0 1-.192-.072.287.287 0 0 1-.072-.192v-.084a.455.455 0 0 0-.132-.336.436.436 0 0 0-.336-.144h-2.352a.46.46 0 0 0-.336.144.455.455 0 0 0-.132.336v.696c0 .136.044.252.132.348a.482.482 0 0 0 .336.132h2.352c.288 0 .56.056.816.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.528.168.816v.696c0 .296-.056.572-.168.828a2.171 2.171 0 0 1-1.128 1.128 2.014 2.014 0 0 1-.816.168h-2.352c-.288 0-.56-.056-.816-.168a2.171 2.171 0 0 1-1.128-1.128 2.043 2.043 0 0 1-.168-.828v-.084c0-.072.024-.132.072-.18a.264.264 0 0 1 .192-.084h1.116c.072 0 .132.028.18.084a.227.227 0 0 1 .084.18v.084c0 .136.044.252.132.348a.482.482 0 0 0 .336.132h2.352a.455.455 0 0 0 .336-.132.497.497 0 0 0 .132-.348v-.696a.455.455 0 0 0-.132-.336.455.455 0 0 0-.336-.132h-2.352c-.288 0-.56-.056-.816-.168a2.171 2.171 0 0 1-1.128-1.128 2.099 2.099 0 0 1-.168-.828v-.696c0-.296.056-.572.168-.828a2.171 2.171 0 0 1 1.128-1.128c.256-.112.528-.168.816-.168h2.352c.288 0 .56.056.816.168a2.171 2.171 0 0 1 1.128 1.128c.112.256.168.532.168.828v.084a.287.287 0 0 1-.072.192.244.244 0 0 1-.18.072h-1.128Z"
551
+ }
552
+ ))
553
+ );
554
+
555
+ // src/components/devtools-pin.tsx
556
+ var DevtoolsPin = ({
557
+ onClick,
558
+ onSelectorHighlight,
559
+ selectorActive,
560
+ setSelectorActive
561
+ }) => {
562
+ return /* @__PURE__ */ import_react6.default.createElement("div", { role: "button", className: "devtools-selector-pin-box", onClick }, /* @__PURE__ */ import_react6.default.createElement(DevtoolsIcon, null), /* @__PURE__ */ import_react6.default.createElement(
563
+ DevtoolsSelector,
564
+ {
565
+ style: {
566
+ position: "absolute",
567
+ top: 5,
568
+ right: 18,
569
+ width: "16px",
570
+ height: "16px"
571
+ },
572
+ icon: /* @__PURE__ */ import_react6.default.createElement(
573
+ SelectorButtonIcon,
574
+ {
575
+ width: 16,
576
+ height: 16,
577
+ style: { pointerEvents: "none" }
578
+ }
579
+ ),
580
+ onHighlight: onSelectorHighlight,
581
+ active: selectorActive,
582
+ setActive: setSelectorActive
583
+ }
584
+ ), /* @__PURE__ */ import_react6.default.createElement(
585
+ ApplyStyles,
586
+ null,
587
+ /* css */
588
+ `
76
589
  .devtools-selector-pin-box {
77
590
  z-index: 9999;
78
591
  position: relative;
@@ -95,18 +608,514 @@ var se=Object.create;var C=Object.defineProperty;var ae=Object.getOwnPropertyDes
95
608
  .devtools-selector-pin-box:hover {
96
609
  color: #0FBDBD;
97
610
  }
98
- `));var m=g(require("react"));var ee=e=>e?"scaleX(1) translateY(0)":"scaleX(0) translateY(25vw)";var be=()=>typeof window<"u"?window.innerWidth*.7:1007.9999999999999,we=()=>typeof window<"u"?window.innerHeight*.7:630;var N=e=>{switch(e){case"left":return{left:"calc(50px + 10px)",top:"50%",transform:"translateY(-50%)"};case"right":return{right:"calc(50px + 10px)",top:"50%",transform:"translateY(-50%)"};case"top":return{left:"50%",top:"calc(50px + 10px)",transform:"translateX(-50%)"};case"bottom":return{left:"50%",bottom:"calc(50px + 10px)",transform:"translateX(-50%)"}}},O=e=>{switch(e){case"left":case"right":return-70+(typeof window<"u"?window.innerWidth:1440)-10;case"top":case"bottom":return-10+(typeof window<"u"?window.innerWidth:1440)-10}},V=e=>{switch(e){case"left":case"right":return-10+(typeof window<"u"?window.innerHeight:900)-10;case"top":case"bottom":return-70+(typeof window<"u"?window.innerHeight:900)-10}},B=(e,t)=>{let r={width:be(),height:we()},o=O(e),i=V(e),n=Math.min(o,(t??r).width),s=Math.min(i,(t??r).height);return{width:n,height:s}},w=e=>{let t=Math.round(e);return t%2===0?t:t+1};var y=g(require("react")),H=e=>y.default.createElement("svg",{width:10,height:26,viewBox:"0 0 10 26",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},y.default.createElement("rect",{x:.5,y:.5,width:9,height:25,rx:4.5,fill:"#1D1E30"}),y.default.createElement("path",{d:"M7 5C7 6.10457 6.10457 7 5 7C3.89543 7 3 6.10457 3 5C3 3.89543 3.89543 3 5 3C6.10457 3 7 3.89543 7 5Z",fill:"#303450"}),y.default.createElement("path",{d:"M7 13C7 14.1046 6.10457 15 5 15C3.89543 15 3 14.1046 3 13C3 11.8954 3.89543 11 5 11C6.10457 11 7 11.8954 7 13Z",fill:"#303450"}),y.default.createElement("path",{d:"M7 21C7 22.1046 6.10457 23 5 23C3.89543 23 3 22.1046 3 21C3 19.8954 3.89543 19 5 19C6.10457 19 7 19.8954 7 21Z",fill:"#303450"}),y.default.createElement("rect",{x:.5,y:.5,width:9,height:25,rx:4.5,stroke:"#303450"}));var te=({placement:e,visible:t,children:r})=>{let[o,i]=m.default.useState(!1),[n,s]=m.default.useState(null),[c,a]=m.default.useState(null),[d,E]=m.default.useState(()=>{let l=B(e);return{width:w(l.width),height:w(l.height)}});return m.default.useEffect(()=>{let l=()=>{E(v=>{let x=B(e,v);return{width:w(x.width),height:w(x.height)}})};return l(),window.addEventListener("resize",l),()=>{window.removeEventListener("resize",l)}},[e]),m.default.useEffect(()=>{let l=()=>{s(null)};if(n!==null)return window.addEventListener("mouseup",l),()=>{window.removeEventListener("mouseup",l)}},[n]),m.default.useEffect(()=>{let l=document.body.style.cursor;return n!=null&&n.includes("x")?document.body.style.cursor="col-resize":n!=null&&n.includes("y")&&(document.body.style.cursor="row-resize"),()=>{document.body.style.cursor=l}},[n]),m.default.useEffect(()=>{let l=v=>{if((n==null?void 0:n[1])==="x"){let x=v.clientX-((c==null?void 0:c.x)??v.clientX),p=d.width+(n==="lx"?-x:x)*2;E(M=>({...M,width:w(Math.min(O(e),Math.max(640,p)))}))}else if((n==null?void 0:n[1])==="y"){let x=v.clientY-((c==null?void 0:c.y)??v.clientY),p=d.height+(n==="ty"?-x:x)*1;E(M=>({...M,height:w(Math.min(V(e),Math.max(360,p)))}))}};if(n!==null)return window.addEventListener("mousemove",l),()=>{window.removeEventListener("mousemove",l)}},[n,e]),m.default.createElement("div",{style:{position:"absolute",borderRadius:"8px",boxShadow:"0 0 10px rgba(0, 0, 0, 0.5)",border:"1px solid rgba(0, 0, 0, 0.5)",transitionProperty:"transform, opacity",transitionTimingFunction:"ease-in-out",transitionDuration:"0.2s",...N(e),opacity:t?1:0,transform:`${N(e).transform} ${ee(t??!1)}`,...d},onMouseEnter:()=>{i(!0)},onMouseLeave:()=>{i(!1)}},r({resizing:n}),m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{style:{position:"absolute",left:0,top:"50%",width:"10px",height:"26px",transform:"translateY(-13px) translateX(-5px)",cursor:"col-resize",transition:"opacity ease-in-out 0.2s",pointerEvents:o||n?"auto":"none",opacity:o||n?1:0},onMouseDown:l=>{s("lx"),a({x:l.clientX,y:l.clientY}),l.preventDefault()}},m.default.createElement(H,null)),m.default.createElement("div",{style:{position:"absolute",right:0,top:"50%",width:"10px",height:"26px",transform:"translateY(-13px) translateX(5px)",cursor:"col-resize",transition:"opacity ease-in-out 0.2s",pointerEvents:o||n?"auto":"none",opacity:o||n?1:0},onMouseDown:l=>{s("rx"),a({x:l.clientX,y:l.clientY}),l.preventDefault()}},m.default.createElement(H,null)),m.default.createElement("div",{style:{position:"absolute",left:"50%",top:0,width:"26px",height:"10px",transform:"translateY(-5px) translateX(-13px)",cursor:"row-resize",transition:"opacity ease-in-out 0.2s",pointerEvents:o||n?"auto":"none",opacity:o||n?1:0},onMouseDown:l=>{s("ty"),a({x:l.clientX,y:l.clientY}),l.preventDefault()}},m.default.createElement(H,{style:{transform:"rotate(90deg)",transformOrigin:"13px 13px"}})),m.default.createElement("div",{style:{position:"absolute",left:"50%",bottom:0,width:"26px",height:"10px",transform:"translateY(5px) translateX(-13px)",cursor:"row-resize",transition:"opacity ease-in-out 0.2s",pointerEvents:o||n?"auto":"none",opacity:o||n?1:0},onMouseDown:l=>{s("by"),a({x:l.clientX,y:l.clientY}),l.preventDefault()}},m.default.createElement(H,{style:{transform:"rotate(90deg)",transformOrigin:"13px 13px"}}))))};var P=require("@refinedev/devtools-shared"),_e=1500,oe=process.env.NODE_ENV!=="development"?()=>null:()=>{let[e,t]=u.default.useState(!1),[r,o]=u.default.useState(!1),[i]=u.default.useState("bottom"),{httpUrl:n,ws:s}=u.default.useContext(P.DevToolsContext),[c,a]=u.default.useState(0),[d,E]=u.default.useState(!1),[l,v]=u.default.useState("loading"),x=u.default.useCallback(p=>{s&&(0,P.send)(s,P.DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR,{name:p}),o(!0)},[s]);return u.default.useEffect(()=>{d&&o(!1)},[d]),u.default.useEffect(()=>{typeof window<"u"&&t(!0)},[]),u.default.useEffect(()=>{if(e){a(window.innerWidth);let p=()=>{a(window.innerWidth)};return window.addEventListener("resize",p),()=>{window.removeEventListener("resize",p)}}return()=>{}},[e]),u.default.useEffect(()=>{if(l!=="loaded"){let p=M=>{M.data.type==="refine-devtools-iframe-loaded"&&v("loaded")};return window.addEventListener("message",p),()=>{window.removeEventListener("message",p)}}return()=>0},[]),u.default.useEffect(()=>{let p;return l==="loading"&&(p=window.setTimeout(()=>{v("failed"),p&&clearInterval(p)},_e)),()=>{typeof p<"u"&&clearInterval(p)}},[l]),e?u.default.createElement("div",{style:{position:"fixed",left:`${Math.round(c/2)}px`,transform:"translateX(-50%)",bottom:0,zIndex:99999}},u.default.createElement(Q,{onClick:()=>{o(p=>!p),E(!1)},onSelectorHighlight:x,selectorActive:d,setSelectorActive:E}),u.default.createElement(te,{visible:r,placement:i},({resizing:p})=>u.default.createElement("iframe",{allow:"clipboard-write;",src:n,srcDoc:n?l==="failed"?Pe:void 0:Fe,style:{width:"100%",height:"100%",border:"none",borderRadius:"7px",pointerEvents:p?"none":"auto",background:"#14141F"}}))):null},Fe=`
611
+ `
612
+ ));
613
+ };
614
+
615
+ // src/components/resizable-pane.tsx
616
+ var import_react8 = __toESM(require("react"));
617
+
618
+ // src/utilities/index.ts
619
+ var getPanelToggleTransforms = (visible) => {
620
+ return visible ? "scaleX(1) translateY(0)" : "scaleX(0) translateY(25vw)";
621
+ };
622
+ var SIZE = 50;
623
+ var BUFFER = 10;
624
+ var PREFERRED_DEFAULT_WIDTH = () => typeof window !== "undefined" ? window.innerWidth * 0.7 : 1440 * 0.7;
625
+ var PREFERRED_DEFAULT_HEIGHT = () => typeof window !== "undefined" ? window.innerHeight * 0.7 : 900 * 0.7;
626
+ var MIN_PANEL_WIDTH = 640;
627
+ var MIN_PANEL_HEIGHT = 360;
628
+ var getPanelPosition = (placement) => {
629
+ switch (placement) {
630
+ case "left":
631
+ return {
632
+ left: `calc(${SIZE}px + ${BUFFER}px)`,
633
+ top: "50%",
634
+ transform: "translateY(-50%)"
635
+ };
636
+ case "right":
637
+ return {
638
+ right: `calc(${SIZE}px + ${BUFFER}px)`,
639
+ top: "50%",
640
+ transform: "translateY(-50%)"
641
+ };
642
+ case "top":
643
+ return {
644
+ left: "50%",
645
+ top: `calc(${SIZE}px + ${BUFFER}px)`,
646
+ transform: "translateX(-50%)"
647
+ };
648
+ case "bottom":
649
+ return {
650
+ left: "50%",
651
+ bottom: `calc(${SIZE}px + ${BUFFER}px)`,
652
+ transform: "translateX(-50%)"
653
+ };
654
+ }
655
+ };
656
+ var getMaxPanelWidth = (placement) => {
657
+ switch (placement) {
658
+ case "left":
659
+ case "right":
660
+ return -BUFFER - SIZE - BUFFER + (typeof window !== "undefined" ? window.innerWidth : 1440) - BUFFER;
661
+ case "top":
662
+ case "bottom":
663
+ return -BUFFER + (typeof window !== "undefined" ? window.innerWidth : 1440) - BUFFER;
664
+ }
665
+ };
666
+ var getMaxPanelHeight = (placement) => {
667
+ switch (placement) {
668
+ case "left":
669
+ case "right":
670
+ return -BUFFER + (typeof window !== "undefined" ? window.innerHeight : 900) - BUFFER;
671
+ case "top":
672
+ case "bottom":
673
+ return -BUFFER - SIZE - BUFFER + (typeof window !== "undefined" ? window.innerHeight : 900) - BUFFER;
674
+ }
675
+ };
676
+ var getDefaultPanelSize = (placement, preferredSize) => {
677
+ const defaultPreferred = {
678
+ width: PREFERRED_DEFAULT_WIDTH(),
679
+ height: PREFERRED_DEFAULT_HEIGHT()
680
+ };
681
+ const maxPanelWidth = getMaxPanelWidth(placement);
682
+ const maxPanelHeight = getMaxPanelHeight(placement);
683
+ const width = Math.min(
684
+ maxPanelWidth,
685
+ (preferredSize ?? defaultPreferred).width
686
+ );
687
+ const height = Math.min(
688
+ maxPanelHeight,
689
+ (preferredSize ?? defaultPreferred).height
690
+ );
691
+ return {
692
+ width,
693
+ height
694
+ };
695
+ };
696
+ var roundToEven = (num) => {
697
+ const rounded = Math.round(num);
698
+ return rounded % 2 === 0 ? rounded : rounded + 1;
699
+ };
700
+
701
+ // src/components/icons/resize-handle-icon.tsx
702
+ var import_react7 = __toESM(require("react"));
703
+ var ResizeHandleIcon = (props) => /* @__PURE__ */ import_react7.default.createElement(
704
+ "svg",
705
+ {
706
+ width: 10,
707
+ height: 26,
708
+ viewBox: "0 0 10 26",
709
+ fill: "none",
710
+ xmlns: "http://www.w3.org/2000/svg",
711
+ ...props
712
+ },
713
+ /* @__PURE__ */ import_react7.default.createElement("rect", { x: 0.5, y: 0.5, width: 9, height: 25, rx: 4.5, fill: "#1D1E30" }),
714
+ /* @__PURE__ */ import_react7.default.createElement(
715
+ "path",
716
+ {
717
+ d: "M7 5C7 6.10457 6.10457 7 5 7C3.89543 7 3 6.10457 3 5C3 3.89543 3.89543 3 5 3C6.10457 3 7 3.89543 7 5Z",
718
+ fill: "#303450"
719
+ }
720
+ ),
721
+ /* @__PURE__ */ import_react7.default.createElement(
722
+ "path",
723
+ {
724
+ d: "M7 13C7 14.1046 6.10457 15 5 15C3.89543 15 3 14.1046 3 13C3 11.8954 3.89543 11 5 11C6.10457 11 7 11.8954 7 13Z",
725
+ fill: "#303450"
726
+ }
727
+ ),
728
+ /* @__PURE__ */ import_react7.default.createElement(
729
+ "path",
730
+ {
731
+ d: "M7 21C7 22.1046 6.10457 23 5 23C3.89543 23 3 22.1046 3 21C3 19.8954 3.89543 19 5 19C6.10457 19 7 19.8954 7 21Z",
732
+ fill: "#303450"
733
+ }
734
+ ),
735
+ /* @__PURE__ */ import_react7.default.createElement("rect", { x: 0.5, y: 0.5, width: 9, height: 25, rx: 4.5, stroke: "#303450" })
736
+ );
737
+
738
+ // src/components/resizable-pane.tsx
739
+ var ResizablePane = ({ placement, visible, children }) => {
740
+ const [hover, setHover] = import_react8.default.useState(false);
741
+ const [resizing, setResizing] = import_react8.default.useState(null);
742
+ const [resizePosition, setResizePosition] = import_react8.default.useState(null);
743
+ const [panelSize, setPanelSize] = import_react8.default.useState(() => {
744
+ const defaultSize = getDefaultPanelSize(placement);
745
+ return {
746
+ width: roundToEven(defaultSize.width),
747
+ height: roundToEven(defaultSize.height)
748
+ };
749
+ });
750
+ import_react8.default.useEffect(() => {
751
+ const handleResize = () => {
752
+ setPanelSize((p) => {
753
+ const defaultSize = getDefaultPanelSize(placement, p);
754
+ return {
755
+ width: roundToEven(defaultSize.width),
756
+ height: roundToEven(defaultSize.height)
757
+ };
758
+ });
759
+ };
760
+ handleResize();
761
+ window.addEventListener("resize", handleResize);
762
+ return () => {
763
+ window.removeEventListener("resize", handleResize);
764
+ };
765
+ }, [placement]);
766
+ import_react8.default.useEffect(() => {
767
+ const handleMouseUp = () => {
768
+ setResizing(null);
769
+ };
770
+ if (resizing !== null) {
771
+ window.addEventListener("mouseup", handleMouseUp);
772
+ return () => {
773
+ window.removeEventListener("mouseup", handleMouseUp);
774
+ };
775
+ }
776
+ return;
777
+ }, [resizing]);
778
+ import_react8.default.useEffect(() => {
779
+ const currentCursor = document.body.style.cursor;
780
+ if (resizing == null ? void 0 : resizing.includes("x")) {
781
+ document.body.style.cursor = "col-resize";
782
+ } else if (resizing == null ? void 0 : resizing.includes("y")) {
783
+ document.body.style.cursor = "row-resize";
784
+ }
785
+ return () => {
786
+ document.body.style.cursor = currentCursor;
787
+ };
788
+ }, [resizing]);
789
+ import_react8.default.useEffect(() => {
790
+ const handleMouseMove = (e) => {
791
+ if ((resizing == null ? void 0 : resizing[1]) === "x") {
792
+ const diff = e.clientX - ((resizePosition == null ? void 0 : resizePosition.x) ?? e.clientX);
793
+ const newWidth = panelSize.width + (resizing === "lx" ? -diff : diff) * 2;
794
+ setPanelSize((p) => ({
795
+ ...p,
796
+ width: roundToEven(
797
+ Math.min(
798
+ getMaxPanelWidth(placement),
799
+ Math.max(MIN_PANEL_WIDTH, newWidth)
800
+ )
801
+ )
802
+ }));
803
+ } else if ((resizing == null ? void 0 : resizing[1]) === "y") {
804
+ const diff = e.clientY - ((resizePosition == null ? void 0 : resizePosition.y) ?? e.clientY);
805
+ const newHeight = panelSize.height + (resizing === "ty" ? -diff : diff) * 1;
806
+ setPanelSize((p) => ({
807
+ ...p,
808
+ height: roundToEven(
809
+ Math.min(
810
+ getMaxPanelHeight(placement),
811
+ Math.max(MIN_PANEL_HEIGHT, newHeight)
812
+ )
813
+ )
814
+ }));
815
+ }
816
+ };
817
+ if (resizing !== null) {
818
+ window.addEventListener("mousemove", handleMouseMove);
819
+ return () => {
820
+ window.removeEventListener("mousemove", handleMouseMove);
821
+ };
822
+ }
823
+ return;
824
+ }, [resizing, placement]);
825
+ return /* @__PURE__ */ import_react8.default.createElement(
826
+ "div",
827
+ {
828
+ style: {
829
+ position: "absolute",
830
+ borderRadius: "8px",
831
+ boxShadow: "0 0 10px rgba(0, 0, 0, 0.5)",
832
+ border: "1px solid rgba(0, 0, 0, 0.5)",
833
+ transitionProperty: "transform, opacity",
834
+ transitionTimingFunction: "ease-in-out",
835
+ transitionDuration: "0.2s",
836
+ ...getPanelPosition(placement),
837
+ opacity: visible ? 1 : 0,
838
+ transform: `${getPanelPosition(placement).transform} ${getPanelToggleTransforms(visible ?? false)}`,
839
+ ...panelSize
840
+ },
841
+ onMouseEnter: () => {
842
+ setHover(true);
843
+ },
844
+ onMouseLeave: () => {
845
+ setHover(false);
846
+ }
847
+ },
848
+ children({ resizing }),
849
+ /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, /* @__PURE__ */ import_react8.default.createElement(
850
+ "div",
851
+ {
852
+ style: {
853
+ position: "absolute",
854
+ left: 0,
855
+ top: "50%",
856
+ width: "10px",
857
+ height: "26px",
858
+ transform: "translateY(-13px) translateX(-5px)",
859
+ cursor: "col-resize",
860
+ transition: "opacity ease-in-out 0.2s",
861
+ pointerEvents: hover || resizing ? "auto" : "none",
862
+ opacity: hover || resizing ? 1 : 0
863
+ },
864
+ onMouseDown: (event) => {
865
+ setResizing("lx");
866
+ setResizePosition({
867
+ x: event.clientX,
868
+ y: event.clientY
869
+ });
870
+ event.preventDefault();
871
+ }
872
+ },
873
+ /* @__PURE__ */ import_react8.default.createElement(ResizeHandleIcon, null)
874
+ ), /* @__PURE__ */ import_react8.default.createElement(
875
+ "div",
876
+ {
877
+ style: {
878
+ position: "absolute",
879
+ right: 0,
880
+ top: "50%",
881
+ width: "10px",
882
+ height: "26px",
883
+ transform: "translateY(-13px) translateX(5px)",
884
+ cursor: "col-resize",
885
+ transition: "opacity ease-in-out 0.2s",
886
+ pointerEvents: hover || resizing ? "auto" : "none",
887
+ opacity: hover || resizing ? 1 : 0
888
+ },
889
+ onMouseDown: (event) => {
890
+ setResizing("rx");
891
+ setResizePosition({
892
+ x: event.clientX,
893
+ y: event.clientY
894
+ });
895
+ event.preventDefault();
896
+ }
897
+ },
898
+ /* @__PURE__ */ import_react8.default.createElement(ResizeHandleIcon, null)
899
+ ), /* @__PURE__ */ import_react8.default.createElement(
900
+ "div",
901
+ {
902
+ style: {
903
+ position: "absolute",
904
+ left: "50%",
905
+ top: 0,
906
+ width: "26px",
907
+ height: "10px",
908
+ transform: "translateY(-5px) translateX(-13px)",
909
+ cursor: "row-resize",
910
+ transition: "opacity ease-in-out 0.2s",
911
+ pointerEvents: hover || resizing ? "auto" : "none",
912
+ opacity: hover || resizing ? 1 : 0
913
+ },
914
+ onMouseDown: (event) => {
915
+ setResizing("ty");
916
+ setResizePosition({
917
+ x: event.clientX,
918
+ y: event.clientY
919
+ });
920
+ event.preventDefault();
921
+ }
922
+ },
923
+ /* @__PURE__ */ import_react8.default.createElement(
924
+ ResizeHandleIcon,
925
+ {
926
+ style: {
927
+ transform: "rotate(90deg)",
928
+ transformOrigin: "13px 13px"
929
+ }
930
+ }
931
+ )
932
+ ), /* @__PURE__ */ import_react8.default.createElement(
933
+ "div",
934
+ {
935
+ style: {
936
+ position: "absolute",
937
+ left: "50%",
938
+ bottom: 0,
939
+ width: "26px",
940
+ height: "10px",
941
+ transform: "translateY(5px) translateX(-13px)",
942
+ cursor: "row-resize",
943
+ transition: "opacity ease-in-out 0.2s",
944
+ pointerEvents: hover || resizing ? "auto" : "none",
945
+ opacity: hover || resizing ? 1 : 0
946
+ },
947
+ onMouseDown: (event) => {
948
+ setResizing("by");
949
+ setResizePosition({
950
+ x: event.clientX,
951
+ y: event.clientY
952
+ });
953
+ event.preventDefault();
954
+ }
955
+ },
956
+ /* @__PURE__ */ import_react8.default.createElement(
957
+ ResizeHandleIcon,
958
+ {
959
+ style: {
960
+ transform: "rotate(90deg)",
961
+ transformOrigin: "13px 13px"
962
+ }
963
+ }
964
+ )
965
+ ))
966
+ );
967
+ };
968
+
969
+ // src/panel.tsx
970
+ var import_devtools_shared2 = require("@refinedev/devtools-shared");
971
+ var MAX_IFRAME_WAIT_TIME = 1500;
972
+ var DevtoolsPanel = process.env.NODE_ENV !== "development" ? () => null : () => {
973
+ const [browser, setBrowser] = import_react9.default.useState(false);
974
+ const [visible, setVisible] = import_react9.default.useState(false);
975
+ const [placement] = import_react9.default.useState("bottom");
976
+ const { httpUrl, ws } = import_react9.default.useContext(import_devtools_shared2.DevToolsContext);
977
+ const [width, setWidth] = import_react9.default.useState(0);
978
+ const [selectorActive, setSelectorActive] = import_react9.default.useState(false);
979
+ const [iframeStatus, setIframeStatus] = import_react9.default.useState("loading");
980
+ const onSelectorHighlight = import_react9.default.useCallback(
981
+ (name) => {
982
+ if (ws) {
983
+ (0, import_devtools_shared2.send)(ws, import_devtools_shared2.DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR, {
984
+ name
985
+ });
986
+ }
987
+ setVisible(true);
988
+ },
989
+ [ws]
990
+ );
991
+ import_react9.default.useEffect(() => {
992
+ if (selectorActive) {
993
+ setVisible(false);
994
+ }
995
+ }, [selectorActive]);
996
+ import_react9.default.useEffect(() => {
997
+ if (typeof window !== "undefined") {
998
+ setBrowser(true);
999
+ }
1000
+ }, []);
1001
+ import_react9.default.useEffect(() => {
1002
+ if (browser) {
1003
+ setWidth(window.innerWidth);
1004
+ const onResize = () => {
1005
+ setWidth(window.innerWidth);
1006
+ };
1007
+ window.addEventListener("resize", onResize);
1008
+ return () => {
1009
+ window.removeEventListener("resize", onResize);
1010
+ };
1011
+ }
1012
+ return () => void 0;
1013
+ }, [browser]);
1014
+ import_react9.default.useEffect(() => {
1015
+ if (iframeStatus !== "loaded") {
1016
+ const onMessage = (event) => {
1017
+ if (event.data.type === "refine-devtools-iframe-loaded") {
1018
+ setIframeStatus("loaded");
1019
+ }
1020
+ };
1021
+ window.addEventListener("message", onMessage);
1022
+ return () => {
1023
+ window.removeEventListener("message", onMessage);
1024
+ };
1025
+ }
1026
+ return () => 0;
1027
+ }, []);
1028
+ import_react9.default.useEffect(() => {
1029
+ let timeout;
1030
+ if (iframeStatus === "loading") {
1031
+ timeout = window.setTimeout(() => {
1032
+ setIframeStatus("failed");
1033
+ if (timeout) {
1034
+ clearInterval(timeout);
1035
+ }
1036
+ }, MAX_IFRAME_WAIT_TIME);
1037
+ }
1038
+ return () => {
1039
+ if (typeof timeout !== "undefined") {
1040
+ clearInterval(timeout);
1041
+ }
1042
+ };
1043
+ }, [iframeStatus]);
1044
+ if (!browser) {
1045
+ return null;
1046
+ }
1047
+ return /* @__PURE__ */ import_react9.default.createElement(
1048
+ "div",
1049
+ {
1050
+ style: {
1051
+ position: "fixed",
1052
+ left: `${Math.round(width / 2)}px`,
1053
+ transform: "translateX(-50%)",
1054
+ bottom: 0,
1055
+ zIndex: 99999
1056
+ }
1057
+ },
1058
+ /* @__PURE__ */ import_react9.default.createElement(
1059
+ DevtoolsPin,
1060
+ {
1061
+ onClick: () => {
1062
+ setVisible((v) => !v);
1063
+ setSelectorActive(false);
1064
+ },
1065
+ onSelectorHighlight,
1066
+ selectorActive,
1067
+ setSelectorActive
1068
+ }
1069
+ ),
1070
+ /* @__PURE__ */ import_react9.default.createElement(ResizablePane, { visible, placement }, ({ resizing }) => /* @__PURE__ */ import_react9.default.createElement(
1071
+ "iframe",
1072
+ {
1073
+ allow: "clipboard-write;",
1074
+ src: httpUrl,
1075
+ srcDoc: httpUrl ? iframeStatus === "failed" ? failedConnectionContent : void 0 : missingUrlContent,
1076
+ style: {
1077
+ width: "100%",
1078
+ height: "100%",
1079
+ border: "none",
1080
+ borderRadius: "7px",
1081
+ pointerEvents: resizing ? "none" : "auto",
1082
+ background: "#14141F"
1083
+ }
1084
+ }
1085
+ ))
1086
+ );
1087
+ };
1088
+ var missingUrlContent = `
99
1089
  <html style="height:100%;padding:0;margin:0;background:#14141F;">
100
1090
  <body style="background:#14141F;display:flex;justify-content:center;height:100%;padding:24px;margin:0;align-items:center;box-sizing:border-box;">
101
1091
  <h1 style="font-family:ui-monospace,monospace;font-weight:400;color:#CFD7E2;text-align:center;font-size:24px;">Could not connect to the devtools server.</h1>
102
1092
  </body>
103
1093
  </html>
104
- `,Pe=`
1094
+ `;
1095
+ var failedConnectionContent = `
105
1096
  <html style="height:100%;padding:0;margin:0;background:#14141F;">
106
1097
  <body style="background:#14141F;display:flex;flex-direction:column;justify-content:center;height:100%;padding:24px;margin:0;align-items:center;box-sizing:border-box;">
107
1098
  <h1 style="max-width:480px;min-width:480px;font-family:ui-monospace,monospace;font-weight:400;color:#CFD7E2;text-align:left;font-size:24px;margin-bottom:12px;line-height:24px;">Devtools Server is unreachable.</h1>
108
1099
  <p style="max-width:480px;font-family:ui-monospace,monospace;font-weight:400;color:#6C7793;text-align:left;font-size:16px;line-height:32px;">Please make sure Refine Devtools is running and <code style="background:#303450;color:#A3ADC2;padding:3px 6px;border-radius:4px;">&lt;DevtoolsProvider /&gt;</code> has valid <code style="background:#303450;color:#A3ADC2;padding:3px 6px;border-radius:4px;">url</code> prop. Environment variables may not always be available in browser depending on your project setup.</p>
109
1100
  </body>
110
1101
  </html>
111
- `;var re=g(require("react")),ie=require("@refinedev/devtools-shared");var R={};var ne=()=>{let t=(typeof process<"u"&&"env"in process?process.env.REFINE_DEVTOOLS_PORT||process.env.NEXT_PUBLIC_REFINE_DEVTOOLS_PORT||process.env.REACT_APP_REFINE_DEVTOOLS_PORT:typeof R<"u"&&R.env?R.env.REFINE_DEVTOOLS_PORT||R.env.VITE_REFINE_DEVTOOLS_PORT:null)||5001;return[`http://localhost:${t}`,`ws://localhost:${t}`]};var le=process.env.NODE_ENV!=="development"?({children:e})=>e:({children:e,url:t=ne()})=>re.default.createElement(ie.DevToolsContextProvider,{url:t},e);
1102
+ `;
1103
+
1104
+ // src/provider.tsx
1105
+ var import_react10 = __toESM(require("react"));
1106
+ var import_devtools_shared3 = require("@refinedev/devtools-shared");
1107
+
1108
+ // src/utilities/get-devtools-url-from-env.ts
1109
+ var import_meta = {};
1110
+ var DEFAULT_DEVTOOLS_PORT = 5001;
1111
+ var getDevtoolsUrlFromEnv = () => {
1112
+ const PORT_FROM_ENV = typeof process !== "undefined" && "env" in process ? process.env.REFINE_DEVTOOLS_PORT || process.env.NEXT_PUBLIC_REFINE_DEVTOOLS_PORT || process.env.REACT_APP_REFINE_DEVTOOLS_PORT : typeof import_meta !== "undefined" && import_meta.env ? import_meta.env.REFINE_DEVTOOLS_PORT || import_meta.env.VITE_REFINE_DEVTOOLS_PORT : null;
1113
+ const port = PORT_FROM_ENV || DEFAULT_DEVTOOLS_PORT;
1114
+ return [`http://localhost:${port}`, `ws://localhost:${port}`];
1115
+ };
1116
+
1117
+ // src/provider.tsx
1118
+ var DevtoolsProvider = process.env.NODE_ENV !== "development" ? ({ children }) => children : ({ children, url = getDevtoolsUrlFromEnv() }) => {
1119
+ return /* @__PURE__ */ import_react10.default.createElement(import_devtools_shared3.DevToolsContextProvider, { url }, children);
1120
+ };
112
1121
  //# sourceMappingURL=index.cjs.map