cards/grammar/plugins/grammar.plugin.ts

cards/grammar/plugins/grammar.plugin.ts is a file in Bane's Lab Social Share. 45 lines of code and 0 definitions.

import {
    GRAMMAR_EMBLEM_FLOAT,
    GRAMMAR_EMBLEM_SCALE,
    GRAMMAR_GLOW,
    GRAMMAR_GLOW_SWING,
} from "#configuration/data/grammar.data";
import { placeAt, swing } from "#core/evaluators/card.fragment.evaluator";
import { GRAMMAR_CARD } from "#core/ids/card.ids";
import { GRAMMAR_EMBLEM } from "@banes-lab/web/core/assets/image.assets.ts";
import { GRAMMAR_PAGE } from "@banes-lab/web/core/ids/page.ids.ts";
import { GRAMMAR_SHARE } from "@banes-lab/web/configuration/strings/page.strings.ts";
import { PAGE_LAYOUT } from "#configuration/data/page.data";
import { createPageCard } from "#core/factories/page.factory";
import { registerCard } from "#core/registries/card.registry";
import shader from "../shaders/grammar.shader.wgsl?raw";
import stylesheet from "../styles/grammar.style.css?raw";

registerCard(
    createPageCard({
        field: [
            {
                id: "field",
                kind: "shader",
                placement: { height: 1, width: 1, x: 0, y: 0 },
                shader,
                uniforms: { glow: (frame) => GRAMMAR_GLOW + GRAMMAR_GLOW_SWING * swing(frame.progress) },
            },
        ],
        id: GRAMMAR_CARD,
        mark: {
            alt: GRAMMAR_SHARE.headline,
            className: "grammar-emblem",
            id: "mark",
            kind: "image",
            placement: placeAt(PAGE_LAYOUT, "mark", {
                grow: () => GRAMMAR_EMBLEM_SCALE,
                lift: (frame) => GRAMMAR_EMBLEM_FLOAT * swing(frame.progress),
                square: true,
            }),
            source: GRAMMAR_EMBLEM,
        },
        page: GRAMMAR_PAGE,
        stylesheet,
    }),
    import.meta.url,
);