@myissue/vue-website-page-builder 3.2.76 → 3.2.77

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myissue/vue-website-page-builder",
3
- "version": "v3.2.76",
3
+ "version": "v3.2.77",
4
4
  "description": "Vue 3 page builder component with drag & drop functionality.",
5
5
  "type": "module",
6
6
  "main": "./dist/vue-website-page-builder.umd.cjs",
@@ -95,10 +95,10 @@ pageBuilderClass.setConfigPageBuilder(configPageBuilder)
95
95
 
96
96
  onMounted(async () => {
97
97
  if (typeof getLocalStorageItemName.value === 'string' && getLocalStorageItemName.value) {
98
- if (localStorage.getItem(getLocalStorageItemName.value)) {
99
- pageBuilderClass.loadExistingContent(
100
- JSON.stringify(localStorage.getItem(getLocalStorageItemName.value)),
101
- )
98
+ const value = localStorage.getItem(getLocalStorageItemName.value)
99
+
100
+ if (value) {
101
+ pageBuilderClass.loadExistingContent(JSON.stringify(value))
102
102
  } else {
103
103
  pageBuilderClass.loadExistingContent(JSON.stringify(html), true)
104
104
  // pageBuilderClass.loadExistingContent(rawHTML, true)
@@ -1,5 +1,4 @@
1
1
  {
2
- "savedAt": "2016-06-19T12:34:56.000Z",
3
2
  "components": [
4
3
  {
5
4
  "html_code": "<section><div class=\"relative py-4\"><div class=\"mx-auto max-w-7xl lg:px-4 px-2\"><div class=\"break-words\"><h2><strong>Demo Content</strong></h2></div></div></div></section>",
@@ -199,6 +199,8 @@ onMounted(async () => {
199
199
 
200
200
  pageBuilderClass.updateLocalStorageItemName()
201
201
 
202
+ pageBuilderClass.deleteOldPageBuilderLocalStorage()
203
+
202
204
  await pageBuilderClass.clearHtmlSelection()
203
205
 
204
206
  await pageBuilderClass.setEventListenersForElements()
@@ -958,7 +958,10 @@ class PageBuilderClass {
958
958
  }
959
959
 
960
960
  updateLocalStorageItemName(): void {
961
- const updateOrCreate = this.pageBuilderStateStore.getConfigPageBuilder?.updateOrCreate?.formType
961
+ const updateOrCreate =
962
+ this.pageBuilderStateStore.getConfigPageBuilder &&
963
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate &&
964
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType
962
965
 
963
966
  const resourceData = this.pageBuilderStateStore.getConfigPageBuilder?.resourceData
964
967
 
@@ -1132,7 +1135,7 @@ class PageBuilderClass {
1132
1135
  localStorage.setItem(
1133
1136
  this.getLocalStorageItemName.value,
1134
1137
  JSON.stringify({
1135
- savedAt: new Date().toISOString(),
1138
+ pageBuilderContentSavedAt: new Date().toISOString(),
1136
1139
  components: componentsToSave,
1137
1140
  }),
1138
1141
  )
@@ -1157,6 +1160,61 @@ class PageBuilderClass {
1157
1160
  }
1158
1161
  }
1159
1162
 
1163
+ //
1164
+ deleteOldPageBuilderLocalStorage(): void {
1165
+ if (
1166
+ this.pageBuilderStateStore.getConfigPageBuilder &&
1167
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate &&
1168
+ typeof this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType === 'string' &&
1169
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType === 'update'
1170
+ ) {
1171
+ let oldCountLocalStorages = 0
1172
+ const deletedItemsLog: { Number: number; Key: string; SavedAt: string }[] = []
1173
+
1174
+ // const pastTime = new Date(Date.now() - 1 * 60 * 1000) // 1 minute
1175
+ const pastTime = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000) // 2 weeks
1176
+
1177
+ for (let i = 0; i < localStorage.length; i++) {
1178
+ const key = localStorage.key(i)
1179
+
1180
+ if (!key) continue
1181
+ if (!key.startsWith('page-builder-update-resource-')) continue
1182
+
1183
+ try {
1184
+ const storeComponents = localStorage.getItem(key)
1185
+ if (!storeComponents) continue
1186
+
1187
+ const storeComponentsParsed = JSON.parse(storeComponents)
1188
+ const savedAt = storeComponentsParsed.pageBuilderContentSavedAt
1189
+ if (savedAt) {
1190
+ const savedAtDate = new Date(savedAt)
1191
+
1192
+ if (savedAtDate < pastTime) {
1193
+ oldCountLocalStorages++
1194
+ deletedItemsLog.push({
1195
+ Number: oldCountLocalStorages,
1196
+ Key: key,
1197
+ SavedAt: savedAt,
1198
+ })
1199
+
1200
+ // Delete old items
1201
+ localStorage.removeItem(key)
1202
+ }
1203
+ }
1204
+ } catch (e) {
1205
+ // Ignore parse errors for unrelated keys
1206
+ }
1207
+ }
1208
+
1209
+ if (deletedItemsLog.length > 0) {
1210
+ console.info(
1211
+ `Deleted ${deletedItemsLog.length} localStorage item(s) older than ${pastTime} days:`,
1212
+ )
1213
+ console.table(deletedItemsLog)
1214
+ }
1215
+ }
1216
+ }
1217
+
1160
1218
  getStorageItemNameForResource(): string | null {
1161
1219
  return this.getLocalStorageItemName.value
1162
1220
  }
@@ -1431,19 +1489,20 @@ class PageBuilderClass {
1431
1489
  }
1432
1490
  }
1433
1491
 
1434
- // Private method to parse JSON components and save savedAt to localStorage
1492
+ // Private method to parse JSON components and save pageBuilderContentSavedAt to localStorage
1435
1493
  #parseJSONComponents(jsonData: string): void {
1436
1494
  try {
1437
1495
  const parsedData = JSON.parse(jsonData)
1438
1496
  let componentsArray: ComponentObject[] = []
1439
- let savedAt: string | undefined = undefined
1497
+ let pageBuilderContentSavedAt: string | undefined = undefined
1440
1498
 
1441
1499
  // Support both old and new structure
1442
1500
  if (Array.isArray(parsedData)) {
1443
1501
  componentsArray = parsedData
1444
1502
  } else if (parsedData && Array.isArray(parsedData.components)) {
1445
1503
  componentsArray = parsedData.components
1446
- savedAt = parsedData.savedAt
1504
+
1505
+ pageBuilderContentSavedAt = parsedData.pageBuilderContentSavedAt
1447
1506
  }
1448
1507
 
1449
1508
  let savedCurrentDesign: ComponentObject[] = []
@@ -1479,9 +1538,9 @@ class PageBuilderClass {
1479
1538
 
1480
1539
  this.pageBuilderStateStore.setComponents(savedCurrentDesign)
1481
1540
 
1482
- // Save to localStorage with savedAt using the correct key
1541
+ // Save to localStorage with pageBuilderContentSavedAt using the correct key
1483
1542
  const dataToSave = {
1484
- savedAt: savedAt || new Date().toISOString(),
1543
+ pageBuilderContentSavedAt: parsedData.pageBuilderContentSavedAt || new Date().toISOString(),
1485
1544
  components: savedCurrentDesign,
1486
1545
  }
1487
1546
 
@@ -1549,13 +1608,23 @@ class PageBuilderClass {
1549
1608
 
1550
1609
  const storedData = this.areComponentsStoredInLocalStorage()
1551
1610
 
1552
- if (this.pageBuilderStateStore.getConfigPageBuilder?.updateOrCreate?.formType === 'create') {
1611
+ if (
1612
+ this.pageBuilderStateStore.getConfigPageBuilder &&
1613
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate &&
1614
+ typeof this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType === 'string' &&
1615
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType === 'create'
1616
+ ) {
1553
1617
  if (storedData) {
1554
1618
  this.setComponentsFromData(storedData)
1555
1619
  }
1556
1620
  }
1557
1621
 
1558
- if (this.pageBuilderStateStore.getConfigPageBuilder?.updateOrCreate?.formType === 'update') {
1622
+ if (
1623
+ this.pageBuilderStateStore.getConfigPageBuilder &&
1624
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate &&
1625
+ typeof this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType === 'string' &&
1626
+ this.pageBuilderStateStore.getConfigPageBuilder.updateOrCreate.formType === 'update'
1627
+ ) {
1559
1628
  if (data) {
1560
1629
  this.setComponentsFromData(data)
1561
1630
  }