@myissue/vue-website-page-builder 3.0.30 → 3.0.32

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 (34) hide show
  1. package/dist/vue-website-page-builder.css +1 -1
  2. package/dist/vue-website-page-builder.js +20969 -20913
  3. package/dist/vue-website-page-builder.umd.cjs +50 -50
  4. package/package.json +1 -1
  5. package/src/Components/MediaLibrary/SidebarUnsplash.vue +3 -3
  6. package/src/Components/MediaLibrary/Unsplash.vue +2 -3
  7. package/src/Components/Modals/PageBuilderPreviewModal.vue +21 -7
  8. package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +3 -5
  9. package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +1 -2
  10. package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +1 -2
  11. package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +1 -2
  12. package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +1 -2
  13. package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +1 -2
  14. package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +1 -2
  15. package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +1 -2
  16. package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +1 -2
  17. package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +1 -2
  18. package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +1 -2
  19. package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +1 -2
  20. package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +1 -2
  21. package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +1 -2
  22. package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +1 -2
  23. package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +1 -2
  24. package/src/Components/PageBuilder/NoneCustomSearchComponent.vue +2 -3
  25. package/src/Components/TipTap/TipTap.vue +1 -2
  26. package/src/Components/TipTap/TipTapInput.vue +1 -2
  27. package/src/PageBuilder/PageBuilder.vue +25 -28
  28. package/src/composables/PageBuilderClass.ts +8 -12
  29. package/src/index.ts +1 -3
  30. package/src/stores/page-builder-state.ts +159 -0
  31. package/src/types/index.ts +4 -7
  32. package/src/stores/media-library.ts +0 -30
  33. package/src/stores/unsplash.ts +0 -107
  34. package/src/stores/user.ts +0 -32
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myissue/vue-website-page-builder",
3
- "version": "v3.0.30",
3
+ "version": "v3.0.32",
4
4
  "description": "🚧 DEVELOPMENT VERSION - Vue.js page builder component with drag & drop functionality. Not ready for production use.",
5
5
  "type": "module",
6
6
  "main": "./dist/vue-website-page-builder.umd.cjs",
@@ -1,11 +1,11 @@
1
1
  <script setup>
2
2
  import { ref, computed, onMounted, inject } from 'vue'
3
3
 
4
- // Get stores from parent PageBuilder component
5
- const mediaLibraryStore = inject('mediaLibraryStore')
4
+ // Get consolidated store from parent PageBuilder component
5
+ const pageBuilderStateStore = inject('pageBuilderStateStore')
6
6
 
7
7
  const getCurrentImage = computed(() => {
8
- return mediaLibraryStore.getCurrentImage
8
+ return pageBuilderStateStore.getCurrentImage
9
9
  })
10
10
  </script>
11
11
 
@@ -3,7 +3,6 @@ import { ref, computed, onMounted, inject } from 'vue'
3
3
  import { useUnsplashStore } from '@/stores/unsplash'
4
4
 
5
5
  // Get stores from parent PageBuilder component
6
- const mediaLibraryStore = inject('mediaLibraryStore')
7
6
  const unsplashStore = useUnsplashStore()
8
7
  const searchQuery = ref('')
9
8
  const currentPage = ref(1)
@@ -18,8 +17,8 @@ const getUnsplashImages = computed(() => {
18
17
  })
19
18
 
20
19
  const handleImageClick = function (file) {
21
- mediaLibraryStore.setCurrentImage({ src: file })
22
- mediaLibraryStore.setCurrentPreviewImage(null)
20
+ pageBuilderStateStore.setCurrentImage({ src: file })
21
+ pageBuilderStateStore.setCurrentPreviewImage(null)
23
22
  }
24
23
 
25
24
  // search by orientation
@@ -1,6 +1,7 @@
1
1
  <script setup>
2
2
  import { computed, inject } from 'vue'
3
3
  import { delay } from '@/composables/delay'
4
+ import { usePageBuilderStateStore } from '@/stores/page-builder-state'
4
5
 
5
6
  import {
6
7
  Dialog,
@@ -11,8 +12,8 @@ import {
11
12
  } from '@headlessui/vue'
12
13
  import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue'
13
14
 
14
- // Get stores from parent PageBuilder component
15
- const userStore = inject('userStore')
15
+ // Get store from parent PageBuilder component
16
+ const internalPinia = inject('internalPinia')
16
17
 
17
18
  defineProps({
18
19
  show: {
@@ -28,14 +29,20 @@ const emit = defineEmits(['firstPageBuilderPreviewModalButton'])
28
29
  const firstButton = async function () {
29
30
  emit('firstPageBuilderPreviewModalButton')
30
31
 
31
- userStore.setIsLoading(true)
32
+ pageBuilderStateStore.setIsLoading(true)
32
33
  await delay()
33
- userStore.setIsLoading(false)
34
+ pageBuilderStateStore.setIsLoading(false)
34
35
  }
35
36
 
36
37
  const handleEscapeKey = function () {
37
38
  firstButton()
38
39
  }
40
+
41
+ const pageBuilderStateStore = usePageBuilderStateStore(internalPinia)
42
+
43
+ const getPageBuilderLogo = computed(() => {
44
+ return pageBuilderStateStore.getPageBuilderLogo
45
+ })
39
46
  </script>
40
47
 
41
48
  <template>
@@ -82,11 +89,18 @@ const handleEscapeKey = function () {
82
89
  <div
83
90
  class="px-4 lg:h-[10vh] h-[16vh] flex items-center justify-between border-b border-gray-200 bg-white"
84
91
  >
85
- <template v-if="getPageBuilderLogo">
86
- <div class="border-r border-gray-200 pr-6">
92
+ <div v-if="getPageBuilderLogo" class="flex items-center divide-x divide-gray-200">
93
+ <div class="pr-4">
87
94
  <img class="h-6" :src="getPageBuilderLogo" alt="Logo" />
88
95
  </div>
89
- </template>
96
+ <span class="myPrimaryParagraph font-medium pl-4">Preview mode </span>
97
+ </div>
98
+ <div v-else>
99
+ <div class="pr-6">
100
+ <span class="myPrimaryParagraph font-medium">Preview mode </span>
101
+ </div>
102
+ </div>
103
+
90
104
  <div
91
105
  @click="firstButton"
92
106
  class="flex items-center justify-center gap-1 cursor-pointer"
@@ -8,20 +8,18 @@ import SlideOverRight from '@/Components/PageBuilder/Slidebars/SlideOverRight.vu
8
8
  import PageBuilderSettings from '@/Components/PageBuilder/Settings/PageBuilderSettings.vue'
9
9
  import DynamicModal from '@/Components/Modals/DynamicModal.vue'
10
10
 
11
- // Get stores from parent PageBuilder component
11
+ // Get consolidated store from parent PageBuilder component
12
12
  const pageBuilderStateStore = inject('pageBuilderStateStore')
13
- const mediaLibraryStore = inject('mediaLibraryStore')
14
- const userStore = inject('userStore')
15
13
 
16
14
  const getCurrentUser = computed(() => {
17
- return userStore.getCurrentUser
15
+ return pageBuilderStateStore.getCurrentUser
18
16
  })
19
17
 
20
18
  const getCurrentResourceData = computed(() => {
21
19
  return pageBuilderStateStore.getCurrentResourceData
22
20
  })
23
21
 
24
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
22
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
25
23
  const emit = defineEmits(['previewCurrentDesign'])
26
24
 
27
25
  const showModalDeleteAllComponents = ref(false)
@@ -6,8 +6,7 @@ import tailwindColors from '@/utils/builder/tailwaind-colors'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
9
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
11
10
  const backgroundColor = ref(null)
12
11
  const getBackgroundColor = computed(() => {
13
12
  return pageBuilderStateStore.getBackgroundColor
@@ -6,9 +6,8 @@ import tailwindBorderRadius from '@/utils/builder/tailwind-border-radius'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
9
 
11
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
10
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
12
11
  const borderRadiusGlobal = ref(null)
13
12
  const borderRadiusTopLeft = ref(null)
14
13
  const borderRadiusTopRight = ref(null)
@@ -8,9 +8,8 @@ import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headless
8
8
 
9
9
  // Get stores from parent PageBuilder component
10
10
  const pageBuilderStateStore = inject('pageBuilderStateStore')
11
- const mediaLibraryStore = inject('mediaLibraryStore')
12
11
 
13
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
12
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
14
13
  const borderStyle = ref(null)
15
14
  const borderWidth = ref(null)
16
15
  const borderColor = ref(null)
@@ -5,9 +5,8 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
5
5
 
6
6
  // Get stores from parent PageBuilder component
7
7
  const pageBuilderStateStore = inject('pageBuilderStateStore')
8
- const mediaLibraryStore = inject('mediaLibraryStore')
9
8
 
10
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
9
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
11
10
  const currentClasses = ref(null)
12
11
  const getCurrentClasses = computed(() => {
13
12
  return pageBuilderStateStore.getCurrentClasses
@@ -6,7 +6,6 @@ import { ref } from 'vue'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
9
 
11
10
  const showModalDeleteComponent = ref(false)
12
11
  // use dynamic model
@@ -21,7 +20,7 @@ const thirdButtonModal = ref(null)
21
20
  const firstModalButtonFunction = ref(null)
22
21
  const secondModalButtonFunction = ref(null)
23
22
  const thirdModalButtonFunction = ref(null)
24
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
23
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
25
24
 
26
25
  // remove component
27
26
  const deleteComponent = function (e) {
@@ -5,9 +5,8 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
5
5
 
6
6
  // Get stores from parent PageBuilder component
7
7
  const pageBuilderStateStore = inject('pageBuilderStateStore')
8
- const mediaLibraryStore = inject('mediaLibraryStore')
9
8
 
10
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
9
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
11
10
  const getRestoredElement = computed(() => {
12
11
  return pageBuilderStateStore.getRestoredElement
13
12
  })
@@ -9,10 +9,9 @@ import BackgroundColorEditor from '@/Components/PageBuilder/EditorMenu/Editables
9
9
 
10
10
  // Get stores from parent PageBuilder component
11
11
  const pageBuilderStateStore = inject('pageBuilderStateStore')
12
- const mediaLibraryStore = inject('mediaLibraryStore')
13
12
  const customMediaComponent = inject('CustomMediaComponent')
14
13
 
15
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
14
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
16
15
 
17
16
  const getElement = computed(() => {
18
17
  return pageBuilderStateStore.getElement
@@ -5,9 +5,8 @@ import EditorAccordion from '@/Components/PageBuilder/EditorMenu/EditorAccordion
5
5
 
6
6
  // Get stores from parent PageBuilder component
7
7
  const pageBuilderStateStore = inject('pageBuilderStateStore')
8
- const mediaLibraryStore = inject('mediaLibraryStore')
9
8
 
10
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
9
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
11
10
 
12
11
  const getElement = computed(() => {
13
12
  return pageBuilderStateStore.getElement
@@ -6,10 +6,9 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
9
  const customMediaComponent = inject('CustomMediaComponent')
11
10
 
12
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
11
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
13
12
  const isLoading = ref(false)
14
13
 
15
14
  // use media library
@@ -6,9 +6,8 @@ import { Switch } from '@headlessui/vue'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
9
 
11
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
10
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
12
11
  const hyperlinkEnable = ref(false)
13
12
  const urlInput = ref(null)
14
13
  const openHyperlinkInNewTab = ref(false)
@@ -13,8 +13,7 @@ import {
13
13
 
14
14
  // Get stores from parent PageBuilder component
15
15
  const pageBuilderStateStore = inject('pageBuilderStateStore')
16
- const mediaLibraryStore = inject('mediaLibraryStore')
17
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
16
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
18
17
  const opacityVueModel = ref(null)
19
18
  const getBackgroundOpacity = computed(() => {
20
19
  return pageBuilderStateStore.getBackgroundOpacity
@@ -13,8 +13,7 @@ import {
13
13
 
14
14
  // Get stores from parent PageBuilder component
15
15
  const pageBuilderStateStore = inject('pageBuilderStateStore')
16
- const mediaLibraryStore = inject('mediaLibraryStore')
17
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
16
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
18
17
  const opacityVueModel = ref(null)
19
18
  const getOpacity = computed(() => {
20
19
  return pageBuilderStateStore.getOpacity
@@ -6,9 +6,8 @@ import tailwindPaddingPlusMargin from '@/utils/builder/tailwind-padding-margin'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
9
 
11
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
10
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
12
11
  const fontVerticalPadding = ref(null)
13
12
  const fontHorizontalPadding = ref(null)
14
13
  const fontVerticalMargin = ref(null)
@@ -6,8 +6,7 @@ import tailwindColors from '@/utils/builder/tailwaind-colors'
6
6
 
7
7
  // Get stores from parent PageBuilder component
8
8
  const pageBuilderStateStore = inject('pageBuilderStateStore')
9
- const mediaLibraryStore = inject('mediaLibraryStore')
10
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
9
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
11
10
  const textColor = ref(null)
12
11
  const getTextColor = computed(() => {
13
12
  return pageBuilderStateStore.getTextColor
@@ -7,9 +7,8 @@ import tailwindFontStyles from '@/utils/builder/tailwind-font-styles'
7
7
 
8
8
  // Get stores from parent PageBuilder component
9
9
  const pageBuilderStateStore = inject('pageBuilderStateStore')
10
- const mediaLibraryStore = inject('mediaLibraryStore')
11
10
 
12
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
11
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
13
12
  const fontBase = ref(null)
14
13
  const fontDesktop = ref(null)
15
14
  const fontTablet = ref(null)
@@ -4,18 +4,17 @@ import components from '../../utils/html-elements/component'
4
4
  import PageBuilderClass from '../../composables/PageBuilderClass'
5
5
  import { usePageBuilderModal } from '../../composables/usePageBuilderModal'
6
6
  import { generateComponentPreview } from '../../utils/componentPreviews'
7
- import type { ComponentObject, PageBuilderStateStore, MediaLibraryStore } from '../../types'
7
+ import type { ComponentObject, PageBuilderStateStore } from '../../types'
8
8
 
9
9
  import { inject, ref } from 'vue'
10
10
 
11
11
  // Get stores from parent PageBuilder component
12
12
  const pageBuilderStateStore = inject<PageBuilderStateStore>('pageBuilderStateStore')
13
- const mediaLibraryStore = inject<MediaLibraryStore>('mediaLibraryStore')
14
13
 
15
14
  // Get modal close function
16
15
  const { closeAddComponentModal } = usePageBuilderModal()
17
16
 
18
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore!, mediaLibraryStore!)
17
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore!)
19
18
 
20
19
  // Track image loading states
21
20
  const imageLoadingStates = ref<Record<string, boolean>>({})
@@ -4,9 +4,8 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
4
4
 
5
5
  // Get stores from parent PageBuilder component
6
6
  const pageBuilderStateStore = inject('pageBuilderStateStore')
7
- const mediaLibraryStore = inject('mediaLibraryStore')
8
7
 
9
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
8
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
10
9
  </script>
11
10
 
12
11
  <template>
@@ -8,7 +8,6 @@ import DynamicModal from '@/Components/Modals/DynamicModal.vue'
8
8
 
9
9
  // Get stores from parent PageBuilder component
10
10
  const pageBuilderStateStore = inject('pageBuilderStateStore')
11
- const mediaLibraryStore = inject('mediaLibraryStore')
12
11
 
13
12
  const showModalUrl = ref(false)
14
13
 
@@ -25,7 +24,7 @@ const firstModalButtonFunction = ref(null)
25
24
  const secondModalButtonFunction = ref(null)
26
25
  const thirdModalButtonFunction = ref(null)
27
26
 
28
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
27
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
29
28
 
30
29
  const getElement = computed(() => {
31
30
  return pageBuilderStateStore.getElement
@@ -11,8 +11,6 @@ import SearchComponents from '@/Components/Search/SearchComponents.vue'
11
11
  import OptionsDropdown from '@/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue'
12
12
  import RightSidebarEditor from '@/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue'
13
13
  import { usePageBuilderStateStore } from '@/stores/page-builder-state'
14
- import { useMediaLibraryStore } from '@/stores/media-library'
15
- import { useUserStore } from '@/stores/user'
16
14
 
17
15
  /**
18
16
  * Props for PageBuilder component
@@ -66,9 +64,7 @@ const props = defineProps({
66
64
 
67
65
  // Create internal Pinia instance for PageBuilder package
68
66
  const internalPinia = createPinia()
69
- const mediaLibraryStore = useMediaLibraryStore(internalPinia)
70
67
  const pageBuilderStateStore = usePageBuilderStateStore(internalPinia)
71
- const userStore = useUserStore(internalPinia)
72
68
 
73
69
  // Set logo
74
70
  if (props.PageBuilderLogo) {
@@ -85,19 +81,17 @@ if (props.resourceData) {
85
81
  }
86
82
  // Set current user if provided
87
83
  if (props.userForPageBuilder) {
88
- userStore.setCurrentUser(props.userForPageBuilder)
84
+ pageBuilderStateStore.setCurrentUser(props.userForPageBuilder)
89
85
  }
90
86
 
91
87
  // Set updateOrCreate in store
92
88
  pageBuilderStateStore.setUpdateOrCreate(props.updateOrCreate)
93
89
 
94
- // Initialize PageBuilder with stores
95
- const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
90
+ // Initialize PageBuilder with store
91
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
96
92
 
97
- // Provide stores for child components
93
+ // Provide store for child components (all pointing to the same consolidated store)
98
94
  provide('pageBuilderStateStore', pageBuilderStateStore)
99
- provide('mediaLibraryStore', mediaLibraryStore)
100
- provide('userStore', userStore)
101
95
 
102
96
  // Provide the internal Pinia instance for components that need to create stores
103
97
  provide('internalPinia', internalPinia)
@@ -158,7 +152,7 @@ const getComponents = computed(() => {
158
152
  })
159
153
 
160
154
  const getCurrentUser = computed(() => {
161
- return userStore.getCurrentUser
155
+ return pageBuilderStateStore.getCurrentUser
162
156
  })
163
157
 
164
158
  const getCurrentResourceData = computed(() => {
@@ -360,7 +354,7 @@ onMounted(async () => {
360
354
  "
361
355
  class="h-10 w-10 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
362
356
  >
363
- <span class="myMediumIcon material-symbols-outlined"> add </span>
357
+ <span class="myMediumIcon material-symbols-outlined"> interests </span>
364
358
  </button>
365
359
  </div>
366
360
  <div @click.self="pageBuilderStateStore.setComponent(null)">
@@ -405,12 +399,13 @@ onMounted(async () => {
405
399
  "
406
400
  >
407
401
  <div class="flex items-center justify-center gap-2">
408
- <span class="lg:block hidden"> Add new Component </span>
409
-
402
+ <span class="lg:block hidden">
403
+ <div>Add new Elements</div>
404
+ </span>
410
405
  <span
411
406
  class="h-10 w-10 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
412
407
  >
413
- <span class="myMediumIcon material-symbols-outlined"> add </span>
408
+ <span class="myMediumIcon material-symbols-outlined"> interests </span>
414
409
  </span>
415
410
  </div>
416
411
  </button>
@@ -477,25 +472,27 @@ onMounted(async () => {
477
472
 
478
473
  <!-- Add Component # start -->
479
474
  <div
480
- class="rounded-lg border-2 border-dashed border-gray-300 p-12 text-center hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 my-12 mx-8"
475
+ @click="
476
+ () => {
477
+ pageBuilderStateStore.setComponentArrayAddMethod('push')
478
+ handleAddComponent()
479
+ }
480
+ "
481
+ class="hover:bg-gray-100 rounded-lg border border-gray-200 p-12 text-center hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 my-12 mx-8 cursor-pointer"
481
482
  >
482
- <h3 class="mt-2 text-sm font-medium text-gray-900">Add Components</h3>
483
- <p class="mt-1 text-sm text-gray-500">
484
- Get started by adding components using the drag & drop Page Builder.
485
- </p>
483
+ <div class="flex items-center justify-center gap-2 font-medium cursor-pointer">
484
+ <span class="lg:block hidden">
485
+ <div>Add new Elements</div>
486
+ </span>
487
+ </div>
488
+
486
489
  <div class="mt-6 flex items-center gap-2 justify-center">
487
490
  <button
488
- @click="
489
- () => {
490
- pageBuilderStateStore.setComponentArrayAddMethod('push')
491
- handleAddComponent()
492
- }
493
- "
494
491
  type="button"
495
492
  class="myPrimaryButton flex items-center gap-2 justify-center"
496
493
  >
497
- <span class="myMediumIcon material-symbols-outlined"> add </span>
498
- Add component
494
+ <span class="myMediumIcon material-symbols-outlined"> interests </span>
495
+ Add new Elements
499
496
  </button>
500
497
  </div>
501
498
  </div>
@@ -2,8 +2,6 @@
2
2
  import type {
3
3
  ComponentObject,
4
4
  ImageObject,
5
- PageBuilderStateStore,
6
- MediaLibraryStore,
7
5
  TimerHandle,
8
6
  MutationObserver as MutationObserverType,
9
7
  TailwindColors,
@@ -14,6 +12,7 @@ import type {
14
12
  TailwindBorderRadius,
15
13
  TailwindBorderStyleWidthColor,
16
14
  } from '@/types'
15
+ import type { usePageBuilderStateStore } from '@/stores/page-builder-state'
17
16
 
18
17
  import tailwindColors from '@/utils/builder/tailwaind-colors'
19
18
  import tailwindOpacities from '@/utils/builder/tailwind-opacities'
@@ -33,11 +32,10 @@ class PageBuilderClass {
33
32
  private nextTick: Promise<void>
34
33
  private containsPagebuilder: Element | null
35
34
  private timer: number | null
36
- private pageBuilderStateStore: PageBuilderStateStore
37
- private mediaLibraryStore: MediaLibraryStore
35
+ private pageBuilderStateStore: ReturnType<typeof usePageBuilderStateStore>
38
36
  private getTextAreaVueModel: ComputedRef<string | null>
39
37
  private getLocalStorageItemName: ComputedRef<string | null>
40
- private getCurrentImage: ComputedRef<ImageObject | null>
38
+ private getCurrentImage: ComputedRef<ImageObject>
41
39
  private getHyberlinkEnable: ComputedRef<boolean>
42
40
  private getComponents: ComputedRef<ComponentObject[] | null>
43
41
  private getComponent: ComputedRef<ComponentObject | null>
@@ -53,7 +51,7 @@ class PageBuilderClass {
53
51
  private delay: ReturnType<typeof delay>
54
52
  private observer?: MutationObserverType
55
53
 
56
- constructor(pageBuilderStateStore: PageBuilderStateStore, mediaLibraryStore: MediaLibraryStore) {
54
+ constructor(pageBuilderStateStore: ReturnType<typeof usePageBuilderStateStore>) {
57
55
  /**
58
56
  * Initialize an instance variable 'elementsWithListeners' as a WeakSet.
59
57
  *
@@ -74,16 +72,15 @@ class PageBuilderClass {
74
72
 
75
73
  this.timer = null
76
74
 
77
- // Stores are now required parameters - no fallback to inject
75
+ // Store is now required parameter - no fallback to inject
78
76
  this.pageBuilderStateStore = pageBuilderStateStore
79
- this.mediaLibraryStore = mediaLibraryStore
80
77
 
81
78
  this.getTextAreaVueModel = computed(() => this.pageBuilderStateStore.getTextAreaVueModel)
82
79
  this.getLocalStorageItemName = computed(
83
80
  () => this.pageBuilderStateStore.getLocalStorageItemName,
84
81
  )
85
82
 
86
- this.getCurrentImage = computed(() => this.mediaLibraryStore.getCurrentImage)
83
+ this.getCurrentImage = computed(() => this.pageBuilderStateStore.getCurrentImage)
87
84
  this.getHyberlinkEnable = computed(() => this.pageBuilderStateStore.getHyberlinkEnable)
88
85
  this.getComponents = computed(() => this.pageBuilderStateStore.getComponents)
89
86
 
@@ -144,9 +141,8 @@ class PageBuilderClass {
144
141
  })
145
142
 
146
143
  // set to 'none' if undefined
147
- let elementClass = currentCSS || 'none'
148
-
149
- this.pageBuilderStateStore[mutationName as keyof PageBuilderStateStore](elementClass)
144
+ let elementClass =
145
+ currentCSS || 'none'(this.pageBuilderStateStore as any)[mutationName](elementClass)
150
146
 
151
147
  if (typeof selectedCSS === 'string' && selectedCSS !== 'none') {
152
148
  if (elementClass && this.getElement.value?.classList.contains(elementClass)) {
package/src/index.ts CHANGED
@@ -2,10 +2,8 @@
2
2
  export { default as PageBuilder } from './PageBuilder/PageBuilder.vue'
3
3
  export { default as Preview } from './PageBuilder/Preview.vue'
4
4
 
5
- // Export stores
5
+ // Export stores (consolidated into single store)
6
6
  export { usePageBuilderStateStore } from './stores/page-builder-state'
7
- export { useMediaLibraryStore } from './stores/media-library'
8
- export { useUserStore } from './stores/user'
9
7
 
10
8
  export { default as PageBuilderClass } from './composables/PageBuilderClass'
11
9