{"_id":"@affino/datagrid-format","name":"@affino/datagrid-format","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"@affino/datagrid-format","version":"0.1.1","author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"type":"module","description":"Headless cell formatting engine for Affino DataGrid","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"main":"dist/index.js","types":"dist/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/affinio/affinio.git","directory":"packages/datagrid-format"},"homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-format#readme","license":"MIT","keywords":["datagrid","format","formatter","headless","intl"],"devDependencies":{"vitest":"^4.0.18"},"bugs":{"url":"https://github.com/affinio/affinio/issues"},"module":"dist/index.js","scripts":{"build":"tsc -p tsconfig.json","type-check":"tsc -p tsconfig.json --noEmit","test":"vitest run src/__tests__/runtime.spec.ts --config ./vitest.config.ts"},"_id":"@affino/datagrid-format@0.1.1","_integrity":"sha512-mAmBJmE1rAYTbZ70gR5aM/tDPs8dj273bUXwPLk8swtnTzqzKGyuUQEgFAk43nFbKG5DdS4sOuaBcj7fXK5K4g==","_resolved":"/tmp/d833e215c9cd752c197fefc3649680f7/affino-datagrid-format-0.1.1.tgz","_from":"file:affino-datagrid-format-0.1.1.tgz","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-mAmBJmE1rAYTbZ70gR5aM/tDPs8dj273bUXwPLk8swtnTzqzKGyuUQEgFAk43nFbKG5DdS4sOuaBcj7fXK5K4g==","shasum":"5bbedc2de38f77d91120672b6be42edd6708bb4e","tarball":"https://registry.npmjs.org/@affino/datagrid-format/-/datagrid-format-0.1.1.tgz","fileCount":9,"unpackedSize":13253,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFgvYYFq2yiboGyxFyk07b8LInkGehwpfVSFBkkdlBwXAiEAtH1oXlXImZRfscyGC6/8a5QJ5GALPq5+qSMxrWOt9as="}]},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"directories":{},"maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/datagrid-format_0.1.1_1773840697174_0.3150832492824043"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T13:31:37.049Z","0.1.1":"2026-03-18T13:31:37.344Z","modified":"2026-03-18T13:31:37.635Z"},"maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"description":"Headless cell formatting engine for Affino DataGrid","homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-format#readme","keywords":["datagrid","format","formatter","headless","intl"],"repository":{"type":"git","url":"git+https://github.com/affinio/affinio.git","directory":"packages/datagrid-format"},"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"bugs":{"url":"https://github.com/affinio/affinio/issues"},"license":"MIT","readme":"# DataGrid Format Engine\n\n`@affino/datagrid-format` is the headless display-formatting engine for Affino DataGrid.\n\nIt owns:\n\n- number and currency formatting\n- date and datetime formatting\n- `Intl` formatter caching\n- display-only conversion from raw cell values to readable strings\n\nIt does not own:\n\n- row data\n- editing state\n- clipboard serialization\n- framework rendering\n\n## Purpose\n\nThe package lets adapters format only the cells they actually render, while keeping\nraw values untouched for editing and mutations.\n\n```ts\nimport { formatDataGridCellValue } from \"@affino/datagrid-format\"\n\nconst display = formatDataGridCellValue(1234.5, {\n  presentation: {\n    format: {\n      number: {\n        locale: \"en-GB\",\n        style: \"currency\",\n        currency: \"GBP\",\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2,\n      },\n    },\n  },\n})\n```\n\n## Column Contract\n\nThe engine is designed to back DataGrid column presentation:\n\n- `presentation.format.number`\n- `presentation.format.dateTime`\n- fallback date presets via `dataType: \"date\" | \"datetime\"`\n\nThese affect display only.\nRaw values should continue to flow through editing, clipboard, and patch pipelines unchanged.\n\n```ts\nimport { formatDataGridCellValue } from \"@affino/datagrid-format\"\n\nconst dateLabel = formatDataGridCellValue(\"2026-03-01T00:00:00.000Z\", {\n  dataType: \"date\",\n})\n```\n\n## Public API\n\n- `formatDataGridCellValue(value, column)` formats numbers, currency, percent, date, and datetime display values.\n- `resolveDefaultDataGridDateTimeFormat(dataType)` returns the built-in readable preset for `date` and `datetime` columns.\n\n## Architecture\n\n```text\nraw value\n  -> column presentation\n  -> @affino/datagrid-format\n  -> display string\n  -> adapter renderer\n```\n\n## Notes\n\n- `Intl.NumberFormat` and `Intl.DateTimeFormat` instances are cached by locale and options.\n- The engine is intentionally headless so Vue, Laravel, and other adapters can share the same formatting behavior.\n","readmeFilename":"README.md","_rev":"1-a9c6d6bfdb1d75889f36190079688138"}