@fluidframework/sequence 1.4.0-115997 → 2.0.0-dev-rc.1.0.0.224419
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +9 -11
- package/.mocharc.js +12 -0
- package/CHANGELOG.md +449 -0
- package/README.md +364 -183
- package/api-extractor-lint.json +4 -0
- package/api-extractor.json +2 -2
- package/api-report/sequence.api.md +741 -0
- package/dist/{defaultMap.js → defaultMap.cjs} +29 -22
- package/dist/defaultMap.cjs.map +1 -0
- package/dist/defaultMap.d.ts +7 -6
- package/dist/defaultMap.d.ts.map +1 -1
- package/dist/defaultMapInterfaces.cjs +7 -0
- package/dist/defaultMapInterfaces.cjs.map +1 -0
- package/dist/defaultMapInterfaces.d.ts +44 -12
- package/dist/defaultMapInterfaces.d.ts.map +1 -1
- package/dist/index.cjs +60 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +14 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/intervalCollection.cjs +1159 -0
- package/dist/intervalCollection.cjs.map +1 -0
- package/dist/intervalCollection.d.ts +461 -162
- package/dist/intervalCollection.d.ts.map +1 -1
- package/dist/intervalIndex/endpointInRangeIndex.cjs +66 -0
- package/dist/intervalIndex/endpointInRangeIndex.cjs.map +1 -0
- package/dist/intervalIndex/endpointInRangeIndex.d.ts +34 -0
- package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -0
- package/dist/intervalIndex/endpointIndex.cjs +47 -0
- package/dist/intervalIndex/endpointIndex.cjs.map +1 -0
- package/dist/intervalIndex/endpointIndex.d.ts +38 -0
- package/dist/intervalIndex/endpointIndex.d.ts.map +1 -0
- package/dist/intervalIndex/idIntervalIndex.cjs +44 -0
- package/dist/intervalIndex/idIntervalIndex.cjs.map +1 -0
- package/dist/intervalIndex/idIntervalIndex.d.ts +18 -0
- package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -0
- package/dist/intervalIndex/index.cjs +24 -0
- package/dist/intervalIndex/index.cjs.map +1 -0
- package/dist/intervalIndex/index.d.ts +13 -0
- package/dist/intervalIndex/index.d.ts.map +1 -0
- package/dist/{defaultMapInterfaces.js → intervalIndex/intervalIndex.cjs} +1 -1
- package/dist/intervalIndex/intervalIndex.cjs.map +1 -0
- package/dist/intervalIndex/intervalIndex.d.ts +30 -0
- package/dist/intervalIndex/intervalIndex.d.ts.map +1 -0
- package/dist/intervalIndex/intervalIndexUtils.cjs +22 -0
- package/dist/intervalIndex/intervalIndexUtils.cjs.map +1 -0
- package/dist/intervalIndex/intervalIndexUtils.d.ts +17 -0
- package/dist/intervalIndex/intervalIndexUtils.d.ts.map +1 -0
- package/dist/intervalIndex/overlappingIntervalsIndex.cjs +116 -0
- package/dist/intervalIndex/overlappingIntervalsIndex.cjs.map +1 -0
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +44 -0
- package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -0
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs +41 -0
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs.map +1 -0
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +11 -0
- package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -0
- package/dist/intervalIndex/sequenceIntervalIndexes.cjs +7 -0
- package/dist/intervalIndex/sequenceIntervalIndexes.cjs.map +1 -0
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +35 -0
- package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -0
- package/dist/intervalIndex/startpointInRangeIndex.cjs +66 -0
- package/dist/intervalIndex/startpointInRangeIndex.cjs.map +1 -0
- package/dist/intervalIndex/startpointInRangeIndex.d.ts +34 -0
- package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -0
- package/dist/intervalTree.cjs +80 -0
- package/dist/intervalTree.cjs.map +1 -0
- package/dist/intervalTree.d.ts +24 -0
- package/dist/intervalTree.d.ts.map +1 -0
- package/dist/intervals/index.cjs +23 -0
- package/dist/intervals/index.cjs.map +1 -0
- package/dist/intervals/index.d.ts +8 -0
- package/dist/intervals/index.d.ts.map +1 -0
- package/dist/intervals/interval.cjs +181 -0
- package/dist/intervals/interval.cjs.map +1 -0
- package/dist/intervals/interval.d.ts +84 -0
- package/dist/intervals/interval.d.ts.map +1 -0
- package/dist/intervals/intervalUtils.cjs +83 -0
- package/dist/intervals/intervalUtils.cjs.map +1 -0
- package/dist/intervals/intervalUtils.d.ts +230 -0
- package/dist/intervals/intervalUtils.d.ts.map +1 -0
- package/dist/intervals/sequenceInterval.cjs +378 -0
- package/dist/intervals/sequenceInterval.cjs.map +1 -0
- package/dist/intervals/sequenceInterval.d.ts +137 -0
- package/dist/intervals/sequenceInterval.d.ts.map +1 -0
- package/dist/{localValues.js → localValues.cjs} +1 -1
- package/dist/localValues.cjs.map +1 -0
- package/dist/localValues.d.ts +2 -1
- package/dist/localValues.d.ts.map +1 -1
- package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
- package/dist/packageVersion.cjs.map +1 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/revertibles.cjs +425 -0
- package/dist/revertibles.cjs.map +1 -0
- package/dist/revertibles.d.ts +86 -0
- package/dist/revertibles.d.ts.map +1 -0
- package/dist/sequence-alpha.d.ts +1315 -0
- package/dist/sequence-beta.d.ts +244 -0
- package/dist/sequence-public.d.ts +244 -0
- package/dist/sequence-untrimmed.d.ts +1803 -0
- package/dist/{sequence.js → sequence.cjs} +226 -156
- package/dist/sequence.cjs.map +1 -0
- package/dist/sequence.d.ts +125 -48
- package/dist/sequence.d.ts.map +1 -1
- package/dist/{sequenceDeltaEvent.js → sequenceDeltaEvent.cjs} +18 -8
- package/dist/sequenceDeltaEvent.cjs.map +1 -0
- package/dist/sequenceDeltaEvent.d.ts +24 -7
- package/dist/sequenceDeltaEvent.d.ts.map +1 -1
- package/dist/sequenceFactory.cjs +55 -0
- package/dist/sequenceFactory.cjs.map +1 -0
- package/dist/sequenceFactory.d.ts +3 -89
- package/dist/sequenceFactory.d.ts.map +1 -1
- package/dist/{sharedIntervalCollection.js → sharedIntervalCollection.cjs} +17 -22
- package/dist/sharedIntervalCollection.cjs.map +1 -0
- package/dist/sharedIntervalCollection.d.ts +12 -12
- package/dist/sharedIntervalCollection.d.ts.map +1 -1
- package/dist/{sharedSequence.js → sharedSequence.cjs} +29 -22
- package/dist/sharedSequence.cjs.map +1 -0
- package/dist/sharedSequence.d.ts +14 -2
- package/dist/sharedSequence.d.ts.map +1 -1
- package/dist/sharedString.cjs +286 -0
- package/dist/sharedString.cjs.map +1 -0
- package/dist/sharedString.d.ts +58 -22
- package/dist/sharedString.d.ts.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/{defaultMap.d.ts → defaultMap.d.mts} +7 -6
- package/lib/defaultMap.d.mts.map +1 -0
- package/lib/{defaultMap.js → defaultMap.mjs} +28 -21
- package/lib/defaultMap.mjs.map +1 -0
- package/lib/{defaultMapInterfaces.d.ts → defaultMapInterfaces.d.mts} +44 -12
- package/lib/defaultMapInterfaces.d.mts.map +1 -0
- package/lib/defaultMapInterfaces.mjs +6 -0
- package/lib/defaultMapInterfaces.mjs.map +1 -0
- package/lib/index.d.mts +17 -0
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +16 -0
- package/lib/index.mjs.map +1 -0
- package/lib/intervalCollection.d.mts +569 -0
- package/lib/intervalCollection.d.mts.map +1 -0
- package/lib/intervalCollection.mjs +1144 -0
- package/lib/intervalCollection.mjs.map +1 -0
- package/lib/intervalIndex/endpointInRangeIndex.d.mts +34 -0
- package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +1 -0
- package/lib/intervalIndex/endpointInRangeIndex.mjs +61 -0
- package/lib/intervalIndex/endpointInRangeIndex.mjs.map +1 -0
- package/lib/intervalIndex/endpointIndex.d.mts +38 -0
- package/lib/intervalIndex/endpointIndex.d.mts.map +1 -0
- package/lib/intervalIndex/endpointIndex.mjs +42 -0
- package/lib/intervalIndex/endpointIndex.mjs.map +1 -0
- package/lib/intervalIndex/idIntervalIndex.d.mts +18 -0
- package/lib/intervalIndex/idIntervalIndex.d.mts.map +1 -0
- package/lib/intervalIndex/idIntervalIndex.mjs +40 -0
- package/lib/intervalIndex/idIntervalIndex.mjs.map +1 -0
- package/lib/intervalIndex/index.d.mts +13 -0
- package/lib/intervalIndex/index.d.mts.map +1 -0
- package/lib/intervalIndex/index.mjs +11 -0
- package/lib/intervalIndex/index.mjs.map +1 -0
- package/lib/intervalIndex/intervalIndex.d.mts +30 -0
- package/lib/intervalIndex/intervalIndex.d.mts.map +1 -0
- package/lib/{defaultMapInterfaces.js → intervalIndex/intervalIndex.mjs} +1 -1
- package/lib/intervalIndex/intervalIndex.mjs.map +1 -0
- package/lib/intervalIndex/intervalIndexUtils.d.mts +17 -0
- package/lib/intervalIndex/intervalIndexUtils.d.mts.map +1 -0
- package/lib/intervalIndex/intervalIndexUtils.mjs +18 -0
- package/lib/intervalIndex/intervalIndexUtils.mjs.map +1 -0
- package/lib/intervalIndex/overlappingIntervalsIndex.d.mts +44 -0
- package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +1 -0
- package/lib/intervalIndex/overlappingIntervalsIndex.mjs +111 -0
- package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +1 -0
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts +11 -0
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +1 -0
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs +37 -0
- package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +1 -0
- package/lib/intervalIndex/sequenceIntervalIndexes.d.mts +35 -0
- package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +1 -0
- package/lib/intervalIndex/sequenceIntervalIndexes.mjs +6 -0
- package/lib/intervalIndex/sequenceIntervalIndexes.mjs.map +1 -0
- package/lib/intervalIndex/startpointInRangeIndex.d.mts +34 -0
- package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +1 -0
- package/lib/intervalIndex/startpointInRangeIndex.mjs +61 -0
- package/lib/intervalIndex/startpointInRangeIndex.mjs.map +1 -0
- package/lib/intervalTree.d.mts +24 -0
- package/lib/intervalTree.d.mts.map +1 -0
- package/lib/intervalTree.mjs +76 -0
- package/lib/intervalTree.mjs.map +1 -0
- package/lib/intervals/index.d.mts +8 -0
- package/lib/intervals/index.d.mts.map +1 -0
- package/lib/intervals/index.mjs +8 -0
- package/lib/intervals/index.mjs.map +1 -0
- package/lib/intervals/interval.d.mts +84 -0
- package/lib/intervals/interval.d.mts.map +1 -0
- package/lib/intervals/interval.mjs +176 -0
- package/lib/intervals/interval.mjs.map +1 -0
- package/lib/intervals/intervalUtils.d.mts +230 -0
- package/lib/intervals/intervalUtils.d.mts.map +1 -0
- package/lib/intervals/intervalUtils.mjs +77 -0
- package/lib/intervals/intervalUtils.mjs.map +1 -0
- package/lib/intervals/sequenceInterval.d.mts +137 -0
- package/lib/intervals/sequenceInterval.d.mts.map +1 -0
- package/lib/intervals/sequenceInterval.mjs +370 -0
- package/lib/intervals/sequenceInterval.mjs.map +1 -0
- package/lib/{localValues.d.ts → localValues.d.mts} +3 -2
- package/lib/localValues.d.mts.map +1 -0
- package/lib/{localValues.js → localValues.mjs} +2 -2
- package/lib/localValues.mjs.map +1 -0
- package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
- package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
- package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
- package/lib/packageVersion.mjs.map +1 -0
- package/lib/revertibles.d.mts +86 -0
- package/lib/revertibles.d.mts.map +1 -0
- package/lib/revertibles.mjs +416 -0
- package/lib/revertibles.mjs.map +1 -0
- package/lib/sequence-alpha.d.mts +1315 -0
- package/lib/sequence-beta.d.mts +244 -0
- package/lib/sequence-public.d.mts +244 -0
- package/lib/sequence-untrimmed.d.mts +1803 -0
- package/lib/{sequence.d.ts → sequence.d.mts} +127 -50
- package/lib/sequence.d.mts.map +1 -0
- package/lib/{sequence.js → sequence.mjs} +225 -152
- package/lib/sequence.mjs.map +1 -0
- package/lib/{sequenceDeltaEvent.d.ts → sequenceDeltaEvent.d.mts} +24 -7
- package/lib/sequenceDeltaEvent.d.mts.map +1 -0
- package/lib/{sequenceDeltaEvent.js → sequenceDeltaEvent.mjs} +20 -8
- package/lib/sequenceDeltaEvent.mjs.map +1 -0
- package/lib/sequenceFactory.d.mts +22 -0
- package/lib/sequenceFactory.d.mts.map +1 -0
- package/lib/sequenceFactory.mjs +51 -0
- package/lib/sequenceFactory.mjs.map +1 -0
- package/lib/{sharedIntervalCollection.d.ts → sharedIntervalCollection.d.mts} +12 -12
- package/lib/sharedIntervalCollection.d.mts.map +1 -0
- package/lib/{sharedIntervalCollection.js → sharedIntervalCollection.mjs} +16 -21
- package/lib/sharedIntervalCollection.mjs.map +1 -0
- package/lib/{sharedSequence.d.ts → sharedSequence.d.mts} +15 -3
- package/lib/sharedSequence.d.mts.map +1 -0
- package/lib/{sharedSequence.js → sharedSequence.mjs} +30 -23
- package/lib/sharedSequence.mjs.map +1 -0
- package/lib/{sharedString.d.ts → sharedString.d.mts} +60 -24
- package/lib/sharedString.d.mts.map +1 -0
- package/lib/sharedString.mjs +281 -0
- package/lib/sharedString.mjs.map +1 -0
- package/package.json +146 -75
- package/prettier.config.cjs +8 -0
- package/sequence.test-files.tar +0 -0
- package/src/defaultMap.ts +417 -403
- package/src/defaultMapInterfaces.ts +157 -117
- package/src/index.ts +86 -26
- package/src/intervalCollection.ts +2043 -1563
- package/src/intervalIndex/endpointInRangeIndex.ts +116 -0
- package/src/intervalIndex/endpointIndex.ts +91 -0
- package/src/intervalIndex/idIntervalIndex.ts +64 -0
- package/src/intervalIndex/index.ts +25 -0
- package/src/intervalIndex/intervalIndex.ts +32 -0
- package/src/intervalIndex/intervalIndexUtils.ts +27 -0
- package/src/intervalIndex/overlappingIntervalsIndex.ts +187 -0
- package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +80 -0
- package/src/intervalIndex/sequenceIntervalIndexes.ts +34 -0
- package/src/intervalIndex/startpointInRangeIndex.ts +114 -0
- package/src/intervalTree.ts +98 -0
- package/src/intervals/index.ts +25 -0
- package/src/intervals/interval.ts +238 -0
- package/src/intervals/intervalUtils.ts +288 -0
- package/src/intervals/sequenceInterval.ts +616 -0
- package/src/localValues.ts +68 -73
- package/src/packageVersion.ts +1 -1
- package/src/revertibles.ts +693 -0
- package/src/sequence.ts +845 -690
- package/src/sequenceDeltaEvent.ts +164 -131
- package/src/sequenceFactory.ts +58 -214
- package/src/sharedIntervalCollection.ts +161 -152
- package/src/sharedSequence.ts +181 -167
- package/src/sharedString.ts +390 -234
- package/tsc-multi.test.json +10 -0
- package/tsconfig.json +11 -13
- package/.editorconfig +0 -7
- package/.vscode/launch.json +0 -15
- package/dist/defaultMap.js.map +0 -1
- package/dist/defaultMapInterfaces.js.map +0 -1
- package/dist/index.js +0 -44
- package/dist/index.js.map +0 -1
- package/dist/intervalCollection.js +0 -1250
- package/dist/intervalCollection.js.map +0 -1
- package/dist/localValues.js.map +0 -1
- package/dist/packageVersion.js.map +0 -1
- package/dist/sequence.js.map +0 -1
- package/dist/sequenceDeltaEvent.js.map +0 -1
- package/dist/sequenceFactory.js +0 -192
- package/dist/sequenceFactory.js.map +0 -1
- package/dist/sharedIntervalCollection.js.map +0 -1
- package/dist/sharedNumberSequence.d.ts +0 -50
- package/dist/sharedNumberSequence.d.ts.map +0 -1
- package/dist/sharedNumberSequence.js +0 -61
- package/dist/sharedNumberSequence.js.map +0 -1
- package/dist/sharedObjectSequence.d.ts +0 -50
- package/dist/sharedObjectSequence.d.ts.map +0 -1
- package/dist/sharedObjectSequence.js +0 -61
- package/dist/sharedObjectSequence.js.map +0 -1
- package/dist/sharedSequence.js.map +0 -1
- package/dist/sharedString.js +0 -187
- package/dist/sharedString.js.map +0 -1
- package/dist/sparsematrix.d.ts +0 -139
- package/dist/sparsematrix.d.ts.map +0 -1
- package/dist/sparsematrix.js +0 -332
- package/dist/sparsematrix.js.map +0 -1
- package/lib/defaultMap.d.ts.map +0 -1
- package/lib/defaultMap.js.map +0 -1
- package/lib/defaultMapInterfaces.d.ts.map +0 -1
- package/lib/defaultMapInterfaces.js.map +0 -1
- package/lib/index.d.ts +0 -27
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -26
- package/lib/index.js.map +0 -1
- package/lib/intervalCollection.d.ts +0 -270
- package/lib/intervalCollection.d.ts.map +0 -1
- package/lib/intervalCollection.js +0 -1238
- package/lib/intervalCollection.js.map +0 -1
- package/lib/localValues.d.ts.map +0 -1
- package/lib/localValues.js.map +0 -1
- package/lib/packageVersion.js.map +0 -1
- package/lib/sequence.d.ts.map +0 -1
- package/lib/sequence.js.map +0 -1
- package/lib/sequenceDeltaEvent.d.ts.map +0 -1
- package/lib/sequenceDeltaEvent.js.map +0 -1
- package/lib/sequenceFactory.d.ts +0 -108
- package/lib/sequenceFactory.d.ts.map +0 -1
- package/lib/sequenceFactory.js +0 -186
- package/lib/sequenceFactory.js.map +0 -1
- package/lib/sharedIntervalCollection.d.ts.map +0 -1
- package/lib/sharedIntervalCollection.js.map +0 -1
- package/lib/sharedNumberSequence.d.ts +0 -50
- package/lib/sharedNumberSequence.d.ts.map +0 -1
- package/lib/sharedNumberSequence.js +0 -57
- package/lib/sharedNumberSequence.js.map +0 -1
- package/lib/sharedObjectSequence.d.ts +0 -50
- package/lib/sharedObjectSequence.d.ts.map +0 -1
- package/lib/sharedObjectSequence.js +0 -57
- package/lib/sharedObjectSequence.js.map +0 -1
- package/lib/sharedSequence.d.ts.map +0 -1
- package/lib/sharedSequence.js.map +0 -1
- package/lib/sharedString.d.ts.map +0 -1
- package/lib/sharedString.js +0 -183
- package/lib/sharedString.js.map +0 -1
- package/lib/sparsematrix.d.ts +0 -139
- package/lib/sparsematrix.d.ts.map +0 -1
- package/lib/sparsematrix.js +0 -323
- package/lib/sparsematrix.js.map +0 -1
- package/src/sharedNumberSequence.ts +0 -62
- package/src/sharedObjectSequence.ts +0 -62
- package/src/sparsematrix.ts +0 -421
- package/tsconfig.esnext.json +0 -7
package/lib/sharedString.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { Marker, TextSegment, } from "@fluidframework/merge-tree";
|
|
6
|
-
import { SharedSegmentSequence } from "./sequence";
|
|
7
|
-
import { SharedStringFactory } from "./sequenceFactory";
|
|
8
|
-
/**
|
|
9
|
-
* The Shared String is a specialized data structure for handling collaborative
|
|
10
|
-
* text. It is based on a more general Sequence data structure but has
|
|
11
|
-
* additional features that make working with text easier.
|
|
12
|
-
*
|
|
13
|
-
* In addition to text, a Shared String can also contain markers. Markers can be
|
|
14
|
-
* used to store metadata at positions within the text, like the details of an
|
|
15
|
-
* image or Fluid object that should be rendered with the text.
|
|
16
|
-
*
|
|
17
|
-
*/
|
|
18
|
-
export class SharedString extends SharedSegmentSequence {
|
|
19
|
-
constructor(document, id, attributes) {
|
|
20
|
-
super(document, id, attributes, SharedStringFactory.segmentFromSpec);
|
|
21
|
-
this.id = id;
|
|
22
|
-
this.mergeTreeTextHelper = this.client.createTextHelper();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Create a new shared string.
|
|
26
|
-
* @param runtime - data store runtime the new shared string belongs to
|
|
27
|
-
* @param id - optional name of the shared string
|
|
28
|
-
* @returns newly create shared string (but not attached yet)
|
|
29
|
-
*/
|
|
30
|
-
static create(runtime, id) {
|
|
31
|
-
return runtime.createChannel(id, SharedStringFactory.Type);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Get a factory for SharedString to register with the data store.
|
|
35
|
-
* @returns a factory that creates and load SharedString
|
|
36
|
-
*/
|
|
37
|
-
static getFactory() {
|
|
38
|
-
return new SharedStringFactory();
|
|
39
|
-
}
|
|
40
|
-
get ISharedString() {
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Inserts a marker at a relative position.
|
|
45
|
-
* @param relativePos1 - The relative position to insert the marker at
|
|
46
|
-
* @param refType - The reference type of the marker
|
|
47
|
-
* @param props - The properties of the marker
|
|
48
|
-
*/
|
|
49
|
-
insertMarkerRelative(relativePos1, refType, props) {
|
|
50
|
-
const segment = new Marker(refType);
|
|
51
|
-
if (props) {
|
|
52
|
-
segment.addProperties(props);
|
|
53
|
-
}
|
|
54
|
-
const pos = this.posFromRelativePos(relativePos1);
|
|
55
|
-
const insertOp = this.client.insertSegmentLocal(pos, segment);
|
|
56
|
-
if (insertOp) {
|
|
57
|
-
this.submitSequenceMessage(insertOp);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* {@inheritDoc ISharedString.insertMarker}
|
|
62
|
-
*/
|
|
63
|
-
insertMarker(pos, refType, props) {
|
|
64
|
-
const segment = new Marker(refType);
|
|
65
|
-
if (props) {
|
|
66
|
-
segment.addProperties(props);
|
|
67
|
-
}
|
|
68
|
-
const insertOp = this.client.insertSegmentLocal(pos, segment);
|
|
69
|
-
if (insertOp) {
|
|
70
|
-
this.submitSequenceMessage(insertOp);
|
|
71
|
-
}
|
|
72
|
-
return insertOp;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Inserts the text at the position.
|
|
76
|
-
* @param relativePos1 - The relative position to insert the text at
|
|
77
|
-
* @param text - The text to insert
|
|
78
|
-
* @param props - The properties of text
|
|
79
|
-
*/
|
|
80
|
-
insertTextRelative(relativePos1, text, props) {
|
|
81
|
-
const segment = new TextSegment(text);
|
|
82
|
-
if (props) {
|
|
83
|
-
segment.addProperties(props);
|
|
84
|
-
}
|
|
85
|
-
const pos = this.posFromRelativePos(relativePos1);
|
|
86
|
-
const insertOp = this.client.insertSegmentLocal(pos, segment);
|
|
87
|
-
if (insertOp) {
|
|
88
|
-
this.submitSequenceMessage(insertOp);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* {@inheritDoc ISharedString.insertText}
|
|
93
|
-
*/
|
|
94
|
-
insertText(pos, text, props) {
|
|
95
|
-
const segment = new TextSegment(text);
|
|
96
|
-
if (props) {
|
|
97
|
-
segment.addProperties(props);
|
|
98
|
-
}
|
|
99
|
-
const insertOp = this.client.insertSegmentLocal(pos, segment);
|
|
100
|
-
if (insertOp) {
|
|
101
|
-
this.submitSequenceMessage(insertOp);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Replaces a range with the provided text.
|
|
106
|
-
* @param start - The inclusive start of the range to replace
|
|
107
|
-
* @param end - The exclusive end of the range to replace
|
|
108
|
-
* @param text - The text to replace the range with
|
|
109
|
-
* @param props - Optional. The properties of the replacement text
|
|
110
|
-
*/
|
|
111
|
-
replaceText(start, end, text, props) {
|
|
112
|
-
this.replaceRange(start, end, TextSegment.make(text, props));
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Removes the text in the given range.
|
|
116
|
-
* @param start - The inclusive start of the range to remove
|
|
117
|
-
* @param end - The exclusive end of the range to replace
|
|
118
|
-
* @returns the message sent.
|
|
119
|
-
*/
|
|
120
|
-
removeText(start, end) {
|
|
121
|
-
return this.removeRange(start, end);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Annotates the marker with the provided properties and calls the callback on consensus.
|
|
125
|
-
* @param marker - The marker to annotate
|
|
126
|
-
* @param props - The properties to annotate the marker with
|
|
127
|
-
* @param consensusCallback - The callback called when consensus is reached
|
|
128
|
-
*/
|
|
129
|
-
annotateMarkerNotifyConsensus(marker, props, callback) {
|
|
130
|
-
const annotateOp = this.client.annotateMarkerNotifyConsensus(marker, props, callback);
|
|
131
|
-
if (annotateOp) {
|
|
132
|
-
this.submitSequenceMessage(annotateOp);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Annotates the marker with the provided properties.
|
|
137
|
-
* @param marker - The marker to annotate
|
|
138
|
-
* @param props - The properties to annotate the marker with
|
|
139
|
-
* @param combiningOp - Optional. Specifies how to combine values for the property, such as "incr" for increment.
|
|
140
|
-
*/
|
|
141
|
-
annotateMarker(marker, props, combiningOp) {
|
|
142
|
-
const annotateOp = this.client.annotateMarker(marker, props, combiningOp);
|
|
143
|
-
if (annotateOp) {
|
|
144
|
-
this.submitSequenceMessage(annotateOp);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
findTile(startPos, tileLabel, preceding = true) {
|
|
148
|
-
return this.client.findTile(startPos, tileLabel, preceding);
|
|
149
|
-
}
|
|
150
|
-
getTextAndMarkers(label) {
|
|
151
|
-
const segmentWindow = this.client.getCollabWindow();
|
|
152
|
-
return this.mergeTreeTextHelper.getTextAndMarkers(segmentWindow.currentSeq, segmentWindow.clientId, label);
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Retrieve text from the SharedString in string format.
|
|
156
|
-
* @param start - The starting index of the text to retrieve, or 0 if omitted.
|
|
157
|
-
* @param end - The ending index of the text to retrieve, or the end of the string if omitted
|
|
158
|
-
* @returns The requested text content as a string.
|
|
159
|
-
*/
|
|
160
|
-
getText(start, end) {
|
|
161
|
-
const segmentWindow = this.client.getCollabWindow();
|
|
162
|
-
return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, "", start, end);
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Adds spaces for markers and handles, so that position calculations account for them.
|
|
166
|
-
*/
|
|
167
|
-
getTextWithPlaceholders() {
|
|
168
|
-
const segmentWindow = this.client.getCollabWindow();
|
|
169
|
-
return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, " ");
|
|
170
|
-
}
|
|
171
|
-
getTextRangeWithPlaceholders(start, end) {
|
|
172
|
-
const segmentWindow = this.client.getCollabWindow();
|
|
173
|
-
return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, " ", start, end);
|
|
174
|
-
}
|
|
175
|
-
getTextRangeWithMarkers(start, end) {
|
|
176
|
-
const segmentWindow = this.client.getCollabWindow();
|
|
177
|
-
return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, "*", start, end);
|
|
178
|
-
}
|
|
179
|
-
getMarkerFromId(id) {
|
|
180
|
-
return this.client.getMarkerFromId(id);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=sharedString.js.map
|
package/lib/sharedString.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sharedString.js","sourceRoot":"","sources":["../src/sharedString.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ICombiningOp,\n IMergeTreeInsertMsg,\n IMergeTreeRemoveMsg,\n IRelativePosition,\n ISegment,\n Marker,\n MergeTreeTextHelper,\n PropertySet,\n ReferencePosition,\n ReferenceType,\n TextSegment,\n} from \"@fluidframework/merge-tree\";\nimport { IFluidDataStoreRuntime, IChannelAttributes } from \"@fluidframework/datastore-definitions\";\nimport { SharedSegmentSequence } from \"./sequence\";\nimport { SharedStringFactory } from \"./sequenceFactory\";\n\n/**\n * Fluid object interface describing access methods on a SharedString\n */\nexport interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {\n /**\n * Inserts the text at the position.\n * @param pos - The position to insert the text at\n * @param text - The text to insert\n * @param props - The properties of the text\n */\n insertText(pos: number, text: string, props?: PropertySet): void;\n\n /**\n * Inserts a marker at the position.\n * @param pos - The position to insert the marker at\n * @param refType - The reference type of the marker\n * @param props - The properties of the marker\n */\n insertMarker(pos: number, refType: ReferenceType, props?: PropertySet): IMergeTreeInsertMsg;\n\n /**\n * {@inheritDoc SharedSegmentSequence.posFromRelativePos}\n */\n posFromRelativePos(relativePos: IRelativePosition): number;\n}\n\nexport type SharedStringSegment = TextSegment | Marker;\n\n/**\n * The Shared String is a specialized data structure for handling collaborative\n * text. It is based on a more general Sequence data structure but has\n * additional features that make working with text easier.\n *\n * In addition to text, a Shared String can also contain markers. Markers can be\n * used to store metadata at positions within the text, like the details of an\n * image or Fluid object that should be rendered with the text.\n *\n */\nexport class SharedString extends SharedSegmentSequence<SharedStringSegment> implements ISharedString {\n /**\n * Create a new shared string.\n * @param runtime - data store runtime the new shared string belongs to\n * @param id - optional name of the shared string\n * @returns newly create shared string (but not attached yet)\n */\n public static create(runtime: IFluidDataStoreRuntime, id?: string) {\n return runtime.createChannel(id, SharedStringFactory.Type) as SharedString;\n }\n\n /**\n * Get a factory for SharedString to register with the data store.\n * @returns a factory that creates and load SharedString\n */\n public static getFactory() {\n return new SharedStringFactory();\n }\n\n public get ISharedString(): ISharedString {\n return this;\n }\n\n private readonly mergeTreeTextHelper: MergeTreeTextHelper;\n\n constructor(document: IFluidDataStoreRuntime, public id: string, attributes: IChannelAttributes) {\n super(document, id, attributes, SharedStringFactory.segmentFromSpec);\n this.mergeTreeTextHelper = this.client.createTextHelper();\n }\n\n /**\n * Inserts a marker at a relative position.\n * @param relativePos1 - The relative position to insert the marker at\n * @param refType - The reference type of the marker\n * @param props - The properties of the marker\n */\n public insertMarkerRelative(\n relativePos1: IRelativePosition,\n refType: ReferenceType,\n props?: PropertySet) {\n const segment = new Marker(refType);\n if (props) {\n segment.addProperties(props);\n }\n\n const pos = this.posFromRelativePos(relativePos1);\n const insertOp = this.client.insertSegmentLocal(pos, segment);\n if (insertOp) {\n this.submitSequenceMessage(insertOp);\n }\n }\n\n /**\n * {@inheritDoc ISharedString.insertMarker}\n */\n public insertMarker(\n pos: number,\n refType: ReferenceType,\n props?: PropertySet): IMergeTreeInsertMsg {\n const segment = new Marker(refType);\n if (props) {\n segment.addProperties(props);\n }\n\n const insertOp = this.client.insertSegmentLocal(pos, segment);\n if (insertOp) {\n this.submitSequenceMessage(insertOp);\n }\n return insertOp;\n }\n\n /**\n * Inserts the text at the position.\n * @param relativePos1 - The relative position to insert the text at\n * @param text - The text to insert\n * @param props - The properties of text\n */\n public insertTextRelative(relativePos1: IRelativePosition, text: string, props?: PropertySet) {\n const segment = new TextSegment(text);\n if (props) {\n segment.addProperties(props);\n }\n\n const pos = this.posFromRelativePos(relativePos1);\n const insertOp = this.client.insertSegmentLocal(pos, segment);\n if (insertOp) {\n this.submitSequenceMessage(insertOp);\n }\n }\n\n /**\n * {@inheritDoc ISharedString.insertText}\n */\n public insertText(pos: number, text: string, props?: PropertySet) {\n const segment = new TextSegment(text);\n if (props) {\n segment.addProperties(props);\n }\n\n const insertOp = this.client.insertSegmentLocal(pos, segment);\n if (insertOp) {\n this.submitSequenceMessage(insertOp);\n }\n }\n\n /**\n * Replaces a range with the provided text.\n * @param start - The inclusive start of the range to replace\n * @param end - The exclusive end of the range to replace\n * @param text - The text to replace the range with\n * @param props - Optional. The properties of the replacement text\n */\n public replaceText(start: number, end: number, text: string, props?: PropertySet) {\n this.replaceRange(start, end, TextSegment.make(text, props));\n }\n\n /**\n * Removes the text in the given range.\n * @param start - The inclusive start of the range to remove\n * @param end - The exclusive end of the range to replace\n * @returns the message sent.\n */\n public removeText(start: number, end: number): IMergeTreeRemoveMsg {\n return this.removeRange(start, end);\n }\n\n /**\n * Annotates the marker with the provided properties and calls the callback on consensus.\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @param consensusCallback - The callback called when consensus is reached\n */\n public annotateMarkerNotifyConsensus(\n marker: Marker,\n props: PropertySet,\n callback: (m: Marker) => void) {\n const annotateOp = this.client.annotateMarkerNotifyConsensus(marker, props, callback);\n if (annotateOp) {\n this.submitSequenceMessage(annotateOp);\n }\n }\n\n /**\n * Annotates the marker with the provided properties.\n * @param marker - The marker to annotate\n * @param props - The properties to annotate the marker with\n * @param combiningOp - Optional. Specifies how to combine values for the property, such as \"incr\" for increment.\n */\n public annotateMarker(\n marker: Marker,\n props: PropertySet,\n combiningOp?: ICombiningOp) {\n const annotateOp = this.client.annotateMarker(marker, props, combiningOp);\n if (annotateOp) {\n this.submitSequenceMessage(annotateOp);\n }\n }\n\n public findTile(startPos: number | undefined, tileLabel: string, preceding = true): {\n tile: ReferencePosition;\n pos: number;\n } {\n return this.client.findTile(startPos, tileLabel, preceding);\n }\n\n public getTextAndMarkers(label: string) {\n const segmentWindow = this.client.getCollabWindow();\n return this.mergeTreeTextHelper.getTextAndMarkers(segmentWindow.currentSeq, segmentWindow.clientId, label);\n }\n\n /**\n * Retrieve text from the SharedString in string format.\n * @param start - The starting index of the text to retrieve, or 0 if omitted.\n * @param end - The ending index of the text to retrieve, or the end of the string if omitted\n * @returns The requested text content as a string.\n */\n public getText(start?: number, end?: number) {\n const segmentWindow = this.client.getCollabWindow();\n return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, \"\", start, end);\n }\n\n /**\n * Adds spaces for markers and handles, so that position calculations account for them.\n */\n public getTextWithPlaceholders() {\n const segmentWindow = this.client.getCollabWindow();\n return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, \" \");\n }\n\n public getTextRangeWithPlaceholders(start: number, end: number) {\n const segmentWindow = this.client.getCollabWindow();\n return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, \" \", start, end);\n }\n\n public getTextRangeWithMarkers(start: number, end: number) {\n const segmentWindow = this.client.getCollabWindow();\n return this.mergeTreeTextHelper.getText(segmentWindow.currentSeq, segmentWindow.clientId, \"*\", start, end);\n }\n\n public getMarkerFromId(id: string): ISegment {\n return this.client.getMarkerFromId(id);\n }\n}\n"]}
|
package/lib/sparsematrix.d.ts
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
6
|
-
import { BaseSegment, IJSONSegment, ISegment, PropertySet } from "@fluidframework/merge-tree";
|
|
7
|
-
import { IChannelAttributes, IFluidDataStoreRuntime, IChannelServices, IChannelFactory, Serializable, Jsonable } from "@fluidframework/datastore-definitions";
|
|
8
|
-
import { ISharedObject } from "@fluidframework/shared-object-base";
|
|
9
|
-
import { SharedSegmentSequence, SubSequence } from "./";
|
|
10
|
-
/**
|
|
11
|
-
* An empty segment that occupies 'cachedLength' positions. SparseMatrix uses PaddingSegment
|
|
12
|
-
* to "pad" a run of unoccupied cells.
|
|
13
|
-
*
|
|
14
|
-
* @deprecated PaddingSegment is part of an abandoned prototype. Use SharedMatrix instead.
|
|
15
|
-
*/
|
|
16
|
-
export declare class PaddingSegment extends BaseSegment {
|
|
17
|
-
static readonly typeString = "PaddingSegment";
|
|
18
|
-
static is(segment: ISegment): segment is PaddingSegment;
|
|
19
|
-
static fromJSONObject(spec: any): PaddingSegment;
|
|
20
|
-
readonly type = "PaddingSegment";
|
|
21
|
-
constructor(size: number);
|
|
22
|
-
toJSONObject(): {
|
|
23
|
-
pad: number;
|
|
24
|
-
props: PropertySet;
|
|
25
|
-
};
|
|
26
|
-
clone(start?: number, end?: number): PaddingSegment;
|
|
27
|
-
canAppend(segment: ISegment): boolean;
|
|
28
|
-
toString(): string;
|
|
29
|
-
append(segment: ISegment): void;
|
|
30
|
-
removeRange(start: number, end: number): boolean;
|
|
31
|
-
protected createSplitSegmentAt(pos: number): PaddingSegment;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* @deprecated SparseMatrixItem is part of an abandoned prototype. Use SharedMatrix instead.
|
|
35
|
-
*/
|
|
36
|
-
export declare type SparseMatrixItem = Serializable;
|
|
37
|
-
/**
|
|
38
|
-
* @deprecated RunSegment is part of an abandoned prototype. Use SharedMatrix instead.
|
|
39
|
-
*/
|
|
40
|
-
export declare class RunSegment extends SubSequence<SparseMatrixItem> {
|
|
41
|
-
items: SparseMatrixItem[];
|
|
42
|
-
static readonly typeString = "RunSegment";
|
|
43
|
-
static is(segment: ISegment): segment is RunSegment;
|
|
44
|
-
static fromJSONObject(spec: any): RunSegment;
|
|
45
|
-
readonly type = "RunSegment";
|
|
46
|
-
private tags;
|
|
47
|
-
constructor(items: SparseMatrixItem[]);
|
|
48
|
-
clone(start?: number, end?: number): RunSegment;
|
|
49
|
-
append(segment: ISegment): this;
|
|
50
|
-
removeRange(start: number, end: number): boolean;
|
|
51
|
-
getTag(pos: number): any;
|
|
52
|
-
setTag(pos: number, tag: any): void;
|
|
53
|
-
protected createSplitSegmentAt(pos: number): RunSegment;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* @deprecated MatrixSegment is part of an abandoned prototype. Use SharedMatrix instead.
|
|
57
|
-
*/
|
|
58
|
-
export declare type MatrixSegment = RunSegment | PaddingSegment;
|
|
59
|
-
/**
|
|
60
|
-
* @deprecated maxCol is part of an abandoned prototype. Use SharedMatrix instead.
|
|
61
|
-
*/
|
|
62
|
-
export declare const maxCol = 2097152;
|
|
63
|
-
/**
|
|
64
|
-
* @deprecated maxCols is part of an abandoned prototype. Use SharedMatrix instead.
|
|
65
|
-
*/
|
|
66
|
-
export declare const maxCols: number;
|
|
67
|
-
/**
|
|
68
|
-
* @deprecated maxRow is part of an abandoned prototype. Use SharedMatrix instead.
|
|
69
|
-
*/
|
|
70
|
-
export declare const maxRow = 4294967295;
|
|
71
|
-
/**
|
|
72
|
-
* @deprecated maxRows is part of an abandoned prototype. Use SharedMatrix instead.
|
|
73
|
-
*/
|
|
74
|
-
export declare const maxRows: number;
|
|
75
|
-
/**
|
|
76
|
-
* @deprecated maxCellPosition is part of an abandoned prototype. Use SharedMatrix instead.
|
|
77
|
-
*/
|
|
78
|
-
export declare const maxCellPosition: number;
|
|
79
|
-
/**
|
|
80
|
-
* @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.
|
|
81
|
-
*/
|
|
82
|
-
export declare const rowColToPosition: (row: number, col: number) => number;
|
|
83
|
-
/**
|
|
84
|
-
* @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.
|
|
85
|
-
*/
|
|
86
|
-
export declare function positionToRowCol(position: number): {
|
|
87
|
-
row: number;
|
|
88
|
-
col: number;
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* @deprecated SparseMatrix is an abandoned prototype. Use SharedMatrix instead.
|
|
92
|
-
*/
|
|
93
|
-
export declare class SparseMatrix extends SharedSegmentSequence<MatrixSegment> {
|
|
94
|
-
id: string;
|
|
95
|
-
/**
|
|
96
|
-
* Create a new sparse matrix
|
|
97
|
-
*
|
|
98
|
-
* @param runtime - data store runtime the new sparse matrix belongs to
|
|
99
|
-
* @param id - optional name of the sparse matrix
|
|
100
|
-
* @returns newly create sparse matrix (but not attached yet)
|
|
101
|
-
*/
|
|
102
|
-
static create(runtime: IFluidDataStoreRuntime, id?: string): SparseMatrix;
|
|
103
|
-
/**
|
|
104
|
-
* Get a factory for SharedMap to register with the data store.
|
|
105
|
-
*
|
|
106
|
-
* @returns a factory that creates and load SharedMap
|
|
107
|
-
*/
|
|
108
|
-
static getFactory(): IChannelFactory;
|
|
109
|
-
constructor(document: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes);
|
|
110
|
-
get numRows(): number;
|
|
111
|
-
setItems(row: number, col: number, values: SparseMatrixItem[], props?: PropertySet): void;
|
|
112
|
-
getItem(row: number, col: number): Jsonable<string | number | boolean | IFluidHandle>;
|
|
113
|
-
getTag(row: number, col: number): any;
|
|
114
|
-
setTag(row: number, col: number, tag: any): void;
|
|
115
|
-
insertRows(row: number, numRows: number): void;
|
|
116
|
-
removeRows(row: number, numRows: number): void;
|
|
117
|
-
insertCols(col: number, numCols: number): void;
|
|
118
|
-
removeCols(col: number, numCols: number): void;
|
|
119
|
-
annotatePosition(row: number, col: number, props: PropertySet): void;
|
|
120
|
-
getPositionProperties(row: number, col: number): PropertySet;
|
|
121
|
-
private moveAsPadding;
|
|
122
|
-
private getSegment;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* @deprecated SparseMatrixFactory is an abandoned prototype. Use SharedMatrixFactory instead.
|
|
126
|
-
*/
|
|
127
|
-
export declare class SparseMatrixFactory implements IChannelFactory {
|
|
128
|
-
static Type: string;
|
|
129
|
-
static Attributes: IChannelAttributes;
|
|
130
|
-
static segmentFromSpec(spec: IJSONSegment): ISegment;
|
|
131
|
-
get type(): string;
|
|
132
|
-
get attributes(): IChannelAttributes;
|
|
133
|
-
/**
|
|
134
|
-
* {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}
|
|
135
|
-
*/
|
|
136
|
-
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedObject>;
|
|
137
|
-
create(document: IFluidDataStoreRuntime, id: string): ISharedObject;
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=sparsematrix.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sparsematrix.d.ts","sourceRoot":"","sources":["../src/sparsematrix.ts"],"names":[],"mappings":"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"}
|
package/lib/sparsematrix.js
DELETED
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { BaseSegment, createGroupOp, LocalReferenceCollection, } from "@fluidframework/merge-tree";
|
|
6
|
-
import { pkgVersion } from "./packageVersion";
|
|
7
|
-
import { SharedSegmentSequence, SubSequence } from "./";
|
|
8
|
-
/**
|
|
9
|
-
* An empty segment that occupies 'cachedLength' positions. SparseMatrix uses PaddingSegment
|
|
10
|
-
* to "pad" a run of unoccupied cells.
|
|
11
|
-
*
|
|
12
|
-
* @deprecated PaddingSegment is part of an abandoned prototype. Use SharedMatrix instead.
|
|
13
|
-
*/
|
|
14
|
-
export class PaddingSegment extends BaseSegment {
|
|
15
|
-
constructor(size) {
|
|
16
|
-
super();
|
|
17
|
-
this.type = PaddingSegment.typeString;
|
|
18
|
-
this.cachedLength = size;
|
|
19
|
-
}
|
|
20
|
-
static is(segment) {
|
|
21
|
-
return segment.type === PaddingSegment.typeString;
|
|
22
|
-
}
|
|
23
|
-
static fromJSONObject(spec) {
|
|
24
|
-
if (spec && typeof spec === "object" && "pad" in spec) {
|
|
25
|
-
const segment = new PaddingSegment(spec.pad);
|
|
26
|
-
if (spec.props) {
|
|
27
|
-
segment.addProperties(spec.props);
|
|
28
|
-
}
|
|
29
|
-
return segment;
|
|
30
|
-
}
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
toJSONObject() {
|
|
34
|
-
return { pad: this.cachedLength, props: this.properties };
|
|
35
|
-
}
|
|
36
|
-
clone(start = 0, end) {
|
|
37
|
-
const b = new PaddingSegment(this.cachedLength);
|
|
38
|
-
this.cloneInto(b);
|
|
39
|
-
return b;
|
|
40
|
-
}
|
|
41
|
-
canAppend(segment) {
|
|
42
|
-
return PaddingSegment.is(segment);
|
|
43
|
-
}
|
|
44
|
-
toString() {
|
|
45
|
-
return `[padding: ${this.cachedLength}]`;
|
|
46
|
-
}
|
|
47
|
-
append(segment) {
|
|
48
|
-
if (!PaddingSegment.is(segment)) {
|
|
49
|
-
throw new Error("can only append padding segment");
|
|
50
|
-
}
|
|
51
|
-
// Note: Must call 'appendLocalRefs' before modifying this segment's length as
|
|
52
|
-
// 'this.cachedLength' is used to adjust the offsets of the local refs.
|
|
53
|
-
LocalReferenceCollection.append(this, segment);
|
|
54
|
-
this.cachedLength += segment.cachedLength;
|
|
55
|
-
}
|
|
56
|
-
// Returns true if entire run removed
|
|
57
|
-
removeRange(start, end) {
|
|
58
|
-
this.cachedLength -= (end - start);
|
|
59
|
-
return (this.cachedLength === 0);
|
|
60
|
-
}
|
|
61
|
-
createSplitSegmentAt(pos) {
|
|
62
|
-
const leftLength = pos;
|
|
63
|
-
const rightLength = this.cachedLength - pos;
|
|
64
|
-
this.cachedLength = leftLength;
|
|
65
|
-
return new PaddingSegment(rightLength);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
PaddingSegment.typeString = "PaddingSegment";
|
|
69
|
-
/**
|
|
70
|
-
* @deprecated RunSegment is part of an abandoned prototype. Use SharedMatrix instead.
|
|
71
|
-
*/
|
|
72
|
-
export class RunSegment extends SubSequence {
|
|
73
|
-
constructor(items) {
|
|
74
|
-
super(items);
|
|
75
|
-
this.items = items;
|
|
76
|
-
this.type = RunSegment.typeString;
|
|
77
|
-
this.tags = new Array(items.length).fill(undefined);
|
|
78
|
-
}
|
|
79
|
-
static is(segment) {
|
|
80
|
-
return segment.type === RunSegment.typeString;
|
|
81
|
-
}
|
|
82
|
-
static fromJSONObject(spec) {
|
|
83
|
-
if (spec && typeof spec === "object" && "items" in spec) {
|
|
84
|
-
const segment = new RunSegment(spec.items);
|
|
85
|
-
if (spec.props) {
|
|
86
|
-
segment.addProperties(spec.props);
|
|
87
|
-
}
|
|
88
|
-
return segment;
|
|
89
|
-
}
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
clone(start = 0, end) {
|
|
93
|
-
const b = new RunSegment(this.items.slice(start, end));
|
|
94
|
-
if (this.tags) {
|
|
95
|
-
b.tags = this.tags.slice(start, end);
|
|
96
|
-
}
|
|
97
|
-
this.cloneInto(b);
|
|
98
|
-
return b;
|
|
99
|
-
}
|
|
100
|
-
append(segment) {
|
|
101
|
-
super.append(segment);
|
|
102
|
-
const asRun = segment;
|
|
103
|
-
if (asRun.tags) {
|
|
104
|
-
if (this.tags) {
|
|
105
|
-
this.tags.splice(this.items.length, 0, ...asRun.tags);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return this;
|
|
109
|
-
}
|
|
110
|
-
// TODO: retain removed items for undo
|
|
111
|
-
// returns true if entire run removed
|
|
112
|
-
removeRange(start, end) {
|
|
113
|
-
this.tags.splice(start, end - start);
|
|
114
|
-
return super.removeRange(start, end);
|
|
115
|
-
}
|
|
116
|
-
getTag(pos) {
|
|
117
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
118
|
-
return this.tags[pos];
|
|
119
|
-
}
|
|
120
|
-
setTag(pos, tag) {
|
|
121
|
-
this.tags[pos] = tag;
|
|
122
|
-
}
|
|
123
|
-
createSplitSegmentAt(pos) {
|
|
124
|
-
if (pos > 0) {
|
|
125
|
-
const remainingItems = this.items.slice(pos);
|
|
126
|
-
this.items = this.items.slice(0, pos);
|
|
127
|
-
this.cachedLength = this.items.length;
|
|
128
|
-
const leafSegment = new RunSegment(remainingItems);
|
|
129
|
-
leafSegment.tags = this.tags.slice(pos);
|
|
130
|
-
this.tags.length = pos;
|
|
131
|
-
return leafSegment;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
RunSegment.typeString = "RunSegment";
|
|
136
|
-
/**
|
|
137
|
-
* @deprecated maxCol is part of an abandoned prototype. Use SharedMatrix instead.
|
|
138
|
-
*/
|
|
139
|
-
export const maxCol = 0x200000; // X128 Excel maximum of 16,384 columns
|
|
140
|
-
/**
|
|
141
|
-
* @deprecated maxCols is part of an abandoned prototype. Use SharedMatrix instead.
|
|
142
|
-
*/
|
|
143
|
-
export const maxCols = maxCol + 1;
|
|
144
|
-
/**
|
|
145
|
-
* @deprecated maxRow is part of an abandoned prototype. Use SharedMatrix instead.
|
|
146
|
-
*/
|
|
147
|
-
export const maxRow = 0xFFFFFFFF; // X4096 Excel maximum of 1,048,576 rows
|
|
148
|
-
/**
|
|
149
|
-
* @deprecated maxRows is part of an abandoned prototype. Use SharedMatrix instead.
|
|
150
|
-
*/
|
|
151
|
-
export const maxRows = maxRow + 1;
|
|
152
|
-
/**
|
|
153
|
-
* @deprecated maxCellPosition is part of an abandoned prototype. Use SharedMatrix instead.
|
|
154
|
-
*/
|
|
155
|
-
export const maxCellPosition = maxCol * maxRow;
|
|
156
|
-
/**
|
|
157
|
-
* @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.
|
|
158
|
-
*/
|
|
159
|
-
export const rowColToPosition = (row, col) => row * maxCols + col;
|
|
160
|
-
/**
|
|
161
|
-
* @deprecated positionToRowCol is part of an abandoned prototype. Use SharedMatrix instead.
|
|
162
|
-
*/
|
|
163
|
-
export function positionToRowCol(position) {
|
|
164
|
-
const row = Math.floor(position / maxCols);
|
|
165
|
-
const col = position - (row * maxCols);
|
|
166
|
-
return { row, col };
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* @deprecated SparseMatrix is an abandoned prototype. Use SharedMatrix instead.
|
|
170
|
-
*/
|
|
171
|
-
export class SparseMatrix extends SharedSegmentSequence {
|
|
172
|
-
constructor(document, id, attributes) {
|
|
173
|
-
super(document, id, attributes, SparseMatrixFactory.segmentFromSpec);
|
|
174
|
-
this.id = id;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Create a new sparse matrix
|
|
178
|
-
*
|
|
179
|
-
* @param runtime - data store runtime the new sparse matrix belongs to
|
|
180
|
-
* @param id - optional name of the sparse matrix
|
|
181
|
-
* @returns newly create sparse matrix (but not attached yet)
|
|
182
|
-
*/
|
|
183
|
-
static create(runtime, id) {
|
|
184
|
-
return runtime.createChannel(id, SparseMatrixFactory.Type);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get a factory for SharedMap to register with the data store.
|
|
188
|
-
*
|
|
189
|
-
* @returns a factory that creates and load SharedMap
|
|
190
|
-
*/
|
|
191
|
-
static getFactory() {
|
|
192
|
-
return new SparseMatrixFactory();
|
|
193
|
-
}
|
|
194
|
-
get numRows() {
|
|
195
|
-
return positionToRowCol(this.getLength()).row;
|
|
196
|
-
}
|
|
197
|
-
setItems(row, col, values, props) {
|
|
198
|
-
const start = rowColToPosition(row, col);
|
|
199
|
-
const end = start + values.length;
|
|
200
|
-
const segment = new RunSegment(values);
|
|
201
|
-
if (props) {
|
|
202
|
-
segment.addProperties(props);
|
|
203
|
-
}
|
|
204
|
-
this.replaceRange(start, end, segment);
|
|
205
|
-
}
|
|
206
|
-
getItem(row, col) {
|
|
207
|
-
const pos = rowColToPosition(row, col);
|
|
208
|
-
const { segment, offset } = this.getContainingSegment(pos);
|
|
209
|
-
if (segment && RunSegment.is(segment)) {
|
|
210
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
211
|
-
return segment.items[offset];
|
|
212
|
-
}
|
|
213
|
-
else if (segment && PaddingSegment.is(segment)) {
|
|
214
|
-
return undefined;
|
|
215
|
-
}
|
|
216
|
-
throw new Error(`Unrecognized Segment type`);
|
|
217
|
-
}
|
|
218
|
-
getTag(row, col) {
|
|
219
|
-
const { segment, offset } = this.getSegment(row, col);
|
|
220
|
-
if (RunSegment.is(segment)) {
|
|
221
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
222
|
-
return segment.getTag(offset);
|
|
223
|
-
}
|
|
224
|
-
return undefined;
|
|
225
|
-
}
|
|
226
|
-
setTag(row, col, tag) {
|
|
227
|
-
const { segment, offset } = this.getSegment(row, col);
|
|
228
|
-
if (RunSegment.is(segment)) {
|
|
229
|
-
segment.setTag(offset, tag);
|
|
230
|
-
}
|
|
231
|
-
else if (tag !== undefined) {
|
|
232
|
-
throw new Error(`Must not attempt to set tags on '${segment.constructor.name}'.`);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
insertRows(row, numRows) {
|
|
236
|
-
const pos = rowColToPosition(row, 0);
|
|
237
|
-
const size = maxCols * numRows;
|
|
238
|
-
const segment = new PaddingSegment(size);
|
|
239
|
-
const insertOp = this.client.insertSegmentLocal(pos, segment);
|
|
240
|
-
if (insertOp) {
|
|
241
|
-
this.submitSequenceMessage(insertOp);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
removeRows(row, numRows) {
|
|
245
|
-
const pos = rowColToPosition(row, 0);
|
|
246
|
-
const size = maxCols * numRows;
|
|
247
|
-
this.removeRange(pos, pos + size);
|
|
248
|
-
}
|
|
249
|
-
insertCols(col, numCols) {
|
|
250
|
-
this.moveAsPadding(maxCol - numCols, col, numCols);
|
|
251
|
-
}
|
|
252
|
-
removeCols(col, numCols) {
|
|
253
|
-
this.moveAsPadding(col, maxCol - numCols, numCols);
|
|
254
|
-
}
|
|
255
|
-
annotatePosition(row, col, props) {
|
|
256
|
-
const pos = rowColToPosition(row, col);
|
|
257
|
-
this.annotateRange(pos, pos + 1, props);
|
|
258
|
-
}
|
|
259
|
-
getPositionProperties(row, col) {
|
|
260
|
-
const pos = rowColToPosition(row, col);
|
|
261
|
-
return this.getPropertiesAtPosition(pos);
|
|
262
|
-
}
|
|
263
|
-
// For each row, moves 'numCols' items starting from 'srcCol' and inserts 'numCols' padding
|
|
264
|
-
// at 'destCol'. Used by insertCols and removeCols.
|
|
265
|
-
moveAsPadding(srcCol, destCol, numCols) {
|
|
266
|
-
const removeColStart = srcCol;
|
|
267
|
-
const removeColEnd = srcCol + numCols;
|
|
268
|
-
const ops = [];
|
|
269
|
-
for (let r = 0, rowStart = 0; r < this.numRows; r++, rowStart += maxCols) {
|
|
270
|
-
ops.push(this.client.removeRangeLocal(rowStart + removeColStart, rowStart + removeColEnd));
|
|
271
|
-
const insertPos = rowStart + destCol;
|
|
272
|
-
const segment = new PaddingSegment(numCols);
|
|
273
|
-
ops.push(this.client.insertSegmentLocal(insertPos, segment));
|
|
274
|
-
}
|
|
275
|
-
this.submitSequenceMessage(createGroupOp(...ops));
|
|
276
|
-
}
|
|
277
|
-
getSegment(row, col) {
|
|
278
|
-
const pos = rowColToPosition(row, col);
|
|
279
|
-
return this.getContainingSegment(pos);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* @deprecated SparseMatrixFactory is an abandoned prototype. Use SharedMatrixFactory instead.
|
|
284
|
-
*/
|
|
285
|
-
export class SparseMatrixFactory {
|
|
286
|
-
static segmentFromSpec(spec) {
|
|
287
|
-
const maybePadding = PaddingSegment.fromJSONObject(spec);
|
|
288
|
-
if (maybePadding) {
|
|
289
|
-
return maybePadding;
|
|
290
|
-
}
|
|
291
|
-
const maybeRun = RunSegment.fromJSONObject(spec);
|
|
292
|
-
if (maybeRun) {
|
|
293
|
-
return maybeRun;
|
|
294
|
-
}
|
|
295
|
-
throw new Error(`Unrecognized IJSONObject: '${JSON.stringify(spec)}'`);
|
|
296
|
-
}
|
|
297
|
-
get type() {
|
|
298
|
-
return SparseMatrixFactory.Type;
|
|
299
|
-
}
|
|
300
|
-
get attributes() {
|
|
301
|
-
return SparseMatrixFactory.Attributes;
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}
|
|
305
|
-
*/
|
|
306
|
-
async load(runtime, id, services, attributes) {
|
|
307
|
-
const sharedObject = new SparseMatrix(runtime, id, attributes);
|
|
308
|
-
await sharedObject.load(services);
|
|
309
|
-
return sharedObject;
|
|
310
|
-
}
|
|
311
|
-
create(document, id) {
|
|
312
|
-
const sharedObject = new SparseMatrix(document, id, this.attributes);
|
|
313
|
-
sharedObject.initializeLocal();
|
|
314
|
-
return sharedObject;
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
SparseMatrixFactory.Type = "https://graph.microsoft.com/types/mergeTree/sparse-matrix";
|
|
318
|
-
SparseMatrixFactory.Attributes = {
|
|
319
|
-
type: SparseMatrixFactory.Type,
|
|
320
|
-
snapshotFormatVersion: "0.1",
|
|
321
|
-
packageVersion: pkgVersion,
|
|
322
|
-
};
|
|
323
|
-
//# sourceMappingURL=sparsematrix.js.map
|