@medyat/react-data-table 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottom-sheet-NHUT908D.js","names":["ColumnDef","ColumnType","Track","min","fr","SkeletonShape","TypeSpec","align","width","skeleton","sortable","filterable","searchable","numeric","num","txt","badge","TYPE_SPECS","Record","int","float","percentage","star","currency","string","text","uppercase","lowercase","phone","color","email","url","id","boolean","select","multiselect","ajax","user","date","datetime","object","array","defaultTrack","def","undefined","type","display","primary","isNumericType","alignOf","TYPE_LABEL","typeLabelKey","readPath","row","path","v","key","split","undefined","Record","IsoDate","MINUS","cache","Map","cached","kind","locale","options","make","T","key","JSON","stringify","v","get","undefined","set","DATE_ONLY","toDate","value","Date","m","exec","DAY_MS","startOfDay","d","getFullYear","getMonth","getDate","getTime","Format","ReturnType","createFormat","nf","o","Intl","NumberFormatOptions","NumberFormat","df","DateTimeFormatOptions","DateTimeFormat","minus","s","includes","replace","intFmt","maximumFractionDigits","byDp","dp","f","decimalFmt","minimumFractionDigits","percentFmt","style","relativeFormat","RelativeTimeFormat","numeric","relative","now","diffMs","abs","Math","rtf","format","round","int","n","decimal","percent","compact","notation","date","today","sameYear","month","day","year","dateTime","hour","minute","dateTimeFull","dateStyle","timeStyle","daysLate","max","floor","list","items","ListFormat","type","collator","Collator","sensitivity","plural","PluralRules","formats","getFormat","ColumnDef","OptionDef","toDate","Format","I18n","RemoteLabels","FormatEnv","fmt","i18n","today","Date","labels","isEmptyValue","v","undefined","Array","isArray","length","optionLabel","options","value","find","o","label","String","urlHost","URL","host","currencyCode","def","Extract","Row","type","row","currency","decimalPlaces","formatCell","env","emptyText","int","Number","decimal","percent","t","max","list","map","id","remote","ids","isNaN","getTime","date","relative","dateTime","summary","count","Object","keys","formatArrayItem","itemType","BracketsCurlyIcon","CalendarBlankIcon","CheckSquareIcon","ClockIcon","CreditCardIcon","EnvelopeIcon","HashIcon","LinkIcon","LinkSimpleIcon","ListBulletsIcon","ListChecksIcon","PaletteIcon","PercentIcon","PhoneIcon","RadioButtonIcon","StarIcon","TextAlignLeftIcon","TextTIcon","UserIcon","ColumnType","IconComponent","TYPE_ICONS","Record","int","float","percentage","star","currency","string","text","uppercase","lowercase","phone","color","email","url","id","boolean","select","multiselect","ajax","user","date","datetime","object","array","ArrowUpRightIcon","ArrowsOutSimpleIcon","CheckIcon","MinusIcon","StarIcon","XIcon","CSSProperties","ReactNode","ColumnDef","IconComponent","OptionDef","UserOption","Density","Tone","currencyCode","decimalPlaces","formatArrayItem","formatCell","isEmptyValue","optionLabel","urlHost","FormatEnv","RenderEnv","density","coarse","ToneRef","light","dark","toneClass","tone","toneStyle","undefined","AVATAR_TONES","avatarTone","id","hash","ch","String","charCodeAt","length","initialsOf","label","split","filter","Boolean","slice","map","w","toLocaleUpperCase","join","Badge","t0","$","_c","icon","Icon","t1","t2","t3","t4","t5","t6","More","count","tip","pill","Mono","children","Avatar","user","value","avatarUrl","backgroundImage","initials","Stars","max","_","i","Array","from","Bar","pct","Math","min","width","Link","href","external","target","rel","cellFillStyle","def","Row","type","display","m","exec","background","n","parseInt","lum","color","resolveUsers","Extract","ids","env","o","options","find","u","labels","option","remote","optionBadge","v","opt","renderCellContent","row","formatted","cell","ctx","column","i18n","t","fmt","Number","decimal","destructive","falseTone","vals","list","isArray","users","overdue","late","daysLate","Date","today","dateTimeFull","items","itemType","_c","_Fragment","seps","Map","group","decimal","sepsOf","locale","s","get","parts","Intl","NumberFormat","formatToParts","find","p","type","value","set","parseNumber","text","replace","comma","lastIndexOf","dot","split","join","n","Number","isFinite","GROUPED","cleanNumber","integer","t","sign","startsWith","body","test","plainNumber","Math","trunc","whole","fraction","length","useGrouping","maximumFractionDigits","format","useEffect","useRef","useDelay","ms","$","_c","timer","undefined","t0","t1","Symbol","for","clearTimeout","current","t2","fn","setTimeout","t3","t4","run","cancel","_c","Toggle","ToggleGroup","useState","KeyboardEvent","ColumnDef","decimalPlaces","FilterOp","cleanNumber","parseNumber","plainNumber","useDelay","useDataTableContext","Value","NumberEditor","t0","$","_c","column","op","value","currency","currencies","onChange","onCurrency","onDone","i18n","locale","range","t1","n","Number","isFinite","show","t2","v","Array","isArray","undefined","fromValue","t3","t4","setDraft","a","b","t5","seen","setSeen","x","y","same","p","q","delay","t6","min","max","lo","hi","commit","t7","next","run","set","t8","e","key","preventDefault","cancel","onKeyDown","t9","text","clean","suffix","type","t10","text_0","onText","t11","first","e_0","target","field","length","v_0","String","map","c","t12","t","t13","t14","t15","t16","t_0","t17","t18","_c","_Fragment","MagnifyingGlassIcon","useEffect","useRef","useState","ColumnDef","OptionDef","RemoteOptions","UserOption","FilterOp","ME","Avatar","Badge","RemoteLabels","readPath","useDelay","useDataTableContext","Value","staticOptions","def","rows","type","options","sort","a","b","label","localeCompare","palette","map","value","seen","Set","row","raw","accessor","id","v","Array","isArray","undefined","add","String","OptionsEditor","column","op","labels","onChange","onUnassigned","values","i18n","remote","isUser","q","setQ","all","found","setFound","items","hasMore","page","loading","setLoading","ctl","AbortController","load","query","current","abort","c","search","signal","then","res","aborted","f","seed","catch","finally","delay","needle","trim","toLocaleLowerCase","filter","o","includes","showSearch","length","placeholder","filterNoun","t","noun","selected","isOn","has","toggle","x","unassigned","body","tone","background","e","text","target","run","slice","preventDefault","_Fragment","StarIcon","ColumnDef","StarEditor","t0","$","_c","column","value","onChange","onDone","max","t1","n","on","t2","Array","from","length","_temp","map","n_0","String","_","i","_c","_temp","useState","ColumnDef","FilterOp","useDelay","Value","Array","asText","v","isArray","join","TextEditor","t0","$","_c","column","op","value","onChange","onDone","t1","type","s","toLocaleUpperCase","toLocaleLowerCase","normalize","t2","text","s_0","trim","split","map","_temp","filter","Boolean","parse","t3","draft","setDraft","seen","setSeen","JSON","stringify","delay","t4","e","text_0","target","run","t5","e_0","key","preventDefault","cancel","t6","p","_c","lazy","Suspense","ColumnDef","RemoteLabels","NumberEditor","OptionsEditor","StarEditor","TextEditor","changeOperator","editorOf","Chip","DateEditor","ValueEditor","t0","$","_c","chip","column","rows","labels","currencies","onChange","onDone","type","t1","value","currency","setValue","op","t2","Array","isArray","t3","t4","value_0","_c","Dialog","ComponentProps","ReactElement","ReactNode","Popup","BottomSheet","t0","$","_c","open","onOpenChange","trigger","title","hideTitle","className","headStart","headEnd","foot","initialFocus","finalFocus","children","t1","o","t2","t3","Symbol","for","t4","t5","t6","t7","t8","t9","t10","_c","useDataTableContext","editorOf","changeOperator","Fragment$1","num","txt","badge","TYPE_SPECS","defaultTrack","def","isNumericType","type","alignOf","TYPE_LABEL","typeLabelKey","readPath","v","row","key","path","cache","cached","kind","locale","options","make","DATE_ONLY","toDate","value","m","DAY_MS","startOfDay","d","createFormat","nf","o","df","minus","s","intFmt","byDp","f","dp","decimalFmt","percentFmt","relativeFormat","n","sameYear","today","diffMs","now","abs","rtf","style","items","formats","getFormat","isEmptyValue","optionLabel","urlHost","currencyCode","decimalPlaces","formatCell","env","fmt","i18n","ids","id","formatArrayItem","itemType","TYPE_ICONS","HashIcon","PercentIcon","StarIcon","CreditCardIcon","TextTIcon","TextAlignLeftIcon","PhoneIcon","PaletteIcon","EnvelopeIcon","LinkIcon","CheckSquareIcon","RadioButtonIcon","ListChecksIcon","LinkSimpleIcon","UserIcon","CalendarBlankIcon","ClockIcon","BracketsCurlyIcon","ListBulletsIcon","toneClass","tone","toneStyle","AVATAR_TONES","avatarTone","hash","ch","initialsOf","label","w","Badge","$","c","Icon","t0","t1","t2","t3","t4","t5","t6","More","pill","count","tip","Mono","children","Avatar","user","Stars","max","i","Bar","pct","Link","external","href","cellFillStyle","resolveUsers","u","optionBadge","opt","renderCellContent","formatted","ArrowsOutSimpleIcon","ArrowUpRightIcon","CheckIcon","destructive","XIcon","MinusIcon","vals","users","late","seps","sepsOf","parts","p","parseNumber","text","comma","dot","decimal","GROUPED","cleanNumber","t","sign","body","plainNumber","integer","whole","fraction","useDelay","timer","useRef","useEffect","ms","fn","NumberEditor","range","op","show","fromValue","setDraft","useState","a","b","seen","setSeen","x","y","same","q","delay","onChange","lo","min","hi","commit","t7","next","set","t8","onDone","onKeyDown","t9","column","clean","suffix","t10","t11","text_0","onText","e_0","field","currencies","currency","onCurrency","ToggleGroup","v_0","Toggle","t12","t13","t14","t15","t16","t_0","t17","t18","staticOptions","rows","raw","OptionsEditor","remote","isUser","setQ","all","found","setFound","loading","setLoading","ctl","load","query","page","res","labels","needle","showSearch","placeholder","selected","isOn","toggle","unassigned","MagnifyingGlassIcon","onUnassigned","e","StarEditor","on","_temp$1","n_0","asText","TextEditor","normalize","s_0","_temp","parse","draft","DateEditor","lazy","ValueEditor","chip","setValue","value_0","Suspense","BottomSheet","onOpenChange","trigger","Dialog","className","headEnd","headStart","hideTitle","title","foot","finalFocus","initialFocus","open"],"sources":["../src/core/cells/specs.ts","../src/core/columns/read-path.ts","../src/core/format/index.ts","../src/core/cells/format.ts","../src/core/filters/type-icons.ts","../src/core/cells/render-cell.tsx","../src/core/format/parse.ts","../src/core/interaction/use-delay.ts","../src/core/editors/number-editor.tsx","../src/core/editors/options-editor.tsx","../src/core/editors/star-editor.tsx","../src/core/editors/text-editor.tsx","../src/core/filters/value-editor.tsx","../src/core/ui/bottom-sheet.tsx"],"sourcesContent":["// Tip başına sabitler (03 · Ortak kurallar, 05 · Sütun genişlikleri): hizalama, varsayılan genişlik, skeleton biçimi,\n// sıralanabilirlik. Görünüm (render) ayrı dosyada: renderCell.ts.\nimport type { ColumnDef, ColumnType } from '../../types/columns'\n\n/** px ya da minmax(min, fr) (05: metin sütunları esner, diğerleri sabit). */\nexport type Track = number | { min: number; fr: number }\n\nexport type SkeletonShape = 'text' | 'number' | 'badge' | 'person'\n\nexport interface TypeSpec {\n align: 'left' | 'right'\n width: Track\n skeleton: SkeletonShape\n sortable: boolean\n filterable: boolean\n /** Toolbar aramasına varsayılan dahil (api-draft `searchable`). */\n searchable: boolean\n /** Sayı ailesi: tabular-nums + sağa hizalı header. */\n numeric: boolean\n}\n\nconst num = (width: number): TypeSpec => ({\n align: 'right',\n width,\n skeleton: 'number',\n sortable: true,\n filterable: true,\n searchable: false,\n numeric: true,\n})\nconst txt = (width: Track, searchable = true): TypeSpec => ({\n align: 'left',\n width,\n skeleton: 'text',\n sortable: true,\n filterable: true,\n searchable,\n numeric: false,\n})\nconst badge = (width: number): TypeSpec => ({\n align: 'left',\n width,\n skeleton: 'badge',\n sortable: true,\n filterable: true,\n searchable: false,\n numeric: false,\n})\n\nexport const TYPE_SPECS: Record<ColumnType, TypeSpec> = {\n int: num(112),\n float: num(112),\n percentage: num(112),\n star: { ...txt(112, false), skeleton: 'text' },\n currency: num(148),\n string: txt({ min: 160, fr: 1.2 }),\n text: txt({ min: 160, fr: 1.2 }),\n uppercase: txt({ min: 160, fr: 1.2 }),\n lowercase: txt({ min: 160, fr: 1.2 }),\n phone: txt(156),\n color: { ...txt(132, false) },\n email: txt(200),\n url: { ...txt(180, false) },\n id: txt(128),\n boolean: badge(96),\n select: badge(140),\n multiselect: { ...badge(180), sortable: false },\n ajax: badge(180),\n user: { ...badge(156), skeleton: 'person' },\n date: txt(132, false),\n datetime: txt(156, false),\n object: { ...txt(180, false), sortable: false, filterable: false },\n array: { ...txt(160, false), sortable: false },\n}\n\n/** Varsayılan genişlik: birincil `id` 136 (expand oku için), birincil metin minmax(200, 1.6fr), percentage bar 156. */\nexport function defaultTrack(def: ColumnDef): Track {\n if (def.width !== undefined) return def.width\n if (def.type === 'percentage' && def.display === 'bar') return 156\n if (def.primary) return def.type === 'id' ? 136 : { min: 200, fr: 1.6 }\n return TYPE_SPECS[def.type].width\n}\n\nexport const isNumericType = (type: ColumnType): boolean => TYPE_SPECS[type].numeric\n\nexport function alignOf(def: ColumnDef): 'left' | 'right' | 'center' {\n return def.align ?? TYPE_SPECS[def.type].align\n}\n\n/** Sütun menüsü başlığı (05 §4): tipin 09 `type.*` anahtarı. */\nconst TYPE_LABEL: Record<ColumnType, string> = {\n int: 'number',\n float: 'number',\n percentage: 'percentage',\n star: 'rating',\n currency: 'currency',\n string: 'text',\n text: 'longText',\n uppercase: 'text',\n lowercase: 'text',\n phone: 'phone',\n color: 'colour',\n email: 'email',\n url: 'link',\n id: 'id',\n boolean: 'boolean',\n select: 'option',\n multiselect: 'options',\n ajax: 'relation',\n user: 'person',\n date: 'date',\n datetime: 'datetime',\n object: 'object',\n array: 'list',\n}\nexport const typeLabelKey = (type: ColumnType): string => `type.${TYPE_LABEL[type]}`\n","/** Nokta yolu okuma: 'customer.title' → row.customer?.title (null-güvenli). En fazla 4 seviye (api-draft). */\nexport function readPath(row: unknown, path: string): unknown {\n let v: unknown = row\n for (const key of path.split('.')) {\n if (v === null || v === undefined) return undefined\n v = (v as Record<string, unknown>)[key]\n }\n return v\n}\n","// Intl biçimlendiricileri: locale + seçenek anahtarıyla önbellekli (01: hücre başına oluşturmak 10k satırda 134 ms, önbellekli 3,5 ms).\n// Kurallar 09 · Biçimlendirme: gerçek eksi işareti U+2212, yüzde Intl ile (tr: %68), para = sayı + ayrı ISO kodu.\nimport type { IsoDate } from '../../types/core'\n\nexport const MINUS = '−'\n\nconst cache = new Map<string, unknown>()\nfunction cached<T>(kind: string, locale: string, options: object | undefined, make: () => T): T {\n const key = `${kind}|${locale}|${options ? JSON.stringify(options) : ''}`\n let v = cache.get(key) as T | undefined\n if (v === undefined) {\n v = make()\n cache.set(key, v)\n }\n return v\n}\n\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})$/\n\n/** ISO tarih (\"2026-10-24\") yerel gün olarak okunur (UTC gece yarısı kayması olmasın); tarih-saat ve Date olduğu gibi. */\nexport function toDate(value: IsoDate | Date): Date {\n if (value instanceof Date) return value\n const m = DATE_ONLY.exec(value)\n return m ? new Date(+m[1]!, +m[2]! - 1, +m[3]!) : new Date(value)\n}\n\nconst DAY_MS = 86_400_000\nconst startOfDay = (d: Date): number => new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime()\n\nexport type Format = ReturnType<typeof createFormat>\n\nexport function createFormat(locale: string) {\n const nf = (o?: Intl.NumberFormatOptions) => cached('n', locale, o, () => new Intl.NumberFormat(locale, o))\n const df = (o: Intl.DateTimeFormatOptions) => cached('d', locale, o, () => new Intl.DateTimeFormat(locale, o))\n const minus = (s: string) => (s.includes('-') ? s.replace(/-/g, MINUS) : s)\n // Sıcak yol (hücre başına): JSON anahtarı üretmeden, hane sayısına göre küçük haritalar.\n const intFmt = nf({ maximumFractionDigits: 0 })\n const byDp = (make: (dp: number) => Intl.NumberFormat) => {\n const m = new Map<number, Intl.NumberFormat>()\n return (dp: number) => {\n let f = m.get(dp)\n if (!f) m.set(dp, (f = make(dp)))\n return f\n }\n }\n const decimalFmt = byDp((dp) => nf({ minimumFractionDigits: dp, maximumFractionDigits: dp }))\n const percentFmt = byDp((dp) => nf({ style: 'percent', minimumFractionDigits: dp, maximumFractionDigits: dp }))\n\n const relativeFormat = (style: 'long' | 'short') =>\n cached('r', locale, { style }, () => new Intl.RelativeTimeFormat(locale, { numeric: 'auto', style }))\n\n /** \"2 hours ago\" / \"in 3 days\"; en büyük anlamlı birim. Footer tazeliği `short` (\"14 min. ago\"). */\n const relative = (value: IsoDate | Date, now: Date = new Date(), style: 'long' | 'short' = 'long'): string => {\n const diffMs = toDate(value).getTime() - now.getTime()\n const abs = Math.abs(diffMs)\n const rtf = relativeFormat(style)\n if (abs < 60_000) return rtf.format(0, 'second')\n if (abs < 3_600_000) return rtf.format(Math.round(diffMs / 60_000), 'minute')\n if (abs < DAY_MS) return rtf.format(Math.round(diffMs / 3_600_000), 'hour')\n if (abs < 30 * DAY_MS) return rtf.format(Math.round(diffMs / DAY_MS), 'day')\n if (abs < 365 * DAY_MS) return rtf.format(Math.round(diffMs / (30 * DAY_MS)), 'month')\n return rtf.format(Math.round(diffMs / (365 * DAY_MS)), 'year')\n }\n\n return {\n locale,\n int: (n: number): string => minus(intFmt.format(n)),\n /** Her zaman `dp` hane (noktalar hizalanır). */\n decimal: (n: number, dp = 2): string => minus(decimalFmt(dp).format(n)),\n /** 68 → \"68%\" (tr: \"%68\"). */\n percent: (n: number, dp = 0): string => minus(percentFmt(dp).format(n / 100)),\n /** Çip özetleri: 250000 → \"250K\" (tr: \"250 B\"). */\n compact: (n: number): string => minus(nf({ notation: 'compact', maximumFractionDigits: 0 }).format(n)),\n /** \"Oct 24\"; başka yılsa \"Mar 3, 2025\". */\n date: (value: IsoDate | Date, today: Date = new Date()): string => {\n const d = toDate(value)\n const sameYear = d.getFullYear() === today.getFullYear()\n return df(\n sameYear ? { month: 'short', day: 'numeric' } : { month: 'short', day: 'numeric', year: 'numeric' },\n ).format(d)\n },\n /** \"Oct 17, 09:42\" (saat biçimi yerel ayardan). */\n dateTime: (value: IsoDate | Date, today: Date = new Date()): string => {\n const d = toDate(value)\n const sameYear = d.getFullYear() === today.getFullYear()\n return df({\n month: 'short',\n day: 'numeric',\n ...(sameYear ? {} : { year: 'numeric' }),\n hour: '2-digit',\n minute: '2-digit',\n }).format(d)\n },\n /** Tam zaman (tooltip): \"Oct 17, 2026, 09:42:10 GMT+3\". */\n dateTimeFull: (value: IsoDate | Date): string =>\n df({ dateStyle: 'medium', timeStyle: 'long' }).format(toDate(value)),\n relative,\n /** Gecikme gün sayısı; gelecekte veya bugünse 0. */\n daysLate: (value: IsoDate | Date, today: Date = new Date()): number =>\n Math.max(0, Math.floor((startOfDay(today) - startOfDay(toDate(value))) / DAY_MS)),\n list: (items: string[]): string =>\n cached('l', locale, undefined, () => new Intl.ListFormat(locale, { type: 'unit' })).format(items),\n collator: (): Intl.Collator =>\n cached('c', locale, undefined, () => new Intl.Collator(locale, { numeric: true, sensitivity: 'base' })),\n plural: (): Intl.PluralRules => cached('p', locale, undefined, () => new Intl.PluralRules(locale)),\n }\n}\n\nconst formats = new Map<string, Format>()\n/** Locale başına tek örnek. */\nexport function getFormat(locale: string): Format {\n let f = formats.get(locale)\n if (!f) {\n f = createFormat(locale)\n formats.set(locale, f)\n }\n return f\n}\n","// Tipin varsayılan metni (03): `formatted` olarak özel hücreye verilir, tooltip ve dışa aktarma da bunu kullanır.\nimport type { ColumnDef, OptionDef } from '../../types/columns'\nimport { toDate, type Format } from '../format'\nimport type { I18n } from '../i18n'\nimport type { RemoteLabels } from './remote-labels'\n\nexport interface FormatEnv {\n fmt: Format\n i18n: I18n\n today: Date\n labels: RemoteLabels\n}\n\n/** null, undefined, '' ve boş dizi → boş (03 · Ortak kurallar). Sahte 0 yok: 0 bir değerdir. */\nexport const isEmptyValue = (v: unknown): boolean =>\n v === null || v === undefined || v === '' || (Array.isArray(v) && v.length === 0)\n\nexport const optionLabel = (options: OptionDef[] | undefined, value: unknown): string =>\n options?.find((o) => o.value === value)?.label ?? String(value)\n\n/** URL'den yalnızca host (03: protokol gizli). Geçersizse olduğu gibi. */\nexport function urlHost(value: string): string {\n try {\n return new URL(value).host\n } catch {\n return value\n }\n}\n\nexport function currencyCode<Row extends object>(def: Extract<ColumnDef<Row>, { type: 'currency' }>, row: Row): string {\n return typeof def.currency === 'function' ? def.currency(row) : def.currency\n}\n\n/** Sayı sütununun gösterdiği ondalık; filtre girişi de bu kadar kabul eder (0 ise tam sayı). */\nexport function decimalPlaces(def: ColumnDef): number {\n if (def.type === 'percentage') return def.decimalPlaces ?? 0\n if (def.type === 'float' || def.type === 'currency') return def.decimalPlaces ?? 2\n return 0\n}\n\nexport function formatCell<Row extends object>(def: ColumnDef<Row>, row: Row, value: unknown, env: FormatEnv): string {\n if (isEmptyValue(value)) return def.emptyText ?? '—'\n const { fmt, i18n } = env\n switch (def.type) {\n case 'int':\n return fmt.int(Number(value))\n case 'float':\n return fmt.decimal(Number(value), decimalPlaces(def))\n case 'percentage':\n return fmt.percent(Number(value), decimalPlaces(def))\n case 'star':\n return i18n.t('cell.rating', { value: Number(value), max: def.max ?? 5 })\n case 'currency':\n return `${fmt.decimal(Number(value), decimalPlaces(def))} ${currencyCode(def, row)}`\n case 'url':\n return urlHost(String(value))\n case 'boolean':\n return i18n.t(value ? 'common.yes' : 'common.no')\n case 'select':\n return optionLabel(def.options, value)\n case 'multiselect':\n return fmt.list((value as unknown[]).map((v) => optionLabel(def.options, v)))\n case 'ajax':\n return env.labels.label(def.id as string, def.remote, value as string | number)\n case 'user': {\n const ids = (Array.isArray(value) ? value : [value]) as Array<string | number>\n return fmt.list(\n ids.map(\n (id) => def.options?.find((o) => o.value === id)?.label ?? env.labels.label(def.id as string, def.remote, id),\n ),\n )\n }\n case 'date':\n // Geçersiz tarih metni (sheet'te yazılan \"+\", \"abc\") biçimlendirilmez, olduğu gibi gösterilir; hata balonu söyler.\n if (Number.isNaN(toDate(value as string | Date).getTime())) return String(value)\n return fmt.date(value as string | Date, env.today)\n case 'datetime':\n if (Number.isNaN(toDate(value as string | Date).getTime())) return String(value)\n return def.relative\n ? fmt.relative(value as string | Date, env.today)\n : fmt.dateTime(value as string | Date, env.today)\n case 'object':\n return def.summary\n ? def.summary(value, row)\n : i18n.t('cell.fields', { count: typeof value === 'object' && value ? Object.keys(value).length : 0 })\n case 'array':\n return fmt.list((value as unknown[]).map((v) => formatArrayItem(def.itemType, v, fmt)))\n default:\n return String(value)\n }\n}\n\nexport function formatArrayItem(\n itemType: 'string' | 'int' | 'float' | 'id' | undefined,\n v: unknown,\n fmt: Format,\n): string {\n if (itemType === 'int') return fmt.int(Number(v))\n if (itemType === 'float') return fmt.decimal(Number(v))\n return String(v)\n}\n","// Sütun tipi ikonları (column picker ve çip; handoff 03 §3.2): Phosphor regular, 14 px.\nimport {\n BracketsCurlyIcon,\n CalendarBlankIcon,\n CheckSquareIcon,\n ClockIcon,\n CreditCardIcon,\n EnvelopeIcon,\n HashIcon,\n LinkIcon,\n LinkSimpleIcon,\n ListBulletsIcon,\n ListChecksIcon,\n PaletteIcon,\n PercentIcon,\n PhoneIcon,\n RadioButtonIcon,\n StarIcon,\n TextAlignLeftIcon,\n TextTIcon,\n UserIcon,\n} from '@phosphor-icons/react'\nimport type { ColumnType, IconComponent } from '../../types/columns'\n\nexport const TYPE_ICONS: Record<ColumnType, IconComponent> = {\n int: HashIcon,\n float: HashIcon,\n percentage: PercentIcon,\n star: StarIcon,\n currency: CreditCardIcon,\n string: TextTIcon,\n text: TextAlignLeftIcon,\n uppercase: TextTIcon,\n lowercase: TextTIcon,\n phone: PhoneIcon,\n color: PaletteIcon,\n email: EnvelopeIcon,\n url: LinkIcon,\n id: HashIcon,\n boolean: CheckSquareIcon,\n select: RadioButtonIcon,\n multiselect: ListChecksIcon,\n ajax: LinkSimpleIcon,\n user: UserIcon,\n date: CalendarBlankIcon,\n datetime: ClockIcon,\n object: BracketsCurlyIcon,\n array: ListBulletsIcon,\n}\n","// 23 tipin hücre içeriği (03, brief §5.1, T8). Kabuk (hizalama, kesme, yoğunluk, zemin) grid/row.tsx'te; burada yalnızca içerik.\nimport { ArrowUpRightIcon, ArrowsOutSimpleIcon, CheckIcon, MinusIcon, StarIcon, XIcon } from '@phosphor-icons/react'\nimport type { CSSProperties, ReactNode } from 'react'\nimport type { ColumnDef, IconComponent, OptionDef, UserOption } from '../../types/columns'\nimport type { Density, Tone } from '../../types/core'\nimport {\n currencyCode,\n decimalPlaces,\n formatArrayItem,\n formatCell,\n isEmptyValue,\n optionLabel,\n urlHost,\n type FormatEnv,\n} from './format'\n\nexport interface RenderEnv extends FormatEnv {\n density: Density\n /** `pointer: coarse`: telefon numarası tel: linki olur. */\n coarse: boolean\n}\n\ntype ToneRef = Tone | { light: string; dark: string } | undefined\n\nconst toneClass = (tone: ToneRef): string => (typeof tone === 'object' ? 'dt-tone-custom' : `dt-tone-${tone ?? 'gray'}`)\nconst toneStyle = (tone: ToneRef) =>\n typeof tone === 'object'\n ? ({ '--dt-tone-light': tone.light, '--dt-tone-dark': tone.dark } as CSSProperties)\n : undefined\n\n/** Avatar rengi kişiye sabit: id hash'i → 6 tondan biri (02). */\nconst AVATAR_TONES: Tone[] = ['blue', 'green', 'amber', 'violet', 'pink', 'teal']\nexport function avatarTone(id: string | number): Tone {\n let hash = 0\n for (const ch of String(id)) hash = (hash * 31 + ch.charCodeAt(0)) >>> 0\n return AVATAR_TONES[hash % AVATAR_TONES.length]!\n}\nexport const initialsOf = (label: string): string =>\n label\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0]!.toLocaleUpperCase())\n .join('')\n\nexport function Badge({ tone, label, icon: Icon }: { tone: ToneRef; label: string; icon?: IconComponent }) {\n return (\n <span className={`dt-badge ${toneClass(tone)}`} style={toneStyle(tone)}>\n {Icon ? (\n <Icon className=\"dt-badge-icon\" size={11} weight=\"bold\" aria-hidden=\"true\" />\n ) : (\n <span className=\"dt-badge-dot\" aria-hidden=\"true\" />\n )}\n <span className=\"dt-badge-label\">{label}</span>\n </span>\n )\n}\n\nconst More = ({ count, tip, pill }: { count: number; tip: string; pill?: boolean }) => (\n <span className={pill ? 'dt-more dt-more-pill' : 'dt-more'} data-dt-tip={tip}>\n +{count}\n </span>\n)\nconst Mono = ({ children }: { children: string }) => <span className=\"dt-mono\">{children}</span>\n\nexport function Avatar({ user }: { user: Partial<UserOption> & { value: string | number; label: string } }) {\n return (\n <span\n className={`dt-avatar dt-tone-${avatarTone(user.value)}`}\n style={user.avatarUrl ? { backgroundImage: `url(\"${user.avatarUrl}\")` } : undefined}\n aria-hidden=\"true\"\n >\n {user.avatarUrl ? '' : (user.initials ?? initialsOf(user.label))}\n </span>\n )\n}\n\nfunction Stars({ value, max, label }: { value: number; max: number; label: string }) {\n return (\n <span className=\"dt-stars\" role=\"img\" aria-label={label} data-dt-tip={label}>\n {Array.from({ length: max }, (_, i) => (\n <StarIcon\n key={i}\n size={14}\n weight={i < value ? 'fill' : 'regular'}\n className={i < value ? 'is-on' : undefined}\n />\n ))}\n </span>\n )\n}\n\nfunction Bar({ pct, label }: { pct: number; label: string }) {\n return (\n <span className=\"dt-bar\">\n <span className=\"dt-bar-track\" aria-hidden=\"true\">\n <span className=\"dt-bar-fill\" style={{ width: `${Math.max(0, Math.min(100, pct))}%` }} />\n </span>\n <span className=\"dt-bar-label\">{label}</span>\n </span>\n )\n}\n\nconst Link = ({ href, external, children }: { href: string; external?: boolean; children: ReactNode }) => (\n <a className=\"dt-link\" href={href} {...(external && { target: '_blank', rel: 'noopener' })}>\n {children}\n </a>\n)\n\n/** `color` + `display: 'fill'`: hücre boyanır, yazı rengi kontrasta göre (03). */\nexport function cellFillStyle<Row extends object>(def: ColumnDef<Row>, value: unknown): CSSProperties | undefined {\n if (def.type !== 'color' || def.display !== 'fill' || typeof value !== 'string') return undefined\n const m = /^#?([0-9a-f]{6})$/i.exec(value)\n if (!m) return { background: value }\n const n = parseInt(m[1]!, 16)\n const lum = (0.2126 * ((n >> 16) & 255) + 0.7152 * ((n >> 8) & 255) + 0.0722 * (n & 255)) / 255\n return { background: value, color: lum > 0.55 ? 'var(--dt-fill-text-dark)' : 'var(--dt-fill-text-light)' }\n}\n\nfunction resolveUsers<Row extends object>(\n def: Extract<ColumnDef<Row>, { type: 'user' }>,\n ids: Array<string | number>,\n env: RenderEnv,\n): UserOption[] {\n return ids.map((id) => {\n const o =\n def.options?.find((u) => u.value === id) ??\n (env.labels.option(def.id as string, def.remote, id) as UserOption | undefined)\n return o ?? { value: id, label: String(id) }\n })\n}\n\nconst optionBadge = (options: OptionDef[], v: unknown) => {\n const opt = options.find((o) => o.value === v)\n return opt ? (\n <Badge key={String(v)} tone={opt.tone} label={opt.label} />\n ) : (\n <Badge key={String(v)} tone=\"gray\" label={String(v)} />\n )\n}\n\nexport function renderCellContent<Row extends object>(\n def: ColumnDef<Row>,\n row: Row,\n value: unknown,\n env: RenderEnv,\n): ReactNode {\n const formatted = formatCell(def, row, value, env)\n if (def.cell) {\n // Tipli bağlam: `value` tipe göre daralır; burada tek yerde `unknown`dan geçilir.\n return (def.cell as (ctx: unknown) => ReactNode)({\n row,\n value,\n formatted,\n column: { id: def.id, type: def.type },\n density: env.density,\n })\n }\n if (isEmptyValue(value)) {\n if (def.type === 'user') {\n return (\n <span className=\"dt-user is-empty\">\n <span className=\"dt-avatar is-empty\" aria-hidden=\"true\" />\n {env.i18n.t('common.unassigned')}\n </span>\n )\n }\n return <span className=\"dt-empty\">{formatted}</span>\n }\n const { fmt, i18n } = env\n switch (def.type) {\n case 'int':\n case 'float':\n case 'string':\n case 'uppercase':\n case 'lowercase':\n case 'email':\n return formatted\n case 'percentage':\n return def.display === 'bar' ? <Bar pct={Number(value)} label={formatted} /> : formatted\n case 'star':\n return <Stars value={Number(value)} max={def.max ?? 5} label={formatted} />\n case 'currency':\n return (\n <>\n {fmt.decimal(Number(value), decimalPlaces(def))}\n <span className=\"dt-ccy\">{currencyCode(def, row)}</span>\n </>\n )\n case 'phone':\n return env.coarse ? <Link href={`tel:${formatted}`}>{formatted}</Link> : formatted\n case 'text':\n return (\n <span className=\"dt-text\">\n <span className=\"dt-text-first\">{formatted.split('\\n')[0]}</span>\n <button\n type=\"button\"\n className=\"dt-text-expand\"\n aria-label={i18n.t('cell.expandText')}\n data-dt-tip={formatted}\n >\n <ArrowsOutSimpleIcon size={14} aria-hidden=\"true\" />\n </button>\n </span>\n )\n case 'color':\n return def.display === 'fill' ? (\n <Mono>{formatted}</Mono>\n ) : (\n <>\n <span className=\"dt-swatch\" style={{ background: formatted }} aria-hidden=\"true\" />\n <Mono>{formatted}</Mono>\n </>\n )\n case 'url':\n return (\n <Link href={String(value)} external>\n {urlHost(String(value))}\n <ArrowUpRightIcon size={12} className=\"dt-link-icon\" aria-hidden=\"true\" />\n </Link>\n )\n case 'id': {\n const href = def.href?.(row)\n return href ? (\n <Link href={href}>\n <Mono>{formatted}</Mono>\n </Link>\n ) : (\n <Mono>{formatted}</Mono>\n )\n }\n case 'boolean': {\n if (value) return <Badge tone=\"green\" label={formatted} icon={CheckIcon} />\n const destructive = def.falseTone === 'destructive'\n return <Badge tone={destructive ? 'red' : 'gray'} label={formatted} icon={destructive ? XIcon : MinusIcon} />\n }\n case 'select':\n return optionBadge(def.options, value)\n case 'multiselect': {\n const vals = value as Array<string | number>\n return (\n <span className=\"dt-badges\">\n {vals.slice(0, 2).map((v) => optionBadge(def.options, v))}\n {vals.length > 2 && (\n <More count={vals.length - 2} tip={fmt.list(vals.slice(2).map((v) => optionLabel(def.options, v)))} />\n )}\n </span>\n )\n }\n case 'ajax': {\n const href = def.href?.(row)\n return href ? <Link href={href}>{formatted}</Link> : formatted\n }\n case 'user': {\n const ids = (Array.isArray(value) ? value : [value]) as Array<string | number>\n const users = resolveUsers(def, ids, env)\n if (users.length === 1)\n return (\n <span className=\"dt-user\">\n <Avatar user={users[0]!} />\n <span className=\"dt-user-name\">{users[0]!.label}</span>\n </span>\n )\n return (\n <span className=\"dt-user dt-avatars\">\n {users.slice(0, 3).map((u) => (\n <Avatar key={String(u.value)} user={u} />\n ))}\n {users.length > 3 && (\n <More count={users.length - 3} tip={fmt.list(users.slice(3).map((u) => u.label))} pill />\n )}\n </span>\n )\n }\n case 'date':\n case 'datetime': {\n const overdue = typeof def.overdue === 'function' ? def.overdue(row) : def.overdue\n const late = overdue ? fmt.daysLate(value as string | Date, env.today) : 0\n const tip = def.type === 'datetime' ? fmt.dateTimeFull(value as string | Date) : undefined\n if (late > 0)\n return (\n <span className=\"dt-late\" data-dt-tip={tip}>\n {`${formatted} · ${i18n.t('cell.late', { count: late })}`}\n </span>\n )\n return tip ? <span data-dt-tip={tip}>{formatted}</span> : formatted\n }\n case 'object':\n return (\n <>\n <span className=\"dt-struct\" aria-hidden=\"true\">\n {'{ }'}\n </span>\n {formatted}\n </>\n )\n case 'array': {\n const items = value as unknown[]\n return (\n <>\n <span className=\"dt-struct\" aria-hidden=\"true\">\n [ ]\n </span>\n {items\n .slice(0, 3)\n .map((v) => formatArrayItem(def.itemType, v, fmt))\n .join(', ')}\n {items.length > 3 && (\n <>\n {' '}\n <More count={items.length - 3} tip={formatted} />\n </>\n )}\n </>\n )\n }\n }\n}\n","// Yerel ayara göre sayı okuma (03 · Yapıştırma): \"12.400\", \"12,400\", \"1.284,50\", \"68%\" — iki ayırıcı varsa sondaki ondalıktır.\nconst seps = new Map<string, { group: string; decimal: string }>()\nfunction sepsOf(locale: string) {\n let s = seps.get(locale)\n if (!s) {\n const parts = new Intl.NumberFormat(locale).formatToParts(12345.6)\n s = {\n group: parts.find((p) => p.type === 'group')?.value ?? ',',\n decimal: parts.find((p) => p.type === 'decimal')?.value ?? '.',\n }\n seps.set(locale, s)\n }\n return s\n}\n\nexport function parseNumber(locale: string, text: string): number | null {\n let s = text.replace(/[\\s%\\u00a0A-Za-z₺€$£]/g, '').replace('−', '-')\n if (s === '' || s === '-') return null\n const comma = s.lastIndexOf(',')\n const dot = s.lastIndexOf('.')\n const decimal = comma >= 0 && dot >= 0 ? (comma > dot ? ',' : '.') : sepsOf(locale).decimal\n s = s.split(decimal === ',' ? '.' : ',').join('')\n if (decimal === ',') s = s.replace(',', '.')\n const n = Number(s)\n return Number.isFinite(n) ? n : null\n}\n\n/**\n * Binlik grupları olan sayı (yapıştırma): \"1.234.567\", \"1.284,50\", \"12,400.5\". Grup ayırıcısı tek tiptir, ondalık\n * (varsa) ötekidir. \"0,3.\" gibi yazarken eklenen ikinci ayırıcı buna uymaz.\n */\nconst GROUPED = /^\\d{1,3}([.,])\\d{3}(?:\\1\\d{3})*(?:(?!\\1)[.,]\\d+)?$/\n\n/**\n * Sayı alanına yazılanı düzeltir; alanda ne görünüyorsa o uygulanır. Ondalıkta nokta da virgül de ondalıktır ve\n * yerel ayırıcıya çevrilir (\"10.3\" → tr \"10,3\"), ikinci ayırıcı yazılmaz. Tam sayıda kesir atılır (\"18.5\" → \"18\").\n * Gruplu sayı okunup ayırıcısız yazılır.\n */\nexport function cleanNumber(locale: string, text: string, integer: boolean): string {\n const t = text.replace(/−/g, '-').replace(/[^\\d.,-]/g, '')\n const sign = t.startsWith('-') ? '-' : ''\n const body = t.replace(/-/g, '')\n if (GROUPED.test(body)) {\n const n = parseNumber(locale, sign + body)\n if (n === null) return sign\n return plainNumber(locale, integer ? Math.trunc(n) : n)\n }\n // Gruplu olmayan ayırıcı ondalıktır; tam sayıda kesir atılır.\n const [whole, ...fraction] = body.split(/[.,]/)\n if (integer) return sign + whole\n return sign + whole + (fraction.length > 0 ? sepsOf(locale).decimal + fraction.join('') : '')\n}\n\n/** Sayı alanında gösterim: gruplamasız, yerel ondalık ayırıcıyla (\"1284,5\"); `cleanNumber` aynısını üretir. */\nexport const plainNumber = (locale: string, n: number) =>\n new Intl.NumberFormat(locale, { useGrouping: false, maximumFractionDigits: 6 }).format(n).replace('−', '-')\n","// Yazmayı bırakınca uygulama (04 §3, §5: 250 ms): her çağrı öncekini iptal eder; bileşen sökülünce bekleyen iş düşer.\nimport { useEffect, useRef } from 'react'\n\nexport function useDelay(ms: number) {\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n useEffect(() => () => clearTimeout(timer.current), [])\n return {\n run: (fn: () => void) => {\n clearTimeout(timer.current)\n timer.current = setTimeout(fn, ms)\n },\n cancel: () => clearTimeout(timer.current),\n }\n}\n","// Sayı editörü (04 §3, T2-05): tek değer ya da Min / Max (\"and\"); 250 ms sonra ve Enter'da uygular; `currency` sütununda\n// para birimi segmented (değer düz sayı, para birimi ayrı alan); percentage `%` son eki; yerel ayara göre okunur.\nimport { Toggle } from '@base-ui/react/toggle'\nimport { ToggleGroup } from '@base-ui/react/toggle-group'\nimport { useState, type KeyboardEvent } from 'react'\nimport type { ColumnDef } from '../../types/columns'\nimport { decimalPlaces } from '../cells/format'\nimport type { FilterOp } from '../../types/query'\nimport { cleanNumber, parseNumber, plainNumber } from '../format/parse'\nimport { useDelay } from '../interaction/use-delay'\nimport { useDataTableContext } from '../provider'\n\ntype Value = number | [number | null, number | null] | undefined\n\nexport function NumberEditor({\n column,\n op,\n value,\n currency,\n currencies,\n onChange,\n onCurrency,\n onDone,\n}: {\n column: ColumnDef\n op: FilterOp\n value: unknown\n currency?: string\n /** `currency` sütunu: seçilebilir kodlar (sabit kod veya yüklü satırlardan). */\n currencies: string[]\n onChange: (value: Value) => void\n onCurrency: (code: string) => void\n onDone: () => void\n}) {\n const { i18n, locale } = useDataTableContext()\n const range = op === 'between'\n const show = (n: unknown) => (typeof n === 'number' && Number.isFinite(n) ? plainNumber(locale, n) : '')\n const fromValue = (v: unknown): [string, string] =>\n range ? [show(Array.isArray(v) ? v[0] : undefined), show(Array.isArray(v) ? v[1] : undefined)] : [show(v), '']\n const [[a, b], setDraft] = useState(() => fromValue(value))\n // Dışarıdan gelen değer yalnızca sayı olarak farklıysa taslağa yazılır: \"1.000,\" yazarken biçim bozulmaz.\n const [seen, setSeen] = useState({ value, op })\n if (seen.value !== value || seen.op !== op) {\n setSeen({ value, op })\n const [x, y] = fromValue(value)\n const same = (p: string, q: string) => parseNumber(locale, p) === parseNumber(locale, q)\n if (!same(a, x) || !same(b, y)) setDraft([same(a, x) ? a : x, same(b, y) ? b : y])\n }\n const delay = useDelay(250)\n const commit = (min: string, max: string) => {\n const lo = parseNumber(locale, min)\n if (!range) return onChange(lo ?? undefined)\n const hi = parseNumber(locale, max)\n onChange(lo === null && hi === null ? undefined : [lo, hi])\n }\n const set = (next: [string, string]) => {\n setDraft(next)\n delay.run(() => commit(...next))\n }\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Enter') return\n e.preventDefault()\n delay.cancel()\n commit(a, b)\n onDone()\n }\n const clean = (text: string) => cleanNumber(locale, text, decimalPlaces(column) === 0)\n const suffix = column.type === 'percentage' ? '%' : ''\n const field = (text: string, onText: (t: string) => void, first = false) => (\n <span className={suffix ? 'dt-input has-suffix' : 'dt-input'}>\n <input\n autoFocus={first}\n value={text}\n type=\"text\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n onChange={(e) => onText(clean(e.target.value))}\n onKeyDown={onKeyDown}\n />\n {suffix && <span className=\"dt-input-end dt-input-suffix\">{suffix}</span>}\n </span>\n )\n\n return (\n <div className=\"dt-editor-number\">\n {currencies.length > 1 && (\n <ToggleGroup\n className=\"dt-seg dt-seg-xs\"\n value={currency ? [currency] : []}\n onValueChange={(v) => v[0] && onCurrency(String(v[0]))}\n >\n {currencies.map((c) => (\n <Toggle key={c} className=\"dt-seg-item\" value={c} data-state={c === currency ? 'on' : 'off'}>\n {c}\n </Toggle>\n ))}\n </ToggleGroup>\n )}\n <div className=\"dt-editor-fields\">\n <label className=\"dt-editor-field\">\n {range && <span className=\"dt-editor-label\">{i18n.t('number.min')}</span>}\n {field(a, (t) => set([t, b]), true)}\n </label>\n {range && (\n <>\n <span className=\"dt-editor-and\">{i18n.t('number.and')}</span>\n <label className=\"dt-editor-field\">\n <span className=\"dt-editor-label\">{i18n.t('number.max')}</span>\n {field(b, (t) => set([a, t]))}\n </label>\n </>\n )}\n </div>\n </div>\n )\n}\n","// Seçenek editörü (04 §3, T2-02/03): select · multiselect · color · ajax · user. Her işaretleme anında uygulanır;\n// hover'da \"Only\"; `user`'da Me ve Unassigned en üstte; uzak kaynaklar yazdıkça arar ve 20'şer yükler (03).\nimport { MagnifyingGlassIcon } from '@phosphor-icons/react'\nimport { useEffect, useRef, useState } from 'react'\nimport type { ColumnDef, OptionDef, RemoteOptions, UserOption } from '../../types/columns'\nimport type { FilterOp } from '../../types/query'\nimport { ME } from '../../types/query'\nimport { Avatar, Badge } from '../cells/render-cell'\nimport type { RemoteLabels } from '../cells/remote-labels'\nimport { readPath } from '../columns/read-path'\nimport { useDelay } from '../interaction/use-delay'\nimport { useDataTableContext } from '../provider'\n\ntype Value = string | number\n\nfunction staticOptions(def: ColumnDef, rows: object[]): OptionDef[] {\n if (def.type === 'select' || def.type === 'multiselect') return def.options\n if (def.type === 'user' && def.options) return [...def.options].sort((a, b) => a.label.localeCompare(b.label))\n if (def.type === 'color' && def.palette) return def.palette.map((value) => ({ value, label: value }))\n if (def.type !== 'color') return []\n // Paletsiz renk: yüklü satırlardaki değerler (uzaktan öneri yok, D3).\n const seen = new Set<Value>()\n for (const row of rows) {\n const raw = def.accessor ? def.accessor(row) : readPath(row, def.id as string)\n for (const v of Array.isArray(raw) ? raw : [raw])\n if (v !== null && v !== undefined && v !== '') seen.add(v as Value)\n }\n return [...seen].sort((a, b) => String(a).localeCompare(String(b))).map((value) => ({ value, label: String(value) }))\n}\n\nexport function OptionsEditor({\n column,\n op,\n value,\n rows,\n labels,\n onChange,\n onUnassigned,\n}: {\n column: ColumnDef\n op: FilterOp\n value: Value[]\n rows: object[]\n labels: RemoteLabels\n onChange: (values: Value[]) => void\n onUnassigned: () => void\n}) {\n const { i18n } = useDataTableContext()\n const def = column\n const remote: RemoteOptions | undefined =\n def.type === 'ajax' || def.type === 'user' ? (def as { remote?: RemoteOptions }).remote : undefined\n const isUser = def.type === 'user'\n const [q, setQ] = useState('')\n const all = staticOptions(def, rows)\n\n // Uzak kaynak: 250 ms sonra arar; sayfa sayfa ekler. Hata ya da iptalde liste olduğu gibi kalır (D18).\n const [found, setFound] = useState<{ items: OptionDef[]; hasMore: boolean; page: number }>({\n items: [],\n hasMore: false,\n page: 1,\n })\n const [loading, setLoading] = useState(!!remote)\n const ctl = useRef<AbortController | null>(null)\n /** `loading` çağıran tarafta açılır: ilk yükleme başlangıç durumunda zaten açık. */\n const load = (query: string, page: number) => {\n if (!remote) return\n ctl.current?.abort()\n const c = new AbortController()\n ctl.current = c\n remote\n .search(query, page, { signal: c.signal })\n .then((res) => {\n if (c.signal.aborted) return\n setFound((f) => ({ items: page > 1 ? [...f.items, ...res.items] : res.items, hasMore: res.hasMore, page }))\n labels.seed(def.id as string, res.items)\n })\n .catch(() => {})\n .finally(() => !c.signal.aborted && setLoading(false))\n }\n const delay = useDelay(250)\n useEffect(() => {\n load('', 1)\n return () => ctl.current?.abort()\n // Açılışta bir kez; sonraki aramalar yazdıkça.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const needle = q.trim().toLocaleLowerCase()\n const options = remote ? found.items : needle ? all.filter((o) => o.label.toLocaleLowerCase().includes(needle)) : all\n const showSearch = !!remote || all.length > 7\n const placeholder = def.filterNoun ? i18n.t('option.searchNoun', { noun: def.filterNoun }) : i18n.t('option.search')\n\n const selected = new Set(value.map(String))\n const isOn = (v: Value) => selected.has(String(v))\n const toggle = (v: Value) => onChange(isOn(v) ? value.filter((x) => String(x) !== String(v)) : [...value, v])\n const unassigned = op === 'is_empty'\n const body = (o: OptionDef) =>\n def.type === 'user' ? (\n <>\n <Avatar user={o as UserOption} /> {o.label}\n </>\n ) : def.type === 'select' || def.type === 'multiselect' ? (\n <Badge tone={o.tone ?? 'gray'} label={o.label} />\n ) : def.type === 'color' ? (\n <>\n <span className=\"dt-swatch\" style={{ background: String(o.value) }} aria-hidden=\"true\" />\n <span className=\"dt-mono\">{o.label}</span>\n </>\n ) : (\n o.label\n )\n\n return (\n <div className=\"dt-options\">\n {showSearch && (\n <label className=\"dt-input has-icon dt-options-search\">\n <span className=\"dt-input-icon\">\n <MagnifyingGlassIcon size={14} aria-hidden=\"true\" />\n </span>\n <input\n type=\"search\"\n value={q}\n placeholder={placeholder}\n aria-label={placeholder}\n onChange={(e) => {\n const text = e.target.value\n setQ(text)\n if (!remote) return\n setLoading(true)\n delay.run(() => load(text, 1))\n }}\n />\n </label>\n )}\n <div className=\"dt-options-list\" role=\"group\">\n {isUser && !q && (\n <>\n <label className={isOn(ME) ? 'dt-option is-on' : 'dt-option'}>\n <input type=\"checkbox\" className=\"dt-checkbox\" checked={isOn(ME)} onChange={() => toggle(ME)} />\n <span className=\"dt-option-body\">\n <span className=\"dt-avatar dt-tone-blue\" aria-hidden=\"true\">\n {i18n.t('common.me').slice(0, 2)}\n </span>\n {i18n.t('common.me')}\n </span>\n </label>\n <label className={unassigned ? 'dt-option is-unassigned is-on' : 'dt-option is-unassigned'}>\n <input type=\"checkbox\" className=\"dt-checkbox\" checked={unassigned} onChange={onUnassigned} />\n <span className=\"dt-option-body\">\n <span className=\"dt-avatar is-empty\" aria-hidden=\"true\" />\n {i18n.t('common.unassigned')}\n </span>\n </label>\n <div className=\"dt-pop-sep\" />\n </>\n )}\n {options.map((o) => (\n <label key={String(o.value)} className={isOn(o.value) ? 'dt-option is-on' : 'dt-option'}>\n <input type=\"checkbox\" className=\"dt-checkbox\" checked={isOn(o.value)} onChange={() => toggle(o.value)} />\n <span className=\"dt-option-body\">{body(o)}</span>\n <button\n type=\"button\"\n className=\"dt-btn dt-btn-xs dt-option-only\"\n tabIndex={-1}\n onClick={(e) => {\n // Label içindeki düğme: tık checkbox'ı da değiştirmesin.\n e.preventDefault()\n onChange([o.value])\n }}\n >\n {i18n.t('option.only')}\n </button>\n </label>\n ))}\n {options.length === 0 && !loading && (\n <div className=\"dt-options-empty\">{i18n.t(remote ? 'remote.noResults' : 'picker.noMatch')}</div>\n )}\n {loading && <div className=\"dt-options-empty\">{i18n.t('common.loading')}</div>}\n {remote && found.hasMore && !loading && (\n <button\n type=\"button\"\n className=\"dt-btn dt-btn-ghost dt-btn-sm dt-options-more\"\n onClick={() => {\n setLoading(true)\n load(q, found.page + 1)\n }}\n >\n {i18n.t('remote.loadMore')}\n </button>\n )}\n </div>\n </div>\n )\n}\n","// Puan editörü (03): 1–max yıldız; tıklanınca uygulanır ve popover kapanır.\nimport { StarIcon } from '@phosphor-icons/react'\nimport type { ColumnDef } from '../../types/columns'\n\nexport function StarEditor({\n column,\n value,\n onChange,\n onDone,\n}: {\n column: ColumnDef\n value: unknown\n onChange: (value: number) => void\n onDone: () => void\n}) {\n const max = (column as { max?: number }).max ?? 5\n const on = (n: number) => typeof value === 'number' && n <= value\n return (\n <div className=\"dt-editor-stars\" role=\"radiogroup\">\n {Array.from({ length: max }, (_, i) => i + 1).map((n) => (\n <button\n key={n}\n type=\"button\"\n className={on(n) ? 'dt-star-btn is-on' : 'dt-star-btn'}\n role=\"radio\"\n aria-checked={value === n}\n aria-label={String(n)}\n onClick={() => {\n onChange(n)\n onDone()\n }}\n >\n <StarIcon size={18} weight={on(n) ? 'fill' : 'regular'} aria-hidden=\"true\" />\n </button>\n ))}\n </div>\n )\n}\n","// Metin editörü (04 §3): 250 ms sonra ve Enter'da uygular; Enter popover'ı kapatır. `id` sütununda `in`/`not_in` için\n// yapıştırılan liste (satır sonu / virgül / noktalı virgül) değer dizisine ayrılır (03); uppercase/lowercase çevirir.\nimport { useState } from 'react'\nimport type { ColumnDef } from '../../types/columns'\nimport type { FilterOp } from '../../types/query'\nimport { useDelay } from '../interaction/use-delay'\n\ntype Value = string | Array<string | number>\nconst asText = (v: unknown) => (Array.isArray(v) ? v.join(', ') : typeof v === 'string' ? v : '')\n\nexport function TextEditor({\n column,\n op,\n value,\n onChange,\n onDone,\n}: {\n column: ColumnDef\n op: FilterOp\n value: unknown\n onChange: (value: Value) => void\n onDone: () => void\n}) {\n const normalize = (s: string) =>\n column.type === 'uppercase' ? s.toLocaleUpperCase() : column.type === 'lowercase' ? s.toLocaleLowerCase() : s\n const parse = (text: string): Value => {\n const s = normalize(text).trim()\n if (op !== 'in' && op !== 'not_in') return s\n return s\n .split(/[\\n,;]+/)\n .map((p) => p.trim())\n .filter(Boolean)\n }\n const [draft, setDraft] = useState(() => asText(value))\n // Dışarıdan gelen değer (Clear, operatör değişimi) taslağa yazılır; uygulanmış biçimi aynıysa taslak korunur, yazılan\n // sondaki boşluk silinmez.\n const [seen, setSeen] = useState(value)\n if (seen !== value) {\n setSeen(value)\n if (JSON.stringify(parse(draft)) !== JSON.stringify(value ?? '')) setDraft(asText(value))\n }\n const delay = useDelay(250)\n\n return (\n <label className=\"dt-input dt-editor-text\">\n <input\n autoFocus\n value={draft}\n type=\"text\"\n autoComplete=\"off\"\n onChange={(e) => {\n const text = normalize(e.target.value)\n setDraft(text)\n delay.run(() => onChange(parse(text)))\n }}\n onKeyDown={(e) => {\n if (e.key !== 'Enter') return\n e.preventDefault()\n delay.cancel()\n onChange(parse(draft))\n onDone()\n }}\n />\n </label>\n )\n}\n","// Çipin değer editörü (04 §3): tipe ve operatöre göre seçenek, metin, sayı, yıldız ya da tarih. Masaüstünde çip popover'ında,\n// telefonda Filters alt sayfasının değer seviyesinde (handoff 04 §6.2) aynı bileşen.\nimport { lazy, Suspense } from 'react'\nimport type { ColumnDef } from '../../types/columns'\nimport type { RemoteLabels } from '../cells/remote-labels'\nimport { NumberEditor } from '../editors/number-editor'\nimport { OptionsEditor } from '../editors/options-editor'\nimport { StarEditor } from '../editors/star-editor'\nimport { TextEditor } from '../editors/text-editor'\nimport { changeOperator, editorOf, type Chip } from './model'\n\n// Takvim (react-day-picker) yalnızca tarih editörü açılınca yüklenir; çekirdek pakete girmez (R10).\nconst DateEditor = lazy(() => import('../editors/date-editor'))\n\nexport function ValueEditor({\n chip,\n column,\n rows,\n labels,\n currencies,\n onChange,\n onDone,\n}: {\n chip: Chip\n column: ColumnDef\n rows: object[]\n labels: RemoteLabels\n currencies: string[]\n onChange: (chip: Chip) => void\n /** Enter / seçim bitti: popover kapanır, alt sayfada Filters'a dönülür. */\n onDone: () => void\n}) {\n const type = column.type\n const setValue = (value: unknown) =>\n onChange({ ...chip, value, currency: type === 'currency' ? (chip.currency ?? currencies[0]) : chip.currency })\n switch (editorOf(chip.op, type)) {\n case 'options':\n return (\n <OptionsEditor\n column={column}\n op={chip.op}\n value={Array.isArray(chip.value) ? (chip.value as Array<string | number>) : []}\n rows={rows}\n labels={labels}\n onChange={setValue}\n // Kişi listesinde Unassigned `is_empty` ile değişimli: boş değer `in` listesinde taşınamaz.\n onUnassigned={() => onChange(changeOperator(chip, chip.op === 'is_empty' ? 'in' : 'is_empty', type))}\n />\n )\n case 'text':\n return <TextEditor column={column} op={chip.op} value={chip.value} onChange={setValue} onDone={onDone} />\n case 'number':\n return (\n <NumberEditor\n column={column}\n op={chip.op}\n value={chip.value}\n currency={chip.currency}\n currencies={currencies}\n onChange={setValue}\n onCurrency={(currency) => onChange({ ...chip, currency })}\n onDone={onDone}\n />\n )\n case 'star':\n return <StarEditor column={column} value={chip.value} onChange={setValue} onDone={onDone} />\n case 'date':\n return (\n <Suspense fallback={null}>\n <DateEditor\n op={chip.op}\n value={chip.value}\n onChange={(value, op) => (op ? onChange({ ...chip, op, value }) : setValue(value))}\n onDone={onDone}\n />\n </Suspense>\n )\n default:\n return null\n }\n}\n","// Telefonda popover'ın yerine alt sayfa (05 §11, handoff 04 §6): Base UI Dialog — scrim, odak hapsi, Esc, kapanınca odak\n// tetikleyiciye. Tutamaç · başlık satırı (geri / başlık / metin düğmesi) · kayan gövde · alt düğme. Vue'daki `Layer`'ın sheet hâli;\n// masaüstü popover'ları kendi bileşenlerinde kalır.\nimport { Dialog } from '@base-ui/react/dialog'\nimport type { ComponentProps, ReactElement, ReactNode } from 'react'\n\ntype Popup = ComponentProps<typeof Dialog.Popup>\n\nexport function BottomSheet({\n open,\n onOpenChange,\n trigger,\n title,\n hideTitle,\n className,\n headStart,\n headEnd,\n foot,\n initialFocus,\n finalFocus,\n children,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n /** Tetikleyici öğe; yoksa sayfa dışarıdan açılır (Filters). */\n trigger?: ReactElement\n /** Erişilebilir ad; `hideTitle` ile yalnızca ekran okuyucuya. */\n title: string\n hideTitle?: boolean\n className?: string\n /** Başlığın solunda (geri düğmesi). */\n headStart?: ReactNode\n /** Başlığın sağında (Clear all / Clear). */\n headEnd?: ReactNode\n /** Alttaki birincil düğme alanı. */\n foot?: ReactNode\n initialFocus?: Popup['initialFocus']\n finalFocus?: Popup['finalFocus']\n children: ReactNode\n}) {\n return (\n <Dialog.Root open={open} onOpenChange={(o) => onOpenChange(o)}>\n {trigger && <Dialog.Trigger render={trigger} />}\n <Dialog.Portal>\n <Dialog.Backdrop className=\"dt-scrim\" />\n <Dialog.Popup\n className={className ? `dt-bsheet ${className}` : 'dt-bsheet'}\n initialFocus={initialFocus}\n finalFocus={finalFocus}\n >\n <span className=\"dt-bsheet-handle\" aria-hidden=\"true\" />\n {hideTitle ? (\n <Dialog.Title className=\"dt-sr-only\">{title}</Dialog.Title>\n ) : (\n <div className=\"dt-bsheet-head\">\n {headStart}\n <Dialog.Title className=\"dt-bsheet-title\">{title}</Dialog.Title>\n {headEnd}\n </div>\n )}\n <div className=\"dt-bsheet-body\">{children}</div>\n {foot && <div className=\"dt-bsheet-foot\">{foot}</div>}\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n )\n}\n"],"mappings":"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"}