/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/connect_four_functional@2.0.2-3/dist/bundle.umd.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("fenugreek-collections"),require("graph-curry"),require("game_grid")):"function"==typeof define&&define.amd?define("connect_four_functional",["exports","fenugreek-collections","graph-curry","game_grid"],r):r(n.connect_four_functional=n.connect_four_functional||{},n["fenugreek-collections"],n["graph-curry"],n.game_grid)}(this,function(n,r,e,t){"use strict";var u=t.Node.column,o=t.Node.row,i=t.Node.node,c=t.Node.id,f=Object.assign({},i(),{player:null}),a=function(n,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.assign({},i(n,r),{player:e})},l=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:f).player;return n},s=function(n){return a(u(n),o(n),l(n))},d=function(n){return function(r){return a(u(r),o(r),n)}},p=function(n){return!!n&&null==l(n)},y=function(n){return function(r){return p(r)?d(n)(r):r}},v=function(n){return function(r){return l(n)===l(r)}},m=Object.freeze({node:a,player:l,copy:s,setPlayer:d,isFree:p,claim:y,unClaim:function(n){return d(null)(n)},samePlayer:v,sameID:function(n){return function(r){return c(n)===c(r)}}}),g={name:"",score:0,id:null},h=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return{name:n,score:arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,id:arguments.length>2&&void 0!==arguments[2]?arguments[2]:n}},P=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:g).name;return n},b=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:g).score;return n},N=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:g).id;return n},C=function(n){return function(r){return h(P(r),n,N(r))}},j=function(n){return function(r){return r.id===n}},x=function(n){return function(r){return N(n)===N(r)}},I=x,S=function(n){return function(r){return!I(n)(r)}},_=function(n){return function(r){return x(n)(r)?Object.assign({},r,n):r}},G=C(0),O=Object.freeze({playerInit:g,player:h,name:P,score:b,id:N,copy:function(n){return h(P(n),b(n),N(n))},setName:function(n){return function(r){return h(n,b(r),N(r))}},setID:function(n){return function(r){return h(P(r),b(r),n)}},setScore:C,hasID:j,sameID:x,matches:I,xMatches:S,updatePlayer:_,resetScore:G,incrementScore:function(n){return C(b(n)+1)(n)},decrementScore:function(n){return C(b(n)-1)(n)},claim:function(n){return y(N(n))}}),w=t.Compare.samePos,A=function(n){return r.spread(n).reverse().find(p)},z=function(n){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return r.filter(n)(v({player:e}))}},D=function(n){return function(e){return r.asSet(e).size>n}},F=function(n){return function(e){return r.some(e)(D(n))}},k=function(n){return function(e){return r.filter(e)(D(n))}},q=function(n){return function(r){return function(e){return r(e)?n:e}}},E=function(n){return q(n)(w(n))},M=function(n){return function(e){return r.map(e)(E(n))}},W=Object.freeze({nextFree:function(n){return r.spread(n).find(p)},lastFree:A,hasFree:function(n){return r.some(n)(p)},byPlayer:z,exceeds:D,anyExceed:F,byExcess:k,callIf:function(n){return function(r){return function(e){return r(e)?n(e):e}}},repIf:q,repPos:E,repID:function(n){return q(n)(w(n))},replace:M}),B=function(){function n(n,r){var e=[],t=!0,u=!1,o=void 0;try{for(var i,c=n[Symbol.iterator]();!(t=(i=c.next()).done)&&(e.push(i.value),!r||e.length!==r);t=!0);}catch(n){u=!0,o=n}finally{try{!t&&c.return&&c.return()}finally{if(u)throw o}}return e}return function(r,e){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return n(r,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),T=function(n){if(Array.isArray(n)){for(var r=0,e=Array(n.length);r<n.length;r++)e[r]=n[r];return e}return Array.from(n)},H=e.Graph.graph,J=e.Graph.nodes,K=t.Grid.genNodes,L=t.Components.omniComps,Q=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return K(n,r).map(s)},R=function(n){return function(r){return z(J(n))(N(r))}},U=Object.freeze({genNodes:Q,board:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return H.apply(void 0,T(Q(n,r)))},playerNodes:R,playerGraph:function(n){return function(r){return H.apply(void 0,T(R(n)(r)))}},hasWinComp:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3;return r.some(L(n))(D(e))},winComps:function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3;return k(r)(L(n))}}),V=e.Graph.graph,X=t.Components.omniComps,Y=t.Filter.byCol,Z=[h("player0",0,0),h("player1",0,1)],$=Q(7,6),nn={column:0,nodes:Q(),players:Z,inPlay:!1,min:3},rn=function(){return{players:arguments.length>0&&void 0!==arguments[0]?arguments[0]:Z,nodes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:$,column:arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,inPlay:arguments.length>3&&void 0!==arguments[3]&&arguments[3],min:arguments.length>4&&void 0!==arguments[4]?arguments[4]:3}},en=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn).column;return n},tn=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn).nodes;return n},un=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn).inPlay;return n},on=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn).min;return n},cn=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn).players;return n},fn=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn,r=B(n.players,2),e=r[0];r[1];return e},an=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn,r=B(n.players,2),e=(r[0],r[1]);return e},ln=function(n){return function(r){return rn(cn(r),n,en(r),un(r),on(r))}},sn=function(n){return function(r){return rn(cn(r),tn(r),en(r),!!n,on(r))}},dn=function(n){return function(r){return rn(n,tn(r),en(r),un(r),on(r))}},pn=function(n){return Y(tn(n))(en(n))},yn=function(n){return A(pn(n))},vn=function(n){return sn(!1)(n)},mn=function(n){return un(n)&&!!yn(n)},gn=function(n){return!mn(n)},hn=function(n){return dn([an(n),fn(n)])(n)},Pn=function(n){return function(r){return x(n)(fn(r))}},bn=function(n){return function(r){return z(tn(n))(N(r))}},Nn=function(n){return function(r){return V.apply(void 0,T(bn(n)(r)))}},Cn=function(n){return function(r){return k(1)(X(Nn(n)(r)))}},jn=function(n){return function(r){return F(on(n))(Cn(n)(r))}},xn=function(n){return cn(n).find(jn(n))},In=function(n){return xn(n)?vn(n):n},Sn=function(n){return M(y(N(fn(n)))(yn(n)))(tn(n))},_n=function(n){return gn(n)?n:In(ln(Sn(n))(n))},Gn=function(n){return gn(n)?n:hn(_n(n))},On=function(n){return function(r){return cn(r).some(x(n))}},wn=function(n){return function(r){return dn(cn(r).map(_(n)))(r)}},An=function(n){return function(r){return dn(cn(r).concat(n))(r)}},zn=Object.freeze({game:rn,column:en,nodes:tn,inPlay:un,min:on,players:cn,active:fn,passive:an,setNodes:ln,setColumn:function(n){return function(r){return rn(cn(r),tn(r),n,un(r),on(r))}},setPlayState:sn,setPlayers:dn,setMin:function(n){return function(r){return rn(cn(r),tn(r),en(r),un(r),n)}},copy:function(n){return rn(cn(n),tn(n),en(n),un(n),on(n))},resetGame:function(n){return rn(cn(n))},board:function(n){return V.apply(void 0,T(tn(n)))},colNodes:pn,next:yn,start:function(n){return sn(!0)(n)},stop:vn,canPlay:mn,locked:gn,toggleState:function(n){return sn(!un(n))(n)},togglePlayers:hn,isActive:Pn,playerNodes:bn,actNodes:function(n){return bn(n)(fn(n))},passNodes:function(n){return bn(n)(an(n))},playerGraph:Nn,actGraph:function(n){return Nn(n)(fn(n))},passGraph:function(n){return Nn(n)(an(n))},playerComps:Cn,actComps:function(n){return Cn(n)(fn(n))},passComps:function(n){return Cn(n)(an(n))},isWinner:jn,winner:xn,endIfWon:In,claimSwap:Sn,claimNext:_n,select:Gn,pSelect:function(n){return function(r){return Pn(n)(r)?Gn(r):r}},playerByID:function(n){return function(r){return cn(r).find(j(n))}},findPlr:function(n){return function(r){return cn(r).find(x(n))}},hasPlr:On,mendPlr:wn,pushPlr:An,addPlr:function(n){return function(r){return On(n)(r)?wn(n)(r):An(n)(r)}},rmPlr:function(n){return function(r){return dn(cn(r).filter(S(n)))(r)}}});n.Board=U,n.Filter=W,n.Game=zn,n.Node=m,n.Player=O,Object.defineProperty(n,"__esModule",{value:!0})});
//# sourceMappingURL=bundle.umd.js.map
