|
|
@@ -1,12 +1,12 @@
|
|
1
|
1
|
import * as fa from 'browser-fs-access'
|
|
2
|
2
|
import { Data, Page, PageState, TLDocument } from 'types'
|
|
3
|
|
-import { setToArray } from 'utils/utils'
|
|
|
3
|
+import { lzw_decode, lzw_encode, setToArray } from 'utils/utils'
|
|
4
|
4
|
import state from './state'
|
|
5
|
5
|
import { current } from 'immer'
|
|
6
|
6
|
import { v4 as uuid } from 'uuid'
|
|
7
|
7
|
import * as idb from 'idb-keyval'
|
|
8
|
8
|
|
|
9
|
|
-const CURRENT_VERSION = 'code_slate_0.0.5'
|
|
|
9
|
+const CURRENT_VERSION = 'code_slate_0.0.6'
|
|
10
|
10
|
const DOCUMENT_ID = '0001'
|
|
11
|
11
|
|
|
12
|
12
|
function storageId(fileId: string, label: string, id?: string) {
|
|
|
@@ -69,7 +69,7 @@ class Storage {
|
|
69
|
69
|
return false
|
|
70
|
70
|
}
|
|
71
|
71
|
|
|
72
|
|
- const restoredData: any = JSON.parse(savedData)
|
|
|
72
|
+ const restoredData: any = JSON.parse(lzw_decode(savedData))
|
|
73
|
73
|
|
|
74
|
74
|
for (let pageId in restoredData.document.pages) {
|
|
75
|
75
|
const selectedIds = restoredData.pageStates[pageId].selectedIds
|
|
|
@@ -88,7 +88,7 @@ class Storage {
|
|
88
|
88
|
)
|
|
89
|
89
|
|
|
90
|
90
|
if (savedPage !== null) {
|
|
91
|
|
- const restored: Page = JSON.parse(savedPage)
|
|
|
91
|
+ const restored: Page = JSON.parse(lzw_decode(savedPage))
|
|
92
|
92
|
dataToSave.document.pages[pageId] = restored
|
|
93
|
93
|
}
|
|
94
|
94
|
|
|
|
@@ -106,7 +106,10 @@ class Storage {
|
|
106
|
106
|
const dataToSave = this.getDataToSave(data)
|
|
107
|
107
|
|
|
108
|
108
|
// Save current data to local storage
|
|
109
|
|
- localStorage.setItem(storageId(fileId, 'document', fileId), dataToSave)
|
|
|
109
|
+ localStorage.setItem(
|
|
|
110
|
+ storageId(fileId, 'document', fileId),
|
|
|
111
|
+ lzw_encode(dataToSave)
|
|
|
112
|
+ )
|
|
110
|
113
|
}
|
|
111
|
114
|
|
|
112
|
115
|
loadDocumentFromJson(data: Data, restoredData: any) {
|
|
|
@@ -134,7 +137,7 @@ class Storage {
|
|
134
|
137
|
const page = data.document.pages[pageId]
|
|
135
|
138
|
const json = JSON.stringify(page)
|
|
136
|
139
|
|
|
137
|
|
- localStorage.setItem(storageId(fileId, 'page', pageId), json)
|
|
|
140
|
+ localStorage.setItem(storageId(fileId, 'page', pageId), lzw_encode(json))
|
|
138
|
141
|
|
|
139
|
142
|
// Save page state
|
|
140
|
143
|
|
|
|
@@ -167,7 +170,7 @@ class Storage {
|
|
167
|
170
|
const savedPage = localStorage.getItem(storageId(fileId, 'page', pageId))
|
|
168
|
171
|
|
|
169
|
172
|
if (savedPage !== null) {
|
|
170
|
|
- data.document.pages[pageId] = JSON.parse(savedPage)
|
|
|
173
|
+ data.document.pages[pageId] = JSON.parse(lzw_decode(savedPage))
|
|
171
|
174
|
} else {
|
|
172
|
175
|
data.document.pages[pageId] = {
|
|
173
|
176
|
id: pageId,
|
|
|
@@ -186,7 +189,6 @@ class Storage {
|
|
186
|
189
|
|
|
187
|
190
|
if (savedPageState !== null) {
|
|
188
|
191
|
const restored: PageState = JSON.parse(savedPageState)
|
|
189
|
|
- restored.selectedIds = new Set(restored.selectedIds)
|
|
190
|
192
|
data.pageStates[pageId] = restored
|
|
191
|
193
|
} else {
|
|
192
|
194
|
data.pageStates[pageId] = {
|
|
|
@@ -198,6 +200,10 @@ class Storage {
|
|
198
|
200
|
}
|
|
199
|
201
|
}
|
|
200
|
202
|
|
|
|
203
|
+ data.pageStates[pageId].selectedIds = new Set(
|
|
|
204
|
+ data.pageStates[pageId].selectedIds
|
|
|
205
|
+ )
|
|
|
206
|
+
|
|
201
|
207
|
// Empty shapes in state for other pages
|
|
202
|
208
|
|
|
203
|
209
|
for (let key in data.document.pages) {
|