UNPKG

@lofter-mission/core

Version:

任务体系逻辑SDK - 提供活动数据获取、任务数据预处理和二次包装功能

12 lines (11 loc) 35 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("axios"),require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","axios","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LofterMissionCore={},e.axios,e.React,e.ReactDOM)}(this,(function(e,t,i,n){"use strict";function r(e){return 0===e.missionStatus}function o(e){return 1===e.missionStatus}function s(e){const t=Date.now();return t>=e.activityStartTime&&t<=e.activityEndTime&&0===e.activityStatus}function a(e){const t=Date.now();return t>=e.startTime&&t<=e.endTime&&0===e.status}function c(e){const t=Date.now(),i=e.activityEndTime;return Math.max(0,i-t)}function u(e){if(e<=0)return"已结束";const t=Math.floor(e/1e3),i=Math.floor(t/60),n=Math.floor(i/60),r=Math.floor(n/24);return r>0?`${r}${n%24}小时`:n>0?`${n}小时${i%60}分钟`:i>0?`${i}分钟`:`${t}秒`}function l(e){return e.filter((e=>e.show))}class f{constructor(e){this.missionActivityCode=e.missionActivityCode,this.activityStartTime=e.activityStartTime,this.activityEndTime=e.activityEndTime,this.isActive=e.isActive,this.timeRemaining=e.timeRemaining,this.timeRemainingText=e.timeRemainingText,this.tabList=e.tabList}getTabByType(e){return this.tabList.find((t=>t.tabType===e))}getAllMissions(){const e=[];return this.tabList.forEach((t=>{e.push(...t.missions)})),e}getStepMission(){const e=[];return this.tabList.forEach((t=>{t.missions.forEach((t=>{t.info.stepRewardList&&t.info.stepRewardList.length>0&&e.push(t)}))})),e}isNotStarted(){return Date.now()<this.activityStartTime}isEnded(){return Date.now()>this.activityEndTime}toJSON(){return{missionActivityCode:this.missionActivityCode,activityStartTime:this.activityStartTime,activityEndTime:this.activityEndTime,isActive:this.isActive,timeRemaining:this.timeRemaining,timeRemainingText:this.timeRemainingText,tabList:this.tabList}}}class p{constructor(e){this.activityCode=e.activityCode,this.startTime=e.startTime,this.endTime=e.endTime,this.isActive=e.isActive,this.availablePrizesCount=e.availablePrizesCount,this.items=e.items}getAvailablePrizes(){return this.items.filter((e=>0===e.userStatus))}convertPrize({prizeCode:e,prizeActivityCode:i,step:n,...r}){return t.post("/spread/activity/prize/convert",{...r,prizeCode:e,prizeActivityCode:i,step:n})}getUnavailablePrizes(){return this.items.filter((e=>0!==e.userStatus))}getPrizesByType(e){return this.items.filter((t=>t.type===e))}getPointsPrizes(){return this.getPrizesByType("POINTS")}getGoodsPrizes(){return this.getPrizesByType("GOODS")}getVirtualPrizes(){return this.getPrizesByType("VIRTUAL")}getLotteryPrizes(){return this.getPrizesByType("LOTTERY")}getSkinPrizes(){return this.getPrizesByType("SKIN")}getAvatarBoxPrizes(){return this.getPrizesByType("AVATAR_BOX")}getSlotDressingPrizes(){return this.getPrizesByType("SLOT_DRESSING")}getSlotScheduledPrizes(){return this.getPrizesByType("SLOT_SCHEDULED")}getPrizesByUserStatus(e){return this.items.filter((t=>t.userStatus===e))}getPrizeByCode(e){return this.items.find((t=>t.itemCode===e))}canRedeemPrize(e){const t=this.getPrizeByCode(e);return!!t&&0===t.userStatus}getTotalPrizeCount(){return this.items.length}getMaxedOutPrizeCount(){return this.items.filter((e=>-2===e.userStatus)).length}getTimeRemaining(){const e=Date.now();return Math.max(0,this.endTime-e)}isNotStarted(){return Date.now()<this.startTime}isEnded(){return Date.now()>this.endTime}getTimeRemainingText(){const e=this.getTimeRemaining();if(e<=0)return"已结束";const t=Math.floor(e/1e3),i=Math.floor(t/60),n=Math.floor(i/60),r=Math.floor(n/24);return r>0?`${r}${n%24}小时`:n>0?`${n}小时${i%60}分钟`:i>0?`${i}分钟`:`${t}秒`}hasAvailablePrizes(){return this.availablePrizesCount>0}toJSON(){return{activityCode:this.activityCode,startTime:this.startTime,endTime:this.endTime,isActive:this.isActive,availablePrizesCount:this.availablePrizesCount,items:this.items}}}class d{constructor(e){this.points=e.points,this.pointsIcon=e.pointsIcon,this.hasClaimableMissions=e.hasClaimableMissions,this.nickname=e.nickname,this.avatar=e.avatar,this.blogId=e.blogId}toJSON(){return{points:this.points,pointsIcon:this.pointsIcon,hasClaimableMissions:this.hasClaimableMissions,nickname:this.nickname,avatar:this.avatar,blogId:this.blogId}}}class y{constructor(e,t,i){this.missionActivity=e,this.awardActivity=t,this.userInfo=i}getActivityOverview(){return{"任务活动状态":this.missionActivity.isActive?"进行中":"已结束","任务活动剩余时间":this.missionActivity.timeRemainingText,"奖励活动状态":this.awardActivity.isActive?"进行中":"已结束","用户积分":this.userInfo.points,"可兑换奖品数":this.awardActivity.availablePrizesCount,"是否有新任务":this.userInfo.hasClaimableMissions}}async executeMission(e,t,i){const n={missionCode:e,activityCode:i||"",missionActivityCode:this.missionActivity.missionActivityCode};return await t(n)}getMissionExecuteParams(e,t){return{missionCode:e,activityCode:t||"",missionActivityCode:this.missionActivity.missionActivityCode}}toJSON(){return{missionActivity:this.missionActivity.toJSON(),awardActivity:this.awardActivity.toJSON(),userInfo:this.userInfo.toJSON()}}}async function m(e){var i;(i={missionCode:e.missionCode},t.post("/spread/activity/mission/preCheck",i)).then((i=>{console.log("preCheck data",i);return console.log("share data",i.data.token),t.post("/spread/activity/mission/share",{missionCode:e.missionCode,activityCode:e.activityCode,missionActivityCode:e.missionActivityCode,token:i.data.data.token})}))}var h,v={exports:{}},g={};var b,w={}; /** * @license React * react-jsx-runtime.development.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. */"production"===process.env.NODE_ENV?v.exports=function(){if(h)return g;h=1;var e=i,t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function a(e,i,n){var a,c={},u=null,l=null;for(a in void 0!==n&&(u=""+n),void 0!==i.key&&(u=""+i.key),void 0!==i.ref&&(l=i.ref),i)r.call(i,a)&&!s.hasOwnProperty(a)&&(c[a]=i[a]);if(e&&e.defaultProps)for(a in i=e.defaultProps)void 0===c[a]&&(c[a]=i[a]);return{$$typeof:t,type:e,key:u,ref:l,props:c,_owner:o.current}}return g.Fragment=n,g.jsx=a,g.jsxs=a,g}():v.exports=(b||(b=1,"production"!==process.env.NODE_ENV&&function(){var e,t=i,n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),u=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),p=Symbol.for("react.suspense_list"),d=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen"),h=Symbol.iterator,v=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function g(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];!function(e,t,i){var n=v.ReactDebugCurrentFrame.getStackAddendum();""!==n&&(t+="%s",i=i.concat([n]));var r=i.map((function(e){return String(e)}));r.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,r)}("error",e,i)}function b(e){return e.displayName||"Context"}function C(e){if(null==e)return null;if("number"==typeof e.tag&&g("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case o:return"Fragment";case r:return"Portal";case a:return"Profiler";case s:return"StrictMode";case f:return"Suspense";case p:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case u:return b(e)+".Consumer";case c:return b(e._context)+".Provider";case l:return function(e,t,i){var n=e.displayName;if(n)return n;var r=t.displayName||t.name||"";return""!==r?i+"("+r+")":i}(e,e.render,"ForwardRef");case d:var t=e.displayName||null;return null!==t?t:C(e.type)||"Memo";case y:var i=e,n=i._payload,m=i._init;try{return C(m(n))}catch(e){return null}}return null}e=Symbol.for("react.module.reference");var T,S,P,A,_,k,x,I=Object.assign,O=0;function j(){}j.__reactDisabledLog=!0;var E,R=v.ReactCurrentDispatcher;function N(e,t,i){if(void 0===E)try{throw Error()}catch(e){var n=e.stack.trim().match(/\n( *(at )?)/);E=n&&n[1]||""}return"\n"+E+e}var M,L=!1,D="function"==typeof WeakMap?WeakMap:Map;function $(e,t){if(!e||L)return"";var i,n=M.get(e);if(void 0!==n)return n;L=!0;var r,o=Error.prepareStackTrace;Error.prepareStackTrace=void 0,r=R.current,R.current=null,function(){if(0===O){T=console.log,S=console.info,P=console.warn,A=console.error,_=console.group,k=console.groupCollapsed,x=console.groupEnd;var e={configurable:!0,enumerable:!0,value:j,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}O++}();try{if(t){var s=function(){throw Error()};if(Object.defineProperty(s.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(s,[])}catch(e){i=e}Reflect.construct(e,[],s)}else{try{s.call()}catch(e){i=e}e.call(s.prototype)}}else{try{throw Error()}catch(e){i=e}e()}}catch(t){if(t&&i&&"string"==typeof t.stack){for(var a=t.stack.split("\n"),c=i.stack.split("\n"),u=a.length-1,l=c.length-1;u>=1&&l>=0&&a[u]!==c[l];)l--;for(;u>=1&&l>=0;u--,l--)if(a[u]!==c[l]){if(1!==u||1!==l)do{if(u--,--l<0||a[u]!==c[l]){var f="\n"+a[u].replace(" at new "," at ");return e.displayName&&f.includes("<anonymous>")&&(f=f.replace("<anonymous>",e.displayName)),"function"==typeof e&&M.set(e,f),f}}while(u>=1&&l>=0);break}}}finally{L=!1,R.current=r,function(){if(0===--O){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:I({},e,{value:T}),info:I({},e,{value:S}),warn:I({},e,{value:P}),error:I({},e,{value:A}),group:I({},e,{value:_}),groupCollapsed:I({},e,{value:k}),groupEnd:I({},e,{value:x})})}O<0&&g("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}(),Error.prepareStackTrace=o}var p=e?e.displayName||e.name:"",d=p?N(p):"";return"function"==typeof e&&M.set(e,d),d}function z(e,t,i){if(null==e)return"";if("function"==typeof e)return $(e,!(!(n=e.prototype)||!n.isReactComponent));var n;if("string"==typeof e)return N(e);switch(e){case f:return N("Suspense");case p:return N("SuspenseList")}if("object"==typeof e)switch(e.$$typeof){case l:return $(e.render,!1);case d:return z(e.type,t,i);case y:var r=e,o=r._payload,s=r._init;try{return z(s(o),t,i)}catch(e){}}return""}M=new D;var U=Object.prototype.hasOwnProperty,B={},W=v.ReactDebugCurrentFrame;function F(e){if(e){var t=e._owner,i=z(e.type,e._source,t?t.type:null);W.setExtraStackFrame(i)}else W.setExtraStackFrame(null)}var q=Array.isArray;function V(e){return q(e)}function J(e){return""+e}function K(e){if(function(e){try{return J(e),!1}catch(e){return!0}}(e))return g("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",function(e){return"function"==typeof Symbol&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object"}(e)),J(e)}var Y,X,G,H=v.ReactCurrentOwner,Q={key:!0,ref:!0,__self:!0,__source:!0};function Z(e,t,i,r,o){var s,a={},c=null,u=null;for(s in void 0!==i&&(K(i),c=""+i),function(e){if(U.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return void 0!==e.key}(t)&&(K(t.key),c=""+t.key),function(e){if(U.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return!1}return void 0!==e.ref}(t)&&(u=t.ref,function(e,t){if("string"==typeof e.ref&&H.current&&t&&H.current.stateNode!==t){var i=C(H.current.type);G[i]||(g('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',C(H.current.type),e.ref),G[i]=!0)}}(t,o)),t)U.call(t,s)&&!Q.hasOwnProperty(s)&&(a[s]=t[s]);if(e&&e.defaultProps){var l=e.defaultProps;for(s in l)void 0===a[s]&&(a[s]=l[s])}if(c||u){var f="function"==typeof e?e.displayName||e.name||"Unknown":e;c&&function(e,t){var i=function(){Y||(Y=!0,g("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};i.isReactWarning=!0,Object.defineProperty(e,"key",{get:i,configurable:!0})}(a,f),u&&function(e,t){var i=function(){X||(X=!0,g("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",t))};i.isReactWarning=!0,Object.defineProperty(e,"ref",{get:i,configurable:!0})}(a,f)}return function(e,t,i,r,o,s,a){var c={$$typeof:n,type:e,key:t,ref:i,props:a,_owner:s,_store:{}};return Object.defineProperty(c._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(c,"_self",{configurable:!1,enumerable:!1,writable:!1,value:r}),Object.defineProperty(c,"_source",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.freeze&&(Object.freeze(c.props),Object.freeze(c)),c}(e,c,u,o,r,H.current,a)}G={};var ee,te=v.ReactCurrentOwner,ie=v.ReactDebugCurrentFrame;function ne(e){if(e){var t=e._owner,i=z(e.type,e._source,t?t.type:null);ie.setExtraStackFrame(i)}else ie.setExtraStackFrame(null)}function re(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}function oe(){if(te.current){var e=C(te.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}ee=!1;var se={};function ae(e,t){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var i=function(e){var t=oe();if(!t){var i="string"==typeof e?e:e.displayName||e.name;i&&(t="\n\nCheck the top-level render call using <"+i+">.")}return t}(t);if(!se[i]){se[i]=!0;var n="";e&&e._owner&&e._owner!==te.current&&(n=" It was passed a child from "+C(e._owner.type)+"."),ne(e),g('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',i,n),ne(null)}}}function ce(e,t){if("object"==typeof e)if(V(e))for(var i=0;i<e.length;i++){var n=e[i];re(n)&&ae(n,t)}else if(re(e))e._store&&(e._store.validated=!0);else if(e){var r=function(e){if(null===e||"object"!=typeof e)return null;var t=h&&e[h]||e["@@iterator"];return"function"==typeof t?t:null}(e);if("function"==typeof r&&r!==e.entries)for(var o,s=r.call(e);!(o=s.next()).done;)re(o.value)&&ae(o.value,t)}}function ue(e){var t,i=e.type;if(null!=i&&"string"!=typeof i){if("function"==typeof i)t=i.propTypes;else{if("object"!=typeof i||i.$$typeof!==l&&i.$$typeof!==d)return;t=i.propTypes}if(t){var n=C(i);!function(e,t,i,n,r){var o=Function.call.bind(U);for(var s in e)if(o(e,s)){var a=void 0;try{if("function"!=typeof e[s]){var c=Error((n||"React class")+": "+i+" type `"+s+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[s]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw c.name="Invariant Violation",c}a=e[s](t,s,n,i,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(e){a=e}!a||a instanceof Error||(F(r),g("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",n||"React class",i,s,typeof a),F(null)),a instanceof Error&&!(a.message in B)&&(B[a.message]=!0,F(r),g("Failed %s type: %s",i,a.message),F(null))}}(t,e.props,"prop",n,e)}else void 0===i.PropTypes||ee||(ee=!0,g("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",C(i)||"Unknown"));"function"!=typeof i.getDefaultProps||i.getDefaultProps.isReactClassApproved||g("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}var le={};function fe(t,i,r,h,v,b){var w=function(t){return"string"==typeof t||"function"==typeof t||t===o||t===a||t===s||t===f||t===p||t===m||"object"==typeof t&&null!==t&&(t.$$typeof===y||t.$$typeof===d||t.$$typeof===c||t.$$typeof===u||t.$$typeof===l||t.$$typeof===e||void 0!==t.getModuleId)}(t);if(!w){var T="";(void 0===t||"object"==typeof t&&null!==t&&0===Object.keys(t).length)&&(T+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var S,P=function(e){return void 0!==e?"\n\nCheck your code at "+e.fileName.replace(/^.*[\\\/]/,"")+":"+e.lineNumber+".":""}(v);T+=P||oe(),null===t?S="null":V(t)?S="array":void 0!==t&&t.$$typeof===n?(S="<"+(C(t.type)||"Unknown")+" />",T=" Did you accidentally export a JSX literal instead of a component?"):S=typeof t,g("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",S,T)}var A=Z(t,i,r,v,b);if(null==A)return A;if(w){var _=i.children;if(void 0!==_)if(h)if(V(_)){for(var k=0;k<_.length;k++)ce(_[k],t);Object.freeze&&Object.freeze(_)}else g("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ce(_,t)}if(U.call(i,"key")){var x=C(t),I=Object.keys(i).filter((function(e){return"key"!==e})),O=I.length>0?"{key: someKey, "+I.join(": ..., ")+": ...}":"{key: someKey}";le[x+O]||(g('A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />',O,x,I.length>0?"{"+I.join(": ..., ")+": ...}":"{}",x),le[x+O]=!0)}return t===o?function(e){for(var t=Object.keys(e.props),i=0;i<t.length;i++){var n=t[i];if("children"!==n&&"key"!==n){ne(e),g("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",n),ne(null);break}}null!==e.ref&&(ne(e),g("Invalid attribute `ref` supplied to `React.Fragment`."),ne(null))}(A):ue(A),A}var pe=function(e,t,i){return fe(e,t,i,!1)},de=function(e,t,i){return fe(e,t,i,!0)};w.Fragment=o,w.jsx=pe,w.jsxs=de}()),w);var C,T=v.exports,S=n;if("production"===process.env.NODE_ENV)C=S.createRoot,S.hydrateRoot;else{var P=S.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;C=function(e,t){P.usingClientEntryPoint=!0;try{return S.createRoot(e,t)}finally{P.usingClientEntryPoint=!1}}}const A=({messages:e})=>T.jsx("div",{className:"toast-container",children:e.map((e=>T.jsx("div",{className:"toast-item",style:{"--duration":`${e.duration}ms`},children:e.content},e.id)))});let _=[],k=null,x=null,I=0;const O=()=>{x&&x.render(T.jsx(A,{messages:_}))};function j(e,t=2e3){console.log("toast",e,t),k||(k=document.createElement("div"),k.className="toast-root",document.body.appendChild(k),x=C(k),O());const i=++I;_=[..._,{id:i,content:e,duration:t}],O(),setTimeout((()=>{_=_.filter((e=>e.id!==i)),O()}),t)}var E=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},R=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();navigator.userAgent.match(/NEJSBridge\/([\d.]+)\b/);var N=function(){function e(){E(this,e)}return R(e,[{key:"getLegacyProtocolConfig",value:function(e,t){}},{key:"getComputedUrl",value:function(e){return/^[\w0-9]+:\/\//.test(e)?e:this.schemaName_+"://"+e}}]),e}();Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;!function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},i=0;i<10;i++)t["_"+String.fromCharCode(i)]=i;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(e){n[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()||Object.assign;var M={};window.addEventListener&&window.addEventListener("pageshow",(function(e){if(e.persisted||window.performance&&2===window.performance.navigation.type)for(var t in M)"function"==typeof M[t]&&M[t]()}),!1);var L=function(){var e=function(){var e=navigator.userAgent;if(!e.match(/(iPhone|iPad)/)&&!e.match(/Android/))return!1;var t=null;if(e.match(/(iPhone|iPad)/)?t=e.match(/\bLofter-iPhone ([.0-9]+)\b/i):e.match(/Android/)&&(t=e.match(/\bLofter-android\/([.0-9]+)\b/i)),!t)return!1;var i=t[1].split(".");return{mainVersion:parseInt(i[0],10),subVersion:parseInt(i[1],10)}}();return!!e&&(e.mainVersion>2||2===e.mainVersion&&e.subVersion>=4)},D=function(e){var t=L(),i=void 0,n={},r={};if("webview"===e.path)i=1,n.url=e.query.url,e.query.auth&&(n.auth=e.query.auth),e.query.title&&(n.title=e.query.title),r.url=e.query.url;var o="necomics://manhua.163.com/v1";return n.action=i,t?{path:o,query:n}:(r.actionUrl=o+"?"+function(e){if("string"==typeof e)return e;var t,i=[];for(t in e)e.hasOwnProperty(t)&&i.push(t+"="+encodeURIComponent(e[t]));return i.join("&")}(n),{path:"shareCallback",query:r})};!function(e){function t(){E(this,t);var e=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.schemaName_="neteaselofter",e}(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)})(t,e),R(t,[{key:"isInApp",value:function(){return-1!==navigator.userAgent.indexOf("Lofter")}},{key:"getLegacyProtocolConfig",value:function(e,t){switch(e){case"saveShareContent":return{actionName:"saveShareContent",data:t||{}};case"showMenu":return{actionName:"showMenu"};case"hideActionMenu":return{actionName:"hideActionMenu"};case"saveImage":return{actionName:"saveImage",data:t||{}};case"pickAndUploadPhoto":return{actionName:"pickAndUploadPhoto",data:t||null};case"isSupportWXPaySDK":return{actionName:"isSupportWXPaySDK"};case"openSystemConfig":return{actionName:"openSystemConfig"};case"setLofterBackUrl":return{actionName:"setLofterBackUrl",data:t.url?t.url:"https://www.lofter.com/market/fe/home/homePage.html"};case"njb_setPageTitle":return{actionName:"njb_setPageTitle",data:t||{title:"乐乎市集"}};case"refreshMainPageWhenClose":return{actionName:"refreshMainPageWhenClose"};case"triggerLofterPaySDK":return{actionName:"triggerLofterPaySDK",data:t||{}};case"updateCurrentUrl":return{actionName:"updateCurrentUrl",data:t.url?t.url:"https://www.lofter.com/market/fe/home/homePage.html"};case"njb_login":return{actionName:"njb_login",data:{callback:t.callback}};case"njb_updateClient":return{actionName:"njb_updateClient"};case"njb_closeCurrentWebview":return{actionName:"njb_closeCurrentWebview"};case"njb_share":return{actionName:"njb_share",data:t||{}};case"njb_getAppLog":return{actionName:"njb_getAppLog"};case"njb_providePullDownRefresh":return{actionName:"njb_providePullDownRefresh",data:!!t&&t.provide};case"njb_reportLogToApp":return{actionName:"njb_reportLogToApp",data:"["+(t.page?t.page:location.href)+"] "+(t.timing||"")+": "+(t.log||"no log info.")};case"pageRedirect":return{data:D(t)}}}}])}(N);var $=navigator.userAgent;async function z({missionItem:e}){var i,n;const r=null===(i=e.context)||void 0===i?void 0:i.activityCode;if(!r)return void console.error("Browse mission missing activityCode",e);const o=null===(n=e.context)||void 0===n?void 0:n.missionActivityCode;if(!o)return void console.error("Browse mission missing missionActivityCode",e);const s=e.info;try{const{data:e}=await function(e){return t.post("/spread/activity/mission/preCheck",e).then((e=>e.data))}({missionCode:s.code}),{token:i,url:n,browseTime:c}=e;if(n&&i&&null!=c){let e=n;if(c>0){const t=`lofter_card_browseMission_${s.code}`,a={type:"browse",missionCode:s.code,activityCode:r,missionActivityCode:o,token:i,browseTime:c,url:n};localStorage.setItem(t,JSON.stringify(a)),e=`${n}${n.indexOf("?")>=0?"&":"?"}type=browse&missionCode=${s.code}`}else await(a={missionCode:s.code,actionLinkUrl:n,token:i,activityCode:r,missionActivityCode:o},function(e){return t.post("/spread/activity/mission/browse",e).then((e=>e.data))}(a).then((e=>200===e.code?e:Promise.reject(e))));if(/lofter/i.test($)){const t=function(e){return"string"==typeof e&&/^http(s)?:\/\/([\w.-]*\.)?(lofter|163|126|yeah|188|youdao|netease)\.com(\/|$)/.test(e)}(n)?"true":"false";location.href=`lofter://webview?url=${encodeURIComponent(e)}&inside=${t}`}else location.href=e}else console.error("Browse mission data missing",s)}catch(e){console.error("Get browse mission detail failed",s,e)}var a}class U{constructor(e,t){this.missionInfo={...e},this.executionContext=t}get info(){return this.missionInfo}get showMissionType(){return this.missionInfo.showMissionType}get status(){return this.missionInfo.missionStatus}get progress(){return{current:this.missionInfo.currentProgress,total:this.missionInfo.totalProgress}}get isVisible(){return this.missionInfo.show&&this.missionInfo.channelShow}get isClaimable(){return r(this.missionInfo)}get isCompleted(){return o(this.missionInfo)}get progressPercentage(){return 0===this.missionInfo.totalProgress?0:Math.min(this.missionInfo.currentProgress/this.missionInfo.totalProgress*100,100)}get progressText(){return`${this.missionInfo.currentProgress}/${this.missionInfo.totalProgress}`}get highlightedTitle(){if(!this.missionInfo.highlightWords||0===this.missionInfo.highlightWords.length)return this.missionInfo.title;let e=this.missionInfo.title;return this.missionInfo.highlightWords.forEach((t=>{e=e.replace(/#/g,t)})),e}get context(){return this.executionContext}setExecutionContext(e){this.executionContext=e}executeByShowMissionType(e){const t=e[this.showMissionType];return t?t():void 0}getShowMissionTypeName(){return{1:"签到",2:"分享",3:"浏览",4:"抽卡",5:"累计抽卡",6:"聊聊评论",7:"晒卡",8:"邀请任务",9:"系统自动完成",10:"卡牌升级",11:"发文任务",12:"创作新设定作品-点击前往",13:"投稿作品单篇热度-点击前往",14:"标签文章下推荐",15:"投稿单篇作品数据",16:"投稿作品累计数据",17:"投稿作品回礼",18:"关注任务",19:"评论",20:"划线甜虐",21:"划线评",22:"圈评",23:"广告任务",24:"发送弹幕",25:"发布话题",26:"标签下文章点赞",27:"口令邀请",28:"集齐换装部件"}[this.showMissionType]||"未知任务类型"}async executeTask(e){if(!this.executionContext)throw new Error("执行上下文未设置,无法执行任务");return e?await e(this.executionContext,this.showMissionType):await this.executeByShowMissionTypeAsync(this.executionContext,this.showMissionType)}async executeByShowMissionTypeAsync(e,i){const{missionCode:n,activityCode:r,missionActivityCode:o}=e;switch(i){case 1:return await this.executeSignInMission(n,r,o);case 2:return await m({missionCode:n,activityCode:r,missionActivityCode:o}),{needRefresh:!0};case 3:return console.log("浏览任务"),await z({missionItem:this}),{needRefresh:!0};case 27:return await(s={missionCode:n,missionActivityCode:o,activityUrl:this.missionInfo.actionLinkUrl},t.post("/spread/mission/getInviteIncantation.json",s)).then((async e=>{console.log("口令邀请任务:",e.data.data.incantation),await this.copyToClipboard(e.data.data.incantation)})),{needRefresh:!0};case 28:return null;default:return console.warn(`未知的任务类型 core都是跳转: ${i}`),window.location.href=this.missionInfo.actionLinkUrl,null}var s}async executeSignInMission(e,i,n){return console.log("执行签到任务:",{missionCode:e,activityCode:i,missionActivityCode:n}),await(r={missionCode:e,activityCode:i,missionActivityCode:n},t.post("/spread/activity/mission/sign",r));var r}async copyToClipboard(e){var t;function i(e){const t=document.createElement("input");t.style.position="fixed",t.style.top="0",t.style.left="0",t.value=e,t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(j("口令复制成功,快去分享给小伙伴吧~"),console.log("口令已复制到剪切板(降级方案):",e)):j("系统版本过低,复制失败")}catch(e){j("复制失败"),console.error("复制到剪切板时出错:",e)}document.body.removeChild(t)}try{(null===(t=navigator.clipboard)||void 0===t?void 0:t.writeText)?navigator.clipboard.writeText(e).then((()=>{console.log("口令已复制到剪切板:",e),j("口令复制成功,快去分享给小伙伴吧~")})).catch((()=>{i(e)})):i(e)}catch(e){j("系统版本过低,复制失败")}}async receiveAward(e){if(!this.executionContext)throw new Error("执行上下文未设置,无法领取奖励");return console.log("领取任务奖励:",this.executionContext),await(i={missionCode:this.executionContext.missionCode,activityCode:this.executionContext.activityCode,missionActivityCode:this.executionContext.missionActivityCode,step:e},t.post("/spread/activity/mission/receiveAward",i));var i}isAutoTask(){return 9===this.showMissionType}updateStatus(e){this.missionInfo.missionStatus=e}updateProgress(e,t){this.missionInfo.currentProgress=e,void 0!==t&&(this.missionInfo.totalProgress=t)}getActionConfig(){return this.missionInfo.actionCopyWriting&&this.missionInfo.actionLinkUrl?{text:this.missionInfo.actionCopyWriting,url:this.missionInfo.actionLinkUrl}:null}toProcessedMissionInfo(){return{...this.missionInfo,isClaimable:this.isClaimable,isCompleted:this.isCompleted,progressText:this.progressText,highlightedTitle:this.highlightedTitle,executionContext:this.executionContext,executeByType:this.executeTask.bind(this)}}}class B{static fromMissionInfo(e,t){return new U(e,t)}static fromMissionInfoList(e,t,i){return e.map((e=>{const n=t&&i?{missionCode:e.code,activityCode:t,missionActivityCode:i}:void 0;return new U(e,n)}))}static fromMissionActivity(e,t){const i=new Map;return e.tabList.forEach((n=>{const r=this.fromMissionInfoList(n.missionInfoList,t,e.missionActivityCode);i.set(n.tabType,r)})),i}static createProcessedMissionItem(e,t,i){const n={missionCode:e.code,activityCode:t,missionActivityCode:i};return new U(e,n)}}class W{static processMission(e,t,i){return B.createProcessedMissionItem(e,t,i)}static processTab(e,t,i){var n;console.log(`处理 Tab: ${e.tabName},原始任务数量:`,(null===(n=e.missionInfoList)||void 0===n?void 0:n.length)||0);const r=l(e.missionInfoList);console.log(`Tab "${e.tabName}" 过滤后的可见任务数量:`,r.length);const o=r.map((e=>this.processMission(e,t,i))),s=o.filter((e=>e.isClaimable)).length,a=o.filter((e=>e.isCompleted)).length;return console.log(`Tab "${e.tabName}" 最终任务数量:`,o.length),{tabName:e.tabName,tabDesc:e.tabDesc,tabType:e.tabType,missions:o,totalCount:o.length,claimableCount:s,completedCount:a,hasClaimableMissions:s>0}}static processActivityData(e){const{missionActivity:t,awardActivity:i,points:n,pointsIcon:r,blogInfo:o}=e.data,l={...t,tabList:t.tabList.map((e=>({...e,missionInfoList:e.missions||e.missionInfoList||[]})))},m=c(l),h=l.tabList.map((e=>this.processTab(e,i.activityCode,l.missionActivityCode))),v=h.some((e=>e.hasClaimableMissions)),g=i.items.filter((e=>0===e.userStatus)).length,b=new f({missionActivityCode:l.missionActivityCode,activityStartTime:l.activityStartTime,activityEndTime:l.activityEndTime,isActive:s(l),timeRemaining:m,timeRemainingText:u(m),tabList:h}),w=new p({activityCode:i.activityCode,startTime:i.startTime,endTime:i.endTime,isActive:a(i),availablePrizesCount:g,items:i.items}),C=new d({points:n,pointsIcon:r,hasClaimableMissions:v,nickname:o.blogNickName,avatar:o.headImage,blogId:o.blogId});return new y(b,w,C)}static async executeByShowMissionType(e,t){const i={code:e.missionCode,showMissionType:t,awardName:"",awardNum:0,title:"",subTitle:"",missionType:1,missionStatus:0,currentProgress:0,totalProgress:1,show:!0,channelShow:!0,showStatus:0,actionCopyWriting:"",actionLinkUrl:"",awardIcon:"",highlightWords:[],stepRewardList:[]},n=new U(i,e);return await n.executeTask()}}class F{constructor(e){"string"==typeof e?this.activityCode=e:(null==e?void 0:e.activityCode)&&(this.activityCode=e.activityCode)}async getProcessedActivityData(e){const t=e||this.activityCode;if(!t)throw new Error("Activity code is required. Please provide it in constructor or method parameter.");const i=await this.getActivityData(t);return W.processActivityData(i)}async getActivityData(e){const i=e||this.activityCode;if(!i)throw new Error("Activity code is required. Please provide it in constructor or method parameter.");return t.get("/spread/mission/overview.json",{params:{activityCode:i}}).then((e=>e.data))}async getMissionToken(e){const i={missionCode:e};return t.post("/spread/mission/detail.json",i,{}).then((e=>e.data))}async getActivityOverview(e){return(await this.getProcessedActivityData(e)).getActivityOverview()}async getAvailablePrizes(e){return(await this.getProcessedActivityData(e)).awardActivity.getAvailablePrizes()}async getUserInfo(e){return(await this.getProcessedActivityData(e)).userInfo}}e.AwardActivity=p,e.MissionActivity=f,e.MissionApiService=F,e.MissionItem=U,e.MissionItemFactory=B,e.MissionProcessor=W,e.ProcessedActivityResult=y,e.UserInfo=d,e.default=F,e.filterVisibleMissions=l,e.formatTimeRemaining=u,e.getActivityStatusText=function(e){switch(e){case-1:return"未开始";case 0:return"进行中";case 1:return"已结束";default:return"未知状态"}},e.getMissionActivityStatusText=function(e){const t=Date.now();return 0!==e.activityStatus?"已结束":t<e.activityStartTime?"未开始":t>e.activityEndTime?"已结束":"进行中"},e.getMissionStatusText=function(e){switch(e){case-1:return"未完成";case 0:return"可领取";case 1:return"已领取";case 2:return"已抢完";default:return""}},e.getMissionTimeRemaining=c,e.isAwardActivityActive=a,e.isMissionActivityActive=s,e.isMissionClaimable=r,e.isMissionCompleted=o,e.isMissionExpired=function(e){return 2===e.missionStatus},Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=index.umd.min.js.map