Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add canHandleIntent to Structure Builder component #6516

Merged
merged 3 commits into from
May 8, 2024
Merged

Conversation

cngonzalez
Copy link
Member

Description

Some users would like to implement their own custom component within Structure, rather than just a desk list. However, this becomes difficult when trying to route to this component from other parts of the Studio, because there was no way for us to signal that this component could indeed handle that intent.

This PR takes the canHandleIntent argument available on lists and makes it available on components.

What to review

Is this a valid approach? Does it break inheritance of Structure Builder items in any way? Are there any gotchas?

Testing

This can be tried out in the test studio by adding a canHandleIntent to an S.component, like so:

      S.listItem()
        .id('translate')
        .title('Translate Test')
        .child(S.component(TranslateExample).id('example')
          .canHandleIntent((intent, params, context) =>  {
            console.log(intent, params, context)
            return true
          }
        )),

You should be able to run the Studio without crashing. When searching for a document, you should land on the canHandleIntent component.

A unit test is also included as part of this PR.

Notes for release

Custom components included in Structure (like S.component(MyCustomComponent)) can now be routed to from global search results or other links by using a canHandleIntent parameter.

@cngonzalez cngonzalez requested a review from a team as a code owner April 29, 2024 18:03
@cngonzalez cngonzalez requested review from juice49 and removed request for a team April 29, 2024 18:03
Copy link

vercel bot commented Apr 29, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
performance-studio ✅ Ready (Inspect) Visit Preview May 7, 2024 11:11am
test-next-studio ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 7, 2024 11:11am
test-studio ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 7, 2024 11:11am
1 Ignored Deployment
Name Status Preview Comments Updated (UTC)
studio-workshop ⬜️ Ignored (Inspect) Visit Preview May 7, 2024 11:11am

Copy link
Contributor

No changes to documentation

Copy link
Contributor

github-actions bot commented Apr 29, 2024

Component Testing Report Updated May 7, 2024 11:14 AM (UTC)

File Status Duration Passed Skipped Failed
comments/CommentInput.spec.tsx ✅ Passed (Inspect) 35s 15 0 0
formBuilder/ArrayInput.spec.tsx ✅ Passed (Inspect) 6s 3 0 0
formBuilder/inputs/PortableText/Annotations.spec.tsx ✅ Passed (Inspect) 26s 6 0 0
formBuilder/inputs/PortableText/copyPaste/CopyPaste.spec.tsx ✅ Passed (Inspect) 31s 11 7 0
formBuilder/inputs/PortableText/Decorators.spec.tsx ✅ Passed (Inspect) 14s 6 0 0
formBuilder/inputs/PortableText/FocusTracking.spec.tsx ✅ Passed (Inspect) 37s 15 0 0
formBuilder/inputs/PortableText/Input.spec.tsx ✅ Passed (Inspect) 1m 7s 13 0 0
formBuilder/inputs/PortableText/ObjectBlock.spec.tsx ✅ Passed (Inspect) 1m 2s 18 0 0
formBuilder/inputs/PortableText/PresenceCursors.spec.tsx ✅ Passed (Inspect) 7s 3 9 0
formBuilder/inputs/PortableText/RangeDecoration.spec.tsx ✅ Passed (Inspect) 20s 9 0 0
formBuilder/inputs/PortableText/Styles.spec.tsx ✅ Passed (Inspect) 14s 6 0 0
formBuilder/inputs/PortableText/Toolbar.spec.tsx ✅ Passed (Inspect) 23s 9 0 0

@juice49
Copy link
Contributor

juice49 commented May 7, 2024

I tested this in Studio, and it appeared to work correctly.

One thing I noticed is that the UserComponent doesn't seem to receive details about the handled intent (e.g. the intent type and document id) in its props.

The document id can be found via the router state (useRouterState), but it's a bit fiddly, and the developer must make the assumption that the final pane is the one containing the document (I'm not 100% sure this is always the case).

{
  "panes": [
    [
      {
        "id": "custom",
        "params": {}
      }
    ],
    [
      {
        "id": "component1",
        "params": {}
      }
    ],
    [
      {
        "id": "73bef166-639e-4313-bb5f-bbc5353869eb",
        "params": {}
      }
    ]
  ]
}

Is there a better way for developers to get details about the handled intent in their component? 🤔 I suspect this would generally be required to make useful intent-handling components. I'm wondering whether we should extend UserComponent to include the handled intent in its props as part of this change.

(I might be missing something obvious here!)

@cngonzalez
Copy link
Member Author

Is there a better way for developers to get details about the handled intent in their component? 🤔 I suspect this would generally be required to make useful intent-handling components. I'm wondering whether we should extend UserComponent to include the handled intent in its props as part of this change.

It's a great question, I'm not sure! There's quite a bit of logic to get the information into the pane parameter in the props from the router (I think?). I can look into replicating that.

@juice49
Copy link
Contributor

juice49 commented May 7, 2024

@cngonzalez Not to say that it's a blocker, necessarily. Just something I imagine developers might need in order to make use of this functionality.

@cngonzalez
Copy link
Member Author

@cngonzalez Not to say that it's a blocker, necessarily. Just something I imagine developers might need in order to make use of this functionality.

I'm having a hard time getting to the bottom of resolving that information from the way Structure works 😅 I wonder if it's helpful to:

  1. merge this as-is, to unblock some folks
  2. provide an example of using the router, as you suggest, or even the URL (as is used elsewhere in the codebase)

What do you think?

Copy link
Contributor

@juice49 juice49 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that sounds reasonable. Great addition! 🥳

@cngonzalez cngonzalez added this pull request to the merge queue May 8, 2024
Merged via the queue into next with commit a54ea1e May 8, 2024
39 checks passed
@cngonzalez cngonzalez deleted the sdx-1187 branch May 8, 2024 13:22
jordanl17 pushed a commit that referenced this pull request May 10, 2024
* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>
ricokahler pushed a commit that referenced this pull request May 14, 2024
* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>
github-merge-queue bot pushed a commit that referenced this pull request May 20, 2024
* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* fix(studio): adding tooltip to read-only bool inputs (#6580)

* fix(studio): adding tooltip to read-only bool inputs

* fix(studio): testing for tooltip on boolean read-only inputs

* fix(studio): removing memoisation as it was useless

* chore(deps): dedupe pnpm-lock.yaml (#6607)

Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>

* feat: add canHandleIntent to Structure Builder component (#6516)

* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>

* {wip} saved 2024-05-8 16:18

* fix(structure): use case insensitive search for inspect dialog (#6588)

* test(core): await publish action to prevent test flakiness (#6609)

* fix(deps): update dependency get-it to ^8.4.29 (#6603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(vision): add "save result as json/csv" buttons (#6158)

* feat(vision): add download as json/csv buttons

* fix(vision): use blob urls for downloads (#6213)

* fix(vision): use Translate component to avoid splitting i18n strings

* fix(vision): clean up i18n resources for result saving feature

---------

Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* fix(core/form): prevent onFocus for root object paths being called by editing form (#6610)

This will prevent any input calling element.onFocus() on any opened block or inline-object
inside the PT-input, as that will close the editing modal for them (through DocumentPaneProvider)

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(structure): rendering columns in sheet list

* Merge branch 'edx-1284' into EDX-1308

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* test(core, desk): add tests for keyvalue storage (#6587)

* test(core): add tests for document list sort and display

* test(structure): add test for inspect dialog

* test(core): add tests for saved searches

* v3.41.0

* test(core): fixes flaky test with document publish (#6595)

* test(core): fixes flaky test with document publish

* test(core): use more realistic fix for flaky test

* chore(deps): update linters (#6590)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency styled-components to ^6.1.10 (#6585)

* chore(deps): update dependency styled-components to ^6.1.10

* chore: update test snapshot

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <stipsan@gmail.com>

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(lockfile): update dependency @sanity/react-loader to v1.9.17 (#6584)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(presentation): regression causing a crash when in an embedded studio (#6606)

* v3.41.1

* fix(studio): adding tooltip to read-only bool inputs (#6580)

* fix(studio): adding tooltip to read-only bool inputs

* fix(studio): testing for tooltip on boolean read-only inputs

* fix(studio): removing memoisation as it was useless

* chore(deps): dedupe pnpm-lock.yaml (#6607)

Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>

* feat: add canHandleIntent to Structure Builder component (#6516)

* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>

* fix(structure): use case insensitive search for inspect dialog (#6588)

* test(core): await publish action to prevent test flakiness (#6609)

* fix(deps): update dependency get-it to ^8.4.29 (#6603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(vision): add "save result as json/csv" buttons (#6158)

* feat(vision): add download as json/csv buttons

* fix(vision): use blob urls for downloads (#6213)

* fix(vision): use Translate component to avoid splitting i18n strings

* fix(vision): clean up i18n resources for result saving feature

---------

Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* fix(core/form): prevent onFocus for root object paths being called by editing form (#6610)

This will prevent any input calling element.onFocus() on any opened block or inline-object
inside the PT-input, as that will close the editing modal for them (through DocumentPaneProvider)

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* v3.41.0

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(presentation): regression causing a crash when in an embedded studio (#6606)

* v3.41.1

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(sheet-list): add paginated sheet list view

* feat(structure): control column visibility in sheet list

* feat(structure): control column visibility in sheet list

* feat(structure): control column visibility in sheet list

* feat(structure): row selection

* chore(bundle): remove unnecessary bundles and make root imports index (#6616)

* chore(bundle): remove unnecessary bundles and make root imports index

* chore: remove unnecessary depcheck updates

* feat(pte): add `hideToolbar` and `fullscreen` props to `PortableTextInput` (#6621)

* feat(form/inputs): add prop to hide the toolbar in PT-input

* feat(form/inputs): control PT-input fullscreen from props

* chore(test-studio): add example document type with custom block editor variants

* refactor: rename `fullscreen` to `initialFullscreen`

* refactor: don't unnecessarily alias `initialFullscreen` prop

---------

Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>

* fix(pte): don't render the PTE block extras container when not in use, disable pointer events on highlights (#6620)

* fix(pte): don't unnecessarily render PTE block actions container

* fix: remove pointer-events from validation + change highlight blocks

* chore(lockfile): update dependency @sanity/assist to v3.0.4 (#6601)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* skip recalling invokePrepare (#6608)

* feat(structure): only showing the column select for hideable columns

* fix(core): update test snapshots (#6629)

* fix(e2e): support headless/headful env var toggle (#6558)

* fix(deps): update dependency @sanity/presentation to v1.15.2 (#6632)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(structure): booleans render as selects

* feat: add icon to BlockStyleDefinition (#6613)

* feat(pte): initial support for `renderEditable` in portable text inputs (#6627)

* feat(form/inputs): support rendering PTE Editable through PortableTextInput

* fix(form/inputs): render with props, but without defaultRender

defaultRender is not part of the PortableTextEditor's Editable props

* refactor: rename useSpellcheck hook for consistency

* refactor: prefer importing react MutableRefObject type directly

* chore(test-studio): update custom block editor schema

* chore: mark renderEditable as hidden and in beta

---------

Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>

* chore(ci): add a circleci config to bundle packages (#6446)

* chore(ci): add a circleci config to bundle packages

* fix: store escaped package names in the manifest

* chore: run job only on current

* chore(lockfile): update dependency esbuild to v0.21.2 (#6602)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(structure): add virtualised documentSheetList and sheetListStore

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(sheet-list): add paginated sheet list view

* feat(structure): clean files and implement paginated sheet list with filter

* fix(core): remove useEditStateList hook

* chore(core): refactor search elements for export and reusability

* feat(structure): adding columns control back in

* fix(structure): update documentSheetList test

* chore(structure): rename useDocumentSheetListStore properties

* feat(structure): refactor for cols control

* feat(structure): always require 1 column visible

* feat(structure): testing for Columns Control

* feat(structure): spreadsheet styling on sheetlistcell

* fix(deps): Update dev-non-major (#6659)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(scheduled-publishing): don't include it if it's the only plugin available (#6530)

* fix(scheduled-publishing): don't include the tool if it's the plugin available

* chore(core): add tests for resolve default plugins

* feat(structure): add virtualised documentSheetList and sheetListStore

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(sheet-list): add paginated sheet list view

* feat(structure): clean files and implement paginated sheet list with filter

* fix(core): remove useEditStateList hook

* chore(core): refactor search elements for export and reusability

* fix(structure): update documentSheetList test

* chore(structure): rename useDocumentSheetListStore properties

* chore(structure): rename documentSheet* to documentSheetList*

* Merge branch 'edx-1284' into EDX-1308

* Merge branch 'edx-1284' into EDX-1308

* Merge branch 'edx-1284' into EDX-1308

* feat(structure): removing changes to book schema

* fix(structure): remove useEffect and set table columns as initial state (#6712)

* fix(structure): remove useEffect and set table columns as initial state

* fix(structure): use resetColumnVisibility() helper

* feat(structure): testing for useDocumentSheetColumns with initial cols

* feat(structure): PR comments to improve types and remove WIP

* feat(structure): fixing broken test for init col visibilities

---------

Co-authored-by: ecospark[bot] <128108030+ecospark[bot]@users.noreply.github.com>
Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>
Co-authored-by: Carolina Gonzalez <carolina.nicole.gonzalez@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Rostislav Melkumyan <hello@rosti.no>
Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>
Co-authored-by: Binoy Patel <me@binoy.io>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <stipsan@gmail.com>
Co-authored-by: Cody Olsen <81981+stipsan@users.noreply.github.com>
Co-authored-by: Robin Pyon <robinpyon@users.noreply.github.com>
Co-authored-by: Evensix <93653507+evensix-dev@users.noreply.github.com>
Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request May 22, 2024
* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* fix(studio): adding tooltip to read-only bool inputs (#6580)

* fix(studio): adding tooltip to read-only bool inputs

* fix(studio): testing for tooltip on boolean read-only inputs

* fix(studio): removing memoisation as it was useless

* chore(deps): dedupe pnpm-lock.yaml (#6607)

Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>

* feat: add canHandleIntent to Structure Builder component (#6516)

* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>

* {wip} saved 2024-05-8 16:18

* fix(structure): use case insensitive search for inspect dialog (#6588)

* test(core): await publish action to prevent test flakiness (#6609)

* fix(deps): update dependency get-it to ^8.4.29 (#6603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(vision): add "save result as json/csv" buttons (#6158)

* feat(vision): add download as json/csv buttons

* fix(vision): use blob urls for downloads (#6213)

* fix(vision): use Translate component to avoid splitting i18n strings

* fix(vision): clean up i18n resources for result saving feature

---------

Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* fix(core/form): prevent onFocus for root object paths being called by editing form (#6610)

This will prevent any input calling element.onFocus() on any opened block or inline-object
inside the PT-input, as that will close the editing modal for them (through DocumentPaneProvider)

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(structure): rendering columns in sheet list

* Merge branch 'edx-1284' into EDX-1308

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* test(core, desk): add tests for keyvalue storage (#6587)

* test(core): add tests for document list sort and display

* test(structure): add test for inspect dialog

* test(core): add tests for saved searches

* v3.41.0

* test(core): fixes flaky test with document publish (#6595)

* test(core): fixes flaky test with document publish

* test(core): use more realistic fix for flaky test

* chore(deps): update linters (#6590)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency styled-components to ^6.1.10 (#6585)

* chore(deps): update dependency styled-components to ^6.1.10

* chore: update test snapshot

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <stipsan@gmail.com>

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(lockfile): update dependency @sanity/react-loader to v1.9.17 (#6584)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(presentation): regression causing a crash when in an embedded studio (#6606)

* v3.41.1

* fix(studio): adding tooltip to read-only bool inputs (#6580)

* fix(studio): adding tooltip to read-only bool inputs

* fix(studio): testing for tooltip on boolean read-only inputs

* fix(studio): removing memoisation as it was useless

* chore(deps): dedupe pnpm-lock.yaml (#6607)

Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>

* feat: add canHandleIntent to Structure Builder component (#6516)

* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>

* fix(structure): use case insensitive search for inspect dialog (#6588)

* test(core): await publish action to prevent test flakiness (#6609)

* fix(deps): update dependency get-it to ^8.4.29 (#6603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(vision): add "save result as json/csv" buttons (#6158)

* feat(vision): add download as json/csv buttons

* fix(vision): use blob urls for downloads (#6213)

* fix(vision): use Translate component to avoid splitting i18n strings

* fix(vision): clean up i18n resources for result saving feature

---------

Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* fix(core/form): prevent onFocus for root object paths being called by editing form (#6610)

This will prevent any input calling element.onFocus() on any opened block or inline-object
inside the PT-input, as that will close the editing modal for them (through DocumentPaneProvider)

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* v3.41.0

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(presentation): regression causing a crash when in an embedded studio (#6606)

* v3.41.1

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(sheet-list): add paginated sheet list view

* feat(structure): control column visibility in sheet list

* feat(structure): control column visibility in sheet list

* feat(structure): control column visibility in sheet list

* feat(structure): row selection

* chore(bundle): remove unnecessary bundles and make root imports index (#6616)

* chore(bundle): remove unnecessary bundles and make root imports index

* chore: remove unnecessary depcheck updates

* feat(pte): add `hideToolbar` and `fullscreen` props to `PortableTextInput` (#6621)

* feat(form/inputs): add prop to hide the toolbar in PT-input

* feat(form/inputs): control PT-input fullscreen from props

* chore(test-studio): add example document type with custom block editor variants

* refactor: rename `fullscreen` to `initialFullscreen`

* refactor: don't unnecessarily alias `initialFullscreen` prop

---------

Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>

* fix(pte): don't render the PTE block extras container when not in use, disable pointer events on highlights (#6620)

* fix(pte): don't unnecessarily render PTE block actions container

* fix: remove pointer-events from validation + change highlight blocks

* featu(strucuture): allowing shift selecting across multiple sheet list rows

* chore(lockfile): update dependency @sanity/assist to v3.0.4 (#6601)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* skip recalling invokePrepare (#6608)

* feat(structure): only showing the column select for hideable columns

* fix(core): update test snapshots (#6629)

* fix(e2e): support headless/headful env var toggle (#6558)

* fix(deps): update dependency @sanity/presentation to v1.15.2 (#6632)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(structure): booleans render as selects

* feat: add icon to BlockStyleDefinition (#6613)

* feat(pte): initial support for `renderEditable` in portable text inputs (#6627)

* feat(form/inputs): support rendering PTE Editable through PortableTextInput

* fix(form/inputs): render with props, but without defaultRender

defaultRender is not part of the PortableTextEditor's Editable props

* refactor: rename useSpellcheck hook for consistency

* refactor: prefer importing react MutableRefObject type directly

* chore(test-studio): update custom block editor schema

* chore: mark renderEditable as hidden and in beta

---------

Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>

* chore(ci): add a circleci config to bundle packages (#6446)

* chore(ci): add a circleci config to bundle packages

* fix: store escaped package names in the manifest

* chore: run job only on current

* chore(lockfile): update dependency esbuild to v0.21.2 (#6602)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(structure): add virtualised documentSheetList and sheetListStore

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(sheet-list): add paginated sheet list view

* feat(structure): clean files and implement paginated sheet list with filter

* fix(core): remove useEditStateList hook

* chore(core): refactor search elements for export and reusability

* feat(structure): adding columns control back in

* fix(structure): update documentSheetList test

* chore(structure): rename useDocumentSheetListStore properties

* feat(structure): refactor for cols control

* feat(structure): always require 1 column visible

* feat(structure): testing for Columns Control

* feat(structure): spreadsheet styling on sheetlistcell

* fix(deps): Update dev-non-major (#6659)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(scheduled-publishing): don't include it if it's the only plugin available (#6530)

* fix(scheduled-publishing): don't include the tool if it's the plugin available

* chore(core): add tests for resolve default plugins

* feat(structure): add virtualised documentSheetList and sheetListStore

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(sheet-list): add paginated sheet list view

* feat(structure): clean files and implement paginated sheet list with filter

* fix(core): remove useEditStateList hook

* chore(core): refactor search elements for export and reusability

* fix(structure): update documentSheetList test

* chore(structure): rename useDocumentSheetListStore properties

* chore(structure): rename documentSheet* to documentSheetList*

* Merge branch 'edx-1284' into EDX-1308

* Merge branch 'edx-1284' into EDX-1308

* Merge branch 'edx-1284' into EDX-1308

* feat(structure): removing changes to book schema

* feat(structure): state for selected anchor

* fix(structure): remove useEffect and set table columns as initial state (#6712)

* fix(structure): remove useEffect and set table columns as initial state

* fix(structure): use resetColumnVisibility() helper

* feat(structure): testing for useDocumentSheetColumns with initial cols

* feat(structure): fixing import of afterAll

* feat(structure): PR comments to improve types and remove WIP

* feat(structure): fixing broken test for init col visibilities

* feat(structure): redirectory of sheet list modules

* feat(structure): testing row selector

* feat(structure): refactor of additional selection rows

* feat(structure): refactor of additional selection rows

* feat(structure): fixing issue with nested fields and separator

* fix(structure): fixing incorrect way of setting col visibility

* feat(structure): removing incorrectly placed hook

* feat(structure): codeowners for doc list

* feat(structure): fixing type issue

* feat(structure): rename of options.meta fnc

---------

Co-authored-by: ecospark[bot] <128108030+ecospark[bot]@users.noreply.github.com>
Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>
Co-authored-by: Carolina Gonzalez <carolina.nicole.gonzalez@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Rostislav Melkumyan <hello@rosti.no>
Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>
Co-authored-by: Binoy Patel <me@binoy.io>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <stipsan@gmail.com>
Co-authored-by: Cody Olsen <81981+stipsan@users.noreply.github.com>
Co-authored-by: Robin Pyon <robinpyon@users.noreply.github.com>
Co-authored-by: Evensix <93653507+evensix-dev@users.noreply.github.com>
Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request May 24, 2024
* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* fix(studio): adding tooltip to read-only bool inputs (#6580)

* fix(studio): adding tooltip to read-only bool inputs

* fix(studio): testing for tooltip on boolean read-only inputs

* fix(studio): removing memoisation as it was useless

* chore(deps): dedupe pnpm-lock.yaml (#6607)

Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>

* feat: add canHandleIntent to Structure Builder component (#6516)

* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>

* {wip} saved 2024-05-8 16:18

* fix(structure): use case insensitive search for inspect dialog (#6588)

* test(core): await publish action to prevent test flakiness (#6609)

* fix(deps): update dependency get-it to ^8.4.29 (#6603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(vision): add "save result as json/csv" buttons (#6158)

* feat(vision): add download as json/csv buttons

* fix(vision): use blob urls for downloads (#6213)

* fix(vision): use Translate component to avoid splitting i18n strings

* fix(vision): clean up i18n resources for result saving feature

---------

Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* fix(core/form): prevent onFocus for root object paths being called by editing form (#6610)

This will prevent any input calling element.onFocus() on any opened block or inline-object
inside the PT-input, as that will close the editing modal for them (through DocumentPaneProvider)

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(structure): rendering columns in sheet list

* Merge branch 'edx-1284' into EDX-1308

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* test(core, desk): add tests for keyvalue storage (#6587)

* test(core): add tests for document list sort and display

* test(structure): add test for inspect dialog

* test(core): add tests for saved searches

* v3.41.0

* test(core): fixes flaky test with document publish (#6595)

* test(core): fixes flaky test with document publish

* test(core): use more realistic fix for flaky test

* chore(deps): update linters (#6590)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency styled-components to ^6.1.10 (#6585)

* chore(deps): update dependency styled-components to ^6.1.10

* chore: update test snapshot

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <stipsan@gmail.com>

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(lockfile): update dependency @sanity/react-loader to v1.9.17 (#6584)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(presentation): regression causing a crash when in an embedded studio (#6606)

* v3.41.1

* fix(studio): adding tooltip to read-only bool inputs (#6580)

* fix(studio): adding tooltip to read-only bool inputs

* fix(studio): testing for tooltip on boolean read-only inputs

* fix(studio): removing memoisation as it was useless

* chore(deps): dedupe pnpm-lock.yaml (#6607)

Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>

* feat: add canHandleIntent to Structure Builder component (#6516)

* feat: add canHandleIntent to S.component

* fix: properly type canHandleIntent

* Update packages/sanity/src/structure/structureBuilder/Component.ts

Co-authored-by: Ash <ash@sanity.io>

---------

Co-authored-by: Ash <ash@sanity.io>

* fix(structure): use case insensitive search for inspect dialog (#6588)

* test(core): await publish action to prevent test flakiness (#6609)

* fix(deps): update dependency get-it to ^8.4.29 (#6603)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(vision): add "save result as json/csv" buttons (#6158)

* feat(vision): add download as json/csv buttons

* fix(vision): use blob urls for downloads (#6213)

* fix(vision): use Translate component to avoid splitting i18n strings

* fix(vision): clean up i18n resources for result saving feature

---------

Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* fix(core/form): prevent onFocus for root object paths being called by editing form (#6610)

This will prevent any input calling element.onFocus() on any opened block or inline-object
inside the PT-input, as that will close the editing modal for them (through DocumentPaneProvider)

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* v3.41.0

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(presentation): regression causing a crash when in an embedded studio (#6606)

* v3.41.1

* fix(deps): update dependency @sanity/client to ^6.18.0 (#6604)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(core, structure) sheet list menu option (#6593)

* feat(structure): Rendering sheet list layout option in test-studio

* feat(structure): branching the rendering of different document list panes

* feat(structure): renaming of generic pane components

* feat(structure): fixing typing for new sheetList

* feat(structure): resolving a default export to named

* feat(structure): testing sheet view pane display logcic

* fix(structure): resolving testing for useStructureTool

* chore(lockfile): update dependency zod to v3.23.7 (#6527)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(sheet-list): add paginated sheet list view

* feat(structure): control column visibility in sheet list

* feat(structure): control column visibility in sheet list

* feat(structure): control column visibility in sheet list

* feat(structure): row selection

* chore(bundle): remove unnecessary bundles and make root imports index (#6616)

* chore(bundle): remove unnecessary bundles and make root imports index

* chore: remove unnecessary depcheck updates

* feat(pte): add `hideToolbar` and `fullscreen` props to `PortableTextInput` (#6621)

* feat(form/inputs): add prop to hide the toolbar in PT-input

* feat(form/inputs): control PT-input fullscreen from props

* chore(test-studio): add example document type with custom block editor variants

* refactor: rename `fullscreen` to `initialFullscreen`

* refactor: don't unnecessarily alias `initialFullscreen` prop

---------

Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>

* fix(pte): don't render the PTE block extras container when not in use, disable pointer events on highlights (#6620)

* fix(pte): don't unnecessarily render PTE block actions container

* fix: remove pointer-events from validation + change highlight blocks

* chore(lockfile): update dependency @sanity/assist to v3.0.4 (#6601)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* skip recalling invokePrepare (#6608)

* feat(structure): only showing the column select for hideable columns

* fix(core): update test snapshots (#6629)

* fix(e2e): support headless/headful env var toggle (#6558)

* fix(deps): update dependency @sanity/presentation to v1.15.2 (#6632)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(structure): booleans render as selects

* feat: add icon to BlockStyleDefinition (#6613)

* feat(pte): initial support for `renderEditable` in portable text inputs (#6627)

* feat(form/inputs): support rendering PTE Editable through PortableTextInput

* fix(form/inputs): render with props, but without defaultRender

defaultRender is not part of the PortableTextEditor's Editable props

* refactor: rename useSpellcheck hook for consistency

* refactor: prefer importing react MutableRefObject type directly

* chore(test-studio): update custom block editor schema

* chore: mark renderEditable as hidden and in beta

---------

Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>

* chore(ci): add a circleci config to bundle packages (#6446)

* chore(ci): add a circleci config to bundle packages

* fix: store escaped package names in the manifest

* chore: run job only on current

* chore(lockfile): update dependency esbuild to v0.21.2 (#6602)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(structure): add virtualised documentSheetList and sheetListStore

* feat(core): add useEditStateList hook

* feat(sheet-list): add table view

* feat(sheet-list): add paginated sheet list view

* feat(structure): clean files and implement paginated sheet list with filter

* fix(core): remove useEditStateList hook

* chore(core): refactor search elements for export and reusability

* feat(structure): adding columns control back in

* fix(structure): update documentSheetList test

* chore(structure): rename useDocumentSheetListStore properties

* feat(structure): refactor for cols control

* feat(structure): always require 1 column visible

* feat(structure): testing for Columns Control

* feat(structure): spreadsheet styling on sheetlistcell

* feat(structure): POC for cell value copy/paste

* feat(structure): handling up and down selection of cells

* feat(structure): handling up and down selection of cells

* feat(structure): handling up and down selection of cells

* feat(structure): handling up and down selection of cells

* feat(structure): handling up and down selection of cells

* feat(structure): simplifying handler for keyDown

* feat(structure): return types for SheetListContext

* feat(structure): fixing all key down issue on focused cell

* feat(structure): starting support for left and right arrows

* feat(structure): starting to branch on double clicks

* feat(structure): supporting arrow right/left for col navigation

* feat(structure): using singleton alias import

* feat(structure): merge with latest next

* feat(structure): handling enter clicks

* feat(structure): handling enter clicks

* feat(structure): single cell paste

* feat(structure): handling batch pastes

* feat(structure): handling copy when selected

* feat(structure): copy only handled in addition to default on anchor select

* feat(structure): improvement to readability; enter to blur and submit

* feat(structure): testing for keyboard nav on cells

* feat(structure): testing for keyboard nav on cells

* feat(structure): fixing mock for pane test

* feat(structure): fixing mock for pane test

* feat(structure): fixing for react compiler

* feat(structure): refactor of name for selection provider

* feat(structure): supporting keyboard on select; refactor of provider name

---------

Co-authored-by: ecospark[bot] <128108030+ecospark[bot]@users.noreply.github.com>
Co-authored-by: juice49 <1454914+juice49@users.noreply.github.com>
Co-authored-by: Carolina Gonzalez <carolina.nicole.gonzalez@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Rostislav Melkumyan <hello@rosti.no>
Co-authored-by: Per-Kristian Nordnes <per.kristian.nordnes@gmail.com>
Co-authored-by: Binoy Patel <me@binoy.io>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <stipsan@gmail.com>
Co-authored-by: Cody Olsen <81981+stipsan@users.noreply.github.com>
Co-authored-by: Robin Pyon <robinpyon@users.noreply.github.com>
Co-authored-by: Evensix <93653507+evensix-dev@users.noreply.github.com>
Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants