@capytale/iframe-react 1.0.0 → 1.0.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/README.md CHANGED
@@ -1,6 +1,5 @@
1
- # Player VS
2
- - Pour les activités Vittascience et gamecode hébergées par l'académie
3
- - Basé sur le nouveau meta-player
4
- - basé sur la communication par contrats metaplayer-rpc
1
+ # Capytale iframe React
5
2
 
6
- > déployé dans ```/p/vs```
3
+ Une bibliothèque React pour intégrer une application React à la plateforme Capytale.
4
+
5
+ Elle gère la communication entre l'application React et le conteneur Capytale, en utilisant des contrats metaplayer-rpc.
package/dist/index.cjs.js CHANGED
@@ -1,30 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=require("react"),ht=require("@capytale/app-agent");var B={exports:{}},q={};/**
2
- * @license React
3
- * react-jsx-runtime.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 Oe;function Et(){if(Oe)return q;Oe=1;var t=R,r=Symbol.for("react.element"),a=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,l=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,h={key:!0,ref:!0,__self:!0,__source:!0};function y(S,c,g){var E,m={},k=null,P=null;g!==void 0&&(k=""+g),c.key!==void 0&&(k=""+c.key),c.ref!==void 0&&(P=c.ref);for(E in c)s.call(c,E)&&!h.hasOwnProperty(E)&&(m[E]=c[E]);if(S&&S.defaultProps)for(E in c=S.defaultProps,c)m[E]===void 0&&(m[E]=c[E]);return{$$typeof:r,type:S,key:k,ref:P,props:m,_owner:l.current}}return q.Fragment=a,q.jsx=y,q.jsxs=y,q}var J={};/**
10
- * @license React
11
- * react-jsx-runtime.development.js
12
- *
13
- * Copyright (c) Facebook, Inc. and its affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */var je;function Rt(){return je||(je=1,process.env.NODE_ENV!=="production"&&function(){var t=R,r=Symbol.for("react.element"),a=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),h=Symbol.for("react.profiler"),y=Symbol.for("react.provider"),S=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),P=Symbol.for("react.offscreen"),L=Symbol.iterator,We="@@iterator";function qe(e){if(e===null||typeof e!="object")return null;var n=L&&e[L]||e[We];return typeof n=="function"?n:null}var D=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function T(e){{for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];Je("error",e,o)}}function Je(e,n,o){{var i=D.ReactDebugCurrentFrame,v=i.getStackAddendum();v!==""&&(n+="%s",o=o.concat([v]));var p=o.map(function(d){return String(d)});p.unshift("Warning: "+n),Function.prototype.apply.call(console[e],console,p)}}var Le=!1,Ye=!1,Ue=!1,Ne=!1,Ve=!1,ie;ie=Symbol.for("react.module.reference");function Be(e){return!!(typeof e=="string"||typeof e=="function"||e===s||e===h||Ve||e===l||e===g||e===E||Ne||e===P||Le||Ye||Ue||typeof e=="object"&&e!==null&&(e.$$typeof===k||e.$$typeof===m||e.$$typeof===y||e.$$typeof===S||e.$$typeof===c||e.$$typeof===ie||e.getModuleId!==void 0))}function Ge(e,n,o){var i=e.displayName;if(i)return i;var v=n.displayName||n.name||"";return v!==""?o+"("+v+")":o}function se(e){return e.displayName||"Context"}function O(e){if(e==null)return null;if(typeof e.tag=="number"&&T("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case s:return"Fragment";case a:return"Portal";case h:return"Profiler";case l:return"StrictMode";case g:return"Suspense";case E:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case S:var n=e;return se(n)+".Consumer";case y:var o=e;return se(o._context)+".Provider";case c:return Ge(e,e.render,"ForwardRef");case m:var i=e.displayName||null;return i!==null?i:O(e.type)||"Memo";case k:{var v=e,p=v._payload,d=v._init;try{return O(d(p))}catch{return null}}}return null}var j=Object.assign,M=0,ue,ce,le,fe,de,ve,pe;function ge(){}ge.__reactDisabledLog=!0;function Qe(){{if(M===0){ue=console.log,ce=console.info,le=console.warn,fe=console.error,de=console.group,ve=console.groupCollapsed,pe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ge,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}M++}}function He(){{if(M--,M===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:j({},e,{value:ue}),info:j({},e,{value:ce}),warn:j({},e,{value:le}),error:j({},e,{value:fe}),group:j({},e,{value:de}),groupCollapsed:j({},e,{value:ve}),groupEnd:j({},e,{value:pe})})}M<0&&T("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var K=D.ReactCurrentDispatcher,z;function Y(e,n,o){{if(z===void 0)try{throw Error()}catch(v){var i=v.stack.trim().match(/\n( *(at )?)/);z=i&&i[1]||""}return`
18
- `+z+e}}var X=!1,U;{var Ke=typeof WeakMap=="function"?WeakMap:Map;U=new Ke}function ye(e,n){if(!e||X)return"";{var o=U.get(e);if(o!==void 0)return o}var i;X=!0;var v=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var p;p=K.current,K.current=null,Qe();try{if(n){var d=function(){throw Error()};if(Object.defineProperty(d.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(d,[])}catch(w){i=w}Reflect.construct(e,[],d)}else{try{d.call()}catch(w){i=w}e.call(d.prototype)}}else{try{throw Error()}catch(w){i=w}e()}}catch(w){if(w&&i&&typeof w.stack=="string"){for(var f=w.stack.split(`
19
- `),_=i.stack.split(`
20
- `),b=f.length-1,C=_.length-1;b>=1&&C>=0&&f[b]!==_[C];)C--;for(;b>=1&&C>=0;b--,C--)if(f[b]!==_[C]){if(b!==1||C!==1)do if(b--,C--,C<0||f[b]!==_[C]){var x=`
21
- `+f[b].replace(" at new "," at ");return e.displayName&&x.includes("<anonymous>")&&(x=x.replace("<anonymous>",e.displayName)),typeof e=="function"&&U.set(e,x),x}while(b>=1&&C>=0);break}}}finally{X=!1,K.current=p,He(),Error.prepareStackTrace=v}var $=e?e.displayName||e.name:"",F=$?Y($):"";return typeof e=="function"&&U.set(e,F),F}function ze(e,n,o){return ye(e,!1)}function Xe(e){var n=e.prototype;return!!(n&&n.isReactComponent)}function N(e,n,o){if(e==null)return"";if(typeof e=="function")return ye(e,Xe(e));if(typeof e=="string")return Y(e);switch(e){case g:return Y("Suspense");case E:return Y("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case c:return ze(e.render);case m:return N(e.type,n,o);case k:{var i=e,v=i._payload,p=i._init;try{return N(p(v),n,o)}catch{}}}return""}var W=Object.prototype.hasOwnProperty,Se={},me=D.ReactDebugCurrentFrame;function V(e){if(e){var n=e._owner,o=N(e.type,e._source,n?n.type:null);me.setExtraStackFrame(o)}else me.setExtraStackFrame(null)}function Ze(e,n,o,i,v){{var p=Function.call.bind(W);for(var d in e)if(p(e,d)){var f=void 0;try{if(typeof e[d]!="function"){var _=Error((i||"React class")+": "+o+" type `"+d+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[d]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw _.name="Invariant Violation",_}f=e[d](n,d,i,o,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(b){f=b}f&&!(f instanceof Error)&&(V(v),T("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",i||"React class",o,d,typeof f),V(null)),f instanceof Error&&!(f.message in Se)&&(Se[f.message]=!0,V(v),T("Failed %s type: %s",o,f.message),V(null))}}}var et=Array.isArray;function Z(e){return et(e)}function tt(e){{var n=typeof Symbol=="function"&&Symbol.toStringTag,o=n&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o}}function nt(e){try{return be(e),!1}catch{return!0}}function be(e){return""+e}function Ce(e){if(nt(e))return T("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",tt(e)),be(e)}var he=D.ReactCurrentOwner,rt={key:!0,ref:!0,__self:!0,__source:!0},Ee,Re;function ot(e){if(W.call(e,"ref")){var n=Object.getOwnPropertyDescriptor(e,"ref").get;if(n&&n.isReactWarning)return!1}return e.ref!==void 0}function at(e){if(W.call(e,"key")){var n=Object.getOwnPropertyDescriptor(e,"key").get;if(n&&n.isReactWarning)return!1}return e.key!==void 0}function it(e,n){typeof e.ref=="string"&&he.current}function st(e,n){{var o=function(){Ee||(Ee=!0,T("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",n))};o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}}function ut(e,n){{var o=function(){Re||(Re=!0,T("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",n))};o.isReactWarning=!0,Object.defineProperty(e,"ref",{get:o,configurable:!0})}}var ct=function(e,n,o,i,v,p,d){var f={$$typeof:r,type:e,key:n,ref:o,props:d,_owner:p};return f._store={},Object.defineProperty(f._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(f,"_self",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.defineProperty(f,"_source",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.freeze&&(Object.freeze(f.props),Object.freeze(f)),f};function lt(e,n,o,i,v){{var p,d={},f=null,_=null;o!==void 0&&(Ce(o),f=""+o),at(n)&&(Ce(n.key),f=""+n.key),ot(n)&&(_=n.ref,it(n,v));for(p in n)W.call(n,p)&&!rt.hasOwnProperty(p)&&(d[p]=n[p]);if(e&&e.defaultProps){var b=e.defaultProps;for(p in b)d[p]===void 0&&(d[p]=b[p])}if(f||_){var C=typeof e=="function"?e.displayName||e.name||"Unknown":e;f&&st(d,C),_&&ut(d,C)}return ct(e,f,_,v,i,he.current,d)}}var ee=D.ReactCurrentOwner,Te=D.ReactDebugCurrentFrame;function I(e){if(e){var n=e._owner,o=N(e.type,e._source,n?n.type:null);Te.setExtraStackFrame(o)}else Te.setExtraStackFrame(null)}var te;te=!1;function ne(e){return typeof e=="object"&&e!==null&&e.$$typeof===r}function _e(){{if(ee.current){var e=O(ee.current.type);if(e)return`
22
-
23
- Check the render method of \``+e+"`."}return""}}function ft(e){return""}var we={};function dt(e){{var n=_e();if(!n){var o=typeof e=="string"?e:e.displayName||e.name;o&&(n=`
24
-
25
- Check the top-level render call using <`+o+">.")}return n}}function xe(e,n){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var o=dt(n);if(we[o])return;we[o]=!0;var i="";e&&e._owner&&e._owner!==ee.current&&(i=" It was passed a child from "+O(e._owner.type)+"."),I(e),T('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',o,i),I(null)}}function ke(e,n){{if(typeof e!="object")return;if(Z(e))for(var o=0;o<e.length;o++){var i=e[o];ne(i)&&xe(i,n)}else if(ne(e))e._store&&(e._store.validated=!0);else if(e){var v=qe(e);if(typeof v=="function"&&v!==e.entries)for(var p=v.call(e),d;!(d=p.next()).done;)ne(d.value)&&xe(d.value,n)}}}function vt(e){{var n=e.type;if(n==null||typeof n=="string")return;var o;if(typeof n=="function")o=n.propTypes;else if(typeof n=="object"&&(n.$$typeof===c||n.$$typeof===m))o=n.propTypes;else return;if(o){var i=O(n);Ze(o,e.props,"prop",i,e)}else if(n.PropTypes!==void 0&&!te){te=!0;var v=O(n);T("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",v||"Unknown")}typeof n.getDefaultProps=="function"&&!n.getDefaultProps.isReactClassApproved&&T("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function pt(e){{for(var n=Object.keys(e.props),o=0;o<n.length;o++){var i=n[o];if(i!=="children"&&i!=="key"){I(e),T("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",i),I(null);break}}e.ref!==null&&(I(e),T("Invalid attribute `ref` supplied to `React.Fragment`."),I(null))}}var Ae={};function Pe(e,n,o,i,v,p){{var d=Be(e);if(!d){var f="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(f+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var _=ft();_?f+=_:f+=_e();var b;e===null?b="null":Z(e)?b="array":e!==void 0&&e.$$typeof===r?(b="<"+(O(e.type)||"Unknown")+" />",f=" Did you accidentally export a JSX literal instead of a component?"):b=typeof e,T("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",b,f)}var C=lt(e,n,o,v,p);if(C==null)return C;if(d){var x=n.children;if(x!==void 0)if(i)if(Z(x)){for(var $=0;$<x.length;$++)ke(x[$],e);Object.freeze&&Object.freeze(x)}else T("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ke(x,e)}if(W.call(n,"key")){var F=O(e),w=Object.keys(n).filter(function(Ct){return Ct!=="key"}),re=w.length>0?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}";if(!Ae[F+re]){var bt=w.length>0?"{"+w.join(": ..., ")+": ...}":"{}";T(`A props object containing a "key" prop is being spread into JSX:
26
- let props = %s;
27
- <%s {...props} />
28
- React keys must be passed directly to JSX without using spread:
29
- let props = %s;
30
- <%s key={someKey} {...props} />`,re,F,bt,F),Ae[F+re]=!0}}return e===s?pt(C):vt(C),C}}function gt(e,n,o){return Pe(e,n,o,!0)}function yt(e,n,o){return Pe(e,n,o,!1)}var St=yt,mt=gt;J.Fragment=s,J.jsx=St,J.jsxs=mt}()),J}var Fe;function Tt(){return Fe||(Fe=1,process.env.NODE_ENV==="production"?B.exports=Et():B.exports=Rt()),B.exports}var De=Tt();const Ie=t=>{let r;const a=new Set,s=(g,E)=>{const m=typeof g=="function"?g(r):g;if(!Object.is(m,r)){const k=r;r=E??(typeof m!="object"||m===null)?m:Object.assign({},r,m),a.forEach(P=>P(r,k))}},l=()=>r,S={setState:s,getState:l,getInitialState:()=>c,subscribe:g=>(a.add(g),()=>a.delete(g))},c=r=t(s,l,S);return S},_t=t=>t?Ie(t):Ie,wt=t=>t;function xt(t,r=wt){const a=R.useSyncExternalStore(t.subscribe,()=>r(t.getState()),()=>r(t.getInitialState()));return R.useDebugValue(a),a}const $e=t=>{const r=_t(t),a=s=>xt(r,s);return Object.assign(a,r),a},kt=t=>t?$e(t):$e,At=t=>(r,a,s)=>{const l=s.subscribe;return s.subscribe=(y,S,c)=>{let g=y;if(S){const E=(c==null?void 0:c.equalityFn)||Object.is;let m=y(s.getState());g=k=>{const P=y(k);if(!E(m,P)){const L=m;S(m=P,L)}},c!=null&&c.fireImmediately&&S(m,m)}return l(g)},t(r,a,s)},Pt=At,u=kt()(Pt(t=>({ready:!1,workflow:"current",mode:"assignment",theme:"light",saveCount:0,afterSaveCount:0,isDirtyCount:0,loadedTextContent:null,loadedJsonContent:null,getTextContentFunction:()=>(console.error("getTextContentFunction is not set"),null),getJsonContentFunction:()=>(console.error("getJsonContentFunction is not set"),null),sidebarActions:{},quickActions:{},activitySettings:null,setGetTextContentFunction:r=>{t({getTextContentFunction:r})},setGetJsonContentFunction:r=>{t({getJsonContentFunction:r})},setSidebarActions:r=>{t({sidebarActions:r})},setQuickActions:r=>{t({quickActions:r})},setActivitySettings:r=>{t({activitySettings:r})},incSaveCount:()=>t(r=>({saveCount:r.saveCount+1})),incDirtyCount:()=>t(r=>({isDirtyCount:r.isDirtyCount+1}))}))),Ot=["meta-player-events:1","meta-player-ui:1","mode:1","reload:1","theme:1","workflow:1","simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1","simple-content-eval(json):1"],Me={"mode:1":{setMode:t=>{u.setState({mode:t})}},"reload:1":{reloaded:t=>{console.log("Reloaded with state:",t),console.error("Not implemented yet")}},"theme:1":{setTheme:t=>{if(t===null){u.setState({theme:null});return}if(t!=="light"&&t!=="dark"){console.warn(`Invalid theme: ${t}. Expected 'light' or 'dark'.`),u.setState({theme:null});return}u.setState({theme:t})}},"workflow:1":{setWorkflow:t=>{u.setState({workflow:t})}},"simple-content(text):1":{contentSaved:()=>{u.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>u.getState().getTextContentFunction(),loadContent:t=>{u.setState({loadedTextContent:t})}},"simple-content(json):1":{contentSaved:()=>{u.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>u.getState().getJsonContentFunction(),loadContent:t=>{u.setState({loadedJsonContent:t})}},"simple-binary-data(text):1":{contentSaved:()=>{u.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>u.getState().getTextContentFunction(),loadContent:t=>{u.setState({loadedTextContent:t})}},"simple-content-eval(text):1":{contentSaved:()=>{u.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>u.getState().getTextContentFunction(),loadContent:t=>{u.setState({loadedTextContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(text)")}},"simple-content-eval(json):1":{contentSaved:()=>{u.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>u.getState().getJsonContentFunction(),loadContent:t=>{u.setState({loadedJsonContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(json)")}},"meta-player-ui:1":{executeAction(t){if(t.startsWith("qa")){const a=u.getState().quickActions[t];a?a():console.error(`Quick action not found: ${t}`)}else{const a=u.getState().sidebarActions[t];a?a():console.error(`Sidebar action not found: ${t}`)}},executeFileUpload(t,r){if(t.startsWith("qa")){const s=u.getState().quickActions[t];s?s(r):console.error(`Quick action not found: ${t}`)}else{const s=u.getState().sidebarActions[t];s?s(r):console.error(`Sidebar action not found: ${t}`)}},updateSettings(t){u.setState({activitySettings:t})}},"meta-player-events:1":{handleEvent(t){t==="all-loaded"&&u.setState({ready:!0})}}},A=ht.getSocket();function jt(t){for(const r of t){if(!Ot.includes(r)){console.warn(`Contract ${r} is not implemented in Capytale. Skipping plug.`);continue}if(!(r in Me)){console.warn(`Contract handler for ${r} is not defined. Skipping plug.`);continue}const a=Me[r];A.plug([r],([])=>[a])}A.plugsDone();for(const r of["simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1"])if(console.log(`Contract ${r} is being subscribed to content changes.`),t.includes(r)){console.log(`Subscribing to content changes for contract ${r}`);const a=r.split(":")[0];A.use([a],([s])=>{u.subscribe(l=>l.isDirtyCount,()=>{var l;(l=s.i)==null||l.contentChanged(),console.log(`Content changed for contract ${a}`)})})}}function Ft({children:t,contracts:r,loadOnlyWhenReady:a=!0}){const s=u(l=>l.ready);return R.useEffect(()=>{const l=r.includes("meta-player-events:1")?r:[...r,"meta-player-events:1"];jt(l)},[]),a&&!s?De.jsx("div",{className:"container",children:"Chargement en cours..."}):De.jsx("div",{className:"container",children:t})}const Dt=()=>u(t=>{if(t.mode===null)throw new Error("Mode is not set. Have you used contract 'mode'?");return t.mode}),It=()=>u(t=>{if(t.workflow===null)throw new Error("Workflow is not set. Have you used contract 'workflow'?");return t.workflow}),$t=()=>u(t=>{if(t.theme===null)throw new Error("Theme is not set. Have you used contract 'theme'?");return t.theme}),Mt=()=>u(t=>t.incSaveCount),Wt=()=>u(t=>t.incDirtyCount),qt=()=>u(t=>t.loadedTextContent),Jt=()=>u(t=>t.loadedJsonContent),Lt=t=>{const r=u(a=>a.setGetTextContentFunction);R.useEffect(()=>{r(t)},[t,r])},Yt=t=>{const r=u(a=>a.setGetJsonContentFunction);R.useEffect(()=>{r(t)},[t,r])},Ut=t=>{const r=u(a=>a.afterSaveCount);R.useEffect(()=>{r>0&&t()},[r])},Nt=()=>(t,r)=>{A.use(["meta-player-ui"],([a])=>{var s;if(a.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(s=a.i)==null||s.previewTextFile(t,r)})},Vt=()=>(t,r)=>{A.use(["meta-player-ui"],([a])=>{var s;if(a.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(s=a.i)==null||s.previewImageFile(t,r)})};let G=0,oe=0;const Bt=(t,r)=>{const a=R.useMemo(t,r),s=u(l=>l.setSidebarActions);R.useEffect(()=>(G++,G>1&&console.error("Capytale iframe React: Multiple sidebar actions registered: ",G),()=>{G--}),[]),R.useEffect(()=>(A.use(["meta-player-ui"],([l])=>{var S;if(l.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}oe++;const h=a.map((c,g)=>({type:c.type,title:c.title,icon:c.icon,id:`sa-${oe}-${g}`,...c.type==="file-upload"?{accept:c.accept}:{}})),y={};a.forEach((c,g)=>{y[`sa-${oe}-${g}`]=c.action}),(S=l.i)==null||S.setSidebarActionButtons(h),s(y)}),()=>{s({}),A.use(["meta-player-ui"],([l])=>{var h;if(l.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(h=l.i)==null||h.setSidebarActionButtons([])})}),[a])};let Q=0,ae=0;const Gt=(t,r)=>{const a=R.useMemo(t,r),s=u(l=>l.setQuickActions);R.useEffect(()=>(Q++,Q>1&&console.error("Capytale iframe React: Multiple quick actions registered: ",Q),()=>{Q--}),[]),R.useEffect(()=>(A.use(["meta-player-ui"],([l])=>{var S;if(l.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}ae++;const h=a.map((c,g)=>({type:c.type,title:c.title,icon:c.icon,id:`qa-${ae}-${g}`,...c.type==="file-upload"?{accept:c.accept}:{}})),y={};a.forEach((c,g)=>{y[`qa-${ae}-${g}`]=c.action}),(S=l.i)==null||S.setQuickActionButtons(h),s(y)}),()=>{s({}),A.use(["meta-player-ui"],([l])=>{var h;if(l.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(h=l.i)==null||h.setQuickActionButtons([])})}),[a])};let H=0;const Qt=(t,r)=>{const a=R.useMemo(t,r),s=u(y=>y.setActivitySettings),l=u(y=>y.activitySettings),h=R.useRef("");return R.useEffect(()=>(console.log("Mounting useSettings"),H++,H>1&&console.error("Capytale iframe React: Multiple settings registered: ",H),()=>{H--}),[]),R.useEffect(()=>{const y=JSON.stringify(a);if(y!==h.current)return h.current=y,A.use(["meta-player-ui"],([S])=>{var c;if(S.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}console.log("Updating settings UI in MetaPlayer",a),(c=S.i)==null||c.setSettingsUI(a)}),()=>{s(null)}},[a]),l},Ht=()=>r=>{A.use(["meta-player-ui"],([a])=>{var s;if(a.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(s=a.i)==null||s.showToast(r)})};exports.Capytale=Ft;exports.useAfterSaveAction=Ut;exports.useJsonContentSaveFunction=Yt;exports.useLoadedJsonContent=Jt;exports.useLoadedTextContent=qt;exports.useMode=Dt;exports.useNotifyIsDirty=Wt;exports.usePreviewImageFile=Vt;exports.usePreviewTextFile=Nt;exports.useQuickActions=Gt;exports.useRequestSave=Mt;exports.useSettings=Qt;exports.useShowToast=Ht;exports.useSidebarActions=Bt;exports.useTextContentSaveFunction=Lt;exports.useTheme=$t;exports.useWorkflow=It;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("react/jsx-runtime"),u=require("react"),F=require("@capytale/app-agent"),h=t=>{let e;const n=new Set,s=(a,p)=>{const f=typeof a=="function"?a(e):a;if(!Object.is(f,e)){const v=e;e=p??(typeof f!="object"||f===null)?f:Object.assign({},e,f),n.forEach(g=>g(e,v))}},i=()=>e,l={setState:s,getState:i,getInitialState:()=>r,subscribe:a=>(n.add(a),()=>n.delete(a))},r=e=t(s,i,l);return l},M=t=>t?h(t):h,E=t=>t;function q(t,e=E){const n=u.useSyncExternalStore(t.subscribe,()=>e(t.getState()),()=>e(t.getInitialState()));return u.useDebugValue(n),n}const x=t=>{const e=M(t),n=s=>q(e,s);return Object.assign(n,e),n},I=t=>t?x(t):x,J=t=>(e,n,s)=>{const i=s.subscribe;return s.subscribe=(c,l,r)=>{let a=c;if(l){const p=(r==null?void 0:r.equalityFn)||Object.is;let f=c(s.getState());a=v=>{const g=c(v);if(!p(f,g)){const T=f;l(f=g,T)}},r!=null&&r.fireImmediately&&l(f,f)}return i(a)},t(e,n,s)},$=J,o=I()($(t=>({ready:!1,workflow:"current",mode:"assignment",theme:"light",saveCount:0,afterSaveCount:0,isDirtyCount:0,loadedTextContent:null,loadedJsonContent:null,getTextContentFunction:()=>(console.error("getTextContentFunction is not set"),null),getJsonContentFunction:()=>(console.error("getJsonContentFunction is not set"),null),sidebarActions:{},quickActions:{},activitySettings:null,setGetTextContentFunction:e=>{t({getTextContentFunction:e})},setGetJsonContentFunction:e=>{t({getJsonContentFunction:e})},setSidebarActions:e=>{t({sidebarActions:e})},setQuickActions:e=>{t({quickActions:e})},setActivitySettings:e=>{t({activitySettings:e})},incSaveCount:()=>t(e=>({saveCount:e.saveCount+1})),incDirtyCount:()=>t(e=>({isDirtyCount:e.isDirtyCount+1}))}))),j=["meta-player-events:1","meta-player-ui:1","mode:1","reload:1","theme:1","workflow:1","simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1","simple-content-eval(json):1"],k={"mode:1":{setMode:t=>{o.setState({mode:t})}},"reload:1":{reloaded:t=>{console.log("Reloaded with state:",t),console.error("Not implemented yet")}},"theme:1":{setTheme:t=>{if(t===null){o.setState({theme:null});return}if(t!=="light"&&t!=="dark"){console.warn(`Invalid theme: ${t}. Expected 'light' or 'dark'.`),o.setState({theme:null});return}o.setState({theme:t})}},"workflow:1":{setWorkflow:t=>{o.setState({workflow:t})}},"simple-content(text):1":{contentSaved:()=>{o.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>o.getState().getTextContentFunction(),loadContent:t=>{o.setState({loadedTextContent:t})}},"simple-content(json):1":{contentSaved:()=>{o.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>o.getState().getJsonContentFunction(),loadContent:t=>{o.setState({loadedJsonContent:t})}},"simple-binary-data(text):1":{contentSaved:()=>{o.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>o.getState().getTextContentFunction(),loadContent:t=>{o.setState({loadedTextContent:t})}},"simple-content-eval(text):1":{contentSaved:()=>{o.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>o.getState().getTextContentFunction(),loadContent:t=>{o.setState({loadedTextContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(text)")}},"simple-content-eval(json):1":{contentSaved:()=>{o.setState(t=>({afterSaveCount:t.afterSaveCount+1}))},getContent:()=>o.getState().getJsonContentFunction(),loadContent:t=>{o.setState({loadedJsonContent:t})},getAssignmentContent:()=>{throw new Error("getAssignmentContent is not implemented for simple-content-eval(json)")}},"meta-player-ui:1":{executeAction(t){if(t.startsWith("qa")){const n=o.getState().quickActions[t];n?n():console.error(`Quick action not found: ${t}`)}else{const n=o.getState().sidebarActions[t];n?n():console.error(`Sidebar action not found: ${t}`)}},executeFileUpload(t,e){if(t.startsWith("qa")){const s=o.getState().quickActions[t];s?s(e):console.error(`Quick action not found: ${t}`)}else{const s=o.getState().sidebarActions[t];s?s(e):console.error(`Sidebar action not found: ${t}`)}},updateSettings(t){o.setState({activitySettings:t})}},"meta-player-events:1":{handleEvent(t){t==="all-loaded"&&o.setState({ready:!0})}}},S=F.getSocket();function P(t){for(const e of t){if(!j.includes(e)){console.warn(`Contract ${e} is not implemented in Capytale. Skipping plug.`);continue}if(!(e in k)){console.warn(`Contract handler for ${e} is not defined. Skipping plug.`);continue}const n=k[e];S.plug([e],([])=>[n])}S.plugsDone();for(const e of["simple-content(text):1","simple-content(json):1","simple-binary-data(text):1","simple-content-eval(text):1"])if(console.log(`Contract ${e} is being subscribed to content changes.`),t.includes(e)){console.log(`Subscribing to content changes for contract ${e}`);const n=e.split(":")[0];S.use([n],([s])=>{o.subscribe(i=>i.isDirtyCount,()=>{var i;(i=s.i)==null||i.contentChanged(),console.log(`Content changed for contract ${n}`)})})}}function L({children:t,contracts:e,loadOnlyWhenReady:n=!0}){const s=o(i=>i.ready);return u.useEffect(()=>{const i=e.includes("meta-player-events:1")?e:[...e,"meta-player-events:1"];P(i)},[]),n&&!s?w.jsx("div",{className:"container",children:"Chargement en cours..."}):w.jsx("div",{className:"container",children:t})}const R=()=>o(t=>{if(t.mode===null)throw new Error("Mode is not set. Have you used contract 'mode'?");return t.mode}),D=()=>o(t=>{if(t.workflow===null)throw new Error("Workflow is not set. Have you used contract 'workflow'?");return t.workflow}),Q=()=>o(t=>{if(t.theme===null)throw new Error("Theme is not set. Have you used contract 'theme'?");return t.theme}),W=()=>o(t=>t.incSaveCount),N=()=>o(t=>t.incDirtyCount),O=()=>o(t=>t.loadedTextContent),G=()=>o(t=>t.loadedJsonContent),H=t=>{const e=o(n=>n.setGetTextContentFunction);u.useEffect(()=>{e(t)},[t,e])},U=t=>{const e=o(n=>n.setGetJsonContentFunction);u.useEffect(()=>{e(t)},[t,e])},B=t=>{const e=o(n=>n.afterSaveCount);u.useEffect(()=>{e>0&&t()},[e])},V=()=>(t,e)=>{S.use(["meta-player-ui"],([n])=>{var s;if(n.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(s=n.i)==null||s.previewTextFile(t,e)})},_=()=>(t,e)=>{S.use(["meta-player-ui"],([n])=>{var s;if(n.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(s=n.i)==null||s.previewImageFile(t,e)})};let C=0,b=0;const z=(t,e)=>{const n=u.useMemo(t,e),s=o(i=>i.setSidebarActions);u.useEffect(()=>(C++,C>1&&console.error("Capytale iframe React: Multiple sidebar actions registered: ",C),()=>{C--}),[]),u.useEffect(()=>(S.use(["meta-player-ui"],([i])=>{var l;if(i.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}b++;const d=n.map((r,a)=>({type:r.type,title:r.title,icon:r.icon,id:`sa-${b}-${a}`,...r.type==="file-upload"?{accept:r.accept}:{}})),c={};n.forEach((r,a)=>{c[`sa-${b}-${a}`]=r.action}),(l=i.i)==null||l.setSidebarActionButtons(d),s(c)}),()=>{s({}),S.use(["meta-player-ui"],([i])=>{var d;if(i.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(d=i.i)==null||d.setSidebarActionButtons([])})}),[n])};let y=0,A=0;const K=(t,e)=>{const n=u.useMemo(t,e),s=o(i=>i.setQuickActions);u.useEffect(()=>(y++,y>1&&console.error("Capytale iframe React: Multiple quick actions registered: ",y),()=>{y--}),[]),u.useEffect(()=>(S.use(["meta-player-ui"],([i])=>{var l;if(i.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}A++;const d=n.map((r,a)=>({type:r.type,title:r.title,icon:r.icon,id:`qa-${A}-${a}`,...r.type==="file-upload"?{accept:r.accept}:{}})),c={};n.forEach((r,a)=>{c[`qa-${A}-${a}`]=r.action}),(l=i.i)==null||l.setQuickActionButtons(d),s(c)}),()=>{s({}),S.use(["meta-player-ui"],([i])=>{var d;if(i.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(d=i.i)==null||d.setQuickActionButtons([])})}),[n])};let m=0;const X=(t,e)=>{const n=u.useMemo(t,e),s=o(c=>c.setActivitySettings),i=o(c=>c.activitySettings),d=u.useRef("");return u.useEffect(()=>(console.log("Mounting useSettings"),m++,m>1&&console.error("Capytale iframe React: Multiple settings registered: ",m),()=>{m--}),[]),u.useEffect(()=>{const c=JSON.stringify(n);if(c!==d.current)return d.current=c,S.use(["meta-player-ui"],([l])=>{var r;if(l.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}console.log("Updating settings UI in MetaPlayer",n),(r=l.i)==null||r.setSettingsUI(n)}),()=>{s(null)}},[n]),i},Y=()=>e=>{S.use(["meta-player-ui"],([n])=>{var s;if(n.version===0){console.error("Le MétaPlayer ne supporte pas le contrat meta-player-ui");return}(s=n.i)==null||s.showToast(e)})};exports.Capytale=L;exports.useAfterSaveAction=B;exports.useJsonContentSaveFunction=U;exports.useLoadedJsonContent=G;exports.useLoadedTextContent=O;exports.useMode=R;exports.useNotifyIsDirty=N;exports.usePreviewImageFile=_;exports.usePreviewTextFile=V;exports.useQuickActions=K;exports.useRequestSave=W;exports.useSettings=X;exports.useShowToast=Y;exports.useSidebarActions=z;exports.useTextContentSaveFunction=H;exports.useTheme=Q;exports.useWorkflow=D;