{"version":3,"file":"js/front-welcome-route-a032ced73216f1653f86.chunk.js","mappings":"0IAGMA,EAA+B,SAAHC,GAAkC,IAA7BC,EAAMD,EAANC,OAAQC,EAAKF,EAALE,MAAOC,EAAQH,EAARG,SAGpD,OAFAC,EAAAA,EAAAA,GAAgBH,EAAQC,EAAOC,GAExB,IACT,EAEA,KAAeE,EAAAA,EAAAA,MAAKN,E,omDCCpB,IAAMO,GAAyBD,EAAAA,EAAAA,OAAKE,EAAAA,EAAAA,IAAcC,EAAA,SAAAC,GAAA,SAAAH,IAAA,IAAAI,G,4FAAAC,CAAC,KAADL,GAAA,QAAAM,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GA4F/C,OA5F+CP,EAAAQ,EAAC,KAADZ,EAAA,GAAAa,OAAAJ,KAmEhDK,UAAY,WACV,IAAOC,EAAQX,EAAKY,GAAbD,KACPE,EAAuDb,EAAKc,MAArDC,EAASF,EAATE,UAAWC,EAAUH,EAAVG,WAAYC,EAAKJ,EAALI,MAAOC,EAAIL,EAAJK,KAAMC,EAAQN,EAARM,SAEvCJ,GAAaC,GAAcC,GAAO,IAAIG,EAAAA,EAAW,CAACC,UAASrB,IAASgB,aAAY,QAAAM,EAAAnB,UAAAC,OAJtEmB,EAAI,IAAAjB,MAAAgB,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAArB,UAAAqB,GAKdb,GAAQO,GAAMP,EAAKc,SAASP,EAAMK,EAAK,GAAGG,OAAOC,SACjDR,GAAUA,EAAQS,WAAC,EAAGL,EAC5B,EAACvB,EAED6B,eAAiB,SAACN,GAChB,IAAMO,GAAWC,EAAAA,EAAAA,IAAI/B,EAAO,QAAS,aAAc,OAEnD,GAAK8B,EAASE,QAAd,CAKA,IAAOjB,GAAakB,EAAAA,EAAAA,IAAKjC,EAAKc,MAAO,aAA9BC,UACDmB,GAAWH,EAAAA,EAAAA,IAAKR,EAAM,SACtBY,GAAiBJ,EAAAA,EAAAA,IAAKD,EAAU,UAAW,WAC3CM,EAAWF,EAASG,cAActB,GAEpCoB,GAAkBC,IACpBN,EAASE,QAAQL,QAAUS,EAR7B,CAUF,EAACpC,CAAA,Q,qRAAAsC,CAAA1C,EAAAG,G,EAAAH,E,EAAA,EAAA2C,IAAA,QAAAC,MArED,WACEC,KAAK9B,MAAO+B,EAAAA,EAAAA,KACd,GAAC,CAAAH,IAAA,SAAAC,MAED,WACE,IAAAG,EAgBIF,KAAK3B,MAdP8B,GADSD,EAAT5B,UACW4B,EAAXC,aACA5B,EAAU2B,EAAV3B,WAGA6B,GAFOF,EAAPhB,QACcgB,EAAdG,eACYH,EAAZE,cAEAE,GADEJ,EAAFK,GACUL,EAAVI,YAEA9B,GADQ0B,EAARb,SACKa,EAAL1B,OAGAgC,GAFIN,EAAJzB,KACQyB,EAARxB,SACSwB,EAATM,WAEGC,GADQP,EAAXQ,Y,qWACYC,CAAAT,EAAAU,IAGd,OACEC,EAAAC,cAAAD,EAAAE,SAAA,KACGZ,GAAe3B,GACdqC,EAAAC,cAACE,EAAAA,EAAY,CAACxC,MAAOA,EAAOyC,WAAW3B,EAAAA,EAAAA,IAAKU,KAAM,oBAEnDQ,GAAaF,EAAW7B,MACvBoC,EAAAC,cAAA,SAAOV,aAAa,IAAI3B,KAAM6B,EAAW7B,KAAMyC,KAAK,WAEtDL,EAAAC,cAAA,QAAAK,OAAAC,OAAA,GACMd,EAAU,CACd,oBAAmBH,EACnB,mBAAkB5B,EAClB6B,aAAcA,EACd1B,UAAUY,EAAAA,EAAAA,IAAKU,KAAM,aACrBkB,KAAK,YACDT,IAIZ,I,4FAAC,CAjE+C,CAAsCY,EAAAA,GAAahE,EAC5FiE,aAAe,CACpBnB,aAAa,EACb5B,YAAY,EACZ6B,aAAc,EACdI,WAAW,GACZnD,EAEMkE,UAAY,CACjBjD,UAAWkD,IAAAA,OACXrB,YAAaqB,IAAAA,KAAeC,WAC5BlD,WAAYiD,IAAAA,KAAeC,WAC3BpB,eAAgBmB,IAAAA,KAChBpB,aAAcoB,IAAAA,KACdjB,GAAIiB,IAAAA,OACJnC,SAAUmC,IAAAA,OACVhD,MAAOgD,IAAAA,OACP/C,KAAM+C,IAAAA,OACNE,SAAUF,IAAAA,KACVG,uBAAwBH,IAAAA,KACxBhB,UAAWgB,IAAAA,MACZnE,KA2EH,KAAeuE,EAAAA,EAAAA,GAAazE,EAAwB,CAAC+D,KAAM,Y,+2CC1GxB,IAEdW,EAAI,SAAAC,GAAA,SAAAD,IAAA,IAAAtE,G,4FAAAC,CAAA,KAAAqE,GAAA,QAAApE,EAAAC,UAAAC,OAAAmB,EAAA,IAAAjB,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAgB,EAAAhB,GAAAJ,UAAAI,GAuBtB,OAvBsBP,EAAAQ,EAAA,KAAA8D,EAAA,GAAA7D,OAAAc,KASvBiD,cAAgB,SAACC,GACa,IAA5B,IAAOC,EAAW1E,EAAKc,MAAhB4D,QAAqBpD,EAAAnB,UAAAC,OADPuE,EAAQ,IAAArE,MAAAgB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAARmD,EAAQnD,EAAA,GAAArB,UAAAqB,GAK7B,GAFIkD,GAASA,EAAO9C,WAAC,EAAD,CAAC6C,GAAChE,OAAKkE,KAEtBF,EAAEG,mBAAqBH,EAAEI,UAAYJ,EAAEK,QAAS,KAAAC,EACnDN,EAAEO,iBAEF,IAAMC,EAAyC,QAAlCF,EAAGG,WAAWC,4BAAoB,IAAAJ,OAAA,EAA/BA,EAAiCE,QAEjD,IAAKA,EAAS,MAAM,IAAIG,MAAM,0DAE9BH,EAAQI,KAAKrF,EAAKc,MAAMwE,GAC1B,CACF,EAACtF,CAAA,Q,qRAAAsC,CAAAgC,EAAAC,G,EAAAD,E,EAAA,EAAA/B,IAAA,SAAAC,MAtBD,WACE,IAAA3B,EAAoC4B,KAAK3B,MAAlCwE,EAAEzE,EAAFyE,GAAgBpC,GAALrC,EAAP6D,Q,qWAAqBtB,CAAAvC,EAAAwC,IAEhC,OACEC,EAAAC,cAAA,IAAAK,OAAAC,OAAA,CAAG0B,KAAMD,GAAQpC,EAAS,CAAEwB,QAASjC,KAAK+B,gBAE9C,I,4FAAC,CAPsB,CAASgB,EAAAA,c,m5CCFlC,IAAMC,EAAuBnC,EAAMoC,MAAK,kBAAM,wDAAsC,IAC9EC,EAAsBrC,EAAMoC,MAAK,kBAAM,4EAAqC,IAC5EE,EAActC,EAAMoC,MAAK,kBAAM,uCAAkC,IAEvE,UAAe/F,EAAKE,EAAc,SAAAgG,GAAA,SAAAC,IAAA,O,4FAAA7F,CAAC,KAAD6F,GAAAtF,EAAC,KAADsF,EAAA3F,UAAA,Q,qRAAAmC,CAAAwD,EAAAD,G,EAAAC,G,EAAA,EAAAvD,IAAA,SAAAC,MAChC,WACEuD,EAAU,SAEV,IAAMC,EAAcC,IAEpB,OAAIC,EAAQF,EAAa,SAChB1C,EAAAC,cAACkC,EAAoB,MACnBS,EAAQF,EAAa,WAE5B1C,EAAAC,cAAC4C,EAAW,CAACC,UAAU,0BACrB9C,EAAAC,cAACqC,EAAW,CAACS,qBAAmB,KAG3BH,EAAQF,EAAa,WACvB1C,EAAAC,cAACoC,EAAmB,MAGzBrC,EAAAC,cAAA,OAAK6C,UAAU,eAAeE,MAAO,CAACC,MAAO,OAAQC,OAAQ,SAC3DlD,EAAAC,cAAA,OAAK6C,UAAU,0BACb9C,EAAAC,cAACqC,EAAW,CAACS,qBAAmB,KAK1C,M,yFAAC,CAzB+B,CAAkCI,I,qHCIpE,MAAMC,EAAS,IAAI,IAAO,CAACxF,KAAM,8BA4EjC,IAxEwBK,IACtB,MAAMoF,GAAI,QAASpF,GAAQ,CAAC,GACtBqF,EAAQrF,GAAMqF,OAAS,OACvBC,EAAY,WAAU,IAAAC,UAASF,KAErCD,EAAEI,KAAKH,MAAQA,EACfD,EAAEI,KAAKF,UAAYA,EAEnB,MAAMG,GAA6B,IAAAC,cAAYC,UAC7C,MAAM,MAACN,EAAK,UAAEC,GAAaF,EAAEQ,EAE7BT,EAAOU,OAAM,IAAM,WAAWR,mBAE9B,MAAMS,QAAe,IAASrF,UAAUsF,YAAY,kBAAmB,CAACV,UAClE5E,EAAUD,EAAKsF,EAAQ,WAE7B,KAAMR,KAAaF,EAAEY,WAAY,MAAM,IAAInC,MAAM,IAAIyB,6BACjD7E,GAAS,IAAOwF,cAAcxF,GAElC2E,EAAEY,UAAUV,GAAW7E,GAEnB2E,EAAE7F,MAAM2G,qBAAqBC,YAAW,IAAMf,EAAE7F,MAAM2G,oBAAoBzF,IAAU,EAAC,GACxF,IAEG2F,GAAqB,IAAAV,cAAY,KACrC,MAAM,MAACL,EAAK,UAAEC,GAAaF,EAAEQ,EAC7B,IAAInF,EAgBJ,OAdI,IAAOA,UAAU4F,gBAAgBjB,EAAEQ,EAAEP,QACvC5E,EAAU,IAAOA,UAAU6F,gBAAgBjB,GAE3CF,EAAOU,OAAM,IAAM,WAAWR,yBAA6B5E,GAASgB,UAC3D,IAAOhB,UAAU8F,sBAAsBlB,KAChD5E,EAAU,IAAO6E,KAEjBH,EAAOU,OAAM,IAAM,WAAWR,gCAAoC5E,GAASgB,UAGzEhB,GAAW2E,EAAE7F,MAAM2G,qBACrBC,YAAW,IAAMf,EAAE7F,MAAM2G,oBAAoBzF,IAAU,GAGlDA,IACN,IAEG+F,EAAoB,CAAC,EAE3BA,EAAkBlB,GAAa,IAAMc,IAErChB,EAAEqB,UAAUD,GAEZ,MAAME,GAAoB,IAAAhB,cAAY,KACpC,MAAMiB,EAAoB,CAAC,EAE3BA,EAAkBvB,EAAEQ,EAAEN,WAAa,IAAOF,EAAEQ,EAAEN,aAE9CF,EAAEwB,IAAID,EAAiB,GACtB,IAYH,OAVA,IAAAE,UAAQ,KACD,IAAOpG,UAAU8F,sBAAsBnB,EAAEQ,EAAEP,QAAW,IAAO5E,UAAU4F,gBAAgBjB,EAAEQ,EAAEP,SAC9FF,EAAOU,OAAM,IAAM,mCAAmCT,EAAEQ,EAAEP,kCAC1DI,IACF,GACC,KAEH,OAAgB,IAAOzH,SAAU,iBAAkB0I,IACnD,OAAgB,IAAO1I,SAAU,kBAAmB0I,GAE7CtB,EAAEA,EAAEE,EAAS,C,wiDC/EtB,IAAMwB,EAAW,CACfC,KAAM,oBACNC,iBAAkB,GAClBC,wBAAoBC,GAEhBC,EAAa,CAAC,oBAAqB,YAEnCC,EAAc,WAClB,IAAMJ,EAAmBF,EAASE,iBAElCF,EAASE,iBAAmB,GAAE,IAEgBK,EAFhBC,EAAAC,EAEAP,GAAgB,IAA9C,IAAAM,EAAAlC,MAAAiC,EAAAC,EAAAE,KAAAC,MAAgD,CAAtBJ,EAAApG,MACRyG,eAClB,CAAC,OAAAC,GAAAL,EAAApE,EAAAyE,EAAA,SAAAL,EAAAM,GAAA,CACH,EAEqBC,EAAK,WAsBvB,O,EAbD,SAAAA,EAAY/H,GAAsB,IAAArB,EAAA,KAAXqJ,EAAIlJ,UAAAC,OAAA,QAAAqI,IAAAtI,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACF,CAAA,KAAAmJ,GAAA,KAuEhCE,mBAAqB,WACnBtJ,EAAKuJ,eAAgB,EACrBvJ,EAAKwJ,sBACP,EAzEE/G,KAAKgH,YAAcpI,EACnBoB,KAAKiH,iBAAmB,GACxBjH,KAAKkH,cAAgB,EACrBlH,KAAKmH,YAAc,CAAC,EAEC,YAAjBvB,EAASC,WAA0CG,IAApBpH,EAAUwI,QAC3CxI,EAAUwI,MAAQ,CAAC,GAGjBR,GACF5G,KAAKqH,gBAAgBT,GAAM,EAE/B,E,EAwFC,EAAA9G,IAAA,UAAAC,MA7GD,SAAeuH,GACb,IAAKrB,EAAWsB,SAASD,GACvB,MAAM,IAAI3E,MAAM,iBAAD3E,OAAkBsJ,IAGnC1B,EAASC,KAAOyB,CAClB,K,EAeC,EAAAxH,IAAA,MAAAC,MAED,SAAIyH,EAASC,IACPC,EAAAA,EAAAA,IAA4BF,EAASxH,OACnCyH,GACFzH,KAAKiH,iBAAiBrE,KAAK6E,GAG7BzH,KAAKqH,gBAAgBG,GACrBxH,KAAK2H,sBACIF,IACLzH,KAAK8G,cAEP9G,KAAKiH,iBAAiBrE,KAAK6E,GAG3BA,IAGN,GAAC,CAAA3H,IAAA,kBAAAC,MAED,SAAgByH,EAASI,GACvB,IAAIC,EAMJ,IAAK,IAAM/H,KAJPE,KAAKgH,YAAYc,eAAiBF,IACpCC,EAAY1G,OAAOC,OAAO,CAAC,EAAGpB,OAGdwH,EAChBxH,KAAKF,GAAO0H,EAAQ1H,GAGlBE,KAAKgH,YAAYc,eAAiBF,GACpC5H,KAAKgH,YAAYc,aAAaD,EAElC,GAAC,CAAA/H,IAAA,WAAAC,MAED,SAASyH,GAAS,IAAAO,EAAA,KAChB,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAC3B,IACEH,EAAKrC,IAAI8B,EAASS,EACpB,CAAE,MAAME,GACND,EAAOC,EACT,CACF,GACF,GAAC,CAAArI,IAAA,gBAAAC,MAED,WACuB,YAAjB6F,EAASC,KACX7F,KAAKgH,YAAYoB,SACf,CAAClB,cAAelH,KAAKkH,iBACrBlH,KAAK6G,oBAGP7G,KAAKgH,YAAYqB,YAAYrI,KAAK6G,mBAEtC,GAAC,CAAA/G,IAAA,uBAAAC,MAOD,WAAuB,IAC4BuI,EAD5BC,EAAAlC,EACOrG,KAAKiH,kBAAgB,IAAjD,IAAAsB,EAAArE,MAAAoE,EAAAC,EAAAjC,KAAAC,OACEiC,EADsBF,EAAAvI,QAEvB,OAAA0G,GAAA8B,EAAAvG,EAAAyE,EAAA,SAAA8B,EAAA7B,GAAA,CAEG1G,KAAKgH,YAAYyB,gBAAgBzI,KAAKgH,YAAYyB,eAAezI,KAAKmH,aAE1EnH,KAAKmH,YAAchG,OAAOC,OAAO,CAAC,EAAGpB,MACrCA,KAAKiH,iBAAmB,EAC1B,GAAC,CAAAnH,IAAA,qBAAAC,MAED,WACM6F,EAASG,oBACX2C,aAAa9C,EAASG,oBAGxB,IAAM4C,EAAiB/C,EAASE,iBAAiB8C,QAAQ5I,MAErD2I,GAAkB,GACpB/C,EAASE,iBAAiB+C,OAAOF,EAAgB,GAGnD/C,EAASE,iBAAiBlD,KAAK5C,MAC/B4F,EAASG,mBAAqBd,WAAWiB,EAAa,GACtDlG,KAAK8G,eAAgB,CACvB,M,yFAvGC,CAPuB,E,uECjBX,SAASgC,EAAsBlK,EAAWmK,EAAWC,GAClE,OAAI7H,OAAO8H,KAAKF,GAAWpL,QAAUwD,OAAO8H,KAAKrK,EAAUP,OAAOV,YAI9DiB,EAAUwI,OAASjG,OAAO8H,KAAKD,GAAWrL,QAAUwD,OAAO8H,KAAKrK,EAAUwI,OAAOzJ,aAIjF+J,EAAAA,EAAAA,IAA4BqB,EAAWnK,EAAUP,YAIjD2K,GAAcpK,EAAUwI,SAIrBM,EAAAA,EAAAA,IAA4BsB,EAAWpK,EAAUwI,SAC1D,C","sources":["webpack://wooftech/./node_modules/@kaspernj/api-maker/src/event-emitter-listener.jsx","webpack://wooftech/./node_modules/@kaspernj/api-maker/src/inputs/checkbox.jsx","webpack://wooftech/./node_modules/@kaspernj/api-maker/src/link.jsx","webpack://wooftech/./app/javascript/routes/front/welcome-route.jsx","webpack://wooftech/./node_modules/@kaspernj/api-maker/src/use-current-user.mjs","webpack://wooftech/./node_modules/set-state-compare/src/shape.js","webpack://wooftech/./node_modules/set-state-compare/src/should-component-update.js"],"sourcesContent":["import {memo} from \"react\"\nimport useEventEmitter from \"./use-event-emitter.mjs\"\n\nconst ApiMakerEventEmitterListener = ({events, event, onCalled}) => {\n useEventEmitter(events, event, onCalled)\n\n return null\n}\n\nexport default memo(ApiMakerEventEmitterListener)\n","import AutoSubmit from \"./auto-submit.mjs\"\nimport BaseComponent from \"../base-component\"\nimport {digg, digs} from \"diggerize\"\nimport EventUpdated from \"../event-updated\"\nimport inputWrapper from \"./input-wrapper\"\nimport PropTypes from \"prop-types\"\nimport {memo} from \"react\"\nimport {shapeComponent} from \"set-state-compare/src/shape-component.js\"\nimport {useForm} from \"../form\"\n\nconst ApiMakerInputsCheckbox = memo(shapeComponent(class ApiMakerInputsCheckbox extends BaseComponent {\n static defaultProps = {\n autoRefresh: false,\n autoSubmit: false,\n defaultValue: 1,\n zeroInput: true\n }\n\n static propTypes = {\n attribute: PropTypes.string,\n autoRefresh: PropTypes.bool.isRequired,\n autoSubmit: PropTypes.bool.isRequired,\n defaultChecked: PropTypes.bool,\n defaultValue: PropTypes.node,\n id: PropTypes.string,\n inputRef: PropTypes.object,\n model: PropTypes.object,\n name: PropTypes.string,\n onErrors: PropTypes.func,\n onMatchValidationError: PropTypes.func,\n zeroInput: PropTypes.bool\n }\n\n setup() {\n this.form = useForm()\n }\n\n render () {\n const {\n attribute,\n autoRefresh,\n autoSubmit,\n checked,\n defaultChecked,\n defaultValue,\n id,\n inputProps,\n inputRef,\n model,\n name,\n onChange,\n zeroInput,\n wrapperOpts,\n ...restProps\n } = this.props\n\n return (\n <>\n {autoRefresh && model &&\n \n }\n {zeroInput && inputProps.name &&\n \n }\n \n \n )\n }\n\n onChanged = (...args) => {\n const {form} = this.tt\n const {attribute, autoSubmit, model, name, onChange} = this.props\n\n if (attribute && autoSubmit && model) new AutoSubmit({component: this}).autoSubmit()\n if (form && name) form.setValue(name, args[0].target.checked)\n if (onChange) onChange(...args)\n }\n\n onModelUpdated = (args) => {\n const inputRef = digg(this, \"props\", \"inputProps\", \"ref\")\n\n if (!inputRef.current) {\n // This can happen if the component is being unmounted\n return\n }\n\n const {attribute} = digs(this.props, \"attribute\")\n const newModel = digg(args, \"model\")\n const currentChecked = digg(inputRef, \"current\", \"checked\")\n const newValue = newModel.readAttribute(attribute)\n\n if (currentChecked != newValue) {\n inputRef.current.checked = newValue\n }\n }\n}))\n\nexport {ApiMakerInputsCheckbox as Checkbox}\nexport default inputWrapper(ApiMakerInputsCheckbox, {type: \"checkbox\"})\n","import {PureComponent} from \"react\"\n\nexport default class Link extends PureComponent {\n render() {\n const {to, onClick, ...restProps} = this.props\n\n return (\n \n )\n }\n\n onLinkClicked = (e, ...restArgs) => {\n const {onClick} = this.props\n\n if (onClick) onClick(e, ...restArgs)\n\n if (!e.defaultPrevented && !e.ctrlKey && !e.metaKey) {\n e.preventDefault()\n\n const history = globalThis.apiMakerConfigGlobal?.history\n\n if (!history) throw new Error(\"History hasn't been set in the API maker configuration\")\n\n history.push(this.props.to)\n }\n }\n}\n","const RoutesAdminDashboard = React.lazy(() => import(\"routes/admin/dashboard-route\"))\nconst RoutesUserDashboard = React.lazy(() => import(\"routes/user/dashboard-route\"))\nconst UsersSignIn = React.lazy(() => import(\"components/users/sign-in\"))\n\nexport default memo(shapeComponent(class RoutesFrontWelcome extends ShapeComponent {\n render() {\n setLayout(\"front\")\n\n const currentUser = useCurrentUser()\n\n if (isUserA(currentUser, \"admin\")) {\n return \n } else if (isUserA(currentUser, \"student\")) {\n return (\n \n \n \n )\n } else if (isUserA(currentUser, \"teacher\")) {\n return \n } else {\n return (\n
\n
\n \n
\n
\n )\n }\n }\n}))\n","import {useCallback, useMemo} from \"react\"\nimport {camelize} from \"inflection\"\nimport Devise from \"./devise.mjs\"\nimport Logger from \"./logger.mjs\"\nimport Services from \"./services.mjs\"\nimport useEventEmitter from \"./use-event-emitter.mjs\"\nimport useShape from \"set-state-compare/src/use-shape.js\"\n\nconst logger = new Logger({name: \"ApiMaker / useCurrentUser\"})\n\n// logger.setDebug(true)\n\nconst useCurrentUser = (args) => {\n const s = useShape(args || {})\n const scope = args?.scope || \"user\"\n const scopeName = `current${camelize(scope)}`\n\n s.meta.scope = scope\n s.meta.scopeName = scopeName\n\n const loadCurrentUserFromRequest = useCallback(async () => {\n const {scope, scopeName} = s.m\n\n logger.debug(() => `Loading ${scope} with request`)\n\n const result = await Services.current().sendRequest(\"Devise::Current\", {scope})\n const current = digg(result, \"current\")\n\n if (!(scopeName in s.setStates)) throw new Error(`'${scopeName}' not found in setStates`)\n if (current) Devise.updateSession(current)\n\n s.setStates[scopeName](current)\n\n if (s.props.onCurrentUserLoaded) setTimeout(() => s.props.onCurrentUserLoaded(current), 0)\n }, [])\n\n const defaultCurrentUser = useCallback(() => {\n const {scope, scopeName} = s.m\n let current\n\n if (Devise.current().hasCurrentScope(s.m.scope)) {\n current = Devise.current().getCurrentScope(scope)\n\n logger.debug(() => `Setting ${scope} from current scope: ${current?.id()}`)\n } else if (Devise.current().hasGlobalCurrentScope(scope)) {\n current = Devise[scopeName]()\n\n logger.debug(() => `Setting ${scope} from global current scope: ${current?.id()}`)\n }\n\n if (current && s.props.onCurrentUserLoaded) {\n setTimeout(() => s.props.onCurrentUserLoaded(current), 0)\n }\n\n return current\n }, [])\n\n const useStatesArgument = {}\n\n useStatesArgument[scopeName] = () => defaultCurrentUser()\n\n s.useStates(useStatesArgument)\n\n const updateCurrentUser = useCallback(() => {\n const setStatesArgument = {}\n\n setStatesArgument[s.m.scopeName] = Devise[s.m.scopeName]()\n\n s.set(setStatesArgument)\n }, [])\n\n useMemo(() => {\n if (!Devise.current().hasGlobalCurrentScope(s.m.scope) && !Devise.current().hasCurrentScope(s.m.scope)) {\n logger.debug(() => `Devise hasn't got current scope ${s.m.scope} so loading from request`)\n loadCurrentUserFromRequest()\n }\n }, [])\n\n useEventEmitter(Devise.events(), \"onDeviseSignIn\", updateCurrentUser)\n useEventEmitter(Devise.events(), \"onDeviseSignOut\", updateCurrentUser)\n\n return s.s[scopeName]\n}\n\nexport default useCurrentUser\n","import {simpleObjectValuesDifferent} from \"./diff-utils.js\"\n\nconst settings = {\n mode: \"queuedForceUpdate\",\n renderComponents: [],\n renderLaterTimeout: undefined\n}\nconst validModes = [\"queuedForceUpdate\", \"setState\"]\n\nconst callRenders = () => {\n const renderComponents = settings.renderComponents\n\n settings.renderComponents = []\n\n for (const renderComponent of renderComponents) {\n renderComponent.__shapeRender()\n }\n}\n\nexport default class Shape {\n static setMode(newMode) {\n if (!validModes.includes(newMode)) {\n throw new Error(`Invalid mode: ${newMode}`)\n }\n\n settings.mode = newMode\n }\n\n constructor(component, data = {}) {\n this.__component = component\n this.__stateCallbacks = []\n this.__renderCount = 0\n this.__prevShape = {}\n\n if (settings.mode == \"setState\" && component.state === undefined) {\n component.state = {}\n }\n\n if (data) {\n this.__setDataOnThis(data, true)\n }\n }\n\n set(newData, callback) {\n if (simpleObjectValuesDifferent(newData, this)) {\n if (callback) {\n this.__stateCallbacks.push(callback)\n }\n\n this.__setDataOnThis(newData)\n this.__shapeRenderLater()\n } else if (callback) {\n if (this.renderPending) {\n // There is nothing to render because of the given new data, but a render is pending, so we need to put this in queue to call callbacks in correct order\n this.__stateCallbacks.push(callback)\n } else {\n // Nothing to render and not pending a render - so call callback instantly\n callback()\n }\n }\n }\n\n __setDataOnThis(newData, skipDidUpdate) {\n let prevShape\n\n if (this.__component.shapeUpdated && !skipDidUpdate) {\n prevShape = Object.assign({}, this)\n }\n\n for (const key in newData) {\n this[key] = newData[key]\n }\n\n if (this.__component.shapeUpdated && !skipDidUpdate) {\n this.__component.shapeUpdated(prevShape)\n }\n }\n\n setAsync(newData) {\n return new Promise((resolve, reject) => {\n try {\n this.set(newData, resolve)\n } catch(error) {\n reject(error)\n }\n })\n }\n\n __shapeRender() {\n if (settings.mode == \"setState\") {\n this.__component.setState(\n {__renderCount: this.__renderCount++},\n this.__shapeAfterRender\n )\n } else {\n this.__component.forceUpdate(this.__shapeAfterRender)\n }\n }\n\n __shapeAfterRender = () => {\n this.renderPending = false\n this.__shapeCallCallbacks()\n }\n\n __shapeCallCallbacks() {\n for (const stateCallback of this.__stateCallbacks) {\n stateCallback()\n }\n\n if (this.__component.shapeDidUpdate) this.__component.shapeDidUpdate(this.__prevShape)\n\n this.__prevShape = Object.assign({}, this)\n this.__stateCallbacks = []\n }\n\n __shapeRenderLater() {\n if (settings.renderLaterTimeout) {\n clearTimeout(settings.renderLaterTimeout)\n }\n\n const renderPosition = settings.renderComponents.indexOf(this)\n\n if (renderPosition > -1) {\n settings.renderComponents.splice(renderPosition, 1)\n }\n\n settings.renderComponents.push(this)\n settings.renderLaterTimeout = setTimeout(callRenders, 0)\n this.renderPending = true\n }\n}\n","import {simpleObjectValuesDifferent} from \"./diff-utils.js\"\n\nexport default function shouldComponentUpdate(component, nextProps, nextState) {\n if (Object.keys(nextProps).length != Object.keys(component.props).length) {\n return true\n }\n\n if (component.state && Object.keys(nextState).length != Object.keys(component.state).length) {\n return true\n }\n\n if (simpleObjectValuesDifferent(nextProps, component.props)) {\n return true\n }\n\n if (nextState && !component.state) {\n return true\n }\n\n return simpleObjectValuesDifferent(nextState, component.state)\n}\n"],"names":["ApiMakerEventEmitterListener","_ref","events","event","onCalled","useEventEmitter","memo","ApiMakerInputsCheckbox","shapeComponent","_ApiMakerInputsCheckbox","_BaseComponent","_this","_classCallCheck","_len","arguments","length","_args","Array","_key","_callSuper","concat","onChanged","form","tt","_this$props","props","attribute","autoSubmit","model","name","onChange","AutoSubmit","component","_len2","args","_key2","setValue","target","checked","apply","onModelUpdated","inputRef","digg","current","digs","newModel","currentChecked","newValue","readAttribute","_inherits","key","value","this","useForm","_this$props2","autoRefresh","defaultValue","defaultChecked","inputProps","id","zeroInput","restProps","wrapperOpts","_objectWithoutProperties","_excluded","React","createElement","Fragment","EventUpdated","onUpdated","type","Object","assign","BaseComponent","defaultProps","propTypes","PropTypes","isRequired","onErrors","onMatchValidationError","inputWrapper","Link","_PureComponent","onLinkClicked","e","onClick","restArgs","defaultPrevented","ctrlKey","metaKey","_globalThis$apiMakerC","preventDefault","history","globalThis","apiMakerConfigGlobal","Error","push","to","href","PureComponent","RoutesAdminDashboard","lazy","RoutesUserDashboard","UsersSignIn","_ShapeComponent","RoutesFrontWelcome","setLayout","currentUser","useCurrentUser","isUserA","FrontLayout","className","redirectAfterSignIn","style","width","height","ShapeComponent","logger","s","scope","scopeName","camelize","meta","loadCurrentUserFromRequest","useCallback","async","m","debug","result","sendRequest","setStates","updateSession","onCurrentUserLoaded","setTimeout","defaultCurrentUser","hasCurrentScope","getCurrentScope","hasGlobalCurrentScope","useStatesArgument","useStates","updateCurrentUser","setStatesArgument","set","useMemo","settings","mode","renderComponents","renderLaterTimeout","undefined","validModes","callRenders","_step","_iterator","_createForOfIteratorHelper","n","done","__shapeRender","err","f","Shape","data","__shapeAfterRender","renderPending","__shapeCallCallbacks","__component","__stateCallbacks","__renderCount","__prevShape","state","__setDataOnThis","newMode","includes","newData","callback","simpleObjectValuesDifferent","__shapeRenderLater","skipDidUpdate","prevShape","shapeUpdated","_this2","Promise","resolve","reject","error","setState","forceUpdate","_step2","_iterator2","stateCallback","shapeDidUpdate","clearTimeout","renderPosition","indexOf","splice","shouldComponentUpdate","nextProps","nextState","keys"],"sourceRoot":""}