mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 03:59:50 +02:00
feat: start on embed host
This commit is contained in:
1 parent
a5aad61cb7
commit
abd63b92a8
7 files changed
+30
-16
No files matched your search
@@ -17,12 +17,12 @@ import {
|
|||||||
import { debounce } from 'lodash-es';
|
import { debounce } from 'lodash-es';
|
||||||
import { useCallback, useRef, useState } from 'react';
|
import { useCallback, useRef, useState } from 'react';
|
||||||
import { stringify } from 'urlon';
|
import { stringify } from 'urlon';
|
||||||
import type { configurations } from '../../constants/embeds';
|
import type { embedConfigurations } from '../../constants/embeds';
|
||||||
import { EmbedState, type EmbedStateStore } from '../../stores/embedState';
|
import { EmbedState, type EmbedStateStore } from '../../stores/embedState';
|
||||||
import { CopyButton } from '../CopyButton';
|
import { CopyButton } from '../CopyButton';
|
||||||
|
|
||||||
interface CopyURLProps {
|
interface CopyURLProps {
|
||||||
embed: keyof typeof configurations;
|
embed: keyof typeof embedConfigurations;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function CopyURL({ embed }: CopyURLProps) {
|
export function CopyURL({ embed }: CopyURLProps) {
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
import { Box } from '@radix-ui/themes';
|
import { Box } from '@radix-ui/themes';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
import { previews } from '../../../constants/embeds';
|
import { embedPreviews } from '../../../constants/embeds';
|
||||||
import { useEmbedStateCurry } from '../../../stores/embedState/utilities';
|
import { useEmbedStateCurry } from '../../../stores/embedState/utilities';
|
||||||
import * as styles from './index.css';
|
import * as styles from './index.css';
|
||||||
|
|
||||||
interface PreviewWrapperProps {
|
interface PreviewWrapperProps {
|
||||||
name: keyof typeof previews;
|
name: keyof typeof embedPreviews;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PreviewWrapper({ name }: PreviewWrapperProps) {
|
export function PreviewWrapper({ name }: PreviewWrapperProps) {
|
||||||
const { useState } = useEmbedStateCurry();
|
const { useState } = useEmbedStateCurry();
|
||||||
const width = useState('width');
|
const width = useState('width');
|
||||||
const height = useState('height');
|
const height = useState('height');
|
||||||
const Preview = previews[name];
|
const Preview = embedPreviews[name];
|
||||||
const wrapper = useRef<HTMLDivElement>(null);
|
const wrapper = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -85,11 +85,11 @@ export const breakdownConfig = {
|
|||||||
column4CustomLabel: { type: EmbedItemType.String, default: '' },
|
column4CustomLabel: { type: EmbedItemType.String, default: '' },
|
||||||
} satisfies EmbedConfig;
|
} satisfies EmbedConfig;
|
||||||
|
|
||||||
export const configurations = {
|
export const embedConfigurations = {
|
||||||
breakdown: breakdownConfig,
|
breakdown: breakdownConfig,
|
||||||
} satisfies Record<string, EmbedConfig>;
|
} satisfies Record<string, EmbedConfig>;
|
||||||
|
|
||||||
export const previews = {
|
export const embedPreviews = {
|
||||||
breakdown: BreakdownPreview,
|
breakdown: BreakdownPreview,
|
||||||
} satisfies Record<string, () => ReactNode>;
|
} satisfies Record<string, () => ReactNode>;
|
||||||
export function extractEmbedConfigDefaults<Config extends EmbedConfig>(
|
export function extractEmbedConfigDefaults<Config extends EmbedConfig>(
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import { Slider } from '../../../../components/Embeds/Slider';
|
|||||||
import { TextController } from '../../../../components/Embeds/TextController';
|
import { TextController } from '../../../../components/Embeds/TextController';
|
||||||
import { PageWrapper } from '../../../../components/PageWrapper';
|
import { PageWrapper } from '../../../../components/PageWrapper';
|
||||||
import {
|
import {
|
||||||
configurations,
|
embedConfigurations,
|
||||||
extractEmbedConfigDefaults,
|
extractEmbedConfigDefaults,
|
||||||
} from '../../../../constants/embeds';
|
} from '../../../../constants/embeds';
|
||||||
import { NAVBAR_HEIGHT } from '../../../../constants/navbar';
|
import { NAVBAR_HEIGHT } from '../../../../constants/navbar';
|
||||||
@@ -38,11 +38,11 @@ export interface EmbedPreviewControllerProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface PageProps {
|
interface PageProps {
|
||||||
embed: keyof typeof configurations;
|
embed: keyof typeof embedConfigurations;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function Page({ embed }: PageProps) {
|
export function Page({ embed }: PageProps) {
|
||||||
const config = configurations[embed];
|
const config = embedConfigurations[embed];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<App.Provider>
|
<App.Provider>
|
||||||
@@ -56,7 +56,7 @@ export function Page({ embed }: PageProps) {
|
|||||||
function Content({ embed }: PageProps) {
|
function Content({ embed }: PageProps) {
|
||||||
const embedStateStore = EmbedState.useStore();
|
const embedStateStore = EmbedState.useStore();
|
||||||
const appStore = App.useStore();
|
const appStore = App.useStore();
|
||||||
const config = configurations[embed] as EmbedConfig;
|
const config = embedConfigurations[embed] as EmbedConfig;
|
||||||
const [backgroundImage, setBackgroundImage] = useState(
|
const [backgroundImage, setBackgroundImage] = useState(
|
||||||
imgur('SO13zur', { format: 'jpeg' }),
|
imgur('SO13zur', { format: 'jpeg' }),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
import { embedPreviews } from '../../../../../constants/embeds';
|
||||||
|
import { EmbedState } from '../../../../../stores/embedState';
|
||||||
|
|
||||||
|
export { getStaticPaths } from '../index.astro';
|
||||||
|
|
||||||
|
const Test = embedPreviews.breakdown;
|
||||||
|
---
|
||||||
|
|
||||||
|
sploinky sploinky splonk
|
||||||
|
|
||||||
|
<EmbedState.Provider>
|
||||||
|
<Test />
|
||||||
|
</EmbedState.Provider>
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
import type { GetStaticPaths } from 'astro';
|
import type { GetStaticPaths } from 'astro';
|
||||||
import { configurations } from '../../../../constants/embeds';
|
import { embedConfigurations } from '../../../../constants/embeds';
|
||||||
import BaseLayout from '../../../../layouts/BaseLayout.astro';
|
import BaseLayout from '../../../../layouts/BaseLayout.astro';
|
||||||
import { Page } from './_index';
|
import { Page } from './_index';
|
||||||
|
|
||||||
export const getStaticPaths = (() => {
|
export const getStaticPaths = (() => {
|
||||||
return Object.keys(configurations).map((embed) => ({
|
return Object.keys(embedConfigurations).map((embed) => ({
|
||||||
params: { embed: embed as keyof typeof configurations },
|
params: { embed: embed as keyof typeof embedConfigurations },
|
||||||
}));
|
}));
|
||||||
}) satisfies GetStaticPaths;
|
}) satisfies GetStaticPaths;
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
import { Link } from '@radix-ui/themes';
|
import { Link } from '@radix-ui/themes';
|
||||||
import { PageWrapper } from '../../../components/PageWrapper';
|
import { PageWrapper } from '../../../components/PageWrapper';
|
||||||
import { configurations } from '../../../constants/embeds';
|
import { embedConfigurations } from '../../../constants/embeds';
|
||||||
import { embedTool } from '../../../constants/tools';
|
import { embedTool } from '../../../constants/tools';
|
||||||
import ToolLayout from '../../../layouts/ToolLayout.astro';
|
import ToolLayout from '../../../layouts/ToolLayout.astro';
|
||||||
---
|
---
|
||||||
@@ -9,7 +9,7 @@ import ToolLayout from '../../../layouts/ToolLayout.astro';
|
|||||||
<ToolLayout tool={embedTool}>
|
<ToolLayout tool={embedTool}>
|
||||||
<PageWrapper color="red">
|
<PageWrapper color="red">
|
||||||
{
|
{
|
||||||
Object.entries(configurations).map(([embed, config]) => (
|
Object.entries(embedConfigurations).map(([embed, config]) => (
|
||||||
<Link href={`/tools/embed/${embed}`}>{embed}</Link>
|
<Link href={`/tools/embed/${embed}`}>{embed}</Link>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user