Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
b443e7e
feat(registry): add us-map choropleth block
miguel-heygen May 18, 2026
dba158d
feat(registry): add maps section with 4 new map blocks + docs
miguel-heygen May 18, 2026
ae1716d
feat(registry): add spain-map block + fix MDX preview paths
miguel-heygen May 18, 2026
3482d16
fix(engine): poll for sub-composition timeline readiness before capture
miguel-heygen May 18, 2026
5aff328
fix(producer): preserve inner root element when inlining sub-composit…
miguel-heygen May 18, 2026
2c84c9a
fix(engine,core): wait for async timelines and force rebind before ca…
miguel-heygen May 18, 2026
b8715ce
fix(engine): gracefully handle missing or errored video sources durin…
miguel-heygen May 18, 2026
8525bfd
fix(engine): strip query strings from video src when resolving on disk
miguel-heygen May 18, 2026
27c8b68
docs: switch map MDX preview URLs to S3 production paths
miguel-heygen May 18, 2026
8777c18
docs: cache-bust us-map preview video URL
miguel-heygen May 18, 2026
4b9abaa
fix: deterministic stagger, lint importmap/module, cache-bust previews
miguel-heygen May 18, 2026
fe32622
docs: point us-map preview to new filename to bypass CDN cache
miguel-heygen May 18, 2026
8b4c994
style: format us-map and world-map after stagger change
miguel-heygen May 18, 2026
cf2addf
chore: remove accidentally committed producer node_modules
miguel-heygen May 18, 2026
0f1c64d
fix: address review feedback — observability, dedup, query-strip, cat…
miguel-heygen May 18, 2026
04c35ce
fix: regression fixes — conditional rebind + updated compilation base…
miguel-heygen May 18, 2026
d10b2f4
fix(core): only rebind timelines when late arrivals were actually det…
miguel-heygen May 18, 2026
0ff6296
fix(core): remove late-bind polling from runtime — engine handles it
miguel-heygen May 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions docs/catalog/blocks/spain-map.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: "Spain Map"
description: "Animated Spain choropleth by autonomous community with staggered reveals and gradient legend"
---

# Spain Map

Animated Spain choropleth by autonomous community with staggered reveals and gradient legend — D3 conic conformal projection with GSAP timeline. GDP per capita data with warm red-to-amber color scale.

`data` `map` `geography` `spain` `europe` `choropleth`

<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spain-map.mp4?v=1779081476" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spain-map.png" autoPlay muted loop playsInline />

## Install

<CodeGroup>

```bash Terminal
npx hyperframes add spain-map
```

</CodeGroup>

## Details

| Property | Value |
| --- | --- |
| Type | Block |
| Dimensions | 1920×1080 |
| Duration | 12s |

## Files

| File | Target | Type |
| --- | --- | --- |
| `spain-map.html` | `compositions/spain-map.html` | hyperframes:composition |

## Usage

After installing, add the block to your host composition:

```html
<div data-composition-id="spain-map" data-composition-src="compositions/spain-map.html" data-start="0" data-duration="12" data-track-index="1" data-width="1920" data-height="1080"></div>
```
44 changes: 44 additions & 0 deletions docs/catalog/blocks/us-map-bubble.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: "US Bubble Map"
description: "Animated US bubble map with proportional city markers, value callouts, and connection lines"
---

# US Bubble Map

Animated US bubble map with proportional city markers, value callouts, and connection lines — composable with `us-map` for layered data visualizations.

`data` `map` `geography` `usa` `bubble` `cities`

<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-bubble.mp4?v=1779081476" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-bubble.png" autoPlay muted loop playsInline />

## Install

<CodeGroup>

```bash Terminal
npx hyperframes add us-map-bubble
```

</CodeGroup>

## Details

| Property | Value |
| --- | --- |
| Type | Block |
| Dimensions | 1920×1080 |
| Duration | 12s |

## Files

| File | Target | Type |
| --- | --- | --- |
| `us-map-bubble.html` | `compositions/us-map-bubble.html` | hyperframes:composition |

## Usage

After installing, add the block to your host composition:

```html
<div data-composition-id="us-map-bubble" data-composition-src="compositions/us-map-bubble.html" data-start="0" data-duration="12" data-track-index="1" data-width="1920" data-height="1080"></div>
```
44 changes: 44 additions & 0 deletions docs/catalog/blocks/us-map-flow.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: "US Flow Map"
description: "Animated connection arcs between US cities over a base map — composable origin-destination flow visualization"
---

# US Flow Map

Animated connection arcs between US cities over a base map — composable origin-destination flow visualization with traveling particles and GSAP-drawn Bezier arcs.

`data` `map` `geography` `usa` `flow` `connections` `arcs`

<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-flow.mp4?v=1779081476" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-flow.png" autoPlay muted loop playsInline />

## Install

<CodeGroup>

```bash Terminal
npx hyperframes add us-map-flow
```

</CodeGroup>

## Details

| Property | Value |
| --- | --- |
| Type | Block |
| Dimensions | 1920×1080 |
| Duration | 12s |

## Files

| File | Target | Type |
| --- | --- | --- |
| `us-map-flow.html` | `compositions/us-map-flow.html` | hyperframes:composition |

## Usage

After installing, add the block to your host composition:

```html
<div data-composition-id="us-map-flow" data-composition-src="compositions/us-map-flow.html" data-start="0" data-duration="12" data-track-index="1" data-width="1920" data-height="1080"></div>
```
44 changes: 44 additions & 0 deletions docs/catalog/blocks/us-map-hex.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: "US Hex Grid Map"
description: "Animated hexagonal tile grid map — each state as an equal-weight hex with data fill and abbreviation label"
---

# US Hex Grid Map

Animated hexagonal tile grid map — each state as an equal-weight hex with data fill and abbreviation label. No external dependencies beyond GSAP.

`data` `map` `geography` `usa` `hexgrid` `tilegrid`

<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-hex.mp4?v=1779081476" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-hex.png" autoPlay muted loop playsInline />

## Install

<CodeGroup>

```bash Terminal
npx hyperframes add us-map-hex
```

</CodeGroup>

## Details

| Property | Value |
| --- | --- |
| Type | Block |
| Dimensions | 1920×1080 |
| Duration | 10s |

## Files

| File | Target | Type |
| --- | --- | --- |
| `us-map-hex.html` | `compositions/us-map-hex.html` | hyperframes:composition |

## Usage

After installing, add the block to your host composition:

```html
<div data-composition-id="us-map-hex" data-composition-src="compositions/us-map-hex.html" data-start="0" data-duration="10" data-track-index="1" data-width="1920" data-height="1080"></div>
```
53 changes: 53 additions & 0 deletions docs/catalog/blocks/us-map.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
title: "US Map"
description: "Animated US choropleth map with staggered state reveals, value labels, and gradient legend"
---

# US Map

Animated US choropleth map with staggered state reveals, value labels, and gradient legend — D3 geoAlbersUsa projection with GSAP timeline.

`data` `map` `geography` `usa` `choropleth`

<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-v1779081660.mp4" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map.png" autoPlay muted loop playsInline />

## Install

<CodeGroup>

```bash Terminal
npx hyperframes add us-map
```

</CodeGroup>

## Details

| Property | Value |
| --- | --- |
| Type | Block |
| Dimensions | 1920×1080 |
| Duration | 12s |

## Files

| File | Target | Type |
| --- | --- | --- |
| `us-map.html` | `compositions/us-map.html` | hyperframes:composition |

## Usage

After installing, add the block to your host composition:

```html
<div data-composition-id="us-map" data-composition-src="compositions/us-map.html" data-start="0" data-duration="12" data-track-index="1" data-width="1920" data-height="1080"></div>
```

## Composability

Layer `us-map-bubble` or `us-map-flow` on top of this block as a higher track index to combine choropleth + bubble or flow visualizations:

```html
<div data-composition-id="us-map" data-composition-src="compositions/us-map.html" data-start="0" data-duration="12" data-track-index="1" data-width="1920" data-height="1080"></div>
<div data-composition-id="us-map-bubble" data-composition-src="compositions/us-map-bubble.html" data-start="0" data-duration="12" data-track-index="2" data-width="1920" data-height="1080"></div>
```
44 changes: 44 additions & 0 deletions docs/catalog/blocks/world-map.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: "World Map"
description: "Animated world choropleth with country-by-country reveal — D3 Natural Earth projection"
---

# World Map

Animated world choropleth with country-by-country reveal, gradient legend, and highlight pulses on top GDP countries — D3 Natural Earth projection with GSAP timeline.

`data` `map` `geography` `world` `choropleth`

<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/world-map.mp4?v=1779081476" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/world-map.png" autoPlay muted loop playsInline />

## Install

<CodeGroup>

```bash Terminal
npx hyperframes add world-map
```

</CodeGroup>

## Details

| Property | Value |
| --- | --- |
| Type | Block |
| Dimensions | 1920×1080 |
| Duration | 14s |

## Files

| File | Target | Type |
| --- | --- | --- |
| `world-map.html` | `compositions/world-map.html` | hyperframes:composition |

## Usage

After installing, add the block to your host composition:

```html
<div data-composition-id="world-map" data-composition-src="compositions/world-map.html" data-start="0" data-duration="14" data-track-index="1" data-width="1920" data-height="1080"></div>
```
11 changes: 11 additions & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,17 @@
"catalog/blocks/vpn-youtube-spot"
]
},
{
"group": "Maps",
"pages": [
"catalog/blocks/us-map",
"catalog/blocks/us-map-bubble",
"catalog/blocks/us-map-hex",
"catalog/blocks/us-map-flow",
"catalog/blocks/world-map",
"catalog/blocks/spain-map"
]
},
{
"group": "Data",
"pages": [
Expand Down
6 changes: 5 additions & 1 deletion packages/core/src/lint/rules/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,11 @@ export const coreRules: Array<(ctx: LintContext) => HyperframeLintFinding[]> = [
const findings: HyperframeLintFinding[] = [];
for (const script of scripts) {
const attrs = script.attrs || "";
if (/\bsrc\s*=/.test(attrs) || /\btype\s*=\s*["']application\/json["']/.test(attrs)) continue;
if (
/\bsrc\s*=/.test(attrs) ||
/\btype\s*=\s*["'](?:application\/json|importmap|module)["']/.test(attrs)
)
continue;
const syntaxError = getInlineScriptSyntaxError(script.content);
if (!syntaxError) continue;
findings.push({
Expand Down
5 changes: 5 additions & 0 deletions packages/core/src/runtime/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -964,6 +964,11 @@ export function initSandboxRuntimeModular(): void {
return true;
};

(window as any).__hfForceTimelineRebind = () => {
childrenBound = false;
bindRootTimelineIfAvailable();
};

const emitRootStageLayoutDiagnostics = () => {
const rootNode = resolveRootCompositionElement();
if (!(rootNode instanceof HTMLElement)) {
Expand Down
Loading
Loading