@capytale/iframe-react 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +76 -62
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("react/jsx-runtime"),C=require("react");const X=Symbol("Comlink.proxy"),mt=Symbol("Comlink.endpoint"),vt=Symbol("Comlink.releaseProxy"),N=Symbol("Comlink.finalizer"),V=Symbol("Comlink.thrown"),Z=t=>typeof t=="object"&&t!==null||typeof t=="function",pt={canHandle:t=>Z(t)&&t[X],serialize(t){const{port1:e,port2:n}=new MessageChannel;return z(t,e),[n,[n]]},deserialize(t){return t.start(),nt(t)}},Ct={canHandle:t=>Z(t)&&V in t,serialize({value:t}){let e;return t instanceof Error?e={isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:e={isError:!1,value:t},[e,[]]},deserialize(t){throw t.isError?Object.assign(new Error(t.value.message),t.value):t.value}},tt=new Map([["proxy",pt],["throw",Ct]]);function yt(t,e){for(const n of t)if(e===n||n==="*"||n instanceof RegExp&&n.test(e))return!0;return!1}function z(t,e=globalThis,n=["*"]){e.addEventListener("message",function r(o){if(!o||!o.data)return;if(!yt(n,o.origin)){console.warn(`Invalid origin '${o.origin}' for comlink proxy`);return}const{id:i,type:u,path:l}=Object.assign({path:[]},o.data),g=(o.data.argumentList||[]).map(J);let f;try{const d=l.slice(0,-1).reduce((p,S)=>p[S],t),m=l.reduce((p,S)=>p[S],t);switch(u){case"GET":f=m;break;case"SET":d[l.slice(-1)[0]]=J(o.data.value),f=!0;break;case"APPLY":f=m.apply(d,g);break;case"CONSTRUCT":{const p=new m(...g);f=st(p)}break;case"ENDPOINT":{const{port1:p,port2:S}=new MessageChannel;z(t,S),f=ht(p,[p])}break;case"RELEASE":f=void 0;break;default:return}}catch(d){f={value:d,[V]:0}}Promise.resolve(f).catch(d=>({value:d,[V]:0})).then(d=>{const[m,p]=O(d);e.postMessage(Object.assign(Object.assign({},m),{id:i}),p),u==="RELEASE"&&(e.removeEventListener("message",r),et(e),N in t&&typeof t[N]=="function"&&t[N]())}).catch(d=>{const[m,p]=O({value:new TypeError("Unserializable return value"),[V]:0});e.postMessage(Object.assign(Object.assign({},m),{id:i}),p)})}),e.start&&e.start()}function St(t){return t.constructor.name==="MessagePort"}function et(t){St(t)&&t.close()}function nt(t,e){const n=new Map;return t.addEventListener("message",function(o){const{data:i}=o;if(!i||!i.id)return;const u=n.get(i.id);if(u)try{u(i)}finally{n.delete(i.id)}}),H(t,n,[],e)}function M(t){if(t)throw new Error("Proxy has been released and is not useable")}function ot(t){return k(t,new Map,{type:"RELEASE"}).then(()=>{et(t)})}const j=new WeakMap,I="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(j.get(t)||0)-1;j.set(t,e),e===0&&ot(t)});function wt(t,e){const n=(j.get(e)||0)+1;j.set(e,n),I&&I.register(t,e,t)}function At(t){I&&I.unregister(t)}function H(t,e,n=[],r=function(){}){let o=!1;const i=new Proxy(r,{get(u,l){if(M(o),l===vt)return()=>{At(i),ot(t),e.clear(),o=!0};if(l==="then"){if(n.length===0)return{then:()=>i};const g=k(t,e,{type:"GET",path:n.map(f=>f.toString())}).then(J);return g.then.bind(g)}return H(t,e,[...n,l])},set(u,l,g){M(o);const[f,d]=O(g);return k(t,e,{type:"SET",path:[...n,l].map(m=>m.toString()),value:f},d).then(J)},apply(u,l,g){M(o);const f=n[n.length-1];if(f===mt)return k(t,e,{type:"ENDPOINT"}).then(J);if(f==="bind")return H(t,e,n.slice(0,-1));const[d,m]=Q(g);return k(t,e,{type:"APPLY",path:n.map(p=>p.toString()),argumentList:d},m).then(J)},construct(u,l){M(o);const[g,f]=Q(l);return k(t,e,{type:"CONSTRUCT",path:n.map(d=>d.toString()),argumentList:g},f).then(J)}});return wt(i,t),i}function bt(t){return Array.prototype.concat.apply([],t)}function Q(t){const e=t.map(O);return[e.map(n=>n[0]),bt(e.map(n=>n[1]))]}const rt=new WeakMap;function ht(t,e){return rt.set(t,e),t}function st(t){return Object.assign(t,{[X]:!0})}function Ft(t,e=globalThis,n="*"){return{postMessage:(r,o)=>t.postMessage(r,n,o),addEventListener:e.addEventListener.bind(e),removeEventListener:e.removeEventListener.bind(e)}}function O(t){for(const[e,n]of tt)if(n.canHandle(t)){const[r,o]=n.serialize(t);return[{type:"HANDLER",name:e,value:r},o]}return[{type:"RAW",value:t},rt.get(t)||[]]}function J(t){switch(t.type){case"HANDLER":return tt.get(t.name).deserialize(t.value);case"RAW":return t.value}}function k(t,e,n,r){return new Promise(o=>{const i=Et();e.set(i,o),t.start&&t.start(),t.postMessage(Object.assign({id:i},n),r)})}function Et(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}function Jt(t,e){return t.length===0?e:`[${t}] ${e}`}function Tt(t,e){let n=!1,r,o,i;function u(d){return Jt(t,d)}let l,g=!1;if(window.parent===window)console.warn(u("Contract link is not supported in standalone mode")),l={ready(){return Promise.resolve()},declare(){return Promise.resolve()},done(){return Promise.resolve()},provide(d,m,p){return Promise.resolve()}};else{const d=Ft(window.parent,void 0,e);z({declare(m){if(r==null)throw new Error(u("No handler for declare"));r(m)},done(){if(o==null)throw new Error(u("No handler for done"));o()},provide(m,p,S){if(i==null)throw new Error(u("No handler for provide"));i(m,p,S)}},d),l=nt(d),g=!0}const f=()=>{if(!n){if(r==null||o==null||i==null)return;n=!0,l.ready()}};return{declare:d=>l.declare(d),done:()=>l.done(),provide:(d,m,p)=>l.provide(d,m,st(p)),get name(){return t},get isReady(){return g},set onDeclare(d){r=d,f()},set onDone(d){o=d,f()},set onProvide(d){i=d,f()}}}function Rt(t){return function(e){let n,r=!1,o=!1,i,u,l=!1,g=!1,f,d,m,p;function S(){if(i!=null&&i!==0&&u!=null)return u}function F(a){if(i!=null&&u!=null&&!(a>i))return u}function b(){return m??(g?m=Promise.resolve():m=new Promise((a,c)=>{p=a}))}function T(){return f===void 0&&(f={get name(){return e},get version(){return i},get i(){return S()},v:a=>F(a)}),f}function x(){return d===void 0&&(d={get name(){return e},get version(){return g?i:void 0},get i(){return g?S():void 0},v:a=>g?F(a):void 0,get promise(){return i===0?Promise.reject(t("Remote interface not provided")):b().then(()=>{if(i===0)throw new Error(t("Remote interface not provided"));return T()})}}),d}function E(){p!=null&&(p(),p=void 0)}return{get name(){return e},get localVersion(){if(n!=null)return n},set localVersion(a){if(n!=null&&n!==a)throw new Error(t("A different local version is already set"));n=a},get localVersionSent(){return r},set localVersionSent(a){if(!a&&r)throw new Error(t("Local version already notified"));r=a,a&&n===0&&(o=!0)},get localInterfaceSent(){return o},set localInterfaceSent(a){if(n==null)throw new Error(t("Local version not set"));if(!a&&o)throw new Error(t("Local interface already sent."));o=a},get remoteVersion(){if(i!=null)return i},set remoteVersion(a){if(i!=null&&i!==a)throw new Error(t("A different remote version is already set for "+e+`(${i} -> ${a})`));i=a,a===0&&(l=!0)},get remoteVersionReceived(){return i!=null},setRemoteInterface:a=>{if(i==null)throw new Error(t("Remote version not set"));if(i===0){console.warn(t("Remote version is 0, remote interface is ignored."));return}if(l)throw new Error(t("Interface already provided."));u=a,l=!0},get remoteInterfaceReceived(){return l},depGroup:void 0,get isActivable(){return l&&o},get isActivated(){return g},activate(){if(!g){if(!l)throw new Error(t("Remote interface not provided."));if(!o)throw new Error(t("Local interface not sent"));g=!0,E()}},getRemote:()=>T(),getLazyRemote:()=>x(),get activationPromise(){return b()}}}}function kt(t){return function(e,n,r,o){let i=r,u=!1,l=!1;function g(){return e.every(f=>f.remoteVersionReceived&&f.localVersionSent)&&n.every(f=>f.remoteVersionReceived)}return{get isDeclared(){return l},set isDeclared(f){if(!f&&l)throw new Error(t("Factory already declared"));l=f},get isReady(){return g()},get isDone(){return u},get args(){return e},get deps(){return n},invoke(){if(u)throw new Error(t("Factory already invoked"));if(!g())throw new Error(t("Factory is not ready"));let f;o?f=e.map(p=>p.getRemote()):f=e[0].getRemote();let d;const m=n.length>0?n.map(p=>p.getRemote()):null;try{d=m==null?i(f):i(f,m)}catch(p){throw new Error(t("error in factory:"),{cause:p})}if(o||(d=[d]),d.length!=e.length)throw new Error(t("Invalid factory result"));return u=!0,i=null,d}}}}function xt(t){return function(e,n,r,o){let i=n,u=!1;function l(){return e.every(g=>g.isActivated)}return{get isReady(){return l()},get isDone(){return u},get args(){return e},invoke(){if(u||!l()){const d=new Error(t(u?"callback already invoked":"callback parameters are not ready"));throw o?.[1](d),d}const g=r?e.map(d=>d.getRemote()):e[0].getRemote();let f;try{f=i(g)}catch(d){o==null?console.error(t("error in callback:"),d):o[1](d)}finally{u=!0}o?.[0](f)}}}}function it(t,e){return t==null||t.length===0?e:`[${t}] ${e}`}function Lt(t){function e(a){return it(t.name,a)}const n=xt(e),r=Rt(e),o=kt(e),i={},u=[];let l=[],g;const f=()=>(g==null?g=0:g++,g);function d(a){let c=i[a];return c==null&&(c=r(a),c.localVersion==null&&(b&&(c.localVersion=0),T&&(c.localVersionSent=!0)),c.remoteVersion==null&&x&&(c.remoteVersion=0),i[a]=c),c}function m(a){return a.map(d)}function p(...a){const c=f(),v=Array(c).fill(!1);a.forEach(y=>{y.forEach(w=>{w.depGroup!=null&&(v[w.depGroup]=!0),w.depGroup=c})}),Object.values(i).forEach(y=>{y.depGroup!=null&&y.depGroup!==c&&v[y.depGroup]&&(y.depGroup=c)})}t.onDeclare=a=>{const c=m(a.map(v=>v.name));for(let v=0;v<a.length;v++)a[v].version!=null&&(c[v].remoteVersion=a[v].version);p(c),E()},t.onDone=()=>{x||(x=!0,Object.values(i).forEach(a=>{a.remoteVersion==null&&(a.remoteVersion=0)}),E())},t.onProvide=(a,c,v)=>{let y=i[a];if(y==null)throw new Error(e(`Contract not declared : ${a}`));if(y.remoteVersion!=c)throw new Error(e(`Remote declared version ${y.remoteVersion} of contract "${a}" but provided version ${c}.`));if(y.remoteInterfaceReceived)throw new Error(e(`Remote contract "${a}" is already provided.`));y.setRemoteInterface(v),E()};let S=!1,F=!1,b=!1,T=!1,x=!1;async function E(){if(F=!0,!S){for(S=!0;F;){if(F=!1,t.isReady){const a=u.filter(c=>!c.isDeclared);if(a.length>0)for(const c of a){const v=Array(c.args.length+c.deps.length);c.args.forEach((y,w)=>v[w]=y),c.deps.forEach((y,w)=>v[w+c.args.length]=y),await t.declare(v.map(y=>({name:y.name,version:y.localVersion}))),v.forEach(y=>{y.localVersion!=null&&(y.localVersionSent=!0)}),c.isDeclared=!0}}if(t.isReady&&b&&u.every(a=>a.isDeclared)){const a=Object.values(i).filter(c=>!c.localVersionSent&&c.localVersion!=null);if(a.length>0)for(const c of a)await t.declare([{name:c.name,version:c.localVersion}]),c.localVersionSent=!0;T||(T=!0,await t.done())}if(t.isReady){const a=u.filter(c=>!c.isDone&&c.isReady);if(a.length>0)for(const c of a){const v=c.invoke();for(let y=0;y<c.args.length;y++){const w=c.args[y];await t.provide(w.name,w.localVersion,v[y]),w.localInterfaceSent=!0}}}if(g!=null){const a=Array(g+1).fill(null);for(const c in i){const v=i[c];v.depGroup!=null&&(v.isActivable?a[v.depGroup]==null&&!v.isActivated&&(a[v.depGroup]=!0):a[v.depGroup]=!1)}if(a.some(c=>c===!0))for(const c in i){const v=i[c];v.depGroup!=null&&a[v.depGroup]&&v.activate()}}if(t.isReady){const a=l;l=[];const c=[];for(const v of a)!v.isDone&&v.isReady?v.invoke():c.push(v);c.push(...l),l=c}}S=!1}}return{get(a){return d(a)},declareFactory:(a,c,v,y)=>{if(b)throw new Error(e("Cannot declare a factory after done has been set to true."));const w=m(a.map(h=>h.name));{const h=w.filter($=>$.localVersion!=null);if(h.length>0)throw new Error(e("Cannot declare a factory for already implemented contracts : "+h.map($=>$.name).join(", ")))}for(let h=0;h<a.length;h++)w[h].localVersion=a[h].version;const R=m(c);p(w,R);const gt=o(w,R,v,y);u.push(gt),E()},declareCallback(a,c,v,y){const w=m(a),R=n(w,c,v,y);!S&&l.length===0&&R.isReady?R.invoke():(l.push(R),E())},get done(){return b},set done(a){if(b){if(!a)throw new Error(e("Cannot set done to false after it has been set to true."))}else a&&(b=!0,Object.values(i).forEach(c=>{c.localVersion==null&&(c.localVersion=0)}),E())}}}const Mt=/^\d+$/;function Pt(t){const[e,n,r]=t.split(":",3);if(n==null||r!=null||!Mt.test(n))return null;const o=parseInt(n);return isNaN(o)||o===0?null:{name:e,version:o}}function Gt(t){const e=Lt(t);function n(r){return it(t.name,r)}return{plug(r,o,i=void 0){if(e.done)throw new Error(n("Cannot plug after plugsDone."));i==null&&(i=o,o=[]);let u=!0;Array.isArray(r)||(r=[r],u=!1);const l=r.map(g=>{const f=Pt(g);if(f==null)throw new Error(n("Invalid contract id : "+g));return f});e.declareFactory(l,o,i,u)},plugsDone(){e.done=!0},use(r,o){let i=!0;Array.isArray(r)||(r=[r],i=!1),e.declareCallback(r,o,i)},exec(r,o){let i=!0;return Array.isArray(r)||(r=[r],i=!1),new Promise((...u)=>{e.declareCallback(r,o,i,u)})},get(r){return r.map(o=>e.get(o).getLazyRemote())}}}const at="app-agent";let q;function Dt(t){return q!=null||(q=Gt(Tt(at,t))),q}console.log(`[${at}@1.0.12] loaded`);const _=t=>{let e;const n=new Set,r=(f,d)=>{const m=typeof f=="function"?f(e):f;if(!Object.is(m,e)){const p=e;e=d??(typeof m!="object"||m===null)?m:Object.assign({},e,m),n.forEach(S=>S(e,p))}},o=()=>e,l={setState:r,getState:o,getInitialState:()=>g,subscribe:f=>(n.add(f),()=>n.delete(f))},g=e=t(r,o,l);return l},Vt=(t=>t?_(t):_),jt=t=>t;function It(t,e=jt){const n=C.useSyncExternalStore(t.subscribe,C.useCallback(()=>e(t.getState()),[t,e]),C.useCallback(()=>e(t.getInitialState()),[t,e]));return C.useDebugValue(n),n}const U=t=>{const e=Vt(t),n=r=>It(e,r);return Object.assign(n,e),n},lt=(t=>t?U(t):U),Ot=t=>(e,n,r)=>{const o=r.subscribe;return r.subscribe=((u,l,g)=>{let f=u;if(l){const d=g?.equalityFn||Object.is;let m=u(r.getState());f=p=>{const S=u(p);if(!d(m,S)){const F=m;l(m=S,F)}},g?.fireImmediately&&l(m,m)}return o(f)}),t(e,n,r)},$t=Ot,s=lt()($t(t=>({ready:!1,workflow:"current",mode:"assignment",theme:"light",saveCount:0,canSave:!1,afterSaveCount:0,isDirtyCount:0,loadedTextContent:null,loadedJsonContent:null,loadedJsonActivityContent:null,loadedJsonAssignmentContent:null,loadedJsonActivityBinaryData:null,loadedJsonAssignmentBinaryData:null,getTextContentFunction:()=>{throw console.error("[React bindings] getTextContentFunction is not set"),new Error("[React bindings] getTextContentFunction is not set")},getJsonContentFunction:()=>{throw console.error("[React bindings] getJsonContentFunction is not set"),new Error("[React bindings] getJsonContentFunction is not set")},getJsonActivityContentFunction:()=>{throw console.error("[React bindings] getJsonActivityContentFunction is not set"),new Error("[React bindings] getJsonActivityContentFunction is not set")},getJsonAssignmentContentFunction:()=>{throw console.error("[React bindings] getJsonAssignmentContentFunction is not set"),new Error("[React bindings] getJsonAssignmentContentFunction is not set")},getJsonActivitySplitContentFunction:()=>{throw console.error("[React bindings] getJsonActivitySplitContentFunction is not set"),new Error("[React bindings] getJsonActivitySplitContentFunction is not set")},getJsonAssignmentSplitContentFunction:()=>{throw console.error("[React bindings] getJsonAssignmentSplitContentFunction is not set"),new Error("[React bindings] getJsonAssignmentSplitContentFunction is not set")},sidebarActions:{},quickActions:{},activitySettingsCallback:null,llmGetFirstMessageContextFunction:null,setLlmGetFirstMessageContextFunction:e=>{t({llmGetFirstMessageContextFunction:e})},llmGetAllMessagesContextFunction:null,setLlmGetAllMessagesContextFunction:e=>{t({llmGetAllMessagesContextFunction:e})},llmGetAvailableToolsFunction:null,setLlmGetAvailableToolsFunction:e=>{t({llmGetAvailableToolsFunction:e})},llmCallToolFunction:null,setLlmCallToolFunction:e=>{t({llmCallToolFunction:e})},setGetTextContentFunction:e=>{t({getTextContentFunction:e})},llmDescribeToolFunction:null,setLlmDescribeToolFunction:e=>{t({llmDescribeToolFunction:e})},setGetJsonContentFunction:e=>{t({getJsonContentFunction:e})},setGetJsonActivityContentFunction:e=>{t({getJsonActivityContentFunction:e})},setGetJsonAssignmentContentFunction:e=>{t({getJsonAssignmentContentFunction:e})},setGetJsonActivitySplitContentFunction:e=>{t({getJsonActivitySplitContentFunction:e})},setGetJsonAssignmentSplitContentFunction:e=>{t({getJsonAssignmentSplitContentFunction:e})},setSidebarActions:e=>{t({sidebarActions:e})},setQuickActions:e=>{t({quickActions:e})},setActivitySettingsCallback:e=>{t({activitySettingsCallback:e})},incSaveCount:()=>t(e=>({saveCount:e.saveCount+1})),incDirtyCount:()=>t(e=>({isDirtyCount:e.isDirtyCount+1})),previewStartPreviewFunction:null,previewStopPreviewFunction:null,setPreviewStartPreviewFunction:e=>{t({previewStartPreviewFunction:e})},setPreviewStopPreviewFunction:e=>{t({previewStopPreviewFunction:e})}})));let Y=!1;const Nt=["meta-player-events:1","meta-player-ui:1","mode:1","reload:1","theme:1","workflow:1","preview:1","trigger-save:1","simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1","simple-content-eval(json):1","separate-contents(json):1","separate-dual-contents(json):1","llm:1"],K={"mode:1":{setMode:t=>{s.setState({mode:t})}},"reload:1":{reloaded:t=>{console.log("[React bindings] Reloaded with state:",t),console.error("[React bindings] Not implemented yet")}},"theme:1":{setTheme:t=>{if(t===null){s.setState({theme:null});return}if(t!=="light"&&t!=="dark"){console.warn(`[React bindings] Invalid theme: ${t}. Expected 'light' or 'dark'.`),s.setState({theme:null});return}s.setState({theme:t})}},"workflow:1":{setWorkflow:t=>{s.setState({workflow:t})}},"workflow:2":{setWorkflow:t=>{s.setState({workflow:t})}},"preview:1":{startPreview:()=>{const t=s.getState().previewStartPreviewFunction;return t?t():!1},stopPreview:()=>{const t=s.getState().previewStopPreviewFunction;if(!t)throw new Error("Preview stop function is not set");return t()}},"trigger-save:1":{setCanSave(t){s.setState({canSave:t})}},"simple-content(text):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})}},"simple-content(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getJsonContentFunction(),loadContent:t=>{s.setState({loadedJsonContent:t})}},"simple-binary-data(text):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})}},"simple-content-eval(text):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(text)")}},"simple-content-eval(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getJsonContentFunction(),loadContent:t=>{s.setState({loadedJsonContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(json)")}},"simple-content-eval(json):2":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getJsonContentFunction(),loadContent:t=>{s.setState({loadedJsonContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(json)")}},"simple-content-eval(text):2":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(text)")}},"separate-contents(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:(t,e)=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e})},getActivityContent:()=>s.getState().getJsonActivityContentFunction(),getAssignmentContent:()=>s.getState().getJsonAssignmentContentFunction()},"separate-contents-eval(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:(t,e)=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e})},getActivityContent:()=>s.getState().getJsonActivityContentFunction(),getAssignmentContent:()=>s.getState().getJsonAssignmentContentFunction()},"separate-contents-eval(json):2":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:(t,e)=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e})},getActivityContent:()=>s.getState().getJsonActivityContentFunction(),getAssignmentContent:()=>s.getState().getJsonAssignmentContentFunction()},"separate-dual-contents(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:({activityContent:t,assignmentContent:e,activityBinaryData:n,assignmentBinaryData:r})=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e,loadedJsonActivityBinaryData:n,loadedJsonAssignmentBinaryData:r})},getActivityContentAndData:()=>s.getState().getJsonActivitySplitContentFunction(),getAssignmentContentAndData:()=>s.getState().getJsonAssignmentSplitContentFunction()},"anti-cheat:1":{lock:()=>{},unlock:()=>{}},"meta-player-ui:1":{executeAction(t){if(t.startsWith("qa")){const n=s.getState().quickActions[t];n?n():console.error(`[React bindings] Quick action not found: ${t}`)}else{const n=s.getState().sidebarActions[t];n?n():console.error(`[React bindings] Sidebar action not found: ${t}`)}},executeFileUpload(t,e){if(t.startsWith("qa")){const r=s.getState().quickActions[t];r?r(e):console.error(`[React bindings] Quick action not found: ${t}`)}else{const r=s.getState().sidebarActions[t];r?r(e):console.error(`[React bindings] Sidebar action not found: ${t}`)}},updateSettings(t){const e=s.getState().activitySettingsCallback;e?e(t):console.warn("activitySettingsCallback is not set. Changes:",t)}},"meta-player-events:1":{handleEvent(t){t==="all-loaded"&&s.setState({ready:!0})}},"llm:1":{getFirstMessageContext:t=>{const e=s.getState().llmGetFirstMessageContextFunction;return e?e(t):""},getAllMessagesContext:t=>{const e=s.getState().llmGetAllMessagesContextFunction;return e?e(t):""},getAvailableTools:t=>{const e=s.getState().llmGetAvailableToolsFunction;return e?e(t):[]},callTool:(t,e,n)=>{const r=s.getState().llmCallToolFunction;if(!r)throw new Error("LLM call tool function is not set");return r(t,e,n)},getToolCallDescription:(t,e,n)=>{const r=s.getState().llmDescribeToolFunction;if(!r)throw new Error("LLM describe tool function is not set");return r(t,e,n)}}},A=Dt();function qt(t){if(!Y){Y=!0;for(const e of t){if(!Nt.includes(e))continue;if(!(e in K)){console.warn(`[React bindings] Contract handler for ${e} is not defined. Skipping plug.`);continue}const n=K[e];A.plug([e],([])=>[n])}A.plugsDone();for(const e of["simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1","simple-content-eval(json):1","simple-content-eval(json):2","simple-content-eval(text):2","separate-contents(json):1","separate-dual-contents(json):1"])if(t.includes(e)){const n=e.split(":")[0];A.use([n],([r])=>{s.subscribe(o=>o.isDirtyCount,()=>{r.i?.contentChanged()})})}}}const Bt=()=>s(t=>{if(t.mode===null)throw new Error("Mode is not set. Have you used contract 'mode'?");return t.mode}),Wt=()=>s(t=>{if(t.workflow===null)throw new Error("Workflow is not set. Have you used contract 'workflow'?");return t.workflow}),Ht=()=>s(t=>{if(t.theme===null)throw new Error("Theme is not set. Have you used contract 'theme'?");return t.theme}),zt=()=>s(t=>t.incSaveCount),Qt=()=>s(t=>t.incDirtyCount),_t=()=>s(t=>t.loadedTextContent),Ut=()=>s(t=>t.loadedJsonContent),Yt=()=>s(t=>t.loadedJsonActivityContent),Kt=()=>s(t=>t.loadedJsonAssignmentContent),Xt=()=>s(t=>t.loadedJsonActivityBinaryData),Zt=()=>s(t=>t.loadedJsonAssignmentBinaryData),te=()=>C.useCallback(()=>s.getState().loadedTextContent,[]),ee=()=>C.useCallback(()=>s.getState().loadedJsonContent,[]),ne=()=>C.useCallback(()=>s.getState().loadedJsonActivityContent,[]),oe=()=>C.useCallback(()=>s.getState().loadedJsonAssignmentContent,[]),re=()=>C.useCallback(()=>({content:s.getState().loadedJsonActivityContent,binaryData:s.getState().loadedJsonActivityBinaryData}),[]),se=()=>C.useCallback(()=>({content:s.getState().loadedJsonAssignmentContent,binaryData:s.getState().loadedJsonAssignmentBinaryData}),[]),ie=t=>{const e=s(n=>n.setGetTextContentFunction);C.useEffect(()=>{e(t)},[t,e])},ae=t=>{const e=s(n=>n.setGetJsonContentFunction);C.useEffect(()=>{e(t)},[t,e])},le=t=>{const e=s(n=>n.setGetJsonActivityContentFunction);C.useEffect(()=>{e(t)},[t,e])},ce=t=>{const e=s(n=>n.setGetJsonAssignmentContentFunction);C.useEffect(()=>{e(t)},[t,e])},ue=t=>{const e=s(n=>n.setGetJsonActivitySplitContentFunction);C.useEffect(()=>{e(t)},[t,e])},de=t=>{const e=s(n=>n.setGetJsonAssignmentSplitContentFunction);C.useEffect(()=>{e(t)},[t,e])},fe=t=>{const e=s(n=>n.afterSaveCount);C.useEffect(()=>{e>0&&t()},[e])},ge=()=>(t,e)=>{A.use(["meta-player-ui"],([n])=>{if(n.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}n.i?.previewTextFile(t,e)})},me=()=>(t,e)=>{A.use(["meta-player-ui"],([n])=>{if(n.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}n.i?.previewImageFile(t,e)})};let P=0,B=0;const ve=(t,e)=>{const n=C.useMemo(t,e),r=s(o=>o.setSidebarActions);C.useEffect(()=>(P++,P>1&&console.error("[React bindings] Capytale iframe React: Multiple sidebar actions registered: ",P),()=>{P--}),[]),C.useEffect(()=>(A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}B++;const i=n.map((l,g)=>({type:l.type,title:l.title,icon:l.icon,id:`sa-${B}-${g}`,...l.type==="file-upload"?{accept:l.accept}:{}})),u={};n.forEach((l,g)=>{u[`sa-${B}-${g}`]=l.action}),o.i?.setSidebarActionButtons(i),r(u)}),()=>{r({}),A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}o.i?.setSidebarActionButtons([])})}),[n])};let G=0,W=0;const pe=(t,e)=>{const n=C.useMemo(t,e),r=s(o=>o.setQuickActions);C.useEffect(()=>(G++,G>1&&console.error("[React bindings] Capytale iframe React: Multiple quick actions registered: ",G),()=>{G--}),[]),C.useEffect(()=>(A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}W++;const i=n.map((l,g)=>({type:l.type,title:l.title,icon:l.icon,id:`qa-${W}-${g}`,...l.type==="file-upload"?{accept:l.accept}:{}})),u={};n.forEach((l,g)=>{u[`qa-${W}-${g}`]=l.action}),o.i?.setQuickActionButtons(i),r(u)}),()=>{r({}),A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}o.i?.setQuickActionButtons([])})}),[n])};let D=0;const ct=(t,e,n)=>{const r=C.useMemo(t,n),o=s(i=>i.setActivitySettingsCallback);C.useEffect(()=>(D++,D>1&&console.error("[React bindings] Capytale iframe React: Multiple settings registered: ",D),()=>{D--}),[]),C.useEffect(()=>(A.use(["meta-player-ui"],([i])=>{if(i.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}i.i?.setSettingsUI(r)}),o(e),()=>{o(null)}),[r])},ut=()=>C.useCallback(e=>A.exec(["meta-player-ui"],([n])=>{if(n.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"),new Error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return n.i?.showToast(e)}),[]),dt=()=>C.useCallback(e=>A.exec(["meta-player-ui"],([n])=>{if(n.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"),new Error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return n.i?.clearToast(e)}),[]),Ce=()=>C.useCallback(()=>A.exec(["meta-player-ui"],([e])=>{if(e.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"),new Error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return e.i?.clearToasts()}),[]),ft=(t,e)=>{const n=ut(),r=dt();return C.useEffect(()=>{if(t==null)return;const o=n(t);return()=>{o.then(i=>{i!=null&&r(i)})}},[n,r,...e]),null},ye=()=>C.useCallback(()=>A.exec(["trigger-save"],([e])=>{if(e.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat trigger-save"),new Error("Le MétaPlayer ne supporte pas le contrat trigger-save");return e.i?.triggerSave()}),[]),Se=()=>s(t=>t.canSave),we=(t,e)=>{const n=s(r=>r.setLlmGetFirstMessageContextFunction);C.useEffect(()=>(n(t),()=>{n(null)}),[e,n])},Ae=(t,e)=>{const n=s(r=>r.setLlmGetAllMessagesContextFunction);C.useEffect(()=>(n(t),()=>{n(null)}),[e,n])},be=(t,e,n,r)=>{const o=s(l=>l.setLlmGetAvailableToolsFunction),i=s(l=>l.setLlmCallToolFunction),u=s(l=>l.setLlmDescribeToolFunction);C.useEffect(()=>(o(t),i(e),u(n),()=>{o(null),i(null),u(null)}),[r,o,i,u])};function he(t){const e={};for(const n of t.fields)e[n.name]=n.defaultValue;return e}function Fe(t){return{[t.name]:t.defaultValues}}function Ee(t){return{[t.name]:t.defaultValue}}function Je(t){switch(t.type){case"form":return he(t);case"checkboxes":case"switches":return Fe(t);case"radio":return Ee(t);default:return{}}}function Te(t){const e={};for(const n of t)Object.assign(e,Je(n));return e}function Re(t){const n=lt()(r=>({...Te(t)}));return n.activitySettings=t,n}function ke(t){ct(()=>t.activitySettings,e=>{t.setState(e)},[])}function xe({store:t}){return ke(t),null}const Le=["meta-player-events:1","meta-player-ui:1","mode:1","workflow:1"];function Me({children:t,contracts:e,loadOnlyWhenReady:n=!0,activitySettingsStore:r}){const o=s(i=>i.ready);return C.useEffect(()=>{const i=[...e];for(const u of Le)i.includes(u)||i.push(u);qt(i)},[]),n&&!o?L.jsx("div",{className:"capy-loading-container",children:"Chargement en cours..."}):L.jsxs(L.Fragment,{children:[r&&L.jsx(xe,{store:r}),t]})}function Pe({message:t}){return ft(t,[t]),null}exports.Capytale=Me;exports.TemporaryToast=Pe;exports.createActivitySettingsStore=Re;exports.useAfterSaveAction=fe;exports.useCanSave=Se;exports.useClearToast=dt;exports.useClearToasts=Ce;exports.useGetLoadedJsonActivityContent=ne;exports.useGetLoadedJsonActivitySplitContent=re;exports.useGetLoadedJsonAssignmentContent=oe;exports.useGetLoadedJsonAssignmentSplitContent=se;exports.useGetLoadedJsonContent=ee;exports.useGetLoadedTextContent=te;exports.useJsonActivityContentSaveFunction=le;exports.useJsonActivitySplitContentSaveFunction=ue;exports.useJsonAssignmentContentSaveFunction=ce;exports.useJsonAssignmentSplitContentSaveFunction=de;exports.useJsonContentSaveFunction=ae;exports.useLLMAllMessagesContext=Ae;exports.useLLMFirstMessageContext=we;exports.useLLMTools=be;exports.useLoadedJsonActivityBinaryData=Xt;exports.useLoadedJsonActivityContent=Yt;exports.useLoadedJsonAssignmentBinaryData=Zt;exports.useLoadedJsonAssignmentContent=Kt;exports.useLoadedJsonContent=Ut;exports.useLoadedTextContent=_t;exports.useMode=Bt;exports.useNotifyIsDirty=Qt;exports.usePreviewImageFile=me;exports.usePreviewTextFile=ge;exports.useQuickActions=pe;exports.useRequestSave=zt;exports.useSettings=ct;exports.useShowToast=ut;exports.useSidebarActions=ve;exports.useTextContentSaveFunction=ie;exports.useTheme=Ht;exports.useToast=ft;exports.useTriggerSave=ye;exports.useWorkflow=Wt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("react/jsx-runtime"),C=require("react");const X=Symbol("Comlink.proxy"),vt=Symbol("Comlink.endpoint"),mt=Symbol("Comlink.releaseProxy"),N=Symbol("Comlink.finalizer"),V=Symbol("Comlink.thrown"),Z=t=>typeof t=="object"&&t!==null||typeof t=="function",pt={canHandle:t=>Z(t)&&t[X],serialize(t){const{port1:e,port2:n}=new MessageChannel;return z(t,e),[n,[n]]},deserialize(t){return t.start(),nt(t)}},Ct={canHandle:t=>Z(t)&&V in t,serialize({value:t}){let e;return t instanceof Error?e={isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:e={isError:!1,value:t},[e,[]]},deserialize(t){throw t.isError?Object.assign(new Error(t.value.message),t.value):t.value}},tt=new Map([["proxy",pt],["throw",Ct]]);function yt(t,e){for(const n of t)if(e===n||n==="*"||n instanceof RegExp&&n.test(e))return!0;return!1}function z(t,e=globalThis,n=["*"]){e.addEventListener("message",function r(o){if(!o||!o.data)return;if(!yt(n,o.origin)){console.warn(`Invalid origin '${o.origin}' for comlink proxy`);return}const{id:i,type:u,path:c}=Object.assign({path:[]},o.data),g=(o.data.argumentList||[]).map(J);let f;try{const d=c.slice(0,-1).reduce((p,S)=>p[S],t),v=c.reduce((p,S)=>p[S],t);switch(u){case"GET":f=v;break;case"SET":d[c.slice(-1)[0]]=J(o.data.value),f=!0;break;case"APPLY":f=v.apply(d,g);break;case"CONSTRUCT":{const p=new v(...g);f=st(p)}break;case"ENDPOINT":{const{port1:p,port2:S}=new MessageChannel;z(t,S),f=ht(p,[p])}break;case"RELEASE":f=void 0;break;default:return}}catch(d){f={value:d,[V]:0}}Promise.resolve(f).catch(d=>({value:d,[V]:0})).then(d=>{const[v,p]=O(d);e.postMessage(Object.assign(Object.assign({},v),{id:i}),p),u==="RELEASE"&&(e.removeEventListener("message",r),et(e),N in t&&typeof t[N]=="function"&&t[N]())}).catch(d=>{const[v,p]=O({value:new TypeError("Unserializable return value"),[V]:0});e.postMessage(Object.assign(Object.assign({},v),{id:i}),p)})}),e.start&&e.start()}function St(t){return t.constructor.name==="MessagePort"}function et(t){St(t)&&t.close()}function nt(t,e){const n=new Map;return t.addEventListener("message",function(o){const{data:i}=o;if(!i||!i.id)return;const u=n.get(i.id);if(u)try{u(i)}finally{n.delete(i.id)}}),H(t,n,[],e)}function M(t){if(t)throw new Error("Proxy has been released and is not useable")}function ot(t){return k(t,new Map,{type:"RELEASE"}).then(()=>{et(t)})}const j=new WeakMap,I="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(j.get(t)||0)-1;j.set(t,e),e===0&&ot(t)});function wt(t,e){const n=(j.get(e)||0)+1;j.set(e,n),I&&I.register(t,e,t)}function At(t){I&&I.unregister(t)}function H(t,e,n=[],r=function(){}){let o=!1;const i=new Proxy(r,{get(u,c){if(M(o),c===mt)return()=>{At(i),ot(t),e.clear(),o=!0};if(c==="then"){if(n.length===0)return{then:()=>i};const g=k(t,e,{type:"GET",path:n.map(f=>f.toString())}).then(J);return g.then.bind(g)}return H(t,e,[...n,c])},set(u,c,g){M(o);const[f,d]=O(g);return k(t,e,{type:"SET",path:[...n,c].map(v=>v.toString()),value:f},d).then(J)},apply(u,c,g){M(o);const f=n[n.length-1];if(f===vt)return k(t,e,{type:"ENDPOINT"}).then(J);if(f==="bind")return H(t,e,n.slice(0,-1));const[d,v]=Q(g);return k(t,e,{type:"APPLY",path:n.map(p=>p.toString()),argumentList:d},v).then(J)},construct(u,c){M(o);const[g,f]=Q(c);return k(t,e,{type:"CONSTRUCT",path:n.map(d=>d.toString()),argumentList:g},f).then(J)}});return wt(i,t),i}function bt(t){return Array.prototype.concat.apply([],t)}function Q(t){const e=t.map(O);return[e.map(n=>n[0]),bt(e.map(n=>n[1]))]}const rt=new WeakMap;function ht(t,e){return rt.set(t,e),t}function st(t){return Object.assign(t,{[X]:!0})}function Ft(t,e=globalThis,n="*"){return{postMessage:(r,o)=>t.postMessage(r,n,o),addEventListener:e.addEventListener.bind(e),removeEventListener:e.removeEventListener.bind(e)}}function O(t){for(const[e,n]of tt)if(n.canHandle(t)){const[r,o]=n.serialize(t);return[{type:"HANDLER",name:e,value:r},o]}return[{type:"RAW",value:t},rt.get(t)||[]]}function J(t){switch(t.type){case"HANDLER":return tt.get(t.name).deserialize(t.value);case"RAW":return t.value}}function k(t,e,n,r){return new Promise(o=>{const i=Et();e.set(i,o),t.start&&t.start(),t.postMessage(Object.assign({id:i},n),r)})}function Et(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}function Jt(t,e){return t.length===0?e:`[${t}] ${e}`}function Tt(t,e){let n=!1,r,o,i;function u(d){return Jt(t,d)}let c,g=!1;if(window.parent===window)console.warn(u("Contract link is not supported in standalone mode")),c={ready(){return Promise.resolve()},declare(){return Promise.resolve()},done(){return Promise.resolve()},provide(d,v,p){return Promise.resolve()}};else{const d=Ft(window.parent,void 0,e);z({declare(v){if(r==null)throw new Error(u("No handler for declare"));r(v)},done(){if(o==null)throw new Error(u("No handler for done"));o()},provide(v,p,S){if(i==null)throw new Error(u("No handler for provide"));i(v,p,S)}},d),c=nt(d),g=!0}const f=()=>{if(!n){if(r==null||o==null||i==null)return;n=!0,c.ready()}};return{declare:d=>c.declare(d),done:()=>c.done(),provide:(d,v,p)=>c.provide(d,v,st(p)),get name(){return t},get isReady(){return g},set onDeclare(d){r=d,f()},set onDone(d){o=d,f()},set onProvide(d){i=d,f()}}}function Rt(t){return function(e){let n,r=!1,o=!1,i,u,c=!1,g=!1,f,d,v,p;function S(){if(i!=null&&i!==0&&u!=null)return u}function F(a){if(i!=null&&u!=null&&!(a>i))return u}function b(){return v??(g?v=Promise.resolve():v=new Promise((a,l)=>{p=a}))}function T(){return f===void 0&&(f={get name(){return e},get version(){return i},get i(){return S()},v:a=>F(a)}),f}function x(){return d===void 0&&(d={get name(){return e},get version(){return g?i:void 0},get i(){return g?S():void 0},v:a=>g?F(a):void 0,get promise(){return i===0?Promise.reject(t("Remote interface not provided")):b().then(()=>{if(i===0)throw new Error(t("Remote interface not provided"));return T()})}}),d}function E(){p!=null&&(p(),p=void 0)}return{get name(){return e},get localVersion(){if(n!=null)return n},set localVersion(a){if(n!=null&&n!==a)throw new Error(t("A different local version is already set"));n=a},get localVersionSent(){return r},set localVersionSent(a){if(!a&&r)throw new Error(t("Local version already notified"));r=a,a&&n===0&&(o=!0)},get localInterfaceSent(){return o},set localInterfaceSent(a){if(n==null)throw new Error(t("Local version not set"));if(!a&&o)throw new Error(t("Local interface already sent."));o=a},get remoteVersion(){if(i!=null)return i},set remoteVersion(a){if(i!=null&&i!==a)throw new Error(t("A different remote version is already set for "+e+`(${i} -> ${a})`));i=a,a===0&&(c=!0)},get remoteVersionReceived(){return i!=null},setRemoteInterface:a=>{if(i==null)throw new Error(t("Remote version not set"));if(i===0){console.warn(t("Remote version is 0, remote interface is ignored."));return}if(c)throw new Error(t("Interface already provided."));u=a,c=!0},get remoteInterfaceReceived(){return c},depGroup:void 0,get isActivable(){return c&&o},get isActivated(){return g},activate(){if(!g){if(!c)throw new Error(t("Remote interface not provided."));if(!o)throw new Error(t("Local interface not sent"));g=!0,E()}},getRemote:()=>T(),getLazyRemote:()=>x(),get activationPromise(){return b()}}}}function kt(t){return function(e,n,r,o){let i=r,u=!1,c=!1;function g(){return e.every(f=>f.remoteVersionReceived&&f.localVersionSent)&&n.every(f=>f.remoteVersionReceived)}return{get isDeclared(){return c},set isDeclared(f){if(!f&&c)throw new Error(t("Factory already declared"));c=f},get isReady(){return g()},get isDone(){return u},get args(){return e},get deps(){return n},invoke(){if(u)throw new Error(t("Factory already invoked"));if(!g())throw new Error(t("Factory is not ready"));let f;o?f=e.map(p=>p.getRemote()):f=e[0].getRemote();let d;const v=n.length>0?n.map(p=>p.getRemote()):null;try{d=v==null?i(f):i(f,v)}catch(p){throw new Error(t("error in factory:"),{cause:p})}if(o||(d=[d]),d.length!=e.length)throw new Error(t("Invalid factory result"));return u=!0,i=null,d}}}}function xt(t){return function(e,n,r,o){let i=n,u=!1;function c(){return e.every(g=>g.isActivated)}return{get isReady(){return c()},get isDone(){return u},get args(){return e},invoke(){if(u||!c()){const d=new Error(t(u?"callback already invoked":"callback parameters are not ready"));throw o?.[1](d),d}const g=r?e.map(d=>d.getRemote()):e[0].getRemote();let f;try{f=i(g)}catch(d){o==null?console.error(t("error in callback:"),d):o[1](d)}finally{u=!0}o?.[0](f)}}}}function it(t,e){return t==null||t.length===0?e:`[${t}] ${e}`}function Lt(t){function e(a){return it(t.name,a)}const n=xt(e),r=Rt(e),o=kt(e),i={},u=[];let c=[],g;const f=()=>(g==null?g=0:g++,g);function d(a){let l=i[a];return l==null&&(l=r(a),l.localVersion==null&&(b&&(l.localVersion=0),T&&(l.localVersionSent=!0)),l.remoteVersion==null&&x&&(l.remoteVersion=0),i[a]=l),l}function v(a){return a.map(d)}function p(...a){const l=f(),m=Array(l).fill(!1);a.forEach(y=>{y.forEach(w=>{w.depGroup!=null&&(m[w.depGroup]=!0),w.depGroup=l})}),Object.values(i).forEach(y=>{y.depGroup!=null&&y.depGroup!==l&&m[y.depGroup]&&(y.depGroup=l)})}t.onDeclare=a=>{const l=v(a.map(m=>m.name));for(let m=0;m<a.length;m++)a[m].version!=null&&(l[m].remoteVersion=a[m].version);p(l),E()},t.onDone=()=>{x||(x=!0,Object.values(i).forEach(a=>{a.remoteVersion==null&&(a.remoteVersion=0)}),E())},t.onProvide=(a,l,m)=>{let y=i[a];if(y==null)throw new Error(e(`Contract not declared : ${a}`));if(y.remoteVersion!=l)throw new Error(e(`Remote declared version ${y.remoteVersion} of contract "${a}" but provided version ${l}.`));if(y.remoteInterfaceReceived)throw new Error(e(`Remote contract "${a}" is already provided.`));y.setRemoteInterface(m),E()};let S=!1,F=!1,b=!1,T=!1,x=!1;async function E(){if(F=!0,!S){for(S=!0;F;){if(F=!1,t.isReady){const a=u.filter(l=>!l.isDeclared);if(a.length>0)for(const l of a){const m=Array(l.args.length+l.deps.length);l.args.forEach((y,w)=>m[w]=y),l.deps.forEach((y,w)=>m[w+l.args.length]=y),await t.declare(m.map(y=>({name:y.name,version:y.localVersion}))),m.forEach(y=>{y.localVersion!=null&&(y.localVersionSent=!0)}),l.isDeclared=!0}}if(t.isReady&&b&&u.every(a=>a.isDeclared)){const a=Object.values(i).filter(l=>!l.localVersionSent&&l.localVersion!=null);if(a.length>0)for(const l of a)await t.declare([{name:l.name,version:l.localVersion}]),l.localVersionSent=!0;T||(T=!0,await t.done())}if(t.isReady){const a=u.filter(l=>!l.isDone&&l.isReady);if(a.length>0)for(const l of a){const m=l.invoke();for(let y=0;y<l.args.length;y++){const w=l.args[y];await t.provide(w.name,w.localVersion,m[y]),w.localInterfaceSent=!0}}}if(g!=null){const a=Array(g+1).fill(null);for(const l in i){const m=i[l];m.depGroup!=null&&(m.isActivable?a[m.depGroup]==null&&!m.isActivated&&(a[m.depGroup]=!0):a[m.depGroup]=!1)}if(a.some(l=>l===!0))for(const l in i){const m=i[l];m.depGroup!=null&&a[m.depGroup]&&m.activate()}}if(t.isReady){const a=c;c=[];const l=[];for(const m of a)!m.isDone&&m.isReady?m.invoke():l.push(m);l.push(...c),c=l}}S=!1}}return{get(a){return d(a)},declareFactory:(a,l,m,y)=>{if(b)throw new Error(e("Cannot declare a factory after done has been set to true."));const w=v(a.map(h=>h.name));{const h=w.filter($=>$.localVersion!=null);if(h.length>0)throw new Error(e("Cannot declare a factory for already implemented contracts : "+h.map($=>$.name).join(", ")))}for(let h=0;h<a.length;h++)w[h].localVersion=a[h].version;const R=v(l);p(w,R);const gt=o(w,R,m,y);u.push(gt),E()},declareCallback(a,l,m,y){const w=v(a),R=n(w,l,m,y);!S&&c.length===0&&R.isReady?R.invoke():(c.push(R),E())},get done(){return b},set done(a){if(b){if(!a)throw new Error(e("Cannot set done to false after it has been set to true."))}else a&&(b=!0,Object.values(i).forEach(l=>{l.localVersion==null&&(l.localVersion=0)}),E())}}}const Mt=/^\d+$/;function Pt(t){const[e,n,r]=t.split(":",3);if(n==null||r!=null||!Mt.test(n))return null;const o=parseInt(n);return isNaN(o)||o===0?null:{name:e,version:o}}function Gt(t){const e=Lt(t);function n(r){return it(t.name,r)}return{plug(r,o,i=void 0){if(e.done)throw new Error(n("Cannot plug after plugsDone."));i==null&&(i=o,o=[]);let u=!0;Array.isArray(r)||(r=[r],u=!1);const c=r.map(g=>{const f=Pt(g);if(f==null)throw new Error(n("Invalid contract id : "+g));return f});e.declareFactory(c,o,i,u)},plugsDone(){e.done=!0},use(r,o){let i=!0;Array.isArray(r)||(r=[r],i=!1),e.declareCallback(r,o,i)},exec(r,o){let i=!0;return Array.isArray(r)||(r=[r],i=!1),new Promise((...u)=>{e.declareCallback(r,o,i,u)})},get(r){return r.map(o=>e.get(o).getLazyRemote())}}}const at="app-agent";let q;function Dt(t){return q!=null||(q=Gt(Tt(at,t))),q}console.log(`[${at}@1.0.12] loaded`);const _=t=>{let e;const n=new Set,r=(f,d)=>{const v=typeof f=="function"?f(e):f;if(!Object.is(v,e)){const p=e;e=d??(typeof v!="object"||v===null)?v:Object.assign({},e,v),n.forEach(S=>S(e,p))}},o=()=>e,c={setState:r,getState:o,getInitialState:()=>g,subscribe:f=>(n.add(f),()=>n.delete(f))},g=e=t(r,o,c);return c},Vt=(t=>t?_(t):_),jt=t=>t;function It(t,e=jt){const n=C.useSyncExternalStore(t.subscribe,C.useCallback(()=>e(t.getState()),[t,e]),C.useCallback(()=>e(t.getInitialState()),[t,e]));return C.useDebugValue(n),n}const U=t=>{const e=Vt(t),n=r=>It(e,r);return Object.assign(n,e),n},ct=(t=>t?U(t):U),Ot=t=>(e,n,r)=>{const o=r.subscribe;return r.subscribe=((u,c,g)=>{let f=u;if(c){const d=g?.equalityFn||Object.is;let v=u(r.getState());f=p=>{const S=u(p);if(!d(v,S)){const F=v;c(v=S,F)}},g?.fireImmediately&&c(v,v)}return o(f)}),t(e,n,r)},$t=Ot,s=ct()($t(t=>({ready:!1,workflow:"current",mode:"assignment",theme:"light",saveCount:0,canSave:!1,afterSaveCount:0,isDirtyCount:0,loadedTextContent:null,loadedJsonContent:null,loadedJsonActivityContent:null,loadedJsonAssignmentContent:null,loadedJsonActivityBinaryData:null,loadedJsonAssignmentBinaryData:null,getTextContentFunction:()=>{throw console.error("[React bindings] getTextContentFunction is not set"),new Error("[React bindings] getTextContentFunction is not set")},getJsonContentFunction:()=>{throw console.error("[React bindings] getJsonContentFunction is not set"),new Error("[React bindings] getJsonContentFunction is not set")},getJsonActivityContentFunction:()=>{throw console.error("[React bindings] getJsonActivityContentFunction is not set"),new Error("[React bindings] getJsonActivityContentFunction is not set")},getJsonAssignmentContentFunction:()=>{throw console.error("[React bindings] getJsonAssignmentContentFunction is not set"),new Error("[React bindings] getJsonAssignmentContentFunction is not set")},getJsonActivitySplitContentFunction:()=>{throw console.error("[React bindings] getJsonActivitySplitContentFunction is not set"),new Error("[React bindings] getJsonActivitySplitContentFunction is not set")},getJsonAssignmentSplitContentFunction:()=>{throw console.error("[React bindings] getJsonAssignmentSplitContentFunction is not set"),new Error("[React bindings] getJsonAssignmentSplitContentFunction is not set")},sidebarActions:{},quickActions:{},activitySettingsCallback:null,llmGetFirstMessageContextFunction:null,setLlmGetFirstMessageContextFunction:e=>{t({llmGetFirstMessageContextFunction:e})},llmGetAllMessagesContextFunction:null,setLlmGetAllMessagesContextFunction:e=>{t({llmGetAllMessagesContextFunction:e})},llmGetAvailableToolsFunction:null,setLlmGetAvailableToolsFunction:e=>{t({llmGetAvailableToolsFunction:e})},llmCallToolFunction:null,setLlmCallToolFunction:e=>{t({llmCallToolFunction:e})},setGetTextContentFunction:e=>{t({getTextContentFunction:e})},llmDescribeToolFunction:null,setLlmDescribeToolFunction:e=>{t({llmDescribeToolFunction:e})},setGetJsonContentFunction:e=>{t({getJsonContentFunction:e})},setGetJsonActivityContentFunction:e=>{t({getJsonActivityContentFunction:e})},setGetJsonAssignmentContentFunction:e=>{t({getJsonAssignmentContentFunction:e})},setGetJsonActivitySplitContentFunction:e=>{t({getJsonActivitySplitContentFunction:e})},setGetJsonAssignmentSplitContentFunction:e=>{t({getJsonAssignmentSplitContentFunction:e})},setSidebarActions:e=>{t({sidebarActions:e})},setQuickActions:e=>{t({quickActions:e})},setActivitySettingsCallback:e=>{t({activitySettingsCallback:e})},incSaveCount:()=>t(e=>({saveCount:e.saveCount+1})),incDirtyCount:()=>t(e=>({isDirtyCount:e.isDirtyCount+1})),previewStartPreviewFunction:null,previewStopPreviewFunction:null,setPreviewStartPreviewFunction:e=>{t({previewStartPreviewFunction:e})},setPreviewStopPreviewFunction:e=>{t({previewStopPreviewFunction:e})}})));let Y=!1;const Nt=["meta-player-events:1","meta-player-ui:1","mode:1","reload:1","theme:1","workflow:1","preview:1","trigger-save:1","simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1","simple-content-eval(json):1","separate-contents(json):1","separate-dual-contents(json):1","llm:1"],K={"mode:1":{setMode:t=>{s.setState({mode:t})}},"reload:1":{reloaded:t=>{console.log("[React bindings] Reloaded with state:",t),console.error("[React bindings] Not implemented yet")}},"theme:1":{setTheme:t=>{if(t===null){s.setState({theme:null});return}if(t!=="light"&&t!=="dark"){console.warn(`[React bindings] Invalid theme: ${t}. Expected 'light' or 'dark'.`),s.setState({theme:null});return}s.setState({theme:t})}},"workflow:1":{setWorkflow:t=>{s.setState({workflow:t})}},"workflow:2":{setWorkflow:t=>{s.setState({workflow:t})}},"preview:1":{startPreview:()=>{const t=s.getState().previewStartPreviewFunction;return t?t():!1},stopPreview:()=>{const t=s.getState().previewStopPreviewFunction;if(!t)throw new Error("Preview stop function is not set");return t()}},"trigger-save:1":{setCanSave(t){s.setState({canSave:t})}},"simple-content(text):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})}},"simple-content(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getJsonContentFunction(),loadContent:t=>{s.setState({loadedJsonContent:t})}},"simple-binary-data(text):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})}},"simple-content-eval(text):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(text)")}},"simple-content-eval(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getJsonContentFunction(),loadContent:t=>{s.setState({loadedJsonContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(json)")}},"simple-content-eval(json):2":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getJsonContentFunction(),loadContent:t=>{s.setState({loadedJsonContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(json)")}},"simple-content-eval(text):2":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>s.getState().getTextContentFunction(),loadContent:t=>{s.setState({loadedTextContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(text)")}},"separate-contents(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:(t,e)=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e})},getActivityContent:()=>s.getState().getJsonActivityContentFunction(),getAssignmentContent:()=>s.getState().getJsonAssignmentContentFunction()},"separate-contents-eval(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:(t,e)=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e})},getActivityContent:()=>s.getState().getJsonActivityContentFunction(),getAssignmentContent:()=>s.getState().getJsonAssignmentContentFunction()},"separate-contents-eval(json):2":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:(t,e)=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e})},getActivityContent:()=>s.getState().getJsonActivityContentFunction(),getAssignmentContent:()=>s.getState().getJsonAssignmentContentFunction()},"separate-dual-contents(json):1":{contentSaved:()=>{s.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},loadContent:({activityContent:t,assignmentContent:e,activityBinaryData:n,assignmentBinaryData:r})=>{s.setState({loadedJsonActivityContent:t,loadedJsonAssignmentContent:e,loadedJsonActivityBinaryData:n,loadedJsonAssignmentBinaryData:r})},getActivityContentAndData:()=>s.getState().getJsonActivitySplitContentFunction(),getAssignmentContentAndData:()=>s.getState().getJsonAssignmentSplitContentFunction()},"anti-cheat:1":{lock:()=>{},unlock:()=>{}},"meta-player-ui:1":{executeAction(t){if(t.startsWith("qa")){const n=s.getState().quickActions[t];n?n():console.error(`[React bindings] Quick action not found: ${t}`)}else{const n=s.getState().sidebarActions[t];n?n():console.error(`[React bindings] Sidebar action not found: ${t}`)}},executeFileUpload(t,e){if(t.startsWith("qa")){const r=s.getState().quickActions[t];r?r(e):console.error(`[React bindings] Quick action not found: ${t}`)}else{const r=s.getState().sidebarActions[t];r?r(e):console.error(`[React bindings] Sidebar action not found: ${t}`)}},updateSettings(t){const e=s.getState().activitySettingsCallback;e?e(t):console.warn("activitySettingsCallback is not set. Changes:",t)}},"meta-player-events:1":{handleEvent(t){t==="all-loaded"&&s.setState({ready:!0})}},"llm:1":{getFirstMessageContext:t=>{const e=s.getState().llmGetFirstMessageContextFunction;return e?e(t):""},getAllMessagesContext:t=>{const e=s.getState().llmGetAllMessagesContextFunction;return e?e(t):""},getAvailableTools:t=>{const e=s.getState().llmGetAvailableToolsFunction;return e?e(t):[]},callTool:(t,e,n)=>{const r=s.getState().llmCallToolFunction;if(!r)throw new Error("LLM call tool function is not set");return r(t,e,n)},getToolCallDescription:(t,e,n)=>{const r=s.getState().llmDescribeToolFunction;if(!r)throw new Error("LLM describe tool function is not set");return r(t,e,n)}}},A=Dt();function qt(t){if(!Y){Y=!0;for(const e of t){if(!Nt.includes(e))continue;if(!(e in K)){console.warn(`[React bindings] Contract handler for ${e} is not defined. Skipping plug.`);continue}const n=K[e];A.plug([e],([])=>[n])}A.plugsDone();for(const e of["simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1","simple-content-eval(json):1","simple-content-eval(json):2","simple-content-eval(text):2","separate-contents(json):1","separate-dual-contents(json):1"])if(t.includes(e)){const n=e.split(":")[0];A.use([n],([r])=>{s.subscribe(o=>o.isDirtyCount,()=>{r.i?.contentChanged()})})}}}const Bt=()=>s(t=>{if(t.mode===null)throw new Error("Mode is not set. Have you used contract 'mode'?");return t.mode}),Wt=()=>s(t=>{if(t.workflow===null)throw new Error("Workflow is not set. Have you used contract 'workflow'?");return t.workflow}),Ht=()=>s(t=>{if(t.theme===null)throw new Error("Theme is not set. Have you used contract 'theme'?");return t.theme}),zt=()=>s(t=>t.incSaveCount),Qt=()=>s(t=>t.incDirtyCount),_t=()=>s(t=>t.loadedTextContent),Ut=()=>s(t=>t.loadedJsonContent),Yt=()=>s(t=>t.loadedJsonActivityContent),Kt=()=>s(t=>t.loadedJsonAssignmentContent),Xt=()=>s(t=>t.loadedJsonActivityBinaryData),Zt=()=>s(t=>t.loadedJsonAssignmentBinaryData),te=()=>C.useCallback(()=>s.getState().loadedTextContent,[]),ee=()=>C.useCallback(()=>s.getState().loadedJsonContent,[]),ne=()=>C.useCallback(()=>s.getState().loadedJsonActivityContent,[]),oe=()=>C.useCallback(()=>s.getState().loadedJsonAssignmentContent,[]),re=()=>C.useCallback(()=>({content:s.getState().loadedJsonActivityContent,binaryData:s.getState().loadedJsonActivityBinaryData}),[]),se=()=>C.useCallback(()=>({content:s.getState().loadedJsonAssignmentContent,binaryData:s.getState().loadedJsonAssignmentBinaryData}),[]),ie=t=>{const e=s(n=>n.setGetTextContentFunction);C.useEffect(()=>{e(t)},[t,e])},ae=t=>{const e=s(n=>n.setGetJsonContentFunction);C.useEffect(()=>{e(t)},[t,e])},ce=t=>{const e=s(n=>n.setGetJsonActivityContentFunction);C.useEffect(()=>{e(t)},[t,e])},le=t=>{const e=s(n=>n.setGetJsonAssignmentContentFunction);C.useEffect(()=>{e(t)},[t,e])},ue=t=>{const e=s(n=>n.setGetJsonActivitySplitContentFunction);C.useEffect(()=>{e(t)},[t,e])},de=t=>{const e=s(n=>n.setGetJsonAssignmentSplitContentFunction);C.useEffect(()=>{e(t)},[t,e])},fe=t=>{const e=s(n=>n.afterSaveCount);C.useEffect(()=>{e>0&&t()},[e])},ge=()=>(t,e)=>{A.use(["meta-player-ui"],([n])=>{if(n.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}n.i?.previewTextFile(t,e)})},ve=()=>(t,e)=>{A.use(["meta-player-ui"],([n])=>{if(n.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}n.i?.previewImageFile(t,e)})};let P=0,B=0;const me=(t,e)=>{const n=C.useMemo(t,e),r=s(o=>o.setSidebarActions);C.useEffect(()=>(P++,P>1&&console.error("[React bindings] Capytale iframe React: Multiple sidebar actions registered: ",P),()=>{P--}),[]),C.useEffect(()=>(A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}B++;const i=n.map((c,g)=>({type:c.type,title:c.title,icon:c.icon,id:`sa-${B}-${g}`,...c.type==="file-upload"?{accept:c.accept}:{}})),u={};n.forEach((c,g)=>{u[`sa-${B}-${g}`]=c.action}),o.i?.setSidebarActionButtons(i),r(u)}),()=>{r({}),A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}o.i?.setSidebarActionButtons([])})}),[n])};let G=0,W=0;const pe=(t,e)=>{const n=C.useMemo(t,e),r=s(o=>o.setQuickActions);C.useEffect(()=>(G++,G>1&&console.error("[React bindings] Capytale iframe React: Multiple quick actions registered: ",G),()=>{G--}),[]),C.useEffect(()=>(A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}W++;const i=n.map((c,g)=>({type:c.type,title:c.title,icon:c.icon,id:`qa-${W}-${g}`,...c.type==="file-upload"?{accept:c.accept}:{}})),u={};n.forEach((c,g)=>{u[`qa-${W}-${g}`]=c.action}),o.i?.setQuickActionButtons(i),r(u)}),()=>{r({}),A.use(["meta-player-ui"],([o])=>{if(o.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}o.i?.setQuickActionButtons([])})}),[n])};let D=0;const lt=(t,e,n)=>{const r=C.useMemo(t,n),o=s(i=>i.setActivitySettingsCallback);C.useEffect(()=>(D++,D>1&&console.error("[React bindings] Capytale iframe React: Multiple settings registered: ",D),()=>{D--}),[]),C.useEffect(()=>(A.use(["meta-player-ui"],([i])=>{if(i.version===0){console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}i.i?.setSettingsUI(r)}),o(e),()=>{o(null)}),[r])},ut=()=>C.useCallback(e=>A.exec(["meta-player-ui"],([n])=>{if(n.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"),new Error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return n.i?.showToast(e)}),[]),dt=()=>C.useCallback(e=>A.exec(["meta-player-ui"],([n])=>{if(n.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"),new Error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return n.i?.clearToast(e)}),[]),Ce=()=>C.useCallback(()=>A.exec(["meta-player-ui"],([e])=>{if(e.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"),new Error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return e.i?.clearToasts()}),[]),ft=(t,e)=>{const n=ut(),r=dt();return C.useEffect(()=>{if(t==null)return;const o=n(t);return()=>{o.then(i=>{i!=null&&r(i)})}},[n,r,...e]),null},ye=()=>C.useCallback(()=>A.exec(["trigger-save"],([e])=>{if(e.version===0)throw console.error("[React bindings] Le MétaPlayer ne supporte pas le contrat trigger-save"),new Error("Le MétaPlayer ne supporte pas le contrat trigger-save");return e.i?.triggerSave()}),[]),Se=()=>s(t=>t.canSave),we=(t,e)=>{const n=s(r=>r.setLlmGetFirstMessageContextFunction);C.useEffect(()=>(n(t),()=>{n(null)}),[e,n])},Ae=(t,e)=>{const n=s(r=>r.setLlmGetAllMessagesContextFunction);C.useEffect(()=>(n(t),()=>{n(null)}),[e,n])},be=(t,e,n,r)=>{const o=s(c=>c.setLlmGetAvailableToolsFunction),i=s(c=>c.setLlmCallToolFunction),u=s(c=>c.setLlmDescribeToolFunction);C.useEffect(()=>(o(t),i(e),u(n),()=>{o(null),i(null),u(null)}),[r,o,i,u])},he=(t,e,n)=>{const r=s(i=>i.setPreviewStartPreviewFunction),o=s(i=>i.setPreviewStopPreviewFunction);C.useEffect(()=>(r(t),o(e),()=>{r(null),o(null)}),[n,r,o])};function Fe(t){const e={};for(const n of t.fields)e[n.name]=n.defaultValue;return e}function Ee(t){return{[t.name]:t.defaultValues}}function Je(t){return{[t.name]:t.defaultValue}}function Te(t){switch(t.type){case"form":return Fe(t);case"checkboxes":case"switches":return Ee(t);case"radio":return Je(t);default:return{}}}function Re(t){const e={};for(const n of t)Object.assign(e,Te(n));return e}function ke(t){const n=ct()(r=>({...Re(t)}));return n.activitySettings=t,n}function xe(t){lt(()=>t.activitySettings,e=>{t.setState(e)},[])}function Le({store:t}){return xe(t),null}const Me=["meta-player-events:1","meta-player-ui:1","mode:1","workflow:1"];function Pe({children:t,contracts:e,loadOnlyWhenReady:n=!0,activitySettingsStore:r}){const o=s(i=>i.ready);return C.useEffect(()=>{const i=[...e];for(const u of Me)i.includes(u)||i.push(u);qt(i)},[]),n&&!o?L.jsx("div",{className:"capy-loading-container",children:"Chargement en cours..."}):L.jsxs(L.Fragment,{children:[r&&L.jsx(Le,{store:r}),t]})}function Ge({message:t}){return ft(t,[t]),null}exports.Capytale=Pe;exports.TemporaryToast=Ge;exports.createActivitySettingsStore=ke;exports.useAfterSaveAction=fe;exports.useCanSave=Se;exports.useClearToast=dt;exports.useClearToasts=Ce;exports.useGetLoadedJsonActivityContent=ne;exports.useGetLoadedJsonActivitySplitContent=re;exports.useGetLoadedJsonAssignmentContent=oe;exports.useGetLoadedJsonAssignmentSplitContent=se;exports.useGetLoadedJsonContent=ee;exports.useGetLoadedTextContent=te;exports.useJsonActivityContentSaveFunction=ce;exports.useJsonActivitySplitContentSaveFunction=ue;exports.useJsonAssignmentContentSaveFunction=le;exports.useJsonAssignmentSplitContentSaveFunction=de;exports.useJsonContentSaveFunction=ae;exports.useLLMAllMessagesContext=Ae;exports.useLLMFirstMessageContext=we;exports.useLLMTools=be;exports.useLoadedJsonActivityBinaryData=Xt;exports.useLoadedJsonActivityContent=Yt;exports.useLoadedJsonAssignmentBinaryData=Zt;exports.useLoadedJsonAssignmentContent=Kt;exports.useLoadedJsonContent=Ut;exports.useLoadedTextContent=_t;exports.useMode=Bt;exports.useNotifyIsDirty=Qt;exports.usePreviewAsStudent=he;exports.usePreviewImageFile=ve;exports.usePreviewTextFile=ge;exports.useQuickActions=pe;exports.useRequestSave=zt;exports.useSettings=lt;exports.useShowToast=ut;exports.useSidebarActions=me;exports.useTextContentSaveFunction=ie;exports.useTheme=Ht;exports.useToast=ft;exports.useTriggerSave=ye;exports.useWorkflow=Wt;
|
package/dist/index.d.ts
CHANGED
|
@@ -309,7 +309,7 @@ export declare const useMode: () => "create" | "assignment" | "review" | "view";
|
|
|
309
309
|
|
|
310
310
|
export declare const useNotifyIsDirty: () => () => void;
|
|
311
311
|
|
|
312
|
-
export declare const
|
|
312
|
+
export declare const usePreviewAsStudent: (startPreview: BooleanFunction, stopPreview: SimpleProcedure, deps: readonly unknown[]) => void;
|
|
313
313
|
|
|
314
314
|
export declare const usePreviewImageFile: () => (title: string, url: string) => void;
|
|
315
315
|
|
package/dist/index.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as U, jsxs as ft, Fragment as mt } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import L, { useCallback as b, useEffect as S, useMemo as _ } from "react";
|
|
3
3
|
const et = /* @__PURE__ */ Symbol("Comlink.proxy"), pt = /* @__PURE__ */ Symbol("Comlink.endpoint"), vt = /* @__PURE__ */ Symbol("Comlink.releaseProxy"), q = /* @__PURE__ */ Symbol("Comlink.finalizer"), I = /* @__PURE__ */ Symbol("Comlink.thrown"), nt = (t) => typeof t == "object" && t !== null || typeof t == "function", Ct = {
|
|
4
4
|
canHandle: (t) => nt(t) && t[et],
|
|
5
5
|
serialize(t) {
|
|
@@ -111,7 +111,7 @@ function st(t, e) {
|
|
|
111
111
|
}
|
|
112
112
|
}), z(t, n, [], e);
|
|
113
113
|
}
|
|
114
|
-
function
|
|
114
|
+
function M(t) {
|
|
115
115
|
if (t)
|
|
116
116
|
throw new Error("Proxy has been released and is not useable");
|
|
117
117
|
}
|
|
@@ -138,7 +138,7 @@ function z(t, e, n = [], r = function() {
|
|
|
138
138
|
let o = !1;
|
|
139
139
|
const i = new Proxy(r, {
|
|
140
140
|
get(u, l) {
|
|
141
|
-
if (
|
|
141
|
+
if (M(o), l === vt)
|
|
142
142
|
return () => {
|
|
143
143
|
bt(i), it(t), e.clear(), o = !0;
|
|
144
144
|
};
|
|
@@ -154,7 +154,7 @@ function z(t, e, n = [], r = function() {
|
|
|
154
154
|
return z(t, e, [...n, l]);
|
|
155
155
|
},
|
|
156
156
|
set(u, l, f) {
|
|
157
|
-
|
|
157
|
+
M(o);
|
|
158
158
|
const [g, d] = $(f);
|
|
159
159
|
return x(t, e, {
|
|
160
160
|
type: "SET",
|
|
@@ -163,7 +163,7 @@ function z(t, e, n = [], r = function() {
|
|
|
163
163
|
}, d).then(J);
|
|
164
164
|
},
|
|
165
165
|
apply(u, l, f) {
|
|
166
|
-
|
|
166
|
+
M(o);
|
|
167
167
|
const g = n[n.length - 1];
|
|
168
168
|
if (g === pt)
|
|
169
169
|
return x(t, e, {
|
|
@@ -179,7 +179,7 @@ function z(t, e, n = [], r = function() {
|
|
|
179
179
|
}, m).then(J);
|
|
180
180
|
},
|
|
181
181
|
construct(u, l) {
|
|
182
|
-
|
|
182
|
+
M(o);
|
|
183
183
|
const [f, g] = Y(l);
|
|
184
184
|
return x(t, e, {
|
|
185
185
|
type: "CONSTRUCT",
|
|
@@ -347,7 +347,7 @@ function kt(t) {
|
|
|
347
347
|
v: (a) => E(a)
|
|
348
348
|
}), g;
|
|
349
349
|
}
|
|
350
|
-
function
|
|
350
|
+
function P() {
|
|
351
351
|
return d === void 0 && (d = {
|
|
352
352
|
get name() {
|
|
353
353
|
return e;
|
|
@@ -435,7 +435,7 @@ function kt(t) {
|
|
|
435
435
|
}
|
|
436
436
|
},
|
|
437
437
|
getRemote: () => T(),
|
|
438
|
-
getLazyRemote: () =>
|
|
438
|
+
getLazyRemote: () => P(),
|
|
439
439
|
get activationPromise() {
|
|
440
440
|
return h();
|
|
441
441
|
}
|
|
@@ -490,7 +490,7 @@ function xt(t) {
|
|
|
490
490
|
};
|
|
491
491
|
};
|
|
492
492
|
}
|
|
493
|
-
function
|
|
493
|
+
function Pt(t) {
|
|
494
494
|
return function(e, n, r, o) {
|
|
495
495
|
let i = n, u = !1;
|
|
496
496
|
function l() {
|
|
@@ -528,16 +528,16 @@ function Lt(t) {
|
|
|
528
528
|
function ct(t, e) {
|
|
529
529
|
return t == null || t.length === 0 ? e : `[${t}] ${e}`;
|
|
530
530
|
}
|
|
531
|
-
function
|
|
531
|
+
function Lt(t) {
|
|
532
532
|
function e(a) {
|
|
533
533
|
return ct(t.name, a);
|
|
534
534
|
}
|
|
535
|
-
const n =
|
|
535
|
+
const n = Pt(e), r = kt(e), o = xt(e), i = {}, u = [];
|
|
536
536
|
let l = [], f;
|
|
537
537
|
const g = () => (f == null ? f = 0 : f++, f);
|
|
538
538
|
function d(a) {
|
|
539
539
|
let c = i[a];
|
|
540
|
-
return c == null && (c = r(a), c.localVersion == null && (h && (c.localVersion = 0), T && (c.localVersionSent = !0)), c.remoteVersion == null &&
|
|
540
|
+
return c == null && (c = r(a), c.localVersion == null && (h && (c.localVersion = 0), T && (c.localVersionSent = !0)), c.remoteVersion == null && P && (c.remoteVersion = 0), i[a] = c), c;
|
|
541
541
|
}
|
|
542
542
|
function m(a) {
|
|
543
543
|
return a.map(d);
|
|
@@ -545,8 +545,8 @@ function Mt(t) {
|
|
|
545
545
|
function v(...a) {
|
|
546
546
|
const c = g(), p = Array(c).fill(!1);
|
|
547
547
|
a.forEach((C) => {
|
|
548
|
-
C.forEach((
|
|
549
|
-
|
|
548
|
+
C.forEach((w) => {
|
|
549
|
+
w.depGroup != null && (p[w.depGroup] = !0), w.depGroup = c;
|
|
550
550
|
});
|
|
551
551
|
}), Object.values(i).forEach((C) => {
|
|
552
552
|
C.depGroup != null && C.depGroup !== c && p[C.depGroup] && (C.depGroup = c);
|
|
@@ -558,7 +558,7 @@ function Mt(t) {
|
|
|
558
558
|
a[p].version != null && (c[p].remoteVersion = a[p].version);
|
|
559
559
|
v(c), R();
|
|
560
560
|
}, t.onDone = () => {
|
|
561
|
-
|
|
561
|
+
P || (P = !0, Object.values(i).forEach((a) => {
|
|
562
562
|
a.remoteVersion == null && (a.remoteVersion = 0);
|
|
563
563
|
}), R());
|
|
564
564
|
}, t.onProvide = (a, c, p) => {
|
|
@@ -571,7 +571,7 @@ function Mt(t) {
|
|
|
571
571
|
throw new Error(e(`Remote contract "${a}" is already provided.`));
|
|
572
572
|
C.setRemoteInterface(p), R();
|
|
573
573
|
};
|
|
574
|
-
let y = !1, E = !1, h = !1, T = !1,
|
|
574
|
+
let y = !1, E = !1, h = !1, T = !1, P = !1;
|
|
575
575
|
async function R() {
|
|
576
576
|
if (E = !0, !y) {
|
|
577
577
|
for (y = !0; E; ) {
|
|
@@ -580,7 +580,7 @@ function Mt(t) {
|
|
|
580
580
|
if (a.length > 0)
|
|
581
581
|
for (const c of a) {
|
|
582
582
|
const p = Array(c.args.length + c.deps.length);
|
|
583
|
-
c.args.forEach((C,
|
|
583
|
+
c.args.forEach((C, w) => p[w] = C), c.deps.forEach((C, w) => p[w + c.args.length] = C), await t.declare(p.map((C) => ({ name: C.name, version: C.localVersion }))), p.forEach((C) => {
|
|
584
584
|
C.localVersion != null && (C.localVersionSent = !0);
|
|
585
585
|
}), c.isDeclared = !0;
|
|
586
586
|
}
|
|
@@ -598,8 +598,8 @@ function Mt(t) {
|
|
|
598
598
|
for (const c of a) {
|
|
599
599
|
const p = c.invoke();
|
|
600
600
|
for (let C = 0; C < c.args.length; C++) {
|
|
601
|
-
const
|
|
602
|
-
await t.provide(
|
|
601
|
+
const w = c.args[C];
|
|
602
|
+
await t.provide(w.name, w.localVersion, p[C]), w.localInterfaceSent = !0;
|
|
603
603
|
}
|
|
604
604
|
}
|
|
605
605
|
}
|
|
@@ -633,21 +633,21 @@ function Mt(t) {
|
|
|
633
633
|
},
|
|
634
634
|
declareFactory: (a, c, p, C) => {
|
|
635
635
|
if (h) throw new Error(e("Cannot declare a factory after done has been set to true."));
|
|
636
|
-
const
|
|
636
|
+
const w = m(a.map((F) => F.name));
|
|
637
637
|
{
|
|
638
|
-
const F =
|
|
638
|
+
const F = w.filter((N) => N.localVersion != null);
|
|
639
639
|
if (F.length > 0)
|
|
640
640
|
throw new Error(e("Cannot declare a factory for already implemented contracts : " + F.map((N) => N.name).join(", ")));
|
|
641
641
|
}
|
|
642
642
|
for (let F = 0; F < a.length; F++)
|
|
643
|
-
|
|
643
|
+
w[F].localVersion = a[F].version;
|
|
644
644
|
const k = m(c);
|
|
645
|
-
v(
|
|
646
|
-
const gt = o(
|
|
645
|
+
v(w, k);
|
|
646
|
+
const gt = o(w, k, p, C);
|
|
647
647
|
u.push(gt), R();
|
|
648
648
|
},
|
|
649
649
|
declareCallback(a, c, p, C) {
|
|
650
|
-
const
|
|
650
|
+
const w = m(a), k = n(w, c, p, C);
|
|
651
651
|
!y && l.length === 0 && k.isReady ? k.invoke() : (l.push(k), R());
|
|
652
652
|
},
|
|
653
653
|
get done() {
|
|
@@ -663,15 +663,15 @@ function Mt(t) {
|
|
|
663
663
|
}
|
|
664
664
|
};
|
|
665
665
|
}
|
|
666
|
-
const
|
|
666
|
+
const Mt = /^\d+$/;
|
|
667
667
|
function Gt(t) {
|
|
668
668
|
const [e, n, r] = t.split(":", 3);
|
|
669
|
-
if (n == null || r != null || !
|
|
669
|
+
if (n == null || r != null || !Mt.test(n)) return null;
|
|
670
670
|
const o = parseInt(n);
|
|
671
671
|
return isNaN(o) || o === 0 ? null : { name: e, version: o };
|
|
672
672
|
}
|
|
673
673
|
function Dt(t) {
|
|
674
|
-
const e =
|
|
674
|
+
const e = Lt(t);
|
|
675
675
|
function n(r) {
|
|
676
676
|
return ct(t.name, r);
|
|
677
677
|
}
|
|
@@ -725,12 +725,12 @@ const K = (t) => {
|
|
|
725
725
|
return l;
|
|
726
726
|
}, It = ((t) => t ? K(t) : K), jt = (t) => t;
|
|
727
727
|
function Ot(t, e = jt) {
|
|
728
|
-
const n =
|
|
728
|
+
const n = L.useSyncExternalStore(
|
|
729
729
|
t.subscribe,
|
|
730
|
-
|
|
731
|
-
|
|
730
|
+
L.useCallback(() => e(t.getState()), [t, e]),
|
|
731
|
+
L.useCallback(() => e(t.getInitialState()), [t, e])
|
|
732
732
|
);
|
|
733
|
-
return
|
|
733
|
+
return L.useDebugValue(n), n;
|
|
734
734
|
}
|
|
735
735
|
const X = (t) => {
|
|
736
736
|
const e = It(t), n = (r) => Ot(e, r);
|
|
@@ -1239,47 +1239,47 @@ const re = () => s((t) => {
|
|
|
1239
1239
|
const e = s(
|
|
1240
1240
|
(n) => n.setGetTextContentFunction
|
|
1241
1241
|
);
|
|
1242
|
-
|
|
1242
|
+
S(() => {
|
|
1243
1243
|
e(t);
|
|
1244
1244
|
}, [t, e]);
|
|
1245
1245
|
}, be = (t) => {
|
|
1246
1246
|
const e = s(
|
|
1247
1247
|
(n) => n.setGetJsonContentFunction
|
|
1248
1248
|
);
|
|
1249
|
-
|
|
1249
|
+
S(() => {
|
|
1250
1250
|
e(t);
|
|
1251
1251
|
}, [t, e]);
|
|
1252
1252
|
}, he = (t) => {
|
|
1253
1253
|
const e = s(
|
|
1254
1254
|
(n) => n.setGetJsonActivityContentFunction
|
|
1255
1255
|
);
|
|
1256
|
-
|
|
1256
|
+
S(() => {
|
|
1257
1257
|
e(t);
|
|
1258
1258
|
}, [t, e]);
|
|
1259
1259
|
}, Fe = (t) => {
|
|
1260
1260
|
const e = s(
|
|
1261
1261
|
(n) => n.setGetJsonAssignmentContentFunction
|
|
1262
1262
|
);
|
|
1263
|
-
|
|
1263
|
+
S(() => {
|
|
1264
1264
|
e(t);
|
|
1265
1265
|
}, [t, e]);
|
|
1266
1266
|
}, Ee = (t) => {
|
|
1267
1267
|
const e = s(
|
|
1268
1268
|
(n) => n.setGetJsonActivitySplitContentFunction
|
|
1269
1269
|
);
|
|
1270
|
-
|
|
1270
|
+
S(() => {
|
|
1271
1271
|
e(t);
|
|
1272
1272
|
}, [t, e]);
|
|
1273
1273
|
}, Re = (t) => {
|
|
1274
1274
|
const e = s(
|
|
1275
1275
|
(n) => n.setGetJsonAssignmentSplitContentFunction
|
|
1276
1276
|
);
|
|
1277
|
-
|
|
1277
|
+
S(() => {
|
|
1278
1278
|
e(t);
|
|
1279
1279
|
}, [t, e]);
|
|
1280
1280
|
}, Je = (t) => {
|
|
1281
1281
|
const e = s((n) => n.afterSaveCount);
|
|
1282
|
-
|
|
1282
|
+
S(() => {
|
|
1283
1283
|
e > 0 && t();
|
|
1284
1284
|
}, [e]);
|
|
1285
1285
|
}, Te = () => (t, e) => {
|
|
@@ -1306,12 +1306,12 @@ const re = () => s((t) => {
|
|
|
1306
1306
|
let G = 0, B = 0;
|
|
1307
1307
|
const xe = (t, e) => {
|
|
1308
1308
|
const n = _(t, e), r = s((o) => o.setSidebarActions);
|
|
1309
|
-
|
|
1309
|
+
S(() => (G++, G > 1 && console.error(
|
|
1310
1310
|
"[React bindings] Capytale iframe React: Multiple sidebar actions registered: ",
|
|
1311
1311
|
G
|
|
1312
1312
|
), () => {
|
|
1313
1313
|
G--;
|
|
1314
|
-
}), []),
|
|
1314
|
+
}), []), S(() => (A.use(["meta-player-ui"], ([o]) => {
|
|
1315
1315
|
if (o.version === 0) {
|
|
1316
1316
|
console.error(
|
|
1317
1317
|
"[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"
|
|
@@ -1342,14 +1342,14 @@ const xe = (t, e) => {
|
|
|
1342
1342
|
}), [n]);
|
|
1343
1343
|
};
|
|
1344
1344
|
let D = 0, H = 0;
|
|
1345
|
-
const
|
|
1345
|
+
const Pe = (t, e) => {
|
|
1346
1346
|
const n = _(t, e), r = s((o) => o.setQuickActions);
|
|
1347
|
-
|
|
1347
|
+
S(() => (D++, D > 1 && console.error(
|
|
1348
1348
|
"[React bindings] Capytale iframe React: Multiple quick actions registered: ",
|
|
1349
1349
|
D
|
|
1350
1350
|
), () => {
|
|
1351
1351
|
D--;
|
|
1352
|
-
}), []),
|
|
1352
|
+
}), []), S(() => (A.use(["meta-player-ui"], ([o]) => {
|
|
1353
1353
|
if (o.version === 0) {
|
|
1354
1354
|
console.error(
|
|
1355
1355
|
"[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"
|
|
@@ -1384,12 +1384,12 @@ const Bt = (t, e, n) => {
|
|
|
1384
1384
|
const r = _(t, n), o = s(
|
|
1385
1385
|
(i) => i.setActivitySettingsCallback
|
|
1386
1386
|
);
|
|
1387
|
-
|
|
1387
|
+
S(() => (V++, V > 1 && console.error(
|
|
1388
1388
|
"[React bindings] Capytale iframe React: Multiple settings registered: ",
|
|
1389
1389
|
V
|
|
1390
1390
|
), () => {
|
|
1391
1391
|
V--;
|
|
1392
|
-
}), []),
|
|
1392
|
+
}), []), S(() => (A.use(["meta-player-ui"], ([i]) => {
|
|
1393
1393
|
if (i.version === 0) {
|
|
1394
1394
|
console.error(
|
|
1395
1395
|
"[React bindings] Le MétaPlayer ne supporte pas le contrat meta-player-ui"
|
|
@@ -1421,7 +1421,7 @@ const Bt = (t, e, n) => {
|
|
|
1421
1421
|
return n.i?.clearToast(e);
|
|
1422
1422
|
}),
|
|
1423
1423
|
[]
|
|
1424
|
-
),
|
|
1424
|
+
), Le = () => b(
|
|
1425
1425
|
() => A.exec(["meta-player-ui"], ([e]) => {
|
|
1426
1426
|
if (e.version === 0)
|
|
1427
1427
|
throw console.error(
|
|
@@ -1434,7 +1434,7 @@ const Bt = (t, e, n) => {
|
|
|
1434
1434
|
[]
|
|
1435
1435
|
), _t = (t, e) => {
|
|
1436
1436
|
const n = Ht(), r = zt();
|
|
1437
|
-
return
|
|
1437
|
+
return S(() => {
|
|
1438
1438
|
if (t == null)
|
|
1439
1439
|
return;
|
|
1440
1440
|
const o = n(t);
|
|
@@ -1444,7 +1444,7 @@ const Bt = (t, e, n) => {
|
|
|
1444
1444
|
});
|
|
1445
1445
|
};
|
|
1446
1446
|
}, [n, r, ...e]), null;
|
|
1447
|
-
},
|
|
1447
|
+
}, Me = () => b(() => A.exec(["trigger-save"], ([e]) => {
|
|
1448
1448
|
if (e.version === 0)
|
|
1449
1449
|
throw console.error(
|
|
1450
1450
|
"[React bindings] Le MétaPlayer ne supporte pas le contrat trigger-save"
|
|
@@ -1456,14 +1456,14 @@ const Bt = (t, e, n) => {
|
|
|
1456
1456
|
const n = s(
|
|
1457
1457
|
(r) => r.setLlmGetFirstMessageContextFunction
|
|
1458
1458
|
);
|
|
1459
|
-
|
|
1459
|
+
S(() => (n(t), () => {
|
|
1460
1460
|
n(null);
|
|
1461
1461
|
}), [e, n]);
|
|
1462
1462
|
}, Ve = (t, e) => {
|
|
1463
1463
|
const n = s(
|
|
1464
1464
|
(r) => r.setLlmGetAllMessagesContextFunction
|
|
1465
1465
|
);
|
|
1466
|
-
|
|
1466
|
+
S(() => (n(t), () => {
|
|
1467
1467
|
n(null);
|
|
1468
1468
|
}), [e, n]);
|
|
1469
1469
|
}, Ie = (t, e, n, r) => {
|
|
@@ -1474,7 +1474,7 @@ const Bt = (t, e, n) => {
|
|
|
1474
1474
|
), u = s(
|
|
1475
1475
|
(l) => l.setLlmDescribeToolFunction
|
|
1476
1476
|
);
|
|
1477
|
-
|
|
1477
|
+
S(() => (o(t), i(e), u(n), () => {
|
|
1478
1478
|
o(null), i(null), u(null);
|
|
1479
1479
|
}), [
|
|
1480
1480
|
r,
|
|
@@ -1482,6 +1482,19 @@ const Bt = (t, e, n) => {
|
|
|
1482
1482
|
i,
|
|
1483
1483
|
u
|
|
1484
1484
|
]);
|
|
1485
|
+
}, je = (t, e, n) => {
|
|
1486
|
+
const r = s(
|
|
1487
|
+
(i) => i.setPreviewStartPreviewFunction
|
|
1488
|
+
), o = s(
|
|
1489
|
+
(i) => i.setPreviewStopPreviewFunction
|
|
1490
|
+
);
|
|
1491
|
+
S(() => (r(t), o(e), () => {
|
|
1492
|
+
r(null), o(null);
|
|
1493
|
+
}), [
|
|
1494
|
+
n,
|
|
1495
|
+
r,
|
|
1496
|
+
o
|
|
1497
|
+
]);
|
|
1485
1498
|
};
|
|
1486
1499
|
function Qt(t) {
|
|
1487
1500
|
const e = {};
|
|
@@ -1514,7 +1527,7 @@ function Xt(t) {
|
|
|
1514
1527
|
Object.assign(e, Kt(n));
|
|
1515
1528
|
return e;
|
|
1516
1529
|
}
|
|
1517
|
-
function
|
|
1530
|
+
function Oe(t) {
|
|
1518
1531
|
const n = dt()((r) => ({
|
|
1519
1532
|
...Xt(t)
|
|
1520
1533
|
}));
|
|
@@ -1540,14 +1553,14 @@ const ee = [
|
|
|
1540
1553
|
"mode:1",
|
|
1541
1554
|
"workflow:1"
|
|
1542
1555
|
];
|
|
1543
|
-
function
|
|
1556
|
+
function $e({
|
|
1544
1557
|
children: t,
|
|
1545
1558
|
contracts: e,
|
|
1546
1559
|
loadOnlyWhenReady: n = !0,
|
|
1547
1560
|
activitySettingsStore: r
|
|
1548
1561
|
}) {
|
|
1549
1562
|
const o = s((i) => i.ready);
|
|
1550
|
-
return
|
|
1563
|
+
return S(() => {
|
|
1551
1564
|
const i = [...e];
|
|
1552
1565
|
for (const u of ee)
|
|
1553
1566
|
i.includes(u) || i.push(u);
|
|
@@ -1557,17 +1570,17 @@ function Oe({
|
|
|
1557
1570
|
t
|
|
1558
1571
|
] });
|
|
1559
1572
|
}
|
|
1560
|
-
function
|
|
1573
|
+
function Ne({ message: t }) {
|
|
1561
1574
|
return _t(t, [t]), null;
|
|
1562
1575
|
}
|
|
1563
1576
|
export {
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1577
|
+
$e as Capytale,
|
|
1578
|
+
Ne as TemporaryToast,
|
|
1579
|
+
Oe as createActivitySettingsStore,
|
|
1567
1580
|
Je as useAfterSaveAction,
|
|
1568
1581
|
Ge as useCanSave,
|
|
1569
1582
|
zt as useClearToast,
|
|
1570
|
-
|
|
1583
|
+
Le as useClearToasts,
|
|
1571
1584
|
Ce as useGetLoadedJsonActivityContent,
|
|
1572
1585
|
Se as useGetLoadedJsonActivitySplitContent,
|
|
1573
1586
|
ye as useGetLoadedJsonAssignmentContent,
|
|
@@ -1590,9 +1603,10 @@ export {
|
|
|
1590
1603
|
ce as useLoadedTextContent,
|
|
1591
1604
|
re as useMode,
|
|
1592
1605
|
le as useNotifyIsDirty,
|
|
1606
|
+
je as usePreviewAsStudent,
|
|
1593
1607
|
ke as usePreviewImageFile,
|
|
1594
1608
|
Te as usePreviewTextFile,
|
|
1595
|
-
|
|
1609
|
+
Pe as useQuickActions,
|
|
1596
1610
|
ae as useRequestSave,
|
|
1597
1611
|
Bt as useSettings,
|
|
1598
1612
|
Ht as useShowToast,
|
|
@@ -1600,6 +1614,6 @@ export {
|
|
|
1600
1614
|
Ae as useTextContentSaveFunction,
|
|
1601
1615
|
ie as useTheme,
|
|
1602
1616
|
_t as useToast,
|
|
1603
|
-
|
|
1617
|
+
Me as useTriggerSave,
|
|
1604
1618
|
se as useWorkflow
|
|
1605
1619
|
};
|