@pod-os/elements 0.26.1-rc.f4329bf.0 → 0.27.1-rc.d9be84c.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.
Files changed (28) hide show
  1. package/dist/cjs/{BrokenFile-26f83028.js → BrokenFile-a5fc0832.js} +22 -6
  2. package/dist/cjs/BrokenFile-a5fc0832.js.map +1 -0
  3. package/dist/cjs/ion-icon_32.cjs.entry.js +2 -2
  4. package/dist/cjs/ion-icon_32.cjs.entry.js.map +1 -1
  5. package/dist/cjs/pos-document.cjs.entry.js +1 -1
  6. package/dist/collection/components/pos-user-menu/pos-user-menu.js +1 -1
  7. package/dist/collection/components/pos-user-menu/pos-user-menu.js.map +1 -1
  8. package/dist/components/index11.js +21 -5
  9. package/dist/components/index11.js.map +1 -1
  10. package/dist/components/pos-user-menu2.js +1 -1
  11. package/dist/components/pos-user-menu2.js.map +1 -1
  12. package/dist/elements/elements.esm.js +1 -1
  13. package/dist/elements/{p-650db824.entry.js → p-38edfa6d.entry.js} +2 -2
  14. package/dist/elements/{p-0d1dd954.entry.js → p-74bdf05f.entry.js} +3 -3
  15. package/dist/elements/{p-0d1dd954.entry.js.map → p-74bdf05f.entry.js.map} +1 -1
  16. package/dist/elements/p-93f5c8ec.js +2 -0
  17. package/dist/elements/p-93f5c8ec.js.map +1 -0
  18. package/dist/esm/{BrokenFile-0b9882ef.js → BrokenFile-a47d9850.js} +22 -6
  19. package/dist/esm/BrokenFile-a47d9850.js.map +1 -0
  20. package/dist/esm/ion-icon_32.entry.js +2 -2
  21. package/dist/esm/ion-icon_32.entry.js.map +1 -1
  22. package/dist/esm/pos-document.entry.js +1 -1
  23. package/package.json +4 -4
  24. package/dist/cjs/BrokenFile-26f83028.js.map +0 -1
  25. package/dist/elements/p-5e8a3893.js +0 -2
  26. package/dist/elements/p-5e8a3893.js.map +0 -1
  27. package/dist/esm/BrokenFile-0b9882ef.js.map +0 -1
  28. /package/dist/elements/{p-650db824.entry.js.map → p-38edfa6d.entry.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{j as e,k as t,h as n}from"./p-97889672.js";const s=(e,t,n)=>{const s=e.get(t);if(!s){e.set(t,[n])}else if(!s.includes(n)){s.push(n)}};const o=(e,t)=>{let n;return(...s)=>{if(n){clearTimeout(n)}n=setTimeout((()=>{n=0;e(...s)}),t)}};const r=e=>!("isConnected"in e)||e.isConnected;const c=o((e=>{for(let t of e.keys()){e.set(t,e.get(t).filter(r))}}),2e3);const i=()=>{if(typeof e!=="function"){return{}}const n=new Map;return{dispose:()=>n.clear(),get:t=>{const o=e();if(o){s(n,t,o)}},set:e=>{const s=n.get(e);if(s){n.set(e,s.filter(t))}c(n)},reset:()=>{n.forEach((e=>e.forEach(t)));c(n)}}};const u=e=>typeof e==="function"?e():e;const a=(e,t=((e,t)=>e!==t))=>{const n=u(e);let s=new Map(Object.entries(n??{}));const o={dispose:[],get:[],set:[],reset:[]};const r=new Map;const c=()=>{s=new Map(Object.entries(u(e)??{}));o.reset.forEach((e=>e()))};const i=()=>{o.dispose.forEach((e=>e()));c()};const a=e=>{o.get.forEach((t=>t(e)));return s.get(e)};const l=(e,n)=>{const r=s.get(e);if(t(n,r,e)){s.set(e,n);o.set.forEach((t=>t(e,n,r)))}};const p=typeof Proxy==="undefined"?{}:new Proxy(n,{get(e,t){return a(t)},ownKeys(e){return Array.from(s.keys())},getOwnPropertyDescriptor(){return{enumerable:true,configurable:true}},has(e,t){return s.has(t)},set(e,t,n){l(t,n);return true}});const d=(e,t)=>{o[e].push(t);return()=>{f(o[e],t)}};const g=(t,n)=>{const s=(e,s)=>{if(e===t){n(s)}};const o=()=>n(u(e)[t]);const c=d("set",s);const i=d("reset",o);r.set(n,{setHandler:s,resetHandler:o,propName:t});return()=>{c();i();r.delete(n)}};const w=(...e)=>{const t=e.reduce(((e,t)=>{if(t.set){e.push(d("set",t.set))}if(t.get){e.push(d("get",t.get))}if(t.reset){e.push(d("reset",t.reset))}if(t.dispose){e.push(d("dispose",t.dispose))}return e}),[]);return()=>t.forEach((e=>e()))};const m=e=>{const t=s.get(e);o.set.forEach((n=>n(e,t,t)))};const y=(e,t)=>{const n=r.get(t);if(n&&n.propName===e){f(o.set,n.setHandler);f(o.reset,n.resetHandler);r.delete(t)}};return{state:p,get:a,set:l,on:d,onChange:g,use:w,dispose:i,reset:c,forceUpdate:m,removeListener:y}};const f=(e,t)=>{const n=e.indexOf(t);if(n>=0){e[n]=e[e.length-1];e.length--}};const l=(e,t)=>{const n=a(e,t);n.use(i());return n};const p=l({isLoggedIn:false,webId:"",profile:null});const d=({file:e})=>{const t=g(e.status);return n("div",null,n("a",{class:"error",href:e.url},n("div",null,n("ion-icon",{name:t})),n("div",{class:"code"},e.status.code),n("div",{class:"text"},e.status.text)))};function g(e){switch(e.code){case 401:case 403:return"lock-closed-outline";case 404:return"help-circle-outline";default:return"alert-circle-outline"}}export{d as B,l as c,p as s};
2
+ //# sourceMappingURL=p-93f5c8ec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","clearTimeout","setTimeout","isConnected","maybeElement","cleanupElements","key","keys","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","unwrap","val","createObservableMap","defaultState","shouldUpdate","a","b","unwrappedState","states","Object","entries","handlers","changeListeners","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","setHandler","newValue","resetHandler","unSet","unReset","delete","use","subscriptions","unsubs","reduce","subscription","unsub","removeListener","listener","listenerInfo","array","item","index","indexOf","length","createStore","store","isLoggedIn","webId","profile","BrokenFile","file","iconName","iconForStatus","status","h","class","href","url","name","code","text"],"sources":["../node_modules/@stencil/store/dist/index.js","src/store/session.ts","src/components/broken-file/BrokenFile.tsx"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2_000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState ?? {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n // Track onChange listeners to enable removeListener functionality\n const changeListeners = new Map();\n const reset = () => {\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries(unwrap(defaultState) ?? {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(unwrappedState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const setHandler = (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n };\n const resetHandler = () => cb(unwrap(defaultState)[propName]);\n // Register the handlers\n const unSet = on('set', setHandler);\n const unReset = on('reset', resetHandler);\n // Track the relationship between the user callback and internal handlers\n changeListeners.set(cb, { setHandler, resetHandler, propName });\n return () => {\n unSet();\n unReset();\n changeListeners.delete(cb);\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n const removeListener = (propName, listener) => {\n const listenerInfo = changeListeners.get(listener);\n if (listenerInfo && listenerInfo.propName === propName) {\n // Remove the specific handlers that were created for this listener\n removeFromArray(handlers.set, listenerInfo.setHandler);\n removeFromArray(handlers.reset, listenerInfo.resetHandler);\n changeListeners.delete(listener);\n }\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n removeListener,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { WebIdProfile } from '@pod-os/core';\nimport { createStore } from '@stencil/store';\n\nconst store = createStore({\n isLoggedIn: false,\n webId: '',\n profile: null as WebIdProfile\n});\n\nexport default store;\n","import { BrokenFile as BrokenFileData, HttpStatus } from '@pod-os/core';\nimport { h } from '@stencil/core';\n\ninterface Props {\n file: BrokenFileData;\n}\n\nexport const BrokenFile = ({ file }: Props) => {\n const iconName = iconForStatus(file.status);\n return (\n <div>\n <a class=\"error\" href={file.url}>\n <div>\n <ion-icon name={iconName}></ion-icon>\n </div>\n <div class=\"code\">{file.status.code}</div>\n <div class=\"text\">{file.status.text}</div>\n </a>\n </div>\n );\n};\n\nfunction iconForStatus(status: HttpStatus): string {\n switch (status.code) {\n case 401:\n case 403:\n return 'lock-closed-outline';\n case 404:\n return 'help-circle-outline';\n default:\n return 'alert-circle-outline';\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -76,6 +76,8 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
76
76
  set: [],
77
77
  reset: [],
78
78
  };
79
+ // Track onChange listeners to enable removeListener functionality
80
+ const changeListeners = new Map();
79
81
  const reset = () => {
80
82
  // When resetting the state, the default state may be a function - unwrap it to invoke it.
81
83
  // otherwise, the state won't be properly reset
@@ -129,17 +131,21 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
129
131
  };
130
132
  };
131
133
  const onChange = (propName, cb) => {
132
- const unSet = on('set', (key, newValue) => {
134
+ const setHandler = (key, newValue) => {
133
135
  if (key === propName) {
134
136
  cb(newValue);
135
137
  }
136
- });
137
- // We need to unwrap the defaultState because it might be a function.
138
- // Otherwise we might not be sending the right reset value.
139
- const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));
138
+ };
139
+ const resetHandler = () => cb(unwrap(defaultState)[propName]);
140
+ // Register the handlers
141
+ const unSet = on('set', setHandler);
142
+ const unReset = on('reset', resetHandler);
143
+ // Track the relationship between the user callback and internal handlers
144
+ changeListeners.set(cb, { setHandler, resetHandler, propName });
140
145
  return () => {
141
146
  unSet();
142
147
  unReset();
148
+ changeListeners.delete(cb);
143
149
  };
144
150
  };
145
151
  const use = (...subscriptions) => {
@@ -164,6 +170,15 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
164
170
  const oldValue = states.get(key);
165
171
  handlers.set.forEach((cb) => cb(key, oldValue, oldValue));
166
172
  };
173
+ const removeListener = (propName, listener) => {
174
+ const listenerInfo = changeListeners.get(listener);
175
+ if (listenerInfo && listenerInfo.propName === propName) {
176
+ // Remove the specific handlers that were created for this listener
177
+ removeFromArray(handlers.set, listenerInfo.setHandler);
178
+ removeFromArray(handlers.reset, listenerInfo.resetHandler);
179
+ changeListeners.delete(listener);
180
+ }
181
+ };
167
182
  return {
168
183
  state,
169
184
  get,
@@ -174,6 +189,7 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
174
189
  dispose,
175
190
  reset,
176
191
  forceUpdate,
192
+ removeListener,
177
193
  };
178
194
  };
179
195
  const removeFromArray = (array, item) => {
@@ -219,4 +235,4 @@ function iconForStatus(status) {
219
235
 
220
236
  export { BrokenFile as B, createStore as c, store as s };
221
237
 
222
- //# sourceMappingURL=BrokenFile-0b9882ef.js.map
238
+ //# sourceMappingURL=BrokenFile-a47d9850.js.map
@@ -0,0 +1 @@
1
+ {"file":"BrokenFile-a47d9850.js","mappings":"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","names":[],"sources":["../node_modules/@stencil/store/dist/index.js","src/store/session.ts","src/components/broken-file/BrokenFile.tsx"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2_000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState ?? {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n // Track onChange listeners to enable removeListener functionality\n const changeListeners = new Map();\n const reset = () => {\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries(unwrap(defaultState) ?? {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(unwrappedState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const setHandler = (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n };\n const resetHandler = () => cb(unwrap(defaultState)[propName]);\n // Register the handlers\n const unSet = on('set', setHandler);\n const unReset = on('reset', resetHandler);\n // Track the relationship between the user callback and internal handlers\n changeListeners.set(cb, { setHandler, resetHandler, propName });\n return () => {\n unSet();\n unReset();\n changeListeners.delete(cb);\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n const removeListener = (propName, listener) => {\n const listenerInfo = changeListeners.get(listener);\n if (listenerInfo && listenerInfo.propName === propName) {\n // Remove the specific handlers that were created for this listener\n removeFromArray(handlers.set, listenerInfo.setHandler);\n removeFromArray(handlers.reset, listenerInfo.resetHandler);\n changeListeners.delete(listener);\n }\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n removeListener,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { WebIdProfile } from '@pod-os/core';\nimport { createStore } from '@stencil/store';\n\nconst store = createStore({\n isLoggedIn: false,\n webId: '',\n profile: null as WebIdProfile\n});\n\nexport default store;\n","import { BrokenFile as BrokenFileData, HttpStatus } from '@pod-os/core';\nimport { h } from '@stencil/core';\n\ninterface Props {\n file: BrokenFileData;\n}\n\nexport const BrokenFile = ({ file }: Props) => {\n const iconName = iconForStatus(file.status);\n return (\n <div>\n <a class=\"error\" href={file.url}>\n <div>\n <ion-icon name={iconName}></ion-icon>\n </div>\n <div class=\"code\">{file.status.code}</div>\n <div class=\"text\">{file.status.text}</div>\n </a>\n </div>\n );\n};\n\nfunction iconForStatus(status: HttpStatus): string {\n switch (status.code) {\n case 401:\n case 403:\n return 'lock-closed-outline';\n case 404:\n return 'help-circle-outline';\n default:\n return 'alert-circle-outline';\n }\n}\n"],"version":3}
@@ -9,7 +9,7 @@ import { O as OVERLAY_GESTURE_PRIORITY, c as createDelegateController, a as crea
9
9
  import { c as createAnimation } from './animation-756697b9.js';
10
10
  import { w as win } from './index-6b94f340.js';
11
11
  import { createGesture } from './index-38fe935b.js';
12
- import { c as createStore$1, s as store, B as BrokenFile } from './BrokenFile-0b9882ef.js';
12
+ import { c as createStore$1, s as store, B as BrokenFile } from './BrokenFile-a47d9850.js';
13
13
  import { P as PodOS, N as NoOfflineCache, L as LabelIndex } from './index-f3176f87.js';
14
14
  import { s as subscribeResource } from './ResourceAware-5f237305.js';
15
15
  import './gesture-controller-958242a2.js';
@@ -9105,7 +9105,7 @@ const PosUserMenu = class {
9105
9105
  render() {
9106
9106
  if (!this.webId)
9107
9107
  return null; //?
9108
- return (h$4("pos-resource", { uri: this.webId }, h$4("sl-dropdown", null, h$4("button", { slot: "trigger" }, h$4("pos-picture", null, h$4("sl-avatar", null))), h$4("sl-menu", null, h$4("sl-menu-item", { value: "dashboard" }, "Dashboard"), h$4("sl-menu-item", { value: "profile" }, h$4("pos-label", null)), h$4("sl-menu-item", { value: "settings" }, "Settings"), h$4("sl-divider", null), h$4("sl-menu-item", { value: "logout" }, "Logout")))));
9108
+ return (h$4("pos-resource", { uri: this.webId }, h$4("sl-dropdown", null, h$4("button", { slot: "trigger", "aria-label": "User menu" }, h$4("pos-picture", null, h$4("sl-avatar", null))), h$4("sl-menu", null, h$4("sl-menu-item", { value: "dashboard" }, "Dashboard"), h$4("sl-menu-item", { value: "profile" }, h$4("pos-label", null)), h$4("sl-menu-item", { value: "settings" }, "Settings"), h$4("sl-divider", null), h$4("sl-menu-item", { value: "logout" }, "Logout")))));
9109
9109
  }
9110
9110
  };
9111
9111
  PosUserMenu.style = PosUserMenuStyle0;