devtools-guardian 1.0.1 → 1.1.1
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.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +102 -135
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
+
interface Props {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
overlay?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const DevToolsProtection: ({ children, overlay, }: Props) => react_jsx_runtime.JSX.Element;
|
|
9
|
+
|
|
4
10
|
interface DevToolsDetectorOptions {
|
|
5
11
|
/** Keyboard shortcuts to intercept. Default covers common DevTools keys. */
|
|
6
12
|
blockedKeys?: string[];
|
|
@@ -36,12 +42,6 @@ interface DevToolsDetectorOptions {
|
|
|
36
42
|
*/
|
|
37
43
|
declare function useDevToolsDetector(options?: DevToolsDetectorOptions): boolean;
|
|
38
44
|
|
|
39
|
-
interface Props {
|
|
40
|
-
children: React.ReactNode;
|
|
41
|
-
overlay?: boolean;
|
|
42
|
-
}
|
|
43
|
-
declare const DevToolsProtection: ({ children, overlay, }: Props) => react_jsx_runtime.JSX.Element;
|
|
44
|
-
|
|
45
45
|
interface DevToolsWarningOverlayProps {
|
|
46
46
|
/** Optional handler called when the user dismisses the overlay. */
|
|
47
47
|
onClose?: () => void;
|
|
@@ -54,4 +54,4 @@ interface DevToolsWarningOverlayProps {
|
|
|
54
54
|
*/
|
|
55
55
|
declare const DevToolsWarningOverlay: React.FC<DevToolsWarningOverlayProps>;
|
|
56
56
|
|
|
57
|
-
export {
|
|
57
|
+
export { DevToolsProtection, DevToolsWarningOverlay, useDevToolsDetector };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
+
interface Props {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
overlay?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const DevToolsProtection: ({ children, overlay, }: Props) => react_jsx_runtime.JSX.Element;
|
|
9
|
+
|
|
4
10
|
interface DevToolsDetectorOptions {
|
|
5
11
|
/** Keyboard shortcuts to intercept. Default covers common DevTools keys. */
|
|
6
12
|
blockedKeys?: string[];
|
|
@@ -36,12 +42,6 @@ interface DevToolsDetectorOptions {
|
|
|
36
42
|
*/
|
|
37
43
|
declare function useDevToolsDetector(options?: DevToolsDetectorOptions): boolean;
|
|
38
44
|
|
|
39
|
-
interface Props {
|
|
40
|
-
children: React.ReactNode;
|
|
41
|
-
overlay?: boolean;
|
|
42
|
-
}
|
|
43
|
-
declare const DevToolsProtection: ({ children, overlay, }: Props) => react_jsx_runtime.JSX.Element;
|
|
44
|
-
|
|
45
45
|
interface DevToolsWarningOverlayProps {
|
|
46
46
|
/** Optional handler called when the user dismisses the overlay. */
|
|
47
47
|
onClose?: () => void;
|
|
@@ -54,4 +54,4 @@ interface DevToolsWarningOverlayProps {
|
|
|
54
54
|
*/
|
|
55
55
|
declare const DevToolsWarningOverlay: React.FC<DevToolsWarningOverlayProps>;
|
|
56
56
|
|
|
57
|
-
export {
|
|
57
|
+
export { DevToolsProtection, DevToolsWarningOverlay, useDevToolsDetector };
|
package/dist/index.js
CHANGED
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
"use
|
|
2
|
-
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
19
3
|
|
|
20
|
-
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
DevToolsProtection: () => DevToolsProtection,
|
|
24
|
-
DevToolsWarningOverlay: () => DevToolsWarningOverlay_default,
|
|
25
|
-
useDevToolsDetector: () => useDevToolsDetector
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(index_exports);
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var framerMotion = require('framer-motion');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
28
7
|
|
|
29
8
|
// src/hooks/useDevToolsDetector.ts
|
|
30
|
-
var import_react = require("react");
|
|
31
9
|
var DEFAULT_BLOCKED_KEYS = [
|
|
32
10
|
// 'F12',
|
|
33
11
|
"Ctrl+Shift+I",
|
|
@@ -69,31 +47,31 @@ function useDevToolsDetector(options = {}) {
|
|
|
69
47
|
pollInterval = 1500,
|
|
70
48
|
thresholdBuffer = 0
|
|
71
49
|
} = options;
|
|
72
|
-
const [isOpen, setIsOpen] =
|
|
73
|
-
const isOpenRef =
|
|
74
|
-
const onDetectRef =
|
|
75
|
-
const onCloseRef =
|
|
76
|
-
|
|
50
|
+
const [isOpen, setIsOpen] = react.useState(false);
|
|
51
|
+
const isOpenRef = react.useRef(false);
|
|
52
|
+
const onDetectRef = react.useRef(onDetect);
|
|
53
|
+
const onCloseRef = react.useRef(onClose);
|
|
54
|
+
react.useEffect(() => {
|
|
77
55
|
onDetectRef.current = onDetect;
|
|
78
56
|
}, [onDetect]);
|
|
79
|
-
|
|
57
|
+
react.useEffect(() => {
|
|
80
58
|
onCloseRef.current = onClose;
|
|
81
59
|
}, [onClose]);
|
|
82
|
-
const triggerDetection =
|
|
60
|
+
const triggerDetection = react.useCallback(() => {
|
|
83
61
|
if (!isOpenRef.current) {
|
|
84
62
|
isOpenRef.current = true;
|
|
85
63
|
setIsOpen(true);
|
|
86
64
|
onDetectRef.current?.();
|
|
87
65
|
}
|
|
88
66
|
}, []);
|
|
89
|
-
const triggerClose =
|
|
67
|
+
const triggerClose = react.useCallback(() => {
|
|
90
68
|
if (isOpenRef.current) {
|
|
91
69
|
isOpenRef.current = false;
|
|
92
70
|
setIsOpen(false);
|
|
93
71
|
onCloseRef.current?.();
|
|
94
72
|
}
|
|
95
73
|
}, []);
|
|
96
|
-
const printConsoleBranding =
|
|
74
|
+
const printConsoleBranding = react.useCallback(() => {
|
|
97
75
|
console.clear();
|
|
98
76
|
console.log("%c Built with \u2764\uFE0F by Ali Arshad", CONSOLE_STYLES.owner);
|
|
99
77
|
console.log("%c \u26A0 UNAUTHORIZED REVERSE ENGINEERING DETECTED.", CONSOLE_STYLES.warning);
|
|
@@ -107,7 +85,7 @@ function useDevToolsDetector(options = {}) {
|
|
|
107
85
|
CONSOLE_STYLES.linkPurple
|
|
108
86
|
);
|
|
109
87
|
}, []);
|
|
110
|
-
|
|
88
|
+
react.useEffect(() => {
|
|
111
89
|
const blockedSet = new Set(blockedKeys);
|
|
112
90
|
const handleKeyDown = (e) => {
|
|
113
91
|
const key = e.key.toLowerCase();
|
|
@@ -142,7 +120,7 @@ function useDevToolsDetector(options = {}) {
|
|
|
142
120
|
window.removeEventListener("contextmenu", handleContextMenu);
|
|
143
121
|
};
|
|
144
122
|
}, [blockedKeys, disableRightClick, triggerDetection]);
|
|
145
|
-
|
|
123
|
+
react.useEffect(() => {
|
|
146
124
|
const el = document.body;
|
|
147
125
|
if (disableSelection) {
|
|
148
126
|
el.style.userSelect = "none";
|
|
@@ -153,7 +131,7 @@ function useDevToolsDetector(options = {}) {
|
|
|
153
131
|
el.style.webkitUserSelect = "";
|
|
154
132
|
};
|
|
155
133
|
}, [disableSelection]);
|
|
156
|
-
|
|
134
|
+
react.useEffect(() => {
|
|
157
135
|
const checkDimensions = () => {
|
|
158
136
|
if (isMobileDevice()) return false;
|
|
159
137
|
const dpr = window.devicePixelRatio || 1;
|
|
@@ -168,7 +146,7 @@ function useDevToolsDetector(options = {}) {
|
|
|
168
146
|
handleResize();
|
|
169
147
|
return () => window.removeEventListener("resize", handleResize);
|
|
170
148
|
}, [thresholdBuffer, triggerDetection]);
|
|
171
|
-
|
|
149
|
+
react.useEffect(() => {
|
|
172
150
|
let consoleGetterFired = false;
|
|
173
151
|
const sentinel = {
|
|
174
152
|
[Symbol.toPrimitive]() {
|
|
@@ -220,13 +198,9 @@ function useDevToolsDetector(options = {}) {
|
|
|
220
198
|
return isOpen;
|
|
221
199
|
}
|
|
222
200
|
|
|
223
|
-
// src/components/DevToolsWarningOverlay.tsx
|
|
224
|
-
var import_react2 = require("react");
|
|
225
|
-
var import_framer_motion = require("framer-motion");
|
|
226
|
-
|
|
227
201
|
// #style-inject:#style-inject
|
|
228
202
|
function styleInject(css, { insertAt } = {}) {
|
|
229
|
-
if (
|
|
203
|
+
if (typeof document === "undefined") return;
|
|
230
204
|
const head = document.head || document.getElementsByTagName("head")[0];
|
|
231
205
|
const style = document.createElement("style");
|
|
232
206
|
style.type = "text/css";
|
|
@@ -248,9 +222,6 @@ function styleInject(css, { insertAt } = {}) {
|
|
|
248
222
|
|
|
249
223
|
// src/styles/index.css
|
|
250
224
|
styleInject('.dtg-overlay {\n position: fixed;\n inset: 0;\n z-index: 99999;\n display: flex;\n align-items: center;\n justify-content: center;\n user-select: none;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n background: rgba(3, 5, 8, 0.93);\n backdrop-filter: blur(6px);\n}\n.dtg-canvas {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n opacity: 0.18;\n}\n.dtg-scanlines {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n.dtg-vignette {\n position: absolute;\n inset: 0;\n pointer-events: none;\n background:\n radial-gradient(\n ellipse 60% 55% at 50% 50%,\n rgba(190, 18, 60, 0.07) 0%,\n transparent 70%);\n}\n.dtg-card {\n position: relative;\n width: 100%;\n max-width: 512px;\n margin-left: 16px;\n margin-right: 16px;\n border-radius: 12px;\n overflow: hidden;\n background: rgba(8, 12, 18, 0.92);\n border: 1px solid rgba(244, 63, 94, 0.2);\n box-shadow: 0 0 0 1px rgba(244, 63, 94, 0.05), 0 32px 64px rgba(0, 0, 0, 0.6);\n}\n.dtg-card-padding {\n padding: 32px;\n}\n.dtg-neon-edge {\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background:\n linear-gradient(\n 90deg,\n transparent 0%,\n #f43f5e 30%,\n #f43f5e 70%,\n transparent 100%);\n box-shadow: 0 0 6px 1px rgba(244, 63, 94, 0.6);\n}\n.dtg-neon-edge-top {\n top: 0;\n}\n.dtg-neon-edge-bottom {\n bottom: 0;\n}\n.dtg-pulse-dot {\n position: relative;\n display: flex;\n height: 10px;\n width: 10px;\n flex-shrink: 0;\n}\n.dtg-pulse-dot-ping {\n position: absolute;\n display: inline-flex;\n height: 100%;\n width: 100%;\n border-radius: 9999px;\n opacity: 0.6;\n animation: dtg-ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n}\n.dtg-pulse-dot-inner {\n position: relative;\n display: inline-flex;\n border-radius: 9999px;\n height: 10px;\n width: 10px;\n}\n@keyframes dtg-ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n.dtg-creator-grid {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 12px;\n padding-top: 4px;\n}\n.dtg-creator-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid rgba(148, 163, 184, 0.12);\n background: rgba(15, 20, 30, 0.7);\n text-decoration: none;\n transition: all 0.2s ease-in-out;\n}\n.dtg-creator-icon {\n width: 36px;\n height: 36px;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 2px;\n transition: background-color 0.2s, color 0.2s;\n}\n.dtg-creator-label {\n font-size: 13px;\n font-weight: 600;\n color: #e2e8f0;\n}\n.dtg-creator-sub {\n font-size: 10px;\n color: #64748b;\n letter-spacing: 0.025em;\n}\n.dtg-scan-container {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n.dtg-flex-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.dtg-scan-title {\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.2em;\n text-transform: uppercase;\n color: #fb7185;\n}\n.dtg-steps-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.dtg-step-item {\n display: flex;\n align-items: start;\n gap: 10px;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace;\n font-size: 14px;\n}\n.dtg-step-indicator {\n margin-top: 2px;\n width: 16px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.dtg-step-dot {\n width: 6px;\n height: 6px;\n border-radius: 9999px;\n background-color: #334155;\n display: inline-block;\n}\n.dtg-text-done {\n color: #64748b;\n text-decoration: line-through;\n text-decoration-color: #475569;\n}\n.dtg-text-active {\n color: #fda4af;\n font-weight: 500;\n}\n.dtg-text-pending {\n color: #475569;\n}\n.dtg-progress-track {\n width: 100%;\n height: 3px;\n border-radius: 9999px;\n overflow: hidden;\n background: rgba(255, 255, 255, 0.06);\n}\n.dtg-progress-fill {\n height: 100%;\n border-radius: 9999px;\n background:\n linear-gradient(\n 90deg,\n #be123c,\n #f43f5e,\n #fb7185);\n}\n.dtg-log-stream {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace;\n font-size: 10px;\n color: #065f46;\n line-height: 1.625;\n display: flex;\n flex-direction: column;\n gap: 2px;\n opacity: 0.6;\n user-select: none;\n}\n.dtg-warning-container {\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.dtg-shield-wrapper {\n display: inline-flex;\n padding: 16px;\n border-radius: 9999px;\n border: 1px solid rgba(244, 63, 94, 0.3);\n background: rgba(190, 18, 60, 0.12);\n box-shadow: 0 0 24px rgba(244, 63, 94, 0.18);\n margin: 0 auto;\n}\n.dtg-shield-icon {\n width: 40px;\n height: 40px;\n color: #f43f5e;\n}\n.dtg-warning-title {\n font-size: 20px;\n font-weight: 700;\n letter-spacing: 0.15em;\n text-transform: uppercase;\n color: #f43f5e;\n text-shadow: 0 0 20px rgba(244, 63, 94, 0.35);\n margin: 0;\n}\n.dtg-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n margin: 0 auto;\n width: 100%;\n max-width: 320px;\n}\n.dtg-divider-line {\n flex: 1 1 0%;\n height: 1px;\n background:\n linear-gradient(\n 90deg,\n transparent,\n rgba(244, 63, 94, 0.4));\n}\n.dtg-divider-line-rev {\n flex: 1 1 0%;\n height: 1px;\n background:\n linear-gradient(\n 90deg,\n rgba(244, 63, 94, 0.4),\n transparent);\n}\n.dtg-divider-text {\n font-size: 9px;\n letter-spacing: 0.25em;\n text-transform: uppercase;\n color: rgba(190, 18, 60, 0.7);\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace;\n}\n.dtg-description {\n color: #94a3b8;\n font-size: 14px;\n line-height: 1.625;\n max-width: 384px;\n margin: 0 auto;\n}\n.dtg-close-button {\n margin-top: 4px;\n padding: 8px 28px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.15em;\n text-transform: uppercase;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace;\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n border: 1px solid rgba(244, 63, 94, 0.25);\n color: #fda4af;\n background: transparent;\n align-self: center;\n}\n.dtg-close-button:hover {\n background: rgba(244, 63, 94, 0.08);\n border-color: rgba(244, 63, 94, 0.5);\n}\n.dtg-footer {\n padding-top: 16px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n monospace;\n font-size: 9px;\n color: rgba(148, 163, 184, 0.3);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.dtg-uppercase-track {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n');
|
|
251
|
-
|
|
252
|
-
// src/components/DevToolsWarningOverlay.tsx
|
|
253
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
254
225
|
var SCAN_STEPS = [
|
|
255
226
|
{ id: "step-1", label: "Tracing unauthorized debugger session..." },
|
|
256
227
|
{ id: "step-2", label: "Analyzing reverse-engineering attempt..." },
|
|
@@ -260,8 +231,8 @@ var STEP_INTERVAL_MS = 1e3;
|
|
|
260
231
|
var MATRIX_CHARS = "\uFF71\uFF72\uFF73\uFF74\uFF75\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF9D0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
261
232
|
var MATRIX_FONT_SIZE = 15;
|
|
262
233
|
var MatrixBackground = () => {
|
|
263
|
-
const canvasRef =
|
|
264
|
-
|
|
234
|
+
const canvasRef = react.useRef(null);
|
|
235
|
+
react.useEffect(() => {
|
|
265
236
|
const canvas = canvasRef.current;
|
|
266
237
|
if (!canvas) return;
|
|
267
238
|
const ctx = canvas.getContext("2d");
|
|
@@ -316,7 +287,7 @@ var MatrixBackground = () => {
|
|
|
316
287
|
window.removeEventListener("resize", resize);
|
|
317
288
|
};
|
|
318
289
|
}, []);
|
|
319
|
-
return /* @__PURE__ */
|
|
290
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
320
291
|
"canvas",
|
|
321
292
|
{
|
|
322
293
|
ref: canvasRef,
|
|
@@ -325,7 +296,7 @@ var MatrixBackground = () => {
|
|
|
325
296
|
}
|
|
326
297
|
);
|
|
327
298
|
};
|
|
328
|
-
var ScanlineOverlay = () => /* @__PURE__ */
|
|
299
|
+
var ScanlineOverlay = () => /* @__PURE__ */ jsxRuntime.jsx(
|
|
329
300
|
"div",
|
|
330
301
|
{
|
|
331
302
|
"aria-hidden": "true",
|
|
@@ -338,22 +309,22 @@ var ScanlineOverlay = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
|
338
309
|
}
|
|
339
310
|
}
|
|
340
311
|
);
|
|
341
|
-
var NeonEdge = ({ position }) => /* @__PURE__ */
|
|
312
|
+
var NeonEdge = ({ position }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
342
313
|
"div",
|
|
343
314
|
{
|
|
344
315
|
"aria-hidden": "true",
|
|
345
316
|
className: `dtg-neon-edge dtg-neon-edge-${position}`
|
|
346
317
|
}
|
|
347
318
|
);
|
|
348
|
-
var PulseDot = ({ color = "#f43f5e" }) => /* @__PURE__ */
|
|
349
|
-
/* @__PURE__ */
|
|
319
|
+
var PulseDot = ({ color = "#f43f5e" }) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "dtg-pulse-dot", "aria-hidden": "true", children: [
|
|
320
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
350
321
|
"span",
|
|
351
322
|
{
|
|
352
323
|
className: "dtg-pulse-dot-ping",
|
|
353
324
|
style: { backgroundColor: color }
|
|
354
325
|
}
|
|
355
326
|
),
|
|
356
|
-
/* @__PURE__ */
|
|
327
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
357
328
|
"span",
|
|
358
329
|
{
|
|
359
330
|
className: "dtg-pulse-dot-inner",
|
|
@@ -361,7 +332,7 @@ var PulseDot = ({ color = "#f43f5e" }) => /* @__PURE__ */ (0, import_jsx_runtime
|
|
|
361
332
|
}
|
|
362
333
|
)
|
|
363
334
|
] });
|
|
364
|
-
var IconGithub = ({ className }) => /* @__PURE__ */
|
|
335
|
+
var IconGithub = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { className, fill: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
365
336
|
"path",
|
|
366
337
|
{
|
|
367
338
|
fillRule: "evenodd",
|
|
@@ -369,12 +340,12 @@ var IconGithub = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
|
369
340
|
d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483\n 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466\n -.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832\n .092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688\n -.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844\n c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651\n .64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855\n 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482C19.138 20.197 22 16.44 22 12.017\n 22 6.484 17.522 2 12 2z"
|
|
370
341
|
}
|
|
371
342
|
) });
|
|
372
|
-
var IconLinkedin = ({ className }) => /* @__PURE__ */
|
|
373
|
-
var IconGlobe = ({ className }) => /* @__PURE__ */
|
|
374
|
-
/* @__PURE__ */
|
|
375
|
-
/* @__PURE__ */
|
|
343
|
+
var IconLinkedin = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { className, fill: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 0H5C2.239 0 0 2.239 0 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5V5c0-2.761-2.238-5-5-5zM8 19H5V8h3v11zM6.5 6.732c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zM20 19h-3v-5.604c0-3.368-4-3.113-4 0V19h-3V8h3v1.765c1.396-2.586 7-2.777 7 2.476V19z" }) });
|
|
344
|
+
var IconGlobe = ({ className }) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { className, fill: "none", stroke: "currentColor", strokeWidth: 1.8, viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
345
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
346
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2a14.5 14.5 0 010 20M12 2a14.5 14.5 0 000 20M2 12h20" })
|
|
376
347
|
] });
|
|
377
|
-
var IconShield = ({ className }) => /* @__PURE__ */
|
|
348
|
+
var IconShield = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { className, fill: "none", stroke: "currentColor", strokeWidth: 1.5, viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
378
349
|
"path",
|
|
379
350
|
{
|
|
380
351
|
strokeLinecap: "round",
|
|
@@ -382,8 +353,8 @@ var IconShield = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
|
382
353
|
d: "M12 2L4 6v6c0 5.25 3.5 10.15 8 11 4.5-.85 8-5.75 8-11V6l-8-4z"
|
|
383
354
|
}
|
|
384
355
|
) });
|
|
385
|
-
var CreatorCard = ({ href, icon, label, sub, accentColor }) => /* @__PURE__ */
|
|
386
|
-
|
|
356
|
+
var CreatorCard = ({ href, icon, label, sub, accentColor }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
357
|
+
framerMotion.motion.a,
|
|
387
358
|
{
|
|
388
359
|
href,
|
|
389
360
|
target: "_blank",
|
|
@@ -401,7 +372,7 @@ var CreatorCard = ({ href, icon, label, sub, accentColor }) => /* @__PURE__ */ (
|
|
|
401
372
|
e.currentTarget.style.background = "rgba(15,20,30,0.7)";
|
|
402
373
|
},
|
|
403
374
|
children: [
|
|
404
|
-
/* @__PURE__ */
|
|
375
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
405
376
|
"span",
|
|
406
377
|
{
|
|
407
378
|
className: "dtg-creator-icon",
|
|
@@ -409,15 +380,15 @@ var CreatorCard = ({ href, icon, label, sub, accentColor }) => /* @__PURE__ */ (
|
|
|
409
380
|
children: icon
|
|
410
381
|
}
|
|
411
382
|
),
|
|
412
|
-
/* @__PURE__ */
|
|
413
|
-
/* @__PURE__ */
|
|
383
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "dtg-creator-label", children: label }),
|
|
384
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "dtg-creator-sub", children: sub })
|
|
414
385
|
]
|
|
415
386
|
}
|
|
416
387
|
);
|
|
417
388
|
var ScanPhase = ({ step }) => {
|
|
418
389
|
const progress = Math.min((step + 1) / SCAN_STEPS.length * 100, 100);
|
|
419
|
-
return /* @__PURE__ */
|
|
420
|
-
|
|
390
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
391
|
+
framerMotion.motion.div,
|
|
421
392
|
{
|
|
422
393
|
initial: { opacity: 0, y: 12 },
|
|
423
394
|
animate: { opacity: 1, y: 0 },
|
|
@@ -425,28 +396,28 @@ var ScanPhase = ({ step }) => {
|
|
|
425
396
|
transition: { duration: 0.25 },
|
|
426
397
|
className: "dtg-scan-container",
|
|
427
398
|
children: [
|
|
428
|
-
/* @__PURE__ */
|
|
429
|
-
/* @__PURE__ */
|
|
430
|
-
/* @__PURE__ */
|
|
399
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dtg-flex-row", children: [
|
|
400
|
+
/* @__PURE__ */ jsxRuntime.jsx(PulseDot, {}),
|
|
401
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "dtg-scan-title", children: "Security scan running" })
|
|
431
402
|
] }),
|
|
432
|
-
/* @__PURE__ */
|
|
403
|
+
/* @__PURE__ */ jsxRuntime.jsx("ol", { className: "dtg-steps-list", "aria-live": "polite", "aria-label": "Scan progress", children: SCAN_STEPS.map((s, idx) => {
|
|
433
404
|
const done = idx < step;
|
|
434
405
|
const active = idx === step;
|
|
435
406
|
const pending = idx > step;
|
|
436
|
-
return /* @__PURE__ */
|
|
437
|
-
|
|
407
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
408
|
+
framerMotion.motion.li,
|
|
438
409
|
{
|
|
439
410
|
initial: { opacity: 0, x: -8 },
|
|
440
411
|
animate: { opacity: pending ? 0.3 : 1, x: 0 },
|
|
441
412
|
transition: { duration: 0.3, delay: active ? 0.05 : 0 },
|
|
442
413
|
className: "dtg-step-item",
|
|
443
414
|
children: [
|
|
444
|
-
/* @__PURE__ */
|
|
445
|
-
done && /* @__PURE__ */
|
|
446
|
-
active && /* @__PURE__ */
|
|
447
|
-
pending && /* @__PURE__ */
|
|
415
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "dtg-step-indicator", children: [
|
|
416
|
+
done && /* @__PURE__ */ jsxRuntime.jsx("svg", { style: { width: "14px", height: "14px", color: "#34d399" }, fill: "none", stroke: "currentColor", strokeWidth: 2.5, viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 13l4 4L19 7" }) }),
|
|
417
|
+
active && /* @__PURE__ */ jsxRuntime.jsx(PulseDot, { color: "#f43f5e" }),
|
|
418
|
+
pending && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dtg-step-dot" })
|
|
448
419
|
] }),
|
|
449
|
-
/* @__PURE__ */
|
|
420
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
450
421
|
"span",
|
|
451
422
|
{
|
|
452
423
|
className: done ? "dtg-text-done" : active ? "dtg-text-active" : "dtg-text-pending",
|
|
@@ -458,7 +429,7 @@ var ScanPhase = ({ step }) => {
|
|
|
458
429
|
s.id
|
|
459
430
|
);
|
|
460
431
|
}) }),
|
|
461
|
-
/* @__PURE__ */
|
|
432
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
462
433
|
"div",
|
|
463
434
|
{
|
|
464
435
|
role: "progressbar",
|
|
@@ -467,8 +438,8 @@ var ScanPhase = ({ step }) => {
|
|
|
467
438
|
"aria-valuemax": 100,
|
|
468
439
|
"aria-label": "Scan progress",
|
|
469
440
|
className: "dtg-progress-track",
|
|
470
|
-
children: /* @__PURE__ */
|
|
471
|
-
|
|
441
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
442
|
+
framerMotion.motion.div,
|
|
472
443
|
{
|
|
473
444
|
initial: { width: "0%" },
|
|
474
445
|
animate: { width: `${progress}%` },
|
|
@@ -478,13 +449,13 @@ var ScanPhase = ({ step }) => {
|
|
|
478
449
|
)
|
|
479
450
|
}
|
|
480
451
|
),
|
|
481
|
-
/* @__PURE__ */
|
|
452
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
482
453
|
"div",
|
|
483
454
|
{
|
|
484
455
|
"aria-hidden": "true",
|
|
485
456
|
className: "dtg-log-stream",
|
|
486
457
|
children: [
|
|
487
|
-
/* @__PURE__ */
|
|
458
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
488
459
|
"> pid=",
|
|
489
460
|
"{",
|
|
490
461
|
"0x",
|
|
@@ -492,15 +463,15 @@ var ScanPhase = ({ step }) => {
|
|
|
492
463
|
`'}`,
|
|
493
464
|
" signal=SIGINT"
|
|
494
465
|
] }),
|
|
495
|
-
/* @__PURE__ */
|
|
466
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
496
467
|
"> stack_trace captured at 0x",
|
|
497
468
|
Math.floor(Math.random() * 16777215).toString(16)
|
|
498
469
|
] }),
|
|
499
|
-
/* @__PURE__ */
|
|
470
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
500
471
|
"> hash_check: ",
|
|
501
472
|
step >= 1 ? "MISMATCH \u2717" : "pending..."
|
|
502
473
|
] }),
|
|
503
|
-
/* @__PURE__ */
|
|
474
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
504
475
|
"> exfil_guard: ",
|
|
505
476
|
step >= 2 ? "BLOCKED \u2717" : "scanning..."
|
|
506
477
|
] })
|
|
@@ -512,67 +483,67 @@ var ScanPhase = ({ step }) => {
|
|
|
512
483
|
"scan"
|
|
513
484
|
);
|
|
514
485
|
};
|
|
515
|
-
var WarningPhase = ({ onClose }) => /* @__PURE__ */
|
|
516
|
-
|
|
486
|
+
var WarningPhase = ({ onClose }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
487
|
+
framerMotion.motion.div,
|
|
517
488
|
{
|
|
518
489
|
initial: { opacity: 0, scale: 0.97 },
|
|
519
490
|
animate: { opacity: 1, scale: 1 },
|
|
520
491
|
transition: { duration: 0.35, type: "spring", stiffness: 260, damping: 22 },
|
|
521
492
|
className: "dtg-warning-container",
|
|
522
493
|
children: [
|
|
523
|
-
/* @__PURE__ */
|
|
524
|
-
|
|
494
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
495
|
+
framerMotion.motion.div,
|
|
525
496
|
{
|
|
526
497
|
initial: { scale: 0.6, opacity: 0 },
|
|
527
498
|
animate: { scale: 1, opacity: 1 },
|
|
528
499
|
transition: { delay: 0.1, type: "spring", stiffness: 300, damping: 18 },
|
|
529
500
|
className: "dtg-shield-wrapper",
|
|
530
|
-
children: /* @__PURE__ */
|
|
501
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(IconShield, { className: "dtg-shield-icon" })
|
|
531
502
|
}
|
|
532
503
|
),
|
|
533
|
-
/* @__PURE__ */
|
|
534
|
-
/* @__PURE__ */
|
|
535
|
-
/* @__PURE__ */
|
|
536
|
-
/* @__PURE__ */
|
|
537
|
-
/* @__PURE__ */
|
|
538
|
-
/* @__PURE__ */
|
|
504
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dtg-flex-row", style: { flexDirection: "column", gap: "10px" }, children: [
|
|
505
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "dtg-warning-title", children: "Developer Tools Detected" }),
|
|
506
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dtg-divider", children: [
|
|
507
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "dtg-divider-line" }),
|
|
508
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "dtg-divider-text", children: "alert" }),
|
|
509
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "dtg-divider-line-rev" })
|
|
539
510
|
] })
|
|
540
511
|
] }),
|
|
541
|
-
/* @__PURE__ */
|
|
542
|
-
/* @__PURE__ */
|
|
543
|
-
/* @__PURE__ */
|
|
512
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "dtg-description", children: "This platform is protected intellectual property. Reverse engineering or code extraction is monitored. If you're curious about what was built here, reach out directly." }),
|
|
513
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dtg-creator-grid", children: [
|
|
514
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
544
515
|
CreatorCard,
|
|
545
516
|
{
|
|
546
517
|
href: "https://github.com/Ali-Arshad-110",
|
|
547
|
-
icon: /* @__PURE__ */
|
|
518
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(IconGithub, { className: "w-4 h-4" }),
|
|
548
519
|
label: "GitHub",
|
|
549
520
|
sub: "My Work",
|
|
550
521
|
accentColor: "#818cf8"
|
|
551
522
|
}
|
|
552
523
|
),
|
|
553
|
-
/* @__PURE__ */
|
|
524
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
554
525
|
CreatorCard,
|
|
555
526
|
{
|
|
556
527
|
href: "https://www.linkedin.com/in/aliarshad110",
|
|
557
|
-
icon: /* @__PURE__ */
|
|
528
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(IconLinkedin, { className: "w-4 h-4" }),
|
|
558
529
|
label: "LinkedIn",
|
|
559
530
|
sub: "Connect",
|
|
560
531
|
accentColor: "#38bdf8"
|
|
561
532
|
}
|
|
562
533
|
),
|
|
563
|
-
/* @__PURE__ */
|
|
534
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
564
535
|
CreatorCard,
|
|
565
536
|
{
|
|
566
537
|
href: "https://github.com/Ali-Arshad-110",
|
|
567
|
-
icon: /* @__PURE__ */
|
|
538
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(IconGlobe, { className: "w-4 h-4" }),
|
|
568
539
|
label: "Portfolio",
|
|
569
540
|
sub: "About me",
|
|
570
541
|
accentColor: "#34d399"
|
|
571
542
|
}
|
|
572
543
|
)
|
|
573
544
|
] }),
|
|
574
|
-
onClose && /* @__PURE__ */
|
|
575
|
-
|
|
545
|
+
onClose && /* @__PURE__ */ jsxRuntime.jsx(
|
|
546
|
+
framerMotion.motion.button,
|
|
576
547
|
{
|
|
577
548
|
onClick: onClose,
|
|
578
549
|
whileHover: { scale: 1.03 },
|
|
@@ -581,9 +552,9 @@ var WarningPhase = ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)
|
|
|
581
552
|
children: "Close & return to platform"
|
|
582
553
|
}
|
|
583
554
|
),
|
|
584
|
-
/* @__PURE__ */
|
|
585
|
-
/* @__PURE__ */
|
|
586
|
-
/* @__PURE__ */
|
|
555
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "dtg-footer", children: [
|
|
556
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "dtg-uppercase-track", children: "Secured \xB7 SSL/TLS" }),
|
|
557
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "dtg-uppercase-track", children: [
|
|
587
558
|
"Copyright \xA9 ",
|
|
588
559
|
(/* @__PURE__ */ new Date()).getFullYear()
|
|
589
560
|
] })
|
|
@@ -593,9 +564,9 @@ var WarningPhase = ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)
|
|
|
593
564
|
"warning"
|
|
594
565
|
);
|
|
595
566
|
var DevToolsWarningOverlay = ({ onClose }) => {
|
|
596
|
-
const [scanStep, setScanStep] =
|
|
597
|
-
const [phase, setPhase] =
|
|
598
|
-
|
|
567
|
+
const [scanStep, setScanStep] = react.useState(0);
|
|
568
|
+
const [phase, setPhase] = react.useState("scan");
|
|
569
|
+
react.useEffect(() => {
|
|
599
570
|
if (phase !== "scan") return;
|
|
600
571
|
if (scanStep < SCAN_STEPS.length - 1) {
|
|
601
572
|
const t = setTimeout(() => setScanStep((s) => s + 1), STEP_INTERVAL_MS);
|
|
@@ -605,7 +576,7 @@ var DevToolsWarningOverlay = ({ onClose }) => {
|
|
|
605
576
|
return () => clearTimeout(t);
|
|
606
577
|
}
|
|
607
578
|
}, [scanStep, phase]);
|
|
608
|
-
return /* @__PURE__ */
|
|
579
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
609
580
|
"div",
|
|
610
581
|
{
|
|
611
582
|
role: "alertdialog",
|
|
@@ -613,20 +584,20 @@ var DevToolsWarningOverlay = ({ onClose }) => {
|
|
|
613
584
|
"aria-label": "Security alert: developer tools detected",
|
|
614
585
|
className: "dtg-overlay",
|
|
615
586
|
children: [
|
|
616
|
-
/* @__PURE__ */
|
|
617
|
-
/* @__PURE__ */
|
|
618
|
-
/* @__PURE__ */
|
|
619
|
-
/* @__PURE__ */
|
|
620
|
-
|
|
587
|
+
/* @__PURE__ */ jsxRuntime.jsx(MatrixBackground, {}),
|
|
588
|
+
/* @__PURE__ */ jsxRuntime.jsx(ScanlineOverlay, {}),
|
|
589
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: "dtg-vignette" }),
|
|
590
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
591
|
+
framerMotion.motion.div,
|
|
621
592
|
{
|
|
622
593
|
initial: { opacity: 0, y: 16, scale: 0.98 },
|
|
623
594
|
animate: { opacity: 1, y: 0, scale: 1 },
|
|
624
595
|
transition: { duration: 0.4, type: "spring", stiffness: 240, damping: 26 },
|
|
625
596
|
className: "dtg-card",
|
|
626
597
|
children: [
|
|
627
|
-
/* @__PURE__ */
|
|
628
|
-
/* @__PURE__ */
|
|
629
|
-
/* @__PURE__ */
|
|
598
|
+
/* @__PURE__ */ jsxRuntime.jsx(NeonEdge, { position: "top" }),
|
|
599
|
+
/* @__PURE__ */ jsxRuntime.jsx(NeonEdge, { position: "bottom" }),
|
|
600
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "dtg-card-padding", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: phase === "scan" ? /* @__PURE__ */ jsxRuntime.jsx(ScanPhase, { step: scanStep }, "scan") : /* @__PURE__ */ jsxRuntime.jsx(WarningPhase, { onClose }, "warning") }) })
|
|
630
601
|
]
|
|
631
602
|
}
|
|
632
603
|
)
|
|
@@ -635,23 +606,19 @@ var DevToolsWarningOverlay = ({ onClose }) => {
|
|
|
635
606
|
);
|
|
636
607
|
};
|
|
637
608
|
var DevToolsWarningOverlay_default = DevToolsWarningOverlay;
|
|
638
|
-
|
|
639
|
-
// src/provider/DevToolsProtection.tsx
|
|
640
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
641
609
|
var DevToolsProtection = ({
|
|
642
610
|
children,
|
|
643
611
|
overlay = true
|
|
644
612
|
}) => {
|
|
645
613
|
const isOpen = useDevToolsDetector();
|
|
646
|
-
return /* @__PURE__ */
|
|
614
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
647
615
|
children,
|
|
648
|
-
overlay && isOpen && /* @__PURE__ */
|
|
616
|
+
overlay && isOpen && /* @__PURE__ */ jsxRuntime.jsx(DevToolsWarningOverlay, {})
|
|
649
617
|
] });
|
|
650
618
|
};
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
});
|
|
619
|
+
|
|
620
|
+
exports.DevToolsProtection = DevToolsProtection;
|
|
621
|
+
exports.DevToolsWarningOverlay = DevToolsWarningOverlay_default;
|
|
622
|
+
exports.useDevToolsDetector = useDevToolsDetector;
|
|
623
|
+
//# sourceMappingURL=index.js.map
|
|
657
624
|
//# sourceMappingURL=index.js.map
|