sales-frontend-debug 0.0.9 → 0.0.11

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.js CHANGED
@@ -1,4 +1,4 @@
1
- import React5, { useEffect, useState, useMemo, useRef, useCallback } from 'react';
1
+ import React4, { useEffect, useState, useMemo, useRef, useCallback } from 'react';
2
2
  import { getEnvironmentFromHostname, isClient } from 'sales-frontend-utils';
3
3
  import { useDebugStore } from 'sales-frontend-stores';
4
4
 
@@ -268,7 +268,7 @@ var FloatingButton = ({ onClick }) => {
268
268
  transform: `translate(${position.x}px, ${position.y}px)`,
269
269
  cursor: isDragging ? "grabbing" : "grab"
270
270
  };
271
- return /* @__PURE__ */ React5.createElement(
271
+ return /* @__PURE__ */ React4.createElement(
272
272
  "button",
273
273
  {
274
274
  style: buttonStyle,
@@ -280,7 +280,7 @@ var FloatingButton = ({ onClick }) => {
280
280
  };
281
281
  var floating_button_default = FloatingButton;
282
282
  var MenuPanel = ({ menuItems: menuItems2, onMenuItemClick, onClose }) => {
283
- return /* @__PURE__ */ React5.createElement("div", { style: debugMenuPanelStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, "Debug Menu"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("ul", null, menuItems2.map((item) => /* @__PURE__ */ React5.createElement("li", { key: item.id, onClick: () => onMenuItemClick(item.component), style: menuItemStyle }, item.label))));
283
+ return /* @__PURE__ */ React4.createElement("div", { style: debugMenuPanelStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, "Debug Menu"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("ul", null, menuItems2.map((item) => /* @__PURE__ */ React4.createElement("li", { key: item.id, onClick: () => onMenuItemClick(item.component), style: menuItemStyle }, item.label))));
284
284
  };
285
285
  var menu_panel_default = MenuPanel;
286
286
  var globalLogs = [];
@@ -356,7 +356,7 @@ var LogMessage = ({ entry }) => {
356
356
  return String(part);
357
357
  });
358
358
  const style = { ...logMessageStyle, ...logTypeStyles[entry.type] };
359
- return /* @__PURE__ */ React5.createElement("pre", { style }, messageParts.join(" "));
359
+ return /* @__PURE__ */ React4.createElement("pre", { style }, messageParts.join(" "));
360
360
  };
361
361
  var ConsoleLogPanel = ({ onClose }) => {
362
362
  const { logs, clearLogs } = useConsoleLog();
@@ -374,7 +374,7 @@ var ConsoleLogPanel = ({ onClose }) => {
374
374
  }
375
375
  }, [filteredLogs]);
376
376
  const segmentOptions = ["all", "log", "warn", "error"];
377
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React5.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, "Console Logs"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("div", { style: panelToolbarStyle }, /* @__PURE__ */ React5.createElement("div", null, segmentOptions.map((option) => /* @__PURE__ */ React5.createElement("button", { key: option, onClick: () => setFilter(option), disabled: filter === option }, option.charAt(0).toUpperCase() + option.slice(1)))), /* @__PURE__ */ React5.createElement("button", { onClick: clearLogs, style: clearButtonStyle }, "Clear")), /* @__PURE__ */ React5.createElement("div", { style: logListContainerStyle, ref: logContainerRef }, filteredLogs.map((log) => /* @__PURE__ */ React5.createElement("div", { key: log.id, style: logItemStyle }, /* @__PURE__ */ React5.createElement("span", { style: logTimestampStyle }, log.timestamp), /* @__PURE__ */ React5.createElement(LogMessage, { entry: log }))))));
377
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React4.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, "Console Logs"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("div", { style: panelToolbarStyle }, /* @__PURE__ */ React4.createElement("div", null, segmentOptions.map((option) => /* @__PURE__ */ React4.createElement("button", { key: option, onClick: () => setFilter(option), disabled: filter === option }, option.charAt(0).toUpperCase() + option.slice(1)))), /* @__PURE__ */ React4.createElement("button", { onClick: clearLogs, style: clearButtonStyle }, "Clear")), /* @__PURE__ */ React4.createElement("div", { style: logListContainerStyle, ref: logContainerRef }, filteredLogs.map((log) => /* @__PURE__ */ React4.createElement("div", { key: log.id, style: logItemStyle }, /* @__PURE__ */ React4.createElement("span", { style: logTimestampStyle }, log.timestamp), /* @__PURE__ */ React4.createElement(LogMessage, { entry: log }))))));
378
378
  };
379
379
  var console_log_panel_default = ConsoleLogPanel;
380
380
  var cookieClient = {
@@ -469,6 +469,9 @@ var LoginPanel = ({ onClose, onLogin }) => {
469
469
  const [selectedTypeId, setSelectedTypeId] = useState(loginTypes[0]?.id || "");
470
470
  const [formData, setFormData] = useState({});
471
471
  const [mode, setMode] = useState(cookieClient.getCookie("dsp-debug-mode") === "on");
472
+ const [stepValidationOff, SetStepValidationOff] = useState(
473
+ cookieClient.getCookie("Debug-Step-Validation-Off") === "true"
474
+ );
472
475
  const selectedType = useMemo(() => loginTypes.find((t) => t.id === selectedTypeId), [selectedTypeId]);
473
476
  const handleInputChange = (e) => {
474
477
  const { name, value } = e.target;
@@ -491,10 +494,28 @@ var LoginPanel = ({ onClose, onLogin }) => {
491
494
  setMode(false);
492
495
  }
493
496
  };
497
+ const handleStepValidationOff = (e) => {
498
+ const checkbox = e.target;
499
+ if (checkbox.checked) {
500
+ cookieClient.setCookie("Debug-Step-Validation-Off", "true", { path: "/" });
501
+ SetStepValidationOff(true);
502
+ } else {
503
+ cookieClient.setCookie("Debug-Step-Validation-Off", "false", { path: "/" });
504
+ SetStepValidationOff(false);
505
+ }
506
+ };
494
507
  useEffect(() => {
495
508
  setFormData({});
496
509
  }, [selectedType]);
497
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React5.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, "\uAC04\uD3B8 \uB85C\uADF8\uC778"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("form", { style: loginFormContainerStyle, onSubmit: handleSubmit }, /* @__PURE__ */ React5.createElement("div", null, /* @__PURE__ */ React5.createElement("label", { htmlFor: "debug-on" }, "Debug On"), /* @__PURE__ */ React5.createElement("input", { type: "checkbox", id: "debug-on", onChange: handleDebugOn, checked: mode }), /* @__PURE__ */ React5.createElement("br", null), /* @__PURE__ */ React5.createElement("label", { htmlFor: "login-type-select" }, "\uB85C\uADF8\uC778 \uC720\uD615"), /* @__PURE__ */ React5.createElement("select", { id: "login-type-select", value: selectedTypeId, onChange: (e) => setSelectedTypeId(e.target.value) }, loginTypes.map((type) => /* @__PURE__ */ React5.createElement("option", { key: type.id, value: type.id }, type.label)))), selectedType?.fields.map((field) => /* @__PURE__ */ React5.createElement("div", { key: field.name }, /* @__PURE__ */ React5.createElement("label", { htmlFor: field.name }, field.label), /* @__PURE__ */ React5.createElement(
510
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React4.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, "\uAC04\uD3B8 \uB85C\uADF8\uC778"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("form", { style: loginFormContainerStyle, onSubmit: handleSubmit }, /* @__PURE__ */ React4.createElement("div", null, /* @__PURE__ */ React4.createElement("ul", { style: { listStyleType: "circle" } }, /* @__PURE__ */ React4.createElement("li", null, /* @__PURE__ */ React4.createElement("label", { htmlFor: "debug-on" }, "Debug On"), /* @__PURE__ */ React4.createElement("input", { type: "checkbox", id: "debug-on", onChange: handleDebugOn, checked: mode }), /* @__PURE__ */ React4.createElement("ul", { style: { listStyleType: "square", paddingLeft: "20px" } }, /* @__PURE__ */ React4.createElement("li", null, "(\uCFE0\uD0A4\uC5D0 \uC14B\uD305\uB41C \uD1A0\uD070\uAC12\uC73C\uB85C \uD5E4\uB354\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4. \uAC04\uD3B8\uB85C\uADF8\uC778 \uC0AC\uC6A9\uC2DC \uD544\uC218\uCCB4\uD06C)"))), /* @__PURE__ */ React4.createElement("li", null, /* @__PURE__ */ React4.createElement("label", { htmlFor: "step-validation-off" }, "\uC11C\uC2DD Validation Off"), /* @__PURE__ */ React4.createElement(
511
+ "input",
512
+ {
513
+ type: "checkbox",
514
+ id: "step-validation-off",
515
+ onChange: handleStepValidationOff,
516
+ checked: stepValidationOff
517
+ }
518
+ ), /* @__PURE__ */ React4.createElement("ul", { style: { listStyleType: "square", paddingLeft: "20px" } }, /* @__PURE__ */ React4.createElement("li", null, "(\uC11C\uC2DD \uB2E8\uACC4 \uC774\uB3D9\uC2DC, validation\uC744 \uB044\uACE0 \uBBF8\uC791\uC131 \uB2E8\uACC4\uB3C4 \uC774\uB3D9\uAC00\uB2A5\uD558\uB3C4\uB85D \uD569\uB2C8\uB2E4.)")))), /* @__PURE__ */ React4.createElement("br", null), " ", /* @__PURE__ */ React4.createElement("br", null), /* @__PURE__ */ React4.createElement("label", { htmlFor: "login-type-select" }, "\uB85C\uADF8\uC778 \uC720\uD615"), /* @__PURE__ */ React4.createElement("select", { id: "login-type-select", value: selectedTypeId, onChange: (e) => setSelectedTypeId(e.target.value) }, loginTypes.map((type) => /* @__PURE__ */ React4.createElement("option", { key: type.id, value: type.id }, type.label)))), selectedType?.fields.map((field) => /* @__PURE__ */ React4.createElement("div", { key: field.name }, /* @__PURE__ */ React4.createElement("label", { htmlFor: field.name }, field.label), /* @__PURE__ */ React4.createElement(
498
519
  "input",
499
520
  {
500
521
  type: field.type,
@@ -505,7 +526,7 @@ var LoginPanel = ({ onClose, onLogin }) => {
505
526
  onChange: handleInputChange,
506
527
  required: true
507
528
  }
508
- ))), /* @__PURE__ */ React5.createElement("div", { style: formActionsStyle }, /* @__PURE__ */ React5.createElement("button", { type: "submit" }, "\uB85C\uADF8\uC778")))));
529
+ ))), /* @__PURE__ */ React4.createElement("div", { style: formActionsStyle }, /* @__PURE__ */ React4.createElement("button", { type: "submit" }, "\uB85C\uADF8\uC778")))));
509
530
  };
510
531
  var login_panel_default = LoginPanel;
511
532
  var SEARCH_SECTIONS = [
@@ -606,9 +627,9 @@ var NetworkLog = ({ onClose }) => {
606
627
  };
607
628
  const renderLogContent = (log) => {
608
629
  const logInfo = getLogInfo(log);
609
- return /* @__PURE__ */ React5.createElement("pre", null, JSON.stringify(logInfo, null, 2));
630
+ return /* @__PURE__ */ React4.createElement("pre", null, JSON.stringify(logInfo, null, 2));
610
631
  };
611
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React5.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, "\uB124\uD2B8\uC6CC\uD06C \uB85C\uADF8"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("div", { style: networkLogContainerStyle }, /* @__PURE__ */ React5.createElement("div", { style: searchContainerStyle }, /* @__PURE__ */ React5.createElement("select", { value: searchSection, onChange: (e) => setSearchSection(e.target.value) }, SEARCH_SECTIONS.map((option) => /* @__PURE__ */ React5.createElement("option", { key: option.value, value: option.value }, option.label))), /* @__PURE__ */ React5.createElement(
632
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React4.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, "\uB124\uD2B8\uC6CC\uD06C \uB85C\uADF8"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("div", { style: networkLogContainerStyle }, /* @__PURE__ */ React4.createElement("div", { style: searchContainerStyle }, /* @__PURE__ */ React4.createElement("select", { value: searchSection, onChange: (e) => setSearchSection(e.target.value) }, SEARCH_SECTIONS.map((option) => /* @__PURE__ */ React4.createElement("option", { key: option.value, value: option.value }, option.label))), /* @__PURE__ */ React4.createElement(
612
633
  "input",
613
634
  {
614
635
  type: "text",
@@ -617,7 +638,7 @@ var NetworkLog = ({ onClose }) => {
617
638
  onChange: (e) => setSearchTerm(e.target.value),
618
639
  style: flex1Style
619
640
  }
620
- ), /* @__PURE__ */ React5.createElement("label", null, /* @__PURE__ */ React5.createElement("input", { type: "checkbox", id: "hold-checkbox", checked: isHold, onChange: toggleHold }), "Hold"), /* @__PURE__ */ React5.createElement("button", { onClick: clear }, "clear")), isHold && /* @__PURE__ */ React5.createElement("div", { style: holdButtonsContainerStyle }, /* @__PURE__ */ React5.createElement("button", { onClick: () => playAllRequests() }, "REQ Resolve"), /* @__PURE__ */ React5.createElement("button", { onClick: () => playAllResponses() }, "RES Resolve")), /* @__PURE__ */ React5.createElement("div", { style: logListStyle }, filteredLogs.length === 0 ? /* @__PURE__ */ React5.createElement("p", null, "\uD45C\uC2DC\uD560 \uB85C\uADF8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.") : /* @__PURE__ */ React5.createElement("div", null, filteredLogs.map((log, index) => /* @__PURE__ */ React5.createElement("details", { key: index }, /* @__PURE__ */ React5.createElement("summary", { style: logSummaryStyle }, renderLogSummary(log)), /* @__PURE__ */ React5.createElement("div", { style: logContentStyle }, renderLogContent(log)))))))));
641
+ ), /* @__PURE__ */ React4.createElement("label", null, /* @__PURE__ */ React4.createElement("input", { type: "checkbox", id: "hold-checkbox", checked: isHold, onChange: toggleHold }), "Hold"), /* @__PURE__ */ React4.createElement("button", { onClick: clear }, "clear")), isHold && /* @__PURE__ */ React4.createElement("div", { style: holdButtonsContainerStyle }, /* @__PURE__ */ React4.createElement("button", { onClick: () => playAllRequests() }, "REQ Resolve"), /* @__PURE__ */ React4.createElement("button", { onClick: () => playAllResponses() }, "RES Resolve")), /* @__PURE__ */ React4.createElement("div", { style: logListStyle }, filteredLogs.length === 0 ? /* @__PURE__ */ React4.createElement("p", null, "\uD45C\uC2DC\uD560 \uB85C\uADF8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.") : /* @__PURE__ */ React4.createElement("div", null, filteredLogs.map((log, index) => /* @__PURE__ */ React4.createElement("details", { key: index }, /* @__PURE__ */ React4.createElement("summary", { style: logSummaryStyle }, renderLogSummary(log)), /* @__PURE__ */ React4.createElement("div", { style: logContentStyle }, renderLogContent(log)))))))));
621
642
  };
622
643
  var network_log_default = NetworkLog;
623
644
  var PageNavigationPanel = ({ onClose }) => {
@@ -627,7 +648,7 @@ var PageNavigationPanel = ({ onClose }) => {
627
648
  self.location.href = url;
628
649
  }
629
650
  };
630
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React5.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, "\uD398\uC774\uC9C0 \uC774\uB3D9"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("div", { style: pageNavigationContentStyle }, /* @__PURE__ */ React5.createElement(
651
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React4.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, "\uD398\uC774\uC9C0 \uC774\uB3D9"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("div", { style: pageNavigationContentStyle }, /* @__PURE__ */ React4.createElement(
631
652
  "input",
632
653
  {
633
654
  type: "text",
@@ -636,7 +657,7 @@ var PageNavigationPanel = ({ onClose }) => {
636
657
  placeholder: "\uC774\uB3D9\uD560 URL\uC744 \uC785\uB825\uD558\uC138\uC694 (\uC608: /main)",
637
658
  style: flex1Style
638
659
  }
639
- ), /* @__PURE__ */ React5.createElement("button", { onClick: handleNavigate }, "\uC774\uB3D9"))));
660
+ ), /* @__PURE__ */ React4.createElement("button", { onClick: handleNavigate }, "\uC774\uB3D9"))));
640
661
  };
641
662
  var page_navigation_panel_default = PageNavigationPanel;
642
663
  var logTypeStyles2 = {
@@ -662,7 +683,7 @@ var ResultMessage = ({ log }) => {
662
683
  });
663
684
  const prefix = log.type === "return" ? "\u21A9 " : "";
664
685
  const style = { ...logMessageStyle, ...logTypeStyles2[log.type] };
665
- return /* @__PURE__ */ React5.createElement("pre", { style }, prefix, messageParts.join(" "));
686
+ return /* @__PURE__ */ React4.createElement("pre", { style }, prefix, messageParts.join(" "));
666
687
  };
667
688
  var ScriptExecutorPanel = ({ onClose }) => {
668
689
  const [code, setCode] = useState('// \uC5EC\uAE30\uC5D0 \uC2E4\uD589\uD560 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uC138\uC694\nconsole.log("Hello, World!");');
@@ -709,7 +730,7 @@ var ScriptExecutorPanel = ({ onClose }) => {
709
730
  const handleClear = () => {
710
731
  setResults([]);
711
732
  };
712
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React5.createElement("div", { style: { ...debugFeaturePanelStyle, ...scriptExecutorContentStyle } }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, "\uC2A4\uD06C\uB9BD\uD2B8 \uC2E4\uD589"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("div", { style: scriptExecutorContentStyle }, /* @__PURE__ */ React5.createElement("div", { style: scriptInputSectionStyle }, /* @__PURE__ */ React5.createElement(
733
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React4.createElement("div", { style: { ...debugFeaturePanelStyle, ...scriptExecutorContentStyle } }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, "\uC2A4\uD06C\uB9BD\uD2B8 \uC2E4\uD589"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("div", { style: scriptExecutorContentStyle }, /* @__PURE__ */ React4.createElement("div", { style: scriptInputSectionStyle }, /* @__PURE__ */ React4.createElement(
713
734
  "textarea",
714
735
  {
715
736
  style: scriptTextareaStyle,
@@ -717,18 +738,18 @@ var ScriptExecutorPanel = ({ onClose }) => {
717
738
  onChange: (e) => setCode(e.target.value),
718
739
  spellCheck: "false"
719
740
  }
720
- ), /* @__PURE__ */ React5.createElement("div", { style: scriptActionsStyle }, /* @__PURE__ */ React5.createElement("button", { onClick: handleExecute }, "\uC2E4\uD589 (\u25B6)"), /* @__PURE__ */ React5.createElement("button", { onClick: handleClear }, "\uACB0\uACFC \uC9C0\uC6B0\uAE30"))), /* @__PURE__ */ React5.createElement("div", { style: scriptOutputSectionStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h3", { style: h3Style }, "\uACB0\uACFC")), /* @__PURE__ */ React5.createElement("div", { style: logListContainerStyle }, results.map((log) => /* @__PURE__ */ React5.createElement("div", { key: log.id, style: logItemStyle }, /* @__PURE__ */ React5.createElement("span", { style: logTimestampStyle }, log.timestamp), /* @__PURE__ */ React5.createElement(ResultMessage, { log }))))))));
741
+ ), /* @__PURE__ */ React4.createElement("div", { style: scriptActionsStyle }, /* @__PURE__ */ React4.createElement("button", { onClick: handleExecute }, "\uC2E4\uD589 (\u25B6)"), /* @__PURE__ */ React4.createElement("button", { onClick: handleClear }, "\uACB0\uACFC \uC9C0\uC6B0\uAE30"))), /* @__PURE__ */ React4.createElement("div", { style: scriptOutputSectionStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h3", { style: h3Style }, "\uACB0\uACFC")), /* @__PURE__ */ React4.createElement("div", { style: logListContainerStyle }, results.map((log) => /* @__PURE__ */ React4.createElement("div", { key: log.id, style: logItemStyle }, /* @__PURE__ */ React4.createElement("span", { style: logTimestampStyle }, log.timestamp), /* @__PURE__ */ React4.createElement(ResultMessage, { log }))))))));
721
742
  };
722
743
  var script_executor_panel_default = ScriptExecutorPanel;
723
744
  var ValueDisplay = ({ value }) => {
724
745
  try {
725
746
  const parsed = JSON.parse(value);
726
747
  if (typeof parsed === "object" && parsed !== null) {
727
- return /* @__PURE__ */ React5.createElement("pre", { style: logContentStyle }, JSON.stringify(parsed, null, 2));
748
+ return /* @__PURE__ */ React4.createElement("pre", { style: logContentStyle }, JSON.stringify(parsed, null, 2));
728
749
  }
729
750
  } catch (e) {
730
751
  }
731
- return /* @__PURE__ */ React5.createElement("div", { style: logContentStyle }, value);
752
+ return /* @__PURE__ */ React4.createElement("div", { style: logContentStyle }, value);
732
753
  };
733
754
  var EditableRow = ({ item, onSave, onRemove }) => {
734
755
  const [isEditing, setIsEditing] = useState(false);
@@ -741,7 +762,7 @@ var EditableRow = ({ item, onSave, onRemove }) => {
741
762
  setValue(item.value);
742
763
  setIsEditing(true);
743
764
  };
744
- return /* @__PURE__ */ React5.createElement("details", null, /* @__PURE__ */ React5.createElement("summary", null, item.key), /* @__PURE__ */ React5.createElement("div", null, isEditing ? /* @__PURE__ */ React5.createElement("button", { onClick: handleSave }, "Save") : /* @__PURE__ */ React5.createElement("button", { onClick: handleEdit }, "Edit"), /* @__PURE__ */ React5.createElement("button", { onClick: () => onRemove(item.key) }, "Remove"), isEditing ? /* @__PURE__ */ React5.createElement("textarea", { value, onChange: (e) => setValue(e.target.value), style: textareaStyle }) : /* @__PURE__ */ React5.createElement(ValueDisplay, { value: item.value })));
765
+ return /* @__PURE__ */ React4.createElement("details", null, /* @__PURE__ */ React4.createElement("summary", null, item.key), /* @__PURE__ */ React4.createElement("div", null, isEditing ? /* @__PURE__ */ React4.createElement("button", { onClick: handleSave }, "Save") : /* @__PURE__ */ React4.createElement("button", { onClick: handleEdit }, "Edit"), /* @__PURE__ */ React4.createElement("button", { onClick: () => onRemove(item.key) }, "Remove"), isEditing ? /* @__PURE__ */ React4.createElement("textarea", { value, onChange: (e) => setValue(e.target.value), style: textareaStyle }) : /* @__PURE__ */ React4.createElement(ValueDisplay, { value: item.value })));
745
766
  };
746
767
  var StoragePanel = ({ onClose, storageType }) => {
747
768
  const { items, setItem, removeItem } = useStorage(storageType);
@@ -754,7 +775,7 @@ var StoragePanel = ({ onClose, storageType }) => {
754
775
  (item) => item.key.toLowerCase().includes(filter.toLowerCase()) || item.value.toLowerCase().includes(filter.toLowerCase())
755
776
  );
756
777
  }, [items, filter]);
757
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React5.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React5.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React5.createElement("h2", { style: h2Style }, storageType === "localStorage" ? "Local Storage" : "Cookies"), /* @__PURE__ */ React5.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React5.createElement("div", { style: panelToolbarStyle }, /* @__PURE__ */ React5.createElement(
778
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", { style: modalOverlayStyle, onClick: onClose }), /* @__PURE__ */ React4.createElement("div", { style: debugFeaturePanelStyle }, /* @__PURE__ */ React4.createElement("div", { style: panelHeaderStyle }, /* @__PURE__ */ React4.createElement("h2", { style: h2Style }, storageType === "localStorage" ? "Local Storage" : "Cookies"), /* @__PURE__ */ React4.createElement("button", { onClick: onClose }, "X")), /* @__PURE__ */ React4.createElement("div", { style: panelToolbarStyle }, /* @__PURE__ */ React4.createElement(
758
779
  "input",
759
780
  {
760
781
  type: "text",
@@ -763,7 +784,7 @@ var StoragePanel = ({ onClose, storageType }) => {
763
784
  onChange: (e) => setFilter(e.target.value),
764
785
  style: storageSearchInputStyle
765
786
  }
766
- )), /* @__PURE__ */ React5.createElement("div", { style: storageTableContainerStyle }, filteredItems.map((item) => /* @__PURE__ */ React5.createElement(EditableRow, { key: item.key, item, onSave: setItem, onRemove: removeItem })))));
787
+ )), /* @__PURE__ */ React4.createElement("div", { style: storageTableContainerStyle }, filteredItems.map((item) => /* @__PURE__ */ React4.createElement(EditableRow, { key: item.key, item, onSave: setItem, onRemove: removeItem })))));
767
788
  };
768
789
  var storage_panel_default = StoragePanel;
769
790
 
@@ -803,13 +824,13 @@ var menuItems = [
803
824
  id: "local-storage",
804
825
  label: "\uB85C\uCEEC \uC2A4\uD1A0\uB9AC\uC9C0 \uAD00\uB9AC",
805
826
  // StoragePanel은 재사용 가능한 컴포넌트이므로, props를 통해 어떤 스토리지를 다룰지 지정합니다.
806
- component: (props) => /* @__PURE__ */ React5.createElement(storage_panel_default, { ...props, storageType: "localStorage" }),
827
+ component: (props) => /* @__PURE__ */ React4.createElement(storage_panel_default, { ...props, storageType: "localStorage" }),
807
828
  display: true
808
829
  },
809
830
  {
810
831
  id: "cookie-management",
811
832
  label: "\uCFE0\uD0A4 \uAD00\uB9AC",
812
- component: (props) => /* @__PURE__ */ React5.createElement(storage_panel_default, { ...props, storageType: "cookie" }),
833
+ component: (props) => /* @__PURE__ */ React4.createElement(storage_panel_default, { ...props, storageType: "cookie" }),
813
834
  display: true
814
835
  },
815
836
  {
@@ -880,9 +901,9 @@ var DebugTool = ({ onLogin, envOverride, menuItemsOverride }) => {
880
901
  );
881
902
  if (activeFeature) {
882
903
  const FeatureComponent = activeFeature;
883
- return /* @__PURE__ */ React5.createElement(FeatureComponent, { onClose: handleCloseFeature, onLogin });
904
+ return /* @__PURE__ */ React4.createElement(FeatureComponent, { onClose: handleCloseFeature, onLogin });
884
905
  }
885
- return /* @__PURE__ */ React5.createElement(
906
+ return /* @__PURE__ */ React4.createElement(
886
907
  "div",
887
908
  {
888
909
  style: {
@@ -892,8 +913,8 @@ var DebugTool = ({ onLogin, envOverride, menuItemsOverride }) => {
892
913
  zIndex: 9999
893
914
  }
894
915
  },
895
- /* @__PURE__ */ React5.createElement(floating_button_default, { onClick: toggleMenu }),
896
- isMenuOpen && /* @__PURE__ */ React5.createElement(
916
+ /* @__PURE__ */ React4.createElement(floating_button_default, { onClick: toggleMenu }),
917
+ isMenuOpen && /* @__PURE__ */ React4.createElement(
897
918
  menu_panel_default,
898
919
  {
899
920
  menuItems: availableMenuItems,
@@ -976,6 +997,12 @@ function addErrorLog(error) {
976
997
  }
977
998
  }
978
999
 
979
- export { DebugTool, addErrorLog, addRequestLog, addResponseLog };
1000
+ // src/debug-utils.ts
1001
+ function isDebugStepValidationOff() {
1002
+ const DebugStepValidationOff = cookieClient.getCookie("Debug-Step-Validation-Off") === "true";
1003
+ return DebugStepValidationOff;
1004
+ }
1005
+
1006
+ export { DebugTool, addErrorLog, addRequestLog, addResponseLog, isDebugStepValidationOff };
980
1007
  //# sourceMappingURL=index.js.map
981
1008
  //# sourceMappingURL=index.js.map