Correct Reader producer completion and prepare only the active source
Route durable completion to the initiating PresentationMount, guarded against stale navigation and unrelated fan-out. Publish Gutenberg passages directly, preserve unfinished manual drafts, and open completed documents in the main reader pane. Prepare the selected provider and explicitly opened inspector only. Consolidate Studio factory contracts so optional execution placement is determined by implementations. Support typed stateful presentation props and local-module role selection in the React build layer. Update integration, browser, portal, and authoring documentation.
This commit is contained in:
@@ -121,6 +121,19 @@ async function fixture(replacement = "First", change?: (artifact: ReactPreparati
|
||||
return { workspace: workspace.workspace, pkg: workspace.workspace.packageImports[0]!, authored, interfaces };
|
||||
}
|
||||
|
||||
test("a local module names its checked role without a synthetic import alias", async () => {
|
||||
const { pkg, authored, interfaces } = await fixture();
|
||||
const source = structuredClone(authored) as any;
|
||||
source.modules.LibraryCard.children[0].role = { module: "First" };
|
||||
const declared = presentationDeclarations(JSON.stringify(source), pkg, [...interfaces.values()]);
|
||||
assert.deepEqual(declared.artifact.modules[0]!.children[0]!.role, { interface: "row-role@1", member: "row-render" });
|
||||
source.modules.LibraryCard.children[0].role = { module: "Missing" };
|
||||
assert.throws(
|
||||
() => presentationDeclarations(JSON.stringify(source), pkg, [...interfaces.values()]),
|
||||
/local module role/,
|
||||
);
|
||||
});
|
||||
|
||||
test("workspace expands distinct providers' private inputs without parent field declarations", async () => {
|
||||
const { pkg } = await fixture();
|
||||
const parent = pkg.checkedQueries!.find((query) => query.declaration.id === "react:input:library-card:data")!;
|
||||
|
||||
Reference in New Issue
Block a user