@pyric/cli 0.1.0-alpha.9
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/LICENSE +216 -0
- package/README.md +156 -0
- package/README.md.orig +138 -0
- package/dist/assurance/attachment.d.ts +24 -0
- package/dist/assurance/attachment.d.ts.map +1 -0
- package/dist/assurance/attachment.js +138 -0
- package/dist/assurance/attachment.js.map +1 -0
- package/dist/assurance/browser.d.ts +7 -0
- package/dist/assurance/browser.d.ts.map +1 -0
- package/dist/assurance/browser.js +68 -0
- package/dist/assurance/browser.js.map +1 -0
- package/dist/assurance/campaign.d.ts +41 -0
- package/dist/assurance/campaign.d.ts.map +1 -0
- package/dist/assurance/campaign.js +364 -0
- package/dist/assurance/campaign.js.map +1 -0
- package/dist/assurance/capabilities.d.ts +7 -0
- package/dist/assurance/capabilities.d.ts.map +1 -0
- package/dist/assurance/capabilities.js +295 -0
- package/dist/assurance/capabilities.js.map +1 -0
- package/dist/assurance/cases.d.ts +14 -0
- package/dist/assurance/cases.d.ts.map +1 -0
- package/dist/assurance/cases.js +27 -0
- package/dist/assurance/cases.js.map +1 -0
- package/dist/assurance/generated-capabilities.d.ts +52 -0
- package/dist/assurance/generated-capabilities.d.ts.map +1 -0
- package/dist/assurance/generated-capabilities.js +329 -0
- package/dist/assurance/generated-capabilities.js.map +1 -0
- package/dist/assurance/index.d.ts +11 -0
- package/dist/assurance/index.d.ts.map +1 -0
- package/dist/assurance/index.js +9 -0
- package/dist/assurance/index.js.map +1 -0
- package/dist/assurance/runner.d.ts +3 -0
- package/dist/assurance/runner.d.ts.map +1 -0
- package/dist/assurance/runner.js +633 -0
- package/dist/assurance/runner.js.map +1 -0
- package/dist/assurance/tool-names.d.ts +4 -0
- package/dist/assurance/tool-names.d.ts.map +1 -0
- package/dist/assurance/tool-names.js +14 -0
- package/dist/assurance/tool-names.js.map +1 -0
- package/dist/assurance/tools.d.ts +19 -0
- package/dist/assurance/tools.d.ts.map +1 -0
- package/dist/assurance/tools.js +740 -0
- package/dist/assurance/tools.js.map +1 -0
- package/dist/assurance/types.d.ts +348 -0
- package/dist/assurance/types.d.ts.map +1 -0
- package/dist/assurance/types.js +7 -0
- package/dist/assurance/types.js.map +1 -0
- package/dist/assurance/validation.d.ts +8 -0
- package/dist/assurance/validation.d.ts.map +1 -0
- package/dist/assurance/validation.js +269 -0
- package/dist/assurance/validation.js.map +1 -0
- package/dist/bridge/client/bridge.d.ts +133 -0
- package/dist/bridge/client/bridge.d.ts.map +1 -0
- package/dist/bridge/client/bridge.js +429 -0
- package/dist/bridge/client/bridge.js.map +1 -0
- package/dist/bridge/client/dispatch.d.ts +41 -0
- package/dist/bridge/client/dispatch.d.ts.map +1 -0
- package/dist/bridge/client/dispatch.js +111 -0
- package/dist/bridge/client/dispatch.js.map +1 -0
- package/dist/bridge/client.d.ts +24 -0
- package/dist/bridge/client.d.ts.map +1 -0
- package/dist/bridge/client.js +26 -0
- package/dist/bridge/client.js.map +1 -0
- package/dist/bridge/protocol.d.ts +227 -0
- package/dist/bridge/protocol.d.ts.map +1 -0
- package/dist/bridge/protocol.js +131 -0
- package/dist/bridge/protocol.js.map +1 -0
- package/dist/bridge/server/audit.d.ts +19 -0
- package/dist/bridge/server/audit.d.ts.map +1 -0
- package/dist/bridge/server/audit.js +46 -0
- package/dist/bridge/server/audit.js.map +1 -0
- package/dist/bridge/server/bridge.d.ts +126 -0
- package/dist/bridge/server/bridge.d.ts.map +1 -0
- package/dist/bridge/server/bridge.js +383 -0
- package/dist/bridge/server/bridge.js.map +1 -0
- package/dist/bridge/server/headless.d.ts +36 -0
- package/dist/bridge/server/headless.d.ts.map +1 -0
- package/dist/bridge/server/headless.js +142 -0
- package/dist/bridge/server/headless.js.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.js +93 -0
- package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
- package/dist/bridge/server/local-bridge.d.ts +33 -0
- package/dist/bridge/server/local-bridge.d.ts.map +1 -0
- package/dist/bridge/server/local-bridge.js +41 -0
- package/dist/bridge/server/local-bridge.js.map +1 -0
- package/dist/bridge/server/logger.d.ts +28 -0
- package/dist/bridge/server/logger.d.ts.map +1 -0
- package/dist/bridge/server/logger.js +42 -0
- package/dist/bridge/server/logger.js.map +1 -0
- package/dist/bridge/server/mcp-contract.d.ts +21 -0
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
- package/dist/bridge/server/mcp-contract.js +62 -0
- package/dist/bridge/server/mcp-contract.js.map +1 -0
- package/dist/bridge/server/mcp.d.ts +26 -0
- package/dist/bridge/server/mcp.d.ts.map +1 -0
- package/dist/bridge/server/mcp.js +102 -0
- package/dist/bridge/server/mcp.js.map +1 -0
- package/dist/bridge/server/peer.d.ts +39 -0
- package/dist/bridge/server/peer.d.ts.map +1 -0
- package/dist/bridge/server/peer.js +189 -0
- package/dist/bridge/server/peer.js.map +1 -0
- package/dist/bridge/server/standalone.d.ts +49 -0
- package/dist/bridge/server/standalone.d.ts.map +1 -0
- package/dist/bridge/server/standalone.js +267 -0
- package/dist/bridge/server/standalone.js.map +1 -0
- package/dist/bridge/server/tool-metadata.d.ts +38 -0
- package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
- package/dist/bridge/server/tool-metadata.js +81 -0
- package/dist/bridge/server/tool-metadata.js.map +1 -0
- package/dist/bridge/server.d.ts +21 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +18 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/cli/database-rules.d.ts +43 -0
- package/dist/cli/database-rules.d.ts.map +1 -0
- package/dist/cli/database-rules.js +261 -0
- package/dist/cli/database-rules.js.map +1 -0
- package/dist/cli/dev-runner.d.ts +112 -0
- package/dist/cli/dev-runner.d.ts.map +1 -0
- package/dist/cli/dev-runner.js +239 -0
- package/dist/cli/dev-runner.js.map +1 -0
- package/dist/cli/firebase-json.d.ts +66 -0
- package/dist/cli/firebase-json.d.ts.map +1 -0
- package/dist/cli/firebase-json.js +60 -0
- package/dist/cli/firebase-json.js.map +1 -0
- package/dist/cli/firestore-indexes.d.ts +21 -0
- package/dist/cli/firestore-indexes.d.ts.map +1 -0
- package/dist/cli/firestore-indexes.js +39 -0
- package/dist/cli/firestore-indexes.js.map +1 -0
- package/dist/cli/index.d.ts +56 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +379 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +50 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +182 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-proxy.d.ts +10 -0
- package/dist/cli/mcp-proxy.d.ts.map +1 -0
- package/dist/cli/mcp-proxy.js +129 -0
- package/dist/cli/mcp-proxy.js.map +1 -0
- package/dist/cli/parse-args.d.ts +20 -0
- package/dist/cli/parse-args.d.ts.map +1 -0
- package/dist/cli/parse-args.js +69 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/rules.d.ts +55 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +199 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/scope.d.ts +12 -0
- package/dist/cli/scope.d.ts.map +1 -0
- package/dist/cli/scope.js +44 -0
- package/dist/cli/scope.js.map +1 -0
- package/dist/cli/serve.d.ts +122 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +844 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/service-commands.d.ts +8 -0
- package/dist/cli/service-commands.d.ts.map +1 -0
- package/dist/cli/service-commands.js +58 -0
- package/dist/cli/service-commands.js.map +1 -0
- package/dist/cli/snapshot.d.ts +22 -0
- package/dist/cli/snapshot.d.ts.map +1 -0
- package/dist/cli/snapshot.js +139 -0
- package/dist/cli/snapshot.js.map +1 -0
- package/dist/cli/storage-rules.d.ts +21 -0
- package/dist/cli/storage-rules.d.ts.map +1 -0
- package/dist/cli/storage-rules.js +121 -0
- package/dist/cli/storage-rules.js.map +1 -0
- package/dist/cli/verify.d.ts +23 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +349 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/credentials/core/memoize-ttl.d.ts +58 -0
- package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
- package/dist/credentials/core/memoize-ttl.js +88 -0
- package/dist/credentials/core/memoize-ttl.js.map +1 -0
- package/dist/credentials/core/types.d.ts +11 -0
- package/dist/credentials/core/types.d.ts.map +1 -0
- package/dist/credentials/core/types.js +2 -0
- package/dist/credentials/core/types.js.map +1 -0
- package/dist/credentials/node/from-adc.d.ts +10 -0
- package/dist/credentials/node/from-adc.d.ts.map +1 -0
- package/dist/credentials/node/from-adc.js +76 -0
- package/dist/credentials/node/from-adc.js.map +1 -0
- package/dist/credentials/node/from-service-account.d.ts +24 -0
- package/dist/credentials/node/from-service-account.d.ts.map +1 -0
- package/dist/credentials/node/from-service-account.js +108 -0
- package/dist/credentials/node/from-service-account.js.map +1 -0
- package/dist/credentials/node/index.d.ts +7 -0
- package/dist/credentials/node/index.d.ts.map +1 -0
- package/dist/credentials/node/index.js +7 -0
- package/dist/credentials/node/index.js.map +1 -0
- package/dist/discover/concurrency.d.ts +42 -0
- package/dist/discover/concurrency.d.ts.map +1 -0
- package/dist/discover/concurrency.js +113 -0
- package/dist/discover/concurrency.js.map +1 -0
- package/dist/discover/crawler-adapter.d.ts +48 -0
- package/dist/discover/crawler-adapter.d.ts.map +1 -0
- package/dist/discover/crawler-adapter.js +92 -0
- package/dist/discover/crawler-adapter.js.map +1 -0
- package/dist/discover/crawler.d.ts +294 -0
- package/dist/discover/crawler.d.ts.map +1 -0
- package/dist/discover/crawler.js +764 -0
- package/dist/discover/crawler.js.map +1 -0
- package/dist/discover/credential-free.d.ts +19 -0
- package/dist/discover/credential-free.d.ts.map +1 -0
- package/dist/discover/credential-free.js +18 -0
- package/dist/discover/credential-free.js.map +1 -0
- package/dist/discover/findCollectionGroup.d.ts +44 -0
- package/dist/discover/findCollectionGroup.d.ts.map +1 -0
- package/dist/discover/findCollectionGroup.js +81 -0
- package/dist/discover/findCollectionGroup.js.map +1 -0
- package/dist/discover/firestore-source.d.ts +60 -0
- package/dist/discover/firestore-source.d.ts.map +1 -0
- package/dist/discover/firestore-source.js +11 -0
- package/dist/discover/firestore-source.js.map +1 -0
- package/dist/discover/index.d.ts +3 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +5 -0
- package/dist/discover/index.js.map +1 -0
- package/dist/discover/merge.d.ts +108 -0
- package/dist/discover/merge.d.ts.map +1 -0
- package/dist/discover/merge.js +394 -0
- package/dist/discover/merge.js.map +1 -0
- package/dist/discover/session.d.ts +116 -0
- package/dist/discover/session.d.ts.map +1 -0
- package/dist/discover/session.js +331 -0
- package/dist/discover/session.js.map +1 -0
- package/dist/discover/tools.d.ts +58 -0
- package/dist/discover/tools.d.ts.map +1 -0
- package/dist/discover/tools.js +115 -0
- package/dist/discover/tools.js.map +1 -0
- package/dist/discover/types.d.ts +190 -0
- package/dist/discover/types.d.ts.map +1 -0
- package/dist/discover/types.js +12 -0
- package/dist/discover/types.js.map +1 -0
- package/dist/discover/wire.d.ts +70 -0
- package/dist/discover/wire.d.ts.map +1 -0
- package/dist/discover/wire.js +309 -0
- package/dist/discover/wire.js.map +1 -0
- package/dist/functions-rtdb/child.d.ts +52 -0
- package/dist/functions-rtdb/child.d.ts.map +1 -0
- package/dist/functions-rtdb/child.js +283 -0
- package/dist/functions-rtdb/child.js.map +1 -0
- package/dist/functions-rtdb/delivery.d.ts +4 -0
- package/dist/functions-rtdb/delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/delivery.js +2 -0
- package/dist/functions-rtdb/delivery.js.map +1 -0
- package/dist/functions-rtdb/discovery.d.ts +41 -0
- package/dist/functions-rtdb/discovery.d.ts.map +1 -0
- package/dist/functions-rtdb/discovery.js +86 -0
- package/dist/functions-rtdb/discovery.js.map +1 -0
- package/dist/functions-rtdb/event.d.ts +20 -0
- package/dist/functions-rtdb/event.d.ts.map +1 -0
- package/dist/functions-rtdb/event.js +45 -0
- package/dist/functions-rtdb/event.js.map +1 -0
- package/dist/functions-rtdb/execution.d.ts +20 -0
- package/dist/functions-rtdb/execution.d.ts.map +1 -0
- package/dist/functions-rtdb/execution.js +70 -0
- package/dist/functions-rtdb/execution.js.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.js +36 -0
- package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
- package/dist/functions-rtdb/project.d.ts +7 -0
- package/dist/functions-rtdb/project.d.ts.map +1 -0
- package/dist/functions-rtdb/project.js +54 -0
- package/dist/functions-rtdb/project.js.map +1 -0
- package/dist/functions-rtdb/projection.d.ts +14 -0
- package/dist/functions-rtdb/projection.d.ts.map +1 -0
- package/dist/functions-rtdb/projection.js +65 -0
- package/dist/functions-rtdb/projection.js.map +1 -0
- package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
- package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
- package/dist/functions-rtdb/reference-pattern.js +14 -0
- package/dist/functions-rtdb/reference-pattern.js.map +1 -0
- package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
- package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/remote-delivery.js +11 -0
- package/dist/functions-rtdb/remote-delivery.js.map +1 -0
- package/dist/pkg-version.d.ts +2 -0
- package/dist/pkg-version.d.ts.map +1 -0
- package/dist/pkg-version.js +47 -0
- package/dist/pkg-version.js.map +1 -0
- package/dist/register/esm-exports.d.ts +26 -0
- package/dist/register/esm-exports.d.ts.map +1 -0
- package/dist/register/esm-exports.js +61 -0
- package/dist/register/esm-exports.js.map +1 -0
- package/dist/register/hooks.d.ts +13 -0
- package/dist/register/hooks.d.ts.map +1 -0
- package/dist/register/hooks.js +15 -0
- package/dist/register/hooks.js.map +1 -0
- package/dist/register/index.d.ts +5 -0
- package/dist/register/index.d.ts.map +1 -0
- package/dist/register/index.js +124 -0
- package/dist/register/index.js.map +1 -0
- package/dist/register/mapping.d.ts +19 -0
- package/dist/register/mapping.d.ts.map +1 -0
- package/dist/register/mapping.js +35 -0
- package/dist/register/mapping.js.map +1 -0
- package/dist/remote/index.d.ts +232 -0
- package/dist/remote/index.d.ts.map +1 -0
- package/dist/remote/index.js +720 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/rtdb/crawl-snapshot.d.ts +17 -0
- package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
- package/dist/rtdb/crawl-snapshot.js +72 -0
- package/dist/rtdb/crawl-snapshot.js.map +1 -0
- package/dist/rtdb/inspection.d.ts +8 -0
- package/dist/rtdb/inspection.d.ts.map +1 -0
- package/dist/rtdb/inspection.js +111 -0
- package/dist/rtdb/inspection.js.map +1 -0
- package/dist/rtdb/load-rules-document.d.ts +25 -0
- package/dist/rtdb/load-rules-document.d.ts.map +1 -0
- package/dist/rtdb/load-rules-document.js +38 -0
- package/dist/rtdb/load-rules-document.js.map +1 -0
- package/dist/rtdb/rules-generation-tool.d.ts +4 -0
- package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
- package/dist/rtdb/rules-generation-tool.js +35 -0
- package/dist/rtdb/rules-generation-tool.js.map +1 -0
- package/dist/rtdb/rules-json.d.ts +8 -0
- package/dist/rtdb/rules-json.d.ts.map +1 -0
- package/dist/rtdb/rules-json.js +17 -0
- package/dist/rtdb/rules-json.js.map +1 -0
- package/dist/serve/bridge-mount.d.ts +36 -0
- package/dist/serve/bridge-mount.d.ts.map +1 -0
- package/dist/serve/bridge-mount.js +162 -0
- package/dist/serve/bridge-mount.js.map +1 -0
- package/dist/serve/bundler.d.ts +110 -0
- package/dist/serve/bundler.d.ts.map +1 -0
- package/dist/serve/bundler.js +432 -0
- package/dist/serve/bundler.js.map +1 -0
- package/dist/serve/capture-store.d.ts +27 -0
- package/dist/serve/capture-store.d.ts.map +1 -0
- package/dist/serve/capture-store.js +47 -0
- package/dist/serve/capture-store.js.map +1 -0
- package/dist/serve/discovery.d.ts +71 -0
- package/dist/serve/discovery.d.ts.map +1 -0
- package/dist/serve/discovery.js +158 -0
- package/dist/serve/discovery.js.map +1 -0
- package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
- package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
- package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
- package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
- package/dist/serve/docs-ui/docs/api-reference.md +67 -0
- package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
- package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
- package/dist/serve/docs-ui/docs/index.html +2 -0
- package/dist/serve/docs-ui/docs/index.json +18637 -0
- package/dist/serve/docs-ui/docs/overview/index.html +23 -0
- package/dist/serve/docs-ui/docs/overview.md +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
- package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
- package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
- package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
- package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
- package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
- package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
- package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
- package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
- package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
- package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
- package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
- package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
- package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
- package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
- package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
- package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
- package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
- package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
- package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
- package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
- package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
- package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
- package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
- package/dist/serve/docs-ui/docs/skills/index.html +20 -0
- package/dist/serve/docs-ui/docs/skills.md +34 -0
- package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
- package/dist/serve/docs-ui/docs/start-building.md +64 -0
- package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
- package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
- package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
- package/dist/serve/docs-ui/docs/store-files.md +25 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
- package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
- package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
- package/dist/serve/docs-ui/docs/ui/index.html +76 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
- package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
- package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
- package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
- package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
- package/dist/serve/docs-ui/docs/ui.md +90 -0
- package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
- package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
- package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
- package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
- package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
- package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
- package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
- package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
- package/dist/serve/docs-ui/index.html +1 -0
- package/dist/serve/docs-ui/llms.txt +308 -0
- package/dist/serve/entries/ai.d.ts +4 -0
- package/dist/serve/entries/ai.d.ts.map +1 -0
- package/dist/serve/entries/ai.js +184 -0
- package/dist/serve/entries/ai.js.map +1 -0
- package/dist/serve/entries/app-backend.d.ts +2 -0
- package/dist/serve/entries/app-backend.d.ts.map +1 -0
- package/dist/serve/entries/app-backend.js +4 -0
- package/dist/serve/entries/app-backend.js.map +1 -0
- package/dist/serve/entries/app-client.d.ts +5 -0
- package/dist/serve/entries/app-client.d.ts.map +1 -0
- package/dist/serve/entries/app-client.js +23 -0
- package/dist/serve/entries/app-client.js.map +1 -0
- package/dist/serve/entries/app-session-store.d.ts +14 -0
- package/dist/serve/entries/app-session-store.d.ts.map +1 -0
- package/dist/serve/entries/app-session-store.js +37 -0
- package/dist/serve/entries/app-session-store.js.map +1 -0
- package/dist/serve/entries/app.d.ts +2 -0
- package/dist/serve/entries/app.d.ts.map +1 -0
- package/dist/serve/entries/app.js +10 -0
- package/dist/serve/entries/app.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +52 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-core.js +118 -0
- package/dist/serve/entries/auth-helper-core.js.map +1 -0
- package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
- package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-dom.js +116 -0
- package/dist/serve/entries/auth-helper-dom.js.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.js +11 -0
- package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
- package/dist/serve/entries/auth.d.ts +77 -0
- package/dist/serve/entries/auth.d.ts.map +1 -0
- package/dist/serve/entries/auth.js +201 -0
- package/dist/serve/entries/auth.js.map +1 -0
- package/dist/serve/entries/bridge-url.d.ts +25 -0
- package/dist/serve/entries/bridge-url.d.ts.map +1 -0
- package/dist/serve/entries/bridge-url.js +30 -0
- package/dist/serve/entries/bridge-url.js.map +1 -0
- package/dist/serve/entries/database.d.ts +46 -0
- package/dist/serve/entries/database.d.ts.map +1 -0
- package/dist/serve/entries/database.js +80 -0
- package/dist/serve/entries/database.js.map +1 -0
- package/dist/serve/entries/firestore.d.ts +104 -0
- package/dist/serve/entries/firestore.d.ts.map +1 -0
- package/dist/serve/entries/firestore.js +202 -0
- package/dist/serve/entries/firestore.js.map +1 -0
- package/dist/serve/entries/init.d.ts +2 -0
- package/dist/serve/entries/init.d.ts.map +1 -0
- package/dist/serve/entries/init.js +40 -0
- package/dist/serve/entries/init.js.map +1 -0
- package/dist/serve/entries/keepalive.d.ts +20 -0
- package/dist/serve/entries/keepalive.d.ts.map +1 -0
- package/dist/serve/entries/keepalive.js +38 -0
- package/dist/serve/entries/keepalive.js.map +1 -0
- package/dist/serve/entries/messaging-sw.d.ts +10 -0
- package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
- package/dist/serve/entries/messaging-sw.js +36 -0
- package/dist/serve/entries/messaging-sw.js.map +1 -0
- package/dist/serve/entries/messaging.d.ts +11 -0
- package/dist/serve/entries/messaging.d.ts.map +1 -0
- package/dist/serve/entries/messaging.js +53 -0
- package/dist/serve/entries/messaging.js.map +1 -0
- package/dist/serve/entries/runtime.d.ts +46 -0
- package/dist/serve/entries/runtime.d.ts.map +1 -0
- package/dist/serve/entries/runtime.js +435 -0
- package/dist/serve/entries/runtime.js.map +1 -0
- package/dist/serve/entries/session-store.d.ts +48 -0
- package/dist/serve/entries/session-store.d.ts.map +1 -0
- package/dist/serve/entries/session-store.js +82 -0
- package/dist/serve/entries/session-store.js.map +1 -0
- package/dist/serve/entries/storage.d.ts +25 -0
- package/dist/serve/entries/storage.d.ts.map +1 -0
- package/dist/serve/entries/storage.js +61 -0
- package/dist/serve/entries/storage.js.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.js +217 -0
- package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
- package/dist/serve/entries/worker-runtime.d.ts +10 -0
- package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
- package/dist/serve/entries/worker-runtime.js +59 -0
- package/dist/serve/entries/worker-runtime.js.map +1 -0
- package/dist/serve/init-payload.d.ts +21 -0
- package/dist/serve/init-payload.d.ts.map +1 -0
- package/dist/serve/init-payload.js +2 -0
- package/dist/serve/init-payload.js.map +1 -0
- package/dist/serve/namespace.d.ts +73 -0
- package/dist/serve/namespace.d.ts.map +1 -0
- package/dist/serve/namespace.js +470 -0
- package/dist/serve/namespace.js.map +1 -0
- package/dist/serve/open-browser.d.ts +23 -0
- package/dist/serve/open-browser.d.ts.map +1 -0
- package/dist/serve/open-browser.js +58 -0
- package/dist/serve/open-browser.js.map +1 -0
- package/dist/serve/rules.d.ts +77 -0
- package/dist/serve/rules.d.ts.map +1 -0
- package/dist/serve/rules.js +202 -0
- package/dist/serve/rules.js.map +1 -0
- package/dist/serve/sandbox-marker.d.ts +9 -0
- package/dist/serve/sandbox-marker.d.ts.map +1 -0
- package/dist/serve/sandbox-marker.js +31 -0
- package/dist/serve/sandbox-marker.js.map +1 -0
- package/dist/serve/server.d.ts +135 -0
- package/dist/serve/server.d.ts.map +1 -0
- package/dist/serve/server.js +328 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/standalone-assets.d.ts +67 -0
- package/dist/serve/standalone-assets.d.ts.map +1 -0
- package/dist/serve/standalone-assets.js +134 -0
- package/dist/serve/standalone-assets.js.map +1 -0
- package/dist/serve/state-store.d.ts +45 -0
- package/dist/serve/state-store.d.ts.map +1 -0
- package/dist/serve/state-store.js +120 -0
- package/dist/serve/state-store.js.map +1 -0
- package/dist/serve/studio/disk-project-store.d.ts +9 -0
- package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
- package/dist/serve/studio/disk-project-store.js +173 -0
- package/dist/serve/studio/disk-project-store.js.map +1 -0
- package/dist/serve/studio/disk-workspace.d.ts +14 -0
- package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
- package/dist/serve/studio/disk-workspace.js +152 -0
- package/dist/serve/studio/disk-workspace.js.map +1 -0
- package/dist/serve/studio/index.d.ts +10 -0
- package/dist/serve/studio/index.d.ts.map +1 -0
- package/dist/serve/studio/index.js +9 -0
- package/dist/serve/studio/index.js.map +1 -0
- package/dist/serve/studio/routes.d.ts +40 -0
- package/dist/serve/studio/routes.d.ts.map +1 -0
- package/dist/serve/studio/routes.js +182 -0
- package/dist/serve/studio/routes.js.map +1 -0
- package/dist/serve/studio/store-types.d.ts +45 -0
- package/dist/serve/studio/store-types.d.ts.map +1 -0
- package/dist/serve/studio/store-types.js +11 -0
- package/dist/serve/studio/store-types.js.map +1 -0
- package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
- package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
- package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
- package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
- package/dist/serve/studio-ui/index.html +32 -0
- package/dist/serve/studio-ui/pyric-logo.svg +76 -0
- package/dist/serve/vite-plugin.d.ts +57 -0
- package/dist/serve/vite-plugin.d.ts.map +1 -0
- package/dist/serve/vite-plugin.js +658 -0
- package/dist/serve/vite-plugin.js.map +1 -0
- package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
- package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/client/admin-firestore.js +26 -0
- package/dist/serve/worker/client/admin-firestore.js.map +1 -0
- package/dist/serve/worker/client/ai.d.ts +31 -0
- package/dist/serve/worker/client/ai.d.ts.map +1 -0
- package/dist/serve/worker/client/ai.js +89 -0
- package/dist/serve/worker/client/ai.js.map +1 -0
- package/dist/serve/worker/client/auth.d.ts +168 -0
- package/dist/serve/worker/client/auth.d.ts.map +1 -0
- package/dist/serve/worker/client/auth.js +322 -0
- package/dist/serve/worker/client/auth.js.map +1 -0
- package/dist/serve/worker/client/connection.d.ts +80 -0
- package/dist/serve/worker/client/connection.d.ts.map +1 -0
- package/dist/serve/worker/client/connection.js +148 -0
- package/dist/serve/worker/client/connection.js.map +1 -0
- package/dist/serve/worker/client/core.d.ts +109 -0
- package/dist/serve/worker/client/core.d.ts.map +1 -0
- package/dist/serve/worker/client/core.js +248 -0
- package/dist/serve/worker/client/core.js.map +1 -0
- package/dist/serve/worker/client/disconnect.d.ts +7 -0
- package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
- package/dist/serve/worker/client/disconnect.js +26 -0
- package/dist/serve/worker/client/disconnect.js.map +1 -0
- package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
- package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-reads.js +139 -0
- package/dist/serve/worker/client/firestore-reads.js.map +1 -0
- package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
- package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-refs.js +167 -0
- package/dist/serve/worker/client/firestore-refs.js.map +1 -0
- package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
- package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-writes.js +169 -0
- package/dist/serve/worker/client/firestore-writes.js.map +1 -0
- package/dist/serve/worker/client/handles.d.ts +73 -0
- package/dist/serve/worker/client/handles.d.ts.map +1 -0
- package/dist/serve/worker/client/handles.js +4 -0
- package/dist/serve/worker/client/handles.js.map +1 -0
- package/dist/serve/worker/client/messaging.d.ts +16 -0
- package/dist/serve/worker/client/messaging.d.ts.map +1 -0
- package/dist/serve/worker/client/messaging.js +60 -0
- package/dist/serve/worker/client/messaging.js.map +1 -0
- package/dist/serve/worker/client/presence.d.ts +43 -0
- package/dist/serve/worker/client/presence.d.ts.map +1 -0
- package/dist/serve/worker/client/presence.js +132 -0
- package/dist/serve/worker/client/presence.js.map +1 -0
- package/dist/serve/worker/client/rtdb.d.ts +36 -0
- package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/client/rtdb.js +241 -0
- package/dist/serve/worker/client/rtdb.js.map +1 -0
- package/dist/serve/worker/client/rules.d.ts +24 -0
- package/dist/serve/worker/client/rules.d.ts.map +1 -0
- package/dist/serve/worker/client/rules.js +44 -0
- package/dist/serve/worker/client/rules.js.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.js +53 -0
- package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
- package/dist/serve/worker/client/snapshots.d.ts +32 -0
- package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
- package/dist/serve/worker/client/snapshots.js +46 -0
- package/dist/serve/worker/client/snapshots.js.map +1 -0
- package/dist/serve/worker/client/storage.d.ts +64 -0
- package/dist/serve/worker/client/storage.d.ts.map +1 -0
- package/dist/serve/worker/client/storage.js +125 -0
- package/dist/serve/worker/client/storage.js.map +1 -0
- package/dist/serve/worker/client/studio.d.ts +32 -0
- package/dist/serve/worker/client/studio.d.ts.map +1 -0
- package/dist/serve/worker/client/studio.js +61 -0
- package/dist/serve/worker/client/studio.js.map +1 -0
- package/dist/serve/worker/client.d.ts +43 -0
- package/dist/serve/worker/client.d.ts.map +1 -0
- package/dist/serve/worker/client.js +44 -0
- package/dist/serve/worker/client.js.map +1 -0
- package/dist/serve/worker/entry.d.ts +40 -0
- package/dist/serve/worker/entry.d.ts.map +1 -0
- package/dist/serve/worker/entry.js +144 -0
- package/dist/serve/worker/entry.js.map +1 -0
- package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
- package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/host/admin-firestore.js +92 -0
- package/dist/serve/worker/host/admin-firestore.js.map +1 -0
- package/dist/serve/worker/host/connection.d.ts +40 -0
- package/dist/serve/worker/host/connection.d.ts.map +1 -0
- package/dist/serve/worker/host/connection.js +153 -0
- package/dist/serve/worker/host/connection.js.map +1 -0
- package/dist/serve/worker/host/core.d.ts +159 -0
- package/dist/serve/worker/host/core.d.ts.map +1 -0
- package/dist/serve/worker/host/core.js +296 -0
- package/dist/serve/worker/host/core.js.map +1 -0
- package/dist/serve/worker/host/dispatch.d.ts +34 -0
- package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
- package/dist/serve/worker/host/dispatch.js +267 -0
- package/dist/serve/worker/host/dispatch.js.map +1 -0
- package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
- package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-reads.js +108 -0
- package/dist/serve/worker/host/firestore-reads.js.map +1 -0
- package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
- package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-writes.js +409 -0
- package/dist/serve/worker/host/firestore-writes.js.map +1 -0
- package/dist/serve/worker/host/presence.d.ts +38 -0
- package/dist/serve/worker/host/presence.d.ts.map +1 -0
- package/dist/serve/worker/host/presence.js +280 -0
- package/dist/serve/worker/host/presence.js.map +1 -0
- package/dist/serve/worker/host/rtdb.d.ts +18 -0
- package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/host/rtdb.js +128 -0
- package/dist/serve/worker/host/rtdb.js.map +1 -0
- package/dist/serve/worker/host/rules.d.ts +17 -0
- package/dist/serve/worker/host/rules.d.ts.map +1 -0
- package/dist/serve/worker/host/rules.js +118 -0
- package/dist/serve/worker/host/rules.js.map +1 -0
- package/dist/serve/worker/host/storage.d.ts +19 -0
- package/dist/serve/worker/host/storage.d.ts.map +1 -0
- package/dist/serve/worker/host/storage.js +260 -0
- package/dist/serve/worker/host/storage.js.map +1 -0
- package/dist/serve/worker/host/studio.d.ts +13 -0
- package/dist/serve/worker/host/studio.d.ts.map +1 -0
- package/dist/serve/worker/host/studio.js +30 -0
- package/dist/serve/worker/host/studio.js.map +1 -0
- package/dist/serve/worker/host/subscriptions.d.ts +21 -0
- package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
- package/dist/serve/worker/host/subscriptions.js +162 -0
- package/dist/serve/worker/host/subscriptions.js.map +1 -0
- package/dist/serve/worker/host-ai.d.ts +59 -0
- package/dist/serve/worker/host-ai.d.ts.map +1 -0
- package/dist/serve/worker/host-ai.js +158 -0
- package/dist/serve/worker/host-ai.js.map +1 -0
- package/dist/serve/worker/host-auth.d.ts +47 -0
- package/dist/serve/worker/host-auth.d.ts.map +1 -0
- package/dist/serve/worker/host-auth.js +464 -0
- package/dist/serve/worker/host-auth.js.map +1 -0
- package/dist/serve/worker/host-context.d.ts +220 -0
- package/dist/serve/worker/host-context.d.ts.map +1 -0
- package/dist/serve/worker/host-context.js +45 -0
- package/dist/serve/worker/host-context.js.map +1 -0
- package/dist/serve/worker/host-events.d.ts +21 -0
- package/dist/serve/worker/host-events.d.ts.map +1 -0
- package/dist/serve/worker/host-events.js +87 -0
- package/dist/serve/worker/host-events.js.map +1 -0
- package/dist/serve/worker/host-messaging.d.ts +60 -0
- package/dist/serve/worker/host-messaging.d.ts.map +1 -0
- package/dist/serve/worker/host-messaging.js +226 -0
- package/dist/serve/worker/host-messaging.js.map +1 -0
- package/dist/serve/worker/host.d.ts +36 -0
- package/dist/serve/worker/host.d.ts.map +1 -0
- package/dist/serve/worker/host.js +39 -0
- package/dist/serve/worker/host.js.map +1 -0
- package/dist/serve/worker/index.d.ts +22 -0
- package/dist/serve/worker/index.d.ts.map +1 -0
- package/dist/serve/worker/index.js +61 -0
- package/dist/serve/worker/index.js.map +1 -0
- package/dist/serve/worker/presence-timing.d.ts +14 -0
- package/dist/serve/worker/presence-timing.d.ts.map +1 -0
- package/dist/serve/worker/presence-timing.js +14 -0
- package/dist/serve/worker/presence-timing.js.map +1 -0
- package/dist/serve/worker/protocol.d.ts +1150 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -0
- package/dist/serve/worker/protocol.js +228 -0
- package/dist/serve/worker/protocol.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts +201 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -0
- package/dist/serve/worker/serve-init.js +579 -0
- package/dist/serve/worker/serve-init.js.map +1 -0
- package/dist/serve/worker/service-worker-channel.d.ts +23 -0
- package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-channel.js +9 -0
- package/dist/serve/worker/service-worker-channel.js.map +1 -0
- package/dist/serve/worker/service-worker-relay.d.ts +22 -0
- package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-relay.js +63 -0
- package/dist/serve/worker/service-worker-relay.js.map +1 -0
- package/dist/serve/writer-lock.d.ts +32 -0
- package/dist/serve/writer-lock.d.ts.map +1 -0
- package/dist/serve/writer-lock.js +43 -0
- package/dist/serve/writer-lock.js.map +1 -0
- package/dist/verify/cases.d.ts +37 -0
- package/dist/verify/cases.d.ts.map +1 -0
- package/dist/verify/cases.js +173 -0
- package/dist/verify/cases.js.map +1 -0
- package/dist/verify/fixture.d.ts +100 -0
- package/dist/verify/fixture.d.ts.map +1 -0
- package/dist/verify/fixture.js +156 -0
- package/dist/verify/fixture.js.map +1 -0
- package/dist/verify/index.d.ts +102 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +318 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/tools.d.ts +7 -0
- package/dist/verify/tools.d.ts.map +1 -0
- package/dist/verify/tools.js +83 -0
- package/dist/verify/tools.js.map +1 -0
- package/dist/version/compat-target.d.ts +18 -0
- package/dist/version/compat-target.d.ts.map +1 -0
- package/dist/version/compat-target.js +18 -0
- package/dist/version/compat-target.js.map +1 -0
- package/dist/vite.d.ts +12 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +16 -0
- package/dist/vite.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,2753 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/ui/firestore · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/ui/firestore."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CQYSemvw.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What's experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-run-locally"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-develop-with-firebase-apis"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-inspect-and-correct"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-inspect-the-sandbox"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-correct-security-rules"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-work-with-an-agent"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-verify-the-boundary"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-unchanged"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What's experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>@pyric/ui</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/ui/firestore</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/ui/firestore</code></h1> <p class="api-reference-meta"> 86 published symbols from <code>@pyric/ui</code> </p> <p class="api-reference-source">
|
|
2
|
+
Generated from the TypeScript declarations shipped at this import path.
|
|
3
|
+
</p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
|
|
4
|
+
<h2 id="interfaces">Interfaces</h2>
|
|
5
|
+
<p><a id="collectionlistprops"></a></p>
|
|
6
|
+
<h3 id="collectionlistprops">CollectionListProps</h3>
|
|
7
|
+
<h4 id="properties">Properties</h4>
|
|
8
|
+
<div class="table-scroll">
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="classname"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="collections"></a> <code>collections</code></td><td align="left"><code>CollectionReference</code>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="emptystate"></a> <code>emptyState?</code></td><td align="left"><code>ReactNode</code></td><td align="left">Optional empty-state node. Rendered when <code>collections.length</code> is 0 and the list isn’t loading.</td></tr><tr><td align="left"><a id="error"></a> <code>error?</code></td><td align="left"><code>Error</code></td><td align="left">-</td></tr><tr><td align="left"><a id="isloading"></a> <code>isLoading?</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="onselect"></a> <code>onSelect?</code></td><td align="left">(<code>collection</code>: <code>CollectionReference</code>) => <code>void</code></td><td align="left">Fired when a list item is clicked. Consumer wires navigation.</td></tr></tbody></table></div>
|
|
49
|
+
<hr>
|
|
50
|
+
<p><a id="deletewithconfirmprops"></a></p>
|
|
51
|
+
<h3 id="deletewithconfirmprops">DeleteWithConfirmProps</h3>
|
|
52
|
+
<h4 id="properties-1">Properties</h4>
|
|
53
|
+
<div class="table-scroll">
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="body"></a> <code>body?</code></td><td align="left"><code>ReactNode</code></td><td align="left">Confirm-dialog body.</td></tr><tr><td align="left"><a id="classname-1"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">Class forwarded to the default trigger button.</td></tr><tr><td align="left"><a id="confirmlabel"></a> <code>confirmLabel?</code></td><td align="left"><code>string</code></td><td align="left">Label on the destructive button.</td></tr><tr><td align="left"><a id="impl"></a> <code>impl</code></td><td align="left"><a href="#recursivedeleteimpl"><code>RecursiveDeleteImpl</code></a></td><td align="left">Implementation that walks the tree + deletes. Consumer-supplied. Sandbox-backed apps usually wire <code>pyric/sandbox</code> introspection; production apps usually call a Cloud Function.</td></tr><tr><td align="left"><a id="ondeleted"></a> <code>onDeleted?</code></td><td align="left">() => <code>void</code></td><td align="left">Fired after the delete iterator finishes successfully.</td></tr><tr><td align="left"><a id="rendertrigger"></a> <code>renderTrigger?</code></td><td align="left">(<code>props</code>: { <code>isRunning</code>: <code>boolean</code>; <code>onClick</code>: () => <code>void</code>; <code>progress</code>: <code>number</code>; }) => <code>ReactNode</code></td><td align="left">Optional render override for the trigger button.</td></tr><tr><td align="left"><a id="target"></a> <code>target</code></td><td align="left"><code>any</code></td><td align="left">The doc / collection to delete.</td></tr><tr><td align="left"><a id="title"></a> <code>title?</code></td><td align="left"><code>string</code></td><td align="left">Confirm-dialog title. Defaults to a sensible derivation from the target’s path.</td></tr></tbody></table></div>
|
|
104
|
+
<hr>
|
|
105
|
+
<p><a id="documenteditorrootprops"></a></p>
|
|
106
|
+
<h3 id="documenteditorrootprops">DocumentEditorRootProps</h3>
|
|
107
|
+
<h4 id="properties-2">Properties</h4>
|
|
108
|
+
<div class="table-scroll">
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="children"></a> <code>children</code></td><td align="left"><code>ReactNode</code></td><td align="left">-</td></tr><tr><td align="left"><a id="classname-2"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="fieldeditors"></a> <code>fieldEditors?</code></td><td align="left"><a href="#fieldeditorregistry"><code>FieldEditorRegistry</code></a></td><td align="left">Override or extend the built-in field editors.</td></tr><tr><td align="left"><a id="initial"></a> <code>initial?</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td><td align="left">Initial document data. Built into the editor’s tree on first mount; later changes don’t rebuild — call <code>editor.reset()</code> to re-initialize from a fresh <code>initial</code>.</td></tr><tr><td align="left"><a id="onchange"></a> <code>onChange?</code></td><td align="left">(<code>state</code>: <a href="#usedocumenteditorresult"><code>UseDocumentEditorResult</code></a>) => <code>void</code></td><td align="left">Called on every state change with the latest editor state. The parent typically watches <code>state.isValid</code> + <code>state.isDirty</code> to enable/disable a Save button.</td></tr></tbody></table></div>
|
|
144
|
+
<hr>
|
|
145
|
+
<p><a id="documenteditorstate"></a></p>
|
|
146
|
+
<h3 id="documenteditorstate">DocumentEditorState</h3>
|
|
147
|
+
<p>Reducer state. <code>tree</code> is the live document under edit; <code>initial</code>
|
|
148
|
+
is the snapshot the editor was constructed from (used to
|
|
149
|
+
implement <code>reset</code> and <code>isDirty</code>).</p>
|
|
150
|
+
<h4 id="extended-by">Extended by</h4>
|
|
151
|
+
<ul>
|
|
152
|
+
<li><a href="#usedocumenteditorresult"><code>UseDocumentEditorResult</code></a></li>
|
|
153
|
+
</ul>
|
|
154
|
+
<h4 id="properties-3">Properties</h4>
|
|
155
|
+
<div class="table-scroll">
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="errorcount"></a> <code>errorCount</code></td><td align="left"><code>number</code></td><td align="left">Count of nodes with an active <code>error</code>. Derived after every action; the reducer keeps it in state to avoid a tree walk on every render.</td></tr><tr><td align="left"><a id="initial-1"></a> <code>initial</code></td><td align="left"><a href="#editortree"><code>EditorTree</code></a></td><td align="left">Frozen copy of the tree at construction. <code>reset</code> restores from here; <code>isDirty</code> is computed by comparing serializations.</td></tr><tr><td align="left"><a id="tree"></a> <code>tree</code></td><td align="left"><a href="#editortree"><code>EditorTree</code></a></td><td align="left">-</td></tr></tbody></table></div>
|
|
181
|
+
<hr>
|
|
182
|
+
<p><a id="documentlistprops"></a></p>
|
|
183
|
+
<h3 id="documentlistprops">DocumentListProps</h3>
|
|
184
|
+
<h4 id="properties-4">Properties</h4>
|
|
185
|
+
<div class="table-scroll">
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="classname-3"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="documents"></a> <code>documents</code></td><td align="left"><code>QueryDocumentSnapshot</code>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="emptystate-1"></a> <code>emptyState?</code></td><td align="left"><code>ReactNode</code></td><td align="left">-</td></tr><tr><td align="left"><a id="error-1"></a> <code>error?</code></td><td align="left"><code>Error</code></td><td align="left">-</td></tr><tr><td align="left"><a id="hasmore"></a> <code>hasMore?</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="isloading-1"></a> <code>isLoading?</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="onloadmore"></a> <code>onLoadMore?</code></td><td align="left">() => <code>void</code></td><td align="left">Fired when the user requests another page. Wire to the hook’s <code>loadMore</code>. The component will not render a Load More button when this is undefined.</td></tr><tr><td align="left"><a id="onselect-1"></a> <code>onSelect?</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="renderlabel"></a> <code>renderLabel?</code></td><td align="left">(<code>doc</code>: <code>QueryDocumentSnapshot</code>) => <code>ReactNode</code></td><td align="left">Optional renderer for the row label. Default renders the doc id. Override to show a field value alongside, an icon, etc.</td></tr><tr><td align="left"><a id="renderrowaction"></a> <code>renderRowAction?</code></td><td align="left">(<code>doc</code>: <code>QueryDocumentSnapshot</code>) => <code>ReactNode</code></td><td align="left">Optional per-row action(s), rendered as a SIBLING of the row’s select button inside the entry (not nested in it — so the action carries its own click handling without an invalid button-in-button). Used for row-level affordances like delete.</td></tr><tr><td align="left"><a id="rowheight"></a> <code>rowHeight?</code></td><td align="left"><code>number</code> | (<code>index</code>: <code>number</code>) => <code>number</code></td><td align="left">Estimated row height when virtualizing. Default 36 — matches a single-line text button at 13px font + ~10px padding. Pass a function for variable sizing (TanStack measures the actual height via ResizeObserver after the first paint anyway).</td></tr><tr><td align="left"><a id="updatescope"></a> <code>updateScope?</code></td><td align="left"><code>string</code></td><td align="left">Stable collection/query identity used to reset update highlighting when the rendered list changes scope.</td></tr><tr><td align="left"><a id="virtualizedheight"></a> <code>virtualizedHeight?</code></td><td align="left"><code>string</code> | <code>number</code></td><td align="left">Pixel height the virtualized scroll container fills. Only applies when <code>documents.length > virtualizeThreshold</code>. Default <code>'60vh'</code> — consumers usually constrain via their layout.</td></tr><tr><td align="left"><a id="virtualizethreshold"></a> <code>virtualizeThreshold?</code></td><td align="left"><code>number</code></td><td align="left">Above this row count, the list switches to virtualization via <code><VirtualList></code>. Default 100. Set to <code>Infinity</code> to disable (e.g. when measuring layout shifts is more important than scroll perf).</td></tr></tbody></table></div>
|
|
266
|
+
<hr>
|
|
267
|
+
<p><a id="documentpreviewprops"></a></p>
|
|
268
|
+
<h3 id="documentpreviewprops">DocumentPreviewProps</h3>
|
|
269
|
+
<h4 id="properties-5">Properties</h4>
|
|
270
|
+
<div class="table-scroll">
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="classname-4"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">Forwarded to the root <code><div></code>.</td></tr><tr><td align="left"><a id="documentref"></a> <code>documentRef?</code></td><td align="left"><code>any</code></td><td align="left">The document’s own reference. Required to surface its subcollections — <code>DocumentSnapshot</code> (as typed by <code>pyric/firestore</code>) doesn’t expose <code>.ref</code>, so the consumer threads the ref it already holds from fetching the doc. Without it (or without <a href="#listsubcollections">listSubcollections</a>) the Subcollections section is omitted.</td></tr><tr><td align="left"><a id="emptystate-2"></a> <code>emptyState?</code></td><td align="left"><code>ReactNode</code></td><td align="left">Content rendered when the snapshot is missing or <code>!exists()</code>. Defaults to <code>null</code> (renders nothing).</td></tr><tr><td align="left"><a id="fieldeditors-1"></a> <code>fieldEditors?</code></td><td align="left"><a href="#fieldeditorregistry"><code>FieldEditorRegistry</code></a></td><td align="left">Override or extend the built-in field editors. Merged on top of <a href="#defaultfieldeditors">defaultFieldEditors</a> — only the keys you provide override.</td></tr><tr><td align="left"><a id="firestore"></a> <code>firestore?</code></td><td align="left"><code>Firestore</code></td><td align="left">Firestore handle passed to <a href="#listsubcollections">listSubcollections</a>. Required alongside <code>documentRef</code> + <code>listSubcollections</code> to surface the Subcollections section (the same explicit-handle shape <code>ReferencePicker</code> uses).</td></tr><tr><td align="left"><a id="listsubcollections"></a> <code>listSubcollections?</code></td><td align="left"><a href="#listsubcollections-2"><code>ListSubcollections</code></a></td><td align="left">Injected lister for the document’s subcollections. The modular Web SDK has no client-side <code>listCollections</code>; sandbox-backed apps wire <code>pyric/sandbox</code>’s in-process listing, production apps pass a known list or a server proxy. Same shape <code>ReferencePicker</code> / <code>useCollectionList</code> use. Omit to hide the Subcollections section.</td></tr><tr><td align="left"><a id="onreferenceclick"></a> <code>onReferenceClick?</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">Fired when a reference field is clicked. When supplied, the reference Display renders as an interactive <code><button></code> (with <code>data-pyric-clickable</code>); when omitted, it stays inert as a <code><span></code>. Consumers wire navigation here — the library does not depend on a router.</td></tr><tr><td align="left"><a id="onsubcollectionclick"></a> <code>onSubcollectionClick?</code></td><td align="left">(<code>collection</code>: <code>CollectionReference</code>) => <code>void</code></td><td align="left">Fired when a subcollection’s drill affordance is activated. Receives the subcollection’s <code>CollectionReference</code> (its <code>.path</code> is the navigate target). Consumers wire navigation here.</td></tr><tr><td align="left"><a id="snapshot"></a> <code>snapshot</code></td><td align="left"><code>any</code></td><td align="left">Snapshot from <code>useFirestoreDoc</code> or <code>getDoc</code>. When <code>null</code> / <code>undefined</code>, renders <a href="#emptystate-2">emptyState</a>.</td></tr></tbody></table></div>
|
|
326
|
+
<hr>
|
|
327
|
+
<p><a id="editortree"></a></p>
|
|
328
|
+
<h3 id="editortree">EditorTree</h3>
|
|
329
|
+
<p>Normalized tree of nodes. <code>nodes</code> is the lookup; <code>childIds</code> is the
|
|
330
|
+
ordered child list per parent. The root node is itself a <code>map</code>
|
|
331
|
+
node (its children are the document’s top-level fields).</p>
|
|
332
|
+
<h4 id="properties-6">Properties</h4>
|
|
333
|
+
<div class="table-scroll">
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="childids"></a> <code>childIds</code></td><td align="left"><code>Record</code><<code>string</code>, <code>string</code>[]></td></tr><tr><td align="left"><a id="nodes"></a> <code>nodes</code></td><td align="left"><code>Record</code><<code>string</code>, <a href="#fieldnode"><code>FieldNode</code></a>></td></tr><tr><td align="left"><a id="rootid"></a> <code>rootId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
355
|
+
<hr>
|
|
356
|
+
<p><a id="fielddisplayprops"></a></p>
|
|
357
|
+
<h3 id="fielddisplayprops">FieldDisplayProps</h3>
|
|
358
|
+
<h4 id="type-parameters">Type Parameters</h4>
|
|
359
|
+
<div class="table-scroll">
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
<table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>V</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
373
|
+
<h4 id="properties-7">Properties</h4>
|
|
374
|
+
<div class="table-scroll">
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="fieldeditors-2"></a> <code>fieldEditors?</code></td><td align="left"><a href="#fieldeditorregistry"><code>FieldEditorRegistry</code></a></td><td align="left">Recursive editors (Map, Array) need the registry to dispatch on their children. Leaf editors (String, Number, …) can ignore this prop. Required-but-optional because the consumer of the component (<code><FieldRenderer></code>, <code><DocumentPreview></code>) always threads it through.</td></tr><tr><td align="left"><a id="path"></a> <code>path?</code></td><td align="left"><code>string</code></td><td align="left">Dotted/bracketed path from the document root, e.g. <code>users.alice</code> or <code>tags[0]</code>. Forwarded so consumer styles can target nested positions via <code>[data-field-path="users.alice"]</code>.</td></tr><tr><td align="left"><a id="value"></a> <code>value</code></td><td align="left"><code>V</code></td><td align="left">Value to display. The component’s <code>V</code> generic narrows this.</td></tr></tbody></table></div>
|
|
400
|
+
<hr>
|
|
401
|
+
<p><a id="fieldeditorcontract"></a></p>
|
|
402
|
+
<h3 id="fieldeditorcontract">FieldEditorContract</h3>
|
|
403
|
+
<p>Contract for one Firestore value type. <code>Display</code> (read-mode) is
|
|
404
|
+
required; <code>Edit</code> + <code>validate</code> + <code>defaultValue</code> are required for
|
|
405
|
+
leaf types that participate in M3’s editor. Map/array contracts
|
|
406
|
+
supply only <code>Display</code> — their edit affordances come from the
|
|
407
|
+
<code><DocumentEditor></code> compound component.</p>
|
|
408
|
+
<h4 id="type-parameters-1">Type Parameters</h4>
|
|
409
|
+
<div class="table-scroll">
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
<table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>V</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
423
|
+
<h4 id="properties-8">Properties</h4>
|
|
424
|
+
<div class="table-scroll">
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="display"></a> <code>Display</code></td><td align="left"><code>ComponentType</code><<a href="#fielddisplayprops"><code>FieldDisplayProps</code></a><<code>V</code>>></td></tr><tr><td align="left"><a id="edit"></a> <code>Edit?</code></td><td align="left"><code>ComponentType</code><<a href="#fieldeditprops"><code>FieldEditProps</code></a><<code>V</code>>></td></tr><tr><td align="left"><a id="type"></a> <code>type</code></td><td align="left"><a href="#fieldtype"><code>FieldType</code></a></td></tr></tbody></table></div>
|
|
446
|
+
<hr>
|
|
447
|
+
<p><a id="fieldeditprops"></a></p>
|
|
448
|
+
<h3 id="fieldeditprops">FieldEditProps</h3>
|
|
449
|
+
<p>Props passed to a per-type <code>Edit</code> component. The leaf editors
|
|
450
|
+
(string, number, …) consume this directly. Map/array editing is
|
|
451
|
+
handled by the <code><DocumentEditor></code> compound component itself, not
|
|
452
|
+
by individual editors — Firestore’s container shapes are special
|
|
453
|
+
enough that pushing them through the registry costs more than
|
|
454
|
+
it’s worth.</p>
|
|
455
|
+
<h4 id="type-parameters-2">Type Parameters</h4>
|
|
456
|
+
<div class="table-scroll">
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
<table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>V</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
470
|
+
<h4 id="properties-9">Properties</h4>
|
|
471
|
+
<div class="table-scroll">
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="error-2"></a> <code>error?</code></td><td align="left"><code>string</code></td><td align="left">Validation error attached by the reducer. Editors render it inline alongside the input.</td></tr><tr><td align="left"><a id="onchange-1"></a> <code>onChange</code></td><td align="left">(<code>next</code>: <code>V</code>) => <code>void</code></td><td align="left">Commit a new value. The hook wires this to the reducer’s <code>setValue</code> action.</td></tr><tr><td align="left"><a id="path-1"></a> <code>path?</code></td><td align="left"><code>string</code></td><td align="left">Dotted/bracketed path from the document root.</td></tr><tr><td align="left"><a id="value-1"></a> <code>value</code></td><td align="left"><code>V</code></td><td align="left">Current value.</td></tr></tbody></table></div>
|
|
502
|
+
<hr>
|
|
503
|
+
<p><a id="fieldnode"></a></p>
|
|
504
|
+
<h3 id="fieldnode">FieldNode</h3>
|
|
505
|
+
<p>One node in the normalized editor tree. Every Firestore field —
|
|
506
|
+
leaf or container — is a node with a uuid, a parent pointer, a
|
|
507
|
+
type, and a value. Containers (map, array) carry no value of
|
|
508
|
+
their own; their children represent the value.</p>
|
|
509
|
+
<h4 id="properties-10">Properties</h4>
|
|
510
|
+
<div class="table-scroll">
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="error-3"></a> <code>error?</code></td><td align="left"><code>string</code></td><td align="left">Validation error message attached to the node by the reducer after every action. <code>undefined</code> when valid. Computed on EVERY action regardless of <a href="#touched">touched</a> — <code>errorCount</code> / <code>isValid</code> must reflect the true state so Save stays disabled. <code>touched</code> governs only whether a consumer chooses to DISPLAY the error.</td></tr><tr><td align="left"><a id="id"></a> <code>id</code></td><td align="left"><code>string</code></td><td align="left">Stable uuid. Used as React <code>key</code> and as the action target.</td></tr><tr><td align="left"><a id="key"></a> <code>key</code></td><td align="left"><code>string</code></td><td align="left">Map children carry their key here. Array children carry <code>null</code> (position comes from the parent’s <code>childIds</code> order). The root also carries <code>null</code> (it has no parent).</td></tr><tr><td align="left"><a id="parentid"></a> <code>parentId</code></td><td align="left"><code>string</code></td><td align="left">Parent uuid; <code>null</code> for the root.</td></tr><tr><td align="left"><a id="touched"></a> <code>touched?</code></td><td align="left"><code>boolean</code></td><td align="left">Set once the field has been blurred (or a submit attempt swept the whole tree via <code>touchAll</code>). Consumers gate error display on <code>touched && error</code> so a freshly-added empty row doesn’t show “Field name is required” before the user has interacted with it.</td></tr><tr><td align="left"><a id="type-1"></a> <code>type</code></td><td align="left"><a href="#fieldtype"><code>FieldType</code></a></td><td align="left">Discriminated type. Drives which editor renders.</td></tr><tr><td align="left"><a id="value-2"></a> <code>value</code></td><td align="left"><code>unknown</code></td><td align="left">Leaf value. <code>undefined</code> for <code>map</code> / <code>array</code> — those carry their value as children. <code>null</code> field type has <code>value === null</code>.</td></tr></tbody></table></div>
|
|
556
|
+
<hr>
|
|
557
|
+
<p><a id="fieldrendererprops"></a></p>
|
|
558
|
+
<h3 id="fieldrendererprops">FieldRendererProps</h3>
|
|
559
|
+
<h4 id="properties-11">Properties</h4>
|
|
560
|
+
<div class="table-scroll">
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="fieldeditors-3"></a> <code>fieldEditors</code></td><td align="left"><a href="#fieldeditorregistry"><code>FieldEditorRegistry</code></a></td><td align="left">Registry to dispatch through. Pass the merged registry — this component does not fall back to defaults on its own (to avoid a circular import with the editors). <code><DocumentPreview></code> is the entry point that merges user overrides into defaults.</td></tr><tr><td align="left"><a id="path-2"></a> <code>path?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="value-3"></a> <code>value</code></td><td align="left"><code>unknown</code></td><td align="left">-</td></tr></tbody></table></div>
|
|
586
|
+
<hr>
|
|
587
|
+
<p><a id="parsedimportdoc"></a></p>
|
|
588
|
+
<h3 id="parsedimportdoc">ParsedImportDoc</h3>
|
|
589
|
+
<p>One document to create. <code>id === null</code> means “let Firestore auto-id it”
|
|
590
|
+
(only produced by the array shape when no <code>generateId</code> option is given —
|
|
591
|
+
a map key is always a chosen id).</p>
|
|
592
|
+
<h4 id="properties-12">Properties</h4>
|
|
593
|
+
<div class="table-scroll">
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="data"></a> <code>data</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><a id="id-1"></a> <code>id</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
611
|
+
<hr>
|
|
612
|
+
<p><a id="parseimportoptions"></a></p>
|
|
613
|
+
<h3 id="parseimportoptions">ParseImportOptions</h3>
|
|
614
|
+
<h4 id="properties-13">Properties</h4>
|
|
615
|
+
<div class="table-scroll">
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="generateid"></a> <code>generateId?</code></td><td align="left">() => <code>string</code></td><td align="left">When provided, array-shape entries get their auto-id GENERATED AT PARSE TIME (instead of <code>id: null</code> / addDoc-at-write-time). Fixing ids at parse makes a retry after a partial failure idempotent: the same parse’s ids are reused, so re-running the import cannot duplicate already-written docs. Use <a href="#firestoreautoid">firestoreAutoId</a> for prod-parity ids.</td></tr></tbody></table></div>
|
|
631
|
+
<hr>
|
|
632
|
+
<p><a id="parseimportresult"></a></p>
|
|
633
|
+
<h3 id="parseimportresult">ParseImportResult</h3>
|
|
634
|
+
<h4 id="properties-14">Properties</h4>
|
|
635
|
+
<div class="table-scroll">
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="docs"></a> <code>docs</code></td><td align="left"><a href="#parsedimportdoc"><code>ParsedImportDoc</code></a>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="errors"></a> <code>errors</code></td><td align="left"><code>string</code>[]</td><td align="left">Human-readable problems found while parsing. A non-empty <code>errors</code> does NOT necessarily mean <code>docs</code> is empty — the parser is per-item tolerant so one bad entry doesn’t block the rest; the caller decides whether to block on any error or proceed with the valid subset.</td></tr></tbody></table></div>
|
|
656
|
+
<hr>
|
|
657
|
+
<p><a id="querybuilderactions"></a></p>
|
|
658
|
+
<h3 id="querybuilderactions">QueryBuilderActions</h3>
|
|
659
|
+
<h4 id="properties-15">Properties</h4>
|
|
660
|
+
<div class="table-scroll">
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="addcondition"></a> <code>addCondition</code></td><td align="left">(<code>c?</code>: <code>Partial</code><<code>Omit</code><<a href="#querycondition"><code>QueryCondition</code></a>, <code>"id"</code>>>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="buildquery"></a> <code>buildQuery</code></td><td align="left">(<code>base</code>: <code>any</code>) => <code>Query</code></td><td align="left">Compose the state into a Firestore <code>Query</code>. Returns the base collection when there are no conditions / orderBy / limit. Conditions with empty <code>field</code> are skipped — the builder UI lets users add a row before they’ve filled it in.</td></tr><tr><td align="left"><a id="removecondition"></a> <code>removeCondition</code></td><td align="left">(<code>id</code>: <code>string</code>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="reset"></a> <code>reset</code></td><td align="left">() => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="setlimit"></a> <code>setLimit</code></td><td align="left">(<code>limit?</code>: <code>number</code>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="setorderby"></a> <code>setOrderBy</code></td><td align="left">(<code>orderBy?</code>: { <code>direction</code>: <code>OrderDirection</code>; <code>field</code>: <code>string</code>; }) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="updatecondition"></a> <code>updateCondition</code></td><td align="left">(<code>id</code>: <code>string</code>, <code>patch</code>: <code>Partial</code><<code>Omit</code><<a href="#querycondition"><code>QueryCondition</code></a>, <code>"id"</code>>>) => <code>void</code></td><td align="left">-</td></tr></tbody></table></div>
|
|
706
|
+
<hr>
|
|
707
|
+
<p><a id="querybuilderprops"></a></p>
|
|
708
|
+
<h3 id="querybuilderprops">QueryBuilderProps</h3>
|
|
709
|
+
<h4 id="properties-16">Properties</h4>
|
|
710
|
+
<div class="table-scroll">
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="classname-5"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="initial-2"></a> <code>initial?</code></td><td align="left"><code>Partial</code><<a href="#querybuilderstate"><code>QueryBuilderState</code></a>></td><td align="left">Drives the hook used internally. Both the state and the composed Query are exposed via <code>onChange</code>.</td></tr><tr><td align="left"><a id="onchange-2"></a> <code>onChange?</code></td><td align="left">(<code>builder</code>: <a href="#usequerybuilderresult"><code>UseQueryBuilderResult</code></a>) => <code>void</code></td><td align="left">Fired on every state change with the latest builder API. The parent typically calls <code>builder.buildQuery(collection)</code> and feeds the result into <code>useDocumentList</code> / <code>useFirestoreCollection</code>.</td></tr></tbody></table></div>
|
|
736
|
+
<hr>
|
|
737
|
+
<p><a id="querybuilderstate"></a></p>
|
|
738
|
+
<h3 id="querybuilderstate">QueryBuilderState</h3>
|
|
739
|
+
<h4 id="properties-17">Properties</h4>
|
|
740
|
+
<div class="table-scroll">
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="conditions"></a> <code>conditions</code></td><td align="left"><a href="#querycondition"><code>QueryCondition</code></a>[]</td></tr><tr><td align="left"><a id="limit"></a> <code>limit?</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="orderby"></a> <code>orderBy?</code></td><td align="left">{ <code>direction</code>: <code>OrderDirection</code>; <code>field</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>orderBy.direction</code></td><td align="left"><code>OrderDirection</code></td></tr><tr><td align="left"><code>orderBy.field</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
770
|
+
<hr>
|
|
771
|
+
<p><a id="querycondition"></a></p>
|
|
772
|
+
<h3 id="querycondition">QueryCondition</h3>
|
|
773
|
+
<h4 id="properties-18">Properties</h4>
|
|
774
|
+
<div class="table-scroll">
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="field"></a> <code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="id-2"></a> <code>id</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="op"></a> <code>op</code></td><td align="left"><code>WhereFilterOp</code></td></tr><tr><td align="left"><a id="value-4"></a> <code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
800
|
+
<hr>
|
|
801
|
+
<p><a id="recursivedeleteimpl"></a></p>
|
|
802
|
+
<h3 id="recursivedeleteimpl">RecursiveDeleteImpl</h3>
|
|
803
|
+
<p>Implementation injected by the consumer. The library doesn’t ship
|
|
804
|
+
one — sandbox-backed apps usually walk <code>pyric/sandbox</code>’s in-process
|
|
805
|
+
tree; production apps usually call a Cloud Function. Either way,
|
|
806
|
+
<code>start</code> returns an async iterator emitting progress.</p>
|
|
807
|
+
<h4 id="properties-19">Properties</h4>
|
|
808
|
+
<div class="table-scroll">
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="start"></a> <code>start</code></td><td align="left">(<code>target</code>: <code>any</code>) => <code>AsyncIterableIterator</code><<a href="#recursivedeleteprogress"><code>RecursiveDeleteProgress</code></a>></td></tr></tbody></table></div>
|
|
822
|
+
<hr>
|
|
823
|
+
<p><a id="recursivedeleteprogress"></a></p>
|
|
824
|
+
<h3 id="recursivedeleteprogress">RecursiveDeleteProgress</h3>
|
|
825
|
+
<h4 id="properties-20">Properties</h4>
|
|
826
|
+
<div class="table-scroll">
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="deletedcount"></a> <code>deletedCount</code></td><td align="left"><code>number</code></td><td align="left">Total nodes deleted so far.</td></tr><tr><td align="left"><a id="done"></a> <code>done</code></td><td align="left"><code>boolean</code></td><td align="left">True for the final emission.</td></tr></tbody></table></div>
|
|
847
|
+
<hr>
|
|
848
|
+
<p><a id="referencepickerprops"></a></p>
|
|
849
|
+
<h3 id="referencepickerprops">ReferencePickerProps</h3>
|
|
850
|
+
<h4 id="properties-21">Properties</h4>
|
|
851
|
+
<div class="table-scroll">
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="classname-6"></a> <code>className?</code></td><td align="left"><code>string</code></td><td align="left">Forwarded to the root.</td></tr><tr><td align="left"><a id="firestore-1"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="initialpath"></a> <code>initialPath?</code></td><td align="left"><code>string</code></td><td align="left">Initial path text.</td></tr><tr><td align="left"><a id="listcollections"></a> <code>listCollections</code></td><td align="left">(<code>firestore</code>: <code>Firestore</code>, <code>parent</code>: <code>any</code>) => <code>Promise</code><<code>CollectionReference</code>[]></td><td align="left">Lister for subcollections. Required — see <code>useReferencePicker</code> docs for the rationale.</td></tr><tr><td align="left"><a id="onpick"></a> <code>onPick?</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">Fired when the user commits a picked reference (browse pick OR a valid manually-typed path with the Commit button).</td></tr><tr><td align="left"><a id="pathlabel"></a> <code>pathLabel?</code></td><td align="left"><code>string</code></td><td align="left">Label for the path text input. Default ‘Document path’.</td></tr></tbody></table></div>
|
|
892
|
+
<hr>
|
|
893
|
+
<p><a id="subscriptionstate"></a></p>
|
|
894
|
+
<h3 id="subscriptionstate">SubscriptionState</h3>
|
|
895
|
+
<h4 id="type-parameters-3">Type Parameters</h4>
|
|
896
|
+
<div class="table-scroll">
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
<table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
|
|
908
|
+
<h4 id="properties-22">Properties</h4>
|
|
909
|
+
<div class="table-scroll">
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="data-1"></a> <code>data</code></td><td align="left"><code>T</code></td></tr><tr><td align="left"><a id="error-4"></a> <code>error</code></td><td align="left"><code>Error</code></td></tr><tr><td align="left"><a id="isloading-2"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
|
|
931
|
+
<hr>
|
|
932
|
+
<p><a id="usecollectionlistoptions"></a></p>
|
|
933
|
+
<h3 id="usecollectionlistoptions">UseCollectionListOptions</h3>
|
|
934
|
+
<h4 id="properties-23">Properties</h4>
|
|
935
|
+
<div class="table-scroll">
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="firestore-2"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="listcollections-1"></a> <code>listCollections</code></td><td align="left">(<code>firestore</code>: <code>Firestore</code>, <code>parent</code>: <code>any</code>) => <code>Promise</code><<code>CollectionReference</code>[]></td><td align="left">Injected collection-listing function. The library doesn’t ship a default — the modular Web SDK doesn’t expose <code>listCollections</code> on the client. Sandbox-backed apps usually wire <code>pyric/sandbox</code>’s in-process listing; production apps either pass a known list (e.g. from a schema) or call a server proxy.</td></tr><tr><td align="left"><a id="parent"></a> <code>parent?</code></td><td align="left"><code>any</code></td><td align="left">Parent document, or <code>null</code>/<code>undefined</code> for root collections.</td></tr></tbody></table></div>
|
|
961
|
+
<hr>
|
|
962
|
+
<p><a id="usecollectionlistresult"></a></p>
|
|
963
|
+
<h3 id="usecollectionlistresult">UseCollectionListResult</h3>
|
|
964
|
+
<h4 id="properties-24">Properties</h4>
|
|
965
|
+
<div class="table-scroll">
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="collections-1"></a> <code>collections</code></td><td align="left"><code>CollectionReference</code>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="createcollection"></a> <code>createCollection</code></td><td align="left">(<code>collectionId</code>: <code>string</code>, <code>firstDoc</code>: { <code>data</code>: <code>Record</code><<code>string</code>, <code>unknown</code>>; <code>id</code>: <code>string</code>; }) => <code>Promise</code><<code>DocumentReference</code>></td><td align="left">Create a new collection by writing its first document. Firestore collections don’t exist independently of their documents — <code>setDoc</code> on the first child path materializes the collection.</td></tr><tr><td align="left"><a id="error-5"></a> <code>error</code></td><td align="left"><code>Error</code></td><td align="left">-</td></tr><tr><td align="left"><a id="isloading-3"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="refresh"></a> <code>refresh</code></td><td align="left">() => <code>void</code></td><td align="left">Re-run the listing function.</td></tr></tbody></table></div>
|
|
1001
|
+
<hr>
|
|
1002
|
+
<p><a id="usedocumenteditoroptions"></a></p>
|
|
1003
|
+
<h3 id="usedocumenteditoroptions">UseDocumentEditorOptions</h3>
|
|
1004
|
+
<h4 id="properties-25">Properties</h4>
|
|
1005
|
+
<div class="table-scroll">
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="initial-3"></a> <code>initial?</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td><td align="left">Initial document data — the same shape a <code>DocumentSnapshot.data()</code> call returns.</td></tr></tbody></table></div>
|
|
1021
|
+
<hr>
|
|
1022
|
+
<p><a id="usedocumenteditorresult"></a></p>
|
|
1023
|
+
<h3 id="usedocumenteditorresult">UseDocumentEditorResult</h3>
|
|
1024
|
+
<p>Reducer state. <code>tree</code> is the live document under edit; <code>initial</code>
|
|
1025
|
+
is the snapshot the editor was constructed from (used to
|
|
1026
|
+
implement <code>reset</code> and <code>isDirty</code>).</p>
|
|
1027
|
+
<h4 id="extends">Extends</h4>
|
|
1028
|
+
<ul>
|
|
1029
|
+
<li><a href="#documenteditorstate"><code>DocumentEditorState</code></a></li>
|
|
1030
|
+
</ul>
|
|
1031
|
+
<h4 id="properties-26">Properties</h4>
|
|
1032
|
+
<div class="table-scroll">
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="addarrayentry"></a> <code>addArrayEntry</code></td><td align="left">(<code>parentId</code>: <code>string</code>, <code>childType</code>: <a href="#fieldtype"><code>FieldType</code></a>) => <code>void</code></td><td align="left">Append a child to an array. Nested arrays are silently rejected by the reducer (Firestore disallows them).</td></tr><tr><td align="left"><a id="addmapentry"></a> <code>addMapEntry</code></td><td align="left">(<code>parentId</code>: <code>string</code>, <code>key</code>: <code>string</code>, <code>childType</code>: <a href="#fieldtype"><code>FieldType</code></a>) => <code>void</code></td><td align="left">Append a child to a map.</td></tr><tr><td align="left"><a id="dispatch"></a> <code>dispatch</code></td><td align="left">(<code>action</code>: <a href="#documenteditoraction"><code>DocumentEditorAction</code></a>) => <code>void</code></td><td align="left">Raw dispatch — drops to the reducer-action surface. Prefer the named helpers below.</td></tr><tr><td align="left"><a id="errorcount-1"></a> <code>errorCount</code></td><td align="left"><code>number</code></td><td align="left">Count of nodes with an active <code>error</code>. Derived after every action; the reducer keeps it in state to avoid a tree walk on every render.</td></tr><tr><td align="left"><a id="initial-4"></a> <code>initial</code></td><td align="left"><a href="#editortree"><code>EditorTree</code></a></td><td align="left">Frozen copy of the tree at construction. <code>reset</code> restores from here; <code>isDirty</code> is computed by comparing serializations.</td></tr><tr><td align="left"><a id="isdirty"></a> <code>isDirty</code></td><td align="left"><code>boolean</code></td><td align="left"><code>true</code> once any modifying action has fired since the last <code>reset</code>. Cleared by <code>reset</code>. Does NOT clear when the user manually re-enters the original values — checking that would require a full serialization comparison on every dispatch.</td></tr><tr><td align="left"><a id="isvalid"></a> <code>isValid</code></td><td align="left"><code>boolean</code></td><td align="left">Convenience: <code>errorCount === 0</code>.</td></tr><tr><td align="left"><a id="remove"></a> <code>remove</code></td><td align="left">(<code>nodeId</code>: <code>string</code>) => <code>void</code></td><td align="left">Remove a node (and all its descendants). Removing the root is a no-op.</td></tr><tr><td align="left"><a id="replacedata"></a> <code>replaceData</code></td><td align="left">(<code>data</code>: <code>Record</code><<code>string</code>, <code>unknown</code>>) => <code>void</code></td><td align="left">Replace the editor with a newly delivered snapshot and adopt it as the clean baseline. Intended for live document viewers.</td></tr><tr><td align="left"><a id="reset-1"></a> <code>reset</code></td><td align="left">() => <code>void</code></td><td align="left">Restore the tree to its initial state. Clears <code>isDirty</code>.</td></tr><tr><td align="left"><a id="setkey"></a> <code>setKey</code></td><td align="left">(<code>nodeId</code>: <code>string</code>, <code>key</code>: <code>string</code>) => <code>void</code></td><td align="left">Set a map-child’s key.</td></tr><tr><td align="left"><a id="settype"></a> <code>setType</code></td><td align="left">(<code>nodeId</code>: <code>string</code>, <code>newType</code>: <a href="#fieldtype"><code>FieldType</code></a>) => <code>void</code></td><td align="left">Switch a node’s type. Map/array nodes drop their children.</td></tr><tr><td align="left"><a id="setvalue"></a> <code>setValue</code></td><td align="left">(<code>nodeId</code>: <code>string</code>, <code>value</code>: <code>unknown</code>) => <code>void</code></td><td align="left">Update a leaf value.</td></tr><tr><td align="left"><a id="todata"></a> <code>toData</code></td><td align="left">() => <code>Record</code><<code>string</code>, <code>unknown</code>></td><td align="left">Serialize the tree back to a Firestore-shaped object suitable for <code>setDoc</code> / <code>updateDoc</code>.</td></tr><tr><td align="left"><a id="touch"></a> <code>touch</code></td><td align="left">(<code>nodeId</code>: <code>string</code>) => <code>void</code></td><td align="left">Mark one node touched (dispatch on blur). Gates error display — a freshly-added row stays quiet until the user leaves it.</td></tr><tr><td align="left"><a id="touchall"></a> <code>touchAll</code></td><td align="left">() => <code>void</code></td><td align="left">Mark every node touched (dispatch on a submit attempt) so any hidden errors surface at once.</td></tr><tr><td align="left"><a id="tree-1"></a> <code>tree</code></td><td align="left"><a href="#editortree"><code>EditorTree</code></a></td><td align="left">-</td></tr></tbody></table></div>
|
|
1128
|
+
<hr>
|
|
1129
|
+
<p><a id="usedocumentlistoptions"></a></p>
|
|
1130
|
+
<h3 id="usedocumentlistoptions">UseDocumentListOptions</h3>
|
|
1131
|
+
<h4 id="properties-27">Properties</h4>
|
|
1132
|
+
<div class="table-scroll">
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="collection"></a> <code>collection</code></td><td align="left"><code>CollectionReference</code></td><td align="left">-</td></tr><tr><td align="left"><a id="mode"></a> <code>mode?</code></td><td align="left"><code>"paged"</code> | <code>"live"</code></td><td align="left"><code>paged</code> preserves the historical get-based cursor behavior. <code>live</code> keeps the currently requested window under an <code>onSnapshot</code> subscription and grows that window when <code>loadMore</code> is requested. Default <code>paged</code>.</td></tr><tr><td align="left"><a id="pagesize"></a> <code>pageSize?</code></td><td align="left"><code>number</code></td><td align="left">Page size for cursor-based pagination. Default 50.</td></tr><tr><td align="left"><a id="query"></a> <code>query?</code></td><td align="left"><code>Query</code></td><td align="left">Optional filter / sort. If omitted, the raw collection is used.</td></tr></tbody></table></div>
|
|
1163
|
+
<hr>
|
|
1164
|
+
<p><a id="usedocumentlistresult"></a></p>
|
|
1165
|
+
<h3 id="usedocumentlistresult">UseDocumentListResult</h3>
|
|
1166
|
+
<h4 id="properties-28">Properties</h4>
|
|
1167
|
+
<div class="table-scroll">
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="createdocument"></a> <code>createDocument</code></td><td align="left">(<code>id</code>: <code>string</code>, <code>data</code>: <code>Record</code><<code>string</code>, <code>unknown</code>>, <code>opts?</code>: { <code>onExisting?</code>: <code>"overwrite"</code> | <code>"fail"</code>; }) => <code>Promise</code><<code>DocumentReference</code>></td><td align="left">Create a document. If <code>id</code> is null, Firestore generates one via <code>addDoc</code>. With <code>onExisting: 'fail'</code> (CREATE semantics, the admin <code>create()</code> analog) an id that already exists rejects with <code>code: 'already-exists'</code> instead of silently overwriting — checked against the BACKEND (a <code>getDoc</code> probe), not any loaded page, so it is honest beyond pagination. Default: ‘overwrite’ (plain <code>setDoc</code>, the historical behavior).</td></tr><tr><td align="left"><a id="deletedocument"></a> <code>deleteDocument</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>Promise</code><<code>void</code>></td><td align="left">-</td></tr><tr><td align="left"><a id="documents-1"></a> <code>documents</code></td><td align="left"><code>QueryDocumentSnapshot</code>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="error-6"></a> <code>error</code></td><td align="left"><code>Error</code></td><td align="left">-</td></tr><tr><td align="left"><a id="hasmore-1"></a> <code>hasMore</code></td><td align="left"><code>boolean</code></td><td align="left">True if there might be another page. The hook tracks this via the last fetch’s length === pageSize.</td></tr><tr><td align="left"><a id="isloading-4"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="loadmore"></a> <code>loadMore</code></td><td align="left">() => <code>void</code></td><td align="left">Fetch the next page; live mode grows and re-establishes its window.</td></tr><tr><td align="left"><a id="refresh-1"></a> <code>refresh</code></td><td align="left">() => <code>void</code></td><td align="left">Re-establish the active read/subscription. Useful after the consumer mutates data outside this hook.</td></tr><tr><td align="left"><a id="subscriptiongeneration"></a> <code>subscriptionGeneration</code></td><td align="left"><code>number</code></td><td align="left">Identifies the active live subscription. Consumers that diff result snapshots can include this in their scope so a re-subscription (including load-more) establishes a silent baseline instead of looking like writes.</td></tr></tbody></table></div>
|
|
1223
|
+
<hr>
|
|
1224
|
+
<p><a id="usedocumentsubcollectionsoptions"></a></p>
|
|
1225
|
+
<h3 id="usedocumentsubcollectionsoptions">UseDocumentSubcollectionsOptions</h3>
|
|
1226
|
+
<h4 id="properties-29">Properties</h4>
|
|
1227
|
+
<div class="table-scroll">
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="documentref-1"></a> <code>documentRef</code></td><td align="left"><code>any</code></td><td align="left">The document whose subcollections to list. When <code>null</code>/<code>undefined</code> the hook stays idle (empty, not loading) — used when the preview has no ref to drill from.</td></tr><tr><td align="left"><a id="firestore-3"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="listsubcollections-1"></a> <code>listSubcollections</code></td><td align="left"><a href="#listsubcollections-2"><code>ListSubcollections</code></a></td><td align="left">-</td></tr></tbody></table></div>
|
|
1253
|
+
<hr>
|
|
1254
|
+
<p><a id="usedocumentsubcollectionsresult"></a></p>
|
|
1255
|
+
<h3 id="usedocumentsubcollectionsresult">UseDocumentSubcollectionsResult</h3>
|
|
1256
|
+
<h4 id="properties-30">Properties</h4>
|
|
1257
|
+
<div class="table-scroll">
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="error-7"></a> <code>error</code></td><td align="left"><code>Error</code></td></tr><tr><td align="left"><a id="isloading-5"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="subcollections"></a> <code>subcollections</code></td><td align="left"><code>CollectionReference</code>[]</td></tr></tbody></table></div>
|
|
1279
|
+
<hr>
|
|
1280
|
+
<p><a id="usequerybuilderoptions"></a></p>
|
|
1281
|
+
<h3 id="usequerybuilderoptions">UseQueryBuilderOptions</h3>
|
|
1282
|
+
<h4 id="properties-31">Properties</h4>
|
|
1283
|
+
<div class="table-scroll">
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="initial-5"></a> <code>initial?</code></td><td align="left"><code>Partial</code><<a href="#querybuilderstate"><code>QueryBuilderState</code></a>></td><td align="left">Pre-populate the builder.</td></tr></tbody></table></div>
|
|
1299
|
+
<hr>
|
|
1300
|
+
<p><a id="userecursivedeleteresult"></a></p>
|
|
1301
|
+
<h3 id="userecursivedeleteresult">UseRecursiveDeleteResult</h3>
|
|
1302
|
+
<h4 id="properties-32">Properties</h4>
|
|
1303
|
+
<div class="table-scroll">
|
|
1304
|
+
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="delete"></a> <code>delete</code></td><td align="left">(<code>target</code>: <code>any</code>) => <code>Promise</code><<code>void</code>></td><td align="left">Run the delete. Resolves when the iterator signals <code>done</code>.</td></tr><tr><td align="left"><a id="error-8"></a> <code>error</code></td><td align="left"><code>Error</code></td><td align="left">Error thrown by the iterator, if any. Cleared at the start of the next call.</td></tr><tr><td align="left"><a id="isrunning"></a> <code>isRunning</code></td><td align="left"><code>boolean</code></td><td align="left">True while an iteration is in flight.</td></tr><tr><td align="left"><a id="progress"></a> <code>progress</code></td><td align="left"><code>number</code></td><td align="left">Number of nodes deleted in the current/last run.</td></tr></tbody></table></div>
|
|
1334
|
+
<hr>
|
|
1335
|
+
<p><a id="usereferencepickeroptions"></a></p>
|
|
1336
|
+
<h3 id="usereferencepickeroptions">UseReferencePickerOptions</h3>
|
|
1337
|
+
<h4 id="properties-33">Properties</h4>
|
|
1338
|
+
<div class="table-scroll">
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="firestore-4"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="initialpath-1"></a> <code>initialPath?</code></td><td align="left"><code>string</code></td><td align="left">Initial value to pre-populate the text input + parse.</td></tr><tr><td align="left"><a id="listcollections-2"></a> <code>listCollections</code></td><td align="left">(<code>firestore</code>: <code>Firestore</code>, <code>parent</code>: <code>any</code>) => <code>Promise</code><<code>CollectionReference</code>[]></td><td align="left">Lister for subcollections under a parent (or root when <code>parent == null</code>). The library does not ship a default — see <code>useCollectionList</code> for the same rationale (the modular Web SDK can’t enumerate collections client-side).</td></tr><tr><td align="left"><a id="pagesize-1"></a> <code>pageSize?</code></td><td align="left"><code>number</code></td><td align="left">Default page size for the document list when browsing inside a collection. Default 20.</td></tr></tbody></table></div>
|
|
1369
|
+
<hr>
|
|
1370
|
+
<p><a id="usereferencepickerresult"></a></p>
|
|
1371
|
+
<h3 id="usereferencepickerresult">UseReferencePickerResult</h3>
|
|
1372
|
+
<h4 id="properties-34">Properties</h4>
|
|
1373
|
+
<div class="table-scroll">
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="browselocation"></a> <code>browseLocation</code></td><td align="left"><a href="#browselocation-1"><code>BrowseLocation</code></a></td><td align="left">Current browse position in the tree.</td></tr><tr><td align="left"><a id="candrillback"></a> <code>canDrillBack</code></td><td align="left"><code>boolean</code></td><td align="left">Whether <code>drillBack</code> has anywhere to go.</td></tr><tr><td align="left"><a id="clear"></a> <code>clear</code></td><td align="left">() => <code>void</code></td><td align="left">Clear the path input + reset browse to root.</td></tr><tr><td align="left"><a id="collections-2"></a> <code>collections</code></td><td align="left"><code>CollectionReference</code>[]</td><td align="left">Collections available at the current browse level. Populated when <code>browseLocation</code> is <code>root</code> or <code>document</code>.</td></tr><tr><td align="left"><a id="documents-2"></a> <code>documents</code></td><td align="left"><code>QueryDocumentSnapshot</code>[]</td><td align="left">First page of documents in the current collection — populated when <code>browseLocation.kind === 'collection'</code>.</td></tr><tr><td align="left"><a id="drillback"></a> <code>drillBack</code></td><td align="left">() => <code>void</code></td><td align="left">Step back one level. No-op when at root.</td></tr><tr><td align="left"><a id="drillintocollection"></a> <code>drillIntoCollection</code></td><td align="left">(<code>ref</code>: <code>CollectionReference</code>) => <code>void</code></td><td align="left">Drill into a collection — fetches its first page of documents.</td></tr><tr><td align="left"><a id="drillintodocument"></a> <code>drillIntoDocument</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">Drill into a document — fetches its subcollections.</td></tr><tr><td align="left"><a id="error-9"></a> <code>error</code></td><td align="left"><code>string</code></td><td align="left">Parse error, or <code>null</code> when valid.</td></tr><tr><td align="left"><a id="isloading-6"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td><td align="left">True while a fetch is in flight.</td></tr><tr><td align="left"><a id="pathinput"></a> <code>pathInput</code></td><td align="left"><code>string</code></td><td align="left">Current text input value.</td></tr><tr><td align="left"><a id="pick"></a> <code>pick</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">Commit a chosen reference. Updates <code>pathInput</code> (and therefore the parsed <code>reference</code>).</td></tr><tr><td align="left"><a id="reference"></a> <code>reference</code></td><td align="left"><code>any</code></td><td align="left">Validated <code>DocumentReference</code> parsed from <code>pathInput</code>, or <code>null</code> when the path is empty / invalid.</td></tr><tr><td align="left"><a id="setpathinput"></a> <code>setPathInput</code></td><td align="left">(<code>path</code>: <code>string</code>) => <code>void</code></td><td align="left">Set the text-input value. Parses on every change.</td></tr></tbody></table></div>
|
|
1454
|
+
<hr>
|
|
1455
|
+
<p><a id="vectorview"></a></p>
|
|
1456
|
+
<h3 id="vectorview">VectorView</h3>
|
|
1457
|
+
<p>Normalized read-side view of a Firestore vector (embedding) value.
|
|
1458
|
+
Editors and the renderer work against this rather than the raw shape
|
|
1459
|
+
so they don’t have to care which backend produced the value.</p>
|
|
1460
|
+
<h4 id="properties-35">Properties</h4>
|
|
1461
|
+
<div class="table-scroll">
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
<table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="dimension"></a> <code>dimension</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td><td align="left">Number of components. Equivalent to <code>values.length</code>; surfaced separately because that’s what the UI labels (<code>vector · <dims></code>).</td></tr><tr><td align="left"><a id="values"></a> <code>values</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code>[]</td><td align="left">The embedding components. Defensive copy — safe to read freely.</td></tr></tbody></table></div>
|
|
1485
|
+
<h2 id="type-aliases">Type Aliases</h2>
|
|
1486
|
+
<p><a id="browselocation-1"></a></p>
|
|
1487
|
+
<h3 id="browselocation">BrowseLocation</h3>
|
|
1488
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> BrowseLocation</span><span style="color:#56B6C2"> =</span></span>
|
|
1489
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1490
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"root"</span><span style="color:#ABB2BF">;</span></span>
|
|
1491
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1492
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1493
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"document"</span><span style="color:#ABB2BF">;</span></span>
|
|
1494
|
+
<span class="line"><span style="color:#E06C75"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">;</span></span>
|
|
1495
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1496
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1497
|
+
<span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"collection"</span><span style="color:#ABB2BF">;</span></span>
|
|
1498
|
+
<span class="line"><span style="color:#E06C75"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">;</span></span>
|
|
1499
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1500
|
+
<hr>
|
|
1501
|
+
<p><a id="documenteditoraction"></a></p>
|
|
1502
|
+
<h3 id="documenteditoraction">DocumentEditorAction</h3>
|
|
1503
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> DocumentEditorAction</span><span style="color:#56B6C2"> =</span></span>
|
|
1504
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1505
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1506
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setValue"</span><span style="color:#ABB2BF">;</span></span>
|
|
1507
|
+
<span class="line"><span style="color:#E06C75"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">;</span></span>
|
|
1508
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1509
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1510
|
+
<span class="line"><span style="color:#E06C75"> newType</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1511
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1512
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setType"</span><span style="color:#ABB2BF">;</span></span>
|
|
1513
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1514
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1515
|
+
<span class="line"><span style="color:#E06C75"> key</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1516
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1517
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setKey"</span><span style="color:#ABB2BF">;</span></span>
|
|
1518
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1519
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1520
|
+
<span class="line"><span style="color:#E06C75"> childType</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1521
|
+
<span class="line"><span style="color:#E06C75"> key</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1522
|
+
<span class="line"><span style="color:#E06C75"> parentId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1523
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"addMapEntry"</span><span style="color:#ABB2BF">;</span></span>
|
|
1524
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1525
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1526
|
+
<span class="line"><span style="color:#E06C75"> childType</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1527
|
+
<span class="line"><span style="color:#E06C75"> parentId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1528
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"addArrayEntry"</span><span style="color:#ABB2BF">;</span></span>
|
|
1529
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1530
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1531
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1532
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"remove"</span><span style="color:#ABB2BF">;</span></span>
|
|
1533
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1534
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1535
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"reset"</span><span style="color:#ABB2BF">;</span></span>
|
|
1536
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1537
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1538
|
+
<span class="line"><span style="color:#E06C75"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span>
|
|
1539
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"replaceData"</span><span style="color:#ABB2BF">;</span></span>
|
|
1540
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1541
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1542
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1543
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"touch"</span><span style="color:#ABB2BF">;</span></span>
|
|
1544
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span>
|
|
1545
|
+
<span class="line"><span style="color:#ABB2BF"> | {</span></span>
|
|
1546
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"touchAll"</span><span style="color:#ABB2BF">;</span></span>
|
|
1547
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1548
|
+
<p>Discriminated union of every action the reducer accepts. Each
|
|
1549
|
+
action carries a <code>type</code> discriminator plus the data the reducer
|
|
1550
|
+
needs to apply it.</p>
|
|
1551
|
+
<h4 id="type-declaration">Type Declaration</h4>
|
|
1552
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1553
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1554
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setValue"</span><span style="color:#ABB2BF">;</span></span>
|
|
1555
|
+
<span class="line"><span style="color:#E06C75"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span>
|
|
1556
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1557
|
+
<h5 id="nodeid">nodeId</h5>
|
|
1558
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1559
|
+
<h5 id="type">type</h5>
|
|
1560
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setValue"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1561
|
+
<h5 id="value">value</h5>
|
|
1562
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">value</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1563
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1564
|
+
<span class="line"><span style="color:#E06C75"> newType</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1565
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1566
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setType"</span><span style="color:#ABB2BF">;</span></span>
|
|
1567
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1568
|
+
<h5 id="newtype">newType</h5>
|
|
1569
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">newType</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldType</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1570
|
+
<h5 id="nodeid-1">nodeId</h5>
|
|
1571
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1572
|
+
<h5 id="type-1">type</h5>
|
|
1573
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setType"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1574
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1575
|
+
<span class="line"><span style="color:#E06C75"> key</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1576
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1577
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setKey"</span><span style="color:#ABB2BF">;</span></span>
|
|
1578
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1579
|
+
<h5 id="key">key</h5>
|
|
1580
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">key</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1581
|
+
<h5 id="nodeid-2">nodeId</h5>
|
|
1582
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1583
|
+
<h5 id="type-2">type</h5>
|
|
1584
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"setKey"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1585
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1586
|
+
<span class="line"><span style="color:#E06C75"> childType</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1587
|
+
<span class="line"><span style="color:#E06C75"> key</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1588
|
+
<span class="line"><span style="color:#E06C75"> parentId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1589
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"addMapEntry"</span><span style="color:#ABB2BF">;</span></span>
|
|
1590
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1591
|
+
<h5 id="childtype">childType</h5>
|
|
1592
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">childType</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldType</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1593
|
+
<h5 id="key-1">key</h5>
|
|
1594
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">key</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1595
|
+
<h5 id="parentid">parentId</h5>
|
|
1596
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">parentId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1597
|
+
<h5 id="type-3">type</h5>
|
|
1598
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"addMapEntry"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1599
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1600
|
+
<span class="line"><span style="color:#E06C75"> childType</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldType</span><span style="color:#ABB2BF">;</span></span>
|
|
1601
|
+
<span class="line"><span style="color:#E06C75"> parentId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1602
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"addArrayEntry"</span><span style="color:#ABB2BF">;</span></span>
|
|
1603
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1604
|
+
<h5 id="childtype-1">childType</h5>
|
|
1605
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">childType</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldType</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1606
|
+
<h5 id="parentid-1">parentId</h5>
|
|
1607
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">parentId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1608
|
+
<h5 id="type-4">type</h5>
|
|
1609
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"addArrayEntry"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1610
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1611
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1612
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"remove"</span><span style="color:#ABB2BF">;</span></span>
|
|
1613
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1614
|
+
<h5 id="nodeid-3">nodeId</h5>
|
|
1615
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1616
|
+
<h5 id="type-5">type</h5>
|
|
1617
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"remove"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1618
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1619
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"reset"</span><span style="color:#ABB2BF">;</span></span>
|
|
1620
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1621
|
+
<h5 id="type-6">type</h5>
|
|
1622
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"reset"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1623
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1624
|
+
<span class="line"><span style="color:#E06C75"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span>
|
|
1625
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"replaceData"</span><span style="color:#ABB2BF">;</span></span>
|
|
1626
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1627
|
+
<h5 id="data">data</h5>
|
|
1628
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2"><</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1629
|
+
<h5 id="type-7">type</h5>
|
|
1630
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"replaceData"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1631
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1632
|
+
<span class="line"><span style="color:#E06C75"> nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span>
|
|
1633
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"touch"</span><span style="color:#ABB2BF">;</span></span>
|
|
1634
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1635
|
+
<h5 id="nodeid-4">nodeId</h5>
|
|
1636
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">nodeId</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1637
|
+
<h5 id="type-8">type</h5>
|
|
1638
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"touch"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1639
|
+
<p>Mark one node touched (dispatched on blur). Doesn’t change any
|
|
1640
|
+
value — only gates error display for consumers that check it.</p>
|
|
1641
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
1642
|
+
<span class="line"><span style="color:#E06C75"> type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"touchAll"</span><span style="color:#ABB2BF">;</span></span>
|
|
1643
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
1644
|
+
<h5 id="type-9">type</h5>
|
|
1645
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">type</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"touchAll"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1646
|
+
<p>Mark every node touched (dispatched on a submit attempt), so
|
|
1647
|
+
errors that were hidden pre-interaction all surface at once.</p>
|
|
1648
|
+
<hr>
|
|
1649
|
+
<p><a id="fieldeditorregistry"></a></p>
|
|
1650
|
+
<h3 id="fieldeditorregistry">FieldEditorRegistry</h3>
|
|
1651
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> FieldEditorRegistry</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> Partial</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">FieldEditorContract</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">>>>;</span></span></code></pre>
|
|
1652
|
+
<p>Map of field-type to editor contract. <code>Partial<…></code> so consumers
|
|
1653
|
+
can override one type without re-supplying the rest — the merge
|
|
1654
|
+
happens at the <code><DocumentPreview></code> boundary.</p>
|
|
1655
|
+
<p>The stored value type is <code>FieldEditorContract<any></code> rather than
|
|
1656
|
+
<code>FieldEditorContract<unknown></code> because each per-type contract
|
|
1657
|
+
narrows its generic (e.g., <code>FieldEditorContract<Timestamp></code> for
|
|
1658
|
+
timestamp) and TypeScript’s <code>ComponentType</code> is invariant in
|
|
1659
|
+
props. <code>any</code> at the registry layer means the type-safety lives
|
|
1660
|
+
at the per-contract definition site, not in the dispatch map.
|
|
1661
|
+
<code>FieldRenderer</code> narrows back from <code>unknown</code> -> the right contract
|
|
1662
|
+
via <code>inferType</code> at dispatch time.</p>
|
|
1663
|
+
<hr>
|
|
1664
|
+
<p><a id="fieldtype"></a></p>
|
|
1665
|
+
<h3 id="fieldtype">FieldType</h3>
|
|
1666
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> FieldType</span><span style="color:#56B6C2"> =</span></span>
|
|
1667
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"string"</span></span>
|
|
1668
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"number"</span></span>
|
|
1669
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"boolean"</span></span>
|
|
1670
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"null"</span></span>
|
|
1671
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"timestamp"</span></span>
|
|
1672
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"geopoint"</span></span>
|
|
1673
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"reference"</span></span>
|
|
1674
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"bytes"</span></span>
|
|
1675
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"map"</span></span>
|
|
1676
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"array"</span></span>
|
|
1677
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"vector"</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1678
|
+
<p>The set of value types <code>@pyric/ui</code> knows how to display + edit.
|
|
1679
|
+
Maps 1:1 to Firestore’s serializable value shapes; consumers can
|
|
1680
|
+
extend the registry but the built-in editors cover these.</p>
|
|
1681
|
+
<hr>
|
|
1682
|
+
<p><a id="firestoreapi"></a></p>
|
|
1683
|
+
<h3 id="firestoreapi">FirestoreApi</h3>
|
|
1684
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> FirestoreApi</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> Pick</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">,</span></span>
|
|
1685
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"addDoc"</span></span>
|
|
1686
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"collection"</span></span>
|
|
1687
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"deleteDoc"</span></span>
|
|
1688
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"doc"</span></span>
|
|
1689
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"getDoc"</span></span>
|
|
1690
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"getDocs"</span></span>
|
|
1691
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"limit"</span></span>
|
|
1692
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"onSnapshot"</span></span>
|
|
1693
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"query"</span></span>
|
|
1694
|
+
<span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"setDoc"</span></span>
|
|
1695
|
+
<span class="line"><span style="color:#ABB2BF">| </span><span style="color:#98C379">"startAfter"</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1696
|
+
<p>The modular Firestore functions the data hooks call, as an INJECTABLE bundle.</p>
|
|
1697
|
+
<p>WHY: the hooks default to the in-process <code>pyric/firestore</code> API, but Pyric
|
|
1698
|
+
Studio’s served mode drives the SAME ops over a SharedWorker via a PARALLEL
|
|
1699
|
+
modular client (<code>@pyric/cli/serve/worker</code>: its own <code>collection</code>/<code>getDocs</code>/…
|
|
1700
|
+
over a <code>MessagePort</code>, and a <code>ClientDb</code> that is not a <code>pyric/firestore</code>
|
|
1701
|
+
<code>Firestore</code>). Statically importing the in-process fns hardwires the hooks to
|
|
1702
|
+
the in-page sandbox; reading them from this context lets a consumer inject the
|
|
1703
|
+
worker client’s fns so the hooks operate on the live worker backend without
|
|
1704
|
+
the hooks (or the components) knowing which backend they hit.</p>
|
|
1705
|
+
<p>The bundle is typed to the in-process signatures. A worker bundle is adapted
|
|
1706
|
+
(cast) to this shape at the Studio boundary: the worker handles + snapshots
|
|
1707
|
+
are runtime-compatible at the surface the hooks use (<code>.id</code> / <code>.data()</code> /
|
|
1708
|
+
<code>.docs</code> / <code>.ref</code>), which is the contract function-injection relies on.</p>
|
|
1709
|
+
<p>Default = the real <code>pyric/firestore</code> fns, so every existing consumer (the
|
|
1710
|
+
dev-seed review build, tests, any app embedding <code>@pyric/ui</code>) is unchanged: no
|
|
1711
|
+
provider needed unless you are swapping the backend.</p>
|
|
1712
|
+
<hr>
|
|
1713
|
+
<p><a id="listsubcollections-2"></a></p>
|
|
1714
|
+
<h3 id="listsubcollections">ListSubcollections()</h3>
|
|
1715
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ListSubcollections</span><span style="color:#56B6C2"> =</span><span style="color:#ABB2BF"> (</span><span style="color:#E06C75;font-style:italic">firestore</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> Promise</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
|
|
1716
|
+
<p>Lister for a document’s own subcollections. Same injected-lister
|
|
1717
|
+
shape as <code>useCollectionList</code> / <code>ReferencePicker</code> use — the modular
|
|
1718
|
+
Web SDK doesn’t expose a native <code>listCollections</code> on the client, so
|
|
1719
|
+
the caller wires it (sandbox in-process listing, a server proxy, or
|
|
1720
|
+
a known schema list).</p>
|
|
1721
|
+
<h4 id="parameters">Parameters</h4>
|
|
1722
|
+
<div class="table-scroll">
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
|
|
1726
|
+
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
|
|
1734
|
+
|
|
1735
|
+
|
|
1736
|
+
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>firestore</code></td><td align="left"><code>Firestore</code></td></tr><tr><td align="left"><code>parent</code></td><td align="left"><code>DocumentReference</code></td></tr></tbody></table></div>
|
|
1740
|
+
<h4 id="returns">Returns</h4>
|
|
1741
|
+
<p><code>Promise</code><<code>CollectionReference</code>[]></p>
|
|
1742
|
+
<hr>
|
|
1743
|
+
<p><a id="queryop"></a></p>
|
|
1744
|
+
<h3 id="queryop">QueryOp</h3>
|
|
1745
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> QueryOp</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> WhereFilterOp</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1746
|
+
<hr>
|
|
1747
|
+
<p><a id="usequerybuilderresult"></a></p>
|
|
1748
|
+
<h3 id="usequerybuilderresult">UseQueryBuilderResult</h3>
|
|
1749
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> UseQueryBuilderResult</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> QueryBuilderState</span><span style="color:#ABB2BF"> & </span><span style="color:#E5C07B">QueryBuilderActions</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1750
|
+
<h2 id="variables">Variables</h2>
|
|
1751
|
+
<p><a id="defaultfieldeditors"></a></p>
|
|
1752
|
+
<h3 id="defaultfieldeditors">defaultFieldEditors</h3>
|
|
1753
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> defaultFieldEditors</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldEditorRegistry</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1754
|
+
<p>Default registry. Covers every <a href="#fieldtype">FieldType</a>. Consumers extend
|
|
1755
|
+
or override by passing their own (partial) registry into
|
|
1756
|
+
<code><DocumentPreview></code> / <code><FieldRenderer></code> — the components merge
|
|
1757
|
+
overrides into these defaults so a consumer can swap just one
|
|
1758
|
+
editor without re-declaring the rest.</p>
|
|
1759
|
+
<hr>
|
|
1760
|
+
<p><a id="documenteditor"></a></p>
|
|
1761
|
+
<h3 id="documenteditor">DocumentEditor</h3>
|
|
1762
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> DocumentEditor</span><span style="color:#ABB2BF">: {</span></span>
|
|
1763
|
+
<span class="line"><span style="color:#E06C75"> Fields</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">typeof</span><span style="color:#E06C75"> DocumentEditorFields</span><span style="color:#ABB2BF">;</span></span>
|
|
1764
|
+
<span class="line"><span style="color:#E06C75"> Root</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">typeof</span><span style="color:#E06C75"> DocumentEditorRoot</span><span style="color:#ABB2BF">;</span></span>
|
|
1765
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
1766
|
+
<p>Compound root export. Consumers pattern-match via dot access:</p>
|
|
1767
|
+
<p><DocumentEditor.Root initial={data} onChange={…}>
|
|
1768
|
+
<DocumentEditor.Fields />
|
|
1769
|
+
</DocumentEditor.Root></p>
|
|
1770
|
+
<h4 id="type-declaration-1">Type Declaration</h4>
|
|
1771
|
+
<p><a id="fields"></a></p>
|
|
1772
|
+
<h5 id="fields">Fields</h5>
|
|
1773
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">Fields</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">typeof</span><span style="color:#E06C75"> DocumentEditorFields</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1774
|
+
<p><a id="root"></a></p>
|
|
1775
|
+
<h5 id="root">Root</h5>
|
|
1776
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">Root</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">typeof</span><span style="color:#E06C75"> DocumentEditorRoot</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1777
|
+
<hr>
|
|
1778
|
+
<p><a id="multi_value_ops"></a></p>
|
|
1779
|
+
<h3 id="multi_value_ops">MULTI_VALUE_OPS</h3>
|
|
1780
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> MULTI_VALUE_OPS</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ReadonlySet</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">QueryOp</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
1781
|
+
<p>Ops that accept an array of values. The value editor in the
|
|
1782
|
+
bundled <querybuilder> parses the input as JSON for these.</querybuilder></p>
|
|
1783
|
+
<hr>
|
|
1784
|
+
<p><a id="query_ops"></a></p>
|
|
1785
|
+
<h3 id="query_ops">QUERY_OPS</h3>
|
|
1786
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> QUERY_OPS</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">readonly</span><span style="color:#E5C07B"> QueryOp</span><span style="color:#ABB2BF">[];</span></span></code></pre>
|
|
1787
|
+
<h2 id="functions">Functions</h2>
|
|
1788
|
+
<p><a id="asvectorview"></a></p>
|
|
1789
|
+
<h3 id="asvectorview">asVectorView()</h3>
|
|
1790
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> asVectorView</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">VectorView</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1791
|
+
<p>Detect + normalize a Firestore vector value, or return <code>null</code> if the
|
|
1792
|
+
value isn’t a vector. Vectors reach <code>@pyric/ui</code> in several runtime
|
|
1793
|
+
shapes depending on the backend the snapshot came from — there is no
|
|
1794
|
+
single <code>VectorValue</code> class <code>pyric/firestore</code> re-exports, so we match
|
|
1795
|
+
structurally (the same strategy isDocumentReferenceShape uses
|
|
1796
|
+
for refs):</p>
|
|
1797
|
+
<ol>
|
|
1798
|
+
<li><strong>pyric <code>Vector</code> wrapper</strong> — frozen <code>.value: number[]</code> array plus
|
|
1799
|
+
a <code>.dimension</code> getter (sandbox / rules-side reads).</li>
|
|
1800
|
+
<li><strong>firebase/firestore (web) <code>VectorValue</code></strong> — exposes <code>.toArray()</code>
|
|
1801
|
+
and nothing else publicly.</li>
|
|
1802
|
+
<li><strong>firebase-admin <code>VectorValue</code></strong> — internal <code>._values: number[]</code>
|
|
1803
|
+
(also a <code>.toArray()</code>).</li>
|
|
1804
|
+
<li><strong>wire sentinel</strong> — <code>{ __type__: '__vector__', value: number[] }</code>,
|
|
1805
|
+
the plain-object encoded form a discover crawler / seed emits.</li>
|
|
1806
|
+
</ol>
|
|
1807
|
+
<p>A bare <code>number[]</code> is intentionally NOT a vector — those stay <code>array</code>.
|
|
1808
|
+
Only the typed/branded shapes above match.</p>
|
|
1809
|
+
<h4 id="parameters-1">Parameters</h4>
|
|
1810
|
+
<div class="table-scroll">
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
|
|
1821
|
+
|
|
1822
|
+
|
|
1823
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
1824
|
+
<h4 id="returns-1">Returns</h4>
|
|
1825
|
+
<p><a href="#vectorview"><code>VectorView</code></a></p>
|
|
1826
|
+
<hr>
|
|
1827
|
+
<p><a id="collectionlist"></a></p>
|
|
1828
|
+
<h3 id="collectionlist">CollectionList()</h3>
|
|
1829
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> CollectionList</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionListProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1830
|
+
<p>Headless collection list. Takes a pre-fetched array of references
|
|
1831
|
+
(from <code>useCollectionList</code>) plus a select callback. Renders one
|
|
1832
|
+
row per collection with <code>data-pyric-collection-id</code> for styling
|
|
1833
|
+
and testing. The library does not own the data fetch — the hook
|
|
1834
|
+
does — so this component is a thin presentational layer.</p>
|
|
1835
|
+
<h4 id="parameters-2">Parameters</h4>
|
|
1836
|
+
<div class="table-scroll">
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
|
|
1849
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#collectionlistprops"><code>CollectionListProps</code></a></td></tr></tbody></table></div>
|
|
1850
|
+
<h4 id="returns-2">Returns</h4>
|
|
1851
|
+
<p><code>Element</code></p>
|
|
1852
|
+
<hr>
|
|
1853
|
+
<p><a id="deletewithconfirm"></a></p>
|
|
1854
|
+
<h3 id="deletewithconfirm">DeleteWithConfirm()</h3>
|
|
1855
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> DeleteWithConfirm</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DeleteWithConfirmProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1856
|
+
<p>Composition that wires <code>useConfirm</code> + <code>useRecursiveDelete</code>. Requires
|
|
1857
|
+
a <code><ConfirmProvider></code> ancestor.</p>
|
|
1858
|
+
<p>The default trigger renders a plain <code><button></code> carrying the
|
|
1859
|
+
destructive intent (the consumer styles via <code>[data-pyric-destructive]</code>).
|
|
1860
|
+
Consumers wanting different chrome pass <code>renderTrigger</code>.</p>
|
|
1861
|
+
<h4 id="parameters-3">Parameters</h4>
|
|
1862
|
+
<div class="table-scroll">
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#deletewithconfirmprops"><code>DeleteWithConfirmProps</code></a></td></tr></tbody></table></div>
|
|
1876
|
+
<h4 id="returns-3">Returns</h4>
|
|
1877
|
+
<p><code>Element</code></p>
|
|
1878
|
+
<hr>
|
|
1879
|
+
<p><a id="detectcollisions"></a></p>
|
|
1880
|
+
<h3 id="detectcollisions">detectCollisions()</h3>
|
|
1881
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> detectCollisions</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">existingIds</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">readonly</span><span style="color:#E5C07B"> string</span><span style="color:#ABB2BF">[], </span><span style="color:#E06C75;font-style:italic">docs</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">readonly</span><span style="color:#E5C07B"> ParsedImportDoc</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[];</span></span></code></pre>
|
|
1882
|
+
<p>Ids in <code>docs</code> (map-shape entries only — <code>id !== null</code>) that already exist
|
|
1883
|
+
in <code>existingIds</code>. The UI shows the skip-or-overwrite policy choice ONLY
|
|
1884
|
+
when this returns a non-empty list.</p>
|
|
1885
|
+
<h4 id="parameters-4">Parameters</h4>
|
|
1886
|
+
<div class="table-scroll">
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>existingIds</code></td><td align="left">readonly <code>string</code>[]</td></tr><tr><td align="left"><code>docs</code></td><td align="left">readonly <a href="#parsedimportdoc"><code>ParsedImportDoc</code></a>[]</td></tr></tbody></table></div>
|
|
1904
|
+
<h4 id="returns-4">Returns</h4>
|
|
1905
|
+
<p><code>string</code>[]</p>
|
|
1906
|
+
<hr>
|
|
1907
|
+
<p><a id="documenteditorfields-1"></a></p>
|
|
1908
|
+
<h3 id="documenteditorfields">DocumentEditorFields()</h3>
|
|
1909
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> DocumentEditorFields</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1910
|
+
<p>Renders the top-level fields of the document. For finer control,
|
|
1911
|
+
a consumer can call <code>useDocumentEditorContext()</code> and render the
|
|
1912
|
+
tree themselves.</p>
|
|
1913
|
+
<h4 id="returns-5">Returns</h4>
|
|
1914
|
+
<p><code>Element</code></p>
|
|
1915
|
+
<hr>
|
|
1916
|
+
<p><a id="documenteditorroot-1"></a></p>
|
|
1917
|
+
<h3 id="documenteditorroot">DocumentEditorRoot()</h3>
|
|
1918
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> DocumentEditorRoot</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentEditorRootProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1919
|
+
<p>Wires the <code>useDocumentEditor</code> hook + field-editor registry into a
|
|
1920
|
+
React context so <code><DocumentEditor.Fields></code> and <code><DocumentEditor.AddField></code>
|
|
1921
|
+
can render the tree without prop drilling.</p>
|
|
1922
|
+
<p>Pattern: hook + compound component. Consumers wanting full control
|
|
1923
|
+
over the layout call <code>useDocumentEditor</code> directly and render their
|
|
1924
|
+
own tree; consumers wanting the default rendering use this.</p>
|
|
1925
|
+
<h4 id="parameters-5">Parameters</h4>
|
|
1926
|
+
<div class="table-scroll">
|
|
1927
|
+
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#documenteditorrootprops"><code>DocumentEditorRootProps</code></a></td></tr></tbody></table></div>
|
|
1940
|
+
<h4 id="returns-6">Returns</h4>
|
|
1941
|
+
<p><code>Element</code></p>
|
|
1942
|
+
<hr>
|
|
1943
|
+
<p><a id="documentlist"></a></p>
|
|
1944
|
+
<h3 id="documentlist">DocumentList()</h3>
|
|
1945
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> DocumentList</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentListProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1946
|
+
<p>Headless document list. Below <code>virtualizeThreshold</code>, renders a
|
|
1947
|
+
plain <code><ul></code>; above it, switches to TanStack-Virtual via
|
|
1948
|
+
<code><VirtualList></code> so 10k-doc collections don’t bloat the DOM.</p>
|
|
1949
|
+
<p>The hook owns pagination state; this component just renders. The
|
|
1950
|
+
Load More button only renders when <code>hasMore</code> is true AND
|
|
1951
|
+
<code>onLoadMore</code> is provided. Consumers wanting infinite scroll
|
|
1952
|
+
trigger <code>onLoadMore</code> from a sentinel <code>IntersectionObserver</code> in
|
|
1953
|
+
their own code — the component doesn’t bake that policy in.</p>
|
|
1954
|
+
<h4 id="parameters-6">Parameters</h4>
|
|
1955
|
+
<div class="table-scroll">
|
|
1956
|
+
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#documentlistprops"><code>DocumentListProps</code></a></td></tr></tbody></table></div>
|
|
1969
|
+
<h4 id="returns-7">Returns</h4>
|
|
1970
|
+
<p><code>Element</code></p>
|
|
1971
|
+
<hr>
|
|
1972
|
+
<p><a id="documentpreview"></a></p>
|
|
1973
|
+
<h3 id="documentpreview">DocumentPreview()</h3>
|
|
1974
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> DocumentPreview</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentPreviewProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
1975
|
+
<p>Read-only renderer for a Firestore document. Iterates top-level
|
|
1976
|
+
fields in lexicographic order; each field dispatches through the
|
|
1977
|
+
field-editor registry on its inferred type.</p>
|
|
1978
|
+
<p>Headless — no shipped CSS. Consumers style via <code>className</code> on the
|
|
1979
|
+
root and <code>[data-pyric-field-type]</code> / <code>[data-pyric-field-path]</code>
|
|
1980
|
+
attribute selectors on the per-field nodes.</p>
|
|
1981
|
+
<p>Editing arrives in M3 (<code><DocumentEditor></code>). M2 only displays.</p>
|
|
1982
|
+
<h4 id="parameters-7">Parameters</h4>
|
|
1983
|
+
<div class="table-scroll">
|
|
1984
|
+
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#documentpreviewprops"><code>DocumentPreviewProps</code></a></td></tr></tbody></table></div>
|
|
1997
|
+
<h4 id="returns-8">Returns</h4>
|
|
1998
|
+
<p><code>Element</code></p>
|
|
1999
|
+
<hr>
|
|
2000
|
+
<p><a id="fieldrenderer"></a></p>
|
|
2001
|
+
<h3 id="fieldrenderer">FieldRenderer()</h3>
|
|
2002
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> FieldRenderer</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldRendererProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2003
|
+
<p>Dispatches a single value to its registered display component.
|
|
2004
|
+
Recursive editors (Map, Array) re-enter through this component
|
|
2005
|
+
for their children, threading the same registry.</p>
|
|
2006
|
+
<h4 id="parameters-8">Parameters</h4>
|
|
2007
|
+
<div class="table-scroll">
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
|
|
2011
|
+
|
|
2012
|
+
|
|
2013
|
+
|
|
2014
|
+
|
|
2015
|
+
|
|
2016
|
+
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
|
|
2020
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#fieldrendererprops"><code>FieldRendererProps</code></a></td></tr></tbody></table></div>
|
|
2021
|
+
<h4 id="returns-9">Returns</h4>
|
|
2022
|
+
<p><code>Element</code></p>
|
|
2023
|
+
<hr>
|
|
2024
|
+
<p><a id="firestoreapiprovider"></a></p>
|
|
2025
|
+
<h3 id="firestoreapiprovider">FirestoreApiProvider()</h3>
|
|
2026
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> FirestoreApiProvider</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: {</span></span>
|
|
2027
|
+
<span class="line"><span style="color:#E06C75"> children</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ReactNode</span><span style="color:#ABB2BF">;</span></span>
|
|
2028
|
+
<span class="line"><span style="color:#E06C75"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreApi</span><span style="color:#ABB2BF">;</span></span>
|
|
2029
|
+
<span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">FunctionComponentElement</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">ProviderProps</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FirestoreApi</span><span style="color:#ABB2BF">>>;</span></span></code></pre>
|
|
2030
|
+
<p>Provide a Firestore API bundle to the subtree. Pyric Studio wraps its data
|
|
2031
|
+
surface with this, supplying the in-process bundle for dev-seed review and the
|
|
2032
|
+
SharedWorker client bundle under <code>pyric dev --ui</code>.</p>
|
|
2033
|
+
<h4 id="parameters-9">Parameters</h4>
|
|
2034
|
+
<div class="table-scroll">
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
|
|
2050
|
+
|
|
2051
|
+
|
|
2052
|
+
|
|
2053
|
+
|
|
2054
|
+
|
|
2055
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left">{ <code>children</code>: <code>ReactNode</code>; <code>value</code>: <a href="#firestoreapi"><code>FirestoreApi</code></a>; }</td></tr><tr><td align="left"><code>__namedParameters.children</code></td><td align="left"><code>ReactNode</code></td></tr><tr><td align="left"><code>__namedParameters.value</code></td><td align="left"><a href="#firestoreapi"><code>FirestoreApi</code></a></td></tr></tbody></table></div>
|
|
2056
|
+
<h4 id="returns-10">Returns</h4>
|
|
2057
|
+
<p><code>FunctionComponentElement</code><<code>ProviderProps</code><<a href="#firestoreapi"><code>FirestoreApi</code></a>>></p>
|
|
2058
|
+
<hr>
|
|
2059
|
+
<p><a id="firestoreautoid"></a></p>
|
|
2060
|
+
<h3 id="firestoreautoid">firestoreAutoId()</h3>
|
|
2061
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> firestoreAutoId</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2062
|
+
<p>A Firestore-style 20-char auto id (same alphabet/length the SDK uses).</p>
|
|
2063
|
+
<h4 id="returns-11">Returns</h4>
|
|
2064
|
+
<p><code>string</code></p>
|
|
2065
|
+
<hr>
|
|
2066
|
+
<p><a id="firestorevaluesequal"></a></p>
|
|
2067
|
+
<h3 id="firestorevaluesequal">firestoreValuesEqual()</h3>
|
|
2068
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> firestoreValuesEqual</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">previous</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">next</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2069
|
+
<p>Firestore-aware structural equality for values delivered by either the
|
|
2070
|
+
in-process SDK or the SharedWorker serializer.</p>
|
|
2071
|
+
<h4 id="parameters-10">Parameters</h4>
|
|
2072
|
+
<div class="table-scroll">
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
|
|
2077
|
+
|
|
2078
|
+
|
|
2079
|
+
|
|
2080
|
+
|
|
2081
|
+
|
|
2082
|
+
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>previous</code></td><td align="left"><code>unknown</code></td></tr><tr><td align="left"><code>next</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
2090
|
+
<h4 id="returns-12">Returns</h4>
|
|
2091
|
+
<p><code>boolean</code></p>
|
|
2092
|
+
<hr>
|
|
2093
|
+
<p><a id="infertype"></a></p>
|
|
2094
|
+
<h3 id="infertype">inferType()</h3>
|
|
2095
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> inferType</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2096
|
+
<p>Runtime-classify a value into one of the <a href="#fieldtype">FieldType</a>s.</p>
|
|
2097
|
+
<p>The discrimination order matters:</p>
|
|
2098
|
+
<ul>
|
|
2099
|
+
<li><code>null</code> checked before <code>typeof === 'object'</code> (null is an object)</li>
|
|
2100
|
+
<li>vector (a typed embedding wrapper) checked before <code>Array.isArray</code>
|
|
2101
|
+
and before generic objects — its wire-sentinel shape is a plain
|
|
2102
|
+
object, and a bare <code>number[]</code> must stay <code>array</code>, not <code>vector</code></li>
|
|
2103
|
+
<li><code>Array.isArray</code> checked before generic objects</li>
|
|
2104
|
+
<li>Firestore special types (Timestamp/GeoPoint/Bytes/DocumentRef)
|
|
2105
|
+
checked before falling through to <code>map</code></li>
|
|
2106
|
+
</ul>
|
|
2107
|
+
<p><code>undefined</code> values aren’t legal Firestore field values; we coerce
|
|
2108
|
+
them to <code>'null'</code> rather than throw — the caller can decide whether
|
|
2109
|
+
to display or filter.</p>
|
|
2110
|
+
<h4 id="parameters-11">Parameters</h4>
|
|
2111
|
+
<div class="table-scroll">
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
|
|
2122
|
+
|
|
2123
|
+
|
|
2124
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
2125
|
+
<h4 id="returns-13">Returns</h4>
|
|
2126
|
+
<p><a href="#fieldtype"><code>FieldType</code></a></p>
|
|
2127
|
+
<hr>
|
|
2128
|
+
<p><a id="initstate"></a></p>
|
|
2129
|
+
<h3 id="initstate">initState()</h3>
|
|
2130
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> initState</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">initial</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">DocumentEditorState</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2131
|
+
<p>Initial state factory. Builds tree + initial snapshot + error count.</p>
|
|
2132
|
+
<h4 id="parameters-12">Parameters</h4>
|
|
2133
|
+
<div class="table-scroll">
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
|
|
2146
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>initial</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
|
|
2147
|
+
<h4 id="returns-14">Returns</h4>
|
|
2148
|
+
<p><a href="#documenteditorstate"><code>DocumentEditorState</code></a></p>
|
|
2149
|
+
<hr>
|
|
2150
|
+
<p><a id="mergefieldeditors"></a></p>
|
|
2151
|
+
<h3 id="mergefieldeditors">mergeFieldEditors()</h3>
|
|
2152
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> mergeFieldEditors</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">override</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Partial</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">FieldEditorContract</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">>>>): </span><span style="color:#E5C07B">FieldEditorRegistry</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2153
|
+
<p>Merge a consumer-supplied registry over the defaults. <code>undefined</code>
|
|
2154
|
+
input returns the defaults as-is. Used internally by
|
|
2155
|
+
<code><DocumentPreview></code> so consumers don’t have to spread manually.</p>
|
|
2156
|
+
<h4 id="parameters-13">Parameters</h4>
|
|
2157
|
+
<div class="table-scroll">
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
|
|
2161
|
+
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
|
|
2167
|
+
|
|
2168
|
+
|
|
2169
|
+
|
|
2170
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>override</code></td><td align="left"><code>Partial</code><<code>Record</code><<a href="#fieldtype"><code>FieldType</code></a>, <a href="#fieldeditorcontract"><code>FieldEditorContract</code></a><<code>any</code>>>></td></tr></tbody></table></div>
|
|
2171
|
+
<h4 id="returns-15">Returns</h4>
|
|
2172
|
+
<p><a href="#fieldeditorregistry"><code>FieldEditorRegistry</code></a></p>
|
|
2173
|
+
<hr>
|
|
2174
|
+
<p><a id="parseimport"></a></p>
|
|
2175
|
+
<h3 id="parseimport">parseImport()</h3>
|
|
2176
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> parseImport</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">input</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ParseImportOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ParseImportResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2177
|
+
<p>Parse raw JSON text into the documents it would create. Never throws —
|
|
2178
|
+
a JSON syntax error or a wrong top-level shape becomes an entry in
|
|
2179
|
+
<code>errors</code> with an empty <code>docs</code> array.</p>
|
|
2180
|
+
<h4 id="parameters-14">Parameters</h4>
|
|
2181
|
+
<div class="table-scroll">
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
|
|
2196
|
+
|
|
2197
|
+
|
|
2198
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>input</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#parseimportoptions"><code>ParseImportOptions</code></a></td></tr></tbody></table></div>
|
|
2199
|
+
<h4 id="returns-16">Returns</h4>
|
|
2200
|
+
<p><a href="#parseimportresult"><code>ParseImportResult</code></a></p>
|
|
2201
|
+
<hr>
|
|
2202
|
+
<p><a id="querybuilder"></a></p>
|
|
2203
|
+
<h3 id="querybuilder">QueryBuilder()</h3>
|
|
2204
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> QueryBuilder</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QueryBuilderProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2205
|
+
<p>Default visible composition over <code>useQueryBuilder</code>. Renders the
|
|
2206
|
+
condition list + orderBy + limit form. Headless — every node
|
|
2207
|
+
carries <code>data-pyric-*</code> for styling.</p>
|
|
2208
|
+
<p>Values are JSON-parsed on input. <code>42</code>, <code>"text"</code>, <code>true</code>, <code>null</code>,
|
|
2209
|
+
and <code>[1, 2, 3]</code> (for <code>in</code>/<code>not-in</code>/<code>array-contains-any</code>) all
|
|
2210
|
+
work; raw strings that aren’t JSON-parsable fall through as-is.
|
|
2211
|
+
For non-JSON Firestore values (Timestamp, GeoPoint, Reference,
|
|
2212
|
+
Bytes), consumers either use the hook directly with their own
|
|
2213
|
+
value editors or swap the rendered component out.</p>
|
|
2214
|
+
<h4 id="parameters-15">Parameters</h4>
|
|
2215
|
+
<div class="table-scroll">
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
|
|
2228
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#querybuilderprops"><code>QueryBuilderProps</code></a></td></tr></tbody></table></div>
|
|
2229
|
+
<h4 id="returns-17">Returns</h4>
|
|
2230
|
+
<p><code>Element</code></p>
|
|
2231
|
+
<hr>
|
|
2232
|
+
<p><a id="reducer"></a></p>
|
|
2233
|
+
<h3 id="reducer">reducer()</h3>
|
|
2234
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> reducer</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">state</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentEditorState</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">action</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentEditorAction</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">DocumentEditorState</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2235
|
+
<p>Pure reducer. Every action returns a fresh state — no in-place
|
|
2236
|
+
mutation of <code>state.tree</code>. Validation re-runs after the structural
|
|
2237
|
+
change so <code>errorCount</code> is always current. Container nodes (map /
|
|
2238
|
+
array) ignore actions that don’t apply to them rather than
|
|
2239
|
+
throwing; the components only render valid affordances per type.</p>
|
|
2240
|
+
<h4 id="parameters-16">Parameters</h4>
|
|
2241
|
+
<div class="table-scroll">
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>state</code></td><td align="left"><a href="#documenteditorstate"><code>DocumentEditorState</code></a></td></tr><tr><td align="left"><code>action</code></td><td align="left"><a href="#documenteditoraction"><code>DocumentEditorAction</code></a></td></tr></tbody></table></div>
|
|
2259
|
+
<h4 id="returns-18">Returns</h4>
|
|
2260
|
+
<p><a href="#documenteditorstate"><code>DocumentEditorState</code></a></p>
|
|
2261
|
+
<hr>
|
|
2262
|
+
<p><a id="referencepicker"></a></p>
|
|
2263
|
+
<h3 id="referencepicker">ReferencePicker()</h3>
|
|
2264
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> ReferencePicker</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ReferencePickerProps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Element</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2265
|
+
<p>Visible reference picker — text input + browseable panel.</p>
|
|
2266
|
+
<p>Two ways to commit a reference:</p>
|
|
2267
|
+
<ol>
|
|
2268
|
+
<li>Type a path, then click Commit (enabled only when the path
|
|
2269
|
+
parses to a valid <code>DocumentReference</code>).</li>
|
|
2270
|
+
<li>Drill into a collection in the panel and click a document
|
|
2271
|
+
row.</li>
|
|
2272
|
+
</ol>
|
|
2273
|
+
<p>Either path fires <code>onPick(ref)</code>. Headless — emits structural
|
|
2274
|
+
<code>data-pyric-*</code> for styling.</p>
|
|
2275
|
+
<h4 id="parameters-17">Parameters</h4>
|
|
2276
|
+
<div class="table-scroll">
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
|
|
2288
|
+
|
|
2289
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#referencepickerprops"><code>ReferencePickerProps</code></a></td></tr></tbody></table></div>
|
|
2290
|
+
<h4 id="returns-19">Returns</h4>
|
|
2291
|
+
<p><code>Element</code></p>
|
|
2292
|
+
<hr>
|
|
2293
|
+
<p><a id="treefromdata"></a></p>
|
|
2294
|
+
<h3 id="treefromdata">treeFromData()</h3>
|
|
2295
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> treeFromData</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">EditorTree</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2296
|
+
<p>Build a normalized editor tree from a Firestore-shaped object.
|
|
2297
|
+
The root node is a virtual <code>map</code> that holds the document’s
|
|
2298
|
+
top-level fields. Order of children mirrors <code>Object.entries</code> (the
|
|
2299
|
+
renderer is responsible for any sort it wants).</p>
|
|
2300
|
+
<h4 id="parameters-18">Parameters</h4>
|
|
2301
|
+
<div class="table-scroll">
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>data</code></td><td align="left"><code>Record</code><<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
|
|
2315
|
+
<h4 id="returns-20">Returns</h4>
|
|
2316
|
+
<p><a href="#editortree"><code>EditorTree</code></a></p>
|
|
2317
|
+
<hr>
|
|
2318
|
+
<p><a id="treetodata"></a></p>
|
|
2319
|
+
<h3 id="treetodata">treeToData()</h3>
|
|
2320
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> treeToData</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">tree</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EditorTree</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2321
|
+
<p>Serialize a tree back to a Firestore-shaped object. Leaf values
|
|
2322
|
+
pass through unchanged (so a <code>Timestamp</code> round-trips as the same
|
|
2323
|
+
<code>Timestamp</code> instance). Maps recurse with their sorted keys; arrays
|
|
2324
|
+
recurse in <code>childIds</code> order.</p>
|
|
2325
|
+
<h4 id="parameters-19">Parameters</h4>
|
|
2326
|
+
<div class="table-scroll">
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
|
|
2331
|
+
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
|
|
2335
|
+
|
|
2336
|
+
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>tree</code></td><td align="left"><a href="#editortree"><code>EditorTree</code></a></td></tr></tbody></table></div>
|
|
2340
|
+
<h4 id="returns-21">Returns</h4>
|
|
2341
|
+
<p><code>Record</code><<code>string</code>, <code>unknown</code>></p>
|
|
2342
|
+
<hr>
|
|
2343
|
+
<p><a id="truncatevectorsfordisplay"></a></p>
|
|
2344
|
+
<h3 id="truncatevectorsfordisplay">truncateVectorsForDisplay()</h3>
|
|
2345
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> truncateVectorsForDisplay</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2346
|
+
<p>Deep-replace any vector-shaped value with a compact preview STRING, so the
|
|
2347
|
+
result can be <code>JSON.stringify</code>’d / formatted without dumping full embeddings.
|
|
2348
|
+
Recurses plain objects + arrays; class instances (Timestamp/GeoPoint) and
|
|
2349
|
+
scalars pass through untouched. Vector instances/sentinels are caught first.</p>
|
|
2350
|
+
<h4 id="parameters-20">Parameters</h4>
|
|
2351
|
+
<div class="table-scroll">
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
|
|
2363
|
+
|
|
2364
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
2365
|
+
<h4 id="returns-22">Returns</h4>
|
|
2366
|
+
<p><code>unknown</code></p>
|
|
2367
|
+
<hr>
|
|
2368
|
+
<p><a id="usecollectionlist"></a></p>
|
|
2369
|
+
<h3 id="usecollectionlist">useCollectionList()</h3>
|
|
2370
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useCollectionList</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseCollectionListOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseCollectionListResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2371
|
+
<p>Operational read + create for collections under a parent (or root).
|
|
2372
|
+
Listing is injected because the modular Web SDK doesn’t expose a
|
|
2373
|
+
native <code>listCollections</code> on the client — see options docs.</p>
|
|
2374
|
+
<h4 id="parameters-21">Parameters</h4>
|
|
2375
|
+
<div class="table-scroll">
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usecollectionlistoptions"><code>UseCollectionListOptions</code></a></td></tr></tbody></table></div>
|
|
2389
|
+
<h4 id="returns-23">Returns</h4>
|
|
2390
|
+
<p><a href="#usecollectionlistresult"><code>UseCollectionListResult</code></a></p>
|
|
2391
|
+
<hr>
|
|
2392
|
+
<p><a id="usedocumenteditor"></a></p>
|
|
2393
|
+
<h3 id="usedocumenteditor">useDocumentEditor()</h3>
|
|
2394
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentEditor</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseDocumentEditorOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseDocumentEditorResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2395
|
+
<p>Headless document editor. Owns the entire edit state for one
|
|
2396
|
+
document via a pure reducer. Consumers either render the bundled
|
|
2397
|
+
<code><DocumentEditor></code> compound component over this hook, or render
|
|
2398
|
+
their own tree using the returned state.</p>
|
|
2399
|
+
<p>The hook builds its tree from <code>initial</code> on first mount. Changing
|
|
2400
|
+
<code>initial</code> later does NOT rebuild the tree; live viewers explicitly call
|
|
2401
|
+
<code>replaceData()</code> when a newer snapshot should become the clean baseline.
|
|
2402
|
+
This matches the firebase-tools-ui pattern of treating the editor as a
|
|
2403
|
+
stateful workspace while still allowing snapshot-driven reconciliation.</p>
|
|
2404
|
+
<h4 id="parameters-22">Parameters</h4>
|
|
2405
|
+
<div class="table-scroll">
|
|
2406
|
+
|
|
2407
|
+
|
|
2408
|
+
|
|
2409
|
+
|
|
2410
|
+
|
|
2411
|
+
|
|
2412
|
+
|
|
2413
|
+
|
|
2414
|
+
|
|
2415
|
+
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>options?</code></td><td align="left"><a href="#usedocumenteditoroptions"><code>UseDocumentEditorOptions</code></a></td></tr></tbody></table></div>
|
|
2419
|
+
<h4 id="returns-24">Returns</h4>
|
|
2420
|
+
<p><a href="#usedocumenteditorresult"><code>UseDocumentEditorResult</code></a></p>
|
|
2421
|
+
<hr>
|
|
2422
|
+
<p><a id="usedocumenteditorcontext"></a></p>
|
|
2423
|
+
<h3 id="usedocumenteditorcontext">useDocumentEditorContext()</h3>
|
|
2424
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentEditorContext</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">UseDocumentEditorResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2425
|
+
<p>Read access to the underlying editor state from inside a Root.</p>
|
|
2426
|
+
<h4 id="returns-25">Returns</h4>
|
|
2427
|
+
<p><a href="#usedocumenteditorresult"><code>UseDocumentEditorResult</code></a></p>
|
|
2428
|
+
<hr>
|
|
2429
|
+
<p><a id="usedocumentlist"></a></p>
|
|
2430
|
+
<h3 id="usedocumentlist">useDocumentList()</h3>
|
|
2431
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentList</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseDocumentListOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseDocumentListResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2432
|
+
<p>Paginated document list with two acquisition strategies. The default
|
|
2433
|
+
<code>paged</code> mode uses <code>startAfter</code> and accumulates one-shot reads. <code>live</code> keeps
|
|
2434
|
+
the requested prefix under one <code>onSnapshot</code> listener; loading more grows
|
|
2435
|
+
that prefix and establishes a new subscription baseline.</p>
|
|
2436
|
+
<h4 id="parameters-23">Parameters</h4>
|
|
2437
|
+
<div class="table-scroll">
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
|
|
2441
|
+
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usedocumentlistoptions"><code>UseDocumentListOptions</code></a></td></tr></tbody></table></div>
|
|
2451
|
+
<h4 id="returns-26">Returns</h4>
|
|
2452
|
+
<p><a href="#usedocumentlistresult"><code>UseDocumentListResult</code></a></p>
|
|
2453
|
+
<hr>
|
|
2454
|
+
<p><a id="usedocumentsubcollections"></a></p>
|
|
2455
|
+
<h3 id="usedocumentsubcollections">useDocumentSubcollections()</h3>
|
|
2456
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentSubcollections</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseDocumentSubcollectionsOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseDocumentSubcollectionsResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2457
|
+
<p>Read a single document’s subcollection list. A thin specialization of
|
|
2458
|
+
the <code>useCollectionList</code> pattern, scoped to one parent document and
|
|
2459
|
+
read-only (no create — that lives in <code>useCollectionList</code>).</p>
|
|
2460
|
+
<h4 id="parameters-24">Parameters</h4>
|
|
2461
|
+
<div class="table-scroll">
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usedocumentsubcollectionsoptions"><code>UseDocumentSubcollectionsOptions</code></a></td></tr></tbody></table></div>
|
|
2475
|
+
<h4 id="returns-27">Returns</h4>
|
|
2476
|
+
<p><a href="#usedocumentsubcollectionsresult"><code>UseDocumentSubcollectionsResult</code></a></p>
|
|
2477
|
+
<hr>
|
|
2478
|
+
<p><a id="usefirestoreapi"></a></p>
|
|
2479
|
+
<h3 id="usefirestoreapi">useFirestoreApi()</h3>
|
|
2480
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useFirestoreApi</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">FirestoreApi</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2481
|
+
<p>Read the active Firestore API bundle (defaults to in-process <code>pyric/firestore</code>).</p>
|
|
2482
|
+
<h4 id="returns-28">Returns</h4>
|
|
2483
|
+
<p><a href="#firestoreapi"><code>FirestoreApi</code></a></p>
|
|
2484
|
+
<hr>
|
|
2485
|
+
<p><a id="usefirestorecollection"></a></p>
|
|
2486
|
+
<h3 id="usefirestorecollection">useFirestoreCollection()</h3>
|
|
2487
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useFirestoreCollection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">query</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">SubscriptionState</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2488
|
+
<p>Subscribe to a Firestore query (a <code>Query</code> from <code>pyric/firestore</code>’s
|
|
2489
|
+
modular surface, including any <code>CollectionReference</code>, which extends
|
|
2490
|
+
<code>Query</code>). Returns <code>{ data, error, isLoading }</code>.</p>
|
|
2491
|
+
<p>Null/undefined query short-circuits to idle. Cleanup is automatic
|
|
2492
|
+
on unmount or query change. <code>Query</code> objects don’t have a stable
|
|
2493
|
+
structural identity, so the consumer must memoize at the call site
|
|
2494
|
+
— pass the same instance across renders to avoid re-subscribing.</p>
|
|
2495
|
+
<h4 id="parameters-25">Parameters</h4>
|
|
2496
|
+
<div class="table-scroll">
|
|
2497
|
+
|
|
2498
|
+
|
|
2499
|
+
|
|
2500
|
+
|
|
2501
|
+
|
|
2502
|
+
|
|
2503
|
+
|
|
2504
|
+
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
|
|
2509
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>query</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
|
|
2510
|
+
<h4 id="returns-29">Returns</h4>
|
|
2511
|
+
<p><a href="#subscriptionstate"><code>SubscriptionState</code></a><<code>QuerySnapshot</code>></p>
|
|
2512
|
+
<hr>
|
|
2513
|
+
<p><a id="usefirestoredoc"></a></p>
|
|
2514
|
+
<h3 id="usefirestoredoc">useFirestoreDoc()</h3>
|
|
2515
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useFirestoreDoc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">SubscriptionState</span><span style="color:#ABB2BF"><</span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
|
|
2516
|
+
<p>Subscribe to a single Firestore document. Returns <code>{ data, error, isLoading }</code>. Null/undefined ref short-circuits to an idle state
|
|
2517
|
+
(<code>data: undefined, error: undefined, isLoading: false</code>) — useful
|
|
2518
|
+
for conditional rendering before a ref is known.</p>
|
|
2519
|
+
<p>Cleanup is automatic on unmount or ref change. Memoize the ref at
|
|
2520
|
+
the call site; this hook’s effect re-runs on identity change.</p>
|
|
2521
|
+
<h4 id="parameters-26">Parameters</h4>
|
|
2522
|
+
<div class="table-scroll">
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
|
|
2536
|
+
<h4 id="returns-30">Returns</h4>
|
|
2537
|
+
<p><a href="#subscriptionstate"><code>SubscriptionState</code></a><<code>DocumentSnapshot</code>></p>
|
|
2538
|
+
<hr>
|
|
2539
|
+
<p><a id="usequerybuilder"></a></p>
|
|
2540
|
+
<h3 id="usequerybuilder">useQueryBuilder()</h3>
|
|
2541
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useQueryBuilder</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseQueryBuilderOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseQueryBuilderResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2542
|
+
<p>Headless query-builder state machine. Single-level — no nested
|
|
2543
|
+
<code>and()</code>/<code>or()</code> groups in v1. Consumers compose the state into a
|
|
2544
|
+
Firestore <code>Query</code> via <code>buildQuery(base)</code> and feed that into
|
|
2545
|
+
<code>useDocumentList</code> / <code>useFirestoreCollection</code>.</p>
|
|
2546
|
+
<h4 id="parameters-27">Parameters</h4>
|
|
2547
|
+
<div class="table-scroll">
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
|
|
2551
|
+
|
|
2552
|
+
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
|
|
2559
|
+
|
|
2560
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>options?</code></td><td align="left"><a href="#usequerybuilderoptions"><code>UseQueryBuilderOptions</code></a></td></tr></tbody></table></div>
|
|
2561
|
+
<h4 id="returns-31">Returns</h4>
|
|
2562
|
+
<p><a href="#usequerybuilderresult"><code>UseQueryBuilderResult</code></a></p>
|
|
2563
|
+
<hr>
|
|
2564
|
+
<p><a id="userecursivedelete"></a></p>
|
|
2565
|
+
<h3 id="userecursivedelete">useRecursiveDelete()</h3>
|
|
2566
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useRecursiveDelete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">impl</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RecursiveDeleteImpl</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseRecursiveDeleteResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2567
|
+
<p>Drive a <a href="#recursivedeleteimpl">RecursiveDeleteImpl</a> from a React component. Tracks
|
|
2568
|
+
progress + running state so the consumer can render a progress
|
|
2569
|
+
indicator. Errors are caught and surfaced via the returned state,
|
|
2570
|
+
not thrown.</p>
|
|
2571
|
+
<p>Stale-run protection: if the component remounts (or the user
|
|
2572
|
+
cancels and starts a new run) before a previous iteration
|
|
2573
|
+
finishes, the older run’s progress updates are dropped via a
|
|
2574
|
+
generation token.</p>
|
|
2575
|
+
<h4 id="parameters-28">Parameters</h4>
|
|
2576
|
+
<div class="table-scroll">
|
|
2577
|
+
|
|
2578
|
+
|
|
2579
|
+
|
|
2580
|
+
|
|
2581
|
+
|
|
2582
|
+
|
|
2583
|
+
|
|
2584
|
+
|
|
2585
|
+
|
|
2586
|
+
|
|
2587
|
+
|
|
2588
|
+
|
|
2589
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>impl</code></td><td align="left"><a href="#recursivedeleteimpl"><code>RecursiveDeleteImpl</code></a></td></tr></tbody></table></div>
|
|
2590
|
+
<h4 id="returns-32">Returns</h4>
|
|
2591
|
+
<p><a href="#userecursivedeleteresult"><code>UseRecursiveDeleteResult</code></a></p>
|
|
2592
|
+
<hr>
|
|
2593
|
+
<p><a id="usereferencepicker"></a></p>
|
|
2594
|
+
<h3 id="usereferencepicker">useReferencePicker()</h3>
|
|
2595
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useReferencePicker</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseReferencePickerOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseReferencePickerResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2596
|
+
<p>Picker state machine. Browses a Firestore tree level-by-level
|
|
2597
|
+
(root → collection → document → collection → …), maintains a
|
|
2598
|
+
separately-validated text-input path, and commits a chosen
|
|
2599
|
+
reference via <code>pick</code>.</p>
|
|
2600
|
+
<p>Headless — consumers compose the resulting state into their own
|
|
2601
|
+
UI, or use the bundled <code><ReferencePicker></code> component.</p>
|
|
2602
|
+
<h4 id="parameters-29">Parameters</h4>
|
|
2603
|
+
<div class="table-scroll">
|
|
2604
|
+
|
|
2605
|
+
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
|
|
2610
|
+
|
|
2611
|
+
|
|
2612
|
+
|
|
2613
|
+
|
|
2614
|
+
|
|
2615
|
+
|
|
2616
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usereferencepickeroptions"><code>UseReferencePickerOptions</code></a></td></tr></tbody></table></div>
|
|
2617
|
+
<h4 id="returns-33">Returns</h4>
|
|
2618
|
+
<p><a href="#usereferencepickerresult"><code>UseReferencePickerResult</code></a></p>
|
|
2619
|
+
<hr>
|
|
2620
|
+
<p><a id="validatecollectionid"></a></p>
|
|
2621
|
+
<h3 id="validatecollectionid">validateCollectionId()</h3>
|
|
2622
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> validateCollectionId</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">id</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2623
|
+
<p>Validate a collection id. Returns an error message, or <code>undefined</code> when valid.</p>
|
|
2624
|
+
<h4 id="parameters-30">Parameters</h4>
|
|
2625
|
+
<div class="table-scroll">
|
|
2626
|
+
|
|
2627
|
+
|
|
2628
|
+
|
|
2629
|
+
|
|
2630
|
+
|
|
2631
|
+
|
|
2632
|
+
|
|
2633
|
+
|
|
2634
|
+
|
|
2635
|
+
|
|
2636
|
+
|
|
2637
|
+
|
|
2638
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>id</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2639
|
+
<h4 id="returns-34">Returns</h4>
|
|
2640
|
+
<p><code>string</code></p>
|
|
2641
|
+
<hr>
|
|
2642
|
+
<p><a id="validatedocumentid"></a></p>
|
|
2643
|
+
<h3 id="validatedocumentid">validateDocumentId()</h3>
|
|
2644
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> validateDocumentId</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">id</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2645
|
+
<p>Validate a document id. Returns an error message, or <code>undefined</code> when valid.</p>
|
|
2646
|
+
<h4 id="parameters-31">Parameters</h4>
|
|
2647
|
+
<div class="table-scroll">
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
|
|
2654
|
+
|
|
2655
|
+
|
|
2656
|
+
|
|
2657
|
+
|
|
2658
|
+
|
|
2659
|
+
|
|
2660
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>id</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
|
|
2661
|
+
<h4 id="returns-35">Returns</h4>
|
|
2662
|
+
<p><code>string</code></p>
|
|
2663
|
+
<hr>
|
|
2664
|
+
<p><a id="validateleaf"></a></p>
|
|
2665
|
+
<h3 id="validateleaf">validateLeaf()</h3>
|
|
2666
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> validateLeaf</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">type</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FieldType</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2667
|
+
<p>Per-type leaf validator. Returns an error message when the value
|
|
2668
|
+
doesn’t satisfy the type’s constraints, <code>undefined</code> when valid.</p>
|
|
2669
|
+
<p><code>map</code> and <code>array</code> aren’t validated here — their integrity comes
|
|
2670
|
+
from their children + (for maps) sibling-key uniqueness, which
|
|
2671
|
+
is enforced in <a href="#validatetree">validateTree</a>.</p>
|
|
2672
|
+
<h4 id="parameters-32">Parameters</h4>
|
|
2673
|
+
<div class="table-scroll">
|
|
2674
|
+
|
|
2675
|
+
|
|
2676
|
+
|
|
2677
|
+
|
|
2678
|
+
|
|
2679
|
+
|
|
2680
|
+
|
|
2681
|
+
|
|
2682
|
+
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
|
|
2686
|
+
|
|
2687
|
+
|
|
2688
|
+
|
|
2689
|
+
|
|
2690
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>type</code></td><td align="left"><a href="#fieldtype"><code>FieldType</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
|
|
2691
|
+
<h4 id="returns-36">Returns</h4>
|
|
2692
|
+
<p><code>string</code></p>
|
|
2693
|
+
<hr>
|
|
2694
|
+
<p><a id="validatetree"></a></p>
|
|
2695
|
+
<h3 id="validatetree">validateTree()</h3>
|
|
2696
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> validateTree</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">tree</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EditorTree</span><span style="color:#ABB2BF">): {</span></span>
|
|
2697
|
+
<span class="line"><span style="color:#E06C75"> errorCount</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
|
|
2698
|
+
<span class="line"><span style="color:#E06C75"> tree</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EditorTree</span><span style="color:#ABB2BF">;</span></span>
|
|
2699
|
+
<span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
|
|
2700
|
+
<p>Walk the tree, attach an <code>error</code> to each node, and return the
|
|
2701
|
+
mutated tree along with the total error count. The function does
|
|
2702
|
+
not mutate the input; it returns a fresh tree.</p>
|
|
2703
|
+
<p>Per-leaf errors come from <a href="#validateleaf">validateLeaf</a>. Map nodes
|
|
2704
|
+
additionally surface duplicate-key + empty-key errors on the
|
|
2705
|
+
offending children (not on the parent).</p>
|
|
2706
|
+
<h4 id="parameters-33">Parameters</h4>
|
|
2707
|
+
<div class="table-scroll">
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>tree</code></td><td align="left"><a href="#editortree"><code>EditorTree</code></a></td></tr></tbody></table></div>
|
|
2721
|
+
<h4 id="returns-37">Returns</h4>
|
|
2722
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#ABB2BF">{</span></span>
|
|
2723
|
+
<span class="line"><span style="color:#E06C75"> errorCount</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">;</span></span>
|
|
2724
|
+
<span class="line"><span style="color:#E06C75"> tree</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">EditorTree</span><span style="color:#ABB2BF">;</span></span>
|
|
2725
|
+
<span class="line"><span style="color:#ABB2BF">}</span></span></code></pre>
|
|
2726
|
+
<h5 id="errorcount">errorCount</h5>
|
|
2727
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">errorCount</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2728
|
+
<h5 id="tree">tree</h5>
|
|
2729
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E06C75">tree</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">EditorTree</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2730
|
+
<hr>
|
|
2731
|
+
<p><a id="vectorpreview"></a></p>
|
|
2732
|
+
<h3 id="vectorpreview">vectorPreview()</h3>
|
|
2733
|
+
<pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> vectorPreview</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">view</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">VectorView</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
|
|
2734
|
+
<p>Compact, display-safe rendering of a vector: <code>vector · <dim> [a, b, c, …]</code>.
|
|
2735
|
+
So a real embedding never dumps its full array into a diff, a rules trace, or
|
|
2736
|
+
a debugger panel.</p>
|
|
2737
|
+
<h4 id="parameters-34">Parameters</h4>
|
|
2738
|
+
<div class="table-scroll">
|
|
2739
|
+
|
|
2740
|
+
|
|
2741
|
+
|
|
2742
|
+
|
|
2743
|
+
|
|
2744
|
+
|
|
2745
|
+
|
|
2746
|
+
|
|
2747
|
+
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
<table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>view</code></td><td align="left"><a href="#vectorview"><code>VectorView</code></a></td></tr></tbody></table></div>
|
|
2752
|
+
<h4 id="returns-38">Returns</h4>
|
|
2753
|
+
<p><code>string</code></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="collectionlistprops"> <a href="#collectionlistprops">CollectionListProps</a> </li><li data-api-symbol="deletewithconfirmprops"> <a href="#deletewithconfirmprops">DeleteWithConfirmProps</a> </li><li data-api-symbol="documenteditorrootprops"> <a href="#documenteditorrootprops">DocumentEditorRootProps</a> </li><li data-api-symbol="documenteditorstate"> <a href="#documenteditorstate">DocumentEditorState</a> </li><li data-api-symbol="documentlistprops"> <a href="#documentlistprops">DocumentListProps</a> </li><li data-api-symbol="documentpreviewprops"> <a href="#documentpreviewprops">DocumentPreviewProps</a> </li><li data-api-symbol="editortree"> <a href="#editortree">EditorTree</a> </li><li data-api-symbol="fielddisplayprops"> <a href="#fielddisplayprops">FieldDisplayProps</a> </li><li data-api-symbol="fieldeditorcontract"> <a href="#fieldeditorcontract">FieldEditorContract</a> </li><li data-api-symbol="fieldeditprops"> <a href="#fieldeditprops">FieldEditProps</a> </li><li data-api-symbol="fieldnode"> <a href="#fieldnode">FieldNode</a> </li><li data-api-symbol="fieldrendererprops"> <a href="#fieldrendererprops">FieldRendererProps</a> </li><li data-api-symbol="parsedimportdoc"> <a href="#parsedimportdoc">ParsedImportDoc</a> </li><li data-api-symbol="parseimportoptions"> <a href="#parseimportoptions">ParseImportOptions</a> </li><li data-api-symbol="parseimportresult"> <a href="#parseimportresult">ParseImportResult</a> </li><li data-api-symbol="querybuilderactions"> <a href="#querybuilderactions">QueryBuilderActions</a> </li><li data-api-symbol="querybuilderprops"> <a href="#querybuilderprops">QueryBuilderProps</a> </li><li data-api-symbol="querybuilderstate"> <a href="#querybuilderstate">QueryBuilderState</a> </li><li data-api-symbol="querycondition"> <a href="#querycondition">QueryCondition</a> </li><li data-api-symbol="recursivedeleteimpl"> <a href="#recursivedeleteimpl">RecursiveDeleteImpl</a> </li><li data-api-symbol="recursivedeleteprogress"> <a href="#recursivedeleteprogress">RecursiveDeleteProgress</a> </li><li data-api-symbol="referencepickerprops"> <a href="#referencepickerprops">ReferencePickerProps</a> </li><li data-api-symbol="subscriptionstate"> <a href="#subscriptionstate">SubscriptionState</a> </li><li data-api-symbol="usecollectionlistoptions"> <a href="#usecollectionlistoptions">UseCollectionListOptions</a> </li><li data-api-symbol="usecollectionlistresult"> <a href="#usecollectionlistresult">UseCollectionListResult</a> </li><li data-api-symbol="usedocumenteditoroptions"> <a href="#usedocumenteditoroptions">UseDocumentEditorOptions</a> </li><li data-api-symbol="usedocumenteditorresult"> <a href="#usedocumenteditorresult">UseDocumentEditorResult</a> </li><li data-api-symbol="usedocumentlistoptions"> <a href="#usedocumentlistoptions">UseDocumentListOptions</a> </li><li data-api-symbol="usedocumentlistresult"> <a href="#usedocumentlistresult">UseDocumentListResult</a> </li><li data-api-symbol="usedocumentsubcollectionsoptions"> <a href="#usedocumentsubcollectionsoptions">UseDocumentSubcollectionsOptions</a> </li><li data-api-symbol="usedocumentsubcollectionsresult"> <a href="#usedocumentsubcollectionsresult">UseDocumentSubcollectionsResult</a> </li><li data-api-symbol="usequerybuilderoptions"> <a href="#usequerybuilderoptions">UseQueryBuilderOptions</a> </li><li data-api-symbol="userecursivedeleteresult"> <a href="#userecursivedeleteresult">UseRecursiveDeleteResult</a> </li><li data-api-symbol="usereferencepickeroptions"> <a href="#usereferencepickeroptions">UseReferencePickerOptions</a> </li><li data-api-symbol="usereferencepickerresult"> <a href="#usereferencepickerresult">UseReferencePickerResult</a> </li><li data-api-symbol="vectorview"> <a href="#vectorview">VectorView</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="browselocation"> <a href="#browselocation">BrowseLocation</a> </li><li data-api-symbol="documenteditoraction"> <a href="#documenteditoraction">DocumentEditorAction</a> </li><li data-api-symbol="fieldeditorregistry"> <a href="#fieldeditorregistry">FieldEditorRegistry</a> </li><li data-api-symbol="fieldtype"> <a href="#fieldtype">FieldType</a> </li><li data-api-symbol="firestoreapi"> <a href="#firestoreapi">FirestoreApi</a> </li><li data-api-symbol="listsubcollections()"> <a href="#listsubcollections">ListSubcollections()</a> </li><li data-api-symbol="queryop"> <a href="#queryop">QueryOp</a> </li><li data-api-symbol="usequerybuilderresult"> <a href="#usequerybuilderresult">UseQueryBuilderResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="defaultfieldeditors"> <a href="#defaultfieldeditors">defaultFieldEditors</a> </li><li data-api-symbol="documenteditor"> <a href="#documenteditor">DocumentEditor</a> </li><li data-api-symbol="multi_value_ops"> <a href="#multi_value_ops">MULTI_VALUE_OPS</a> </li><li data-api-symbol="query_ops"> <a href="#query_ops">QUERY_OPS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="asvectorview()"> <a href="#asvectorview">asVectorView()</a> </li><li data-api-symbol="collectionlist()"> <a href="#collectionlist">CollectionList()</a> </li><li data-api-symbol="deletewithconfirm()"> <a href="#deletewithconfirm">DeleteWithConfirm()</a> </li><li data-api-symbol="detectcollisions()"> <a href="#detectcollisions">detectCollisions()</a> </li><li data-api-symbol="documenteditorfields()"> <a href="#documenteditorfields">DocumentEditorFields()</a> </li><li data-api-symbol="documenteditorroot()"> <a href="#documenteditorroot">DocumentEditorRoot()</a> </li><li data-api-symbol="documentlist()"> <a href="#documentlist">DocumentList()</a> </li><li data-api-symbol="documentpreview()"> <a href="#documentpreview">DocumentPreview()</a> </li><li data-api-symbol="fieldrenderer()"> <a href="#fieldrenderer">FieldRenderer()</a> </li><li data-api-symbol="firestoreapiprovider()"> <a href="#firestoreapiprovider">FirestoreApiProvider()</a> </li><li data-api-symbol="firestoreautoid()"> <a href="#firestoreautoid">firestoreAutoId()</a> </li><li data-api-symbol="firestorevaluesequal()"> <a href="#firestorevaluesequal">firestoreValuesEqual()</a> </li><li data-api-symbol="infertype()"> <a href="#infertype">inferType()</a> </li><li data-api-symbol="initstate()"> <a href="#initstate">initState()</a> </li><li data-api-symbol="mergefieldeditors()"> <a href="#mergefieldeditors">mergeFieldEditors()</a> </li><li data-api-symbol="parseimport()"> <a href="#parseimport">parseImport()</a> </li><li data-api-symbol="querybuilder()"> <a href="#querybuilder">QueryBuilder()</a> </li><li data-api-symbol="reducer()"> <a href="#reducer">reducer()</a> </li><li data-api-symbol="referencepicker()"> <a href="#referencepicker">ReferencePicker()</a> </li><li data-api-symbol="treefromdata()"> <a href="#treefromdata">treeFromData()</a> </li><li data-api-symbol="treetodata()"> <a href="#treetodata">treeToData()</a> </li><li data-api-symbol="truncatevectorsfordisplay()"> <a href="#truncatevectorsfordisplay">truncateVectorsForDisplay()</a> </li><li data-api-symbol="usecollectionlist()"> <a href="#usecollectionlist">useCollectionList()</a> </li><li data-api-symbol="usedocumenteditor()"> <a href="#usedocumenteditor">useDocumentEditor()</a> </li><li data-api-symbol="usedocumenteditorcontext()"> <a href="#usedocumenteditorcontext">useDocumentEditorContext()</a> </li><li data-api-symbol="usedocumentlist()"> <a href="#usedocumentlist">useDocumentList()</a> </li><li data-api-symbol="usedocumentsubcollections()"> <a href="#usedocumentsubcollections">useDocumentSubcollections()</a> </li><li data-api-symbol="usefirestoreapi()"> <a href="#usefirestoreapi">useFirestoreApi()</a> </li><li data-api-symbol="usefirestorecollection()"> <a href="#usefirestorecollection">useFirestoreCollection()</a> </li><li data-api-symbol="usefirestoredoc()"> <a href="#usefirestoredoc">useFirestoreDoc()</a> </li><li data-api-symbol="usequerybuilder()"> <a href="#usequerybuilder">useQueryBuilder()</a> </li><li data-api-symbol="userecursivedelete()"> <a href="#userecursivedelete">useRecursiveDelete()</a> </li><li data-api-symbol="usereferencepicker()"> <a href="#usereferencepicker">useReferencePicker()</a> </li><li data-api-symbol="validatecollectionid()"> <a href="#validatecollectionid">validateCollectionId()</a> </li><li data-api-symbol="validatedocumentid()"> <a href="#validatedocumentid">validateDocumentId()</a> </li><li data-api-symbol="validateleaf()"> <a href="#validateleaf">validateLeaf()</a> </li><li data-api-symbol="validatetree()"> <a href="#validatetree">validateTree()</a> </li><li data-api-symbol="vectorpreview()"> <a href="#vectorpreview">vectorPreview()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>
|