@myissue/vue-website-page-builder 3.4.87 → 3.4.90

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/README.md CHANGED
@@ -6,53 +6,15 @@
6
6
 
7
7
  - [Free Click \& Drop Page Builder](#free-click--drop-page-builder)
8
8
  - [Demo](#demo)
9
+ - [Guide](#guide)
9
10
  - [Overview](#overview)
10
11
  - [Get Started in Minutes](#get-started-in-minutes)
11
12
  - [About](#about)
12
13
  - [Real-World Application Example](#real-world-application-example)
13
14
  - [Reviews, Ratings, and User Testimonials](#reviews-ratings-and-user-testimonials)
14
15
  - [Features](#features)
15
- - [Technical Details](#technical-details)
16
- - [Documentation](#documentation)
17
- - [Requirements](#requirements)
18
- - [Getting Started](#getting-started)
19
- - [Installation](#installation)
20
- - [Quick Start](#quick-start)
21
- - [Nuxt Integration](#nuxt-integration)
22
- - [1. Create a Nuxt Plugin](#1-create-a-nuxt-plugin)
23
- - [2. Register the Plugin in `nuxt.config.ts`](#2-register-the-plugin-in-nuxtconfigts)
24
- - [3. Using the Page Builder Component](#3-using-the-page-builder-component)
25
- - [4. Why Initialize the Page Builder with `onMounted` in Nuxt?](#4-why-initialize-the-page-builder-with-onmounted-in-nuxt)
26
- - [Vue Integration](#vue-integration)
27
- - [1. Import and use the Page Builder Plugin](#1-import-and-use-the-page-builder-plugin)
28
- - [2. Using the Page Builder Component](#2-using-the-page-builder-component)
29
- - [3. Initialize Page Builder with `onMounted` Troubleshooting](#3-initialize-page-builder-with-onmounted-troubleshooting)
30
- - [Why Use the Shared Instance?](#why-use-the-shared-instance)
31
- - [Important: CSS Prefixing (`pbx-`)](#important-css-prefixing-pbx-)
32
- - [Rendering HTML Output in Other Frameworks (React, Nuxt, etc.)](#rendering-html-output-in-other-frameworks-react-nuxt-etc)
33
- - [Providing Configuration to the Page Builder](#providing-configuration-to-the-page-builder)
34
- - [Comprehensive Language Support in the Page Builder](#comprehensive-language-support-in-the-page-builder)
35
- - [Default language](#default-language)
36
- - [Disabling the Language Dropdown](#disabling-the-language-dropdown)
37
- - [Local Storage \& Auto-Save](#local-storage--auto-save)
38
- - [Retrieving the Latest HTML Content for Form Submission](#retrieving-the-latest-html-content-for-form-submission)
39
- - [Resetting the Builder After Successful Resource Creation or Update](#resetting-the-builder-after-successful-resource-creation-or-update)
40
- - [Loading Existing Content or Components into the Page Builder](#loading-existing-content-or-components-into-the-page-builder)
41
- - [Restoring Full Page Content (Global Styles \& Components)](#restoring-full-page-content-global-styles--components)
42
- - [Automatic Draft Recovery](#automatic-draft-recovery)
43
- - [Close Page Builder Without Saving in a Modal or Dialog](#close-page-builder-without-saving-in-a-modal-or-dialog)
44
- - [Publish Changes Using the Save Button](#publish-changes-using-the-save-button)
45
- - [Styling the Main Page Builder Container](#styling-the-main-page-builder-container)
46
- - [Download HTML File](#download-html-file)
47
- - [Custom Components](#custom-components)
48
- - [Custom Media Library Component](#custom-media-library-component)
49
- - [Integrate Unsplash Library](#integrate-unsplash-library)
50
- - [Custom Layout Builder Component](#custom-layout-builder-component)
51
- - [Troubleshooting](#troubleshooting)
52
- - [1. Fonts or Icons Not Displaying](#1-fonts-or-icons-not-displaying)
53
- - [2. Initialize Page Builder with `onMounted` Troubleshooting](#2-initialize-page-builder-with-onmounted-troubleshooting)
16
+ - [How the Page Builder Works](#how-the-page-builder-works)
54
17
  - [Page Builder Architecture](#page-builder-architecture)
55
- - [How the Page Builder Works](#how-the-page-builder-works)
56
18
  - [Contributing](#contributing)
57
19
  - [Security Vulnerabilities](#security-vulnerabilities)
58
20
  - [Get in Touch for Customization or Any Questions](#get-in-touch-for-customization-or-any-questions)
@@ -74,6 +36,15 @@ Experience the power and simplicity of the Vue Website Page Builder in action, w
74
36
 
75
37
  <img style="width: 100%;" src="./public/home/for_read_me/vue3_page_builder_myissue.gif" alt="Vue Website Page Builder - the editor" />
76
38
 
39
+ ## Guide
40
+
41
+ A Page Builder designed for growth. Build your website pages with ready-made components that are fully customizable and always responsive, designed to fit every need. A powerful Page Builder for growing merchants, brands, and agencies. And it is totally free.
42
+
43
+ Find everything you need to get started, configure, and master the Vue Website Page Builder.
44
+ This section covers installation, requirements, quick start, advanced usage, and integration tips—so you can build and launch pages with confidence.
45
+
46
+ [Guide](https://myissue-studio.github.io/vue-website-page-builder/)
47
+
77
48
  ## Overview
78
49
 
79
50
  If you're a Vue 3 developer, this builder feels right at home. It installs quickly via npm and supports full customization through props and configuration objects. You can even set specific user settings like image, name, theme, language, company logo, and autosave preferences, making it a personalized experience for every user.
@@ -172,762 +143,7 @@ The Page Builder is packed with features:
172
143
  - **Scoped Styles**: To ensure clean and predictable styling, the builder uses scoped style isolation. There is no risk of style conflicts between the builder and your app.
173
144
  - **HTML Editor**: Access and edit raw HTML directly for full customization and developer-level control.
174
145
 
175
- ## Technical Details
176
-
177
- - **Technologies**: This Page Builder is developed using TypeScript, Vue 3, the Composition API, Pinia, CSS, Tailwind CSS, and HTML.
178
- - **Features**: Click & Drop Page Builder.
179
-
180
- ## Documentation
181
-
182
- Find everything you need to get started, configure, and master the Vue Website Page Builder.
183
- This section covers installation, requirements, quick start, advanced usage, and integration tips—so you can build and launch pages with confidence.
184
-
185
- ## Requirements
186
-
187
- Please note that these instructions assume you have Node.js installed.
188
-
189
- - Node.js ≥ 18.0.0
190
- - Vue.js ≥ 3.0.0
191
- - Modern browser with ES6+ support
192
-
193
- ## Getting Started
194
-
195
- Make sure to install the dependencies:
196
-
197
- ```bash
198
- # npm
199
- npm install
200
-
201
- # pnpm
202
- pnpm install
203
-
204
- # yarn
205
- yarn install
206
-
207
- # bun
208
- bun install
209
- ```
210
-
211
- ## Installation
212
-
213
- The web builder for stunning pages. Enables users to design and publish modern pages at any scale.
214
-
215
- ```bash
216
- npm install @myissue/vue-website-page-builder
217
- ```
218
-
219
- ## Quick Start
220
-
221
- Get up and running with the Vue Website Page Builder in just a few minutes.
222
- This section walks you through the essential steps—from installation to rendering your first page—so you can start building beautiful, dynamic content right away.
223
-
224
- ## Nuxt Integration
225
-
226
- To use `@myissue/vue-website-page-builder` in your Nuxt 3 or Nuxt 4 project, follow these steps:
227
-
228
- > **🎉 Great news:** The Page Builder now works with Nuxt 3 and Nuxt 4.
229
- > Follow the steps below to get started in your Nuxt project.
230
-
231
- ### 1. Create a Nuxt Plugin
232
-
233
- In the root, create a file named:
234
-
235
- ```plaintext
236
- plugins/page-builder.client.js
237
- ```
238
-
239
- Add the following code:
240
-
241
- ```javascript
242
- import { pageBuilder } from '@myissue/vue-website-page-builder'
243
- // Import the Page Builder styles once in your application entry, not in individual components.
244
- import '@myissue/vue-website-page-builder/style.css'
245
-
246
- export default defineNuxtPlugin((nuxtApp) => {
247
- nuxtApp.vueApp.use(pageBuilder)
248
- })
249
- ```
250
-
251
- ### 2. Register the Plugin in `nuxt.config.ts`
252
-
253
- Make sure Nuxt knows about your new Plugin by adding it to your config:
254
-
255
- > **Note:** If your Plugin is inside the `/plugins` folder, Nuxt will auto-register it.
256
- > Adding it to `nuxt.config.ts` is optional, but improves clarity.
257
-
258
- ```typescript
259
- export default defineNuxtConfig({
260
- devtools: { enabled: true },
261
- plugins: ['./plugins/page-builder.client.js'],
262
- })
263
- ```
264
-
265
- ### 3. Using the Page Builder Component
266
-
267
- Now anywhere in your application, use the `getPageBuilder()` composable to interact with the Page Builder’s shared instance.
268
-
269
- The Page Builder relies on browser APIs like `localStorage` and dynamic `DOM` manipulation, which are only available on the client side. Wrapping it in `<client-only>` ensures it is rendered exclusively in the browser, preventing SSR errors and guaranteeing a smooth editing experience.
270
-
271
- You’re now ready to use the Page Builder in your Nuxt pages or components with the `getPageBuilder()` composable.
272
-
273
- ```vue
274
- <script setup>
275
- import { onMounted } from 'vue'
276
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
277
-
278
- const configPageBuilder = {
279
- updateOrCreate: {
280
- formType: 'create',
281
- formName: 'article',
282
- },
283
- }
284
-
285
- // Initialize the Page Builder with `onMounted`
286
- onMounted(async () => {
287
- const pageBuilderService = getPageBuilder()
288
- const result = await pageBuilderService.startBuilder(configPageBuilder)
289
- console.info('You may inspect this result for message, status, or error:', result)
290
- })
291
- </script>
292
-
293
- <template>
294
- <div>
295
- <client-only>
296
- <PageBuilder />
297
- </client-only>
298
- </div>
299
- </template>
300
- ```
301
-
302
- > **Tip:**
303
- > By initializing the builder inside `onMounted`, you ensure everything is ready and avoid hydration errors.
304
-
305
- ### 4. Why Initialize the Page Builder with `onMounted` in Nuxt?
306
-
307
- In a Server-Side Rendering (SSR) framework like Nuxt, any code that depends on the browser (`DOM`, `window`, `localStorage`, etc.) should only run on the client. Using `onMounted` ensures the Page Builder initializes safely after the component is mounted, avoiding SSR errors. Many popular packages follow this pattern.
308
-
309
- ## Vue Integration
310
-
311
- To use `@myissue/vue-website-page-builder` in your Vue project, follow these steps:
312
-
313
- ### 1. Import and use the Page Builder Plugin
314
-
315
- Import the `pageBuilder` Plugin and register it in your application entry point (e.g., `main.ts` or `main.js`). This sets up a single, shared Page Builder instance for your entire app.
316
-
317
- Import the CSS file once in your `main.js`, `main.ts`, or root component. This ensures proper styling and automatic icon loading. You do **not** need to import it in individual components.
318
-
319
- ```javascript
320
- import { createApp } from 'vue'
321
- import App from './App.vue'
322
- import { pageBuilder } from '@myissue/vue-website-page-builder'
323
- import '@myissue/vue-website-page-builder/style.css'
324
-
325
- const app = createApp(App)
326
- app.use(pageBuilder)
327
- app.mount('#app')
328
- ```
329
-
330
- ### 2. Using the Page Builder Component
331
-
332
- Now anywhere in your application, use the `getPageBuilder()` composable to interact with the Page Builder’s shared instance.
333
-
334
- You’re now ready to use the Page Builder in your Vue pages or components with the `getPageBuilder()` composable.
335
-
336
- ```vue
337
- <script setup>
338
- import { onMounted } from 'vue'
339
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
340
-
341
- const configPageBuilder = {
342
- updateOrCreate: {
343
- formType: 'create',
344
- formName: 'article',
345
- },
346
- }
347
-
348
- // Initialize the Page Builder with `onMounted`
349
- onMounted(async () => {
350
- const pageBuilderService = getPageBuilder()
351
- const result = await pageBuilderService.startBuilder(configPageBuilder)
352
- console.info('You may inspect this result for message, status, or error:', result)
353
- })
354
- </script>
355
-
356
- <template>
357
- <PageBuilder />
358
- </template>
359
- ```
360
-
361
- ### 3. Initialize Page Builder with `onMounted` Troubleshooting
362
-
363
- If you encounter issues with the component not fully mounting, you can initialize the Page Builder inside Vue's `onMounted` lifecycle hook. This ensures it runs safely after the component is mounted.
364
-
365
- ```vue
366
- <script setup>
367
- import { onMounted } from 'vue'
368
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
369
-
370
- const configPageBuilder = {
371
- updateOrCreate: {
372
- formType: 'create',
373
- formName: 'article',
374
- },
375
- }
376
-
377
- // Initialize the Page Builder with `onMounted`
378
- onMounted(async () => {
379
- const pageBuilderService = getPageBuilder()
380
- const result = await pageBuilderService.startBuilder(configPageBuilder)
381
- console.info('You may inspect this result for message, status, or error:', result)
382
- })
383
- </script>
384
- ```
385
-
386
- ## Why Use the Shared Instance?
387
-
388
- By always accessing the shared instance, you avoid creating multiple, isolated copies of the builder. This prevents data inconsistencies, synchronization issues, and unpredictable behavior. All components and modules interact with the same centralized service, ensuring that updates and state changes are reflected everywhere in your application.
389
-
390
- > **Note:**
391
- > The Page Builder is implemented as a singleton service. All page-building logic and state are managed by a single shared instance, even if you use `<PageBuilder />` in multiple places.
392
-
393
- ## Important: CSS Prefixing (`pbx-`)
394
-
395
- All CSS classes generated or processed by the Page Builder—including Tailwind utilities and your custom classes—are automatically prefixed with `pbx-`. This ensures the builder’s styles never conflict with your app’s existing CSS or Tailwind setup.
396
- This prevents global styles from leaking into the builder and vice versa, which is crucial for embedding the builder into larger apps or white-label environments.
397
-
398
- **How does this affect you?**
399
-
400
- When a user adds a component into the Page Builder, all classes from that component are automatically prefixed with `pbx-` (e.g., `pbx-button`, `pbx-container`) to ensure style isolation and avoid conflicts.
401
-
402
- Tailwind installation is not required. The Page Builder ships with prefixed utility classes to ensure there are no naming conflicts. If you wish to use Tailwind in your own application, you may install and configure it as usual without interfering with the Page Builder.
403
-
404
- > **Note:**
405
- > Simply import the builder’s CSS file once in your project. All builder styles are namespaced, so there is no risk of style conflicts.
406
-
407
- ## Rendering HTML Output in Other Frameworks (React, Nuxt, etc.)
408
-
409
- You can use the Page Builder to generate HTML and render it in any frontend framework, such as React, Nuxt, or even server-side apps.
410
-
411
- To ensure your content is styled correctly, simply install the Page Builder package in your target project and import its CSS file. All builder and Tailwind-prefixed styles will be applied automatically.
412
-
413
- ```typescript
414
- // Import the Page Builder styles once in your application entry, not in individual components.
415
- import '@myissue/vue-website-page-builder/style.css'
416
- ```
417
-
418
- This will apply all necessary styles to any HTML output from the builder, even if you render it with `dangerouslySetInnerHTML`, `v-html`, or similar methods.
419
-
420
- **Example (React):**
421
-
422
- ```jsx
423
- // Import the Page Builder styles once in your application entry, not in individual components.
424
- import '@myissue/vue-website-page-builder/style.css'
425
-
426
- function MyPage({ html }) {
427
- return <div dangerouslySetInnerHTML={{ __html: html }} />
428
- }
429
- ```
430
-
431
- **Example (Nuxt/Vue):**
432
-
433
- ```vue
434
- <script setup>
435
- import { ref } from 'vue'
436
- // Import the Page Builder styles once in your application entry, not in individual components.
437
- import '@myissue/vue-website-page-builder/style.css'
438
-
439
- const rawHtml = ref('<p>This is content from the Page Builder.</p>')
440
- </script>
441
-
442
- <template>
443
- <div v-html="rawHtml"></div>
444
- </template>
445
- ```
446
-
447
- > **Note:**
448
- > You do not need to import any Vue components if you only want to render the HTML. Just import the CSS file.
449
-
450
- ## Providing Configuration to the Page Builder
451
-
452
- The example below demonstrates the setup to start building pages, with additional options available for customization and branding.
453
-
454
- Your `configPageBuilder` object can include:
455
-
456
- - **`formType` (required):**
457
- Used to retrieve the correct content from local storage. Specify whether you are creating or updating a resource.
458
- - **`formName` (required):**
459
- The resource type (e.g., `article`, `jobPost`, `store`, etc.). This is especially useful for platforms supporting multiple resource types, allowing the builder to manage layouts and storage for each resource uniquely.
460
- - **`resourceData` (optional):**
461
- Prefill the builder with initial resource data (e.g., `title`, `id`).
462
- - **`userForPageBuilder` (optional):**
463
- Pass user information (such as `name` and `image`) to display the logged-in user’s details in the builder.
464
- - **`pageBuilderLogo` (optional):**
465
- Display your company logo in the builder toolbar.
466
- - **`userSettings` (optional):**
467
- Set user preferences such as theme, language, or auto-save.
468
- - **`brandColor` (optional):**
469
- Set your brand’s primary color for key UI elements (inside the `settings` config).
470
-
471
- ```vue
472
- <script setup>
473
- import { onMounted } from 'vue'
474
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
475
-
476
- const configPageBuilder = {
477
- updateOrCreate: {
478
- formType: 'create', // Set to 'create' or 'update'
479
- // Set the resource type for better local storage and multi-resource support
480
- formName: 'article',
481
- },
482
- resourceData: {
483
- title: 'Demo Article',
484
- id: 1,
485
- },
486
- userForPageBuilder: { name: 'John Doe', image: '/jon_doe.jpg' },
487
- pageBuilderLogo: {
488
- src: '/logo/logo.svg',
489
- },
490
- userSettings: {
491
- theme: 'light',
492
- language: 'en',
493
- autoSave: true,
494
- },
495
- settings: {
496
- brandColor: '#DB93B0',
497
- },
498
- }
499
-
500
- const pageBuilderService = getPageBuilder()
501
-
502
- onMounted(async () => {
503
- const result = await pageBuilderService.startBuilder(configPageBuilder)
504
- console.info('You may inspect this result for message, status, or error:', result)
505
- })
506
- </script>
507
-
508
- <template>
509
- <PageBuilder />
510
- </template>
511
- ```
512
-
513
- ## Comprehensive Language Support in the Page Builder
514
-
515
- The Page Builder offers robust multilingual support, enabling you to reach a global audience with ease. By default, it supports the following languages, chosen for their widespread use and strong developer communities:
516
-
517
- | Language | Code |
518
- | -------------------- | ------- |
519
- | English | en |
520
- | Chinese (Simplified) | zh-Hans |
521
- | French | fr |
522
- | Japanese | ja |
523
- | Russian | ru |
524
- | Spanish | es |
525
- | Portuguese (Brazil) | pt |
526
- | German | de |
527
- | Arabic | ar |
528
- | Hindi | hi |
529
- | Danish | da |
530
- | Italian | it |
531
-
532
- #### Default language
533
-
534
- You can set a default language for your project:
535
-
536
- ```typescript
537
- userSettings: {
538
- language: {
539
- default: 'en',
540
- },
541
- },
542
- ```
543
-
544
- If you prefer to offer only a subset of these languages for users to switch between, specify them using the `enable` option.
545
-
546
- If you do not provide the `enable` array, the Page Builder will default to showing all supported languages by default.
547
-
548
- ```typescript
549
- userSettings: {
550
- language: {
551
- default: 'en',
552
- enable: ['en', 'zh-Hans', 'fr'],
553
- },
554
- },
555
- ```
556
-
557
- #### Disabling the Language Dropdown
558
-
559
- If you want to completely hide the language selector from the UI (e.g., when only one language is available or you want a fixed language), simply set `disableLanguageDropdown` to `true`.
560
-
561
- Even when the dropdown is disabled, the default language will still be applied automatically. This gives you full control over localization while keeping the interface simple for your users.
562
-
563
- ```typescript
564
- userSettings: {
565
- theme: 'light',
566
- language: {
567
- default: 'en',
568
- disableLanguageDropdown: true,
569
- },
570
- },
571
- ```
572
-
573
- This flexibility allows you to tailor the language experience to your audience’s needs.
574
-
575
- ## Local Storage & Auto-Save
576
-
577
- The Page Builder automatically saves all changes to the browser’s local storage. Every time you add, edit, or delete a component, your progress is preserved—even if you close the browser or navigate away.
578
-
579
- - **Auto-Save:** Changes are periodically saved as you work.
580
- - **Manual Save:** Clicking the Save button also stores the current state.
581
-
582
- ## Retrieving the Latest HTML Content for Form Submission
583
-
584
- The builder’s auto-save ensures that the data in local storage always reflects the latest state of your page. You can retrieve this data at any time for form submission, publishing, or preview.
585
-
586
- To get the most up-to-date content, use the same `resourceData` (such as `formType` and `formName`) that was used when saving. If these values do not match, the builder may not find the expected content.
587
-
588
- **Example:**
589
-
590
- ```typescript
591
- const configPageBuilder = {
592
- updateOrCreate: {
593
- formType: 'create',
594
- formName: 'article',
595
- },
596
- }
597
- ```
598
-
599
- Call this logic when you need to submit or save the builder’s output—for example, when the user clicks “Save” or “Publish.” The code below safely retrieves and parses the latest data from local storage, handling errors and assigning the results to your form fields.
600
-
601
- ```vue
602
- <script setup>
603
- import { onMounted } from 'vue'
604
- import { getPageBuilder } from '@myissue/vue-website-page-builder'
605
-
606
- const configPageBuilder = {
607
- updateOrCreate: {
608
- formType: 'create',
609
- formName: 'article',
610
- },
611
- }
612
-
613
- const pageBuilderService = getPageBuilder()
614
-
615
- onMounted(async () => {
616
- const result = await pageBuilderService.startBuilder(configPageBuilder)
617
- console.info('You may inspect this result for message, status, or error:', result)
618
- })
619
-
620
- const getComponents = function () {
621
- const storedComponents = pageBuilderService.getSavedPageHtml()
622
- yourForm.content = storedComponents
623
- }
624
-
625
- // Call getComponents when needed.
626
- </script>
627
- ```
628
-
629
- ### Resetting the Builder After Successful Resource Creation or Update
630
-
631
- After successfully creating or updating a resource (such as a post, article, or listing) using the Page Builder, it is important to clear the `DOM` and the builder’s draft state, as well as remove the corresponding local storage entry. This ensures that old drafts do not appear the next time the builder is opened for a new or existing resource.
632
-
633
- You can reset the Page Builder’s live `DOM`, builder state, and clear the draft with:
634
-
635
- ```typescript
636
- await pageBuilderService.handleFormSubmission()
637
- ```
638
-
639
- Always call this method after a successful post or resource update to ensure users start with a fresh builder the next time they create or edit a resource.
640
-
641
- ## Loading Existing Content or Components into the Page Builder
642
-
643
- The Page Builder makes it simple to load previously published content—including both your page’s global styles and all components—from any backend source, such as your database or API.
644
-
645
- ### Restoring Full Page Content (Global Styles & Components)
646
-
647
- If you have previously saved or published HTML content (for example, from your database), you can easily restore both the global page styles (classes, inline styles) and all builder components for seamless editing.
648
-
649
- **Recommended Workflow:**
650
-
651
- 1. **Parse your saved HTML** using the builder’s helper method to extract both the components and the global page settings:
652
-
653
- ```typescript
654
- // yourPageHTML: the full HTML string previously saved from the builder
655
- const { components, pageSettings } = pageBuilderService.parsePageBuilderHTML(yourPageHTML)
656
- ```
657
-
658
- 2. **Pass `pageSettings` directly** in your config object, and pass the `components` array as the second argument to `startBuilder`:
659
-
660
- ```vue
661
- <script setup>
662
- import { onMounted } from 'vue'
663
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
664
-
665
- // Retrieve the Page Builder service instance
666
- const pageBuilderService = getPageBuilder()
667
-
668
- // Parse your saved HTML to extract both components and global page settings
669
- const { components, pageSettings } = pageBuilderService.parsePageBuilderHTML(yourPageHTML)
670
-
671
- // Prepare the config, passing pageSettings directly
672
- const configPageBuilder = {
673
- updateOrCreate: {
674
- formType: 'update', // important: set to update
675
- formName: 'article',
676
- },
677
- // pass directly, not nested
678
- pageSettings: pageSettings,
679
- }
680
-
681
- const pageBuilderService = getPageBuilder()
682
-
683
- // Initialize the Page Builder with `onMounted`
684
- onMounted(async () => {
685
- const result = await pageBuilderService.startBuilder(configPageBuilder)
686
- console.info('You may inspect this result for message, status, or error:', result)
687
- })
688
- </script>
689
-
690
- <template>
691
- <PageBuilder />
692
- </template>
693
- ```
694
-
695
- > **Note:**
696
- >
697
- > - Each component’s `html_code` must be wrapped in a `<section>...</section>` tag. This is how the Page Builder defines and separates individual components.
698
- > - Always pass `pageSettings` directly in the config object (not as `{ pageSettings: { pageSettings } }`).
699
- > - Set `formType: 'update'` to ensure the builder loads your provided content for editing.
700
-
701
- This approach ensures your users can seamlessly restore and edit previously published content—including all global styles and layout—providing a smooth and reliable editing experience for existing pages.
702
-
703
- ## Automatic Draft Recovery
704
-
705
- The Page Builder automatically checks for unsaved drafts in local storage for the current resource.
706
- If a draft is found, users are prompted to either continue where they left off or use the version loaded from your backend.
707
-
708
- - **`formType` (required):**
709
- Determines which draft to load from local storage. Set this to either `create` or `update` in the `updateOrCreate` config, depending on your use case.
710
- - **`formName` (required):**
711
- Specifies the resource type (e.g., `article`, `jobPost`, `store`, etc.) in the `updateOrCreate` config. This is especially important if your platform supports multiple resource types. By providing a unique name, the Page Builder can correctly manage layouts and drafts for each resource, allowing users to pick up where they left off.
712
-
713
- ```vue
714
- <script setup>
715
- import { onMounted } from 'vue'
716
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
717
-
718
- const configPageBuilder = {
719
- updateOrCreate: {
720
- formType: 'update',
721
- formName: 'article',
722
- },
723
- }
724
-
725
- const pageBuilderService = getPageBuilder()
726
-
727
- // Initialize the Page Builder with `onMounted`
728
- onMounted(async () => {
729
- const result = await pageBuilderService.startBuilder(configPageBuilder)
730
- console.info('You may inspect this result for message, status, or error:', result)
731
- })
732
- </script>
733
-
734
- <template>
735
- <PageBuilder />
736
- </template>
737
- ```
738
-
739
- ## Close Page Builder Without Saving in a Modal or Dialog
740
-
741
- You can easily use the Page Builder inside a modal or dialog.
742
- To close the page builder without saving, or to allow users to close the modal from inside the builder, use the `showCloseButton` prop and listen for the `@handleClosePageBuilder` event:
743
-
744
- ```vue
745
- <script setup>
746
- import { onMounted, ref } from 'vue'
747
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
748
-
749
- const configPageBuilder = {
750
- updateOrCreate: {
751
- formType: 'update',
752
- formName: 'article',
753
- },
754
- }
755
- const showModal = ref(true)
756
-
757
- function closePageBuilder() {
758
- showModal.value = false
759
- }
760
-
761
- const pageBuilderService = getPageBuilder()
762
-
763
- // Initialize the Page Builder with `onMounted`
764
- onMounted(async () => {
765
- const result = await pageBuilderService.startBuilder(configPageBuilder)
766
- console.info('You may inspect this result for message, status, or error:', result)
767
- })
768
- </script>
769
-
770
- <template>
771
- <Modal v-if="showModal" @close="showModal = false">
772
- <PageBuilder :showCloseButton="true" @handleClosePageBuilder="closePageBuilder" />
773
- </Modal>
774
- </template>
775
- ```
776
-
777
- ## Publish Changes Using the Save Button
778
-
779
- To allow users to use the Publish button from inside the builder, use the `showPublishButton` prop and listen for the `@handlePublishPageBuilder` event.
780
-
781
- > **Note:**
782
- > When the Publish button is clicked, the Page Builder will automatically save the latest changes to local storage before emitting the `@handlePublishPageBuilder` event. This ensures you always receive the most up-to-date content.
783
-
784
- ```vue
785
- <script setup>
786
- import { onMounted } from 'vue'
787
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
788
-
789
- const pageBuilderService = getPageBuilder()
790
-
791
- const handlePublish = () => {
792
- // Retrieve the latest HTML content (saved by the builder)
793
- const latestHtml = pageBuilderService.getSavedPageHtml()
794
- // Submit, publish, or process the content as needed
795
- // e.g., send latestHtml to your API or update your form
796
- }
797
-
798
- const pageBuilderService = getPageBuilder()
799
-
800
- // Initialize the Page Builder with `onMounted`
801
- onMounted(async () => {
802
- const result = await pageBuilderService.startBuilder(configPageBuilder)
803
- console.info('You may inspect this result for message, status, or error:', result)
804
- })
805
- </script>
806
-
807
- <template>
808
- <PageBuilder :showPublishButton="true" @handlePublishPageBuilder="handlePublish" />
809
- </template>
810
- ```
811
-
812
- - `:showPublishButton="true"` — shows a publish button in the Page Builder toolbar.
813
- - `@handlePublishPageBuilder="handlePublish"` — emits after the builder auto-saves, so you always get the latest content.
814
-
815
- > **Tip:**
816
- > You can name your handler function anything you like. This pattern makes it easy to embed the builder in modals, dialogs, or overlays in any Vue app.
817
-
818
- ## Styling the Main Page Builder Container
819
-
820
- The Page Builder allows you to define and update global styles for the main wrapper (`#pagebuilder`) at any time. These settings control the overall appearance, including font family, text color, background color, and more. Whether you set them initially in your config or update them dynamically at runtime, your changes are instantly reflected across all sections.
821
-
822
- Use the `pageSettings` config to apply custom CSS classes and inline styles to the Page Builder’s main wrapper.
823
- The Page Builder renders all components wrapped inside a single parent container, `<div id="pagebuilder">`.
824
- You can pass global CSS `classes` and `style` to this wrapper by adding a `pageSettings` object in your config:
825
-
826
- ```ts
827
- const configPageBuilder = {
828
- // other config options...
829
-
830
- pageSettings: {
831
- classes: 'max-w-screen-lg mx-auto px-4 bg-white',
832
- style: {
833
- backgroundColor: 'red',
834
- border: '6px solid yellow',
835
- },
836
- },
837
- } as const
838
- ```
839
-
840
- You have full control over the page’s appearance at any time—instantly override or clear global styles for the entire page, ensuring a seamless and dynamic user experience.
841
-
842
- ## Download HTML File
843
-
844
- Export the entire page as a standalone HTML file. This includes all sections, content, and applied styles, making the file ready for use or integration elsewhere.
845
-
846
- - Images may not display correctly in the exported HTML unless their URLs are properly prefixed or fully qualified.
847
-
848
- To ensure images render properly after export, you must specify a URL prefix in your Page Builder configuration. This prefix will be prepended to all relative image URLs during the export process.
849
-
850
- ```ts
851
- const configPageBuilder = {
852
- imageUrlPrefix: 'https://your-domain.com/uploads/',
853
- // other config options...
854
- } as const
855
- ```
856
-
857
- ## Custom Components
858
-
859
- If you want to use your own components—whether custom-designed or tailored to your application's needs—you can inject them directly into the builder.
860
-
861
- ### Custom Media Library Component
862
-
863
- By default, the Page Builder does not include a built-in media library.
864
-
865
- This is intentional—without a custom media library, layout components that rely on images (such as Image Blocks, Hero Sections, and similar) are disabled by default. Only helper components like containers, headings, text, and buttons are available in this state.
866
-
867
- You may extend the Page Builder by adding your own media library.
868
- Inject your media library component easily to tailor the builder to your application's needs.
869
-
870
- 📚 **[Custom Components Setup Guide](./CUSTOM_COMPONENTS_SETUP.md)**
871
- Learn how to create and integrate your own components step by step.
872
-
873
- ### Integrate Unsplash Library
874
-
875
- Easily add Unsplash image search to your media library modal—just like in the demo!
876
- A code example is provided so you can copy-paste to get started.
877
-
878
- See the full step-by-step guide and working demo code here:
879
- 📚 **[Unsplash Integration Guide](./UNSPLASH_INTEGRATION.md)**
880
-
881
- ### Custom Layout Builder Component
882
-
883
- The Page Builder comes with a growing collection of built-in components, including both layout and helper components. These defaults are continuously improved and expanded.
884
-
885
- 📚 **[Custom Components Setup Guide](./CUSTOM_COMPONENTS_SETUP.md)**
886
- Learn how to create and integrate your own components step by step.
887
-
888
- ## Troubleshooting
889
-
890
- ### 1. Fonts or Icons Not Displaying
891
-
892
- If fonts or Material Icons are not displaying correctly, verify that:
893
-
894
- **CSS Import**: You are importing the CSS file:
895
-
896
- ```typescript
897
- // Import the Page Builder styles once in your application entry, not in individual components.
898
- import '@myissue/vue-website-page-builder/style.css'
899
- ```
900
-
901
- ### 2. Initialize Page Builder with `onMounted` Troubleshooting
902
-
903
- If you encounter issues with the component not fully mounting, you can initialize the Page Builder inside Vue's `onMounted` lifecycle hook. This ensures it runs safely after the component is mounted.
904
-
905
- ```vue
906
- <script setup>
907
- import { onMounted } from 'vue'
908
- import { PageBuilder, getPageBuilder } from '@myissue/vue-website-page-builder'
909
-
910
- const configPageBuilder = {
911
- updateOrCreate: {
912
- formType: 'create',
913
- formName: 'article',
914
- },
915
- }
916
-
917
- // Initialize the Page Builder with `onMounted`
918
- onMounted(async () => {
919
- const pageBuilderService = getPageBuilder()
920
- const result = await pageBuilderService.startBuilder(configPageBuilder)
921
- console.info('You may inspect this result for message, status, or error:', result)
922
- })
923
- </script>
924
- ```
925
-
926
- ## Page Builder Architecture
927
-
928
- The Page Builder is designed as a modular, state-driven editor for dynamic page content. Its architecture separates configuration, state management, and `DOM` interaction, ensuring flexibility and maintainability.
929
-
930
- ### How the Page Builder Works
146
+ ## How the Page Builder Works
931
147
 
932
148
  The Page Builder is designed to be easy to use and flexible for any web project. Here’s how it works behind the scenes:
933
149
 
@@ -944,6 +160,10 @@ The Page Builder is designed to be easy to use and flexible for any web project.
944
160
  **In short:**
945
161
  The Page Builder handles all the technical details of editing, saving, and loading pages, so your users can focus on creating great content—without worrying about losing their work or dealing with a complicated setup.
946
162
 
163
+ ## Page Builder Architecture
164
+
165
+ The Page Builder is designed as a modular, state-driven editor for dynamic page content. Its architecture separates configuration, state management, and `DOM` interaction, ensuring flexibility and maintainability.
166
+
947
167
  <img style="max-width: 100%;" src="./public/home/for_read_me/page_builder_architecture.svg" alt="Vue Website Page Builder - the editor" />
948
168
 
949
169
  ## Contributing
@@ -7637,7 +7637,7 @@ const IC = /* @__PURE__ */ AC("pageBuilderState", {
7637
7637
  }, G2 = { class: "pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg" }, K2 = { class: "pbx-overflow-x-auto" }, J2 = { class: "pbx-w-max" }, Y2 = { class: "pbx-bg-white pbx-divide-y pbx-divide-gray-200" }, Q2 = { class: "pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500" }, X2 = { class: "pbx-min-w-[30rem] pbx-w-max" }, Z2 = { key: 0 }, ek = { key: 1 }, tk = { key: 0 }, nk = { class: "pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500" }, ik = { class: "pbx-min-w-[30rem] pbx-w-max" }, ok = { class: "pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium" }, rk = { class: "pbx-mt-4 pbx-mb-4 pbx-py-8 pbx-px-2 pbx-border pbx-border-solid pbx-border-gray-600 pbx-rounded-xl" }, sk = { class: "pbx-mt-4 pbx-whitespace-pre-wrap pbx-text-white pbx-overflow-hidden pbx-bg-gray-900" }, lk = { class: "pbx-px-4 pbx-pb-8 pbx-pt-4 pbx-text-white pbx-text-xs pbx-break-all" }, ak = { class: "pbx-myPrimaryParagraph pbx-text-xs pbx-text-white" }, dk = {
7638
7638
  __name: "PageBuilderSettings",
7639
7639
  setup(n) {
7640
- const e = "3.4.87", t = fe, i = L(() => t.getPageBuilderConfig);
7640
+ const e = "3.4.90", t = fe, i = L(() => t.getPageBuilderConfig);
7641
7641
  return (o, r) => {
7642
7642
  var s, l, a, d, c, u, h, f, b, m, g, S, T, v, M, P;
7643
7643
  return y(), w("div", DC, [
@@ -15,7 +15,7 @@ Only state can be modified.`);l[0]="$state",fr=!1,o.set(a,l,o.state.value),fr=!0
15
15
  state: () => new MyClass()
16
16
  Found in store "${E.$id}".`),g&&a&&t.hydrate&&t.hydrate(E.$state,g),d=!0,c=!0,E}/*! #__NO_SIDE_EFFECTS__ */function a1(r,e,t){let o,n;const a=typeof e=="function";o=r,n=a?t:e;function l(s,p){const d=i.hasInjectionContext();if(s=(process.env.NODE_ENV==="test"&&Hr&&Hr._testing?null:s)||(d?i.inject(Jh,null):null),s&&Rr(s),process.env.NODE_ENV!=="production"&&!Hr)throw new Error(`[🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"?
17
17
  See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.
18
- This will fail in production.`);s=Hr,s._s.has(o)||(a?Mn(o,e,n,s):mf(o,n,s),process.env.NODE_ENV!=="production"&&(l._pinia=s));const c=s._s.get(o);if(process.env.NODE_ENV!=="production"&&p){const m="__hot:"+o,b=a?Mn(m,e,n,s,!0):mf(m,_e({},n),s,!0);p._hotUpdate(b),delete s.state.value[m],s._s.delete(m)}if(process.env.NODE_ENV!=="production"&&Ct){const m=i.getCurrentInstance();if(m&&m.proxy&&!p){const b=m.proxy,u="_pStores"in b?b._pStores:b._pStores={};u[o]=c}}return c}return l.$id=o,l}const bf=a1("pageBuilderState",{state:()=>({componentArrayAddMethod:null,localStorageItemName:null,showModalTipTap:!1,menuRight:!0,borderStyle:null,borderWidth:null,borderColor:null,borderRadiusGlobal:null,borderRadiusTopLeft:null,borderRadiusTopRight:null,borderRadiusBottomleft:null,borderRadiusBottomRight:null,elementContainsHyperlink:null,hyperlinkAbility:null,hyperlinkInput:null,hyperlinkMessage:null,hyperlinkError:null,hyberlinkEnable:!1,openHyperlinkinkInNewTab:null,opacity:null,backgroundOpacity:null,textAreaVueModel:null,currentClasses:[],currentStyles:{},fontVerticalPadding:null,fontHorizontalPadding:null,fontVerticalMargin:null,fontHorizontalMargin:null,fontStyle:null,fontFamily:null,fontWeight:null,fontBase:null,fontDesktop:null,fontTablet:null,fontMobile:null,backgroundColor:null,textColor:null,element:null,component:null,components:[],basePrimaryImage:null,configPageBuilder:null,showModalHTMLEditor:!1,toggleGlobalHtmlMode:!1,applyImageToSelection:{src:""},currentPreviewImage:null,builderStarted:!1,isLoadingGlobal:!0,isSaving:!1,hasLocalDraftForUpdate:!1,isResumeEditing:!1,isRestoring:!1,currentLanguage:null,historyIndex:-1,historyLength:0,addComponentAddIndex:null}),getters:{getComponentArrayAddMethod(r){return r.componentArrayAddMethod},getLocalStorageItemName(r){return r.localStorageItemName},getShowModalTipTap(r){return r.showModalTipTap},getMenuRight(r){return r.menuRight},getBorderStyle(r){return r.borderStyle},getBorderWidth(r){return r.borderWidth},getBorderColor(r){return r.borderColor},getBorderRadiusGlobal(r){return r.borderRadiusGlobal},getBorderRadiusTopLeft(r){return r.borderRadiusTopLeft},getBorderRadiusTopRight(r){return r.borderRadiusTopRight},getBorderRadiusBottomleft(r){return r.borderRadiusBottomleft},getBorderRadiusBottomRight(r){return r.borderRadiusBottomRight},getElementContainsHyperlink(r){return r.elementContainsHyperlink},getHyperlinkAbility(r){return r.hyperlinkAbility},getHyperlinkInput(r){return r.hyperlinkInput},getHyperlinkMessage(r){return r.hyperlinkMessage},getHyperlinkError(r){return r.hyperlinkError},getHyberlinkEnable(r){return r.hyberlinkEnable},getOpenHyperlinkInNewTab(r){return r.openHyperlinkinkInNewTab},getOpacity(r){return r.opacity},getBackgroundOpacity(r){return r.backgroundOpacity},getTextAreaVueModel(r){return r.textAreaVueModel},getCurrentClasses(r){return r.currentClasses},getCurrentStyles(r){return r.currentStyles},getFontStyle(r){return r.fontStyle},getFontVerticalPadding(r){return r.fontVerticalPadding},getFontHorizontalPadding(r){return r.fontHorizontalPadding},getFontVerticalMargin(r){return r.fontVerticalMargin},getFontHorizontalMargin(r){return r.fontHorizontalMargin},getFontFamily(r){return r.fontFamily},getFontWeight(r){return r.fontWeight},getFontBase(r){return r.fontBase},getFontDesktop(r){return r.fontDesktop},getFontTablet(r){return r.fontTablet},getFontMobile(r){return r.fontMobile},getBackgroundColor(r){return r.backgroundColor},getTextColor(r){return r.textColor},getElement(r){return r.element},getComponent(r){return r.component},getComponents(r){return r.components},getBasePrimaryImage(r){return r.basePrimaryImage},getPageBuilderConfig(r){return r.configPageBuilder},getShowModalHTMLEditor(r){return r.showModalHTMLEditor},getToggleGlobalHtmlMode(r){return r.toggleGlobalHtmlMode},getApplyImageToSelection(r){return r.applyImageToSelection},getCurrentPreviewImage(r){return r.currentPreviewImage},getBuilderStarted:r=>r.builderStarted,getIsLoadingGlobal:r=>r.isLoadingGlobal,getIsSaving:r=>r.isSaving,getHasLocalDraftForUpdate:r=>r.hasLocalDraftForUpdate,getIsLoadingResumeEditing:r=>r.isResumeEditing,getIsRestoring:r=>r.isRestoring,getCurrentLanguage:r=>r.currentLanguage,getHistoryIndex:r=>r.historyIndex,getHistoryLength:r=>r.historyLength,getAddComponentAddIndex:r=>r.addComponentAddIndex},actions:{setComponentArrayAddMethod(r){this.componentArrayAddMethod=r},setLocalStorageItemName(r){this.localStorageItemName=r},setShowModalTipTap(r){this.showModalTipTap=r},setMenuRight(r){this.menuRight=r},setBorderStyle(r){this.borderStyle=r},setBorderWidth(r){this.borderWidth=r},setBorderColor(r){this.borderColor=r},setBorderRadiusGlobal(r){this.borderRadiusGlobal=r},setBorderRadiusTopLeft(r){this.borderRadiusTopLeft=r},setBorderRadiusTopRight(r){this.borderRadiusTopRight=r},setBorderRadiusBottomleft(r){this.borderRadiusBottomleft=r},setBorderRadiusBottomRight(r){this.borderRadiusBottomRight=r},setElementContainsHyperlink(r){this.elementContainsHyperlink=r},setHyperlinkAbility(r){this.hyperlinkAbility=r},setHyperlinkInput(r){this.hyperlinkInput=r},setHyperlinkMessage(r){this.hyperlinkMessage=r},setHyperlinkError(r){this.hyperlinkError=r},setHyberlinkEnable(r){this.hyberlinkEnable=r},setOpenHyperlinkInNewTab(r){this.openHyperlinkinkInNewTab=r},setOpacity(r){this.opacity=r},setBackgroundOpacity(r){this.backgroundOpacity=r},setTextAreaVueModel(r){this.textAreaVueModel=r},setClass(r){this.currentClasses=[...this.currentClasses,r]},removeClass(r){this.currentClasses=this.currentClasses.filter(e=>e!==r)},setCurrentClasses(r){this.currentClasses=Array.from(r)},setCurrentStyles(r){this.currentStyles=r},setFontVerticalPadding(r){this.fontVerticalPadding=r},setFontHorizontalPadding(r){this.fontHorizontalPadding=r},setFontVerticalMargin(r){this.fontVerticalMargin=r},setFontHorizontalMargin(r){this.fontHorizontalMargin=r},setFontStyle(r){this.fontStyle=r},setFontFamily(r){this.fontFamily=r},setFontWeight(r){this.fontWeight=r},setFontBase(r){this.fontBase=r},setFontDesktop(r){this.fontDesktop=r},setFontTablet(r){this.fontTablet=r},setFontMobile(r){this.fontMobile=r},setBackgroundColor(r){this.backgroundColor=r},setTextColor(r){this.textColor=r},setElement(r){this.element=null,i.nextTick(()=>{this.element=r})},setComponent(r){if(!r){this.element=null,this.component=null;return}this.component=null,i.nextTick(()=>{this.component=r})},setComponents(r){this.components=[],i.nextTick(()=>{this.components=r||[]})},setPushComponents(r){const e=r.componentArrayAddMethod??"push";e==="push"?this.components.push(r.component):e==="unshift"&&this.components.unshift(r.component)},setBasePrimaryImage(r){this.element&&(this.element.src=r??void 0),this.basePrimaryImage=r},setCurrentLayoutPreview(r){localStorage.setItem("preview",r)},setPageBuilderConfig(r){this.configPageBuilder=r},setShowModalHTMLEditor(r){this.showModalHTMLEditor=r},setToggleGlobalHtmlMode(r){this.toggleGlobalHtmlMode=r},setApplyImageToSelection(r){this.applyImageToSelection=r},setCurrentPreviewImage(r){this.currentPreviewImage=r},setBuilderStarted(r){this.builderStarted=r},setIsLoadingGlobal(r){this.isLoadingGlobal=r},setIsSaving(r){this.isSaving=r},setHasLocalDraftForUpdate(r){this.hasLocalDraftForUpdate=r},setIsLoadingResumeEditing(r){this.isResumeEditing=r},setIsRestoring(r){this.isRestoring=r},setCurrentLanguage(r){this.currentLanguage=r},setHistoryIndex(r){this.historyIndex=r},setHistoryLength(r){this.historyLength=r},setAddComponentAddIndex(r){this.addComponentAddIndex=r}}}),Nn=af(),Q=bf(Nn),l1={class:"pbx-w-full pbx-inset-x-0 pbx-h-[90vh] pbx-bg-white pbx-overflow-x-scroll lg:pbx-pt-2 pbx-pt-2"},s1={class:"pbx-mt-4 pbx-mb-4 pbx-py-8 pbx-px-2 pbx-border pbx-border-solid pbx-border-gray-600 pbx-rounded-xl"},p1={class:"pbx-px-2"},d1={class:"pbx-mt-8"},c1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},m1={class:"pbx-overflow-x-auto"},b1={class:"pbx-min-w-full"},u1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},g1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},x1={class:"pbx-min-w-[30rem] pbx-w-max"},h1={class:"pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium pbx-bg-blue-100 pbx-text-blue-800"},f1={key:0,class:"pbx-mt-4"},y1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},w1={class:"pbx-overflow-x-auto"},v1={class:"pbx-min-w-full"},S1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},k1={key:0},C1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},E1={class:"pbx-min-w-[30rem] pbx-w-max"},T1={key:1},B1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},M1={class:"pbx-min-w-[30rem] pbx-w-max"},N1={key:1,class:"pbx-mt-8"},P1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},L1={class:"pbx-overflow-x-auto"},A1={class:"pbx-min-w-full"},D1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},V1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},I1={class:"pbx-min-w-[30rem] pbx-w-max"},z1={key:0,class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},O1={class:"pbx-min-w-[30rem] pbx-w-max"},_1={class:"pbx-flex pbx-items-center pbx-space-x-3"},H1=["src"],R1={key:0,class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},F1={class:"pbx-min-w-[30rem] pbx-w-max"},j1={key:2,class:"pbx-mt-8"},q1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},W1={class:"pbx-overflow-x-auto"},U1={class:"pbx-min-w-full"},G1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},K1={key:0},J1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},Y1={class:"pbx-min-w-[30rem] pbx-w-max"},Q1={key:1},X1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},Z1={class:"pbx-min-w-[30rem] pbx-w-max"},$1={key:2},e5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},t5={class:"pbx-min-w-[30rem] pbx-w-max"},r5={key:3},o5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},i5={class:"pbx-min-w-[30rem] pbx-w-max"},n5={key:3,class:"pbx-mt-8"},a5={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},l5={class:"pbx-overflow-x-auto"},s5={class:"pbx-min-w-full"},p5={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},d5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},c5={class:"pbx-min-w-[30rem] pbx-w-max"},m5={class:"pbx-flex pbx-items-center pbx-space-x-3"},b5=["src"],u5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},g5={class:"pbx-min-w-[30rem] pbx-w-max"},x5={class:"pbx-flex pbx-items-center pbx-space-x-3"},h5={class:"pbx-pr-6"},f5={class:"pbx-flex pbx-items-center pbx-space-x-3"},y5={class:"pbx-whitespace-nowrap"},w5={key:4,class:"pbx-mt-8"},v5={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},S5={class:"pbx-overflow-x-auto"},k5={class:"pbx-w-max"},C5={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},E5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},T5={class:"pbx-min-w-[30rem] pbx-w-max"},B5={key:0},M5={key:1},N5={key:0},P5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},L5={class:"pbx-min-w-[30rem] pbx-w-max"},A5={class:"pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium"},D5={class:"pbx-mt-4 pbx-mb-4 pbx-py-8 pbx-px-2 pbx-border pbx-border-solid pbx-border-gray-600 pbx-rounded-xl"},V5={class:"pbx-mt-4 pbx-whitespace-pre-wrap pbx-text-white pbx-overflow-hidden pbx-bg-gray-900"},I5={class:"pbx-px-4 pbx-pb-8 pbx-pt-4 pbx-text-white pbx-text-xs pbx-break-all"},z5={class:"pbx-myPrimaryParagraph pbx-text-xs pbx-text-white"},O5={__name:"PageBuilderSettings",setup(r){const e="3.4.87",t=Q,o=i.computed(()=>t.getPageBuilderConfig);return(n,a)=>{var l,s,p,d,c,m,b,u,g,x,h,y,w,f,v,S;return i.openBlock(),i.createElementBlock("div",l1,[i.createElementVNode("div",s1,[i.createElementVNode("div",null,[a[26]||(a[26]=i.createElementVNode("div",{class:"pbx-flex pbx-items-left pbx-flex-col pbx-gap-1"},[i.createElementVNode("h3",{class:"pbx-myQuaternaryHeader"},"Configuration Overview"),i.createElementVNode("p",{class:"pbx-myPrimaryParagraph pbx-text-xs"}," A summary of current user preferences, application settings, and system metadata including UI theme, language, saved components, and logo configuration. ")],-1)),i.createElementVNode("div",p1,[i.createElementVNode("div",d1,[a[2]||(a[2]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Version Information",-1)),i.createElementVNode("div",c1,[i.createElementVNode("div",m1,[i.createElementVNode("table",b1,[a[1]||(a[1]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," App "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Version ")])],-1)),i.createElementVNode("tbody",u1,[i.createElementVNode("tr",null,[a[0]||(a[0]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Page Builder")],-1)),i.createElementVNode("td",g1,[i.createElementVNode("div",x1,[i.createElementVNode("span",h1,i.toDisplayString(i.unref(e)),1)])])])])])])])]),(l=o.value)!=null&&l.resourceData&&!i.unref(kt)(o.value.resourceData)?(i.openBlock(),i.createElementBlock("div",f1,[a[6]||(a[6]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Resource Data",-1)),i.createElementVNode("div",y1,[i.createElementVNode("div",w1,[i.createElementVNode("table",v1,[a[5]||(a[5]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Property "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",S1,[(p=(s=o.value)==null?void 0:s.resourceData)!=null&&p.title?(i.openBlock(),i.createElementBlock("tr",k1,[a[3]||(a[3]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Title")],-1)),i.createElementVNode("td",C1,[i.createElementVNode("div",E1,i.toDisplayString(o.value.resourceData.title),1)])])):i.createCommentVNode("",!0),(c=(d=o.value)==null?void 0:d.resourceData)!=null&&c.id?(i.openBlock(),i.createElementBlock("tr",T1,[a[4]||(a[4]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"ID")],-1)),i.createElementVNode("td",B1,[i.createElementVNode("div",M1,i.toDisplayString(o.value.resourceData.id),1)])])):i.createCommentVNode("",!0)])])])])])):i.createCommentVNode("",!0),(m=o.value)!=null&&m.userForPageBuilder&&!i.unref(kt)(o.value.userForPageBuilder)?(i.openBlock(),i.createElementBlock("div",N1,[a[11]||(a[11]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"User Information",-1)),i.createElementVNode("div",P1,[i.createElementVNode("div",L1,[i.createElementVNode("table",A1,[a[10]||(a[10]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Property "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",D1,[i.createElementVNode("tr",null,[a[7]||(a[7]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"User Name")],-1)),i.createElementVNode("td",V1,[i.createElementVNode("div",I1,i.toDisplayString(o.value.userForPageBuilder.name),1)])]),i.createElementVNode("tr",null,[a[8]||(a[8]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Image")],-1)),o.value.userForPageBuilder.image&&typeof o.value.userForPageBuilder.image=="string"&&o.value.userForPageBuilder.image.length>2?(i.openBlock(),i.createElementBlock("td",z1,[i.createElementVNode("div",O1,[i.createElementVNode("div",_1,[i.createElementVNode("img",{class:"pbx-block pbx-inset-0 pbx-object-top pbx-h-10 pbx-min-h-10 pbx-max-h-10 pbx-w-10 pbx-min-w-10 pbx-max-w-10 pbx-object-cover pbx-rounded-full",src:o.value.userForPageBuilder.image,alt:"image"},null,8,H1)])])])):i.createCommentVNode("",!0)]),i.createElementVNode("tr",null,[a[9]||(a[9]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Image URL")],-1)),o.value.userForPageBuilder.image&&typeof o.value.userForPageBuilder.image=="string"&&o.value.userForPageBuilder.image.length>2?(i.openBlock(),i.createElementBlock("td",R1,[i.createElementVNode("div",F1,i.toDisplayString(o.value.userForPageBuilder.image),1)])):i.createCommentVNode("",!0)])])])])])])):i.createCommentVNode("",!0),(b=o.value)!=null&&b.userSettings&&!i.unref(kt)(o.value.userSettings)?(i.openBlock(),i.createElementBlock("div",j1,[a[17]||(a[17]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"User Settings",-1)),i.createElementVNode("div",q1,[i.createElementVNode("div",W1,[i.createElementVNode("table",U1,[a[16]||(a[16]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Setting "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",G1,[(g=(u=o.value)==null?void 0:u.userSettings)!=null&&g.theme?(i.openBlock(),i.createElementBlock("tr",K1,[a[12]||(a[12]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Theme")],-1)),i.createElementVNode("td",J1,[i.createElementVNode("div",Y1,i.toDisplayString(o.value.userSettings.theme),1)])])):i.createCommentVNode("",!0),(h=(x=o.value)==null?void 0:x.userSettings)!=null&&h.language?(i.openBlock(),i.createElementBlock("tr",Q1,[a[13]||(a[13]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Language")],-1)),i.createElementVNode("td",X1,[i.createElementVNode("div",Z1,i.toDisplayString(o.value.userSettings.language),1)])])):i.createCommentVNode("",!0),((w=(y=o.value)==null?void 0:y.userSettings)==null?void 0:w.autoSave)!==void 0?(i.openBlock(),i.createElementBlock("tr",$1,[a[14]||(a[14]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Auto Save")],-1)),i.createElementVNode("td",e5,[i.createElementVNode("div",t5,[i.createElementVNode("span",{class:i.normalizeClass(["pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium",o.value.userSettings.autoSave?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},i.toDisplayString(o.value.userSettings.autoSave?"Enabled":"Disabled"),3)])])])):i.createCommentVNode("",!0),((v=(f=o.value)==null?void 0:f.userSettings)==null?void 0:v.notifications)!==void 0?(i.openBlock(),i.createElementBlock("tr",r5,[a[15]||(a[15]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Notifications")],-1)),i.createElementVNode("td",o5,[i.createElementVNode("div",i5,[i.createElementVNode("span",{class:i.normalizeClass(["pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium",o.value.userSettings.notifications?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},i.toDisplayString(o.value.userSettings.notifications?"Enabled":"Disabled"),3)])])])):i.createCommentVNode("",!0)])])])])])):i.createCommentVNode("",!0),o.value&&o.value.pageBuilderLogo&&!i.unref(kt)(o.value.pageBuilderLogo)?(i.openBlock(),i.createElementBlock("div",n5,[a[21]||(a[21]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Logo Configuration",-1)),i.createElementVNode("div",a5,[i.createElementVNode("div",l5,[i.createElementVNode("table",s5,[a[20]||(a[20]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Property "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",p5,[i.createElementVNode("tr",null,[a[18]||(a[18]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Logo")],-1)),i.createElementVNode("td",d5,[i.createElementVNode("div",c5,[i.createElementVNode("div",m5,[i.createElementVNode("img",{class:"pbx-h-4",src:o.value.pageBuilderLogo.src,alt:"Logo"},null,8,b5)])])])]),i.createElementVNode("tr",null,[a[19]||(a[19]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Logo URL")],-1)),i.createElementVNode("td",u5,[i.createElementVNode("div",g5,[i.createElementVNode("div",x5,[i.createElementVNode("div",h5,[i.createElementVNode("div",f5,[i.createElementVNode("span",y5,i.toDisplayString(o.value.pageBuilderLogo.src),1)])])])])])])])])])])])):i.createCommentVNode("",!0),(S=o.value)!=null&&S.updateOrCreate&&!i.unref(kt)(o.value.updateOrCreate)?(i.openBlock(),i.createElementBlock("div",w5,[a[25]||(a[25]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Form Type",-1)),i.createElementVNode("div",v5,[i.createElementVNode("div",S5,[i.createElementVNode("table",k5,[a[24]||(a[24]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Mode "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Description ")])],-1)),i.createElementVNode("tbody",C5,[i.createElementVNode("tr",null,[a[22]||(a[22]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Form Type")],-1)),i.createElementVNode("td",E5,[i.createElementVNode("div",T5,[i.createElementVNode("span",{class:i.normalizeClass(["pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium",o.value.updateOrCreate==="create"?"bg-green-100 text-green-800":"bg-blue-100 text-blue-800"])},[o.value&&o.value.updateOrCreate.formType==="create"?(i.openBlock(),i.createElementBlock("span",B5,i.toDisplayString(o.value.updateOrCreate.formType),1)):i.createCommentVNode("",!0),o.value&&o.value.updateOrCreate.formType==="update"?(i.openBlock(),i.createElementBlock("span",M5,i.toDisplayString(o.value.updateOrCreate.formType),1)):i.createCommentVNode("",!0)],2)])])]),o.value.updateOrCreate.formName&&o.value.updateOrCreate.formName.length>0?(i.openBlock(),i.createElementBlock("tr",N5,[a[23]||(a[23]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Form Name")],-1)),i.createElementVNode("td",P5,[i.createElementVNode("div",L5,[i.createElementVNode("span",A5,i.toDisplayString(o.value.updateOrCreate.formName),1)])])])):i.createCommentVNode("",!0)])])])])])):i.createCommentVNode("",!0)])])]),i.createElementVNode("div",D5,[a[28]||(a[28]=i.createElementVNode("div",{class:"pbx-flex pbx-items-left pbx-flex-col pbx-gap-1"},[i.createElementVNode("h3",{class:"pbx-myQuaternaryHeader"},"Complete Configuration Overview"),i.createElementVNode("p",{class:"pbx-myPrimaryParagraph pbx-text-xs"}," Complete configuration object currently used by the Page Builder. Includes user information, branding settings, and other context-specific data needed for rendering and managing the builder environment. ")],-1)),i.createElementVNode("div",V5,[a[27]||(a[27]=i.createElementVNode("div",{class:"pbx-flex bg-gray-800/40 pbx-ring-1 ring-white/5"},[i.createElementVNode("div",{class:"pbx-mb-px pbx-flex pbx-text-xs pbx-font-medium pbx-text-myPrimaryMediumGrayColor"},[i.createElementVNode("div",{class:"pbx-px-4 pbx-py-4 pbx-text-white"},"Configuration")])],-1)),i.createElementVNode("div",I5,[i.createElementVNode("p",z5," config: "+i.toDisplayString(JSON.stringify(o.value,null,4)),1)])])])])}}},_5={key:0,class:"pbx-fixed pbx-inset-0 pbx-z-50"},H5={class:"pbx-flex pbx-gap-2 pbx-justify-between pbx-items-center pbx-py-2 pbx-px-2 pbx-mb-2 pbx-border-b pbx-border-gray-200"},R5={class:"pbx-myQuaternaryHeader pbx-my-0 pbx-py-0 pbx-text-black"},F5={class:"pbx-pt-4 pbx-px-2"},j5=i.defineComponent({__name:"FloatingSidePanel",props:{title:{type:String,required:!1,default:null},showSidebarPanel:{type:Boolean,default:!1},position:{type:String,required:!0,default:"right",validator(r){const t=["left","right"].includes(r);return t||console.warn(`Invalid prop: position must be 'left' or 'right', got '${r}'`),t}}},emits:["closeSidebarPanel"],setup(r,{emit:e}){const t=e,o=()=>{t("closeSidebarPanel")};return(n,a)=>(i.openBlock(),i.createBlock(i.Transition,{name:"popup-fade"},{default:i.withCtx(()=>[r.showSidebarPanel?(i.openBlock(),i.createElementBlock("div",_5,[i.createElementVNode("div",{class:"pbx-fixed pbx-inset-0 pbx-bg-black pbx-opacity-20 pbx-z-40",onClick:o}),i.createElementVNode("div",{class:i.normalizeClass(["pbx-fixed pbx-top-0 pbx-rounded-3xl pbx-py-2 pbx-px-2 pbx-border pbx-border-gray-200 pbx-max-h-[80vh] lg:pbx-min-h-[98%] pbx-min-h-[80vh] lg:pbx-min-w-96 lg:pbx-w-96 pbx-w-[96%] pbx-overflow-y-auto pbx-z-50 pbx-bg-white lg:pbx-mt-2 pbx-mt-2",[r.position==="left"?"pbx-left-0 pbx-ml-[1%]":"",r.position==="right"?"pbx-right-0 pbx-mr-[1%]":""]]),onClick:a[0]||(a[0]=i.withModifiers(()=>{},["stop"]))},[i.createElementVNode("div",H5,[i.createElementVNode("span",R5,i.toDisplayString(r.title),1),i.createElementVNode("span",{onClick:o},[...a[1]||(a[1]=[i.createElementVNode("div",{class:"pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor hover:pbx-text-white focus-visible:pbx-ring-0 pbx-text-black"},[i.createElementVNode("span",{class:"material-symbols-outlined"}," close ")],-1)])])]),i.createElementVNode("div",F5,[i.renderSlot(n.$slots,"default")])],2)])):i.createCommentVNode("",!0)]),_:3}))}}),q5={class:"pbx-flex pbx-flex-col pbx-items-center pbx-justify-center pbx-myPrimaryGap"},W5={class:"pbx-flex pbx-gap-2 pbx-items-center pbx-justify-center pbx-relative"},U5={class:"pbx-overflow-y-auto"},G5={class:"pbx-flex pbx-items-center pbx-justify-center pbx-gap-2"},K5={class:"pbx-lg:pbx-text-base pbx-text-sm pbx-font-semibold pbx-text-center pbx-min-h-14 pbx-flex pbx-justify-center pbx-items-center"},J5={class:"pbx-bg-gray-100 pbx-rounded-full pbx-w-32 pbx-h-32 pbx-flex pbx-items-center pbx-justify-center"},Y5={class:"pbx-text-center"},Q5={class:"pbx-lg:pbx-text-7xl pbx-text-5xl"},X5={key:0,class:"pbx-w-full"},Z5={class:"pbx-text-xl pbx-font-semibold pbx-mb-4 pbx-text-center"},$5={class:"pbx-space-y-4"},eS={class:"pbx-flex-shrink-0 pbx-mt-1"},tS={key:0,class:"pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-myPrimaryLinkColor pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor focus-visible:pbx-ring-0 pbx-text-white hover:pbx-text-white"},rS={key:1,class:"pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-myPrimaryErrorColor pbx-aspect-square hover:pbx-bg-myPrimaryErrorColor hover:pbx-text-white pbx-text-white"},oS={class:"pbx-flex-1"},iS={class:"pbx-text-sm pbx-text-gray-600"},nS={key:1,class:"pbx-text-gray-500 pbx-text-center"},aS={class:"pbx-flex pbx-gap-2 pbx-items-center pbx-justify-center"},lS={__name:"ComponentTopMenu",setup(r){const{translate:e}=le(),t=ae(),o=i.ref(!1),n=i.ref(!1),a=i.ref(""),l=i.ref(1),s=i.ref(""),p=i.ref(""),d=i.ref(""),c=i.ref(null),m=i.ref(null),b=i.ref(null),u=i.ref(null),g=i.ref(null),x=function(){n.value=!0,a.value="delete",l.value=2,s.value=e("Remove all Components"),p.value=e("Are you sure you want to remove all Components?"),d.value=e("Close"),c.value=null,m.value=e("Delete"),b.value=function(){n.value=!1},u.value=function(){},g.value=async function(){o.value=!0,await t.clearHtmlSelection(),await t.handleFormSubmission(),await ne(500),n.value=!1,o.value=!1}},h=i.ref(!1),y=function(){h.value=!1},w=function(){h.value=!0},f=i.ref(null),v=i.ref(!1),S=async function(){v.value=!v.value,v.value&&(f.value=await t.analyzeSEO())},L=function(){v.value=!1};return(E,T)=>(i.openBlock(),i.createElementBlock("div",null,[i.createElementVNode("div",q5,[i.createElementVNode("div",W5,[i.createElementVNode("div",{onClick:S,"pbx-bg-myPrimaryLinkColor":"",class:i.normalizeClass(["pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor focus-visible:pbx-ring-0 pbx-text-black hover:pbx-text-white",{"pbx-bg-myPrimaryLinkColor pbx-text-white":v.value}])},[...T[1]||(T[1]=[i.createElementVNode("div",{class:"pbx-font-semibold pbx-text-sm"},"SEO",-1)])],2),i.createVNode(j5,{title:"SEO",showSidebarPanel:v.value,onCloseSidebarPanel:L,position:"left"},{default:i.withCtx(()=>[i.createElementVNode("div",U5,[i.createElementVNode("div",null,[i.createElementVNode("div",G5,[i.createElementVNode("div",K5,[f.value?(i.openBlock(),i.createElementBlock("div",{key:0,class:"pbx-relative pbx-my-4 pbx-rounded-full pbx-flex pbx-items-center pbx-justify-center pbx-w-36 pbx-h-36",style:i.normalizeStyle({background:`conic-gradient(${f.value.score<50?"#ef4444":"#50C878"} ${f.value.score}%, #e5e7eb 0)`})},[i.createElementVNode("div",J5,[i.createElementVNode("div",Y5,[i.createElementVNode("span",Q5,i.toDisplayString(f.value.score),1),T[2]||(T[2]=i.createElementVNode("span",{class:"pbx-text-xl"},"%",-1))])])],4)):i.createCommentVNode("",!0)])]),f.value&&f.value.checks&&f.value.checks.length?(i.openBlock(),i.createElementBlock("div",X5,[i.createElementVNode("h3",Z5,i.toDisplayString(i.unref(e)("SEO Check Results")),1),i.createElementVNode("ul",$5,[(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(f.value.checks,(D,M)=>(i.openBlock(),i.createElementBlock("li",{key:M,class:i.normalizeClass(["pbx-flex pbx-items-start pbx-gap-4 pbx-p-4 pbx-bg-white pbx-rounded-lg pbx-border-solid pbx-border-2",D.passed?"pbx-border-emerald-500":"pbx-border-red-600"])},[i.createElementVNode("div",eS,[D.passed?(i.openBlock(),i.createElementBlock("div",tS,[...T[3]||(T[3]=[i.createElementVNode("span",{class:"material-symbols-outlined"}," check ",-1)])])):i.createCommentVNode("",!0),D.passed?i.createCommentVNode("",!0):(i.openBlock(),i.createElementBlock("div",rS,[...T[4]||(T[4]=[i.createElementVNode("span",{class:"material-symbols-outlined"}," check_indeterminate_small ",-1)])]))]),i.createElementVNode("div",oS,[i.createElementVNode("p",{class:i.normalizeClass(["pbx-text-lg pbx-font-medium",D.passed?"pbx-text-green-700":"pbx-text-red-700"])},i.toDisplayString(D.check),3),i.createElementVNode("p",iS,i.toDisplayString(D.details),1)])],2))),128))])])):(i.openBlock(),i.createElementBlock("div",nS,"No SEO checks available."))])])]),_:1},8,["showSidebarPanel"])]),i.createElementVNode("div",{class:"pbx-flex pbx-gap-2 pbx-items-center pbx-justify-center"},[i.createElementVNode("div",{onClick:x,class:"pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryErrorColor hover:pbx-text-white pbx-text-myPrimaryErrorColor"},[...T[5]||(T[5]=[i.createElementVNode("span",{class:"material-symbols-outlined"}," delete_forever ",-1)])])]),T[7]||(T[7]=i.createElementVNode("div",{class:"pbx-w-full pbx-border-t pbx-border-solid pbx-border-gray-200"},null,-1)),i.createElementVNode("div",aS,[i.createElementVNode("div",{onClick:T[0]||(T[0]=async()=>{await i.unref(t).clearHtmlSelection(),w()}),class:"pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor focus-visible:pbx-ring-0 pbx-text-black hover:pbx-text-white"},[...T[6]||(T[6]=[i.createElementVNode("svg",{fill:"currentColor",height:"22",viewBox:"0 0 22 22",width:"22",xmlns:"http://www.w3.org/2000/svg",class:"css-1a6490m"},[i.createElementVNode("path",{"clip-rule":"evenodd",d:"M15.192 5.393A6.965 6.965 0 0012 4.071V2h-2v2.07a6.964 6.964 0 00-3.192 1.323L5.344 3.93 3.93 5.343l1.464 1.464A6.964 6.964 0 004.07 10H2v2h2.07a6.964 6.964 0 001.324 3.193L3.93 16.657l1.414 1.414 1.464-1.464A6.964 6.964 0 0010 17.929V20h2v-2.07a6.964 6.964 0 003.192-1.323l1.465 1.464 1.414-1.414-1.465-1.465A6.964 6.964 0 0017.93 12H20v-2h-2.07a6.963 6.963 0 00-1.324-3.193l1.464-1.464-1.414-1.414-1.464 1.464zM11 16a5 5 0 100-10 5 5 0 000 10z","fill-rule":"evenodd"})],-1)])])])]),i.createVNode(vt,{showDynamicModalBuilder:n.value,type:a.value,gridColumnAmount:l.value,title:s.value,description:p.value,isLoading:o.value,firstButtonText:d.value,secondButtonText:c.value,thirdButtonText:m.value,onFirstModalButtonFunctionDynamicModalBuilder:b.value,onSecondModalButtonFunctionDynamicModalBuilder:u.value,onThirdModalButtonFunctionDynamicModalBuilder:g.value},{default:i.withCtx(()=>[...T[8]||(T[8]=[i.createElementVNode("header",null,null,-1),i.createElementVNode("main",null,null,-1)])]),_:1},8,["showDynamicModalBuilder","type","gridColumnAmount","title","description","isLoading","firstButtonText","secondButtonText","thirdButtonText","onFirstModalButtonFunctionDynamicModalBuilder","onSecondModalButtonFunctionDynamicModalBuilder","onThirdModalButtonFunctionDynamicModalBuilder"]),i.createVNode(at,{maxWidth:"5xl",showModalBuilder:h.value,title:"Main Settings",onCloseMainModalBuilder:y,minHeight:"",maxHeight:""},{default:i.withCtx(()=>[i.createVNode(O5)]),_:1},8,["showModalBuilder"])]))}};function ye(r){this.content=r}ye.prototype={constructor:ye,find:function(r){for(var e=0;e<this.content.length;e+=2)if(this.content[e]===r)return e;return-1},get:function(r){var e=this.find(r);return e==-1?void 0:this.content[e+1]},update:function(r,e,t){var o=t&&t!=r?this.remove(t):this,n=o.find(r),a=o.content.slice();return n==-1?a.push(t||r,e):(a[n+1]=e,t&&(a[n]=t)),new ye(a)},remove:function(r){var e=this.find(r);if(e==-1)return this;var t=this.content.slice();return t.splice(e,2),new ye(t)},addToStart:function(r,e){return new ye([r,e].concat(this.remove(r).content))},addToEnd:function(r,e){var t=this.remove(r).content.slice();return t.push(r,e),new ye(t)},addBefore:function(r,e,t){var o=this.remove(e),n=o.content.slice(),a=o.find(r);return n.splice(a==-1?n.length:a,0,e,t),new ye(n)},forEach:function(r){for(var e=0;e<this.content.length;e+=2)r(this.content[e],this.content[e+1])},prepend:function(r){return r=ye.from(r),r.size?new ye(r.content.concat(this.subtract(r).content)):this},append:function(r){return r=ye.from(r),r.size?new ye(this.subtract(r).content.concat(r.content)):this},subtract:function(r){var e=this;r=ye.from(r);for(var t=0;t<r.content.length;t+=2)e=e.remove(r.content[t]);return e},toObject:function(){var r={};return this.forEach(function(e,t){r[e]=t}),r},get size(){return this.content.length>>1}},ye.from=function(r){if(r instanceof ye)return r;var e=[];if(r)for(var t in r)e.push(t,r[t]);return new ye(e)};function uf(r,e,t){for(let o=0;;o++){if(o==r.childCount||o==e.childCount)return r.childCount==e.childCount?null:t;let n=r.child(o),a=e.child(o);if(n==a){t+=n.nodeSize;continue}if(!n.sameMarkup(a))return t;if(n.isText&&n.text!=a.text){for(let l=0;n.text[l]==a.text[l];l++)t++;return t}if(n.content.size||a.content.size){let l=uf(n.content,a.content,t+1);if(l!=null)return l}t+=n.nodeSize}}function gf(r,e,t,o){for(let n=r.childCount,a=e.childCount;;){if(n==0||a==0)return n==a?null:{a:t,b:o};let l=r.child(--n),s=e.child(--a),p=l.nodeSize;if(l==s){t-=p,o-=p;continue}if(!l.sameMarkup(s))return{a:t,b:o};if(l.isText&&l.text!=s.text){let d=0,c=Math.min(l.text.length,s.text.length);for(;d<c&&l.text[l.text.length-d-1]==s.text[s.text.length-d-1];)d++,t--,o--;return{a:t,b:o}}if(l.content.size||s.content.size){let d=gf(l.content,s.content,t-1,o-1);if(d)return d}t-=p,o-=p}}class C{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let o=0;o<e.length;o++)this.size+=e[o].nodeSize}nodesBetween(e,t,o,n=0,a){for(let l=0,s=0;s<t;l++){let p=this.content[l],d=s+p.nodeSize;if(d>e&&o(p,n+s,a||null,l)!==!1&&p.content.size){let c=s+1;p.nodesBetween(Math.max(0,e-c),Math.min(p.content.size,t-c),o,n+c)}s=d}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,o,n){let a="",l=!0;return this.nodesBetween(e,t,(s,p)=>{let d=s.isText?s.text.slice(Math.max(e,p)-p,t-p):s.isLeaf?n?typeof n=="function"?n(s):n:s.type.spec.leafText?s.type.spec.leafText(s):"":"";s.isBlock&&(s.isLeaf&&d||s.isTextblock)&&o&&(l?l=!1:a+=o),a+=d},0),a}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,o=e.firstChild,n=this.content.slice(),a=0;for(t.isText&&t.sameMarkup(o)&&(n[n.length-1]=t.withText(t.text+o.text),a=1);a<e.content.length;a++)n.push(e.content[a]);return new C(n,this.size+e.size)}cut(e,t=this.size){if(e==0&&t==this.size)return this;let o=[],n=0;if(t>e)for(let a=0,l=0;l<t;a++){let s=this.content[a],p=l+s.nodeSize;p>e&&((l<e||p>t)&&(s.isText?s=s.cut(Math.max(0,e-l),Math.min(s.text.length,t-l)):s=s.cut(Math.max(0,e-l-1),Math.min(s.content.size,t-l-1))),o.push(s),n+=s.nodeSize),l=p}return new C(o,n)}cutByIndex(e,t){return e==t?C.empty:e==0&&t==this.content.length?this:new C(this.content.slice(e,t))}replaceChild(e,t){let o=this.content[e];if(o==t)return this;let n=this.content.slice(),a=this.size+t.nodeSize-o.nodeSize;return n[e]=t,new C(n,a)}addToStart(e){return new C([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new C(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw new RangeError("Index "+e+" out of range for "+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,o=0;t<this.content.length;t++){let n=this.content[t];e(n,o,t),o+=n.nodeSize}}findDiffStart(e,t=0){return uf(this,e,t)}findDiffEnd(e,t=this.size,o=e.size){return gf(this,e,t,o)}findIndex(e){if(e==0)return Ro(0,e);if(e==this.size)return Ro(this.content.length,e);if(e>this.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let t=0,o=0;;t++){let n=this.child(t),a=o+n.nodeSize;if(a>=e)return a==e?Ro(t+1,a):Ro(t,o);o=a}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,t){if(!t)return C.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new C(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return C.empty;let t,o=0;for(let n=0;n<e.length;n++){let a=e[n];o+=a.nodeSize,n&&a.isText&&e[n-1].sameMarkup(a)?(t||(t=e.slice(0,n)),t[t.length-1]=a.withText(t[t.length-1].text+a.text)):t&&t.push(a)}return new C(t||e,o)}static from(e){if(!e)return C.empty;if(e instanceof C)return e;if(Array.isArray(e))return this.fromArray(e);if(e.attrs)return new C([e],e.nodeSize);throw new RangeError("Can not convert "+e+" to a Fragment"+(e.nodesBetween?" (looks like multiple versions of prosemirror-model were loaded)":""))}}C.empty=new C([],0);const Pn={index:0,offset:0};function Ro(r,e){return Pn.index=r,Pn.offset=e,Pn}function Fo(r,e){if(r===e)return!0;if(!(r&&typeof r=="object")||!(e&&typeof e=="object"))return!1;let t=Array.isArray(r);if(Array.isArray(e)!=t)return!1;if(t){if(r.length!=e.length)return!1;for(let o=0;o<r.length;o++)if(!Fo(r[o],e[o]))return!1}else{for(let o in r)if(!(o in e)||!Fo(r[o],e[o]))return!1;for(let o in e)if(!(o in r))return!1}return!0}let K=class El{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,o=!1;for(let n=0;n<e.length;n++){let a=e[n];if(this.eq(a))return e;if(this.type.excludes(a.type))t||(t=e.slice(0,n));else{if(a.type.excludes(this.type))return e;!o&&a.type.rank>this.type.rank&&(t||(t=e.slice(0,n)),t.push(this),o=!0),t&&t.push(a)}}return t||(t=e.slice()),o||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&Fo(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Mark.fromJSON");let o=e.marks[t.type];if(!o)throw new RangeError(`There is no mark type ${t.type} in this schema`);let n=o.create(t.attrs);return o.checkAttrs(n.attrs),n}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let o=0;o<e.length;o++)if(!e[o].eq(t[o]))return!1;return!0}static setFrom(e){if(!e||Array.isArray(e)&&e.length==0)return El.none;if(e instanceof El)return[e];let t=e.slice();return t.sort((o,n)=>o.type.rank-n.type.rank),t}};K.none=[];class jo extends Error{}class A{constructor(e,t,o){this.content=e,this.openStart=t,this.openEnd=o}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let o=hf(this.content,e+this.openStart,t);return o&&new A(o,this.openStart,this.openEnd)}removeBetween(e,t){return new A(xf(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return A.empty;let o=t.openStart||0,n=t.openEnd||0;if(typeof o!="number"||typeof n!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new A(C.fromJSON(e,t.content),o,n)}static maxOpen(e,t=!0){let o=0,n=0;for(let a=e.firstChild;a&&!a.isLeaf&&(t||!a.type.spec.isolating);a=a.firstChild)o++;for(let a=e.lastChild;a&&!a.isLeaf&&(t||!a.type.spec.isolating);a=a.lastChild)n++;return new A(e,o,n)}}A.empty=new A(C.empty,0,0);function xf(r,e,t){let{index:o,offset:n}=r.findIndex(e),a=r.maybeChild(o),{index:l,offset:s}=r.findIndex(t);if(n==e||a.isText){if(s!=t&&!r.child(l).isText)throw new RangeError("Removing non-flat range");return r.cut(0,e).append(r.cut(t))}if(o!=l)throw new RangeError("Removing non-flat range");return r.replaceChild(o,a.copy(xf(a.content,e-n-1,t-n-1)))}function hf(r,e,t,o){let{index:n,offset:a}=r.findIndex(e),l=r.maybeChild(n);if(a==e||l.isText)return o&&!o.canReplace(n,n,t)?null:r.cut(0,e).append(t).append(r.cut(e));let s=hf(l.content,e-a-1,t,l);return s&&r.replaceChild(n,l.copy(s))}function sS(r,e,t){if(t.openStart>r.depth)throw new jo("Inserted content deeper than insertion position");if(r.depth-t.openStart!=e.depth-t.openEnd)throw new jo("Inconsistent open depths");return ff(r,e,t,0)}function ff(r,e,t,o){let n=r.index(o),a=r.node(o);if(n==e.index(o)&&o<r.depth-t.openStart){let l=ff(r,e,t,o+1);return a.copy(a.content.replaceChild(n,l))}else if(t.content.size)if(!t.openStart&&!t.openEnd&&r.depth==o&&e.depth==o){let l=r.parent,s=l.content;return Yt(l,s.cut(0,r.parentOffset).append(t.content).append(s.cut(e.parentOffset)))}else{let{start:l,end:s}=pS(t,r);return Yt(a,wf(r,l,s,e,o))}else return Yt(a,qo(r,e,o))}function yf(r,e){if(!e.type.compatibleContent(r.type))throw new jo("Cannot join "+e.type.name+" onto "+r.type.name)}function Ln(r,e,t){let o=r.node(t);return yf(o,e.node(t)),o}function Jt(r,e){let t=e.length-1;t>=0&&r.isText&&r.sameMarkup(e[t])?e[t]=r.withText(e[t].text+r.text):e.push(r)}function Fr(r,e,t,o){let n=(e||r).node(t),a=0,l=e?e.index(t):n.childCount;r&&(a=r.index(t),r.depth>t?a++:r.textOffset&&(Jt(r.nodeAfter,o),a++));for(let s=a;s<l;s++)Jt(n.child(s),o);e&&e.depth==t&&e.textOffset&&Jt(e.nodeBefore,o)}function Yt(r,e){return r.type.checkContent(e),r.copy(e)}function wf(r,e,t,o,n){let a=r.depth>n&&Ln(r,e,n+1),l=o.depth>n&&Ln(t,o,n+1),s=[];return Fr(null,r,n,s),a&&l&&e.index(n)==t.index(n)?(yf(a,l),Jt(Yt(a,wf(r,e,t,o,n+1)),s)):(a&&Jt(Yt(a,qo(r,e,n+1)),s),Fr(e,t,n,s),l&&Jt(Yt(l,qo(t,o,n+1)),s)),Fr(o,null,n,s),new C(s)}function qo(r,e,t){let o=[];if(Fr(null,r,t,o),r.depth>t){let n=Ln(r,e,t+1);Jt(Yt(n,qo(r,e,t+1)),o)}return Fr(e,null,t,o),new C(o)}function pS(r,e){let t=e.depth-r.openStart,n=e.node(t).copy(r.content);for(let a=t-1;a>=0;a--)n=e.node(a).copy(C.from(n));return{start:n.resolveNoCache(r.openStart+t),end:n.resolveNoCache(n.content.size-r.openEnd-t)}}class jr{constructor(e,t,o){this.pos=e,this.path=t,this.parentOffset=o,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let o=this.pos-this.path[this.path.length-1],n=e.child(t);return o?e.child(t).cut(o):n}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let o=this.path[t*3],n=t==0?0:this.path[t*3-1]+1;for(let a=0;a<e;a++)n+=o.child(a).nodeSize;return n}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return K.none;if(this.textOffset)return e.child(t).marks;let o=e.maybeChild(t-1),n=e.maybeChild(t);if(!o){let s=o;o=n,n=s}let a=o.marks;for(var l=0;l<a.length;l++)a[l].type.spec.inclusive===!1&&(!n||!a[l].isInSet(n.marks))&&(a=a[l--].removeFromSet(a));return a}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let o=t.marks,n=e.parent.maybeChild(e.index());for(var a=0;a<o.length;a++)o[a].type.spec.inclusive===!1&&(!n||!o[a].isInSet(n.marks))&&(o=o[a--].removeFromSet(o));return o}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let o=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);o>=0;o--)if(e.pos<=this.end(o)&&(!t||t(this.node(o))))return new Wo(this,e,o);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos<this.pos?e:this}toString(){let e="";for(let t=1;t<=this.depth;t++)e+=(e?"/":"")+this.node(t).type.name+"_"+this.index(t-1);return e+":"+this.parentOffset}static resolve(e,t){if(!(t>=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let o=[],n=0,a=t;for(let l=e;;){let{index:s,offset:p}=l.content.findIndex(a),d=a-p;if(o.push(l,s,n+p),!d||(l=l.child(s),l.isText))break;a=d-1,n+=p+1}return new jr(t,o,a)}static resolveCached(e,t){let o=vf.get(e);if(o)for(let a=0;a<o.elts.length;a++){let l=o.elts[a];if(l.pos==t)return l}else vf.set(e,o=new dS);let n=o.elts[o.i]=jr.resolve(e,t);return o.i=(o.i+1)%cS,n}}class dS{constructor(){this.elts=[],this.i=0}}const cS=12,vf=new WeakMap;class Wo{constructor(e,t,o){this.$from=e,this.$to=t,this.depth=o}get start(){return this.$from.before(this.depth+1)}get end(){return this.$to.after(this.depth+1)}get parent(){return this.$from.node(this.depth)}get startIndex(){return this.$from.index(this.depth)}get endIndex(){return this.$to.indexAfter(this.depth)}}const mS=Object.create(null);let Tt=class Tl{constructor(e,t,o,n=K.none){this.type=e,this.attrs=t,this.marks=n,this.content=o||C.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,o,n=0){this.content.nodesBetween(e,t,o,n,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,"")}textBetween(e,t,o,n){return this.content.textBetween(e,t,o,n)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,o){return this.type==e&&Fo(this.attrs,t||e.defaultAttrs||mS)&&K.sameSet(this.marks,o||K.none)}copy(e=null){return e==this.content?this:new Tl(this.type,this.attrs,e,this.marks)}mark(e){return e==this.marks?this:new Tl(this.type,this.attrs,this.content,e)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,o=!1){if(e==t)return A.empty;let n=this.resolve(e),a=this.resolve(t),l=o?0:n.sharedDepth(t),s=n.start(l),d=n.node(l).content.cut(n.pos-s,a.pos-s);return new A(d,n.depth-l,a.depth-l)}replace(e,t,o){return sS(this.resolve(e),this.resolve(t),o)}nodeAt(e){for(let t=this;;){let{index:o,offset:n}=t.content.findIndex(e);if(t=t.maybeChild(o),!t)return null;if(n==e||t.isText)return t;e-=n+1}}childAfter(e){let{index:t,offset:o}=this.content.findIndex(e);return{node:this.content.maybeChild(t),index:t,offset:o}}childBefore(e){if(e==0)return{node:null,index:0,offset:0};let{index:t,offset:o}=this.content.findIndex(e);if(o<e)return{node:this.content.child(t),index:t,offset:o};let n=this.content.child(t-1);return{node:n,index:t-1,offset:o-n.nodeSize}}resolve(e){return jr.resolveCached(this,e)}resolveNoCache(e){return jr.resolve(this,e)}rangeHasMark(e,t,o){let n=!1;return t>e&&this.nodesBetween(e,t,a=>(o.isInSet(a.marks)&&(n=!0),!n)),n}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Sf(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,o=C.empty,n=0,a=o.childCount){let l=this.contentMatchAt(e).matchFragment(o,n,a),s=l&&l.matchFragment(this.content,t);if(!s||!s.validEnd)return!1;for(let p=n;p<a;p++)if(!this.type.allowsMarks(o.child(p).marks))return!1;return!0}canReplaceWith(e,t,o,n){if(n&&!this.type.allowsMarks(n))return!1;let a=this.contentMatchAt(e).matchType(o),l=a&&a.matchFragment(this.content,t);return l?l.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),this.type.checkAttrs(this.attrs);let e=K.none;for(let t=0;t<this.marks.length;t++){let o=this.marks[t];o.type.checkAttrs(o.attrs),e=o.addToSet(e)}if(!K.sameSet(e,this.marks))throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(t=>t.type.name)}`);this.content.forEach(t=>t.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(t=>t.toJSON())),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let o;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");o=t.marks.map(e.markFromJSON)}if(t.type=="text"){if(typeof t.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(t.text,o)}let n=C.fromJSON(e,t.content),a=e.nodeType(t.type).create(t.attrs,n,o);return a.type.checkAttrs(a.attrs),a}};Tt.prototype.text=void 0;class Uo extends Tt{constructor(e,t,o,n){if(super(e,t,null,n),!o)throw new RangeError("Empty text nodes are not allowed");this.text=o}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Sf(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new Uo(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new Uo(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Sf(r,e){for(let t=r.length-1;t>=0;t--)e=r[t].type.name+"("+e+")";return e}class Qt{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let o=new bS(e,t);if(o.next==null)return Qt.empty;let n=kf(o);o.next&&o.err("Unexpected trailing text");let a=wS(yS(n));return vS(a,o),a}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,o=e.childCount){let n=this;for(let a=t;n&&a<o;a++)n=n.matchType(e.child(a).type);return n}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let o=0;o<e.next.length;o++)if(this.next[t].type==e.next[o].type)return!0;return!1}fillBefore(e,t=!1,o=0){let n=[this];function a(l,s){let p=l.matchFragment(e,o);if(p&&(!t||p.validEnd))return C.from(s.map(d=>d.createAndFill()));for(let d=0;d<l.next.length;d++){let{type:c,next:m}=l.next[d];if(!(c.isText||c.hasRequiredAttrs())&&n.indexOf(m)==-1){n.push(m);let b=a(m,s.concat(c));if(b)return b}}return null}return a(this,[])}findWrapping(e){for(let o=0;o<this.wrapCache.length;o+=2)if(this.wrapCache[o]==e)return this.wrapCache[o+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),o=[{match:this,type:null,via:null}];for(;o.length;){let n=o.shift(),a=n.match;if(a.matchType(e)){let l=[];for(let s=n;s.type;s=s.via)l.push(s.type);return l.reverse()}for(let l=0;l<a.next.length;l++){let{type:s,next:p}=a.next[l];!s.isLeaf&&!s.hasRequiredAttrs()&&!(s.name in t)&&(!n.type||p.validEnd)&&(o.push({match:s.contentMatch,type:s,via:n}),t[s.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(o){e.push(o);for(let n=0;n<o.next.length;n++)e.indexOf(o.next[n].next)==-1&&t(o.next[n].next)}return t(this),e.map((o,n)=>{let a=n+(o.validEnd?"*":" ")+" ";for(let l=0;l<o.next.length;l++)a+=(l?", ":"")+o.next[l].type.name+"->"+e.indexOf(o.next[l].next);return a}).join(`
18
+ This will fail in production.`);s=Hr,s._s.has(o)||(a?Mn(o,e,n,s):mf(o,n,s),process.env.NODE_ENV!=="production"&&(l._pinia=s));const c=s._s.get(o);if(process.env.NODE_ENV!=="production"&&p){const m="__hot:"+o,b=a?Mn(m,e,n,s,!0):mf(m,_e({},n),s,!0);p._hotUpdate(b),delete s.state.value[m],s._s.delete(m)}if(process.env.NODE_ENV!=="production"&&Ct){const m=i.getCurrentInstance();if(m&&m.proxy&&!p){const b=m.proxy,u="_pStores"in b?b._pStores:b._pStores={};u[o]=c}}return c}return l.$id=o,l}const bf=a1("pageBuilderState",{state:()=>({componentArrayAddMethod:null,localStorageItemName:null,showModalTipTap:!1,menuRight:!0,borderStyle:null,borderWidth:null,borderColor:null,borderRadiusGlobal:null,borderRadiusTopLeft:null,borderRadiusTopRight:null,borderRadiusBottomleft:null,borderRadiusBottomRight:null,elementContainsHyperlink:null,hyperlinkAbility:null,hyperlinkInput:null,hyperlinkMessage:null,hyperlinkError:null,hyberlinkEnable:!1,openHyperlinkinkInNewTab:null,opacity:null,backgroundOpacity:null,textAreaVueModel:null,currentClasses:[],currentStyles:{},fontVerticalPadding:null,fontHorizontalPadding:null,fontVerticalMargin:null,fontHorizontalMargin:null,fontStyle:null,fontFamily:null,fontWeight:null,fontBase:null,fontDesktop:null,fontTablet:null,fontMobile:null,backgroundColor:null,textColor:null,element:null,component:null,components:[],basePrimaryImage:null,configPageBuilder:null,showModalHTMLEditor:!1,toggleGlobalHtmlMode:!1,applyImageToSelection:{src:""},currentPreviewImage:null,builderStarted:!1,isLoadingGlobal:!0,isSaving:!1,hasLocalDraftForUpdate:!1,isResumeEditing:!1,isRestoring:!1,currentLanguage:null,historyIndex:-1,historyLength:0,addComponentAddIndex:null}),getters:{getComponentArrayAddMethod(r){return r.componentArrayAddMethod},getLocalStorageItemName(r){return r.localStorageItemName},getShowModalTipTap(r){return r.showModalTipTap},getMenuRight(r){return r.menuRight},getBorderStyle(r){return r.borderStyle},getBorderWidth(r){return r.borderWidth},getBorderColor(r){return r.borderColor},getBorderRadiusGlobal(r){return r.borderRadiusGlobal},getBorderRadiusTopLeft(r){return r.borderRadiusTopLeft},getBorderRadiusTopRight(r){return r.borderRadiusTopRight},getBorderRadiusBottomleft(r){return r.borderRadiusBottomleft},getBorderRadiusBottomRight(r){return r.borderRadiusBottomRight},getElementContainsHyperlink(r){return r.elementContainsHyperlink},getHyperlinkAbility(r){return r.hyperlinkAbility},getHyperlinkInput(r){return r.hyperlinkInput},getHyperlinkMessage(r){return r.hyperlinkMessage},getHyperlinkError(r){return r.hyperlinkError},getHyberlinkEnable(r){return r.hyberlinkEnable},getOpenHyperlinkInNewTab(r){return r.openHyperlinkinkInNewTab},getOpacity(r){return r.opacity},getBackgroundOpacity(r){return r.backgroundOpacity},getTextAreaVueModel(r){return r.textAreaVueModel},getCurrentClasses(r){return r.currentClasses},getCurrentStyles(r){return r.currentStyles},getFontStyle(r){return r.fontStyle},getFontVerticalPadding(r){return r.fontVerticalPadding},getFontHorizontalPadding(r){return r.fontHorizontalPadding},getFontVerticalMargin(r){return r.fontVerticalMargin},getFontHorizontalMargin(r){return r.fontHorizontalMargin},getFontFamily(r){return r.fontFamily},getFontWeight(r){return r.fontWeight},getFontBase(r){return r.fontBase},getFontDesktop(r){return r.fontDesktop},getFontTablet(r){return r.fontTablet},getFontMobile(r){return r.fontMobile},getBackgroundColor(r){return r.backgroundColor},getTextColor(r){return r.textColor},getElement(r){return r.element},getComponent(r){return r.component},getComponents(r){return r.components},getBasePrimaryImage(r){return r.basePrimaryImage},getPageBuilderConfig(r){return r.configPageBuilder},getShowModalHTMLEditor(r){return r.showModalHTMLEditor},getToggleGlobalHtmlMode(r){return r.toggleGlobalHtmlMode},getApplyImageToSelection(r){return r.applyImageToSelection},getCurrentPreviewImage(r){return r.currentPreviewImage},getBuilderStarted:r=>r.builderStarted,getIsLoadingGlobal:r=>r.isLoadingGlobal,getIsSaving:r=>r.isSaving,getHasLocalDraftForUpdate:r=>r.hasLocalDraftForUpdate,getIsLoadingResumeEditing:r=>r.isResumeEditing,getIsRestoring:r=>r.isRestoring,getCurrentLanguage:r=>r.currentLanguage,getHistoryIndex:r=>r.historyIndex,getHistoryLength:r=>r.historyLength,getAddComponentAddIndex:r=>r.addComponentAddIndex},actions:{setComponentArrayAddMethod(r){this.componentArrayAddMethod=r},setLocalStorageItemName(r){this.localStorageItemName=r},setShowModalTipTap(r){this.showModalTipTap=r},setMenuRight(r){this.menuRight=r},setBorderStyle(r){this.borderStyle=r},setBorderWidth(r){this.borderWidth=r},setBorderColor(r){this.borderColor=r},setBorderRadiusGlobal(r){this.borderRadiusGlobal=r},setBorderRadiusTopLeft(r){this.borderRadiusTopLeft=r},setBorderRadiusTopRight(r){this.borderRadiusTopRight=r},setBorderRadiusBottomleft(r){this.borderRadiusBottomleft=r},setBorderRadiusBottomRight(r){this.borderRadiusBottomRight=r},setElementContainsHyperlink(r){this.elementContainsHyperlink=r},setHyperlinkAbility(r){this.hyperlinkAbility=r},setHyperlinkInput(r){this.hyperlinkInput=r},setHyperlinkMessage(r){this.hyperlinkMessage=r},setHyperlinkError(r){this.hyperlinkError=r},setHyberlinkEnable(r){this.hyberlinkEnable=r},setOpenHyperlinkInNewTab(r){this.openHyperlinkinkInNewTab=r},setOpacity(r){this.opacity=r},setBackgroundOpacity(r){this.backgroundOpacity=r},setTextAreaVueModel(r){this.textAreaVueModel=r},setClass(r){this.currentClasses=[...this.currentClasses,r]},removeClass(r){this.currentClasses=this.currentClasses.filter(e=>e!==r)},setCurrentClasses(r){this.currentClasses=Array.from(r)},setCurrentStyles(r){this.currentStyles=r},setFontVerticalPadding(r){this.fontVerticalPadding=r},setFontHorizontalPadding(r){this.fontHorizontalPadding=r},setFontVerticalMargin(r){this.fontVerticalMargin=r},setFontHorizontalMargin(r){this.fontHorizontalMargin=r},setFontStyle(r){this.fontStyle=r},setFontFamily(r){this.fontFamily=r},setFontWeight(r){this.fontWeight=r},setFontBase(r){this.fontBase=r},setFontDesktop(r){this.fontDesktop=r},setFontTablet(r){this.fontTablet=r},setFontMobile(r){this.fontMobile=r},setBackgroundColor(r){this.backgroundColor=r},setTextColor(r){this.textColor=r},setElement(r){this.element=null,i.nextTick(()=>{this.element=r})},setComponent(r){if(!r){this.element=null,this.component=null;return}this.component=null,i.nextTick(()=>{this.component=r})},setComponents(r){this.components=[],i.nextTick(()=>{this.components=r||[]})},setPushComponents(r){const e=r.componentArrayAddMethod??"push";e==="push"?this.components.push(r.component):e==="unshift"&&this.components.unshift(r.component)},setBasePrimaryImage(r){this.element&&(this.element.src=r??void 0),this.basePrimaryImage=r},setCurrentLayoutPreview(r){localStorage.setItem("preview",r)},setPageBuilderConfig(r){this.configPageBuilder=r},setShowModalHTMLEditor(r){this.showModalHTMLEditor=r},setToggleGlobalHtmlMode(r){this.toggleGlobalHtmlMode=r},setApplyImageToSelection(r){this.applyImageToSelection=r},setCurrentPreviewImage(r){this.currentPreviewImage=r},setBuilderStarted(r){this.builderStarted=r},setIsLoadingGlobal(r){this.isLoadingGlobal=r},setIsSaving(r){this.isSaving=r},setHasLocalDraftForUpdate(r){this.hasLocalDraftForUpdate=r},setIsLoadingResumeEditing(r){this.isResumeEditing=r},setIsRestoring(r){this.isRestoring=r},setCurrentLanguage(r){this.currentLanguage=r},setHistoryIndex(r){this.historyIndex=r},setHistoryLength(r){this.historyLength=r},setAddComponentAddIndex(r){this.addComponentAddIndex=r}}}),Nn=af(),Q=bf(Nn),l1={class:"pbx-w-full pbx-inset-x-0 pbx-h-[90vh] pbx-bg-white pbx-overflow-x-scroll lg:pbx-pt-2 pbx-pt-2"},s1={class:"pbx-mt-4 pbx-mb-4 pbx-py-8 pbx-px-2 pbx-border pbx-border-solid pbx-border-gray-600 pbx-rounded-xl"},p1={class:"pbx-px-2"},d1={class:"pbx-mt-8"},c1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},m1={class:"pbx-overflow-x-auto"},b1={class:"pbx-min-w-full"},u1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},g1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},x1={class:"pbx-min-w-[30rem] pbx-w-max"},h1={class:"pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium pbx-bg-blue-100 pbx-text-blue-800"},f1={key:0,class:"pbx-mt-4"},y1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},w1={class:"pbx-overflow-x-auto"},v1={class:"pbx-min-w-full"},S1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},k1={key:0},C1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},E1={class:"pbx-min-w-[30rem] pbx-w-max"},T1={key:1},B1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},M1={class:"pbx-min-w-[30rem] pbx-w-max"},N1={key:1,class:"pbx-mt-8"},P1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},L1={class:"pbx-overflow-x-auto"},A1={class:"pbx-min-w-full"},D1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},V1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},I1={class:"pbx-min-w-[30rem] pbx-w-max"},z1={key:0,class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},O1={class:"pbx-min-w-[30rem] pbx-w-max"},_1={class:"pbx-flex pbx-items-center pbx-space-x-3"},H1=["src"],R1={key:0,class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},F1={class:"pbx-min-w-[30rem] pbx-w-max"},j1={key:2,class:"pbx-mt-8"},q1={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},W1={class:"pbx-overflow-x-auto"},U1={class:"pbx-min-w-full"},G1={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},K1={key:0},J1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},Y1={class:"pbx-min-w-[30rem] pbx-w-max"},Q1={key:1},X1={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},Z1={class:"pbx-min-w-[30rem] pbx-w-max"},$1={key:2},e5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},t5={class:"pbx-min-w-[30rem] pbx-w-max"},r5={key:3},o5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},i5={class:"pbx-min-w-[30rem] pbx-w-max"},n5={key:3,class:"pbx-mt-8"},a5={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},l5={class:"pbx-overflow-x-auto"},s5={class:"pbx-min-w-full"},p5={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},d5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},c5={class:"pbx-min-w-[30rem] pbx-w-max"},m5={class:"pbx-flex pbx-items-center pbx-space-x-3"},b5=["src"],u5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},g5={class:"pbx-min-w-[30rem] pbx-w-max"},x5={class:"pbx-flex pbx-items-center pbx-space-x-3"},h5={class:"pbx-pr-6"},f5={class:"pbx-flex pbx-items-center pbx-space-x-3"},y5={class:"pbx-whitespace-nowrap"},w5={key:4,class:"pbx-mt-8"},v5={class:"pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg"},S5={class:"pbx-overflow-x-auto"},k5={class:"pbx-w-max"},C5={class:"pbx-bg-white pbx-divide-y pbx-divide-gray-200"},E5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},T5={class:"pbx-min-w-[30rem] pbx-w-max"},B5={key:0},M5={key:1},N5={key:0},P5={class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"},L5={class:"pbx-min-w-[30rem] pbx-w-max"},A5={class:"pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium"},D5={class:"pbx-mt-4 pbx-mb-4 pbx-py-8 pbx-px-2 pbx-border pbx-border-solid pbx-border-gray-600 pbx-rounded-xl"},V5={class:"pbx-mt-4 pbx-whitespace-pre-wrap pbx-text-white pbx-overflow-hidden pbx-bg-gray-900"},I5={class:"pbx-px-4 pbx-pb-8 pbx-pt-4 pbx-text-white pbx-text-xs pbx-break-all"},z5={class:"pbx-myPrimaryParagraph pbx-text-xs pbx-text-white"},O5={__name:"PageBuilderSettings",setup(r){const e="3.4.90",t=Q,o=i.computed(()=>t.getPageBuilderConfig);return(n,a)=>{var l,s,p,d,c,m,b,u,g,x,h,y,w,f,v,S;return i.openBlock(),i.createElementBlock("div",l1,[i.createElementVNode("div",s1,[i.createElementVNode("div",null,[a[26]||(a[26]=i.createElementVNode("div",{class:"pbx-flex pbx-items-left pbx-flex-col pbx-gap-1"},[i.createElementVNode("h3",{class:"pbx-myQuaternaryHeader"},"Configuration Overview"),i.createElementVNode("p",{class:"pbx-myPrimaryParagraph pbx-text-xs"}," A summary of current user preferences, application settings, and system metadata including UI theme, language, saved components, and logo configuration. ")],-1)),i.createElementVNode("div",p1,[i.createElementVNode("div",d1,[a[2]||(a[2]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Version Information",-1)),i.createElementVNode("div",c1,[i.createElementVNode("div",m1,[i.createElementVNode("table",b1,[a[1]||(a[1]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," App "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Version ")])],-1)),i.createElementVNode("tbody",u1,[i.createElementVNode("tr",null,[a[0]||(a[0]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Page Builder")],-1)),i.createElementVNode("td",g1,[i.createElementVNode("div",x1,[i.createElementVNode("span",h1,i.toDisplayString(i.unref(e)),1)])])])])])])])]),(l=o.value)!=null&&l.resourceData&&!i.unref(kt)(o.value.resourceData)?(i.openBlock(),i.createElementBlock("div",f1,[a[6]||(a[6]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Resource Data",-1)),i.createElementVNode("div",y1,[i.createElementVNode("div",w1,[i.createElementVNode("table",v1,[a[5]||(a[5]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Property "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",S1,[(p=(s=o.value)==null?void 0:s.resourceData)!=null&&p.title?(i.openBlock(),i.createElementBlock("tr",k1,[a[3]||(a[3]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Title")],-1)),i.createElementVNode("td",C1,[i.createElementVNode("div",E1,i.toDisplayString(o.value.resourceData.title),1)])])):i.createCommentVNode("",!0),(c=(d=o.value)==null?void 0:d.resourceData)!=null&&c.id?(i.openBlock(),i.createElementBlock("tr",T1,[a[4]||(a[4]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"ID")],-1)),i.createElementVNode("td",B1,[i.createElementVNode("div",M1,i.toDisplayString(o.value.resourceData.id),1)])])):i.createCommentVNode("",!0)])])])])])):i.createCommentVNode("",!0),(m=o.value)!=null&&m.userForPageBuilder&&!i.unref(kt)(o.value.userForPageBuilder)?(i.openBlock(),i.createElementBlock("div",N1,[a[11]||(a[11]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"User Information",-1)),i.createElementVNode("div",P1,[i.createElementVNode("div",L1,[i.createElementVNode("table",A1,[a[10]||(a[10]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Property "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",D1,[i.createElementVNode("tr",null,[a[7]||(a[7]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"User Name")],-1)),i.createElementVNode("td",V1,[i.createElementVNode("div",I1,i.toDisplayString(o.value.userForPageBuilder.name),1)])]),i.createElementVNode("tr",null,[a[8]||(a[8]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Image")],-1)),o.value.userForPageBuilder.image&&typeof o.value.userForPageBuilder.image=="string"&&o.value.userForPageBuilder.image.length>2?(i.openBlock(),i.createElementBlock("td",z1,[i.createElementVNode("div",O1,[i.createElementVNode("div",_1,[i.createElementVNode("img",{class:"pbx-block pbx-inset-0 pbx-object-top pbx-h-10 pbx-min-h-10 pbx-max-h-10 pbx-w-10 pbx-min-w-10 pbx-max-w-10 pbx-object-cover pbx-rounded-full",src:o.value.userForPageBuilder.image,alt:"image"},null,8,H1)])])])):i.createCommentVNode("",!0)]),i.createElementVNode("tr",null,[a[9]||(a[9]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Image URL")],-1)),o.value.userForPageBuilder.image&&typeof o.value.userForPageBuilder.image=="string"&&o.value.userForPageBuilder.image.length>2?(i.openBlock(),i.createElementBlock("td",R1,[i.createElementVNode("div",F1,i.toDisplayString(o.value.userForPageBuilder.image),1)])):i.createCommentVNode("",!0)])])])])])])):i.createCommentVNode("",!0),(b=o.value)!=null&&b.userSettings&&!i.unref(kt)(o.value.userSettings)?(i.openBlock(),i.createElementBlock("div",j1,[a[17]||(a[17]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"User Settings",-1)),i.createElementVNode("div",q1,[i.createElementVNode("div",W1,[i.createElementVNode("table",U1,[a[16]||(a[16]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Setting "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",G1,[(g=(u=o.value)==null?void 0:u.userSettings)!=null&&g.theme?(i.openBlock(),i.createElementBlock("tr",K1,[a[12]||(a[12]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Theme")],-1)),i.createElementVNode("td",J1,[i.createElementVNode("div",Y1,i.toDisplayString(o.value.userSettings.theme),1)])])):i.createCommentVNode("",!0),(h=(x=o.value)==null?void 0:x.userSettings)!=null&&h.language?(i.openBlock(),i.createElementBlock("tr",Q1,[a[13]||(a[13]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Language")],-1)),i.createElementVNode("td",X1,[i.createElementVNode("div",Z1,i.toDisplayString(o.value.userSettings.language),1)])])):i.createCommentVNode("",!0),((w=(y=o.value)==null?void 0:y.userSettings)==null?void 0:w.autoSave)!==void 0?(i.openBlock(),i.createElementBlock("tr",$1,[a[14]||(a[14]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Auto Save")],-1)),i.createElementVNode("td",e5,[i.createElementVNode("div",t5,[i.createElementVNode("span",{class:i.normalizeClass(["pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium",o.value.userSettings.autoSave?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},i.toDisplayString(o.value.userSettings.autoSave?"Enabled":"Disabled"),3)])])])):i.createCommentVNode("",!0),((v=(f=o.value)==null?void 0:f.userSettings)==null?void 0:v.notifications)!==void 0?(i.openBlock(),i.createElementBlock("tr",r5,[a[15]||(a[15]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Notifications")],-1)),i.createElementVNode("td",o5,[i.createElementVNode("div",i5,[i.createElementVNode("span",{class:i.normalizeClass(["pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium",o.value.userSettings.notifications?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},i.toDisplayString(o.value.userSettings.notifications?"Enabled":"Disabled"),3)])])])):i.createCommentVNode("",!0)])])])])])):i.createCommentVNode("",!0),o.value&&o.value.pageBuilderLogo&&!i.unref(kt)(o.value.pageBuilderLogo)?(i.openBlock(),i.createElementBlock("div",n5,[a[21]||(a[21]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Logo Configuration",-1)),i.createElementVNode("div",a5,[i.createElementVNode("div",l5,[i.createElementVNode("table",s5,[a[20]||(a[20]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Property "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Value ")])],-1)),i.createElementVNode("tbody",p5,[i.createElementVNode("tr",null,[a[18]||(a[18]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Logo")],-1)),i.createElementVNode("td",d5,[i.createElementVNode("div",c5,[i.createElementVNode("div",m5,[i.createElementVNode("img",{class:"pbx-h-4",src:o.value.pageBuilderLogo.src,alt:"Logo"},null,8,b5)])])])]),i.createElementVNode("tr",null,[a[19]||(a[19]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Logo URL")],-1)),i.createElementVNode("td",u5,[i.createElementVNode("div",g5,[i.createElementVNode("div",x5,[i.createElementVNode("div",h5,[i.createElementVNode("div",f5,[i.createElementVNode("span",y5,i.toDisplayString(o.value.pageBuilderLogo.src),1)])])])])])])])])])])])):i.createCommentVNode("",!0),(S=o.value)!=null&&S.updateOrCreate&&!i.unref(kt)(o.value.updateOrCreate)?(i.openBlock(),i.createElementBlock("div",w5,[a[25]||(a[25]=i.createElementVNode("h4",{class:"pbx-myQuaternaryHeader pbx-text-sm pbx-mb-2"},"Form Type",-1)),i.createElementVNode("div",v5,[i.createElementVNode("div",S5,[i.createElementVNode("table",k5,[a[24]||(a[24]=i.createElementVNode("thead",{class:"pbx-bg-gray-50"},[i.createElementVNode("tr",null,[i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Mode "),i.createElementVNode("th",{scope:"col",class:"pbx-px-6 pbx-py-3 pbx-text-left pbx-text-xs pbx-font-medium pbx-text-gray-500 pbx-uppercase pbx-tracking-wider"}," Description ")])],-1)),i.createElementVNode("tbody",C5,[i.createElementVNode("tr",null,[a[22]||(a[22]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Form Type")],-1)),i.createElementVNode("td",E5,[i.createElementVNode("div",T5,[i.createElementVNode("span",{class:i.normalizeClass(["pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium",o.value.updateOrCreate==="create"?"bg-green-100 text-green-800":"bg-blue-100 text-blue-800"])},[o.value&&o.value.updateOrCreate.formType==="create"?(i.openBlock(),i.createElementBlock("span",B5,i.toDisplayString(o.value.updateOrCreate.formType),1)):i.createCommentVNode("",!0),o.value&&o.value.updateOrCreate.formType==="update"?(i.openBlock(),i.createElementBlock("span",M5,i.toDisplayString(o.value.updateOrCreate.formType),1)):i.createCommentVNode("",!0)],2)])])]),o.value.updateOrCreate.formName&&o.value.updateOrCreate.formName.length>0?(i.openBlock(),i.createElementBlock("tr",N5,[a[23]||(a[23]=i.createElementVNode("td",{class:"pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-font-medium pbx-text-gray-900"},[i.createElementVNode("div",{class:"pbx-min-w-[30rem] pbx-w-max"},"Form Name")],-1)),i.createElementVNode("td",P5,[i.createElementVNode("div",L5,[i.createElementVNode("span",A5,i.toDisplayString(o.value.updateOrCreate.formName),1)])])])):i.createCommentVNode("",!0)])])])])])):i.createCommentVNode("",!0)])])]),i.createElementVNode("div",D5,[a[28]||(a[28]=i.createElementVNode("div",{class:"pbx-flex pbx-items-left pbx-flex-col pbx-gap-1"},[i.createElementVNode("h3",{class:"pbx-myQuaternaryHeader"},"Complete Configuration Overview"),i.createElementVNode("p",{class:"pbx-myPrimaryParagraph pbx-text-xs"}," Complete configuration object currently used by the Page Builder. Includes user information, branding settings, and other context-specific data needed for rendering and managing the builder environment. ")],-1)),i.createElementVNode("div",V5,[a[27]||(a[27]=i.createElementVNode("div",{class:"pbx-flex bg-gray-800/40 pbx-ring-1 ring-white/5"},[i.createElementVNode("div",{class:"pbx-mb-px pbx-flex pbx-text-xs pbx-font-medium pbx-text-myPrimaryMediumGrayColor"},[i.createElementVNode("div",{class:"pbx-px-4 pbx-py-4 pbx-text-white"},"Configuration")])],-1)),i.createElementVNode("div",I5,[i.createElementVNode("p",z5," config: "+i.toDisplayString(JSON.stringify(o.value,null,4)),1)])])])])}}},_5={key:0,class:"pbx-fixed pbx-inset-0 pbx-z-50"},H5={class:"pbx-flex pbx-gap-2 pbx-justify-between pbx-items-center pbx-py-2 pbx-px-2 pbx-mb-2 pbx-border-b pbx-border-gray-200"},R5={class:"pbx-myQuaternaryHeader pbx-my-0 pbx-py-0 pbx-text-black"},F5={class:"pbx-pt-4 pbx-px-2"},j5=i.defineComponent({__name:"FloatingSidePanel",props:{title:{type:String,required:!1,default:null},showSidebarPanel:{type:Boolean,default:!1},position:{type:String,required:!0,default:"right",validator(r){const t=["left","right"].includes(r);return t||console.warn(`Invalid prop: position must be 'left' or 'right', got '${r}'`),t}}},emits:["closeSidebarPanel"],setup(r,{emit:e}){const t=e,o=()=>{t("closeSidebarPanel")};return(n,a)=>(i.openBlock(),i.createBlock(i.Transition,{name:"popup-fade"},{default:i.withCtx(()=>[r.showSidebarPanel?(i.openBlock(),i.createElementBlock("div",_5,[i.createElementVNode("div",{class:"pbx-fixed pbx-inset-0 pbx-bg-black pbx-opacity-20 pbx-z-40",onClick:o}),i.createElementVNode("div",{class:i.normalizeClass(["pbx-fixed pbx-top-0 pbx-rounded-3xl pbx-py-2 pbx-px-2 pbx-border pbx-border-gray-200 pbx-max-h-[80vh] lg:pbx-min-h-[98%] pbx-min-h-[80vh] lg:pbx-min-w-96 lg:pbx-w-96 pbx-w-[96%] pbx-overflow-y-auto pbx-z-50 pbx-bg-white lg:pbx-mt-2 pbx-mt-2",[r.position==="left"?"pbx-left-0 pbx-ml-[1%]":"",r.position==="right"?"pbx-right-0 pbx-mr-[1%]":""]]),onClick:a[0]||(a[0]=i.withModifiers(()=>{},["stop"]))},[i.createElementVNode("div",H5,[i.createElementVNode("span",R5,i.toDisplayString(r.title),1),i.createElementVNode("span",{onClick:o},[...a[1]||(a[1]=[i.createElementVNode("div",{class:"pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor hover:pbx-text-white focus-visible:pbx-ring-0 pbx-text-black"},[i.createElementVNode("span",{class:"material-symbols-outlined"}," close ")],-1)])])]),i.createElementVNode("div",F5,[i.renderSlot(n.$slots,"default")])],2)])):i.createCommentVNode("",!0)]),_:3}))}}),q5={class:"pbx-flex pbx-flex-col pbx-items-center pbx-justify-center pbx-myPrimaryGap"},W5={class:"pbx-flex pbx-gap-2 pbx-items-center pbx-justify-center pbx-relative"},U5={class:"pbx-overflow-y-auto"},G5={class:"pbx-flex pbx-items-center pbx-justify-center pbx-gap-2"},K5={class:"pbx-lg:pbx-text-base pbx-text-sm pbx-font-semibold pbx-text-center pbx-min-h-14 pbx-flex pbx-justify-center pbx-items-center"},J5={class:"pbx-bg-gray-100 pbx-rounded-full pbx-w-32 pbx-h-32 pbx-flex pbx-items-center pbx-justify-center"},Y5={class:"pbx-text-center"},Q5={class:"pbx-lg:pbx-text-7xl pbx-text-5xl"},X5={key:0,class:"pbx-w-full"},Z5={class:"pbx-text-xl pbx-font-semibold pbx-mb-4 pbx-text-center"},$5={class:"pbx-space-y-4"},eS={class:"pbx-flex-shrink-0 pbx-mt-1"},tS={key:0,class:"pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-myPrimaryLinkColor pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor focus-visible:pbx-ring-0 pbx-text-white hover:pbx-text-white"},rS={key:1,class:"pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-myPrimaryErrorColor pbx-aspect-square hover:pbx-bg-myPrimaryErrorColor hover:pbx-text-white pbx-text-white"},oS={class:"pbx-flex-1"},iS={class:"pbx-text-sm pbx-text-gray-600"},nS={key:1,class:"pbx-text-gray-500 pbx-text-center"},aS={class:"pbx-flex pbx-gap-2 pbx-items-center pbx-justify-center"},lS={__name:"ComponentTopMenu",setup(r){const{translate:e}=le(),t=ae(),o=i.ref(!1),n=i.ref(!1),a=i.ref(""),l=i.ref(1),s=i.ref(""),p=i.ref(""),d=i.ref(""),c=i.ref(null),m=i.ref(null),b=i.ref(null),u=i.ref(null),g=i.ref(null),x=function(){n.value=!0,a.value="delete",l.value=2,s.value=e("Remove all Components"),p.value=e("Are you sure you want to remove all Components?"),d.value=e("Close"),c.value=null,m.value=e("Delete"),b.value=function(){n.value=!1},u.value=function(){},g.value=async function(){o.value=!0,await t.clearHtmlSelection(),await t.handleFormSubmission(),await ne(500),n.value=!1,o.value=!1}},h=i.ref(!1),y=function(){h.value=!1},w=function(){h.value=!0},f=i.ref(null),v=i.ref(!1),S=async function(){v.value=!v.value,v.value&&(f.value=await t.analyzeSEO())},L=function(){v.value=!1};return(E,T)=>(i.openBlock(),i.createElementBlock("div",null,[i.createElementVNode("div",q5,[i.createElementVNode("div",W5,[i.createElementVNode("div",{onClick:S,"pbx-bg-myPrimaryLinkColor":"",class:i.normalizeClass(["pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor focus-visible:pbx-ring-0 pbx-text-black hover:pbx-text-white",{"pbx-bg-myPrimaryLinkColor pbx-text-white":v.value}])},[...T[1]||(T[1]=[i.createElementVNode("div",{class:"pbx-font-semibold pbx-text-sm"},"SEO",-1)])],2),i.createVNode(j5,{title:"SEO",showSidebarPanel:v.value,onCloseSidebarPanel:L,position:"left"},{default:i.withCtx(()=>[i.createElementVNode("div",U5,[i.createElementVNode("div",null,[i.createElementVNode("div",G5,[i.createElementVNode("div",K5,[f.value?(i.openBlock(),i.createElementBlock("div",{key:0,class:"pbx-relative pbx-my-4 pbx-rounded-full pbx-flex pbx-items-center pbx-justify-center pbx-w-36 pbx-h-36",style:i.normalizeStyle({background:`conic-gradient(${f.value.score<50?"#ef4444":"#50C878"} ${f.value.score}%, #e5e7eb 0)`})},[i.createElementVNode("div",J5,[i.createElementVNode("div",Y5,[i.createElementVNode("span",Q5,i.toDisplayString(f.value.score),1),T[2]||(T[2]=i.createElementVNode("span",{class:"pbx-text-xl"},"%",-1))])])],4)):i.createCommentVNode("",!0)])]),f.value&&f.value.checks&&f.value.checks.length?(i.openBlock(),i.createElementBlock("div",X5,[i.createElementVNode("h3",Z5,i.toDisplayString(i.unref(e)("SEO Check Results")),1),i.createElementVNode("ul",$5,[(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(f.value.checks,(D,M)=>(i.openBlock(),i.createElementBlock("li",{key:M,class:i.normalizeClass(["pbx-flex pbx-items-start pbx-gap-4 pbx-p-4 pbx-bg-white pbx-rounded-lg pbx-border-solid pbx-border-2",D.passed?"pbx-border-emerald-500":"pbx-border-red-600"])},[i.createElementVNode("div",eS,[D.passed?(i.openBlock(),i.createElementBlock("div",tS,[...T[3]||(T[3]=[i.createElementVNode("span",{class:"material-symbols-outlined"}," check ",-1)])])):i.createCommentVNode("",!0),D.passed?i.createCommentVNode("",!0):(i.openBlock(),i.createElementBlock("div",rS,[...T[4]||(T[4]=[i.createElementVNode("span",{class:"material-symbols-outlined"}," check_indeterminate_small ",-1)])]))]),i.createElementVNode("div",oS,[i.createElementVNode("p",{class:i.normalizeClass(["pbx-text-lg pbx-font-medium",D.passed?"pbx-text-green-700":"pbx-text-red-700"])},i.toDisplayString(D.check),3),i.createElementVNode("p",iS,i.toDisplayString(D.details),1)])],2))),128))])])):(i.openBlock(),i.createElementBlock("div",nS,"No SEO checks available."))])])]),_:1},8,["showSidebarPanel"])]),i.createElementVNode("div",{class:"pbx-flex pbx-gap-2 pbx-items-center pbx-justify-center"},[i.createElementVNode("div",{onClick:x,class:"pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryErrorColor hover:pbx-text-white pbx-text-myPrimaryErrorColor"},[...T[5]||(T[5]=[i.createElementVNode("span",{class:"material-symbols-outlined"}," delete_forever ",-1)])])]),T[7]||(T[7]=i.createElementVNode("div",{class:"pbx-w-full pbx-border-t pbx-border-solid pbx-border-gray-200"},null,-1)),i.createElementVNode("div",aS,[i.createElementVNode("div",{onClick:T[0]||(T[0]=async()=>{await i.unref(t).clearHtmlSelection(),w()}),class:"pbx-select-none pbx-h-10 pbx-w-10 pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-50 pbx-aspect-square hover:pbx-bg-myPrimaryLinkColor focus-visible:pbx-ring-0 pbx-text-black hover:pbx-text-white"},[...T[6]||(T[6]=[i.createElementVNode("svg",{fill:"currentColor",height:"22",viewBox:"0 0 22 22",width:"22",xmlns:"http://www.w3.org/2000/svg",class:"css-1a6490m"},[i.createElementVNode("path",{"clip-rule":"evenodd",d:"M15.192 5.393A6.965 6.965 0 0012 4.071V2h-2v2.07a6.964 6.964 0 00-3.192 1.323L5.344 3.93 3.93 5.343l1.464 1.464A6.964 6.964 0 004.07 10H2v2h2.07a6.964 6.964 0 001.324 3.193L3.93 16.657l1.414 1.414 1.464-1.464A6.964 6.964 0 0010 17.929V20h2v-2.07a6.964 6.964 0 003.192-1.323l1.465 1.464 1.414-1.414-1.465-1.465A6.964 6.964 0 0017.93 12H20v-2h-2.07a6.963 6.963 0 00-1.324-3.193l1.464-1.464-1.414-1.414-1.464 1.464zM11 16a5 5 0 100-10 5 5 0 000 10z","fill-rule":"evenodd"})],-1)])])])]),i.createVNode(vt,{showDynamicModalBuilder:n.value,type:a.value,gridColumnAmount:l.value,title:s.value,description:p.value,isLoading:o.value,firstButtonText:d.value,secondButtonText:c.value,thirdButtonText:m.value,onFirstModalButtonFunctionDynamicModalBuilder:b.value,onSecondModalButtonFunctionDynamicModalBuilder:u.value,onThirdModalButtonFunctionDynamicModalBuilder:g.value},{default:i.withCtx(()=>[...T[8]||(T[8]=[i.createElementVNode("header",null,null,-1),i.createElementVNode("main",null,null,-1)])]),_:1},8,["showDynamicModalBuilder","type","gridColumnAmount","title","description","isLoading","firstButtonText","secondButtonText","thirdButtonText","onFirstModalButtonFunctionDynamicModalBuilder","onSecondModalButtonFunctionDynamicModalBuilder","onThirdModalButtonFunctionDynamicModalBuilder"]),i.createVNode(at,{maxWidth:"5xl",showModalBuilder:h.value,title:"Main Settings",onCloseMainModalBuilder:y,minHeight:"",maxHeight:""},{default:i.withCtx(()=>[i.createVNode(O5)]),_:1},8,["showModalBuilder"])]))}};function ye(r){this.content=r}ye.prototype={constructor:ye,find:function(r){for(var e=0;e<this.content.length;e+=2)if(this.content[e]===r)return e;return-1},get:function(r){var e=this.find(r);return e==-1?void 0:this.content[e+1]},update:function(r,e,t){var o=t&&t!=r?this.remove(t):this,n=o.find(r),a=o.content.slice();return n==-1?a.push(t||r,e):(a[n+1]=e,t&&(a[n]=t)),new ye(a)},remove:function(r){var e=this.find(r);if(e==-1)return this;var t=this.content.slice();return t.splice(e,2),new ye(t)},addToStart:function(r,e){return new ye([r,e].concat(this.remove(r).content))},addToEnd:function(r,e){var t=this.remove(r).content.slice();return t.push(r,e),new ye(t)},addBefore:function(r,e,t){var o=this.remove(e),n=o.content.slice(),a=o.find(r);return n.splice(a==-1?n.length:a,0,e,t),new ye(n)},forEach:function(r){for(var e=0;e<this.content.length;e+=2)r(this.content[e],this.content[e+1])},prepend:function(r){return r=ye.from(r),r.size?new ye(r.content.concat(this.subtract(r).content)):this},append:function(r){return r=ye.from(r),r.size?new ye(this.subtract(r).content.concat(r.content)):this},subtract:function(r){var e=this;r=ye.from(r);for(var t=0;t<r.content.length;t+=2)e=e.remove(r.content[t]);return e},toObject:function(){var r={};return this.forEach(function(e,t){r[e]=t}),r},get size(){return this.content.length>>1}},ye.from=function(r){if(r instanceof ye)return r;var e=[];if(r)for(var t in r)e.push(t,r[t]);return new ye(e)};function uf(r,e,t){for(let o=0;;o++){if(o==r.childCount||o==e.childCount)return r.childCount==e.childCount?null:t;let n=r.child(o),a=e.child(o);if(n==a){t+=n.nodeSize;continue}if(!n.sameMarkup(a))return t;if(n.isText&&n.text!=a.text){for(let l=0;n.text[l]==a.text[l];l++)t++;return t}if(n.content.size||a.content.size){let l=uf(n.content,a.content,t+1);if(l!=null)return l}t+=n.nodeSize}}function gf(r,e,t,o){for(let n=r.childCount,a=e.childCount;;){if(n==0||a==0)return n==a?null:{a:t,b:o};let l=r.child(--n),s=e.child(--a),p=l.nodeSize;if(l==s){t-=p,o-=p;continue}if(!l.sameMarkup(s))return{a:t,b:o};if(l.isText&&l.text!=s.text){let d=0,c=Math.min(l.text.length,s.text.length);for(;d<c&&l.text[l.text.length-d-1]==s.text[s.text.length-d-1];)d++,t--,o--;return{a:t,b:o}}if(l.content.size||s.content.size){let d=gf(l.content,s.content,t-1,o-1);if(d)return d}t-=p,o-=p}}class C{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let o=0;o<e.length;o++)this.size+=e[o].nodeSize}nodesBetween(e,t,o,n=0,a){for(let l=0,s=0;s<t;l++){let p=this.content[l],d=s+p.nodeSize;if(d>e&&o(p,n+s,a||null,l)!==!1&&p.content.size){let c=s+1;p.nodesBetween(Math.max(0,e-c),Math.min(p.content.size,t-c),o,n+c)}s=d}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,o,n){let a="",l=!0;return this.nodesBetween(e,t,(s,p)=>{let d=s.isText?s.text.slice(Math.max(e,p)-p,t-p):s.isLeaf?n?typeof n=="function"?n(s):n:s.type.spec.leafText?s.type.spec.leafText(s):"":"";s.isBlock&&(s.isLeaf&&d||s.isTextblock)&&o&&(l?l=!1:a+=o),a+=d},0),a}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,o=e.firstChild,n=this.content.slice(),a=0;for(t.isText&&t.sameMarkup(o)&&(n[n.length-1]=t.withText(t.text+o.text),a=1);a<e.content.length;a++)n.push(e.content[a]);return new C(n,this.size+e.size)}cut(e,t=this.size){if(e==0&&t==this.size)return this;let o=[],n=0;if(t>e)for(let a=0,l=0;l<t;a++){let s=this.content[a],p=l+s.nodeSize;p>e&&((l<e||p>t)&&(s.isText?s=s.cut(Math.max(0,e-l),Math.min(s.text.length,t-l)):s=s.cut(Math.max(0,e-l-1),Math.min(s.content.size,t-l-1))),o.push(s),n+=s.nodeSize),l=p}return new C(o,n)}cutByIndex(e,t){return e==t?C.empty:e==0&&t==this.content.length?this:new C(this.content.slice(e,t))}replaceChild(e,t){let o=this.content[e];if(o==t)return this;let n=this.content.slice(),a=this.size+t.nodeSize-o.nodeSize;return n[e]=t,new C(n,a)}addToStart(e){return new C([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new C(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw new RangeError("Index "+e+" out of range for "+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,o=0;t<this.content.length;t++){let n=this.content[t];e(n,o,t),o+=n.nodeSize}}findDiffStart(e,t=0){return uf(this,e,t)}findDiffEnd(e,t=this.size,o=e.size){return gf(this,e,t,o)}findIndex(e){if(e==0)return Ro(0,e);if(e==this.size)return Ro(this.content.length,e);if(e>this.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let t=0,o=0;;t++){let n=this.child(t),a=o+n.nodeSize;if(a>=e)return a==e?Ro(t+1,a):Ro(t,o);o=a}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,t){if(!t)return C.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new C(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return C.empty;let t,o=0;for(let n=0;n<e.length;n++){let a=e[n];o+=a.nodeSize,n&&a.isText&&e[n-1].sameMarkup(a)?(t||(t=e.slice(0,n)),t[t.length-1]=a.withText(t[t.length-1].text+a.text)):t&&t.push(a)}return new C(t||e,o)}static from(e){if(!e)return C.empty;if(e instanceof C)return e;if(Array.isArray(e))return this.fromArray(e);if(e.attrs)return new C([e],e.nodeSize);throw new RangeError("Can not convert "+e+" to a Fragment"+(e.nodesBetween?" (looks like multiple versions of prosemirror-model were loaded)":""))}}C.empty=new C([],0);const Pn={index:0,offset:0};function Ro(r,e){return Pn.index=r,Pn.offset=e,Pn}function Fo(r,e){if(r===e)return!0;if(!(r&&typeof r=="object")||!(e&&typeof e=="object"))return!1;let t=Array.isArray(r);if(Array.isArray(e)!=t)return!1;if(t){if(r.length!=e.length)return!1;for(let o=0;o<r.length;o++)if(!Fo(r[o],e[o]))return!1}else{for(let o in r)if(!(o in e)||!Fo(r[o],e[o]))return!1;for(let o in e)if(!(o in r))return!1}return!0}let K=class El{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,o=!1;for(let n=0;n<e.length;n++){let a=e[n];if(this.eq(a))return e;if(this.type.excludes(a.type))t||(t=e.slice(0,n));else{if(a.type.excludes(this.type))return e;!o&&a.type.rank>this.type.rank&&(t||(t=e.slice(0,n)),t.push(this),o=!0),t&&t.push(a)}}return t||(t=e.slice()),o||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&Fo(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Mark.fromJSON");let o=e.marks[t.type];if(!o)throw new RangeError(`There is no mark type ${t.type} in this schema`);let n=o.create(t.attrs);return o.checkAttrs(n.attrs),n}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let o=0;o<e.length;o++)if(!e[o].eq(t[o]))return!1;return!0}static setFrom(e){if(!e||Array.isArray(e)&&e.length==0)return El.none;if(e instanceof El)return[e];let t=e.slice();return t.sort((o,n)=>o.type.rank-n.type.rank),t}};K.none=[];class jo extends Error{}class A{constructor(e,t,o){this.content=e,this.openStart=t,this.openEnd=o}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let o=hf(this.content,e+this.openStart,t);return o&&new A(o,this.openStart,this.openEnd)}removeBetween(e,t){return new A(xf(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return A.empty;let o=t.openStart||0,n=t.openEnd||0;if(typeof o!="number"||typeof n!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new A(C.fromJSON(e,t.content),o,n)}static maxOpen(e,t=!0){let o=0,n=0;for(let a=e.firstChild;a&&!a.isLeaf&&(t||!a.type.spec.isolating);a=a.firstChild)o++;for(let a=e.lastChild;a&&!a.isLeaf&&(t||!a.type.spec.isolating);a=a.lastChild)n++;return new A(e,o,n)}}A.empty=new A(C.empty,0,0);function xf(r,e,t){let{index:o,offset:n}=r.findIndex(e),a=r.maybeChild(o),{index:l,offset:s}=r.findIndex(t);if(n==e||a.isText){if(s!=t&&!r.child(l).isText)throw new RangeError("Removing non-flat range");return r.cut(0,e).append(r.cut(t))}if(o!=l)throw new RangeError("Removing non-flat range");return r.replaceChild(o,a.copy(xf(a.content,e-n-1,t-n-1)))}function hf(r,e,t,o){let{index:n,offset:a}=r.findIndex(e),l=r.maybeChild(n);if(a==e||l.isText)return o&&!o.canReplace(n,n,t)?null:r.cut(0,e).append(t).append(r.cut(e));let s=hf(l.content,e-a-1,t,l);return s&&r.replaceChild(n,l.copy(s))}function sS(r,e,t){if(t.openStart>r.depth)throw new jo("Inserted content deeper than insertion position");if(r.depth-t.openStart!=e.depth-t.openEnd)throw new jo("Inconsistent open depths");return ff(r,e,t,0)}function ff(r,e,t,o){let n=r.index(o),a=r.node(o);if(n==e.index(o)&&o<r.depth-t.openStart){let l=ff(r,e,t,o+1);return a.copy(a.content.replaceChild(n,l))}else if(t.content.size)if(!t.openStart&&!t.openEnd&&r.depth==o&&e.depth==o){let l=r.parent,s=l.content;return Yt(l,s.cut(0,r.parentOffset).append(t.content).append(s.cut(e.parentOffset)))}else{let{start:l,end:s}=pS(t,r);return Yt(a,wf(r,l,s,e,o))}else return Yt(a,qo(r,e,o))}function yf(r,e){if(!e.type.compatibleContent(r.type))throw new jo("Cannot join "+e.type.name+" onto "+r.type.name)}function Ln(r,e,t){let o=r.node(t);return yf(o,e.node(t)),o}function Jt(r,e){let t=e.length-1;t>=0&&r.isText&&r.sameMarkup(e[t])?e[t]=r.withText(e[t].text+r.text):e.push(r)}function Fr(r,e,t,o){let n=(e||r).node(t),a=0,l=e?e.index(t):n.childCount;r&&(a=r.index(t),r.depth>t?a++:r.textOffset&&(Jt(r.nodeAfter,o),a++));for(let s=a;s<l;s++)Jt(n.child(s),o);e&&e.depth==t&&e.textOffset&&Jt(e.nodeBefore,o)}function Yt(r,e){return r.type.checkContent(e),r.copy(e)}function wf(r,e,t,o,n){let a=r.depth>n&&Ln(r,e,n+1),l=o.depth>n&&Ln(t,o,n+1),s=[];return Fr(null,r,n,s),a&&l&&e.index(n)==t.index(n)?(yf(a,l),Jt(Yt(a,wf(r,e,t,o,n+1)),s)):(a&&Jt(Yt(a,qo(r,e,n+1)),s),Fr(e,t,n,s),l&&Jt(Yt(l,qo(t,o,n+1)),s)),Fr(o,null,n,s),new C(s)}function qo(r,e,t){let o=[];if(Fr(null,r,t,o),r.depth>t){let n=Ln(r,e,t+1);Jt(Yt(n,qo(r,e,t+1)),o)}return Fr(e,null,t,o),new C(o)}function pS(r,e){let t=e.depth-r.openStart,n=e.node(t).copy(r.content);for(let a=t-1;a>=0;a--)n=e.node(a).copy(C.from(n));return{start:n.resolveNoCache(r.openStart+t),end:n.resolveNoCache(n.content.size-r.openEnd-t)}}class jr{constructor(e,t,o){this.pos=e,this.path=t,this.parentOffset=o,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let o=this.pos-this.path[this.path.length-1],n=e.child(t);return o?e.child(t).cut(o):n}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let o=this.path[t*3],n=t==0?0:this.path[t*3-1]+1;for(let a=0;a<e;a++)n+=o.child(a).nodeSize;return n}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return K.none;if(this.textOffset)return e.child(t).marks;let o=e.maybeChild(t-1),n=e.maybeChild(t);if(!o){let s=o;o=n,n=s}let a=o.marks;for(var l=0;l<a.length;l++)a[l].type.spec.inclusive===!1&&(!n||!a[l].isInSet(n.marks))&&(a=a[l--].removeFromSet(a));return a}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let o=t.marks,n=e.parent.maybeChild(e.index());for(var a=0;a<o.length;a++)o[a].type.spec.inclusive===!1&&(!n||!o[a].isInSet(n.marks))&&(o=o[a--].removeFromSet(o));return o}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let o=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);o>=0;o--)if(e.pos<=this.end(o)&&(!t||t(this.node(o))))return new Wo(this,e,o);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos<this.pos?e:this}toString(){let e="";for(let t=1;t<=this.depth;t++)e+=(e?"/":"")+this.node(t).type.name+"_"+this.index(t-1);return e+":"+this.parentOffset}static resolve(e,t){if(!(t>=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let o=[],n=0,a=t;for(let l=e;;){let{index:s,offset:p}=l.content.findIndex(a),d=a-p;if(o.push(l,s,n+p),!d||(l=l.child(s),l.isText))break;a=d-1,n+=p+1}return new jr(t,o,a)}static resolveCached(e,t){let o=vf.get(e);if(o)for(let a=0;a<o.elts.length;a++){let l=o.elts[a];if(l.pos==t)return l}else vf.set(e,o=new dS);let n=o.elts[o.i]=jr.resolve(e,t);return o.i=(o.i+1)%cS,n}}class dS{constructor(){this.elts=[],this.i=0}}const cS=12,vf=new WeakMap;class Wo{constructor(e,t,o){this.$from=e,this.$to=t,this.depth=o}get start(){return this.$from.before(this.depth+1)}get end(){return this.$to.after(this.depth+1)}get parent(){return this.$from.node(this.depth)}get startIndex(){return this.$from.index(this.depth)}get endIndex(){return this.$to.indexAfter(this.depth)}}const mS=Object.create(null);let Tt=class Tl{constructor(e,t,o,n=K.none){this.type=e,this.attrs=t,this.marks=n,this.content=o||C.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,o,n=0){this.content.nodesBetween(e,t,o,n,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,"")}textBetween(e,t,o,n){return this.content.textBetween(e,t,o,n)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,o){return this.type==e&&Fo(this.attrs,t||e.defaultAttrs||mS)&&K.sameSet(this.marks,o||K.none)}copy(e=null){return e==this.content?this:new Tl(this.type,this.attrs,e,this.marks)}mark(e){return e==this.marks?this:new Tl(this.type,this.attrs,this.content,e)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,o=!1){if(e==t)return A.empty;let n=this.resolve(e),a=this.resolve(t),l=o?0:n.sharedDepth(t),s=n.start(l),d=n.node(l).content.cut(n.pos-s,a.pos-s);return new A(d,n.depth-l,a.depth-l)}replace(e,t,o){return sS(this.resolve(e),this.resolve(t),o)}nodeAt(e){for(let t=this;;){let{index:o,offset:n}=t.content.findIndex(e);if(t=t.maybeChild(o),!t)return null;if(n==e||t.isText)return t;e-=n+1}}childAfter(e){let{index:t,offset:o}=this.content.findIndex(e);return{node:this.content.maybeChild(t),index:t,offset:o}}childBefore(e){if(e==0)return{node:null,index:0,offset:0};let{index:t,offset:o}=this.content.findIndex(e);if(o<e)return{node:this.content.child(t),index:t,offset:o};let n=this.content.child(t-1);return{node:n,index:t-1,offset:o-n.nodeSize}}resolve(e){return jr.resolveCached(this,e)}resolveNoCache(e){return jr.resolve(this,e)}rangeHasMark(e,t,o){let n=!1;return t>e&&this.nodesBetween(e,t,a=>(o.isInSet(a.marks)&&(n=!0),!n)),n}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Sf(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,o=C.empty,n=0,a=o.childCount){let l=this.contentMatchAt(e).matchFragment(o,n,a),s=l&&l.matchFragment(this.content,t);if(!s||!s.validEnd)return!1;for(let p=n;p<a;p++)if(!this.type.allowsMarks(o.child(p).marks))return!1;return!0}canReplaceWith(e,t,o,n){if(n&&!this.type.allowsMarks(n))return!1;let a=this.contentMatchAt(e).matchType(o),l=a&&a.matchFragment(this.content,t);return l?l.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),this.type.checkAttrs(this.attrs);let e=K.none;for(let t=0;t<this.marks.length;t++){let o=this.marks[t];o.type.checkAttrs(o.attrs),e=o.addToSet(e)}if(!K.sameSet(e,this.marks))throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(t=>t.type.name)}`);this.content.forEach(t=>t.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(t=>t.toJSON())),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let o;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");o=t.marks.map(e.markFromJSON)}if(t.type=="text"){if(typeof t.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(t.text,o)}let n=C.fromJSON(e,t.content),a=e.nodeType(t.type).create(t.attrs,n,o);return a.type.checkAttrs(a.attrs),a}};Tt.prototype.text=void 0;class Uo extends Tt{constructor(e,t,o,n){if(super(e,t,null,n),!o)throw new RangeError("Empty text nodes are not allowed");this.text=o}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Sf(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new Uo(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new Uo(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Sf(r,e){for(let t=r.length-1;t>=0;t--)e=r[t].type.name+"("+e+")";return e}class Qt{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let o=new bS(e,t);if(o.next==null)return Qt.empty;let n=kf(o);o.next&&o.err("Unexpected trailing text");let a=wS(yS(n));return vS(a,o),a}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,o=e.childCount){let n=this;for(let a=t;n&&a<o;a++)n=n.matchType(e.child(a).type);return n}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let o=0;o<e.next.length;o++)if(this.next[t].type==e.next[o].type)return!0;return!1}fillBefore(e,t=!1,o=0){let n=[this];function a(l,s){let p=l.matchFragment(e,o);if(p&&(!t||p.validEnd))return C.from(s.map(d=>d.createAndFill()));for(let d=0;d<l.next.length;d++){let{type:c,next:m}=l.next[d];if(!(c.isText||c.hasRequiredAttrs())&&n.indexOf(m)==-1){n.push(m);let b=a(m,s.concat(c));if(b)return b}}return null}return a(this,[])}findWrapping(e){for(let o=0;o<this.wrapCache.length;o+=2)if(this.wrapCache[o]==e)return this.wrapCache[o+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),o=[{match:this,type:null,via:null}];for(;o.length;){let n=o.shift(),a=n.match;if(a.matchType(e)){let l=[];for(let s=n;s.type;s=s.via)l.push(s.type);return l.reverse()}for(let l=0;l<a.next.length;l++){let{type:s,next:p}=a.next[l];!s.isLeaf&&!s.hasRequiredAttrs()&&!(s.name in t)&&(!n.type||p.validEnd)&&(o.push({match:s.contentMatch,type:s,via:n}),t[s.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(o){e.push(o);for(let n=0;n<o.next.length;n++)e.indexOf(o.next[n].next)==-1&&t(o.next[n].next)}return t(this),e.map((o,n)=>{let a=n+(o.validEnd?"*":" ")+" ";for(let l=0;l<o.next.length;l++)a+=(l?", ":"")+o.next[l].type.name+"->"+e.indexOf(o.next[l].next);return a}).join(`
19
19
  `)}}Qt.empty=new Qt(!0);class bS{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}}function kf(r){let e=[];do e.push(uS(r));while(r.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function uS(r){let e=[];do e.push(gS(r));while(r.next&&r.next!=")"&&r.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function gS(r){let e=fS(r);for(;;)if(r.eat("+"))e={type:"plus",expr:e};else if(r.eat("*"))e={type:"star",expr:e};else if(r.eat("?"))e={type:"opt",expr:e};else if(r.eat("{"))e=xS(r,e);else break;return e}function Cf(r){/\D/.test(r.next)&&r.err("Expected number, got '"+r.next+"'");let e=Number(r.next);return r.pos++,e}function xS(r,e){let t=Cf(r),o=t;return r.eat(",")&&(r.next!="}"?o=Cf(r):o=-1),r.eat("}")||r.err("Unclosed braced range"),{type:"range",min:t,max:o,expr:e}}function hS(r,e){let t=r.nodeTypes,o=t[e];if(o)return[o];let n=[];for(let a in t){let l=t[a];l.isInGroup(e)&&n.push(l)}return n.length==0&&r.err("No node type or group '"+e+"' found"),n}function fS(r){if(r.eat("(")){let e=kf(r);return r.eat(")")||r.err("Missing closing paren"),e}else if(/\W/.test(r.next))r.err("Unexpected token '"+r.next+"'");else{let e=hS(r,r.next).map(t=>(r.inline==null?r.inline=t.isInline:r.inline!=t.isInline&&r.err("Mixing inline and block content"),{type:"name",value:t}));return r.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function yS(r){let e=[[]];return n(a(r,0),t()),e;function t(){return e.push([])-1}function o(l,s,p){let d={term:p,to:s};return e[l].push(d),d}function n(l,s){l.forEach(p=>p.to=s)}function a(l,s){if(l.type=="choice")return l.exprs.reduce((p,d)=>p.concat(a(d,s)),[]);if(l.type=="seq")for(let p=0;;p++){let d=a(l.exprs[p],s);if(p==l.exprs.length-1)return d;n(d,s=t())}else if(l.type=="star"){let p=t();return o(s,p),n(a(l.expr,p),p),[o(p)]}else if(l.type=="plus"){let p=t();return n(a(l.expr,s),p),n(a(l.expr,p),p),[o(p)]}else{if(l.type=="opt")return[o(s)].concat(a(l.expr,s));if(l.type=="range"){let p=s;for(let d=0;d<l.min;d++){let c=t();n(a(l.expr,p),c),p=c}if(l.max==-1)n(a(l.expr,p),p);else for(let d=l.min;d<l.max;d++){let c=t();o(p,c),n(a(l.expr,p),c),p=c}return[o(p)]}else{if(l.type=="name")return[o(s,void 0,l.value)];throw new Error("Unknown expr type")}}}}function Ef(r,e){return e-r}function Tf(r,e){let t=[];return o(e),t.sort(Ef);function o(n){let a=r[n];if(a.length==1&&!a[0].term)return o(a[0].to);t.push(n);for(let l=0;l<a.length;l++){let{term:s,to:p}=a[l];!s&&t.indexOf(p)==-1&&o(p)}}}function wS(r){let e=Object.create(null);return t(Tf(r,0));function t(o){let n=[];o.forEach(l=>{r[l].forEach(({term:s,to:p})=>{if(!s)return;let d;for(let c=0;c<n.length;c++)n[c][0]==s&&(d=n[c][1]);Tf(r,p).forEach(c=>{d||n.push([s,d=[]]),d.indexOf(c)==-1&&d.push(c)})})});let a=e[o.join(",")]=new Qt(o.indexOf(r.length-1)>-1);for(let l=0;l<n.length;l++){let s=n[l][1].sort(Ef);a.next.push({type:n[l][0],next:e[s.join(",")]||t(s)})}return a}}function vS(r,e){for(let t=0,o=[r];t<o.length;t++){let n=o[t],a=!n.validEnd,l=[];for(let s=0;s<n.next.length;s++){let{type:p,next:d}=n.next[s];l.push(p.name),a&&!(p.isText||p.hasRequiredAttrs())&&(a=!1),o.indexOf(d)==-1&&o.push(d)}a&&e.err("Only non-generatable nodes ("+l.join(", ")+") in a required position (see https://prosemirror.net/docs/guide/#generatable)")}}function Bf(r){let e=Object.create(null);for(let t in r){let o=r[t];if(!o.hasDefault)return null;e[t]=o.default}return e}function Mf(r,e){let t=Object.create(null);for(let o in r){let n=e&&e[o];if(n===void 0){let a=r[o];if(a.hasDefault)n=a.default;else throw new RangeError("No value supplied for attribute "+o)}t[o]=n}return t}function Nf(r,e,t,o){for(let n in e)if(!(n in r))throw new RangeError(`Unsupported attribute ${n} for ${t} of type ${n}`);for(let n in r){let a=r[n];a.validate&&a.validate(e[n])}}function Pf(r,e){let t=Object.create(null);if(e)for(let o in e)t[o]=new kS(r,o,e[o]);return t}let Lf=class Xv{constructor(e,t,o){this.name=e,this.schema=t,this.spec=o,this.markSet=null,this.groups=o.group?o.group.split(" "):[],this.attrs=Pf(e,o.attrs),this.defaultAttrs=Bf(this.attrs),this.contentMatch=null,this.inlineContent=null,this.isBlock=!(o.inline||e=="text"),this.isText=e=="text"}get isInline(){return!this.isBlock}get isTextblock(){return this.isBlock&&this.inlineContent}get isLeaf(){return this.contentMatch==Qt.empty}get isAtom(){return this.isLeaf||!!this.spec.atom}isInGroup(e){return this.groups.indexOf(e)>-1}get whitespace(){return this.spec.whitespace||(this.spec.code?"pre":"normal")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:Mf(this.attrs,e)}create(e=null,t,o){if(this.isText)throw new Error("NodeType.create can't construct text nodes");return new Tt(this,this.computeAttrs(e),C.from(t),K.setFrom(o))}createChecked(e=null,t,o){return t=C.from(t),this.checkContent(t),new Tt(this,this.computeAttrs(e),t,K.setFrom(o))}createAndFill(e=null,t,o){if(e=this.computeAttrs(e),t=C.from(t),t.size){let l=this.contentMatch.fillBefore(t);if(!l)return null;t=l.append(t)}let n=this.contentMatch.matchFragment(t),a=n&&n.fillBefore(C.empty,!0);return a?new Tt(this,e,t.append(a),K.setFrom(o)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let o=0;o<e.childCount;o++)if(!this.allowsMarks(e.child(o).marks))return!1;return!0}checkContent(e){if(!this.validContent(e))throw new RangeError(`Invalid content for node ${this.name}: ${e.toString().slice(0,50)}`)}checkAttrs(e){Nf(this.attrs,e,"node",this.name)}allowsMarkType(e){return this.markSet==null||this.markSet.indexOf(e)>-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;t<e.length;t++)if(!this.allowsMarkType(e[t].type))return!1;return!0}allowedMarks(e){if(this.markSet==null)return e;let t;for(let o=0;o<e.length;o++)this.allowsMarkType(e[o].type)?t&&t.push(e[o]):t||(t=e.slice(0,o));return t?t.length?t:K.none:e}static compile(e,t){let o=Object.create(null);e.forEach((a,l)=>o[a]=new Xv(a,t,l));let n=t.spec.topNode||"doc";if(!o[n])throw new RangeError("Schema is missing its top node type ('"+n+"')");if(!o.text)throw new RangeError("Every schema needs a 'text' type");for(let a in o.text.attrs)throw new RangeError("The text node type should not have attributes");return o}};function SS(r,e,t){let o=t.split("|");return n=>{let a=n===null?"null":typeof n;if(o.indexOf(a)<0)throw new RangeError(`Expected value of type ${o} for attribute ${e} on type ${r}, got ${a}`)}}class kS{constructor(e,t,o){this.hasDefault=Object.prototype.hasOwnProperty.call(o,"default"),this.default=o.default,this.validate=typeof o.validate=="string"?SS(e,t,o.validate):o.validate}get isRequired(){return!this.hasDefault}}class Go{constructor(e,t,o,n){this.name=e,this.rank=t,this.schema=o,this.spec=n,this.attrs=Pf(e,n.attrs),this.excluded=null;let a=Bf(this.attrs);this.instance=a?new K(this,a):null}create(e=null){return!e&&this.instance?this.instance:new K(this,Mf(this.attrs,e))}static compile(e,t){let o=Object.create(null),n=0;return e.forEach((a,l)=>o[a]=new Go(a,n++,t,l)),o}removeFromSet(e){for(var t=0;t<e.length;t++)e[t].type==this&&(e=e.slice(0,t).concat(e.slice(t+1)),t--);return e}isInSet(e){for(let t=0;t<e.length;t++)if(e[t].type==this)return e[t]}checkAttrs(e){Nf(this.attrs,e,"mark",this.name)}excludes(e){return this.excluded.indexOf(e)>-1}}class Af{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let t=this.spec={};for(let n in e)t[n]=e[n];t.nodes=ye.from(e.nodes),t.marks=ye.from(e.marks||{}),this.nodes=Lf.compile(this.spec.nodes,this),this.marks=Go.compile(this.spec.marks,this);let o=Object.create(null);for(let n in this.nodes){if(n in this.marks)throw new RangeError(n+" can not be both a node and a mark");let a=this.nodes[n],l=a.spec.content||"",s=a.spec.marks;if(a.contentMatch=o[l]||(o[l]=Qt.parse(l,this.nodes)),a.inlineContent=a.contentMatch.inlineContent,a.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError("Multiple linebreak nodes defined");if(!a.isInline||!a.isLeaf)throw new RangeError("Linebreak replacement nodes must be inline leaf nodes");this.linebreakReplacement=a}a.markSet=s=="_"?null:s?Df(this,s.split(" ")):s==""||!a.inlineContent?[]:null}for(let n in this.marks){let a=this.marks[n],l=a.spec.excludes;a.excluded=l==null?[a]:l==""?[]:Df(this,l.split(" "))}this.nodeFromJSON=n=>Tt.fromJSON(this,n),this.markFromJSON=n=>K.fromJSON(this,n),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,t=null,o,n){if(typeof e=="string")e=this.nodeType(e);else if(e instanceof Lf){if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}else throw new RangeError("Invalid node type: "+e);return e.createChecked(t,o,n)}text(e,t){let o=this.nodes.text;return new Uo(o,o.defaultAttrs,e,K.setFrom(t))}mark(e,t){return typeof e=="string"&&(e=this.marks[e]),e.create(t)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t}}function Df(r,e){let t=[];for(let o=0;o<e.length;o++){let n=e[o],a=r.marks[n],l=a;if(a)t.push(a);else for(let s in r.marks){let p=r.marks[s];(n=="_"||p.spec.group&&p.spec.group.split(" ").indexOf(n)>-1)&&t.push(l=p)}if(!l)throw new SyntaxError("Unknown mark type: '"+e[o]+"'")}return t}function CS(r){return r.tag!=null}function ES(r){return r.style!=null}let qr=class Bl{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let o=this.matchedStyles=[];t.forEach(n=>{if(CS(n))this.tags.push(n);else if(ES(n)){let a=/[^=]*/.exec(n.style)[0];o.indexOf(a)<0&&o.push(a),this.styles.push(n)}}),this.normalizeLists=!this.tags.some(n=>{if(!/^(ul|ol)\b/.test(n.tag)||!n.node)return!1;let a=e.nodes[n.node];return a.contentMatch.matchType(a)})}parse(e,t={}){let o=new Of(this,t,!1);return o.addAll(e,K.none,t.from,t.to),o.finish()}parseSlice(e,t={}){let o=new Of(this,t,!0);return o.addAll(e,K.none,t.from,t.to),A.maxOpen(o.finish())}matchTag(e,t,o){for(let n=o?this.tags.indexOf(o)+1:0;n<this.tags.length;n++){let a=this.tags[n];if(MS(e,a.tag)&&(a.namespace===void 0||e.namespaceURI==a.namespace)&&(!a.context||t.matchesContext(a.context))){if(a.getAttrs){let l=a.getAttrs(e);if(l===!1)continue;a.attrs=l||void 0}return a}}}matchStyle(e,t,o,n){for(let a=n?this.styles.indexOf(n)+1:0;a<this.styles.length;a++){let l=this.styles[a],s=l.style;if(!(s.indexOf(e)!=0||l.context&&!o.matchesContext(l.context)||s.length>e.length&&(s.charCodeAt(e.length)!=61||s.slice(e.length+1)!=t))){if(l.getAttrs){let p=l.getAttrs(t);if(p===!1)continue;l.attrs=p||void 0}return l}}}static schemaRules(e){let t=[];function o(n){let a=n.priority==null?50:n.priority,l=0;for(;l<t.length;l++){let s=t[l];if((s.priority==null?50:s.priority)<a)break}t.splice(l,0,n)}for(let n in e.marks){let a=e.marks[n].spec.parseDOM;a&&a.forEach(l=>{o(l=_f(l)),l.mark||l.ignore||l.clearMark||(l.mark=n)})}for(let n in e.nodes){let a=e.nodes[n].spec.parseDOM;a&&a.forEach(l=>{o(l=_f(l)),l.node||l.ignore||l.mark||(l.node=n)})}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new Bl(e,Bl.schemaRules(e)))}};const Vf={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},TS={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},If={ol:!0,ul:!0},Wr=1,An=2,Ur=4;function zf(r,e,t){return e!=null?(e?Wr:0)|(e==="full"?An:0):r&&r.whitespace=="pre"?Wr|An:t&~Ur}class Ko{constructor(e,t,o,n,a,l){this.type=e,this.attrs=t,this.marks=o,this.solid=n,this.options=l,this.content=[],this.activeMarks=K.none,this.match=a||(l&Ur?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(C.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let o=this.type.contentMatch,n;return(n=o.findWrapping(e.type))?(this.match=o,n):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&Wr)){let o=this.content[this.content.length-1],n;if(o&&o.isText&&(n=/[ \t\r\n\u000c]+$/.exec(o.text))){let a=o;o.text.length==n[0].length?this.content.pop():this.content[this.content.length-1]=a.withText(a.text.slice(0,a.text.length-n[0].length))}}let t=C.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(C.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!Vf.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}}class Of{constructor(e,t,o){this.parser=e,this.options=t,this.isOpen=o,this.open=0,this.localPreserveWS=!1;let n=t.topNode,a,l=zf(null,t.preserveWhitespace,0)|(o?Ur:0);n?a=new Ko(n.type,n.attrs,K.none,!0,t.topMatch||n.type.contentMatch,l):o?a=new Ko(null,null,K.none,!0,null,l):a=new Ko(e.schema.topNodeType,null,K.none,!0,null,l),this.nodes=[a],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){e.nodeType==3?this.addTextNode(e,t):e.nodeType==1&&this.addElement(e,t)}addTextNode(e,t){let o=e.nodeValue,n=this.top,a=n.options&An?"full":this.localPreserveWS||(n.options&Wr)>0;if(a==="full"||n.inlineContext(e)||/[^ \t\r\n\u000c]/.test(o)){if(a)a!=="full"?o=o.replace(/\r?\n|\r/g," "):o=o.replace(/\r\n?/g,`
20
20
  `);else if(o=o.replace(/[ \t\r\n\u000c]+/g," "),/^[ \t\r\n\u000c]/.test(o)&&this.open==this.nodes.length-1){let l=n.content[n.content.length-1],s=e.previousSibling;(!l||s&&s.nodeName=="BR"||l.isText&&/[ \t\r\n\u000c]$/.test(l.text))&&(o=o.slice(1))}o&&this.insertNode(this.parser.schema.text(o),t,!/\S/.test(o)),this.findInText(e)}else this.findInside(e)}addElement(e,t,o){let n=this.localPreserveWS,a=this.top;(e.tagName=="PRE"||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let l=e.nodeName.toLowerCase(),s;If.hasOwnProperty(l)&&this.parser.normalizeLists&&BS(e);let p=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(s=this.parser.matchTag(e,this,o));e:if(p?p.ignore:TS.hasOwnProperty(l))this.findInside(e),this.ignoreFallback(e,t);else if(!p||p.skip||p.closeParent){p&&p.closeParent?this.open=Math.max(0,this.open-1):p&&p.skip.nodeType&&(e=p.skip);let d,c=this.needsBlock;if(Vf.hasOwnProperty(l))a.content.length&&a.content[0].isInline&&this.open&&(this.open--,a=this.top),d=!0,a.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break e}let m=p&&p.skip?t:this.readStyles(e,t);m&&this.addAll(e,m),d&&this.sync(a),this.needsBlock=c}else{let d=this.readStyles(e,t);d&&this.addElementByRule(e,p,d,p.consuming===!1?s:void 0)}this.localPreserveWS=n}leafFallback(e,t){e.nodeName=="BR"&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(`
21
21
  `),t)}ignoreFallback(e,t){e.nodeName=="BR"&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text("-"),t,!0)}readStyles(e,t){let o=e.style;if(o&&o.length)for(let n=0;n<this.parser.matchedStyles.length;n++){let a=this.parser.matchedStyles[n],l=o.getPropertyValue(a);if(l)for(let s=void 0;;){let p=this.parser.matchStyle(a,l,this,s);if(!p)break;if(p.ignore)return null;if(p.clearMark?t=t.filter(d=>!p.clearMark(d)):t=t.concat(this.parser.schema.marks[p.mark].create(p.attrs)),p.consuming===!1)s=p;else break}}return t}addElementByRule(e,t,o,n){let a,l;if(t.node)if(l=this.parser.schema.nodes[t.node],l.isLeaf)this.insertNode(l.create(t.attrs),o,e.nodeName=="BR")||this.leafFallback(e,o);else{let p=this.enter(l,t.attrs||null,o,t.preserveWhitespace);p&&(a=!0,o=p)}else{let p=this.parser.schema.marks[t.mark];o=o.concat(p.create(t.attrs))}let s=this.top;if(l&&l.isLeaf)this.findInside(e);else if(n)this.addElement(e,o,n);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(p=>this.insertNode(p,o,!1));else{let p=e;typeof t.contentElement=="string"?p=e.querySelector(t.contentElement):typeof t.contentElement=="function"?p=t.contentElement(e):t.contentElement&&(p=t.contentElement),this.findAround(e,p,!0),this.addAll(p,o),this.findAround(e,p,!1)}a&&this.sync(s)&&this.open--}addAll(e,t,o,n){let a=o||0;for(let l=o?e.childNodes[o]:e.firstChild,s=n==null?null:e.childNodes[n];l!=s;l=l.nextSibling,++a)this.findAtPoint(e,a),this.addDOM(l,t);this.findAtPoint(e,a)}findPlace(e,t,o){let n,a;for(let l=this.open,s=0;l>=0;l--){let p=this.nodes[l],d=p.findWrapping(e);if(d&&(!n||n.length>d.length+s)&&(n=d,a=p,!d.length))break;if(p.solid){if(o)break;s+=2}}if(!n)return null;this.sync(a);for(let l=0;l<n.length;l++)t=this.enterInner(n[l],null,t,!1);return t}insertNode(e,t,o){if(e.isInline&&this.needsBlock&&!this.top.type){let a=this.textblockFromContext();a&&(t=this.enterInner(a,null,t))}let n=this.findPlace(e,t,o);if(n){this.closeExtra();let a=this.top;a.match&&(a.match=a.match.matchType(e.type));let l=K.none;for(let s of n.concat(e.marks))(a.type?a.type.allowsMarkType(s.type):Hf(s.type,e.type))&&(l=s.addToSet(l));return a.content.push(e.mark(l)),!0}return!1}enter(e,t,o,n){let a=this.findPlace(e.create(t),o,!1);return a&&(a=this.enterInner(e,t,o,!0,n)),a}enterInner(e,t,o,n=!1,a){this.closeExtra();let l=this.top;l.match=l.match&&l.match.matchType(e);let s=zf(e,a,l.options);l.options&Ur&&l.content.length==0&&(s|=Ur);let p=K.none;return o=o.filter(d=>(l.type?l.type.allowsMarkType(d.type):Hf(d.type,e))?(p=d.addToSet(p),!1):!0),this.nodes.push(new Ko(e,t,p,n,null,s)),this.open++,o}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--){if(this.nodes[t]==e)return this.open=t,!0;this.localPreserveWS&&(this.nodes[t].options|=Wr)}return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let o=this.nodes[t].content;for(let n=o.length-1;n>=0;n--)e+=o[n].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let o=0;o<this.find.length;o++)this.find[o].node==e&&this.find[o].offset==t&&(this.find[o].pos=this.currentPos)}findInside(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].pos==null&&e.nodeType==1&&e.contains(this.find[t].node)&&(this.find[t].pos=this.currentPos)}findAround(e,t,o){if(e!=t&&this.find)for(let n=0;n<this.find.length;n++)this.find[n].pos==null&&e.nodeType==1&&e.contains(this.find[n].node)&&t.compareDocumentPosition(this.find[n].node)&(o?2:4)&&(this.find[n].pos=this.currentPos)}findInText(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].node==e&&(this.find[t].pos=this.currentPos-(e.nodeValue.length-this.find[t].offset))}matchesContext(e){if(e.indexOf("|")>-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split("/"),o=this.options.context,n=!this.isOpen&&(!o||o.parent.type==this.nodes[0].type),a=-(o?o.depth+1:0)+(n?0:1),l=(s,p)=>{for(;s>=0;s--){let d=t[s];if(d==""){if(s==t.length-1||s==0)continue;for(;p>=a;p--)if(l(s-1,p))return!0;return!1}else{let c=p>0||p==0&&n?this.nodes[p].type:o&&p>=a?o.node(p-a).type:null;if(!c||c.name!=d&&!c.isInGroup(d))return!1;p--}}return!0};return l(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let o=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(o&&o.isTextblock&&o.defaultAttrs)return o}for(let t in this.parser.schema.nodes){let o=this.parser.schema.nodes[t];if(o.isTextblock&&o.defaultAttrs)return o}}}function BS(r){for(let e=r.firstChild,t=null;e;e=e.nextSibling){let o=e.nodeType==1?e.nodeName.toLowerCase():null;o&&If.hasOwnProperty(o)&&t?(t.appendChild(e),e=t):o=="li"?t=e:o&&(t=null)}}function MS(r,e){return(r.matches||r.msMatchesSelector||r.webkitMatchesSelector||r.mozMatchesSelector).call(r,e)}function _f(r){let e={};for(let t in r)e[t]=r[t];return e}function Hf(r,e){let t=e.schema.nodes;for(let o in t){let n=t[o];if(!n.allowsMarkType(r))continue;let a=[],l=s=>{a.push(s);for(let p=0;p<s.edgeCount;p++){let{type:d,next:c}=s.edge(p);if(d==e||a.indexOf(c)<0&&l(c))return!0}};if(l(n.contentMatch))return!0}}class Xt{constructor(e,t){this.nodes=e,this.marks=t}serializeFragment(e,t={},o){o||(o=Dn(t).createDocumentFragment());let n=o,a=[];return e.forEach(l=>{if(a.length||l.marks.length){let s=0,p=0;for(;s<a.length&&p<l.marks.length;){let d=l.marks[p];if(!this.marks[d.type.name]){p++;continue}if(!d.eq(a[s][0])||d.type.spec.spanning===!1)break;s++,p++}for(;s<a.length;)n=a.pop()[1];for(;p<l.marks.length;){let d=l.marks[p++],c=this.serializeMark(d,l.isInline,t);c&&(a.push([d,n]),n.appendChild(c.dom),n=c.contentDOM||c.dom)}}n.appendChild(this.serializeNodeInner(l,t))}),o}serializeNodeInner(e,t){let{dom:o,contentDOM:n}=Jo(Dn(t),this.nodes[e.type.name](e),null,e.attrs);if(n){if(e.isLeaf)throw new RangeError("Content hole not allowed in a leaf node spec");this.serializeFragment(e.content,t,n)}return o}serializeNode(e,t={}){let o=this.serializeNodeInner(e,t);for(let n=e.marks.length-1;n>=0;n--){let a=this.serializeMark(e.marks[n],e.isInline,t);a&&((a.contentDOM||a.dom).appendChild(o),o=a.dom)}return o}serializeMark(e,t,o={}){let n=this.marks[e.type.name];return n&&Jo(Dn(o),n(e,t),null,e.attrs)}static renderSpec(e,t,o=null,n){return Jo(e,t,o,n)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new Xt(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=Rf(e.nodes);return t.text||(t.text=o=>o.text),t}static marksFromSchema(e){return Rf(e.marks)}}function Rf(r){let e={};for(let t in r){let o=r[t].spec.toDOM;o&&(e[t]=o)}return e}function Dn(r){return r.document||window.document}const Ff=new WeakMap;function NS(r){let e=Ff.get(r);return e===void 0&&Ff.set(r,e=PS(r)),e}function PS(r){let e=null;function t(o){if(o&&typeof o=="object")if(Array.isArray(o))if(typeof o[0]=="string")e||(e=[]),e.push(o);else for(let n=0;n<o.length;n++)t(o[n]);else for(let n in o)t(o[n])}return t(r),e}function Jo(r,e,t,o){if(typeof e=="string")return{dom:r.createTextNode(e)};if(e.nodeType!=null)return{dom:e};if(e.dom&&e.dom.nodeType!=null)return e;let n=e[0],a;if(typeof n!="string")throw new RangeError("Invalid array passed to renderSpec");if(o&&(a=NS(o))&&a.indexOf(e)>-1)throw new RangeError("Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.");let l=n.indexOf(" ");l>0&&(t=n.slice(0,l),n=n.slice(l+1));let s,p=t?r.createElementNS(t,n):r.createElement(n),d=e[1],c=1;if(d&&typeof d=="object"&&d.nodeType==null&&!Array.isArray(d)){c=2;for(let m in d)if(d[m]!=null){let b=m.indexOf(" ");b>0?p.setAttributeNS(m.slice(0,b),m.slice(b+1),d[m]):m=="style"&&p.style?p.style.cssText=d[m]:p.setAttribute(m,d[m])}}for(let m=c;m<e.length;m++){let b=e[m];if(b===0){if(m<e.length-1||m>c)throw new RangeError("Content hole must be the only child of its parent node");return{dom:p,contentDOM:p}}else{let{dom:u,contentDOM:g}=Jo(r,b,t,o);if(p.appendChild(u),g){if(s)throw new RangeError("Multiple content holes");s=g}}}return{dom:p,contentDOM:s}}const jf=65535,qf=Math.pow(2,16);function LS(r,e){return r+e*qf}function Wf(r){return r&jf}function AS(r){return(r-(r&jf))/qf}const Uf=1,Gf=2,Yo=4,Kf=8;class Vn{constructor(e,t,o){this.pos=e,this.delInfo=t,this.recover=o}get deleted(){return(this.delInfo&Kf)>0}get deletedBefore(){return(this.delInfo&(Uf|Yo))>0}get deletedAfter(){return(this.delInfo&(Gf|Yo))>0}get deletedAcross(){return(this.delInfo&Yo)>0}}class Ve{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&Ve.empty)return Ve.empty}recover(e){let t=0,o=Wf(e);if(!this.inverted)for(let n=0;n<o;n++)t+=this.ranges[n*3+2]-this.ranges[n*3+1];return this.ranges[o*3]+t+AS(e)}mapResult(e,t=1){return this._map(e,t,!1)}map(e,t=1){return this._map(e,t,!0)}_map(e,t,o){let n=0,a=this.inverted?2:1,l=this.inverted?1:2;for(let s=0;s<this.ranges.length;s+=3){let p=this.ranges[s]-(this.inverted?n:0);if(p>e)break;let d=this.ranges[s+a],c=this.ranges[s+l],m=p+d;if(e<=m){let b=d?e==p?-1:e==m?1:t:t,u=p+n+(b<0?0:c);if(o)return u;let g=e==(t<0?p:m)?null:LS(s/3,e-p),x=e==p?Gf:e==m?Uf:Yo;return(t<0?e!=p:e!=m)&&(x|=Kf),new Vn(u,x,g)}n+=c-d}return o?e+n:new Vn(e+n,0,null)}touches(e,t){let o=0,n=Wf(t),a=this.inverted?2:1,l=this.inverted?1:2;for(let s=0;s<this.ranges.length;s+=3){let p=this.ranges[s]-(this.inverted?o:0);if(p>e)break;let d=this.ranges[s+a],c=p+d;if(e<=c&&s==n*3)return!0;o+=this.ranges[s+l]-d}return!1}forEach(e){let t=this.inverted?2:1,o=this.inverted?1:2;for(let n=0,a=0;n<this.ranges.length;n+=3){let l=this.ranges[n],s=l-(this.inverted?a:0),p=l+(this.inverted?0:a),d=this.ranges[n+t],c=this.ranges[n+o];e(s,s+d,p,p+c),a+=c-d}}invert(){return new Ve(this.ranges,!this.inverted)}toString(){return(this.inverted?"-":"")+JSON.stringify(this.ranges)}static offset(e){return e==0?Ve.empty:new Ve(e<0?[0,-e,0]:[0,0,e])}}Ve.empty=new Ve([]);class Gr{constructor(e,t,o=0,n=e?e.length:0){this.mirror=t,this.from=o,this.to=n,this._maps=e||[],this.ownData=!(e||t)}get maps(){return this._maps}slice(e=0,t=this.maps.length){return new Gr(this._maps,this.mirror,e,t)}appendMap(e,t){this.ownData||(this._maps=this._maps.slice(),this.mirror=this.mirror&&this.mirror.slice(),this.ownData=!0),this.to=this._maps.push(e),t!=null&&this.setMirror(this._maps.length-1,t)}appendMapping(e){for(let t=0,o=this._maps.length;t<e._maps.length;t++){let n=e.getMirror(t);this.appendMap(e._maps[t],n!=null&&n<t?o+n:void 0)}}getMirror(e){if(this.mirror){for(let t=0;t<this.mirror.length;t++)if(this.mirror[t]==e)return this.mirror[t+(t%2?-1:1)]}}setMirror(e,t){this.mirror||(this.mirror=[]),this.mirror.push(e,t)}appendMappingInverted(e){for(let t=e.maps.length-1,o=this._maps.length+e._maps.length;t>=0;t--){let n=e.getMirror(t);this.appendMap(e._maps[t].invert(),n!=null&&n>t?o-n-1:void 0)}}invert(){let e=new Gr;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let o=this.from;o<this.to;o++)e=this._maps[o].map(e,t);return e}mapResult(e,t=1){return this._map(e,t,!1)}_map(e,t,o){let n=0;for(let a=this.from;a<this.to;a++){let l=this._maps[a],s=l.mapResult(e,t);if(s.recover!=null){let p=this.getMirror(a);if(p!=null&&p>a&&p<this.to){a=p,e=this._maps[p].recover(s.recover);continue}}n|=s.delInfo,e=s.pos}return o?e:new Vn(e,n,null)}}const In=Object.create(null);class ke{getMap(){return Ve.empty}merge(e){return null}static fromJSON(e,t){if(!t||!t.stepType)throw new RangeError("Invalid input for Step.fromJSON");let o=In[t.stepType];if(!o)throw new RangeError(`No step type ${t.stepType} defined`);return o.fromJSON(e,t)}static jsonID(e,t){if(e in In)throw new RangeError("Duplicate use of step JSON ID "+e);return In[e]=t,t.prototype.jsonID=e,t}}class se{constructor(e,t){this.doc=e,this.failed=t}static ok(e){return new se(e,null)}static fail(e){return new se(null,e)}static fromReplace(e,t,o,n){try{return se.ok(e.replace(t,o,n))}catch(a){if(a instanceof jo)return se.fail(a.message);throw a}}}function zn(r,e,t){let o=[];for(let n=0;n<r.childCount;n++){let a=r.child(n);a.content.size&&(a=a.copy(zn(a.content,e,a))),a.isInline&&(a=e(a,t,n)),o.push(a)}return C.fromArray(o)}class Bt extends ke{constructor(e,t,o){super(),this.from=e,this.to=t,this.mark=o}apply(e){let t=e.slice(this.from,this.to),o=e.resolve(this.from),n=o.node(o.sharedDepth(this.to)),a=new A(zn(t.content,(l,s)=>!l.isAtom||!s.type.allowsMarkType(this.mark.type)?l:l.mark(this.mark.addToSet(l.marks)),n),t.openStart,t.openEnd);return se.fromReplace(e,this.from,this.to,a)}invert(){return new Je(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),o=e.mapResult(this.to,-1);return t.deleted&&o.deleted||t.pos>=o.pos?null:new Bt(t.pos,o.pos,this.mark)}merge(e){return e instanceof Bt&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new Bt(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new Bt(t.from,t.to,e.markFromJSON(t.mark))}}ke.jsonID("addMark",Bt);class Je extends ke{constructor(e,t,o){super(),this.from=e,this.to=t,this.mark=o}apply(e){let t=e.slice(this.from,this.to),o=new A(zn(t.content,n=>n.mark(this.mark.removeFromSet(n.marks)),e),t.openStart,t.openEnd);return se.fromReplace(e,this.from,this.to,o)}invert(){return new Bt(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),o=e.mapResult(this.to,-1);return t.deleted&&o.deleted||t.pos>=o.pos?null:new Je(t.pos,o.pos,this.mark)}merge(e){return e instanceof Je&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new Je(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new Je(t.from,t.to,e.markFromJSON(t.mark))}}ke.jsonID("removeMark",Je);class Mt extends ke{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return se.fail("No node at mark step's position");let o=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return se.fromReplace(e,this.pos,this.pos+1,new A(C.from(o),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let o=this.mark.addToSet(t.marks);if(o.length==t.marks.length){for(let n=0;n<t.marks.length;n++)if(!t.marks[n].isInSet(o))return new Mt(this.pos,t.marks[n]);return new Mt(this.pos,this.mark)}}return new Zt(this.pos,this.mark)}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new Mt(t.pos,this.mark)}toJSON(){return{stepType:"addNodeMark",pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for AddNodeMarkStep.fromJSON");return new Mt(t.pos,e.markFromJSON(t.mark))}}ke.jsonID("addNodeMark",Mt);class Zt extends ke{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return se.fail("No node at mark step's position");let o=t.type.create(t.attrs,null,this.mark.removeFromSet(t.marks));return se.fromReplace(e,this.pos,this.pos+1,new A(C.from(o),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);return!t||!this.mark.isInSet(t.marks)?this:new Mt(this.pos,this.mark)}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new Zt(t.pos,this.mark)}toJSON(){return{stepType:"removeNodeMark",pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for RemoveNodeMarkStep.fromJSON");return new Zt(t.pos,e.markFromJSON(t.mark))}}ke.jsonID("removeNodeMark",Zt);class me extends ke{constructor(e,t,o,n=!1){super(),this.from=e,this.to=t,this.slice=o,this.structure=n}apply(e){return this.structure&&On(e,this.from,this.to)?se.fail("Structure replace would overwrite content"):se.fromReplace(e,this.from,this.to,this.slice)}getMap(){return new Ve([this.from,this.to-this.from,this.slice.size])}invert(e){return new me(this.from,this.from+this.slice.size,e.slice(this.from,this.to))}map(e){let t=e.mapResult(this.from,1),o=e.mapResult(this.to,-1);return t.deletedAcross&&o.deletedAcross?null:new me(t.pos,Math.max(t.pos,o.pos),this.slice,this.structure)}merge(e){if(!(e instanceof me)||e.structure||this.structure)return null;if(this.from+this.slice.size==e.from&&!this.slice.openEnd&&!e.slice.openStart){let t=this.slice.size+e.slice.size==0?A.empty:new A(this.slice.content.append(e.slice.content),this.slice.openStart,e.slice.openEnd);return new me(this.from,this.to+(e.to-e.from),t,this.structure)}else if(e.to==this.from&&!this.slice.openStart&&!e.slice.openEnd){let t=this.slice.size+e.slice.size==0?A.empty:new A(e.slice.content.append(this.slice.content),e.slice.openStart,this.slice.openEnd);return new me(e.from,this.to,t,this.structure)}else return null}toJSON(){let e={stepType:"replace",from:this.from,to:this.to};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for ReplaceStep.fromJSON");return new me(t.from,t.to,A.fromJSON(e,t.slice),!!t.structure)}}ke.jsonID("replace",me);class be extends ke{constructor(e,t,o,n,a,l,s=!1){super(),this.from=e,this.to=t,this.gapFrom=o,this.gapTo=n,this.slice=a,this.insert=l,this.structure=s}apply(e){if(this.structure&&(On(e,this.from,this.gapFrom)||On(e,this.gapTo,this.to)))return se.fail("Structure gap-replace would overwrite content");let t=e.slice(this.gapFrom,this.gapTo);if(t.openStart||t.openEnd)return se.fail("Gap is not a flat range");let o=this.slice.insertAt(this.insert,t.content);return o?se.fromReplace(e,this.from,this.to,o):se.fail("Content does not fit in gap")}getMap(){return new Ve([this.from,this.gapFrom-this.from,this.insert,this.gapTo,this.to-this.gapTo,this.slice.size-this.insert])}invert(e){let t=this.gapTo-this.gapFrom;return new be(this.from,this.from+this.slice.size+t,this.from+this.insert,this.from+this.insert+t,e.slice(this.from,this.to).removeBetween(this.gapFrom-this.from,this.gapTo-this.from),this.gapFrom-this.from,this.structure)}map(e){let t=e.mapResult(this.from,1),o=e.mapResult(this.to,-1),n=this.from==this.gapFrom?t.pos:e.map(this.gapFrom,-1),a=this.to==this.gapTo?o.pos:e.map(this.gapTo,1);return t.deletedAcross&&o.deletedAcross||n<t.pos||a>o.pos?null:new be(t.pos,o.pos,n,a,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number"||typeof t.gapFrom!="number"||typeof t.gapTo!="number"||typeof t.insert!="number")throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new be(t.from,t.to,t.gapFrom,t.gapTo,A.fromJSON(e,t.slice),t.insert,!!t.structure)}}ke.jsonID("replaceAround",be);function On(r,e,t){let o=r.resolve(e),n=t-e,a=o.depth;for(;n>0&&a>0&&o.indexAfter(a)==o.node(a).childCount;)a--,n--;if(n>0){let l=o.node(a).maybeChild(o.indexAfter(a));for(;n>0;){if(!l||l.isLeaf)return!0;l=l.firstChild,n--}}return!1}function DS(r,e,t,o){let n=[],a=[],l,s;r.doc.nodesBetween(e,t,(p,d,c)=>{if(!p.isInline)return;let m=p.marks;if(!o.isInSet(m)&&c.type.allowsMarkType(o.type)){let b=Math.max(d,e),u=Math.min(d+p.nodeSize,t),g=o.addToSet(m);for(let x=0;x<m.length;x++)m[x].isInSet(g)||(l&&l.to==b&&l.mark.eq(m[x])?l.to=u:n.push(l=new Je(b,u,m[x])));s&&s.to==b?s.to=u:a.push(s=new Bt(b,u,o))}}),n.forEach(p=>r.step(p)),a.forEach(p=>r.step(p))}function VS(r,e,t,o){let n=[],a=0;r.doc.nodesBetween(e,t,(l,s)=>{if(!l.isInline)return;a++;let p=null;if(o instanceof Go){let d=l.marks,c;for(;c=o.isInSet(d);)(p||(p=[])).push(c),d=c.removeFromSet(d)}else o?o.isInSet(l.marks)&&(p=[o]):p=l.marks;if(p&&p.length){let d=Math.min(s+l.nodeSize,t);for(let c=0;c<p.length;c++){let m=p[c],b;for(let u=0;u<n.length;u++){let g=n[u];g.step==a-1&&m.eq(n[u].style)&&(b=g)}b?(b.to=d,b.step=a):n.push({style:m,from:Math.max(s,e),to:d,step:a})}}}),n.forEach(l=>r.step(new Je(l.from,l.to,l.style)))}function _n(r,e,t,o=t.contentMatch,n=!0){let a=r.doc.nodeAt(e),l=[],s=e+1;for(let p=0;p<a.childCount;p++){let d=a.child(p),c=s+d.nodeSize,m=o.matchType(d.type);if(!m)l.push(new me(s,c,A.empty));else{o=m;for(let b=0;b<d.marks.length;b++)t.allowsMarkType(d.marks[b].type)||r.step(new Je(s,c,d.marks[b]));if(n&&d.isText&&t.whitespace!="pre"){let b,u=/\r?\n|\r/g,g;for(;b=u.exec(d.text);)g||(g=new A(C.from(t.schema.text(" ",t.allowedMarks(d.marks))),0,0)),l.push(new me(s+b.index,s+b.index+b[0].length,g))}}s=c}if(!o.validEnd){let p=o.fillBefore(C.empty,!0);r.replace(s,s,new A(p,0,0))}for(let p=l.length-1;p>=0;p--)r.step(l[p])}function IS(r,e,t){return(e==0||r.canReplace(e,r.childCount))&&(t==r.childCount||r.canReplace(0,t))}function wr(r){let t=r.parent.content.cutByIndex(r.startIndex,r.endIndex);for(let o=r.depth;;--o){let n=r.$from.node(o),a=r.$from.index(o),l=r.$to.indexAfter(o);if(o<r.depth&&n.canReplace(a,l,t))return o;if(o==0||n.type.spec.isolating||!IS(n,a,l))break}return null}function zS(r,e,t){let{$from:o,$to:n,depth:a}=e,l=o.before(a+1),s=n.after(a+1),p=l,d=s,c=C.empty,m=0;for(let g=a,x=!1;g>t;g--)x||o.index(g)>0?(x=!0,c=C.from(o.node(g).copy(c)),m++):p--;let b=C.empty,u=0;for(let g=a,x=!1;g>t;g--)x||n.after(g+1)<n.end(g)?(x=!0,b=C.from(n.node(g).copy(b)),u++):d++;r.step(new be(p,d,l,s,new A(c.append(b),m,u),c.size-m,!0))}function Hn(r,e,t=null,o=r){let n=OS(r,e),a=n&&_S(o,e);return a?n.map(Jf).concat({type:e,attrs:t}).concat(a.map(Jf)):null}function Jf(r){return{type:r,attrs:null}}function OS(r,e){let{parent:t,startIndex:o,endIndex:n}=r,a=t.contentMatchAt(o).findWrapping(e);if(!a)return null;let l=a.length?a[0]:e;return t.canReplaceWith(o,n,l)?a:null}function _S(r,e){let{parent:t,startIndex:o,endIndex:n}=r,a=t.child(o),l=e.contentMatch.findWrapping(a.type);if(!l)return null;let p=(l.length?l[l.length-1]:e).contentMatch;for(let d=o;p&&d<n;d++)p=p.matchType(t.child(d).type);return!p||!p.validEnd?null:l}function HS(r,e,t){let o=C.empty;for(let l=t.length-1;l>=0;l--){if(o.size){let s=t[l].type.contentMatch.matchFragment(o);if(!s||!s.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}o=C.from(t[l].type.create(t[l].attrs,o))}let n=e.start,a=e.end;r.step(new be(n,a,n,a,new A(o,0,0),t.length,!0))}function RS(r,e,t,o,n){if(!o.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let a=r.steps.length;r.doc.nodesBetween(e,t,(l,s)=>{let p=typeof n=="function"?n(l):n;if(l.isTextblock&&!l.hasMarkup(o,p)&&FS(r.doc,r.mapping.slice(a).map(s),o)){let d=null;if(o.schema.linebreakReplacement){let u=o.whitespace=="pre",g=!!o.contentMatch.matchType(o.schema.linebreakReplacement);u&&!g?d=!1:!u&&g&&(d=!0)}d===!1&&Qf(r,l,s,a),_n(r,r.mapping.slice(a).map(s,1),o,void 0,d===null);let c=r.mapping.slice(a),m=c.map(s,1),b=c.map(s+l.nodeSize,1);return r.step(new be(m,b,m+1,b-1,new A(C.from(o.create(p,null,l.marks)),0,0),1,!0)),d===!0&&Yf(r,l,s,a),!1}})}function Yf(r,e,t,o){e.forEach((n,a)=>{if(n.isText){let l,s=/\r?\n|\r/g;for(;l=s.exec(n.text);){let p=r.mapping.slice(o).map(t+1+a+l.index);r.replaceWith(p,p+1,e.type.schema.linebreakReplacement.create())}}})}function Qf(r,e,t,o){e.forEach((n,a)=>{if(n.type==n.type.schema.linebreakReplacement){let l=r.mapping.slice(o).map(t+1+a);r.replaceWith(l,l+1,e.type.schema.text(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myissue/vue-website-page-builder",
3
- "version": "3.4.87",
3
+ "version": "3.4.90",
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",