@elytracms/studio 0.0.8 → 0.0.10
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.
- package/convex/guard.ts +16 -0
- package/convex/members.ts +14 -3
- package/dist/components/assets/asset-library.js.map +1 -1
- package/dist/components/assets/asset-metadata.js.map +1 -1
- package/dist/components/assets/asset-search.js.map +1 -1
- package/dist/components/assets/asset-selection.js.map +1 -1
- package/dist/components/assets/assets-store.js.map +1 -1
- package/dist/components/auth-context.js.map +1 -1
- package/dist/components/backend-gate.js.map +1 -1
- package/dist/components/breadcrumb-context.js.map +1 -1
- package/dist/components/builder/blocks-model.js.map +1 -1
- package/dist/components/builder/blocks-panel.js.map +1 -1
- package/dist/components/builder/builder-store.js.map +1 -1
- package/dist/components/builder/canvas-stylesheet.js.map +1 -1
- package/dist/components/builder/canvas.js.map +1 -1
- package/dist/components/builder/clipboard-actions.js.map +1 -1
- package/dist/components/builder/composition-field-editor.js.map +1 -1
- package/dist/components/builder/composition-scope.js.map +1 -1
- package/dist/components/builder/drag-session.js.map +1 -1
- package/dist/components/builder/fixture-thumbnail.js.map +1 -1
- package/dist/components/builder/inline-edit.js.map +1 -1
- package/dist/components/builder/insert-context.js.map +1 -1
- package/dist/components/builder/insert-menu.js.map +1 -1
- package/dist/components/builder/layout-inspector.js.map +1 -1
- package/dist/components/builder/node-factory.js.map +1 -1
- package/dist/components/builder/page-tree.js.map +1 -1
- package/dist/components/builder/property-inspector.js.map +1 -1
- package/dist/components/builder/rich-text-toolbar.js.map +1 -1
- package/dist/components/builder/spacing-handles.js.map +1 -1
- package/dist/components/cms/alias-selector.d.ts +20 -0
- package/dist/components/cms/alias-selector.js +34 -0
- package/dist/components/cms/alias-selector.js.map +1 -0
- package/dist/components/cms/asset-picker.js.map +1 -1
- package/dist/components/cms/bulk-actions.js.map +1 -1
- package/dist/components/cms/bulk-bar.js.map +1 -1
- package/dist/components/cms/cell-edit.js.map +1 -1
- package/dist/components/cms/cell.js.map +1 -1
- package/dist/components/cms/cms-index.js.map +1 -1
- package/dist/components/cms/cms-store.d.ts +4 -5
- package/dist/components/cms/cms-store.js +45 -14
- package/dist/components/cms/cms-store.js.map +1 -1
- package/dist/components/cms/collection-table.js +10 -2
- package/dist/components/cms/collection-table.js.map +1 -1
- package/dist/components/cms/collections-sidebar.js.map +1 -1
- package/dist/components/cms/detail-editor.js +134 -58
- package/dist/components/cms/detail-editor.js.map +1 -1
- package/dist/components/cms/details-pane.d.ts +29 -0
- package/dist/components/cms/details-pane.js +29 -0
- package/dist/components/cms/details-pane.js.map +1 -0
- package/dist/components/cms/doc-state.js.map +1 -1
- package/dist/components/cms/document-editor-context.js.map +1 -1
- package/dist/components/cms/editable-cell.js.map +1 -1
- package/dist/components/cms/field-control.js.map +1 -1
- package/dist/components/cms/filter-builder.js.map +1 -1
- package/dist/components/cms/import-export.js.map +1 -1
- package/dist/components/cms/issues-pane.d.ts +19 -0
- package/dist/components/cms/issues-pane.js +33 -0
- package/dist/components/cms/issues-pane.js.map +1 -0
- package/dist/components/cms/new-page-dialog.js.map +1 -1
- package/dist/components/cms/reference-confirm.js.map +1 -1
- package/dist/components/cms/relation-picker.js.map +1 -1
- package/dist/components/cms/use-cell-edit.js.map +1 -1
- package/dist/components/cms/versions-model.js.map +1 -1
- package/dist/components/cms/versions-pane.js.map +1 -1
- package/dist/components/cms/view-bar.js.map +1 -1
- package/dist/components/collab/collab-context.js.map +1 -1
- package/dist/components/collab/collab-seed.js.map +1 -1
- package/dist/components/components/component-detail.js.map +1 -1
- package/dist/components/components/component-status.js.map +1 -1
- package/dist/components/components/components-index.js.map +1 -1
- package/dist/components/components/field-inspector.js.map +1 -1
- package/dist/components/components/fixture-runner.js.map +1 -1
- package/dist/components/components/registry-browser.js.map +1 -1
- package/dist/components/current-user-menu.js.map +1 -1
- package/dist/components/delivery-health-banner.js.map +1 -1
- package/dist/components/dev-login-badge.js.map +1 -1
- package/dist/components/extensions/extensions-view.js.map +1 -1
- package/dist/components/guards.js.map +1 -1
- package/dist/components/inspector/inspector-sidebar.d.ts +10 -1
- package/dist/components/inspector/inspector-sidebar.js +10 -4
- package/dist/components/inspector/inspector-sidebar.js.map +1 -1
- package/dist/components/operation-error.js.map +1 -1
- package/dist/components/playground-badge.js.map +1 -1
- package/dist/components/project-list.js.map +1 -1
- package/dist/components/project-session.js.map +1 -1
- package/dist/components/project-switcher.js.map +1 -1
- package/dist/components/references/builder-deep-link.js.map +1 -1
- package/dist/components/references/references-panel.js.map +1 -1
- package/dist/components/routes/redirect-chain.js.map +1 -1
- package/dist/components/routes/redirect-manager.js.map +1 -1
- package/dist/components/routes/route-list.js.map +1 -1
- package/dist/components/routes/routes-shell.js.map +1 -1
- package/dist/components/section-nav.js.map +1 -1
- package/dist/components/section-state.js.map +1 -1
- package/dist/components/section-surface.js.map +1 -1
- package/dist/components/sections.js.map +1 -1
- package/dist/components/settings-form.js.map +1 -1
- package/dist/components/studio-context.js.map +1 -1
- package/dist/components/studio-project-screen.js +32 -5
- package/dist/components/studio-project-screen.js.map +1 -1
- package/dist/components/studio-shell.js.map +1 -1
- package/dist/components/theme-context.js.map +1 -1
- package/dist/components/workspace-gate.js.map +1 -1
- package/dist/components/workspace-projects.js.map +1 -1
- package/dist/lib/assets/delete-asset.js.map +1 -1
- package/dist/lib/assets/image-dimensions.js.map +1 -1
- package/dist/lib/assets/index.js.map +1 -1
- package/dist/lib/assets/upload-state.js.map +1 -1
- package/dist/lib/assets/upload.js.map +1 -1
- package/dist/lib/auth/auth-adapter.js.map +1 -1
- package/dist/lib/auth/convex-auth-adapter.js.map +1 -1
- package/dist/lib/auth/dev-auto-login-adapter.js.map +1 -1
- package/dist/lib/auth/index.js.map +1 -1
- package/dist/lib/auth/local-auth-adapter.js.map +1 -1
- package/dist/lib/auth/route-guard.js.map +1 -1
- package/dist/lib/auth-errors.js.map +1 -1
- package/dist/lib/bindings/section-bindings.js.map +1 -1
- package/dist/lib/clipboard/index.js.map +1 -1
- package/dist/lib/clipboard/os-clipboard.js.map +1 -1
- package/dist/lib/clipboard/paste-issues.js.map +1 -1
- package/dist/lib/clipboard/paste-target.js.map +1 -1
- package/dist/lib/cms/published-documents.js.map +1 -1
- package/dist/lib/cms-views/index.js.map +1 -1
- package/dist/lib/cms-views/selection.js.map +1 -1
- package/dist/lib/cms-views/view-model.js.map +1 -1
- package/dist/lib/cms-views/views-store.js.map +1 -1
- package/dist/lib/data/collection-content.js.map +1 -1
- package/dist/lib/data/data-store.js.map +1 -1
- package/dist/lib/data/index.js.map +1 -1
- package/dist/lib/data/providers.js.map +1 -1
- package/dist/lib/data/sample-capture.js.map +1 -1
- package/dist/lib/data/sources-store.js.map +1 -1
- package/dist/lib/delivery/instant-publish.js.map +1 -1
- package/dist/lib/dnd/drop-rules.js.map +1 -1
- package/dist/lib/dnd/gap-drag.js.map +1 -1
- package/dist/lib/locale/binding-fallback.js.map +1 -1
- package/dist/lib/locale/fallback.js.map +1 -1
- package/dist/lib/locale/index.js.map +1 -1
- package/dist/lib/locale/locale-store.js.map +1 -1
- package/dist/lib/locale/locale-switcher.js.map +1 -1
- package/dist/lib/locale/route-variant.js.map +1 -1
- package/dist/lib/locale/use-studio-locale.js.map +1 -1
- package/dist/lib/operations/asset-repository.js.map +1 -1
- package/dist/lib/operations/cms-persistence.d.ts +7 -2
- package/dist/lib/operations/cms-persistence.js +6 -2
- package/dist/lib/operations/cms-persistence.js.map +1 -1
- package/dist/lib/operations/graph-commands.js.map +1 -1
- package/dist/lib/operations/graph-persistence.js.map +1 -1
- package/dist/lib/operations/index.js.map +1 -1
- package/dist/lib/operations/operations-package.js.map +1 -1
- package/dist/lib/operations/persist-queue.js.map +1 -1
- package/dist/lib/operations/session-hydration.js.map +1 -1
- package/dist/lib/operations/studio-operations.js.map +1 -1
- package/dist/lib/persistence/backend-mode.js.map +1 -1
- package/dist/lib/persistence/convex-adapter.js +8 -4
- package/dist/lib/persistence/convex-adapter.js.map +1 -1
- package/dist/lib/persistence/convex-blob-storage.js.map +1 -1
- package/dist/lib/persistence/convex-client.js.map +1 -1
- package/dist/lib/persistence/index.js.map +1 -1
- package/dist/lib/persona/labels.js +6 -0
- package/dist/lib/persona/labels.js.map +1 -1
- package/dist/lib/rail.js.map +1 -1
- package/dist/lib/references/impact.js.map +1 -1
- package/dist/lib/references/index.js.map +1 -1
- package/dist/lib/references/reference-model.js.map +1 -1
- package/dist/lib/references/references-store.js.map +1 -1
- package/dist/lib/registry/index.js.map +1 -1
- package/dist/lib/registry/preview.js.map +1 -1
- package/dist/lib/registry/project-components.js.map +1 -1
- package/dist/lib/routing/index.js.map +1 -1
- package/dist/lib/routing/routing-analysis.js.map +1 -1
- package/dist/lib/routing/routing-store.js.map +1 -1
- package/dist/lib/starters/kit-session.js.map +1 -1
- package/dist/lib/theme.js.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/webhooks/config.js.map +1 -1
- package/dist/lib/webhooks/dispatcher.js.map +1 -1
- package/dist/lib/webhooks/index.js.map +1 -1
- package/dist/lib/webhooks/signing.js.map +1 -1
- package/dist/lib/webhooks/tags.js.map +1 -1
- package/dist/lib/working-graph.js.map +1 -1
- package/dist/lib/workspace/index.js.map +1 -1
- package/dist/lib/workspace/switcher-source.js.map +1 -1
- package/dist/lib/workspace/workspace-source.js.map +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/router/match.js.map +1 -1
- package/dist/router/search.js.map +1 -1
- package/dist/ui/avatar.js.map +1 -1
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/button.js.map +1 -1
- package/dist/ui/card.js.map +1 -1
- package/dist/ui/dialog.js.map +1 -1
- package/dist/ui/dropdown-menu.js.map +1 -1
- package/dist/ui/field.js.map +1 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/inspector.js.map +1 -1
- package/dist/ui/layout.js.map +1 -1
- package/dist/ui/panel.js.map +1 -1
- package/dist/ui/separator.js.map +1 -1
- package/dist/ui/toast.js.map +1 -1
- package/dist/ui/toolbar.js.map +1 -1
- package/dist/ui/typography.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-table.js","sourceRoot":"","sources":["../../../src/components/cms/collection-table.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC9F,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACxI,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9F,OAAO,EACL,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,GAAG,EACH,MAAM,EACN,KAAK,EACL,IAAI,GACL,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpF,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAA;AAErF,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,EAAE,YAAY,EAA+C;IACtG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;IAElD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CACL,cAAK,SAAS,EAAC,oCAAoC,YACjD,MAAC,IAAI,IAAC,IAAI,EAAC,OAAO,oCACG,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YAAE,YAAY,GAAQ,SACtD,GACH,CACP,CAAA;IACH,CAAC;IAED,iFAAiF;IACjF,OAAO,KAAC,qBAAqB,IAAoB,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,IAA1D,YAAY,CAAkD,CAAA;AACnG,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,UAAU,GAIX;IACC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE,CAAA;IAClC,6EAA6E;IAC7E,kDAAkD;IAClD,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC,CAAA;IACrE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAiB,eAAe,CAAC,CAAA;IAC3E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAA;IACrE,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAGpC,IAAI,CAAC,CAAA;IAEf,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;IAChD,6EAA6E;IAC7E,mEAAmE;IACnE,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IACxF,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IAEzE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IAE1C,2EAA2E;IAC3E,8EAA8E;IAC9E,+EAA+E;IAC/E,8EAA8E;IAC9E,yEAAyE;IACzE,gFAAgF;IAChF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAA;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,KAAK,YAAY,CAAC;YAAE,OAAO,IAAI,CAAA;QACrF,MAAM,GAAG,GAAG;YACV,MAAM;YACN,WAAW,EAAE,4BAA4B,EAAE;YAC3C,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAA;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAA;QAC1C,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;YAC9F,IAAI,GAAG;gBAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAEjF,MAAM,WAAW,GAAG,OAAO;IACzB,2EAA2E;IAC3E,0EAA0E;IAC1E,GAAG,EAAE,CACH,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACpE,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAC5D,CAAC,IAAI,EACR,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CACjE,CAAA;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAC1E,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,CACtC,CAAA;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC3E,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACtF,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,+EAA+E;IAC/E,+EAA+E;IAC/E,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,YAAY,KAAK,MAAM,CAAA;IAChD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,gBAAgB,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,CAAA;YACpB,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;QAC5C,QAAQ,CAAC;YACP,EAAE,EAAE,oBAAoB;YACxB,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE;SAC5E,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACnD,2EAA2E;IAC3E,gDAAgD;IAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAE3D,SAAS,UAAU,CAAC,KAAa;QAC/B,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK;gBACxB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;gBACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK;oBACvB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;oBACxB,CAAC,CAAC,IAAI,CAAA;YACZ,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,SAAS,CAAC,MAAkB;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QACD,oEAAoE;QACpE,qEAAqE;QACrE,cAAc,CAAC;YACb,MAAM;YACN,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;SACrE,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,MAAkB,EAAE,KAAwB;QACpE,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;YAClE,aAAa,CAAC,MAAM,CAAC,CAAA;YACrB,oEAAoE;YACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;YAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAChF,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjE,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC,CAAA;QACL,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,SAAS,UAAU;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACnE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;QAC3D,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAA;QACZ,CAAC,CAAC,QAAQ,GAAG,GAAG,YAAY,OAAO,CAAA;QACnC,CAAC,CAAC,KAAK,EAAE,CAAA;QACT,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAE3C,eAAK,SAAS,EAAC,mDAAmD,aAChE,MAAC,GAAG,IAAC,GAAG,EAAC,GAAG,aAGV,MAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,mBAC9B,UAAU,CAAC,IAAI,cAAK,IAAI,CAAC,MAAM,OAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAC9E,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,IACxE,EACP,KAAC,MAAM,KAAG,EAGV,KAAC,cAAc,KAAG,EAEjB,YAAY,CAAC,CAAC,CAAC,CACd,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,iBAC/B,aAAa,EACzB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,yBAAyB,aAElE,QAAQ,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,CAAC,CAAC,CAAC,KAAC,IAAI,KAAG,OAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IACzD,CACV,CAAC,CAAC,CAAC,IAAI,EACR,MAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,SAAS,iBAAc,cAAc,aAC9D,KAAC,IAAI,KAAG,OAAE,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IACxC,EAET,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,SAAS,gBACH,cAAc,iBACb,oBAAoB,YAEhC,KAAC,cAAc,KAAG,GACX,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,aAC9B,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAc,eAAe,aAC/E,KAAC,MAAM,KAAG,qBACO,EACnB,MAAC,gBAAgB,IACf,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,iBACf,eAAe,aAE3B,KAAC,QAAQ,KAAG,eACK,IACC,IACT,IACX,EAGN,KAAC,OAAO,IAAC,UAAU,EAAE,UAAU,GAAI,EAGnC,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,aAAa,IAAC,UAAU,EAAE,UAAU,GAAI,GACrC,IACF,EAGN,KAAC,OAAO,IACN,KAAK,EAAE,WAAW,CAAC,MAAM,EACzB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,GAC7C,EACD,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,eAAe,IAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAI,CAC9E,CAAC,CAAC,CAAC,IAAI,EAGP,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CACtB,KAAC,sBAAsB,IACrB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,IAAI,QACJ,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrB,IAAI,CAAC,IAAI;wBAAE,cAAc,CAAC,IAAI,CAAC,CAAA;gBACjC,CAAC,EACD,SAAS,EAAE,GAAG,EAAE;oBACd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAA;oBACvC,cAAc,CAAC,IAAI,CAAC,CAAA;oBACpB,KAAK,UAAU,CACb,MAAM,EACN,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CACnC,CAAA;gBACH,CAAC,GACD,CACH,CAAC,CAAC,CAAC,IAAI,EAGR,cAAK,SAAS,EAAC,8BAA8B,YAC1C,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnB,cAAK,SAAS,EAAC,oCAAoC,YACjD,MAAC,KAAK,IAAC,GAAG,EAAC,GAAG,EAAC,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,aACnD,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,kCAAyB,EAC3C,MAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,SAAS,aAClC,KAAC,IAAI,KAAG,WAAM,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,IAAI,UAAU,CAAC,IACjF,IACH,GACJ,CACP,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7B,cAAK,SAAS,EAAC,oCAAoC,YACjD,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,iBAAa,gBAAgB,+DAExC,GACH,CACP,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IACZ,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CACzB,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAEhE,WAAW,EAAE,GAAG,EAAE,CAChB,YAAY,CACV,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;wBAC/D,CAAC,CAAC,cAAc,EAAE;wBAClB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC1B,GAEH,CACH,GACG,EAEN,KAAC,YAAY,IACX,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,aAAa,GAC3B,EAED,gBAAgB,CAAC,CAAC,CAAC,CAClB,KAAC,aAAa,IACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,OAAO,EACjC,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,cAAc,GAC5B,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,UAAU,EACV,OAAO,EACP,eAAe,EACf,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,EACV,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,WAAW,GAiBZ;IACC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACpF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IACjG,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;IACrC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAA;IAErF,OAAO,CACL,cAAK,GAAG,EAAE,QAAQ,CAAC,YAAY,YAC7B,iBAAO,SAAS,EAAC,gCAAgC,aAC/C,gBAAO,SAAS,EAAC,iCAAiC,YAChD,cAAI,SAAS,EAAC,wBAAwB,aACpC,aAAI,SAAS,EAAC,yBAAyB,YACrC,KAAC,iBAAiB,IAChB,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EACrD,KAAK,EAAC,8BAA8B,EACpC,MAAM,EAAC,YAAY,EACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,GAC7B,GACC,EACL,KAAC,UAAU,IACT,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,EAC9D,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,SACN,EACD,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gCACpB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gCAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,KAAC,UAAU,IAAY,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAvE,IAAI,CAAuE,CAC7F,CAAC,CAAC,CAAC,IAAI,CAAA;4BACV,CAAC,CAAC,EACF,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAI,EAE3E,UAAU,CAAC,CAAC,CAAC,CACZ,aAAI,SAAS,EAAC,iEAAiE,oBAAS,CACzF,CAAC,CAAC,CAAC,IAAI,IACL,GACC,EACR,0BACG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACvB,cAEE,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,CACvC,aAED,aAAI,SAAS,EAAC,wBAAwB,YACpC,KAAC,iBAAiB,IAChB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAC7B,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,EACzB,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,EAAE,EAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAC/C,GACC,EACL,aAAI,SAAS,EAAC,wBAAwB,YACpC,KAAC,WAAW,IACV,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAClC,MAAM,EAAE,GAAG,CAAC,YAAY,EACxB,MAAM,EAAE,GAAG,CAAC,YAAY,GACxB,GACC,EACJ,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gCACpB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gCAC/B,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;gCAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;gCAC1B,OAAO,CACL,aAAe,SAAS,EAAC,wBAAwB,YAC9C,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,YAAY,IACX,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,QAAQ,CAAC,SAAS,KAAK,GAAG,EACnC,IAAI,EAAE,QAAQ,CAAC,OAAO,KAAK,GAAG,EAC9B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EACnC,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EACxC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GACpE,CACH,CAAC,CAAC,CAAC,IAAI,IAbD,IAAI,CAcR,CACN,CAAA;4BACH,CAAC,CAAC,EACF,aAAI,SAAS,EAAC,wBAAwB,YACpC,KAAC,aAAa,IAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAI,GACpF,EACJ,UAAU,CAAC,CAAC,CAAC,CACZ,aAAI,SAAS,EAAC,wBAAwB,YACpC,KAAC,OAAO,IAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAI,GACrC,CACN,CAAC,CAAC,CAAC,IAAI,KAtDH,GAAG,CAAC,EAAE,CAuDR,CACN,CAAC,GACI,IACF,GACJ,CACP,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,MAAM,EACN,QAAQ,GAOT;IACC,OAAO,CACL,gBACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,IAAI,EAAE;gBAAE,EAAE,CAAC,aAAa,GAAG,aAAa,IAAI,CAAC,OAAO,CAAA;QACtD,CAAC,EACD,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,mDAAmD,EAC7D,OAAO,EAAE,OAAO,EAChB,QAAQ,sBACI,KAAK,iBACJ,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC1B,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC,EACD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,IAAI,KAAK,CAAC,QAAQ;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;QAC5C,CAAC,GACD,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAM,GAOP;IACC,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,KAAK,KAAK,CAAA;IACpC,OAAO,CACL,aAAI,SAAS,EAAE,EAAE,CAAC,iEAAiE,EAAE,MAAM,IAAI,eAAe,CAAC,YAC7G,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,sDAAsD,aACjH,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,CACR,IAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CACpB,KAAC,OAAO,IAAC,SAAS,EAAC,QAAQ,GAAG,CAC/B,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,CACjC,CACF,CAAC,CAAC,CAAC,IAAI,IACD,GACN,CACN,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,UAAU,EACV,GAAG,EACH,OAAO,EACP,KAAK,GAAG,CAAC,EACT,MAAM,EACN,MAAM,GAUP;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3F,OAAO,CACL,MAAC,GAAG,IAAC,GAAG,EAAC,GAAG,EAAC,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,GAAG,EAAE,EAAE,aAC/E,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACX,KAAC,eAAe,IAAC,SAAS,EAAC,yCAAyC,wBAAe,CACpF,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,IAAI,IACH,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAC5E,SAAS,EAAC,yEAAyE,YAElF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAC/C,EACP,KAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,IAAI,OAAO,EAAE,GAAI,IAC9E,CACP,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,EAAE,GAAG,EAAyB;IAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,uBAEtB,CACR,CAAA;IACH,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,CACL,aACE,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,KAAK,EAAE,GAAG,CAAC,IAAI,EACf,SAAS,EAAC,oHAAoH,aAE9H,eAAM,SAAS,EAAC,UAAU,YAAE,GAAG,CAAC,IAAI,GAAQ,EAC5C,KAAC,YAAY,IAAC,SAAS,EAAC,iBAAiB,wBAAe,IACtD,CACL,CAAA;IACH,CAAC;IACD,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,wBAAwB,EAAC,KAAK,EAAE,GAAG,CAAC,IAAI,YAC5E,GAAG,CAAC,IAAI,GACJ,CACR,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"collection-table.js","sourceRoot":"","sources":["../../../src/components/cms/collection-table.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Link, STUDIO_PROJECT_ROUTE, studioPath, useNavigate } from '@elytracms/studio/router'\nimport { ArrowDown, ArrowUp, CornerDownRight, Download, ExternalLink, List, ListTree, MoreHorizontal, Plus, Upload } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport type { CmsDocument, CollectionDef, DocumentUrl, FieldDef, Locale, LocaleConfig } from '@elytracms/core/cms-core'\nimport { isHierarchical, orderHierarchically, urlForDocument, validateCollectionShape } from '@elytracms/core/cms-core'\nimport {\n Button,\n Code,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Row,\n Spacer,\n Stack,\n Text,\n} from '@elytracms/studio/ui'\nimport { cn } from '@elytracms/studio/lib/utils'\nimport { LocaleSwitcher, resolveDisplayedValue } from '@elytracms/studio/lib/locale'\nimport {\n EMPTY_SELECTION,\n STATE_FIELD,\n applyViewState,\n clearSelection,\n primaryColumn,\n selectAll,\n toggleRow,\n visibleColumns,\n visibleSelection,\n} from '@elytracms/studio/lib/cms-views'\nimport type { SelectionState, ViewSort } from '@elytracms/studio/lib/cms-views'\nimport { cellEditKind, cellKey } from './cell-edit'\nimport { FallbackChip } from './cell'\nimport { EditableCell } from './editable-cell'\nimport { useCellEdit } from './use-cell-edit'\nimport { ImportDialog } from './import-export'\nimport { NewPageDialog } from './new-page-dialog'\nimport { fieldLabel, useCms } from './cms-store'\nimport { cmsIssueLabel } from '@elytracms/studio/lib/persona/labels'\nimport { TriangleAlert } from 'lucide-react'\nimport type { BulkAction, BulkReport } from './bulk-actions'\nimport { BulkBar, BulkReportPanel } from './bulk-bar'\nimport { ReferenceConfirmDialog } from './reference-confirm'\nimport { FilterBuilder } from './filter-builder'\nimport { ViewBar } from './view-bar'\nimport { DocStateBadge } from './doc-state'\nimport { useSetBreadcrumb } from '../breadcrumb-context'\nimport { resolveDeploymentFrontendUrl, resolveDeploymentRoutes } from '@elytracms/studio/lib/workspace'\nimport { usePublishedDocuments } from '@elytracms/studio/lib/cms/published-documents'\n\nexport function CollectionTable({ projectId, collectionId }: { projectId: string; collectionId: string }) {\n const cms = useCms()\n const collection = cms.getCollection(collectionId)\n\n if (!collection) {\n return (\n <div className=\"grid h-full place-items-center p-8\">\n <Text tone=\"muted\">\n Unknown collection <Code tone=\"muted\">{collectionId}</Code>.\n </Text>\n </div>\n )\n }\n\n // Keyed per collection so selection/report state never leaks across collections.\n return <LoadedCollectionTable key={collectionId} projectId={projectId} collection={collection} />\n}\n\nfunction LoadedCollectionTable({\n projectId,\n collection,\n}: {\n projectId: string\n collection: CollectionDef\n}) {\n const cms = useCms()\n const navigate = useNavigate()\n const collectionId = collection.id\n // EC-214: the collection is the active record — the global header breadcrumb\n // names it, replacing the per-view title heading.\n useSetBreadcrumb([{ label: collection.form?.label ?? collectionId }])\n const [importOpen, setImportOpen] = useState(false)\n const [selection, setSelection] = useState<SelectionState>(EMPTY_SELECTION)\n const [bulkBusy, setBulkBusy] = useState(false)\n const [bulkReport, setBulkReport] = useState<BulkReport | null>(null)\n // EC-173: bulk unpublish/delete go through the reference-aware confirmation\n // with a snapshot of the selection taken when the action was raised.\n const [pendingBulk, setPendingBulk] = useState<{\n action: 'unpublish' | 'delete'\n targets: { collection: string; id: string }[]\n } | null>(null)\n\n // The working view state (EC-169): filters + sort + columns, possibly dirty\n // against the active saved view. The table renders exactly this state.\n const viewState = cms.tableStateOf(collectionId)\n // EC-213: the title/link column is the first visible column; the rest follow\n // in the view's column order. No separate primary-column selector.\n const primary = primaryColumn(collection, viewState)\n const columns = visibleColumns(collection, viewState).filter((name) => name !== primary)\n const primaryFieldDef = collection.fields.find((f) => f.name === primary)\n\n const docs = cms.documentsOf(collectionId)\n\n // EC-274/EC-284: collection-shape drift (a singleton with > 1 document; later\n // duplicate/unknown/unfilled aliases). When the data has drifted from the lens's\n // expected shape the studio shows this list instead of skipping — surfacing the\n // conflicts here as a \"for review\" banner so an editor resolves them without a\n // developer (keep/delete the outliers), after which the lens applies again.\n const shapeIssues = useMemo(() => validateCollectionShape(collection, docs), [collection, docs])\n\n // EC-216 + EC-205 (\"live = published\"): each routable document's LIVE URL,\n // derived from the PUBLISHED pool — the pinned published snapshots, never the\n // draft rows — so an unpublished slug/parent edit can't leak into a live link.\n // The pool holds only published docs, so the column naturally links only them\n // (unpublished rows show a dash) and nested paths compose from published\n // ancestors. `null` when the collection is not routable → the column is hidden.\n const publishedDocs = usePublishedDocuments(cms.projectId, collectionId)\n const urlByDocId = useMemo(() => {\n const routes = resolveDeploymentRoutes()\n if (!routes.some((route) => route.document?.collection === collectionId)) return null\n const cfg = {\n routes,\n frontendUrl: resolveDeploymentFrontendUrl(),\n localeConfig: cms.localeConfig,\n }\n const siblings = [...publishedDocs.byId.values()]\n const map = new Map<string, DocumentUrl>()\n for (const published of siblings) {\n const url = urlForDocument(cfg, collection, published, { siblings, locale: cms.activeLocale })\n if (url) map.set(published.id, url)\n }\n return map\n }, [collection, collectionId, publishedDocs, cms.localeConfig, cms.activeLocale])\n\n const visibleDocs = useMemo(\n // EC-224: the `$state` filter/sort sources published-ness from the version\n // POINTER (`cms.isPublished`), not the flat `state` field (B removes it).\n () =>\n applyViewState(collection, docs, cms.localeConfig, viewState, (doc) =>\n cms.isPublished({ collection: doc.collection, id: doc.id }),\n ).docs,\n [collection, docs, cms.localeConfig, viewState, cms.isPublished],\n )\n\n // EC-218: a collection with a `parent` self-relation can render as a nested\n // tree (parents above their children, indented). Tree mode reorders the\n // already-filtered rows depth-first — filters/sort still order siblings.\n const hierarchical = isHierarchical(collection)\n const [treeMode, setTreeMode] = useState(hierarchical)\n const treeRows = useMemo(\n () => (hierarchical && treeMode ? orderHierarchically(visibleDocs) : null),\n [hierarchical, treeMode, visibleDocs],\n )\n const orderedDocs = treeRows ? treeRows.map((row) => row.doc) : visibleDocs\n const depthById = useMemo(\n () => (treeRows ? new Map(treeRows.map((row) => [row.doc.id, row.depth])) : undefined),\n [treeRows],\n )\n\n // EC-192: pages are created via a dialog that also writes the route addressing\n // them (a bare document would be unroutable). Other collections create a blank\n // document inline and open its editor.\n const isPageCollection = collectionId === 'page'\n const [newPageOpen, setNewPageOpen] = useState(false)\n const handleNew = () => {\n if (isPageCollection) {\n setNewPageOpen(true)\n return\n }\n const ref = cms.createDocument(collectionId)\n navigate({\n to: STUDIO_PROJECT_ROUTE,\n params: { projectId, _splat: studioPath.cmsDocument(collectionId, ref.id) },\n })\n }\n const visibleIds = orderedDocs.map((doc) => doc.id)\n // Selection is always read against the current view — rows the filters hid\n // are never silently included in a bulk action.\n const selectedIds = visibleSelection(selection, visibleIds)\n\n function toggleSort(field: string) {\n cms.setTableState(collectionId, (prev) => {\n const sort: ViewSort | null =\n prev.sort?.field !== field\n ? { field, dir: 'asc' }\n : prev.sort.dir === 'asc'\n ? { field, dir: 'desc' }\n : null\n return { ...prev, sort }\n })\n }\n\n function raiseBulk(action: BulkAction) {\n if (action === 'publish') {\n void handleBulk(action, [...selectedIds])\n return\n }\n // Unpublish/delete first enumerate inbound references (EC-173): the\n // dialog shows the aggregate \"N documents, M references will break\".\n setPendingBulk({\n action,\n targets: selectedIds.map((id) => ({ collection: collectionId, id })),\n })\n }\n\n async function handleBulk(action: BulkAction, acted: readonly string[]) {\n setBulkBusy(true)\n try {\n const report = await cms.runBulk(collectionId, [...acted], action)\n setBulkReport(report)\n // Succeeded items deselect; failed items stay selected for a retry.\n const actedSet = new Set(acted)\n const failed = new Set(report.results.filter((r) => !r.ok).map((r) => r.ref.id))\n setSelection((prev) => ({\n ids: prev.ids.filter((id) => !actedSet.has(id) || failed.has(id)),\n anchorId: null,\n }))\n } finally {\n setBulkBusy(false)\n }\n }\n\n function exportJson() {\n const data = JSON.stringify(cms.documentsOf(collectionId), null, 2)\n const blob = new Blob([data], { type: 'application/json' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = `${collectionId}.json`\n a.click()\n URL.revokeObjectURL(url)\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n {/* Header + actions */}\n <div className=\"shrink-0 border-b border-border px-4 py-3 sm:px-6\">\n <Row gap=\"3\">\n {/* EC-214: no title heading — the header breadcrumb names the\n collection. This line is the working-view metadata, not a title. */}\n <Text size=\"xs\" tone=\"muted\" mono>\n {collection.kind} · {docs.length} {docs.length === 1 ? 'document' : 'documents'}\n {visibleDocs.length !== docs.length ? ` · ${visibleDocs.length} in view` : ''}\n </Text>\n <Spacer />\n {/* The ambient locale switcher (EC-176): set once, applies to every\n cell, detail form, and the builder canvas alike. */}\n <LocaleSwitcher />\n {/* EC-218: nested vs flat list for collections with a page hierarchy. */}\n {hierarchical ? (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setTreeMode((prev) => !prev)}\n data-testid=\"tree-toggle\"\n title={treeMode ? 'Show as a flat list' : 'Show the page hierarchy'}\n >\n {treeMode ? <ListTree /> : <List />} {treeMode ? 'Tree' : 'Flat'}\n </Button>\n ) : null}\n <Button size=\"sm\" onClick={handleNew} data-testid=\"new-document\">\n <Plus /> {isPageCollection ? 'New page' : 'New'}\n </Button>\n {/* EC-213: import/export fold into one action menu, off the header. */}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label=\"More actions\"\n data-testid=\"collection-actions\"\n >\n <MoreHorizontal />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setImportOpen(true)} data-testid=\"action-import\">\n <Upload /> Import…\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={exportJson}\n disabled={docs.length === 0}\n data-testid=\"action-export\"\n >\n <Download /> Export\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </Row>\n\n {/* Saved views: switcher, unsaved-changes affordances, columns (EC-169) */}\n <ViewBar collection={collection} />\n\n {/* Closed-vocabulary filter builder (EC-169) */}\n <div className=\"mt-2\">\n <FilterBuilder collection={collection} />\n </div>\n </div>\n\n {/* Bulk actions over the selection (EC-169) */}\n <BulkBar\n count={selectedIds.length}\n busy={bulkBusy}\n onAction={raiseBulk}\n onClear={() => setSelection(clearSelection())}\n />\n {bulkReport ? (\n <BulkReportPanel report={bulkReport} onDismiss={() => setBulkReport(null)} />\n ) : null}\n\n {/* Reference-aware bulk unpublish/delete confirmation (EC-173). */}\n {pendingBulk !== null ? (\n <ReferenceConfirmDialog\n projectId={projectId}\n action={pendingBulk.action}\n targets={pendingBulk.targets}\n open\n busy={bulkBusy}\n onOpenChange={(open) => {\n if (!open) setPendingBulk(null)\n }}\n onConfirm={() => {\n const { action, targets } = pendingBulk\n setPendingBulk(null)\n void handleBulk(\n action,\n targets.map((target) => target.id),\n )\n }}\n />\n ) : null}\n\n {/* EC-274/EC-284: \"for review\" lane — the collection has drifted from its\n lens's expected shape; surface each conflict so an editor can resolve it. */}\n {shapeIssues.length > 0 ? (\n <div\n className=\"shrink-0 border-b border-warning/30 bg-warning/10 px-4 py-2 sm:px-6\"\n data-testid=\"shape-review-banner\"\n >\n <Stack gap=\"1\">\n {shapeIssues.map((issue, i) => (\n <Row key={`${issue.code}:${i}`} gap=\"2\" align=\"start\">\n <TriangleAlert className=\"mt-0.5 size-3.5 shrink-0 text-warning\" aria-hidden />\n <Stack gap=\"none\" className=\"min-w-0\">\n <Text size=\"xs\" weight=\"semibold\" tone=\"default\" title={issue.code}>\n For review · {cmsIssueLabel(issue.code)}\n </Text>\n <Text size=\"xs\" tone=\"muted\">\n {issue.message}\n </Text>\n </Stack>\n </Row>\n ))}\n </Stack>\n </div>\n ) : null}\n\n {/* Table */}\n <div className=\"min-h-0 flex-1 overflow-auto\">\n {docs.length === 0 ? (\n <div className=\"grid h-full place-items-center p-8\">\n <Stack gap=\"2\" align=\"center\" className=\"text-center\">\n <Text tone=\"muted\">No documents yet.</Text>\n <Button size=\"sm\" onClick={handleNew}>\n <Plus /> New {isPageCollection ? 'page' : (collection.form?.labelSingular ?? 'document')}\n </Button>\n </Stack>\n </div>\n ) : visibleDocs.length === 0 ? (\n <div className=\"grid h-full place-items-center p-8\">\n <Text tone=\"muted\" data-testid=\"empty-filtered\">\n No documents match the current view's filters.\n </Text>\n </div>\n ) : (\n <DocumentsGrid\n projectId={projectId}\n collection={collection}\n primary={primary}\n primaryFieldDef={primaryFieldDef}\n columns={columns}\n sortedDocs={orderedDocs}\n depthById={depthById}\n urlByDocId={urlByDocId}\n sort={viewState.sort}\n onSort={toggleSort}\n selectedIds={selectedIds}\n onToggleRow={(id, shift) =>\n setSelection((prev) => toggleRow(prev, visibleIds, id, shift))\n }\n onToggleAll={() =>\n setSelection(\n selectedIds.length === visibleIds.length && visibleIds.length > 0\n ? clearSelection()\n : selectAll(visibleIds),\n )\n }\n />\n )}\n </div>\n\n <ImportDialog\n collectionId={collectionId}\n open={importOpen}\n onOpenChange={setImportOpen}\n />\n\n {isPageCollection ? (\n <NewPageDialog\n projectId={projectId}\n locales={cms.localeConfig.locales}\n open={newPageOpen}\n onOpenChange={setNewPageOpen}\n />\n ) : null}\n </div>\n )\n}\n\n/**\n * The documents table with inline cell editing (EC-168). Cells edit in place\n * (text/number/boolean/select/date) or open pickers (relation/asset); each\n * commit is one operations command via the cell-edit controller, with\n * rollback + inline cell errors on rejection. Row checkboxes (EC-169) live in\n * their own column, so selection clicks never collide with cell editing.\n */\nfunction DocumentsGrid({\n projectId,\n collection,\n primary,\n primaryFieldDef,\n columns,\n sortedDocs,\n depthById,\n urlByDocId,\n sort,\n onSort,\n selectedIds,\n onToggleRow,\n onToggleAll,\n}: {\n projectId: string\n collection: CollectionDef\n primary: string\n primaryFieldDef: FieldDef | undefined\n columns: string[]\n sortedDocs: CmsDocument[]\n /** EC-218: nesting depth per doc id when rendering the hierarchy (tree mode). */\n depthById?: Map<string, number>\n /** EC-216: each routable doc's derived URL; `null` hides the URL column. */\n urlByDocId?: Map<string, DocumentUrl> | null\n sort: ViewSort | null\n onSort: (field: string) => void\n selectedIds: readonly string[]\n onToggleRow: (id: string, shift: boolean) => void\n onToggleAll: () => void\n}) {\n const cms = useCms()\n const collectionId = collection.id\n const fieldByName = (name: string) => collection.fields.find((f) => f.name === name)\n const editableFields = columns.filter((name) => {\n const field = fieldByName(name)\n return field ? cellEditKind(field, cms.isFieldReadOnly(collectionId, field)) !== 'none' : false\n })\n const cellEdit = useCellEdit({ collection, docs: sortedDocs, editableFields })\n const selected = new Set(selectedIds)\n const allSelected = sortedDocs.length > 0 && selectedIds.length === sortedDocs.length\n\n return (\n <div ref={cellEdit.containerRef}>\n <table className=\"w-full border-collapse text-sm\">\n <thead className=\"sticky top-0 z-10 bg-background\">\n <tr className=\"border-b border-border\">\n <th className=\"w-8 px-3 py-2 text-left\">\n <SelectionCheckbox\n checked={allSelected}\n indeterminate={selectedIds.length > 0 && !allSelected}\n label=\"Select all documents in view\"\n testId=\"select-all\"\n onToggle={() => onToggleAll()}\n />\n </th>\n <HeaderCell\n field={primary}\n label={primaryFieldDef ? fieldLabel(primaryFieldDef) : 'Title'}\n sort={sort}\n onSort={onSort}\n sticky\n />\n {columns.map((name) => {\n const field = fieldByName(name)\n return field ? (\n <HeaderCell key={name} field={name} label={fieldLabel(field)} sort={sort} onSort={onSort} />\n ) : null\n })}\n <HeaderCell field={STATE_FIELD} label=\"State\" sort={sort} onSort={onSort} />\n {/* EC-216: derived URL — not a field, so not sortable. */}\n {urlByDocId ? (\n <th className=\"px-3 py-2 text-left text-xs font-semibold text-muted-foreground\">URL</th>\n ) : null}\n </tr>\n </thead>\n <tbody>\n {sortedDocs.map((doc) => (\n <tr\n key={doc.id}\n className={cn(\n 'group border-b border-border/60 hover:bg-muted/40',\n selected.has(doc.id) && 'bg-primary/5',\n )}\n >\n <td className=\"px-3 py-2 align-middle\">\n <SelectionCheckbox\n checked={selected.has(doc.id)}\n label={`Select ${doc.id}`}\n testId={`select-row-${doc.id}`}\n onToggle={(shift) => onToggleRow(doc.id, shift)}\n />\n </td>\n <td className=\"px-3 py-2 align-middle\">\n <PrimaryCell\n projectId={projectId}\n collection={collection}\n doc={doc}\n primary={primary}\n depth={depthById?.get(doc.id) ?? 0}\n locale={cms.activeLocale}\n config={cms.localeConfig}\n />\n </td>\n {columns.map((name) => {\n const field = fieldByName(name)\n const coord = { docId: doc.id, field: name }\n const key = cellKey(coord)\n return (\n <td key={name} className=\"px-3 py-2 align-middle\">\n {field ? (\n <EditableCell\n collection={collection}\n doc={doc}\n field={field}\n editing={cellEdit.activeKey === key}\n busy={cellEdit.busyKey === key}\n errorMessage={cellEdit.errorOf(key)}\n onStartEdit={() => cellEdit.start(coord)}\n onCancel={() => cellEdit.cancel(coord)}\n onCommit={(value, advance) => cellEdit.commit(coord, value, advance)}\n />\n ) : null}\n </td>\n )\n })}\n <td className=\"px-3 py-2 align-middle\">\n <DocStateBadge published={cms.isPublished({ collection: collectionId, id: doc.id })} />\n </td>\n {urlByDocId ? (\n <td className=\"px-3 py-2 align-middle\">\n <UrlCell url={urlByDocId.get(doc.id)} />\n </td>\n ) : null}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n\n/**\n * A selection checkbox (row or select-all). Its own column and focus target —\n * it never participates in the cell-edit keyboard flow. Shift-click selects\n * the anchor→row range (the mousedown guard stops text selection).\n */\nfunction SelectionCheckbox({\n checked,\n indeterminate = false,\n label,\n testId,\n onToggle,\n}: {\n checked: boolean\n indeterminate?: boolean\n label: string\n testId: string\n onToggle: (shift: boolean) => void\n}) {\n return (\n <input\n ref={(el) => {\n if (el) el.indeterminate = indeterminate && !checked\n }}\n type=\"checkbox\"\n className=\"size-4 cursor-pointer accent-primary align-middle\"\n checked={checked}\n readOnly\n aria-label={label}\n data-testid={testId}\n onClick={(event) => onToggle(event.shiftKey)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n onToggle(event.shiftKey)\n }\n }}\n onMouseDown={(event) => {\n if (event.shiftKey) event.preventDefault()\n }}\n />\n )\n}\n\nfunction HeaderCell({\n field,\n label,\n sort,\n onSort,\n sticky,\n}: {\n field: string\n label: string\n sort: ViewSort | null\n onSort: (field: string) => void\n sticky?: boolean\n}) {\n const active = sort?.field === field\n return (\n <th className={cn('px-3 py-2 text-left text-xs font-semibold text-muted-foreground', sticky && 'min-w-[12rem]')}>\n <button type=\"button\" onClick={() => onSort(field)} className=\"inline-flex items-center gap-1 hover:text-foreground\">\n {label}\n {active ? (\n sort!.dir === 'asc' ? (\n <ArrowUp className=\"size-3\" />\n ) : (\n <ArrowDown className=\"size-3\" />\n )\n ) : null}\n </button>\n </th>\n )\n}\n\n/**\n * The primary (title) column cell: the document link, resolved in the\n * ambient active locale with a visible fallback chip when the shown title is\n * untranslated (EC-176).\n */\nfunction PrimaryCell({\n projectId,\n collection,\n doc,\n primary,\n depth = 0,\n locale,\n config,\n}: {\n projectId: string\n collection: CollectionDef\n doc: CmsDocument\n primary: string\n /** EC-218: nesting depth in the hierarchy (tree mode) — indents the title. */\n depth?: number\n locale: Locale\n config: LocaleConfig\n}) {\n const { value, fallback } = resolveDisplayedValue(collection, doc, primary, locale, config)\n return (\n <Row gap=\"2\" align=\"center\" className=\"min-w-0\" style={{ paddingLeft: depth * 20 }}>\n {depth > 0 ? (\n <CornerDownRight className=\"size-3.5 shrink-0 text-muted-foreground\" aria-hidden />\n ) : null}\n <Link\n to={STUDIO_PROJECT_ROUTE}\n params={{ projectId, _splat: studioPath.cmsDocument(collection.id, doc.id) }}\n className=\"truncate font-medium text-foreground hover:text-primary hover:underline\"\n >\n {typeof value === 'string' && value ? value : doc.id}\n </Link>\n <FallbackChip fallback={fallback} testId={`cell-fallback-${doc.id}-${primary}`} />\n </Row>\n )\n}\n\n/**\n * The read-only URL column cell (EC-216): the document's LIVE (published) path,\n * linking to the absolute live URL when a `frontendUrl` is configured. Only\n * published documents have a `url` here (the URL is derived from the published\n * pool, EC-205), so an unpublished document — having no live page — shows a dash.\n * The URL is always derived, never stored.\n */\nfunction UrlCell({ url }: { url?: DocumentUrl }) {\n if (!url) {\n return (\n <Text size=\"xs\" tone=\"subtle\">\n —\n </Text>\n )\n }\n if (url.href) {\n return (\n <a\n href={url.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n title={url.href}\n className=\"inline-flex max-w-[18rem] items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground\"\n >\n <span className=\"truncate\">{url.path}</span>\n <ExternalLink className=\"size-3 shrink-0\" aria-hidden />\n </a>\n )\n }\n return (\n <Text size=\"xs\" tone=\"muted\" className=\"max-w-[18rem] truncate\" title={url.path}>\n {url.path}\n </Text>\n )\n}\n\nexport type { FieldDef }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections-sidebar.js","sourceRoot":"","sources":["../../../src/components/cms/collections-sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,kBAAkB,GAInB;IACC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IAEpB,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,MAAC,GAAG,IAAC,GAAG,EAAC,GAAG,EAAC,SAAS,EAAC,2CAA2C,aAChE,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,UAAU,4BAE1B,EACP,KAAC,MAAM,KAAG,EACV,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,kBAC/B,GAAG,CAAC,WAAW,CAAC,MAAM,GAClB,IACH,EACN,cAAK,SAAS,EAAC,kCAAkC,YAC9C,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,kBAAkB,CAAA;oBACnD,kEAAkE;oBAClE,sEAAsE;oBACtE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;oBACzC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACjF,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAA;oBACnD,OAAO,CACL,MAAC,IAAI,IAEH,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,kBACxD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzC,SAAS,EAAE,EAAE,CACX,4EAA4E,EAC5E,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,4DAA4D,CAC3G,aAED,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,GAAG,EACpC,eAAM,SAAS,EAAC,qDAAqD,YAClE,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE,GACnC,EACN,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YAAE,KAAK,GAAQ,KAbhD,UAAU,CAAC,EAAE,CAcb,CACR,CAAA;gBACH,CAAC,CAAC,GACE,IACF,CACP,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"collections-sidebar.js","sourceRoot":"","sources":["../../../src/components/cms/collections-sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,kBAAkB,GAInB;IACC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IAEpB,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,MAAC,GAAG,IAAC,GAAG,EAAC,GAAG,EAAC,SAAS,EAAC,2CAA2C,aAChE,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,UAAU,4BAE1B,EACP,KAAC,MAAM,KAAG,EACV,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,kBAC/B,GAAG,CAAC,WAAW,CAAC,MAAM,GAClB,IACH,EACN,cAAK,SAAS,EAAC,kCAAkC,YAC9C,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,kBAAkB,CAAA;oBACnD,kEAAkE;oBAClE,sEAAsE;oBACtE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;oBACzC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACjF,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAA;oBACnD,OAAO,CACL,MAAC,IAAI,IAEH,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,kBACxD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzC,SAAS,EAAE,EAAE,CACX,4EAA4E,EAC5E,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,4DAA4D,CAC3G,aAED,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,GAAG,EACpC,eAAM,SAAS,EAAC,qDAAqD,YAClE,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE,GACnC,EACN,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,YAAE,KAAK,GAAQ,KAbhD,UAAU,CAAC,EAAE,CAcb,CACR,CAAA;gBACH,CAAC,CAAC,GACE,IACF,CACP,CAAA;AACH,CAAC","sourcesContent":["import { Link, STUDIO_PROJECT_ROUTE, studioPath } from '@elytracms/studio/router'\nimport { Database, FileCog, Image } from 'lucide-react'\nimport { isSingleton } from '@elytracms/core/cms-core'\nimport { Code, Row, Spacer, Text } from '@elytracms/studio/ui'\nimport { cn } from '@elytracms/studio/lib/utils'\nimport { useCms } from './cms-store'\n\n/**\n * Left sidebar listing the project's collections (brief §8.4). The active\n * collection arrives as a prop from the splat resolver (EC-223 Stage 6) — the\n * `collectionId` is no longer a route param, so it can't be read from the router.\n */\nexport function CollectionsSidebar({\n projectId,\n activeCollectionId,\n}: {\n projectId: string\n activeCollectionId?: string\n}) {\n const cms = useCms()\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <Row gap=\"2\" className=\"h-10 shrink-0 border-b border-border px-3\">\n <Text size=\"sm\" weight=\"semibold\">\n Collections\n </Text>\n <Spacer />\n <Text size=\"xs\" tone=\"subtle\" mono>\n {cms.collections.length}\n </Text>\n </Row>\n <div className=\"min-h-0 flex-1 overflow-auto p-2\">\n {cms.collections.map((collection) => {\n const active = collection.id === activeCollectionId\n // EC-217: a singleton reads as one fixed document, not a list — a\n // distinct icon and no row count (which would always be a noisy \"1\").\n const singleton = isSingleton(collection)\n const Icon = singleton ? FileCog : collection.kind === 'asset' ? Image : Database\n const count = cms.documentsOf(collection.id).length\n return (\n <Link\n key={collection.id}\n to={STUDIO_PROJECT_ROUTE}\n params={{ projectId, _splat: studioPath.cmsCollection(collection.id) }}\n aria-current={active ? 'page' : undefined}\n className={cn(\n 'flex items-center gap-2 rounded-md px-2.5 py-1.5 text-sm transition-colors',\n active ? 'bg-accent text-accent-foreground' : 'text-muted-foreground hover:bg-muted hover:text-foreground',\n )}\n >\n <Icon className=\"size-4 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate font-medium text-foreground\">\n {collection.form?.label ?? collection.id}\n </span>\n {singleton ? null : <Code tone=\"muted\">{count}</Code>}\n </Link>\n )\n })}\n </div>\n </div>\n )\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Link, STUDIO_PROJECT_ROUTE, studioPath, useNavigate } from '@elytracms/studio/router';
|
|
3
|
-
import { CircleCheck, ExternalLink, Eye, EyeOff, History, Languages, Loader2, Lock, MoreHorizontal, Trash2, } from 'lucide-react';
|
|
4
|
-
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
5
|
-
import { documentKey, isBlocksField, isFieldLocalized, isSingleton, resolveField,
|
|
3
|
+
import { CircleAlert, CircleCheck, ExternalLink, Eye, EyeOff, History, Languages, Loader2, Lock, MoreHorizontal, Tag, Trash2, } from 'lucide-react';
|
|
4
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
5
|
+
import { SIDEBAR_FIELD_GROUP, documentKey, hasAliases, isBlocksField, isFieldHidden, isFieldLocalized, isSingleton, resolveField, sidebarFields, staticFieldHidden, urlForDocument, } from '@elytracms/core/cms-core';
|
|
6
6
|
import { Badge, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Field, Heading, Panel, PanelHeader, Row, Spacer, Stack, Text, toast, } from '@elytracms/studio/ui';
|
|
7
7
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
8
8
|
import { LocaleSwitcher, displayedFieldFallback, hasLocaleVariant, localeChipLabel, setStudioLocale, } from '@elytracms/studio/lib/locale';
|
|
@@ -17,6 +17,8 @@ import { ReferencesPanel } from '../references/references-panel';
|
|
|
17
17
|
import { InspectorSidebar } from '../inspector/inspector-sidebar';
|
|
18
18
|
import { DocumentEditorProvider } from './document-editor-context';
|
|
19
19
|
import { VersionsPane } from './versions-pane';
|
|
20
|
+
import { IssuesPane } from './issues-pane';
|
|
21
|
+
import { DetailsPane } from './details-pane';
|
|
20
22
|
import { useSetBreadcrumb } from '../breadcrumb-context';
|
|
21
23
|
import { resolveDeploymentFrontendUrl, resolveDeploymentRoutes } from '@elytracms/studio/lib/workspace';
|
|
22
24
|
import { usePublishedDocuments } from '@elytracms/studio/lib/cms/published-documents';
|
|
@@ -24,19 +26,10 @@ export function DetailEditor({ projectId, collectionId, documentId, focusPath, }
|
|
|
24
26
|
const cms = useCms();
|
|
25
27
|
const collection = cms.getCollection(collectionId);
|
|
26
28
|
const doc = cms.getDocument({ collection: collectionId, id: documentId });
|
|
27
|
-
// EC-
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// missing so the fixed singleton address always resolves, never "not found".
|
|
31
|
-
const isSingletonDoc = collection !== undefined && isSingleton(collection) && documentId === singletonDocId(collection);
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
if (isSingletonDoc && doc === undefined)
|
|
34
|
-
cms.ensureSingletonDocument(collectionId);
|
|
35
|
-
}, [isSingletonDoc, doc, cms, collectionId]);
|
|
29
|
+
// EC-274: singleton opening is owned by `SingletonGate` (it resolves the lone
|
|
30
|
+
// document and materializes it). The detail editor just renders the document it
|
|
31
|
+
// is given by id — singletons need no special case here.
|
|
36
32
|
if (!collection || !doc) {
|
|
37
|
-
if (isSingletonDoc) {
|
|
38
|
-
return (_jsx("div", { className: "grid h-full place-items-center p-8", children: _jsxs(Text, { size: "sm", tone: "muted", children: ["Opening ", collection?.form?.label ?? collectionId, "\u2026"] }) }));
|
|
39
|
-
}
|
|
40
33
|
return (_jsx("div", { className: "grid h-full place-items-center p-8", children: _jsxs(Stack, { gap: "3", align: "center", className: "text-center", children: [_jsx(Heading, { level: 2, size: "h2", children: "Document not found" }), _jsxs(Link, { to: STUDIO_PROJECT_ROUTE, params: { projectId, _splat: studioPath.cmsCollection(collectionId) }, className: "text-sm text-primary hover:underline", children: ["Back to ", collectionId] })] }) }));
|
|
41
34
|
}
|
|
42
35
|
return (_jsx(EditorBody, { projectId: projectId, collection: collection, doc: doc, focusPath: focusPath }, `${collectionId}/${documentId}`));
|
|
@@ -143,29 +136,50 @@ function EditorBody({ projectId, collection, doc, focusPath, }) {
|
|
|
143
136
|
const REFERENCES_TAB = 'references';
|
|
144
137
|
const editorTabs = [...tabs, REFERENCES_TAB];
|
|
145
138
|
const [activeTab, setActiveTab] = useState(tabs[0]);
|
|
146
|
-
|
|
139
|
+
// EC-285: the reserved `sidebar` group is document-level metadata (slug, author…)
|
|
140
|
+
// — it renders in the Details inspector pane, not as a content tab, so it is
|
|
141
|
+
// excluded from the tab fields here and collected once below.
|
|
142
|
+
const sidebarFieldDefs = useMemo(() => sidebarFields(collection), [collection]);
|
|
143
|
+
// EC-273: only STATICALLY hidden fields (`hidden: true`) are structurally
|
|
144
|
+
// excluded here; a conditionally (predicate) hidden field stays in the tab and
|
|
145
|
+
// is evaluated per-render against the current values (it may show or hide as the
|
|
146
|
+
// editor types).
|
|
147
|
+
const tabFields = collection.fields.filter((f) => (f.form?.tab ?? tabs[0]) === activeTab &&
|
|
148
|
+
!staticFieldHidden(f) &&
|
|
149
|
+
f.form?.group !== SIDEBAR_FIELD_GROUP);
|
|
147
150
|
const groups = groupFields(tabFields, collection);
|
|
148
151
|
// EC-188 (AD-12): a composition (`blocks`) field is a special content feature,
|
|
149
152
|
// not a field-row — it takes over its tab with the full page-builder canvas.
|
|
150
153
|
// Convention: such a field lives on its own dedicated fieldset tab.
|
|
151
154
|
const canvasField = tabFields.find(isBlocksField);
|
|
152
|
-
// Reference deep links (EC-172): `?field=<index path>` pinpoints the exact
|
|
153
|
-
// field — switch to its tab (and locale for localized paths), scroll the
|
|
154
|
-
// control into view, and ring-highlight the field group.
|
|
155
155
|
const [highlightedField, setHighlightedField] = useState(null);
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
// EC-285: the form-path inspector's active pane, controlled so a jump to a
|
|
157
|
+
// `sidebar`-group field can open the Details pane (where it renders). Undefined
|
|
158
|
+
// = uncontrolled (the sidebar defaults to its first pane).
|
|
159
|
+
const [inspectorPaneId, setInspectorPaneId] = useState();
|
|
160
|
+
// Focus a field by name: switch to its tab (and locale, when given), scroll the
|
|
161
|
+
// control into view, and ring-highlight it. Shared by the reference deep-link
|
|
162
|
+
// (`focusPath`, EC-172) and the Issues pane's jump-to-field (EC-283).
|
|
163
|
+
const focusTimersRef = useRef([]);
|
|
164
|
+
const focusField = useCallback((fieldName, localeHint) => {
|
|
165
|
+
const field = collection.fields.find((f) => f.name === fieldName);
|
|
166
|
+
if (!field)
|
|
158
167
|
return;
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
168
|
+
// EC-285: a `sidebar`-group field renders in the Details inspector pane, not
|
|
169
|
+
// a content tab — open that pane instead of switching tabs.
|
|
170
|
+
if (field.form?.group === SIDEBAR_FIELD_GROUP) {
|
|
171
|
+
setInspectorPaneId('details');
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const fieldTabs = collection.form?.tabs ?? ['main'];
|
|
175
|
+
setActiveTab(field.form?.tab ?? fieldTabs[0]);
|
|
176
|
+
}
|
|
177
|
+
if (localeHint !== undefined && cms.localeConfig.locales.includes(localeHint)) {
|
|
178
|
+
setStudioLocale(localeHint);
|
|
167
179
|
}
|
|
168
180
|
setHighlightedField(field.name);
|
|
181
|
+
// Clear any timers from a prior jump so back-to-back jumps don't fight.
|
|
182
|
+
focusTimersRef.current.forEach((t) => window.clearTimeout(t));
|
|
169
183
|
const scrollTimer = window.setTimeout(() => {
|
|
170
184
|
// Some controls (relation/asset pickers) don't render the input id —
|
|
171
185
|
// the field label (`htmlFor`) is always present.
|
|
@@ -174,11 +188,18 @@ function EditorBody({ projectId, collection, doc, focusPath, }) {
|
|
|
174
188
|
control?.scrollIntoView({ block: 'center', behavior: 'smooth' });
|
|
175
189
|
}, 60);
|
|
176
190
|
const clearTimer = window.setTimeout(() => setHighlightedField(null), 3200);
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
focusTimersRef.current = [scrollTimer, clearTimer];
|
|
192
|
+
}, [collection, cms.localeConfig]);
|
|
193
|
+
useEffect(() => () => focusTimersRef.current.forEach((t) => window.clearTimeout(t)), []);
|
|
194
|
+
// Reference deep links (EC-172): `?field=<index path>` pinpoints the exact field.
|
|
195
|
+
useEffect(() => {
|
|
196
|
+
if (!focusPath)
|
|
197
|
+
return;
|
|
198
|
+
const parsed = parseDocumentFieldPath(focusPath);
|
|
199
|
+
if (!parsed)
|
|
200
|
+
return;
|
|
201
|
+
focusField(parsed.field, parsed.locale);
|
|
202
|
+
}, [focusPath, focusField]);
|
|
182
203
|
function getValue(field) {
|
|
183
204
|
// EC-226: read from the active VIEW (the draft, or the pinned published
|
|
184
205
|
// snapshot when viewing Published) — never directly from `draft`.
|
|
@@ -211,6 +232,40 @@ function EditorBody({ projectId, collection, doc, focusPath, }) {
|
|
|
211
232
|
return { ...d, values };
|
|
212
233
|
});
|
|
213
234
|
}
|
|
235
|
+
// EC-273: conditional-visibility context — the draft's values for the active
|
|
236
|
+
// locale, against which a field's `hidden(values)` predicate is evaluated. A
|
|
237
|
+
// hidden field's row is omitted (and it is not validated). Recomputed as the
|
|
238
|
+
// draft changes, so a field shows/hides live as the editor types.
|
|
239
|
+
const conditionValues = { ...draft.values, ...(draft.localized?.[locale] ?? {}) };
|
|
240
|
+
const isHidden = (field) => isFieldHidden(field, { values: conditionValues });
|
|
241
|
+
const visibleSidebarFields = sidebarFieldDefs.filter((f) => !isHidden(f));
|
|
242
|
+
// One document field row (label + fallback/translation/read-only badges + the
|
|
243
|
+
// control), shared by the content groups and the EC-285 Details pane so a
|
|
244
|
+
// sidebar field renders identically — same control, validation, localization,
|
|
245
|
+
// and EC-283 highlight/jump target — wherever it surfaces. Returns null when the
|
|
246
|
+
// field is conditionally hidden (EC-273).
|
|
247
|
+
function renderFieldRow(field) {
|
|
248
|
+
if (isHidden(field))
|
|
249
|
+
return null;
|
|
250
|
+
// Field-level read-only (the Lock badge) vs the view-level read-only
|
|
251
|
+
// (Published perspective) — the control honors both.
|
|
252
|
+
const fieldLevelReadOnly = cms.isFieldReadOnly(collection.id, field);
|
|
253
|
+
const fieldReadOnly = viewReadOnly || fieldLevelReadOnly;
|
|
254
|
+
const localized = isFieldLocalized(collection, field.name);
|
|
255
|
+
// Fallback visibility (EC-176): the control DISPLAYS the fallback value, and
|
|
256
|
+
// this marker says so on the exact field.
|
|
257
|
+
const fallback = localized
|
|
258
|
+
? displayedFieldFallback(collection, viewDoc, field.name, locale, cms.localeConfig)
|
|
259
|
+
: null;
|
|
260
|
+
// The variant was created in this editing session (the saved document doesn't
|
|
261
|
+
// have it yet): editing a fallback-shown value is an explicit translation act.
|
|
262
|
+
// Moot (and hidden) while viewing the read-only published snapshot.
|
|
263
|
+
const newlyTranslated = !viewReadOnly &&
|
|
264
|
+
localized &&
|
|
265
|
+
hasLocaleVariant(draft, field.name, locale) &&
|
|
266
|
+
!hasLocaleVariant(doc, field.name, locale);
|
|
267
|
+
return (_jsx(Field, { className: cn('rounded-md transition-shadow', highlightedField === field.name && 'bg-primary/5 p-2 ring-2 ring-primary/70'), label: _jsxs(Row, { gap: "2", children: [_jsx("span", { children: fieldLabel(field) }), field.validation?.required ? _jsx("span", { className: "text-destructive", children: "*" }) : null, localized ? _jsx(Badge, { variant: "outline", children: locale }) : null, fallback ? (_jsxs(Badge, { variant: "warning", title: fallbackTitle(fallback), "data-testid": `field-fallback-${field.name}`, children: ["showing ", localeChipLabel(fallback.sourceLocale)] })) : null, newlyTranslated ? (_jsxs(Badge, { variant: "success", "data-testid": `field-translated-${field.name}`, children: [_jsx(Languages, { className: "size-3" }), " translated to ", localeChipLabel(locale)] })) : null, fieldLevelReadOnly ? (_jsxs(Badge, { variant: "outline", children: [_jsx(Lock, { className: "size-3" }), " read-only"] })) : null, _jsx(Spacer, {})] }), htmlFor: `f-${field.name}`, hint: fallback ? (_jsxs(_Fragment, { children: ["Showing the ", localeChipLabel(fallback.sourceLocale), " (fallback) value \u2014 edit to translate to ", localeChipLabel(locale), ". Clearing the ", localeChipLabel(locale), " text falls back again."] })) : (field.form?.description), error: fieldReadOnly ? undefined : errorsByField.get(field.name), children: _jsx(FieldControl, { id: `f-${field.name}`, field: field, value: getValue(field), onChange: (v) => setValue(field, v), readOnly: fieldReadOnly }) }, field.name));
|
|
268
|
+
}
|
|
214
269
|
function save() {
|
|
215
270
|
cms.saveDocument(draft);
|
|
216
271
|
}
|
|
@@ -234,7 +289,42 @@ function EditorBody({ projectId, collection, doc, focusPath, }) {
|
|
|
234
289
|
icon: _jsx(History, { className: "size-3.5" }),
|
|
235
290
|
render: () => _jsx(VersionsPane, {}),
|
|
236
291
|
}), []);
|
|
237
|
-
|
|
292
|
+
// The frame-owned `Issues` pane (EC-283) — the document-scoped validation
|
|
293
|
+
// surface that replaces the always-on footer band. The tab carries a count
|
|
294
|
+
// badge (error- vs warning-toned) so a non-zero count is discoverable from
|
|
295
|
+
// any tab; document-level issues (e.g. EC-260 nesting-depth) live only here.
|
|
296
|
+
const issuesPane = useMemo(() => ({
|
|
297
|
+
id: 'issues',
|
|
298
|
+
label: 'Issues',
|
|
299
|
+
icon: _jsx(CircleAlert, { className: "size-3.5" }),
|
|
300
|
+
badge: issues.length === 0 ? undefined : (_jsx(Badge, { variant: errorCount > 0 ? 'error' : 'warning', className: "px-1.5 py-0 leading-none", children: issues.length })),
|
|
301
|
+
render: () => (_jsx(IssuesPane, { issues: issues, collection: collection, onJumpToField: focusField })),
|
|
302
|
+
}), [issues, errorCount, collection, focusField]);
|
|
303
|
+
// EC-284 + EC-285: the document-metadata pane — slot assignment (EC-284) and/or
|
|
304
|
+
// the document-level `sidebar`-group fields (EC-285). Present only when the
|
|
305
|
+
// collection has either, so it never adds an empty tab elsewhere. First in the
|
|
306
|
+
// order, so a slotted / sidebar-bearing document opens straight to it. Not
|
|
307
|
+
// memoized: its render closes over per-render edit state (draft, highlight,
|
|
308
|
+
// field errors) via `renderFieldRow`, and the inspector re-renders with the rest
|
|
309
|
+
// of the editor anyway, so a stable pane identity would buy nothing here.
|
|
310
|
+
const detailsPane = hasAliases(collection) || visibleSidebarFields.length > 0
|
|
311
|
+
? {
|
|
312
|
+
id: 'details',
|
|
313
|
+
label: 'Details',
|
|
314
|
+
icon: _jsx(Tag, { className: "size-3.5" }),
|
|
315
|
+
render: () => (_jsx(DetailsPane, { collection: collection, doc: draft, siblings: cms.documentsOf(collection.id), readOnly: viewReadOnly, fields: visibleSidebarFields, renderField: renderFieldRow, onAliasChange: (alias) => setDraft((d) => {
|
|
316
|
+
const next = { ...d };
|
|
317
|
+
if (alias === undefined)
|
|
318
|
+
delete next.alias;
|
|
319
|
+
else
|
|
320
|
+
next.alias = alias;
|
|
321
|
+
return next;
|
|
322
|
+
}) })),
|
|
323
|
+
}
|
|
324
|
+
: null;
|
|
325
|
+
const trailingPanes = detailsPane
|
|
326
|
+
? [detailsPane, versionsPane, issuesPane]
|
|
327
|
+
: [versionsPane, issuesPane];
|
|
238
328
|
// EC-268: the Publish button is its own indicator — pending while the publish
|
|
239
329
|
// round-trips, a brief success, and an error toast if it rejects at transport.
|
|
240
330
|
const [publishState, setPublishState] = useState('idle');
|
|
@@ -343,28 +433,14 @@ function EditorBody({ projectId, collection, doc, focusPath, }) {
|
|
|
343
433
|
: 'No published version found for this document.' }) })) : canvasField ? (_jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: _jsx(CompositionFieldEditor, { field: canvasField, value: getValue(canvasField), onChange: (v) => setValue(canvasField, v), readOnly: viewReadOnly || cms.isFieldReadOnly(collection.id, canvasField), trailingPanes: trailingPanes }, `${canvasField.name}:${restoreNonce}:${perspective}`) })) : activeTab === REFERENCES_TAB ? (
|
|
344
434
|
// EC-269: mounted only while this tab is active → reference data loads on
|
|
345
435
|
// demand and is torn down on leave (no fetching during normal editing).
|
|
346
|
-
_jsx("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: _jsx("div", { className: "min-h-0 flex-1 overflow-auto p-4 sm:p-6", children: _jsx("div", { className: "mx-auto w-full max-w-2xl", children: _jsx(ReferencesPanel, { projectId: projectId, source: { type: 'document', id: documentKey(ref) }, target: { type: 'document', id: documentKey(ref) } }) }) }) })) : (_jsxs("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [_jsx("div", { className: "min-h-0 flex-1 overflow-auto p-4 sm:p-6", children: _jsx("div", { className: "mx-auto w-full max-w-2xl", children: _jsx(Stack, { gap: "6", children: groups.map((group) =>
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
const fallback = localized
|
|
355
|
-
? displayedFieldFallback(collection, viewDoc, field.name, locale, cms.localeConfig)
|
|
356
|
-
: null;
|
|
357
|
-
// The variant was created in this editing session (the
|
|
358
|
-
// saved document doesn't have it yet): editing a
|
|
359
|
-
// fallback-shown value is an explicit translation act. Moot
|
|
360
|
-
// (and hidden) while viewing the read-only published snapshot.
|
|
361
|
-
const newlyTranslated = !viewReadOnly &&
|
|
362
|
-
localized &&
|
|
363
|
-
hasLocaleVariant(draft, field.name, locale) &&
|
|
364
|
-
!hasLocaleVariant(doc, field.name, locale);
|
|
365
|
-
return (_jsx(Field, { className: cn('rounded-md transition-shadow', highlightedField === field.name &&
|
|
366
|
-
'bg-primary/5 p-2 ring-2 ring-primary/70'), label: _jsxs(Row, { gap: "2", children: [_jsx("span", { children: fieldLabel(field) }), field.validation?.required ? _jsx("span", { className: "text-destructive", children: "*" }) : null, localized ? _jsx(Badge, { variant: "outline", children: locale }) : null, fallback ? (_jsxs(Badge, { variant: "warning", title: fallbackTitle(fallback), "data-testid": `field-fallback-${field.name}`, children: ["showing ", localeChipLabel(fallback.sourceLocale)] })) : null, newlyTranslated ? (_jsxs(Badge, { variant: "success", "data-testid": `field-translated-${field.name}`, children: [_jsx(Languages, { className: "size-3" }), " translated to ", localeChipLabel(locale)] })) : null, fieldLevelReadOnly ? (_jsxs(Badge, { variant: "outline", children: [_jsx(Lock, { className: "size-3" }), " read-only"] })) : null, _jsx(Spacer, {})] }), htmlFor: `f-${field.name}`, hint: fallback ? (_jsxs(_Fragment, { children: ["Showing the ", localeChipLabel(fallback.sourceLocale), " (fallback) value \u2014 edit to translate to ", localeChipLabel(locale), ". Clearing the", ' ', localeChipLabel(locale), " text falls back again."] })) : (field.form?.description), error: fieldReadOnly ? undefined : errorsByField.get(field.name), children: _jsx(FieldControl, { id: `f-${field.name}`, field: field, value: getValue(field), onChange: (v) => setValue(field, v), readOnly: fieldReadOnly }) }, field.name));
|
|
367
|
-
}) })] }, group.name))) }) }) }), _jsx(InspectorSidebar, { panes: trailingPanes, className: "w-[320px] shrink-0 border-l border-border" })] })), _jsx("div", { className: "shrink-0 border-t border-border px-4 py-2 sm:px-6", children: _jsxs(Row, { gap: "2", children: [viewReadOnly ? (_jsxs(Badge, { variant: "outline", children: [_jsx(Lock, { className: "size-3" }), " read-only"] })) : (_jsxs(_Fragment, { children: [issues.length === 0 ? (_jsxs(Badge, { variant: "success", children: [_jsx(CircleCheck, { className: "size-3" }), " valid"] })) : (_jsxs(Badge, { variant: issues.some((i) => i.severity === 'error') ? 'error' : 'warning', children: [issues.length, " ", issues.length === 1 ? 'issue' : 'issues'] })), _jsx(Text, { size: "xs", tone: "muted", className: "min-w-0 truncate", children: issues[0]?.message ?? 'Document satisfies the collection schema.' })] })), _jsx(Spacer, {})] }) }), confirmAction !== null ? (_jsx(ReferenceConfirmDialog, { projectId: projectId, action: confirmAction, targets: confirmTargets, open: true, onOpenChange: (open) => {
|
|
436
|
+
_jsx("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: _jsx("div", { className: "min-h-0 flex-1 overflow-auto p-4 sm:p-6", children: _jsx("div", { className: "mx-auto w-full max-w-2xl", children: _jsx(ReferencesPanel, { projectId: projectId, source: { type: 'document', id: documentKey(ref) }, target: { type: 'document', id: documentKey(ref) } }) }) }) })) : (_jsxs("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [_jsx("div", { className: "min-h-0 flex-1 overflow-auto p-4 sm:p-6", children: _jsx("div", { className: "mx-auto w-full max-w-2xl", children: _jsx(Stack, { gap: "6", children: groups.map((group) => {
|
|
437
|
+
// EC-273: drop a fieldset whose every field is conditionally hidden,
|
|
438
|
+
// so the form never shows an empty panel header.
|
|
439
|
+
const visible = group.fields.filter((f) => !isHidden(f));
|
|
440
|
+
if (visible.length === 0)
|
|
441
|
+
return null;
|
|
442
|
+
return (_jsxs(Panel, { children: [_jsx(PanelHeader, { children: _jsx(Text, { size: "sm", weight: "semibold", className: "capitalize", children: group.name }) }), _jsx(Stack, { gap: "4", className: "p-4", children: visible.map(renderFieldRow) })] }, group.name));
|
|
443
|
+
}) }) }) }), _jsx(InspectorSidebar, { panes: trailingPanes, activeId: inspectorPaneId, onActiveChange: setInspectorPaneId, className: "w-[320px] shrink-0 border-l border-border" })] })), confirmAction !== null ? (_jsx(ReferenceConfirmDialog, { projectId: projectId, action: confirmAction, targets: confirmTargets, open: true, onOpenChange: (open) => {
|
|
368
444
|
if (!open)
|
|
369
445
|
setConfirmAction(null);
|
|
370
446
|
}, onConfirm: handleConfirmedAction })) : null] }) }));
|