@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.
Files changed (349) hide show
  1. package/.eslintrc.js +9 -11
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +449 -0
  4. package/README.md +364 -183
  5. package/api-extractor-lint.json +4 -0
  6. package/api-extractor.json +2 -2
  7. package/api-report/sequence.api.md +741 -0
  8. package/dist/{defaultMap.js → defaultMap.cjs} +29 -22
  9. package/dist/defaultMap.cjs.map +1 -0
  10. package/dist/defaultMap.d.ts +7 -6
  11. package/dist/defaultMap.d.ts.map +1 -1
  12. package/dist/defaultMapInterfaces.cjs +7 -0
  13. package/dist/defaultMapInterfaces.cjs.map +1 -0
  14. package/dist/defaultMapInterfaces.d.ts +44 -12
  15. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  16. package/dist/index.cjs +60 -0
  17. package/dist/index.cjs.map +1 -0
  18. package/dist/index.d.ts +14 -12
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/intervalCollection.cjs +1159 -0
  21. package/dist/intervalCollection.cjs.map +1 -0
  22. package/dist/intervalCollection.d.ts +461 -162
  23. package/dist/intervalCollection.d.ts.map +1 -1
  24. package/dist/intervalIndex/endpointInRangeIndex.cjs +66 -0
  25. package/dist/intervalIndex/endpointInRangeIndex.cjs.map +1 -0
  26. package/dist/intervalIndex/endpointInRangeIndex.d.ts +34 -0
  27. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -0
  28. package/dist/intervalIndex/endpointIndex.cjs +47 -0
  29. package/dist/intervalIndex/endpointIndex.cjs.map +1 -0
  30. package/dist/intervalIndex/endpointIndex.d.ts +38 -0
  31. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -0
  32. package/dist/intervalIndex/idIntervalIndex.cjs +44 -0
  33. package/dist/intervalIndex/idIntervalIndex.cjs.map +1 -0
  34. package/dist/intervalIndex/idIntervalIndex.d.ts +18 -0
  35. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -0
  36. package/dist/intervalIndex/index.cjs +24 -0
  37. package/dist/intervalIndex/index.cjs.map +1 -0
  38. package/dist/intervalIndex/index.d.ts +13 -0
  39. package/dist/intervalIndex/index.d.ts.map +1 -0
  40. package/dist/{defaultMapInterfaces.js → intervalIndex/intervalIndex.cjs} +1 -1
  41. package/dist/intervalIndex/intervalIndex.cjs.map +1 -0
  42. package/dist/intervalIndex/intervalIndex.d.ts +30 -0
  43. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -0
  44. package/dist/intervalIndex/intervalIndexUtils.cjs +22 -0
  45. package/dist/intervalIndex/intervalIndexUtils.cjs.map +1 -0
  46. package/dist/intervalIndex/intervalIndexUtils.d.ts +17 -0
  47. package/dist/intervalIndex/intervalIndexUtils.d.ts.map +1 -0
  48. package/dist/intervalIndex/overlappingIntervalsIndex.cjs +116 -0
  49. package/dist/intervalIndex/overlappingIntervalsIndex.cjs.map +1 -0
  50. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +44 -0
  51. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -0
  52. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs +41 -0
  53. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs.map +1 -0
  54. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +11 -0
  55. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -0
  56. package/dist/intervalIndex/sequenceIntervalIndexes.cjs +7 -0
  57. package/dist/intervalIndex/sequenceIntervalIndexes.cjs.map +1 -0
  58. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +35 -0
  59. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -0
  60. package/dist/intervalIndex/startpointInRangeIndex.cjs +66 -0
  61. package/dist/intervalIndex/startpointInRangeIndex.cjs.map +1 -0
  62. package/dist/intervalIndex/startpointInRangeIndex.d.ts +34 -0
  63. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -0
  64. package/dist/intervalTree.cjs +80 -0
  65. package/dist/intervalTree.cjs.map +1 -0
  66. package/dist/intervalTree.d.ts +24 -0
  67. package/dist/intervalTree.d.ts.map +1 -0
  68. package/dist/intervals/index.cjs +23 -0
  69. package/dist/intervals/index.cjs.map +1 -0
  70. package/dist/intervals/index.d.ts +8 -0
  71. package/dist/intervals/index.d.ts.map +1 -0
  72. package/dist/intervals/interval.cjs +181 -0
  73. package/dist/intervals/interval.cjs.map +1 -0
  74. package/dist/intervals/interval.d.ts +84 -0
  75. package/dist/intervals/interval.d.ts.map +1 -0
  76. package/dist/intervals/intervalUtils.cjs +83 -0
  77. package/dist/intervals/intervalUtils.cjs.map +1 -0
  78. package/dist/intervals/intervalUtils.d.ts +230 -0
  79. package/dist/intervals/intervalUtils.d.ts.map +1 -0
  80. package/dist/intervals/sequenceInterval.cjs +378 -0
  81. package/dist/intervals/sequenceInterval.cjs.map +1 -0
  82. package/dist/intervals/sequenceInterval.d.ts +137 -0
  83. package/dist/intervals/sequenceInterval.d.ts.map +1 -0
  84. package/dist/{localValues.js → localValues.cjs} +1 -1
  85. package/dist/localValues.cjs.map +1 -0
  86. package/dist/localValues.d.ts +2 -1
  87. package/dist/localValues.d.ts.map +1 -1
  88. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  89. package/dist/packageVersion.cjs.map +1 -0
  90. package/dist/packageVersion.d.ts +1 -1
  91. package/dist/packageVersion.d.ts.map +1 -1
  92. package/dist/revertibles.cjs +425 -0
  93. package/dist/revertibles.cjs.map +1 -0
  94. package/dist/revertibles.d.ts +86 -0
  95. package/dist/revertibles.d.ts.map +1 -0
  96. package/dist/sequence-alpha.d.ts +1315 -0
  97. package/dist/sequence-beta.d.ts +244 -0
  98. package/dist/sequence-public.d.ts +244 -0
  99. package/dist/sequence-untrimmed.d.ts +1803 -0
  100. package/dist/{sequence.js → sequence.cjs} +226 -156
  101. package/dist/sequence.cjs.map +1 -0
  102. package/dist/sequence.d.ts +125 -48
  103. package/dist/sequence.d.ts.map +1 -1
  104. package/dist/{sequenceDeltaEvent.js → sequenceDeltaEvent.cjs} +18 -8
  105. package/dist/sequenceDeltaEvent.cjs.map +1 -0
  106. package/dist/sequenceDeltaEvent.d.ts +24 -7
  107. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  108. package/dist/sequenceFactory.cjs +55 -0
  109. package/dist/sequenceFactory.cjs.map +1 -0
  110. package/dist/sequenceFactory.d.ts +3 -89
  111. package/dist/sequenceFactory.d.ts.map +1 -1
  112. package/dist/{sharedIntervalCollection.js → sharedIntervalCollection.cjs} +17 -22
  113. package/dist/sharedIntervalCollection.cjs.map +1 -0
  114. package/dist/sharedIntervalCollection.d.ts +12 -12
  115. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  116. package/dist/{sharedSequence.js → sharedSequence.cjs} +29 -22
  117. package/dist/sharedSequence.cjs.map +1 -0
  118. package/dist/sharedSequence.d.ts +14 -2
  119. package/dist/sharedSequence.d.ts.map +1 -1
  120. package/dist/sharedString.cjs +286 -0
  121. package/dist/sharedString.cjs.map +1 -0
  122. package/dist/sharedString.d.ts +58 -22
  123. package/dist/sharedString.d.ts.map +1 -1
  124. package/dist/tsdoc-metadata.json +11 -0
  125. package/lib/{defaultMap.d.ts → defaultMap.d.mts} +7 -6
  126. package/lib/defaultMap.d.mts.map +1 -0
  127. package/lib/{defaultMap.js → defaultMap.mjs} +28 -21
  128. package/lib/defaultMap.mjs.map +1 -0
  129. package/lib/{defaultMapInterfaces.d.ts → defaultMapInterfaces.d.mts} +44 -12
  130. package/lib/defaultMapInterfaces.d.mts.map +1 -0
  131. package/lib/defaultMapInterfaces.mjs +6 -0
  132. package/lib/defaultMapInterfaces.mjs.map +1 -0
  133. package/lib/index.d.mts +17 -0
  134. package/lib/index.d.mts.map +1 -0
  135. package/lib/index.mjs +16 -0
  136. package/lib/index.mjs.map +1 -0
  137. package/lib/intervalCollection.d.mts +569 -0
  138. package/lib/intervalCollection.d.mts.map +1 -0
  139. package/lib/intervalCollection.mjs +1144 -0
  140. package/lib/intervalCollection.mjs.map +1 -0
  141. package/lib/intervalIndex/endpointInRangeIndex.d.mts +34 -0
  142. package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +1 -0
  143. package/lib/intervalIndex/endpointInRangeIndex.mjs +61 -0
  144. package/lib/intervalIndex/endpointInRangeIndex.mjs.map +1 -0
  145. package/lib/intervalIndex/endpointIndex.d.mts +38 -0
  146. package/lib/intervalIndex/endpointIndex.d.mts.map +1 -0
  147. package/lib/intervalIndex/endpointIndex.mjs +42 -0
  148. package/lib/intervalIndex/endpointIndex.mjs.map +1 -0
  149. package/lib/intervalIndex/idIntervalIndex.d.mts +18 -0
  150. package/lib/intervalIndex/idIntervalIndex.d.mts.map +1 -0
  151. package/lib/intervalIndex/idIntervalIndex.mjs +40 -0
  152. package/lib/intervalIndex/idIntervalIndex.mjs.map +1 -0
  153. package/lib/intervalIndex/index.d.mts +13 -0
  154. package/lib/intervalIndex/index.d.mts.map +1 -0
  155. package/lib/intervalIndex/index.mjs +11 -0
  156. package/lib/intervalIndex/index.mjs.map +1 -0
  157. package/lib/intervalIndex/intervalIndex.d.mts +30 -0
  158. package/lib/intervalIndex/intervalIndex.d.mts.map +1 -0
  159. package/lib/{defaultMapInterfaces.js → intervalIndex/intervalIndex.mjs} +1 -1
  160. package/lib/intervalIndex/intervalIndex.mjs.map +1 -0
  161. package/lib/intervalIndex/intervalIndexUtils.d.mts +17 -0
  162. package/lib/intervalIndex/intervalIndexUtils.d.mts.map +1 -0
  163. package/lib/intervalIndex/intervalIndexUtils.mjs +18 -0
  164. package/lib/intervalIndex/intervalIndexUtils.mjs.map +1 -0
  165. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts +44 -0
  166. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +1 -0
  167. package/lib/intervalIndex/overlappingIntervalsIndex.mjs +111 -0
  168. package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +1 -0
  169. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts +11 -0
  170. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +1 -0
  171. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs +37 -0
  172. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +1 -0
  173. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts +35 -0
  174. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +1 -0
  175. package/lib/intervalIndex/sequenceIntervalIndexes.mjs +6 -0
  176. package/lib/intervalIndex/sequenceIntervalIndexes.mjs.map +1 -0
  177. package/lib/intervalIndex/startpointInRangeIndex.d.mts +34 -0
  178. package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +1 -0
  179. package/lib/intervalIndex/startpointInRangeIndex.mjs +61 -0
  180. package/lib/intervalIndex/startpointInRangeIndex.mjs.map +1 -0
  181. package/lib/intervalTree.d.mts +24 -0
  182. package/lib/intervalTree.d.mts.map +1 -0
  183. package/lib/intervalTree.mjs +76 -0
  184. package/lib/intervalTree.mjs.map +1 -0
  185. package/lib/intervals/index.d.mts +8 -0
  186. package/lib/intervals/index.d.mts.map +1 -0
  187. package/lib/intervals/index.mjs +8 -0
  188. package/lib/intervals/index.mjs.map +1 -0
  189. package/lib/intervals/interval.d.mts +84 -0
  190. package/lib/intervals/interval.d.mts.map +1 -0
  191. package/lib/intervals/interval.mjs +176 -0
  192. package/lib/intervals/interval.mjs.map +1 -0
  193. package/lib/intervals/intervalUtils.d.mts +230 -0
  194. package/lib/intervals/intervalUtils.d.mts.map +1 -0
  195. package/lib/intervals/intervalUtils.mjs +77 -0
  196. package/lib/intervals/intervalUtils.mjs.map +1 -0
  197. package/lib/intervals/sequenceInterval.d.mts +137 -0
  198. package/lib/intervals/sequenceInterval.d.mts.map +1 -0
  199. package/lib/intervals/sequenceInterval.mjs +370 -0
  200. package/lib/intervals/sequenceInterval.mjs.map +1 -0
  201. package/lib/{localValues.d.ts → localValues.d.mts} +3 -2
  202. package/lib/localValues.d.mts.map +1 -0
  203. package/lib/{localValues.js → localValues.mjs} +2 -2
  204. package/lib/localValues.mjs.map +1 -0
  205. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
  206. package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
  207. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  208. package/lib/packageVersion.mjs.map +1 -0
  209. package/lib/revertibles.d.mts +86 -0
  210. package/lib/revertibles.d.mts.map +1 -0
  211. package/lib/revertibles.mjs +416 -0
  212. package/lib/revertibles.mjs.map +1 -0
  213. package/lib/sequence-alpha.d.mts +1315 -0
  214. package/lib/sequence-beta.d.mts +244 -0
  215. package/lib/sequence-public.d.mts +244 -0
  216. package/lib/sequence-untrimmed.d.mts +1803 -0
  217. package/lib/{sequence.d.ts → sequence.d.mts} +127 -50
  218. package/lib/sequence.d.mts.map +1 -0
  219. package/lib/{sequence.js → sequence.mjs} +225 -152
  220. package/lib/sequence.mjs.map +1 -0
  221. package/lib/{sequenceDeltaEvent.d.ts → sequenceDeltaEvent.d.mts} +24 -7
  222. package/lib/sequenceDeltaEvent.d.mts.map +1 -0
  223. package/lib/{sequenceDeltaEvent.js → sequenceDeltaEvent.mjs} +20 -8
  224. package/lib/sequenceDeltaEvent.mjs.map +1 -0
  225. package/lib/sequenceFactory.d.mts +22 -0
  226. package/lib/sequenceFactory.d.mts.map +1 -0
  227. package/lib/sequenceFactory.mjs +51 -0
  228. package/lib/sequenceFactory.mjs.map +1 -0
  229. package/lib/{sharedIntervalCollection.d.ts → sharedIntervalCollection.d.mts} +12 -12
  230. package/lib/sharedIntervalCollection.d.mts.map +1 -0
  231. package/lib/{sharedIntervalCollection.js → sharedIntervalCollection.mjs} +16 -21
  232. package/lib/sharedIntervalCollection.mjs.map +1 -0
  233. package/lib/{sharedSequence.d.ts → sharedSequence.d.mts} +15 -3
  234. package/lib/sharedSequence.d.mts.map +1 -0
  235. package/lib/{sharedSequence.js → sharedSequence.mjs} +30 -23
  236. package/lib/sharedSequence.mjs.map +1 -0
  237. package/lib/{sharedString.d.ts → sharedString.d.mts} +60 -24
  238. package/lib/sharedString.d.mts.map +1 -0
  239. package/lib/sharedString.mjs +281 -0
  240. package/lib/sharedString.mjs.map +1 -0
  241. package/package.json +146 -75
  242. package/prettier.config.cjs +8 -0
  243. package/sequence.test-files.tar +0 -0
  244. package/src/defaultMap.ts +417 -403
  245. package/src/defaultMapInterfaces.ts +157 -117
  246. package/src/index.ts +86 -26
  247. package/src/intervalCollection.ts +2043 -1563
  248. package/src/intervalIndex/endpointInRangeIndex.ts +116 -0
  249. package/src/intervalIndex/endpointIndex.ts +91 -0
  250. package/src/intervalIndex/idIntervalIndex.ts +64 -0
  251. package/src/intervalIndex/index.ts +25 -0
  252. package/src/intervalIndex/intervalIndex.ts +32 -0
  253. package/src/intervalIndex/intervalIndexUtils.ts +27 -0
  254. package/src/intervalIndex/overlappingIntervalsIndex.ts +187 -0
  255. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +80 -0
  256. package/src/intervalIndex/sequenceIntervalIndexes.ts +34 -0
  257. package/src/intervalIndex/startpointInRangeIndex.ts +114 -0
  258. package/src/intervalTree.ts +98 -0
  259. package/src/intervals/index.ts +25 -0
  260. package/src/intervals/interval.ts +238 -0
  261. package/src/intervals/intervalUtils.ts +288 -0
  262. package/src/intervals/sequenceInterval.ts +616 -0
  263. package/src/localValues.ts +68 -73
  264. package/src/packageVersion.ts +1 -1
  265. package/src/revertibles.ts +693 -0
  266. package/src/sequence.ts +845 -690
  267. package/src/sequenceDeltaEvent.ts +164 -131
  268. package/src/sequenceFactory.ts +58 -214
  269. package/src/sharedIntervalCollection.ts +161 -152
  270. package/src/sharedSequence.ts +181 -167
  271. package/src/sharedString.ts +390 -234
  272. package/tsc-multi.test.json +10 -0
  273. package/tsconfig.json +11 -13
  274. package/.editorconfig +0 -7
  275. package/.vscode/launch.json +0 -15
  276. package/dist/defaultMap.js.map +0 -1
  277. package/dist/defaultMapInterfaces.js.map +0 -1
  278. package/dist/index.js +0 -44
  279. package/dist/index.js.map +0 -1
  280. package/dist/intervalCollection.js +0 -1250
  281. package/dist/intervalCollection.js.map +0 -1
  282. package/dist/localValues.js.map +0 -1
  283. package/dist/packageVersion.js.map +0 -1
  284. package/dist/sequence.js.map +0 -1
  285. package/dist/sequenceDeltaEvent.js.map +0 -1
  286. package/dist/sequenceFactory.js +0 -192
  287. package/dist/sequenceFactory.js.map +0 -1
  288. package/dist/sharedIntervalCollection.js.map +0 -1
  289. package/dist/sharedNumberSequence.d.ts +0 -50
  290. package/dist/sharedNumberSequence.d.ts.map +0 -1
  291. package/dist/sharedNumberSequence.js +0 -61
  292. package/dist/sharedNumberSequence.js.map +0 -1
  293. package/dist/sharedObjectSequence.d.ts +0 -50
  294. package/dist/sharedObjectSequence.d.ts.map +0 -1
  295. package/dist/sharedObjectSequence.js +0 -61
  296. package/dist/sharedObjectSequence.js.map +0 -1
  297. package/dist/sharedSequence.js.map +0 -1
  298. package/dist/sharedString.js +0 -187
  299. package/dist/sharedString.js.map +0 -1
  300. package/dist/sparsematrix.d.ts +0 -139
  301. package/dist/sparsematrix.d.ts.map +0 -1
  302. package/dist/sparsematrix.js +0 -332
  303. package/dist/sparsematrix.js.map +0 -1
  304. package/lib/defaultMap.d.ts.map +0 -1
  305. package/lib/defaultMap.js.map +0 -1
  306. package/lib/defaultMapInterfaces.d.ts.map +0 -1
  307. package/lib/defaultMapInterfaces.js.map +0 -1
  308. package/lib/index.d.ts +0 -27
  309. package/lib/index.d.ts.map +0 -1
  310. package/lib/index.js +0 -26
  311. package/lib/index.js.map +0 -1
  312. package/lib/intervalCollection.d.ts +0 -270
  313. package/lib/intervalCollection.d.ts.map +0 -1
  314. package/lib/intervalCollection.js +0 -1238
  315. package/lib/intervalCollection.js.map +0 -1
  316. package/lib/localValues.d.ts.map +0 -1
  317. package/lib/localValues.js.map +0 -1
  318. package/lib/packageVersion.js.map +0 -1
  319. package/lib/sequence.d.ts.map +0 -1
  320. package/lib/sequence.js.map +0 -1
  321. package/lib/sequenceDeltaEvent.d.ts.map +0 -1
  322. package/lib/sequenceDeltaEvent.js.map +0 -1
  323. package/lib/sequenceFactory.d.ts +0 -108
  324. package/lib/sequenceFactory.d.ts.map +0 -1
  325. package/lib/sequenceFactory.js +0 -186
  326. package/lib/sequenceFactory.js.map +0 -1
  327. package/lib/sharedIntervalCollection.d.ts.map +0 -1
  328. package/lib/sharedIntervalCollection.js.map +0 -1
  329. package/lib/sharedNumberSequence.d.ts +0 -50
  330. package/lib/sharedNumberSequence.d.ts.map +0 -1
  331. package/lib/sharedNumberSequence.js +0 -57
  332. package/lib/sharedNumberSequence.js.map +0 -1
  333. package/lib/sharedObjectSequence.d.ts +0 -50
  334. package/lib/sharedObjectSequence.d.ts.map +0 -1
  335. package/lib/sharedObjectSequence.js +0 -57
  336. package/lib/sharedObjectSequence.js.map +0 -1
  337. package/lib/sharedSequence.d.ts.map +0 -1
  338. package/lib/sharedSequence.js.map +0 -1
  339. package/lib/sharedString.d.ts.map +0 -1
  340. package/lib/sharedString.js +0 -183
  341. package/lib/sharedString.js.map +0 -1
  342. package/lib/sparsematrix.d.ts +0 -139
  343. package/lib/sparsematrix.d.ts.map +0 -1
  344. package/lib/sparsematrix.js +0 -323
  345. package/lib/sparsematrix.js.map +0 -1
  346. package/src/sharedNumberSequence.ts +0 -62
  347. package/src/sharedObjectSequence.ts +0 -62
  348. package/src/sparsematrix.ts +0 -421
  349. package/tsconfig.esnext.json +0 -7
@@ -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
@@ -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"]}
@@ -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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"}
@@ -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