@oh-just-another/react-ui 0.57.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.
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/README.md +54 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/bottom-sheet.d.ts +26 -0
- package/dist/bottom-sheet.d.ts.map +1 -0
- package/dist/bottom-sheet.js +87 -0
- package/dist/bottom-sheet.js.map +1 -0
- package/dist/button-group.d.ts +14 -0
- package/dist/button-group.d.ts.map +1 -0
- package/dist/button-group.js +3 -0
- package/dist/button-group.js.map +1 -0
- package/dist/color-palette.d.ts +34 -0
- package/dist/color-palette.d.ts.map +1 -0
- package/dist/color-palette.js +77 -0
- package/dist/color-palette.js.map +1 -0
- package/dist/color-swatch-picker.d.ts +29 -0
- package/dist/color-swatch-picker.d.ts.map +1 -0
- package/dist/color-swatch-picker.js +56 -0
- package/dist/color-swatch-picker.js.map +1 -0
- package/dist/command-palette.d.ts +13 -0
- package/dist/command-palette.d.ts.map +1 -0
- package/dist/command-palette.js +146 -0
- package/dist/command-palette.js.map +1 -0
- package/dist/comments-panel.d.ts +27 -0
- package/dist/comments-panel.d.ts.map +1 -0
- package/dist/comments-panel.js +139 -0
- package/dist/comments-panel.js.map +1 -0
- package/dist/constants.d.ts +112 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +119 -0
- package/dist/constants.js.map +1 -0
- package/dist/context-menu-controller.d.ts +41 -0
- package/dist/context-menu-controller.d.ts.map +1 -0
- package/dist/context-menu-controller.js +26 -0
- package/dist/context-menu-controller.js.map +1 -0
- package/dist/context-menu.d.ts +53 -0
- package/dist/context-menu.d.ts.map +1 -0
- package/dist/context-menu.js +333 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +95 -0
- package/dist/context.js.map +1 -0
- package/dist/diagram-bars.d.ts +21 -0
- package/dist/diagram-bars.d.ts.map +1 -0
- package/dist/diagram-bars.js +4 -0
- package/dist/diagram-bars.js.map +1 -0
- package/dist/diagram-canvas.d.ts +39 -0
- package/dist/diagram-canvas.d.ts.map +1 -0
- package/dist/diagram-canvas.js +9 -0
- package/dist/diagram-canvas.js.map +1 -0
- package/dist/diagram-root.d.ts +70 -0
- package/dist/diagram-root.d.ts.map +1 -0
- package/dist/diagram-root.js +180 -0
- package/dist/diagram-root.js.map +1 -0
- package/dist/diff-panel.d.ts +25 -0
- package/dist/diff-panel.d.ts.map +1 -0
- package/dist/diff-panel.js +77 -0
- package/dist/diff-panel.js.map +1 -0
- package/dist/edge-style-panel.d.ts +19 -0
- package/dist/edge-style-panel.d.ts.map +1 -0
- package/dist/edge-style-panel.js +120 -0
- package/dist/edge-style-panel.js.map +1 -0
- package/dist/frame-name-editor-overlay.d.ts +13 -0
- package/dist/frame-name-editor-overlay.d.ts.map +1 -0
- package/dist/frame-name-editor-overlay.js +84 -0
- package/dist/frame-name-editor-overlay.js.map +1 -0
- package/dist/frame-panel.d.ts +19 -0
- package/dist/frame-panel.d.ts.map +1 -0
- package/dist/frame-panel.js +66 -0
- package/dist/frame-panel.js.map +1 -0
- package/dist/help-button.d.ts +16 -0
- package/dist/help-button.d.ts.map +1 -0
- package/dist/help-button.js +14 -0
- package/dist/help-button.js.map +1 -0
- package/dist/help-dialog.d.ts +56 -0
- package/dist/help-dialog.d.ts.map +1 -0
- package/dist/help-dialog.js +142 -0
- package/dist/help-dialog.js.map +1 -0
- package/dist/hooks.d.ts +54 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +85 -0
- package/dist/hooks.js.map +1 -0
- package/dist/icon-button.d.ts +28 -0
- package/dist/icon-button.d.ts.map +1 -0
- package/dist/icon-button.js +14 -0
- package/dist/icon-button.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/layer-panel.d.ts +13 -0
- package/dist/layer-panel.d.ts.map +1 -0
- package/dist/layer-panel.js +109 -0
- package/dist/layer-panel.js.map +1 -0
- package/dist/library-panel.d.ts +33 -0
- package/dist/library-panel.d.ts.map +1 -0
- package/dist/library-panel.js +37 -0
- package/dist/library-panel.js.map +1 -0
- package/dist/link-caption-editor.d.ts +8 -0
- package/dist/link-caption-editor.d.ts.map +1 -0
- package/dist/link-caption-editor.js +65 -0
- package/dist/link-caption-editor.js.map +1 -0
- package/dist/link-drop-shape-menu.d.ts +12 -0
- package/dist/link-drop-shape-menu.d.ts.map +1 -0
- package/dist/link-drop-shape-menu.js +55 -0
- package/dist/link-drop-shape-menu.js.map +1 -0
- package/dist/link-hover-popup.d.ts +2 -0
- package/dist/link-hover-popup.d.ts.map +1 -0
- package/dist/link-hover-popup.js +96 -0
- package/dist/link-hover-popup.js.map +1 -0
- package/dist/main-menu.d.ts +67 -0
- package/dist/main-menu.d.ts.map +1 -0
- package/dist/main-menu.js +243 -0
- package/dist/main-menu.js.map +1 -0
- package/dist/markdown.d.ts +10 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +131 -0
- package/dist/markdown.js.map +1 -0
- package/dist/merge-dialog.d.ts +22 -0
- package/dist/merge-dialog.d.ts.map +1 -0
- package/dist/merge-dialog.js +46 -0
- package/dist/merge-dialog.js.map +1 -0
- package/dist/modal.d.ts +19 -0
- package/dist/modal.d.ts.map +1 -0
- package/dist/modal.js +87 -0
- package/dist/modal.js.map +1 -0
- package/dist/palette.d.ts +73 -0
- package/dist/palette.d.ts.map +1 -0
- package/dist/palette.js +330 -0
- package/dist/palette.js.map +1 -0
- package/dist/popover.d.ts +33 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +107 -0
- package/dist/popover.js.map +1 -0
- package/dist/property-panel.d.ts +32 -0
- package/dist/property-panel.d.ts.map +1 -0
- package/dist/property-panel.js +728 -0
- package/dist/property-panel.js.map +1 -0
- package/dist/reset-to-content-button.d.ts +10 -0
- package/dist/reset-to-content-button.d.ts.map +1 -0
- package/dist/reset-to-content-button.js +62 -0
- package/dist/reset-to-content-button.js.map +1 -0
- package/dist/segmented-control.d.ts +23 -0
- package/dist/segmented-control.d.ts.map +1 -0
- package/dist/segmented-control.js +5 -0
- package/dist/segmented-control.js.map +1 -0
- package/dist/selection-floating-panel.d.ts +56 -0
- package/dist/selection-floating-panel.d.ts.map +1 -0
- package/dist/selection-floating-panel.js +251 -0
- package/dist/selection-floating-panel.js.map +1 -0
- package/dist/sidebar.d.ts +31 -0
- package/dist/sidebar.d.ts.map +1 -0
- package/dist/sidebar.js +66 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/slider.d.ts +20 -0
- package/dist/slider.d.ts.map +1 -0
- package/dist/slider.js +9 -0
- package/dist/slider.js.map +1 -0
- package/dist/text-editor-overlay.d.ts +16 -0
- package/dist/text-editor-overlay.d.ts.map +1 -0
- package/dist/text-editor-overlay.js +112 -0
- package/dist/text-editor-overlay.js.map +1 -0
- package/dist/toast.d.ts +34 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +89 -0
- package/dist/toast.js.map +1 -0
- package/dist/toolbar.d.ts +149 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +282 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/tooltip.d.ts +21 -0
- package/dist/tooltip.d.ts.map +1 -0
- package/dist/tooltip.js +217 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/ui-layer.d.ts +22 -0
- package/dist/ui-layer.d.ts.map +1 -0
- package/dist/ui-layer.js +3 -0
- package/dist/ui-layer.js.map +1 -0
- package/dist/versioning.d.ts +32 -0
- package/dist/versioning.d.ts.map +1 -0
- package/dist/versioning.js +206 -0
- package/dist/versioning.js.map +1 -0
- package/package.json +81 -0
- package/src/styles.css +1502 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../src/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,OAAO,GAAI,oGASrB,YAAY,4CAkHd,CAAC"}
|
package/dist/popover.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
|
|
3
|
+
import { cloneElement, isValidElement, useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, } from "react";
|
|
4
|
+
import { createPortal } from "react-dom";
|
|
5
|
+
import { POPOVER_OFFSET_PX } from "./constants.js";
|
|
6
|
+
export const Popover = ({ trigger, children, placement = "bottom-start", offset: gap = POPOVER_OFFSET_PX, className, open: openProp, onOpenChange, ariaLabel, }) => {
|
|
7
|
+
const [openState, setOpenState] = useState(false);
|
|
8
|
+
const controlled = openProp !== undefined;
|
|
9
|
+
const open = controlled ? openProp : openState;
|
|
10
|
+
const setOpen = useCallback((next) => {
|
|
11
|
+
if (!controlled)
|
|
12
|
+
setOpenState(next);
|
|
13
|
+
onOpenChange?.(next);
|
|
14
|
+
}, [controlled, onOpenChange]);
|
|
15
|
+
const id = useId();
|
|
16
|
+
const triggerRef = useRef(null);
|
|
17
|
+
const popoverRef = useRef(null);
|
|
18
|
+
// Position recompute. `autoUpdate` watches scroll / resize and calls
|
|
19
|
+
// back; this re-runs `computePosition`. Re-runs after every render
|
|
20
|
+
// where `open` flipped to true (anchors might have moved while closed).
|
|
21
|
+
useLayoutEffect(() => {
|
|
22
|
+
if (!open)
|
|
23
|
+
return;
|
|
24
|
+
const t = triggerRef.current;
|
|
25
|
+
const p = popoverRef.current;
|
|
26
|
+
if (!t || !p)
|
|
27
|
+
return;
|
|
28
|
+
const update = () => {
|
|
29
|
+
void computePosition(t, p, {
|
|
30
|
+
placement,
|
|
31
|
+
middleware: [offset(gap), flip(), shift({ padding: 6 })],
|
|
32
|
+
}).then(({ x, y }) => {
|
|
33
|
+
p.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
update();
|
|
37
|
+
const cleanup = autoUpdate(t, p, update);
|
|
38
|
+
return cleanup;
|
|
39
|
+
}, [open, placement, gap]);
|
|
40
|
+
// Outside-click + Escape close. Bound only while open.
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!open)
|
|
43
|
+
return;
|
|
44
|
+
const onPointer = (ev) => {
|
|
45
|
+
const t = ev.target;
|
|
46
|
+
if (!t)
|
|
47
|
+
return;
|
|
48
|
+
if (triggerRef.current?.contains(t))
|
|
49
|
+
return;
|
|
50
|
+
if (popoverRef.current?.contains(t))
|
|
51
|
+
return;
|
|
52
|
+
setOpen(false);
|
|
53
|
+
};
|
|
54
|
+
const onKey = (ev) => {
|
|
55
|
+
if (ev.key === "Escape") {
|
|
56
|
+
ev.stopPropagation();
|
|
57
|
+
setOpen(false);
|
|
58
|
+
triggerRef.current?.focus();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
document.addEventListener("pointerdown", onPointer);
|
|
62
|
+
document.addEventListener("keydown", onKey);
|
|
63
|
+
return () => {
|
|
64
|
+
document.removeEventListener("pointerdown", onPointer);
|
|
65
|
+
document.removeEventListener("keydown", onKey);
|
|
66
|
+
};
|
|
67
|
+
}, [open, setOpen]);
|
|
68
|
+
// Clone the user's trigger element, injecting ref + onClick + aria.
|
|
69
|
+
// The trigger's own onClick (if any) is preserved and fires first.
|
|
70
|
+
const triggerWithProps = useMemo(() => {
|
|
71
|
+
if (!isValidElement(trigger))
|
|
72
|
+
return trigger;
|
|
73
|
+
const existing = trigger.props;
|
|
74
|
+
return cloneElement(trigger, {
|
|
75
|
+
ref: (el) => {
|
|
76
|
+
triggerRef.current = el;
|
|
77
|
+
const r = trigger.ref;
|
|
78
|
+
if (typeof r === "function")
|
|
79
|
+
r(el);
|
|
80
|
+
else if (r && typeof r === "object")
|
|
81
|
+
r.current = el;
|
|
82
|
+
},
|
|
83
|
+
onClick: (ev) => {
|
|
84
|
+
const prev = existing.onClick;
|
|
85
|
+
prev?.(ev);
|
|
86
|
+
if (ev.defaultPrevented)
|
|
87
|
+
return;
|
|
88
|
+
setOpen(!open);
|
|
89
|
+
},
|
|
90
|
+
"aria-haspopup": "dialog",
|
|
91
|
+
"aria-expanded": open,
|
|
92
|
+
"aria-controls": open ? id : undefined,
|
|
93
|
+
});
|
|
94
|
+
}, [trigger, open, setOpen, id]);
|
|
95
|
+
return (_jsxs(_Fragment, { children: [triggerWithProps, open
|
|
96
|
+
? createPortal(_jsx("div", { ref: popoverRef, id: id, role: "dialog", "aria-label": ariaLabel, className: `du-popover ${className ?? ""}`.trim(), style: {
|
|
97
|
+
position: "absolute",
|
|
98
|
+
top: 0,
|
|
99
|
+
left: 0,
|
|
100
|
+
// `transform` is updated by the `computePosition` callback
|
|
101
|
+
// above. The pre-paint at (0,0) is hidden by the CSS
|
|
102
|
+
// opacity 0 → 1 animation on `.du-popover`.
|
|
103
|
+
zIndex: 1600,
|
|
104
|
+
}, children: children }), document.body)
|
|
105
|
+
: null] }));
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../src/popover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Compact selection toolbar. A single horizontal row of controls that
|
|
4
|
+
* reads the current selection and writes through `editor.updateStyle`.
|
|
5
|
+
* Heavy sub-pickers (color, opacity slider, corner radius slider) live
|
|
6
|
+
* behind `<Popover>` triggers so the row itself stays a small pill that
|
|
7
|
+
* can float anywhere on the canvas.
|
|
8
|
+
*
|
|
9
|
+
* Multi-selection collapses each control's value to "mixed" when
|
|
10
|
+
* members disagree; setting any value writes through to every selected
|
|
11
|
+
* shape via `editor.updateStyle` (single undo step).
|
|
12
|
+
*
|
|
13
|
+
* Mounted by `<SelectionFloatingPanel>`.
|
|
14
|
+
*/
|
|
15
|
+
export interface PropertyPanelProps {
|
|
16
|
+
readonly style?: CSSProperties;
|
|
17
|
+
readonly className?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Mobile bottom-sheet variant: a single row of the frequently-used
|
|
20
|
+
* (primary) controls plus a vertical-dots button that expands the
|
|
21
|
+
* sheet to reveal the rest (overflow). No property is dropped —
|
|
22
|
+
* overflow is a regrouping, not a removal. Desktop (default) lays
|
|
23
|
+
* everything out in one floating pill row.
|
|
24
|
+
*/
|
|
25
|
+
readonly mobile?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare const PropertyPanel: ({ style, className, mobile }: PropertyPanelProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
28
|
+
export declare const Section: ({ label, children, }: {
|
|
29
|
+
readonly label: string;
|
|
30
|
+
readonly children: ReactNode;
|
|
31
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=property-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-panel.d.ts","sourceRoot":"","sources":["../src/property-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAqDxF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,GAAI,8BAAsC,kBAAkB,mDA+FrF,CAAC;AAuuCF,eAAO,MAAM,OAAO,GAAI,sBAGrB;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B,4CAKA,CAAC"}
|