Files
language-reader/navigation.qx
T

44 lines
4.9 KiB
Plaintext
Raw Normal View History

fragment {
import interface ReadingNavigation;
atom ReadingNavigationObject id "atom:reading:navigation";
conform ReadingLibrary as PresentationStateFactory<interface ReadingNavigation> id "reading:navigation:factory" {
bind create.call to package LanguageReaderRuntime.createNavigation with {navigation to creation ReadingNavigationObject with {PresentationState from input;};};
}
conform ReadingNavigationObject as PresentationStateRecord<interface ReadingNavigation,atom ReadingLibrary> id "reading:navigation:metadata" {}
conform ReadingNavigationObject as PresentationStateValues<interface ReadingNavigation> id "reading:navigation:copy" {
bind copyValues.call to package LanguageReaderRuntime.copyNavigation with {source to interface ReadingNavigation;target to interface ReadingNavigation from input;};
}
conform ReadingNavigationObject as ReadingNavigation id "reading:navigation:values" {
private edge SelectedDocument id "reading:navigation:selected" {atom Self projection document id "reading:navigation:document" optional-one on-delete "detach" public-traversal;interface ReadingDocument projection readers id "reading:document:readers" many on-delete "detach";}
private state Cursor id "reading:navigation:cursor" on Self : record {anchor:uint32;focus:uint32;size:uint32;} policy register default {"anchor":0,"focus":0,"size":23};
private state Draft id "reading:navigation:draft" on Self : record {title:string;text:string;custom:string;} policy crdt(record {title:string;text:string;custom:string;}) default {"title":"","text":"","custom":""};
bind document.resolve to edge SelectedDocument.document.resolve;
private state ReadingView id "reading:navigation:reading" on Self : record {displayMode:string;position:uint32;} policy register default {"displayMode":"pages","position":0};
bind reading.get to state ReadingView.read;
bind reading.set to package LanguageReaderRuntime.setReadingView with {reading to state ReadingView;};
private state AnnotationTarget id "reading:navigation:annotation-target" on Self : optional<record {start:uint32;end:uint32;}> policy register default null;
private state Viewports id "reading:navigation:viewports" on Self : list<record {client:string;width:uint32;height:uint32;expiresAt:double;}> policy register default [];
bind annotationTarget to state AnnotationTarget;
bind viewports.get to state Viewports.read;
bind reportViewport.call to package LanguageReaderRuntime.reportViewport with {viewports to state Viewports;};
bind open.call to package LanguageReaderRuntime.openDocument with {document to edge SelectedDocument.document;cursor to state Cursor;reading to state ReadingView;target to state AnnotationTarget;};
bind cursor to state Cursor;
private state UI id "reading:navigation:ui" on Self : record {page:string;panel:string;section:string;sourceTab:string;} policy register default {"page":"reading","panel":"","section":"general","sourceTab":"paste"};
private state Builder id "reading:navigation:builder" on Self : record {style:string;reveal:string;color:string;options:string;} policy register default {"style":"highlight","reveal":"always","color":"#53796c","options":"{}"};
private state Prompts id "reading:navigation:prompts" on Self : record {name:string;change:string;followup:string;generate:string;} policy crdt(record {name:string;change:string;followup:string;generate:string;}) default {"name":"","change":"","followup":"","generate":""};
private edge SettingsReader id "reading:navigation:settings-reader" {atom Self projection reader id "reading:navigation:settings-reader" optional-one on-delete "detach" public-traversal;interface ReadingReader projection views id "reading:reader:settings-views" many on-delete "detach";}
private edge SettingsFeature id "reading:navigation:settings-feature" {atom Self projection feature id "reading:navigation:settings-feature" optional-one on-delete "detach" public-traversal;interface ReadingFeature projection views id "reading:feature:settings-views" many on-delete "detach";}
bind ui to state UI;
bind builder to state Builder;
bind prompts.get to state Prompts.read;bind prompts.edit to state Prompts.edit;
bind settingsReader.resolve to edge SettingsReader.reader.resolve;
bind settingsReader.connect to edge SettingsReader.reader.connect;
bind settingsReader.disconnect to edge SettingsReader.reader.disconnect;
bind settingsFeature.resolve to edge SettingsFeature.feature.resolve;
bind settingsFeature.connect to edge SettingsFeature.feature.connect;
bind settingsFeature.disconnect to edge SettingsFeature.feature.disconnect;
bind selectSettings.call to package LanguageReaderRuntime.selectSettings with {ui to state UI;reader to edge SettingsReader.reader;feature to edge SettingsFeature.feature;document to interface ReadingDocument from input;};
bind draft.get to state Draft.read;bind draft.edit to state Draft.edit;
}
}