@berenjena/react-dev-panel 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +75 -52
  2. package/dist/assets/index.css +1 -1
  3. package/dist/assets/{RangeControl.css → index10.css} +1 -1
  4. package/dist/assets/index11.css +1 -0
  5. package/dist/assets/index13.css +1 -0
  6. package/dist/assets/index14.css +1 -0
  7. package/dist/assets/index15.css +1 -0
  8. package/dist/assets/index2.css +1 -0
  9. package/dist/assets/index6.css +1 -0
  10. package/dist/assets/index7.css +1 -0
  11. package/dist/assets/index8.css +1 -0
  12. package/dist/components/ControlRenderer/controls/BooleanControl/index.d.ts +32 -1
  13. package/dist/components/ControlRenderer/controls/BooleanControl/index.js +24 -2
  14. package/dist/components/ControlRenderer/controls/ButtonControl/index.d.ts +33 -1
  15. package/dist/components/ControlRenderer/controls/ButtonControl/index.js +8 -2
  16. package/dist/components/ControlRenderer/controls/ButtonGroupControl/index.d.ts +37 -1
  17. package/dist/components/ControlRenderer/controls/ButtonGroupControl/index.js +20 -2
  18. package/dist/components/ControlRenderer/controls/ColorControl/index.d.ts +23 -1
  19. package/dist/components/ControlRenderer/controls/ColorControl/index.js +67 -2
  20. package/dist/components/ControlRenderer/controls/DateControl/index.d.ts +41 -1
  21. package/dist/components/ControlRenderer/controls/DateControl/index.js +29 -2
  22. package/dist/components/ControlRenderer/controls/DragAndDropControl/index.d.ts +2 -0
  23. package/dist/components/ControlRenderer/controls/DragAndDropControl/index.js +117 -0
  24. package/dist/components/ControlRenderer/controls/DragAndDropControl/types.d.ts +20 -0
  25. package/dist/components/ControlRenderer/controls/MultiSelectControl/index.d.ts +28 -1
  26. package/dist/components/ControlRenderer/controls/MultiSelectControl/index.js +16 -2
  27. package/dist/components/ControlRenderer/controls/NumberControl/index.d.ts +45 -1
  28. package/dist/components/ControlRenderer/controls/NumberControl/index.js +30 -2
  29. package/dist/components/ControlRenderer/controls/RangeControl/index.d.ts +46 -1
  30. package/dist/components/ControlRenderer/controls/RangeControl/index.js +38 -2
  31. package/dist/components/ControlRenderer/controls/SelectControl/index.d.ts +39 -1
  32. package/dist/components/ControlRenderer/controls/SelectControl/index.js +6 -2
  33. package/dist/components/ControlRenderer/controls/SeparatorControl/index.d.ts +39 -1
  34. package/dist/components/ControlRenderer/controls/SeparatorControl/index.js +12 -2
  35. package/dist/components/ControlRenderer/controls/TextControl/index.d.ts +40 -1
  36. package/dist/components/ControlRenderer/controls/TextControl/index.js +28 -2
  37. package/dist/components/ControlRenderer/controls/TextControl/types.d.ts +1 -0
  38. package/dist/components/ControlRenderer/controls/index.d.ts +1 -0
  39. package/dist/components/ControlRenderer/controls/index.js +2 -1
  40. package/dist/components/ControlRenderer/controls/types.d.ts +2 -0
  41. package/dist/components/ControlRenderer/index.d.ts +6 -1
  42. package/dist/components/ControlRenderer/index.js +50 -2
  43. package/dist/components/DevPanel/index.d.ts +11 -1
  44. package/dist/components/DevPanel/index.js +67 -2
  45. package/dist/components/DevPanel/types.d.ts +13 -6
  46. package/dist/components/DevPanelPortal/index.d.ts +9 -1
  47. package/dist/components/DevPanelPortal/index.js +15 -2
  48. package/dist/components/EmptyContent/index.d.ts +1 -1
  49. package/dist/components/EmptyContent/index.js +17 -2
  50. package/dist/components/Icon/index.d.ts +3 -3
  51. package/dist/components/Input/index.d.ts +1 -1
  52. package/dist/components/Input/index.js +8 -2
  53. package/dist/components/Section/index.d.ts +7 -1
  54. package/dist/components/Section/index.js +23 -2
  55. package/dist/components/Select/index.d.ts +15 -1
  56. package/dist/components/Select/index.js +176 -2
  57. package/dist/components/Textarea/index.d.ts +5 -0
  58. package/dist/components/Textarea/index.js +18 -0
  59. package/dist/components/index.js +3 -3
  60. package/dist/hooks/useDebounceCallback/index.d.ts +8 -1
  61. package/dist/hooks/useDebounceCallback/index.js +15 -2
  62. package/dist/hooks/useDevPanel/index.d.ts +29 -1
  63. package/dist/hooks/useDevPanel/index.js +22 -2
  64. package/dist/hooks/useDragAndDrop/index.d.ts +20 -1
  65. package/dist/hooks/useDragAndDrop/index.js +53 -2
  66. package/dist/hooks/{useHotkeys/useHotkey.d.ts → useHotKey/index.d.ts} +1 -1
  67. package/dist/hooks/{useHotkeys/useHotkey.js → useHotKey/index.js} +1 -1
  68. package/dist/hooks/useHotkeys/index.d.ts +37 -2
  69. package/dist/hooks/useHotkeys/index.js +29 -4
  70. package/dist/index.js +1 -1
  71. package/dist/store/UIStore.d.ts +78 -2
  72. package/dist/store/UIStore.js +95 -34
  73. package/dist/utils/getPositionAdjustment/getPositionAdjustment.d.ts +3 -2
  74. package/dist/utils/getPositionAdjustment/getPositionAdjustment.js +1 -4
  75. package/package.json +43 -29
  76. package/dist/assets/BooleanControl.css +0 -1
  77. package/dist/assets/ButtonControl.css +0 -1
  78. package/dist/assets/ButtonGroupControl.css +0 -1
  79. package/dist/assets/DevPanel.css +0 -1
  80. package/dist/assets/Input.css +0 -1
  81. package/dist/assets/MultiSelectControl.css +0 -1
  82. package/dist/assets/Select.css +0 -1
  83. package/dist/components/ControlRenderer/ControlRenderer.d.ts +0 -6
  84. package/dist/components/ControlRenderer/ControlRenderer.js +0 -52
  85. package/dist/components/ControlRenderer/controls/BooleanControl/BooleanControl.d.ts +0 -32
  86. package/dist/components/ControlRenderer/controls/BooleanControl/BooleanControl.js +0 -26
  87. package/dist/components/ControlRenderer/controls/ButtonControl/ButtonControl.d.ts +0 -33
  88. package/dist/components/ControlRenderer/controls/ButtonControl/ButtonControl.js +0 -10
  89. package/dist/components/ControlRenderer/controls/ButtonGroupControl/ButtonGroupControl.d.ts +0 -37
  90. package/dist/components/ControlRenderer/controls/ButtonGroupControl/ButtonGroupControl.js +0 -22
  91. package/dist/components/ControlRenderer/controls/ColorControl/ColorControl.d.ts +0 -23
  92. package/dist/components/ControlRenderer/controls/ColorControl/ColorControl.js +0 -69
  93. package/dist/components/ControlRenderer/controls/DateControl/DateControl.d.ts +0 -41
  94. package/dist/components/ControlRenderer/controls/DateControl/DateControl.js +0 -31
  95. package/dist/components/ControlRenderer/controls/MultiSelectControl/MultiSelectControl.d.ts +0 -28
  96. package/dist/components/ControlRenderer/controls/MultiSelectControl/MultiSelectControl.js +0 -131
  97. package/dist/components/ControlRenderer/controls/NumberControl/NumberControl.d.ts +0 -45
  98. package/dist/components/ControlRenderer/controls/NumberControl/NumberControl.js +0 -32
  99. package/dist/components/ControlRenderer/controls/RangeControl/RangeControl.d.ts +0 -46
  100. package/dist/components/ControlRenderer/controls/RangeControl/RangeControl.js +0 -40
  101. package/dist/components/ControlRenderer/controls/SelectControl/SelectControl.d.ts +0 -39
  102. package/dist/components/ControlRenderer/controls/SelectControl/SelectControl.js +0 -11
  103. package/dist/components/ControlRenderer/controls/SeparatorControl/SeparatorControl.d.ts +0 -39
  104. package/dist/components/ControlRenderer/controls/SeparatorControl/SeparatorControl.js +0 -14
  105. package/dist/components/ControlRenderer/controls/TextControl/TextControl.d.ts +0 -40
  106. package/dist/components/ControlRenderer/controls/TextControl/TextControl.js +0 -30
  107. package/dist/components/DevPanel/DevPanel.d.ts +0 -11
  108. package/dist/components/DevPanel/DevPanel.js +0 -72
  109. package/dist/components/DevPanelPortal/DevPanelPortal.d.ts +0 -8
  110. package/dist/components/DevPanelPortal/DevPanelPortal.js +0 -17
  111. package/dist/components/EmptyContent/EmptyContent.d.ts +0 -1
  112. package/dist/components/EmptyContent/EmptyContent.js +0 -18
  113. package/dist/components/Input/Input.d.ts +0 -1
  114. package/dist/components/Input/Input.js +0 -10
  115. package/dist/components/Section/Section.d.ts +0 -7
  116. package/dist/components/Section/Section.js +0 -25
  117. package/dist/components/Select/Select.d.ts +0 -1
  118. package/dist/components/Select/Select.js +0 -10
  119. package/dist/hooks/useDebounceCallback/useDebounceCallback.d.ts +0 -8
  120. package/dist/hooks/useDebounceCallback/useDebounceCallback.js +0 -17
  121. package/dist/hooks/useDevPanel/useDevPanel.d.ts +0 -29
  122. package/dist/hooks/useDevPanel/useDevPanel.js +0 -25218
  123. package/dist/hooks/useDragAndDrop/useDragAndDrop.d.ts +0 -20
  124. package/dist/hooks/useDragAndDrop/useDragAndDrop.js +0 -55
  125. package/dist/hooks/useHotkeys/useHotkeys.d.ts +0 -37
  126. package/dist/hooks/useHotkeys/useHotkeys.js +0 -31
  127. package/dist/managers/index.d.ts +0 -1
  128. package/dist/managers/index.js +0 -4
  129. package/dist/store/ThemeStore.d.ts +0 -68
  130. package/dist/store/ThemeStore.js +0 -102
  131. package/dist/store/index.d.ts +0 -4
  132. package/dist/store/index.js +0 -18
  133. package/dist/utils/index.d.ts +0 -9
  134. package/dist/utils/index.js +0 -20
  135. /package/dist/assets/{ColorControl.css → index12.css} +0 -0
  136. /package/dist/assets/{EmptyContent.css → index3.css} +0 -0
  137. /package/dist/assets/{Section.css → index4.css} +0 -0
  138. /package/dist/assets/{ControlRenderer.css → index5.css} +0 -0
  139. /package/dist/assets/{SeparatorControl.css → index9.css} +0 -0
@@ -1,40 +0,0 @@
1
- import { TextControlProps } from './types';
2
- /**
3
- * Component that renders a text input control with configurable event handling
4
- *
5
- * @param props - The component props
6
- * @param props.control - The text control configuration object
7
- * @param props.control.type - The control type, must be 'text'
8
- * @param props.control.value - The current string value of the text input
9
- * @param props.control.placeholder - Optional placeholder text displayed when input is empty
10
- * @param props.control.event - When to trigger onChange: "onChange" (real-time) or "onBlur" (on focus loss). Defaults to "onChange"
11
- * @param props.control.onChange - Callback function triggered when text value changes
12
- * @param props.control.disabled - Optional flag to disable the control
13
- * @returns JSX element representing the text input control
14
- *
15
- * @example
16
- * ```typescript
17
- * // Real-time updates (default behavior)
18
- * <TextControl control={{
19
- * type: 'text',
20
- * value: 'John Doe',
21
- * placeholder: 'Enter your full name',
22
- * event: 'onChange',
23
- * onChange: (value) => setUserName(value),
24
- * disabled: false
25
- * }} />
26
- * ```
27
- *
28
- * @example
29
- * ```typescript
30
- * // Updates only when losing focus
31
- * <TextControl control={{
32
- * type: 'text',
33
- * value: 'search query',
34
- * placeholder: 'Type to search...',
35
- * event: 'onBlur',
36
- * onChange: (value) => console.log('Search term:', value)
37
- * }} />
38
- * ```
39
- */
40
- export declare function TextControl({ control }: TextControlProps): import("react/jsx-runtime").JSX.Element;
@@ -1,30 +0,0 @@
1
- import { jsx as f } from "react/jsx-runtime";
2
- import { useState as h, useEffect as i } from "react";
3
- import { Input as s } from "../../../Input/Input.js";
4
- function v({ control: e }) {
5
- const n = e.event || "onChange", [l, u] = h(e.value);
6
- function o(t) {
7
- const a = t.target.value;
8
- u(a), n === "onChange" && e.onChange(a);
9
- }
10
- function r(t) {
11
- const a = t.target.value;
12
- n === "onBlur" && e.onChange(a);
13
- }
14
- return i(() => {
15
- u(e.value);
16
- }, [e.value]), /* @__PURE__ */ f(
17
- s,
18
- {
19
- type: "text",
20
- value: l,
21
- placeholder: e.placeholder,
22
- disabled: e.disabled,
23
- onChange: o,
24
- ...n === "onBlur" && { onBlur: r }
25
- }
26
- );
27
- }
28
- export {
29
- v as TextControl
30
- };
@@ -1,11 +0,0 @@
1
- import { DevPanelProps } from './types';
2
- /**
3
- * Development panel component
4
- * @returns The development panel component, if the environment is not development, it will return null
5
- *
6
- * @example
7
- * ```typescript
8
- * <DevPanel />
9
- * ```
10
- */
11
- export declare function DevPanel({ panelTitle, ...props }: DevPanelProps): import("react/jsx-runtime").JSX.Element | null;
@@ -1,72 +0,0 @@
1
- import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
- import { useCallback as D, useEffect as y } from "react";
3
- import { useDragAndDrop as b } from "../../hooks/useDragAndDrop/useDragAndDrop.js";
4
- import { useHotkey as w } from "../../hooks/useHotkeys/useHotkey.js";
5
- import { useDevPanelSections as K } from "../../store/SectionsStore.js";
6
- import { useDevPanelThemeActions as N } from "../../store/ThemeStore.js";
7
- import { useDevPanelUI as k } from "../../store/UIStore.js";
8
- import { className as x } from "../../utils/className/className.js";
9
- import { EmptyContent as E } from "../EmptyContent/EmptyContent.js";
10
- import { Icon as f } from "../Icon/index.js";
11
- import { Section as j } from "../Section/Section.js";
12
- import '../../assets/DevPanel.css';const A = "_devPanelContainer_vacct_132", S = "_header_vacct_171", H = "_title_vacct_186", I = "_button_vacct_197", T = "_collapsed_vacct_233", V = "_content_vacct_240", t = {
13
- devPanelContainer: A,
14
- header: S,
15
- title: H,
16
- button: I,
17
- collapsed: T,
18
- content: V
19
- }, O = {
20
- ctrlKey: !0,
21
- shiftKey: !0,
22
- key: "a",
23
- altKey: !1,
24
- metaKey: !1
25
- };
26
- function Q({ panelTitle: h = "Dev panel", ...o }) {
27
- const { isVisible: s, isCollapsed: n, position: a, setVisible: l, setCollapsed: u, setPosition: c } = k(), { setTheme: r } = N(), v = K(), p = D(
28
- (i) => {
29
- c(i);
30
- },
31
- [c]
32
- ), { isDragging: _, elementRef: C, handlePointerDown: g } = b({
33
- onPositionChange: p
34
- });
35
- if (w({
36
- description: "Show Dev Panel",
37
- preventDefault: !0,
38
- action: () => l(!s),
39
- ...O,
40
- ...o.hotKeyConfig,
41
- target: window
42
- }), y(() => {
43
- o.theme && r(o.theme);
44
- }, [o.theme, r]), !s)
45
- return null;
46
- const m = Object.entries(v);
47
- return /* @__PURE__ */ d(
48
- "div",
49
- {
50
- ref: C,
51
- ...x(t.devPanelContainer, {
52
- [t.dragging]: _
53
- }),
54
- style: {
55
- left: a.x,
56
- top: a.y,
57
- height: n ? "auto" : void 0
58
- },
59
- children: [
60
- /* @__PURE__ */ d("div", { className: t.header, onPointerDown: g, children: [
61
- /* @__PURE__ */ e("button", { className: t.button, onClick: () => u(!n), title: n ? "Expand" : "Collapse", children: /* @__PURE__ */ e(f, { name: "ArrowDown", className: n ? t.collapsed : void 0 }) }),
62
- /* @__PURE__ */ e("div", { className: t.title, children: h }),
63
- /* @__PURE__ */ e("button", { className: t.button, onClick: () => l(!1), title: "Close", children: /* @__PURE__ */ e(f, { name: "Close" }) })
64
- ] }),
65
- !n && /* @__PURE__ */ e("div", { className: t.content, children: m.length ? m.map(([i, P]) => /* @__PURE__ */ e(j, { sectionName: i, section: P }, `section-${i}`)) : /* @__PURE__ */ e(E, {}) })
66
- ]
67
- }
68
- );
69
- }
70
- export {
71
- Q as DevPanel
72
- };
@@ -1,8 +0,0 @@
1
- /**
2
- * Portal component that renders DevPanel using React's createPortal.
3
- * Automatically subscribes to DevPanelManager prop changes and renders
4
- * the DevPanel with merged props into document.body.
5
- *
6
- * @returns DevPanel rendered as a portal in document.body
7
- */
8
- export declare const DevPanelPortal: () => import('react').ReactPortal;
@@ -1,17 +0,0 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import { useState as a, useEffect as m } from "react";
3
- import { createPortal as c } from "react-dom";
4
- import { DevPanelManager as r } from "../../managers/DevPanelManager.js";
5
- import { DevPanel as p } from "../DevPanel/DevPanel.js";
6
- const b = () => {
7
- const [t, e] = a({});
8
- return m(() => {
9
- const o = r.getInstance().getAllProps();
10
- return e(o), r.getInstance().onPropsChange((n) => {
11
- e(n);
12
- });
13
- }, []), c(/* @__PURE__ */ s(p, { ...t }), document.body);
14
- };
15
- export {
16
- b as DevPanelPortal
17
- };
@@ -1 +0,0 @@
1
- export declare function EmptyContent(): import("react/jsx-runtime").JSX.Element;
@@ -1,18 +0,0 @@
1
- import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
- import '../../assets/EmptyContent.css';const s = "_empty_1bkns_1", o = {
3
- empty: s
4
- };
5
- function r() {
6
- return /* @__PURE__ */ t("div", { className: o.empty, children: [
7
- "No controls registered yet.",
8
- /* @__PURE__ */ e("br", {}),
9
- " ",
10
- /* @__PURE__ */ e("br", {}),
11
- "Use ",
12
- /* @__PURE__ */ e("code", { children: "useDevPanel()" }),
13
- " to add controls."
14
- ] });
15
- }
16
- export {
17
- r as EmptyContent
18
- };
@@ -1 +0,0 @@
1
- export declare function Input(props: React.InputHTMLAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +0,0 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import '../../assets/Input.css';const p = "_input_pspvf_132", s = {
3
- input: p
4
- };
5
- function i(t) {
6
- return /* @__PURE__ */ n("input", { ...t, className: s.input });
7
- }
8
- export {
9
- i as Input
10
- };
@@ -1,7 +0,0 @@
1
- import { DevPanelSection } from '../DevPanel/types';
2
- type SectionProps = {
3
- sectionName: string;
4
- section: DevPanelSection;
5
- };
6
- export declare function Section({ sectionName, section }: SectionProps): import("react/jsx-runtime").JSX.Element;
7
- export {};
@@ -1,25 +0,0 @@
1
- import { jsxs as n, jsx as o } from "react/jsx-runtime";
2
- import { ControlRenderer as i } from "../ControlRenderer/ControlRenderer.js";
3
- import { useDevPanelSectionActions as r } from "../../store/SectionsStore.js";
4
- import { Icon as p } from "../Icon/index.js";
5
- import '../../assets/Section.css';const d = "_section_plx7y_1", _ = "_header_plx7y_9", m = "_title_plx7y_28", g = "_toggle_plx7y_35", h = "_collapsed_plx7y_45", x = "_content_plx7y_54", e = {
6
- section: d,
7
- header: _,
8
- title: m,
9
- toggle: g,
10
- collapsed: h,
11
- content: x
12
- };
13
- function N({ sectionName: s, section: t }) {
14
- const { toggleSectionCollapse: c } = r();
15
- return /* @__PURE__ */ n("div", { className: e.section, children: [
16
- /* @__PURE__ */ n("div", { className: e.header, onClick: () => c(s), children: [
17
- /* @__PURE__ */ o("span", { className: e.title, children: t.name }),
18
- /* @__PURE__ */ o("span", { className: e.toggle, children: /* @__PURE__ */ o(p, { name: "ArrowDown", className: t.isCollapsed ? e.collapsed : void 0 }) })
19
- ] }),
20
- !t.isCollapsed && /* @__PURE__ */ o("div", { className: e.content, children: Object.entries(t.controls).map(([l, a]) => /* @__PURE__ */ o(i, { name: l, control: a }, l)) })
21
- ] });
22
- }
23
- export {
24
- N as Section
25
- };
@@ -1 +0,0 @@
1
- export declare function Select(props: React.SelectHTMLAttributes<HTMLSelectElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +0,0 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import '../../assets/Select.css';const s = "_select_ia86w_132", c = {
3
- select: s
4
- };
5
- function o(e) {
6
- return /* @__PURE__ */ t("select", { ...e, className: c.select });
7
- }
8
- export {
9
- o as Select
10
- };
@@ -1,8 +0,0 @@
1
- /**
2
- * Creates a debounced version of a callback.
3
- *
4
- * @param callback - Function to debounce
5
- * @param delay - Delay in ms before calling the callback
6
- * @returns A debounced version of the callback
7
- */
8
- export declare function useDebouncedCallback<T extends (...args: Parameters<T>) => void>(callback: T, delay: number): (...args: Parameters<T>) => void;
@@ -1,17 +0,0 @@
1
- import { useRef as n, useEffect as c, useCallback as o } from "react";
2
- function f(r, t) {
3
- const e = n(null);
4
- return c(() => () => {
5
- e.current && clearTimeout(e.current);
6
- }, []), o(
7
- (...u) => {
8
- e.current && clearTimeout(e.current), e.current = window.setTimeout(() => {
9
- r(...u);
10
- }, t);
11
- },
12
- [r, t]
13
- );
14
- }
15
- export {
16
- f as useDebouncedCallback
17
- };
@@ -1,29 +0,0 @@
1
- import { ControlsGroup } from '../../components/ControlRenderer/controls/types';
2
- import { DevPanelProps } from '../../components/DevPanel/types';
3
- /**
4
- * Hook to register controls in the dev panel with auto-mounting
5
- * @param sectionName - Section name (e.g: 'Global', 'HomePage')
6
- * @param controls - Controls configuration object
7
- * @param devPanelProps - Optional DevPanel configuration (title, hotkey, theme)
8
- *
9
- * @example
10
- * ```typescript
11
- * useDevPanel('Global', {
12
- * theme: {
13
- * type: 'select',
14
- * value: 'light',
15
- * options: ['light', 'dark'],
16
- * onChange: setTheme
17
- * },
18
- * debugMode: {
19
- * type: 'boolean',
20
- * value: false,
21
- * onChange: setDebugMode
22
- * }
23
- * }, {
24
- * panelTitle: 'My App Controls',
25
- * theme: 'dark'
26
- * });
27
- * ```
28
- */
29
- export declare function useDevPanel(sectionName: string, controls: ControlsGroup, devPanelProps?: DevPanelProps): void;