import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,c as r,l as i,m as a}from"./blocks-D3IlvJMm.js";import{t as o}from"./mdx-react-shim-DzMf9EAg.js";var s,c=e((()=>{s="# Реестр формул таблицы\n\n## Назначение\n\nМодуль предоставляет инфраструктуру клиентских формул для calculated/clientOnly колонок:\n\n- создаёт из definitions нормализованный реестр;\n- хранит активный реестр host-приложения;\n- компилирует и безопасно выполняет формулы;\n- проверяет зависимости формулы.\n\nFoundation-пакет не владеет прикладными definitions. Их объявляет host-приложение рядом со своим composition root.\n\n## Контракт формулы\n\nФормула получает контекст с позиционным доступом к зависимостям:\n\n```ts\ntype TableFormulaFn = (context: TableFormulaContext) => number;\n```\n\n- `context.key(index)` возвращает id зависимости;\n- `context.value(index)` читает исходное значение;\n- `context.num(index)` приводит значение к конечному числу либо возвращает `0`.\n\n## Подключение в host-приложении\n\n```ts\nconst registry = createTableFormulaRegistry(definitions);\nconfigureTableFormulaRegistry(registry);\n```\n\nКонфигурация выполняется до первого `get`, `validate`, `compile` или `execute`. Пустой реестр используется по умолчанию, поэтому неизвестный `formulaId` завершается контролируемым результатом `formula_not_found`.\n\n## Как добавить новую формулу\n\n1. Создать definition в каталоге реестров host-приложения.\n2. Описать стабильные `id`, `name`, `description`, `fn` и при необходимости `args`/`keywords`.\n3. Включить definition в единый app-level список.\n4. Добавить тест поведения формулы и проверку уникальности каталога.\n\nFactory отклоняет пустые и дублирующиеся `id`, поэтому ошибка каталога обнаруживается при инициализации приложения.\n"}));function l(e){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i,{title:`Документация/shared/lib/formulas`}),`
`,(0,d.jsx)(r,{children:s})]})}function u(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}var d;e((()=>{d=t(),o(),a(),c()}))();export{u as default};