@embedpdf/plugin-ui 2.1.2 → 2.2.0
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/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +84 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/actions.d.ts +11 -1
- package/dist/lib/types.d.ts +25 -0
- package/dist/lib/ui-plugin.d.ts +6 -0
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +8 -2
- package/dist/preact/index.js.map +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +8 -2
- package/dist/react/index.js.map +1 -1
- package/dist/shared/hooks/use-schema-renderer.d.ts +1 -0
- package/dist/shared-preact/hooks/use-schema-renderer.d.ts +1 -0
- package/dist/shared-react/hooks/use-schema-renderer.d.ts +1 -0
- package/dist/svelte/hooks/use-schema-renderer.svelte.d.ts +1 -0
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.js +9 -2
- package/dist/svelte/index.js.map +1 -1
- package/dist/vue/hooks/use-schema-renderer.d.ts +1 -0
- package/dist/vue/hooks/use-ui.d.ts +6 -0
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +10 -2
- package/dist/vue/index.js.map +1 -1
- package/package.json +12 -12
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t="ui",o={id:t,name:"UI Plugin",version:"1.0.0",provides:["ui"],requires:["commands"],optional:["i18n"],defaultConfig:{schema:{id:"empty",version:"1.0.0",toolbars:{},menus:{},sidebars:{},modals:{},selectionMenus:{}}}},s="UI/INIT_STATE",n="UI/CLEANUP_STATE",i="UI/SET_ACTIVE_TOOLBAR",a="UI/CLOSE_TOOLBAR_SLOT",d="UI/SET_ACTIVE_SIDEBAR",r="UI/CLOSE_SIDEBAR_SLOT",c="UI/SET_SIDEBAR_TAB",l="UI/OPEN_MODAL",u="UI/CLOSE_MODAL",h="UI/CLEAR_MODAL",m="UI/OPEN_MENU",p="UI/CLOSE_MENU",g="UI/CLOSE_ALL_MENUS",b="UI/SET_DISABLED_CATEGORIES",I="UI/SET_HIDDEN_ITEMS",S=(e,t)=>({type:s,payload:{documentId:e,schema:t}}),f=e=>({type:n,payload:{documentId:e}}),v=(e,t,o,s)=>({type:i,payload:{documentId:e,placement:t,slot:o,toolbarId:s}}),y=(e,t,o)=>({type:a,payload:{documentId:e,placement:t,slot:o}}),O=(e,t,o,s,n)=>({type:d,payload:{documentId:e,placement:t,slot:o,sidebarId:s,activeTab:n}}),D=(e,t,o)=>({type:r,payload:{documentId:e,placement:t,slot:o}}),C=(e,t,o)=>({type:c,payload:{documentId:e,sidebarId:t,tabId:o}}),T=(e,t)=>({type:l,payload:{documentId:e,modalId:t}}),E=e=>({type:u,payload:{documentId:e}}),M=e=>({type:h,payload:{documentId:e}}),$=(e,t)=>({type:m,payload:{documentId:e,menuState:t}}),A=(e,t)=>({type:p,payload:{documentId:e,menuId:t}}),x=e=>({type:g,payload:{documentId:e}}),L=e=>({type:b,payload:{categories:e}}),_=e=>({type:I,payload:{hiddenItems:e}});function F(e,t){return{...e,...t,toolbars:U(e.toolbars,t.toolbars),menus:w(e.menus,t.menus),sidebars:R(e.sidebars,t.sidebars)}}function U(e,t){if(!t)return e;const o={...e};for(const[s,n]of Object.entries(t))o[s]?o[s]={...o[s],...n,items:n.items??o[s].items,responsive:n.responsive??o[s].responsive}:o[s]=n;return o}function w(e,t){if(!t)return e;const o={...e};for(const[s,n]of Object.entries(t))o[s]?o[s]={...o[s],...n,items:n.items??o[s].items}:o[s]=n;return o}function R(e,t){if(!t)return e;const o={...e};for(const[s,n]of Object.entries(t))o[s]?o[s]={...o[s],...n,content:n.content??o[s].content}:o[s]=n;return o}function W(e,t){var o;if(!(null==(o=e.responsive)?void 0:o.breakpoints))return null;const s=function(e,t,o){if(!o||!(null==t?void 0:t.groups))return e;const s=t.groups.find(e=>e.locales.includes(o));if(!s)return e;const n={};for(const[i,a]of Object.entries(e)){const e=s.breakpoints[i];e?n[i]={minWidth:a.minWidth,maxWidth:a.maxWidth,hide:e.replaceHide?e.replaceHide:[...a.hide||[],...e.hide||[]],show:e.replaceShow?e.replaceShow:[...a.show||[],...e.show||[]]}:n[i]=a}return n}(e.responsive.breakpoints,e.responsive.localeOverrides,t),n=new Map,i=new Map;for(const[r,c]of Object.entries(s))i.set(r,{minWidth:c.minWidth,maxWidth:c.maxWidth});const a=new Set,d=e=>{e.forEach(e=>{a.add(e.id),"group"===e.type&&e.items&&d(e.items),"tab-group"===e.type&&e.tabs&&d(e.tabs),"section"===e.type&&e.items&&d(e.items)})};d(e.items);for(const r of a){const e=[];let t=!0;Array.from(Object.entries(s)).sort((e,t)=>(e[1].minWidth??0)-(t[1].minWidth??0)).forEach(([o,s],n)=>{var i,a;const d=null==(i=s.hide)?void 0:i.includes(r),c=null==(a=s.show)?void 0:a.includes(r);(d||c)&&(e.push({breakpointId:o,minWidth:s.minWidth,maxWidth:s.maxWidth,visible:c||!d,priority:n}),0===n&&(t=c||!d))}),e.length>0&&n.set(r,{itemId:r,shouldRender:!0,visibilityRules:e,defaultVisible:t})}return{items:n,breakpoints:i}}const B={ROOT:"data-epdf",STYLES:"data-epdf-s",ITEM:"data-epdf-i",CATEGORIES:"data-epdf-cat",DISABLED_CATEGORIES:"data-epdf-dis",HIDDEN_ITEMS:"data-epdf-hid"},j={ROOT:`[${B.ROOT}]`,STYLES:`[${B.STYLES}]`,ITEM:e=>`[${B.ITEM}="${e}"]`,CATEGORIES:e=>`[${B.CATEGORIES}~="${e}"]`,DISABLED_CATEGORY:e=>`[${B.DISABLED_CATEGORIES}~="${e}"]`,HIDDEN_ITEM:e=>`[${B.HIDDEN_ITEMS}~="${e}"]`},N={useContainerQueries:!0};function P(e,t={}){const o={...N,...t.config},s=t.locale,n=k(e,s),i=[];i.push(function(e){const t=e?` (locale: ${e})`:"";return`/* ═══════════════════════════════════════════════════════════════════════════ */\n/* EmbedPDF UI Stylesheet - Auto-generated${t} */\n/* DO NOT EDIT MANUALLY - This file is generated from your UI schema */\n/* ═══════════════════════════════════════════════════════════════════════════ */`}(s));const a=function(e,t){const o=[],s=t.useContainerQueries?"@container":"@media",n=new Set;return e.responsiveItems.forEach((e,t)=>{if(n.has(t))return;n.add(t);const i=function(e,t,o){if(0===t.visibilityRules.length)return null;const s=[],n=j.ITEM(e);t.defaultVisible||s.push(`${n} { display: none; }`);for(const i of t.visibilityRules){const e=[];if(void 0!==i.minWidth&&e.push(`(min-width: ${i.minWidth}px)`),void 0!==i.maxWidth&&e.push(`(max-width: ${i.maxWidth}px)`),e.length>0){const t=i.visible?"flex":"none";s.push(`${o} ${e.join(" and ")} {\n ${n} { display: ${t}; }\n}`)}}return s.length>0?s.join("\n"):null}(t,e,s);i&&o.push(i)}),0===o.length?"":`/* ─── Responsive Visibility Rules ─── */\n/* Items show/hide based on container width */\n\n${o.join("\n\n")}`}(n,o);a&&i.push(a);const d=function(e){if(0===e.categories.size)return"";const t=[],o=Array.from(e.categories).sort();for(const s of o)t.push(`${j.ROOT}[${B.DISABLED_CATEGORIES}~="${s}"] [${B.CATEGORIES}~="${s}"] {\n display: none !important;\n}`);return`/* ─── Category Visibility Rules ─── */\n/* Items hide when ANY of their categories is disabled */\n/* Use: data-disabled-categories="category1 category2" on root element */\n\n${t.join("\n\n")}`}(n);d&&i.push(d);const r=function(e,t){if(0===e.dependencies.length)return"";const o=[],s=t.useContainerQueries?"@container":"@media";for(const n of e.dependencies){const t=oe(n,e,s);t.length>0&&o.push(...t)}return 0===o.length?"":`/* ─── Dependency Visibility Rules ─── */\n/* Container elements hide when all their dependencies are hidden */\n\n${o.join("\n\n")}`}(n,o);return r&&i.push(r),i.filter(e=>e.trim()).join("\n\n")}function G(e){return k(e).itemCategories}function H(e,t){const o=new Set(t),s=[];return e.forEach((e,t)=>{e.some(e=>o.has(e))&&s.push(t)}),s}function k(e,t){const o=new Set,s=new Map,n=[],i=new Map,a=new Map;for(const[d,r]of Object.entries(e.menus))V(d,r,o,s,n,i,a,t);for(const[d,r]of Object.entries(e.toolbars))q(d,r,o,s,n,a,t);for(const[d,r]of Object.entries(e.sidebars))X(d,r,o,s,n);for(const[d,r]of Object.entries(e.selectionMenus||{}))Z(d,r,o,s,n,a,t);return{categories:o,itemCategories:s,dependencies:n,menuBreakpoints:i,responsiveItems:a}}function V(e,t,o,s,n,i,a,d){te(e,t.categories,t.visibilityDependsOn,o,s,n),Y(t.items,o,s,n);const r=W(t,d);r&&r.items.forEach((e,t)=>{a.set(t,e)});const c=function(e,t,o){var s;const n=[],i=W(e,o);if((null==(s=e.responsive)?void 0:s.breakpoints)&&i){const e=Array.from(i.breakpoints.entries()).sort((e,t)=>(e[1].minWidth??0)-(t[1].minWidth??0));for(const[o,s]of e){const e=Q(i,s),o=new Set;for(const s of e){const e=t.get(s);e&&e.forEach(e=>o.add(e))}n.push({minWidth:s.minWidth,maxWidth:s.maxWidth,visibleItemIds:e,visibleCategories:o})}}else{const o=[],s=new Set;z(e.items,t,o,s),n.push({visibleItemIds:o,visibleCategories:s})}return n}(t,s,d);i.set(e,c)}function Y(e,t,o,s){for(const n of e)te(n.id,n.categories,n.visibilityDependsOn,t,o,s),"section"===n.type&&Y(n.items,t,o,s)}function z(e,t,o,s){for(const n of e){o.push(n.id);const e=t.get(n.id);e&&e.forEach(e=>s.add(e)),"section"===n.type&&z(n.items,t,o,s)}}function Q(e,t){const o=[];return e.items.forEach((e,s)=>{let n=e.defaultVisible;for(const o of e.visibilityRules){(void 0===o.minWidth||void 0!==t.minWidth&&t.minWidth>=o.minWidth)&&(void 0===o.maxWidth||void 0!==t.maxWidth&&t.maxWidth<=o.maxWidth)&&(n=o.visible)}n&&o.push(s)}),o}function q(e,t,o,s,n,i,a){te(e,t.categories,t.visibilityDependsOn,o,s,n);const d=W(t,a);d&&d.items.forEach((e,t)=>{i.set(t,e)}),J(t.items,o,s,n)}function J(e,t,o,s){for(const n of e)te(n.id,n.categories,n.visibilityDependsOn,t,o,s),"group"===n.type&&n.items&&J(n.items,t,o,s),"tab-group"===n.type&&n.tabs&&K(n.tabs,t,o,s)}function K(e,t,o,s){for(const n of e)te(n.id,n.categories,n.visibilityDependsOn,t,o,s)}function X(e,t,o,s,n){if(te(e,t.categories,t.visibilityDependsOn,o,s,n),"tabs"===t.content.type)for(const i of t.content.tabs)te(i.id,i.categories,i.visibilityDependsOn,o,s,n)}function Z(e,t,o,s,n,i,a){if(te(e,t.categories,t.visibilityDependsOn,o,s,n),t.responsive){const e=W(t,a);e&&e.items.forEach((e,t)=>{i.set(t,e)})}ee(t.items,o,s,n)}function ee(e,t,o,s){for(const n of e)te(n.id,n.categories,n.visibilityDependsOn,t,o,s),"group"===n.type&&n.items&&ee(n.items,t,o,s)}function te(e,t,o,s,n,i){var a;(null==t?void 0:t.length)&&(t.forEach(e=>s.add(e)),n.set(e,t)),o&&(o.menuId||(null==(a=o.itemIds)?void 0:a.length))&&i.push({itemId:e,dependsOnMenuId:o.menuId,dependsOnItemIds:o.itemIds})}function oe(e,t,o,s){var n;const i=[];if(e.dependsOnMenuId){const s=t.menuBreakpoints.get(e.dependsOnMenuId);if(s&&s.length>0){i.push(`/* "${e.itemId}" depends on menu "${e.dependsOnMenuId}" */`);for(const t of s){if(0===t.visibleItemIds.length)continue;const s=t.visibleItemIds.sort().map(e=>j.HIDDEN_ITEM(e)).join(""),n=`${j.ROOT}${s} ${j.ITEM(e.itemId)} {\n display: none !important;\n}`,a=[];void 0!==t.minWidth&&a.push(`(min-width: ${t.minWidth}px)`),void 0!==t.maxWidth&&a.push(`(max-width: ${t.maxWidth}px)`),a.length>0?i.push(`${o} ${a.join(" and ")} {\n ${n}\n}`):i.push(n)}}}if(null==(n=e.dependsOnItemIds)?void 0:n.length){i.push(`/* "${e.itemId}" depends on items: ${e.dependsOnItemIds.join(", ")} */`);const t=e.dependsOnItemIds.sort().map(e=>j.HIDDEN_ITEM(e)).join("");i.push(`${j.ROOT}${t} ${j.ITEM(e.itemId)} {\n display: none !important;\n}`)}return i}const se=class extends e.BasePlugin{constructor(t,o,s){var n,i;if(super(t,o),this.cachedStylesheet=null,this.cachedLocale=null,this.i18n=null,this.i18nCleanup=null,this.categoryChanged$=e.createBehaviorEmitter(),this.stylesheetInvalidated$=e.createEmitter(),this.toolbarChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.sidebarChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.modalChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.menuChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.schema=s.schema,this.stylesheetConfig=s.stylesheetConfig||{},this.itemCategories=G(this.schema),null==(n=s.disabledCategories)?void 0:n.length){this.dispatch(L(s.disabledCategories));const e=H(this.itemCategories,s.disabledCategories);this.dispatch(_(e))}this.i18n=(null==(i=o.getPlugin("i18n"))?void 0:i.provides())??null,this.i18n&&(this.i18nCleanup=this.i18n.onLocaleChange(({currentLocale:e})=>{this.handleLocaleChange(e)}),this.cachedLocale=this.i18n.getLocale())}async initialize(){this.logger.info("UIPlugin","Initialize","UI plugin initialized")}async destroy(){this.i18nCleanup&&(this.i18nCleanup(),this.i18nCleanup=null),this.toolbarChanged$.clear(),this.sidebarChanged$.clear(),this.modalChanged$.clear(),this.menuChanged$.clear(),this.stylesheetInvalidated$.clear(),super.destroy()}onDocumentLoadingStarted(e){this.dispatch(S(e,this.schema))}onDocumentClosed(e){this.dispatch(f(e)),this.toolbarChanged$.clearScope(e),this.sidebarChanged$.clearScope(e),this.modalChanged$.clearScope(e),this.menuChanged$.clearScope(e)}handleLocaleChange(e){this.cachedLocale!==e&&(this.logger.debug("UIPlugin","LocaleChange",`Locale changed: ${this.cachedLocale} -> ${e}`),this.cachedLocale=e,this.invalidateStylesheet(),this.stylesheetInvalidated$.emit())}getStylesheet(){var e;const t=(null==(e=this.i18n)?void 0:e.getLocale())??null;return this.cachedStylesheet&&this.cachedLocale===t||(this.cachedStylesheet=P(this.schema,{config:this.stylesheetConfig,locale:t??void 0}),this.cachedLocale=t),this.cachedStylesheet}getLocale(){var e;return(null==(e=this.i18n)?void 0:e.getLocale())??null}invalidateStylesheet(){this.cachedStylesheet=null}onStylesheetInvalidated(e){return this.stylesheetInvalidated$.on(e)}disableCategoryImpl(e){const t=new Set(this.state.disabledCategories);if(!t.has(e)){t.add(e);const o=Array.from(t);this.dispatch(L(o));const s=H(this.itemCategories,o);this.dispatch(_(s)),this.categoryChanged$.emit({disabledCategories:o,hiddenItems:s})}}enableCategoryImpl(e){const t=new Set(this.state.disabledCategories);if(t.has(e)){t.delete(e);const o=Array.from(t);this.dispatch(L(o));const s=H(this.itemCategories,o);this.dispatch(_(s)),this.categoryChanged$.emit({disabledCategories:o,hiddenItems:s})}}toggleCategoryImpl(e){this.state.disabledCategories.includes(e)?this.enableCategoryImpl(e):this.disableCategoryImpl(e)}setDisabledCategoriesImpl(e){this.dispatch(L(e));const t=H(this.itemCategories,e);this.dispatch(_(t)),this.categoryChanged$.emit({disabledCategories:e,hiddenItems:t})}buildCapability(){return{setActiveToolbar:(e,t,o,s)=>this.setToolbarForDocument(e,t,o,s),setActiveSidebar:(e,t,o,s,n)=>this.setSidebarForDocument(e,t,o,s,n),toggleSidebar:(e,t,o,s,n)=>this.toggleSidebarForDocument(e,t,o,s,n),openModal:(e,t)=>this.openModalForDocument(e,t),openMenu:(e,t,o,s)=>this.openMenuForDocument(e,t,o,s),toggleMenu:(e,t,o,s)=>this.toggleMenuForDocument(e,t,o,s),forDocument:e=>this.createUIScope(e),getSchema:()=>this.schema,mergeSchema:e=>{this.schema=F(this.schema,e)},disableCategory:e=>this.disableCategoryImpl(e),enableCategory:e=>this.enableCategoryImpl(e),toggleCategory:e=>this.toggleCategoryImpl(e),setDisabledCategories:e=>this.setDisabledCategoriesImpl(e),getDisabledCategories:()=>this.state.disabledCategories,isCategoryDisabled:e=>this.state.disabledCategories.includes(e),getHiddenItems:()=>this.state.hiddenItems,onToolbarChanged:this.toolbarChanged$.onGlobal,onSidebarChanged:this.sidebarChanged$.onGlobal,onModalChanged:this.modalChanged$.onGlobal,onMenuChanged:this.menuChanged$.onGlobal,onCategoryChanged:this.categoryChanged$.on}}createUIScope(e){return{setActiveToolbar:(t,o,s)=>this.setToolbarForDocument(t,o,s,e),getActiveToolbar:(t,o)=>this.getToolbarForDocument(t,o,e),closeToolbarSlot:(t,o)=>this.closeToolbarForDocument(t,o,e),isToolbarOpen:(t,o,s)=>this.isToolbarOpenForDocument(t,o,s,e),setActiveSidebar:(t,o,s,n)=>this.setSidebarForDocument(t,o,s,e,n),getActiveSidebar:(t,o)=>this.getSidebarForDocument(t,o,e),closeSidebarSlot:(t,o)=>this.closeSidebarForDocument(t,o,e),toggleSidebar:(t,o,s,n)=>this.toggleSidebarForDocument(t,o,s,e,n),isSidebarOpen:(t,o,s)=>this.isSidebarOpenForDocument(t,o,s,e),setSidebarTab:(t,o)=>this.setSidebarTabForDocument(t,o,e),getSidebarTab:t=>this.getSidebarTabForDocument(t,e),openModal:t=>this.openModalForDocument(t,e),closeModal:()=>this.closeModalForDocument(e),clearModal:()=>this.clearModalForDocument(e),getActiveModal:()=>this.getActiveModalForDocument(e),isModalOpen:()=>this.isModalOpenForDocument(e),openMenu:(t,o,s)=>this.openMenuForDocument(t,o,s,e),closeMenu:t=>this.closeMenuForDocument(t,e),toggleMenu:(t,o,s)=>this.toggleMenuForDocument(t,o,s,e),closeAllMenus:()=>this.closeAllMenusForDocument(e),isMenuOpen:t=>this.isMenuOpenForDocument(t,e),getOpenMenus:()=>this.getOpenMenusForDocument(e),getSchema:()=>this.schema,getState:()=>this.getDocumentStateOrThrow(e),onToolbarChanged:this.toolbarChanged$.forScope(e),onSidebarChanged:this.sidebarChanged$.forScope(e),onModalChanged:this.modalChanged$.forScope(e),onMenuChanged:this.menuChanged$.forScope(e)}}getDocumentState(e){const t=e??this.getActiveDocumentId();return this.state.documents[t]??null}getDocumentStateOrThrow(e){const t=this.getDocumentState(e);if(!t)throw new Error(`UI state not found for document: ${e??"active"}`);return t}setToolbarForDocument(e,t,o,s){const n=s??this.getActiveDocumentId();this.dispatch(v(n,e,t,o)),this.toolbarChanged$.emit(n,{placement:e,slot:t,toolbarId:o})}getToolbarForDocument(e,t,o){const s=`${e}-${t}`,n=this.getDocumentStateOrThrow(o).activeToolbars[s];return(null==n?void 0:n.isOpen)?n.toolbarId:null}closeToolbarForDocument(e,t,o){const s=o??this.getActiveDocumentId();this.dispatch(y(s,e,t)),this.toolbarChanged$.emit(s,{placement:e,slot:t,toolbarId:""})}isToolbarOpenForDocument(e,t,o,s){const n=`${e}-${t}`,i=this.getDocumentStateOrThrow(s).activeToolbars[n];return!(!i||!i.isOpen)&&(!o||i.toolbarId===o)}setSidebarForDocument(e,t,o,s,n){const i=s??this.getActiveDocumentId();this.dispatch(O(i,e,t,o,n)),this.sidebarChanged$.emit(i,{placement:e,slot:t,sidebarId:o})}getSidebarForDocument(e,t,o){const s=`${e}-${t}`,n=this.getDocumentStateOrThrow(o).activeSidebars[s];return(null==n?void 0:n.isOpen)?n.sidebarId:null}closeSidebarForDocument(e,t,o){const s=o??this.getActiveDocumentId();this.dispatch(D(s,e,t)),this.sidebarChanged$.emit(s,{placement:e,slot:t,sidebarId:""})}toggleSidebarForDocument(e,t,o,s,n){const i=s??this.getActiveDocumentId(),a=`${e}-${t}`,d=this.getDocumentStateOrThrow(i).activeSidebars[a];(null==d?void 0:d.sidebarId)===o&&(null==d?void 0:d.isOpen)?(this.dispatch(D(i,e,t)),this.sidebarChanged$.emit(i,{placement:e,slot:t,sidebarId:""})):(this.dispatch(O(i,e,t,o,n)),this.sidebarChanged$.emit(i,{placement:e,slot:t,sidebarId:o}))}isSidebarOpenForDocument(e,t,o,s){const n=`${e}-${t}`,i=this.getDocumentStateOrThrow(s).activeSidebars[n];return!(!i||!i.isOpen)&&(!o||i.sidebarId===o)}setSidebarTabForDocument(e,t,o){const s=o??this.getActiveDocumentId();this.dispatch(C(s,e,t))}getSidebarTabForDocument(e,t){return this.getDocumentStateOrThrow(t).sidebarTabs[e]??null}openModalForDocument(e,t){const o=t??this.getActiveDocumentId();this.dispatch(T(o,e)),this.modalChanged$.emit(o,{modalId:e,isOpen:!0})}closeModalForDocument(e){const t=e??this.getActiveDocumentId(),o=this.getDocumentStateOrThrow(t).activeModal;this.dispatch(E(t)),this.modalChanged$.emit(t,{modalId:(null==o?void 0:o.modalId)??null,isOpen:!1})}clearModalForDocument(e){const t=e??this.getActiveDocumentId();this.dispatch(M(t))}getActiveModalForDocument(e){return this.getDocumentStateOrThrow(e).activeModal}isModalOpenForDocument(e){const t=this.getDocumentStateOrThrow(e).activeModal;return(null==t?void 0:t.isOpen)??!1}openMenuForDocument(e,t,o,s){const n=s??this.getActiveDocumentId();this.dispatch($(n,{menuId:e,triggeredByCommandId:t,triggeredByItemId:o})),this.menuChanged$.emit(n,{menuId:e,isOpen:!0})}closeMenuForDocument(e,t){const o=t??this.getActiveDocumentId();this.dispatch(A(o,e)),this.menuChanged$.emit(o,{menuId:e,isOpen:!1})}toggleMenuForDocument(e,t,o,s){const n=s??this.getActiveDocumentId();!!this.getDocumentStateOrThrow(n).openMenus[e]?(this.dispatch(A(n,e)),this.menuChanged$.emit(n,{menuId:e,isOpen:!1})):(this.dispatch($(n,{menuId:e,triggeredByCommandId:t,triggeredByItemId:o})),this.menuChanged$.emit(n,{menuId:e,isOpen:!0}))}closeAllMenusForDocument(e){const t=e??this.getActiveDocumentId();this.dispatch(x(t))}isMenuOpenForDocument(e,t){return!!this.getDocumentStateOrThrow(t).openMenus[e]}getOpenMenusForDocument(e){return Object.values(this.getDocumentStateOrThrow(e).openMenus)}};se.id="ui";let ne=se;const ie={activeToolbars:{},activeSidebars:{},activeModal:null,openMenus:{},sidebarTabs:{}},ae={documents:{},disabledCategories:[],hiddenItems:[]};function de(e){return e.ui??null}function re(e,t){const o=de(e);return(null==o?void 0:o.documents[t])??null}function ce(e,t){return`${e}-${t}`}function le(e,t,o,s){const n=re(e,t);return n?n.activeToolbars[ce(o,s)]??null:null}function ue(e,t,o,s){const n=re(e,t);return n?n.activeSidebars[ce(o,s)]??null:null}const he={manifest:o,create:(e,o)=>new ne(t,e,o),reducer:(e=ae,t)=>{var o;switch(t.type){case s:{const{documentId:o,schema:s}=t.payload,n={};return Object.values(s.toolbars).forEach(e=>{if(e.permanent&&e.position){const t=`${e.position.placement}-${e.position.slot}`;n[t]={toolbarId:e.id,isOpen:!0}}}),{...e,documents:{...e.documents,[o]:{...ie,activeToolbars:n}}}}case n:{const{documentId:o}=t.payload,{[o]:s,...n}=e.documents;return{...e,documents:n}}case i:{const{documentId:o,placement:s,slot:n,toolbarId:i}=t.payload,a=e.documents[o]||ie,d=`${s}-${n}`;return{...e,documents:{...e.documents,[o]:{...a,activeToolbars:{...a.activeToolbars,[d]:{toolbarId:i,isOpen:!0}}}}}}case a:{const{documentId:o,placement:s,slot:n}=t.payload,i=e.documents[o];if(!i)return e;const a=`${s}-${n}`,d=i.activeToolbars[a];return d?{...e,documents:{...e.documents,[o]:{...i,activeToolbars:{...i.activeToolbars,[a]:{...d,isOpen:!1}}}}}:e}case d:{const{documentId:o,placement:s,slot:n,sidebarId:i,activeTab:a}=t.payload,d=e.documents[o]||ie,r=`${s}-${n}`;return{...e,documents:{...e.documents,[o]:{...d,activeSidebars:{...d.activeSidebars,[r]:{sidebarId:i,isOpen:!0}},...a&&{sidebarTabs:{...d.sidebarTabs,[i]:a}}}}}}case r:{const{documentId:o,placement:s,slot:n}=t.payload,i=e.documents[o];if(!i)return e;const a=`${s}-${n}`,d=i.activeSidebars[a];return d?{...e,documents:{...e.documents,[o]:{...i,activeSidebars:{...i.activeSidebars,[a]:{...d,isOpen:!1}}}}}:e}case c:{const{documentId:o,sidebarId:s,tabId:n}=t.payload,i=e.documents[o]||ie;return{...e,documents:{...e.documents,[o]:{...i,sidebarTabs:{...i.sidebarTabs,[s]:n}}}}}case l:{const{documentId:o,modalId:s}=t.payload,n=e.documents[o]||ie;return{...e,documents:{...e.documents,[o]:{...n,activeModal:{modalId:s,isOpen:!0},openMenus:{}}}}}case u:{const{documentId:o}=t.payload,s=e.documents[o];return(null==s?void 0:s.activeModal)?{...e,documents:{...e.documents,[o]:{...s,activeModal:{...s.activeModal,isOpen:!1}}}}:e}case h:{const{documentId:s}=t.payload,n=e.documents[s];return n?(null==(o=n.activeModal)?void 0:o.isOpen)?e:{...e,documents:{...e.documents,[s]:{...n,activeModal:null}}}:e}case m:{const{documentId:o,menuState:s}=t.payload,n=e.documents[o]||ie;return{...e,documents:{...e.documents,[o]:{...n,openMenus:{[s.menuId]:s}}}}}case p:{const{documentId:o,menuId:s}=t.payload,n=e.documents[o];if(!n)return e;const{[s]:i,...a}=n.openMenus;return{...e,documents:{...e.documents,[o]:{...n,openMenus:a}}}}case g:{const{documentId:o}=t.payload,s=e.documents[o];return s?{...e,documents:{...e.documents,[o]:{...s,openMenus:{}}}}:e}case b:return{...e,disabledCategories:t.payload.categories};case I:return{...e,hiddenItems:t.payload.hiddenItems};default:return e}},initialState:ae};exports.CLEANUP_UI_STATE=n,exports.CLEAR_MODAL=h,exports.CLOSE_ALL_MENUS=g,exports.CLOSE_MENU=p,exports.CLOSE_MODAL=u,exports.CLOSE_SIDEBAR_SLOT=r,exports.CLOSE_TOOLBAR_SLOT=a,exports.INIT_UI_STATE=s,exports.OPEN_MENU=m,exports.OPEN_MODAL=l,exports.SET_ACTIVE_SIDEBAR=d,exports.SET_ACTIVE_TOOLBAR=i,exports.SET_DISABLED_CATEGORIES=b,exports.SET_HIDDEN_ITEMS=I,exports.SET_SIDEBAR_TAB=c,exports.UIPlugin=ne,exports.UIPluginPackage=he,exports.UI_ATTRIBUTES=B,exports.UI_PLUGIN_ID=t,exports.UI_SELECTORS=j,exports.cleanupUIState=f,exports.clearModal=M,exports.closeAllMenus=x,exports.closeMenu=A,exports.closeModal=E,exports.closeSidebarSlot=D,exports.closeToolbarSlot=y,exports.computeHiddenItems=H,exports.extractCategories=function(e){const t=k(e);return Array.from(t.categories).sort()},exports.extractItemCategories=G,exports.generateUIStylesheet=P,exports.getItemResponsiveMetadata=function(e,t,o){const s=W(t,o);return(null==s?void 0:s.items.get(e))??null},exports.getStylesheetConfig=function(e={}){return{...N,...e}},exports.getUIItemProps=function(e,t){var o;return{[B.ITEM]:e.id,[B.CATEGORIES]:(null==(o=e.categories)?void 0:o.join(" "))||void 0,...t}},exports.initUIState=S,exports.isSidebarOpen=function(e,t,o,s,n){const i=ue(e,t,o,s);return!(!i||!i.isOpen)&&(!n||i.sidebarId===n)},exports.isToolbarOpen=function(e,t,o,s,n){const i=le(e,t,o,s);return!(!i||!i.isOpen)&&(!n||i.toolbarId===n)},exports.manifest=o,exports.mergeUISchema=F,exports.openMenu=$,exports.openModal=T,exports.removeFromSchema=function(e,t){const o={...e};return t.toolbars&&(o.toolbars={...o.toolbars},t.toolbars.forEach(e=>delete o.toolbars[e])),t.menus&&(o.menus={...o.menus},t.menus.forEach(e=>delete o.menus[e])),t.sidebars&&(o.sidebars={...o.sidebars},t.sidebars.forEach(e=>delete o.sidebars[e])),t.commands&&(o.toolbars=function(e,t){const o={};for(const[s,n]of Object.entries(e))o[s]={...n,items:n.items.filter(e=>"command-button"===e.type?!t.includes(e.commandId):"group"===e.type?e.items.some(e=>"command-button"!==e.type||!t.includes(e.commandId)):"tab-group"!==e.type||e.tabs.some(e=>!t.includes(e.commandId)))};return o}(o.toolbars,t.commands),o.menus=function(e,t){const o={};for(const[s,n]of Object.entries(e))o[s]={...n,items:n.items.filter(e=>"command"===e.type?!t.includes(e.commandId):"section"!==e.type||e.items.some(e=>"command"!==e.type||!t.includes(e.commandId)))};return o}(o.menus,t.commands)),o},exports.resolveResponsiveMetadata=W,exports.selectSidebarSlot=ue,exports.selectToolbarSlot=le,exports.selectUIDocumentState=re,exports.selectUIState=de,exports.setActiveSidebar=O,exports.setActiveToolbar=v,exports.setDisabledCategories=L,exports.setHiddenItems=_,exports.setSidebarTab=C;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t="ui",o={id:t,name:"UI Plugin",version:"1.0.0",provides:["ui"],requires:["commands"],optional:["i18n"],defaultConfig:{schema:{id:"empty",version:"1.0.0",toolbars:{},menus:{},sidebars:{},modals:{},selectionMenus:{}}}},n="UI/INIT_STATE",s="UI/CLEANUP_STATE",i="UI/SET_ACTIVE_TOOLBAR",a="UI/CLOSE_TOOLBAR_SLOT",r="UI/SET_ACTIVE_SIDEBAR",d="UI/CLOSE_SIDEBAR_SLOT",c="UI/SET_SIDEBAR_TAB",l="UI/OPEN_MODAL",u="UI/CLOSE_MODAL",h="UI/CLEAR_MODAL",m="UI/OPEN_MENU",p="UI/CLOSE_MENU",g="UI/CLOSE_ALL_MENUS",b="UI/SET_OVERLAY_ENABLED",I="UI/SET_DISABLED_CATEGORIES",v="UI/SET_HIDDEN_ITEMS",y=(e,t)=>({type:n,payload:{documentId:e,schema:t}}),S=e=>({type:s,payload:{documentId:e}}),O=(e,t,o,n)=>({type:i,payload:{documentId:e,placement:t,slot:o,toolbarId:n}}),f=(e,t,o)=>({type:a,payload:{documentId:e,placement:t,slot:o}}),D=(e,t,o,n,s)=>({type:r,payload:{documentId:e,placement:t,slot:o,sidebarId:n,activeTab:s}}),C=(e,t,o)=>({type:d,payload:{documentId:e,placement:t,slot:o}}),E=(e,t,o)=>({type:c,payload:{documentId:e,sidebarId:t,tabId:o}}),T=(e,t)=>({type:l,payload:{documentId:e,modalId:t}}),$=e=>({type:u,payload:{documentId:e}}),M=e=>({type:h,payload:{documentId:e}}),A=(e,t)=>({type:m,payload:{documentId:e,menuState:t}}),x=(e,t)=>({type:p,payload:{documentId:e,menuId:t}}),F=e=>({type:g,payload:{documentId:e}}),L=(e,t,o)=>({type:b,payload:{documentId:e,overlayId:t,enabled:o}}),_=e=>({type:I,payload:{categories:e}}),U=e=>({type:v,payload:{hiddenItems:e}});function w(e,t){return{...e,...t,toolbars:R(e.toolbars,t.toolbars),menus:W(e.menus,t.menus),sidebars:B(e.sidebars,t.sidebars)}}function R(e,t){if(!t)return e;const o={...e};for(const[n,s]of Object.entries(t))o[n]?o[n]={...o[n],...s,items:s.items??o[n].items,responsive:s.responsive??o[n].responsive}:o[n]=s;return o}function W(e,t){if(!t)return e;const o={...e};for(const[n,s]of Object.entries(t))o[n]?o[n]={...o[n],...s,items:s.items??o[n].items}:o[n]=s;return o}function B(e,t){if(!t)return e;const o={...e};for(const[n,s]of Object.entries(t))o[n]?o[n]={...o[n],...s,content:s.content??o[n].content}:o[n]=s;return o}function j(e,t){var o;if(!(null==(o=e.responsive)?void 0:o.breakpoints))return null;const n=function(e,t,o){if(!o||!(null==t?void 0:t.groups))return e;const n=t.groups.find(e=>e.locales.includes(o));if(!n)return e;const s={};for(const[i,a]of Object.entries(e)){const e=n.breakpoints[i];e?s[i]={minWidth:a.minWidth,maxWidth:a.maxWidth,hide:e.replaceHide?e.replaceHide:[...a.hide||[],...e.hide||[]],show:e.replaceShow?e.replaceShow:[...a.show||[],...e.show||[]]}:s[i]=a}return s}(e.responsive.breakpoints,e.responsive.localeOverrides,t),s=new Map,i=new Map;for(const[d,c]of Object.entries(n))i.set(d,{minWidth:c.minWidth,maxWidth:c.maxWidth});const a=new Set,r=e=>{e.forEach(e=>{a.add(e.id),"group"===e.type&&e.items&&r(e.items),"tab-group"===e.type&&e.tabs&&r(e.tabs),"section"===e.type&&e.items&&r(e.items)})};r(e.items);for(const d of a){const e=[];let t=!0;Array.from(Object.entries(n)).sort((e,t)=>(e[1].minWidth??0)-(t[1].minWidth??0)).forEach(([o,n],s)=>{var i,a;const r=null==(i=n.hide)?void 0:i.includes(d),c=null==(a=n.show)?void 0:a.includes(d);(r||c)&&(e.push({breakpointId:o,minWidth:n.minWidth,maxWidth:n.maxWidth,visible:c||!r,priority:s}),0===s&&(t=c||!r))}),e.length>0&&s.set(d,{itemId:d,shouldRender:!0,visibilityRules:e,defaultVisible:t})}return{items:s,breakpoints:i}}const N={ROOT:"data-epdf",STYLES:"data-epdf-s",ITEM:"data-epdf-i",CATEGORIES:"data-epdf-cat",DISABLED_CATEGORIES:"data-epdf-dis",HIDDEN_ITEMS:"data-epdf-hid"},P={ROOT:`[${N.ROOT}]`,STYLES:`[${N.STYLES}]`,ITEM:e=>`[${N.ITEM}="${e}"]`,CATEGORIES:e=>`[${N.CATEGORIES}~="${e}"]`,DISABLED_CATEGORY:e=>`[${N.DISABLED_CATEGORIES}~="${e}"]`,HIDDEN_ITEM:e=>`[${N.HIDDEN_ITEMS}~="${e}"]`},G={useContainerQueries:!0};function H(e,t={}){const o={...G,...t.config},n=t.locale,s=Y(e,n),i=[];i.push(function(e){const t=e?` (locale: ${e})`:"";return`/* ═══════════════════════════════════════════════════════════════════════════ */\n/* EmbedPDF UI Stylesheet - Auto-generated${t} */\n/* DO NOT EDIT MANUALLY - This file is generated from your UI schema */\n/* ═══════════════════════════════════════════════════════════════════════════ */`}(n));const a=function(e,t){const o=[],n=t.useContainerQueries?"@container":"@media",s=new Set;return e.responsiveItems.forEach((e,t)=>{if(s.has(t))return;s.add(t);const i=function(e,t,o){if(0===t.visibilityRules.length)return null;const n=[],s=P.ITEM(e);t.defaultVisible||n.push(`${s} { display: none; }`);for(const i of t.visibilityRules){const e=[];if(void 0!==i.minWidth&&e.push(`(min-width: ${i.minWidth}px)`),void 0!==i.maxWidth&&e.push(`(max-width: ${i.maxWidth}px)`),e.length>0){const t=i.visible?"flex":"none";n.push(`${o} ${e.join(" and ")} {\n ${s} { display: ${t}; }\n}`)}}return n.length>0?n.join("\n"):null}(t,e,n);i&&o.push(i)}),0===o.length?"":`/* ─── Responsive Visibility Rules ─── */\n/* Items show/hide based on container width */\n\n${o.join("\n\n")}`}(s,o);a&&i.push(a);const r=function(e){if(0===e.categories.size)return"";const t=[],o=Array.from(e.categories).sort();for(const n of o)t.push(`${P.ROOT}[${N.DISABLED_CATEGORIES}~="${n}"] [${N.CATEGORIES}~="${n}"] {\n display: none !important;\n}`);return`/* ─── Category Visibility Rules ─── */\n/* Items hide when ANY of their categories is disabled */\n/* Use: data-disabled-categories="category1 category2" on root element */\n\n${t.join("\n\n")}`}(s);r&&i.push(r);const d=function(e,t){if(0===e.dependencies.length)return"";const o=[],n=t.useContainerQueries?"@container":"@media";for(const s of e.dependencies){const t=se(s,e,n);t.length>0&&o.push(...t)}return 0===o.length?"":`/* ─── Dependency Visibility Rules ─── */\n/* Container elements hide when all their dependencies are hidden */\n\n${o.join("\n\n")}`}(s,o);return d&&i.push(d),i.filter(e=>e.trim()).join("\n\n")}function V(e){return Y(e).itemCategories}function k(e,t){const o=new Set(t),n=[];return e.forEach((e,t)=>{e.some(e=>o.has(e))&&n.push(t)}),n}function Y(e,t){const o=new Set,n=new Map,s=[],i=new Map,a=new Map;for(const[r,d]of Object.entries(e.menus))z(r,d,o,n,s,i,a,t);for(const[r,d]of Object.entries(e.toolbars))K(r,d,o,n,s,a,t);for(const[r,d]of Object.entries(e.sidebars))ee(r,d,o,n,s);for(const[r,d]of Object.entries(e.selectionMenus||{}))te(r,d,o,n,s,a,t);return{categories:o,itemCategories:n,dependencies:s,menuBreakpoints:i,responsiveItems:a}}function z(e,t,o,n,s,i,a,r){ne(e,t.categories,t.visibilityDependsOn,o,n,s),Q(t.items,o,n,s);const d=j(t,r);d&&d.items.forEach((e,t)=>{a.set(t,e)});const c=function(e,t,o){var n;const s=[],i=j(e,o);if((null==(n=e.responsive)?void 0:n.breakpoints)&&i){const e=Array.from(i.breakpoints.entries()).sort((e,t)=>(e[1].minWidth??0)-(t[1].minWidth??0));for(const[o,n]of e){const e=J(i,n),o=new Set;for(const n of e){const e=t.get(n);e&&e.forEach(e=>o.add(e))}s.push({minWidth:n.minWidth,maxWidth:n.maxWidth,visibleItemIds:e,visibleCategories:o})}}else{const o=[],n=new Set;q(e.items,t,o,n),s.push({visibleItemIds:o,visibleCategories:n})}return s}(t,n,r);i.set(e,c)}function Q(e,t,o,n){for(const s of e)ne(s.id,s.categories,s.visibilityDependsOn,t,o,n),"section"===s.type&&Q(s.items,t,o,n)}function q(e,t,o,n){for(const s of e){o.push(s.id);const e=t.get(s.id);e&&e.forEach(e=>n.add(e)),"section"===s.type&&q(s.items,t,o,n)}}function J(e,t){const o=[];return e.items.forEach((e,n)=>{let s=e.defaultVisible;for(const o of e.visibilityRules){(void 0===o.minWidth||void 0!==t.minWidth&&t.minWidth>=o.minWidth)&&(void 0===o.maxWidth||void 0!==t.maxWidth&&t.maxWidth<=o.maxWidth)&&(s=o.visible)}s&&o.push(n)}),o}function K(e,t,o,n,s,i,a){ne(e,t.categories,t.visibilityDependsOn,o,n,s);const r=j(t,a);r&&r.items.forEach((e,t)=>{i.set(t,e)}),X(t.items,o,n,s)}function X(e,t,o,n){for(const s of e)ne(s.id,s.categories,s.visibilityDependsOn,t,o,n),"group"===s.type&&s.items&&X(s.items,t,o,n),"tab-group"===s.type&&s.tabs&&Z(s.tabs,t,o,n)}function Z(e,t,o,n){for(const s of e)ne(s.id,s.categories,s.visibilityDependsOn,t,o,n)}function ee(e,t,o,n,s){if(ne(e,t.categories,t.visibilityDependsOn,o,n,s),"tabs"===t.content.type)for(const i of t.content.tabs)ne(i.id,i.categories,i.visibilityDependsOn,o,n,s)}function te(e,t,o,n,s,i,a){if(ne(e,t.categories,t.visibilityDependsOn,o,n,s),t.responsive){const e=j(t,a);e&&e.items.forEach((e,t)=>{i.set(t,e)})}oe(t.items,o,n,s)}function oe(e,t,o,n){for(const s of e)ne(s.id,s.categories,s.visibilityDependsOn,t,o,n),"group"===s.type&&s.items&&oe(s.items,t,o,n)}function ne(e,t,o,n,s,i){var a;(null==t?void 0:t.length)&&(t.forEach(e=>n.add(e)),s.set(e,t)),o&&(o.menuId||(null==(a=o.itemIds)?void 0:a.length))&&i.push({itemId:e,dependsOnMenuId:o.menuId,dependsOnItemIds:o.itemIds})}function se(e,t,o,n){var s;const i=[];if(e.dependsOnMenuId){const n=t.menuBreakpoints.get(e.dependsOnMenuId);if(n&&n.length>0){i.push(`/* "${e.itemId}" depends on menu "${e.dependsOnMenuId}" */`);for(const t of n){if(0===t.visibleItemIds.length)continue;const n=t.visibleItemIds.sort().map(e=>P.HIDDEN_ITEM(e)).join(""),s=`${P.ROOT}${n} ${P.ITEM(e.itemId)} {\n display: none !important;\n}`,a=[];void 0!==t.minWidth&&a.push(`(min-width: ${t.minWidth}px)`),void 0!==t.maxWidth&&a.push(`(max-width: ${t.maxWidth}px)`),a.length>0?i.push(`${o} ${a.join(" and ")} {\n ${s}\n}`):i.push(s)}}}if(null==(s=e.dependsOnItemIds)?void 0:s.length){i.push(`/* "${e.itemId}" depends on items: ${e.dependsOnItemIds.join(", ")} */`);const t=e.dependsOnItemIds.sort().map(e=>P.HIDDEN_ITEM(e)).join("");i.push(`${P.ROOT}${t} ${P.ITEM(e.itemId)} {\n display: none !important;\n}`)}return i}const ie=class extends e.BasePlugin{constructor(t,o,n){var s,i;if(super(t,o),this.cachedStylesheet=null,this.cachedLocale=null,this.i18n=null,this.i18nCleanup=null,this.categoryChanged$=e.createBehaviorEmitter(),this.stylesheetInvalidated$=e.createEmitter(),this.toolbarChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.sidebarChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.modalChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.menuChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.overlayChanged$=e.createScopedEmitter((e,t)=>({documentId:e,...t}),{cache:!1}),this.schema=n.schema,this.stylesheetConfig=n.stylesheetConfig||{},this.itemCategories=V(this.schema),null==(s=n.disabledCategories)?void 0:s.length){this.dispatch(_(n.disabledCategories));const e=k(this.itemCategories,n.disabledCategories);this.dispatch(U(e))}this.i18n=(null==(i=o.getPlugin("i18n"))?void 0:i.provides())??null,this.i18n&&(this.i18nCleanup=this.i18n.onLocaleChange(({currentLocale:e})=>{this.handleLocaleChange(e)}),this.cachedLocale=this.i18n.getLocale())}async initialize(){this.logger.info("UIPlugin","Initialize","UI plugin initialized")}async destroy(){this.i18nCleanup&&(this.i18nCleanup(),this.i18nCleanup=null),this.toolbarChanged$.clear(),this.sidebarChanged$.clear(),this.modalChanged$.clear(),this.menuChanged$.clear(),this.overlayChanged$.clear(),this.stylesheetInvalidated$.clear(),super.destroy()}onDocumentLoadingStarted(e){this.dispatch(y(e,this.schema))}onDocumentClosed(e){this.dispatch(S(e)),this.toolbarChanged$.clearScope(e),this.sidebarChanged$.clearScope(e),this.modalChanged$.clearScope(e),this.menuChanged$.clearScope(e),this.overlayChanged$.clearScope(e)}handleLocaleChange(e){this.cachedLocale!==e&&(this.logger.debug("UIPlugin","LocaleChange",`Locale changed: ${this.cachedLocale} -> ${e}`),this.cachedLocale=e,this.invalidateStylesheet(),this.stylesheetInvalidated$.emit())}getStylesheet(){var e;const t=(null==(e=this.i18n)?void 0:e.getLocale())??null;return this.cachedStylesheet&&this.cachedLocale===t||(this.cachedStylesheet=H(this.schema,{config:this.stylesheetConfig,locale:t??void 0}),this.cachedLocale=t),this.cachedStylesheet}getLocale(){var e;return(null==(e=this.i18n)?void 0:e.getLocale())??null}invalidateStylesheet(){this.cachedStylesheet=null}onStylesheetInvalidated(e){return this.stylesheetInvalidated$.on(e)}disableCategoryImpl(e){const t=new Set(this.state.disabledCategories);if(!t.has(e)){t.add(e);const o=Array.from(t);this.dispatch(_(o));const n=k(this.itemCategories,o);this.dispatch(U(n)),this.categoryChanged$.emit({disabledCategories:o,hiddenItems:n})}}enableCategoryImpl(e){const t=new Set(this.state.disabledCategories);if(t.has(e)){t.delete(e);const o=Array.from(t);this.dispatch(_(o));const n=k(this.itemCategories,o);this.dispatch(U(n)),this.categoryChanged$.emit({disabledCategories:o,hiddenItems:n})}}toggleCategoryImpl(e){this.state.disabledCategories.includes(e)?this.enableCategoryImpl(e):this.disableCategoryImpl(e)}setDisabledCategoriesImpl(e){this.dispatch(_(e));const t=k(this.itemCategories,e);this.dispatch(U(t)),this.categoryChanged$.emit({disabledCategories:e,hiddenItems:t})}buildCapability(){return{setActiveToolbar:(e,t,o,n)=>this.setToolbarForDocument(e,t,o,n),setActiveSidebar:(e,t,o,n,s)=>this.setSidebarForDocument(e,t,o,n,s),toggleSidebar:(e,t,o,n,s)=>this.toggleSidebarForDocument(e,t,o,n,s),openModal:(e,t)=>this.openModalForDocument(e,t),openMenu:(e,t,o,n)=>this.openMenuForDocument(e,t,o,n),toggleMenu:(e,t,o,n)=>this.toggleMenuForDocument(e,t,o,n),enableOverlay:(e,t)=>this.enableOverlayForDocument(e,t),disableOverlay:(e,t)=>this.disableOverlayForDocument(e,t),toggleOverlay:(e,t)=>this.toggleOverlayForDocument(e,t),forDocument:e=>this.createUIScope(e),getSchema:()=>this.schema,mergeSchema:e=>{this.schema=w(this.schema,e)},disableCategory:e=>this.disableCategoryImpl(e),enableCategory:e=>this.enableCategoryImpl(e),toggleCategory:e=>this.toggleCategoryImpl(e),setDisabledCategories:e=>this.setDisabledCategoriesImpl(e),getDisabledCategories:()=>this.state.disabledCategories,isCategoryDisabled:e=>this.state.disabledCategories.includes(e),getHiddenItems:()=>this.state.hiddenItems,onToolbarChanged:this.toolbarChanged$.onGlobal,onSidebarChanged:this.sidebarChanged$.onGlobal,onModalChanged:this.modalChanged$.onGlobal,onMenuChanged:this.menuChanged$.onGlobal,onOverlayChanged:this.overlayChanged$.onGlobal,onCategoryChanged:this.categoryChanged$.on}}createUIScope(e){return{setActiveToolbar:(t,o,n)=>this.setToolbarForDocument(t,o,n,e),getActiveToolbar:(t,o)=>this.getToolbarForDocument(t,o,e),closeToolbarSlot:(t,o)=>this.closeToolbarForDocument(t,o,e),isToolbarOpen:(t,o,n)=>this.isToolbarOpenForDocument(t,o,n,e),setActiveSidebar:(t,o,n,s)=>this.setSidebarForDocument(t,o,n,e,s),getActiveSidebar:(t,o)=>this.getSidebarForDocument(t,o,e),closeSidebarSlot:(t,o)=>this.closeSidebarForDocument(t,o,e),toggleSidebar:(t,o,n,s)=>this.toggleSidebarForDocument(t,o,n,e,s),isSidebarOpen:(t,o,n)=>this.isSidebarOpenForDocument(t,o,n,e),setSidebarTab:(t,o)=>this.setSidebarTabForDocument(t,o,e),getSidebarTab:t=>this.getSidebarTabForDocument(t,e),openModal:t=>this.openModalForDocument(t,e),closeModal:()=>this.closeModalForDocument(e),clearModal:()=>this.clearModalForDocument(e),getActiveModal:()=>this.getActiveModalForDocument(e),isModalOpen:()=>this.isModalOpenForDocument(e),openMenu:(t,o,n)=>this.openMenuForDocument(t,o,n,e),closeMenu:t=>this.closeMenuForDocument(t,e),toggleMenu:(t,o,n)=>this.toggleMenuForDocument(t,o,n,e),closeAllMenus:()=>this.closeAllMenusForDocument(e),isMenuOpen:t=>this.isMenuOpenForDocument(t,e),getOpenMenus:()=>this.getOpenMenusForDocument(e),enableOverlay:t=>this.enableOverlayForDocument(t,e),disableOverlay:t=>this.disableOverlayForDocument(t,e),toggleOverlay:t=>this.toggleOverlayForDocument(t,e),isOverlayEnabled:t=>this.isOverlayEnabledForDocument(t,e),getEnabledOverlays:()=>this.getEnabledOverlaysForDocument(e),getSchema:()=>this.schema,getState:()=>this.getDocumentStateOrThrow(e),onToolbarChanged:this.toolbarChanged$.forScope(e),onSidebarChanged:this.sidebarChanged$.forScope(e),onModalChanged:this.modalChanged$.forScope(e),onMenuChanged:this.menuChanged$.forScope(e),onOverlayChanged:this.overlayChanged$.forScope(e)}}getDocumentState(e){const t=e??this.getActiveDocumentId();return this.state.documents[t]??null}getDocumentStateOrThrow(e){const t=this.getDocumentState(e);if(!t)throw new Error(`UI state not found for document: ${e??"active"}`);return t}setToolbarForDocument(e,t,o,n){const s=n??this.getActiveDocumentId();this.dispatch(O(s,e,t,o)),this.toolbarChanged$.emit(s,{placement:e,slot:t,toolbarId:o})}getToolbarForDocument(e,t,o){const n=`${e}-${t}`,s=this.getDocumentStateOrThrow(o).activeToolbars[n];return(null==s?void 0:s.isOpen)?s.toolbarId:null}closeToolbarForDocument(e,t,o){const n=o??this.getActiveDocumentId();this.dispatch(f(n,e,t)),this.toolbarChanged$.emit(n,{placement:e,slot:t,toolbarId:""})}isToolbarOpenForDocument(e,t,o,n){const s=`${e}-${t}`,i=this.getDocumentStateOrThrow(n).activeToolbars[s];return!(!i||!i.isOpen)&&(!o||i.toolbarId===o)}setSidebarForDocument(e,t,o,n,s){const i=n??this.getActiveDocumentId();this.dispatch(D(i,e,t,o,s)),this.sidebarChanged$.emit(i,{placement:e,slot:t,sidebarId:o})}getSidebarForDocument(e,t,o){const n=`${e}-${t}`,s=this.getDocumentStateOrThrow(o).activeSidebars[n];return(null==s?void 0:s.isOpen)?s.sidebarId:null}closeSidebarForDocument(e,t,o){const n=o??this.getActiveDocumentId();this.dispatch(C(n,e,t)),this.sidebarChanged$.emit(n,{placement:e,slot:t,sidebarId:""})}toggleSidebarForDocument(e,t,o,n,s){const i=n??this.getActiveDocumentId(),a=`${e}-${t}`,r=this.getDocumentStateOrThrow(i).activeSidebars[a];(null==r?void 0:r.sidebarId)===o&&(null==r?void 0:r.isOpen)?(this.dispatch(C(i,e,t)),this.sidebarChanged$.emit(i,{placement:e,slot:t,sidebarId:""})):(this.dispatch(D(i,e,t,o,s)),this.sidebarChanged$.emit(i,{placement:e,slot:t,sidebarId:o}))}isSidebarOpenForDocument(e,t,o,n){const s=`${e}-${t}`,i=this.getDocumentStateOrThrow(n).activeSidebars[s];return!(!i||!i.isOpen)&&(!o||i.sidebarId===o)}setSidebarTabForDocument(e,t,o){const n=o??this.getActiveDocumentId();this.dispatch(E(n,e,t))}getSidebarTabForDocument(e,t){return this.getDocumentStateOrThrow(t).sidebarTabs[e]??null}openModalForDocument(e,t){const o=t??this.getActiveDocumentId();this.dispatch(T(o,e)),this.modalChanged$.emit(o,{modalId:e,isOpen:!0})}closeModalForDocument(e){const t=e??this.getActiveDocumentId(),o=this.getDocumentStateOrThrow(t).activeModal;this.dispatch($(t)),this.modalChanged$.emit(t,{modalId:(null==o?void 0:o.modalId)??null,isOpen:!1})}clearModalForDocument(e){const t=e??this.getActiveDocumentId();this.dispatch(M(t))}getActiveModalForDocument(e){return this.getDocumentStateOrThrow(e).activeModal}isModalOpenForDocument(e){const t=this.getDocumentStateOrThrow(e).activeModal;return(null==t?void 0:t.isOpen)??!1}openMenuForDocument(e,t,o,n){const s=n??this.getActiveDocumentId();this.dispatch(A(s,{menuId:e,triggeredByCommandId:t,triggeredByItemId:o})),this.menuChanged$.emit(s,{menuId:e,isOpen:!0})}closeMenuForDocument(e,t){const o=t??this.getActiveDocumentId();this.dispatch(x(o,e)),this.menuChanged$.emit(o,{menuId:e,isOpen:!1})}toggleMenuForDocument(e,t,o,n){const s=n??this.getActiveDocumentId();!!this.getDocumentStateOrThrow(s).openMenus[e]?(this.dispatch(x(s,e)),this.menuChanged$.emit(s,{menuId:e,isOpen:!1})):(this.dispatch(A(s,{menuId:e,triggeredByCommandId:t,triggeredByItemId:o})),this.menuChanged$.emit(s,{menuId:e,isOpen:!0}))}closeAllMenusForDocument(e){const t=e??this.getActiveDocumentId();this.dispatch(F(t))}isMenuOpenForDocument(e,t){return!!this.getDocumentStateOrThrow(t).openMenus[e]}getOpenMenusForDocument(e){return Object.values(this.getDocumentStateOrThrow(e).openMenus)}enableOverlayForDocument(e,t){const o=t??this.getActiveDocumentId();this.dispatch(L(o,e,!0)),this.overlayChanged$.emit(o,{overlayId:e,isEnabled:!0})}disableOverlayForDocument(e,t){const o=t??this.getActiveDocumentId();this.dispatch(L(o,e,!1)),this.overlayChanged$.emit(o,{overlayId:e,isEnabled:!1})}toggleOverlayForDocument(e,t){const o=t??this.getActiveDocumentId();this.isOverlayEnabledForDocument(e,o)?this.disableOverlayForDocument(e,o):this.enableOverlayForDocument(e,o)}isOverlayEnabledForDocument(e,t){return this.getDocumentStateOrThrow(t).enabledOverlays[e]??!0}getEnabledOverlaysForDocument(e){const t=this.getDocumentStateOrThrow(e).enabledOverlays;return Object.entries(t).filter(([,e])=>e).map(([e])=>e)}};ie.id="ui";let ae=ie;const re={activeToolbars:{},activeSidebars:{},activeModal:null,openMenus:{},sidebarTabs:{},enabledOverlays:{}},de={documents:{},disabledCategories:[],hiddenItems:[]};function ce(e){return e.ui??null}function le(e,t){const o=ce(e);return(null==o?void 0:o.documents[t])??null}function ue(e,t){return`${e}-${t}`}function he(e,t,o,n){const s=le(e,t);return s?s.activeToolbars[ue(o,n)]??null:null}function me(e,t,o,n){const s=le(e,t);return s?s.activeSidebars[ue(o,n)]??null:null}const pe={manifest:o,create:(e,o)=>new ae(t,e,o),reducer:(e=de,t)=>{var o;switch(t.type){case n:{const{documentId:o,schema:n}=t.payload,s={};Object.values(n.toolbars).forEach(e=>{if(e.permanent&&e.position){const t=`${e.position.placement}-${e.position.slot}`;s[t]={toolbarId:e.id,isOpen:!0}}});const i={};return n.overlays&&Object.values(n.overlays).forEach(e=>{i[e.id]=e.defaultEnabled??!0}),{...e,documents:{...e.documents,[o]:{...re,activeToolbars:s,enabledOverlays:i}}}}case s:{const{documentId:o}=t.payload,{[o]:n,...s}=e.documents;return{...e,documents:s}}case i:{const{documentId:o,placement:n,slot:s,toolbarId:i}=t.payload,a=e.documents[o]||re,r=`${n}-${s}`;return{...e,documents:{...e.documents,[o]:{...a,activeToolbars:{...a.activeToolbars,[r]:{toolbarId:i,isOpen:!0}}}}}}case a:{const{documentId:o,placement:n,slot:s}=t.payload,i=e.documents[o];if(!i)return e;const a=`${n}-${s}`,r=i.activeToolbars[a];return r?{...e,documents:{...e.documents,[o]:{...i,activeToolbars:{...i.activeToolbars,[a]:{...r,isOpen:!1}}}}}:e}case r:{const{documentId:o,placement:n,slot:s,sidebarId:i,activeTab:a}=t.payload,r=e.documents[o]||re,d=`${n}-${s}`;return{...e,documents:{...e.documents,[o]:{...r,activeSidebars:{...r.activeSidebars,[d]:{sidebarId:i,isOpen:!0}},...a&&{sidebarTabs:{...r.sidebarTabs,[i]:a}}}}}}case d:{const{documentId:o,placement:n,slot:s}=t.payload,i=e.documents[o];if(!i)return e;const a=`${n}-${s}`,r=i.activeSidebars[a];return r?{...e,documents:{...e.documents,[o]:{...i,activeSidebars:{...i.activeSidebars,[a]:{...r,isOpen:!1}}}}}:e}case c:{const{documentId:o,sidebarId:n,tabId:s}=t.payload,i=e.documents[o]||re;return{...e,documents:{...e.documents,[o]:{...i,sidebarTabs:{...i.sidebarTabs,[n]:s}}}}}case l:{const{documentId:o,modalId:n}=t.payload,s=e.documents[o]||re;return{...e,documents:{...e.documents,[o]:{...s,activeModal:{modalId:n,isOpen:!0},openMenus:{}}}}}case u:{const{documentId:o}=t.payload,n=e.documents[o];return(null==n?void 0:n.activeModal)?{...e,documents:{...e.documents,[o]:{...n,activeModal:{...n.activeModal,isOpen:!1}}}}:e}case h:{const{documentId:n}=t.payload,s=e.documents[n];return s?(null==(o=s.activeModal)?void 0:o.isOpen)?e:{...e,documents:{...e.documents,[n]:{...s,activeModal:null}}}:e}case m:{const{documentId:o,menuState:n}=t.payload,s=e.documents[o]||re;return{...e,documents:{...e.documents,[o]:{...s,openMenus:{[n.menuId]:n}}}}}case p:{const{documentId:o,menuId:n}=t.payload,s=e.documents[o];if(!s)return e;const{[n]:i,...a}=s.openMenus;return{...e,documents:{...e.documents,[o]:{...s,openMenus:a}}}}case g:{const{documentId:o}=t.payload,n=e.documents[o];return n?{...e,documents:{...e.documents,[o]:{...n,openMenus:{}}}}:e}case b:{const{documentId:o,overlayId:n,enabled:s}=t.payload,i=e.documents[o]||re;return{...e,documents:{...e.documents,[o]:{...i,enabledOverlays:{...i.enabledOverlays,[n]:s}}}}}case I:return{...e,disabledCategories:t.payload.categories};case v:return{...e,hiddenItems:t.payload.hiddenItems};default:return e}},initialState:de};exports.CLEANUP_UI_STATE=s,exports.CLEAR_MODAL=h,exports.CLOSE_ALL_MENUS=g,exports.CLOSE_MENU=p,exports.CLOSE_MODAL=u,exports.CLOSE_SIDEBAR_SLOT=d,exports.CLOSE_TOOLBAR_SLOT=a,exports.INIT_UI_STATE=n,exports.OPEN_MENU=m,exports.OPEN_MODAL=l,exports.SET_ACTIVE_SIDEBAR=r,exports.SET_ACTIVE_TOOLBAR=i,exports.SET_DISABLED_CATEGORIES=I,exports.SET_HIDDEN_ITEMS=v,exports.SET_OVERLAY_ENABLED=b,exports.SET_SIDEBAR_TAB=c,exports.UIPlugin=ae,exports.UIPluginPackage=pe,exports.UI_ATTRIBUTES=N,exports.UI_PLUGIN_ID=t,exports.UI_SELECTORS=P,exports.cleanupUIState=S,exports.clearModal=M,exports.closeAllMenus=F,exports.closeMenu=x,exports.closeModal=$,exports.closeSidebarSlot=C,exports.closeToolbarSlot=f,exports.computeHiddenItems=k,exports.extractCategories=function(e){const t=Y(e);return Array.from(t.categories).sort()},exports.extractItemCategories=V,exports.generateUIStylesheet=H,exports.getItemResponsiveMetadata=function(e,t,o){const n=j(t,o);return(null==n?void 0:n.items.get(e))??null},exports.getStylesheetConfig=function(e={}){return{...G,...e}},exports.getUIItemProps=function(e,t){var o;return{[N.ITEM]:e.id,[N.CATEGORIES]:(null==(o=e.categories)?void 0:o.join(" "))||void 0,...t}},exports.initUIState=y,exports.isSidebarOpen=function(e,t,o,n,s){const i=me(e,t,o,n);return!(!i||!i.isOpen)&&(!s||i.sidebarId===s)},exports.isToolbarOpen=function(e,t,o,n,s){const i=he(e,t,o,n);return!(!i||!i.isOpen)&&(!s||i.toolbarId===s)},exports.manifest=o,exports.mergeUISchema=w,exports.openMenu=A,exports.openModal=T,exports.removeFromSchema=function(e,t){const o={...e};return t.toolbars&&(o.toolbars={...o.toolbars},t.toolbars.forEach(e=>delete o.toolbars[e])),t.menus&&(o.menus={...o.menus},t.menus.forEach(e=>delete o.menus[e])),t.sidebars&&(o.sidebars={...o.sidebars},t.sidebars.forEach(e=>delete o.sidebars[e])),t.commands&&(o.toolbars=function(e,t){const o={};for(const[n,s]of Object.entries(e))o[n]={...s,items:s.items.filter(e=>"command-button"===e.type?!t.includes(e.commandId):"group"===e.type?e.items.some(e=>"command-button"!==e.type||!t.includes(e.commandId)):"tab-group"!==e.type||e.tabs.some(e=>!t.includes(e.commandId)))};return o}(o.toolbars,t.commands),o.menus=function(e,t){const o={};for(const[n,s]of Object.entries(e))o[n]={...s,items:s.items.filter(e=>"command"===e.type?!t.includes(e.commandId):"section"!==e.type||e.items.some(e=>"command"!==e.type||!t.includes(e.commandId)))};return o}(o.menus,t.commands)),o},exports.resolveResponsiveMetadata=j,exports.selectSidebarSlot=me,exports.selectToolbarSlot=he,exports.selectUIDocumentState=le,exports.selectUIState=ce,exports.setActiveSidebar=D,exports.setActiveToolbar=O,exports.setDisabledCategories=_,exports.setHiddenItems=U,exports.setOverlayEnabled=L,exports.setSidebarTab=E;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|