@myissue/vue-website-page-builder 3.2.75 → 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.75",
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,20 +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
- console.log(1111)
1437
1494
  try {
1438
1495
  const parsedData = JSON.parse(jsonData)
1439
1496
  let componentsArray: ComponentObject[] = []
1440
- let savedAt: string | undefined = undefined
1497
+ let pageBuilderContentSavedAt: string | undefined = undefined
1441
1498
 
1442
1499
  // Support both old and new structure
1443
1500
  if (Array.isArray(parsedData)) {
1444
1501
  componentsArray = parsedData
1445
1502
  } else if (parsedData && Array.isArray(parsedData.components)) {
1446
1503
  componentsArray = parsedData.components
1447
- savedAt = parsedData.savedAt
1504
+
1505
+ pageBuilderContentSavedAt = parsedData.pageBuilderContentSavedAt
1448
1506
  }
1449
1507
 
1450
1508
  let savedCurrentDesign: ComponentObject[] = []
@@ -1480,9 +1538,9 @@ class PageBuilderClass {
1480
1538
 
1481
1539
  this.pageBuilderStateStore.setComponents(savedCurrentDesign)
1482
1540
 
1483
- // Save to localStorage with savedAt using the correct key
1541
+ // Save to localStorage with pageBuilderContentSavedAt using the correct key
1484
1542
  const dataToSave = {
1485
- savedAt: savedAt || new Date().toISOString(),
1543
+ pageBuilderContentSavedAt: parsedData.pageBuilderContentSavedAt || new Date().toISOString(),
1486
1544
  components: savedCurrentDesign,
1487
1545
  }
1488
1546
 
@@ -1499,7 +1557,6 @@ class PageBuilderClass {
1499
1557
  }
1500
1558
  // Private method to parse HTML components
1501
1559
  #parseHTMLComponents(htmlData: string): void {
1502
- console.log(2222)
1503
1560
  try {
1504
1561
  const parser = new DOMParser()
1505
1562
  const doc = parser.parseFromString(htmlData, 'text/html')
@@ -1551,13 +1608,23 @@ class PageBuilderClass {
1551
1608
 
1552
1609
  const storedData = this.areComponentsStoredInLocalStorage()
1553
1610
 
1554
- 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
+ ) {
1555
1617
  if (storedData) {
1556
1618
  this.setComponentsFromData(storedData)
1557
1619
  }
1558
1620
  }
1559
1621
 
1560
- 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
+ ) {
1561
1628
  if (data) {
1562
1629
  this.setComponentsFromData(data)
1563
1630
  }