@berenjena/react-dev-panel 2.0.0 → 2.1.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 (128) hide show
  1. package/README.md +75 -52
  2. package/dist/assets/index.css +1 -1
  3. package/dist/assets/index11.css +1 -0
  4. package/dist/assets/index12.css +1 -0
  5. package/dist/assets/index13.css +1 -0
  6. package/dist/assets/index2.css +1 -0
  7. package/dist/assets/index6.css +1 -0
  8. package/dist/assets/index7.css +1 -0
  9. package/dist/assets/{RangeControl.css → index9.css} +1 -1
  10. package/dist/components/ControlRenderer/controls/BooleanControl/index.d.ts +32 -1
  11. package/dist/components/ControlRenderer/controls/BooleanControl/index.js +24 -2
  12. package/dist/components/ControlRenderer/controls/ButtonControl/index.d.ts +33 -1
  13. package/dist/components/ControlRenderer/controls/ButtonControl/index.js +8 -2
  14. package/dist/components/ControlRenderer/controls/ButtonGroupControl/index.d.ts +37 -1
  15. package/dist/components/ControlRenderer/controls/ButtonGroupControl/index.js +20 -2
  16. package/dist/components/ControlRenderer/controls/ColorControl/index.d.ts +23 -1
  17. package/dist/components/ControlRenderer/controls/ColorControl/index.js +67 -2
  18. package/dist/components/ControlRenderer/controls/DateControl/index.d.ts +41 -1
  19. package/dist/components/ControlRenderer/controls/DateControl/index.js +29 -2
  20. package/dist/components/ControlRenderer/controls/MultiSelectControl/index.d.ts +28 -1
  21. package/dist/components/ControlRenderer/controls/MultiSelectControl/index.js +16 -2
  22. package/dist/components/ControlRenderer/controls/NumberControl/index.d.ts +45 -1
  23. package/dist/components/ControlRenderer/controls/NumberControl/index.js +30 -2
  24. package/dist/components/ControlRenderer/controls/RangeControl/index.d.ts +46 -1
  25. package/dist/components/ControlRenderer/controls/RangeControl/index.js +38 -2
  26. package/dist/components/ControlRenderer/controls/SelectControl/index.d.ts +39 -1
  27. package/dist/components/ControlRenderer/controls/SelectControl/index.js +6 -2
  28. package/dist/components/ControlRenderer/controls/SeparatorControl/index.d.ts +39 -1
  29. package/dist/components/ControlRenderer/controls/SeparatorControl/index.js +12 -2
  30. package/dist/components/ControlRenderer/controls/TextControl/index.d.ts +40 -1
  31. package/dist/components/ControlRenderer/controls/TextControl/index.js +28 -2
  32. package/dist/components/ControlRenderer/index.d.ts +6 -1
  33. package/dist/components/ControlRenderer/index.js +50 -2
  34. package/dist/components/DevPanel/index.d.ts +11 -1
  35. package/dist/components/DevPanel/index.js +69 -2
  36. package/dist/components/DevPanel/types.d.ts +13 -6
  37. package/dist/components/DevPanelPortal/index.d.ts +9 -1
  38. package/dist/components/DevPanelPortal/index.js +15 -2
  39. package/dist/components/EmptyContent/index.d.ts +1 -1
  40. package/dist/components/EmptyContent/index.js +17 -2
  41. package/dist/components/Icon/index.d.ts +3 -3
  42. package/dist/components/Input/index.d.ts +1 -1
  43. package/dist/components/Input/index.js +8 -2
  44. package/dist/components/Section/index.d.ts +7 -1
  45. package/dist/components/Section/index.js +23 -2
  46. package/dist/components/Select/index.d.ts +15 -1
  47. package/dist/components/Select/index.js +176 -2
  48. package/dist/components/index.js +3 -3
  49. package/dist/hooks/useDebounceCallback/index.d.ts +8 -1
  50. package/dist/hooks/useDebounceCallback/index.js +15 -2
  51. package/dist/hooks/useDevPanel/index.d.ts +29 -1
  52. package/dist/hooks/useDevPanel/index.js +22 -2
  53. package/dist/hooks/useDragAndDrop/index.d.ts +20 -1
  54. package/dist/hooks/useDragAndDrop/index.js +53 -2
  55. package/dist/hooks/{useHotkeys/useHotkey.d.ts → useHotKey/index.d.ts} +1 -1
  56. package/dist/hooks/{useHotkeys/useHotkey.js → useHotKey/index.js} +1 -1
  57. package/dist/hooks/useHotkeys/index.d.ts +37 -2
  58. package/dist/hooks/useHotkeys/index.js +29 -4
  59. package/dist/index.js +1 -1
  60. package/dist/store/UIStore.d.ts +78 -2
  61. package/dist/store/UIStore.js +95 -34
  62. package/dist/utils/getPositionAdjustment/getPositionAdjustment.d.ts +3 -2
  63. package/dist/utils/getPositionAdjustment/getPositionAdjustment.js +1 -4
  64. package/package.json +43 -29
  65. package/dist/assets/BooleanControl.css +0 -1
  66. package/dist/assets/ButtonControl.css +0 -1
  67. package/dist/assets/ButtonGroupControl.css +0 -1
  68. package/dist/assets/DevPanel.css +0 -1
  69. package/dist/assets/Input.css +0 -1
  70. package/dist/assets/MultiSelectControl.css +0 -1
  71. package/dist/assets/Select.css +0 -1
  72. package/dist/components/ControlRenderer/ControlRenderer.d.ts +0 -6
  73. package/dist/components/ControlRenderer/ControlRenderer.js +0 -52
  74. package/dist/components/ControlRenderer/controls/BooleanControl/BooleanControl.d.ts +0 -32
  75. package/dist/components/ControlRenderer/controls/BooleanControl/BooleanControl.js +0 -26
  76. package/dist/components/ControlRenderer/controls/ButtonControl/ButtonControl.d.ts +0 -33
  77. package/dist/components/ControlRenderer/controls/ButtonControl/ButtonControl.js +0 -10
  78. package/dist/components/ControlRenderer/controls/ButtonGroupControl/ButtonGroupControl.d.ts +0 -37
  79. package/dist/components/ControlRenderer/controls/ButtonGroupControl/ButtonGroupControl.js +0 -22
  80. package/dist/components/ControlRenderer/controls/ColorControl/ColorControl.d.ts +0 -23
  81. package/dist/components/ControlRenderer/controls/ColorControl/ColorControl.js +0 -69
  82. package/dist/components/ControlRenderer/controls/DateControl/DateControl.d.ts +0 -41
  83. package/dist/components/ControlRenderer/controls/DateControl/DateControl.js +0 -31
  84. package/dist/components/ControlRenderer/controls/MultiSelectControl/MultiSelectControl.d.ts +0 -28
  85. package/dist/components/ControlRenderer/controls/MultiSelectControl/MultiSelectControl.js +0 -131
  86. package/dist/components/ControlRenderer/controls/NumberControl/NumberControl.d.ts +0 -45
  87. package/dist/components/ControlRenderer/controls/NumberControl/NumberControl.js +0 -32
  88. package/dist/components/ControlRenderer/controls/RangeControl/RangeControl.d.ts +0 -46
  89. package/dist/components/ControlRenderer/controls/RangeControl/RangeControl.js +0 -40
  90. package/dist/components/ControlRenderer/controls/SelectControl/SelectControl.d.ts +0 -39
  91. package/dist/components/ControlRenderer/controls/SelectControl/SelectControl.js +0 -11
  92. package/dist/components/ControlRenderer/controls/SeparatorControl/SeparatorControl.d.ts +0 -39
  93. package/dist/components/ControlRenderer/controls/SeparatorControl/SeparatorControl.js +0 -14
  94. package/dist/components/ControlRenderer/controls/TextControl/TextControl.d.ts +0 -40
  95. package/dist/components/ControlRenderer/controls/TextControl/TextControl.js +0 -30
  96. package/dist/components/DevPanel/DevPanel.d.ts +0 -11
  97. package/dist/components/DevPanel/DevPanel.js +0 -72
  98. package/dist/components/DevPanelPortal/DevPanelPortal.d.ts +0 -8
  99. package/dist/components/DevPanelPortal/DevPanelPortal.js +0 -17
  100. package/dist/components/EmptyContent/EmptyContent.d.ts +0 -1
  101. package/dist/components/EmptyContent/EmptyContent.js +0 -18
  102. package/dist/components/Input/Input.d.ts +0 -1
  103. package/dist/components/Input/Input.js +0 -10
  104. package/dist/components/Section/Section.d.ts +0 -7
  105. package/dist/components/Section/Section.js +0 -25
  106. package/dist/components/Select/Select.d.ts +0 -1
  107. package/dist/components/Select/Select.js +0 -10
  108. package/dist/hooks/useDebounceCallback/useDebounceCallback.d.ts +0 -8
  109. package/dist/hooks/useDebounceCallback/useDebounceCallback.js +0 -17
  110. package/dist/hooks/useDevPanel/useDevPanel.d.ts +0 -29
  111. package/dist/hooks/useDevPanel/useDevPanel.js +0 -25218
  112. package/dist/hooks/useDragAndDrop/useDragAndDrop.d.ts +0 -20
  113. package/dist/hooks/useDragAndDrop/useDragAndDrop.js +0 -55
  114. package/dist/hooks/useHotkeys/useHotkeys.d.ts +0 -37
  115. package/dist/hooks/useHotkeys/useHotkeys.js +0 -31
  116. package/dist/managers/index.d.ts +0 -1
  117. package/dist/managers/index.js +0 -4
  118. package/dist/store/ThemeStore.d.ts +0 -68
  119. package/dist/store/ThemeStore.js +0 -102
  120. package/dist/store/index.d.ts +0 -4
  121. package/dist/store/index.js +0 -18
  122. package/dist/utils/index.d.ts +0 -9
  123. package/dist/utils/index.js +0 -20
  124. /package/dist/assets/{ColorControl.css → index10.css} +0 -0
  125. /package/dist/assets/{EmptyContent.css → index3.css} +0 -0
  126. /package/dist/assets/{Section.css → index4.css} +0 -0
  127. /package/dist/assets/{ControlRenderer.css → index5.css} +0 -0
  128. /package/dist/assets/{SeparatorControl.css → index8.css} +0 -0
@@ -1,20 +0,0 @@
1
- import { Position } from '../../components/DevPanel/types';
2
- export interface UseDragAndDropProps {
3
- /**
4
- * Callback function to handle position changes during dragging
5
- * @param position - The new position of the draggable element
6
- */
7
- onPositionChange: (position: Position) => void;
8
- }
9
- /**
10
- * Custom hook to handle drag and drop functionality
11
- * Separates the drag logic from the main component
12
- * Includes boundary constraints and window resize handling
13
- */
14
- export declare function useDragAndDrop({ onPositionChange }: UseDragAndDropProps): {
15
- isDragging: boolean;
16
- elementRef: import('react').RefObject<HTMLDivElement | null>;
17
- handlePointerDown: (e: React.PointerEvent) => void;
18
- stopDragging: () => void;
19
- adjustPositionForResize: () => void;
20
- };
@@ -1,55 +0,0 @@
1
- import { useRef as g, useState as p, useCallback as u, useEffect as f } from "react";
2
- import { debounce as E } from "../../utils/debounce/debounce.js";
3
- import { getConstrainedPosition as D } from "../../utils/getConstrainedPosition/getConstrainedPosition.js";
4
- import { getPositionAdjustment as L } from "../../utils/getPositionAdjustment/getPositionAdjustment.js";
5
- function R({ onPositionChange: s }) {
6
- const o = g(null), [t, a] = p(!1), [c, l] = p({ x: 0, y: 0 }), d = u(() => {
7
- const e = o.current;
8
- if (!e) return;
9
- const { constrainedPosition: n, needsAdjustment: m } = L(e);
10
- m && s(n);
11
- }, [s]), i = u(
12
- (e) => {
13
- if (!t || !o.current) return;
14
- const n = {
15
- x: e.clientX - c.x,
16
- y: e.clientY - c.y
17
- }, m = D(n, o.current);
18
- s(m);
19
- },
20
- [t, c.x, c.y, s]
21
- ), r = u(() => {
22
- a(!1);
23
- }, []), v = u((e) => {
24
- if (e.target !== e.currentTarget) return;
25
- e.preventDefault(), a(!0);
26
- const n = o.current?.getBoundingClientRect();
27
- n && l({
28
- x: e.clientX - n.left,
29
- y: e.clientY - n.top
30
- });
31
- }, []);
32
- return f(() => {
33
- if (!t) return;
34
- const e = { passive: !0 };
35
- return document.addEventListener("pointermove", i, e), document.addEventListener("pointerup", r, e), () => {
36
- document.removeEventListener("pointermove", i), document.removeEventListener("pointerup", r);
37
- };
38
- }, [t, i, r]), f(() => {
39
- const e = E(d, 100);
40
- return window.addEventListener("resize", e), () => {
41
- window.removeEventListener("resize", e);
42
- };
43
- }, [d]), f(() => () => {
44
- t && (document.removeEventListener("pointermove", i), document.removeEventListener("pointerup", r));
45
- }, [t, i, r]), {
46
- isDragging: t,
47
- elementRef: o,
48
- handlePointerDown: v,
49
- stopDragging: r,
50
- adjustPositionForResize: d
51
- };
52
- }
53
- export {
54
- R as useDragAndDrop
55
- };
@@ -1,37 +0,0 @@
1
- import { HotkeyConfig, UseHotkeysOptions } from './types';
2
- /**
3
- * Hook for handling keyboard shortcuts (hotkeys) with support for modifier keys
4
- * and multiple key combinations.
5
- *
6
- * @param hotkeys - Array of hotkey configurations
7
- * @param options - Global options for all hotkeys
8
- *
9
- * @example
10
- * // Basic usage
11
- * useHotkeys([
12
- * { key: 'Enter', action: handleSubmit },
13
- * { key: 'Escape', action: handleCancel }
14
- * ]);
15
- *
16
- * @example
17
- * // With modifier keys
18
- * useHotkeys([
19
- * { key: 's', ctrlKey: true, action: handleSave, description: 'Save' },
20
- * { key: 'k', metaKey: true, action: handleSearch, description: 'Search' },
21
- * { key: 'z', ctrlKey: true, action: handleUndo, description: 'Undo' },
22
- * { key: 'z', ctrlKey: true, shiftKey: true, action: handleRedo, description: 'Redo' }
23
- * ]);
24
- *
25
- * @example
26
- * // With individual configuration
27
- * useHotkeys([
28
- * {
29
- * key: 'Delete',
30
- * action: handleDelete,
31
- * preventDefault: true,
32
- * enabled: canDelete,
33
- * description: 'Delete item'
34
- * }
35
- * ]);
36
- */
37
- export declare function useHotkeys(hotkeys: HotkeyConfig[], options?: UseHotkeysOptions): void;
@@ -1,31 +0,0 @@
1
- import { useRef as K, useCallback as y, useEffect as w } from "react";
2
- function M(h, p = {}) {
3
- const { enabled: a = !0, target: c = window, preventDefault: f = !1, stopPropagation: l = !1 } = p, u = K([]);
4
- u.current = h;
5
- const i = y((t, e) => {
6
- const o = t.key.toLowerCase() === e.key.toLowerCase(), n = !!e.ctrlKey === t.ctrlKey, s = !!e.shiftKey === t.shiftKey, d = !!e.altKey === t.altKey, k = !!e.metaKey === t.metaKey;
7
- return o && n && s && d && k;
8
- }, []), r = y(
9
- (t) => {
10
- if (!a) return;
11
- const e = t;
12
- for (const o of u.current)
13
- if (o.enabled !== !1 && i(e, o)) {
14
- const n = o.preventDefault ?? f, s = o.stopPropagation ?? l;
15
- n && t.preventDefault(), s && t.stopPropagation(), o.action(e);
16
- break;
17
- }
18
- },
19
- [a, f, l, i]
20
- );
21
- w(() => {
22
- const t = c;
23
- if (!(!t || !a))
24
- return t.addEventListener("keydown", r), () => {
25
- t.removeEventListener("keydown", r);
26
- };
27
- }, [c, a, r]);
28
- }
29
- export {
30
- M as useHotkeys
31
- };
@@ -1 +0,0 @@
1
- export { DevPanelManager } from './DevPanelManager';
@@ -1,4 +0,0 @@
1
- import { DevPanelManager as r } from "./DevPanelManager.js";
2
- export {
3
- r as DevPanelManager
4
- };
@@ -1,68 +0,0 @@
1
- interface ThemeState {
2
- currentTheme: string;
3
- }
4
- /**
5
- * React hook that provides access to the complete dev panel theme state and actions.
6
- * Uses useSyncExternalStore for optimal performance and React 18 compatibility.
7
- *
8
- * @returns Object containing the current theme state and all available theme actions
9
- *
10
- * @example
11
- * ```typescript
12
- * const {
13
- * currentTheme,
14
- * setTheme,
15
- * resetTheme
16
- * } = useDevPanelTheme();
17
- *
18
- * // Set a specific theme
19
- * setTheme("dark");
20
- *
21
- * // Reset to auto theme
22
- * resetTheme();
23
- * ```
24
- */
25
- export declare function useDevPanelTheme(): ThemeState & {
26
- setTheme: (theme: string) => void;
27
- resetTheme: () => void;
28
- getCurrentTheme: () => string;
29
- };
30
- /**
31
- * React hook that subscribes only to the current theme state.
32
- * Optimized for components that only need to know the current theme.
33
- *
34
- * @returns String indicating the current theme name
35
- *
36
- * @example
37
- * ```typescript
38
- * const currentTheme = useCurrentTheme();
39
- * console.log(`Current theme is: ${currentTheme}`);
40
- * ```
41
- */
42
- export declare function useCurrentTheme(): string;
43
- /**
44
- * React hook that provides access to all dev panel theme actions without subscribing to state.
45
- * Ideal for components that only need to trigger theme actions without rendering on state changes.
46
- *
47
- * @returns Object containing all available theme actions
48
- *
49
- * @example
50
- * ```typescript
51
- * const { setTheme, resetTheme } = useDevPanelThemeActions();
52
- *
53
- * // Switch to dark theme
54
- * setTheme("dark");
55
- *
56
- * // Switch to neon theme
57
- * setTheme("neon");
58
- *
59
- * // Reset to auto theme
60
- * resetTheme();
61
- * ```
62
- */
63
- export declare function useDevPanelThemeActions(): {
64
- setTheme: (theme: string) => void;
65
- resetTheme: () => void;
66
- getCurrentTheme: () => string;
67
- };
68
- export {};
@@ -1,102 +0,0 @@
1
- import { useSyncExternalStore as n } from "react";
2
- import { BaseStoreService as h } from "./BaseStoreService.js";
3
- const m = "dev-panel-theme-storage", u = {
4
- currentTheme: "auto"
5
- };
6
- class o extends h {
7
- /**
8
- * Creates a new DevPanelThemeService instance and loads persisted theme from localStorage.
9
- */
10
- constructor() {
11
- super(m, u, !0, !0), this.applyTheme(this.getSnapshot().currentTheme);
12
- }
13
- /**
14
- * Transforms current state to persistable format.
15
- *
16
- * @param state - The current theme state
17
- * @returns The state in persistable format
18
- * @protected
19
- */
20
- toPersistableState(e) {
21
- return {
22
- currentTheme: e.currentTheme
23
- };
24
- }
25
- /**
26
- * Transforms persisted state back to current state format.
27
- *
28
- * @param persistedState - The persisted theme state
29
- * @param defaultState - The default state to fall back to
30
- * @returns The state in current format
31
- * @protected
32
- */
33
- fromPersistedState(e, r) {
34
- return {
35
- ...r,
36
- currentTheme: e.currentTheme || r.currentTheme
37
- };
38
- }
39
- /**
40
- * Gets the service name for error messages.
41
- *
42
- * @returns The service name
43
- * @protected
44
- */
45
- getServiceName() {
46
- return "theme";
47
- }
48
- /**
49
- * Applies the theme to the document root element using data attributes.
50
- *
51
- * @param theme - Theme name to apply
52
- * @private
53
- */
54
- applyTheme(e) {
55
- const r = document.documentElement;
56
- e === "auto" || e === "" ? r.removeAttribute("data-dev-panel-theme") : r.setAttribute("data-dev-panel-theme", e);
57
- }
58
- /**
59
- * Sets the current theme and applies it to the document.
60
- *
61
- * @param theme - Theme name to set
62
- */
63
- setTheme = (e) => {
64
- this.setState((r) => ({ ...r, currentTheme: e })), this.applyTheme(e);
65
- };
66
- /**
67
- * Resets the theme to the default "auto" theme.
68
- */
69
- resetTheme = () => {
70
- this.setTheme("auto");
71
- };
72
- /**
73
- * Gets the current theme name.
74
- *
75
- * @returns The current theme name
76
- */
77
- getCurrentTheme = () => this.getSnapshot().currentTheme;
78
- }
79
- const t = new o();
80
- function c() {
81
- return {
82
- ...n(t.subscribe, t.getSnapshot),
83
- setTheme: t.setTheme,
84
- resetTheme: t.resetTheme,
85
- getCurrentTheme: t.getCurrentTheme
86
- };
87
- }
88
- function i() {
89
- return n(t.subscribe, () => t.getSnapshot().currentTheme);
90
- }
91
- function p() {
92
- return {
93
- setTheme: t.setTheme,
94
- resetTheme: t.resetTheme,
95
- getCurrentTheme: t.getCurrentTheme
96
- };
97
- }
98
- export {
99
- i as useCurrentTheme,
100
- c as useDevPanelTheme,
101
- p as useDevPanelThemeActions
102
- };
@@ -1,4 +0,0 @@
1
- export * from './BaseStoreService';
2
- export * from './SectionsStore';
3
- export * from './ThemeStore';
4
- export * from './UIStore';
@@ -1,18 +0,0 @@
1
- import { BaseStoreService as o } from "./BaseStoreService.js";
2
- import { useDevPanelSectionActions as l, useDevPanelSections as r } from "./SectionsStore.js";
3
- import { useCurrentTheme as a, useDevPanelTheme as u, useDevPanelThemeActions as v } from "./ThemeStore.js";
4
- import { useDevPanelCollapsed as i, useDevPanelPosition as D, useDevPanelStore as m, useDevPanelUI as c, useDevPanelUIActions as p, useDevPanelVisible as S } from "./UIStore.js";
5
- export {
6
- o as BaseStoreService,
7
- a as useCurrentTheme,
8
- i as useDevPanelCollapsed,
9
- D as useDevPanelPosition,
10
- l as useDevPanelSectionActions,
11
- r as useDevPanelSections,
12
- m as useDevPanelStore,
13
- u as useDevPanelTheme,
14
- v as useDevPanelThemeActions,
15
- c as useDevPanelUI,
16
- p as useDevPanelUIActions,
17
- S as useDevPanelVisible
18
- };
@@ -1,9 +0,0 @@
1
- export * from './className';
2
- export * from './createHotkey';
3
- export * from './debounce';
4
- export * from './formatHotkey';
5
- export * from './getConstrainedPosition';
6
- export * from './getCurrentElementPosition';
7
- export * from './getPositionAdjustment';
8
- export * from './hasControlChanged';
9
- export * from './isMacOS';
@@ -1,20 +0,0 @@
1
- import { className as t } from "./className/className.js";
2
- import { createHotkey as m } from "./createHotkey/createHotkey.js";
3
- import { debounce as f } from "./debounce/debounce.js";
4
- import { formatHotkey as p } from "./formatHotkey/formatHotkey.js";
5
- import { getConstrainedPosition as a } from "./getConstrainedPosition/getConstrainedPosition.js";
6
- import { getCurrentElementPosition as c } from "./getCurrentElementPosition/getCurrentElementPosition.js";
7
- import { getPositionAdjustment as g } from "./getPositionAdjustment/getPositionAdjustment.js";
8
- import { hasControlsChanged as l } from "./hasControlChanged/hasControlChanged.js";
9
- import { isMacOS as P } from "./isMacOS/isMacOS.js";
10
- export {
11
- t as className,
12
- m as createHotkey,
13
- f as debounce,
14
- p as formatHotkey,
15
- a as getConstrainedPosition,
16
- c as getCurrentElementPosition,
17
- g as getPositionAdjustment,
18
- l as hasControlsChanged,
19
- P as isMacOS
20
- };
File without changes
File without changes
File without changes
File without changes