Skip to content

Source Copyrights

Source Copyrights

Cette page est générée automatiquement à partir du dépôt local au moment de la génération de la documentation.

Fichiers inclus

packages/common/src/lib/widgets/copyrights/copyrights.declaration.ts

packages/common/src/lib/widgets/copyrights/copyrights.declaration.ts
import { widgetFactorySvelte, type WidgetProps } from '$lib/api/managers/widget';
import { type CopyrightsConfig, copyrightsConfigSchema } from './copyrights.config';
import type { WidgetDeclaration } from '$lib/api/managers/widget/widget-declaration';
export const declaration = {
factory: () => import('./Copyrights.svelte').then((Copyrights) => widgetFactorySvelte(Copyrights)),
schema: () => copyrightsConfigSchema,
} satisfies WidgetDeclaration;
export type CopyrightsProps = WidgetProps<CopyrightsConfig>;

packages/common/src/lib/widgets/copyrights/copyrights.config.ts

packages/common/src/lib/widgets/copyrights/copyrights.config.ts
import { defineWidgetConfig } from '$lib/api/managers/configuration';
import { inToolbarSchemaFrom } from '$lib/api/managers/configuration/models/widget/widget-in-toolbar.schema';
import { z } from 'zod';
export const copyrightsConfigSchema = defineWidgetConfig({
inToolbar: inToolbarSchemaFrom(false),
active: true,
config: z
.object({
separator: z.string().default(' | '),
containerClass: z.string().default(''),
})
.prefault({}),
});
export type CopyrightsConfig = z.infer<typeof copyrightsConfigSchema>;

packages/common/src/lib/widgets/copyrights/Copyrights.svelte

packages/common/src/lib/widgets/copyrights/Copyrights.svelte
<script lang="ts">
import { getMapManager } from '$lib/api/map';
import { cn } from '$lib/components/shadcn/utils';
import { ApiSimpleTooltip } from '$lib/components/api-simple-tooltip';
import type { CopyrightsProps } from './copyrights.declaration';
const { fullConfig }: CopyrightsProps = $props();
const { config } = fullConfig;
const mapManager = getMapManager();
const copyrightText = $derived.by(() => {
return mapManager.copyrights.join(config.separator);
});
</script>
{#if copyrightText?.length > 0}
<ApiSimpleTooltip text={copyrightText} side="left" triggerClass="gv-block">
<div
class={cn(
config.containerClass,
'gv-max-w-[200px] gv-bg-black/40 gv-text-white gv-flex gv-items-center gv-h-5 gv-gap-1 gv-px-1 gv-py-0.5 gv-text-sm gv-leading-3',
)}
>
<span class="gv-w-full gv-overflow-hidden gv-truncate gv-whitespace-nowrap gv-text-ellipsis">
{copyrightText}
</span>
</div>
</ApiSimpleTooltip>
{/if}

Aller plus loin