Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ packages/layout/vectors/dpr-*/** merge=dragon-generated
packages/layout/break-vectors/** merge=dragon-generated
packages/parity/expected-breaks/** merge=dragon-generated
packages/parity/expected-pixels/** merge=dragon-generated
packages/layout/paint-vectors/*/vectors.json merge=dragon-generated
packages/layout/generated/** merge=dragon-generated
packages/translate/corpus.json merge=dragon-generated
packages/translate/corpus-dpr.json merge=dragon-generated
Expand Down
1 change: 1 addition & 0 deletions .macroscope/ignore.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ packages/layout/rt-vectors/**
packages/layout/break-vectors/**
packages/parity/expected-breaks/**
packages/parity/expected-pixels/**
packages/layout/paint-vectors/*/vectors.json
packages/parity/out/**
packages/dragon/test/fonts/captures/**
packages/dragon/test/fonts/reference/**
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"parity:platform-check": "node --conditions=dragon-internal packages/parity/src/cli/platform-check.ts",
"parity:dpr-capture": "node --conditions=dragon-internal packages/parity/src/cli/dpr-capture.ts",
"layout:dpr-vectors": "node --conditions=dragon-internal packages/parity/src/cli/dpr-vectors.ts",
"layout:paint-vectors": "node --conditions=dragon-internal packages/parity/src/cli/paint-vectors.ts",
"parity:dpr-report": "node --conditions=dragon-internal packages/parity/src/cli/dpr-report.ts",
"parity:lanes": "node --conditions=dragon-internal packages/parity/src/cli/lanes.ts",
"parity:devices": "node --conditions=dragon-internal packages/parity/src/cli/lanes.ts --run-host --run-device",
Expand Down
2 changes: 2 additions & 0 deletions packages/dragon/src/analysis/computed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import type { Candidate } from './cascade.ts';
import type { LinkedElement } from './link.ts';
import type { Substitution, VarScope } from './variables.ts';
import { substituteWinner } from './variables.ts';
import { computePaintValues } from './paint-values/index.ts';

/** environment: the root's direction and font, seeded from the reference environment (docs/api.md §7), never from an author declaration. */
export type Origin = 'author' | 'inherited' | 'user-agent' | 'initial' | 'environment';
Expand Down Expand Up @@ -170,6 +171,7 @@ export function computeLengths(props: Map<Longhand, ResolvedValue>, parentFontSi
toPx('font-size', parentFontSize, rootFontSize ?? parentFontSize);
const own = pxOf((props.get('font-size') as ResolvedValue).value);
for (const p of props.keys()) if (p !== 'font-size') toPx(p, own, rootFontSize ?? own);
computePaintValues(props, { em: own, rem: rootFontSize ?? own });
}

/** css-values-4 §6: the lengths inside track-list values compute to px, as computeLengths does for single lengths. */
Expand Down
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/background.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the background module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const BACKGROUND_VALUES: PaintValues = stubPaintValues('background');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/border.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the border module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const BORDER_VALUES: PaintValues = stubPaintValues('border');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/clip.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the clip module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const CLIP_VALUES: PaintValues = stubPaintValues('clip');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/control.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the control module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const CONTROL_VALUES: PaintValues = stubPaintValues('control');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/effects.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the effects module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const EFFECTS_VALUES: PaintValues = stubPaintValues('effects');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/fixed.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the fixed module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const FIXED_VALUES: PaintValues = stubPaintValues('fixed');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/foreign-view.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the foreign-view module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const FOREIGN_VIEW_VALUES: PaintValues = stubPaintValues('foreign-view');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/gradient.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the gradient module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const GRADIENT_VALUES: PaintValues = stubPaintValues('gradient');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/image.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the image module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const IMAGE_VALUES: PaintValues = stubPaintValues('image');
50 changes: 50 additions & 0 deletions packages/dragon/src/analysis/paint-values/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// The paint-values registry (EMS): every module, registered once in final order; computePaintValues runs them in that order.
import type { Longhand } from '../../css/properties.ts';
import { PAINT_MODULE_NAMES } from '../../lower/paint/types.ts';
import type { ResolvedValue } from '../computed.ts';
import { BACKGROUND_VALUES } from './background.ts';
import { BORDER_VALUES } from './border.ts';
import { CLIP_VALUES } from './clip.ts';
import { CONTROL_VALUES } from './control.ts';
import { EFFECTS_VALUES } from './effects.ts';
import { FIXED_VALUES } from './fixed.ts';
import { FOREIGN_VIEW_VALUES } from './foreign-view.ts';
import { GRADIENT_VALUES } from './gradient.ts';
import { IMAGE_VALUES } from './image.ts';
import { OUTLINE_VALUES } from './outline.ts';
import { RADIUS_VALUES } from './radius.ts';
import { SCROLL_VALUES } from './scroll.ts';
import { SCROLLBAR_VALUES } from './scrollbar.ts';
import { SHADOW_VALUES } from './shadow.ts';
import { STACKING_VALUES } from './stacking.ts';
import { TRANSFORM_VALUES } from './transform.ts';
import type { PaintValueContext, PaintValues } from './types.ts';

export type { PaintValueContext, PaintValues } from './types.ts';

/** Registration point (EMS): the paint-values modules in PAINT_MODULE_NAMES order. */
export const PAINT_VALUES: readonly PaintValues[] = [
BACKGROUND_VALUES,
BORDER_VALUES,
CLIP_VALUES,
RADIUS_VALUES,
SHADOW_VALUES,
EFFECTS_VALUES,
STACKING_VALUES,
OUTLINE_VALUES,
TRANSFORM_VALUES,
GRADIENT_VALUES,
SCROLL_VALUES,
FIXED_VALUES,
SCROLLBAR_VALUES,
IMAGE_VALUES,
FOREIGN_VIEW_VALUES,
CONTROL_VALUES,
];

if (PAINT_VALUES.map((m) => m.name).join() !== PAINT_MODULE_NAMES.join()) throw new Error('the paint-values registry is not in PAINT_MODULE_NAMES order');

/** The computed values of the paint longhands, after computeLengths, each module in registry order. */
export function computePaintValues(props: Map<Longhand, ResolvedValue>, ctx: PaintValueContext): void {
for (const m of PAINT_VALUES) m.compute(props, ctx);
}
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/outline.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the outline module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const OUTLINE_VALUES: PaintValues = stubPaintValues('outline');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/radius.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the radius module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const RADIUS_VALUES: PaintValues = stubPaintValues('radius');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/scroll.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the scroll module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const SCROLL_VALUES: PaintValues = stubPaintValues('scroll');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/scrollbar.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the scrollbar module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const SCROLLBAR_VALUES: PaintValues = stubPaintValues('scrollbar');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/shadow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the shadow module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const SHADOW_VALUES: PaintValues = stubPaintValues('shadow');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/stacking.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the stacking module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const STACKING_VALUES: PaintValues = stubPaintValues('stacking');
5 changes: 5 additions & 0 deletions packages/dragon/src/analysis/paint-values/transform.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Seam (EMS): the transform module's computed paint values; none until its package fills it.
import type { PaintValues } from './types.ts';
import { stubPaintValues } from './types.ts';

export const TRANSFORM_VALUES: PaintValues = stubPaintValues('transform');
17 changes: 17 additions & 0 deletions packages/dragon/src/analysis/paint-values/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// The paint-values seam (notes/T046-paint-spec.md §3 item 4): computed values of the paint longhands, one module per feature,
// run by computePaintValues once after computeLengths, so every length is already px when a module reads it.
import type { Longhand } from '../../css/properties.ts';
import type { PaintModuleName } from '../../lower/paint/types.ts';
import type { ResolvedValue } from '../computed.ts';

/** The element's em and rem bases in px (null where computeLengths had none), for values computeLengths leaves as written. */
export type PaintValueContext = { readonly em: number | null; readonly rem: number | null };

export type PaintValues = {
readonly name: PaintModuleName;
/** Computes the module's longhands in place; a map without them (the font-size pre-pass) is left alone. */
readonly compute: (props: Map<Longhand, ResolvedValue>, ctx: PaintValueContext) => void;
};

/** A module with no computed values yet. */
export const stubPaintValues = (name: PaintModuleName): PaintValues => ({ name, compute: () => {} });
57 changes: 57 additions & 0 deletions packages/dragon/src/css/properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ import { OVERFLOW_ASPECTS, OVERFLOW_CONTAINER, OVERFLOW_INHERITED, OVERFLOW_LONG
import { POSITION_ASPECTS, POSITION_CONTAINER, POSITION_INHERITED, POSITION_LONGHANDS, POSITION_SHORTHANDS, POSITION_TEXT_ROLE } from './properties/position.ts';
import { TEXT_FAMILY_ASPECTS, TEXT_FAMILY_CONTAINER, TEXT_FAMILY_INHERITED, TEXT_FAMILY_LONGHANDS, TEXT_FAMILY_SHORTHANDS, TEXT_FAMILY_TEXT_ROLE } from './properties/text.ts';
import { WRITING_MODE_ASPECTS, WRITING_MODE_CONTAINER, WRITING_MODE_INHERITED, WRITING_MODE_LONGHANDS, WRITING_MODE_SHORTHANDS, WRITING_MODE_TEXT_ROLE } from './properties/writing-mode.ts';
// Paint families (EMS seams, notes/T046-paint-spec.md §3 item 4): empty until their packages fill them.
import { RADIUS_ASPECTS, RADIUS_CONTAINER, RADIUS_INHERITED, RADIUS_LONGHANDS, RADIUS_SHORTHANDS, RADIUS_TEXT_ROLE } from './properties/radius.ts';
import { SHADOW_ASPECTS, SHADOW_CONTAINER, SHADOW_INHERITED, SHADOW_LONGHANDS, SHADOW_SHORTHANDS, SHADOW_TEXT_ROLE } from './properties/shadow.ts';
import { EFFECTS_ASPECTS, EFFECTS_CONTAINER, EFFECTS_INHERITED, EFFECTS_LONGHANDS, EFFECTS_SHORTHANDS, EFFECTS_TEXT_ROLE } from './properties/effects.ts';
import { OUTLINE_ASPECTS, OUTLINE_CONTAINER, OUTLINE_INHERITED, OUTLINE_LONGHANDS, OUTLINE_SHORTHANDS, OUTLINE_TEXT_ROLE } from './properties/outline.ts';
import { TRANSFORM_ASPECTS, TRANSFORM_CONTAINER, TRANSFORM_INHERITED, TRANSFORM_LONGHANDS, TRANSFORM_SHORTHANDS, TRANSFORM_TEXT_ROLE } from './properties/transform.ts';
import { BACKGROUND_LAYERS_ASPECTS, BACKGROUND_LAYERS_CONTAINER, BACKGROUND_LAYERS_INHERITED, BACKGROUND_LAYERS_LONGHANDS, BACKGROUND_LAYERS_SHORTHANDS, BACKGROUND_LAYERS_TEXT_ROLE } from './properties/background-layers.ts';
import { SCROLLBAR_ASPECTS, SCROLLBAR_CONTAINER, SCROLLBAR_INHERITED, SCROLLBAR_LONGHANDS, SCROLLBAR_SHORTHANDS, SCROLLBAR_TEXT_ROLE } from './properties/scrollbar.ts';

/** What a longhand affects: layout (box geometry) and paint (pixels). */
export type PropertyAspect = { readonly layout: boolean; readonly paint: boolean };
Expand All @@ -29,6 +37,15 @@ export const LONGHANDS = [

// Grid (css-grid-2) goes after the writing-mode family in every table below.
...GRID_LONGHANDS,

// The paint families (EMS seams) go last in every table below.
...RADIUS_LONGHANDS,
...SHADOW_LONGHANDS,
...EFFECTS_LONGHANDS,
...OUTLINE_LONGHANDS,
...TRANSFORM_LONGHANDS,
...BACKGROUND_LAYERS_LONGHANDS,
...SCROLLBAR_LONGHANDS,
] as const;

export type Longhand = (typeof LONGHANDS)[number];
Expand All @@ -45,6 +62,14 @@ export const SHORTHANDS = [
...WRITING_MODE_SHORTHANDS,

...GRID_SHORTHANDS,

...RADIUS_SHORTHANDS,
...SHADOW_SHORTHANDS,
...EFFECTS_SHORTHANDS,
...OUTLINE_SHORTHANDS,
...TRANSFORM_SHORTHANDS,
...BACKGROUND_LAYERS_SHORTHANDS,
...SCROLLBAR_SHORTHANDS,
] as const;

export type Shorthand = (typeof SHORTHANDS)[number];
Expand All @@ -61,6 +86,14 @@ export const INHERITED: ReadonlySet<Longhand> = new Set<Longhand>([
...WRITING_MODE_INHERITED,

...GRID_INHERITED,

...RADIUS_INHERITED,
...SHADOW_INHERITED,
...EFFECTS_INHERITED,
...OUTLINE_INHERITED,
...TRANSFORM_INHERITED,
...BACKGROUND_LAYERS_INHERITED,
...SCROLLBAR_INHERITED,
]);

/**
Expand Down Expand Up @@ -103,6 +136,14 @@ export const PROPERTY_ASPECTS: { readonly [P in Longhand]: PropertyAspect } = {
...WRITING_MODE_ASPECTS,

...GRID_ASPECTS,

...RADIUS_ASPECTS,
...SHADOW_ASPECTS,
...EFFECTS_ASPECTS,
...OUTLINE_ASPECTS,
...TRANSFORM_ASPECTS,
...BACKGROUND_LAYERS_ASPECTS,
...SCROLLBAR_ASPECTS,
};

/** The role of a longhand in its row key (M2): which formatting context, if any, the row names. */
Expand All @@ -120,6 +161,14 @@ const CONTAINER_LONGHANDS: readonly Longhand[] = [
...WRITING_MODE_CONTAINER,

...GRID_CONTAINER,

...RADIUS_CONTAINER,
...SHADOW_CONTAINER,
...EFFECTS_CONTAINER,
...OUTLINE_CONTAINER,
...TRANSFORM_CONTAINER,
...BACKGROUND_LAYERS_CONTAINER,
...SCROLLBAR_CONTAINER,
];
const TEXT_ROLE_LONGHANDS: readonly Longhand[] = [
...POSITION_TEXT_ROLE,
Expand All @@ -133,6 +182,14 @@ const TEXT_ROLE_LONGHANDS: readonly Longhand[] = [
...WRITING_MODE_TEXT_ROLE,

...GRID_TEXT_ROLE,

...RADIUS_TEXT_ROLE,
...SHADOW_TEXT_ROLE,
...EFFECTS_TEXT_ROLE,
...OUTLINE_TEXT_ROLE,
...TRANSFORM_TEXT_ROLE,
...BACKGROUND_LAYERS_TEXT_ROLE,
...SCROLLBAR_TEXT_ROLE,
];

/**
Expand Down
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/background-layers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): background layers beyond background-color (css-backgrounds-3 §3; BG2). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const BACKGROUND_LAYERS_LONGHANDS = [] as const;
export const BACKGROUND_LAYERS_SHORTHANDS = [] as const;
export const BACKGROUND_LAYERS_INHERITED: readonly (typeof BACKGROUND_LAYERS_LONGHANDS)[number][] = [];
export const BACKGROUND_LAYERS_CONTAINER: readonly (typeof BACKGROUND_LAYERS_LONGHANDS)[number][] = [];
export const BACKGROUND_LAYERS_TEXT_ROLE: readonly (typeof BACKGROUND_LAYERS_LONGHANDS)[number][] = [];

export const BACKGROUND_LAYERS_ASPECTS: { readonly [P in (typeof BACKGROUND_LAYERS_LONGHANDS)[number]]: PropertyAspect } = {};
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/effects.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): opacity, z-index and color-scheme (PNT1). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const EFFECTS_LONGHANDS = [] as const;
export const EFFECTS_SHORTHANDS = [] as const;
export const EFFECTS_INHERITED: readonly (typeof EFFECTS_LONGHANDS)[number][] = [];
export const EFFECTS_CONTAINER: readonly (typeof EFFECTS_LONGHANDS)[number][] = [];
export const EFFECTS_TEXT_ROLE: readonly (typeof EFFECTS_LONGHANDS)[number][] = [];

export const EFFECTS_ASPECTS: { readonly [P in (typeof EFFECTS_LONGHANDS)[number]]: PropertyAspect } = {};
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/outline.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): outline longhands (css-ui-4 §3; PNT1). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const OUTLINE_LONGHANDS = [] as const;
export const OUTLINE_SHORTHANDS = [] as const;
export const OUTLINE_INHERITED: readonly (typeof OUTLINE_LONGHANDS)[number][] = [];
export const OUTLINE_CONTAINER: readonly (typeof OUTLINE_LONGHANDS)[number][] = [];
export const OUTLINE_TEXT_ROLE: readonly (typeof OUTLINE_LONGHANDS)[number][] = [];

export const OUTLINE_ASPECTS: { readonly [P in (typeof OUTLINE_LONGHANDS)[number]]: PropertyAspect } = {};
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/radius.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): border-radius longhands (css-backgrounds-3 §5; PNT1). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const RADIUS_LONGHANDS = [] as const;
export const RADIUS_SHORTHANDS = [] as const;
export const RADIUS_INHERITED: readonly (typeof RADIUS_LONGHANDS)[number][] = [];
export const RADIUS_CONTAINER: readonly (typeof RADIUS_LONGHANDS)[number][] = [];
export const RADIUS_TEXT_ROLE: readonly (typeof RADIUS_LONGHANDS)[number][] = [];

export const RADIUS_ASPECTS: { readonly [P in (typeof RADIUS_LONGHANDS)[number]]: PropertyAspect } = {};
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/scrollbar.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): scrollbar-color and scrollbar-width (css-scrollbars-1; OVFL-S). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const SCROLLBAR_LONGHANDS = [] as const;
export const SCROLLBAR_SHORTHANDS = [] as const;
export const SCROLLBAR_INHERITED: readonly (typeof SCROLLBAR_LONGHANDS)[number][] = [];
export const SCROLLBAR_CONTAINER: readonly (typeof SCROLLBAR_LONGHANDS)[number][] = [];
export const SCROLLBAR_TEXT_ROLE: readonly (typeof SCROLLBAR_LONGHANDS)[number][] = [];

export const SCROLLBAR_ASPECTS: { readonly [P in (typeof SCROLLBAR_LONGHANDS)[number]]: PropertyAspect } = {};
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/shadow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): box-shadow (css-backgrounds-3 §6; PNT1). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const SHADOW_LONGHANDS = [] as const;
export const SHADOW_SHORTHANDS = [] as const;
export const SHADOW_INHERITED: readonly (typeof SHADOW_LONGHANDS)[number][] = [];
export const SHADOW_CONTAINER: readonly (typeof SHADOW_LONGHANDS)[number][] = [];
export const SHADOW_TEXT_ROLE: readonly (typeof SHADOW_LONGHANDS)[number][] = [];

export const SHADOW_ASPECTS: { readonly [P in (typeof SHADOW_LONGHANDS)[number]]: PropertyAspect } = {};
10 changes: 10 additions & 0 deletions packages/dragon/src/css/properties/transform.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Seam (EMS): transform and transform-origin (css-transforms-1; PNT2). An empty family until its package fills it.
import type { PropertyAspect } from '../properties.ts';

export const TRANSFORM_LONGHANDS = [] as const;
export const TRANSFORM_SHORTHANDS = [] as const;
export const TRANSFORM_INHERITED: readonly (typeof TRANSFORM_LONGHANDS)[number][] = [];
export const TRANSFORM_CONTAINER: readonly (typeof TRANSFORM_LONGHANDS)[number][] = [];
export const TRANSFORM_TEXT_ROLE: readonly (typeof TRANSFORM_LONGHANDS)[number][] = [];

export const TRANSFORM_ASPECTS: { readonly [P in (typeof TRANSFORM_LONGHANDS)[number]]: PropertyAspect } = {};
Loading
Loading