aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/documents/Documents.ts26
-rw-r--r--src/client/util/DocumentManager.ts18
-rw-r--r--src/client/views/InkStrokeProperties.ts2
-rw-r--r--src/client/views/InkingStroke.tsx2
-rw-r--r--src/client/views/nodes/LinkBox.tsx9
5 files changed, 24 insertions, 33 deletions
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index 5c913513a..4086ede20 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -670,7 +670,15 @@ export namespace Docs {
{
// NOTE: this is unused!! ink fields are filled in directly within the InkDocument() method
layout: { view: InkingStroke, dataField: 'stroke' },
- options: { systemIcon: 'BsFillPencilFill', nativeDimModifiable: true, nativeHeightUnfrozen: true, layout_isSvg: true, layout_forceReflow: true },
+ options: {
+ systemIcon: 'BsFillPencilFill', //
+ nativeDimModifiable: true,
+ nativeHeightUnfrozen: true,
+ layout_hideDecorationTitle: true, // don't show title when selected
+ fitWidth: false,
+ layout_isSvg: true,
+ layout_forceReflow: true,
+ },
},
],
[
@@ -1035,16 +1043,8 @@ export namespace Docs {
}
export function InkDocument(color: string, strokeWidth: number, stroke_bezier: string, fillColor: string, arrowStart: string, arrowEnd: string, dash: string, points: PointData[], isInkMask: boolean, options: DocumentOptions = {}) {
- const I = new Doc();
- I[Initializing] = true;
- I.type = DocumentType.INK;
- I.layout = InkingStroke.LayoutString('stroke');
- I.nativeDimModifiable = true;
- I.nativeHeightUnfrozen = true;
- I.layout_isSvg = true;
- I.layout_forceReflow = true;
- I.layout_fitWidth = false;
- I.layout_hideDecorationTitle = true; // don't show title when selected
+ const ink = InstanceFromProto(Prototypes.get(DocumentType.INK), '', { title: 'ink', ...options });
+ const I = Doc.GetProto(ink);
// I.layout_hideOpenButton = true; // don't show open full screen button when selected
I.color = color;
I.fillColor = fillColor;
@@ -1056,8 +1056,6 @@ export namespace Docs {
I.stroke_dash = dash;
I.stroke_isInkMask = isInkMask;
I.text_align = 'center';
- I.title = 'ink';
- I.author = Doc.CurrentUserEmail;
I.rotation = 0;
I.defaultDoubleClick = 'click';
I.author_date = new DateField();
@@ -1065,7 +1063,7 @@ export namespace Docs {
//I['acl-Override'] = SharingPermissions.Unset;
I[Initializing] = false;
- return InstanceFromProto(I, '', options);
+ return ink;
}
export function PdfDocument(url: string, options: DocumentOptions = {}, overwriteDoc?: Doc) {
diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts
index b9f6059f4..f7eca2379 100644
--- a/src/client/util/DocumentManager.ts
+++ b/src/client/util/DocumentManager.ts
@@ -146,22 +146,14 @@ export class DocumentManager {
return this.getDocumentViewsById(doc[Id]);
}
- public getDocumentView(toFind: Doc | undefined, preferredCollection?: DocumentView): DocumentView | undefined {
- const doc =
- // bcz: this was temporary code used to match documents by data url instead of by id. intended only for repairing the DB
- // Array.from(DocumentManager.Instance.DocumentViews).find(
- // dv =>
- // ((dv.rootDoc.data as any)?.url?.href && (dv.rootDoc.data as any)?.url?.href === (toFind.data as any)?.url?.href) ||
- // ((DocCast(dv.rootDoc.annotationOn)?.data as any)?.url?.href && (DocCast(dv.rootDoc.annotationOn)?.data as any)?.url?.href === (DocCast(toFind.annotationOn)?.data as any)?.url?.href)
- // )?.rootDoc ??
- toFind;
+ public getDocumentView(target: Doc | undefined, preferredCollection?: DocumentView): DocumentView | undefined {
const docViewArray = DocumentManager.Instance.DocumentViews;
- const passes = !doc ? [] : preferredCollection ? [preferredCollection, undefined] : [undefined];
+ const passes = !target ? [] : preferredCollection ? [preferredCollection, undefined] : [undefined];
return passes.reduce(
- (pass, toReturn) =>
+ (toReturn, pass) =>
toReturn ??
- docViewArray.filter(view => view.rootDoc === doc).find(view => !pass || view.props.docViewPath().lastElement() === preferredCollection) ??
- docViewArray.filter(view => Doc.AreProtosEqual(view.rootDoc, doc)).find(view => !pass || view.props.docViewPath().lastElement() === preferredCollection),
+ docViewArray.filter(view => view.rootDoc === target).find(view => !pass || view.props.docViewPath().lastElement() === preferredCollection) ??
+ docViewArray.filter(view => Doc.AreProtosEqual(view.rootDoc, target)).find(view => !pass || view.props.docViewPath().lastElement() === preferredCollection),
undefined as Opt<DocumentView>
);
}
diff --git a/src/client/views/InkStrokeProperties.ts b/src/client/views/InkStrokeProperties.ts
index 13bd12361..736ca8d90 100644
--- a/src/client/views/InkStrokeProperties.ts
+++ b/src/client/views/InkStrokeProperties.ts
@@ -65,7 +65,7 @@ export class InkStrokeProperties {
doc._height = (newYrange.max - newYrange.min) * ptsYscale + NumCast(doc.stroke_width);
doc.x = oldXrange.coord + (newXrange.min - oldXrange.min) * ptsXscale;
doc.y = oldYrange.coord + (newYrange.min - oldYrange.min) * ptsYscale;
- Doc.GetProto(doc).stroke = new InkField(newPoints);
+ Doc.SetInPlace(doc, 'stroke', new InkField(newPoints), true);
appliedFunc = true;
}
}
diff --git a/src/client/views/InkingStroke.tsx b/src/client/views/InkingStroke.tsx
index c3a6b1607..d26c7761e 100644
--- a/src/client/views/InkingStroke.tsx
+++ b/src/client/views/InkingStroke.tsx
@@ -246,7 +246,7 @@ export class InkingStroke extends ViewBoxBaseComponent<FieldViewProps>() {
* factor for converting between ink and screen space.
*/
inkScaledData = () => {
- const inkData = Cast(this.dataDoc[this.fieldKey], InkField)?.inkData ?? [];
+ const inkData = Cast(this.rootDoc[this.fieldKey], InkField)?.inkData ?? [];
const inkStrokeWidth = NumCast(this.rootDoc.stroke_width, 1);
const inkTop = Math.min(...inkData.map(p => p.Y)) - inkStrokeWidth / 2;
const inkBottom = Math.max(...inkData.map(p => p.Y)) + inkStrokeWidth / 2;
diff --git a/src/client/views/nodes/LinkBox.tsx b/src/client/views/nodes/LinkBox.tsx
index 682267ef1..38ff21209 100644
--- a/src/client/views/nodes/LinkBox.tsx
+++ b/src/client/views/nodes/LinkBox.tsx
@@ -28,12 +28,12 @@ export class LinkBox extends ViewBoxBaseComponent<FieldViewProps>() {
@computed get anchor1() {
const anchor1 = DocCast(this.rootDoc.link_anchor_1);
const anchor_1 = anchor1?.layout_unrendered ? DocCast(anchor1.annotationOn) : anchor1;
- return DocumentManager.Instance.getDocumentView(anchor_1);
+ return DocumentManager.Instance.getDocumentView(anchor_1, this.props.docViewPath()[this.props.docViewPath().length - 2]); // this.props.docViewPath().lastElement());
}
@computed get anchor2() {
const anchor2 = DocCast(this.rootDoc.link_anchor_2);
const anchor_2 = anchor2?.layout_unrendered ? DocCast(anchor2.annotationOn) : anchor2;
- return DocumentManager.Instance.getDocumentView(anchor_2);
+ return DocumentManager.Instance.getDocumentView(anchor_2, this.props.docViewPath()[this.props.docViewPath().length - 2]); // this.props.docViewPath().lastElement());
}
screenBounds = () => {
if (this.layoutDoc._layout_isSvg && this.anchor1 && this.anchor2 && this.anchor1.props.CollectionFreeFormDocumentView?.().props.CollectionFreeFormView) {
@@ -96,8 +96,8 @@ export class LinkBox extends ViewBoxBaseComponent<FieldViewProps>() {
const dash = StrCast(this.rootDoc.stroke_dash);
const strokeDasharray = dash && Number(dash) ? String(strokeWidth * Number(dash)) : undefined;
return (
- <div style={{ pointerEvents: 'none', position: 'absolute', width: '100%', height: '100%' }}>
- <svg width={Math.max(100, rx - lx)} height={Math.max(100, by - ty)} style={{ overflow: 'visible' }}>
+ <div style={{ transition: 'inherit', pointerEvents: 'none', position: 'absolute', width: '100%', height: '100%' }}>
+ <svg width={Math.max(100, rx - lx)} height={Math.max(100, by - ty)} style={{ transition: 'inherit', overflow: 'visible' }}>
<defs>
<filter x="0" y="0" width="1" height="1" id={`${this.rootDoc[Id] + 'background'}`}>
<feFlood floodColor={`${StrCast(this.rootDoc._backgroundColor, 'lightblue')}`} result="bg" />
@@ -114,6 +114,7 @@ export class LinkBox extends ViewBoxBaseComponent<FieldViewProps>() {
stroke: highlightColor ?? 'lightblue',
strokeDasharray,
strokeWidth,
+ transition: 'inherit',
}}
d={`M ${pts[1][0] - lx} ${pts[1][1] - ty} C ${pts[1][0] + pts[1][0] - pts[0][0] - lx} ${pts[1][1] + pts[1][1] - pts[0][1] - ty},
${pts[2][0] + pts[2][0] - pts[3][0] - lx} ${pts[2][1] + pts[2][1] - pts[3][1] - ty}, ${pts[2][0] - lx} ${pts[2][1] - ty}`}