diff options
Diffstat (limited to 'src/client/views/PropertiesView.tsx')
-rw-r--r-- | src/client/views/PropertiesView.tsx | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index fcac4d464..229ceffe2 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -18,11 +18,12 @@ import { Id } from '../../fields/FieldSymbols'; import { InkField } from '../../fields/InkField'; import { List } from '../../fields/List'; import { ComputedField } from '../../fields/ScriptField'; -import { BoolCast, Cast, DocCast, NumCast, StrCast } from '../../fields/Types'; +import { Cast, DocCast, NumCast, StrCast } from '../../fields/Types'; import { GetEffectiveAcl, SharingPermissions, normalizeEmail } from '../../fields/util'; import { CollectionViewType, DocumentType } from '../documents/DocumentTypes'; import { GroupManager } from '../util/GroupManager'; import { LinkManager } from '../util/LinkManager'; +import { SettingsManager } from '../util/SettingsManager'; import { SharingManager } from '../util/SharingManager'; import { SnappingManager } from '../util/SnappingManager'; import { Transform } from '../util/Transform'; @@ -30,6 +31,7 @@ import { UndoManager, undoBatch, undoable } from '../util/UndoManager'; import { EditableView } from './EditableView'; import { FilterPanel } from './FilterPanel'; import { InkStrokeProperties } from './InkStrokeProperties'; +import { InkingStroke } from './InkingStroke'; import { ObservableReactComponent } from './ObservableReactComponent'; import { PropertiesButtons } from './PropertiesButtons'; import { PropertiesDocBacklinksSelector } from './PropertiesDocBacklinksSelector'; @@ -41,9 +43,6 @@ import { DocumentView } from './nodes/DocumentView'; import { StyleProviderFuncType } from './nodes/FieldView'; import { OpenWhere } from './nodes/OpenWhere'; import { PresBox, PresEffect, PresEffectDirection } from './nodes/trails'; -import { InkingStroke } from './InkingStroke'; -import { SettingsManager } from '../util/SettingsManager'; -import { MarqueeOptionsMenu } from './collections/collectionFreeForm'; import { SmartDrawHandler } from './smartdraw/SmartDrawHandler'; interface PropertiesViewProps { @@ -75,6 +74,10 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps return 200; } + @computed get containsInkDoc() { + return this.containsInk(this.selectedDoc); + } + @computed get selectedDoc() { return DocumentView.SelectedSchemaDoc() || this.selectedDocumentView?.Document || Doc.ActiveDashboard; } @@ -118,7 +121,6 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps @observable openSlideOptions: boolean = false; // For ink groups - @observable containsInkDoc: boolean = false; @observable inkDoc: Doc | undefined = undefined; @observable _controlButton: boolean = false; @@ -814,7 +816,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps } @computed get selectedStrokes() { - return this.containsInkDoc ? DocListCast(this.selectedDoc[DocData].data) : this.selectedDoc ? [this.selectedDoc] : []; + return this.containsInkDoc ? DocListCast(this.selectedDoc[DocData].data) : DocumentView.SelectedSchemaDoc() ? [DocumentView.SelectedSchemaDoc()!] : DocumentView.SelectedDocs().filter(doc => doc.layout_isSvg); } @computed get shapeXps() { return NumCast(this.selectedDoc?.x); } // prettier-ignore set shapeXps(value) { this.selectedDoc && (this.selectedDoc.x = Math.round(value * 100) / 100); } // prettier-ignore @@ -1013,7 +1015,9 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps } @computed get widthStk() { return this.getField('stroke_width') || '1'; } // prettier-ignore set widthStk(value) { - this.selectedDoc && (this.selectedDoc[DocData].stroke_width = Number(value)); + this.selectedStrokes.forEach(doc => { + doc[DocData].stroke_width = Number(value); + }); } @computed get markScal() { return Number(this.getField('stroke_markerScale') || '1'); } // prettier-ignore set markScal(value) { @@ -1023,7 +1027,9 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps } @computed get smoothAmt() { return Number(this.getField('stroke_smoothAmount') || '5'); } // prettier-ignore set smoothAmt(value) { - this.selectedDoc && (this.selectedDoc[DocData].stroke_smoothAmount = Number(value)); + this.selectedStrokes.forEach(doc => { + doc[DocData].stroke_smoothAmount = Number(value); + }); } @computed get markHead() { return this.getField('stroke_startMarker') || ''; } // prettier-ignore set markHead(value) { @@ -1276,19 +1282,16 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps @computed get filtersSubMenu() { return ( - // prettier-ignore <PropertiesSection title="Filters" isOpen={this.openFilters} setIsOpen={action(bool => { this.openFilters = bool; })} onDoubleClick={this.CloseAll}> <div className="propertiesView-content filters" style={{ position: 'relative', height: 'auto' }}> <FilterPanel Document={this.selectedDoc ?? Doc.ActiveDashboard!} /> </div> </PropertiesSection> - ); + ); // prettier-ignore } @computed get inkSubMenu() { - this.containsInkDoc = false; return ( - // prettier-ignore <> <PropertiesSection title="Appearance" isOpen={this.openAppearance} setIsOpen={bool => { this.openAppearance = bool; }} onDoubleClick={this.CloseAll}> {this.selectedLayoutDoc?.layout_isSvg ? this.appearanceEditor : null} @@ -1297,7 +1300,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps {this.transformEditor} </PropertiesSection> </> - ); + ); // prettier-ignore } /** @@ -1306,26 +1309,19 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps */ containsInk = (selectedDoc: Doc) => { const childDocs: Doc[] = DocListCast(selectedDoc[DocData].data); - for (var i = 0; i < childDocs.length; i++) { + for (let i = 0; i < childDocs.length; i++) { if (DocumentView.getDocumentView(childDocs[i])?.layoutDoc?.layout_isSvg) { this.inkDoc = childDocs[i]; - this.containsInkDoc = true; return true; } } - this.containsInkDoc = false; return false; }; @computed get inkCollectionSubMenu() { - return ( - // prettier-ignore - <> - <PropertiesSection title="Ink Appearance" isOpen={this.openAppearance} setIsOpen={bool => { this.openAppearance = bool; }} onDoubleClick={this.CloseAll}> - {this.isGroup && this.containsInk(this.selectedDoc) ? this.appearanceEditor : null} - </PropertiesSection> - </> - ); + return <PropertiesSection title="Ink Appearance" isOpen={this.openAppearance} setIsOpen={bool => { this.openAppearance = bool; }} onDoubleClick={this.CloseAll}> + {this.isGroup && this.containsInk(this.selectedDoc) ? this.appearanceEditor : null} + </PropertiesSection>; // prettier-ignore } @computed get fieldsSubMenu() { |