diff --git a/outputs/public/api/index.php b/outputs/public/api/index.php deleted file mode 100644 index 5734571..0000000 --- a/outputs/public/api/index.php +++ /dev/null @@ -1,60 +0,0 @@ -setBasePath(get_public_path(__DIR__)); - - $router->map("POST", "/auth", Action::noAuth(fn() => getAuthController()->authorize())); - $router->map("POST", "/tactic/[i:id]/edit/name", Action::auth(fn(int $id, Account $acc) => getTacticController()->updateName($id, $acc))); - $router->map("POST", "/tactic/[i:id]/save", Action::auth(fn(int $id, Account $acc) => getTacticController()->saveContent($id, $acc))); - - return $router; -} - -/** - * Defines the way of being authorised through the API - * By checking if an Authorisation header is set, and by expecting its value to be a valid token of an account. - * If the header is not set, fallback to the App's PHP session system, and try to extract the account from it. - * @return Account|null - * @throws Exception - */ -function tryGetAuthorization(): ?Account { - $headers = getallheaders(); - - // If no authorization header is set, try fallback to php session. - if (!isset($headers['Authorization'])) { - $session = PhpSessionHandle::init(); - return $session->getAccount(); - } - - $token = $headers['Authorization']; - $gateway = new AccountGateway(new Connection(get_database())); - return $gateway->getAccountFromToken($token); -} - -Api::render(API::handleMatch(getRoutes()->match(), fn() => tryGetAuthorization())); diff --git a/outputs/public/arrow-73d7c199.svg b/outputs/public/arrow-73d7c199.svg deleted file mode 100644 index 87d213c..0000000 --- a/outputs/public/arrow-73d7c199.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/outputs/public/assets/court/full_court.svg b/outputs/public/assets/court/full_court.svg deleted file mode 100644 index 5bfc0de..0000000 --- a/outputs/public/assets/court/full_court.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/outputs/public/assets/court/half_court.svg b/outputs/public/assets/court/half_court.svg deleted file mode 100644 index 7bf82e0..0000000 --- a/outputs/public/assets/court/half_court.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/outputs/public/assets/favicon.ico b/outputs/public/assets/favicon.ico deleted file mode 100644 index a11777c..0000000 Binary files a/outputs/public/assets/favicon.ico and /dev/null differ diff --git a/outputs/public/assets/icon/account.png b/outputs/public/assets/icon/account.png deleted file mode 100644 index 6ed3299..0000000 Binary files a/outputs/public/assets/icon/account.png and /dev/null differ diff --git a/outputs/public/assets/icon/account.svg b/outputs/public/assets/icon/account.svg deleted file mode 100644 index ce59194..0000000 --- a/outputs/public/assets/icon/account.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/outputs/public/assets/icon/arrow.svg b/outputs/public/assets/icon/arrow.svg deleted file mode 100644 index 87d213c..0000000 --- a/outputs/public/assets/icon/arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/outputs/public/assets/icon/ball.svg b/outputs/public/assets/icon/ball.svg deleted file mode 100644 index 6351088..0000000 --- a/outputs/public/assets/icon/ball.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - -Created by potrace 1.15, written by Peter Selinger 2001-2017 - - - - - - - - - - - - diff --git a/outputs/public/assets/icon/remove.svg b/outputs/public/assets/icon/remove.svg deleted file mode 100644 index 29aec4e..0000000 --- a/outputs/public/assets/icon/remove.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/outputs/public/assets/logo.svg b/outputs/public/assets/logo.svg deleted file mode 100644 index 9dfc1c0..0000000 --- a/outputs/public/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/outputs/public/assets/logo192.png b/outputs/public/assets/logo192.png deleted file mode 100644 index fc44b0a..0000000 Binary files a/outputs/public/assets/logo192.png and /dev/null differ diff --git a/outputs/public/assets/logo512.png b/outputs/public/assets/logo512.png deleted file mode 100644 index a4e47a6..0000000 Binary files a/outputs/public/assets/logo512.png and /dev/null differ diff --git a/outputs/public/cjs-ff7eb0e1.js b/outputs/public/cjs-ff7eb0e1.js deleted file mode 100644 index 8da27e1..0000000 --- a/outputs/public/cjs-ff7eb0e1.js +++ /dev/null @@ -1,3 +0,0 @@ -import{g as _t,r as ot,a as Ct}from"./jsx-runtime-2e2d9038.js";import{r as at}from"./index-ca121481.js";var A={exports:{}},st={},it={exports:{}},Mt="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Ot=Mt,xt=Ot;function lt(){}function ut(){}ut.resetWarningCache=lt;var Nt=function(){function t(r,o,i,c,d,p){if(p!==xt){var m=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw m.name="Invariant Violation",m}}t.isRequired=t;function e(){return t}var n={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:ut,resetWarningCache:lt};return n.PropTypes=n,n};it.exports=Nt();var ct=it.exports;function ft(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t))for(e=0;e0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const n=(t=window.document)===null||t===void 0||(t=t.documentElement)===null||t===void 0?void 0:t.style;if(!n||e in n)return"";for(let r=0;re===n.identifier)||t.changedTouches&&(0,b.findInArray)(t.changedTouches,n=>e===n.identifier)}function Qt(t){if(t.targetTouches&&t.targetTouches[0])return t.targetTouches[0].identifier;if(t.changedTouches&&t.changedTouches[0])return t.changedTouches[0].identifier}function Zt(t){if(!t)return;let e=t.getElementById("react-draggable-style-el");e||(e=t.createElement("style"),e.type="text/css",e.id="react-draggable-style-el",e.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;} -`,e.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;} -`,t.getElementsByTagName("head")[0].appendChild(e)),t.body&&mt(t.body,"react-draggable-transparent-selection")}function te(t){if(t)try{if(t.body&&yt(t.body,"react-draggable-transparent-selection"),t.selection)t.selection.empty();else{const e=(t.defaultView||window).getSelection();e&&e.type!=="Caret"&&e.removeAllRanges()}}catch{}}function mt(t,e){t.classList?t.classList.add(e):t.className.match(new RegExp("(?:^|\\s)".concat(e,"(?!\\S)")))||(t.className+=" ".concat(e))}function yt(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp("(?:^|\\s)".concat(e,"(?!\\S)"),"g"),"")}var _={};Object.defineProperty(_,"__esModule",{value:!0});_.canDragX=re;_.canDragY=oe;_.createCoreData=se;_.createDraggableData=ie;_.getBoundPosition=ee;_.getControlPosition=ae;_.snapToGrid=ne;var S=T,X=h;function ee(t,e,n){if(!t.props.bounds)return[e,n];let{bounds:r}=t.props;r=typeof r=="string"?r:le(r);const o=G(t);if(typeof r=="string"){const{ownerDocument:i}=o,c=i.defaultView;let d;if(r==="parent"?d=o.parentNode:d=i.querySelector(r),!(d instanceof c.HTMLElement))throw new Error('Bounds selector "'+r+'" could not find an element.');const p=d,m=c.getComputedStyle(o),P=c.getComputedStyle(p);r={left:-o.offsetLeft+(0,S.int)(P.paddingLeft)+(0,S.int)(m.marginLeft),top:-o.offsetTop+(0,S.int)(P.paddingTop)+(0,S.int)(m.marginTop),right:(0,X.innerWidth)(p)-(0,X.outerWidth)(o)-o.offsetLeft+(0,S.int)(P.paddingRight)-(0,S.int)(m.marginRight),bottom:(0,X.innerHeight)(p)-(0,X.outerHeight)(o)-o.offsetTop+(0,S.int)(P.paddingBottom)-(0,S.int)(m.marginBottom)}}return(0,S.isNum)(r.right)&&(e=Math.min(e,r.right)),(0,S.isNum)(r.bottom)&&(n=Math.min(n,r.bottom)),(0,S.isNum)(r.left)&&(e=Math.max(e,r.left)),(0,S.isNum)(r.top)&&(n=Math.max(n,r.top)),[e,n]}function ne(t,e,n){const r=Math.round(e/t[0])*t[0],o=Math.round(n/t[1])*t[1];return[r,o]}function re(t){return t.props.axis==="both"||t.props.axis==="x"}function oe(t){return t.props.axis==="both"||t.props.axis==="y"}function ae(t,e,n){const r=typeof e=="number"?(0,X.getTouch)(t,e):null;if(typeof e=="number"&&!r)return null;const o=G(n),i=n.props.offsetParent||o.offsetParent||o.ownerDocument.body;return(0,X.offsetXYFromParent)(r||t,i,n.props.scale)}function se(t,e,n){const r=!(0,S.isNum)(t.lastX),o=G(t);return r?{node:o,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:o,deltaX:e-t.lastX,deltaY:n-t.lastY,lastX:t.lastX,lastY:t.lastY,x:e,y:n}}function ie(t,e){const n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}}function le(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}function G(t){const e=t.findDOMNode();if(!e)throw new Error(": Unmounted during event!");return e}var I={},L={};Object.defineProperty(L,"__esModule",{value:!0});L.default=ue;function ue(){}Object.defineProperty(I,"__esModule",{value:!0});I.default=void 0;var V=fe(ot),D=z(ct),ce=z(at),y=h,M=_,k=T,R=z(L);function z(t){return t&&t.__esModule?t:{default:t}}function vt(t){if(typeof WeakMap!="function")return null;var e=new WeakMap,n=new WeakMap;return(vt=function(r){return r?n:e})(t)}function fe(t,e){if(!e&&t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var n=vt(e);if(n&&n.has(t))return n.get(t);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(i!=="default"&&Object.prototype.hasOwnProperty.call(t,i)){var c=o?Object.getOwnPropertyDescriptor(t,i):null;c&&(c.get||c.set)?Object.defineProperty(r,i,c):r[i]=t[i]}return r.default=t,n&&n.set(t,r),r}function v(t,e,n){return e=de(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function de(t){var e=pe(t,"string");return typeof e=="symbol"?e:String(e)}function pe(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}const w={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let O=w.mouse,$=class extends V.Component{constructor(){super(...arguments),v(this,"dragging",!1),v(this,"lastX",NaN),v(this,"lastY",NaN),v(this,"touchIdentifier",null),v(this,"mounted",!1),v(this,"handleDragStart",e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&typeof e.button=="number"&&e.button!==0)return!1;const n=this.findDOMNode();if(!n||!n.ownerDocument||!n.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:r}=n;if(this.props.disabled||!(e.target instanceof r.defaultView.Node)||this.props.handle&&!(0,y.matchesSelectorAndParentsTo)(e.target,this.props.handle,n)||this.props.cancel&&(0,y.matchesSelectorAndParentsTo)(e.target,this.props.cancel,n))return;e.type==="touchstart"&&e.preventDefault();const o=(0,y.getTouchIdentifier)(e);this.touchIdentifier=o;const i=(0,M.getControlPosition)(e,o,this);if(i==null)return;const{x:c,y:d}=i,p=(0,M.createCoreData)(this,c,d);(0,R.default)("DraggableCore: handleDragStart: %j",p),(0,R.default)("calling",this.props.onStart),!(this.props.onStart(e,p)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,y.addUserSelectStyles)(r),this.dragging=!0,this.lastX=c,this.lastY=d,(0,y.addEvent)(r,O.move,this.handleDrag),(0,y.addEvent)(r,O.stop,this.handleDragStop))}),v(this,"handleDrag",e=>{const n=(0,M.getControlPosition)(e,this.touchIdentifier,this);if(n==null)return;let{x:r,y:o}=n;if(Array.isArray(this.props.grid)){let d=r-this.lastX,p=o-this.lastY;if([d,p]=(0,M.snapToGrid)(this.props.grid,d,p),!d&&!p)return;r=this.lastX+d,o=this.lastY+p}const i=(0,M.createCoreData)(this,r,o);if((0,R.default)("DraggableCore: handleDrag: %j",i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const p=document.createEvent("MouseEvents");p.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(p)}return}this.lastX=r,this.lastY=o}),v(this,"handleDragStop",e=>{if(!this.dragging)return;const n=(0,M.getControlPosition)(e,this.touchIdentifier,this);if(n==null)return;let{x:r,y:o}=n;if(Array.isArray(this.props.grid)){let p=r-this.lastX||0,m=o-this.lastY||0;[p,m]=(0,M.snapToGrid)(this.props.grid,p,m),r=this.lastX+p,o=this.lastY+m}const i=(0,M.createCoreData)(this,r,o);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;const d=this.findDOMNode();d&&this.props.enableUserSelectHack&&(0,y.removeUserSelectStyles)(d.ownerDocument),(0,R.default)("DraggableCore: handleDragStop: %j",i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,d&&((0,R.default)("DraggableCore: Removing handlers"),(0,y.removeEvent)(d.ownerDocument,O.move,this.handleDrag),(0,y.removeEvent)(d.ownerDocument,O.stop,this.handleDragStop))}),v(this,"onMouseDown",e=>(O=w.mouse,this.handleDragStart(e))),v(this,"onMouseUp",e=>(O=w.mouse,this.handleDragStop(e))),v(this,"onTouchStart",e=>(O=w.touch,this.handleDragStart(e))),v(this,"onTouchEnd",e=>(O=w.touch,this.handleDragStop(e)))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,y.addEvent)(e,w.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:n}=e;(0,y.removeEvent)(n,w.mouse.move,this.handleDrag),(0,y.removeEvent)(n,w.touch.move,this.handleDrag),(0,y.removeEvent)(n,w.mouse.stop,this.handleDragStop),(0,y.removeEvent)(n,w.touch.stop,this.handleDragStop),(0,y.removeEvent)(e,w.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,y.removeUserSelectStyles)(n)}}findDOMNode(){var e,n;return(e=this.props)!==null&&e!==void 0&&e.nodeRef?(n=this.props)===null||n===void 0||(n=n.nodeRef)===null||n===void 0?void 0:n.current:ce.default.findDOMNode(this)}render(){return V.cloneElement(V.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};I.default=$;v($,"displayName","DraggableCore");v($,"propTypes",{allowAnyClick:D.default.bool,children:D.default.node.isRequired,disabled:D.default.bool,enableUserSelectHack:D.default.bool,offsetParent:function(t,e){if(t[e]&&t[e].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:D.default.arrayOf(D.default.number),handle:D.default.string,cancel:D.default.string,nodeRef:D.default.object,onStart:D.default.func,onDrag:D.default.func,onStop:D.default.func,onMouseDown:D.default.func,scale:D.default.number,className:k.dontSetMe,style:k.dontSetMe,transform:k.dontSetMe});v($,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1});(function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return p.default}}),t.default=void 0;var e=St(ot),n=P(ct),r=P(at),o=P(Xt),i=h,c=_,d=T,p=P(I),m=P(L);function P(a){return a&&a.__esModule?a:{default:a}}function K(a){if(typeof WeakMap!="function")return null;var s=new WeakMap,u=new WeakMap;return(K=function(l){return l?u:s})(a)}function St(a,s){if(!s&&a&&a.__esModule)return a;if(a===null||typeof a!="object"&&typeof a!="function")return{default:a};var u=K(s);if(u&&u.has(a))return u.get(a);var l={},g=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if(f!=="default"&&Object.prototype.hasOwnProperty.call(a,f)){var C=g?Object.getOwnPropertyDescriptor(a,f):null;C&&(C.get||C.set)?Object.defineProperty(l,f,C):l[f]=a[f]}return l.default=a,u&&u.set(a,l),l}function B(){return B=Object.assign?Object.assign.bind():function(a){for(var s=1;s{if((0,m.default)("Draggable: onDragStart: %j",l),this.props.onStart(u,(0,c.createDraggableData)(this,l))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),N(this,"onDrag",(u,l)=>{if(!this.state.dragging)return!1;(0,m.default)("Draggable: onDrag: %j",l);const g=(0,c.createDraggableData)(this,l),f={x:g.x,y:g.y,slackX:0,slackY:0};if(this.props.bounds){const{x:Y,y:E}=f;f.x+=this.state.slackX,f.y+=this.state.slackY;const[U,j]=(0,c.getBoundPosition)(this,f.x,f.y);f.x=U,f.y=j,f.slackX=this.state.slackX+(Y-f.x),f.slackY=this.state.slackY+(E-f.y),g.x=f.x,g.y=f.y,g.deltaX=f.x-this.state.x,g.deltaY=f.y-this.state.y}if(this.props.onDrag(u,g)===!1)return!1;this.setState(f)}),N(this,"onDragStop",(u,l)=>{if(!this.state.dragging||this.props.onStop(u,(0,c.createDraggableData)(this,l))===!1)return!1;(0,m.default)("Draggable: onDragStop: %j",l);const f={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:Y,y:E}=this.props.position;f.x=Y,f.y=E}this.setState(f)}),this.state={dragging:!1,dragged:!1,x:s.position?s.position.x:s.defaultPosition.x,y:s.position?s.position.y:s.defaultPosition.y,prevPropsPosition:{...s.position},slackX:0,slackY:0,isElementSVG:!1},s.position&&!(s.onDrag||s.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}findDOMNode(){var s,u;return(s=(u=this.props)===null||u===void 0||(u=u.nodeRef)===null||u===void 0?void 0:u.current)!==null&&s!==void 0?s:r.default.findDOMNode(this)}render(){const{axis:s,bounds:u,children:l,defaultPosition:g,defaultClassName:f,defaultClassNameDragging:C,defaultClassNameDragged:Y,position:E,positionOffset:U,scale:j,...Pt}=this.props;let J={},Q=null;const Z=!!!E||this.state.dragging,tt=E||g,et={x:(0,c.canDragX)(this)&&Z?this.state.x:tt.x,y:(0,c.canDragY)(this)&&Z?this.state.y:tt.y};this.state.isElementSVG?Q=(0,i.createSVGTransform)(et,U):J=(0,i.createCSSTransform)(et,U);const Tt=(0,o.default)(l.props.className||"",f,{[C]:this.state.dragging,[Y]:this.state.dragged});return e.createElement(p.default,B({},Pt,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),e.cloneElement(e.Children.only(l),{className:Tt,style:{...l.props.style,...J},transform:Q}))}}t.default=W,N(W,"displayName","Draggable"),N(W,"propTypes",{...p.default.propTypes,axis:n.default.oneOf(["both","x","y","none"]),bounds:n.default.oneOfType([n.default.shape({left:n.default.number,right:n.default.number,top:n.default.number,bottom:n.default.number}),n.default.string,n.default.oneOf([!1])]),defaultClassName:n.default.string,defaultClassNameDragging:n.default.string,defaultClassNameDragged:n.default.string,defaultPosition:n.default.shape({x:n.default.number,y:n.default.number}),positionOffset:n.default.shape({x:n.default.oneOfType([n.default.number,n.default.string]),y:n.default.oneOfType([n.default.number,n.default.string])}),position:n.default.shape({x:n.default.number,y:n.default.number}),className:d.dontSetMe,style:d.dontSetMe,transform:d.dontSetMe}),N(W,"defaultProps",{...p.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(st);const{default:Dt,DraggableCore:he}=st;A.exports=Dt;A.exports.default=Dt;A.exports.DraggableCore=he;var ge=A.exports;const Se=Ct(ge);export{Se as D}; diff --git a/outputs/public/front/Constants.ts-0288c91b.js b/outputs/public/front/Constants.ts-0288c91b.js deleted file mode 100644 index 0a724b5..0000000 --- a/outputs/public/front/Constants.ts-0288c91b.js +++ /dev/null @@ -1 +0,0 @@ -const o="/api",t="";export{o as API,t as BASE}; diff --git a/outputs/public/front/Fetcher.ts-06285d09.js b/outputs/public/front/Fetcher.ts-06285d09.js deleted file mode 100644 index adbd036..0000000 --- a/outputs/public/front/Fetcher.ts-06285d09.js +++ /dev/null @@ -1 +0,0 @@ -import{API as e}from"./Constants.ts-0288c91b.js";function p(t,n,o="POST"){return fetch(`${e}/${t}`,{method:o,headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n)})}export{p as fetchAPI}; diff --git a/outputs/public/front/ViewRenderer.tsx-10ef55f2.js b/outputs/public/front/ViewRenderer.tsx-10ef55f2.js deleted file mode 100644 index fd3dd3f..0000000 --- a/outputs/public/front/ViewRenderer.tsx-10ef55f2.js +++ /dev/null @@ -1 +0,0 @@ -import{j as o,R as c}from"../jsx-runtime-2e2d9038.js";import{r as n}from"../index-ca121481.js";var t={},r=n;t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot;function i(e,a){t.createRoot(document.getElementById("root")).render(o.jsx(c.StrictMode,{children:o.jsx(e,{...a})}))}export{i as renderView}; diff --git a/outputs/public/front/components/Rack.tsx-02c40791.js b/outputs/public/front/components/Rack.tsx-02c40791.js deleted file mode 100644 index 25d8a1d..0000000 --- a/outputs/public/front/components/Rack.tsx-02c40791.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as f}from"../../jsx-runtime-2e2d9038.js";import{D as u}from"../../cjs-ff7eb0e1.js";import"../../index-ca121481.js";function k({id:i,objects:r,onChange:t,canDetach:n,onElementDetached:x,render:a}){return e.jsx("div",{id:i,style:{display:"flex"},children:r.map(o=>e.jsx(l,{item:o,render:a,onTryDetach:(s,d)=>{if(!n(s))return;const c=r.findIndex(p=>p.key===d.key);t(r.toSpliced(c,1)),x(s,d)}},o.key))})}function l({item:i,onTryDetach:r,render:t}){const n=f.useRef(null);return e.jsx(u,{position:{x:0,y:0},nodeRef:n,onStop:()=>r(n.current,i),children:e.jsx("div",{ref:n,children:t(i)})})}export{k as Rack}; diff --git a/outputs/public/front/components/TitleInput.tsx-b871e858.js b/outputs/public/front/components/TitleInput.tsx-b871e858.js deleted file mode 100644 index 110ef92..0000000 --- a/outputs/public/front/components/TitleInput.tsx-b871e858.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".title-input{background:transparent;border-top:none;border-right:none;border-left:none;text-align:center;border-bottom-width:2px;border-bottom-color:transparent}.title-input:focus{outline:none;border-bottom-color:#8a2be2}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); -import{r as u,j as o}from"../../jsx-runtime-2e2d9038.js";function p({style:r,default_value:s,on_validated:a}){const[e,l]=u.useState(s),n=u.useRef(null);return o.jsx("input",{className:"title-input",ref:n,style:r,type:"text",value:e,onChange:t=>l(t.target.value),onBlur:t=>a(e),onKeyUp:t=>{t.key=="Enter"&&n.current?.blur()}})}export{p as default}; diff --git a/outputs/public/front/components/actions/ArrowAction.tsx-b082b6c9.js b/outputs/public/front/components/actions/ArrowAction.tsx-b082b6c9.js deleted file mode 100644 index a90550e..0000000 --- a/outputs/public/front/components/actions/ArrowAction.tsx-b082b6c9.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".arrow-action{height:50%}.arrow-action-icon{user-select:none;-moz-user-select:none;max-width:17px;max-height:17px}.arrow-head-pick{position:absolute;cursor:grab;top:0;left:0;min-width:17px;min-height:17px}.arrow-head-pick:active{cursor:crosshair}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); -import{r as s,j as o}from"../../../jsx-runtime-2e2d9038.js";import{D as i}from"../../../cjs-ff7eb0e1.js";import"../../../index-ca121481.js";const c="/IQBall/public/arrow-73d7c199.svg";function g({onHeadDropped:t,onHeadPicked:e,onHeadMoved:a}){const r=s.useRef(null);return o.jsxs("div",{className:"arrow-action",children:[o.jsx("img",{className:"arrow-action-icon",src:c,alt:"add arrow"}),o.jsx(i,{nodeRef:r,onStart:()=>{const n=r.current.getBoundingClientRect();e(n)},onStop:()=>{const n=r.current.getBoundingClientRect();t(n)},onDrag:()=>{const n=r.current.getBoundingClientRect();a(n)},position:{x:0,y:0},children:o.jsx("div",{ref:r,className:"arrow-head-pick"})})]})}function x(){return o.jsx("div",{style:{backgroundColor:"black",height:"5px",width:"25px"}})}function p(){return o.jsx("svg",{viewBox:"0 0 50 50",width:20,height:20,children:o.jsx("polygon",{points:"50 0, 0 0, 25 40",fill:"#000"})})}export{p as MoveToHead,x as ScreenHead,g as default}; diff --git a/outputs/public/front/components/actions/BallAction.tsx-c8825b1d.js b/outputs/public/front/components/actions/BallAction.tsx-c8825b1d.js deleted file mode 100644 index 07f212b..0000000 --- a/outputs/public/front/components/actions/BallAction.tsx-c8825b1d.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"../../../jsx-runtime-2e2d9038.js";import{BallPiece as n}from"../editor/BallPiece.tsx-1b2eb023.js";import{D as s}from"../../../cjs-ff7eb0e1.js";import"../../../index-ca121481.js";function f({onDrop:o}){const r=t.useRef(null);return e.jsx(s,{onStop:()=>o(r.current),nodeRef:r,children:e.jsx("div",{ref:r,children:e.jsx(n,{})})})}export{f as default}; diff --git a/outputs/public/front/components/arrows/BendableArrow.tsx-f8a85d9b.js b/outputs/public/front/components/arrows/BendableArrow.tsx-f8a85d9b.js deleted file mode 100644 index ebcbc0a..0000000 --- a/outputs/public/front/components/arrows/BendableArrow.tsx-f8a85d9b.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode(".arrow-point{cursor:pointer;border-radius:100px;background-color:#000;outline:none}.arrow-point:hover{background-color:var(--selection-color)}.arrow-path{pointer-events:stroke;cursor:pointer;outline:none}.arrow-path:hover,.arrow-path:active{stroke:var(--selection-color)}")),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})(); -import{r as v,j as E}from"../../../jsx-runtime-2e2d9038.js";import{posWithinBase as R,angle as q,relativeTo as J,middle as T,minus as N,add as S,ratioWithinBase as _,distance as L,mul as D,middlePos as ot,norm as at}from"./Pos.ts-9fe07952.js";import{D as ut}from"../../../cjs-ff7eb0e1.js";import"../../../index-ca121481.js";const rt={width:3};function Z(r,n,t){const s=q(r,n);return{x:r.x-Math.sin(s)*t,y:r.y-Math.cos(s)*t}}function ht({area:r,startPos:n,segments:t,onSegmentsChanges:s,forceStraight:e,wavy:$,style:f,startRadius:y=0,endRadius:j=0,onDeleteRequested:u}){const C=v.useRef(null),b=v.useRef(null),m=v.useRef(null),k=f?.width??rt.width,g=v.useCallback(o=>o.map((l,p)=>p==0?{start:n,controlPoint:l.controlPoint??null,end:l.next}:{start:o[p-1].next,controlPoint:l.controlPoint??null,end:l.next}),[t,n]),[x,z]=v.useState(()=>g(t));v.useLayoutEffect(()=>{z(g(t))},[n,t,g]);const[U,it]=v.useState(!1),nt=v.useRef(null),et=v.useRef(null);function ct(o){return t.flatMap(({next:l,controlPoint:p},i)=>{const M=i==0?n:t[i-1].next,A=R(M,o),O=R(l,o),c=p||_(S(T(A,O),o),o),h=a=>{const d=t[i],w=t.toSpliced(i,1,{...d,controlPoint:a??void 0});s(w)};return[E.jsx(st,{className:"arrow-point-control",posRatio:c,parentBase:o,onPosValidated:h,onRemove:()=>h(null),onMoves:a=>{z(d=>d.toSpliced(i,1,{...d[i],controlPoint:a}))}},i),i!=t.length-1&&E.jsx(st,{className:"arrow-point-next",posRatio:l,parentBase:o,onPosValidated:a=>{const d=t[i],w=t.toSpliced(i,1,{...d,next:a});s(w)},onRemove:()=>{s(t.toSpliced(Math.max(i-1,0),1))},onMoves:a=>{z(d=>d.toSpliced(i,2,{...d[i],end:a},{...d[i+1],start:a}))}},i+"-2")]})}const W=v.useCallback(()=>{const o=r.current.getBoundingClientRect(),l=x[0]??null;if(l==null)throw new Error("segments might not be empty.");const p=x[x.length-1],i=R(n,o),M=R(p.end,o),A=l.controlPoint&&!e?R(l.controlPoint,o):R(l.end,o),O=e?i:p.controlPoint?R(p.controlPoint,o):R(p.start,o),c=Z(i,A,y),h=Z(M,O,j),a=Math.min(c.x,h.x),d=Math.min(c.y,h.y);Object.assign(et.current.style,{left:c.x+"px",top:c.y+"px",transformOrigin:"top center",transform:`translateX(-50%) rotate(${-q(c,A)*(180/Math.PI)}deg)`}),Object.assign(nt.current.style,{left:h.x+"px",top:h.y+"px",transformOrigin:"top center",transform:`translateX(-50%) rotate(${-q(h,O)*(180/Math.PI)}deg)`});const w={left:a+"px",top:d+"px"},V=(e?[{start:n,controlPoint:void 0,end:p.end}]:x).map(({start:I,controlPoint:B,end:G},Q)=>{const P={x:a,y:d},X=J(R(G,o),P),Y=J(R(I,o),P),K=B&&!e?J(R(B,o),P):T(Y,X);return{start:Y,end:X,cp:K}}),H=V.map(({start:I,cp:B,end:G},Q)=>{let P=G;Q==V.length-1&&(P=Z(P,B,j));const X=Q!=0?V[Q-1]:void 0,Y=N(I,X?.cp??T(I,P)),K=X?S(I,Y):B;return $?dt(I,K,B,P,10,10):e?`L${P.x} ${P.y}`:`C${K.x} ${K.y}, ${B.x} ${B.y}, ${P.x} ${P.y}`}).join(" "),F=`M${c.x-a} ${c.y-d} `+H;m.current.setAttribute("d",F),Object.assign(b.current.style,w)},[n,x,e,y,j,f]);v.useEffect(W,[W]),v.useEffect(()=>{const o=l=>{if(!(l.target instanceof Node))return;const p=C.current.contains(l.target);it(p)};return document.addEventListener("mousedown",o),window.addEventListener("resize",W),()=>{document.removeEventListener("mousedown",o),window.removeEventListener("resize",W)}},[W,C]);const lt=v.useCallback(o=>{if(e)return;const l=r.current.getBoundingClientRect(),p={x:o.pageX,y:o.pageY},i=_(p,l);let M=-1,A=!1;for(let c=0;c1?t[c-2].next:n,w=a?a.next:n,V=h.next,H=h.controlPoint?h.controlPoint:T(w,V),F=a?S(w,N(w,a.controlPoint??T(d,w))):H,I=xt(w,F,H,V,i,.05);if(I!=2){M=c,A=I==1;break}}if(M==-1)return;const O=t[M];s(t.toSpliced(M,1,{next:i,controlPoint:A?O.controlPoint:void 0},{next:O.next,controlPoint:A?void 0:O.controlPoint}))},[r,e,s,t,n]);return E.jsxs("div",{ref:C,style:{position:"absolute",top:0,left:0},children:[E.jsx("svg",{ref:b,style:{overflow:"visible",position:"absolute",pointerEvents:"none"},children:E.jsx("path",{className:"arrow-path",ref:m,stroke:"#000",strokeWidth:k,strokeDasharray:f?.dashArray??rt.dashArray,fill:"none",tabIndex:0,onDoubleClick:lt,onKeyUp:o=>{u&&o.key=="Delete"&&u()}})}),E.jsx("div",{className:"arrow-head",style:{position:"absolute",transformOrigin:"center"},ref:nt,children:f?.head?.call(f)}),E.jsx("div",{className:"arrow-tail",style:{position:"absolute",transformOrigin:"center"},ref:et,children:f?.tail?.call(f)}),!e&&U&&ct(r.current.getBoundingClientRect())]})}function dt(r,n,t,s,e,$){function f(m){const k=ft(r,n,t,s,m),g=at(k),x={x:k.y,y:-k.x};return{x:x.x/g*$,y:x.y/g*$}}let y="";const C=1/((L(r,n)+L(n,t)+L(t,s))/100*e*2);let b=0;for(let m=C;m<=1;){const k=tt(r,n,t,s,m),g=f(m);let x;b==1||b==3?x=k:b==0?x=S(k,g):x=N(k,g);const z=tt(r,n,t,s,m-C/2),U=b==0||b==1?S(z,g):N(z,g);y+=`Q${U.x} ${U.y} ${x.x} ${x.y}`,b=(b+1)%4,m+=C,m<1&&m>1-C&&(m=1)}return y}function ft(r,n,t,s,e){return S(S(D(N(n,r),3*(1-e)**2),D(N(t,n),6*(1-e)*e)),D(N(s,t),3*e**2))}function tt(r,n,t,s,e){return S(S(S(D(r,(1-e)**3),D(n,3*e*(1-e)**2)),D(t,3*e**2*(1-e))),D(s,e**3))}function xt(r,n,t,s,e,$){const y=1/((L(r,n)+L(n,t)+L(t,s))/$);function j(u){return L(tt(r,n,t,s,u),e)}for(let u=0;u<1;u+=y)if(j(u)<=$)return u>=.5?1:0;return 2}function st({className:r,posRatio:n,parentBase:t,onMoves:s,onPosValidated:e,onRemove:$,radius:f=7}){const y=v.useRef(null),j=R(n,t);return E.jsx(ut,{nodeRef:y,onStop:()=>{const u=ot(y.current.getBoundingClientRect());e(_(u,t))},onDrag:()=>{const u=ot(y.current.getBoundingClientRect());s(_(u,t))},position:{x:j.x-f,y:j.y-f},children:E.jsx("div",{ref:y,className:`arrow-point ${r}`,style:{position:"absolute",width:f*2,height:f*2},onKeyUp:u=>{u.key=="Delete"&&$()},tabIndex:0})})}export{ht as default}; diff --git a/outputs/public/front/components/arrows/Box.ts-eca59774.js b/outputs/public/front/components/arrows/Box.ts-eca59774.js deleted file mode 100644 index 50182ac..0000000 --- a/outputs/public/front/components/arrows/Box.ts-eca59774.js +++ /dev/null @@ -1 +0,0 @@ -function i(...n){const t=n.map(c=>c.x),a=n.map(c=>c.y),r=Math.min(...t),u=Math.min(...a),y=Math.max(...t)-r,h=Math.max(...a)-u;return{x:r,y:u,width:y,height:h}}function m(n,t,a){return{x:n.x+t/2,y:n.y+a/2,width:t,height:a}}function s(n,t){return t.x>=n.x&&t.x<=n.x+n.width&&t.y>=n.y&&t.y<=n.y+n.height}export{i as boundsOf,s as contains,m as surrounds}; diff --git a/outputs/public/front/components/arrows/Pos.ts-9fe07952.js b/outputs/public/front/components/arrows/Pos.ts-9fe07952.js deleted file mode 100644 index fc3c0aa..0000000 --- a/outputs/public/front/components/arrows/Pos.ts-9fe07952.js +++ /dev/null @@ -1 +0,0 @@ -const x={x:0,y:0};function y(n,t){return{x:n.x-t.x,y:n.y-t.y}}function r(n){return{x:n.x+n.width/2,y:n.y+n.height/2}}function o(n,t){return{x:n.x+t.x,y:n.y+t.y}}function h(n,t){return{x:n.x-t.x,y:n.y-t.y}}function e(n,t){return{x:n.x*t,y:n.y*t}}function u(n,t){return Math.sqrt((n.x-t.x)**2+(n.y-t.y)**2)}function f(n){return u(x,n)}function c(n,t){const i=y(n,t);return Math.atan2(i.x,i.y)}function s(n,t){return{x:(n.x-t.x)/t.width,y:(n.y-t.y)/t.height}}function d(n,t){return{x:n.x*t.width,y:n.y*t.height}}function M(n,t){return{x:n.x/2+t.x/2,y:n.y/2+t.y/2}}function l(n,t){return{x:Math.cos(t)*n.x-Math.sin(t)*n.y,y:Math.sin(t)*n.x+Math.cos(t)*n.y}}export{x as NULL_POS,o as add,c as angle,u as distance,M as middle,r as middlePos,h as minus,e as mul,f as norm,d as posWithinBase,s as ratioWithinBase,y as relativeTo,l as rotate}; diff --git a/outputs/public/front/components/editor/BallPiece.tsx-1b2eb023.js b/outputs/public/front/components/editor/BallPiece.tsx-1b2eb023.js deleted file mode 100644 index 5e983db..0000000 --- a/outputs/public/front/components/editor/BallPiece.tsx-1b2eb023.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".ball *{fill:#c5520d}.ball-div,.ball{pointer-events:all;width:20px;height:20px;cursor:pointer}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); -import{r as e,j as a}from"../../../jsx-runtime-2e2d9038.js";const l=t=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1280.000000pt",height:"1276.000000pt",viewBox:"0 0 1280.000000 1276.000000",preserveAspectRatio:"xMidYMid meet",...t},e.createElement("metadata",null,` -Created by potrace 1.15, written by Peter Selinger 2001-2017 -`),e.createElement("g",{transform:"translate(0.000000,1276.000000) scale(0.100000,-0.100000)",fill:"#000000",stroke:"none"},e.createElement("path",{d:"M6085 12754 c-1124 -66 -2124 -378 -3055 -952 -113 -70 -150 -98 -115 -88 50 14 350 37 555 43 925 24 1755 -198 2573 -691 95 -56 321 -202 502 -322 511 -340 600 -373 753 -280 281 170 481 457 559 800 24 105 24 393 -1 506 -59 277 -202 557 -417 813 -45 54 -91 102 -103 106 -19 8 -160 25 -411 51 -99 11 -724 21 -840 14z"}),e.createElement("path",{d:"M7630 12635 c0 -2 28 -48 63 -102 210 -324 335 -626 378 -913 16 -112 14 -310 -6 -424 -56 -328 -245 -651 -591 -1014 -79 -83 -105 -117 -98 -127 11 -17 953 -895 959 -895 3 0 136 105 297 233 1085 863 1485 1140 2065 1431 94 47 173 91 175 98 7 20 -232 240 -467 429 -766 616 -1654 1043 -2622 1259 -135 31 -153 33 -153 25z"}),e.createElement("path",{d:"M3055 11615 c-127 -13 -262 -36 -359 -61 -69 -18 -157 -81 -397 -280 -984 -823 -1695 -1909 -2049 -3135 -84 -291 -140 -550 -185 -854 -19 -130 -29 -231 -23 -225 3 3 16 34 28 70 36 103 124 267 195 363 386 518 1151 901 2475 1238 291 74 553 134 910 209 107 23 236 50 285 60 50 11 158 33 240 50 83 17 191 39 240 50 50 10 133 28 185 39 1079 228 1599 392 1915 604 96 64 205 181 244 262 28 57 35 82 35 135 1 62 -2 70 -44 135 -142 218 -526 495 -1019 737 -920 449 -1941 680 -2676 603z"}),e.createElement("path",{d:"M10940 10674 c-63 -41 -176 -114 -250 -162 -299 -193 -798 -547 -1215 -861 -423 -318 -899 -711 -893 -736 2 -6 189 -246 417 -532 l414 -520 171 82 c528 255 975 375 1398 375 574 0 1060 -239 1464 -720 85 -101 219 -286 264 -365 18 -31 34 -54 36 -52 11 11 -69 456 -120 671 -235 976 -692 1875 -1347 2646 -54 63 -126 145 -161 182 l-63 66 -115 -74z"}),e.createElement("path",{d:"M7125 9833 c-70 -62 -231 -181 -327 -242 -491 -308 -1120 -531 -2106 -746 -90 -20 -452 -94 -804 -165 -1128 -228 -1491 -317 -1978 -485 -936 -323 -1527 -761 -1860 -1378 l-42 -78 -5 -252 c-31 -1503 472 -2974 1415 -4137 47 -58 87 -107 88 -108 8 -11 50 35 210 233 1067 1318 2042 2408 3174 3549 953 960 1908 1846 2933 2721 135 116 246 215 247 220 0 10 -890 905 -900 905 -3 -1 -23 -17 -45 -37z"}),e.createElement("path",{d:"M8255 8618 c-886 -668 -1534 -1216 -2370 -2004 -1028 -969 -2125 -2136 -3299 -3509 -132 -154 -265 -309 -296 -345 -142 -164 -592 -703 -596 -715 -7 -16 300 -326 466 -471 678 -593 1425 -1020 2260 -1294 231 -75 490 -143 730 -190 207 -40 413 -72 560 -85 62 -6 69 -4 155 38 192 94 346 209 515 383 351 363 601 854 839 1649 58 192 158 587 211 835 40 185 114 541 190 920 98 486 168 825 200 965 5 22 16 69 24 105 8 36 36 151 61 255 40 164 59 235 115 435 52 187 169 532 242 715 232 582 562 1062 911 1325 25 19 45 38 44 42 -2 8 -838 1039 -840 1037 -1 0 -56 -41 -122 -91z"}),e.createElement("path",{d:"M10570 8093 c-358 -54 -579 -149 -741 -319 -84 -89 -93 -106 -86 -168 10 -100 65 -199 397 -721 368 -578 508 -818 691 -1185 379 -760 567 -1413 611 -2132 24 -392 -30 -863 -142 -1243 -16 -54 -28 -100 -27 -102 8 -8 297 369 419 547 722 1055 1109 2313 1108 3600 0 294 -15 490 -40 547 -30 68 -127 228 -194 318 -240 326 -590 581 -999 729 -271 98 -498 137 -791 135 -100 -1 -192 -3 -206 -6z"}),e.createElement("path",{d:"M9265 7317 c-292 -97 -541 -403 -744 -914 -174 -439 -312 -964 -521 -1975 -16 -82 -44 -214 -60 -295 -17 -82 -39 -188 -50 -238 -11 -49 -33 -157 -50 -240 -389 -1893 -798 -2915 -1390 -3478 -57 -54 -123 -112 -147 -130 l-45 -32 203 -3 c568 -9 1247 95 1844 283 928 292 1741 765 2451 1423 179 166 216 207 253 281 96 190 163 413 202 676 20 128 23 192 23 430 0 344 -22 560 -95 927 -191 959 -696 2109 -1249 2843 -175 231 -351 410 -428 433 -64 19 -153 23 -197 9z"})));function c(){return a.jsx(l,{className:"ball"})}export{c as BallPiece}; diff --git a/outputs/public/front/components/editor/BasketCourt.tsx-f01fc52b.js b/outputs/public/front/components/editor/BasketCourt.tsx-f01fc52b.js deleted file mode 100644 index 4facb03..0000000 --- a/outputs/public/front/components/editor/BasketCourt.tsx-f01fc52b.js +++ /dev/null @@ -1 +0,0 @@ -import{r as a,j as l}from"../../../jsx-runtime-2e2d9038.js";import{CourtBall as F}from"./CourtBall.tsx-df87788c.js";import L from"./CourtPlayer.tsx-3da10617.js";import{ActionKind as s}from"../../tactic/Action.ts-d727cf33.js";import M from"../actions/ArrowAction.tsx-b082b6c9.js";import{ratioWithinBase as r,middlePos as m}from"../arrows/Pos.ts-9fe07952.js";import N from"../actions/BallAction.tsx-c8825b1d.js";import{contains as T}from"../arrows/Box.ts-eca59774.js";import{CourtAction as V}from"../../views/editor/CourtAction.tsx-15785ac7.js";import"../../../cjs-ff7eb0e1.js";import"../../../index-ca121481.js";import"./BallPiece.tsx-1b2eb023.js";import"./PlayerPiece.tsx-964e2db3.js";import"../arrows/BendableArrow.tsx-f8a85d9b.js";function tt({players:B,actions:C,objects:R,renderAction:x,setActions:p,onPlayerRemove:h,onPlayerChange:v,onBallMoved:E,onBallRemove:P,courtImage:A,courtRef:d}){function y(t,o){const n=document.getElementById(t.id),e=d.current.getBoundingClientRect(),c=r(m(n.getBoundingClientRect()),e);for(const i of B){if(i.id==t.id)continue;const g=document.getElementById(i.id).getBoundingClientRect();if(!(g.top>o.bottom||g.righto.right)){const O=document.getElementById(i.id).getBoundingClientRect(),S=r(m(O),e),w={fromPlayerId:n.id,toPlayerId:i.id,type:t.hasBall?s.SHOOT:s.SCREEN,moveFrom:c,segments:[{next:S}]};p(k=>[...k,w]);return}}const u={fromPlayerId:n.id,type:t.hasBall?s.DRIBBLE:s.MOVE,moveFrom:r(m(n.getBoundingClientRect()),e),segments:[{next:r(m(o),e)}]};p(i=>[...i,u])}const[I,f]=a.useState(null),b=a.useCallback(t=>{const o=r(m(document.getElementById(t.id).getBoundingClientRect()),d.current.getBoundingClientRect());p(n=>n.map(e=>{if(e.fromPlayerId==t.id)return{...e,moveFrom:o};if(e.toPlayerId==t.id){const c=e.segments.toSpliced(e.segments.length-1,1,{...e.segments[e.segments.length-1],next:o});return{...e,segments:c}}return e}))},[]),[j,D]=a.useState([]);return a.useLayoutEffect(()=>D(C),[C]),l.jsxs("div",{className:"court-container",ref:d,style:{position:"relative"},children:[A,B.map(t=>l.jsx(L,{player:t,onDrag:()=>b(t),onChange:v,onRemove:()=>h(t),courtRef:d,availableActions:o=>[l.jsx(M,{onHeadMoved:n=>{const e=d.current.getBoundingClientRect(),c=m(n),u=B.find(i=>i!=t&&T(document.getElementById(i.id).getBoundingClientRect(),c));f(i=>({...i,segments:[{next:r(c,e)}],type:t.hasBall?u?s.SHOOT:s.DRIBBLE:u?s.SCREEN:s.MOVE}))},onHeadPicked:n=>{document.activeElement.blur();const e=d.current.getBoundingClientRect();f({type:t.hasBall?s.DRIBBLE:s.MOVE,fromPlayerId:t.id,toPlayerId:void 0,moveFrom:r(m(o.getBoundingClientRect()),e),segments:[{next:r(m(n),e)}]})},onHeadDropped:n=>{y(t,n),f(null)}},1),t.hasBall&&l.jsx(N,{onDrop:n=>E(n.getBoundingClientRect())},2)]},t.id)),j.map((t,o)=>x(t,o)),R.map(t=>{if(t.type=="ball")return l.jsx(F,{onMoved:E,ball:t,onRemove:P},"ball");throw new Error("unknown court object",t.type)}),I&&l.jsx(V,{courtRef:d,action:I,onActionDeleted:()=>{},onActionChanges:()=>{}})]})}export{tt as BasketCourt}; diff --git a/outputs/public/front/components/editor/CourtBall.tsx-df87788c.js b/outputs/public/front/components/editor/CourtBall.tsx-df87788c.js deleted file mode 100644 index a9807d5..0000000 --- a/outputs/public/front/components/editor/CourtBall.tsx-df87788c.js +++ /dev/null @@ -1 +0,0 @@ -import{r as a,j as e}from"../../../jsx-runtime-2e2d9038.js";import{D as c}from"../../../cjs-ff7eb0e1.js";import{BallPiece as p}from"./BallPiece.tsx-1b2eb023.js";import"../../../index-ca121481.js";function d({onMoved:r,ball:o,onRemove:i}){const t=a.useRef(null),n=o.rightRatio,s=o.bottomRatio;return e.jsx(c,{onStop:()=>r(t.current.getBoundingClientRect()),nodeRef:t,children:e.jsx("div",{className:"ball-div",ref:t,tabIndex:0,onKeyUp:l=>{l.key=="Delete"&&i()},style:{position:"absolute",left:`${n*100}%`,top:`${s*100}%`},children:e.jsx(p,{})})})}export{d as CourtBall}; diff --git a/outputs/public/front/components/editor/CourtPlayer.tsx-3da10617.js b/outputs/public/front/components/editor/CourtPlayer.tsx-3da10617.js deleted file mode 100644 index 4f3489f..0000000 --- a/outputs/public/front/components/editor/CourtPlayer.tsx-3da10617.js +++ /dev/null @@ -1 +0,0 @@ -import{r as h,j as e}from"../../../jsx-runtime-2e2d9038.js";import{PlayerPiece as p}from"./PlayerPiece.tsx-964e2db3.js";import{D as R}from"../../../cjs-ff7eb0e1.js";import{NULL_POS as B,ratioWithinBase as g}from"../arrows/Pos.ts-9fe07952.js";import"../../../index-ca121481.js";function y({player:t,onDrag:n,onChange:s,onRemove:a,courtRef:r,availableActions:c}){const l=t.hasBall,d=t.rightRatio,m=t.bottomRatio,o=h.useRef(null);return e.jsx(R,{handle:".player-piece",nodeRef:o,onDrag:n,position:B,onStop:()=>{const i=o.current.getBoundingClientRect(),u=r.current.getBoundingClientRect(),{x,y:f}=g(i,u);s({id:t.id,rightRatio:x,bottomRatio:f,team:t.team,role:t.role,hasBall:t.hasBall})},children:e.jsx("div",{id:t.id,ref:o,className:"player",style:{position:"absolute",left:`${d*100}%`,top:`${m*100}%`},children:e.jsxs("div",{tabIndex:0,className:"player-content",onKeyUp:i=>{i.key=="Delete"&&a()},children:[e.jsx("div",{className:"player-actions",children:c(o.current)}),e.jsx(p,{team:t.team,text:t.role,hasBall:l})]})})})}export{y as default}; diff --git a/outputs/public/front/components/editor/PlayerPiece.tsx-964e2db3.js b/outputs/public/front/components/editor/PlayerPiece.tsx-964e2db3.js deleted file mode 100644 index d7b309d..0000000 --- a/outputs/public/front/components/editor/PlayerPiece.tsx-964e2db3.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".player{pointer-events:none}.player-content{display:flex;flex-direction:column;align-content:center;align-items:center;outline:none}.player-piece{font-family:monospace;pointer-events:all;background-color:var(--selected-team-primarycolor);color:var(--selected-team-secondarycolor);border-radius:100px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;user-select:none}.player-piece-has-ball{border-width:2px;border-style:solid;border-color:var(--player-piece-ball-border-color)}.player-actions{display:flex;position:absolute;flex-direction:row;justify-content:space-evenly;align-content:space-between;align-items:center;visibility:hidden;transform:translateY(-25px);height:20px;width:150%;gap:25%}.player:focus-within .player-actions{visibility:visible;pointer-events:all}.player:focus-within .player-piece{color:var(--selection-color)}.player:focus-within{z-index:1000}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); -import{j as r}from"../../../jsx-runtime-2e2d9038.js";function s({team:i,text:l,hasBall:a}){let e=`player-piece ${i}`;return a&&(e+=" player-piece-has-ball"),r.jsx("div",{className:e,children:r.jsx("p",{children:l})})}export{s as PlayerPiece}; diff --git a/outputs/public/front/components/editor/SavingState.tsx-72e513fc.js b/outputs/public/front/components/editor/SavingState.tsx-72e513fc.js deleted file mode 100644 index 0ac5dc9..0000000 --- a/outputs/public/front/components/editor/SavingState.tsx-72e513fc.js +++ /dev/null @@ -1 +0,0 @@ -import{j as a}from"../../../jsx-runtime-2e2d9038.js";class s{}s.Guest={className:"save-state-guest",message:"you are not connected, your changes will not be saved."};s.Ok={className:"save-state-ok",message:"saved"};s.Saving={className:"save-state-saving",message:"saving..."};s.Err={className:"save-state-error",message:"could not save tactic."};function c({state:e}){return a.jsx("div",{className:"save-state",children:a.jsx("div",{className:e.className,children:e.message})})}export{s as SaveStates,c as default}; diff --git a/outputs/public/front/tactic/Action.ts-d727cf33.js b/outputs/public/front/tactic/Action.ts-d727cf33.js deleted file mode 100644 index 83bd066..0000000 --- a/outputs/public/front/tactic/Action.ts-d727cf33.js +++ /dev/null @@ -1 +0,0 @@ -var O=(E=>(E.SCREEN="SCREEN",E.DRIBBLE="DRIBBLE",E.MOVE="MOVE",E.SHOOT="SHOOT",E))(O||{});export{O as ActionKind}; diff --git a/outputs/public/front/tactic/CourtObjects.ts-4ed993c7.js b/outputs/public/front/tactic/CourtObjects.ts-4ed993c7.js deleted file mode 100644 index 8b13789..0000000 --- a/outputs/public/front/tactic/CourtObjects.ts-4ed993c7.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/outputs/public/front/tactic/Player.ts-4ed993c7.js b/outputs/public/front/tactic/Player.ts-4ed993c7.js deleted file mode 100644 index 8b13789..0000000 --- a/outputs/public/front/tactic/Player.ts-4ed993c7.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/outputs/public/front/tactic/Tactic.ts-4ed993c7.js b/outputs/public/front/tactic/Tactic.ts-4ed993c7.js deleted file mode 100644 index 8b13789..0000000 --- a/outputs/public/front/tactic/Tactic.ts-4ed993c7.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/outputs/public/front/tactic/Team.ts-1737253d.js b/outputs/public/front/tactic/Team.ts-1737253d.js deleted file mode 100644 index d47f46d..0000000 --- a/outputs/public/front/tactic/Team.ts-1737253d.js +++ /dev/null @@ -1 +0,0 @@ -var n=(e=>(e.Allies="allies",e.Opponents="opponents",e))(n||{});export{n as Team}; diff --git a/outputs/public/front/views/Editor.tsx-951e52fa.js b/outputs/public/front/views/Editor.tsx-951e52fa.js deleted file mode 100644 index 8a56bd5..0000000 --- a/outputs/public/front/views/Editor.tsx-951e52fa.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('@import"https://fonts.googleapis.com/css2?family=Roboto:wght@300;400&display=swap";:root{--main-color: #ffffff;--second-color: #e8e8e8;--background-color: #d2cdd3;--selected-team-primarycolor: #ffffff;--selected-team-secondarycolor: #000000;--player-allies-color: #64e4f5;--player-opponents-color: #f59264;--buttons-shadow-color: #a8a8a8;--selection-color: #3f7fc4;--border-color: #ffffff;--editor-court-selection-background: #5f8fee;--editor-court-selection-buttons: #acc4f3;--player-piece-ball-border-color: #000000;--text-main-font: "Roboto", sans-serif}#main-div{display:flex;height:100%;width:100%;background-color:var(--background-color);flex-direction:column;overflow:hidden}#topbar-left{width:100%;display:flex}#topbar-right{width:100%;display:flex;flex-direction:row-reverse}#topbar-div{display:flex;background-color:var(--main-color);margin-bottom:3px;justify-content:space-between;align-items:stretch}#racks{display:flex;justify-content:space-between;align-items:center;height:25px}.title-input{width:25ch;align-self:center}#edit-div{height:100%}#allies-rack,#opponent-rack{width:125px;min-width:125px;display:flex;flex-direction:row;align-items:flex-end}#allies-rack{justify-content:flex-start}#opponent-rack{justify-content:flex-end}#opponent-rack .player-piece{margin-right:5px}#allies-rack .player-piece{margin-left:5px}.player-piece.opponents{background-color:var(--player-opponents-color)}.player-piece.allies{background-color:var(--player-allies-color)}#court-div{background-color:var(--background-color);height:100%;width:100%;display:flex;align-items:center;justify-content:center;align-content:center}#court-image-div{position:relative;background-color:#fff;height:100%;width:100%}.court-container{display:flex;align-content:center;align-items:center;justify-content:center;height:75%}#court-image{height:100%;width:100%;user-select:none;-webkit-user-drag:none}#court-image *{stroke:var(--selected-team-secondarycolor)}.react-draggable{z-index:2}.save-state{display:flex;align-items:center;margin-left:20%;font-family:monospace}.save-state-error{color:red}.save-state-ok{color:green}.save-state-saving,.save-state-guest{color:gray}')),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})(); -import{r as e,j as n}from"../../jsx-runtime-2e2d9038.js";import z from"../components/TitleInput.tsx-b871e858.js";import{BallPiece as Q}from"../components/editor/BallPiece.tsx-1b2eb023.js";import{Rack as j}from"../components/Rack.tsx-02c40791.js";import{PlayerPiece as T}from"../components/editor/PlayerPiece.tsx-964e2db3.js";import{fetchAPI as H}from"../Fetcher.ts-06285d09.js";import{Team as M}from"../tactic/Team.ts-1737253d.js";import X,{SaveStates as x}from"../components/editor/SavingState.tsx-72e513fc.js";import{CourtAction as ee}from"./editor/CourtAction.tsx-15785ac7.js";import{BasketCourt as te}from"../components/editor/BasketCourt.tsx-f01fc52b.js";import{ratioWithinBase as I}from"../components/arrows/Pos.ts-9fe07952.js";import{ActionKind as y}from"../tactic/Action.ts-d727cf33.js";import"../../cjs-ff7eb0e1.js";import"../../index-ca121481.js";import"../Constants.ts-0288c91b.js";import"../components/arrows/BendableArrow.tsx-f8a85d9b.js";import"../components/actions/ArrowAction.tsx-b082b6c9.js";import"../components/editor/CourtBall.tsx-df87788c.js";import"../components/editor/CourtPlayer.tsx-3da10617.js";import"../components/actions/BallAction.tsx-c8825b1d.js";import"../components/arrows/Box.ts-eca59774.js";const re=l=>e.createElement("svg",{width:567,height:269,viewBox:"0 0 567 269",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},e.createElement("line",{x1:73,y1:24,x2:495,y2:24,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:494,y1:23,x2:494,y2:247,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:495,y1:248,x2:73,y2:248,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:72,y1:249,x2:72,y2:23,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:283.5,y1:23,x2:283.5,y2:247,stroke:"black"}),e.createElement("g",{filter:"url(#filter0_i_3_2)"},e.createElement("circle",{cx:283.5,cy:135.5,r:27,stroke:"black"})),e.createElement("line",{x1:73,y1:99.5,x2:158,y2:99.5,stroke:"black"}),e.createElement("line",{x1:73,y1:100.5,x2:158,y2:100.5,stroke:"black"}),e.createElement("path",{d:"M158.5 172V100",stroke:"black"}),e.createElement("path",{d:"M158 99.5H159",stroke:"black"}),e.createElement("path",{d:"M158 172.5H159",stroke:"black"}),e.createElement("line",{x1:158,y1:172.5,x2:73,y2:172.5,stroke:"black"}),e.createElement("line",{x1:158,y1:171.5,x2:73,y2:171.5,stroke:"black"}),e.createElement("line",{x1:73,y1:37.5,x2:139,y2:37.5,stroke:"black"}),e.createElement("line",{x1:73,y1:233.5,x2:139,y2:233.5,stroke:"black"}),e.createElement("g",{filter:"url(#filter1_i_3_2)"},e.createElement("path",{d:"M158.5 163C161.98 163 165.426 162.315 168.641 160.983C171.856 159.651 174.778 157.699 177.238 155.238C179.699 152.778 181.651 149.856 182.983 146.641C184.315 143.426 185 139.98 185 136.5C185 133.02 184.315 129.574 182.983 126.359C181.651 123.144 179.699 120.222 177.238 117.762C174.778 115.301 171.856 113.349 168.641 112.017C165.426 110.685 161.98 110 158.5 110L158.5 136.5L158.5 163Z",stroke:"black"})),e.createElement("g",{filter:"url(#filter2_i_3_2)"},e.createElement("path",{d:"M158.5 110C155.02 110 151.574 110.685 148.359 112.017C145.144 113.349 142.222 115.301 139.762 117.762C137.301 120.222 135.349 123.144 134.017 126.359C132.685 129.574 132 133.02 132 136.5C132 139.98 132.685 143.426 134.017 146.641C135.349 149.856 137.301 152.778 139.762 155.238C142.222 157.699 145.144 159.651 148.359 160.983C151.574 162.315 155.02 163 158.5 163",stroke:"black",strokeDasharray:"4 4"})),e.createElement("line",{x1:135.5,y1:177,x2:135.5,y2:172,stroke:"black"}),e.createElement("line",{x1:123.5,y1:177,x2:123.5,y2:172,stroke:"black"}),e.createElement("line",{x1:111.5,y1:177,x2:111.5,y2:172,stroke:"black"}),e.createElement("line",{x1:99.5,y1:177,x2:99.5,y2:172,stroke:"black"}),e.createElement("line",{x1:135.5,y1:100,x2:135.5,y2:95,stroke:"black"}),e.createElement("line",{x1:123.5,y1:100,x2:123.5,y2:95,stroke:"black"}),e.createElement("line",{x1:111.5,y1:100,x2:111.5,y2:95,stroke:"black"}),e.createElement("line",{x1:99.5,y1:100,x2:99.5,y2:95,stroke:"black"}),e.createElement("path",{d:"M140.212 233.607C159.054 225.612 175.149 211.967 186.427 194.431C197.705 176.895 203.649 156.271 203.497 135.213C203.345 114.155 197.104 93.6242 185.574 76.2645C174.045 58.9047 157.755 45.5096 138.799 37.8066",stroke:"black"}),e.createElement("path",{d:"M140 233.5H141",stroke:"black"}),e.createElement("path",{d:"M139 233.5H140",stroke:"black"}),e.createElement("path",{d:"M90.5 118.5C95.0041 118.5 99.3266 120.34 102.516 123.621C105.706 126.901 107.5 131.354 107.5 136C107.5 140.646 105.706 145.099 102.516 148.379C99.3266 151.66 95.0041 153.5 90.5 153.5",stroke:"black"}),e.createElement("circle",{cx:87.5,cy:136.5,r:3,stroke:"black"}),e.createElement("line",{x1:83.5,y1:149,x2:83.5,y2:123,stroke:"black"}),e.createElement("line",{y1:-.5,x2:85,y2:-.5,transform:"matrix(-1 0 0 1 494 100)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:85,y2:-.5,transform:"matrix(-1 0 0 1 494 101)",stroke:"black"}),e.createElement("path",{d:"M408.5 172V100",stroke:"black"}),e.createElement("path",{d:"M409 99.5H408",stroke:"black"}),e.createElement("path",{d:"M409 172.5H408",stroke:"black"}),e.createElement("line",{y1:-.5,x2:85,y2:-.5,transform:"matrix(1 0 0 -1 409 172)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:85,y2:-.5,transform:"matrix(1 0 0 -1 409 171)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:66,y2:-.5,transform:"matrix(-1 0 0 1 494 38)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:66,y2:-.5,transform:"matrix(-1 0 0 1 494 234)",stroke:"black"}),e.createElement("g",{filter:"url(#filter3_i_3_2)"},e.createElement("path",{d:"M408.5 163C405.02 163 401.574 162.315 398.359 160.983C395.144 159.651 392.222 157.699 389.762 155.238C387.301 152.778 385.349 149.856 384.017 146.641C382.685 143.426 382 139.98 382 136.5C382 133.02 382.685 129.574 384.017 126.359C385.349 123.144 387.301 120.222 389.762 117.762C392.222 115.301 395.144 113.349 398.359 112.017C401.574 110.685 405.02 110 408.5 110L408.5 136.5L408.5 163Z",stroke:"black"})),e.createElement("g",{filter:"url(#filter4_i_3_2)"},e.createElement("path",{d:"M408.5 110C411.98 110 415.426 110.685 418.641 112.017C421.856 113.349 424.778 115.301 427.238 117.762C429.699 120.222 431.651 123.144 432.983 126.359C434.315 129.574 435 133.02 435 136.5C435 139.98 434.315 143.426 432.983 146.641C431.651 149.856 429.699 152.778 427.238 155.238C424.778 157.699 421.856 159.651 418.641 160.983C415.426 162.315 411.98 163 408.5 163",stroke:"black",strokeDasharray:"4 4"})),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 431 177)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 443 177)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 455 177)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 467 177)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 431 100)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 443 100)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 455 100)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:5,y2:-.5,transform:"matrix(4.37114e-08 -1 -1 -4.37114e-08 467 100)",stroke:"black"}),e.createElement("path",{d:"M426.788 233.607C407.946 225.612 391.851 211.967 380.573 194.431C369.295 176.895 363.351 156.271 363.503 135.213C363.655 114.155 369.896 93.6242 381.426 76.2645C392.955 58.9047 409.245 45.5096 428.201 37.8066",stroke:"black"}),e.createElement("path",{d:"M427 233.5H426",stroke:"black"}),e.createElement("path",{d:"M428 233.5H427",stroke:"black"}),e.createElement("g",{filter:"url(#filter5_i_3_2)"},e.createElement("path",{d:"M476.5 118.5C471.996 118.5 467.673 120.34 464.484 123.621C461.294 126.901 459.5 131.354 459.5 136C459.5 140.646 461.294 145.099 464.484 148.379C467.673 151.66 471.996 153.5 476.5 153.5",stroke:"black"})),e.createElement("circle",{cx:3.5,cy:3.5,r:3,transform:"matrix(-1 0 0 1 483 133)",stroke:"black"}),e.createElement("line",{y1:-.5,x2:26,y2:-.5,transform:"matrix(0 -1 -1 0 483 149)",stroke:"black"}),e.createElement("path",{d:"M138 37.5H139",stroke:"black"}),e.createElement("path",{d:"M139.225 38.1519C139.221 38.1187 139.099 38.1364 139.073 38.135C138.98 38.1302 138.889 38.0674 138.794 38.0674C138.755 38.0674 138.672 38.0388 138.633 38.0252C138.581 38.0065 138.52 37.9719 138.465 37.9661C138.4 37.9593 138.366 37.9109 138.312 37.8854C138.275 37.8677 138.202 37.8366 138.177 37.8056C138.161 37.7847 138.063 37.7566 138.033 37.7371C137.962 37.6922 137.879 37.6309 137.806 37.5944",stroke:"black",strokeWidth:.5}),e.createElement("path",{d:"M139.926 37.9883C139.906 37.9888 139.887 37.9922 139.867 37.9922C139.838 37.9922 139.812 37.978 139.787 37.9622C139.682 37.8946 139.599 37.7958 139.504 37.7151C139.388 37.6172 139.275 37.5101 139.135 37.4512C139.051 37.4159 138.965 37.3877 138.879 37.3594C138.85 37.3498 138.785 37.3113 138.754 37.332",stroke:"black",strokeWidth:.5}),e.createElement("defs",null,e.createElement("filter",{id:"filter0_i_3_2",x:256,y:108,width:55,height:59,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_2"})),e.createElement("filter",{id:"filter1_i_3_2",x:158,y:109.5,width:27.5,height:58,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_2"})),e.createElement("filter",{id:"filter2_i_3_2",x:131.5,y:109.5,width:27,height:58,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_2"})),e.createElement("filter",{id:"filter3_i_3_2",x:381.5,y:109.5,width:27.5,height:58,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_2"})),e.createElement("filter",{id:"filter4_i_3_2",x:408.5,y:109.5,width:27,height:58,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_2"})),e.createElement("filter",{id:"filter5_i_3_2",x:459,y:118,width:17.5,height:40,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_2"})))),ae=l=>e.createElement("svg",{width:269,height:309,viewBox:"0 0 269 309",fill:"none",xmlns:"http://www.w3.org/2000/svg",...l},e.createElement("rect",{y:254,width:250,height:269,transform:"rotate(-90 0 254)",fill:"#D9D9D9"}),e.createElement("line",{x1:24,y1:236,x2:24,y2:26,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:248,y1:25,x2:248,y2:236,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:249,y1:237,x2:23,y2:237,stroke:"black",strokeWidth:2}),e.createElement("line",{x1:23,y1:25.5,x2:247,y2:25.5,stroke:"black"}),e.createElement("g",{filter:"url(#filter0_i_3_4)"},e.createElement("path",{d:"M108.5 26C108.5 33.0313 111.347 39.7727 116.411 44.7417C121.476 49.7103 128.342 52.5 135.5 52.5C142.658 52.5 149.524 49.7103 154.588 44.7417C159.653 39.7727 162.5 33.0313 162.5 26",stroke:"black"})),e.createElement("line",{x1:99.5,y1:236,x2:99.5,y2:151,stroke:"black"}),e.createElement("line",{x1:100.5,y1:236,x2:100.5,y2:151,stroke:"black"}),e.createElement("path",{d:"M172 150.5H100",stroke:"black"}),e.createElement("path",{d:"M99.5 151V150",stroke:"black"}),e.createElement("path",{d:"M172.5 151V150",stroke:"black"}),e.createElement("line",{x1:172.5,y1:151,x2:172.5,y2:236,stroke:"black"}),e.createElement("line",{x1:171.5,y1:151,x2:171.5,y2:236,stroke:"black"}),e.createElement("line",{x1:37.5,y1:236,x2:37.5,y2:170,stroke:"black"}),e.createElement("line",{x1:233.5,y1:236,x2:233.5,y2:170,stroke:"black"}),e.createElement("g",{filter:"url(#filter1_i_3_4)"},e.createElement("path",{d:"M163 150.5C163 147.02 162.315 143.574 160.983 140.359C159.651 137.144 157.699 134.222 155.238 131.762C152.778 129.301 149.856 127.349 146.641 126.017C143.426 124.685 139.98 124 136.5 124C133.02 124 129.574 124.685 126.359 126.017C123.144 127.349 120.222 129.301 117.762 131.762C115.301 134.222 113.349 137.144 112.017 140.359C110.685 143.574 110 147.02 110 150.5L136.5 150.5L163 150.5Z",stroke:"black"})),e.createElement("g",{filter:"url(#filter2_i_3_4)"},e.createElement("path",{d:"M110 150.5C110 153.98 110.685 157.426 112.017 160.641C113.349 163.856 115.301 166.778 117.762 169.238C120.222 171.699 123.144 173.651 126.359 174.983C129.574 176.315 133.02 177 136.5 177C139.98 177 143.426 176.315 146.641 174.983C149.856 173.651 152.778 171.699 155.238 169.238C157.699 166.778 159.651 163.856 160.983 160.641C162.315 157.426 163 153.98 163 150.5",stroke:"black",strokeDasharray:"4 4"})),e.createElement("line",{x1:177,y1:173.5,x2:172,y2:173.5,stroke:"black"}),e.createElement("line",{x1:177,y1:185.5,x2:172,y2:185.5,stroke:"black"}),e.createElement("line",{x1:177,y1:197.5,x2:172,y2:197.5,stroke:"black"}),e.createElement("line",{x1:177,y1:209.5,x2:172,y2:209.5,stroke:"black"}),e.createElement("line",{x1:100,y1:173.5,x2:95,y2:173.5,stroke:"black"}),e.createElement("line",{x1:100,y1:185.5,x2:95,y2:185.5,stroke:"black"}),e.createElement("line",{x1:100,y1:197.5,x2:95,y2:197.5,stroke:"black"}),e.createElement("line",{x1:100,y1:209.5,x2:95,y2:209.5,stroke:"black"}),e.createElement("path",{d:"M233.607 168.788C225.612 149.946 211.967 133.851 194.431 122.573C176.895 111.295 156.271 105.351 135.213 105.503C114.155 105.655 93.6242 111.896 76.2645 123.426C58.9047 134.955 45.5096 151.245 37.8066 170.201",stroke:"black"}),e.createElement("path",{d:"M233.5 169V168",stroke:"black"}),e.createElement("path",{d:"M233.5 170V169",stroke:"black"}),e.createElement("path",{d:"M118.5 218.5C118.5 213.996 120.34 209.673 123.621 206.484C126.901 203.294 131.354 201.5 136 201.5C140.646 201.5 145.099 203.294 148.379 206.484C151.66 209.673 153.5 213.996 153.5 218.5",stroke:"black"}),e.createElement("circle",{cx:136.5,cy:221.5,r:3,transform:"rotate(-90 136.5 221.5)",stroke:"black"}),e.createElement("line",{x1:149,y1:225.5,x2:123,y2:225.5,stroke:"black"}),e.createElement("path",{d:"M37.5 171V170",stroke:"black"}),e.createElement("path",{d:"M38.1519 169.775C38.1187 169.779 38.1364 169.901 38.135 169.927C38.1302 170.02 38.0674 170.111 38.0674 170.206C38.0674 170.245 38.0388 170.328 38.0252 170.367C38.0065 170.419 37.9719 170.48 37.9661 170.535C37.9593 170.6 37.9109 170.634 37.8854 170.688C37.8677 170.725 37.8366 170.798 37.8056 170.823C37.7847 170.839 37.7566 170.937 37.7371 170.967C37.6922 171.038 37.6309 171.121 37.5944 171.194",stroke:"black",strokeWidth:.5}),e.createElement("path",{d:"M37.9883 169.074C37.9888 169.094 37.9922 169.113 37.9922 169.133C37.9922 169.162 37.978 169.188 37.9622 169.213C37.8946 169.318 37.7958 169.401 37.7151 169.496C37.6172 169.612 37.5101 169.725 37.4512 169.865C37.4159 169.949 37.3877 170.035 37.3594 170.121C37.3498 170.15 37.3113 170.215 37.332 170.246",stroke:"black",strokeWidth:.5}),e.createElement("defs",null,e.createElement("filter",{id:"filter0_i_3_4",x:108,y:26,width:55,height:31,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_4"})),e.createElement("filter",{id:"filter1_i_3_4",x:109.5,y:123.5,width:54,height:31.5,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_4"})),e.createElement("filter",{id:"filter2_i_3_4",x:109.5,y:150.5,width:54,height:31,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},e.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.createElement("feOffset",{dy:4}),e.createElement("feGaussianBlur",{stdDeviation:2}),e.createElement("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"}),e.createElement("feBlend",{mode:"normal",in2:"shape",result:"effect1_innerShadow_3_4"})))),le={borderColor:"red"},W="guest_mode_content",L="guest_mode_title";function Ae({id:l,name:m,courtType:d,content:k}){const u=l==-1,E=localStorage.getItem(W),C=u&&E!=null?E:k,g=localStorage.getItem(L),b=u&&g!=null?g:m;return n.jsx(ne,{tactic:{name:b,id:l,content:JSON.parse(C)},onContentChange:async i=>u?(localStorage.setItem(W,JSON.stringify(i)),x.Guest):H(`tactic/${l}/save`,{content:i}).then(c=>c.ok?x.Ok:x.Err),onNameChange:async i=>u?(localStorage.setItem(L,i),!0):H(`tactic/${l}/edit/name`,{name:i}).then(c=>c.ok),courtType:d})}function ne({tactic:{id:l,name:m,content:d},onContentChange:k,onNameChange:u,courtType:E}){const C=l==-1,[g,b]=e.useState({}),[i,c,K]=me(d,C?x.Guest:x.Ok,e.useMemo(()=>se(t=>k(t).then(r=>r?x.Ok:x.Err),250),[k])),[Y,R]=e.useState(V(M.Allies,i.players)),[Z,A]=e.useState(V(M.Opponents,i.players)),[J,O]=e.useState(oe(i)?[]:[{key:"ball"}]),B=e.useRef(null),_=t=>{const r=B.current.getBoundingClientRect();return!(t.top>r.bottom||t.rightr.right)},w=(t,r)=>{const a=t.getBoundingClientRect(),s=B.current.getBoundingClientRect(),{x:o,y:p}=I(a,s);c(h=>({...h,players:[...h.players,{id:"player-"+r.key+"-"+r.team,team:r.team,role:r.key,rightRatio:o,bottomRatio:p,hasBall:!1}],actions:h.actions}))},$=(t,r)=>{const a=t.getBoundingClientRect(),s=B.current.getBoundingClientRect(),{x:o,y:p}=I(a,s);let h;switch(r.key){case"ball":const f=i.objects.findIndex(v=>v.type=="ball"),S=F(a,i.players);if(S!=-1){D(S),c(v=>({...v,objects:v.objects.toSpliced(f,1)}));return}h={type:"ball",rightRatio:o,bottomRatio:p};break;default:throw new Error("unknown court object ",r.key)}c(f=>({...f,objects:[...f.objects,h]}))},F=(t,r)=>{for(let a=0;ao.bottom||t.righto.right))return a}return-1};function G(t,r){return t.map(a=>{const s=r.find(p=>p.id==a.fromPlayerId).hasBall;let o=a.type;return s&&o==y.MOVE?o=y.DRIBBLE:s&&o==y.SCREEN?o=y.SHOOT:o==y.DRIBBLE?o=y.MOVE:o==y.SHOOT&&(o=y.SCREEN),{...a,type:o}})}const D=t=>{c(r=>{const a=r.objects.findIndex(p=>p.type=="ball");let s=r.players.at(t);const o=r.players.toSpliced(t,1,{...s,hasBall:!0});return{...r,actions:G(r.actions,o),players:o,objects:r.objects.toSpliced(a,1)}})},q=t=>{if(!_(t)){P();return}const r=F(t,i.players);if(r!=-1){c(f=>({...f,players:f.players.map(S=>({...S,hasBall:!1}))})),D(r);return}if(i.objects.findIndex(f=>f.type=="ball")!=-1)return;const a=B.current.getBoundingClientRect(),{x:s,y:o}=I(t,a);let p;p={type:"ball",rightRatio:s,bottomRatio:o};const h=i.players.map(f=>({...f,hasBall:!1}));c(f=>({...f,actions:G(f.actions,h),players:h,objects:[...f.objects,p]}))},U=t=>{c(a=>({...a,players:N(a.players,t,!1),objects:[...a.objects],actions:a.actions.filter(s=>s.toPlayerId!==t.id&&s.fromPlayerId!==t.id)}));let r;switch(t.team){case M.Opponents:r=A;break;case M.Allies:r=R}t.hasBall&&O([{key:"ball"}]),r(a=>[...a,{team:t.team,pos:t.role,key:t.role}])},P=()=>{c(t=>{const r=t.objects.findIndex(a=>a.type=="ball");return{...t,players:t.players.map(a=>({...a,hasBall:!1})),objects:t.objects.toSpliced(r,1)}}),O([{key:"ball"}])};return n.jsxs("div",{id:"main-div",children:[n.jsxs("div",{id:"topbar-div",children:[n.jsx("div",{id:"topbar-left",children:n.jsx(X,{state:K})}),n.jsx("div",{id:"title-input-div",children:n.jsx(z,{style:g,default_value:m,on_validated:t=>{u(t).then(r=>{b(r?{}:le)})}})}),n.jsx("div",{id:"topbar-right"})]}),n.jsxs("div",{id:"edit-div",children:[n.jsxs("div",{id:"racks",children:[n.jsx(j,{id:"allies-rack",objects:Y,onChange:R,canDetach:t=>_(t.getBoundingClientRect()),onElementDetached:w,render:({team:t,key:r})=>n.jsx(T,{team:t,text:r,hasBall:!1},r)}),n.jsx(j,{id:"objects",objects:J,onChange:O,canDetach:t=>_(t.getBoundingClientRect()),onElementDetached:$,render:ie}),n.jsx(j,{id:"opponent-rack",objects:Z,onChange:A,canDetach:t=>_(t.getBoundingClientRect()),onElementDetached:w,render:({team:t,key:r})=>n.jsx(T,{team:t,text:r,hasBall:!1},r)})]}),n.jsx("div",{id:"court-div",children:n.jsx("div",{id:"court-div-bounds",children:n.jsx(te,{players:i.players,objects:i.objects,actions:i.actions,onBallMoved:q,courtImage:n.jsx(ce,{courtType:E}),courtRef:B,setActions:t=>c(r=>({...r,players:r.players,actions:t(r.actions)})),renderAction:(t,r)=>n.jsx(ee,{action:t,courtRef:B,onActionDeleted:()=>{c(a=>({...a,actions:a.actions.toSpliced(r,1)}))},onActionChanges:a=>c(s=>({...s,actions:s.actions.toSpliced(r,1,a)}))},r),onPlayerChange:t=>{const r=document.getElementById(t.id).getBoundingClientRect();if(!_(r)){U(t);return}c(a=>({...a,players:N(a.players,t,!0)}))},onPlayerRemove:U,onBallRemove:P})})})]})]})}function oe(l){return l.players.findIndex(m=>m.hasBall)!=-1?!0:l.objects.findIndex(m=>m.type=="ball")!=-1}function ie(l){if(l.key=="ball")return n.jsx(Q,{});throw new Error("unknown racked court object ",l.key)}function ce({courtType:l}){return n.jsx("div",{id:"court-image-div",children:l=="PLAIN"?n.jsx(re,{id:"court-image"}):n.jsx(ae,{id:"court-image"})})}function V(l,m){return["1","2","3","4","5"].filter(d=>m.findIndex(k=>k.team==l&&k.role==d)==-1).map(d=>({team:l,key:d}))}function se(l,m=1e3){let d=0;return k=>(clearTimeout(d),new Promise((u,E)=>{d=setTimeout(()=>l(k).then(u).catch(E),m)}))}function me(l,m,d){const[k,u]=e.useState(l),[E,C]=e.useState(m),g=e.useCallback(b=>{u(i=>{const c=typeof b=="function"?b(i):b;return c!==i&&(C(x.Saving),d(c).then(C).catch(()=>C(x.Err))),c})},[d]);return[k,g,E]}function N(l,m,d){const k=l.findIndex(u=>u.team===m.team&&u.role===m.role);return l.toSpliced(k,1,...d?[m]:[])}export{Ae as default}; diff --git a/outputs/public/front/views/NewTacticPanel.tsx-64bf0fca.js b/outputs/public/front/views/NewTacticPanel.tsx-64bf0fca.js deleted file mode 100644 index e7c6325..0000000 --- a/outputs/public/front/views/NewTacticPanel.tsx-64bf0fca.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('@import"https://fonts.googleapis.com/css2?family=Roboto:wght@300;400&display=swap";:root{--main-color: #ffffff;--second-color: #e8e8e8;--background-color: #d2cdd3;--selected-team-primarycolor: #ffffff;--selected-team-secondarycolor: #000000;--player-allies-color: #64e4f5;--player-opponents-color: #f59264;--buttons-shadow-color: #a8a8a8;--selection-color: #3f7fc4;--border-color: #ffffff;--editor-court-selection-background: #5f8fee;--editor-court-selection-buttons: #acc4f3;--player-piece-ball-border-color: #000000;--text-main-font: "Roboto", sans-serif}#panel-root{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;align-content:center}#panel-top{font-family:var(--text-main-font)}#panel-choices{width:100%;height:100%;display:flex;justify-content:center;align-items:center;align-content:center;background-color:var(--editor-court-selection-background)}#panel-buttons{width:75%;height:20%;display:flex;justify-content:space-evenly;align-items:stretch;align-content:center}.court-kind-button{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;align-content:center;cursor:pointer;transition:scale .5s ease-out;width:auto}.court-kind-button-bottom,.court-kind-button-top{border:solid;border-color:var(--border-color)}.court-kind-button-bottom{display:flex;justify-content:center;align-items:center;align-content:center;height:25%;width:100%;background-color:var(--editor-court-selection-buttons);border-radius:0 0 20px 20px;border-width:3px}.court-kind-button-top{height:30%;background-color:var(--main-color);border-radius:20px 20px 0 0;border-width:3px 3px 0 3px}.court-kind-button:hover{scale:1.1}.court-kind-button-top,.court-kind-button-image-div{overflow:hidden;display:flex;height:100%;width:100%;justify-content:center;align-items:center;align-content:center}.court-kind-button-image{height:100%;width:150px;user-select:none;-webkit-user-drag:none}.court-kind-button-image-div{height:100%;padding:0 10px;background-color:var(--second-color)}.court-kind-button-name,.court-kind-button-details{user-select:none;font-family:var(--text-main-font)}.court-kind-button-details{position:absolute;z-index:-1;top:0;transition:top 1s}.court-kind-button:hover .court-kind-button-details{top:-20px}')),document.head.appendChild(t)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})(); -import{j as t}from"../../jsx-runtime-2e2d9038.js";import{C as l}from"../../full_court-1739e2e0.js";import{BASE as s}from"../Constants.ts-0288c91b.js";const o="/IQBall/public/half_court-eb16117a.svg";function m(){return t.jsxs("div",{id:"panel-root",children:[t.jsx("div",{id:"panel-top",children:t.jsx("p",{children:"Select a basket court"})}),t.jsx("div",{id:"panel-choices",children:t.jsxs("div",{id:"panel-buttons",children:[t.jsx(e,{name:"Plain",details:"Select a plain basketball court",image:l,redirect:"/tactic/new/plain"}),t.jsx(e,{name:"Half",details:"Select half a basketball court",image:o,redirect:"/tactic/new/half"})]})})]})}function e({name:i,image:a,details:n,redirect:c}){return t.jsxs("div",{className:"court-kind-button",onClick:()=>location.href=s+c,children:[t.jsx("div",{className:"court-kind-button-details",children:n}),t.jsx("div",{className:"court-kind-button-top",children:t.jsx("div",{className:"court-kind-button-image-div",children:t.jsx("img",{src:a,alt:i,className:"court-kind-button-image"})})}),t.jsx("div",{className:"court-kind-button-bottom",children:t.jsx("p",{className:"court-kind-button-name",children:i})})]})}export{m as default}; diff --git a/outputs/public/front/views/Visualizer.tsx-a2e9b703.js b/outputs/public/front/views/Visualizer.tsx-a2e9b703.js deleted file mode 100644 index 2dc6047..0000000 --- a/outputs/public/front/views/Visualizer.tsx-a2e9b703.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("#main{height:100vh;width:100%;display:flex;flex-direction:column}#topbar{display:flex;background-color:var(--main-color);justify-content:center;align-items:center}h1{text-align:center;margin-top:0}#court-container{flex:1;display:flex;justify-content:center;background-color:var(--main-color)}#court{max-width:80%;max-height:80%}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); -import{r as s,j as t}from"../../jsx-runtime-2e2d9038.js";import{C as e}from"../../full_court-1739e2e0.js";function c({id:o,name:r}){const[i,a]=s.useState({});return t.jsxs("div",{id:"main",children:[t.jsx("div",{id:"topbar",children:t.jsx("h1",{children:r})}),t.jsx("div",{id:"court-container",children:t.jsx("img",{id:"court",src:e,style:i,alt:"Basketball Court"})})]})}export{c as default}; diff --git a/outputs/public/front/views/editor/CourtAction.tsx-15785ac7.js b/outputs/public/front/views/editor/CourtAction.tsx-15785ac7.js deleted file mode 100644 index ceae970..0000000 --- a/outputs/public/front/views/editor/CourtAction.tsx-15785ac7.js +++ /dev/null @@ -1 +0,0 @@ -import{j as s}from"../../../jsx-runtime-2e2d9038.js";import{ActionKind as r}from"../../tactic/Action.ts-d727cf33.js";import i from"../../components/arrows/BendableArrow.tsx-f8a85d9b.js";import{ScreenHead as n,MoveToHead as y}from"../../components/actions/ArrowAction.tsx-b082b6c9.js";import"../../components/arrows/Pos.ts-9fe07952.js";import"../../../cjs-ff7eb0e1.js";import"../../../index-ca121481.js";function l({action:e,onActionChanges:a,onActionDeleted:m,courtRef:p}){let t;switch(e.type){case r.DRIBBLE:case r.MOVE:case r.SHOOT:t=()=>s.jsx(y,{});break;case r.SCREEN:t=()=>s.jsx(n,{});break}let o;switch(e.type){case r.SHOOT:o="10 5";break}return s.jsx(i,{forceStraight:e.type==r.SHOOT,area:p,startPos:e.moveFrom,segments:e.segments,onSegmentsChanges:d=>{a({...e,segments:d})},wavy:e.type==r.DRIBBLE,endRadius:e.toPlayerId?26:17,startRadius:0,onDeleteRequested:m,style:{head:t,dashArray:o}})}export{l as CourtAction}; diff --git a/outputs/public/full_court-1739e2e0.js b/outputs/public/full_court-1739e2e0.js deleted file mode 100644 index 5043b9e..0000000 --- a/outputs/public/full_court-1739e2e0.js +++ /dev/null @@ -1 +0,0 @@ -const l="/IQBall/public/full_court-939d8e82.svg";export{l as C}; diff --git a/outputs/public/full_court-939d8e82.svg b/outputs/public/full_court-939d8e82.svg deleted file mode 100644 index 5bfc0de..0000000 --- a/outputs/public/full_court-939d8e82.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/outputs/public/half_court-eb16117a.svg b/outputs/public/half_court-eb16117a.svg deleted file mode 100644 index 7bf82e0..0000000 --- a/outputs/public/half_court-eb16117a.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/outputs/public/index-ca121481.js b/outputs/public/index-ca121481.js deleted file mode 100644 index f47eb41..0000000 --- a/outputs/public/index-ca121481.js +++ /dev/null @@ -1,24 +0,0 @@ -import{r as za}from"./jsx-runtime-2e2d9038.js";var Co={exports:{}},ve={},xo={exports:{}},_o={};/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */(function(e){function n(C,z){var P=C.length;C.push(z);e:for(;0>>1,Y=C[H];if(0>>1;Hl(sl,P))mnl(Xt,sl)?(C[H]=Xt,C[mn]=P,H=mn):(C[H]=sl,C[pn]=P,H=pn);else if(mnl(Xt,P))C[H]=Xt,C[mn]=P,H=mn;else break e}}return z}function l(C,z){var P=C.sortIndex-z.sortIndex;return P!==0?P:C.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var u=Date,o=u.now();e.unstable_now=function(){return u.now()-o}}var s=[],d=[],v=1,m=null,p=3,g=!1,w=!1,k=!1,F=typeof setTimeout=="function"?setTimeout:null,c=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function f(C){for(var z=t(d);z!==null;){if(z.callback===null)r(d);else if(z.startTime<=C)r(d),z.sortIndex=z.expirationTime,n(s,z);else break;z=t(d)}}function h(C){if(k=!1,f(C),!w)if(t(s)!==null)w=!0,ul(E);else{var z=t(d);z!==null&&ol(h,z.startTime-C)}}function E(C,z){w=!1,k&&(k=!1,c(N),N=-1),g=!0;var P=p;try{for(f(z),m=t(s);m!==null&&(!(m.expirationTime>z)||C&&!Ce());){var H=m.callback;if(typeof H=="function"){m.callback=null,p=m.priorityLevel;var Y=H(m.expirationTime<=z);z=e.unstable_now(),typeof Y=="function"?m.callback=Y:m===t(s)&&r(s),f(z)}else r(s);m=t(s)}if(m!==null)var Yt=!0;else{var pn=t(d);pn!==null&&ol(h,pn.startTime-z),Yt=!1}return Yt}finally{m=null,p=P,g=!1}}var x=!1,_=null,N=-1,B=5,T=-1;function Ce(){return!(e.unstable_now()-TC||125H?(C.sortIndex=P,n(d,C),t(s)===null&&C===t(d)&&(k?(c(N),N=-1):k=!0,ol(h,P-H))):(C.sortIndex=Y,n(s,C),w||g||(w=!0,ul(E))),C},e.unstable_shouldYield=Ce,e.unstable_wrapCallback=function(C){var z=p;return function(){var P=p;p=z;try{return C.apply(this,arguments)}finally{p=P}}}})(_o);xo.exports=_o;var Pa=xo.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var No=za,me=Pa;function y(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ol=Object.prototype.hasOwnProperty,Ta=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,yu={},gu={};function La(e){return Ol.call(gu,e)?!0:Ol.call(yu,e)?!1:Ta.test(e)?gu[e]=!0:(yu[e]=!0,!1)}function Ma(e,n,t,r){if(t!==null&&t.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return r?!1:t!==null?!t.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Da(e,n,t,r){if(n===null||typeof n>"u"||Ma(e,n,t,r))return!0;if(r)return!1;if(t!==null)switch(t.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function ie(e,n,t,r,l,i,u){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=t,this.propertyName=e,this.type=n,this.sanitizeURL=i,this.removeEmptyString=u}var q={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){q[e]=new ie(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];q[n]=new ie(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){q[e]=new ie(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){q[e]=new ie(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){q[e]=new ie(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){q[e]=new ie(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){q[e]=new ie(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){q[e]=new ie(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){q[e]=new ie(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ni=/[\-:]([a-z])/g;function zi(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Ni,zi);q[n]=new ie(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Ni,zi);q[n]=new ie(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Ni,zi);q[n]=new ie(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){q[e]=new ie(e,1,!1,e.toLowerCase(),null,!1,!1)});q.xlinkHref=new ie("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){q[e]=new ie(e,1,!1,e.toLowerCase(),null,!0,!0)});function Pi(e,n,t,r){var l=q.hasOwnProperty(n)?q[n]:null;(l!==null?l.type!==0:r||!(2o||l[u]!==i[o]){var s=` -`+l[u].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=u&&0<=o);break}}}finally{cl=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?pt(e):""}function Ra(e){switch(e.tag){case 5:return pt(e.type);case 16:return pt("Lazy");case 13:return pt("Suspense");case 19:return pt("SuspenseList");case 0:case 2:case 15:return e=fl(e.type,!1),e;case 11:return e=fl(e.type.render,!1),e;case 1:return e=fl(e.type,!0),e;default:return""}}function Ul(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Mn:return"Fragment";case Ln:return"Portal";case Fl:return"Profiler";case Ti:return"StrictMode";case Il:return"Suspense";case jl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case To:return(e.displayName||"Context")+".Consumer";case Po:return(e._context.displayName||"Context")+".Provider";case Li:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Mi:return n=e.displayName||null,n!==null?n:Ul(e.type)||"Memo";case Ye:n=e._payload,e=e._init;try{return Ul(e(n))}catch{}}return null}function Oa(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ul(n);case 8:return n===Ti?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function sn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Mo(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Fa(e){var n=Mo(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var l=t.get,i=t.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(u){r=""+u,i.call(this,u)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(u){r=""+u},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Zt(e){e._valueTracker||(e._valueTracker=Fa(e))}function Do(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=Mo(e)?e.checked?"true":"false":e.value),e=r,e!==t?(n.setValue(e),!0):!1}function Sr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Vl(e,n){var t=n.checked;return V({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function ku(e,n){var t=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;t=sn(n.value!=null?n.value:t),e._wrapperState={initialChecked:r,initialValue:t,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Ro(e,n){n=n.checked,n!=null&&Pi(e,"checked",n,!1)}function Al(e,n){Ro(e,n);var t=sn(n.value),r=n.type;if(t!=null)r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Bl(e,n.type,t):n.hasOwnProperty("defaultValue")&&Bl(e,n.type,sn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Su(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function Bl(e,n,t){(n!=="number"||Sr(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}var mt=Array.isArray;function Hn(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l"+n.valueOf().toString()+"",n=Jt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function zt(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=n;return}}e.textContent=n}var yt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ia=["Webkit","ms","Moz","O"];Object.keys(yt).forEach(function(e){Ia.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),yt[n]=yt[e]})});function jo(e,n,t){return n==null||typeof n=="boolean"||n===""?"":t||typeof n!="number"||n===0||yt.hasOwnProperty(e)&&yt[e]?(""+n).trim():n+"px"}function Uo(e,n){e=e.style;for(var t in n)if(n.hasOwnProperty(t)){var r=t.indexOf("--")===0,l=jo(t,n[t],r);t==="float"&&(t="cssFloat"),r?e.setProperty(t,l):e[t]=l}}var ja=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Wl(e,n){if(n){if(ja[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(y(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(y(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(y(61))}if(n.style!=null&&typeof n.style!="object")throw Error(y(62))}}function $l(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Kl=null;function Di(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Yl=null,Qn=null,Wn=null;function xu(e){if(e=$t(e)){if(typeof Yl!="function")throw Error(y(280));var n=e.stateNode;n&&(n=Gr(n),Yl(e.stateNode,e.type,n))}}function Vo(e){Qn?Wn?Wn.push(e):Wn=[e]:Qn=e}function Ao(){if(Qn){var e=Qn,n=Wn;if(Wn=Qn=null,xu(e),n)for(e=0;e>>=0,e===0?32:31-(Xa(e)/Ga|0)|0}var qt=64,bt=4194304;function vt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function _r(e,n){var t=e.pendingLanes;if(t===0)return 0;var r=0,l=e.suspendedLanes,i=e.pingedLanes,u=t&268435455;if(u!==0){var o=u&~l;o!==0?r=vt(o):(i&=u,i!==0&&(r=vt(i)))}else u=t&~l,u!==0?r=vt(u):i!==0&&(r=vt(i));if(r===0)return 0;if(n!==0&&n!==r&&!(n&l)&&(l=r&-r,i=n&-n,l>=i||l===16&&(i&4194240)!==0))return n;if(r&4&&(r|=t&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0t;t++)n.push(e);return n}function Qt(e,n,t){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Pe(n),e[n]=t}function ba(e,n){var t=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=wt),Ru=String.fromCharCode(32),Ou=!1;function us(e,n){switch(e){case"keyup":return zc.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function os(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Dn=!1;function Tc(e,n){switch(e){case"compositionend":return os(n);case"keypress":return n.which!==32?null:(Ou=!0,Ru);case"textInput":return e=n.data,e===Ru&&Ou?null:e;default:return null}}function Lc(e,n){if(Dn)return e==="compositionend"||!Ai&&us(e,n)?(e=ls(),dr=ji=Je=null,Dn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:t,offset:n-e};e=r}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=Uu(t)}}function fs(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?fs(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function ds(){for(var e=window,n=Sr();n instanceof e.HTMLIFrameElement;){try{var t=typeof n.contentWindow.location.href=="string"}catch{t=!1}if(t)e=n.contentWindow;else break;n=Sr(e.document)}return n}function Bi(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function Vc(e){var n=ds(),t=e.focusedElem,r=e.selectionRange;if(n!==t&&t&&t.ownerDocument&&fs(t.ownerDocument.documentElement,t)){if(r!==null&&Bi(t)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(e,t.value.length);else if(e=(n=t.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var l=t.textContent.length,i=Math.min(r.start,l);r=r.end===void 0?i:Math.min(r.end,l),!e.extend&&i>r&&(l=r,r=i,i=l),l=Vu(t,i);var u=Vu(t,r);l&&u&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(n=n.createRange(),n.setStart(l.node,l.offset),e.removeAllRanges(),i>r?(e.addRange(n),e.extend(u.node,u.offset)):(n.setEnd(u.node,u.offset),e.addRange(n)))}}for(n=[],e=t;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Rn=null,bl=null,St=null,ei=!1;function Au(e,n,t){var r=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;ei||Rn==null||Rn!==Sr(r)||(r=Rn,"selectionStart"in r&&Bi(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),St&&Rt(St,r)||(St=r,r=Pr(bl,"onSelect"),0In||(e.current=ui[In],ui[In]=null,In--)}function D(e,n){In++,ui[In]=e.current,e.current=n}var an={},te=fn(an),se=fn(!1),En=an;function Gn(e,n){var t=e.type.contextTypes;if(!t)return an;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var l={},i;for(i in t)l[i]=n[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=l),l}function ae(e){return e=e.childContextTypes,e!=null}function Lr(){O(se),O(te)}function Yu(e,n,t){if(te.current!==an)throw Error(y(168));D(te,n),D(se,t)}function Ss(e,n,t){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!="function")return t;r=r.getChildContext();for(var l in r)if(!(l in n))throw Error(y(108,Oa(e)||"Unknown",l));return V({},t,r)}function Mr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||an,En=te.current,D(te,e),D(se,se.current),!0}function Xu(e,n,t){var r=e.stateNode;if(!r)throw Error(y(169));t?(e=Ss(e,n,En),r.__reactInternalMemoizedMergedChildContext=e,O(se),O(te),D(te,e)):O(se),D(se,t)}var je=null,Zr=!1,_l=!1;function Es(e){je===null?je=[e]:je.push(e)}function Jc(e){Zr=!0,Es(e)}function dn(){if(!_l&&je!==null){_l=!0;var e=0,n=M;try{var t=je;for(M=1;e>=u,l-=u,Ue=1<<32-Pe(n)+l|t<N?(B=_,_=null):B=_.sibling;var T=p(c,_,f[N],h);if(T===null){_===null&&(_=B);break}e&&_&&T.alternate===null&&n(c,_),a=i(T,a,N),x===null?E=T:x.sibling=T,x=T,_=B}if(N===f.length)return t(c,_),I&&vn(c,N),E;if(_===null){for(;NN?(B=_,_=null):B=_.sibling;var Ce=p(c,_,T.value,h);if(Ce===null){_===null&&(_=B);break}e&&_&&Ce.alternate===null&&n(c,_),a=i(Ce,a,N),x===null?E=Ce:x.sibling=Ce,x=Ce,_=B}if(T.done)return t(c,_),I&&vn(c,N),E;if(_===null){for(;!T.done;N++,T=f.next())T=m(c,T.value,h),T!==null&&(a=i(T,a,N),x===null?E=T:x.sibling=T,x=T);return I&&vn(c,N),E}for(_=r(c,_);!T.done;N++,T=f.next())T=g(_,c,N,T.value,h),T!==null&&(e&&T.alternate!==null&&_.delete(T.key===null?N:T.key),a=i(T,a,N),x===null?E=T:x.sibling=T,x=T);return e&&_.forEach(function(rt){return n(c,rt)}),I&&vn(c,N),E}function F(c,a,f,h){if(typeof f=="object"&&f!==null&&f.type===Mn&&f.key===null&&(f=f.props.children),typeof f=="object"&&f!==null){switch(f.$$typeof){case Gt:e:{for(var E=f.key,x=a;x!==null;){if(x.key===E){if(E=f.type,E===Mn){if(x.tag===7){t(c,x.sibling),a=l(x,f.props.children),a.return=c,c=a;break e}}else if(x.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Ye&&no(E)===x.type){t(c,x.sibling),a=l(x,f.props),a.ref=ct(c,x,f),a.return=c,c=a;break e}t(c,x);break}else n(c,x);x=x.sibling}f.type===Mn?(a=Sn(f.props.children,c.mode,h,f.key),a.return=c,c=a):(h=kr(f.type,f.key,f.props,null,c.mode,h),h.ref=ct(c,a,f),h.return=c,c=h)}return u(c);case Ln:e:{for(x=f.key;a!==null;){if(a.key===x)if(a.tag===4&&a.stateNode.containerInfo===f.containerInfo&&a.stateNode.implementation===f.implementation){t(c,a.sibling),a=l(a,f.children||[]),a.return=c,c=a;break e}else{t(c,a);break}else n(c,a);a=a.sibling}a=Rl(f,c.mode,h),a.return=c,c=a}return u(c);case Ye:return x=f._init,F(c,a,x(f._payload),h)}if(mt(f))return w(c,a,f,h);if(it(f))return k(c,a,f,h);ur(c,f)}return typeof f=="string"&&f!==""||typeof f=="number"?(f=""+f,a!==null&&a.tag===6?(t(c,a.sibling),a=l(a,f),a.return=c,c=a):(t(c,a),a=Dl(f,c.mode,h),a.return=c,c=a),u(c)):t(c,a)}return F}var Jn=Ls(!0),Ms=Ls(!1),Kt={},Fe=fn(Kt),jt=fn(Kt),Ut=fn(Kt);function wn(e){if(e===Kt)throw Error(y(174));return e}function Zi(e,n){switch(D(Ut,n),D(jt,e),D(Fe,Kt),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:Ql(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=Ql(n,e)}O(Fe),D(Fe,n)}function qn(){O(Fe),O(jt),O(Ut)}function Ds(e){wn(Ut.current);var n=wn(Fe.current),t=Ql(n,e.type);n!==t&&(D(jt,e),D(Fe,t))}function Ji(e){jt.current===e&&(O(Fe),O(jt))}var j=fn(0);function jr(e){for(var n=e;n!==null;){if(n.tag===13){var t=n.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Nl=[];function qi(){for(var e=0;et?t:4,e(!0);var r=zl.transition;zl.transition={};try{e(!1),n()}finally{M=t,zl.transition=r}}function Xs(){return Ee().memoizedState}function nf(e,n,t){var r=un(e);if(t={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null},Gs(e))Zs(n,t);else if(t=Ns(e,n,t,r),t!==null){var l=le();Te(t,e,r,l),Js(t,n,r)}}function tf(e,n,t){var r=un(e),l={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null};if(Gs(e))Zs(n,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=n.lastRenderedReducer,i!==null))try{var u=n.lastRenderedState,o=i(u,t);if(l.hasEagerState=!0,l.eagerState=o,Le(o,u)){var s=n.interleaved;s===null?(l.next=l,Xi(n)):(l.next=s.next,s.next=l),n.interleaved=l;return}}catch{}finally{}t=Ns(e,n,l,r),t!==null&&(l=le(),Te(t,e,r,l),Js(t,n,r))}}function Gs(e){var n=e.alternate;return e===U||n!==null&&n===U}function Zs(e,n){Et=Ur=!0;var t=e.pending;t===null?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function Js(e,n,t){if(t&4194240){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,Oi(e,t)}}var Vr={readContext:Se,useCallback:b,useContext:b,useEffect:b,useImperativeHandle:b,useInsertionEffect:b,useLayoutEffect:b,useMemo:b,useReducer:b,useRef:b,useState:b,useDebugValue:b,useDeferredValue:b,useTransition:b,useMutableSource:b,useSyncExternalStore:b,useId:b,unstable_isNewReconciler:!1},rf={readContext:Se,useCallback:function(e,n){return De().memoizedState=[e,n===void 0?null:n],e},useContext:Se,useEffect:ro,useImperativeHandle:function(e,n,t){return t=t!=null?t.concat([e]):null,hr(4194308,4,Qs.bind(null,n,e),t)},useLayoutEffect:function(e,n){return hr(4194308,4,e,n)},useInsertionEffect:function(e,n){return hr(4,2,e,n)},useMemo:function(e,n){var t=De();return n=n===void 0?null:n,e=e(),t.memoizedState=[e,n],e},useReducer:function(e,n,t){var r=De();return n=t!==void 0?t(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=nf.bind(null,U,e),[r.memoizedState,e]},useRef:function(e){var n=De();return e={current:e},n.memoizedState=e},useState:to,useDebugValue:ru,useDeferredValue:function(e){return De().memoizedState=e},useTransition:function(){var e=to(!1),n=e[0];return e=ef.bind(null,e[1]),De().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,t){var r=U,l=De();if(I){if(t===void 0)throw Error(y(407));t=t()}else{if(t=n(),G===null)throw Error(y(349));xn&30||Fs(r,n,t)}l.memoizedState=t;var i={value:t,getSnapshot:n};return l.queue=i,ro(js.bind(null,r,i,e),[e]),r.flags|=2048,Bt(9,Is.bind(null,r,i,t,n),void 0,null),t},useId:function(){var e=De(),n=G.identifierPrefix;if(I){var t=Ve,r=Ue;t=(r&~(1<<32-Pe(r)-1)).toString(32)+t,n=":"+n+"R"+t,t=Vt++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(t,{is:r.is}):(e=u.createElement(t),t==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,t),e[Re]=n,e[It]=r,ua(e,n,!1,!1),n.stateNode=e;e:{switch(u=$l(t,r),t){case"dialog":R("cancel",e),R("close",e),l=r;break;case"iframe":case"object":case"embed":R("load",e),l=r;break;case"video":case"audio":for(l=0;let&&(n.flags|=128,r=!0,ft(i,!1),n.lanes=4194304)}else{if(!r)if(e=jr(u),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),ft(i,!0),i.tail===null&&i.tailMode==="hidden"&&!u.alternate&&!I)return ee(n),null}else 2*Q()-i.renderingStartTime>et&&t!==1073741824&&(n.flags|=128,r=!0,ft(i,!1),n.lanes=4194304);i.isBackwards?(u.sibling=n.child,n.child=u):(t=i.last,t!==null?t.sibling=u:n.child=u,i.last=u)}return i.tail!==null?(n=i.tail,i.rendering=n,i.tail=n.sibling,i.renderingStartTime=Q(),n.sibling=null,t=j.current,D(j,r?t&1|2:t&1),n):(ee(n),null);case 22:case 23:return au(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?fe&1073741824&&(ee(n),n.subtreeFlags&6&&(n.flags|=8192)):ee(n),null;case 24:return null;case 25:return null}throw Error(y(156,n.tag))}function df(e,n){switch(Qi(n),n.tag){case 1:return ae(n.type)&&Lr(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return qn(),O(se),O(te),qi(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return Ji(n),null;case 13:if(O(j),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(y(340));Zn()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return O(j),null;case 4:return qn(),null;case 10:return Yi(n.type._context),null;case 22:case 23:return au(),null;case 24:return null;default:return null}}var sr=!1,ne=!1,pf=typeof WeakSet=="function"?WeakSet:Set,S=null;function An(e,n){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){A(e,n,r)}else t.current=null}function gi(e,n,t){try{t()}catch(r){A(e,n,r)}}var po=!1;function mf(e,n){if(ni=Nr,e=ds(),Bi(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var l=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{t.nodeType,i.nodeType}catch{t=null;break e}var u=0,o=-1,s=-1,d=0,v=0,m=e,p=null;n:for(;;){for(var g;m!==t||l!==0&&m.nodeType!==3||(o=u+l),m!==i||r!==0&&m.nodeType!==3||(s=u+r),m.nodeType===3&&(u+=m.nodeValue.length),(g=m.firstChild)!==null;)p=m,m=g;for(;;){if(m===e)break n;if(p===t&&++d===l&&(o=u),p===i&&++v===r&&(s=u),(g=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=g}t=o===-1||s===-1?null:{start:o,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;for(ti={focusedElem:e,selectionRange:t},Nr=!1,S=n;S!==null;)if(n=S,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,S=e;else for(;S!==null;){n=S;try{var w=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var k=w.memoizedProps,F=w.memoizedState,c=n.stateNode,a=c.getSnapshotBeforeUpdate(n.elementType===n.type?k:_e(n.type,k),F);c.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var f=n.stateNode.containerInfo;f.nodeType===1?f.textContent="":f.nodeType===9&&f.documentElement&&f.removeChild(f.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(y(163))}}catch(h){A(n,n.return,h)}if(e=n.sibling,e!==null){e.return=n.return,S=e;break}S=n.return}return w=po,po=!1,w}function Ct(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var i=l.destroy;l.destroy=void 0,i!==void 0&&gi(n,t,i)}l=l.next}while(l!==r)}}function br(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function wi(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n=="function"?n(e):n.current=e}}function aa(e){var n=e.alternate;n!==null&&(e.alternate=null,aa(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Re],delete n[It],delete n[ii],delete n[Gc],delete n[Zc])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ca(e){return e.tag===5||e.tag===3||e.tag===4}function mo(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ca(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ki(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=Tr));else if(r!==4&&(e=e.child,e!==null))for(ki(e,n,t),e=e.sibling;e!==null;)ki(e,n,t),e=e.sibling}function Si(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Si(e,n,t),e=e.sibling;e!==null;)Si(e,n,t),e=e.sibling}var Z=null,Ne=!1;function Ke(e,n,t){for(t=t.child;t!==null;)fa(e,n,t),t=t.sibling}function fa(e,n,t){if(Oe&&typeof Oe.onCommitFiberUnmount=="function")try{Oe.onCommitFiberUnmount($r,t)}catch{}switch(t.tag){case 5:ne||An(t,n);case 6:var r=Z,l=Ne;Z=null,Ke(e,n,t),Z=r,Ne=l,Z!==null&&(Ne?(e=Z,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):Z.removeChild(t.stateNode));break;case 18:Z!==null&&(Ne?(e=Z,t=t.stateNode,e.nodeType===8?xl(e.parentNode,t):e.nodeType===1&&xl(e,t),Mt(e)):xl(Z,t.stateNode));break;case 4:r=Z,l=Ne,Z=t.stateNode.containerInfo,Ne=!0,Ke(e,n,t),Z=r,Ne=l;break;case 0:case 11:case 14:case 15:if(!ne&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var i=l,u=i.destroy;i=i.tag,u!==void 0&&(i&2||i&4)&&gi(t,n,u),l=l.next}while(l!==r)}Ke(e,n,t);break;case 1:if(!ne&&(An(t,n),r=t.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(o){A(t,n,o)}Ke(e,n,t);break;case 21:Ke(e,n,t);break;case 22:t.mode&1?(ne=(r=ne)||t.memoizedState!==null,Ke(e,n,t),ne=r):Ke(e,n,t);break;default:Ke(e,n,t)}}function vo(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new pf),n.forEach(function(r){var l=Cf.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function xe(e,n){var t=n.deletions;if(t!==null)for(var r=0;rl&&(l=u),r&=~i}if(r=l,r=Q()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*hf(r/1960))-r,10e?16:e,qe===null)var r=!1;else{if(e=qe,qe=null,Hr=0,L&6)throw Error(y(331));var l=L;for(L|=4,S=e.current;S!==null;){var i=S,u=i.child;if(S.flags&16){var o=i.deletions;if(o!==null){for(var s=0;sQ()-ou?kn(e,0):uu|=t),ce(e,n)}function wa(e,n){n===0&&(e.mode&1?(n=bt,bt<<=1,!(bt&130023424)&&(bt=4194304)):n=1);var t=le();e=Qe(e,n),e!==null&&(Qt(e,n,t),ce(e,t))}function Ef(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),wa(e,t)}function Cf(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(y(314))}r!==null&&r.delete(n),wa(e,t)}var ka;ka=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||se.current)oe=!0;else{if(!(e.lanes&t)&&!(n.flags&128))return oe=!1,cf(e,n,t);oe=!!(e.flags&131072)}else oe=!1,I&&n.flags&1048576&&Cs(n,Rr,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;yr(e,n),e=n.pendingProps;var l=Gn(n,te.current);Kn(n,t),l=eu(null,n,r,e,l,t);var i=nu();return n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,ae(r)?(i=!0,Mr(n)):i=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Gi(n),l.updater=Jr,n.stateNode=l,l._reactInternals=n,fi(n,r,e,t),n=mi(null,n,r,!0,i,t)):(n.tag=0,I&&i&&Hi(n),re(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(yr(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=_f(r),e=_e(r,e),l){case 0:n=pi(null,n,r,e,t);break e;case 1:n=ao(null,n,r,e,t);break e;case 11:n=oo(null,n,r,e,t);break e;case 14:n=so(null,n,r,_e(r.type,e),t);break e}throw Error(y(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:_e(r,l),pi(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:_e(r,l),ao(e,n,r,l,t);case 3:e:{if(ra(n),e===null)throw Error(y(387));r=n.pendingProps,i=n.memoizedState,l=i.element,zs(e,n),Ir(n,r,null,t);var u=n.memoizedState;if(r=u.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},n.updateQueue.baseState=i,n.memoizedState=i,n.flags&256){l=bn(Error(y(423)),n),n=co(e,n,r,t,l);break e}else if(r!==l){l=bn(Error(y(424)),n),n=co(e,n,r,t,l);break e}else for(de=tn(n.stateNode.containerInfo.firstChild),pe=n,I=!0,ze=null,t=Ms(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(Zn(),r===l){n=We(e,n,t);break e}re(e,n,r,t)}n=n.child}return n;case 5:return Ds(n),e===null&&si(n),r=n.type,l=n.pendingProps,i=e!==null?e.memoizedProps:null,u=l.children,ri(r,l)?u=null:i!==null&&ri(r,i)&&(n.flags|=32),ta(e,n),re(e,n,u,t),n.child;case 6:return e===null&&si(n),null;case 13:return la(e,n,t);case 4:return Zi(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=Jn(n,null,r,t):re(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:_e(r,l),oo(e,n,r,l,t);case 7:return re(e,n,n.pendingProps,t),n.child;case 8:return re(e,n,n.pendingProps.children,t),n.child;case 12:return re(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,i=n.memoizedProps,u=l.value,D(Or,r._currentValue),r._currentValue=u,i!==null)if(Le(i.value,u)){if(i.children===l.children&&!se.current){n=We(e,n,t);break e}}else for(i=n.child,i!==null&&(i.return=n);i!==null;){var o=i.dependencies;if(o!==null){u=i.child;for(var s=o.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=Ae(-1,t&-t),s.tag=2;var d=i.updateQueue;if(d!==null){d=d.shared;var v=d.pending;v===null?s.next=s:(s.next=v.next,v.next=s),d.pending=s}}i.lanes|=t,s=i.alternate,s!==null&&(s.lanes|=t),ai(i.return,t,n),o.lanes|=t;break}s=s.next}}else if(i.tag===10)u=i.type===n.type?null:i.child;else if(i.tag===18){if(u=i.return,u===null)throw Error(y(341));u.lanes|=t,o=u.alternate,o!==null&&(o.lanes|=t),ai(u,t,n),u=i.sibling}else u=i.child;if(u!==null)u.return=i;else for(u=i;u!==null;){if(u===n){u=null;break}if(i=u.sibling,i!==null){i.return=u.return,u=i;break}u=u.return}i=u}re(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,Kn(n,t),l=Se(l),r=r(l),n.flags|=1,re(e,n,r,t),n.child;case 14:return r=n.type,l=_e(r,n.pendingProps),l=_e(r.type,l),so(e,n,r,l,t);case 15:return ea(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:_e(r,l),yr(e,n),n.tag=1,ae(r)?(e=!0,Mr(n)):e=!1,Kn(n,t),Ts(n,r,l),fi(n,r,l,t),mi(null,n,r,!0,e,t);case 19:return ia(e,n,t);case 22:return na(e,n,t)}throw Error(y(156,n.tag))};function Sa(e,n){return Yo(e,n)}function xf(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function we(e,n,t,r){return new xf(e,n,t,r)}function fu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function _f(e){if(typeof e=="function")return fu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Li)return 11;if(e===Mi)return 14}return 2}function on(e,n){var t=e.alternate;return t===null?(t=we(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function kr(e,n,t,r,l,i){var u=2;if(r=e,typeof e=="function")fu(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case Mn:return Sn(t.children,l,i,n);case Ti:u=8,l|=8;break;case Fl:return e=we(12,t,n,l|2),e.elementType=Fl,e.lanes=i,e;case Il:return e=we(13,t,n,l),e.elementType=Il,e.lanes=i,e;case jl:return e=we(19,t,n,l),e.elementType=jl,e.lanes=i,e;case Lo:return nl(t,l,i,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Po:u=10;break e;case To:u=9;break e;case Li:u=11;break e;case Mi:u=14;break e;case Ye:u=16,r=null;break e}throw Error(y(130,e==null?e:typeof e,""))}return n=we(u,t,n,l),n.elementType=e,n.type=r,n.lanes=i,n}function Sn(e,n,t,r){return e=we(7,e,r,n),e.lanes=t,e}function nl(e,n,t,r){return e=we(22,e,r,n),e.elementType=Lo,e.lanes=t,e.stateNode={isHidden:!1},e}function Dl(e,n,t){return e=we(6,e,null,n),e.lanes=t,e}function Rl(e,n,t){return n=we(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Nf(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=pl(0),this.expirationTimes=pl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=pl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function du(e,n,t,r,l,i,u,o,s){return e=new Nf(e,n,t,o,s),n===1?(n=1,i===!0&&(n|=8)):n=0,i=we(3,null,null,n),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},Gi(i),e}function zf(e,n,t){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_a)}catch(e){console.error(e)}}_a(),Co.exports=ve;var Rf=Co.exports;export{Rf as r}; diff --git a/outputs/public/index.php b/outputs/public/index.php deleted file mode 100644 index 8c9a62b..0000000 --- a/outputs/public/index.php +++ /dev/null @@ -1,129 +0,0 @@ -addFunction(new TwigFunction('path', fn(string $str) => "$basePath$str")); - - return $twig; -} - -function getRoutes(): AltoRouter { - global $basePath; - - $ar = new AltoRouter(); - $ar->setBasePath($basePath); - - //authentication - $ar->map("GET", "/login", Action::noAuth(fn() => getAuthController()->displayLogin())); - $ar->map("GET", "/register", Action::noAuth(fn() => getAuthController()->displayRegister())); - $ar->map("POST", "/login", Action::noAuth(fn(SessionHandle $s) => getAuthController()->login($_POST, $s))); - $ar->map("POST", "/register", Action::noAuth(fn(SessionHandle $s) => getAuthController()->register($_POST, $s))); - - //user-related - $ar->map("GET", "/", Action::auth(fn(SessionHandle $s) => getUserController()->home($s))); - $ar->map("GET", "/home", Action::auth(fn(SessionHandle $s) => getUserController()->home($s))); - $ar->map("GET", "/settings", Action::auth(fn(SessionHandle $s) => getUserController()->settings($s))); - $ar->map("GET", "/disconnect", Action::auth(fn(MutableSessionHandle $s) => getUserController()->disconnect($s))); - - - //tactic-related - $ar->map("GET", "/tactic/[i:id]/view", Action::auth(fn(int $id, SessionHandle $s) => getVisualizerController()->openVisualizer($id, $s))); - $ar->map("GET", "/tactic/[i:id]/edit", Action::auth(fn(int $id, SessionHandle $s) => getEditorController()->openEditor($id, $s))); - // don't require an authentication to run this action. - // If the user is not connected, the tactic will never save. - $ar->map("GET", "/tactic/new", Action::noAuth(fn() => getEditorController()->createNew())); - $ar->map("GET", "/tactic/new/plain", Action::noAuth(fn(SessionHandle $s) => getEditorController()->createNewOfKind(CourtType::plain(), $s))); - $ar->map("GET", "/tactic/new/half", Action::noAuth(fn(SessionHandle $s) => getEditorController()->createNewOfKind(CourtType::half(), $s))); - - //team-related - $ar->map("GET", "/team/new", Action::auth(fn(SessionHandle $s) => getTeamController()->displayCreateTeam($s))); - $ar->map("POST", "/team/new", Action::auth(fn(SessionHandle $s) => getTeamController()->submitTeam($_POST, $s))); - $ar->map("GET", "/team/search", Action::auth(fn(SessionHandle $s) => getTeamController()->displayListTeamByName($s))); - $ar->map("POST", "/team/search", Action::auth(fn(SessionHandle $s) => getTeamController()->listTeamByName($_POST, $s))); - $ar->map("GET", "/team/[i:id]", Action::auth(fn(int $id, SessionHandle $s) => getTeamController()->displayTeam($id, $s))); - $ar->map("GET", "/team/members/add", Action::auth(fn(SessionHandle $s) => getTeamController()->displayAddMember($s))); - $ar->map("POST", "/team/members/add", Action::auth(fn(SessionHandle $s) => getTeamController()->addMember($_POST, $s))); - $ar->map("GET", "/team/members/remove", Action::auth(fn(SessionHandle $s) => getTeamController()->displayDeleteMember($s))); - $ar->map("POST", "/team/members/remove", Action::auth(fn(SessionHandle $s) => getTeamController()->deleteMember($_POST, $s))); - - return $ar; -} - -function runMatch($match, MutableSessionHandle $session): HttpResponse { - global $basePath; - if (!$match) { - return ViewHttpResponse::twig("error.html.twig", [ - 'failures' => [ValidationFail::notFound("Could not find page {$_SERVER['REQUEST_URI']}.")], - ], HttpCodes::NOT_FOUND); - } - - return App::runAction($basePath . '/login', $match['target'], $match['params'], $session); -} - - -//this is a global variable -$basePath = get_public_path(__DIR__); - -App::render(runMatch(getRoutes()->match(), PhpSessionHandle::init()), fn() => getTwig()); diff --git a/outputs/public/jsx-runtime-2e2d9038.js b/outputs/public/jsx-runtime-2e2d9038.js deleted file mode 100644 index bb59471..0000000 --- a/outputs/public/jsx-runtime-2e2d9038.js +++ /dev/null @@ -1,17 +0,0 @@ -function L(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ue(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var u=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,u.get?u:{enumerable:!0,get:function(){return e[r]}})}),n}var j={exports:{}},m={},k={exports:{}},o={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var y=Symbol.for("react.element"),N=Symbol.for("react.portal"),U=Symbol.for("react.fragment"),M=Symbol.for("react.strict_mode"),V=Symbol.for("react.profiler"),q=Symbol.for("react.provider"),B=Symbol.for("react.context"),z=Symbol.for("react.forward_ref"),H=Symbol.for("react.suspense"),W=Symbol.for("react.memo"),J=Symbol.for("react.lazy"),w=Symbol.iterator;function Y(e){return e===null||typeof e!="object"?null:(e=w&&e[w]||e["@@iterator"],typeof e=="function"?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,C={};function p(e,t,n){this.props=e,this.context=t,this.refs=C,this.updater=n||g}p.prototype.isReactComponent={};p.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};p.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function P(){}P.prototype=p.prototype;function S(e,t,n){this.props=e,this.context=t,this.refs=C,this.updater=n||g}var E=S.prototype=new P;E.constructor=S;x(E,p.prototype);E.isPureReactComponent=!0;var O=Array.isArray,I=Object.prototype.hasOwnProperty,R={current:null},D={key:!0,ref:!0,__self:!0,__source:!0};function T(e,t,n){var r,u={},c=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(c=""+t.key),t)I.call(t,r)&&!D.hasOwnProperty(r)&&(u[r]=t[r]);var f=arguments.length-2;if(f===1)u.children=n;else if(1tactics->getAll($session->getAccount()->getId()); + $results = $this->tactics->getAll($session->getAccount()->getUser()->getId()); return ViewHttpResponse::twig("display_tactic.html.twig", ['tactics' => $results]); } public function displayTeam(int $tacticId, SessionHandle $session): ViewHttpResponse { - $results = $this->teams->getAll($session->getAccount()->getId()); + $results = $this->teams->getAll($session->getAccount()->getUser()->getId()); return ViewHttpResponse::twig("display_user_teams.html.twig", ['teams' => $results, 'tactic' => $tacticId]); } public function displayShareConfirmation(int $tacticId, int $teamId, SessionHandle $session) : ViewHttpResponse { - $team = $this->teams->getTeam($teamId); - $tactic = $this->tactics->get($tacticId); return ViewHttpResponse::twig("display_share_confirmation.html.twig", ['team' => $teamId, 'tactic' => $tacticId]); } - public function shareTacticToTeam(array $confirmation, int $tacticId, int $teamId, SessionHandle $session) : \IQBall\Core\Http\HttpResponse + public function shareTacticToTeam(array $confirmation, int $tacticId, int $teamId, SessionHandle $session) : HttpResponse { - if($confirmation['confirmation'] == "no") { - return ViewHttpResponse::redirect("/"); + if($confirmation['confirmation'] == "yes") { + $this->teams->shareTacticToTeam($teamId, $tacticId); } - $this->teams->shareTacticToTeam($teamId, $tacticId); return ViewHttpResponse::redirect("/"); } } diff --git a/src/App/Controller/UserController.php b/src/App/Controller/UserController.php index 6f56128..8755115 100644 --- a/src/App/Controller/UserController.php +++ b/src/App/Controller/UserController.php @@ -38,6 +38,16 @@ class UserController { if ($this->teams != null) { $teams = $this->teams->getAll($user->getId()); + + $allTacticsSharedTeam = $this->tactics->getAllTacticSharedTeam($user->getId()); + if(isset($allTacticsSharedTeam)) { + foreach ($allTacticsSharedTeam as $tactic) { + if(!in_array($tactic, $allTactics)) { + array_push($allTactics, $tactic); + } + } + } + var_dump($allTactics); } else { $teams = []; } diff --git a/src/Core/Gateway/TacticInfoGateway.php b/src/Core/Gateway/TacticInfoGateway.php index 271d4af..a534bb7 100644 --- a/src/Core/Gateway/TacticInfoGateway.php +++ b/src/Core/Gateway/TacticInfoGateway.php @@ -43,9 +43,9 @@ class TacticInfoGateway { * Return the nb last tactics created * * @param integer $nb - * @return array> + * @return TacticInfo[] | null */ - public function getLast(int $nb, int $ownerId): ?array { + public function getLastOwnedBy(int $nb, int $ownerId): ?array { $res = $this->con->fetch( "SELECT * FROM Tactic @@ -59,15 +59,15 @@ class TacticInfoGateway { if (count($res) == 0) { return []; } - return $res; + return array_map(fn(array $row) => $this->rowToTacticInfo($row), $res); } /** * Get all the tactics of the owner * - * @return array> + * @return TacticInfo[] | null */ - public function getAll(int $ownerId): ?array { + public function getAllOwnedBy(int $ownerId): ?array { $res = $this->con->fetch( "SELECT * FROM Tactic @@ -80,13 +80,18 @@ class TacticInfoGateway { if (count($res) == 0) { return []; } - return $res; + return array_map(fn(array $row) => $this->rowToTacticInfo($row), $res); } + /** + * @param int $ownerId + * @return TacticInfo[]|null + */ public function getAllTacticSharedTeam(int $ownerId): ?array { $res = $this->con->fetch( - "SELECT * FROM TacticSharedTeam - WHERE id_team = :ownerId", + "SELECT t.* FROM Tactic t, TacticSharedTeam ts, Member m + WHERE ts.id_team = m.id_team AND ts.id_tactic = t.id + AND m.id_user = :ownerId", [ ":ownerId" => [$ownerId, PDO::PARAM_INT] ] @@ -94,12 +99,16 @@ class TacticInfoGateway { if (count($res) == 0) { return []; } - return $res; + return array_map(fn(array $row) => $this->rowToTacticInfo($row), $res); } + /** + * @param int $ownerId + * @return TacticInfo[]|null + */ public function getAllTacticSharedAccount(int $ownerId): ?array { $res = $this->con->fetch( - "SELECT * FROM TacticSharedTeam + "SELECT * FROM TacticSharedAccount WHERE id_account = :ownerId", [ ":ownerId" => [$ownerId, PDO::PARAM_INT] @@ -108,7 +117,7 @@ class TacticInfoGateway { if (count($res) == 0) { return []; } - return $res; + return array_map(fn(array $row) => $this->rowToTacticInfo($row), $res); } /** @@ -158,4 +167,9 @@ class TacticInfoGateway { ]); return $stmnt->rowCount() == 1; } + + private function rowToTacticInfo(array $row) : TacticInfo { + $type = CourtType::fromName($row['court_type']); + return new TacticInfo($row['id'], $row["name"], strtotime($row["creation_date"]), $row["owner"], $type, $row['content']); + } } diff --git a/src/Core/Gateway/TeamGateway.php b/src/Core/Gateway/TeamGateway.php index 7d376e5..bb96d34 100644 --- a/src/Core/Gateway/TeamGateway.php +++ b/src/Core/Gateway/TeamGateway.php @@ -37,8 +37,8 @@ class TeamGateway { $this->con->exec( "INSERT INTO TacticSharedTeam(id_team, id_tactic) VALUES(:teamId, :tacticId)", [ - ":id_team" => [$teamId, PDO::PARAM_INT], - ":id_tactic" => [$tacticId, PDO::PARAM_INT], + ":teamId" => [$teamId, PDO::PARAM_INT], + ":tacticId" => [$tacticId, PDO::PARAM_INT], ] ); return intval($this->con->lastInsertId()); diff --git a/src/Core/Model/TacticModel.php b/src/Core/Model/TacticModel.php index 7c801fc..dfcfb9c 100644 --- a/src/Core/Model/TacticModel.php +++ b/src/Core/Model/TacticModel.php @@ -67,7 +67,7 @@ class TacticModel { * @return array> */ public function getLast(int $nb, int $ownerId): array { - return $this->tactics->getLast($nb, $ownerId); + return $this->tactics->getLastOwnedBy($nb, $ownerId); } /** @@ -77,10 +77,11 @@ class TacticModel { * @return array> */ public function getAll(int $ownerId): ?array { - return $this->tactics->getAll($ownerId); + return $this->tactics->getAllOwnedBy($ownerId); } - public function getAllTacticSharedTeam(int $ownerId) : ?array { + public function getAllTacticSharedTeam(int $ownerId) : ?array + { return $this->tactics->getAllTacticSharedTeam($ownerId); } @@ -88,10 +89,6 @@ class TacticModel { return $this->tactics->getAllTacticSharedAccount($ownerId); } - public function shareTacticToAccount(int $accountId, int $tacticId) { - return $this->tactics->shareTacticToAccount($accountId, $tacticId); - } - /** * Update the name of a tactic * @param int $id the tactic identifier