@glyphjs/runtime 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +48 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +36 -4
- package/dist/index.d.ts +36 -4
- package/dist/index.js +47 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GlyphRuntimeConfig, GlyphRuntime, GlyphIR, AnimationConfig, Diagnostic, Block, LayoutHints, ContainerContext, GlyphComponentDefinition, ComponentType, BlockProps, GlyphTheme, Reference, GlyphThemeContext, GlyphComponentProps, InlineNode, ContainerTier } from '@glyphjs/types';
|
|
1
|
+
import { GlyphRuntimeConfig, GlyphRuntime, GlyphIR, AnimationConfig, Diagnostic, Block, LayoutHints, ContainerContext, GlyphComponentDefinition, ComponentType, BlockProps, GlyphTheme, Reference, GlyphThemeContext, InteractionEvent, GlyphComponentProps, InlineNode, ContainerTier } from '@glyphjs/types';
|
|
2
2
|
export { AnimationConfig } from '@glyphjs/types';
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import { ReactNode, Component, ErrorInfo, CSSProperties, ComponentType as ComponentType$1, RefObject } from 'react';
|
|
@@ -142,13 +142,16 @@ declare class PluginRegistry {
|
|
|
142
142
|
interface RuntimeContextValue {
|
|
143
143
|
registry: PluginRegistry;
|
|
144
144
|
references: Reference[];
|
|
145
|
+
documentId: string;
|
|
145
146
|
theme: GlyphThemeContext;
|
|
146
147
|
onDiagnostic: (diagnostic: Diagnostic) => void;
|
|
147
148
|
onNavigate: (ref: Reference, targetBlock: Block) => void;
|
|
149
|
+
onInteraction?: (event: InteractionEvent) => void;
|
|
148
150
|
}
|
|
149
151
|
interface RuntimeProviderProps {
|
|
150
152
|
registry: PluginRegistry;
|
|
151
153
|
references: Reference[];
|
|
154
|
+
documentId: string;
|
|
152
155
|
theme: 'light' | 'dark' | GlyphTheme | undefined;
|
|
153
156
|
/** Optional CSS class name applied to the runtime wrapper div. */
|
|
154
157
|
className?: string;
|
|
@@ -156,9 +159,10 @@ interface RuntimeProviderProps {
|
|
|
156
159
|
style?: CSSProperties;
|
|
157
160
|
onDiagnostic?: (diagnostic: Diagnostic) => void;
|
|
158
161
|
onNavigate?: (ref: Reference, targetBlock: Block) => void;
|
|
162
|
+
onInteraction?: (event: InteractionEvent) => void;
|
|
159
163
|
children: ReactNode;
|
|
160
164
|
}
|
|
161
|
-
declare function RuntimeProvider({ registry, references, theme, className, style: consumerStyle, onDiagnostic, onNavigate, children, }: RuntimeProviderProps): ReactNode;
|
|
165
|
+
declare function RuntimeProvider({ registry, references, documentId, theme, className, style: consumerStyle, onDiagnostic, onNavigate, onInteraction, children, }: RuntimeProviderProps): ReactNode;
|
|
162
166
|
/** Access the full runtime context. Throws if used outside RuntimeProvider. */
|
|
163
167
|
declare function useRuntime(): RuntimeContextValue;
|
|
164
168
|
/**
|
|
@@ -204,9 +208,10 @@ declare function validateComponentDefinition(definition: GlyphComponentDefinitio
|
|
|
204
208
|
* @param themeContext - Current theme context passed through to the component.
|
|
205
209
|
* @param layoutHints - Layout hints (e.g., viewport size, container width) for responsive rendering.
|
|
206
210
|
* @param containerContext - Container measurement context for container-adaptive layout.
|
|
211
|
+
* @param onInteraction - Optional callback for interactive blocks. Only provided when `block.metadata.interactive` is true.
|
|
207
212
|
* @returns Fully assembled GlyphComponentProps ready to pass to the component's render function.
|
|
208
213
|
*/
|
|
209
|
-
declare function resolveComponentProps<T = unknown>(block: Block, definition: GlyphComponentDefinition<T>, references: Reference[], onNavigate: (ref: Reference) => void, themeContext: GlyphThemeContext, layoutHints: LayoutHints, containerContext: ContainerContext): GlyphComponentProps<T>;
|
|
214
|
+
declare function resolveComponentProps<T = unknown>(block: Block, definition: GlyphComponentDefinition<T>, references: Reference[], onNavigate: (ref: Reference) => void, themeContext: GlyphThemeContext, layoutHints: LayoutHints, containerContext: ContainerContext, onInteraction?: (event: Omit<InteractionEvent, 'documentId'>) => void): GlyphComponentProps<T>;
|
|
210
215
|
|
|
211
216
|
interface LayoutProviderProps {
|
|
212
217
|
layout: LayoutHints;
|
|
@@ -273,6 +278,21 @@ interface InlineRendererProps {
|
|
|
273
278
|
*/
|
|
274
279
|
declare function InlineRenderer({ nodes }: InlineRendererProps): ReactNode;
|
|
275
280
|
|
|
281
|
+
interface RichTextProps {
|
|
282
|
+
content: string | InlineNode[];
|
|
283
|
+
style?: React.CSSProperties;
|
|
284
|
+
className?: string;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Renders text that may be plain string or formatted InlineNode[].
|
|
288
|
+
* Type guard checks if content is array, then uses InlineRenderer.
|
|
289
|
+
*
|
|
290
|
+
* This component enables component text fields to support both:
|
|
291
|
+
* - Plain strings (backward compatibility)
|
|
292
|
+
* - Markdown-parsed InlineNode arrays (when markdown: true)
|
|
293
|
+
*/
|
|
294
|
+
declare function RichText({ content, style, className }: RichTextProps): ReactNode;
|
|
295
|
+
|
|
276
296
|
/**
|
|
277
297
|
* Renders a heading block (`<h1>` through `<h6>`) based on `data.depth`.
|
|
278
298
|
* Generates an `id` attribute from the heading text for anchor links.
|
|
@@ -567,4 +587,16 @@ interface SSRPlaceholderProps {
|
|
|
567
587
|
*/
|
|
568
588
|
declare function SSRPlaceholder({ width, height, className, children, }: SSRPlaceholderProps): ReactNode;
|
|
569
589
|
|
|
570
|
-
|
|
590
|
+
/**
|
|
591
|
+
* Creates a debounced interaction handler that groups events by
|
|
592
|
+
* `blockId + kind`. Each unique stream is debounced independently,
|
|
593
|
+
* so a tab switch fires immediately even while a table filter is
|
|
594
|
+
* being debounced.
|
|
595
|
+
*
|
|
596
|
+
* @param callback - The handler to invoke with the debounced event.
|
|
597
|
+
* @param delay - Debounce window in milliseconds (default: 300).
|
|
598
|
+
* @returns A function with the same signature as `onInteraction`.
|
|
599
|
+
*/
|
|
600
|
+
declare function debounceInteractions(callback: (event: InteractionEvent) => void, delay?: number): (event: InteractionEvent) => void;
|
|
601
|
+
|
|
602
|
+
export { AnimationContext, AnimationProvider, type AnimationState, type BlockAnimationResult, BlockDiagnosticIndicator, BlockRenderer, PluginRegistry as ComponentRegistry, ContainerMeasure, DashboardLayout, DiagnosticsOverlay, DocumentLayout, ErrorBoundary, FallbackRenderer, GlyphBlockquote, GlyphCodeBlock, GlyphDocument, GlyphHeading, GlyphImage, GlyphList, GlyphParagraph, GlyphRawHtml, GlyphThematicBreak, InlineRenderer, LayoutProvider, type NavigationResult, PluginRegistry, PresentationLayout, ReferenceIndicator, type RegistryChangeListener, RichText, type RichTextProps, type RuntimeContextValue, RuntimeProvider, type RuntimeProviderProps, SSRPlaceholder, type SSRPlaceholderProps, ThemeProvider, type ThemeProviderProps, type ValidationResult, builtInRenderers, createGlyphRuntime, createResolveVar, darkTheme, debounceInteractions, isDarkTheme, lightTheme, mergeThemeDefaults, resolveComponentProps, resolveTheme, resolveTier, useAnimation, useBlockAnimation, useGlyphTheme, useIsClient, useLayout, useNavigation, useReferences, useRuntime, validateComponentDefinition };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GlyphRuntimeConfig, GlyphRuntime, GlyphIR, AnimationConfig, Diagnostic, Block, LayoutHints, ContainerContext, GlyphComponentDefinition, ComponentType, BlockProps, GlyphTheme, Reference, GlyphThemeContext, GlyphComponentProps, InlineNode, ContainerTier } from '@glyphjs/types';
|
|
1
|
+
import { GlyphRuntimeConfig, GlyphRuntime, GlyphIR, AnimationConfig, Diagnostic, Block, LayoutHints, ContainerContext, GlyphComponentDefinition, ComponentType, BlockProps, GlyphTheme, Reference, GlyphThemeContext, InteractionEvent, GlyphComponentProps, InlineNode, ContainerTier } from '@glyphjs/types';
|
|
2
2
|
export { AnimationConfig } from '@glyphjs/types';
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import { ReactNode, Component, ErrorInfo, CSSProperties, ComponentType as ComponentType$1, RefObject } from 'react';
|
|
@@ -142,13 +142,16 @@ declare class PluginRegistry {
|
|
|
142
142
|
interface RuntimeContextValue {
|
|
143
143
|
registry: PluginRegistry;
|
|
144
144
|
references: Reference[];
|
|
145
|
+
documentId: string;
|
|
145
146
|
theme: GlyphThemeContext;
|
|
146
147
|
onDiagnostic: (diagnostic: Diagnostic) => void;
|
|
147
148
|
onNavigate: (ref: Reference, targetBlock: Block) => void;
|
|
149
|
+
onInteraction?: (event: InteractionEvent) => void;
|
|
148
150
|
}
|
|
149
151
|
interface RuntimeProviderProps {
|
|
150
152
|
registry: PluginRegistry;
|
|
151
153
|
references: Reference[];
|
|
154
|
+
documentId: string;
|
|
152
155
|
theme: 'light' | 'dark' | GlyphTheme | undefined;
|
|
153
156
|
/** Optional CSS class name applied to the runtime wrapper div. */
|
|
154
157
|
className?: string;
|
|
@@ -156,9 +159,10 @@ interface RuntimeProviderProps {
|
|
|
156
159
|
style?: CSSProperties;
|
|
157
160
|
onDiagnostic?: (diagnostic: Diagnostic) => void;
|
|
158
161
|
onNavigate?: (ref: Reference, targetBlock: Block) => void;
|
|
162
|
+
onInteraction?: (event: InteractionEvent) => void;
|
|
159
163
|
children: ReactNode;
|
|
160
164
|
}
|
|
161
|
-
declare function RuntimeProvider({ registry, references, theme, className, style: consumerStyle, onDiagnostic, onNavigate, children, }: RuntimeProviderProps): ReactNode;
|
|
165
|
+
declare function RuntimeProvider({ registry, references, documentId, theme, className, style: consumerStyle, onDiagnostic, onNavigate, onInteraction, children, }: RuntimeProviderProps): ReactNode;
|
|
162
166
|
/** Access the full runtime context. Throws if used outside RuntimeProvider. */
|
|
163
167
|
declare function useRuntime(): RuntimeContextValue;
|
|
164
168
|
/**
|
|
@@ -204,9 +208,10 @@ declare function validateComponentDefinition(definition: GlyphComponentDefinitio
|
|
|
204
208
|
* @param themeContext - Current theme context passed through to the component.
|
|
205
209
|
* @param layoutHints - Layout hints (e.g., viewport size, container width) for responsive rendering.
|
|
206
210
|
* @param containerContext - Container measurement context for container-adaptive layout.
|
|
211
|
+
* @param onInteraction - Optional callback for interactive blocks. Only provided when `block.metadata.interactive` is true.
|
|
207
212
|
* @returns Fully assembled GlyphComponentProps ready to pass to the component's render function.
|
|
208
213
|
*/
|
|
209
|
-
declare function resolveComponentProps<T = unknown>(block: Block, definition: GlyphComponentDefinition<T>, references: Reference[], onNavigate: (ref: Reference) => void, themeContext: GlyphThemeContext, layoutHints: LayoutHints, containerContext: ContainerContext): GlyphComponentProps<T>;
|
|
214
|
+
declare function resolveComponentProps<T = unknown>(block: Block, definition: GlyphComponentDefinition<T>, references: Reference[], onNavigate: (ref: Reference) => void, themeContext: GlyphThemeContext, layoutHints: LayoutHints, containerContext: ContainerContext, onInteraction?: (event: Omit<InteractionEvent, 'documentId'>) => void): GlyphComponentProps<T>;
|
|
210
215
|
|
|
211
216
|
interface LayoutProviderProps {
|
|
212
217
|
layout: LayoutHints;
|
|
@@ -273,6 +278,21 @@ interface InlineRendererProps {
|
|
|
273
278
|
*/
|
|
274
279
|
declare function InlineRenderer({ nodes }: InlineRendererProps): ReactNode;
|
|
275
280
|
|
|
281
|
+
interface RichTextProps {
|
|
282
|
+
content: string | InlineNode[];
|
|
283
|
+
style?: React.CSSProperties;
|
|
284
|
+
className?: string;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Renders text that may be plain string or formatted InlineNode[].
|
|
288
|
+
* Type guard checks if content is array, then uses InlineRenderer.
|
|
289
|
+
*
|
|
290
|
+
* This component enables component text fields to support both:
|
|
291
|
+
* - Plain strings (backward compatibility)
|
|
292
|
+
* - Markdown-parsed InlineNode arrays (when markdown: true)
|
|
293
|
+
*/
|
|
294
|
+
declare function RichText({ content, style, className }: RichTextProps): ReactNode;
|
|
295
|
+
|
|
276
296
|
/**
|
|
277
297
|
* Renders a heading block (`<h1>` through `<h6>`) based on `data.depth`.
|
|
278
298
|
* Generates an `id` attribute from the heading text for anchor links.
|
|
@@ -567,4 +587,16 @@ interface SSRPlaceholderProps {
|
|
|
567
587
|
*/
|
|
568
588
|
declare function SSRPlaceholder({ width, height, className, children, }: SSRPlaceholderProps): ReactNode;
|
|
569
589
|
|
|
570
|
-
|
|
590
|
+
/**
|
|
591
|
+
* Creates a debounced interaction handler that groups events by
|
|
592
|
+
* `blockId + kind`. Each unique stream is debounced independently,
|
|
593
|
+
* so a tab switch fires immediately even while a table filter is
|
|
594
|
+
* being debounced.
|
|
595
|
+
*
|
|
596
|
+
* @param callback - The handler to invoke with the debounced event.
|
|
597
|
+
* @param delay - Debounce window in milliseconds (default: 300).
|
|
598
|
+
* @returns A function with the same signature as `onInteraction`.
|
|
599
|
+
*/
|
|
600
|
+
declare function debounceInteractions(callback: (event: InteractionEvent) => void, delay?: number): (event: InteractionEvent) => void;
|
|
601
|
+
|
|
602
|
+
export { AnimationContext, AnimationProvider, type AnimationState, type BlockAnimationResult, BlockDiagnosticIndicator, BlockRenderer, PluginRegistry as ComponentRegistry, ContainerMeasure, DashboardLayout, DiagnosticsOverlay, DocumentLayout, ErrorBoundary, FallbackRenderer, GlyphBlockquote, GlyphCodeBlock, GlyphDocument, GlyphHeading, GlyphImage, GlyphList, GlyphParagraph, GlyphRawHtml, GlyphThematicBreak, InlineRenderer, LayoutProvider, type NavigationResult, PluginRegistry, PresentationLayout, ReferenceIndicator, type RegistryChangeListener, RichText, type RichTextProps, type RuntimeContextValue, RuntimeProvider, type RuntimeProviderProps, SSRPlaceholder, type SSRPlaceholderProps, ThemeProvider, type ThemeProviderProps, type ValidationResult, builtInRenderers, createGlyphRuntime, createResolveVar, darkTheme, debounceInteractions, isDarkTheme, lightTheme, mergeThemeDefaults, resolveComponentProps, resolveTheme, resolveTier, useAnimation, useBlockAnimation, useGlyphTheme, useIsClient, useLayout, useNavigation, useReferences, useRuntime, validateComponentDefinition };
|
package/dist/index.js
CHANGED
|
@@ -394,11 +394,13 @@ var RuntimeContext = createContext(null);
|
|
|
394
394
|
function RuntimeProvider({
|
|
395
395
|
registry,
|
|
396
396
|
references,
|
|
397
|
+
documentId,
|
|
397
398
|
theme,
|
|
398
399
|
className,
|
|
399
400
|
style: consumerStyle,
|
|
400
401
|
onDiagnostic,
|
|
401
402
|
onNavigate,
|
|
403
|
+
onInteraction,
|
|
402
404
|
children
|
|
403
405
|
}) {
|
|
404
406
|
const resolvedThemeObject = useMemo(() => resolveTheme(theme), [theme]);
|
|
@@ -414,11 +416,13 @@ function RuntimeProvider({
|
|
|
414
416
|
() => ({
|
|
415
417
|
registry,
|
|
416
418
|
references,
|
|
419
|
+
documentId,
|
|
417
420
|
theme: resolvedTheme,
|
|
418
421
|
onDiagnostic: onDiagnostic ?? noop,
|
|
419
|
-
onNavigate: onNavigate ?? noop
|
|
422
|
+
onNavigate: onNavigate ?? noop,
|
|
423
|
+
onInteraction
|
|
420
424
|
}),
|
|
421
|
-
[registry, references, resolvedTheme, onDiagnostic, onNavigate]
|
|
425
|
+
[registry, references, documentId, resolvedTheme, onDiagnostic, onNavigate, onInteraction]
|
|
422
426
|
);
|
|
423
427
|
const style = useMemo(
|
|
424
428
|
() => ({ ...resolvedThemeObject.variables, ...consumerStyle }),
|
|
@@ -775,6 +779,12 @@ function GlyphRawHtml({ block }) {
|
|
|
775
779
|
const clean = DOMPurify.sanitize(data.value);
|
|
776
780
|
return /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: clean } });
|
|
777
781
|
}
|
|
782
|
+
function RichText({ content, style, className }) {
|
|
783
|
+
if (Array.isArray(content)) {
|
|
784
|
+
return /* @__PURE__ */ jsx("span", { style, className, children: /* @__PURE__ */ jsx(InlineRenderer, { nodes: content }) });
|
|
785
|
+
}
|
|
786
|
+
return /* @__PURE__ */ jsx("span", { style, className, children: content });
|
|
787
|
+
}
|
|
778
788
|
|
|
779
789
|
// src/renderers/index.ts
|
|
780
790
|
var builtInRenderers = {
|
|
@@ -789,7 +799,7 @@ var builtInRenderers = {
|
|
|
789
799
|
};
|
|
790
800
|
|
|
791
801
|
// src/plugins/resolve-props.ts
|
|
792
|
-
function resolveComponentProps(block, definition, references, onNavigate, themeContext, layoutHints, containerContext) {
|
|
802
|
+
function resolveComponentProps(block, definition, references, onNavigate, themeContext, layoutHints, containerContext, onInteraction) {
|
|
793
803
|
const parseResult = definition.schema.safeParse(block.data);
|
|
794
804
|
const data = parseResult.success ? parseResult.data : (() => {
|
|
795
805
|
const err = parseResult.error;
|
|
@@ -819,7 +829,7 @@ function resolveComponentProps(block, definition, references, onNavigate, themeC
|
|
|
819
829
|
}
|
|
820
830
|
}
|
|
821
831
|
}
|
|
822
|
-
|
|
832
|
+
const props = {
|
|
823
833
|
data,
|
|
824
834
|
block,
|
|
825
835
|
outgoingRefs,
|
|
@@ -829,6 +839,10 @@ function resolveComponentProps(block, definition, references, onNavigate, themeC
|
|
|
829
839
|
layout: layoutHints,
|
|
830
840
|
container: containerContext
|
|
831
841
|
};
|
|
842
|
+
if (onInteraction) {
|
|
843
|
+
props.onInteraction = onInteraction;
|
|
844
|
+
}
|
|
845
|
+
return props;
|
|
832
846
|
}
|
|
833
847
|
var defaultConfig = {
|
|
834
848
|
enabled: true,
|
|
@@ -1018,7 +1032,7 @@ function ReferenceIndicator({
|
|
|
1018
1032
|
);
|
|
1019
1033
|
}
|
|
1020
1034
|
function BlockDispatch({ block, layout, container }) {
|
|
1021
|
-
const { registry, references, theme, onNavigate } = useRuntime();
|
|
1035
|
+
const { registry, references, theme, documentId, onNavigate, onInteraction } = useRuntime();
|
|
1022
1036
|
const { incomingRefs, outgoingRefs } = useReferences(block.id);
|
|
1023
1037
|
const hasRefs = incomingRefs.length > 0 || outgoingRefs.length > 0;
|
|
1024
1038
|
if (block.type.startsWith("ui:")) {
|
|
@@ -1034,6 +1048,9 @@ function BlockDispatch({ block, layout, container }) {
|
|
|
1034
1048
|
}
|
|
1035
1049
|
}
|
|
1036
1050
|
}
|
|
1051
|
+
const handleInteraction = onInteraction && block.metadata?.interactive === true ? (event) => {
|
|
1052
|
+
onInteraction({ ...event, documentId });
|
|
1053
|
+
} : void 0;
|
|
1037
1054
|
let content;
|
|
1038
1055
|
const overrideDef = registry.getOverride(block.type);
|
|
1039
1056
|
if (overrideDef) {
|
|
@@ -1052,7 +1069,8 @@ function BlockDispatch({ block, layout, container }) {
|
|
|
1052
1069
|
handleNavigate,
|
|
1053
1070
|
theme,
|
|
1054
1071
|
layout,
|
|
1055
|
-
container
|
|
1072
|
+
container,
|
|
1073
|
+
handleInteraction
|
|
1056
1074
|
);
|
|
1057
1075
|
const Renderer = definition.render;
|
|
1058
1076
|
content = /* @__PURE__ */ jsx(Renderer, { ...props });
|
|
@@ -1644,7 +1662,7 @@ function createGlyphRuntime(config) {
|
|
|
1644
1662
|
setThemeState(currentTheme);
|
|
1645
1663
|
setVersion(registryVersion);
|
|
1646
1664
|
}, []);
|
|
1647
|
-
|
|
1665
|
+
useEffect(() => {
|
|
1648
1666
|
listeners.add(forceUpdate);
|
|
1649
1667
|
return () => {
|
|
1650
1668
|
listeners.delete(forceUpdate);
|
|
@@ -1655,9 +1673,11 @@ function createGlyphRuntime(config) {
|
|
|
1655
1673
|
{
|
|
1656
1674
|
registry,
|
|
1657
1675
|
references: ir.references,
|
|
1676
|
+
documentId: ir.id,
|
|
1658
1677
|
theme,
|
|
1659
1678
|
onDiagnostic: config.onDiagnostic,
|
|
1660
1679
|
onNavigate: config.onNavigate,
|
|
1680
|
+
onInteraction: config.onInteraction,
|
|
1661
1681
|
children: /* @__PURE__ */ jsx(GlyphDocument, { ir, className, animation: config.animation })
|
|
1662
1682
|
}
|
|
1663
1683
|
);
|
|
@@ -1709,6 +1729,25 @@ function SSRPlaceholder({
|
|
|
1709
1729
|
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
1710
1730
|
}
|
|
1711
1731
|
|
|
1712
|
-
|
|
1732
|
+
// src/debounce.ts
|
|
1733
|
+
function debounceInteractions(callback, delay = 300) {
|
|
1734
|
+
const timers = /* @__PURE__ */ new Map();
|
|
1735
|
+
return (event) => {
|
|
1736
|
+
const key = `${event.blockId}:${event.kind}`;
|
|
1737
|
+
const existing = timers.get(key);
|
|
1738
|
+
if (existing !== void 0) {
|
|
1739
|
+
clearTimeout(existing);
|
|
1740
|
+
}
|
|
1741
|
+
timers.set(
|
|
1742
|
+
key,
|
|
1743
|
+
setTimeout(() => {
|
|
1744
|
+
timers.delete(key);
|
|
1745
|
+
callback(event);
|
|
1746
|
+
}, delay)
|
|
1747
|
+
);
|
|
1748
|
+
};
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
export { AnimationContext, AnimationProvider, BlockDiagnosticIndicator, BlockRenderer, PluginRegistry as ComponentRegistry, ContainerMeasure, DashboardLayout, DiagnosticsOverlay, DocumentLayout, ErrorBoundary, FallbackRenderer, GlyphBlockquote, GlyphCodeBlock, GlyphDocument, GlyphHeading, GlyphImage, GlyphList, GlyphParagraph, GlyphRawHtml, GlyphThematicBreak, InlineRenderer, LayoutProvider, PluginRegistry, PresentationLayout, ReferenceIndicator, RichText, RuntimeProvider, SSRPlaceholder, ThemeProvider, builtInRenderers, createGlyphRuntime, createResolveVar, darkTheme, debounceInteractions, isDarkTheme, lightTheme, mergeThemeDefaults, resolveComponentProps, resolveTheme, resolveTier, useAnimation, useBlockAnimation, useGlyphTheme, useIsClient, useLayout, useNavigation, useReferences, useRuntime, validateComponentDefinition };
|
|
1713
1752
|
//# sourceMappingURL=index.js.map
|
|
1714
1753
|
//# sourceMappingURL=index.js.map
|