iobroker.shoppingroute 0.3.7 → 0.4.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 (26) hide show
  1. package/README.md +27 -1
  2. package/README_DE.md +27 -1
  3. package/admin/custom/review/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js +1 -0
  4. package/admin/custom/review/assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js +9 -0
  5. package/admin/custom/review/assets/hostInit-BfEpvyuX.js +1 -0
  6. package/admin/custom/review/assets/index-2HOz3j7B.js +7 -0
  7. package/admin/custom/review/assets/review-editor-components-BI-kqJQu.js +25 -0
  8. package/admin/custom/review/assets/virtualExposes-g5zs8oe1.js +1 -0
  9. package/admin/custom/review/assets/vite-preload-helper-Dp1pzeXC.js +1 -0
  10. package/admin/custom/review/mf-manifest.json +1 -0
  11. package/admin/custom/review/mf-stats.json +1 -0
  12. package/admin/custom/review/reviewEditor.js +13 -0
  13. package/admin/custom/shoppingList/assets/shopping-list-editor-components-MoJ1XKOp.js +27 -0
  14. package/admin/custom/shoppingList/assets/{virtualExposes-a309i88F.js → virtualExposes-DgzWcmof.js} +1 -1
  15. package/admin/custom/shoppingList/mf-manifest.json +1 -1
  16. package/admin/custom/shoppingList/mf-stats.json +1 -1
  17. package/admin/custom/shoppingList/shoppingListEditor.js +2 -2
  18. package/admin/jsonConfig.json +11 -22
  19. package/build/lib/market-plan.js +19 -3
  20. package/build/lib/prefix-sort.js +10 -1
  21. package/build/lib/review-tools.js +15 -6
  22. package/build/lib/sorter.js +0 -3
  23. package/build/main.js +13 -7
  24. package/io-package.json +40 -53
  25. package/package.json +3 -3
  26. package/admin/custom/shoppingList/assets/shopping-list-editor-components-2ZxXB6jP.js +0 -72
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![ShoppingRoute](admin/shoppingroute.png)
4
4
 
5
- **Current version: 0.3.7**
5
+ **Current version: 0.4.0**
6
6
 
7
7
  ShoppingRoute sorts Alexa shopping-list entries by market, product group and each store's individual walking route. It assigns visible two-digit keys such as `20> Bananas` and `40> ═════ ALDI ═════`; managed lists must therefore be set to **A–Z** in the Alexa app. ShoppingRoute reuses the local Alexa2 authentication for direct item updates, deletes and batch creates, while Alexa2 list states remain the external change trigger.
8
8
 
@@ -40,6 +40,32 @@ See `README_DE.md` for the detailed German documentation.
40
40
 
41
41
  ## Changelog
42
42
 
43
+ ### 0.4.0 (2026-09-12)
44
+
45
+ - Fixes the complete review workflow: immediately accepted rows are reliably removed after saving and restarting the adapter without duplicating the product.
46
+ - Keeps “Available markets” as an array throughout the review queue and product catalogue so multiple selections survive editing, accepting and saving.
47
+ - Persists startup-only review cleanup and legacy product-market normalization even when no product needs to be accepted again.
48
+ - Adds an end-to-end regression test covering edit, accept, save and startup cleanup.
49
+
50
+ ### 0.3.9 (2026-09-11)
51
+
52
+ - Replaces incomplete 0.3.8 snapshots that may have been installed directly from GitHub with an unambiguous newer version.
53
+ - Includes the final product-market normalization, review cleanup, single-column shopping-list view, structural header filtering, and orphaned-header removal verified in PR #37.
54
+ - No user configuration migration is required; legacy comma/semicolon market values are normalized automatically.
55
+
56
+ ### 0.3.8 (2026-09-11)
57
+
58
+ - “Available markets” is stored consistently as a multi-select array; legacy comma/semicolon strings remain readable and are migrated to arrays at startup.
59
+ - Accepted review entries are removed after saving once the product catalogue has been updated.
60
+ - The current shopping list is presented as a clear single-column sequence of market sections.
61
+ - Structurally formatted market headings are filtered even when their label is unknown or misspelled (for example `═════ DROGERIEMART ═════`).
62
+ - Market headings without associated active items are deleted from the Alexa shopping list during the next sorting run.
63
+ - Fixed the review queue so accepting an item updates the article catalogue and visible status immediately in the same Admin draft.
64
+ - Legacy market headings such as `— LIDL —` are recognized as headings and can no longer enter the shopping items or review queue.
65
+ - Nested internal sort prefixes are stripped recursively from parsing and the Admin shopping-list display.
66
+ - Simplified the current shopping-list view by hiding empty market columns while retaining drag, arrow and market-selector controls.
67
+ - Updated current ioBroker CI/checker compatibility: testing-action-check v2, Node.js 26 matrix coverage, current @iobroker/testing and bounded common.news history.
68
+
43
69
  ### 0.3.7 (2026-09-11)
44
70
 
45
71
  - Added an interactive current shopping-list view to Admin with drag-and-drop plus touch-friendly arrow/market controls.
package/README_DE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![ShoppingRoute](admin/shoppingroute.png)
4
4
 
5
- **Aktuelle Version: 0.3.7**
5
+ **Aktuelle Version: 0.4.0**
6
6
 
7
7
  ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe und dem individuellen Laufweg durch den jeweiligen Markt. Dazu vergibt es sichtbare zweistellige Schlüssel wie `20> Bananen` und `40> ═════ ALDI ═════`; verwaltete Listen müssen deshalb in der Alexa-App auf **A–Z** stehen. ShoppingRoute übernimmt lokal die Alexa2-Authentifizierung für direkte Updates, Deletes und Batch-Creates; Alexa2-Listenstates bleiben die Triggerquelle für externe Änderungen.
8
8
 
@@ -73,6 +73,32 @@ ShoppingRoute wird unter der **MIT-Lizenz** veröffentlicht. Frühere bereits ve
73
73
 
74
74
  ## Changelog
75
75
 
76
+ ### 0.4.0 (2026-09-12)
77
+
78
+ - Behebt den vollständigen Prüflistenablauf: Sofort übernommene Einträge werden nach Speichern und Adapterneustart zuverlässig aus der Prüfliste entfernt, ohne den Artikel zu duplizieren.
79
+ - „Verfügbare Märkte“ bleibt in Prüfliste und Artikelstamm durchgehend ein Array; mehrere ausgewählte Märkte gehen beim Bearbeiten, Übernehmen oder Speichern nicht mehr verloren.
80
+ - Speichert auch eine reine Startbereinigung und die Normalisierung älterer Artikelmarkt-Strings, wenn kein Artikel erneut übernommen werden muss.
81
+ - Ergänzt einen End-to-End-Regressionstest für Bearbeiten, Übernehmen, Speichern und anschließende Startbereinigung.
82
+
83
+ ### 0.3.9 (2026-09-11)
84
+
85
+ - Ersetzt unvollständige 0.3.8-Zwischenstände, die möglicherweise direkt von GitHub installiert wurden, durch eine eindeutig neuere Version.
86
+ - Enthält die in PR #37 abschließend geprüfte Vereinheitlichung der Artikelmärkte, Prüflisten-Bereinigung, einspaltige Einkaufslistenansicht, strukturelle Header-Erkennung und Entfernung verwaister Marktüberschriften.
87
+ - Keine manuelle Konfigurationsmigration erforderlich; ältere Komma-/Semikolon-Marktwerte werden automatisch vereinheitlicht.
88
+
89
+ ### 0.3.8 (2026-09-11)
90
+
91
+ - „Verfügbare Märkte“ wird einheitlich als Mehrfachauswahl gespeichert; ältere Komma-/Semikolon-Strings werden weiterhin gelesen und beim Start in Arrays überführt.
92
+ - Übernommene Prüflisteneinträge werden nach dem Speichern entfernt, nachdem der Artikelstamm aktualisiert wurde.
93
+ - Die aktuelle Einkaufsliste wird als übersichtliche einspaltige Folge von Marktabschnitten dargestellt.
94
+ - Formatierte Marktüberschriften werden anhand ihrer Struktur ausgefiltert, auch wenn der Marktname unbekannt oder vertippt ist (zum Beispiel `═════ DROGERIEMART ═════`).
95
+ - Marktüberschriften ohne zugehörige aktive Artikel werden beim nächsten Sortierlauf aus der Alexa-Einkaufsliste gelöscht.
96
+ - Prüfliste korrigiert: „Übernehmen“ aktualisiert Artikelstamm und sichtbaren Status jetzt sofort im selben Admin-Entwurf.
97
+ - Alte Marktüberschriften wie `— LIDL —` werden sicher als Überschriften erkannt und können nicht mehr als Artikel oder Prüflisteneintrag erscheinen.
98
+ - Verschachtelte interne Sortierpräfixe werden beim Parsen und in der Admin-Einkaufslistenanzeige rekursiv entfernt.
99
+ - Ansicht der aktuellen Einkaufsliste vereinfacht: leere Marktspalten bleiben verborgen; Drag&Drop, Pfeile und Marktauswahl bleiben parallel verfügbar.
100
+ - Aktuelle ioBroker-CI-/Checker-Anforderungen übernommen: testing-action-check v2, Node.js 26 in der Matrix, aktuelles @iobroker/testing und auf sieben Einträge begrenzte common.news-Historie.
101
+
76
102
  ### 0.3.7 (2026-09-11)
77
103
 
78
104
  - Interaktive aktuelle Einkaufsliste im Admin ergänzt: Drag&Drop sowie touch-taugliche Pfeil- und Marktauswahl stehen parallel zur Verfügung.
@@ -0,0 +1 @@
1
+ import"./index-2HOz3j7B.js";const o={react:async()=>await import("./_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js").then(r=>r.b)},s={react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,materialize:!0,eager:!1,from:"ShoppingRouteReviewSet",canLiveRebind:!0,async get(){s.react.loaded=!0;const{react:t}=o,e={...await t()};return e.__esModule!==!0&&Object.defineProperty(e,"__esModule",{value:!0,enumerable:!1}),function(){return e}},shareConfig:{singleton:!0,requiredVersion:">=18",strictVersion:!1,eager:!1}}},u=[];export{u as usedRemotes,s as usedShared};
@@ -0,0 +1,9 @@
1
+ function q(e,t){for(var r=0;r<t.length;r++){const n=t[r];if(typeof n!="string"&&!Array.isArray(n)){for(const o in n)if(o!=="default"&&!(o in e)){const f=Object.getOwnPropertyDescriptor(n,o);f&&Object.defineProperty(e,o,f.get?f:{enumerable:!0,get:()=>n[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function B(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var x={exports:{}},u={};/**
2
+ * @license React
3
+ * react.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var d=Symbol.for("react.element"),G=Symbol.for("react.portal"),Y=Symbol.for("react.fragment"),J=Symbol.for("react.strict_mode"),Q=Symbol.for("react.profiler"),X=Symbol.for("react.provider"),Z=Symbol.for("react.context"),ee=Symbol.for("react.forward_ref"),te=Symbol.for("react.suspense"),re=Symbol.for("react.memo"),ne=Symbol.for("react.lazy"),P=Symbol.iterator;function oe(e){return e===null||typeof e!="object"?null:(e=P&&e[P]||e["@@iterator"],typeof e=="function"?e:null)}var D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},$=Object.assign,L={};function y(e,t,r){this.props=e,this.context=t,this.refs=L,this.updater=r||D}y.prototype.isReactComponent={};y.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function N(){}N.prototype=y.prototype;function g(e,t,r){this.props=e,this.context=t,this.refs=L,this.updater=r||D}var w=g.prototype=new N;w.constructor=g;$(w,y.prototype);w.isPureReactComponent=!0;var k=Array.isArray,A=Object.prototype.hasOwnProperty,j={current:null},V={key:!0,ref:!0,__self:!0,__source:!0};function M(e,t,r){var n,o={},f=null,a=null;if(t!=null)for(n in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(f=""+t.key),t)A.call(t,n)&&!V.hasOwnProperty(n)&&(o[n]=t[n]);var c=arguments.length-2;if(c===1)o.children=r;else if(1<c){for(var l=Array(c),_=0;_<c;_++)l[_]=arguments[_+2];o.children=l}if(e&&e.defaultProps)for(n in c=e.defaultProps,c)o[n]===void 0&&(o[n]=c[n]);return{$$typeof:d,type:e,key:f,ref:a,props:o,_owner:j.current}}function ue(e,t){return{$$typeof:d,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function T(e){return typeof e=="object"&&e!==null&&e.$$typeof===d}function se(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var I=/\/+/g;function v(e,t){return typeof e=="object"&&e!==null&&e.key!=null?se(""+e.key):t.toString(36)}function h(e,t,r,n,o){var f=typeof e;(f==="undefined"||f==="boolean")&&(e=null);var a=!1;if(e===null)a=!0;else switch(f){case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case d:case G:a=!0}}if(a)return a=e,o=o(a),e=n===""?"."+v(a,0):n,k(o)?(r="",e!=null&&(r=e.replace(I,"$&/")+"/"),h(o,t,r,"",function(_){return _})):o!=null&&(T(o)&&(o=ue(o,r+(!o.key||a&&a.key===o.key?"":(""+o.key).replace(I,"$&/")+"/")+e)),t.push(o)),1;if(a=0,n=n===""?".":n+":",k(e))for(var c=0;c<e.length;c++){f=e[c];var l=n+v(f,c);a+=h(f,t,r,l,o)}else if(l=oe(e),typeof l=="function")for(e=l.call(e),c=0;!(f=e.next()).done;)f=f.value,l=n+v(f,c++),a+=h(f,t,r,l,o);else if(f==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return a}function m(e,t,r){if(e==null)return e;var n=[],o=0;return h(e,n,"","",function(f){return t.call(r,f,o++)}),n}function fe(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(r){(e._status===0||e._status===-1)&&(e._status=1,e._result=r)},function(r){(e._status===0||e._status===-1)&&(e._status=2,e._result=r)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var i={current:null},S={transition:null},ae={ReactCurrentDispatcher:i,ReactCurrentBatchConfig:S,ReactCurrentOwner:j};function F(){throw Error("act(...) is not supported in production builds of React.")}u.Children={map:m,forEach:function(e,t,r){m(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return m(e,function(){t++}),t},toArray:function(e){return m(e,function(t){return t})||[]},only:function(e){if(!T(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};u.Component=y;u.Fragment=Y;u.Profiler=Q;u.PureComponent=g;u.StrictMode=J;u.Suspense=te;u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ae;u.act=F;u.cloneElement=function(e,t,r){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=$({},e.props),o=e.key,f=e.ref,a=e._owner;if(t!=null){if(t.ref!==void 0&&(f=t.ref,a=j.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(l in t)A.call(t,l)&&!V.hasOwnProperty(l)&&(n[l]=t[l]===void 0&&c!==void 0?c[l]:t[l])}var l=arguments.length-2;if(l===1)n.children=r;else if(1<l){c=Array(l);for(var _=0;_<l;_++)c[_]=arguments[_+2];n.children=c}return{$$typeof:d,type:e.type,key:o,ref:f,props:n,_owner:a}};u.createContext=function(e){return e={$$typeof:Z,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:X,_context:e},e.Consumer=e};u.createElement=M;u.createFactory=function(e){var t=M.bind(null,e);return t.type=e,t};u.createRef=function(){return{current:null}};u.forwardRef=function(e){return{$$typeof:ee,render:e}};u.isValidElement=T;u.lazy=function(e){return{$$typeof:ne,_payload:{_status:-1,_result:e},_init:fe}};u.memo=function(e,t){return{$$typeof:re,type:e,compare:t===void 0?null:t}};u.startTransition=function(e){var t=S.transition;S.transition={};try{e()}finally{S.transition=t}};u.unstable_act=F;u.useCallback=function(e,t){return i.current.useCallback(e,t)};u.useContext=function(e){return i.current.useContext(e)};u.useDebugValue=function(){};u.useDeferredValue=function(e){return i.current.useDeferredValue(e)};u.useEffect=function(e,t){return i.current.useEffect(e,t)};u.useId=function(){return i.current.useId()};u.useImperativeHandle=function(e,t,r){return i.current.useImperativeHandle(e,t,r)};u.useInsertionEffect=function(e,t){return i.current.useInsertionEffect(e,t)};u.useLayoutEffect=function(e,t){return i.current.useLayoutEffect(e,t)};u.useMemo=function(e,t){return i.current.useMemo(e,t)};u.useReducer=function(e,t,r){return i.current.useReducer(e,t,r)};u.useRef=function(e){return i.current.useRef(e)};u.useState=function(e){return i.current.useState(e)};u.useSyncExternalStore=function(e,t,r){return i.current.useSyncExternalStore(e,t,r)};u.useTransition=function(){return i.current.useTransition()};u.version="18.3.1";x.exports=u;var U=x.exports;const ce=B(U),R=q({__proto__:null,default:ce},[U]),s=R,le=s.Children,ie=s.Component,_e=s.Fragment,pe=s.Profiler,ye=s.PureComponent,de=s.StrictMode,me=s.Suspense,he=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Se=s.act,be=s.cloneElement,Ee=s.createContext,ve=s.createElement,Re=s.createFactory,Oe=s.createRef,Ce=s.forwardRef,ge=s.isValidElement,we=s.lazy,je=s.memo,Te=s.startTransition,Pe=s.unstable_act,ke=s.useCallback,Ie=s.useContext,xe=s.useDebugValue,De=s.useDeferredValue,$e=s.useEffect,Le=s.useId,Ne=s.useImperativeHandle,Ae=s.useInsertionEffect,Ve=s.useLayoutEffect,Me=s.useMemo,Fe=s.useReducer,Ue=s.useRef,ze=s.useState,We=s.useSyncExternalStore,He=s.useTransition,Ke=s.version,qe=Reflect.get(R,"default")??R,Be=Object.freeze(Object.defineProperty({__proto__:null,Children:le,Component:ie,Fragment:_e,Profiler:pe,PureComponent:ye,StrictMode:de,Suspense:me,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:he,act:Se,cloneElement:be,createContext:Ee,createElement:ve,createFactory:Re,createRef:Oe,default:qe,forwardRef:Ce,isValidElement:ge,lazy:we,memo:je,startTransition:Te,unstable_act:Pe,useCallback:ke,useContext:Ie,useDebugValue:xe,useDeferredValue:De,useEffect:$e,useId:Le,useImperativeHandle:Ne,useInsertionEffect:Ae,useLayoutEffect:Ve,useMemo:Me,useReducer:Fe,useRef:Ue,useState:ze,useSyncExternalStore:We,useTransition:He,version:Ke},Symbol.toStringTag,{value:"Module"})),E="__mf_module_cache__";globalThis[E]||={share:{},remote:{}};globalThis[E].share||={};globalThis[E].remote||={};const p=globalThis[E];for(const e of Object.keys(p.share))if(e.startsWith("default:")){const t=e.slice(8);p.share[t]===void 0&&(p.share[t]=p.share[e])}else if(!e.includes(":")){const t="default:"+e;p.share[t]===void 0&&(p.share[t]=p.share[e])}const Ge=(e,t)=>{const r=e[t.canonical];if(r!==void 0)return r;const n=t.aliases||[];for(const o of n){if(!Object.prototype.hasOwnProperty.call(e,o))continue;const f=e[o];if(f!==void 0)return e[t.canonical]=f,f}},O=Symbol.for("module-federation.shared-cache-listeners"),Ye=e=>{let t=e[O];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,O,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},Je=(e,t,r)=>{const n=Ye(e);(n[t.canonical]||=new Set).add(r)},C=Symbol.for("module-federation.shared-cache-owners"),Qe=e=>{let t=e[C];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,C,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},Xe=(e,t,r,n)=>{var a;e[t.canonical]=r;const o=t.aliases||[];for(const c of o)Object.defineProperty(e,c,{value:r,enumerable:!0,configurable:!0,writable:!0});e[C],Qe(e)[t.canonical]=n;const f=(a=e[O])==null?void 0:a[t.canonical];if(f)for(const c of f)c(r);return r},Ze=e=>{const t=(()=>{let r=e;for(let n=0;n<5;n++){const o=r==null?void 0:r.default;if(!o||typeof o!="object")break;const f=Object.keys(r).filter(a=>a!=="default").map(a=>r[a]);if(f.length>0&&f.some(a=>a!==void 0))break;r=o}return r})();return t&&Object.getPrototypeOf(t)===null?Object.assign({},t):t};let b=Ge(p.share,{canonical:"default:react",aliases:["react"]});b===void 0&&(b=Ze(Be),Xe(p.share,{canonical:"default:react",aliases:["react"]},b,"ShoppingRouteReviewSet"));let z,W,H;const K=e=>{const t=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;if(t&&"A"in t){let r=t.A;Object.defineProperty(t,"A",{configurable:!0,enumerable:!0,get:()=>r,set:n=>{n&&typeof n.getOwner!="function"&&(n.getOwner=()=>null),r=n}}),t.A=r}e.Children,W=e.Component,e.Fragment,e.Profiler,e.PureComponent,e.StrictMode,e.Suspense,e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,e.act,e.cloneElement,e.createContext,H=e.createElement,e.createFactory,e.createRef,e.forwardRef,e.isValidElement,e.lazy,e.memo,e.startTransition,e.unstable_act,e.useCallback,e.useContext,e.useDebugValue,e.useDeferredValue,e.useEffect,e.useId,e.useImperativeHandle,e.useInsertionEffect,e.useLayoutEffect,e.useMemo,e.useReducer,e.useRef,e.useState,e.useSyncExternalStore,e.useTransition,e.version,z=(()=>{let r=e;for(let n=0;n<5;n++){const o=r==null?void 0:r.default;if(!o||typeof o!="object")return o??r;r=o}return r})()};Je(p.share,{canonical:"default:react"},K);K(b);const et=Object.freeze(Object.defineProperty({__proto__:null,get Component(){return W},get createElement(){return H},get default(){return z}},Symbol.toStringTag,{value:"Module"}));export{z as _,et as a,Be as b};
@@ -0,0 +1 @@
1
+ import{_}from"./vite-preload-helper-Dp1pzeXC.js";const d="__mf_module_cache__";globalThis[d]||={share:{},remote:{}};globalThis[d].share||={};globalThis[d].remote||={};const s=globalThis[d];for(const i of Object.keys(s.share))if(i.startsWith("default:")){const f=i.slice(8);s.share[f]===void 0&&(s.share[f]=s.share[i])}else if(!i.includes(":")){const f="default:"+i;s.share[f]===void 0&&(s.share[f]=s.share[i])}let h;async function C(){return h||(h=(async()=>{const i=(t,e,a,r)=>{const n=(Array.isArray(r)?r[0]:r)||"default",c=e||!a?t:t+"@"+a,l={canonical:n+":"+c};return n==="default"&&(l.aliases=[c]),l},f=(t,e)=>{const a=t[e.canonical];if(a!==void 0)return a;const r=e.aliases||[];for(const o of r){if(!Object.prototype.hasOwnProperty.call(t,o))continue;const n=t[o];if(n!==void 0)return t[e.canonical]=n,n}},S=Symbol.for("module-federation.shared-cache-listeners"),u=Symbol.for("module-federation.shared-cache-owners"),y=t=>{let e=t[u];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,u,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},b=(t,e)=>{var a;return(a=t[u])==null?void 0:a[e.canonical]},p=(t,e,a,r)=>{var c;t[e.canonical]=a;const o=e.aliases||[];for(const l of o)Object.defineProperty(t,l,{value:a,enumerable:!0,configurable:!0,writable:!0});t[u],y(t)[e.canonical]=r;const n=(c=t[S])==null?void 0:c[e.canonical];if(n)for(const l of n)l(a);return a},m=await(await _(()=>import("../reviewEditor.js"),[],import.meta.url)).init(),{usedShared:w}=await _(async()=>{const{usedShared:t}=await import("./_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js");return{usedShared:t}},[],import.meta.url),g=t=>{let e=t;for(let a=0;a<5;a++){const r=e==null?void 0:e.default;if(!r||typeof r!="object"||Object.keys(r).length===0)break;const o=Object.keys(e).filter(n=>n!=="default").map(n=>e[n]);if(o.length>0&&o.some(n=>n!==void 0))break;e=r}return e},O=[["react"]];for(const t of O)await Promise.all(t.map(async e=>{var o;const a=w[e];if(!a||a.materialize===!1||a.treeShaking)return;const r=i(e,(o=a.shareConfig)==null?void 0:o.singleton,a.version,a.scope);f(s.share,r)!==void 0&&b(s.share,r)==="ShoppingRouteReviewSet"||await m.loadShare(e,{customShareInfo:{shareConfig:a.shareConfig}}).then(async n=>{const c=typeof n=="function"?n():n;let l=g(await Promise.resolve(c));p(s.share,r,l,"ShoppingRouteReviewSet")})}));return m})()),h}h=C();export{h as hostInitPromise,C as initHost};
@@ -0,0 +1,7 @@
1
+ const Ut=".json",xt="FEDERATION_DEBUG";let $e=(function(e){return e[e.UNKNOWN=1]="UNKNOWN",e[e.CALCULATED=2]="CALCULATED",e[e.NO_USE=0]="NO_USE",e})({});var ge={};const Xe=!0;function Bt(){return Xe}function Wt(){try{if(Bt()&&window.localStorage)return!!localStorage.getItem(xt)}catch{return!1}return!1}function Te(){return typeof process<"u"&&ge&&ge.FEDERATION_DEBUG?!!ge.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<"u"&&FEDERATION_DEBUG?!0:Wt()}const Vt="[ Federation Runtime ]",Ye=function(...e){return e.length?e.reduce((t,r)=>r?t?`${t}:${r}`:r:t,""):""};function Ae(e,t){if("getPublicPath"in e){let r;return e.getPublicPath.startsWith("function")?r=new Function("return "+e.getPublicPath)()():r=new Function(e.getPublicPath)(),`${r}${t}`}else return"publicPath"in e?`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")}const Qe=e=>{console.warn(`${Vt}: ${e}`)};function et(e){try{return JSON.stringify(e,null,2)}catch{return""}}const _e=(e,t)=>{if(!e)return t;const n=(o=>{if(o===".")return"";if(o.startsWith("./"))return o.replace("./","");if(o.startsWith("/")){const s=o.slice(1);return s.endsWith("/")?s.slice(0,-1):s}return o})(e);return n?n.endsWith("/")?`${n}${t}`:`${n}/${t}`:t};function jt(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function qt(e,t={}){var _;const{remotes:r={},overrides:n={},version:o}=t;let s;const i=()=>"publicPath"in e.metaData?(e.metaData.publicPath==="auto"||e.metaData.publicPath==="")&&o?jt(o):e.metaData.publicPath:e.metaData.getPublicPath,a=Object.keys(n);let c={};Object.keys(r).length||(c=((_=e.remotes)==null?void 0:_.reduce((g,S)=>{let I;const $=S.federationContainerName;return a.includes($)?I=n[$]:"version"in S?I=S.version:I=S.entry,g[$]={matchedVersion:I},g},{}))||{}),Object.keys(r).forEach(g=>c[g]={matchedVersion:a.includes(g)?n[g]:r[g]});const{remoteEntry:{path:l,name:f,type:u},types:h={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:m},globalName:d,ssrRemoteEntry:p}=e.metaData,{exposes:y}=e;let E={version:o||"",buildVersion:m,globalName:d,remoteEntry:_e(l,f),remoteEntryType:u,remoteTypes:_e(h.path,h.name),remoteTypesZip:h.zip||"",remoteTypesAPI:h.api||"",remotesInfo:c,shared:e==null?void 0:e.shared.map(g=>({assets:g.assets,sharedName:g.name,version:g.version,usedExports:g.referenceExports||[]})),modules:y==null?void 0:y.map(g=>({moduleName:g.name,modulePath:g.path,assets:g.assets}))};if("publicPath"in e.metaData?(s={...E,publicPath:i()},typeof e.metaData.ssrPublicPath=="string"&&(s.ssrPublicPath=e.metaData.ssrPublicPath)):s={...E,getPublicPath:i()},p){const g=_e(p.path,p.name);s.ssrRemoteEntry=g,s.ssrRemoteEntryType=p.type||"commonjs-module"}return s}function tt(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(Ut))}const Kt="[ Module Federation ]",z=console,zt=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function Jt(){try{const e=new Error().stack;if(!e)return;const[,...t]=e.split(`
2
+ `),r=t.filter(n=>!zt.some(o=>n.includes(o)));return r.length?`Stack trace:
3
+ ${r.slice(0,5).join(`
4
+ `)}`:void 0}catch{return}}var rt=class{constructor(e,t=z){this.prefix=e,this.delegate=t??z}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??z}emit(e,t){const r=this.delegate,n=Te()?Jt():void 0,o=n?[...t,n]:t,s=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(const i of s){const a=r[i];if(typeof a=="function"){a.call(r,this.prefix,...o);return}}for(const i of s){const a=z[i];if(typeof a=="function"){a.call(z,this.prefix,...o);return}}}log(...e){this.emit("log",e)}warn(...e){this.emit("warn",e)}error(...e){this.emit("error",e)}success(...e){this.emit("info",e)}info(...e){this.emit("info",e)}ready(...e){this.emit("info",e)}debug(...e){Te()&&this.emit("debug",e)}};function Zt(e){return new rt(e)}function Xt(e){const t=new rt(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}Xt(Kt);async function ot(e,t){try{return await e()}catch(r){Qe(r);return}}function Ne(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function nt(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("script");for(let l=0;l<s.length;l++){const f=s[l],u=f.getAttribute("src");if(u&&Ne(u,e.url)){t=f,r=!1;break}}if(!t){const l=e.attrs;t=document.createElement("script"),t.type=(l==null?void 0:l.type)==="module"?"module":"text/javascript";let f;e.createScriptHook&&(f=e.createScriptHook(e.url,e.attrs),f instanceof HTMLScriptElement?t=f:typeof f=="object"&&("script"in f&&f.script&&(t=f.script),"timeout"in f&&f.timeout&&(n=f.timeout))),t.src||(t.src=e.url),l&&!f&&Object.keys(l).forEach(u=>{t&&(u==="async"||u==="defer"?t[u]=l[u]:t.getAttribute(u)||t.setAttribute(u,l[u]))})}let i=null;const a=typeof window<"u"?l=>{if(l.filename&&Ne(l.filename,e.url)){const f=new Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${l.message} (${l.filename}:${l.lineno}:${l.colno})`);f.name="ScriptExecutionError",i=f}}:null;a&&window.addEventListener("error",a);const c=async(l,f)=>{clearTimeout(o),a&&window.removeEventListener("error",a);const u=()=>{if((f==null?void 0:f.type)==="error"){const h=new Error(f!=null&&f.isTimeout?`ScriptNetworkError: Script "${e.url}" timed out.`:`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);h.name="ScriptNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(h))}else i?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,ot(()=>{const{needDeleteScript:h=!0}=e;h&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),l&&typeof l=="function")){const h=l(f);if(h instanceof Promise){const m=await h;return u(),m}return u(),h}u()};return t.onerror=c.bind(null,t.onerror),t.onload=c.bind(null,t.onload),o=setTimeout(()=>{c(null,{type:"error",isTimeout:!0})},n),{script:t,needAttach:r}}function Yt(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("link");for(let a=0;a<s.length;a++){const c=s[a],l=c.getAttribute("href"),f=c.getAttribute("rel");if(l&&Ne(l,e.url)&&f===e.attrs.rel){t=c,r=!1;break}}if(!t){t=document.createElement("link"),t.setAttribute("href",e.url);let a,c=!0;const l=e.attrs;e.createLinkHook&&(a=e.createLinkHook(e.url,l),a instanceof HTMLLinkElement?(t=a,c=!1):typeof a=="object"&&("link"in a&&a.link&&(t=a.link,c=!1),"timeout"in a&&a.timeout&&(n=a.timeout))),l&&c&&Object.keys(l).forEach(f=>{t&&!t.getAttribute(f)&&t.setAttribute(f,l[f])})}if(!r)return Promise.resolve().then(()=>{e!=null&&e.cb&&(e==null||e.cb())}),{link:t,needAttach:r};const i=(a,c)=>{o&&clearTimeout(o);const l=()=>{if((c==null?void 0:c.type)==="error"){const f=new Error(c!=null&&c.isTimeout?`LinkNetworkError: Link "${e.url}" timed out.`:`LinkNetworkError: Failed to load link "${e.url}" - the URL is unreachable or the server returned an error.`);f.name="LinkNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(f))}else e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,ot(()=>{const{needDeleteLink:f=!0}=e;f&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),a)){const f=a(c);return l(),f}l()};return t.onerror=i.bind(null,t.onerror),t.onload=i.bind(null,t.onload),o=setTimeout(()=>{i(null,{type:"error",isTimeout:!0})},n),{link:t,needAttach:r}}function Qt(e,t){const{attrs:r={},createScriptHook:n}=t;return new Promise((o,s)=>{const{script:i,needAttach:a}=nt({url:e,cb:o,onErrorCallback:s,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}const er=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`,st=(e,t,r,n)=>{const o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(er(e)),n&&o.push(`Original Error Message:
5
+ ${n}`),o.join(`
6
+ `)};function tr(e,t,r,n,o,s){return n(st(e,t,r,o))}const U="[ Federation Runtime ]",ve=Zt(U);function P(e,t,r,n,o){e||R(t)}function R(e,t,r,n,o){if(t!==void 0)return tr(e,t,r??{},i=>{throw new Error(`${U}: ${i}`)},n);const s=e;throw s instanceof Error?(s.message.startsWith(U)||(s.message=`${U}: ${s.message}`),s):new Error(`${U}: ${s}`)}function Q(e){e instanceof Error&&(e.message.startsWith(U)||(e.message=`${U}: ${e.message}`)),ve.warn(e)}function rr(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function ee(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function Le(e){return typeof e.entry<"u"}function it(e){return!e.entry.includes(".json")}function Pe(e){return e&&typeof e=="object"}const or=Object.prototype.toString;function at(e){return or.call(e)==="[object Object]"}function ct(e){return Array.isArray(e)?e:[e]}function lt(e){const t={url:"",type:"global",globalName:""};return"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t}const nr=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r},sr=2e3,b=typeof globalThis=="object"?globalThis:window,M=(()=>{try{return document.defaultView}catch{return b}})(),pe=M;function le(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function fe(e,t){return Object.hasOwnProperty.call(e,t)}fe(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||le(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const G=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function ft(e){fe(e,"__VMOK__")&&!fe(e,"__FEDERATION__")&&le(e,"__FEDERATION__",e.__VMOK__),fe(e,"__FEDERATION__")||(le(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map,__PRELOADED_ASSETS__:new Set}),le(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map,e.__FEDERATION__.__PRELOADED_ASSETS__??=new Set}ft(b);ft(M);function ir(e){b.__FEDERATION__.__INSTANCES__.push(e)}function ar(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function cr(e,t=Te()){t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.9.0")}function B(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}}else R(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Ge=()=>M.__FEDERATION__.moduleInfo,lr=(e,t)=>{const r=B(t,ee(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=ee(o),i=B(M.__FEDERATION__.moduleInfo,s).value;if((i==null?void 0:i.version)===n)return i}},ue=e=>lr(e,M.__FEDERATION__.moduleInfo),Ue=(e,t)=>{const r=ee(e);return M.__FEDERATION__.moduleInfo[r]=t,M.__FEDERATION__.moduleInfo},fr=e=>(M.__FEDERATION__.moduleInfo={...M.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete M.__FEDERATION__.moduleInfo[r]}),ut=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:b[r]}},ur=()=>M.__FEDERATION__.__GLOBAL_PLUGIN__,hr=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),dr=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),mr=e=>b.__FEDERATION__.__PRELOADED_ASSETS__.has(e),pr=e=>{const t=b.__FEDERATION__.__PRELOADED_ASSETS__;if(t.add(e),t.size>sr){const r=t.values().next().value;r!==void 0&&t.delete(r)}},xe="[0-9A-Za-z-]+",Me=`(?:\\+(${xe}(?:\\.${xe})*))`,X="0|[1-9]\\d*",he="[0-9]+",ht="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Be=`(?:${he}|${ht})`,yr=`(?:-?(${Be}(?:\\.${Be})*))`,We=`(?:${X}|${ht})`,dt=`(?:-(${We}(?:\\.${We})*))`,Se=`${X}|x|X|\\*`,K=`[v=\\s]*(${Se})(?:\\.(${Se})(?:\\.(${Se})(?:${dt})?${Me}?)?)?`,Er=`^\\s*(${K})\\s+-\\s+(${K})\\s*$`,gr=`[v=\\s]*${`(${he})\\.(${he})\\.(${he})`}${yr}?${Me}?`,Oe="((?:<|>)?=?)",_r=`(\\s*)${Oe}\\s*(${gr}|${K})`,mt="(?:~>?)",Sr=`(\\s*)${mt}\\s+`,pt="(?:\\^)",Rr=`(\\s*)${pt}\\s+`,br="(<|>)?=?\\s*\\*",Ir=`^${pt}${K}$`,wr=`v?${`(${X})\\.(${X})\\.(${X})`}${dt}?${Me}?`,$r=`^${mt}${K}$`,Tr=`^${Oe}\\s*${K}$`,Ar=`^${Oe}\\s*(${wr})$|^$`,Nr="^\\s*>=\\s*0.0.0\\s*$";function O(e){return new RegExp(e)}function v(e){return!e||e.toLowerCase()==="x"||e==="*"}function yt(...e){return t=>e.reduce((r,n)=>n(r),t)}function Ve(e){return e.match(O(Ar))}function je(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function vr(e){return e.replace(O(Er),(t,r,n,o,s,i,a,c,l,f,u,h)=>(v(n)?r="":v(o)?r=`>=${n}.0.0`:v(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,v(l)?c="":v(f)?c=`<${Number(l)+1}.0.0-0`:v(u)?c=`<${l}.${Number(f)+1}.0-0`:h?c=`<=${l}.${f}.${u}-${h}`:c=`<=${c}`,`${r} ${c}`.trim()))}function kr(e){return e.replace(O(_r),"$1$2$3")}function Lr(e){return e.replace(O(Sr),"$1~")}function Pr(e){return e.replace(O(Rr),"$1^")}function Mr(e){return e.trim().split(/\s+/).map(t=>t.replace(O(Ir),(r,n,o,s,i)=>v(n)?"":v(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:v(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function Or(e){return e.trim().split(/\s+/).map(t=>t.replace(O($r),(r,n,o,s,i)=>v(n)?"":v(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:v(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function Dr(e){return e.split(/\s+/).map(t=>t.trim().replace(O(Tr),(r,n,o,s,i,a)=>{const c=v(o),l=c||v(s),f=l||v(i);return n==="="&&f&&(n=""),a="",c?n===">"||n==="<"?"<0.0.0-0":"*":n&&f?(l&&(s=0),i=0,n===">"?(n=">=",l?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",l?o=Number(o)+1:s=Number(s)+1),n==="<"&&(a="-0"),`${n+o}.${s}.${i}${a}`):l?`>=${o}.0.0${a} <${Number(o)+1}.0.0-0`:f?`>=${o}.${s}.0${a} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function Fr(e){return e.trim().replace(O(br),"")}function Hr(e){return e.trim().replace(O(Nr),"")}function de(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function Cr(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],a=n[o];if(i!==a)return i===void 0&&a===void 0?0:i?a?de(i,a):-1:1}return 0}function ne(e,t){return de(e.major,t.major)||de(e.minor,t.minor)||de(e.patch,t.patch)||Cr(e,t)}function Re(e,t){return e.version===t.version}function Gr(e,t){switch(e.operator){case"":case"=":return Re(e,t);case">":return ne(e,t)<0;case">=":return Re(e,t)||ne(e,t)<0;case"<":return ne(e,t)>0;case"<=":return Re(e,t)||ne(e,t)>0;case void 0:return!0;default:return!1}}function Ur(e){return yt(Mr,Or,Dr,Fr)(e)}function xr(e){return yt(vr,kr,Lr,Pr)(e.trim()).split(/\s+/).join(" ")}function Z(e,t){if(!e)return!1;const r=Ve(e);if(!r)return!1;const[,n,,o,s,i,a]=r,c={operator:n,version:je(o,s,i,a),major:o,minor:s,patch:i,preRelease:a==null?void 0:a.split(".")},l=t.split("||");for(const f of l){const u=f.trim();if(!u||u==="*"||u==="x")return!0;try{const h=xr(u);if(!h.trim())return!0;const m=h.split(" ").map(y=>Ur(y)).join(" ");if(!m.trim())return!0;const d=m.split(/\s+/).map(y=>Hr(y)).filter(Boolean);if(d.length===0)continue;let p=!0;for(const y of d){const E=Ve(y);if(!E){p=!1;break}const[,_,,g,S,I,$]=E;if(!Gr({operator:_,version:je(g,S,I,$),major:g,minor:S,patch:I,preRelease:$==null?void 0:$.split(".")},c)){p=!1;break}}if(p)return!0}catch(h){console.error(`[semver] Error processing range part "${u}":`,h);continue}}return!1}const oe="default",Et="global";function Br(e,t,r,n){var s,i;let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{R(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(s=e.shareConfig)!=null&&s.eager&&((i=e.treeShaking)!=null&&i.mode)&&R(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e!=null&&e.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??$e.UNKNOWN,useIn:[]}:void 0}}function gt(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,a)=>{const c=ct(r[a]);return i[a]=i[a]||[],c.forEach(l=>{i[a].push(Br(l,n,a,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(a=>{s[i].find(c=>c.version===a.version)||s[i].push(a)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===$e.NO_USE?!1:r===$e.CALCULATED?!0:n==="runtime-infer"?t?Vr(e,t):!0:!1}function x(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Z(r(e),`<=${r(t)}`)}const re=(e,t)=>{const r=t||function(n,o){return x(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},me=e=>!!e.loaded||typeof e.lib=="function",Wr=e=>!!e.loading,Vr=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function jr(e,t,r,n){const o=e[t][r];let s="",i=te(n);const a=function(c,l){return i?o[c].treeShaking?o[l].treeShaking?!me(o[c].treeShaking)&&x(c,l):!1:!0:!me(o[c])&&x(c,l)};if(i){if(s=re(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],a),useTreesShaking:i}}const W=e=>me(e)||Wr(e);function qr(e,t,r,n){const o=e[t][r];let s="",i=te(n);const a=function(c,l){if(i){if(!o[c].treeShaking)return!0;if(!o[l].treeShaking)return!1;if(W(o[l].treeShaking))return W(o[c].treeShaking)?!!x(c,l):!0;if(W(o[c].treeShaking))return!1}return W(o[l])?W(o[c])?!!x(c,l):!0:W(o[c])?!1:x(c,l)};if(i){if(s=re(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],a),useTreesShaking:i}}function Kr(e){return e==="loaded-first"?qr:jr}function Y(e,t,r,n,o){if(!e)return;const{shareConfig:s,scope:i=oe,strategy:a,treeShaking:c}=r,l=Array.isArray(i)?i:[i];for(const f of l)if(s&&e[f]&&e[f][t]){const{requiredVersion:u}=s,{version:h,useTreesShaking:m}=Kr(a)(e,f,t,c),d=()=>{const y=e[f][t][h];if(s.singleton){if(typeof u=="string"&&!Z(h,u)){const E=`Version ${h} from ${h&&y.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${u})`;s.strictVersion?R(E):Q(E)}return{shared:y,useTreesShaking:m}}else{if(u===!1||u==="*")return{shared:y,useTreesShaking:m};if(Z(h,u))return{shared:y,useTreesShaking:m};const E=te(c);if(E){for(const[_,g]of Object.entries(e[f][t]))if(te(g.treeShaking,c==null?void 0:c.usedExports)&&Z(_,u))return{shared:g,useTreesShaking:E}}for(const[_,g]of Object.entries(e[f][t]))if(Z(_,u))return{shared:g,useTreesShaking:!1}}},p={shareScopeMap:e,scope:f,pkgName:t,version:h,GlobalFederation:pe.__FEDERATION__,shareInfo:r,resolver:d,loadContext:o};return(n.emit(p)||p).resolver()}}function De(){return pe.__FEDERATION__.__SHARE__}function qe(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=c=>{if(!c)return;const l={};return c.forEach(u=>{l[u.version]=u}),l[re(l,function(u,h){return!me(l[u])&&x(u,h)})]},s=(r==null?void 0:r.resolver)??o,i=c=>c!==null&&typeof c=="object"&&!Array.isArray(c),a=(...c)=>{const l={};for(const f of c)if(f)for(const[u,h]of Object.entries(f)){const m=l[u];i(m)&&i(h)?l[u]=a(m,h):h!==void 0&&(l[u]=h)}return l};return a(s(n[t]),r==null?void 0:r.customShareInfo)}const V=(e,t)=>{e.useIn||(e.useIn=[]),rr(e.useIn,t)};function se(e,t){return t&&e.treeShaking?e.treeShaking:e}function Fe(e,t){return!t||t==="."?e:`${e}/${t.replace(/^\.\//,"")}`}function Ke(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const a=r.name;return o=`.${o}`,{pkgNameOrAlias:a,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const a=r.alias;return i=`.${i}`,{pkgNameOrAlias:a,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function zr(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}const _t="RUNTIME-001",St="RUNTIME-002",Rt="RUNTIME-003",bt="RUNTIME-004",It="RUNTIME-005",ke="RUNTIME-006",wt="RUNTIME-007",ye="RUNTIME-008",Jr="RUNTIME-009",$t="RUNTIME-010",Tt="RUNTIME-011",Zr="RUNTIME-012",At="RUNTIME-013",Nt="RUNTIME-014",vt="RUNTIME-015",k={[_t]:"Failed to get remoteEntry exports.",[St]:'The remote entry interface does not contain "init"',[Rt]:"Failed to get manifest.",[bt]:"Failed to locate remote.",[It]:"Invalid loadShareSync function call from bundler runtime",[ke]:"Invalid loadShareSync function call from runtime",[wt]:"Failed to get remote snapshot.",[ye]:"Failed to load script resources.",[Jr]:"Please call createInstance first.",[$t]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[Tt]:"The remoteEntry URL is missing from the remote snapshot.",[Zr]:'The getter for the shared module is not a function. This may be caused by setting "shared.import: false" without the host providing the corresponding lib.',[At]:"The manifest is not a valid Module Federation manifest.",[Nt]:"The remote does not expose the requested module.",[vt]:"Remote container initialization failed."};({...k});const kt=".then(callbacks[0]).catch(callbacks[1])",ze=new WeakMap,Xr=["Failed to fetch dynamically imported module","Importing a module script failed","error loading dynamically imported module"];function Yr(e){return e instanceof TypeError?Xr.some(t=>e.message.includes(t)):!1}function Lt(e){return e==="esm"||e==="module"}async function Qr({entry:e,remoteEntryExports:t,name:r,getEntryUrl:n}){return new Promise((o,s)=>{const i=c=>{if(Yr(c)){const l=c instanceof Error?c.message:String(c);try{R(ye,k,{remoteName:r,resourceUrl:a},l)}catch(f){s(f);return}}s(c)},a=n?n(e):e;try{t?o(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${a}")${kt}`)([o,i]):import(a).then(o).catch(i)}catch(c){R(`Failed to load ESM entry from "${a}". ${c instanceof Error?c.message:String(c)}`)}})}async function eo({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${kt}`)([r,n])}catch(o){R(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function to(e,t,r){const{remoteEntryKey:n,entryExports:o}=ut(e,t);return o||R(_t,k,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function ro({name:e,globalName:t,entry:r,remoteInfo:n,loaderHook:o,getEntryUrl:s,resourceContext:i}){const{entryExports:a}=ut(e,t);if(a)return a;const c=s?s(r):r;return Qt(c,{attrs:{},createScriptHook:(l,f)=>{const u=o.lifecycle.createScript.emit({url:l,attrs:f,remoteInfo:n,resourceContext:i?{...i,url:l}:void 0});if(u&&(u instanceof HTMLScriptElement||"script"in u||"timeout"in u))return u}}).then(()=>to(e,t,r),l=>{const f=l instanceof Error?l.message:String(l);R(ye,k,{remoteName:e,resourceUrl:c},f)})}async function oo({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n,resourceContext:o}){const{entry:s,entryGlobalName:i,name:a,type:c}=e;return Lt(c)?Qr({entry:s,remoteEntryExports:t,name:a,getEntryUrl:n}):c==="system"?eo({entry:s,remoteEntryExports:t}):ro({entry:s,globalName:i,name:a,remoteInfo:e,loaderHook:r,getEntryUrl:n,resourceContext:o})}function Pt(e){const{entry:t,name:r}=e;return Ye(r,t)}async function He(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,resourceContext:s,_inErrorHandling:i=!1}=e,a=Pt(n);if(r)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:r,resourceContext:s,cached:!0}),r;if(!G[a]){const l=t.remoteHandler.hooks.lifecycle.loadEntry,f=t.loaderHook;G[a]=l.emit({origin:t,loaderHook:f,remoteInfo:n,remoteEntryExports:r,resourceContext:s}).then(u=>u||oo({remoteInfo:n,remoteEntryExports:r,loaderHook:f,getEntryUrl:o,resourceContext:s})).then(async u=>(await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:u,resourceContext:s}),u)).catch(async u=>{const h=u instanceof Error&&u.message.includes("ScriptExecutionError");if(u instanceof Error&&u.message.includes(ye)&&!h&&!i){const m=p=>He({...p,_inErrorHandling:!0}),d=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:m,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:G,uniqueKey:a});if(d)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:d,resourceContext:s,error:u,recovered:!0}),d}throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,resourceContext:s,error:u}),u}),ze.set(G[a],t)}const c=G[a];if(ze.get(c)!==t)try{const l=await c;return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:l,resourceContext:s}),l}catch(l){throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,resourceContext:s,error:l}),l}return c}function j(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||Et,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||oe}}function no(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function so(e){const t=new Map;return[...e||[],...ur()].forEach(r=>{r&&(P(at(r),"Plugin configuration is invalid."),P(r.name,"A name must be provided by the plugin."),t.has(r.name)||t.set(r.name,r))}),Array.from(t.values())}function io(e,t){return t===void 0?e:{...t,name:e.name,version:e.version}}function ao(e,t){const r=new Map;t.options.plugins.forEach(o=>{o&&r.set(o.name,o)});const n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return so(e).forEach(o=>{var i;if(r.set(o.name,o),t.hooks.registerPlugins[o.name])return;const s=io(o,(i=o.apply)==null?void 0:i.call(o,t));n.forEach(a=>{a.applyPlugin(s)})}),Array.from(r.values())}function co(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function D(e){var r,n,o,s,i,a;const t={};for(const[c,l]of Object.entries(e.shared)){const f=l[0];f&&(t[c]={version:f.version,singleton:(r=f.shareConfig)==null?void 0:r.singleton,requiredVersion:((n=f.shareConfig)==null?void 0:n.requiredVersion)===!1?!1:(o=f.shareConfig)==null?void 0:o.requiredVersion,eager:f.eager,strictVersion:(s=f.shareConfig)==null?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:((i=e.remotes)==null?void 0:i.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:((a=e.remotes)==null?void 0:a.map(co))??[],shared:t}}}function Mt(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,recordPreloadedAssets:!0,...e}}function lo(e,t){return t.map(r=>{const n=zr(e,r.nameOrAlias);return P(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&et({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Mt(r)}})}function fo(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function Ce(e){return e instanceof Error?e.message.includes("timed out")||e.name.includes("Timeout"):!1}function C(e,t,r,n){return{url:t,status:r,resourceType:e.resourceType,initiator:e.initiator,id:e.id,error:n}}function be(e,t,r,n){return r?mr(t)?Promise.resolve(C(e,t,"cached")):(pr(t),n()):n()}async function uo(e,t,r,n){const o=e.moduleCache.get(r.name),s=r.entry;if(o!=null&&o.remoteEntryExports)return C(n,s,"cached");try{if(!await He({origin:e,remoteInfo:r,remoteEntryExports:o==null?void 0:o.remoteEntryExports,resourceContext:{...n,url:s}}))throw new Error(`Failed to load remoteEntry "${s}".`);return C(n,s,"success")}catch(i){return C(n,s,Ce(i)?"timeout":"error",i)}}function ie({host:e,remoteInfo:t,url:r,attrs:n,context:o,needDeleteLink:s}){return new Promise(i=>{const{link:a,needAttach:c}=Yt({url:r,cb:()=>{i(C(o,r,c?"success":"cached"))},onErrorCallback:l=>{i(C(o,r,Ce(l)?"timeout":"error",l))},attrs:n,createLinkHook:(l,f)=>{const u=e.loaderHook.lifecycle.createLink.emit({url:l,attrs:f,remoteInfo:t,resourceContext:{...o,url:l}});return u instanceof HTMLLinkElement,u},needDeleteLink:s});c&&document.head.appendChild(a)})}function ho({host:e,remoteInfo:t,url:r,attrs:n,context:o}){return new Promise(s=>{const{script:i,needAttach:a}=nt({url:r,cb:()=>{s(C(o,r,a?"success":"cached"))},onErrorCallback:c=>{s(C(o,r,Ce(c)?"timeout":"error",c))},attrs:n,createScriptHook:(c,l)=>{const f=e.loaderHook.lifecycle.createScript.emit({url:c,attrs:l,remoteInfo:t,resourceContext:{...o,url:c}});return f instanceof HTMLScriptElement,f},needDeleteScript:!0});a&&document.head.appendChild(i)})}function ae(e,t){return{...e,resourceType:t}}function Ot(e,t,r,n=!0,o={initiator:"preloadRemote",id:e.name},s=!0){const{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:c}=r,l=[];if(t.options.inBrowser){if(c.forEach(h=>{const{moduleInfo:m}=h;l.push(uo(t,e,m,ae(o,"remoteEntry")))}),n){const h={rel:"preload",as:"style"};i.forEach(m=>{const d=ae(o,"css");l.push(be(d,m,s,()=>ie({host:t,remoteInfo:e,url:m,attrs:h,context:d})))})}else{const h={rel:"stylesheet",type:"text/css"};i.forEach(m=>{const d=ae(o,"css");l.push(be(d,m,s,()=>ie({host:t,remoteInfo:e,url:m,attrs:h,needDeleteLink:!1,context:d})))})}let f=ho,u={fetchpriority:"high",type:"text/javascript"};n?(f=ie,u={rel:"preload",as:"script"}):Lt(e.type)&&(f=ie,u={rel:"modulepreload",fetchpriority:"high"}),a.forEach(h=>{const m=ae(o,"js");l.push(be(m,h,s,()=>f({host:t,remoteInfo:e,url:h,attrs:u,context:m})))})}return Promise.all(l)}const mo={getRegisteredShare:Y,getGlobalShareScope:De};var po={share:mo};function yo(e){if(!e||!("modules"in e)||!Array.isArray(e.modules))return;const t=e.modules.map(r=>r.moduleName).filter(Boolean);return t.length?t.join(","):void 0}function Eo(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var Je=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(e,t){const r=t||{initiator:"loadRemote",id:Fe(this.remoteInfo.name,e),resourceType:"remoteEntry",url:this.remoteInfo.entry,expose:e},n=await He({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports,resourceContext:r});return P(n,`remoteEntryExports is undefined
7
+ ${et(this.remoteInfo)}`),this.remoteEntryExports=n,this.remoteEntryExports}async init(e,t,r,n,o){const s=await this.getEntry(n,o);if(this.inited)return await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,cached:!0,origin:this.host}),s;if(this.initPromise){try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,cached:!0,origin:this.host})}catch(i){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,error:i,cached:!0,origin:this.host}),i}return s}this.initing=!0,this.initPromise=(async()=>{await this.host.loaderHook.lifecycle.beforeInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,origin:this.host});const{remoteEntryInitOptions:i,shareScope:a,initScope:c}=Eo(this.remoteInfo,this.host.shareScopeMap,r),l=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:a,remoteEntryInitOptions:i,initScope:c,remoteInfo:this.remoteInfo,origin:this.host});typeof(s==null?void 0:s.init)>"u"&&R(St,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,D(this.host.options));try{await s.init(l.shareScope,l.initScope,l.remoteEntryInitOptions)}catch(f){R(vt,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName,shareScope:this.remoteInfo.shareScope},`${f}`,D(this.host.options))}await this.host.hooks.lifecycle.initContainer.emit({...l,id:e,remoteSnapshot:t,remoteEntryExports:s}),this.inited=!0})();try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,origin:this.host})}catch(i){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,error:i,origin:this.host}),i}finally{this.initing=!1,this.initPromise=void 0}return s}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n,void 0,t);this.lib=s,await this.host.loaderHook.lifecycle.beforeGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,origin:this.host});let i;try{const l=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo});i=typeof l=="function"?l:void 0,i||(i=await s.get(t)),i||R(Nt,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,expose:t,requestId:e,availableExposes:yo(n)},void 0,D(this.host.options)),await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,moduleFactory:i,origin:this.host})}catch(l){throw await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,error:l,origin:this.host}),l}const a=nr(this.remoteInfo.name,t),c=this.wraperFactory(i,a);if(!o)return c;await this.host.loaderHook.lifecycle.beforeExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,origin:this.host});try{const l=await c();return await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,exposeModule:l,origin:this.host}),l}catch(l){throw await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,error:l,origin:this.host}),l}}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return()=>{const n=e();return n instanceof Promise?n.then(o=>(r(o,t),o)):(r(n,t),n)}}},F=class{constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}applyPlugin(e){P(at(e),"Plugin configuration is invalid.");const t=e.name;P(t,"A name must be provided by the plugin."),this.registerPlugins[t]||(this.registerPlugins[t]=e,this.lifecycleKeys.forEach(r=>{const n=e[r];n&&this.lifecycle[r].on(n)}))}removePlugin(e){P(e,"A name is required.");const t=this.registerPlugins[e];P(t,`The plugin "${e}" is not registered.`),this.lifecycleKeys.forEach(r=>{const n=t[r];n&&this.lifecycle[r].remove(n)}),delete this.registerPlugins[e]}},N=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{const n=r(...e);n!==void 0&&(t=n)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}},w=class extends N{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n<r.length?Promise.resolve(r[n++].apply(null,e)).then(i=>i===void 0||e.length===1&&i===e[0]?o(s):o(i)):s;t=o()}return Promise.resolve(t)}};function Dt(e,t){if(!Pe(t))return!1;if(e!==t){for(const r in e)if(!(r in t))return!1}return!0}var q=class extends N{constructor(e){super(),this.onerror=R,this.type=e}emit(e){Pe(e)||R(`The data for the "${this.type}" hook should be an object.`);for(const t of this.listeners)try{const r=t(e);if(r===void 0)continue;if(Dt(e,r))e=r;else{this.onerror(`A plugin returned an unacceptable value for the "${this.type}" type.`);break}}catch(r){Q(r),this.onerror(r)}return e}},H=class extends N{constructor(e){super(),this.onerror=R,this.type=e}emit(e){Pe(e)||R(`The response data for the "${this.type}" hook must be an object.`);const t=Array.from(this.listeners);if(t.length>0){let r=0;const n=s=>(Q(s),this.onerror(s),e),o=s=>{if(s!==void 0&&Dt(e,s))e=s;else if(s!==void 0)return this.onerror(`A plugin returned an incorrect value for the "${this.type}" type.`),e;if(r<t.length)try{return Promise.resolve(t[r++](e)).then(o,n)}catch(i){return n(i)}return e};return Promise.resolve(o(e))}return Promise.resolve(e)}};const J="Remote loading is disabled by experiments.optimization.disableRemote.";var go=class{constructor(){this.hooks=new F({})}formatAndRegisterRemote(){return[]}loadRemote(){throw new Error(J)}preloadRemote(){throw new Error(J)}registerRemotes(){throw new Error(J)}getRemoteModuleAndOptions(){throw new Error(J)}initRawContainer(){throw new Error(J)}};function Ft(e,t){const r=lt(t);r.url||R(Tt,k,{remoteName:e.name});let n=Ae(t,r.url);e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function _o(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!Le(t)||!it(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:Fe(t.name,n)});Ft(s,a);const l=[{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1,recordPreloadedAssets:!0}];await o.remoteHandler.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:l,options:o.options,origin:o});const[f]=l;if(f){const u={remote:t,preloadConfig:f},h=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});h&&Ot(s,o,h,!1,{initiator:"loadRemote",id:i},f.recordPreloadedAssets).catch(()=>{})}return{...e,remoteSnapshot:a}}return e}}}function So(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function Ht(e,t,r,n,o={},s){const{value:i}=B(e,ee(t)),a=s||i;if(a&&!tt(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const f=So(l),u=a.remotesInfo[l];Ht(e,{name:f.name,version:u.matchedVersion},r,!1,o,void 0)}}}const Ie=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function Ro(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:f}=e,{preloadConfig:u}=t,{depsRemote:h}=u;if(Ht(n,r,(d,p,y)=>{var $;let E;if(y)E=u;else if(Array.isArray(h)){const A=h.find(T=>T.nameOrAlias===p.name||T.nameOrAlias===p.alias);if(!A)return;E=Mt(A)}else if(h===!0)E=u;else return;const _=Ae(d,lt(d).url);_&&a.push({name:p.name,moduleInfo:{name:p.name,entry:_,type:"remoteEntryType"in d?d.remoteEntryType:"global",entryGlobalName:"globalName"in d?d.globalName:p.name,shareScope:"",version:"version"in d?d.version:void 0},url:_});let g="modules"in d?d.modules:[];const S=fo(E.exposes);S.length&&"modules"in d&&(g=($=d==null?void 0:d.modules)==null?void 0:$.reduce((A,T)=>((S==null?void 0:S.indexOf(T.moduleName))!==-1&&A.push(T),A),[]));function I(A){const T=A.map(L=>Ae(d,L));return E.filter?T.filter(E.filter):T}if(g){const A=g.length;for(let T=0;T<A;T++){const L=g[T],Ee=`${p.name}/${L.moduleName}`;e.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({id:L.moduleName==="."?p.name:Ee,name:p.name,remoteSnapshot:d,preloadConfig:E,remote:p,origin:e}),!hr(Ee)&&(E.resourceCategory==="all"?(s.push(...I(L.assets.css.async)),s.push(...I(L.assets.css.sync)),i.push(...I(L.assets.js.async)),i.push(...I(L.assets.js.sync))):E.resourceCategory==="sync"&&(s.push(...I(L.assets.css.sync)),i.push(...I(L.assets.js.sync))),dr(Ee))}}},!0,{},o),o.shared&&o.shared.length>0){const d=(p,y)=>{const{shared:E}=Y(e.shareScopeMap,y.sharedName,p,e.sharedHandler.hooks.lifecycle.resolveShare)||{};E&&typeof E.lib=="function"&&(y.assets.js.sync.forEach(_=>{c.add(_)}),y.assets.css.sync.forEach(_=>{l.add(_)}))};o.shared.forEach(p=>{var _;const y=(_=f.shared)==null?void 0:_[p.sharedName];if(!y)return;const E=p.version?y.find(g=>g.version===p.version):y;E&&ct(E).forEach(g=>{d(g,p)})})}const m=i.filter(d=>!c.has(d)&&!Ie("script",d));return{cssAssets:s.filter(d=>!l.has(d)&&!Ie("link",d)),jsAssetsWithoutEntry:m,entryAssets:a.filter(d=>!Ie("script",d.url))}}const bo=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return Le(o)&&it(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Ft(n,i),Ro(t,r,n,s,i))}}};function Ct(e,t){const r=ue({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&B(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:Ge(),remoteSnapshot:ue({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:Ge(),remoteSnapshot:ue({name:e.name,version:"version"in e?e.version:void 0})}}var Io=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new F({beforeLoadRemoteSnapshot:new w("beforeLoadRemoteSnapshot"),loadSnapshot:new H("loadGlobalSnapshot"),loadRemoteSnapshot:new H("loadRemoteSnapshot"),afterLoadSnapshot:new H("afterLoadSnapshot"),beforeLoadManifest:new w("beforeLoadManifest"),afterLoadManifest:new w("afterLoadManifest")}),this.manifestLoading=pe.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,initiator:r="loadRemote"}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e,origin:this.HostInstance});let o=ue({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},fr({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!B(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let f,u;if(c)if(tt(c)){const h=c.remoteEntry,m=await this.loadManifestSnapshot(h,e,{},{initiator:r,id:t||e.name}),d=Ue({...e,entry:h},m);f=m,u=d}else{const{remoteSnapshot:h}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});f=h,u=l}else if(Le(e)){const h=await this.loadManifestSnapshot(e.entry,e,{},{initiator:r,id:t||e.name}),m=Ue(e,h);f=h,u=m}else R(wt,k,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,D(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:f}),{remoteSnapshot:f,globalSnapshot:u}}getGlobalRemoteInfo(e){return Ct(e,this.HostInstance)}async getManifestJson(e,t,r,n){return(async()=>{const s=j(t);let i=this.manifestCache.get(e);if(i)return await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,manifestJson:i,cached:!0,origin:this.HostInstance}),i;await this.hooks.lifecycle.beforeLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,origin:this.HostInstance});let a,c,l=!1;try{let h=await this.loaderHook.lifecycle.fetch.emit(e,{},s,n?{...n,url:e,resourceType:"manifest"}:void 0);(!h||!(h instanceof Response))&&(h=await fetch(e,{})),a=h,i=await h.json()}catch(h){c=h,i=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:h,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),i||(delete this.manifestLoading[e],await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,response:a,error:h,origin:this.HostInstance}),R(Rt,k,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${h}`,D(this.HostInstance.options))),l=!0}const f=[!i.metaData&&"metaData",!i.exposes&&"exposes",!i.shared&&"shared"].filter(Boolean),u=f.length>0?new Error(`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${f.join(", ")}.`):void 0;return u&&await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:u,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,manifestJson:i,response:a,error:u||c,recovered:u?void 0:l||void 0,origin:this.HostInstance}),u&&R(At,k,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name,missingFields:f.join(",")},void 0,D(this.HostInstance.options)),this.manifestCache.set(e,i),i})()}async loadManifestSnapshot(e,t,r,n){const o=async()=>{const s=await this.getManifestJson(e,t,r,n),i=qt(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}},wo=class{constructor(){this.hooks=new F({})}},$o=class{constructor(e){this.hooks=new F({beforeRegisterShare:new q("beforeRegisterShare"),afterRegisterShare:new N("afterRegisterShare"),afterResolve:new H("afterResolve"),beforeLoadShare:new H("beforeLoadShare"),loadShare:new w,afterLoadShare:new N("afterLoadShare"),errorLoadShare:new N("errorLoadShare"),resolveShare:new q("resolveShare"),initContainerShareScopeMap:new q("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}emitAfterRegisterShare(e,t){this.hooks.lifecycle.afterRegisterShare.emit({pkgName:e,...t,shareScopeMap:this.shareScopeMap,origin:this.host})}emitAfterLoadShare({lifecycle:e,pkgName:t,shareInfo:r,selectedShared:n,loadContext:o}){try{this.hooks.lifecycle.afterLoadShare.emit({pkgName:t,shareInfo:r,selectedShared:n,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,loadContext:o,origin:this.host})}catch(s){Q(s)}}emitErrorLoadShare({lifecycle:e,pkgName:t,shareInfo:r,error:n,recovered:o,loadContext:s}){try{this.hooks.lifecycle.errorLoadShare.emit({pkgName:t,shareInfo:r,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,origin:this.host,error:n,recovered:o,loadContext:s})}catch(i){Q(i)}}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=gt(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var l,f,u;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s});const a=(l=this.shareScopeMap[i])==null?void 0:l[o],c=a==null?void 0:a[s.version];a||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name}),this.emitAfterRegisterShare(o,{scope:i,shared:s,previousShared:c,registeredShared:(u=(f=this.shareScopeMap[i])==null?void 0:f[o])==null?void 0:u[s.version],trigger:"runtime"})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this;let n=t==null?void 0:t.context;const o=qe({pkgName:e,extraOptions:t,shareInfos:r.options.shared});let s=o;try{o!=null&&o.scope&&await Promise.all(o.scope.map(async f=>{await Promise.all(this.initializeSharing(f,{strategy:o.strategy,context:n}))}));const i=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:o,shared:r.options.shared,origin:r,loadContext:n});s=i.shareInfo,n=i.loadContext||n,P(s,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const a=s,{shared:c,useTreesShaking:l}=Y(this.shareScopeMap,e,s,this.hooks.lifecycle.resolveShare,n)||{};if(c){const f=se(c,l);if(f.lib)return V(f,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),f.lib;if(f.loading&&!f.loaded){const u=await f.loading;return f.loaded=!0,f.lib||(f.lib=u),V(f,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),u}else{const h=(async()=>{const d=await f.get();return V(f,r.options.name),f.loaded=!0,f.lib=d,d})();this.setShared({pkgName:e,loaded:!1,shared:c,from:r.options.name,lib:null,loading:h,treeShaking:l?f:void 0});const m=await h;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),m}}else{if(t!=null&&t.customShareInfo)return this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,recovered:!0,loadContext:n}),!1;const f=te(a.treeShaking),u=se(a,f),m=(async()=>{const p=await u.get();u.lib=p,u.loaded=!0,V(u,r.options.name);const{shared:y,useTreesShaking:E}=Y(this.shareScopeMap,e,a,this.hooks.lifecycle.resolveShare,n)||{};if(y){const _=se(y,E);_.lib=p,_.loaded=!0,y.from=a.from}return p})();this.setShared({pkgName:e,loaded:!1,shared:a,from:r.options.name,lib:null,loading:m,treeShaking:f?u:void 0});const d=await m;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:a,loadContext:n}),d}}catch(i){throw this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,error:i,loadContext:n}),i}}initializeSharing(e=oe,t){var m;const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy,s=((m=t==null?void 0:t.context)==null?void 0:m.trigger)||n||"runtime";let i=t==null?void 0:t.initScope;const a=[];if(n!=="build"){const{initTokens:d}=this;i||(i=[]);let p=d[e];if(p||(p=d[e]={from:this.host.name}),i.indexOf(p)>=0)return a;i.push(p)}const c=this.shareScopeMap,l=r.options.name;c[e]||(c[e]={});const f=c[e],u=(d,p)=>{var $;const{version:y,eager:E}=p;f[d]=f[d]||{};const _=f[d],g=_[y],S=g&&se(g),I=!!(S&&("eager"in S&&S.eager||"shareConfig"in S&&(($=S.shareConfig)!=null&&$.eager)));(!S||S.strategy!=="loaded-first"&&!S.loaded&&(!E!=!I?E:l>_[y].from))&&(_[y]=p),this.emitAfterRegisterShare(d,{scope:e,shared:p,previousShared:g,registeredShared:_[y],trigger:s})},h=async d=>{const{module:p}=await r.remoteHandler.getRemoteModuleAndOptions({id:d});let y;const E={initiator:"loadShare",id:d,resourceType:"remoteEntry",url:p.remoteInfo.entry};try{y=await p.getEntry(void 0,E)}catch(_){if(y=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:d,error:_,from:"runtime",lifecycle:"beforeLoadShare",remote:p.remoteInfo,origin:r}),!y)return}finally{y!=null&&y.init&&!p.initing&&(p.remoteEntryExports=y,await p.init(void 0,void 0,i,void 0,E))}};return Object.keys(r.options.shared).forEach(d=>{r.options.shared[d].forEach(p=>{p.scope.includes(e)&&u(d,p)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(d=>{d.shareScope===e&&a.push(h(d.name))}),a}loadShareSync(e,t){const{host:r}=this,n=t==null?void 0:t.context,o=qe({pkgName:e,extraOptions:t,shareInfos:r.options.shared});try{o!=null&&o.scope&&o.scope.forEach(i=>{this.initializeSharing(i,{strategy:o.strategy,from:t==null?void 0:t.from,context:n})});const{shared:s}=Y(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare,n)||{};if(s){if(typeof s.lib=="function")return V(s,r.options.name),s.loaded||(s.loaded=!0,s.from===r.options.name&&(o.loaded=!0)),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:s,loadContext:n}),s.lib;if(typeof s.get=="function"){const i=s.get();if(!(i instanceof Promise))return V(s,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:s}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:s,loadContext:n}),i}}if(o.lib)return o.loaded||(o.loaded=!0),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:o,loadContext:n}),o.lib;if(o.get){const i=o.get();return i instanceof Promise&&R((t==null?void 0:t.from)==="build"?It:ke,k,{hostName:r.options.name,sharedPkgName:e},void 0,D(r.options)),o.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:o.lib,shared:o}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:o,loadContext:n}),o.lib}R(ke,k,{hostName:r.options.name,sharedPkgName:e},void 0,D(r.options))}catch(s){throw this.emitErrorLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,error:s,loadContext:n}),s}}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...f}=t,u=Array.isArray(l)?l:[l],h=m=>{const d=(y,E,_)=>{_&&!y[E]&&(y[E]=_)},p=a?m.treeShaking:m;d(p,"loaded",s),d(p,"loading",o),d(p,"get",i),d(p,"lib",n)};u.forEach(m=>{this.shareScopeMap[m]||(this.shareScopeMap[m]={}),this.shareScopeMap[m][e]||(this.shareScopeMap[m][e]={}),this.shareScopeMap[m][e][c]||(this.shareScopeMap[m][e][c]={version:c,scope:[m],...f,lib:n});const d=this.shareScopeMap[m][e][c];h(d),r&&d.from!==r&&(d.from=r)})}_setGlobalShareScopeMap(e){const t=De(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}},To=class{constructor(){this.shareScopeMap={},this.hooks=new F({afterResolve:new H("afterResolve")})}registerShared(){return{newShareInfos:{},allShareInfos:{}}}loadShare(){throw new Error("Shared dependency loading is disabled by experiments.optimization.disableShared.")}loadShareSync(){throw new Error("Shared dependency loading is disabled by experiments.optimization.disableShared.")}initializeSharing(){return[]}initShareScopeMap(e,t){this.shareScopeMap[e]=t}},Ao=class{constructor(e){this.hooks=new F({beforeRegisterRemote:new q("beforeRegisterRemote"),registerRemote:new q("registerRemote"),beforeRequest:new H("beforeRequest"),afterMatchRemote:new w("afterMatchRemote"),onLoad:new w("onLoad"),afterLoadRemote:new w("afterLoadRemote"),handlePreloadModule:new N("handlePreloadModule"),errorLoadRemote:new w("errorLoadRemote"),beforePreloadRemote:new w("beforePreloadRemote"),generatePreloadAssets:new w("generatePreloadAssets"),afterPreloadRemote:new w("afterPreloadRemote"),loadEntry:new w}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this,n=Ke(r.options.remotes,e);let o=e,s=n==null?void 0:n.expose,i=n?j(n.remote):void 0,a;try{const{loadFactory:c=!0}=t||{loadFactory:!0},{module:l,moduleOptions:f,remoteMatchInfo:u}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:h,remote:m,expose:d,id:p,remoteSnapshot:y}=u;o=p,s=d,i=j(m);const E=await l.get(p,d,t,y),_=await this.hooks.lifecycle.onLoad.emit({id:p,pkgNameOrAlias:h,expose:d,exposeModule:c?E:void 0,exposeModuleFactory:c?void 0:E,remote:m,options:f,moduleInstance:l,origin:r});return this.setIdToRemoteMap(e,u),a={id:o,expose:s,remote:i,options:t,origin:r},typeof _=="function"?_:E}catch(c){const{from:l="runtime"}=t||{from:"runtime"};let f;try{f=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:c,from:l,lifecycle:"onLoad",expose:s,remote:i,origin:r})}catch(u){throw a={id:o,expose:s,remote:i,options:t,error:u,origin:r},u}if(!f)throw a={id:o,expose:s,remote:i,options:t,error:c,origin:r},c;return a={id:o,expose:s,remote:i,options:t,error:c,origin:r,recovered:!0},f}finally{a&&await this.hooks.lifecycle.afterLoadRemote.emit(a)}}async preloadRemote(e){const{host:t}=this,r=[];await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const n=lo(t.options.remotes,e),o=a=>{const{preloadConfig:c,remote:l}=a,f=c.exposes||[];return f.length?f.map(u=>({ops:{...a,preloadConfig:{...c,exposes:[u]}},id:Fe(l.name,u)})):[{ops:a,id:`${l.name}/*`}]};let s;await Promise.all(n.flatMap(o).map(async a=>{const{ops:c,id:l}=a,{remote:f,preloadConfig:u}=c,h=j(f);try{const{globalSnapshot:m,remoteSnapshot:d}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:f,id:l,initiator:"preloadRemote"}),p=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:c,remote:f,remoteInfo:h,globalSnapshot:m,remoteSnapshot:d});if(!p)return;const y=await Ot(h,t,p,!0,{initiator:"preloadRemote",id:l},u.recordPreloadedAssets);r.push({remote:f,remoteInfo:h,preloadConfig:u,id:l,results:y})}catch(m){r.push({remote:f,remoteInfo:h,preloadConfig:u,id:l,results:[{url:h.entry,status:"error",resourceType:/\.json(?:$|[?#])/i.test(h.entry)?"manifest":"remoteEntry",initiator:"preloadRemote",id:l,error:m}]})}}));const i=r.flatMap(a=>a.results.filter(c=>c.status==="error"||c.status==="timeout"));if(i.length>0&&(s=new Error(`preloadRemote failed to load ${i.length} resource(s).`),Object.assign(s,{results:r,failedResults:i})),await this.hooks.lifecycle.afterPreloadRemote.emit({preloadOps:e,options:t.options,origin:t,results:r,error:s}),s)throw s}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}initRawContainer(e,t,r){const{host:n}=this,o=new Je({host:n,remoteInfo:j({name:e,entry:t})});return o.remoteEntryExports=r,n.moduleCache.set(e,o),o}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(m){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:m,lifecycle:"beforeRequest"}),!n)throw m}const{id:o}=n,s=Ke(t.options.remotes,o);if(!s)try{R(bt,k,{hostName:t.options.name,requestId:o},void 0,D(t.options))}catch(m){throw await this.hooks.lifecycle.afterMatchRemote.emit({id:o,options:t.options,error:m,origin:t}),m}const{remote:i}=s,a=j(i);await this.hooks.lifecycle.afterMatchRemote.emit({id:o,...s,options:t.options,remoteInfo:a,origin:t});const c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:f}=c;P(l&&f,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let u=t.moduleCache.get(l.name);const h={host:t,remoteInfo:a};return u||(u=new Je(h),t.moduleCache.set(l.name,u)),{module:u,moduleOptions:h,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});P(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=oe),e.type||(e.type=Et)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),Qe(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(c=>c.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=B(b.__FEDERATION__.moduleInfo,ee(e)).key;delete b.__FEDERATION__.moduleInfo[s],"entry"in e&&(r.snapshotHandler.manifestCache.delete(e.entry),delete pe.__FEDERATION__.__MANIFEST_LOADING__[e.entry]);const{hostGlobalSnapshot:i}=Ct(e,r);if(i){const c=i&&"remotesInfo"in i&&i.remotesInfo&&B(i.remotesInfo,e.name).key;c&&delete i.remotesInfo[c]}const a=r.moduleCache.get(e.name);if(a){const c=a.remoteInfo,l=c.entryGlobalName;b[l]&&((t=Object.getOwnPropertyDescriptor(b,l))!=null&&t.configurable?delete b[l]:b[l]=void 0);const f=Pt(a.remoteInfo);G[f]&&delete G[f];let u=c.buildVersion?Ye(c.name,c.buildVersion):c.name;const h=b.__FEDERATION__.__INSTANCES__.findIndex(m=>c.buildVersion?m.options.id===u:m.name===u);if(h!==-1){const m=b.__FEDERATION__.__INSTANCES__[h];u=m.options.id||u;const d=De();let p=!0;const y=[];Object.keys(d).forEach(E=>{const _=d[E];_&&Object.keys(_).forEach(g=>{const S=_[g];S&&Object.keys(S).forEach(I=>{const $=S[I];$&&Object.keys($).forEach(A=>{const T=$[A];T&&typeof T=="object"&&T.from===c.name&&(T.loaded||T.loading?(T.useIn=T.useIn.filter(L=>L!==c.name),T.useIn.length?p=!1:y.push([E,g,I,A])):y.push([E,g,I,A]))})})})}),p&&(m.shareScopeMap={},delete d[u]),y.forEach(([E,_,g,S])=>{var I,$,A;(A=($=(I=d[E])==null?void 0:I[_])==null?void 0:$[g])==null||delete A[S]}),b.__FEDERATION__.__INSTANCES__.splice(h,1)}r.moduleCache.delete(e.name)}}catch(r){ve.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};const No=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0,we=typeof FEDERATION_OPTIMIZE_NO_REMOTE=="boolean"?!FEDERATION_OPTIMIZE_NO_REMOTE:!0,Ze=typeof FEDERATION_OPTIMIZE_NO_SHARED=="boolean"?!FEDERATION_OPTIMIZE_NO_SHARED:!0;var Gt=class{constructor(e){this.hooks=new F({beforeInit:new q("beforeInit"),init:new N,beforeInitContainer:new H("beforeInitContainer"),initContainer:new H("initContainer")}),this.version="2.9.0",this.moduleCache=new Map,this.loaderHook=new F({getModuleInfo:new N,createScript:new N,createLink:new N,fetch:new w,loadEntryError:new w,afterLoadEntry:new w("afterLoadEntry"),beforeInitRemote:new w("beforeInitRemote"),afterInitRemote:new w("afterInitRemote"),beforeGetExpose:new w("beforeGetExpose"),afterGetExpose:new w("afterGetExpose"),beforeExecuteFactory:new w("beforeExecuteFactory"),afterExecuteFactory:new w("afterExecuteFactory"),getModuleFactory:new w}),this.bridgeHook=new F({beforeBridgeRender:new N,afterBridgeRender:new N,beforeBridgeDestroy:new N,afterBridgeDestroy:new N,afterBridgeRouteSync:new N});const t=we&&No?[_o(),bo()]:[],r={id:no(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:Xe};this.name=e.name,this.options=r,this.snapshotHandler=we?new Io(this):new wo,this.sharedHandler=Ze?new $o(this):new To,this.remoteHandler=we?new Ao(this):new go,this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&R(st($t,k)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=oe,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){return this.remoteHandler.initRawContainer(e,t,r)}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const r=Ze?gt(e,t).allShareInfos:{},{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i,id:n.id||e.id};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){this.options.plugins=ao(e,this)}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};const Po=po;function vo(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function ko(e,t){const r=vo();return b.__FEDERATION__.__INSTANCES__.find(n=>!!(r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&t&&n.options.version===t))}function Lo(e){const t=new(ar()||Gt)({id:`${e.name}@${e.version||Date.now()}`,...e});return ir(t),t}let ce=null;function Mo(e){const t=ko(e.name,e.version),r={...e,id:e.id||""};return t?(t.initOptions(r),ce||(ce=t),t):(ce=Lo(r),ce)}cr(Gt);export{Po as h,Mo as i};
@@ -0,0 +1,25 @@
1
+ import"../reviewEditor.js";import{_ as x,a as A}from"./_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js";import"./vite-preload-helper-Dp1pzeXC.js";import"./index-2HOz3j7B.js";var g={exports:{}};const y=x||A,s=y.createElement,p=(t,e)=>(typeof navigator<"u"?String(navigator.language||"").toLowerCase():"de").startsWith("de")?t:e,d=t=>String(t||"").trim().toLocaleLowerCase("de"),S=t=>String(t||"").trim().toLocaleLowerCase("de").normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/ß/g,"ss").replace(/[^a-z0-9]+/g," ").trim();function f(t){let e=S(t).replace(/\s+/g,"");return(e.length>6&&e.endsWith("en")||e.length>6&&e.endsWith("n"))&&(e=e.slice(0,-1)),e}function m(t){const e=Array.isArray(t)?t:String(t||"").split(/[;,]/),r=new Set;return e.map(i=>String(i||"").trim()).filter(i=>{const l=d(i);return!l||r.has(l)?!1:(r.add(l),!0)})}function C(t){const e=[],r=new Set;for(const i of Array.isArray(t==null?void 0:t.markets)?t.markets:[]){if(!i||i.enabled===!1)continue;const l=String(i.name||"").trim(),o=d(l);!l||r.has(o)||(r.add(o),e.push(l))}return e.sort((i,l)=>i.localeCompare(l,"de",{sensitivity:"base"}))}function _(t){const e=new Set;return(Array.isArray(t==null?void 0:t.productGroups)?t.productGroups:[]).map(r=>String((r==null?void 0:r.name)||"").trim()).filter(r=>{const i=d(r);return!i||e.has(i)?!1:(e.add(i),!0)}).sort((r,i)=>r.localeCompare(i,"de",{sensitivity:"base"}))}function M(t){return[t==null?void 0:t.name,...String((t==null?void 0:t.aliases)||"").split(/[;,]/)].map(f).filter(Boolean)}function k(t,e){const r=f(e);return r?t.findIndex(i=>M(i).includes(r)):-1}function I(t,e){const r=[],i=new Set;for(const l of`${t||""},${e||""}`.split(/[;,]/)){const o=String(l||"").trim(),n=d(o);!o||i.has(n)||(i.add(n),r.push(o))}return r.join(",")}function h(t,e,r){const i=(Array.isArray(t==null?void 0:t.reviewItems)?t.reviewItems:[]).map((l,o)=>o===e?{...l,...r}:{...l});return{...t||{},reviewItems:i}}function v(t,e){const r=new Set(e),i=(Array.isArray(t==null?void 0:t.products)?t.products:[]).map(o=>({...o})),l=(Array.isArray(t==null?void 0:t.reviewItems)?t.reviewItems:[]).map(o=>({...o}));for(let o=0;o<l.length;o++){if(!r.has(o))continue;const n=l[o],c=String(n.product||"").trim();if(!c)continue;const u=k(i,c);if(u>=0){const a={...i[u]};n.category&&(a.category=String(n.category)),n.defaultMarket!==void 0&&(a.defaultMarket=String(n.defaultMarket||"")),n.availableMarkets!==void 0&&(a.availableMarkets=m(n.availableMarkets)),n.aliases&&(a.aliases=I(a.aliases,n.aliases)),i[u]=a}else i.push({name:c,aliases:String(n.aliases||""),category:String(n.category||n.guessedCategory||"Sonstiges"),defaultMarket:String(n.defaultMarket||""),availableMarkets:m(n.availableMarkets)});l[o]={...n,availableMarkets:m(n.availableMarkets),action:"accepted"}}return i.sort((o,n)=>String(o.name||"").localeCompare(String(n.name||""),"de",{sensitivity:"base"})),{...t||{},products:i,reviewItems:l}}const P=`
2
+ .shoppingroute-review-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 14px}
3
+ .shoppingroute-review-button{min-height:38px;padding:7px 16px;border:1px solid currentColor;border-radius:5px;background:transparent;color:inherit;cursor:pointer;font-weight:600}
4
+ .shoppingroute-review-button:disabled{opacity:.45;cursor:default}
5
+ .shoppingroute-review-list{display:flex;flex-direction:column;border:1px solid currentColor;border-radius:8px;overflow:hidden}
6
+ .shoppingroute-review-row{display:grid;grid-template-columns:minmax(190px,1.35fr) minmax(150px,1fr) minmax(125px,.8fr) minmax(155px,1fr) minmax(150px,1fr) minmax(130px,.8fr) 34px;gap:9px;align-items:center;padding:9px 10px;border-bottom:1px solid currentColor}
7
+ .shoppingroute-review-row:last-child{border-bottom:0}
8
+ .shoppingroute-review-row input,.shoppingroute-review-row select{width:100%;min-width:0;min-height:36px;box-sizing:border-box;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;padding:6px 8px}
9
+ .shoppingroute-review-row select[multiple]{min-height:58px}
10
+ .shoppingroute-review-product small{display:block;opacity:.65;margin-top:3px;word-break:break-word}
11
+ .shoppingroute-review-delete{width:32px;height:32px;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;cursor:pointer}
12
+ .shoppingroute-review-head{font-size:.78rem;font-weight:700;opacity:.68;padding-top:6px;padding-bottom:6px}
13
+ @media(max-width:900px){
14
+ .shoppingroute-review-head{display:none}
15
+ .shoppingroute-review-row{grid-template-columns:1fr 1fr;padding:12px}
16
+ .shoppingroute-review-product{grid-column:1/-1}
17
+ .shoppingroute-review-delete{justify-self:end}
18
+ }
19
+ @media(max-width:600px){
20
+ .shoppingroute-review-row{grid-template-columns:1fr}
21
+ .shoppingroute-review-product,.shoppingroute-review-delete{grid-column:auto}
22
+ .shoppingroute-review-delete{justify-self:start}
23
+ .shoppingroute-review-button{width:100%}
24
+ }
25
+ `;class R extends y.Component{change(e){this.props.onChange(e,!0)}update(e,r){this.change(h(this.props.data||{},e,r))}accept(e){const r=h(this.props.data||{},e,{action:"accept"});this.change(v(r,[e]))}acceptAll(){var i;const e=Array.isArray((i=this.props.data)==null?void 0:i.reviewItems)?this.props.data.reviewItems:[],r=e.map((l,o)=>o).filter(l=>{var o;return((o=e[l])==null?void 0:o.action)!=="accepted"});r.length&&this.change(v(this.props.data||{},r))}remove(e){const r=this.props.data||{},i=(Array.isArray(r.reviewItems)?r.reviewItems:[]).filter((l,o)=>o!==e).map(l=>({...l}));this.change({...r,reviewItems:i})}renderRow(e,r,i,l){const o=new Set(String(e.availableMarkets||"").split(/[;,]/).map(a=>d(a)).filter(Boolean)),n=e.action==="accepted",c=[s("option",{key:"pending",value:"pending"},p("Offen","Pending")),s("option",{key:"accept",value:"accept"},p("Übernehmen","Accept")),n?s("option",{key:"accepted",value:"accepted"},p("Übernommen","Accepted")):null,s("option",{key:"ignore",value:"ignore"},p("Ignorieren","Ignore"))].filter(Boolean),u=n?{opacity:.78}:void 0;return s("div",{key:`${e.key||e.product||"review"}-${r}`,className:"shoppingroute-review-row",style:u},[s("div",{key:"product",className:"shoppingroute-review-product"},[s("input",{key:"input",value:String(e.product||""),"aria-label":p("Artikel","Product"),onChange:a=>this.update(r,{product:a.target.value,action:n?"pending":e.action})}),s("small",{key:"source"},String(e.text||""))]),s("select",{key:"category",value:String(e.category||e.guessedCategory||""),"aria-label":p("Produktgruppe","Product group"),onChange:a=>this.update(r,{category:a.target.value,action:n?"pending":e.action})},[...new Set([String(e.category||e.guessedCategory||""),...i].filter(Boolean))].map(a=>s("option",{key:a,value:a},a))),s("select",{key:"defaultMarket",value:String(e.defaultMarket||""),"aria-label":p("Standardmarkt","Default market"),onChange:a=>this.update(r,{defaultMarket:a.target.value,action:n?"pending":e.action})},[s("option",{key:"__none__",value:""},"—"),...l.map(a=>s("option",{key:a,value:a},a))]),s("select",{key:"availableMarkets",multiple:!0,value:l.filter(a=>o.has(d(a))),"aria-label":p("Verfügbare Märkte","Available markets"),onChange:a=>{const w=[...a.target.selectedOptions].map(b=>b.value);this.update(r,{availableMarkets:w,action:n?"pending":e.action})}},l.map(a=>s("option",{key:a,value:a},a))),s("input",{key:"aliases",value:String(e.aliases||""),placeholder:p("Aliase","Aliases"),"aria-label":p("Aliase","Aliases"),onChange:a=>this.update(r,{aliases:a.target.value,action:n?"pending":e.action})}),s("select",{key:"action",value:String(e.action||"pending"),"aria-label":p("Aktion","Action"),onChange:a=>{a.target.value==="accept"?this.accept(r):this.update(r,{action:a.target.value})}},c),s("button",{key:"delete",type:"button",className:"shoppingroute-review-delete",title:p("Aus Prüfliste entfernen","Remove from review list"),onClick:()=>this.remove(r)},"×")])}render(){const e=this.props.data||{},r=Array.isArray(e.reviewItems)?e.reviewItems:[],i=_(e),l=C(e),o=r.filter(c=>(c==null?void 0:c.action)!=="accepted").length,n=[s("style",{key:"styles"},P)];return n.push(s("div",{key:"toolbar",className:"shoppingroute-review-toolbar"},[s("button",{key:"acceptAll",type:"button",className:"shoppingroute-review-button",disabled:o===0,onClick:()=>this.acceptAll()},o?p(`Alle übernehmen (${o})`,`Accept all (${o})`):p("Alles übernommen","All accepted")),s("span",{key:"hint",style:{opacity:.7}},p("„Übernehmen“ aktualisiert Artikelstamm und Status sofort; danach normal speichern.","“Accept” updates catalogue and status immediately; then save normally."))])),r.length?(n.push(s("div",{key:"list",className:"shoppingroute-review-list"},[s("div",{key:"head",className:"shoppingroute-review-row shoppingroute-review-head"},[s("div",{key:"product"},p("Artikel / Alexa-Text","Product / Alexa text")),s("div",{key:"group"},p("Produktgruppe","Product group")),s("div",{key:"default"},p("Standardmarkt","Default market")),s("div",{key:"available"},p("Verfügbare Märkte","Available markets")),s("div",{key:"aliases"},p("Aliase","Aliases")),s("div",{key:"action"},p("Status","Status")),s("div",{key:"delete"},"")]),...r.map((c,u)=>this.renderRow(c||{},u,i,l))])),s("div",{style:{width:"100%"}},n)):(n.push(s("div",{key:"empty",style:{opacity:.7,padding:"12px 0"}},p("Keine unbekannten Artikel vorhanden.","No unknown products."))),s("div",{style:{width:"100%"}},n))}}g.exports={Components:{ReviewEditor:R},ReviewEditorModel:{normalizeMarketSelection:m,updateReviewRow:h,acceptReviewRows:v,findProductIndex:k}};const N=(g.exports==null?{}:g.exports).default||g.exports,B=N.Components;export{B as default};
@@ -0,0 +1 @@
1
+ const c={},i=new Set,r=new Map;function m(t,n){let e=r.get(t);return e||(e=Promise.resolve().then(n).catch(o=>{throw r.delete(t),o}),r.set(t,e)),e}async function u(t){if(typeof document>"u")return;const n=c[t]||[];await Promise.all(n.map(e=>{const o=new URL(e,import.meta.url).href;return i.has(o)||(i.add(o),document.querySelector(`link[rel="stylesheet"][href="${o}"]`))?Promise.resolve():new Promise((a,l)=>{const s=document.createElement("link");s.rel="stylesheet",s.href=o,s.onload=()=>a(),s.onerror=()=>l(new Error(`[Module Federation] Failed to load CSS asset: ${o}`)),document.head.appendChild(s)})}))}const f={"./Components":async()=>{await u("./Components"),await Promise.all([]);const t=await m("./Components",()=>import("./review-editor-components-BI-kqJQu.js")),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then=="function"&&await n;const e={};return Object.assign(e,t),Object.defineProperty(e,"__esModule",{value:!0,enumerable:!1}),e}};export{f as default};
@@ -0,0 +1 @@
1
+ const y="modulepreload",w=function(f,a){return new URL(f,a).href},E={},g=function(a,u,d){let h=Promise.resolve();if(u&&u.length>0){let s=function(e){return Promise.all(e.map(r=>Promise.resolve(r).then(l=>({status:"fulfilled",value:l}),l=>({status:"rejected",reason:l}))))};const t=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),v=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));h=s(u.map(e=>{if(e=w(e,d),e in E)return;E[e]=!0;const r=e.endsWith(".css"),l=r?'[rel="stylesheet"]':"";if(!!d)for(let i=t.length-1;i>=0;i--){const c=t[i];if(c.href===e&&(!r||c.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${l}`))return;const n=document.createElement("link");if(n.rel=r?"stylesheet":y,r||(n.as="script"),n.crossOrigin="",n.href=e,v&&n.setAttribute("nonce",v),document.head.appendChild(n),r)return new Promise((i,c)=>{n.addEventListener("load",i),n.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${e}`)))})}))}function m(s){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=s,window.dispatchEvent(t),!t.defaultPrevented)throw s}return h.then(s=>{for(const t of s||[])t.status==="rejected"&&m(t.reason);return a().catch(m)})};export{g as _};
@@ -0,0 +1 @@
1
+ {"id":"ShoppingRouteReviewSet","name":"ShoppingRouteReviewSet","metaData":{"name":"ShoppingRouteReviewSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ShoppingRouteReviewSet"},"remoteEntry":{"name":"reviewEditor.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"reviewEditor.ssr.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ShoppingRouteReviewSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ShoppingRouteReviewSet:react","name":"react","version":"18.3.1","singleton":true,"requiredVersion":">=18","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ShoppingRouteReviewSet:Components","name":"Components","assets":{"js":{"async":[],"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js","assets/virtualExposes-g5zs8oe1.js","assets/review-editor-components-BI-kqJQu.js","reviewEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}]}
@@ -0,0 +1 @@
1
+ {"id":"ShoppingRouteReviewSet","name":"ShoppingRouteReviewSet","metaData":{"name":"ShoppingRouteReviewSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ShoppingRouteReviewSet"},"remoteEntry":{"name":"reviewEditor.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"reviewEditor.ssr.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ShoppingRouteReviewSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ShoppingRouteReviewSet:react","name":"react","version":"18.3.1","singleton":true,"requiredVersion":">=18","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ShoppingRouteReviewSet:Components","name":"Components","assets":{"js":{"async":[],"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js","assets/virtualExposes-g5zs8oe1.js","assets/review-editor-components-BI-kqJQu.js","reviewEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}],"buildOutput":[{"fileName":"reviewEditor.js","type":"chunk","isEntry":false,"size":18701},{"fileName":"assets/vite-preload-helper-Dp1pzeXC.js","type":"chunk","isEntry":false,"size":1266},{"fileName":"assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js","type":"chunk","isEntry":false,"size":11509},{"fileName":"assets/hostInit-BfEpvyuX.js","type":"chunk","isEntry":false,"size":2478},{"fileName":"assets/review-editor-components-BI-kqJQu.js","type":"chunk","isEntry":true,"size":9584},{"fileName":"assets/virtualExposes-g5zs8oe1.js","type":"chunk","isEntry":false,"size":1070},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js","type":"chunk","isEntry":false,"size":727},{"fileName":"assets/index-2HOz3j7B.js","type":"chunk","isEntry":false,"size":66321},{"fileName":"mf-manifest.json","type":"asset","isEntry":false,"size":1329}],"assetAnalysis":{"./src-admin/review-editor-components.mjs":{"js":{"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js","assets/virtualExposes-g5zs8oe1.js","assets/review-editor-components-BI-kqJQu.js","reviewEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js"],"async":[]},"css":{"sync":[],"async":[]}},"react":{"js":{"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__1__loadShare__react__loadShare__.js-DDD1Hp7v.js"],"async":[]},"css":{"sync":[],"async":[]}}}}
@@ -0,0 +1,13 @@
1
+ import{h as ct,i as lt}from"./assets/index-2HOz3j7B.js";const dt=ct.share;typeof __VUE_HMR_RUNTIME__>"u"&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});const Ne="__mf_init__virtual:mf:__mfe_internal__ShoppingRouteReviewSet__mf_owner__1__mf_v__runtimeInit__mf_v__.js__";let de=globalThis[Ne];if(!de){let s,f;const u=new Promise((h,C)=>{s=h,f=C});de=globalThis[Ne]={initPromise:u,initResolve:s,initReject:f}}const ut=de.initResolve,ne="__mf_module_cache__";globalThis[ne]||={share:{},remote:{}};globalThis[ne].share||={};globalThis[ne].remote||={};const d=globalThis[ne];for(const s of Object.keys(d.share))if(s.startsWith("default:")){const f=s.slice(8);d.share[f]===void 0&&(d.share[f]=d.share[s])}else if(!s.includes(":")){const f="default:"+s;d.share[f]===void 0&&(d.share[f]=d.share[s])}const Te={},mt=Array.isArray("default")?"default":["default"],Fe="default",D="ShoppingRouteReviewSet",ce=[["react"]];let ee,te,ue;async function _e(s){for(let f=0;;f++)try{return await s()}catch(u){throw u}}const Le=Symbol("mf.originalSharedProvider"),_t={emit:s=>s},ht=(s,f)=>{if(f!=="version-first")return s;const u={};for(const[h,C]of Object.entries(s))u[h]=Object.assign({},C,{[Le]:C});return u},le=(s,f)=>{if(!f)return;const u=Object.entries(s||{}),h=u.find(([,p])=>p===f);if(h)return{version:h[0],provider:f,registered:!0};if(typeof f.version=="string"&&f.version)return{version:f.version,provider:f,registered:!1};const C=u.filter(([,p])=>p===f||!!(f.from&&(p==null?void 0:p.from)===f.from));if(C.length===1)return{version:C[0][0],provider:f,registered:!1}},me=(s,f,u,h)=>{var E;if(!s||!u)return;const C=Array.isArray(u.scope)?u.scope:[u.scope||"default"],p=ht(s,h),x={};for(const N of C)x[N||"default"]={[f]:p};const P=(E=dt.getRegisteredShare(x,f,{...u,scope:C,strategy:h},_t))==null?void 0:E.shared;return(P==null?void 0:P[Le])||P},U=(s,f,u,h)=>{var P;const C=E=>z(E,u),p=Object.fromEntries(Object.entries(s||{}).filter(([,E])=>{var N;return!C(E)&&((N=E==null?void 0:E.shareConfig)==null?void 0:N.import)!==!1}));u!=null&&u.version&&((P=u.shareConfig)==null?void 0:P.import)!==!1&&(p[u.version]||(p[u.version]=u));const x=me(p,f,u,h);return C(x)?void 0:x},z=(s,f)=>s===f||!!(f!=null&&f.from&&(s==null?void 0:s.from)===f.from),gt=(s,f,u,h,C,p,x,P,E)=>{var B,J,W;if(!P)return;const N=(J=(B=f==null?void 0:f.options)==null?void 0:B.shared)==null?void 0:J[C],K=Array.isArray(N)?N.find(L=>(L==null?void 0:L.version)===p):void 0,V=((P==null?void 0:P.from)===((W=f==null?void 0:f.options)==null?void 0:W.name)?P:void 0)||(z(K,P)?K:f?void 0:P);return V&&s.some(L=>{var q,M;return L!==f&&((q=L==null?void 0:L.options)==null?void 0:q.name)===(x==null?void 0:x.from)&&((M=L==null?void 0:L.shareScopeMap)==null?void 0:M[h])===u})?V:void 0},bt=(s,f,u,h,C,p,x,P,E)=>{const N=p.registered?gt(s,f,u,h,C,p.version,p.provider,P):void 0,K=N||x;if(K&&!(p.registered&&!z(K,P)))return{provider:K,scopeRootProvider:N}};async function yt(){return ee||(ee=_e(()=>import("./assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js")).catch(s=>{throw ee=void 0,s})),ee}async function St(){return te||(te=_e(()=>import("./assets/virtualExposes-g5zs8oe1.js")).then(s=>s.default??s).catch(s=>{throw te=void 0,s})),te}async function Pt(s={},f=[]){var we,je,Re,Ce,Ee;const u=(t,e,n,r)=>{const o=(Array.isArray(r)?r[0]:r)||"default",c=e||!n?t:t+"@"+n,a={canonical:o+":"+c};return o==="default"&&(a.aliases=[c]),a},h=(t,e)=>{const n=t[e.canonical];if(n!==void 0)return n;const r=e.aliases||[];for(const i of r){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const o=t[i];if(o!==void 0)return t[e.canonical]=o,o}},C=Symbol.for("module-federation.shared-cache-listeners"),p=Symbol.for("module-federation.shared-cache-owners"),x=t=>{let e=t[p];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,p,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},P=(t,e)=>{var n;return(n=t[p])==null?void 0:n[e.canonical]},E=(t,e,n,r)=>{var a;t[e.canonical]=n;const i=e.aliases||[];for(const l of i)Object.defineProperty(t,l,{value:n,enumerable:!0,configurable:!0,writable:!0});const o=t[p];r===void 0?o&&delete o[e.canonical]:x(t)[e.canonical]=r;const c=(a=t[C])==null?void 0:a[e.canonical];if(c)for(const l of c)l(n);return n},N=Symbol.for("module-federation.tree-shaking-shared-cache"),K=t=>{let e=t[N];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,N,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},he=(t,e,n,r)=>{if(!Array.isArray(n))return r;const i=[...new Set(n)].sort(),o=K(t),c=o[e.canonical]||=[],a=c.find(l=>l.providedExports.length===i.length&&l.providedExports.every((y,m)=>y===i[m]));return a?a.value=r:c.push({providedExports:i,value:r}),r},V=Symbol.for("module-federation.tree-shaking-shared-selection-cache"),ge=t=>{let e=t[V];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,V,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},B=(t,e,n)=>{var i,o;const r=h(t,e);return r!==void 0?r:(o=(i=t[V])==null?void 0:i[e.canonical])==null?void 0:o[n]},J=(t,e,n,r)=>{const i=ge(t),o=i[e.canonical]||=Object.create(null);return o[n]=r,r},W=((we=globalThis.__FEDERATION__)==null?void 0:we.__INSTANCES__)||[],L=(je=f.find(t=>t==null?void 0:t.from))==null?void 0:je.from,q=W.find(t=>{var e,n;return((e=t==null?void 0:t.options)==null?void 0:e.name)===L&&((n=t==null?void 0:t.shareScopeMap)==null?void 0:n.default)===s})||W.find(t=>{var e,n;return((e=t==null?void 0:t.options)==null?void 0:e.name)!==D&&((n=t==null?void 0:t.shareScopeMap)==null?void 0:n.default)===s}),M=Object.create(null),Ae=t=>{const e=Object.create(null);for(const[n,r]of Object.entries(t||{}))e[n]=Object.assign(Object.create(null),r);return e},De=(t,e)=>{const n=!q&&Object.values(e||{}).some(i=>Object.values(i||{}).some(Q)),r=n?Ae(e):e;return M[t]={host:e,runtime:r,isWebpackScope:n},r},ze=()=>{const t=Object.values(M).filter(({isWebpackScope:e})=>e);if(t.length!==0)for(const{host:e,runtime:n}of t)for(const[r,i]of Object.entries(e||{})){const o=n[r]||=Object.create(null);for(const[c,a]of Object.entries(i||{}))o[c]=a}},k=Object.create(null);for(const[t,e]of Object.entries(s)){const n=k[t]=Object.create(null);for(const[r,i]of Object.entries(e))n[r]=Object.assign({},i)}const{usedShared:I,usedRemotes:ke}=await yt();function Q(t){if(typeof(t==null?void 0:t.get)!="function")return!1;const e=Function.prototype.toString.call(t.get);return e.includes("__webpack_require__")||/\.\s*e\s*\([^)]*\)\s*\.then\s*\(/.test(e)}const Ke=Object.values(k).some(t=>Object.values(t||{}).some(Q)),Be=t=>{const e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]},re=(t,e,n)=>{if(typeof U!="function")return;const r=Be(t),i=r===t?[[t,e]]:[[t,e],[r,I[r]]];for(const[o,c]of i){if(!c)continue;const a=n?o===t?n:k[o]:s[o],l=U(a,o,c,"version-first");if(l&&Q(l)&&!l.lib&&!l.loaded)return l}};var X=Te[Fe];if(X||(X=Te[Fe]={from:D}),f.indexOf(X)>=0)return;f.push(X);const be=t=>{let e=t;for(let n=0;n<5;n++){const r=e==null?void 0:e.default;if(!r||typeof r!="object"||Object.keys(r).length===0)break;const i=Object.keys(e).filter(o=>o!=="default").map(o=>e[o]);if(i.length>0&&i.some(o=>o!==void 0))break;e=r}return e},Ge=[],Ve=typeof globalThis.window>"u"?await Promise.all([]):[],oe="__mf_vite_runtime_share_load_id__";let We=0;const ie=new Map,se=new Map,H=lt({name:D,remotes:ke,shared:I,plugins:[He(),Ue(),...Ge,...Ve],shareStrategy:"version-first"});H.initShareScopeMap("default",De("default",s));function He(){return{name:"vite-share-pin-lifecycle-plugin",resolveShare(t){var i;const e=(i=t.shareInfo)==null?void 0:i[oe],n=e===void 0?void 0:se.get(e);if(!n)return t;const r=t.resolver;return t.resolver=(...o)=>(n.pinned.reapply(),r(...o)),n.pinned.reveal(),t}}}function Ue(){return{name:"vite-real-name-snapshot-plugin",afterLoadSnapshot(t){const e=t&&t.remoteSnapshot,n=e&&e.globalName,r=e&&e.version;if(!n||!r||!e.remoteEntry)return t;const i=globalThis.__FEDERATION__&&globalThis.__FEDERATION__.moduleInfo,o=n+":"+r;return i&&!i[o]&&(i[o]=e),t}}}const qe=H.sharedHandler.hooks.lifecycle.resolveShare,Y=new WeakMap;qe.on(t=>{var i;const e=(i=t.shareInfo)==null?void 0:i[oe],n=t.resolver;if(typeof n!="function")return t;const r=(...o)=>{const c=n(...o),a=c==null?void 0:c.shared;return a&&(typeof a=="object"||typeof a=="function")&&!Y.has(a)&&Y.set(a,{from:a.from}),e!==void 0&&a&&ie.set(e,a),c};return t.resolver=r,t});const Me=(t,e,n,r)=>{if(!t||t[e]!==n)return;const i=Object.assign({},r,{version:r.version??e,scope:r.scope??(n==null?void 0:n.scope)??["default"],strategy:"loaded-first"}),o=r.from;t[e]=i;const c=()=>n===void 0?t[e]===void 0:t[e]===n;return{provider:i,reveal(){return t[e]!==i?!1:(n===void 0?delete t[e]:t[e]=n,!0)},reapply(){return c()?(t[e]=i,!0):!1},release(a,l=!0){return r.from=o,t[e]!==i?!l&&c():l?a?(i.from=o,a&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete t[e]:t[e]=n,!1):(n===void 0?delete t[e]:t[e]=n,!0)}}},Je=t=>Object.entries(t||{}).map(([e,n])=>({provider:n,version:e,from:n.from,registered:!0})),Qe=(t,e)=>{if(e===void 0)return;let n;for(const r of t){const i=r.provider,o=i.treeShaking||i;if(!(r.loadedFactory!==e&&i.lib!==e&&o.lib!==e)){if(n)return;n=r}}return n},Xe=async(t,e,n)=>{const r=++We;se.set(r,{pinned:n});try{const i=await H.loadShare(t,{customShareInfo:{shareConfig:e,[oe]:r}});return{factory:i===!1?void 0:i,selectedProvider:ie.get(r)}}finally{ie.delete(r),se.delete(r)}},ye=async(t,e,n,r,i,o,c=!0)=>{const a=o.from,l=Me(n,r,i,o);if(!l)return;let y;try{y=await Xe(t,e,l)}catch(j){throw l.release(!1),j}const m=y==null?void 0:y.factory;if(m===void 0){l.release(!1);return}const _=Je(n),g=l.provider.treeShaking||l.provider,R=l.provider.lib===m||g.lib===m;if(!c&&R){const j=_.findIndex(v=>v.provider===l.provider);j!==-1&&_.splice(j,1)}!c&&!_.some(j=>j.provider===o)&&_.push({provider:o,version:r,from:a,registered:!1,loadedFactory:R?m:void 0});const O=!c&&y.selectedProvider===l.provider&&R?o:y.selectedProvider;if(O&&!_.some(j=>j.provider===O)){const j=Y.get(O),v=typeof O.version=="string"&&O.version?O.version:r;_.push({provider:O,version:v,from:j?j.from:O.from,registered:(n==null?void 0:n[v])===O,loadedFactory:m})}const b=_.find(j=>j.provider===O)??Qe(_,m);if(!l.release(!0,(b==null?void 0:b.provider)===l.provider)||!b)return;const S=Y.get(b.provider);b.from=b.provider===o?a:S?S.from:b.provider.from,S&&(b.provider.from=S.from);const A=typeof m=="function"?m():m,w=await Promise.resolve(A);if(!(b.registered&&(n==null?void 0:n[b.version])!==b.provider))return{provider:b.provider,selection:b,resolved:w}},fe=new Set,ae=new Map,Ye=async(t,e,n)=>{var i;const r=!!((i=e.shareConfig)!=null&&i.singleton);if(!r&&e.canLiveRebind!==!1)try{const o=U(n,t,e,"version-first"),c=le(n,o);if(!c)return;const{version:a}=c;if(!r&&a!==e.version||!o.lib&&!o.loading&&!(o.loaded&&typeof o.get=="function"))return;const l=u(t,r,e.version,e.scope);if(h(d.share,l)!==void 0)return;const y=s[t],m=y==null?void 0:y[a];if(c.registered&&!z(m,o))return;let _,g=o.lib;if(!g&&Q(o)||(!g&&o.loading&&(g=await o.loading),!g&&o.loaded&&typeof o.get=="function"&&(g=await o.get()),!g))return;const R=typeof g=="function"?g():g,O=await Promise.resolve(R),b=c.registered?m:o;_={provider:b,selection:{provider:b,version:a,from:o.from,registered:c.registered},resolved:O};const T=_==null?void 0:_.provider,S=_==null?void 0:_.selection;if(!S)return;const A=_==null?void 0:_.resolved;if(A===void 0||h(d.share,l)!==void 0||S.registered&&(y==null?void 0:y[S.version])!==T)return;E(d.share,l,be(A),S.from),fe.add(T)}catch(o){console.error('[Module Federation] Failed to bridge materialized shared module "'+t+'"',o)}},Se=async(t,e,n,r,i)=>{var o,c;try{const a=u(t,(o=e.shareConfig)==null?void 0:o.singleton,e.version,e.scope),l=h(d.share,a),y=P(d.share,a),m=U(n,t,e,"version-first"),_=m||me(n,t,e,"version-first")||e,g=le(n,_);if(!g)return;const R=z(_,e),{version:O}=g;if(!((c=e.shareConfig)!=null&&c.singleton)&&O!==e.version)return;const b=r==null?void 0:r[O],T=bt(W,q,s,"default",t,g,m,b,"version-first");if(!T&&!R)return;const{provider:S,scopeRootProvider:A}=T||{provider:_,scopeRootProvider:void 0};if(e.canLiveRebind===!1||l!==void 0&&y!==D)return;const w=s[t],j=w==null?void 0:w[O];if(g.registered&&!A&&!z(j,S))return;const v=await ye(t,e.shareConfig,w,O,j,S,g.registered&&!R),G=v==null?void 0:v.provider,F=v==null?void 0:v.selection;if(!F||z(G,e)||i&&(i.version!==F.version||!z({from:F.from},i.provider))||fe.has(G))return;const Ie=v==null?void 0:v.resolved;if(Ie===void 0)return;const st=h(d.share,a),ft=P(d.share,a);if(st!==void 0&&ft!==D||F.registered&&(w==null?void 0:w[F.version])!==G)return;i||ae.set(t,{version:F.version,provider:{from:F.from}}),fe.add(G);const at=be(Ie);E(d.share,a,at,F.from)}catch(a){console.error('[Module Federation] Failed to bridge external shared module "'+t+'"',a)}};for(const t of ce)await Promise.all(t.map(async e=>{const n=I[e];!n||n.materialize===!1||n.treeShaking||await Ye(e,n,k[e])}));for(const[t,e]of Object.entries(I)){if(e.treeShaking)continue;const n=u(t,(Re=e.shareConfig)==null?void 0:Re.singleton,e.version,e.scope);if(h(d.share,n)!==void 0)continue;const r=u(t,!0,e.version,e.scope),i=h(d.share,r);i!==void 0&&E(d.share,n,i,P(d.share,r))}const Ze=["react"],$e=[["react"]],Z=Ze.filter(t=>{var e;return I[t]&&(I[t].materialize!==!1||((e=I[t].shareConfig)==null?void 0:e.import)===!1)});d.providerInit||=new Map;const et=(t,e)=>{const n=d.providerInit.get(t);if(n)return n;const r=Promise.resolve().then(e);return d.providerInit.set(t,r),r.catch(()=>d.providerInit.delete(t)),r};var ve=async t=>{const e=new Set(t);for(const n of $e)await Promise.all(n.filter(r=>e.has(r)).map(async r=>{var O,b;const i=I[r],o=u(r,(O=i.shareConfig)==null?void 0:O.singleton,i.version,i.scope);if(((b=i.shareConfig)==null?void 0:b.import)===!1||i.treeShaking||h(d.share,o)!==void 0)return;const c=u(r,!0,i.version,i.scope),a=h(d.share,c);if(a!==void 0){E(d.share,o,a,P(d.share,c));return}const l=typeof re=="function"?re(r,i):void 0;if(l&&!l.lib&&!l.loaded)return;const y=o.canonical,m=await et(y,async()=>{const T=await i.get(),S=typeof T=="function"?T():T;return Promise.resolve(S)}),g=(T=>{let S=T;for(let A=0;A<5;A++){const w=S==null?void 0:S.default;if(!w||typeof w!="object"||Object.keys(w).length===0)break;const j=Object.keys(S).filter(v=>v!=="default").map(v=>S[v]);if(j.length>0&&j.some(v=>v!==void 0))break;S=w}return S})(m),R=g===m?{...m}:g;R.__esModule!==!0&&Object.defineProperty(R,"__esModule",{value:!0,enumerable:!1}),E(d.share,o,R,D)}))};const pe=t=>{var r,i;const e=I[t];if(!e.treeShaking&&((r=e.shareConfig)==null?void 0:r.import)!==!1)return!1;const n=u(t,(i=e.shareConfig)==null?void 0:i.singleton,e.version,e.scope);return e.treeShaking?B(d.share,n,D)===void 0&&h(d.share,n)===void 0:h(d.share,n)===void 0},tt=t=>{var i,o;const e=I[t],n=u(t,(i=e.shareConfig)==null?void 0:i.singleton,e.version,e.scope);return(e.treeShaking?B(d.share,n,D)??h(d.share,n):h(d.share,n))!==void 0?!1:e.treeShaking||((o=e.shareConfig)==null?void 0:o.import)===!1?!0:typeof U!="function"?!1:!!U(k[t],t,e,"version-first")},$=Z.findIndex(tt),nt=$===-1?Z:Z.slice(0,$);var rt=$===-1?[]:Z.slice($);await ve(nt);try{await _e(async()=>{await Promise.all(await H.initializeSharing("default",{strategy:"version-first",from:"build",initScope:f}))})}catch(t){console.error("[Module Federation]",t)}ze();const Pe=async()=>{for(const t of ce)await Promise.all(t.map(async e=>{const n=I[e];!n||n.materialize===!1||n.treeShaking||await Se(e,n,s[e],k[e],void 0)}))};await Pe(),Ke&&(ue=Pe);try{const t=(Ce=globalThis.__FEDERATION__)==null?void 0:Ce.__SHARE__,e=Object.create(null);if(t)for(const[,n]of Object.entries(t))for(const r of mt){const i=n==null?void 0:n[r];if(i)for(const[o,c]of Object.entries(i)){const a=I==null?void 0:I[o],l=k[o],y=ae.get(o);if(!a||!l||!y||a.treeShaking)continue;const m=e[o]||(e[o]=Object.create(null));for(const[_,g]of Object.entries(c)){if(!g.lib||y.version!==_||!z(g,y.provider))continue;const R=l[_];(g===R||R!=null&&R.from&&g.from===R.from)&&(g===a||a.from&&g.from===a.from||m[_]===void 0&&(m[_]=g))}}}for(const n of ce)await Promise.all(n.map(async r=>{const i=e[r];i&&await Se(r,I[r],i,k[r],ae.get(r))}))}catch(t){console.error("[Module Federation] Failed to bridge external shared modules",t)}const ot=async()=>{},it=async(t,e)=>{var T,S;const n=u(t,(T=e.shareConfig)==null?void 0:T.singleton,e.version,e.scope),r=e.treeShaking?B(d.share,n,D):h(d.share,n);if(((S=e.shareConfig)==null?void 0:S.import)!==!1||r!==void 0||re(t,e,k[t]))return;const i=A=>{let w=A;for(let j=0;j<5;j++){const v=w==null?void 0:w.default;if(!v||typeof v!="object"||Object.keys(v).length===0)break;const G=Object.keys(w).filter(F=>F!=="default").map(F=>w[F]);if(G.length>0&&G.some(F=>F!==void 0))break;w=v}return w},o=s==null?void 0:s[t],c=me(o,t,e,"version-first")||e,a=le(o,c);if(!a)return;const{version:l}=a,y=o==null?void 0:o[l],m=await ye(t,e.shareConfig,o,l,y,c,a.registered&&!z(c,e)),_=m==null?void 0:m.selection,g=m==null?void 0:m.provider,R=m==null?void 0:m.resolved;if(!_||z(g,e)||R===void 0||(e.treeShaking?B(d.share,n,D):h(d.share,n))!==void 0||_.registered&&(o==null?void 0:o[_.version])!==g)return;const b=i(R);if(e.treeShaking){const A=e.treeShaking.providedExports??e.treeShaking.usedExports??[];he(d.share,n,A,b),J(d.share,n,D,b)}else E(d.share,n,b,_.from)},Oe=[];for(const t of rt){const e=I[t];if(pe(t))try{e.treeShaking?await ot(t,e):((Ee=e.shareConfig)==null?void 0:Ee.import)===!1&&await it(t,e)}catch(n){console.error(`[Module Federation] Failed to resolve runtime-only shared module "${t}"`,n);break}if(pe(t))break;Oe.push(t)}return await ve(Oe),ut(H),H}async function Ot(s){const f=await St();if(!(s in f))throw new Error(`[Module Federation] Module ${s} does not exist in container.`);return ue&&await ue(),d.pendingShareLoads&&await Promise.all(d.pendingShareLoads),f[s]().then(u=>()=>u)}export{Ot as get,Pt as init};
2
+
3
+ if (typeof document !== 'undefined' && document.head) {
4
+ try {
5
+ for (const __mfWarmupPath of ["assets/virtualExposes-g5zs8oe1.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DXSRuGUo.js","assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js"]) {
6
+ const __mfWarmupLink = document.createElement('link');
7
+ __mfWarmupLink.rel = 'modulepreload';
8
+ __mfWarmupLink.crossOrigin = '';
9
+ __mfWarmupLink.href = new URL(__mfWarmupPath, import.meta.url).href;
10
+ document.head.appendChild(__mfWarmupLink);
11
+ }
12
+ } catch (__mfWarmupError) {}
13
+ }
@@ -0,0 +1,27 @@
1
+ import"../shoppingListEditor.js";import{_ as k,a as v}from"./_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js";import"./vite-preload-helper-Dp1pzeXC.js";import"./index-2HOz3j7B.js";var c={exports:{}};const b=k||v,r=b.createElement,p=(n,t)=>(typeof navigator<"u"?String(navigator.language||"").toLowerCase():"de").startsWith("de")?n:t,m=n=>String(n||"").trim().toLocaleLowerCase("de");function g(n){let t=String(n||"").trim();for(let e=0;e<16;e++){const o=t.match(/^(?:\d{2}>|\[\d{2}\])\s+(.+)$/s);if(!(o!=null&&o[1]))break;t=String(o[1]).trim()}return t}function f(n,t){const e=g(n),o=[/^═{5}\s+(.+?)\s+═{5}$/,/^\*\*\*\*\s+(.+?)\s+\*\*\*\*$/,/^[—–-]{1,5}\s+(.+?)\s+[—–-]{1,5}$/];let a="";for(const s of o){const l=e.match(s);if(l!=null&&l[1]){a=String(l[1]).trim();break}}return a?(Array.isArray(t)?t:[]).find(s=>m(s)===m(a))||a:""}function x(n){const t=Array.isArray(n==null?void 0:n.markets)?n.markets:[];return(Array.isArray(n==null?void 0:n.items)?n.items:[]).filter(e=>(e==null?void 0:e.id)&&!f(e.text,t)).map(e=>({...e,text:g(e.text)}))}const w=`
2
+ .shoppingroute-list-toolbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-bottom:14px}
3
+ .shoppingroute-list-toolbar select,.shoppingroute-list-toolbar button{min-height:36px;box-sizing:border-box}
4
+ .shoppingroute-list-toolbar select{min-width:150px;padding:5px 8px}
5
+ .shoppingroute-market-grid{display:flex;flex-direction:column;gap:0}
6
+ .shoppingroute-market-column{min-width:0;border:1px solid currentColor;border-radius:8px;overflow:hidden}
7
+ .shoppingroute-market-title{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:9px 11px;font-weight:700;border-bottom:1px solid currentColor}
8
+ .shoppingroute-market-count{font-size:.82rem;opacity:.65;font-weight:500}
9
+ .shoppingroute-item-list{display:flex;flex-direction:column}
10
+ .shoppingroute-item-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:8px;align-items:center;padding:7px 9px;border-bottom:1px solid currentColor}
11
+ .shoppingroute-item-row:last-child{border-bottom:0}
12
+ .shoppingroute-drag-handle{font-size:16px;opacity:.5;cursor:grab;user-select:none;text-align:center}
13
+ .shoppingroute-item-name{font-weight:600;word-break:break-word}
14
+ .shoppingroute-item-meta{font-size:.78rem;opacity:.62;margin-top:2px}
15
+ .shoppingroute-item-actions{display:flex;gap:4px;align-items:center;justify-content:flex-end}
16
+ .shoppingroute-list-button{min-width:30px;min-height:30px;padding:4px 8px;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;cursor:pointer}
17
+ .shoppingroute-list-button:disabled{cursor:default;opacity:.35}
18
+ .shoppingroute-item-actions select{min-width:92px;max-width:125px;min-height:30px;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;padding:3px 5px}
19
+ .shoppingroute-empty{opacity:.58;padding:18px 11px;text-align:center}
20
+ @media (max-width: 600px) {
21
+ .shoppingroute-list-toolbar>*{width:100%;max-width:none}
22
+ .shoppingroute-item-row{grid-template-columns:18px minmax(0,1fr)}
23
+ .shoppingroute-item-actions{grid-column:2;justify-content:flex-start;flex-wrap:wrap;margin-top:3px}
24
+ .shoppingroute-item-actions select{flex:1 1 120px;max-width:none}
25
+ .shoppingroute-drag-handle{cursor:default}
26
+ }
27
+ `;class y extends b.Component{constructor(t){super(t),this.state={view:null,loading:!0,busy:"",error:""}}componentDidMount(){this.load()}instanceName(){const t=String(this.props.adapterName||"shoppingroute"),e=Number.isFinite(Number(this.props.instance))?Number(this.props.instance):0;return`${t}.${e}`}async send(t,e){var o;if(!((o=this.props.socket)!=null&&o.sendTo))throw new Error("Admin socket is unavailable.");return this.props.socket.sendTo(this.instanceName(),t,e||{})}async load(t){this.setState({loading:!0,error:""});try{const e=await this.send("getShoppingList",{listName:t});if(!e||e.error)throw new Error((e==null?void 0:e.error)||"Shopping list could not be loaded.");this.setState({view:e,loading:!1,busy:""})}catch(e){this.setState({loading:!1,busy:"",error:e instanceof Error?e.message:String(e)})}}async move(t,e,o){const a=this.state.view;if(!(!a||this.state.busy)){this.setState({busy:t,error:""});try{const s=await this.send("moveShoppingItem",{listName:a.listName,itemId:t,targetMarket:e,targetPosition:o});if(s!=null&&s.view&&this.setState({view:s.view}),!(s!=null&&s.ok))throw new Error((s==null?void 0:s.error)||"The item could not be moved.");this.setState({busy:""})}catch(s){this.setState({busy:"",error:s instanceof Error?s.message:String(s)}),await this.load(a.listName)}}}async clearManual(){const t=this.state.view;if(!(!t||this.state.busy)){this.setState({busy:"__clear__",error:""});try{const e=await this.send("clearManualShoppingOrder",{listName:t.listName});if(e!=null&&e.view&&this.setState({view:e.view}),!(e!=null&&e.ok))throw new Error((e==null?void 0:e.error)||"Manual order could not be cleared.");this.setState({busy:""})}catch(e){this.setState({busy:"",error:e instanceof Error?e.message:String(e)}),await this.load(t.listName)}}}onDragStart(t,e){t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e)}onDrop(t,e,o){t.preventDefault();const a=t.dataTransfer.getData("text/plain");a&&this.move(a,e,o)}renderRow(t,e,o,a,s){const l=!!this.state.busy;return r("div",{key:t.id,className:"shoppingroute-item-row",draggable:!l,onDragStart:i=>this.onDragStart(i,t.id),onDragOver:i=>i.preventDefault(),onDrop:i=>this.onDrop(i,t.market,o)},[r("div",{key:"drag",className:"shoppingroute-drag-handle",title:p("Ziehen","Drag"),"aria-hidden":!0},"⋮⋮"),r("div",{key:"main"},[r("div",{key:"name",className:"shoppingroute-item-name"},g(t.text)),t.category||t.manual?r("div",{key:"meta",className:"shoppingroute-item-meta"},[t.category||p("Ohne Produktgruppe","No product group"),t.manual?` · ${p("manuell","manual")}`:""]):null]),r("div",{key:"actions",className:"shoppingroute-item-actions"},[r("button",{key:"up",type:"button",className:"shoppingroute-list-button",disabled:l||o===0,title:p("Nach oben","Move up"),onClick:()=>void this.move(t.id,t.market,o-1)},"↑"),r("button",{key:"down",type:"button",className:"shoppingroute-list-button",disabled:l||o===e.length-1,title:p("Nach unten","Move down"),onClick:()=>void this.move(t.id,t.market,o+1)},"↓"),r("select",{key:"market",value:t.market,disabled:l,title:p("Markt wechseln","Change market"),"aria-label":p("In einen anderen Markt verschieben","Move to another market"),onChange:i=>{const d=i.target.value,u=s.filter(h=>h.market===d&&h.id!==t.id).length;this.move(t.id,d,u)}},a.markets.map(i=>r("option",{key:i,value:i},i)))])])}render(){const t=this.state.view,e=!!this.state.busy,o=[r("style",{key:"styles"},w)];if(o.push(r("div",{key:"intro",style:{marginBottom:"12px",lineHeight:1.4}},[r("strong",{key:"title"},p("Aktuelle Einkaufsliste","Current shopping list")),r("div",{key:"hint",style:{opacity:.7,marginTop:"3px"}},p("Ziehen verschiebt Artikel direkt. Pfeile und Marktauswahl sind die einfache Alternative für Maus und Handy.","Drag items directly. Arrows and the market selector are the simple alternative for mouse and phone."))])),this.state.error&&o.push(r("div",{key:"error",style:{padding:"9px",border:"1px solid currentColor",borderRadius:"6px",marginBottom:"10px"}},this.state.error)),this.state.loading||!t)return o.push(r("div",{key:"loading"},p("Liste wird geladen …","Loading list …"))),r("div",{style:{width:"100%"}},o);const a=x(t);o.push(r("div",{key:"toolbar",className:"shoppingroute-list-toolbar"},[r("select",{key:"list",value:t.listName,disabled:e,onChange:i=>void this.load(i.target.value),"aria-label":p("Einkaufsliste auswählen","Select shopping list")},t.lists.map(i=>r("option",{key:i,value:i},i))),r("button",{key:"refresh",type:"button",className:"shoppingroute-list-button",disabled:e,onClick:()=>void this.load(t.listName)},p("Aktualisieren","Refresh")),r("button",{key:"clear",type:"button",className:"shoppingroute-list-button",disabled:e,onClick:()=>void this.clearManual()},p("Manuelle Reihenfolge zurücksetzen","Reset manual order")),t.dryRun?r("strong",{key:"dry",style:{marginLeft:"auto"}},p("Dry Run aktiv – Verschieben gesperrt","Dry Run active – moving is disabled")):null]));const s=t.markets.filter(i=>a.some(d=>d.market===i));if(!s.length)return o.push(r("div",{key:"empty-list",style:{opacity:.7,padding:"16px 0"}},p("Die Einkaufsliste ist leer.","The shopping list is empty."))),r("div",{style:{width:"100%"}},o);const l=s.map(i=>{const d=a.filter(u=>u.market===i);return r("section",{key:i,className:"shoppingroute-market-column",onDragOver:u=>u.preventDefault(),onDrop:u=>this.onDrop(u,i,d.length)},[r("div",{key:"title",className:"shoppingroute-market-title"},[r("span",{key:"name"},i),r("span",{key:"count",className:"shoppingroute-market-count"},String(d.length))]),d.length?r("div",{key:"items",className:"shoppingroute-item-list"},d.map((u,h)=>this.renderRow(u,d,h,t,a))):r("div",{key:"empty",className:"shoppingroute-empty"},p("Hierher ziehen","Drop here"))])});return o.push(r("div",{key:"grid",className:"shoppingroute-market-grid"},l)),r("div",{style:{width:"100%"}},o)}}c.exports={Components:{ShoppingListEditor:y},ShoppingListEditorModel:{stripVisiblePrefix:g,headerMarket:f,visibleItems:x},ShoppingListEditor:y};const S=(c.exports==null?{}:c.exports).default||c.exports,M=S.Components;export{M as default};
@@ -1 +1 @@
1
- const c={},i=new Set,r=new Map;function m(t,n){let e=r.get(t);return e||(e=Promise.resolve().then(n).catch(o=>{throw r.delete(t),o}),r.set(t,e)),e}async function u(t){if(typeof document>"u")return;const n=c[t]||[];await Promise.all(n.map(e=>{const o=new URL(e,import.meta.url).href;return i.has(o)||(i.add(o),document.querySelector(`link[rel="stylesheet"][href="${o}"]`))?Promise.resolve():new Promise((a,l)=>{const s=document.createElement("link");s.rel="stylesheet",s.href=o,s.onload=()=>a(),s.onerror=()=>l(new Error(`[Module Federation] Failed to load CSS asset: ${o}`)),document.head.appendChild(s)})}))}const f={"./Components":async()=>{await u("./Components"),await Promise.all([]);const t=await m("./Components",()=>import("./shopping-list-editor-components-2ZxXB6jP.js")),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then=="function"&&await n;const e={};return Object.assign(e,t),Object.defineProperty(e,"__esModule",{value:!0,enumerable:!1}),e}};export{f as default};
1
+ const c={},i=new Set,r=new Map;function m(t,n){let e=r.get(t);return e||(e=Promise.resolve().then(n).catch(o=>{throw r.delete(t),o}),r.set(t,e)),e}async function u(t){if(typeof document>"u")return;const n=c[t]||[];await Promise.all(n.map(e=>{const o=new URL(e,import.meta.url).href;return i.has(o)||(i.add(o),document.querySelector(`link[rel="stylesheet"][href="${o}"]`))?Promise.resolve():new Promise((a,l)=>{const s=document.createElement("link");s.rel="stylesheet",s.href=o,s.onload=()=>a(),s.onerror=()=>l(new Error(`[Module Federation] Failed to load CSS asset: ${o}`)),document.head.appendChild(s)})}))}const f={"./Components":async()=>{await u("./Components"),await Promise.all([]);const t=await m("./Components",()=>import("./shopping-list-editor-components-MoJ1XKOp.js")),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then=="function"&&await n;const e={};return Object.assign(e,t),Object.defineProperty(e,"__esModule",{value:!0,enumerable:!1}),e}};export{f as default};
@@ -1 +1 @@
1
- {"id":"ShoppingRouteShoppingListSet","name":"ShoppingRouteShoppingListSet","metaData":{"name":"ShoppingRouteShoppingListSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ShoppingRouteShoppingListSet"},"remoteEntry":{"name":"shoppingListEditor.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"shoppingListEditor.ssr.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ShoppingRouteShoppingListSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ShoppingRouteShoppingListSet:react","name":"react","version":"18.3.1","singleton":true,"requiredVersion":">=18","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ShoppingRouteShoppingListSet:Components","name":"Components","assets":{"js":{"async":[],"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/virtualExposes-a309i88F.js","assets/shopping-list-editor-components-2ZxXB6jP.js","shoppingListEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}]}
1
+ {"id":"ShoppingRouteShoppingListSet","name":"ShoppingRouteShoppingListSet","metaData":{"name":"ShoppingRouteShoppingListSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ShoppingRouteShoppingListSet"},"remoteEntry":{"name":"shoppingListEditor.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"shoppingListEditor.ssr.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ShoppingRouteShoppingListSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ShoppingRouteShoppingListSet:react","name":"react","version":"18.3.1","singleton":true,"requiredVersion":">=18","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ShoppingRouteShoppingListSet:Components","name":"Components","assets":{"js":{"async":[],"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/virtualExposes-DgzWcmof.js","assets/shopping-list-editor-components-MoJ1XKOp.js","shoppingListEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}]}
@@ -1 +1 @@
1
- {"id":"ShoppingRouteShoppingListSet","name":"ShoppingRouteShoppingListSet","metaData":{"name":"ShoppingRouteShoppingListSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ShoppingRouteShoppingListSet"},"remoteEntry":{"name":"shoppingListEditor.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"shoppingListEditor.ssr.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ShoppingRouteShoppingListSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ShoppingRouteShoppingListSet:react","name":"react","version":"18.3.1","singleton":true,"requiredVersion":">=18","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ShoppingRouteShoppingListSet:Components","name":"Components","assets":{"js":{"async":[],"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/virtualExposes-a309i88F.js","assets/shopping-list-editor-components-2ZxXB6jP.js","shoppingListEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}],"buildOutput":[{"fileName":"shoppingListEditor.js","type":"chunk","isEntry":false,"size":18725},{"fileName":"assets/vite-preload-helper-Dp1pzeXC.js","type":"chunk","isEntry":false,"size":1266},{"fileName":"assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js","type":"chunk","isEntry":false,"size":11515},{"fileName":"assets/hostInit-Bj93C5rF.js","type":"chunk","isEntry":false,"size":2502},{"fileName":"assets/shopping-list-editor-components-2ZxXB6jP.js","type":"chunk","isEntry":true,"size":7745},{"fileName":"assets/virtualExposes-a309i88F.js","type":"chunk","isEntry":false,"size":1077},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","type":"chunk","isEntry":false,"size":739},{"fileName":"assets/index-2HOz3j7B.js","type":"chunk","isEntry":false,"size":66321},{"fileName":"mf-manifest.json","type":"asset","isEntry":false,"size":1414}],"assetAnalysis":{"./src-admin/shopping-list-editor-components.mjs":{"js":{"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/virtualExposes-a309i88F.js","assets/shopping-list-editor-components-2ZxXB6jP.js","shoppingListEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"],"async":[]},"css":{"sync":[],"async":[]}},"react":{"js":{"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"],"async":[]},"css":{"sync":[],"async":[]}}}}
1
+ {"id":"ShoppingRouteShoppingListSet","name":"ShoppingRouteShoppingListSet","metaData":{"name":"ShoppingRouteShoppingListSet","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ShoppingRouteShoppingListSet"},"remoteEntry":{"name":"shoppingListEditor.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"shoppingListEditor.ssr.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ShoppingRouteShoppingListSet","pluginVersion":"0.2.5","publicPath":"auto"},"shared":[{"id":"ShoppingRouteShoppingListSet:react","name":"react","version":"18.3.1","singleton":true,"requiredVersion":">=18","assets":{"js":{"async":[],"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ShoppingRouteShoppingListSet:Components","name":"Components","assets":{"js":{"async":[],"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/virtualExposes-DgzWcmof.js","assets/shopping-list-editor-components-MoJ1XKOp.js","shoppingListEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}],"buildOutput":[{"fileName":"shoppingListEditor.js","type":"chunk","isEntry":false,"size":18725},{"fileName":"assets/vite-preload-helper-Dp1pzeXC.js","type":"chunk","isEntry":false,"size":1266},{"fileName":"assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js","type":"chunk","isEntry":false,"size":11515},{"fileName":"assets/hostInit-Bj93C5rF.js","type":"chunk","isEntry":false,"size":2502},{"fileName":"assets/shopping-list-editor-components-MoJ1XKOp.js","type":"chunk","isEntry":true,"size":9365},{"fileName":"assets/virtualExposes-DgzWcmof.js","type":"chunk","isEntry":false,"size":1077},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","type":"chunk","isEntry":false,"size":739},{"fileName":"assets/index-2HOz3j7B.js","type":"chunk","isEntry":false,"size":66321},{"fileName":"mf-manifest.json","type":"asset","isEntry":false,"size":1414}],"assetAnalysis":{"./src-admin/shopping-list-editor-components.mjs":{"js":{"sync":["assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/virtualExposes-DgzWcmof.js","assets/shopping-list-editor-components-MoJ1XKOp.js","shoppingListEditor.js","assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"],"async":[]},"css":{"sync":[],"async":[]}},"react":{"js":{"sync":["assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js"],"async":[]},"css":{"sync":[],"async":[]}}}}
@@ -1,8 +1,8 @@
1
- import{h as ct,i as lt}from"./assets/index-2HOz3j7B.js";const dt=ct.share;typeof __VUE_HMR_RUNTIME__>"u"&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});const xe="__mf_init__virtual:mf:__mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__mf_v__runtimeInit__mf_v__.js__";let de=globalThis[xe];if(!de){let s,f;const u=new Promise((h,C)=>{s=h,f=C});de=globalThis[xe]={initPromise:u,initResolve:s,initReject:f}}const ut=de.initResolve,ne="__mf_module_cache__";globalThis[ne]||={share:{},remote:{}};globalThis[ne].share||={};globalThis[ne].remote||={};const d=globalThis[ne];for(const s of Object.keys(d.share))if(s.startsWith("default:")){const f=s.slice(8);d.share[f]===void 0&&(d.share[f]=d.share[s])}else if(!s.includes(":")){const f="default:"+s;d.share[f]===void 0&&(d.share[f]=d.share[s])}const Te={},mt=Array.isArray("default")?"default":["default"],Fe="default",D="ShoppingRouteShoppingListSet",ce=[["react"]];let ee,te,ue;async function _e(s){for(let f=0;;f++)try{return await s()}catch(u){throw u}}const Ne=Symbol("mf.originalSharedProvider"),_t={emit:s=>s},ht=(s,f)=>{if(f!=="version-first")return s;const u={};for(const[h,C]of Object.entries(s))u[h]=Object.assign({},C,{[Ne]:C});return u},le=(s,f)=>{if(!f)return;const u=Object.entries(s||{}),h=u.find(([,p])=>p===f);if(h)return{version:h[0],provider:f,registered:!0};if(typeof f.version=="string"&&f.version)return{version:f.version,provider:f,registered:!1};const C=u.filter(([,p])=>p===f||!!(f.from&&(p==null?void 0:p.from)===f.from));if(C.length===1)return{version:C[0][0],provider:f,registered:!1}},me=(s,f,u,h)=>{var E;if(!s||!u)return;const C=Array.isArray(u.scope)?u.scope:[u.scope||"default"],p=ht(s,h),L={};for(const x of C)L[x||"default"]={[f]:p};const P=(E=dt.getRegisteredShare(L,f,{...u,scope:C,strategy:h},_t))==null?void 0:E.shared;return(P==null?void 0:P[Ne])||P},U=(s,f,u,h)=>{var P;const C=E=>z(E,u),p=Object.fromEntries(Object.entries(s||{}).filter(([,E])=>{var x;return!C(E)&&((x=E==null?void 0:E.shareConfig)==null?void 0:x.import)!==!1}));u!=null&&u.version&&((P=u.shareConfig)==null?void 0:P.import)!==!1&&(p[u.version]||(p[u.version]=u));const L=me(p,f,u,h);return C(L)?void 0:L},z=(s,f)=>s===f||!!(f!=null&&f.from&&(s==null?void 0:s.from)===f.from),gt=(s,f,u,h,C,p,L,P,E)=>{var B,J,W;if(!P)return;const x=(J=(B=f==null?void 0:f.options)==null?void 0:B.shared)==null?void 0:J[C],K=Array.isArray(x)?x.find(N=>(N==null?void 0:N.version)===p):void 0,V=((P==null?void 0:P.from)===((W=f==null?void 0:f.options)==null?void 0:W.name)?P:void 0)||(z(K,P)?K:f?void 0:P);return V&&s.some(N=>{var q,M;return N!==f&&((q=N==null?void 0:N.options)==null?void 0:q.name)===(L==null?void 0:L.from)&&((M=N==null?void 0:N.shareScopeMap)==null?void 0:M[h])===u})?V:void 0},bt=(s,f,u,h,C,p,L,P,E)=>{const x=p.registered?gt(s,f,u,h,C,p.version,p.provider,P):void 0,K=x||L;if(K&&!(p.registered&&!z(K,P)))return{provider:K,scopeRootProvider:x}};async function yt(){return ee||(ee=_e(()=>import("./assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js")).catch(s=>{throw ee=void 0,s})),ee}async function St(){return te||(te=_e(()=>import("./assets/virtualExposes-a309i88F.js")).then(s=>s.default??s).catch(s=>{throw te=void 0,s})),te}async function Pt(s={},f=[]){var we,je,Re,Ce,Ee;const u=(t,e,n,r)=>{const o=(Array.isArray(r)?r[0]:r)||"default",c=e||!n?t:t+"@"+n,a={canonical:o+":"+c};return o==="default"&&(a.aliases=[c]),a},h=(t,e)=>{const n=t[e.canonical];if(n!==void 0)return n;const r=e.aliases||[];for(const i of r){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const o=t[i];if(o!==void 0)return t[e.canonical]=o,o}},C=Symbol.for("module-federation.shared-cache-listeners"),p=Symbol.for("module-federation.shared-cache-owners"),L=t=>{let e=t[p];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,p,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},P=(t,e)=>{var n;return(n=t[p])==null?void 0:n[e.canonical]},E=(t,e,n,r)=>{var a;t[e.canonical]=n;const i=e.aliases||[];for(const l of i)Object.defineProperty(t,l,{value:n,enumerable:!0,configurable:!0,writable:!0});const o=t[p];r===void 0?o&&delete o[e.canonical]:L(t)[e.canonical]=r;const c=(a=t[C])==null?void 0:a[e.canonical];if(c)for(const l of c)l(n);return n},x=Symbol.for("module-federation.tree-shaking-shared-cache"),K=t=>{let e=t[x];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,x,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},he=(t,e,n,r)=>{if(!Array.isArray(n))return r;const i=[...new Set(n)].sort(),o=K(t),c=o[e.canonical]||=[],a=c.find(l=>l.providedExports.length===i.length&&l.providedExports.every((y,m)=>y===i[m]));return a?a.value=r:c.push({providedExports:i,value:r}),r},V=Symbol.for("module-federation.tree-shaking-shared-selection-cache"),ge=t=>{let e=t[V];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,V,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},B=(t,e,n)=>{var i,o;const r=h(t,e);return r!==void 0?r:(o=(i=t[V])==null?void 0:i[e.canonical])==null?void 0:o[n]},J=(t,e,n,r)=>{const i=ge(t),o=i[e.canonical]||=Object.create(null);return o[n]=r,r},W=((we=globalThis.__FEDERATION__)==null?void 0:we.__INSTANCES__)||[],N=(je=f.find(t=>t==null?void 0:t.from))==null?void 0:je.from,q=W.find(t=>{var e,n;return((e=t==null?void 0:t.options)==null?void 0:e.name)===N&&((n=t==null?void 0:t.shareScopeMap)==null?void 0:n.default)===s})||W.find(t=>{var e,n;return((e=t==null?void 0:t.options)==null?void 0:e.name)!==D&&((n=t==null?void 0:t.shareScopeMap)==null?void 0:n.default)===s}),M=Object.create(null),Ae=t=>{const e=Object.create(null);for(const[n,r]of Object.entries(t||{}))e[n]=Object.assign(Object.create(null),r);return e},De=(t,e)=>{const n=!q&&Object.values(e||{}).some(i=>Object.values(i||{}).some(Q)),r=n?Ae(e):e;return M[t]={host:e,runtime:r,isWebpackScope:n},r},ze=()=>{const t=Object.values(M).filter(({isWebpackScope:e})=>e);if(t.length!==0)for(const{host:e,runtime:n}of t)for(const[r,i]of Object.entries(e||{})){const o=n[r]||=Object.create(null);for(const[c,a]of Object.entries(i||{}))o[c]=a}},k=Object.create(null);for(const[t,e]of Object.entries(s)){const n=k[t]=Object.create(null);for(const[r,i]of Object.entries(e))n[r]=Object.assign({},i)}const{usedShared:I,usedRemotes:ke}=await yt();function Q(t){if(typeof(t==null?void 0:t.get)!="function")return!1;const e=Function.prototype.toString.call(t.get);return e.includes("__webpack_require__")||/\.\s*e\s*\([^)]*\)\s*\.then\s*\(/.test(e)}const Ke=Object.values(k).some(t=>Object.values(t||{}).some(Q)),Be=t=>{const e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]},re=(t,e,n)=>{if(typeof U!="function")return;const r=Be(t),i=r===t?[[t,e]]:[[t,e],[r,I[r]]];for(const[o,c]of i){if(!c)continue;const a=n?o===t?n:k[o]:s[o],l=U(a,o,c,"version-first");if(l&&Q(l)&&!l.lib&&!l.loaded)return l}};var X=Te[Fe];if(X||(X=Te[Fe]={from:D}),f.indexOf(X)>=0)return;f.push(X);const be=t=>{let e=t;for(let n=0;n<5;n++){const r=e==null?void 0:e.default;if(!r||typeof r!="object"||Object.keys(r).length===0)break;const i=Object.keys(e).filter(o=>o!=="default").map(o=>e[o]);if(i.length>0&&i.some(o=>o!==void 0))break;e=r}return e},Ge=[],Ve=typeof globalThis.window>"u"?await Promise.all([]):[],oe="__mf_vite_runtime_share_load_id__";let We=0;const ie=new Map,se=new Map,H=lt({name:D,remotes:ke,shared:I,plugins:[He(),Ue(),...Ge,...Ve],shareStrategy:"version-first"});H.initShareScopeMap("default",De("default",s));function He(){return{name:"vite-share-pin-lifecycle-plugin",resolveShare(t){var i;const e=(i=t.shareInfo)==null?void 0:i[oe],n=e===void 0?void 0:se.get(e);if(!n)return t;const r=t.resolver;return t.resolver=(...o)=>(n.pinned.reapply(),r(...o)),n.pinned.reveal(),t}}}function Ue(){return{name:"vite-real-name-snapshot-plugin",afterLoadSnapshot(t){const e=t&&t.remoteSnapshot,n=e&&e.globalName,r=e&&e.version;if(!n||!r||!e.remoteEntry)return t;const i=globalThis.__FEDERATION__&&globalThis.__FEDERATION__.moduleInfo,o=n+":"+r;return i&&!i[o]&&(i[o]=e),t}}}const qe=H.sharedHandler.hooks.lifecycle.resolveShare,Y=new WeakMap;qe.on(t=>{var i;const e=(i=t.shareInfo)==null?void 0:i[oe],n=t.resolver;if(typeof n!="function")return t;const r=(...o)=>{const c=n(...o),a=c==null?void 0:c.shared;return a&&(typeof a=="object"||typeof a=="function")&&!Y.has(a)&&Y.set(a,{from:a.from}),e!==void 0&&a&&ie.set(e,a),c};return t.resolver=r,t});const Me=(t,e,n,r)=>{if(!t||t[e]!==n)return;const i=Object.assign({},r,{version:r.version??e,scope:r.scope??(n==null?void 0:n.scope)??["default"],strategy:"loaded-first"}),o=r.from;t[e]=i;const c=()=>n===void 0?t[e]===void 0:t[e]===n;return{provider:i,reveal(){return t[e]!==i?!1:(n===void 0?delete t[e]:t[e]=n,!0)},reapply(){return c()?(t[e]=i,!0):!1},release(a,l=!0){return r.from=o,t[e]!==i?!l&&c():l?a?(i.from=o,a&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete t[e]:t[e]=n,!1):(n===void 0?delete t[e]:t[e]=n,!0)}}},Je=t=>Object.entries(t||{}).map(([e,n])=>({provider:n,version:e,from:n.from,registered:!0})),Qe=(t,e)=>{if(e===void 0)return;let n;for(const r of t){const i=r.provider,o=i.treeShaking||i;if(!(r.loadedFactory!==e&&i.lib!==e&&o.lib!==e)){if(n)return;n=r}}return n},Xe=async(t,e,n)=>{const r=++We;se.set(r,{pinned:n});try{const i=await H.loadShare(t,{customShareInfo:{shareConfig:e,[oe]:r}});return{factory:i===!1?void 0:i,selectedProvider:ie.get(r)}}finally{ie.delete(r),se.delete(r)}},ye=async(t,e,n,r,i,o,c=!0)=>{const a=o.from,l=Me(n,r,i,o);if(!l)return;let y;try{y=await Xe(t,e,l)}catch(j){throw l.release(!1),j}const m=y==null?void 0:y.factory;if(m===void 0){l.release(!1);return}const _=Je(n),g=l.provider.treeShaking||l.provider,R=l.provider.lib===m||g.lib===m;if(!c&&R){const j=_.findIndex(v=>v.provider===l.provider);j!==-1&&_.splice(j,1)}!c&&!_.some(j=>j.provider===o)&&_.push({provider:o,version:r,from:a,registered:!1,loadedFactory:R?m:void 0});const O=!c&&y.selectedProvider===l.provider&&R?o:y.selectedProvider;if(O&&!_.some(j=>j.provider===O)){const j=Y.get(O),v=typeof O.version=="string"&&O.version?O.version:r;_.push({provider:O,version:v,from:j?j.from:O.from,registered:(n==null?void 0:n[v])===O,loadedFactory:m})}const b=_.find(j=>j.provider===O)??Qe(_,m);if(!l.release(!0,(b==null?void 0:b.provider)===l.provider)||!b)return;const S=Y.get(b.provider);b.from=b.provider===o?a:S?S.from:b.provider.from,S&&(b.provider.from=S.from);const A=typeof m=="function"?m():m,w=await Promise.resolve(A);if(!(b.registered&&(n==null?void 0:n[b.version])!==b.provider))return{provider:b.provider,selection:b,resolved:w}},fe=new Set,ae=new Map,Ye=async(t,e,n)=>{var i;const r=!!((i=e.shareConfig)!=null&&i.singleton);if(!r&&e.canLiveRebind!==!1)try{const o=U(n,t,e,"version-first"),c=le(n,o);if(!c)return;const{version:a}=c;if(!r&&a!==e.version||!o.lib&&!o.loading&&!(o.loaded&&typeof o.get=="function"))return;const l=u(t,r,e.version,e.scope);if(h(d.share,l)!==void 0)return;const y=s[t],m=y==null?void 0:y[a];if(c.registered&&!z(m,o))return;let _,g=o.lib;if(!g&&Q(o)||(!g&&o.loading&&(g=await o.loading),!g&&o.loaded&&typeof o.get=="function"&&(g=await o.get()),!g))return;const R=typeof g=="function"?g():g,O=await Promise.resolve(R),b=c.registered?m:o;_={provider:b,selection:{provider:b,version:a,from:o.from,registered:c.registered},resolved:O};const T=_==null?void 0:_.provider,S=_==null?void 0:_.selection;if(!S)return;const A=_==null?void 0:_.resolved;if(A===void 0||h(d.share,l)!==void 0||S.registered&&(y==null?void 0:y[S.version])!==T)return;E(d.share,l,be(A),S.from),fe.add(T)}catch(o){console.error('[Module Federation] Failed to bridge materialized shared module "'+t+'"',o)}},Se=async(t,e,n,r,i)=>{var o,c;try{const a=u(t,(o=e.shareConfig)==null?void 0:o.singleton,e.version,e.scope),l=h(d.share,a),y=P(d.share,a),m=U(n,t,e,"version-first"),_=m||me(n,t,e,"version-first")||e,g=le(n,_);if(!g)return;const R=z(_,e),{version:O}=g;if(!((c=e.shareConfig)!=null&&c.singleton)&&O!==e.version)return;const b=r==null?void 0:r[O],T=bt(W,q,s,"default",t,g,m,b,"version-first");if(!T&&!R)return;const{provider:S,scopeRootProvider:A}=T||{provider:_,scopeRootProvider:void 0};if(e.canLiveRebind===!1||l!==void 0&&y!==D)return;const w=s[t],j=w==null?void 0:w[O];if(g.registered&&!A&&!z(j,S))return;const v=await ye(t,e.shareConfig,w,O,j,S,g.registered&&!R),G=v==null?void 0:v.provider,F=v==null?void 0:v.selection;if(!F||z(G,e)||i&&(i.version!==F.version||!z({from:F.from},i.provider))||fe.has(G))return;const Ie=v==null?void 0:v.resolved;if(Ie===void 0)return;const st=h(d.share,a),ft=P(d.share,a);if(st!==void 0&&ft!==D||F.registered&&(w==null?void 0:w[F.version])!==G)return;i||ae.set(t,{version:F.version,provider:{from:F.from}}),fe.add(G);const at=be(Ie);E(d.share,a,at,F.from)}catch(a){console.error('[Module Federation] Failed to bridge external shared module "'+t+'"',a)}};for(const t of ce)await Promise.all(t.map(async e=>{const n=I[e];!n||n.materialize===!1||n.treeShaking||await Ye(e,n,k[e])}));for(const[t,e]of Object.entries(I)){if(e.treeShaking)continue;const n=u(t,(Re=e.shareConfig)==null?void 0:Re.singleton,e.version,e.scope);if(h(d.share,n)!==void 0)continue;const r=u(t,!0,e.version,e.scope),i=h(d.share,r);i!==void 0&&E(d.share,n,i,P(d.share,r))}const Ze=["react"],$e=[["react"]],Z=Ze.filter(t=>{var e;return I[t]&&(I[t].materialize!==!1||((e=I[t].shareConfig)==null?void 0:e.import)===!1)});d.providerInit||=new Map;const et=(t,e)=>{const n=d.providerInit.get(t);if(n)return n;const r=Promise.resolve().then(e);return d.providerInit.set(t,r),r.catch(()=>d.providerInit.delete(t)),r};var ve=async t=>{const e=new Set(t);for(const n of $e)await Promise.all(n.filter(r=>e.has(r)).map(async r=>{var O,b;const i=I[r],o=u(r,(O=i.shareConfig)==null?void 0:O.singleton,i.version,i.scope);if(((b=i.shareConfig)==null?void 0:b.import)===!1||i.treeShaking||h(d.share,o)!==void 0)return;const c=u(r,!0,i.version,i.scope),a=h(d.share,c);if(a!==void 0){E(d.share,o,a,P(d.share,c));return}const l=typeof re=="function"?re(r,i):void 0;if(l&&!l.lib&&!l.loaded)return;const y=o.canonical,m=await et(y,async()=>{const T=await i.get(),S=typeof T=="function"?T():T;return Promise.resolve(S)}),g=(T=>{let S=T;for(let A=0;A<5;A++){const w=S==null?void 0:S.default;if(!w||typeof w!="object"||Object.keys(w).length===0)break;const j=Object.keys(S).filter(v=>v!=="default").map(v=>S[v]);if(j.length>0&&j.some(v=>v!==void 0))break;S=w}return S})(m),R=g===m?{...m}:g;R.__esModule!==!0&&Object.defineProperty(R,"__esModule",{value:!0,enumerable:!1}),E(d.share,o,R,D)}))};const pe=t=>{var r,i;const e=I[t];if(!e.treeShaking&&((r=e.shareConfig)==null?void 0:r.import)!==!1)return!1;const n=u(t,(i=e.shareConfig)==null?void 0:i.singleton,e.version,e.scope);return e.treeShaking?B(d.share,n,D)===void 0&&h(d.share,n)===void 0:h(d.share,n)===void 0},tt=t=>{var i,o;const e=I[t],n=u(t,(i=e.shareConfig)==null?void 0:i.singleton,e.version,e.scope);return(e.treeShaking?B(d.share,n,D)??h(d.share,n):h(d.share,n))!==void 0?!1:e.treeShaking||((o=e.shareConfig)==null?void 0:o.import)===!1?!0:typeof U!="function"?!1:!!U(k[t],t,e,"version-first")},$=Z.findIndex(tt),nt=$===-1?Z:Z.slice(0,$);var rt=$===-1?[]:Z.slice($);await ve(nt);try{await _e(async()=>{await Promise.all(await H.initializeSharing("default",{strategy:"version-first",from:"build",initScope:f}))})}catch(t){console.error("[Module Federation]",t)}ze();const Pe=async()=>{for(const t of ce)await Promise.all(t.map(async e=>{const n=I[e];!n||n.materialize===!1||n.treeShaking||await Se(e,n,s[e],k[e],void 0)}))};await Pe(),Ke&&(ue=Pe);try{const t=(Ce=globalThis.__FEDERATION__)==null?void 0:Ce.__SHARE__,e=Object.create(null);if(t)for(const[,n]of Object.entries(t))for(const r of mt){const i=n==null?void 0:n[r];if(i)for(const[o,c]of Object.entries(i)){const a=I==null?void 0:I[o],l=k[o],y=ae.get(o);if(!a||!l||!y||a.treeShaking)continue;const m=e[o]||(e[o]=Object.create(null));for(const[_,g]of Object.entries(c)){if(!g.lib||y.version!==_||!z(g,y.provider))continue;const R=l[_];(g===R||R!=null&&R.from&&g.from===R.from)&&(g===a||a.from&&g.from===a.from||m[_]===void 0&&(m[_]=g))}}}for(const n of ce)await Promise.all(n.map(async r=>{const i=e[r];i&&await Se(r,I[r],i,k[r],ae.get(r))}))}catch(t){console.error("[Module Federation] Failed to bridge external shared modules",t)}const ot=async()=>{},it=async(t,e)=>{var T,S;const n=u(t,(T=e.shareConfig)==null?void 0:T.singleton,e.version,e.scope),r=e.treeShaking?B(d.share,n,D):h(d.share,n);if(((S=e.shareConfig)==null?void 0:S.import)!==!1||r!==void 0||re(t,e,k[t]))return;const i=A=>{let w=A;for(let j=0;j<5;j++){const v=w==null?void 0:w.default;if(!v||typeof v!="object"||Object.keys(v).length===0)break;const G=Object.keys(w).filter(F=>F!=="default").map(F=>w[F]);if(G.length>0&&G.some(F=>F!==void 0))break;w=v}return w},o=s==null?void 0:s[t],c=me(o,t,e,"version-first")||e,a=le(o,c);if(!a)return;const{version:l}=a,y=o==null?void 0:o[l],m=await ye(t,e.shareConfig,o,l,y,c,a.registered&&!z(c,e)),_=m==null?void 0:m.selection,g=m==null?void 0:m.provider,R=m==null?void 0:m.resolved;if(!_||z(g,e)||R===void 0||(e.treeShaking?B(d.share,n,D):h(d.share,n))!==void 0||_.registered&&(o==null?void 0:o[_.version])!==g)return;const b=i(R);if(e.treeShaking){const A=e.treeShaking.providedExports??e.treeShaking.usedExports??[];he(d.share,n,A,b),J(d.share,n,D,b)}else E(d.share,n,b,_.from)},Oe=[];for(const t of rt){const e=I[t];if(pe(t))try{e.treeShaking?await ot(t,e):((Ee=e.shareConfig)==null?void 0:Ee.import)===!1&&await it(t,e)}catch(n){console.error(`[Module Federation] Failed to resolve runtime-only shared module "${t}"`,n);break}if(pe(t))break;Oe.push(t)}return await ve(Oe),ut(H),H}async function Ot(s){const f=await St();if(!(s in f))throw new Error(`[Module Federation] Module ${s} does not exist in container.`);return ue&&await ue(),d.pendingShareLoads&&await Promise.all(d.pendingShareLoads),f[s]().then(u=>()=>u)}export{Ot as get,Pt as init};
1
+ import{h as ct,i as lt}from"./assets/index-2HOz3j7B.js";const dt=ct.share;typeof __VUE_HMR_RUNTIME__>"u"&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});const xe="__mf_init__virtual:mf:__mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__mf_v__runtimeInit__mf_v__.js__";let de=globalThis[xe];if(!de){let s,f;const u=new Promise((h,C)=>{s=h,f=C});de=globalThis[xe]={initPromise:u,initResolve:s,initReject:f}}const ut=de.initResolve,ne="__mf_module_cache__";globalThis[ne]||={share:{},remote:{}};globalThis[ne].share||={};globalThis[ne].remote||={};const d=globalThis[ne];for(const s of Object.keys(d.share))if(s.startsWith("default:")){const f=s.slice(8);d.share[f]===void 0&&(d.share[f]=d.share[s])}else if(!s.includes(":")){const f="default:"+s;d.share[f]===void 0&&(d.share[f]=d.share[s])}const Te={},mt=Array.isArray("default")?"default":["default"],Fe="default",D="ShoppingRouteShoppingListSet",ce=[["react"]];let ee,te,ue;async function _e(s){for(let f=0;;f++)try{return await s()}catch(u){throw u}}const Ne=Symbol("mf.originalSharedProvider"),_t={emit:s=>s},ht=(s,f)=>{if(f!=="version-first")return s;const u={};for(const[h,C]of Object.entries(s))u[h]=Object.assign({},C,{[Ne]:C});return u},le=(s,f)=>{if(!f)return;const u=Object.entries(s||{}),h=u.find(([,p])=>p===f);if(h)return{version:h[0],provider:f,registered:!0};if(typeof f.version=="string"&&f.version)return{version:f.version,provider:f,registered:!1};const C=u.filter(([,p])=>p===f||!!(f.from&&(p==null?void 0:p.from)===f.from));if(C.length===1)return{version:C[0][0],provider:f,registered:!1}},me=(s,f,u,h)=>{var E;if(!s||!u)return;const C=Array.isArray(u.scope)?u.scope:[u.scope||"default"],p=ht(s,h),L={};for(const x of C)L[x||"default"]={[f]:p};const P=(E=dt.getRegisteredShare(L,f,{...u,scope:C,strategy:h},_t))==null?void 0:E.shared;return(P==null?void 0:P[Ne])||P},U=(s,f,u,h)=>{var P;const C=E=>z(E,u),p=Object.fromEntries(Object.entries(s||{}).filter(([,E])=>{var x;return!C(E)&&((x=E==null?void 0:E.shareConfig)==null?void 0:x.import)!==!1}));u!=null&&u.version&&((P=u.shareConfig)==null?void 0:P.import)!==!1&&(p[u.version]||(p[u.version]=u));const L=me(p,f,u,h);return C(L)?void 0:L},z=(s,f)=>s===f||!!(f!=null&&f.from&&(s==null?void 0:s.from)===f.from),gt=(s,f,u,h,C,p,L,P,E)=>{var B,J,W;if(!P)return;const x=(J=(B=f==null?void 0:f.options)==null?void 0:B.shared)==null?void 0:J[C],K=Array.isArray(x)?x.find(N=>(N==null?void 0:N.version)===p):void 0,V=((P==null?void 0:P.from)===((W=f==null?void 0:f.options)==null?void 0:W.name)?P:void 0)||(z(K,P)?K:f?void 0:P);return V&&s.some(N=>{var q,M;return N!==f&&((q=N==null?void 0:N.options)==null?void 0:q.name)===(L==null?void 0:L.from)&&((M=N==null?void 0:N.shareScopeMap)==null?void 0:M[h])===u})?V:void 0},bt=(s,f,u,h,C,p,L,P,E)=>{const x=p.registered?gt(s,f,u,h,C,p.version,p.provider,P):void 0,K=x||L;if(K&&!(p.registered&&!z(K,P)))return{provider:K,scopeRootProvider:x}};async function yt(){return ee||(ee=_e(()=>import("./assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js")).catch(s=>{throw ee=void 0,s})),ee}async function St(){return te||(te=_e(()=>import("./assets/virtualExposes-DgzWcmof.js")).then(s=>s.default??s).catch(s=>{throw te=void 0,s})),te}async function Pt(s={},f=[]){var we,je,Re,Ce,Ee;const u=(t,e,n,r)=>{const o=(Array.isArray(r)?r[0]:r)||"default",c=e||!n?t:t+"@"+n,a={canonical:o+":"+c};return o==="default"&&(a.aliases=[c]),a},h=(t,e)=>{const n=t[e.canonical];if(n!==void 0)return n;const r=e.aliases||[];for(const i of r){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const o=t[i];if(o!==void 0)return t[e.canonical]=o,o}},C=Symbol.for("module-federation.shared-cache-listeners"),p=Symbol.for("module-federation.shared-cache-owners"),L=t=>{let e=t[p];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,p,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},P=(t,e)=>{var n;return(n=t[p])==null?void 0:n[e.canonical]},E=(t,e,n,r)=>{var a;t[e.canonical]=n;const i=e.aliases||[];for(const l of i)Object.defineProperty(t,l,{value:n,enumerable:!0,configurable:!0,writable:!0});const o=t[p];r===void 0?o&&delete o[e.canonical]:L(t)[e.canonical]=r;const c=(a=t[C])==null?void 0:a[e.canonical];if(c)for(const l of c)l(n);return n},x=Symbol.for("module-federation.tree-shaking-shared-cache"),K=t=>{let e=t[x];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,x,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},he=(t,e,n,r)=>{if(!Array.isArray(n))return r;const i=[...new Set(n)].sort(),o=K(t),c=o[e.canonical]||=[],a=c.find(l=>l.providedExports.length===i.length&&l.providedExports.every((y,m)=>y===i[m]));return a?a.value=r:c.push({providedExports:i,value:r}),r},V=Symbol.for("module-federation.tree-shaking-shared-selection-cache"),ge=t=>{let e=t[V];return e===void 0&&(e=Object.create(null),Object.defineProperty(t,V,{value:e,enumerable:!1,configurable:!1,writable:!1})),e},B=(t,e,n)=>{var i,o;const r=h(t,e);return r!==void 0?r:(o=(i=t[V])==null?void 0:i[e.canonical])==null?void 0:o[n]},J=(t,e,n,r)=>{const i=ge(t),o=i[e.canonical]||=Object.create(null);return o[n]=r,r},W=((we=globalThis.__FEDERATION__)==null?void 0:we.__INSTANCES__)||[],N=(je=f.find(t=>t==null?void 0:t.from))==null?void 0:je.from,q=W.find(t=>{var e,n;return((e=t==null?void 0:t.options)==null?void 0:e.name)===N&&((n=t==null?void 0:t.shareScopeMap)==null?void 0:n.default)===s})||W.find(t=>{var e,n;return((e=t==null?void 0:t.options)==null?void 0:e.name)!==D&&((n=t==null?void 0:t.shareScopeMap)==null?void 0:n.default)===s}),M=Object.create(null),Ae=t=>{const e=Object.create(null);for(const[n,r]of Object.entries(t||{}))e[n]=Object.assign(Object.create(null),r);return e},De=(t,e)=>{const n=!q&&Object.values(e||{}).some(i=>Object.values(i||{}).some(Q)),r=n?Ae(e):e;return M[t]={host:e,runtime:r,isWebpackScope:n},r},ze=()=>{const t=Object.values(M).filter(({isWebpackScope:e})=>e);if(t.length!==0)for(const{host:e,runtime:n}of t)for(const[r,i]of Object.entries(e||{})){const o=n[r]||=Object.create(null);for(const[c,a]of Object.entries(i||{}))o[c]=a}},k=Object.create(null);for(const[t,e]of Object.entries(s)){const n=k[t]=Object.create(null);for(const[r,i]of Object.entries(e))n[r]=Object.assign({},i)}const{usedShared:I,usedRemotes:ke}=await yt();function Q(t){if(typeof(t==null?void 0:t.get)!="function")return!1;const e=Function.prototype.toString.call(t.get);return e.includes("__webpack_require__")||/\.\s*e\s*\([^)]*\)\s*\.then\s*\(/.test(e)}const Ke=Object.values(k).some(t=>Object.values(t||{}).some(Q)),Be=t=>{const e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]},re=(t,e,n)=>{if(typeof U!="function")return;const r=Be(t),i=r===t?[[t,e]]:[[t,e],[r,I[r]]];for(const[o,c]of i){if(!c)continue;const a=n?o===t?n:k[o]:s[o],l=U(a,o,c,"version-first");if(l&&Q(l)&&!l.lib&&!l.loaded)return l}};var X=Te[Fe];if(X||(X=Te[Fe]={from:D}),f.indexOf(X)>=0)return;f.push(X);const be=t=>{let e=t;for(let n=0;n<5;n++){const r=e==null?void 0:e.default;if(!r||typeof r!="object"||Object.keys(r).length===0)break;const i=Object.keys(e).filter(o=>o!=="default").map(o=>e[o]);if(i.length>0&&i.some(o=>o!==void 0))break;e=r}return e},Ge=[],Ve=typeof globalThis.window>"u"?await Promise.all([]):[],oe="__mf_vite_runtime_share_load_id__";let We=0;const ie=new Map,se=new Map,H=lt({name:D,remotes:ke,shared:I,plugins:[He(),Ue(),...Ge,...Ve],shareStrategy:"version-first"});H.initShareScopeMap("default",De("default",s));function He(){return{name:"vite-share-pin-lifecycle-plugin",resolveShare(t){var i;const e=(i=t.shareInfo)==null?void 0:i[oe],n=e===void 0?void 0:se.get(e);if(!n)return t;const r=t.resolver;return t.resolver=(...o)=>(n.pinned.reapply(),r(...o)),n.pinned.reveal(),t}}}function Ue(){return{name:"vite-real-name-snapshot-plugin",afterLoadSnapshot(t){const e=t&&t.remoteSnapshot,n=e&&e.globalName,r=e&&e.version;if(!n||!r||!e.remoteEntry)return t;const i=globalThis.__FEDERATION__&&globalThis.__FEDERATION__.moduleInfo,o=n+":"+r;return i&&!i[o]&&(i[o]=e),t}}}const qe=H.sharedHandler.hooks.lifecycle.resolveShare,Y=new WeakMap;qe.on(t=>{var i;const e=(i=t.shareInfo)==null?void 0:i[oe],n=t.resolver;if(typeof n!="function")return t;const r=(...o)=>{const c=n(...o),a=c==null?void 0:c.shared;return a&&(typeof a=="object"||typeof a=="function")&&!Y.has(a)&&Y.set(a,{from:a.from}),e!==void 0&&a&&ie.set(e,a),c};return t.resolver=r,t});const Me=(t,e,n,r)=>{if(!t||t[e]!==n)return;const i=Object.assign({},r,{version:r.version??e,scope:r.scope??(n==null?void 0:n.scope)??["default"],strategy:"loaded-first"}),o=r.from;t[e]=i;const c=()=>n===void 0?t[e]===void 0:t[e]===n;return{provider:i,reveal(){return t[e]!==i?!1:(n===void 0?delete t[e]:t[e]=n,!0)},reapply(){return c()?(t[e]=i,!0):!1},release(a,l=!0){return r.from=o,t[e]!==i?!l&&c():l?a?(i.from=o,a&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete t[e]:t[e]=n,!1):(n===void 0?delete t[e]:t[e]=n,!0)}}},Je=t=>Object.entries(t||{}).map(([e,n])=>({provider:n,version:e,from:n.from,registered:!0})),Qe=(t,e)=>{if(e===void 0)return;let n;for(const r of t){const i=r.provider,o=i.treeShaking||i;if(!(r.loadedFactory!==e&&i.lib!==e&&o.lib!==e)){if(n)return;n=r}}return n},Xe=async(t,e,n)=>{const r=++We;se.set(r,{pinned:n});try{const i=await H.loadShare(t,{customShareInfo:{shareConfig:e,[oe]:r}});return{factory:i===!1?void 0:i,selectedProvider:ie.get(r)}}finally{ie.delete(r),se.delete(r)}},ye=async(t,e,n,r,i,o,c=!0)=>{const a=o.from,l=Me(n,r,i,o);if(!l)return;let y;try{y=await Xe(t,e,l)}catch(j){throw l.release(!1),j}const m=y==null?void 0:y.factory;if(m===void 0){l.release(!1);return}const _=Je(n),g=l.provider.treeShaking||l.provider,R=l.provider.lib===m||g.lib===m;if(!c&&R){const j=_.findIndex(v=>v.provider===l.provider);j!==-1&&_.splice(j,1)}!c&&!_.some(j=>j.provider===o)&&_.push({provider:o,version:r,from:a,registered:!1,loadedFactory:R?m:void 0});const O=!c&&y.selectedProvider===l.provider&&R?o:y.selectedProvider;if(O&&!_.some(j=>j.provider===O)){const j=Y.get(O),v=typeof O.version=="string"&&O.version?O.version:r;_.push({provider:O,version:v,from:j?j.from:O.from,registered:(n==null?void 0:n[v])===O,loadedFactory:m})}const b=_.find(j=>j.provider===O)??Qe(_,m);if(!l.release(!0,(b==null?void 0:b.provider)===l.provider)||!b)return;const S=Y.get(b.provider);b.from=b.provider===o?a:S?S.from:b.provider.from,S&&(b.provider.from=S.from);const A=typeof m=="function"?m():m,w=await Promise.resolve(A);if(!(b.registered&&(n==null?void 0:n[b.version])!==b.provider))return{provider:b.provider,selection:b,resolved:w}},fe=new Set,ae=new Map,Ye=async(t,e,n)=>{var i;const r=!!((i=e.shareConfig)!=null&&i.singleton);if(!r&&e.canLiveRebind!==!1)try{const o=U(n,t,e,"version-first"),c=le(n,o);if(!c)return;const{version:a}=c;if(!r&&a!==e.version||!o.lib&&!o.loading&&!(o.loaded&&typeof o.get=="function"))return;const l=u(t,r,e.version,e.scope);if(h(d.share,l)!==void 0)return;const y=s[t],m=y==null?void 0:y[a];if(c.registered&&!z(m,o))return;let _,g=o.lib;if(!g&&Q(o)||(!g&&o.loading&&(g=await o.loading),!g&&o.loaded&&typeof o.get=="function"&&(g=await o.get()),!g))return;const R=typeof g=="function"?g():g,O=await Promise.resolve(R),b=c.registered?m:o;_={provider:b,selection:{provider:b,version:a,from:o.from,registered:c.registered},resolved:O};const T=_==null?void 0:_.provider,S=_==null?void 0:_.selection;if(!S)return;const A=_==null?void 0:_.resolved;if(A===void 0||h(d.share,l)!==void 0||S.registered&&(y==null?void 0:y[S.version])!==T)return;E(d.share,l,be(A),S.from),fe.add(T)}catch(o){console.error('[Module Federation] Failed to bridge materialized shared module "'+t+'"',o)}},Se=async(t,e,n,r,i)=>{var o,c;try{const a=u(t,(o=e.shareConfig)==null?void 0:o.singleton,e.version,e.scope),l=h(d.share,a),y=P(d.share,a),m=U(n,t,e,"version-first"),_=m||me(n,t,e,"version-first")||e,g=le(n,_);if(!g)return;const R=z(_,e),{version:O}=g;if(!((c=e.shareConfig)!=null&&c.singleton)&&O!==e.version)return;const b=r==null?void 0:r[O],T=bt(W,q,s,"default",t,g,m,b,"version-first");if(!T&&!R)return;const{provider:S,scopeRootProvider:A}=T||{provider:_,scopeRootProvider:void 0};if(e.canLiveRebind===!1||l!==void 0&&y!==D)return;const w=s[t],j=w==null?void 0:w[O];if(g.registered&&!A&&!z(j,S))return;const v=await ye(t,e.shareConfig,w,O,j,S,g.registered&&!R),G=v==null?void 0:v.provider,F=v==null?void 0:v.selection;if(!F||z(G,e)||i&&(i.version!==F.version||!z({from:F.from},i.provider))||fe.has(G))return;const Ie=v==null?void 0:v.resolved;if(Ie===void 0)return;const st=h(d.share,a),ft=P(d.share,a);if(st!==void 0&&ft!==D||F.registered&&(w==null?void 0:w[F.version])!==G)return;i||ae.set(t,{version:F.version,provider:{from:F.from}}),fe.add(G);const at=be(Ie);E(d.share,a,at,F.from)}catch(a){console.error('[Module Federation] Failed to bridge external shared module "'+t+'"',a)}};for(const t of ce)await Promise.all(t.map(async e=>{const n=I[e];!n||n.materialize===!1||n.treeShaking||await Ye(e,n,k[e])}));for(const[t,e]of Object.entries(I)){if(e.treeShaking)continue;const n=u(t,(Re=e.shareConfig)==null?void 0:Re.singleton,e.version,e.scope);if(h(d.share,n)!==void 0)continue;const r=u(t,!0,e.version,e.scope),i=h(d.share,r);i!==void 0&&E(d.share,n,i,P(d.share,r))}const Ze=["react"],$e=[["react"]],Z=Ze.filter(t=>{var e;return I[t]&&(I[t].materialize!==!1||((e=I[t].shareConfig)==null?void 0:e.import)===!1)});d.providerInit||=new Map;const et=(t,e)=>{const n=d.providerInit.get(t);if(n)return n;const r=Promise.resolve().then(e);return d.providerInit.set(t,r),r.catch(()=>d.providerInit.delete(t)),r};var ve=async t=>{const e=new Set(t);for(const n of $e)await Promise.all(n.filter(r=>e.has(r)).map(async r=>{var O,b;const i=I[r],o=u(r,(O=i.shareConfig)==null?void 0:O.singleton,i.version,i.scope);if(((b=i.shareConfig)==null?void 0:b.import)===!1||i.treeShaking||h(d.share,o)!==void 0)return;const c=u(r,!0,i.version,i.scope),a=h(d.share,c);if(a!==void 0){E(d.share,o,a,P(d.share,c));return}const l=typeof re=="function"?re(r,i):void 0;if(l&&!l.lib&&!l.loaded)return;const y=o.canonical,m=await et(y,async()=>{const T=await i.get(),S=typeof T=="function"?T():T;return Promise.resolve(S)}),g=(T=>{let S=T;for(let A=0;A<5;A++){const w=S==null?void 0:S.default;if(!w||typeof w!="object"||Object.keys(w).length===0)break;const j=Object.keys(S).filter(v=>v!=="default").map(v=>S[v]);if(j.length>0&&j.some(v=>v!==void 0))break;S=w}return S})(m),R=g===m?{...m}:g;R.__esModule!==!0&&Object.defineProperty(R,"__esModule",{value:!0,enumerable:!1}),E(d.share,o,R,D)}))};const pe=t=>{var r,i;const e=I[t];if(!e.treeShaking&&((r=e.shareConfig)==null?void 0:r.import)!==!1)return!1;const n=u(t,(i=e.shareConfig)==null?void 0:i.singleton,e.version,e.scope);return e.treeShaking?B(d.share,n,D)===void 0&&h(d.share,n)===void 0:h(d.share,n)===void 0},tt=t=>{var i,o;const e=I[t],n=u(t,(i=e.shareConfig)==null?void 0:i.singleton,e.version,e.scope);return(e.treeShaking?B(d.share,n,D)??h(d.share,n):h(d.share,n))!==void 0?!1:e.treeShaking||((o=e.shareConfig)==null?void 0:o.import)===!1?!0:typeof U!="function"?!1:!!U(k[t],t,e,"version-first")},$=Z.findIndex(tt),nt=$===-1?Z:Z.slice(0,$);var rt=$===-1?[]:Z.slice($);await ve(nt);try{await _e(async()=>{await Promise.all(await H.initializeSharing("default",{strategy:"version-first",from:"build",initScope:f}))})}catch(t){console.error("[Module Federation]",t)}ze();const Pe=async()=>{for(const t of ce)await Promise.all(t.map(async e=>{const n=I[e];!n||n.materialize===!1||n.treeShaking||await Se(e,n,s[e],k[e],void 0)}))};await Pe(),Ke&&(ue=Pe);try{const t=(Ce=globalThis.__FEDERATION__)==null?void 0:Ce.__SHARE__,e=Object.create(null);if(t)for(const[,n]of Object.entries(t))for(const r of mt){const i=n==null?void 0:n[r];if(i)for(const[o,c]of Object.entries(i)){const a=I==null?void 0:I[o],l=k[o],y=ae.get(o);if(!a||!l||!y||a.treeShaking)continue;const m=e[o]||(e[o]=Object.create(null));for(const[_,g]of Object.entries(c)){if(!g.lib||y.version!==_||!z(g,y.provider))continue;const R=l[_];(g===R||R!=null&&R.from&&g.from===R.from)&&(g===a||a.from&&g.from===a.from||m[_]===void 0&&(m[_]=g))}}}for(const n of ce)await Promise.all(n.map(async r=>{const i=e[r];i&&await Se(r,I[r],i,k[r],ae.get(r))}))}catch(t){console.error("[Module Federation] Failed to bridge external shared modules",t)}const ot=async()=>{},it=async(t,e)=>{var T,S;const n=u(t,(T=e.shareConfig)==null?void 0:T.singleton,e.version,e.scope),r=e.treeShaking?B(d.share,n,D):h(d.share,n);if(((S=e.shareConfig)==null?void 0:S.import)!==!1||r!==void 0||re(t,e,k[t]))return;const i=A=>{let w=A;for(let j=0;j<5;j++){const v=w==null?void 0:w.default;if(!v||typeof v!="object"||Object.keys(v).length===0)break;const G=Object.keys(w).filter(F=>F!=="default").map(F=>w[F]);if(G.length>0&&G.some(F=>F!==void 0))break;w=v}return w},o=s==null?void 0:s[t],c=me(o,t,e,"version-first")||e,a=le(o,c);if(!a)return;const{version:l}=a,y=o==null?void 0:o[l],m=await ye(t,e.shareConfig,o,l,y,c,a.registered&&!z(c,e)),_=m==null?void 0:m.selection,g=m==null?void 0:m.provider,R=m==null?void 0:m.resolved;if(!_||z(g,e)||R===void 0||(e.treeShaking?B(d.share,n,D):h(d.share,n))!==void 0||_.registered&&(o==null?void 0:o[_.version])!==g)return;const b=i(R);if(e.treeShaking){const A=e.treeShaking.providedExports??e.treeShaking.usedExports??[];he(d.share,n,A,b),J(d.share,n,D,b)}else E(d.share,n,b,_.from)},Oe=[];for(const t of rt){const e=I[t];if(pe(t))try{e.treeShaking?await ot(t,e):((Ee=e.shareConfig)==null?void 0:Ee.import)===!1&&await it(t,e)}catch(n){console.error(`[Module Federation] Failed to resolve runtime-only shared module "${t}"`,n);break}if(pe(t))break;Oe.push(t)}return await ve(Oe),ut(H),H}async function Ot(s){const f=await St();if(!(s in f))throw new Error(`[Module Federation] Module ${s} does not exist in container.`);return ue&&await ue(),d.pendingShareLoads&&await Promise.all(d.pendingShareLoads),f[s]().then(u=>()=>u)}export{Ot as get,Pt as init};
2
2
 
3
3
  if (typeof document !== 'undefined' && document.head) {
4
4
  try {
5
- for (const __mfWarmupPath of ["assets/virtualExposes-a309i88F.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js"]) {
5
+ for (const __mfWarmupPath of ["assets/virtualExposes-DgzWcmof.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-BkReJy06.js","assets/vite-preload-helper-Dp1pzeXC.js","assets/index-2HOz3j7B.js"]) {
6
6
  const __mfWarmupLink = document.createElement('link');
7
7
  __mfWarmupLink.rel = 'modulepreload';
8
8
  __mfWarmupLink.crossOrigin = '';
@@ -572,10 +572,7 @@
572
572
  "sm": 12,
573
573
  "md": 12,
574
574
  "lg": 12,
575
- "xl": 12,
576
- "onChange": {
577
- "calculateFunc": "(data.products || []).map(row => ({...row,availableMarkets:Array.isArray(row.availableMarkets)?row.availableMarkets.map(v=>typeof v==='string'?v.trim():'').filter(Boolean).join(','):String(row.availableMarkets || '')}))"
578
- }
575
+ "xl": 12
579
576
  }
580
577
  }
581
578
  },
@@ -608,23 +605,17 @@
608
605
  "marginBottom": "4px"
609
606
  }
610
607
  },
611
- "reviewAcceptAll": {
612
- "type": "sendTo",
613
- "command": "markAllReviewItemsAccept",
614
- "label": {
615
- "en": "Set all to accept",
616
- "de": "Alle auf Übernehmen stellen"
617
- },
618
- "variant": "outlined",
619
- "showProcess": true,
620
- "useNative": true,
621
- "newLine": true,
608
+ "reviewEditor": {
609
+ "type": "custom",
610
+ "url": "custom/review/reviewEditor.js",
611
+ "name": "ShoppingRouteReviewSet/Components/ReviewEditor",
612
+ "guiApi": 2,
613
+ "i18n": false,
622
614
  "xs": 12,
623
615
  "sm": 12,
624
- "md": 6,
625
- "lg": 4,
626
- "xl": 3,
627
- "jsonData": "{\"native\":${JSON.stringify(data)}}"
616
+ "md": 12,
617
+ "lg": 12,
618
+ "xl": 12
628
619
  },
629
620
  "reviewItems": {
630
621
  "type": "table",
@@ -712,9 +703,7 @@
712
703
  "md": 12,
713
704
  "lg": 12,
714
705
  "xl": 12,
715
- "onChange": {
716
- "calculateFunc": "(data.reviewItems || []).map(row => ({...row,availableMarkets:Array.isArray(row.availableMarkets)?row.availableMarkets.map(v=>typeof v==='string'?v.trim():'').filter(Boolean).join(','):String(row.availableMarkets || '')}))"
717
- }
706
+ "hidden": "true"
718
707
  }
719
708
  }
720
709
  },
@@ -9,6 +9,17 @@ const parser_1 = require("./parser");
9
9
  const HEADER_PATTERN = /^═{5}\s+(.+?)\s+═{5}$/;
10
10
  const STAR_HEADER_PATTERN = /^\*\*\*\*\s+(.+?)\s+\*\*\*\*$/;
11
11
  const DASH_HEADER_PATTERN = /^----\s+(.+?)\s+----$/;
12
+ const SHORT_DASH_HEADER_PATTERN = /^[—–-]{1,5}\s+(.+?)\s+[—–-]{1,5}$/;
13
+ function stripManagedPrefixes(value) {
14
+ let text = String(value || '').trim();
15
+ for (let depth = 0; depth < 16; depth++) {
16
+ const match = text.match(/^(?:\d{2}>|\[\d{2}\])\s+(.+)$/s);
17
+ if (!match?.[1])
18
+ break;
19
+ text = String(match[1]).trim();
20
+ }
21
+ return text;
22
+ }
12
23
  function formatMarketHeader(market) {
13
24
  return `═════ ${String(market || '').trim().toLocaleUpperCase('de-DE')} ═════`;
14
25
  }
@@ -19,15 +30,20 @@ function formatMarketHeader(market) {
19
30
  * @param markets Configured active markets.
20
31
  */
21
32
  function marketNameFromHeader(value, markets) {
22
- const text = String(value || '').trim();
23
- const match = text.match(HEADER_PATTERN) || text.match(STAR_HEADER_PATTERN) || text.match(DASH_HEADER_PATTERN);
33
+ const text = stripManagedPrefixes(value);
34
+ const match = text.match(HEADER_PATTERN) || text.match(STAR_HEADER_PATTERN) || text.match(DASH_HEADER_PATTERN) || text.match(SHORT_DASH_HEADER_PATTERN);
24
35
  if (!match?.[1])
25
36
  return undefined;
26
37
  const wanted = (0, parser_1.normalize)(match[1]);
27
38
  return markets.find(market => market.enabled !== false && (0, parser_1.normalize)(market.name) === wanted)?.name;
28
39
  }
29
40
  function isMarketHeader(value, markets) {
30
- return Boolean(marketNameFromHeader(value, markets));
41
+ const text = stripManagedPrefixes(value);
42
+ return Boolean(text.match(HEADER_PATTERN) ||
43
+ text.match(STAR_HEADER_PATTERN) ||
44
+ text.match(DASH_HEADER_PATTERN) ||
45
+ text.match(SHORT_DASH_HEADER_PATTERN) ||
46
+ marketNameFromHeader(value, markets));
31
47
  }
32
48
  function realActiveItems(list, markets) {
33
49
  return list.filter(item => item &&
@@ -24,7 +24,14 @@ function parseSortPrefix(text) {
24
24
  return { number, originalText };
25
25
  }
26
26
  function stripSortPrefix(text) {
27
- return parseSortPrefix(text)?.originalText ?? String(text || '').trim();
27
+ let value = String(text || '').trim();
28
+ for (let depth = 0; depth < 16; depth++) {
29
+ const parsed = parseSortPrefix(value);
30
+ if (!parsed)
31
+ break;
32
+ value = parsed.originalText;
33
+ }
34
+ return value;
28
35
  }
29
36
  function formatSortPrefix(number, originalText) {
30
37
  if (!Number.isInteger(number) || number < 0 || number > 99) {
@@ -84,6 +91,8 @@ function buildPrefixTargets(items, markets, routes, products, fallbackMarket, pr
84
91
  }
85
92
  continue;
86
93
  }
94
+ if ((0, market_plan_1.isMarketHeader)(text, markets))
95
+ continue;
87
96
  real.push({ ...item, value: text });
88
97
  }
89
98
  const manualById = new Map((0, manual_order_1.overridesForList)(manualOverrides, listName).map(entry => [entry.itemId, entry]));
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeAvailableMarkets = normalizeAvailableMarkets;
4
+ exports.normalizeProductAvailableMarkets = normalizeProductAvailableMarkets;
3
5
  exports.markAllReviewItemsAccept = markAllReviewItemsAccept;
6
+ function normalizeAvailableMarkets(value) {
7
+ const values = Array.isArray(value) ? value : typeof value === 'string' ? value.split(/[;,]/) : [];
8
+ return [...new Set(values
9
+ .map(entry => typeof entry === 'string' ? entry.trim() : '')
10
+ .filter(Boolean))];
11
+ }
12
+ function normalizeProductAvailableMarkets(products) {
13
+ return products.map(product => ({
14
+ ...product,
15
+ availableMarkets: normalizeAvailableMarkets(product.availableMarkets),
16
+ }));
17
+ }
4
18
  /**
5
19
  * Apply the Admin review-table bulk action without dropping any row fields.
6
20
  *
@@ -9,12 +23,7 @@ exports.markAllReviewItemsAccept = markAllReviewItemsAccept;
9
23
  function markAllReviewItemsAccept(rows) {
10
24
  return rows.map(item => ({
11
25
  ...item,
12
- availableMarkets: Array.isArray(item.availableMarkets)
13
- ? item.availableMarkets
14
- .map(value => typeof value === 'string' ? value.trim() : '')
15
- .filter(Boolean)
16
- .join(',')
17
- : String(item.availableMarkets || ''),
26
+ availableMarkets: normalizeAvailableMarkets(item.availableMarkets),
18
27
  action: 'accept',
19
28
  }));
20
29
  }
@@ -110,7 +110,6 @@ function applyReviewActions(products, reviewItems) {
110
110
  const remaining = [];
111
111
  for (const review of reviewItems) {
112
112
  if (review.action === 'accepted') {
113
- remaining.push({ ...review });
114
113
  continue;
115
114
  }
116
115
  if (review.action !== 'accept') {
@@ -138,7 +137,6 @@ function applyReviewActions(products, reviewItems) {
138
137
  existing.aliases = [...aliases].join(',');
139
138
  }
140
139
  accepted.push({ ...existing });
141
- remaining.push({ ...review, action: 'accepted' });
142
140
  continue;
143
141
  }
144
142
  const product = {
@@ -152,7 +150,6 @@ function applyReviewActions(products, reviewItems) {
152
150
  };
153
151
  merged.push(product);
154
152
  accepted.push(product);
155
- remaining.push({ ...review, action: 'accepted' });
156
153
  }
157
154
  return {
158
155
  products: merged.sort((a, b) => a.name.localeCompare(b.name, 'de', { sensitivity: 'base' })),
package/build/main.js CHANGED
@@ -49,7 +49,7 @@ const review_tools_1 = require("./lib/review-tools");
49
49
  const manual_order_1 = require("./lib/manual-order");
50
50
  const state_change_1 = require("./lib/state-change");
51
51
  const direct_sort_lifecycle_1 = require("./lib/direct-sort-lifecycle");
52
- const VERSION = '0.3.7';
52
+ const VERSION = '0.4.0';
53
53
  const COLLECT_WINDOW_MS = 5000;
54
54
  const MAX_ACTIVE_ITEMS = 99;
55
55
  const OWN_REFRESH_MAX_MS = 30000;
@@ -195,9 +195,11 @@ class ShoppingRoute extends utils.Adapter {
195
195
  return state;
196
196
  }
197
197
  async onReady() {
198
- this.runtimeProducts = (Array.isArray(this.cfg.products) ? this.cfg.products : [])
199
- .filter(product => product?.name).map(product => ({ ...product }))
198
+ const configuredProducts = (Array.isArray(this.cfg.products) ? this.cfg.products : [])
199
+ .filter(product => product?.name).map(product => ({ ...product }));
200
+ this.runtimeProducts = (0, review_tools_1.normalizeProductAvailableMarkets)(configuredProducts)
200
201
  .sort((a, b) => a.name.localeCompare(b.name, 'de', { sensitivity: 'base' }));
202
+ this.productsDirty = JSON.stringify(this.runtimeProducts) !== JSON.stringify(configuredProducts);
201
203
  this.runtimeReviews = (Array.isArray(this.cfg.reviewItems) ? this.cfg.reviewItems : []).map(item => ({ ...item }));
202
204
  this.runtimeRoutes = (0, config_tools_1.normalizeRoutesForAdmin)(Array.isArray(this.cfg.routes) ? this.cfg.routes.filter(Boolean) : []);
203
205
  this.routesDirty = JSON.stringify(this.runtimeRoutes) !== JSON.stringify(Array.isArray(this.cfg.routes) ? this.cfg.routes : []);
@@ -205,13 +207,17 @@ class ShoppingRoute extends utils.Adapter {
205
207
  await this.loadStatistics();
206
208
  await this.loadManualOverrides();
207
209
  const reviewResult = (0, sorter_1.applyReviewActions)(this.runtimeProducts, this.runtimeReviews);
208
- if (reviewResult.accepted.length) {
210
+ const reviewQueueChanged = JSON.stringify(reviewResult.remainingReviews) !== JSON.stringify(this.runtimeReviews);
211
+ if (reviewResult.accepted.length || reviewQueueChanged) {
209
212
  this.runtimeProducts = reviewResult.products;
210
213
  this.runtimeReviews = reviewResult.remainingReviews;
211
- this.productsDirty = true;
214
+ if (reviewResult.accepted.length)
215
+ this.productsDirty = true;
212
216
  this.reviewsDirty = true;
213
- this.statistics.reviewAccepted += reviewResult.accepted.length;
214
- await this.persistStatistics();
217
+ if (reviewResult.accepted.length) {
218
+ this.statistics.reviewAccepted += reviewResult.accepted.length;
219
+ await this.persistStatistics();
220
+ }
215
221
  }
216
222
  await this.ensureProductGroupsConfig();
217
223
  await this.updateTemporaryMarketStateOptions();
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "shoppingroute",
4
- "version": "0.3.7",
4
+ "version": "0.4.0",
5
5
  "titleLang": {
6
6
  "en": "ShoppingRoute",
7
7
  "de": "ShoppingRoute",
@@ -60,6 +60,45 @@
60
60
  "icon": "shoppingroute.png",
61
61
  "tier": 3,
62
62
  "news": {
63
+ "0.4.0": {
64
+ "en": "Fixes the complete review workflow: accepted rows are removed after saving and restart, products are not duplicated, and all selected available markets remain arrays.",
65
+ "de": "Behebt den vollständigen Prüflistenablauf: Übernommene Zeilen werden nach Speichern und Neustart entfernt, Artikel nicht dupliziert und alle ausgewählten verfügbaren Märkte bleiben Arrays.",
66
+ "ru": "Исправляет полный цикл проверки: принятые строки удаляются после сохранения и перезапуска, товары не дублируются, а выбранные доступные магазины остаются массивами.",
67
+ "pt": "Corrige o fluxo completo de revisão: as linhas aceites são removidas após guardar e reiniciar, os artigos não são duplicados e os mercados disponíveis selecionados permanecem arrays.",
68
+ "nl": "Herstelt de volledige controleworkflow: geaccepteerde regels verdwijnen na opslaan en herstarten, artikelen worden niet gedupliceerd en geselecteerde beschikbare winkels blijven arrays.",
69
+ "fr": "Corrige le flux complet de vérification : les lignes acceptées sont supprimées après enregistrement et redémarrage, les articles ne sont pas dupliqués et les magasins disponibles restent des tableaux.",
70
+ "it": "Corregge il flusso completo di revisione: le righe accettate vengono rimosse dopo salvataggio e riavvio, gli articoli non vengono duplicati e i negozi disponibili restano array.",
71
+ "es": "Corrige el flujo completo de revisión: las filas aceptadas se eliminan tras guardar y reiniciar, los artículos no se duplican y los mercados disponibles seleccionados permanecen como arrays.",
72
+ "pl": "Naprawia pełny proces weryfikacji: zaakceptowane wiersze są usuwane po zapisaniu i restarcie, artykuły nie są duplikowane, a wybrane dostępne sklepy pozostają tablicami.",
73
+ "uk": "Виправляє повний цикл перевірки: прийняті рядки видаляються після збереження й перезапуску, товари не дублюються, а вибрані доступні магазини залишаються масивами.",
74
+ "zh-cn": "修复完整审核流程:已接受的行会在保存和重启后移除,商品不会重复,所有选中的可用商店始终以数组保存。"
75
+ },
76
+ "0.3.9": {
77
+ "en": "Replaces incomplete GitHub-installed 0.3.8 snapshots. Normalizes available-market selections, removes accepted review rows and orphaned market headings, and delivers the corrected single-column shopping-list view.",
78
+ "de": "Ersetzt unvollständige, direkt von GitHub installierte 0.3.8-Zwischenstände. Vereinheitlicht verfügbare Märkte, entfernt übernommene Prüflistenzeilen und verwaiste Marktüberschriften und liefert die korrigierte einspaltige Einkaufslistenansicht.",
79
+ "ru": "Заменяет неполные сборки 0.3.8, установленные напрямую с GitHub. Нормализует выбор доступных магазинов, удаляет принятые строки проверки и пустые заголовки магазинов и исправляет одноколоночный список покупок.",
80
+ "pt": "Substitui versões incompletas 0.3.8 instaladas diretamente do GitHub. Normaliza mercados disponíveis, remove linhas de revisão aceites e cabeçalhos de mercado órfãos e corrige a lista de compras numa coluna.",
81
+ "nl": "Vervangt onvolledige 0.3.8-versies die rechtstreeks van GitHub zijn geïnstalleerd. Normaliseert beschikbare winkels, verwijdert geaccepteerde controleregels en verweesde winkelkoppen en levert de gecorrigeerde boodschappenlijst in één kolom.",
82
+ "fr": "Remplace les versions 0.3.8 incomplètes installées directement depuis GitHub. Normalise les magasins disponibles, supprime les lignes de vérification acceptées et les en-têtes orphelins, et corrige la liste de courses sur une colonne.",
83
+ "it": "Sostituisce le versioni 0.3.8 incomplete installate direttamente da GitHub. Normalizza i negozi disponibili, rimuove le righe di revisione accettate e le intestazioni orfane e corregge la lista della spesa a colonna singola.",
84
+ "es": "Sustituye versiones 0.3.8 incompletas instaladas directamente desde GitHub. Normaliza los mercados disponibles, elimina filas de revisión aceptadas y encabezados huérfanos y corrige la lista de compra en una sola columna.",
85
+ "pl": "Zastępuje niepełne wersje 0.3.8 instalowane bezpośrednio z GitHub. Normalizuje dostępne sklepy, usuwa zaakceptowane wiersze weryfikacji i osierocone nagłówki oraz poprawia jednokolumnową listę zakupów.",
86
+ "uk": "Замінює неповні версії 0.3.8, установлені безпосередньо з GitHub. Нормалізує доступні магазини, видаляє прийняті рядки перевірки й осиротілі заголовки та виправляє одноколонковий список покупок.",
87
+ "zh-cn": "替换直接从 GitHub 安装的不完整 0.3.8 版本。统一可用商店选择,删除已接受的审核行和孤立商店标题,并修正单列购物清单视图。"
88
+ },
89
+ "0.3.8": {
90
+ "en": "Fixes the review queue so accepted items immediately update the article catalogue and remain “Accepted”, filters legacy market headers and nested sort prefixes, simplifies the current shopping-list Admin view, and updates CI/checker compatibility.",
91
+ "de": "Behebt die Prüfliste: Übernommene Einträge aktualisieren den Artikelstamm sofort und bleiben „Übernommen“. Außerdem werden alte Marktüberschriften und verschachtelte Sortierpräfixe gefiltert, die aktuelle Einkaufsliste im Admin vereinfacht und CI/Checker-Kompatibilität aktualisiert.",
92
+ "ru": "Исправлена очередь проверки: принятые позиции сразу обновляют каталог товаров и сохраняют статус «Принято». Также фильтруются старые заголовки магазинов и вложенные префиксы сортировки, упрощено отображение текущего списка покупок в Admin и обновлена совместимость CI/проверок.",
93
+ "pt": "Corrige a fila de revisão: os itens aceites atualizam imediatamente o catálogo de artigos e mantêm o estado “Aceite”. Também filtra cabeçalhos de mercado antigos e prefixos de ordenação aninhados, simplifica a lista de compras atual no Admin e atualiza a compatibilidade de CI/verificador.",
94
+ "nl": "Verbetert de controlelijst: geaccepteerde items werken de artikelcatalogus direct bij en blijven op “Overgenomen”. Ook worden oude winkelkoppen en geneste sorteerprefixen gefilterd, de actuele boodschappenlijst in Admin vereenvoudigd en de CI/checker-compatibiliteit bijgewerkt.",
95
+ "fr": "Corrige la file de vérification : les éléments acceptés mettent immédiatement à jour le catalogue et conservent l’état « Accepté ». Filtre aussi les anciens en-têtes de magasin et les préfixes de tri imbriqués, simplifie la liste de courses actuelle dans Admin et met à jour la compatibilité CI/vérificateur.",
96
+ "it": "Corregge la coda di revisione: gli elementi accettati aggiornano subito il catalogo e mantengono lo stato “Accettato”. Filtra inoltre le vecchie intestazioni dei negozi e i prefissi di ordinamento annidati, semplifica la lista della spesa corrente in Admin e aggiorna la compatibilità CI/checker.",
97
+ "es": "Corrige la cola de revisión: los elementos aceptados actualizan inmediatamente el catálogo y conservan el estado «Aceptado». También filtra encabezados antiguos de tiendas y prefijos de ordenación anidados, simplifica la lista de compra actual en Admin y actualiza la compatibilidad de CI/verificador.",
98
+ "pl": "Naprawia kolejkę weryfikacji: zaakceptowane pozycje natychmiast aktualizują katalog artykułów i zachowują status „Zaakceptowano”. Filtruje też stare nagłówki sklepów i zagnieżdżone prefiksy sortowania, upraszcza bieżącą listę zakupów w Adminie oraz aktualizuje zgodność CI/checkera.",
99
+ "uk": "Виправлено чергу перевірки: прийняті позиції одразу оновлюють каталог товарів і зберігають статус «Прийнято». Також фільтруються старі заголовки магазинів і вкладені префікси сортування, спрощено поточний список покупок в Admin та оновлено сумісність CI/перевірок.",
100
+ "zh-cn": "修复审核队列:已接受的条目会立即更新商品目录并保持“已接受”状态。同时过滤旧版商店标题和嵌套排序前缀,简化 Admin 中的当前购物清单视图,并更新 CI/检查器兼容性。"
101
+ },
63
102
  "0.3.7": {
64
103
  "en": "Adds an interactive Admin shopping list with drag-and-drop/manual movement between markets, persistent per-item manual overrides, responsive Admin improvements, and a retained “accepted” review status after normal Save.",
65
104
  "de": "Ergänzt eine interaktive Einkaufsliste im Admin mit Drag&Drop/manuellem Verschieben zwischen Märkten, dauerhaften manuellen Artikel-Overrides, Responsive-Verbesserungen und einem erhaltenen Status „Übernommen“ nach normalem Speichern.",
@@ -111,58 +150,6 @@
111
150
  "pl": "Dodano zgodność niestandardowych komponentów panelu z Admin 8, poprawiono opcjonalny dziennik podsumowania sortowania i nagłówki sklepów, naprawiono akcję „Zaakceptuj wszystko” w kolejce weryfikacji, wprowadzono wymóg potwierdzonych wartości dla zewnętrznych stanów Alexa2 oraz usunięto przestarzałą konfigurację, wewnętrzne sprawdzanie npm i zaciemnianie kodu dla lepszej zgodności z repozytorium.",
112
151
  "uk": "Додано сумісність користувацьких компонентів Admin з Admin 8, покращено необов’язковий підсумковий журнал сортування та заголовки магазинів, виправлено дію «Прийняти все» в черзі перевірки, для зовнішніх станів Alexa2 тепер потрібні підтверджені значення, а застарілі налаштування, внутрішню перевірку npm і обфускацію коду видалено для кращої сумісності з репозиторієм.",
113
152
  "zh-cn": "新增自定义管理组件的 Admin 8 兼容性,改进可选排序摘要日志和商店标题,修复审核队列的“全部接受”操作,要求外部 Alexa2 状态使用已确认值,并移除过时配置、内部 npm 检查和代码混淆,以提高仓库兼容性。"
114
- },
115
- "0.3.3": {
116
- "en": "New direct 00>–99> prefix sorting for Alexa lists in A–Z, with very fast incremental insertion into free number gaps, suffix rebuilds only when a gap is exhausted, direct Amazon confirmation and final verification.",
117
- "de": "Neue direkte 00>–99>-Präfixsortierung für Alexa-Listen in A–Z mit sehr schnellen inkrementellen Einfügungen in freie Nummernlücken, Suffix-Rebuild nur bei ausgeschöpfter Lücke, direkter Amazon-Bestätigung und abschließender Verifikation.",
118
- "ru": "Новая прямая сортировка по префиксам 00>–99> для списков Alexa в режиме A–Z: очень быстрая поэтапная вставка в свободные числовые промежутки, перестроение суффикса только при отсутствии места, прямое подтверждение Amazon и итоговая проверка.",
119
- "pt": "Nova ordenação direta por prefixos 00>–99> para listas Alexa em A–Z, com inserções incrementais muito rápidas em intervalos numéricos livres, reconstrução do sufixo apenas quando o intervalo se esgota, confirmação direta da Amazon e verificação final.",
120
- "nl": "Nieuwe directe 00>–99>-prefixsortering voor Alexa-lijsten in A–Z, met zeer snelle incrementele invoegingen in vrije nummergaten, alleen een suffix-rebuild als een gat vol is, directe Amazon-bevestiging en eindcontrole.",
121
- "fr": "Nouveau tri direct par préfixes 00>–99> pour les listes Alexa en A–Z, avec insertions incrémentales très rapides dans les intervalles numériques libres, reconstruction du suffixe uniquement quand l’intervalle est épuisé, confirmation Amazon directe et vérification finale.",
122
- "it": "Nuovo ordinamento diretto con prefissi 00>–99> per le liste Alexa in A–Z, con inserimenti incrementali molto rapidi negli intervalli numerici liberi, ricostruzione del suffisso solo quando lo spazio è esaurito, conferma Amazon diretta e verifica finale.",
123
- "es": "Nueva ordenación directa por prefijos 00>–99> para listas Alexa en A–Z, con inserciones incrementales muy rápidas en huecos numéricos libres, reconstrucción del sufijo solo cuando se agota el hueco, confirmación directa de Amazon y verificación final.",
124
- "pl": "Nowe bezpośrednie sortowanie prefiksami 00>–99> dla list Alexa w trybie A–Z, z bardzo szybkim wstawianiem przyrostowym w wolne luki numeracji, przebudową sufiksu tylko po wyczerpaniu luki, bezpośrednim potwierdzeniem Amazon i końcową weryfikacją.",
125
- "uk": "Нове пряме сортування за префіксами 00>–99> для списків Alexa в режимі A–Z: дуже швидке інкрементне вставлення у вільні числові проміжки, перебудова суфікса лише за відсутності місця, пряме підтвердження Amazon і фінальна перевірка.",
126
- "zh-cn": "全新的 Alexa A–Z 列表直接 00>–99> 前缀排序:可快速增量插入空闲编号间隙,仅在间隙耗尽时重建后缀,并使用 Amazon 直接确认和最终校验。"
127
- },
128
- "0.3.0": {
129
- "en": "Development preview for automatic market headings and minimum-items-per-market route consolidation. Explicit market requests always remain unchanged.",
130
- "de": "Entwicklungsvorschau mit automatischen Marktüberschriften und marktübergreifender Zusammenlegung anhand einer Mindestartikelzahl. Explizite Marktangaben bleiben immer unverändert.",
131
- "ru": "Предварительная версия с автоматическими заголовками магазинов и объединением маршрута по минимальному количеству товаров. Явно указанные магазины никогда не изменяются.",
132
- "pt": "Prévia com cabeçalhos automáticos de mercados e consolidação de rota por quantidade mínima de itens. Mercados indicados explicitamente nunca são alterados.",
133
- "nl": "Ontwikkelversie met automatische winkelkoppen en routeconsolidatie op basis van een minimumaantal artikelen. Expliciet opgegeven winkels blijven altijd ongewijzigd.",
134
- "fr": "Aperçu de développement avec en-têtes automatiques de magasins et consolidation selon un nombre minimum d’articles. Les magasins explicitement indiqués ne sont jamais modifiés.",
135
- "it": "Anteprima di sviluppo con intestazioni automatiche dei negozi e consolidamento in base a un numero minimo di articoli. I negozi indicati esplicitamente non vengono mai modificati.",
136
- "es": "Vista previa con encabezados automáticos de tiendas y consolidación según un número mínimo de artículos. Las tiendas indicadas explícitamente nunca se modifican.",
137
- "pl": "Wersja rozwojowa z automatycznymi nagłówkami sklepów i konsolidacją na podstawie minimalnej liczby artykułów. Jawnie wskazane sklepy nigdy nie są zmieniane.",
138
- "uk": "Попередня версія з автоматичними заголовками магазинів і об’єднанням маршруту за мінімальною кількістю товарів. Явно вказані магазини ніколи не змінюються.",
139
- "zh-cn": "开发预览版:自动商店标题,并按每个商店的最少商品数量合并路线。明确指定的商店永远不会被更改。"
140
- },
141
- "0.2.0": {
142
- "en": "First stable release of ShoppingRoute with complete Admin translations, improved walking-route help, protected npm publishing and verified Alexa2/alexa-remote2 compatibility.",
143
- "de": "Erste stabile Veröffentlichung von ShoppingRoute mit vollständigen Admin-Übersetzungen, korrigiertem Laufwege-Hilfetext, geschützter npm-Veröffentlichung und geprüfter Alexa2/alexa-remote2-Kompatibilität.",
144
- "ru": "Первый стабильный выпуск ShoppingRoute с полными переводами интерфейса администратора, улучшенной справкой по маршрутам, защищённой публикацией npm и проверенной совместимостью Alexa2/alexa-remote2.",
145
- "pt": "Primeira versão estável do ShoppingRoute com traduções completas da interface de administração, ajuda aprimorada para percursos, publicação npm protegida e compatibilidade Alexa2/alexa-remote2 verificada.",
146
- "nl": "Eerste stabiele release van ShoppingRoute met volledige Admin-vertalingen, verbeterde hulp voor looproutes, beveiligde npm-publicatie en gecontroleerde Alexa2/alexa-remote2-compatibiliteit.",
147
- "fr": "Première version stable de ShoppingRoute avec traductions complètes de l’interface Admin, aide améliorée pour les parcours, publication npm sécurisée et compatibilité Alexa2/alexa-remote2 vérifiée.",
148
- "it": "Prima versione stabile di ShoppingRoute con traduzioni complete dell'interfaccia Admin, guida migliorata per i percorsi, pubblicazione npm protetta e compatibilità Alexa2/alexa-remote2 verificata.",
149
- "es": "Primera versión estable de ShoppingRoute con traducciones completas de la interfaz de administración, ayuda mejorada para los recorridos, publicación npm protegida y compatibilidad Alexa2/alexa-remote2 verificada.",
150
- "pl": "Pierwsze stabilne wydanie ShoppingRoute z pełnymi tłumaczeniami panelu administracyjnego, ulepszoną pomocą dla tras, zabezpieczonym publikowaniem npm i zweryfikowaną zgodnością Alexa2/alexa-remote2.",
151
- "uk": "Перший стабільний випуск ShoppingRoute з повними перекладами інтерфейсу Admin, покращеною довідкою для маршрутів, захищеною публікацією npm та перевіреною сумісністю Alexa2/alexa-remote2.",
152
- "zh-cn": "ShoppingRoute 首个稳定版本,包含完整的 Admin 翻译、改进的行走路线帮助、安全的 npm 发布流程以及经过验证的 Alexa2/alexa-remote2 兼容性。"
153
- },
154
- "0.3.1": {
155
- "en": "Fixed a restart loop in review learning mode.",
156
- "de": "Neustartschleife im Lernmodus Prüfliste behoben.",
157
- "ru": "Исправлен цикл перезапуска в режиме проверки обучения.",
158
- "pt": "Corrigido um ciclo de reinicialização no modo de revisão.",
159
- "nl": "Herstartlus in de controle-leermodus opgelost.",
160
- "fr": "Correction d'une boucle de redémarrage en mode de vérification.",
161
- "it": "Risolto un ciclo di riavvio nella modalità di revisione.",
162
- "es": "Corregido un bucle de reinicio en el modo de revisión.",
163
- "pl": "Naprawiono pętlę restartów w trybie weryfikacji.",
164
- "uk": "Виправлено цикл перезапуску в режимі перевірки.",
165
- "zh-cn": "修复审核学习模式中的重启循环。"
166
153
  }
167
154
  },
168
155
  "extIcon": "https://raw.githubusercontent.com/RaviniZib/ioBroker.shoppingroute/main/admin/shoppingroute.png",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.shoppingroute",
3
- "version": "0.3.7",
3
+ "version": "0.4.0",
4
4
  "description": "Smart Alexa shopping-list routing by market, product group and individual store walking route with learning, multi-list support and API protection.",
5
5
  "author": "RaviniZib",
6
6
  "license": "MIT",
@@ -34,7 +34,7 @@
34
34
  "README_DE.md"
35
35
  ],
36
36
  "scripts": {
37
- "build": "npm run build:admin && tsc -p tsconfig.json",
37
+ "build": "tsc -p tsconfig.json && npm run build:admin",
38
38
  "build:admin": "node scripts/build-admin.js",
39
39
  "check": "tsc -p tsconfig.json --noEmit",
40
40
  "test": "npm run build && node --test test/*.test.js",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@iobroker/eslint-config": "^2.3.4",
53
- "@iobroker/testing": "^5.2.2",
53
+ "@iobroker/testing": "^6.1.0",
54
54
  "@module-federation/vite": "^1.4.1",
55
55
  "@tsconfig/node22": "^22.0.5",
56
56
  "@types/node": "^22.15.0",
@@ -1,72 +0,0 @@
1
- import"../shoppingListEditor.js";import{_ as m,a as b}from"./_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1__loadShare__react__loadShare__.js-DKxc1wk0.js";import"./vite-preload-helper-Dp1pzeXC.js";import"./index-2HOz3j7B.js";var p={exports:{}};const g=m||b,o=g.createElement,i=(u,t)=>(typeof navigator<"u"?String(navigator.language||"").toLowerCase():"de").startsWith("de")?u:t,y=`
2
- .shoppingroute-list-toolbar {
3
- display: flex;
4
- flex-wrap: wrap;
5
- gap: 10px;
6
- align-items: center;
7
- margin-bottom: 14px;
8
- }
9
- .shoppingroute-list-toolbar select,
10
- .shoppingroute-list-toolbar button,
11
- .shoppingroute-card select {
12
- min-height: 38px;
13
- box-sizing: border-box;
14
- }
15
- .shoppingroute-market-grid {
16
- display: grid;
17
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
18
- gap: 12px;
19
- align-items: start;
20
- }
21
- .shoppingroute-market-column {
22
- min-width: 0;
23
- border: 1px solid currentColor;
24
- border-radius: 8px;
25
- padding: 10px;
26
- opacity: 0.94;
27
- }
28
- .shoppingroute-card {
29
- border: 1px solid currentColor;
30
- border-radius: 6px;
31
- padding: 9px;
32
- margin: 8px 0;
33
- background: rgba(127, 127, 127, 0.08);
34
- cursor: grab;
35
- }
36
- .shoppingroute-card-controls {
37
- display: flex;
38
- flex-wrap: wrap;
39
- gap: 6px;
40
- margin-top: 8px;
41
- align-items: center;
42
- }
43
- .shoppingroute-card-controls select {
44
- min-width: 0;
45
- flex: 1 1 130px;
46
- }
47
- .shoppingroute-list-button {
48
- min-width: 38px;
49
- min-height: 34px;
50
- border: 1px solid currentColor;
51
- border-radius: 4px;
52
- background: transparent;
53
- color: inherit;
54
- cursor: pointer;
55
- }
56
- .shoppingroute-list-button:disabled {
57
- cursor: default;
58
- opacity: 0.4;
59
- }
60
- @media (max-width: 600px) {
61
- .shoppingroute-market-grid {
62
- grid-template-columns: 1fr;
63
- }
64
- .shoppingroute-list-toolbar > * {
65
- width: 100%;
66
- max-width: none;
67
- }
68
- .shoppingroute-card {
69
- cursor: default;
70
- }
71
- }
72
- `;class c extends g.Component{constructor(t){super(t),this.state={view:null,loading:!0,busy:"",error:""}}componentDidMount(){this.load()}instanceName(){const t=String(this.props.adapterName||"shoppingroute"),e=Number.isFinite(Number(this.props.instance))?Number(this.props.instance):0;return`${t}.${e}`}async send(t,e){var s;if(!((s=this.props.socket)!=null&&s.sendTo))throw new Error("Admin socket is unavailable.");return this.props.socket.sendTo(this.instanceName(),t,e||{})}async load(t){this.setState({loading:!0,error:""});try{const e=await this.send("getShoppingList",{listName:t});if(!e||e.error)throw new Error((e==null?void 0:e.error)||"Shopping list could not be loaded.");this.setState({view:e,loading:!1,busy:""})}catch(e){this.setState({loading:!1,busy:"",error:e instanceof Error?e.message:String(e)})}}async move(t,e,s){const n=this.state.view;if(!(!n||this.state.busy)){this.setState({busy:t,error:""});try{const r=await this.send("moveShoppingItem",{listName:n.listName,itemId:t,targetMarket:e,targetPosition:s});if(r!=null&&r.view&&this.setState({view:r.view}),!(r!=null&&r.ok))throw new Error((r==null?void 0:r.error)||"The item could not be moved.");this.setState({busy:""})}catch(r){this.setState({busy:"",error:r instanceof Error?r.message:String(r)}),await this.load(n.listName)}}}async clearManual(){const t=this.state.view;if(!(!t||this.state.busy)){this.setState({busy:"__clear__",error:""});try{const e=await this.send("clearManualShoppingOrder",{listName:t.listName});if(e!=null&&e.view&&this.setState({view:e.view}),!(e!=null&&e.ok))throw new Error((e==null?void 0:e.error)||"Manual order could not be cleared.");this.setState({busy:""})}catch(e){this.setState({busy:"",error:e instanceof Error?e.message:String(e)}),await this.load(t.listName)}}}onDragStart(t,e){t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e)}onDrop(t,e,s){t.preventDefault();const n=t.dataTransfer.getData("text/plain");n&&this.move(n,e,s)}renderCard(t,e,s,n){const r=!!this.state.busy;return o("div",{key:t.id,className:"shoppingroute-card",draggable:!r,onDragStart:a=>this.onDragStart(a,t.id),onDragOver:a=>a.preventDefault(),onDrop:a=>this.onDrop(a,t.market,s),title:i("Ziehen oder die Schaltflächen benutzen","Drag or use the buttons")},[o("div",{key:"text",style:{fontWeight:600,wordBreak:"break-word"}},t.text),o("div",{key:"meta",style:{fontSize:"0.82rem",opacity:.72,marginTop:"3px"}},(t.category||i("Ohne Produktgruppe","No product group"))+(t.manual?` · ${i("manuell","manual")}`:"")),o("div",{key:"controls",className:"shoppingroute-card-controls"},[o("button",{key:"up",type:"button",className:"shoppingroute-list-button",disabled:r||s===0,title:i("Nach oben","Move up"),onClick:()=>void this.move(t.id,t.market,s-1)},"↑"),o("button",{key:"down",type:"button",className:"shoppingroute-list-button",disabled:r||s===e.length-1,title:i("Nach unten","Move down"),onClick:()=>void this.move(t.id,t.market,s+1)},"↓"),o("select",{key:"market",value:t.market,disabled:r,"aria-label":i("In einen anderen Markt verschieben","Move to another market"),onChange:a=>{const l=a.target.value,d=n.items.filter(h=>h.market===l&&h.id!==t.id).length;this.move(t.id,l,d)}},n.markets.map(a=>o("option",{key:a,value:a},a)))])])}render(){const t=this.state.view,e=!!this.state.busy,s=[o("style",{key:"styles"},y)];if(s.push(o("div",{key:"intro",style:{marginBottom:"12px",lineHeight:1.45}},[o("strong",{key:"title"},i("Aktuelle Einkaufsliste","Current shopping list")),o("div",{key:"hint",style:{opacity:.75,marginTop:"3px"}},i("Artikel können gezogen oder mit Pfeilen und Marktauswahl verschoben werden. Änderungen werden direkt in Alexa bestätigt.","Items can be dragged or moved with the arrows and market selector. Changes are confirmed directly in Alexa."))])),this.state.error&&s.push(o("div",{key:"error",style:{padding:"9px",border:"1px solid currentColor",borderRadius:"6px",marginBottom:"10px"}},this.state.error)),this.state.loading||!t)return s.push(o("div",{key:"loading"},i("Liste wird geladen …","Loading list …"))),o("div",{style:{width:"100%"}},s);s.push(o("div",{key:"toolbar",className:"shoppingroute-list-toolbar"},[o("select",{key:"list",value:t.listName,disabled:e,onChange:r=>void this.load(r.target.value),"aria-label":i("Einkaufsliste auswählen","Select shopping list")},t.lists.map(r=>o("option",{key:r,value:r},r))),o("button",{key:"refresh",type:"button",className:"shoppingroute-list-button",disabled:e,onClick:()=>void this.load(t.listName)},i("Aktualisieren","Refresh")),o("button",{key:"clear",type:"button",className:"shoppingroute-list-button",disabled:e,onClick:()=>void this.clearManual()},i("Manuelle Reihenfolge zurücksetzen","Reset manual order")),t.dryRun?o("strong",{key:"dry",style:{marginLeft:"auto"}},i("Dry Run aktiv – Verschieben gesperrt","Dry Run active – moving is disabled")):null]));const n=t.markets.map(r=>{const a=t.items.filter(l=>l.market===r);return o("section",{key:r,className:"shoppingroute-market-column",onDragOver:l=>l.preventDefault(),onDrop:l=>this.onDrop(l,r,a.length)},[o("h3",{key:"title",style:{margin:"0 0 6px"}},`${r} (${a.length})`),a.length?a.map((l,d)=>this.renderCard(l,a,d,t)):o("div",{key:"empty",style:{opacity:.62,padding:"12px 0"}},i("Hierher ziehen","Drop here"))])});return s.push(o("div",{key:"grid",className:"shoppingroute-market-grid"},n)),o("div",{style:{width:"100%"}},s)}}p.exports={Components:{ShoppingListEditor:c},ShoppingListEditor:c};const v=(p.exports==null?{}:p.exports).default||p.exports,S=v.Components;export{S as default};