@june-ai/june-ui 0.2.6 → 0.2.7
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/block-automount.js +2 -0
- package/dist/index.cjs +455 -405
- package/dist/index.js +364 -313
- package/package.json +6 -3
package/dist/index.cjs
CHANGED
|
@@ -623,6 +623,53 @@ __export(index_exports, {
|
|
|
623
623
|
});
|
|
624
624
|
module.exports = __toCommonJS(index_exports);
|
|
625
625
|
|
|
626
|
+
// src/openui/disable-devtools.tsx
|
|
627
|
+
var import_devtools = require("@openuidev/devtools");
|
|
628
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
629
|
+
var AUTO_MOUNT_FLAG = /* @__PURE__ */ Symbol.for("openui.devtools.autoMount");
|
|
630
|
+
var BLOCKED_BY_JUNE = /* @__PURE__ */ Symbol.for("openui.devtools.blockedByJune");
|
|
631
|
+
var flags = globalThis;
|
|
632
|
+
var scheduledByOpenUI = flags[AUTO_MOUNT_FLAG] === true && flags[BLOCKED_BY_JUNE] !== true;
|
|
633
|
+
flags[AUTO_MOUNT_FLAG] = true;
|
|
634
|
+
flags[BLOCKED_BY_JUNE] = true;
|
|
635
|
+
var DEVTOOLS_BUNDLE = "https://cdn.jsdelivr.net/npm/@openuidev/devtools@0/dist/devtools.browser.js";
|
|
636
|
+
var ALIAS_CACHE_MS = 5 * 60 * 1e3;
|
|
637
|
+
function claimDisabledDevtools() {
|
|
638
|
+
if (typeof document === "undefined") return () => {
|
|
639
|
+
};
|
|
640
|
+
const url = `${DEVTOOLS_BUNDLE}?t=${Math.floor(Date.now() / ALIAS_CACHE_MS)}`;
|
|
641
|
+
let cancelled = false;
|
|
642
|
+
let unmount = () => {
|
|
643
|
+
cancelled = true;
|
|
644
|
+
};
|
|
645
|
+
void Promise.all([
|
|
646
|
+
import(
|
|
647
|
+
/* @vite-ignore */
|
|
648
|
+
url
|
|
649
|
+
),
|
|
650
|
+
import("react"),
|
|
651
|
+
import("react-dom"),
|
|
652
|
+
import("react-dom/client")
|
|
653
|
+
]).then(([devtools, react, reactDom, reactDomClient]) => {
|
|
654
|
+
if (cancelled) return;
|
|
655
|
+
unmount = devtools.mountOpenUIDevtools({
|
|
656
|
+
React: react,
|
|
657
|
+
ReactDOM: reactDom,
|
|
658
|
+
ReactDOMClient: reactDomClient,
|
|
659
|
+
loadReactLang: () => import("@openuidev/react-lang"),
|
|
660
|
+
props: { enabled: false }
|
|
661
|
+
});
|
|
662
|
+
}).catch(() => {
|
|
663
|
+
});
|
|
664
|
+
return () => unmount();
|
|
665
|
+
}
|
|
666
|
+
if (scheduledByOpenUI && process.env.NODE_ENV === "development" && process.env.VITEST !== "true" && typeof document !== "undefined") {
|
|
667
|
+
claimDisabledDevtools();
|
|
668
|
+
}
|
|
669
|
+
function OpenUIDevtoolsGate() {
|
|
670
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_devtools.OpenUIDevtools, { enabled: false });
|
|
671
|
+
}
|
|
672
|
+
|
|
626
673
|
// src/renderer/renderer.tsx
|
|
627
674
|
var import_react_lang = require("@openuidev/react-lang");
|
|
628
675
|
var import_react5 = require("react");
|
|
@@ -1052,7 +1099,7 @@ var lightTheme = {
|
|
|
1052
1099
|
};
|
|
1053
1100
|
|
|
1054
1101
|
// src/themes/theme-provider.tsx
|
|
1055
|
-
var
|
|
1102
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
1056
1103
|
var QUERY = "(prefers-color-scheme: dark)";
|
|
1057
1104
|
function subscribe(onChange) {
|
|
1058
1105
|
if (typeof window === "undefined" || !window.matchMedia) return () => {
|
|
@@ -1095,7 +1142,7 @@ function JuneThemeProvider({
|
|
|
1095
1142
|
() => ({ mode: mode ?? "system", theme: resolved }),
|
|
1096
1143
|
[mode, resolved]
|
|
1097
1144
|
);
|
|
1098
|
-
return /* @__PURE__ */ (0,
|
|
1145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JuneContext.Provider, { value: context, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1099
1146
|
"div",
|
|
1100
1147
|
{
|
|
1101
1148
|
className: className ? `june-ui-root ${className}` : "june-ui-root",
|
|
@@ -1517,7 +1564,7 @@ function splitResponse(source, options = {}) {
|
|
|
1517
1564
|
|
|
1518
1565
|
// src/renderer/error-boundary.tsx
|
|
1519
1566
|
var import_react4 = require("react");
|
|
1520
|
-
var
|
|
1567
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1521
1568
|
function keysChanged(a = [], b = []) {
|
|
1522
1569
|
return a.length !== b.length || a.some((v, i) => !Object.is(v, b[i]));
|
|
1523
1570
|
}
|
|
@@ -1546,12 +1593,12 @@ var JuneErrorBoundary = class extends import_react4.Component {
|
|
|
1546
1593
|
const { fallback } = this.props;
|
|
1547
1594
|
if (typeof fallback === "function") return fallback({ error, reset: this.reset });
|
|
1548
1595
|
if (fallback !== void 0) return fallback;
|
|
1549
|
-
return /* @__PURE__ */ (0,
|
|
1596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { role: "alert", "data-june-error": "", children: "Something went wrong while rendering this UI." });
|
|
1550
1597
|
}
|
|
1551
1598
|
};
|
|
1552
1599
|
|
|
1553
1600
|
// src/renderer/renderer.tsx
|
|
1554
|
-
var
|
|
1601
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
1555
1602
|
function JuneRenderer(props) {
|
|
1556
1603
|
const {
|
|
1557
1604
|
library,
|
|
@@ -1681,31 +1728,34 @@ function JuneRenderer(props) {
|
|
|
1681
1728
|
const before = parts?.before ?? [];
|
|
1682
1729
|
const after = parts?.after ?? [];
|
|
1683
1730
|
const hasText = before.length + after.length > 0;
|
|
1684
|
-
const text = (value, index, key) => /* @__PURE__ */ (0,
|
|
1685
|
-
return /* @__PURE__ */ (0,
|
|
1686
|
-
|
|
1687
|
-
{
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1731
|
+
const text = (value, index, key) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react5.Fragment, { children: renderText ? renderText(value, index) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "june-text", children: value }) }, key);
|
|
1732
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(JuneThemeProvider, { mode: theme, vars: themeVars, className, style, children: [
|
|
1733
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(OpenUIDevtoolsGate, {}),
|
|
1734
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(JuneRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(JuneDocumentContext.Provider, { value: documentOptions, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1735
|
+
JuneErrorBoundary,
|
|
1736
|
+
{
|
|
1737
|
+
fallback: errorFallback,
|
|
1738
|
+
onError: handleBoundaryError,
|
|
1739
|
+
resetKeys: resetKeys ?? [response],
|
|
1740
|
+
children: [
|
|
1741
|
+
before.map((t, i) => text(t, i, `b${i}`)),
|
|
1742
|
+
hasUi && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1743
|
+
import_react_lang.Renderer,
|
|
1744
|
+
{
|
|
1745
|
+
...rendererProps,
|
|
1746
|
+
library,
|
|
1747
|
+
response: uiText,
|
|
1748
|
+
isStreaming,
|
|
1749
|
+
onAction: handleAction,
|
|
1750
|
+
onError: handleParserErrors
|
|
1751
|
+
}
|
|
1752
|
+
),
|
|
1753
|
+
after.map((t, i) => text(t, before.length + i, `a${i}`)),
|
|
1754
|
+
!hasUi && !hasText && (isStreaming ? loadingFallback : emptyFallback)
|
|
1755
|
+
]
|
|
1756
|
+
}
|
|
1757
|
+
) }) })
|
|
1758
|
+
] });
|
|
1709
1759
|
}
|
|
1710
1760
|
|
|
1711
1761
|
// src/components/library.ts
|
|
@@ -2046,18 +2096,18 @@ var import_react_lang3 = require("@openuidev/react-lang");
|
|
|
2046
2096
|
var import_v4 = require("zod/v4");
|
|
2047
2097
|
|
|
2048
2098
|
// src/components/document-editor/document-draft.tsx
|
|
2049
|
-
var
|
|
2099
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
2050
2100
|
function DocumentDraft({ title, words, state }) {
|
|
2051
2101
|
if (state === "empty") {
|
|
2052
|
-
return /* @__PURE__ */ (0,
|
|
2102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "june-doc june-doc--draft", role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "june-doc__draft-text", children: "No document content was received." }) });
|
|
2053
2103
|
}
|
|
2054
|
-
return /* @__PURE__ */ (0,
|
|
2055
|
-
title ? /* @__PURE__ */ (0,
|
|
2056
|
-
/* @__PURE__ */ (0,
|
|
2057
|
-
/* @__PURE__ */ (0,
|
|
2058
|
-
/* @__PURE__ */ (0,
|
|
2059
|
-
/* @__PURE__ */ (0,
|
|
2060
|
-
/* @__PURE__ */ (0,
|
|
2104
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "june-doc june-doc--draft", role: "status", "aria-live": "polite", children: [
|
|
2105
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "june-doc__draft-title", children: title }) : null,
|
|
2106
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "june-doc__draft-text", children: state === "drafting" ? `Drafting document\u2026${words ? ` ${words} words so far` : ""}` : "Loading editor\u2026" }),
|
|
2107
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "june-doc__pulse", "aria-hidden": "true", children: [
|
|
2108
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", {}),
|
|
2109
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", {}),
|
|
2110
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", {})
|
|
2061
2111
|
] })
|
|
2062
2112
|
] });
|
|
2063
2113
|
}
|
|
@@ -2076,208 +2126,208 @@ var import_react8 = require("@tiptap/react");
|
|
|
2076
2126
|
var import_react9 = require("react");
|
|
2077
2127
|
|
|
2078
2128
|
// src/components/document-editor/document-icons.tsx
|
|
2079
|
-
var
|
|
2129
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
2080
2130
|
var PATHS = {
|
|
2081
|
-
undo: /* @__PURE__ */ (0,
|
|
2082
|
-
/* @__PURE__ */ (0,
|
|
2083
|
-
/* @__PURE__ */ (0,
|
|
2131
|
+
undo: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2132
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M9 14 4 9l5-5" }),
|
|
2133
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 9h10.5a5.5 5.5 0 0 1 0 11H11" })
|
|
2084
2134
|
] }),
|
|
2085
|
-
redo: /* @__PURE__ */ (0,
|
|
2086
|
-
/* @__PURE__ */ (0,
|
|
2087
|
-
/* @__PURE__ */ (0,
|
|
2135
|
+
redo: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2136
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m15 14 5-5-5-5" }),
|
|
2137
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 9H9.5a5.5 5.5 0 0 0 0 11H13" })
|
|
2088
2138
|
] }),
|
|
2089
|
-
bold: /* @__PURE__ */ (0,
|
|
2090
|
-
italic: /* @__PURE__ */ (0,
|
|
2091
|
-
/* @__PURE__ */ (0,
|
|
2092
|
-
/* @__PURE__ */ (0,
|
|
2093
|
-
/* @__PURE__ */ (0,
|
|
2139
|
+
bold: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" }),
|
|
2140
|
+
italic: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2141
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "19", x2: "10", y1: "4", y2: "4" }),
|
|
2142
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "14", x2: "5", y1: "20", y2: "20" }),
|
|
2143
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "15", x2: "9", y1: "4", y2: "20" })
|
|
2094
2144
|
] }),
|
|
2095
|
-
underline: /* @__PURE__ */ (0,
|
|
2096
|
-
/* @__PURE__ */ (0,
|
|
2097
|
-
/* @__PURE__ */ (0,
|
|
2145
|
+
underline: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2146
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M6 4v6a6 6 0 0 0 12 0V4" }),
|
|
2147
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "4", x2: "20", y1: "20", y2: "20" })
|
|
2098
2148
|
] }),
|
|
2099
|
-
strike: /* @__PURE__ */ (0,
|
|
2100
|
-
/* @__PURE__ */ (0,
|
|
2101
|
-
/* @__PURE__ */ (0,
|
|
2102
|
-
/* @__PURE__ */ (0,
|
|
2149
|
+
strike: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2150
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M16 4H9a3 3 0 0 0-2.83 4" }),
|
|
2151
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14 12a4 4 0 0 1 0 8H6" }),
|
|
2152
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "4", x2: "20", y1: "12", y2: "12" })
|
|
2103
2153
|
] }),
|
|
2104
|
-
code: /* @__PURE__ */ (0,
|
|
2105
|
-
/* @__PURE__ */ (0,
|
|
2106
|
-
/* @__PURE__ */ (0,
|
|
2154
|
+
code: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2155
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m16 18 6-6-6-6" }),
|
|
2156
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m8 6-6 6 6 6" })
|
|
2107
2157
|
] }),
|
|
2108
|
-
codeBlock: /* @__PURE__ */ (0,
|
|
2109
|
-
/* @__PURE__ */ (0,
|
|
2110
|
-
/* @__PURE__ */ (0,
|
|
2111
|
-
/* @__PURE__ */ (0,
|
|
2158
|
+
codeBlock: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2159
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
|
|
2160
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m10 9-3 3 3 3" }),
|
|
2161
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m14 15 3-3-3-3" })
|
|
2112
2162
|
] }),
|
|
2113
|
-
superscript: /* @__PURE__ */ (0,
|
|
2114
|
-
/* @__PURE__ */ (0,
|
|
2115
|
-
/* @__PURE__ */ (0,
|
|
2116
|
-
/* @__PURE__ */ (0,
|
|
2163
|
+
superscript: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2164
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m4 19 8-8" }),
|
|
2165
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m12 19-8-8" }),
|
|
2166
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 12h-4c0-1.5.44-2 1.5-2.5S20 8.33 20 7c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" })
|
|
2117
2167
|
] }),
|
|
2118
|
-
subscript: /* @__PURE__ */ (0,
|
|
2119
|
-
/* @__PURE__ */ (0,
|
|
2120
|
-
/* @__PURE__ */ (0,
|
|
2121
|
-
/* @__PURE__ */ (0,
|
|
2168
|
+
subscript: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2169
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m4 5 8 8" }),
|
|
2170
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m12 5-8 8" }),
|
|
2171
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" })
|
|
2122
2172
|
] }),
|
|
2123
|
-
alignLeft: /* @__PURE__ */ (0,
|
|
2124
|
-
/* @__PURE__ */ (0,
|
|
2125
|
-
/* @__PURE__ */ (0,
|
|
2126
|
-
/* @__PURE__ */ (0,
|
|
2173
|
+
alignLeft: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2174
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M15 12H3" }),
|
|
2175
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 18H3" }),
|
|
2176
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H3" })
|
|
2127
2177
|
] }),
|
|
2128
|
-
alignCenter: /* @__PURE__ */ (0,
|
|
2129
|
-
/* @__PURE__ */ (0,
|
|
2130
|
-
/* @__PURE__ */ (0,
|
|
2131
|
-
/* @__PURE__ */ (0,
|
|
2178
|
+
alignCenter: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2179
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 12H7" }),
|
|
2180
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M19 18H5" }),
|
|
2181
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H3" })
|
|
2132
2182
|
] }),
|
|
2133
|
-
alignRight: /* @__PURE__ */ (0,
|
|
2134
|
-
/* @__PURE__ */ (0,
|
|
2135
|
-
/* @__PURE__ */ (0,
|
|
2136
|
-
/* @__PURE__ */ (0,
|
|
2183
|
+
alignRight: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2184
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H9" }),
|
|
2185
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H7" }),
|
|
2186
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H3" })
|
|
2137
2187
|
] }),
|
|
2138
|
-
alignJustify: /* @__PURE__ */ (0,
|
|
2139
|
-
/* @__PURE__ */ (0,
|
|
2140
|
-
/* @__PURE__ */ (0,
|
|
2141
|
-
/* @__PURE__ */ (0,
|
|
2188
|
+
alignJustify: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2189
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12h18" }),
|
|
2190
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 18h18" }),
|
|
2191
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 6h18" })
|
|
2142
2192
|
] }),
|
|
2143
|
-
list: /* @__PURE__ */ (0,
|
|
2144
|
-
/* @__PURE__ */ (0,
|
|
2145
|
-
/* @__PURE__ */ (0,
|
|
2146
|
-
/* @__PURE__ */ (0,
|
|
2147
|
-
/* @__PURE__ */ (0,
|
|
2148
|
-
/* @__PURE__ */ (0,
|
|
2149
|
-
/* @__PURE__ */ (0,
|
|
2193
|
+
list: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2194
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12h.01" }),
|
|
2195
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 18h.01" }),
|
|
2196
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 6h.01" }),
|
|
2197
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 12h13" }),
|
|
2198
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 18h13" }),
|
|
2199
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 6h13" })
|
|
2150
2200
|
] }),
|
|
2151
|
-
listOrdered: /* @__PURE__ */ (0,
|
|
2152
|
-
/* @__PURE__ */ (0,
|
|
2153
|
-
/* @__PURE__ */ (0,
|
|
2154
|
-
/* @__PURE__ */ (0,
|
|
2155
|
-
/* @__PURE__ */ (0,
|
|
2156
|
-
/* @__PURE__ */ (0,
|
|
2157
|
-
/* @__PURE__ */ (0,
|
|
2201
|
+
listOrdered: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2202
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 12h11" }),
|
|
2203
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 18h11" }),
|
|
2204
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 6h11" }),
|
|
2205
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 10h2" }),
|
|
2206
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 6h1v4" }),
|
|
2207
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" })
|
|
2158
2208
|
] }),
|
|
2159
|
-
outdent: /* @__PURE__ */ (0,
|
|
2160
|
-
/* @__PURE__ */ (0,
|
|
2161
|
-
/* @__PURE__ */ (0,
|
|
2162
|
-
/* @__PURE__ */ (0,
|
|
2163
|
-
/* @__PURE__ */ (0,
|
|
2209
|
+
outdent: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2210
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H11" }),
|
|
2211
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H11" }),
|
|
2212
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H11" }),
|
|
2213
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m7 8-4 4 4 4" })
|
|
2164
2214
|
] }),
|
|
2165
|
-
indent: /* @__PURE__ */ (0,
|
|
2166
|
-
/* @__PURE__ */ (0,
|
|
2167
|
-
/* @__PURE__ */ (0,
|
|
2168
|
-
/* @__PURE__ */ (0,
|
|
2169
|
-
/* @__PURE__ */ (0,
|
|
2215
|
+
indent: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2216
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H11" }),
|
|
2217
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H11" }),
|
|
2218
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H11" }),
|
|
2219
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m3 8 4 4-4 4" })
|
|
2170
2220
|
] }),
|
|
2171
|
-
quote: /* @__PURE__ */ (0,
|
|
2172
|
-
/* @__PURE__ */ (0,
|
|
2173
|
-
/* @__PURE__ */ (0,
|
|
2174
|
-
/* @__PURE__ */ (0,
|
|
2175
|
-
/* @__PURE__ */ (0,
|
|
2221
|
+
quote: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2222
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 6H3" }),
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H8" }),
|
|
2224
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H8" }),
|
|
2225
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12v6" })
|
|
2176
2226
|
] }),
|
|
2177
|
-
pilcrow: /* @__PURE__ */ (0,
|
|
2178
|
-
/* @__PURE__ */ (0,
|
|
2179
|
-
/* @__PURE__ */ (0,
|
|
2180
|
-
/* @__PURE__ */ (0,
|
|
2227
|
+
pilcrow: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2228
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M13 4v16" }),
|
|
2229
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 4v16" }),
|
|
2230
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13" })
|
|
2181
2231
|
] }),
|
|
2182
|
-
pageBreak: /* @__PURE__ */ (0,
|
|
2183
|
-
/* @__PURE__ */ (0,
|
|
2184
|
-
/* @__PURE__ */ (0,
|
|
2185
|
-
/* @__PURE__ */ (0,
|
|
2232
|
+
pageBreak: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2233
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "3", x2: "21", y1: "12", y2: "12" }),
|
|
2234
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "8 8 12 4 16 8" }),
|
|
2235
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "16 16 12 20 8 16" })
|
|
2186
2236
|
] }),
|
|
2187
|
-
divider: /* @__PURE__ */ (0,
|
|
2188
|
-
/* @__PURE__ */ (0,
|
|
2189
|
-
/* @__PURE__ */ (0,
|
|
2190
|
-
/* @__PURE__ */ (0,
|
|
2237
|
+
divider: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2238
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12h18" }),
|
|
2239
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 6h8", opacity: ".45" }),
|
|
2240
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 18h8", opacity: ".45" })
|
|
2191
2241
|
] }),
|
|
2192
|
-
layout: /* @__PURE__ */ (0,
|
|
2193
|
-
/* @__PURE__ */ (0,
|
|
2194
|
-
/* @__PURE__ */ (0,
|
|
2195
|
-
/* @__PURE__ */ (0,
|
|
2242
|
+
layout: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2243
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "18", height: "7", x: "3", y: "3", rx: "1" }),
|
|
2244
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "9", height: "7", x: "3", y: "14", rx: "1" }),
|
|
2245
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "5", height: "7", x: "16", y: "14", rx: "1" })
|
|
2196
2246
|
] }),
|
|
2197
|
-
search: /* @__PURE__ */ (0,
|
|
2198
|
-
/* @__PURE__ */ (0,
|
|
2199
|
-
/* @__PURE__ */ (0,
|
|
2247
|
+
search: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2248
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
|
|
2249
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m21 21-4.3-4.3" })
|
|
2200
2250
|
] }),
|
|
2201
|
-
palette: /* @__PURE__ */ (0,
|
|
2202
|
-
/* @__PURE__ */ (0,
|
|
2203
|
-
/* @__PURE__ */ (0,
|
|
2204
|
-
/* @__PURE__ */ (0,
|
|
2205
|
-
/* @__PURE__ */ (0,
|
|
2206
|
-
/* @__PURE__ */ (0,
|
|
2251
|
+
palette: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2252
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor" }),
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor" }),
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor" }),
|
|
2255
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor" }),
|
|
2256
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.93 0 1.65-.75 1.65-1.69 0-.44-.18-.84-.44-1.13-.29-.29-.44-.65-.44-1.13a1.64 1.64 0 0 1 1.67-1.67h2c3.05 0 5.55-2.5 5.55-5.55C21.97 6.01 17.46 2 12 2z" })
|
|
2207
2257
|
] }),
|
|
2208
|
-
highlighter: /* @__PURE__ */ (0,
|
|
2209
|
-
/* @__PURE__ */ (0,
|
|
2210
|
-
/* @__PURE__ */ (0,
|
|
2258
|
+
highlighter: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2259
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m9 11-6 6v3h9l3-3" }),
|
|
2260
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" })
|
|
2211
2261
|
] }),
|
|
2212
|
-
link: /* @__PURE__ */ (0,
|
|
2213
|
-
/* @__PURE__ */ (0,
|
|
2214
|
-
/* @__PURE__ */ (0,
|
|
2262
|
+
link: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2263
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }),
|
|
2264
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })
|
|
2215
2265
|
] }),
|
|
2216
|
-
image: /* @__PURE__ */ (0,
|
|
2217
|
-
/* @__PURE__ */ (0,
|
|
2218
|
-
/* @__PURE__ */ (0,
|
|
2219
|
-
/* @__PURE__ */ (0,
|
|
2266
|
+
image: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2267
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
|
|
2268
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "9", cy: "9", r: "2" }),
|
|
2269
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m21 15-3.09-3.09a2 2 0 0 0-2.82 0L6 21" })
|
|
2220
2270
|
] }),
|
|
2221
|
-
table: /* @__PURE__ */ (0,
|
|
2222
|
-
/* @__PURE__ */ (0,
|
|
2223
|
-
/* @__PURE__ */ (0,
|
|
2224
|
-
/* @__PURE__ */ (0,
|
|
2225
|
-
/* @__PURE__ */ (0,
|
|
2271
|
+
table: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2272
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M12 3v18" }),
|
|
2273
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
|
|
2274
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 9h18" }),
|
|
2275
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 15h18" })
|
|
2226
2276
|
] }),
|
|
2227
|
-
eraser: /* @__PURE__ */ (0,
|
|
2228
|
-
/* @__PURE__ */ (0,
|
|
2229
|
-
/* @__PURE__ */ (0,
|
|
2230
|
-
/* @__PURE__ */ (0,
|
|
2277
|
+
eraser: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2278
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21" }),
|
|
2279
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M22 21H7" }),
|
|
2280
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m5 11 9 9" })
|
|
2231
2281
|
] }),
|
|
2232
|
-
save: /* @__PURE__ */ (0,
|
|
2233
|
-
/* @__PURE__ */ (0,
|
|
2234
|
-
/* @__PURE__ */ (0,
|
|
2235
|
-
/* @__PURE__ */ (0,
|
|
2282
|
+
save: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2283
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z" }),
|
|
2284
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7" }),
|
|
2285
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M7 3v4a1 1 0 0 0 1 1h7" })
|
|
2236
2286
|
] }),
|
|
2237
|
-
download: /* @__PURE__ */ (0,
|
|
2238
|
-
/* @__PURE__ */ (0,
|
|
2239
|
-
/* @__PURE__ */ (0,
|
|
2240
|
-
/* @__PURE__ */ (0,
|
|
2287
|
+
download: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2288
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
2289
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "7 10 12 15 17 10" }),
|
|
2290
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
|
|
2241
2291
|
] }),
|
|
2242
|
-
chevronDown: /* @__PURE__ */ (0,
|
|
2243
|
-
chevronUp: /* @__PURE__ */ (0,
|
|
2244
|
-
close: /* @__PURE__ */ (0,
|
|
2245
|
-
/* @__PURE__ */ (0,
|
|
2246
|
-
/* @__PURE__ */ (0,
|
|
2292
|
+
chevronDown: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m6 9 6 6 6-6" }),
|
|
2293
|
+
chevronUp: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m18 15-6-6-6 6" }),
|
|
2294
|
+
close: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2295
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M18 6 6 18" }),
|
|
2296
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m6 6 12 12" })
|
|
2247
2297
|
] }),
|
|
2248
|
-
maximize: /* @__PURE__ */ (0,
|
|
2249
|
-
/* @__PURE__ */ (0,
|
|
2250
|
-
/* @__PURE__ */ (0,
|
|
2251
|
-
/* @__PURE__ */ (0,
|
|
2252
|
-
/* @__PURE__ */ (0,
|
|
2298
|
+
maximize: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2299
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 3H5a2 2 0 0 0-2 2v3" }),
|
|
2300
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 8V5a2 2 0 0 0-2-2h-3" }),
|
|
2301
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 16v3a2 2 0 0 0 2 2h3" }),
|
|
2302
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M16 21h3a2 2 0 0 0 2-2v-3" })
|
|
2253
2303
|
] }),
|
|
2254
|
-
copy: /* @__PURE__ */ (0,
|
|
2255
|
-
/* @__PURE__ */ (0,
|
|
2256
|
-
/* @__PURE__ */ (0,
|
|
2304
|
+
copy: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2305
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2" }),
|
|
2306
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })
|
|
2257
2307
|
] }),
|
|
2258
|
-
file: /* @__PURE__ */ (0,
|
|
2259
|
-
/* @__PURE__ */ (0,
|
|
2260
|
-
/* @__PURE__ */ (0,
|
|
2308
|
+
file: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2309
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
|
|
2310
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" })
|
|
2261
2311
|
] }),
|
|
2262
|
-
plus: /* @__PURE__ */ (0,
|
|
2263
|
-
/* @__PURE__ */ (0,
|
|
2264
|
-
/* @__PURE__ */ (0,
|
|
2312
|
+
plus: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2313
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M5 12h14" }),
|
|
2314
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M12 5v14" })
|
|
2265
2315
|
] }),
|
|
2266
|
-
minus: /* @__PURE__ */ (0,
|
|
2267
|
-
check: /* @__PURE__ */ (0,
|
|
2268
|
-
sparkles: /* @__PURE__ */ (0,
|
|
2269
|
-
/* @__PURE__ */ (0,
|
|
2270
|
-
/* @__PURE__ */ (0,
|
|
2271
|
-
/* @__PURE__ */ (0,
|
|
2316
|
+
minus: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M5 12h14" }),
|
|
2317
|
+
check: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 6 9 17l-5-5" }),
|
|
2318
|
+
sparkles: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2319
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M9.94 14.06 8 20l-1.94-5.94L0 12l6.06-1.94L8 4l1.94 6.06L16 12z", transform: "translate(3 -1) scale(.85)" }),
|
|
2320
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 3v4" }),
|
|
2321
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M22 5h-4" })
|
|
2272
2322
|
] }),
|
|
2273
|
-
upload: /* @__PURE__ */ (0,
|
|
2274
|
-
/* @__PURE__ */ (0,
|
|
2275
|
-
/* @__PURE__ */ (0,
|
|
2276
|
-
/* @__PURE__ */ (0,
|
|
2323
|
+
upload: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2324
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
2325
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "17 8 12 3 7 8" }),
|
|
2326
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "15" })
|
|
2277
2327
|
] })
|
|
2278
2328
|
};
|
|
2279
2329
|
function Icon({ name, size = 16 }) {
|
|
2280
|
-
return /* @__PURE__ */ (0,
|
|
2330
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2281
2331
|
"svg",
|
|
2282
2332
|
{
|
|
2283
2333
|
className: "june-doc__icon",
|
|
@@ -2298,7 +2348,7 @@ function Icon({ name, size = 16 }) {
|
|
|
2298
2348
|
|
|
2299
2349
|
// src/components/document-editor/document-popover.tsx
|
|
2300
2350
|
var import_react7 = require("react");
|
|
2301
|
-
var
|
|
2351
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2302
2352
|
function Dropdown({ trigger, children, align = "start", className, onOpen }) {
|
|
2303
2353
|
const [open, setOpen] = (0, import_react7.useState)(false);
|
|
2304
2354
|
const anchor = (0, import_react7.useRef)(null);
|
|
@@ -2315,7 +2365,7 @@ function Dropdown({ trigger, children, align = "start", className, onOpen }) {
|
|
|
2315
2365
|
return !v;
|
|
2316
2366
|
});
|
|
2317
2367
|
const close = () => setOpen(false);
|
|
2318
|
-
return /* @__PURE__ */ (0,
|
|
2368
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
2319
2369
|
"div",
|
|
2320
2370
|
{
|
|
2321
2371
|
ref: anchor,
|
|
@@ -2328,7 +2378,7 @@ function Dropdown({ trigger, children, align = "start", className, onOpen }) {
|
|
|
2328
2378
|
},
|
|
2329
2379
|
children: [
|
|
2330
2380
|
trigger({ open, toggle }),
|
|
2331
|
-
open ? /* @__PURE__ */ (0,
|
|
2381
|
+
open ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: `june-doc__pop june-doc__pop--${align}${className ? ` ${className}` : ""}`, children: children(close) }) : null
|
|
2332
2382
|
]
|
|
2333
2383
|
}
|
|
2334
2384
|
);
|
|
@@ -2336,7 +2386,7 @@ function Dropdown({ trigger, children, align = "start", className, onOpen }) {
|
|
|
2336
2386
|
|
|
2337
2387
|
// src/components/document-editor/document-toolbar.tsx
|
|
2338
2388
|
init_document_utils();
|
|
2339
|
-
var
|
|
2389
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
2340
2390
|
var FONT_FAMILIES = [
|
|
2341
2391
|
{ label: "Default", value: "" },
|
|
2342
2392
|
{ label: "Arial", value: "Arial, Helvetica, sans-serif" },
|
|
@@ -2383,7 +2433,7 @@ var HIGHLIGHT_COLORS = [
|
|
|
2383
2433
|
];
|
|
2384
2434
|
var MAX_IMAGE_BYTES = 8 * 1024 * 1024;
|
|
2385
2435
|
function Btn({ label, icon, active, disabled, toggle, onClick, children, className, text }) {
|
|
2386
|
-
return /* @__PURE__ */ (0,
|
|
2436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2387
2437
|
"button",
|
|
2388
2438
|
{
|
|
2389
2439
|
type: "button",
|
|
@@ -2396,29 +2446,29 @@ function Btn({ label, icon, active, disabled, toggle, onClick, children, classNa
|
|
|
2396
2446
|
onMouseDown: (e) => e.preventDefault(),
|
|
2397
2447
|
onClick,
|
|
2398
2448
|
children: [
|
|
2399
|
-
icon ? /* @__PURE__ */ (0,
|
|
2400
|
-
children ?? (text ? /* @__PURE__ */ (0,
|
|
2449
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: icon }) : null,
|
|
2450
|
+
children ?? (text ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: label }) : null)
|
|
2401
2451
|
]
|
|
2402
2452
|
}
|
|
2403
2453
|
);
|
|
2404
2454
|
}
|
|
2405
2455
|
function Group({ label, children }) {
|
|
2406
|
-
return /* @__PURE__ */ (0,
|
|
2407
|
-
label ? /* @__PURE__ */ (0,
|
|
2456
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__group", role: "group", "aria-label": label, children: [
|
|
2457
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__group-label", "aria-hidden": "true", children: label }) : null,
|
|
2408
2458
|
children
|
|
2409
2459
|
] });
|
|
2410
2460
|
}
|
|
2411
2461
|
function Field({ label, children }) {
|
|
2412
|
-
return /* @__PURE__ */ (0,
|
|
2413
|
-
/* @__PURE__ */ (0,
|
|
2462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: "june-doc__field", children: [
|
|
2463
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__field-label", children: label }),
|
|
2414
2464
|
children
|
|
2415
2465
|
] });
|
|
2416
2466
|
}
|
|
2417
2467
|
function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPick, onReset }) {
|
|
2418
|
-
return /* @__PURE__ */ (0,
|
|
2468
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2419
2469
|
Dropdown,
|
|
2420
2470
|
{
|
|
2421
|
-
trigger: ({ open, toggle }) => /* @__PURE__ */ (0,
|
|
2471
|
+
trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2422
2472
|
"button",
|
|
2423
2473
|
{
|
|
2424
2474
|
type: "button",
|
|
@@ -2431,14 +2481,14 @@ function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPic
|
|
|
2431
2481
|
onMouseDown: (e) => e.preventDefault(),
|
|
2432
2482
|
onClick: toggle,
|
|
2433
2483
|
children: [
|
|
2434
|
-
/* @__PURE__ */ (0,
|
|
2435
|
-
/* @__PURE__ */ (0,
|
|
2484
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: icon }),
|
|
2485
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__color-bar", style: { background: current ?? "transparent" } })
|
|
2436
2486
|
]
|
|
2437
2487
|
}
|
|
2438
2488
|
),
|
|
2439
|
-
children: (close) => /* @__PURE__ */ (0,
|
|
2440
|
-
/* @__PURE__ */ (0,
|
|
2441
|
-
/* @__PURE__ */ (0,
|
|
2489
|
+
children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__swatches-wrap", role: "dialog", "aria-label": label, children: [
|
|
2490
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__pop-title", children: label }),
|
|
2491
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__swatches", children: colors.map((c) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2442
2492
|
"button",
|
|
2443
2493
|
{
|
|
2444
2494
|
type: "button",
|
|
@@ -2455,8 +2505,8 @@ function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPic
|
|
|
2455
2505
|
},
|
|
2456
2506
|
c
|
|
2457
2507
|
)) }),
|
|
2458
|
-
/* @__PURE__ */ (0,
|
|
2459
|
-
/* @__PURE__ */ (0,
|
|
2508
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-row", children: [
|
|
2509
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2460
2510
|
"button",
|
|
2461
2511
|
{
|
|
2462
2512
|
type: "button",
|
|
@@ -2469,9 +2519,9 @@ function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPic
|
|
|
2469
2519
|
children: resetLabel
|
|
2470
2520
|
}
|
|
2471
2521
|
),
|
|
2472
|
-
/* @__PURE__ */ (0,
|
|
2473
|
-
/* @__PURE__ */ (0,
|
|
2474
|
-
/* @__PURE__ */ (0,
|
|
2522
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: "june-doc__custom-color", title: "Custom color", children: [
|
|
2523
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Custom" }),
|
|
2524
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2475
2525
|
"input",
|
|
2476
2526
|
{
|
|
2477
2527
|
type: "color",
|
|
@@ -2502,9 +2552,9 @@ function LinkPanel({
|
|
|
2502
2552
|
editor.chain().focus().extendMarkRange("link").unsetLink().run();
|
|
2503
2553
|
close();
|
|
2504
2554
|
};
|
|
2505
|
-
return /* @__PURE__ */ (0,
|
|
2506
|
-
/* @__PURE__ */ (0,
|
|
2507
|
-
/* @__PURE__ */ (0,
|
|
2555
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Edit link", children: [
|
|
2556
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__pop-title", children: "Link" }),
|
|
2557
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2508
2558
|
"input",
|
|
2509
2559
|
{
|
|
2510
2560
|
"aria-label": "Link address",
|
|
@@ -2521,10 +2571,10 @@ function LinkPanel({
|
|
|
2521
2571
|
}
|
|
2522
2572
|
}
|
|
2523
2573
|
),
|
|
2524
|
-
/* @__PURE__ */ (0,
|
|
2525
|
-
isLink ? /* @__PURE__ */ (0,
|
|
2526
|
-
/* @__PURE__ */ (0,
|
|
2527
|
-
/* @__PURE__ */ (0,
|
|
2574
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-row june-doc__pop-row--end", children: [
|
|
2575
|
+
isLink ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--ghost", onClick: remove, children: "Remove" }) : null,
|
|
2576
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn", onClick: close, children: "Cancel" }),
|
|
2577
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--primary", onClick: apply, children: "Apply" })
|
|
2528
2578
|
] })
|
|
2529
2579
|
] });
|
|
2530
2580
|
}
|
|
@@ -2553,9 +2603,9 @@ function ImagePanel({ editor, close, onNotice }) {
|
|
|
2553
2603
|
reader.onerror = () => onNotice("The image could not be read");
|
|
2554
2604
|
reader.readAsDataURL(f);
|
|
2555
2605
|
};
|
|
2556
|
-
return /* @__PURE__ */ (0,
|
|
2557
|
-
/* @__PURE__ */ (0,
|
|
2558
|
-
/* @__PURE__ */ (0,
|
|
2606
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Insert image", children: [
|
|
2607
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__pop-title", children: "Image" }),
|
|
2608
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2559
2609
|
"button",
|
|
2560
2610
|
{
|
|
2561
2611
|
type: "button",
|
|
@@ -2567,12 +2617,12 @@ function ImagePanel({ editor, close, onNotice }) {
|
|
|
2567
2617
|
fromFile(e.dataTransfer.files[0]);
|
|
2568
2618
|
},
|
|
2569
2619
|
children: [
|
|
2570
|
-
/* @__PURE__ */ (0,
|
|
2571
|
-
/* @__PURE__ */ (0,
|
|
2620
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: "upload", size: 18 }),
|
|
2621
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Upload or drop an image" })
|
|
2572
2622
|
]
|
|
2573
2623
|
}
|
|
2574
2624
|
),
|
|
2575
|
-
/* @__PURE__ */ (0,
|
|
2625
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2576
2626
|
"input",
|
|
2577
2627
|
{
|
|
2578
2628
|
ref: file,
|
|
@@ -2582,8 +2632,8 @@ function ImagePanel({ editor, close, onNotice }) {
|
|
|
2582
2632
|
onChange: (e) => fromFile(e.target.files?.[0])
|
|
2583
2633
|
}
|
|
2584
2634
|
),
|
|
2585
|
-
/* @__PURE__ */ (0,
|
|
2586
|
-
/* @__PURE__ */ (0,
|
|
2635
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__or", children: "or" }),
|
|
2636
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2587
2637
|
"input",
|
|
2588
2638
|
{
|
|
2589
2639
|
"aria-label": "Image address",
|
|
@@ -2594,7 +2644,7 @@ function ImagePanel({ editor, close, onNotice }) {
|
|
|
2594
2644
|
onKeyDown: (e) => e.key === "Enter" && fromUrl()
|
|
2595
2645
|
}
|
|
2596
2646
|
),
|
|
2597
|
-
/* @__PURE__ */ (0,
|
|
2647
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2598
2648
|
"input",
|
|
2599
2649
|
{
|
|
2600
2650
|
"aria-label": "Alternative text",
|
|
@@ -2604,24 +2654,24 @@ function ImagePanel({ editor, close, onNotice }) {
|
|
|
2604
2654
|
onChange: (e) => setAlt(e.target.value)
|
|
2605
2655
|
}
|
|
2606
2656
|
),
|
|
2607
|
-
/* @__PURE__ */ (0,
|
|
2608
|
-
/* @__PURE__ */ (0,
|
|
2609
|
-
/* @__PURE__ */ (0,
|
|
2657
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-row june-doc__pop-row--end", children: [
|
|
2658
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn", onClick: close, children: "Cancel" }),
|
|
2659
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--primary", disabled: !url.trim(), onClick: fromUrl, children: "Insert" })
|
|
2610
2660
|
] })
|
|
2611
2661
|
] });
|
|
2612
2662
|
}
|
|
2613
2663
|
function TablePanel({ editor, close }) {
|
|
2614
2664
|
const [hover, setHover] = (0, import_react9.useState)([0, 0]);
|
|
2615
2665
|
const N = 8;
|
|
2616
|
-
return /* @__PURE__ */ (0,
|
|
2617
|
-
/* @__PURE__ */ (0,
|
|
2666
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Insert table", children: [
|
|
2667
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-title", children: [
|
|
2618
2668
|
"Table ",
|
|
2619
2669
|
hover[0] ? `${hover[0]} \xD7 ${hover[1]}` : ""
|
|
2620
2670
|
] }),
|
|
2621
|
-
/* @__PURE__ */ (0,
|
|
2671
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__grid", onMouseLeave: () => setHover([0, 0]), children: Array.from({ length: N * N }, (_, i) => {
|
|
2622
2672
|
const r = Math.floor(i / N) + 1;
|
|
2623
2673
|
const c = i % N + 1;
|
|
2624
|
-
return /* @__PURE__ */ (0,
|
|
2674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2625
2675
|
"button",
|
|
2626
2676
|
{
|
|
2627
2677
|
type: "button",
|
|
@@ -2703,34 +2753,34 @@ function DocumentToolbar(props) {
|
|
|
2703
2753
|
const fontKnown = FONT_FAMILIES.some((f) => f.value === s?.fontFamily);
|
|
2704
2754
|
const sizes = s?.fontSize && !FONT_SIZES.includes(Number(s.fontSize)) ? [...FONT_SIZES, Number(s.fontSize)].sort((a, b) => a - b) : FONT_SIZES;
|
|
2705
2755
|
if (!editable) return null;
|
|
2706
|
-
return /* @__PURE__ */ (0,
|
|
2707
|
-
/* @__PURE__ */ (0,
|
|
2708
|
-
/* @__PURE__ */ (0,
|
|
2709
|
-
/* @__PURE__ */ (0,
|
|
2710
|
-
/* @__PURE__ */ (0,
|
|
2756
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__ribbon", role: "toolbar", "aria-label": "Document formatting", children: [
|
|
2757
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__row", children: [
|
|
2758
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "History", children: [
|
|
2759
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Undo", icon: "undo", disabled: off || !s?.canUndo, onClick: () => run()?.undo().run() }),
|
|
2760
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Redo", icon: "redo", disabled: off || !s?.canRedo, onClick: () => run()?.redo().run() })
|
|
2711
2761
|
] }),
|
|
2712
|
-
/* @__PURE__ */ (0,
|
|
2713
|
-
/* @__PURE__ */ (0,
|
|
2714
|
-
/* @__PURE__ */ (0,
|
|
2715
|
-
/* @__PURE__ */ (0,
|
|
2716
|
-
/* @__PURE__ */ (0,
|
|
2717
|
-
/* @__PURE__ */ (0,
|
|
2718
|
-
/* @__PURE__ */ (0,
|
|
2719
|
-
/* @__PURE__ */ (0,
|
|
2762
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Format", children: [
|
|
2763
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Bold", icon: "bold", toggle: true, active: s?.bold, disabled: off, onClick: () => run()?.toggleBold().run() }),
|
|
2764
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Italic", icon: "italic", toggle: true, active: s?.italic, disabled: off, onClick: () => run()?.toggleItalic().run() }),
|
|
2765
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Underline", icon: "underline", toggle: true, active: s?.underline, disabled: off, onClick: () => run()?.toggleUnderline().run() }),
|
|
2766
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Strikethrough", icon: "strike", toggle: true, active: s?.strike, disabled: off, onClick: () => run()?.toggleStrike().run() }),
|
|
2767
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Inline code", icon: "code", toggle: true, active: s?.code, disabled: off, onClick: () => run()?.toggleCode().run() }),
|
|
2768
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Superscript", icon: "superscript", toggle: true, active: s?.sup, disabled: off, onClick: () => run()?.toggleSuperscript().run() }),
|
|
2769
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Subscript", icon: "subscript", toggle: true, active: s?.sub, disabled: off, onClick: () => run()?.toggleSubscript().run() })
|
|
2720
2770
|
] }),
|
|
2721
|
-
/* @__PURE__ */ (0,
|
|
2722
|
-
/* @__PURE__ */ (0,
|
|
2723
|
-
/* @__PURE__ */ (0,
|
|
2724
|
-
/* @__PURE__ */ (0,
|
|
2725
|
-
/* @__PURE__ */ (0,
|
|
2771
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Align", children: [
|
|
2772
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Align left", icon: "alignLeft", toggle: true, active: s?.left, disabled: off, onClick: () => run()?.setTextAlign("left").run() }),
|
|
2773
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Align center", icon: "alignCenter", toggle: true, active: s?.center, disabled: off, onClick: () => run()?.setTextAlign("center").run() }),
|
|
2774
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Align right", icon: "alignRight", toggle: true, active: s?.right, disabled: off, onClick: () => run()?.setTextAlign("right").run() }),
|
|
2775
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Justify", icon: "alignJustify", toggle: true, active: s?.justify, disabled: off, onClick: () => run()?.setTextAlign("justify").run() })
|
|
2726
2776
|
] }),
|
|
2727
|
-
/* @__PURE__ */ (0,
|
|
2728
|
-
/* @__PURE__ */ (0,
|
|
2729
|
-
/* @__PURE__ */ (0,
|
|
2730
|
-
/* @__PURE__ */ (0,
|
|
2731
|
-
/* @__PURE__ */ (0,
|
|
2777
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Lists", children: [
|
|
2778
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Bullet list", icon: "list", toggle: true, active: s?.bullet, disabled: off, onClick: () => run()?.toggleBulletList().run() }),
|
|
2779
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Numbered list", icon: "listOrdered", toggle: true, active: s?.ordered, disabled: off, onClick: () => run()?.toggleOrderedList().run() }),
|
|
2780
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Decrease indent", icon: "outdent", disabled: off || !s?.canLift, onClick: () => run()?.liftListItem("listItem").run() }),
|
|
2781
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Increase indent", icon: "indent", disabled: off || !s?.canSink, onClick: () => run()?.sinkListItem("listItem").run() })
|
|
2732
2782
|
] }),
|
|
2733
|
-
/* @__PURE__ */ (0,
|
|
2783
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2734
2784
|
"button",
|
|
2735
2785
|
{
|
|
2736
2786
|
type: "button",
|
|
@@ -2741,22 +2791,22 @@ function DocumentToolbar(props) {
|
|
|
2741
2791
|
onClick: onToggleExpanded,
|
|
2742
2792
|
children: [
|
|
2743
2793
|
expanded ? "Less" : "More",
|
|
2744
|
-
/* @__PURE__ */ (0,
|
|
2794
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: expanded ? "chevronUp" : "chevronDown", size: 14 })
|
|
2745
2795
|
]
|
|
2746
2796
|
}
|
|
2747
2797
|
)
|
|
2748
2798
|
] }),
|
|
2749
|
-
expanded ? /* @__PURE__ */ (0,
|
|
2750
|
-
/* @__PURE__ */ (0,
|
|
2751
|
-
/* @__PURE__ */ (0,
|
|
2752
|
-
/* @__PURE__ */ (0,
|
|
2753
|
-
/* @__PURE__ */ (0,
|
|
2754
|
-
/* @__PURE__ */ (0,
|
|
2755
|
-
/* @__PURE__ */ (0,
|
|
2756
|
-
/* @__PURE__ */ (0,
|
|
2757
|
-
/* @__PURE__ */ (0,
|
|
2799
|
+
expanded ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__row june-doc__row--secondary", children: [
|
|
2800
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Style", children: [
|
|
2801
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: "Style", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("select", { className: "june-doc__select", "aria-label": "Text style", disabled: off, value: style, onChange: (e) => setStyle(e.target.value), children: [
|
|
2802
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "p", children: "Paragraph" }),
|
|
2803
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "1", children: "Heading 1" }),
|
|
2804
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "2", children: "Heading 2" }),
|
|
2805
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "3", children: "Heading 3" }),
|
|
2806
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "quote", children: "Quote" }),
|
|
2807
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "code", children: "Code block" })
|
|
2758
2808
|
] }) }),
|
|
2759
|
-
/* @__PURE__ */ (0,
|
|
2809
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: "Font", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2760
2810
|
"select",
|
|
2761
2811
|
{
|
|
2762
2812
|
className: "june-doc__select june-doc__select--font",
|
|
@@ -2769,12 +2819,12 @@ function DocumentToolbar(props) {
|
|
|
2769
2819
|
else run()?.unsetFontFamily().run();
|
|
2770
2820
|
},
|
|
2771
2821
|
children: [
|
|
2772
|
-
FONT_FAMILIES.map((f) => /* @__PURE__ */ (0,
|
|
2773
|
-
!fontKnown && s?.fontFamily ? /* @__PURE__ */ (0,
|
|
2822
|
+
FONT_FAMILIES.map((f) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: f.value, style: { fontFamily: f.value || void 0 }, children: f.label }, f.label)),
|
|
2823
|
+
!fontKnown && s?.fontFamily ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: s.fontFamily, children: s.fontFamily.split(",")[0].replace(/['"]/g, "") }) : null
|
|
2774
2824
|
]
|
|
2775
2825
|
}
|
|
2776
2826
|
) }),
|
|
2777
|
-
/* @__PURE__ */ (0,
|
|
2827
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: "Size", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2778
2828
|
"select",
|
|
2779
2829
|
{
|
|
2780
2830
|
className: "june-doc__select june-doc__select--size",
|
|
@@ -2787,21 +2837,21 @@ function DocumentToolbar(props) {
|
|
|
2787
2837
|
else run()?.unsetFontSize().run();
|
|
2788
2838
|
},
|
|
2789
2839
|
children: [
|
|
2790
|
-
/* @__PURE__ */ (0,
|
|
2791
|
-
sizes.map((n) => /* @__PURE__ */ (0,
|
|
2840
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "", children: "Auto" }),
|
|
2841
|
+
sizes.map((n) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: String(n), children: n }, n))
|
|
2792
2842
|
]
|
|
2793
2843
|
}
|
|
2794
2844
|
) })
|
|
2795
2845
|
] }),
|
|
2796
|
-
/* @__PURE__ */ (0,
|
|
2797
|
-
/* @__PURE__ */ (0,
|
|
2798
|
-
/* @__PURE__ */ (0,
|
|
2799
|
-
/* @__PURE__ */ (0,
|
|
2800
|
-
/* @__PURE__ */ (0,
|
|
2801
|
-
/* @__PURE__ */ (0,
|
|
2846
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Show formatting marks", icon: "pilcrow", toggle: true, active: showMarks, onClick: onToggleMarks, text: true, className: "june-doc__btn--marks", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Paragraph" }) }),
|
|
2847
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Document", children: [
|
|
2848
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert page break", icon: "pageBreak", disabled: off, onClick: () => run()?.setPageBreak().run() }),
|
|
2849
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert divider", icon: "divider", disabled: off, onClick: () => run()?.setHorizontalRule().run() }),
|
|
2850
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: layout === "page" ? "Switch to full-width layout" : "Switch to page layout", icon: "layout", toggle: true, active: layout === "fluid", onClick: onToggleLayout }),
|
|
2851
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Find and replace", icon: "search", toggle: true, active: findOpen, onClick: onToggleFind })
|
|
2802
2852
|
] }),
|
|
2803
|
-
/* @__PURE__ */ (0,
|
|
2804
|
-
/* @__PURE__ */ (0,
|
|
2853
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Color", children: [
|
|
2854
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2805
2855
|
ColorPicker,
|
|
2806
2856
|
{
|
|
2807
2857
|
label: "Text color",
|
|
@@ -2814,7 +2864,7 @@ function DocumentToolbar(props) {
|
|
|
2814
2864
|
onReset: () => run()?.unsetColor().run()
|
|
2815
2865
|
}
|
|
2816
2866
|
),
|
|
2817
|
-
/* @__PURE__ */ (0,
|
|
2867
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2818
2868
|
ColorPicker,
|
|
2819
2869
|
{
|
|
2820
2870
|
label: "Highlight",
|
|
@@ -2828,34 +2878,34 @@ function DocumentToolbar(props) {
|
|
|
2828
2878
|
}
|
|
2829
2879
|
)
|
|
2830
2880
|
] }),
|
|
2831
|
-
/* @__PURE__ */ (0,
|
|
2832
|
-
editor ? /* @__PURE__ */ (0,
|
|
2881
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Insert", children: [
|
|
2882
|
+
editor ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2833
2883
|
Dropdown,
|
|
2834
2884
|
{
|
|
2835
|
-
trigger: ({ open, toggle }) => /* @__PURE__ */ (0,
|
|
2836
|
-
children: (close) => /* @__PURE__ */ (0,
|
|
2885
|
+
trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Link", icon: "link", toggle: true, active: s?.link || open, disabled: off, onClick: toggle }),
|
|
2886
|
+
children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LinkPanel, { editor, href: s?.linkHref ?? "", isLink: !!s?.link, close })
|
|
2837
2887
|
}
|
|
2838
2888
|
) : null,
|
|
2839
|
-
editor ? /* @__PURE__ */ (0,
|
|
2840
|
-
editor ? /* @__PURE__ */ (0,
|
|
2889
|
+
editor ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert image", icon: "image", active: open, disabled: off, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ImagePanel, { editor, close, onNotice }) }) : null,
|
|
2890
|
+
editor ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert table", icon: "table", active: open, disabled: off, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TablePanel, { editor, close }) }) : null
|
|
2841
2891
|
] }),
|
|
2842
|
-
/* @__PURE__ */ (0,
|
|
2892
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Group, { label: "Actions", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Clear formatting", icon: "eraser", disabled: off, onClick: () => run()?.unsetAllMarks().clearNodes().run() }) })
|
|
2843
2893
|
] }) : null,
|
|
2844
|
-
s?.inTable ? /* @__PURE__ */ (0,
|
|
2845
|
-
/* @__PURE__ */ (0,
|
|
2846
|
-
/* @__PURE__ */ (0,
|
|
2847
|
-
/* @__PURE__ */ (0,
|
|
2848
|
-
/* @__PURE__ */ (0,
|
|
2849
|
-
/* @__PURE__ */ (0,
|
|
2850
|
-
/* @__PURE__ */ (0,
|
|
2851
|
-
/* @__PURE__ */ (0,
|
|
2852
|
-
/* @__PURE__ */ (0,
|
|
2894
|
+
s?.inTable ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__row june-doc__row--context", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Table", children: [
|
|
2895
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Add row below", disabled: off, onClick: () => run()?.addRowAfter().run(), children: "+ Row" }),
|
|
2896
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Add column right", disabled: off, onClick: () => run()?.addColumnAfter().run(), children: "+ Column" }),
|
|
2897
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Delete row", disabled: off, onClick: () => run()?.deleteRow().run(), children: "\u2212 Row" }),
|
|
2898
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Delete column", disabled: off, onClick: () => run()?.deleteColumn().run(), children: "\u2212 Column" }),
|
|
2899
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Merge cells", disabled: off || !s?.canMerge, onClick: () => run()?.mergeCells().run(), children: "Merge" }),
|
|
2900
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Split cell", disabled: off || !s?.canSplit, onClick: () => run()?.splitCell().run(), children: "Split" }),
|
|
2901
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Toggle header row", disabled: off, onClick: () => run()?.toggleHeaderRow().run(), children: "Header row" }),
|
|
2902
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Delete table", disabled: off, onClick: () => run()?.deleteTable().run(), className: "june-doc__btn--danger", children: "Delete table" })
|
|
2853
2903
|
] }) }) : null
|
|
2854
2904
|
] });
|
|
2855
2905
|
}
|
|
2856
2906
|
|
|
2857
2907
|
// src/components/document-editor/document-bubble.tsx
|
|
2858
|
-
var
|
|
2908
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
2859
2909
|
function DocumentBubbleMenu({ editor }) {
|
|
2860
2910
|
const s = (0, import_react10.useEditorState)({
|
|
2861
2911
|
editor,
|
|
@@ -2871,7 +2921,7 @@ function DocumentBubbleMenu({ editor }) {
|
|
|
2871
2921
|
})
|
|
2872
2922
|
});
|
|
2873
2923
|
const run = () => editor.chain().focus();
|
|
2874
|
-
return /* @__PURE__ */ (0,
|
|
2924
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2875
2925
|
import_menus.BubbleMenu,
|
|
2876
2926
|
{
|
|
2877
2927
|
editor,
|
|
@@ -2884,13 +2934,13 @@ function DocumentBubbleMenu({ editor }) {
|
|
|
2884
2934
|
return state.doc.textBetween(state.selection.from, state.selection.to).trim().length > 0;
|
|
2885
2935
|
},
|
|
2886
2936
|
children: [
|
|
2887
|
-
/* @__PURE__ */ (0,
|
|
2888
|
-
/* @__PURE__ */ (0,
|
|
2889
|
-
/* @__PURE__ */ (0,
|
|
2890
|
-
/* @__PURE__ */ (0,
|
|
2891
|
-
/* @__PURE__ */ (0,
|
|
2892
|
-
/* @__PURE__ */ (0,
|
|
2893
|
-
/* @__PURE__ */ (0,
|
|
2937
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Bold", icon: "bold", toggle: true, active: s.bold, onClick: () => run().toggleBold().run() }),
|
|
2938
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Italic", icon: "italic", toggle: true, active: s.italic, onClick: () => run().toggleItalic().run() }),
|
|
2939
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Underline", icon: "underline", toggle: true, active: s.underline, onClick: () => run().toggleUnderline().run() }),
|
|
2940
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Strikethrough", icon: "strike", toggle: true, active: s.strike, onClick: () => run().toggleStrike().run() }),
|
|
2941
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "june-doc__bubble-sep", "aria-hidden": "true" }),
|
|
2942
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Link", icon: "link", toggle: true, active: s.link || open, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LinkPanel, { editor, href: s.linkHref, isLink: s.link, close }) }),
|
|
2943
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2894
2944
|
ColorPicker,
|
|
2895
2945
|
{
|
|
2896
2946
|
label: "Text color",
|
|
@@ -2902,7 +2952,7 @@ function DocumentBubbleMenu({ editor }) {
|
|
|
2902
2952
|
onReset: () => run().unsetColor().run()
|
|
2903
2953
|
}
|
|
2904
2954
|
),
|
|
2905
|
-
/* @__PURE__ */ (0,
|
|
2955
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2906
2956
|
ColorPicker,
|
|
2907
2957
|
{
|
|
2908
2958
|
label: "Highlight",
|
|
@@ -2914,8 +2964,8 @@ function DocumentBubbleMenu({ editor }) {
|
|
|
2914
2964
|
onReset: () => run().unsetHighlight().run()
|
|
2915
2965
|
}
|
|
2916
2966
|
),
|
|
2917
|
-
/* @__PURE__ */ (0,
|
|
2918
|
-
/* @__PURE__ */ (0,
|
|
2967
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "june-doc__bubble-sep", "aria-hidden": "true" }),
|
|
2968
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Clear formatting", icon: "eraser", onClick: () => run().unsetAllMarks().run() })
|
|
2919
2969
|
]
|
|
2920
2970
|
}
|
|
2921
2971
|
);
|
|
@@ -2925,7 +2975,7 @@ function DocumentBubbleMenu({ editor }) {
|
|
|
2925
2975
|
var import_react11 = require("@tiptap/react");
|
|
2926
2976
|
var import_react12 = require("react");
|
|
2927
2977
|
init_document_pagination();
|
|
2928
|
-
var
|
|
2978
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2929
2979
|
var PAGE_WIDTH = 794;
|
|
2930
2980
|
var PAGE_HEIGHT = 1123;
|
|
2931
2981
|
var PAGE_GAP = 28;
|
|
@@ -3020,13 +3070,13 @@ function DocumentContent({ editor, layout = "page", zoom = 1, showMarks = false,
|
|
|
3020
3070
|
width: width * zoom,
|
|
3021
3071
|
height: zoom === 1 ? void 0 : Math.max(sheetH, minHeight ?? 0) * zoom
|
|
3022
3072
|
};
|
|
3023
|
-
return /* @__PURE__ */ (0,
|
|
3024
|
-
paged ? /* @__PURE__ */ (0,
|
|
3073
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref: canvas, className: "june-doc__content june-doc__canvas", "data-layout": layout, "data-marks": showMarks || void 0, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "june-doc__zoomer", style: zoomerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { ref: sheet, className: "june-doc__sheet", style: sheetStyle, children: [
|
|
3074
|
+
paged ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "june-doc__pages", "aria-hidden": "true", children: Array.from({ length: pages }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "june-doc__page", style: { top: i * stride, height: g.height }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "june-doc__page-num", children: [
|
|
3025
3075
|
i + 1,
|
|
3026
3076
|
" / ",
|
|
3027
3077
|
pages
|
|
3028
3078
|
] }) }, i)) }) : null,
|
|
3029
|
-
/* @__PURE__ */ (0,
|
|
3079
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react11.EditorContent, { editor })
|
|
3030
3080
|
] }) }) });
|
|
3031
3081
|
}
|
|
3032
3082
|
|
|
@@ -3034,7 +3084,7 @@ function DocumentContent({ editor, layout = "page", zoom = 1, showMarks = false,
|
|
|
3034
3084
|
var import_react13 = require("@tiptap/react");
|
|
3035
3085
|
var import_react14 = require("react");
|
|
3036
3086
|
init_document_search();
|
|
3037
|
-
var
|
|
3087
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
3038
3088
|
function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
3039
3089
|
const [term, setTerm] = (0, import_react14.useState)(() => {
|
|
3040
3090
|
const { from, to, empty } = editor.state.selection;
|
|
@@ -3062,7 +3112,7 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
|
3062
3112
|
}, [editor]);
|
|
3063
3113
|
const count = info?.count ?? 0;
|
|
3064
3114
|
const current = info?.current ?? -1;
|
|
3065
|
-
return /* @__PURE__ */ (0,
|
|
3115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
3066
3116
|
"div",
|
|
3067
3117
|
{
|
|
3068
3118
|
className: "june-doc__findbar",
|
|
@@ -3075,9 +3125,9 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
|
3075
3125
|
}
|
|
3076
3126
|
},
|
|
3077
3127
|
children: [
|
|
3078
|
-
/* @__PURE__ */ (0,
|
|
3079
|
-
/* @__PURE__ */ (0,
|
|
3080
|
-
/* @__PURE__ */ (0,
|
|
3128
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "june-doc__find-field", children: [
|
|
3129
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "search", size: 14 }),
|
|
3130
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3081
3131
|
"input",
|
|
3082
3132
|
{
|
|
3083
3133
|
ref: input,
|
|
@@ -3094,11 +3144,11 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
|
3094
3144
|
}
|
|
3095
3145
|
}
|
|
3096
3146
|
),
|
|
3097
|
-
/* @__PURE__ */ (0,
|
|
3147
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "june-doc__find-count", "aria-live": "polite", children: term ? count ? `${current + 1} of ${count}` : "No results" : "" })
|
|
3098
3148
|
] }),
|
|
3099
|
-
/* @__PURE__ */ (0,
|
|
3100
|
-
/* @__PURE__ */ (0,
|
|
3101
|
-
/* @__PURE__ */ (0,
|
|
3149
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon", "aria-label": "Previous match", title: "Previous (Shift+Enter)", disabled: !count, onClick: () => gotoMatch(editor, -1), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "chevronUp" }) }),
|
|
3150
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon", "aria-label": "Next match", title: "Next (Enter)", disabled: !count, onClick: () => gotoMatch(editor, 1), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "chevronDown" }) }),
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3102
3152
|
"button",
|
|
3103
3153
|
{
|
|
3104
3154
|
type: "button",
|
|
@@ -3111,9 +3161,9 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
|
3111
3161
|
children: "Aa"
|
|
3112
3162
|
}
|
|
3113
3163
|
),
|
|
3114
|
-
editable ? /* @__PURE__ */ (0,
|
|
3115
|
-
/* @__PURE__ */ (0,
|
|
3116
|
-
/* @__PURE__ */ (0,
|
|
3164
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
3165
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "june-doc__find-sep", "aria-hidden": "true" }),
|
|
3166
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3117
3167
|
"input",
|
|
3118
3168
|
{
|
|
3119
3169
|
className: "june-doc__input june-doc__replace-input",
|
|
@@ -3129,8 +3179,8 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
|
3129
3179
|
}
|
|
3130
3180
|
}
|
|
3131
3181
|
),
|
|
3132
|
-
/* @__PURE__ */ (0,
|
|
3133
|
-
/* @__PURE__ */ (0,
|
|
3182
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn", disabled: !count, onClick: () => replaceCurrent(editor, replacement), children: "Replace" }),
|
|
3183
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3134
3184
|
"button",
|
|
3135
3185
|
{
|
|
3136
3186
|
type: "button",
|
|
@@ -3144,16 +3194,16 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
|
|
|
3144
3194
|
}
|
|
3145
3195
|
)
|
|
3146
3196
|
] }) : null,
|
|
3147
|
-
/* @__PURE__ */ (0,
|
|
3197
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost june-doc__find-close", "aria-label": "Close find", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "close" }) })
|
|
3148
3198
|
]
|
|
3149
3199
|
}
|
|
3150
3200
|
);
|
|
3151
3201
|
}
|
|
3152
3202
|
|
|
3153
3203
|
// src/components/document-editor/document-title.tsx
|
|
3154
|
-
var
|
|
3204
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
3155
3205
|
function DocumentTitle({ value, disabled, onChange }) {
|
|
3156
|
-
return /* @__PURE__ */ (0,
|
|
3206
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
3157
3207
|
"input",
|
|
3158
3208
|
{
|
|
3159
3209
|
className: "june-doc__title",
|
|
@@ -3167,7 +3217,7 @@ function DocumentTitle({ value, disabled, onChange }) {
|
|
|
3167
3217
|
}
|
|
3168
3218
|
|
|
3169
3219
|
// src/components/document-editor/document-header.tsx
|
|
3170
|
-
var
|
|
3220
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
3171
3221
|
var FORMATS = {
|
|
3172
3222
|
docx: { label: "Word document", hint: ".docx", icon: "file" },
|
|
3173
3223
|
pdf: { label: "PDF", hint: "Print / Save as PDF", icon: "file" },
|
|
@@ -3177,15 +3227,15 @@ var FORMATS = {
|
|
|
3177
3227
|
};
|
|
3178
3228
|
function DocumentHeader(props) {
|
|
3179
3229
|
const { title, editable, isDraft, fullscreen, onToggleFullscreen, onTitle, exportFormats, canSave, showSave = canSave, saveState, onExport, onCopy, onSave } = props;
|
|
3180
|
-
return /* @__PURE__ */ (0,
|
|
3181
|
-
fullscreen ? /* @__PURE__ */ (0,
|
|
3182
|
-
/* @__PURE__ */ (0,
|
|
3183
|
-
isDraft ? /* @__PURE__ */ (0,
|
|
3184
|
-
/* @__PURE__ */ (0,
|
|
3230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__header", children: [
|
|
3231
|
+
fullscreen ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Close full screen", title: "Close (Esc)", onClick: onToggleFullscreen, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "close", size: 18 }) }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__doc-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "file", size: 16 }) }),
|
|
3232
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DocumentTitle, { value: title, disabled: !editable, onChange: onTitle }),
|
|
3233
|
+
isDraft ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "june-doc__badge", children: [
|
|
3234
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "sparkles", size: 12 }),
|
|
3185
3235
|
"AI draft"
|
|
3186
3236
|
] }) : null,
|
|
3187
|
-
/* @__PURE__ */ (0,
|
|
3188
|
-
showSave ? /* @__PURE__ */ (0,
|
|
3237
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__header-actions", children: [
|
|
3238
|
+
showSave ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3189
3239
|
"button",
|
|
3190
3240
|
{
|
|
3191
3241
|
type: "button",
|
|
@@ -3196,17 +3246,17 @@ function DocumentHeader(props) {
|
|
|
3196
3246
|
disabled: saveState === "saving" || saveState === "saved" || saveState === "idle",
|
|
3197
3247
|
onClick: onSave,
|
|
3198
3248
|
children: [
|
|
3199
|
-
/* @__PURE__ */ (0,
|
|
3200
|
-
/* @__PURE__ */ (0,
|
|
3249
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: saveState === "saved" ? "check" : "save" }),
|
|
3250
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: saveState === "saving" ? "Saving\u2026" : saveState === "saved" ? "Saved" : "Save" })
|
|
3201
3251
|
]
|
|
3202
3252
|
}
|
|
3203
3253
|
) : null,
|
|
3204
|
-
/* @__PURE__ */ (0,
|
|
3254
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3205
3255
|
Dropdown,
|
|
3206
3256
|
{
|
|
3207
3257
|
align: "end",
|
|
3208
3258
|
className: "june-doc__menu",
|
|
3209
|
-
trigger: ({ open, toggle }) => /* @__PURE__ */ (0,
|
|
3259
|
+
trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3210
3260
|
"button",
|
|
3211
3261
|
{
|
|
3212
3262
|
type: "button",
|
|
@@ -3216,15 +3266,15 @@ function DocumentHeader(props) {
|
|
|
3216
3266
|
"aria-expanded": open,
|
|
3217
3267
|
onClick: toggle,
|
|
3218
3268
|
children: [
|
|
3219
|
-
/* @__PURE__ */ (0,
|
|
3220
|
-
/* @__PURE__ */ (0,
|
|
3269
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: "Download" }),
|
|
3270
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "chevronDown", size: 14 })
|
|
3221
3271
|
]
|
|
3222
3272
|
}
|
|
3223
3273
|
),
|
|
3224
|
-
children: (close) => /* @__PURE__ */ (0,
|
|
3274
|
+
children: (close) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { role: "menu", "aria-label": "Download options", children: [
|
|
3225
3275
|
exportFormats.map((f) => {
|
|
3226
3276
|
const meta = FORMATS[f] ?? { label: f.toUpperCase(), hint: "", icon: "file" };
|
|
3227
|
-
return /* @__PURE__ */ (0,
|
|
3277
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3228
3278
|
"button",
|
|
3229
3279
|
{
|
|
3230
3280
|
type: "button",
|
|
@@ -3235,16 +3285,16 @@ function DocumentHeader(props) {
|
|
|
3235
3285
|
onExport(f);
|
|
3236
3286
|
},
|
|
3237
3287
|
children: [
|
|
3238
|
-
/* @__PURE__ */ (0,
|
|
3239
|
-
/* @__PURE__ */ (0,
|
|
3240
|
-
/* @__PURE__ */ (0,
|
|
3288
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: meta.icon }),
|
|
3289
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__menu-label", children: meta.label }),
|
|
3290
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__menu-hint", children: meta.hint })
|
|
3241
3291
|
]
|
|
3242
3292
|
},
|
|
3243
3293
|
f
|
|
3244
3294
|
);
|
|
3245
3295
|
}),
|
|
3246
|
-
exportFormats.length ? /* @__PURE__ */ (0,
|
|
3247
|
-
/* @__PURE__ */ (0,
|
|
3296
|
+
exportFormats.length ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "june-doc__menu-sep", role: "separator" }) : null,
|
|
3297
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3248
3298
|
"button",
|
|
3249
3299
|
{
|
|
3250
3300
|
type: "button",
|
|
@@ -3256,15 +3306,15 @@ function DocumentHeader(props) {
|
|
|
3256
3306
|
onCopy();
|
|
3257
3307
|
},
|
|
3258
3308
|
children: [
|
|
3259
|
-
/* @__PURE__ */ (0,
|
|
3260
|
-
/* @__PURE__ */ (0,
|
|
3309
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "copy" }),
|
|
3310
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__menu-label", children: "Copy to clipboard" })
|
|
3261
3311
|
]
|
|
3262
3312
|
}
|
|
3263
3313
|
)
|
|
3264
3314
|
] })
|
|
3265
3315
|
}
|
|
3266
3316
|
),
|
|
3267
|
-
/* @__PURE__ */ (0,
|
|
3317
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
3268
3318
|
"button",
|
|
3269
3319
|
{
|
|
3270
3320
|
type: "button",
|
|
@@ -3273,7 +3323,7 @@ function DocumentHeader(props) {
|
|
|
3273
3323
|
title: fullscreen ? "Exit full screen" : "Open full screen",
|
|
3274
3324
|
"aria-pressed": fullscreen,
|
|
3275
3325
|
onClick: onToggleFullscreen,
|
|
3276
|
-
children: /* @__PURE__ */ (0,
|
|
3326
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "maximize" })
|
|
3277
3327
|
}
|
|
3278
3328
|
)
|
|
3279
3329
|
] })
|
|
@@ -3715,7 +3765,7 @@ var ALL_EXPORT_FORMATS = [
|
|
|
3715
3765
|
|
|
3716
3766
|
// src/components/document-editor/document-editor.tsx
|
|
3717
3767
|
init_document_utils();
|
|
3718
|
-
var
|
|
3768
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
3719
3769
|
var snapshotOf = (r) => ({
|
|
3720
3770
|
documentId: r.id,
|
|
3721
3771
|
title: r.title,
|
|
@@ -3967,18 +4017,18 @@ function DocumentEditorImpl(props) {
|
|
|
3967
4017
|
};
|
|
3968
4018
|
const formats = (exportFormats ?? [...ALL_EXPORT_FORMATS]).filter((f) => listDocumentExporters().includes(f));
|
|
3969
4019
|
if (parsed.error && !store.get(documentId)) {
|
|
3970
|
-
return /* @__PURE__ */ (0,
|
|
3971
|
-
/* @__PURE__ */ (0,
|
|
3972
|
-
/* @__PURE__ */ (0,
|
|
3973
|
-
/* @__PURE__ */ (0,
|
|
3974
|
-
/* @__PURE__ */ (0,
|
|
4020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc june-doc--error", "data-theme": resolvedTheme, role: "alert", children: [
|
|
4021
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "june-doc__draft-text", children: "This document could not be displayed." }),
|
|
4022
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("details", { children: [
|
|
4023
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("summary", { children: "Show raw content" }),
|
|
4024
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("pre", { className: "june-doc__raw", children: contentKey })
|
|
3975
4025
|
] })
|
|
3976
4026
|
] });
|
|
3977
4027
|
}
|
|
3978
|
-
if (!editor) return /* @__PURE__ */ (0,
|
|
4028
|
+
if (!editor) return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentDraft, { title, state: "loading" });
|
|
3979
4029
|
const isDraft = recordStatus === "draft";
|
|
3980
4030
|
const classes = ["june-doc", fullscreen ? "june-doc--fullscreen" : "", className ?? ""].filter(Boolean).join(" ");
|
|
3981
|
-
return /* @__PURE__ */ (0,
|
|
4031
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
3982
4032
|
"div",
|
|
3983
4033
|
{
|
|
3984
4034
|
className: classes,
|
|
@@ -4000,7 +4050,7 @@ function DocumentEditorImpl(props) {
|
|
|
4000
4050
|
}
|
|
4001
4051
|
},
|
|
4002
4052
|
children: [
|
|
4003
|
-
/* @__PURE__ */ (0,
|
|
4053
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4004
4054
|
DocumentHeader,
|
|
4005
4055
|
{
|
|
4006
4056
|
title,
|
|
@@ -4018,21 +4068,21 @@ function DocumentEditorImpl(props) {
|
|
|
4018
4068
|
onSave: () => void saveRef.current()
|
|
4019
4069
|
}
|
|
4020
4070
|
),
|
|
4021
|
-
pending ? /* @__PURE__ */ (0,
|
|
4022
|
-
/* @__PURE__ */ (0,
|
|
4071
|
+
pending ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__banner", role: "status", children: [
|
|
4072
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { children: [
|
|
4023
4073
|
"The assistant suggested changes that overlap your edits (",
|
|
4024
4074
|
pending.conflicts,
|
|
4025
4075
|
" ",
|
|
4026
4076
|
pending.conflicts === 1 ? "section" : "sections",
|
|
4027
4077
|
")."
|
|
4028
4078
|
] }),
|
|
4029
|
-
/* @__PURE__ */ (0,
|
|
4030
|
-
/* @__PURE__ */ (0,
|
|
4031
|
-
/* @__PURE__ */ (0,
|
|
4032
|
-
/* @__PURE__ */ (0,
|
|
4079
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { className: "june-doc__banner-actions", children: [
|
|
4080
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("merge"), children: "Merge, keep my edits" }),
|
|
4081
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("replace"), children: "Use AI version" }),
|
|
4082
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("keep"), children: "Keep mine" })
|
|
4033
4083
|
] })
|
|
4034
4084
|
] }) : null,
|
|
4035
|
-
/* @__PURE__ */ (0,
|
|
4085
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4036
4086
|
DocumentToolbar,
|
|
4037
4087
|
{
|
|
4038
4088
|
editor,
|
|
@@ -4048,33 +4098,33 @@ function DocumentEditorImpl(props) {
|
|
|
4048
4098
|
onNotice: flash
|
|
4049
4099
|
}
|
|
4050
4100
|
),
|
|
4051
|
-
findOpen ? /* @__PURE__ */ (0,
|
|
4052
|
-
editable ? /* @__PURE__ */ (0,
|
|
4053
|
-
/* @__PURE__ */ (0,
|
|
4054
|
-
/* @__PURE__ */ (0,
|
|
4055
|
-
/* @__PURE__ */ (0,
|
|
4056
|
-
layout === "page" ? /* @__PURE__ */ (0,
|
|
4057
|
-
/* @__PURE__ */ (0,
|
|
4101
|
+
findOpen ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentFindBar, { editor, editable, onClose: () => setFindOpen(false), onNotice: flash }) : null,
|
|
4102
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentBubbleMenu, { editor }) : null,
|
|
4103
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentContent, { editor, layout, zoom, showMarks, onMetrics: setMetrics }),
|
|
4104
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__footer", children: [
|
|
4105
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__stats", children: [
|
|
4106
|
+
layout === "page" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
4107
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { children: [
|
|
4058
4108
|
"Page ",
|
|
4059
4109
|
metrics.page,
|
|
4060
4110
|
" of ",
|
|
4061
4111
|
metrics.pages
|
|
4062
4112
|
] }),
|
|
4063
|
-
/* @__PURE__ */ (0,
|
|
4113
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "june-doc__stats-sep", "aria-hidden": "true" })
|
|
4064
4114
|
] }) : null,
|
|
4065
|
-
/* @__PURE__ */ (0,
|
|
4115
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { children: [
|
|
4066
4116
|
words,
|
|
4067
4117
|
" words"
|
|
4068
4118
|
] })
|
|
4069
4119
|
] }),
|
|
4070
|
-
/* @__PURE__ */ (0,
|
|
4071
|
-
/* @__PURE__ */ (0,
|
|
4072
|
-
/* @__PURE__ */ (0,
|
|
4073
|
-
/* @__PURE__ */ (0,
|
|
4120
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "june-doc__status", "aria-live": "polite", "data-state": notice ? "notice" : saveState, children: notice ?? SAVE_LABEL[saveState] }),
|
|
4121
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__zoom", role: "group", "aria-label": "Zoom", children: [
|
|
4122
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Zoom out", disabled: zoom <= ZOOM_STEPS[0], onClick: () => setZoom(stepZoom(zoom, -1)), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { name: "minus", size: 14 }) }),
|
|
4123
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("button", { type: "button", className: "june-doc__zoom-value", "aria-label": "Reset zoom", title: "Reset zoom", onClick: () => setZoom(1), children: [
|
|
4074
4124
|
Math.round(zoom * 100),
|
|
4075
4125
|
"%"
|
|
4076
4126
|
] }),
|
|
4077
|
-
/* @__PURE__ */ (0,
|
|
4127
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Zoom in", disabled: zoom >= ZOOM_STEPS[ZOOM_STEPS.length - 1], onClick: () => setZoom(stepZoom(zoom, 1)), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { name: "plus", size: 14 }) })
|
|
4078
4128
|
] })
|
|
4079
4129
|
] })
|
|
4080
4130
|
]
|
|
@@ -4083,7 +4133,7 @@ function DocumentEditorImpl(props) {
|
|
|
4083
4133
|
}
|
|
4084
4134
|
|
|
4085
4135
|
// src/components/document-editor/document-component.tsx
|
|
4086
|
-
var
|
|
4136
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
4087
4137
|
var DOCUMENT_COMPONENT_DESCRIPTION = 'Custom component. An editable document. DocumentEditor(documentId, title, content, documentType?, status?, editable?, exportFormats?). Place it in the root container (Card or Stack). "content" is the full document body as one Markdown string. Reuse documentId when revising the same document. Use it only when the user asks to create or revise a document.';
|
|
4088
4138
|
var documentProps = import_v4.z.object({
|
|
4089
4139
|
documentId: import_v4.z.string().describe("Stable id. Reuse it when revising the same document."),
|
|
@@ -4097,12 +4147,12 @@ var documentProps = import_v4.z.object({
|
|
|
4097
4147
|
function DocumentEditor(props) {
|
|
4098
4148
|
const { isStreaming } = useJuneRuntime();
|
|
4099
4149
|
if (props.generating || isStreaming) {
|
|
4100
|
-
return /* @__PURE__ */ (0,
|
|
4150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DocumentDraft, { title: props.title, state: "drafting" });
|
|
4101
4151
|
}
|
|
4102
|
-
return /* @__PURE__ */ (0,
|
|
4152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DocumentEditorImpl, { ...props });
|
|
4103
4153
|
}
|
|
4104
4154
|
function OpenUIDocument({ props }) {
|
|
4105
|
-
return /* @__PURE__ */ (0,
|
|
4155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
4106
4156
|
DocumentEditor,
|
|
4107
4157
|
{
|
|
4108
4158
|
documentId: props.documentId,
|
|
@@ -4190,9 +4240,9 @@ var import_react_ui = require("@openuidev/react-ui");
|
|
|
4190
4240
|
var juneLibrary = withDocumentEditor(import_react_ui.openuiLibrary);
|
|
4191
4241
|
|
|
4192
4242
|
// src/core/JuneUI.tsx
|
|
4193
|
-
var
|
|
4243
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
4194
4244
|
function JuneUI({ library = juneLibrary, ...props }) {
|
|
4195
|
-
return /* @__PURE__ */ (0,
|
|
4245
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(JuneRenderer, { library, ...props });
|
|
4196
4246
|
}
|
|
4197
4247
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4198
4248
|
0 && (module.exports = {
|