pagepilot-visual-editor 1.0.27 → 1.0.29
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 +27 -0
- package/dist/blocks-internal/block-button/src/index.d.ts +10 -9
- package/dist/blocks-internal/block-button/src/styles.d.ts +5 -0
- package/dist/blocks-internal/block-button-group/src/index.d.ts +6 -0
- package/dist/blocks-internal/block-container/src/index.d.ts +5 -5
- package/dist/blocks-internal/block-heading/src/index.d.ts +30 -1
- package/dist/blocks-internal/block-image/src/index.d.ts +46 -11
- package/dist/blocks-internal/block-logo/src/index.d.ts +17 -11
- package/dist/blocks-internal/block-text/src/index.d.ts +25 -0
- package/dist/blocks-internal/block-video/src/index.d.ts +6 -0
- package/dist/blocks-internal/block-youtube-url/src/index.d.ts +6 -0
- package/dist/editor-sample/App/InspectorDrawer/LayersPanelStyles.d.ts +2 -2
- package/dist/editor-sample/App/shared/editor.styles.d.ts +3 -3
- package/dist/editor-sample/documents/blocks/ButtonGroup/ButtonGroupPropsSchema.d.ts +6 -0
- package/dist/editor-sample/documents/blocks/Container/ContainerPropsSchema.d.ts +1 -1
- package/dist/editor-sample/documents/blocks/Table/TableImportDialog.styles.d.ts +7 -7
- package/dist/editor-sample/documents/blocks/helpers/responsiveStyle.d.ts +3 -16
- package/dist/editor-sample/documents/editor/EditorContext.d.ts +2 -2
- package/dist/editor-sample/documents/editor/core.d.ts +123 -27
- package/dist/email-builder-core/Reader/resolveResponsiveBlock.d.ts +17 -0
- package/dist/email-builder-core/blocks/ButtonGroup/ButtonGroupPropsSchema.d.ts +6 -0
- package/dist/email-builder-core/blocks/Container/ContainerPropsSchema.d.ts +6 -4
- package/dist/email-builder-core/blocks/Container/ContainerReader.d.ts +1 -1
- package/dist/email-builder-core/blocks/EmailLayout/EmailLayoutReader.d.ts +1 -1
- package/dist/email-builder-core/blocks/MenuPicker/MenuPropsSchema.d.ts +12 -0
- package/dist/email-builder-core/blocks/MenuPicker/menuResponsiveCss.d.ts +1 -0
- package/dist/email-builder-core/blocks/Timer/TimerPropsSchema.d.ts +2 -0
- package/dist/email-builder-core/blocks/Timer/variants/CircularProgressView.d.ts +6 -1
- package/dist/email-builder-core/blocks/Timer/variants/DigitalFlipView.d.ts +4 -1
- package/dist/email-builder-core/blocks/Timer/variants/TextInlineView.d.ts +3 -1
- package/dist/email-builder-core/blocks/helpers/blockStyleHelpers.d.ts +59 -1
- package/dist/email-builder-core/index.d.ts +2 -0
- package/dist/email-builder-core/renderers/animationCss.d.ts +5 -5
- package/dist/email-builder-core/renderers/pageScripts.d.ts +1 -11
- package/dist/email-builder-core/renderers/renderToStaticMarkup.d.ts +4 -2
- package/dist/email-builder-core/renderers/themeTokens.d.ts +143 -0
- package/dist/host-stubs/modules/settings/settingsSelectors.d.ts +5 -0
- package/dist/host-stubs/style/menu.styled.d.ts +5 -1
- package/dist/host-stubs/view/branding/brandDefaultFont.d.ts +3 -0
- package/dist/host-stubs/view/shared/editors/highlightCode.d.ts +1 -0
- package/dist/{index-C4zNSWXe.js → index-BN1BduFG.js} +1 -1
- package/dist/{index-Cu-dtp0Q.cjs → index-BRq3RgdO.cjs} +1 -1
- package/dist/{index-BNqa-SV3.cjs → index-DEBoxZlq.cjs} +374 -1224
- package/dist/{index-Dk7bp7l0.js → index-DojXOBrb.js} +24851 -24994
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/render-core/stubs/editorContext.d.ts +3 -1
- package/dist/render.cjs +255 -1105
- package/dist/render.js +6172 -6332
- package/dist/renderToStaticHtml.d.ts +9 -1
- package/dist/{xlsx-Cd1etxFW.js → xlsx-0y4dyiCO.js} +1 -1
- package/dist/{xlsx-C6JQXDb3.cjs → xlsx-D2quXLTv.cjs} +1 -1
- package/package.json +1 -1
|
@@ -4,8 +4,66 @@ type TPadding = {
|
|
|
4
4
|
bottom: number;
|
|
5
5
|
left: number;
|
|
6
6
|
} | null | undefined;
|
|
7
|
+
type TMargin = {
|
|
8
|
+
top: number;
|
|
9
|
+
right: number;
|
|
10
|
+
bottom: number;
|
|
11
|
+
left: number;
|
|
12
|
+
} | null | undefined;
|
|
13
|
+
export type TBorderRadius = number | string | {
|
|
14
|
+
topLeft: number;
|
|
15
|
+
topRight: number;
|
|
16
|
+
bottomRight: number;
|
|
17
|
+
bottomLeft: number;
|
|
18
|
+
} | null | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* True when a color value is a CSS gradient rather than a solid color.
|
|
21
|
+
*
|
|
22
|
+
* This is the single source of truth for that question. It matters far beyond
|
|
23
|
+
* cosmetics: several blocks branch on it to decide WHICH CSS PROPERTIES to
|
|
24
|
+
* emit, not merely which value to set (e.g. gradient text is painted via
|
|
25
|
+
* `background-image` + `background-clip: text` + transparent `color`, while a
|
|
26
|
+
* solid color is just `color`). Previously this regex was copy-pasted into
|
|
27
|
+
* nine render sites, so any divergence silently changed which branch a block
|
|
28
|
+
* took.
|
|
29
|
+
*
|
|
30
|
+
* Callers MUST classify the RAW AUTHORED value with this before substituting a
|
|
31
|
+
* themed `var(--ahd-c-N, ...)` token in its place — a tokenized string does not
|
|
32
|
+
* match this pattern, so classifying after substitution would flip a gradient
|
|
33
|
+
* into the solid branch and render it as flat transparent text.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isGradientColor(value: string | null | undefined): value is string;
|
|
36
|
+
/**
|
|
37
|
+
* Reduce a color to something `box-shadow` can actually paint.
|
|
38
|
+
*
|
|
39
|
+
* CSS box-shadow doesn't accept gradients, so an author-picked gradient would
|
|
40
|
+
* otherwise make the shadow vanish entirely. Fall back to the gradient's first
|
|
41
|
+
* color stop to keep a (solid) shadow.
|
|
42
|
+
*
|
|
43
|
+
* Note this deliberately matches on `gradient` anywhere in the string rather
|
|
44
|
+
* than using `isGradientColor`: shadow colors reach here from several schemas
|
|
45
|
+
* and may be a bare gradient fragment rather than a full, anchored
|
|
46
|
+
* `linear-gradient(...)` value.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveShadowColor(color: string): string;
|
|
7
49
|
export declare function formatPadding(p: TPadding): string | undefined;
|
|
8
|
-
export declare function formatMargin(m:
|
|
50
|
+
export declare function formatMargin(m: TMargin): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Convert an authored border radius into a CSS `border-radius` value.
|
|
53
|
+
*
|
|
54
|
+
* Four input shapes are accepted because block `style` objects are declared as
|
|
55
|
+
* an unvalidated `z.object({}).passthrough()`, so saved documents may legitimately
|
|
56
|
+
* hold any of them:
|
|
57
|
+
* - `null`/`undefined` → no declaration at all (let the property stay unset)
|
|
58
|
+
* - `number` → legacy single-value radius, e.g. `8`
|
|
59
|
+
* - `string` → an already-formatted CSS value, e.g. `"8px"` or `"50%"`
|
|
60
|
+
* - per-corner object → emitted in CSS shorthand order: TL TR BR BL
|
|
61
|
+
*
|
|
62
|
+
* The corner order matters and is not arbitrary — it matches the native
|
|
63
|
+
* `border-radius` shorthand, so it must stay in step with the TL/TR/BR/BL
|
|
64
|
+
* ordering used by the sidebar's `RadiusInput`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function formatBorderRadius(radius: TBorderRadius): string | undefined;
|
|
9
67
|
/**
|
|
10
68
|
* Pick the visible text for a trigger with an optional "show text" toggle.
|
|
11
69
|
* - When `showText` is false → returns null (caller should render no text).
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { default as renderToStaticMarkup } from './renderers/renderToStaticMarkup';
|
|
2
2
|
export type { TReaderBlock, TReaderDocument, TReaderBlockProps, TReaderProps, } from './Reader/core';
|
|
3
3
|
export { ReaderBlockSchema, ReaderDocumentSchema, ReaderBlock, default as Reader, } from './Reader/core';
|
|
4
|
+
export { buildGeneratedThemeMarkup } from './renderers/pageScripts';
|
|
5
|
+
export { GENERATED_THEME_ATTR, GENERATED_THEME_AUTO } from './renderers/themeTokens';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared keyframes + trigger rules for the per-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `buildAnimationScript()` runtime in ./pageScripts.ts).
|
|
2
|
+
* Shared keyframes + trigger rules for the Image block's per-element
|
|
3
|
+
* animation (see ImagePropsSchema.props.animation, Reader/core.tsx's
|
|
4
|
+
* data-animate-* attributes, and public/scripts/pagePilotAnimation.js).
|
|
6
5
|
*
|
|
7
6
|
* `transform`/`opacity` only — no layout properties — so animating never
|
|
8
7
|
* causes reflow or content shift. Speed/delay are applied inline by the
|
|
@@ -13,6 +12,7 @@ export declare const ANIMATION_TYPES: readonly ["fade-in", "slide-left", "slide-
|
|
|
13
12
|
export type TAnimationType = (typeof ANIMATION_TYPES)[number];
|
|
14
13
|
export declare const ANIMATION_SPEED_SECONDS: Record<'slow' | 'medium' | 'fast', number>;
|
|
15
14
|
/** Just the @keyframes — reused by both the published page CSS below and the
|
|
16
|
-
* editor canvas's one-off Preview button (see
|
|
15
|
+
* editor canvas's one-off Preview button (see ImageSidebarPanel.tsx), which
|
|
16
|
+
* doesn't load the full published stylesheet. */
|
|
17
17
|
export declare const animationKeyframesCss: string;
|
|
18
18
|
export declare const animationCss: string;
|
|
@@ -13,14 +13,4 @@ export declare const PAGINATION_SCRIPT_URL = "https://pagepilot.fabbuilder.com/s
|
|
|
13
13
|
export declare const DEMO_SCALE_SCRIPT_URL = "https://pagepilot.fabbuilder.com/scripts/pagePilotDemoScale.js";
|
|
14
14
|
export declare const TIMER_SCRIPT_URL = "https://pagepilot.fabbuilder.com/scripts/pagePilotTimer.js";
|
|
15
15
|
export declare const ANIMATION_SCRIPT_URL = "https://pagepilot.fabbuilder.com/scripts/pagePilotAnimation.js";
|
|
16
|
-
|
|
17
|
-
* The per-page runtime that reads the `data-animate-*` attributes emitted by
|
|
18
|
-
* Reader/core.tsx and drives the CSS animation (see animationCss.ts). Ported
|
|
19
|
-
* verbatim from ahd-fe's `public/scripts/pagePilotAnimation.js` and inlined
|
|
20
|
-
* here because pagepilot-visual-editor is a standalone library — it ships
|
|
21
|
-
* self-contained pages, not a hosted app with a public CDN.
|
|
22
|
-
*/
|
|
23
|
-
export declare const buildAnimationScript: () => string;
|
|
24
|
-
export declare const buildDemoScaleJs: () => string;
|
|
25
|
-
export declare const buildTabsScript: () => string;
|
|
26
|
-
export declare const buildCarouselScript: () => string;
|
|
16
|
+
export declare const buildGeneratedThemeMarkup: () => string;
|
|
@@ -35,8 +35,10 @@ type TOptions = {
|
|
|
35
35
|
isBanner?: boolean;
|
|
36
36
|
injectTabsScrollSyncScript?: boolean;
|
|
37
37
|
injectCarouselScript?: boolean;
|
|
38
|
-
|
|
38
|
+
injectPaginationScript?: boolean;
|
|
39
39
|
injectFontAssets?: boolean;
|
|
40
|
+
injectTimerScript?: boolean;
|
|
41
|
+
injectAnimationScript?: boolean;
|
|
40
42
|
};
|
|
41
|
-
export default function renderToStaticMarkup(document: TReaderDocument, { rootBlockId, seo, injectElementIds, minifyCss, lang, skipLink, accessibilityTools, includePageCSS, headHtml, bodyBottomHtml, isBanner, injectTabsScrollSyncScript, injectCarouselScript,
|
|
43
|
+
export default function renderToStaticMarkup(document: TReaderDocument, { rootBlockId, seo, injectElementIds, minifyCss, lang, skipLink, accessibilityTools, includePageCSS, headHtml, bodyBottomHtml, isBanner, injectTabsScrollSyncScript, injectCarouselScript, injectPaginationScript, injectFontAssets, injectTimerScript, injectAnimationScript, }: TOptions): string;
|
|
42
44
|
export {};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme tokens for the generated (published) HTML.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* A published page is a BODY FRAGMENT injected into a host application we
|
|
7
|
+
* don't control (see ConfigureDialog's integration snippets — hosts do
|
|
8
|
+
* `container.insertAdjacentHTML(...)`). There is no `<head>` to put a
|
|
9
|
+
* stylesheet in and no guarantee any host CSS exists, so everything the page
|
|
10
|
+
* needs to render dark must ship inside the fragment itself.
|
|
11
|
+
*
|
|
12
|
+
* ## Why not `filter: invert()`
|
|
13
|
+
*
|
|
14
|
+
* The previous implementation inverted the whole subtree with
|
|
15
|
+
* `filter: invert(1) hue-rotate(180deg)`. That is not dark mode: it rotates
|
|
16
|
+
* every author-picked hue 180deg, so a brand blue publishes as orange. It also
|
|
17
|
+
* forced a fragile web of counter-inversions to keep photos from looking like
|
|
18
|
+
* negatives. This module replaces it with real per-color dark values.
|
|
19
|
+
*
|
|
20
|
+
* ## How it works
|
|
21
|
+
*
|
|
22
|
+
* Each distinct authored color is issued a token. The block renders
|
|
23
|
+
* `var(--ahd-c-N, <original>)` instead of the raw color, and the token is
|
|
24
|
+
* defined once in a `<style>` scoped to the fragment root:
|
|
25
|
+
*
|
|
26
|
+
* [data-ahd-theme] { --ahd-c-3: light-dark(#0a5fcc, #5aa2ff); }
|
|
27
|
+
*
|
|
28
|
+
* `light-dark()` resolves against the nearest `color-scheme`, which the
|
|
29
|
+
* fragment root sets from the author's Light/Dark/Auto choice. That means a
|
|
30
|
+
* host can flip an embedded page by changing one attribute — no re-fetch, no
|
|
31
|
+
* media-query re-evaluation.
|
|
32
|
+
*
|
|
33
|
+
* Two independent fallbacks keep an unsupported browser rendering exactly what
|
|
34
|
+
* it renders today:
|
|
35
|
+
* 1. The `var()` fallback carries the original color, so a browser that
|
|
36
|
+
* drops the custom property still paints the light value.
|
|
37
|
+
* 2. `emitTokenCss` writes a plain light-value declaration before the
|
|
38
|
+
* `light-dark()` one, so a browser that understands custom properties but
|
|
39
|
+
* not `light-dark()` uses the light value rather than an invalid
|
|
40
|
+
* declaration.
|
|
41
|
+
*/
|
|
42
|
+
export type GeneratedTheme = 'light' | 'dark' | 'auto';
|
|
43
|
+
export declare const GENERATED_THEME_ATTR = "data-ahd-theme";
|
|
44
|
+
/**
|
|
45
|
+
* Published pages always follow the visitor's device setting.
|
|
46
|
+
*
|
|
47
|
+
* This is the only mode the renderer emits: there is no author-facing
|
|
48
|
+
* light/dark switch, because a published page has no opinion about the
|
|
49
|
+
* visitor's environment - the visitor's browser does. `light` and `dark`
|
|
50
|
+
* remain in the type because a HOST APP can override a rendered fragment at
|
|
51
|
+
* runtime by setting this attribute (see the snippet in ConfigureDialog).
|
|
52
|
+
*/
|
|
53
|
+
export declare const GENERATED_THEME_AUTO: GeneratedTheme;
|
|
54
|
+
/**
|
|
55
|
+
* Derive a dark-mode counterpart for an authored light color.
|
|
56
|
+
*
|
|
57
|
+
* The rule is: PRESERVE HUE AND SATURATION, INVERT LIGHTNESS ONLY. That is the
|
|
58
|
+
* entire difference from the `hue-rotate` approach this replaces — a brand blue
|
|
59
|
+
* stays blue and simply becomes lighter so it reads against a dark surface.
|
|
60
|
+
*
|
|
61
|
+
* Two deliberate departures from a naive `l -> 1 - l`:
|
|
62
|
+
*
|
|
63
|
+
* - Near-neutral colors (very low saturation) are the page's surfaces and text.
|
|
64
|
+
* A straight flip sends #ffffff to #000000, which is harsher than good dark
|
|
65
|
+
* UI: pure black raises perceived contrast and causes halation against light
|
|
66
|
+
* text. They're mapped into a softer range instead (about #121212 to #ededed),
|
|
67
|
+
* matching the app's own dark palette (`src/theme/colors/dark.ts` uses
|
|
68
|
+
* #121212 for background).
|
|
69
|
+
*
|
|
70
|
+
* - Saturated colors get a compressed flip. A mid-lightness brand color
|
|
71
|
+
* (l ~ 0.5) should stay close to where it is rather than swing to the
|
|
72
|
+
* opposite extreme, so the result is pulled toward a legible band and floored
|
|
73
|
+
* so it never lands too dark to see on a dark surface.
|
|
74
|
+
*
|
|
75
|
+
* Alpha is carried through untouched.
|
|
76
|
+
*
|
|
77
|
+
* Returns `null` for anything that is not a single solid color — gradients,
|
|
78
|
+
* `transparent`, keywords, unparseable values. Those are left exactly as the
|
|
79
|
+
* author wrote them (see `token`).
|
|
80
|
+
*/
|
|
81
|
+
export declare function deriveDarkColor(value: string): string | null;
|
|
82
|
+
export type TokenRegistry = {
|
|
83
|
+
/**
|
|
84
|
+
* Issue (or reuse) a token for `raw` and return the value a block should
|
|
85
|
+
* render.
|
|
86
|
+
*
|
|
87
|
+
* Returns `raw` unchanged when there is nothing to theme — null/undefined,
|
|
88
|
+
* `transparent`, `currentColor`, a gradient, or anything unparseable. Callers
|
|
89
|
+
* can therefore pipe every color through this without pre-checking, EXCEPT
|
|
90
|
+
* that a caller which BRANCHES on whether a value is a gradient must do that
|
|
91
|
+
* classification on the raw value first (see `isGradientColor` in
|
|
92
|
+
* blocks/helpers/blockStyleHelpers).
|
|
93
|
+
*
|
|
94
|
+
* GRADIENTS ARE NEVER THEMED. An author-picked gradient renders identically
|
|
95
|
+
* in light and dark mode — it is returned byte-for-byte unchanged, so the
|
|
96
|
+
* published CSS carries the author's exact value in both themes.
|
|
97
|
+
*/
|
|
98
|
+
token(raw: string | null | undefined): string | undefined;
|
|
99
|
+
/** CSS defining every token issued so far. Empty when none, or theme light. */
|
|
100
|
+
css(theme: GeneratedTheme): string;
|
|
101
|
+
/** Number of distinct colors tokenized (for tests/diagnostics). */
|
|
102
|
+
size(): number;
|
|
103
|
+
};
|
|
104
|
+
export declare function createTokenRegistry(): TokenRegistry;
|
|
105
|
+
/**
|
|
106
|
+
* CSS for a fragment that issued no tokens (or chose light).
|
|
107
|
+
*
|
|
108
|
+
* Still worth emitting for `dark`/`auto`: `color-scheme` alone makes form
|
|
109
|
+
* controls, scrollbars and the canvas behind the fragment follow the theme.
|
|
110
|
+
*/
|
|
111
|
+
export declare function baseThemeCss(theme: GeneratedTheme): string;
|
|
112
|
+
export declare const ThemeTokenProvider: import('react').Provider<TokenRegistry>;
|
|
113
|
+
/**
|
|
114
|
+
* Theme a single color value.
|
|
115
|
+
*
|
|
116
|
+
* Safe to call unconditionally: outside a publish render it returns `raw`
|
|
117
|
+
* unchanged. See `TokenRegistry.token` for what is and isn't themed — notably,
|
|
118
|
+
* gradients pass through byte-for-byte.
|
|
119
|
+
*
|
|
120
|
+
* A caller that BRANCHES on whether a color is a gradient must classify the
|
|
121
|
+
* RAW value first (via `isGradientColor`) and only then tokenize, or the
|
|
122
|
+
* branch will misfire on the returned `var(...)` string.
|
|
123
|
+
*/
|
|
124
|
+
export declare function useColorToken(raw: string | null | undefined): string | undefined;
|
|
125
|
+
/**
|
|
126
|
+
* A themer for colors that live in a LIST.
|
|
127
|
+
*
|
|
128
|
+
* `useColorToken` is a hook, so it cannot be called from inside `.map()` or any
|
|
129
|
+
* other loop — blocks whose colors come from per-row data (breadcrumb items,
|
|
130
|
+
* menu entries, pagination buttons) have no fixed number of colors to theme and
|
|
131
|
+
* would break the rules of hooks. This returns a plain function instead: call
|
|
132
|
+
* the hook once at the top of the component, then apply the result per item.
|
|
133
|
+
*
|
|
134
|
+
* Outside a publish render it is the identity function, exactly like
|
|
135
|
+
* `useColorToken`.
|
|
136
|
+
*/
|
|
137
|
+
export declare function useColorTokenizer(): (raw: string | null | undefined) => string | undefined;
|
|
138
|
+
export declare function themeAuthorHtml(html: string, registry: TokenRegistry | null): string;
|
|
139
|
+
/**
|
|
140
|
+
* Hook form of `themeAuthorHtml`, for blocks that render author HTML.
|
|
141
|
+
* Outside a publish render this returns the input unchanged.
|
|
142
|
+
*/
|
|
143
|
+
export declare function useThemedHtml(html: string): string;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CSSProperties } from 'react';
|
|
2
|
-
export declare const menuEditorEmptyState: CSSProperties;
|
|
3
2
|
type BlockPadding = {
|
|
4
3
|
top: number;
|
|
5
4
|
right: number;
|
|
@@ -12,6 +11,7 @@ type BlockMargin = {
|
|
|
12
11
|
bottom: number;
|
|
13
12
|
left: number;
|
|
14
13
|
} | null | undefined;
|
|
14
|
+
export declare const isGradientValue: (value: string | null | undefined) => boolean;
|
|
15
15
|
export declare const menuNav: (backgroundColor: string, position: string, hasSlots?: boolean, blockPadding?: BlockPadding, blockMargin?: BlockMargin) => CSSProperties;
|
|
16
16
|
export declare const menuSlot: (align: "start" | "center" | "end", isCenter?: boolean) => CSSProperties;
|
|
17
17
|
export declare const menuList: (orientation: string, level: number, gap: string) => CSSProperties;
|
|
@@ -28,6 +28,9 @@ export type MenuItemStyleOverride = {
|
|
|
28
28
|
export declare const menuLink: (showIcons: boolean, hasIcon: boolean, textColor: string, fontSize: string, fontWeight: string, padding: string, fontFamily?: string, itemOverride?: MenuItemStyleOverride) => CSSProperties;
|
|
29
29
|
export declare const menuIcon: (iconSize: string) => CSSProperties;
|
|
30
30
|
export declare const menuChildrenWrapper: (level: number) => CSSProperties;
|
|
31
|
+
export declare const menuSubmenuPanel: (background: string, radius: number, borderColor?: string | null, padding?: BlockPadding, minWidth?: number | null) => CSSProperties;
|
|
32
|
+
export declare const menuCaret: (size: number) => CSSProperties;
|
|
33
|
+
export declare const MENU_SUBMENU_CHEVRON_PATH = "M6 9l6 6 6-6";
|
|
31
34
|
export declare const menuToggleInput: CSSProperties;
|
|
32
35
|
export declare const menuBurgerLabel: (textColor: string) => CSSProperties;
|
|
33
36
|
export declare const menuItemHrefFieldSx: {
|
|
@@ -85,4 +88,5 @@ export declare const addTabButtonSx: {
|
|
|
85
88
|
};
|
|
86
89
|
readonly transition: "color 0.15s, border-color 0.15s";
|
|
87
90
|
};
|
|
91
|
+
export declare const menuEditorEmptyState: CSSProperties;
|
|
88
92
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function renderHighlightedCodeBlock(code: string, _language?: string): string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const fe=require("./index-
|
|
1
|
+
"use strict";const fe=require("./index-DEBoxZlq.cjs"),It=require("./_commonjs-dynamic-modules-DMkBISW1.cjs");function zl(e,n){for(var t=0;t<n.length;t++){const i=n[t];if(typeof i!="string"&&!Array.isArray(i)){for(const r in i)if(r!=="default"&&!(r in e)){const a=Object.getOwnPropertyDescriptor(i,r);a&&Object.defineProperty(e,r,a.get?a:{enumerable:!0,get:()=>i[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var nn={},da="1.13.8",Ro=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},ui=Array.prototype,la=Object.prototype,No=typeof Symbol<"u"?Symbol.prototype:null,Xl=ui.push,Ft=ui.slice,mt=la.toString,Vl=la.hasOwnProperty,ku=typeof ArrayBuffer<"u",Hl=typeof DataView<"u",$l=Array.isArray,Io=Object.keys,Lo=Object.create,Mo=ku&&ArrayBuffer.isView,Gl=isNaN,Zl=isFinite,Wu=!{toString:null}.propertyIsEnumerable("toString"),qo=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Yl=Math.pow(2,53)-1;function Me(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),i=Array(t),r=0;r<t;r++)i[r]=arguments[r+n];switch(n){case 0:return e.call(this,i);case 1:return e.call(this,arguments[0],i);case 2:return e.call(this,arguments[0],arguments[1],i)}var a=Array(n+1);for(r=0;r<n;r++)a[r]=arguments[r];return a[n]=i,e.apply(this,a)}}function An(e){var n=typeof e;return n==="function"||n==="object"&&!!e}function Ou(e){return e===null}function fa(e){return e===void 0}function ha(e){return e===!0||e===!1||mt.call(e)==="[object Boolean]"}function Ru(e){return!!(e&&e.nodeType===1)}function Ie(e){var n="[object "+e+"]";return function(t){return mt.call(t)===n}}const si=Ie("String"),pa=Ie("Number"),Nu=Ie("Date"),Iu=Ie("RegExp"),Lu=Ie("Error"),ga=Ie("Symbol"),ma=Ie("ArrayBuffer");var Mu=Ie("Function"),Kl=Ro.document&&Ro.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof Kl!="function"&&(Mu=function(e){return typeof e=="function"||!1});const Ne=Mu,qu=Ie("Object");var Pu=Hl&&(!/\[native code\]/.test(String(DataView))||qu(new DataView(new ArrayBuffer(8)))),ba=typeof Map<"u"&&qu(new Map),Ql=Ie("DataView");function Jl(e){return e!=null&&Ne(e.getInt8)&&ma(e.buffer)}const bt=Pu?Jl:Ql,Fn=$l||Ie("Array");function Cn(e,n){return e!=null&&Vl.call(e,n)}var aa=Ie("Arguments");(function(){aa(arguments)||(aa=function(e){return Cn(e,"callee")})})();const di=aa;function ju(e){return!ga(e)&&Zl(e)&&!isNaN(parseFloat(e))}function ya(e){return pa(e)&&Gl(e)}function Da(e){return function(){return e}}function zu(e){return function(n){var t=e(n);return typeof t=="number"&&t>=0&&t<=Yl}}function Xu(e){return function(n){return n==null?void 0:n[e]}}const Zt=Xu("byteLength"),ef=zu(Zt);var nf=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function tf(e){return Mo?Mo(e)&&!bt(e):ef(e)&&nf.test(mt.call(e))}const va=ku?tf:Da(!1),Re=Xu("length");function rf(e){for(var n={},t=e.length,i=0;i<t;++i)n[e[i]]=!0;return{contains:function(r){return n[r]===!0},push:function(r){return n[r]=!0,e.push(r)}}}function Vu(e,n){n=rf(n);var t=qo.length,i=e.constructor,r=Ne(i)&&i.prototype||la,a="constructor";for(Cn(e,a)&&!n.contains(a)&&n.push(a);t--;)a=qo[t],a in e&&e[a]!==r[a]&&!n.contains(a)&&n.push(a)}function Ee(e){if(!An(e))return[];if(Io)return Io(e);var n=[];for(var t in e)Cn(e,t)&&n.push(t);return Wu&&Vu(e,n),n}function Hu(e){if(e==null)return!0;var n=Re(e);return typeof n=="number"&&(Fn(e)||si(e)||di(e))?n===0:Re(Ee(e))===0}function xa(e,n){var t=Ee(n),i=t.length;if(e==null)return!i;for(var r=Object(e),a=0;a<i;a++){var o=t[a];if(n[o]!==r[o]||!(o in r))return!1}return!0}function ye(e){if(e instanceof ye)return e;if(!(this instanceof ye))return new ye(e);this._wrapped=e}ye.VERSION=da;ye.prototype.value=function(){return this._wrapped};ye.prototype.valueOf=ye.prototype.toJSON=ye.prototype.value;ye.prototype.toString=function(){return String(this._wrapped)};function Po(e){return new Uint8Array(e.buffer||e,e.byteOffset||0,Zt(e))}var jo="[object DataView]";function $u(e,n){for(var t=[{a:e,b:n}],i=[],r=[];t.length;){var a=t.pop();if(a===!0){i.pop(),r.pop();continue}if(e=a.a,n=a.b,e===n){if(e!==0||1/e===1/n)continue;return!1}if(e==null||n==null)return!1;if(e!==e){if(n!==n)continue;return!1}var o=typeof e;if(o!=="function"&&o!=="object"&&typeof n!="object")return!1;e instanceof ye&&(e=e._wrapped),n instanceof ye&&(n=n._wrapped);var c=mt.call(e);if(c!==mt.call(n))return!1;if(Pu&&c=="[object Object]"&&bt(e)){if(!bt(n))return!1;c=jo}switch(c){case"[object RegExp]":case"[object String]":if(""+e==""+n)continue;return!1;case"[object Number]":t.push({a:+e,b:+n});continue;case"[object Date]":case"[object Boolean]":if(+e==+n)continue;return!1;case"[object Symbol]":if(No.valueOf.call(e)===No.valueOf.call(n))continue;return!1;case"[object ArrayBuffer]":case jo:t.push({a:Po(e),b:Po(n)});continue}var u=c==="[object Array]";if(!u&&va(e)){var s=Zt(e);if(s!==Zt(n))return!1;if(e.buffer===n.buffer&&e.byteOffset===n.byteOffset)continue;u=!0}if(!u){if(typeof e!="object"||typeof n!="object")return!1;var d=e.constructor,p=n.constructor;if(d!==p&&!(Ne(d)&&d instanceof d&&Ne(p)&&p instanceof p)&&"constructor"in e&&"constructor"in n)return!1}for(var b=i.length;b--;)if(i[b]===e){if(r[b]===n)break;return!1}if(!(b>=0))if(i.push(e),r.push(n),t.push(!0),u){if(b=e.length,b!==n.length)return!1;for(;b--;)t.push({a:e[b],b:n[b]})}else{var m=Ee(e),y;if(b=m.length,Ee(n).length!==b)return!1;for(;b--;){if(y=m[b],!Cn(n,y))return!1;t.push({a:e[y],b:n[y]})}}}return!0}function it(e){if(!An(e))return[];var n=[];for(var t in e)n.push(t);return Wu&&Vu(e,n),n}function _a(e){var n=Re(e);return function(t){if(t==null)return!1;var i=it(t);if(Re(i))return!1;for(var r=0;r<n;r++)if(!Ne(t[e[r]]))return!1;return e!==Yu||!Ne(t[Ua])}}var Ua="forEach",Gu="has",Ta=["clear","delete"],Zu=["get",Gu,"set"],af=Ta.concat(Ua,Zu),Yu=Ta.concat(Zu),of=["add"].concat(Ta,Ua,Gu);const Ku=ba?_a(af):Ie("Map"),Qu=ba?_a(Yu):Ie("WeakMap"),Ju=ba?_a(of):Ie("Set"),es=Ie("WeakSet");function Ln(e){for(var n=Ee(e),t=n.length,i=Array(t),r=0;r<t;r++)i[r]=e[n[r]];return i}function ns(e){for(var n=Ee(e),t=n.length,i=Array(t),r=0;r<t;r++)i[r]=[n[r],e[n[r]]];return i}function wa(e){for(var n={},t=Ee(e),i=0,r=t.length;i<r;i++)n[e[t[i]]]=t[i];return n}function yt(e){var n=[];for(var t in e)Ne(e[t])&&n.push(t);return n.sort()}function Ea(e,n){return function(t){var i=arguments.length;if(n&&(t=Object(t)),i<2||t==null)return t;for(var r=1;r<i;r++)for(var a=arguments[r],o=e(a),c=o.length,u=0;u<c;u++){var s=o[u];(!n||t[s]===void 0)&&(t[s]=a[s])}return t}}const Aa=Ea(it),Yn=Ea(Ee),Fa=Ea(it,!0);function cf(){return function(){}}function ts(e){if(!An(e))return{};if(Lo)return Lo(e);var n=cf();n.prototype=e;var t=new n;return n.prototype=null,t}function is(e,n){var t=ts(e);return n&&Yn(t,n),t}function rs(e){return An(e)?Fn(e)?e.slice():Aa({},e):e}function as(e,n){return n(e),e}function Ca(e){return Fn(e)?e:[e]}ye.toPath=Ca;function Ct(e){return ye.toPath(e)}function Sa(e,n){for(var t=n.length,i=0;i<t;i++){if(e==null)return;e=e[n[i]]}return t?e:void 0}function Ba(e,n,t){var i=Sa(e,Ct(n));return fa(i)?t:i}function os(e,n){n=Ct(n);for(var t=n.length,i=0;i<t;i++){var r=n[i];if(!Cn(e,r))return!1;e=e[r]}return!!t}function li(e){return e}function On(e){return e=Yn({},e),function(n){return xa(n,e)}}function fi(e){return e=Ct(e),function(n){return Sa(n,e)}}function St(e,n,t){if(n===void 0)return e;switch(t??3){case 1:return function(i){return e.call(n,i)};case 3:return function(i,r,a){return e.call(n,i,r,a)};case 4:return function(i,r,a,o){return e.call(n,i,r,a,o)}}return function(){return e.apply(n,arguments)}}function cs(e,n,t){return e==null?li:Ne(e)?St(e,n,t):An(e)&&!Fn(e)?On(e):fi(e)}function hi(e,n){return cs(e,n,1/0)}ye.iteratee=hi;function ze(e,n,t){return ye.iteratee!==hi?ye.iteratee(e,n):cs(e,n,t)}function us(e,n,t){n=ze(n,t);for(var i=Ee(e),r=i.length,a={},o=0;o<r;o++){var c=i[o];a[c]=n(e[c],c,e)}return a}function ka(){}function ss(e){return e==null?ka:function(n){return Ba(e,n)}}function ds(e,n,t){var i=Array(Math.max(0,e));n=St(n,t,1);for(var r=0;r<e;r++)i[r]=n(r);return i}function Yt(e,n){return n==null&&(n=e,e=0),e+Math.floor(Math.random()*(n-e+1))}const Kn=Date.now||function(){return new Date().getTime()};function ls(e){var n=function(a){return e[a]},t="(?:"+Ee(e).join("|")+")",i=RegExp(t),r=RegExp(t,"g");return function(a){return a=a==null?"":""+a,i.test(a)?a.replace(r,n):a}}const fs={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},hs=ls(fs),uf=wa(fs),ps=ls(uf),gs=ye.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var Yi=/(.)^/,sf={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},df=/\\|'|\r|\n|\u2028|\u2029/g;function lf(e){return"\\"+sf[e]}var ff=/^\s*(\w|\$)+\s*$/;function ms(e,n,t){!n&&t&&(n=t),n=Fa({},n,ye.templateSettings);var i=RegExp([(n.escape||Yi).source,(n.interpolate||Yi).source,(n.evaluate||Yi).source].join("|")+"|$","g"),r=0,a="__p+='";e.replace(i,function(s,d,p,b,m){return a+=e.slice(r,m).replace(df,lf),r=m+s.length,d?a+=`'+
|
|
2
2
|
((__t=(`+d+`))==null?'':_.escape(__t))+
|
|
3
3
|
'`:p?a+=`'+
|
|
4
4
|
((__t=(`+p+`))==null?'':__t)+
|