"use client"; import { ArrowDownIcon, ArrowUpIcon, CopyIcon, GripVerticalIcon, MoreHorizontalIcon, PlusIcon, Trash2Icon, } from "lucide-react"; import { useState } from "react"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Field, FieldGroup, FieldLabel } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import type { SerializedBlock } from "@/lib/blocks"; import { duplicateBlock, moveBlock, moveBlockTo, type EditorDraft, } from "@/lib/editor/draft"; import { cn } from "@/lib/utils"; export const blockLabels: Record = { profile: "โปรไฟล์", "rich-text": "ข้อความ", heading: "หัวข้อ", callout: "กล่องหมายเหตุ", "stat-cards": "การ์ดค่าสถานะ", "key-value": "ข้อมูลกำหนดเอง", ranking: "อันดับเปรียบเทียบ", "team-composition": "องค์ประกอบทีม", rotation: "ลำดับคอมโบ", table: "ตารางข้อมูล", "comparison-chart": "กราฟเปรียบเทียบ", image: "รูปภาพ", gallery: "แกลเลอรี", tabs: "แท็บ", accordion: "แอคคอร์เดียน", section: "ส่วนเนื้อหา", columns: "คอลัมน์", links: "ลิงก์", separator: "เส้นคั่น", }; interface BlockCanvasProps { draft: EditorDraft; selectedId: string | null; onSelect: (id: string) => void; onChange: (draft: EditorDraft) => void; onOpenInsert: () => void; } export function BlockCanvas({ draft, selectedId, onSelect, onChange, onOpenInsert, }: BlockCanvasProps) { const changeBlocks = (blocks: SerializedBlock[]) => onChange({ ...draft, blocks }); const patchBlock = (blockId: string, config: Record) => { changeBlocks( draft.blocks.map((block) => block.id === blockId ? { ...block, config: { ...block.config as object, ...config } } : block, ), ); }; return (
ชื่อหน้า onChange({ ...draft, title: event.target.value })} /> หมายเหตุสาธารณะ