Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ schema -> document -> pointer/query -> can* -> change -> result
| [packages/json-document](packages/json-document) | core package. `createJSONDocument`, JSON Patch/Pointer/Path, selection, clipboard, history |
| [packages/collection](packages/collection) | ordered JSON array item 이동/복제/삭제 |
| [packages/clipboard-web](packages/clipboard-web) | browser clipboard bridge |
| [packages/contenteditable-web](packages/contenteditable-web) | `@interactive-os/json-document-contenteditable-web` DOM contenteditable text-surface adapter |
| [packages/contenteditable-react](packages/contenteditable-react) | `@interactive-os/json-document-contenteditable-react` React wrapper for contenteditable timing |
| [packages/schema-form](packages/schema-form) | schema-backed field descriptor |
| [packages/form-draft](packages/form-draft) | valid JSON commit 전 temporary invalid form input |
| [packages/protected-ranges](packages/protected-ranges) | protected JSON Pointer range edit guard |
Expand Down
138 changes: 136 additions & 2 deletions apps/site/src/generated/repo-catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,73 @@ export const repoCatalog = {
"review"
]
},
{
"path": "packages/contenteditable-react",
"name": "@interactive-os/json-document-contenteditable-react",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "React hook for the json-document contenteditable web adapter.",
"license": "MIT",
"summary": "Thin React hook for `@interactive-os/json-document-contenteditable-web`.",
"guidance": {
"useFor": "wrap the contenteditable web adapter with React render and selection restore timing",
"notFor": "rendering policy, editor commands, or non-React hosts"
},
"publicExports": [
"ContentEditableCommandPointerEvent",
"UseContentEditableOptions",
"UseContentEditableResult",
"useContentEditable"
],
"publicExportCount": 4,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"react"
]
},
{
"path": "packages/contenteditable-web",
"name": "@interactive-os/json-document-contenteditable-web",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "Official contenteditable DOM adapter for json-document text surfaces.",
"license": "MIT",
"summary": "Official DOM adapter for using `@interactive-os/json-document` text surfaces with\nbrowser `contenteditable`.",
"guidance": {
"useFor": "bind text surfaces to DOM contenteditable selection, IME input, and clipboard events",
"notFor": "editor block semantics, toolbar commands, React rendering, or rich text schema policy"
},
"publicExports": [
"ContentEditableAdapter",
"ContentEditableAdapterOptions",
"ContentEditableClipboardResult",
"ContentEditableError",
"ContentEditableErrorCode",
"ContentEditableFlushOptions",
"ContentEditableUpdate",
"JSON_ATOM_ATTRIBUTE",
"JSON_ATOM_REPLACEMENT",
"JSON_DOCUMENT_CONTENTEDITABLE_MIME",
"JSON_TEXT_ATTRIBUTE",
"TextSurfaceResolver",
"createContentEditableAdapter"
],
"publicExportCount": 13,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"web"
]
},
{
"path": "packages/dirty-state",
"name": "@interactive-os/json-document-dirty-state",
Expand Down Expand Up @@ -1001,6 +1068,73 @@ export const repoCatalog = {
"review"
]
},
{
"path": "packages/contenteditable-react",
"name": "@interactive-os/json-document-contenteditable-react",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "React hook for the json-document contenteditable web adapter.",
"license": "MIT",
"summary": "Thin React hook for `@interactive-os/json-document-contenteditable-web`.",
"guidance": {
"useFor": "wrap the contenteditable web adapter with React render and selection restore timing",
"notFor": "rendering policy, editor commands, or non-React hosts"
},
"publicExports": [
"ContentEditableCommandPointerEvent",
"UseContentEditableOptions",
"UseContentEditableResult",
"useContentEditable"
],
"publicExportCount": 4,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"react"
]
},
{
"path": "packages/contenteditable-web",
"name": "@interactive-os/json-document-contenteditable-web",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "Official contenteditable DOM adapter for json-document text surfaces.",
"license": "MIT",
"summary": "Official DOM adapter for using `@interactive-os/json-document` text surfaces with\nbrowser `contenteditable`.",
"guidance": {
"useFor": "bind text surfaces to DOM contenteditable selection, IME input, and clipboard events",
"notFor": "editor block semantics, toolbar commands, React rendering, or rich text schema policy"
},
"publicExports": [
"ContentEditableAdapter",
"ContentEditableAdapterOptions",
"ContentEditableClipboardResult",
"ContentEditableError",
"ContentEditableErrorCode",
"ContentEditableFlushOptions",
"ContentEditableUpdate",
"JSON_ATOM_ATTRIBUTE",
"JSON_ATOM_REPLACEMENT",
"JSON_DOCUMENT_CONTENTEDITABLE_MIME",
"JSON_TEXT_ATTRIBUTE",
"TextSurfaceResolver",
"createContentEditableAdapter"
],
"publicExportCount": 13,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"web"
]
},
{
"path": "packages/dirty-state",
"name": "@interactive-os/json-document-dirty-state",
Expand Down Expand Up @@ -3110,8 +3244,8 @@ export const repoCatalog = {
}
],
"totals": {
"packages": 18,
"officialExtensions": 17,
"packages": 20,
"officialExtensions": 19,
"labExtensions": 38,
"apps": 12
}
Expand Down
2 changes: 2 additions & 0 deletions config/json-document-source-aliases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ export interface SourceAlias {

export const officialExtensionPackages = [
"clipboard-web",
"contenteditable-web",
"contenteditable-react",
"collection",
"outline",
"schema-form",
Expand Down
4 changes: 3 additions & 1 deletion docs/generated/extensions-catalog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@

This section is generated from `packages/*` and `labs/extensions/*`.

Official extensions: 17
Official extensions: 19

| Package | Exports | Use for | Not for | Summary |
| --- | ---: | --- | --- | --- |
| `@interactive-os/json-document-bulk-edit` | 15 | apply JSONPath replace/delete operations to many document positions | rendered text search UI or product workflow approval | Official headless JSONPath bulk editing extension for `@interactive-os/json-document` documents. |
| `@interactive-os/json-document-clipboard-web` | 20 | bridge json-document clipboard payloads to the browser clipboard | TSV/CSV spreadsheet paste engines | Web clipboard extension functions for `@interactive-os/json-document`. |
| `@interactive-os/json-document-collection` | 9 | edit ordered JSON arrays with item-level commands | database collections or rendered list UI | Official headless collection editing extension for `@interactive-os/json-document` documents. |
| `@interactive-os/json-document-comments` | 14 | anchor review comments to document structure | comment UI, moderation, or author storage | Official headless comments extension for review notes anchored to `@interactive-os/json-document` documents. |
| `@interactive-os/json-document-contenteditable-react` | 4 | wrap the contenteditable web adapter with React render and selection restore timing | rendering policy, editor commands, or non-React hosts | Thin React hook for `@interactive-os/json-document-contenteditable-web`. |
| `@interactive-os/json-document-contenteditable-web` | 13 | bind text surfaces to DOM contenteditable selection, IME input, and clipboard events | editor block semantics, toolbar commands, React rendering, or rich text schema policy | Official DOM adapter for using `@interactive-os/json-document` text surfaces with browser `contenteditable`. |
| `@interactive-os/json-document-dirty-state` | 7 | compare a document to a clean baseline | persistence or server save status | Official headless dirty state tracking extension for `@interactive-os/json-document` documents. |
| `@interactive-os/json-document-form-draft` | 15 | hold temporary invalid form input before committing valid JSON | rendered form components | Official headless form draft extension for temporary input that is not ready to enter a schema-valid `@interactive-os/json-document` document. |
| `@interactive-os/json-document-grouping` | 15 | group and ungroup selected sibling JSON items | Airtable group-by views | Official extension for structural `group` and `ungroup`. |
Expand Down
138 changes: 136 additions & 2 deletions docs/generated/repo-catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,73 @@
"review"
]
},
{
"path": "packages/contenteditable-react",
"name": "@interactive-os/json-document-contenteditable-react",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "React hook for the json-document contenteditable web adapter.",
"license": "MIT",
"summary": "Thin React hook for `@interactive-os/json-document-contenteditable-web`.",
"guidance": {
"useFor": "wrap the contenteditable web adapter with React render and selection restore timing",
"notFor": "rendering policy, editor commands, or non-React hosts"
},
"publicExports": [
"ContentEditableCommandPointerEvent",
"UseContentEditableOptions",
"UseContentEditableResult",
"useContentEditable"
],
"publicExportCount": 4,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"react"
]
},
{
"path": "packages/contenteditable-web",
"name": "@interactive-os/json-document-contenteditable-web",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "Official contenteditable DOM adapter for json-document text surfaces.",
"license": "MIT",
"summary": "Official DOM adapter for using `@interactive-os/json-document` text surfaces with\nbrowser `contenteditable`.",
"guidance": {
"useFor": "bind text surfaces to DOM contenteditable selection, IME input, and clipboard events",
"notFor": "editor block semantics, toolbar commands, React rendering, or rich text schema policy"
},
"publicExports": [
"ContentEditableAdapter",
"ContentEditableAdapterOptions",
"ContentEditableClipboardResult",
"ContentEditableError",
"ContentEditableErrorCode",
"ContentEditableFlushOptions",
"ContentEditableUpdate",
"JSON_ATOM_ATTRIBUTE",
"JSON_ATOM_REPLACEMENT",
"JSON_DOCUMENT_CONTENTEDITABLE_MIME",
"JSON_TEXT_ATTRIBUTE",
"TextSurfaceResolver",
"createContentEditableAdapter"
],
"publicExportCount": 13,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"web"
]
},
{
"path": "packages/dirty-state",
"name": "@interactive-os/json-document-dirty-state",
Expand Down Expand Up @@ -1000,6 +1067,73 @@
"review"
]
},
{
"path": "packages/contenteditable-react",
"name": "@interactive-os/json-document-contenteditable-react",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "React hook for the json-document contenteditable web adapter.",
"license": "MIT",
"summary": "Thin React hook for `@interactive-os/json-document-contenteditable-web`.",
"guidance": {
"useFor": "wrap the contenteditable web adapter with React render and selection restore timing",
"notFor": "rendering policy, editor commands, or non-React hosts"
},
"publicExports": [
"ContentEditableCommandPointerEvent",
"UseContentEditableOptions",
"UseContentEditableResult",
"useContentEditable"
],
"publicExportCount": 4,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"react"
]
},
{
"path": "packages/contenteditable-web",
"name": "@interactive-os/json-document-contenteditable-web",
"status": "official-extension",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "Official contenteditable DOM adapter for json-document text surfaces.",
"license": "MIT",
"summary": "Official DOM adapter for using `@interactive-os/json-document` text surfaces with\nbrowser `contenteditable`.",
"guidance": {
"useFor": "bind text surfaces to DOM contenteditable selection, IME input, and clipboard events",
"notFor": "editor block semantics, toolbar commands, React rendering, or rich text schema policy"
},
"publicExports": [
"ContentEditableAdapter",
"ContentEditableAdapterOptions",
"ContentEditableClipboardResult",
"ContentEditableError",
"ContentEditableErrorCode",
"ContentEditableFlushOptions",
"ContentEditableUpdate",
"JSON_ATOM_ATTRIBUTE",
"JSON_ATOM_REPLACEMENT",
"JSON_DOCUMENT_CONTENTEDITABLE_MIME",
"JSON_TEXT_ATTRIBUTE",
"TextSurfaceResolver",
"createContentEditableAdapter"
],
"publicExportCount": 13,
"keywords": [
"@interactive-os/json-document",
"contenteditable",
"headless",
"json",
"web"
]
},
{
"path": "packages/dirty-state",
"name": "@interactive-os/json-document-dirty-state",
Expand Down Expand Up @@ -3109,8 +3243,8 @@
}
],
"totals": {
"packages": 18,
"officialExtensions": 17,
"packages": 20,
"officialExtensions": 19,
"labExtensions": 38,
"apps": 12
}
Expand Down
2 changes: 2 additions & 0 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import { createGrouping } from "@interactive-os/json-document-grouping";
import { createProposedChanges } from "@interactive-os/json-document-proposed-changes";
import { createComments } from "@interactive-os/json-document-comments";
import { createWebClipboard } from "@interactive-os/json-document-clipboard-web";
import { createContentEditableAdapter } from "@interactive-os/json-document-contenteditable-web";
import { useContentEditable } from "@interactive-os/json-document-contenteditable-react";
```

Official extension은 현재 shipped `packages/*`만이다. `labs/extensions/*`는 후보이고 공식 package로 안내하지 않는다. `calculated-fields`, `paste-special`, `autosave`는 1.0에서 lab 유지이며 official 승격을 보류한다.
Expand Down
Loading