UNPKG

hb-vue-theme

Version:

Custom PrimeVue 4 theme with 'hb' prefix using design tokens and PrimeFlex

674 lines (673 loc) 26.3 kB
import { hbPreset as m } from "./tokens.esm.js"; import { hbDesignTokens as E, hbPrimeVueTokens as O } from "./tokens.esm.js"; import { createCustomPreset as L, exportAsCSS as R, exportAsSCSS as _ } from "./preset.esm.js"; class n { constructor() { this.preset = m, this.isInstalled = !1; } // ============================================================================= // INSTALL THEME // ============================================================================= /** * Install the HB theme by applying design tokens to the document * @param {Object} options - Installation options * @param {boolean} options.force - Force reinstallation even if already installed * @param {string} options.target - Target element to apply theme to (default: document.documentElement) * @param {boolean} options.injectCSS - Automatically inject the theme CSS (default: false) * @returns {boolean} - Success status */ install(t = {}) { const { force: e = !1, target: a = document.documentElement, injectCSS: l = !1 } = t; if (this.isInstalled && !e) return console.warn("HB Theme is already installed. Use force: true to reinstall."), !1; try { return l && this.injectCSS(), this.applyDesignTokens(a), this.applyPrimeFlexUtilities(), this.applyComponentTokens(a), this.isInstalled = !0, console.log("✅ HB Theme installed successfully!"), !0; } catch (o) { return console.error("❌ Failed to install HB Theme:", o), !1; } } // ============================================================================= // INJECT CSS // ============================================================================= /** * Inject the theme CSS into the document head */ injectCSS() { if (!document.getElementById("hb-theme-css")) try { const t = document.createElement("link"); t.id = "hb-theme-css", t.rel = "stylesheet", t.type = "text/css", t.href = "https://unpkg.com/hb-vue-theme@latest/dist/theme.css", document.head.appendChild(t), console.log("✅ HB Theme CSS injected successfully!"); } catch (t) { console.error("❌ Failed to inject HB Theme CSS:", t); try { const e = document.createElement("link"); e.id = "hb-theme-css", e.rel = "stylesheet", e.type = "text/css", e.href = "./node_modules/hb-vue-theme/dist/theme.css", document.head.appendChild(e), console.log("✅ HB Theme CSS injected from node_modules!"); } catch (e) { console.error("❌ Failed to inject CSS from node_modules:", e), console.warn("Please manually include the CSS file in your project."); } } } // ============================================================================= // APPLY DESIGN TOKENS // ============================================================================= /** * Apply design tokens to the target element * @param {HTMLElement} target - Target element */ applyDesignTokens(t) { const e = this.preset.tokens; Object.entries(e).forEach(([a, l]) => { t.style.setProperty(a, l); }); } // ============================================================================= // APPLY PRIMEFLEX UTILITIES // ============================================================================= /** * Apply custom PrimeFlex utility classes */ applyPrimeFlexUtilities() { const t = this.preset.utilities; let e = document.getElementById("hb-primeflex-utilities"); e || (e = document.createElement("style"), e.id = "hb-primeflex-utilities", document.head.appendChild(e)); const a = Object.entries(t).map(([l, o]) => `.${l} { ${o} }`).join(` `); e.textContent = a; } // ============================================================================= // APPLY COMPONENT TOKENS // ============================================================================= /** * Apply component-specific design tokens * @param {HTMLElement} target - Target element */ applyComponentTokens(t) { const e = this.preset.components; Object.entries(e).forEach(([a, l]) => { const o = `.hb-${a}`; t.querySelectorAll(o).forEach((r) => { Object.entries(l).forEach(([i, h]) => { r.style.setProperty(i, h); }); }); }); } // ============================================================================= // UNINSTALL THEME // ============================================================================= /** * Uninstall the HB theme * @param {string} target - Target element * @returns {boolean} - Success status */ uninstall(t = document.documentElement) { try { const e = this.preset.tokens; Object.keys(e).forEach((c) => { t.style.removeProperty(c); }); const a = document.getElementById("hb-primeflex-utilities"); a && a.remove(); const l = document.getElementById("hb-theme-css"); l && l.remove(); const o = this.preset.components; return Object.entries(o).forEach(([c, r]) => { const i = `.hb-${c}`; t.querySelectorAll(i).forEach((d) => { Object.keys(r).forEach((u) => { d.style.removeProperty(u); }); }); }), this.isInstalled = !1, console.log("✅ HB Theme uninstalled successfully!"), !0; } catch (e) { return console.error("❌ Failed to uninstall HB Theme:", e), !1; } } // ============================================================================= // UPDATE THEME // ============================================================================= /** * Update theme with new tokens * @param {Object} newTokens - New design tokens * @param {string} target - Target element * @returns {boolean} - Success status */ update(t, e = document.documentElement) { try { return Object.entries(t).forEach(([a, l]) => { e.style.setProperty(a, l); }), console.log("✅ HB Theme updated successfully!"), !0; } catch (a) { return console.error("❌ Failed to update HB Theme:", a), !1; } } // ============================================================================= // GET THEME INFO // ============================================================================= /** * Get theme information * @returns {Object} - Theme information */ getInfo() { return { name: this.preset.name, version: this.preset.version, description: this.preset.description, author: this.preset.author, license: this.preset.license, isInstalled: this.isInstalled, tokenCount: Object.keys(this.preset.tokens).length, utilityCount: Object.keys(this.preset.utilities).length, componentCount: Object.keys(this.preset.components).length }; } // ============================================================================= // EXPORT THEME // ============================================================================= /** * Export theme as a preset configuration * @returns {Object} - Theme preset configuration */ export() { return JSON.parse(JSON.stringify(this.preset)); } } const p = { install(s, t = {}) { const e = new n(); s.config.globalProperties.$hbTheme = e, t.autoInstall !== !1 && e.install(t), s.provide("hbTheme", e); } }; function g(s = {}) { const t = new n(); return t.install(s), t; } const f = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, HBThemeInstaller: n, HBThemePlugin: p, default: n, installHBTheme: g }, Symbol.toStringTag, { value: "Module" })), b = { // DataTable component mapping datatable: { root: { class: "hb-datatable" }, header: { class: "hb-datatable-header" }, headerRow: { class: "hb-datatable-header-row" }, headerCell: { class: "hb-datatable-header-cell" }, body: { class: "hb-datatable-body" }, bodyRow: { class: "hb-datatable-row" }, bodyCell: { class: "hb-datatable-body-cell" }, footer: { class: "hb-datatable-footer" }, footerRow: { class: "hb-datatable-footer-row" }, footerCell: { class: "hb-datatable-footer-cell" }, table: { class: "hb-datatable-table" }, thead: { class: "hb-datatable-thead" }, tbody: { class: "hb-datatable-tbody" }, tfoot: { class: "hb-datatable-tfoot" }, loadingOverlay: { class: "hb-datatable-loading-overlay" }, loadingIcon: { class: "hb-datatable-loading-icon" }, emptyMessage: { class: "hb-datatable-empty-message" }, paginator: { class: "hb-paginator" } }, // Column component mapping column: { root: { class: "hb-column" }, header: { class: "hb-column-header" }, headerContent: { class: "hb-column-header-content" }, headerTitle: { class: "hb-column-header-title" }, sortIcon: { class: "hb-column-sort-icon" }, filterOverlay: { class: "hb-column-filter-overlay" }, filterInput: { class: "hb-column-filter-input" }, filterButton: { class: "hb-column-filter-button" }, filterClearButton: { class: "hb-column-filter-clear-button" }, body: { class: "hb-column-body" }, bodyCell: { class: "hb-column-body-cell" } }, // Button component mapping button: { root: { class: "hb-button" }, label: { class: "hb-button-label" }, icon: { class: "hb-button-icon" }, loadingIcon: { class: "hb-button-loading-icon" } }, // InputText component mapping inputtext: { root: { class: "hb-inputtext" } }, // Select component mapping select: { root: { class: "hb-select" }, trigger: { class: "hb-select-trigger" }, label: { class: "hb-select-label" }, panel: { class: "hb-select-panel" }, itemsWrapper: { class: "hb-select-items-wrapper" }, item: { class: "hb-select-item" }, itemLabel: { class: "hb-select-item-label" }, itemIcon: { class: "hb-select-item-icon" }, itemGroup: { class: "hb-select-item-group" }, itemGroupLabel: { class: "hb-select-item-group-label" }, header: { class: "hb-select-header" }, filterContainer: { class: "hb-select-filter-container" }, filterInput: { class: "hb-select-filter-input" }, filterIcon: { class: "hb-select-filter-icon" }, closeButton: { class: "hb-select-close-button" }, closeIcon: { class: "hb-select-close-icon" } }, // Paginator component mapping paginator: { root: { class: "hb-paginator" }, firstPageButton: { class: "hb-paginator-first" }, prevPageButton: { class: "hb-paginator-prev" }, nextPageButton: { class: "hb-paginator-next" }, lastPageButton: { class: "hb-paginator-last" }, pageButton: { class: "hb-paginator-page" }, pages: { class: "hb-paginator-pages" }, pageLinks: { class: "hb-paginator-page-links" }, rowsPerPageDropdown: { class: "hb-paginator-rows-per-page-dropdown" }, current: { class: "hb-paginator-current" }, rppOptions: { class: "hb-paginator-rpp-options" }, rppOption: { class: "hb-paginator-rpp-option" }, start: { class: "hb-paginator-start" }, end: { class: "hb-paginator-end" }, totalRecords: { class: "hb-paginator-total-records" }, jumpToPageDropdown: { class: "hb-paginator-jump-to-page-dropdown" }, jumpToPageInput: { class: "hb-paginator-jump-to-page-input" } }, // Message component mapping message: { root: { class: "hb-message" }, wrapper: { class: "hb-message-wrapper" }, text: { class: "hb-message-text" }, icon: { class: "hb-message-icon" }, closeButton: { class: "hb-message-close-button" }, closeIcon: { class: "hb-message-close-icon" } }, // Calendar component mapping calendar: { root: { class: "hb-calendar" }, input: { class: "hb-calendar-input" }, panel: { class: "hb-calendar-panel" }, header: { class: "hb-calendar-header" }, title: { class: "hb-calendar-title" }, monthPicker: { class: "hb-calendar-month-picker" }, yearPicker: { class: "hb-calendar-year-picker" }, decadePicker: { class: "hb-calendar-decade-picker" }, prevButton: { class: "hb-calendar-prev-button" }, nextButton: { class: "hb-calendar-next-button" }, prevIcon: { class: "hb-calendar-prev-icon" }, nextIcon: { class: "hb-calendar-next-icon" }, table: { class: "hb-calendar-table" }, thead: { class: "hb-calendar-thead" }, tbody: { class: "hb-calendar-tbody" }, headerRow: { class: "hb-calendar-header-row" }, headerCell: { class: "hb-calendar-header-cell" }, bodyRow: { class: "hb-calendar-body-row" }, bodyCell: { class: "hb-calendar-body-cell" }, day: { class: "hb-calendar-day" }, today: { class: "hb-calendar-today" }, selected: { class: "hb-calendar-selected" }, otherMonth: { class: "hb-calendar-other-month" }, disabled: { class: "hb-calendar-disabled" }, footer: { class: "hb-calendar-footer" }, timePicker: { class: "hb-calendar-time-picker" }, timePickerHour: { class: "hb-calendar-time-picker-hour" }, timePickerMinute: { class: "hb-calendar-time-picker-minute" }, timePickerSecond: { class: "hb-calendar-time-picker-second" }, timePickerSeparator: { class: "hb-calendar-time-picker-separator" }, timePickerAmPm: { class: "hb-calendar-time-picker-ampm" } }, // Panel component mapping panel: { root: { class: "hb-panel" }, header: { class: "hb-panel-header" }, title: { class: "hb-panel-title" }, headerIcon: { class: "hb-panel-header-icon" }, headerToggleIcon: { class: "hb-panel-header-toggle-icon" }, content: { class: "hb-panel-content" }, footer: { class: "hb-panel-footer" } }, // Dialog component mapping dialog: { root: { class: "hb-dialog" }, mask: { class: "hb-dialog-mask" }, header: { class: "hb-dialog-header" }, headerTitle: { class: "hb-dialog-header-title" }, headerIcon: { class: "hb-dialog-header-icon" }, closeButton: { class: "hb-dialog-close-button" }, closeIcon: { class: "hb-dialog-close-icon" }, content: { class: "hb-dialog-content" }, footer: { class: "hb-dialog-footer" }, resizer: { class: "hb-dialog-resizer" }, resizerHandle: { class: "hb-dialog-resizer-handle" } }, // InputNumber component mapping inputnumber: { root: { class: "hb-inputnumber" }, input: { class: "hb-inputnumber-input" }, buttonGroup: { class: "hb-inputnumber-button-group" }, upButton: { class: "hb-inputnumber-up-button" }, downButton: { class: "hb-inputnumber-down-button" }, upIcon: { class: "hb-inputnumber-up-icon" }, downIcon: { class: "hb-inputnumber-down-icon" } }, // Checkbox component mapping checkbox: { root: { class: "hb-checkbox" }, box: { class: "hb-checkbox-box" }, input: { class: "hb-checkbox-input" }, icon: { class: "hb-checkbox-icon" }, label: { class: "hb-checkbox-label" } }, // RadioButton component mapping radiobutton: { root: { class: "hb-radiobutton" }, box: { class: "hb-radiobutton-box" }, input: { class: "hb-radiobutton-input" }, icon: { class: "hb-radiobutton-icon" }, label: { class: "hb-radiobutton-label" } }, // Textarea component mapping textarea: { root: { class: "hb-textarea" } }, // Password component mapping password: { root: { class: "hb-password" }, input: { class: "hb-password-input" }, panel: { class: "hb-password-panel" }, meter: { class: "hb-password-meter" }, info: { class: "hb-password-info" }, toggleButton: { class: "hb-password-toggle-button" }, toggleIcon: { class: "hb-password-toggle-icon" } }, // MultiSelect component mapping multiselect: { root: { class: "hb-multiselect" }, trigger: { class: "hb-multiselect-trigger" }, label: { class: "hb-multiselect-label" }, panel: { class: "hb-multiselect-panel" }, itemsWrapper: { class: "hb-multiselect-items-wrapper" }, item: { class: "hb-multiselect-item" }, itemLabel: { class: "hb-multiselect-item-label" }, itemIcon: { class: "hb-multiselect-item-icon" }, itemGroup: { class: "hb-multiselect-item-group" }, itemGroupLabel: { class: "hb-multiselect-item-group-label" }, header: { class: "hb-multiselect-header" }, filterContainer: { class: "hb-multiselect-filter-container" }, filterInput: { class: "hb-multiselect-filter-input" }, filterIcon: { class: "hb-multiselect-filter-icon" }, closeButton: { class: "hb-multiselect-close-button" }, closeIcon: { class: "hb-multiselect-close-icon" }, token: { class: "hb-multiselect-token" }, tokenLabel: { class: "hb-multiselect-token-label" }, tokenIcon: { class: "hb-multiselect-token-icon" } }, // Dropdown component mapping (for backward compatibility) dropdown: { root: { class: "hb-dropdown" }, trigger: { class: "hb-dropdown-trigger" }, label: { class: "hb-dropdown-label" }, panel: { class: "hb-dropdown-panel" }, itemsWrapper: { class: "hb-dropdown-items-wrapper" }, item: { class: "hb-dropdown-item" }, itemLabel: { class: "hb-dropdown-item-label" }, itemIcon: { class: "hb-dropdown-item-icon" }, itemGroup: { class: "hb-dropdown-item-group" }, itemGroupLabel: { class: "hb-dropdown-item-group-label" }, header: { class: "hb-dropdown-header" }, filterContainer: { class: "hb-dropdown-filter-container" }, filterInput: { class: "hb-dropdown-filter-input" }, filterIcon: { class: "hb-dropdown-filter-icon" }, closeButton: { class: "hb-dropdown-close-button" }, closeIcon: { class: "hb-dropdown-close-icon" } }, // Menu component mapping menu: { root: { class: "hb-menu" }, list: { class: "hb-menu-list" }, item: { class: "hb-menu-item" }, itemLink: { class: "hb-menu-item-link" }, itemText: { class: "hb-menu-item-text" }, itemIcon: { class: "hb-menu-item-icon" }, separator: { class: "hb-menu-separator" }, submenuHeader: { class: "hb-menu-submenu-header" }, submenuIcon: { class: "hb-menu-submenu-icon" }, submenuList: { class: "hb-menu-submenu-list" } }, // TabView component mapping tabview: { root: { class: "hb-tabview" }, nav: { class: "hb-tabview-nav" }, navList: { class: "hb-tabview-nav-list" }, navItem: { class: "hb-tabview-nav-item" }, navLink: { class: "hb-tabview-nav-link" }, navText: { class: "hb-tabview-nav-text" }, navIcon: { class: "hb-tabview-nav-icon" }, closeIcon: { class: "hb-tabview-close-icon" }, inkbar: { class: "hb-tabview-inkbar" }, content: { class: "hb-tabview-content" }, panel: { class: "hb-tabview-panel" } }, // Accordion component mapping accordion: { root: { class: "hb-accordion" }, tab: { class: "hb-accordion-tab" }, header: { class: "hb-accordion-header" }, headerLink: { class: "hb-accordion-header-link" }, headerText: { class: "hb-accordion-header-text" }, headerIcon: { class: "hb-accordion-header-icon" }, toggleIcon: { class: "hb-accordion-toggle-icon" }, content: { class: "hb-accordion-content" }, panel: { class: "hb-accordion-panel" } }, // Card component mapping card: { root: { class: "hb-card" }, header: { class: "hb-card-header" }, title: { class: "hb-card-title" }, subtitle: { class: "hb-card-subtitle" }, content: { class: "hb-card-content" }, footer: { class: "hb-card-footer" } }, // Divider component mapping divider: { root: { class: "hb-divider" }, content: { class: "hb-divider-content" } }, // Tooltip component mapping tooltip: { root: { class: "hb-tooltip" }, text: { class: "hb-tooltip-text" }, arrow: { class: "hb-tooltip-arrow" } }, // OverlayPanel component mapping overlaypanel: { root: { class: "hb-overlaypanel" }, content: { class: "hb-overlaypanel-content" }, closeButton: { class: "hb-overlaypanel-close-button" }, closeIcon: { class: "hb-overlaypanel-close-icon" } }, // Sidebar component mapping sidebar: { root: { class: "hb-sidebar" }, header: { class: "hb-sidebar-header" }, headerContent: { class: "hb-sidebar-header-content" }, headerTitle: { class: "hb-sidebar-header-title" }, closeButton: { class: "hb-sidebar-close-button" }, closeIcon: { class: "hb-sidebar-close-icon" }, content: { class: "hb-sidebar-content" }, mask: { class: "hb-sidebar-mask" } }, // Toast component mapping toast: { root: { class: "hb-toast" }, message: { class: "hb-toast-message" }, messageText: { class: "hb-toast-message-text" }, messageIcon: { class: "hb-toast-message-icon" }, messageCloseButton: { class: "hb-toast-message-close-button" }, messageCloseIcon: { class: "hb-toast-message-close-icon" }, container: { class: "hb-toast-container" } }, // ConfirmDialog component mapping confirmdialog: { root: { class: "hb-confirmdialog" }, mask: { class: "hb-confirmdialog-mask" }, header: { class: "hb-confirmdialog-header" }, headerTitle: { class: "hb-confirmdialog-header-title" }, headerIcon: { class: "hb-confirmdialog-header-icon" }, closeButton: { class: "hb-confirmdialog-close-button" }, closeIcon: { class: "hb-confirmdialog-close-icon" }, content: { class: "hb-confirmdialog-content" }, message: { class: "hb-confirmdialog-message" }, icon: { class: "hb-confirmdialog-icon" }, footer: { class: "hb-confirmdialog-footer" }, acceptButton: { class: "hb-confirmdialog-accept-button" }, rejectButton: { class: "hb-confirmdialog-reject-button" } }, // FileUpload component mapping fileupload: { root: { class: "hb-fileupload" }, input: { class: "hb-fileupload-input" }, buttonbar: { class: "hb-fileupload-buttonbar" }, chooseButton: { class: "hb-fileupload-choose-button" }, uploadButton: { class: "hb-fileupload-upload-button" }, cancelButton: { class: "hb-fileupload-cancel-button" }, content: { class: "hb-fileupload-content" }, files: { class: "hb-fileupload-files" }, file: { class: "hb-fileupload-file" }, fileName: { class: "hb-fileupload-file-name" }, fileSize: { class: "hb-fileupload-file-size" }, fileRemove: { class: "hb-fileupload-file-remove" }, progressBar: { class: "hb-fileupload-progress-bar" }, progressBarValue: { class: "hb-fileupload-progress-bar-value" } }, // Rating component mapping rating: { root: { class: "hb-rating" }, item: { class: "hb-rating-item" }, itemOnIcon: { class: "hb-rating-item-on-icon" }, itemOffIcon: { class: "hb-rating-item-off-icon" }, itemHalfIcon: { class: "hb-rating-item-half-icon" }, cancelItem: { class: "hb-rating-cancel-item" }, cancelIcon: { class: "hb-rating-cancel-icon" } }, // Slider component mapping slider: { root: { class: "hb-slider" }, range: { class: "hb-slider-range" }, handle: { class: "hb-slider-handle" }, startHandle: { class: "hb-slider-start-handle" }, endHandle: { class: "hb-slider-end-handle" }, value: { class: "hb-slider-value" } }, // ToggleButton component mapping togglebutton: { root: { class: "hb-togglebutton" }, label: { class: "hb-togglebutton-label" }, icon: { class: "hb-togglebutton-icon" } }, // TriStateCheckbox component mapping tristatecheckbox: { root: { class: "hb-tristatecheckbox" }, box: { class: "hb-tristatecheckbox-box" }, input: { class: "hb-tristatecheckbox-input" }, icon: { class: "hb-tristatecheckbox-icon" }, label: { class: "hb-tristatecheckbox-label" } }, // Tree component mapping tree: { root: { class: "hb-tree" }, container: { class: "hb-tree-container" }, node: { class: "hb-tree-node" }, content: { class: "hb-tree-content" }, label: { class: "hb-tree-label" }, icon: { class: "hb-tree-icon" }, toggler: { class: "hb-tree-toggler" }, togglerIcon: { class: "hb-tree-toggler-icon" }, children: { class: "hb-tree-children" }, loadingIcon: { class: "hb-tree-loading-icon" } }, // TreeTable component mapping treetable: { root: { class: "hb-treetable" }, header: { class: "hb-treetable-header" }, headerRow: { class: "hb-treetable-header-row" }, headerCell: { class: "hb-treetable-header-cell" }, body: { class: "hb-treetable-body" }, bodyRow: { class: "hb-treetable-row" }, bodyCell: { class: "hb-treetable-body-cell" }, footer: { class: "hb-treetable-footer" }, footerRow: { class: "hb-treetable-footer-row" }, footerCell: { class: "hb-treetable-footer-cell" }, table: { class: "hb-treetable-table" }, thead: { class: "hb-treetable-thead" }, tbody: { class: "hb-treetable-tbody" }, tfoot: { class: "hb-treetable-tfoot" }, loadingOverlay: { class: "hb-treetable-loading-overlay" }, loadingIcon: { class: "hb-treetable-loading-icon" }, emptyMessage: { class: "hb-treetable-empty-message" }, paginator: { class: "hb-paginator" } } }; function x(s = {}) { return { ...b, ...s }; } function C(s) { typeof s == "string" && (s = [s]); const t = {}; return s.forEach((e) => { b[e] && (t[e] = b[e]); }), t; } const y = "/* CSS will be injected here during build */"; function w(s, t = "hb-vue-theme-styles") { if (typeof document > "u") { console.warn("hb-vue-theme: Cannot inject CSS - document not available"); return; } const e = document.getElementById(t); e && e.remove(); const a = document.createElement("style"); a.id = t, a.textContent = s, document.head.appendChild(a); } function k(s) { w(y, s); } function B(s = "hb-vue-theme-styles") { if (typeof document > "u") return; const t = document.getElementById(s); t && t.remove(); } typeof document < "u" && k(); async function v(s, t = {}) { const { HBThemePlugin: e } = await Promise.resolve().then(() => f); s.use(e, t); } typeof window < "u" && window.Vue && window.Vue.use({ install: v }); const S = "1.0.0", T = "@hb-vue/theme"; export { n as HBTheme, n as HBThemeInstaller, p as HBThemePlugin, L as createCustomPreset, R as exportAsCSS, _ as exportAsSCSS, C as getPassthroughConfig, E as hbDesignTokens, m as hbPreset, O as hbPrimeVueTokens, w as injectCSS, v as install, g as installHBTheme, k as loadThemeCSS, x as mergePassthroughConfig, T as name, b as passthroughConfig, B as removeThemeCSS, S as version }; //# sourceMappingURL=index.esm.js.map