react-generic-user 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  /* !/usr/bin/env css
2
- -*- coding: utf-8 -*- */.login{display:grid;grid-gap:20px;grid-gap:var(--w-default-space,20px);gap:20px;gap:var(--w-default-space,20px);grid-template-columns:1fr;margin:0 auto;width:400px}.login .login__status{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#018786;color:var(--mdc-theme-secondary,#018786);font-family:Roboto,sans-serif;font-family:var(--mdc-typography-headline2-font-family,var(--mdc-typography-font-family,Roboto,sans-serif));font-size:3.75rem;font-size:var(--mdc-typography-headline2-font-size,3.75rem);font-weight:300;font-weight:var(--mdc-typography-headline2-font-weight,300);letter-spacing:-.0083333333em;letter-spacing:var(--mdc-typography-headline2-letter-spacing,-.0083333333em);line-height:3.75rem;line-height:var(--mdc-typography-headline2-line-height,3.75rem);text-align:center}.login .login__button,.login .login__name,.login .login__password{visibility:visible}
2
+ -*- coding: utf-8 -*- */.login{display:grid;grid-gap:20px;grid-gap:var(--w-default-space,20px);gap:20px;gap:var(--w-default-space,20px);grid-template-columns:1fr;margin:0 auto;width:400px}.login .login__status{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#018786;color:var(--mdc-theme-secondary,#018786);font-family:Roboto,sans-serif;font-family:var(--mdc-typography-headline2-font-family,var(--mdc-typography-font-family,Roboto,sans-serif));font-size:3.75rem;font-size:var(--mdc-typography-headline2-font-size,3.75rem);font-weight:300;font-weight:var(--mdc-typography-headline2-font-weight,300);letter-spacing:-.0083em;letter-spacing:var(--mdc-typography-headline2-letter-spacing,-.0083em);line-height:3.75rem;line-height:var(--mdc-typography-headline2-line-height,3.75rem);text-align:center}.login .login__button,.login .login__name,.login .login__password{visibility:visible}
@@ -1,9 +1,9 @@
1
- if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import * as __WEBPACK_EXTERNAL_MODULE_clientnode__ from "clientnode";
1
+ if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import { default as __WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__ } from "react-input-material/components/TextInput";
2
+ import { Button as __WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__ } from "@rmwc/button";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_clientnode__ from "clientnode";
2
4
  import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
3
5
  import * as __WEBPACK_EXTERNAL_MODULE_react_generic_tools_67824958__ from "react-generic-tools";
4
6
  import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__ from "react/jsx-runtime";
5
- import { TextInput as __WEBPACK_EXTERNAL_MODULE_react_input_material_bf884f53_TextInput__ } from "react-input-material";
6
- import { Button as __WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__ } from "@rmwc/button";
7
7
  /******/ var __webpack_modules__ = ([
8
8
  /* 0 */,
9
9
  /* 1 */
@@ -17,6 +17,13 @@ module.exports = x({ ["memo"]: function() { return __WEBPACK_EXTERNAL_MODULE_rea
17
17
 
18
18
  /***/ }),
19
19
  /* 2 */
20
+ /***/ (function(__unused_webpack_module, __webpack_exports__) {
21
+
22
+ // extracted by mini-css-extract-plugin
23
+ /* harmony default export */ __webpack_exports__.A = ({"login":"login","loginStatus":"login__status","loginButton":"login__button","loginName":"login__name","loginPassword":"login__password"});
24
+
25
+ /***/ }),
26
+ /* 3 */
20
27
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
21
28
 
22
29
  var x = function(y) {
@@ -26,11 +33,67 @@ var y = function(x) { return function() { return x; }; }
26
33
  module.exports = x({ ["Fragment"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.Fragment; }, ["jsx"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsx; }, ["jsxs"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsxs; } });
27
34
 
28
35
  /***/ }),
29
- /* 3 */,
30
36
  /* 4 */,
31
- /* 5 */,
37
+ /* 5 */
38
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
39
+
40
+
41
+ // EXPORTS
42
+ __webpack_require__.d(__webpack_exports__, {
43
+ sr: function() { return /* binding */ CSS_CLASS_NAMES; },
44
+ WV: function() { return /* binding */ componentFactory; },
45
+ Ay: function() { return /* binding */ components; }
46
+ });
47
+
48
+ // EXTERNAL MODULE: external "clientnode"
49
+ var external_clientnode_ = __webpack_require__(8);
50
+ // EXTERNAL MODULE: external "react"
51
+ var external_react_ = __webpack_require__(1);
52
+ ;// external "react-input-material/components/TextInput"
53
+
54
+ // EXTERNAL MODULE: external "react-generic-tools"
55
+ var external_react_generic_tools_ = __webpack_require__(9);
56
+ ;// external "@rmwc/button"
57
+
58
+ // EXTERNAL MODULE: ./src/style.module.css
59
+ var style_module = __webpack_require__(2);
60
+ // EXTERNAL MODULE: external "react/jsx-runtime"
61
+ var jsx_runtime_ = __webpack_require__(3);
62
+ ;// ./src/components.tsx
63
+ // #!/usr/bin/env babel-node
64
+ // -*- coding: utf-8 -*-
65
+ /** @module index *//* !
66
+ region header
67
+ [Project page](https://tsickert.com/react-generic-user)
68
+
69
+ Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
70
+ endregion
71
+ */// region imports
72
+ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var r,e,o="function"==typeof Symbol?Symbol:{},n=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(o,n,a,i){var u=n&&n.prototype instanceof Generator?n:Generator,f=Object.create(u.prototype);return _regeneratorDefine2(f,"_invoke",function(t,o,n){var a,i,u,f=0,p=n||[],y=!1,G={p:0,n:0,v:r,a:l,f:l.bind(r,4),d:function d(t,e){return a=t,i=0,u=r,G.n=e,c}};function l(t,o){for(i=t,u=o,e=0;!y&&f&&!n&&e<p.length;e++){var n,a=p[e],l=G.p,F=a[2];t>3?(n=F===o)&&(u=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=r):a[0]<=l&&((n=t<2&&l<a[1])?(i=0,G.v=o,G.n=a[1]):l<F&&(n=t<3||a[0]>o||o>F)&&(a[4]=t,a[5]=o,G.n=F,i=0))}if(n||t>1)return c;throw y=!0,o}return function(n,p,F){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&l(p,F),i=p,u=F;(e=i<2?r:u)||!y;){a||(i?i<3?(i>1&&(G.n=-1),l(i,u)):G.n=u:G.v=u);try{if(f=2,a){if(i||(n="next"),e=a[n]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,i<2&&(i=0)}else 1===i&&(e=a.return)&&e.call(a),i<2&&(u=TypeError("The iterator does not provide a '"+n+"' method"),i=1);a=r}else if((e=(y=G.n<0)?u:t.call(o,G))!==c)break}catch(t){a=r,i=1,u=t}finally{f=1}}return{value:e,done:y}}}(o,a,i),!0),f}var c={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}e=Object.getPrototypeOf;var u=[][n]?e(e([][n]())):(_regeneratorDefine2(e={},n,function(){return this}),e),f=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(u);function p(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,GeneratorFunctionPrototype):(r.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(r,a,"GeneratorFunction")),r.prototype=Object.create(f),r}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(f,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,a,"GeneratorFunction"),_regeneratorDefine2(f),_regeneratorDefine2(f,a,"Generator"),_regeneratorDefine2(f,n,function(){return this}),_regeneratorDefine2(f,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:p}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function _slicedToArray(e,i){return _iterableToArrayLimit(e,i)||_unsupportedIterableToArray(e,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(Array.isArray(r)&&(null==e||e===("undefined"!=typeof Symbol&&[][Symbol.iterator])||e===[]["@@iterator"]))return r;if(null!=e){var l,n,i,a,u=[],o=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t){if(Object(e)!==e)return;o=!1}else for(;!(o=(l=i.call(e)).done)&&(u.push(l.value),u.length!==t);o=!0);}catch(r){f=!0,n=r}finally{try{if(!o&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw n}}return u}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)};// endregion
73
+ var CSS_CLASS_NAMES=style_module/* default */.A;/**
74
+ * Creates components to protect content and to log in.
75
+ * NOTE: User hook should either be a "ContextUserHook" or "ReduxUserHook".
76
+ * @param useUser - Hook to retrieve current user.
77
+ * @param routing - Integration of the used routing library.
78
+ * @param routing.Redirect - Component redirecting to given location.
79
+ * @param routing.useLocation - Hook to determine current location.
80
+ * @returns Components.
81
+ */var componentFactory=function componentFactory(useUser,_ref){var Redirect=_ref.Redirect,useLocation=_ref.useLocation;return{/**
82
+ * @param options - Options for given component.
83
+ * @param options.children - Content to render when authenticated.
84
+ * @param options.fallbackLocation - Location to redirect to when
85
+ * authentication was unsuccessful.
86
+ * @param options.loadingFallback - String to show when determining
87
+ * authentication result.
88
+ * @returns An content to be rendered.
89
+ * A wrapper for <Route> that redirects to the login screen if you're
90
+ * not yet authenticated.
91
+ */Authenticated:/*#__PURE__*/(0,external_react_.memo)(function(_ref2){var _fallbackLocation;var children=_ref2.children,fallbackLocation=_ref2.fallbackLocation,_ref2$loadingFallback=_ref2.loadingFallback,loadingFallback=_ref2$loadingFallback===void 0?"loading...":_ref2$loadingFallback;var location=useLocation();var user=useUser();(0,external_react_.useEffect)(function(){if(user.session.authenticated===null)user.authenticate()},[user.session.authenticated]);fallbackLocation=(0,external_react_generic_tools_.useMemorizedValue)(typeof fallbackLocation==="string"?{pathname:fallbackLocation}:fallbackLocation,fallbackLocation);var loginTarget=(0,external_react_generic_tools_.useMemorizedValue)(_objectSpread({},fallbackLocation),fallbackLocation);if(user.session.authenticated){if((0,external_clientnode_.isFunction)(children))return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children({fallbackLocation:fallbackLocation,location:location,user:user})});return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children})}if(user.session.authenticated===null)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:loadingFallback!==null&&loadingFallback!==void 0?loadingFallback:""});if(((_fallbackLocation=fallbackLocation)===null||_fallbackLocation===void 0?void 0:_fallbackLocation.pathname)===location.pathname)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{});return/*#__PURE__*/(0,jsx_runtime_.jsx)(Redirect,{replace:true,state:{from:location},to:loginTarget})}),Login:function Login(_ref3){var buttonProperties=_ref3.buttonProperties,inputProperties=_ref3.inputProperties,loginProperties=_ref3.loginProperties,passwordProperties=_ref3.passwordProperties,children=_ref3.children,onSubmitted=_ref3.onSubmitted,onSuccess=_ref3.onSuccess;var user=useUser();var _useState=(0,external_react_.useState)(_objectSpread(_objectSpread({},loginProperties),{},{invalid:true})),_useState2=_slicedToArray(_useState,2),loginInput=_useState2[0],setLoginInput=_useState2[1];var _useState3=(0,external_react_.useState)(_objectSpread(_objectSpread({},passwordProperties),{},{invalid:true})),_useState4=_slicedToArray(_useState3,2),passwordInput=_useState4[0],setPasswordInput=_useState4[1];var _useState5=(0,external_react_.useState)(false),_useState6=_slicedToArray(_useState5,2),submitted=_useState6[0],setSubmitted=_useState6[1];var _useState7=(0,external_react_.useState)(false),_useState8=_slicedToArray(_useState7,2),sent=_useState8[0],setSent=_useState8[1];(0,external_react_.useEffect)(function(){if(user.session.authenticated&&onSuccess)onSuccess(user)},[user.session.authenticated,onSuccess]);var login=(0,external_react_generic_tools_.useMemorizedValue)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(event){var _loginInput$value,_passwordInput$value;var result,_loginInput$value2,_passwordInput$value2,_result;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:event.preventDefault();result=onSubmitted&&onSubmitted((_loginInput$value=loginInput.value)!==null&&_loginInput$value!==void 0?_loginInput$value:null,(_passwordInput$value=passwordInput.value)!==null&&_passwordInput$value!==void 0?_passwordInput$value:null);if(!(typeof result!=="boolean"||result)){_context.n=1;break}setSubmitted(true);if(!(loginInput.valid&&passwordInput.valid)){_context.n=1;break}_result=user.login({login:(_loginInput$value2=loginInput.value)!==null&&_loginInput$value2!==void 0?_loginInput$value2:null,password:(_passwordInput$value2=passwordInput.value)!==null&&_passwordInput$value2!==void 0?_passwordInput$value2:null});setSent(true);if(!(onSuccess&&_result!==null&&_result!==void 0&&_result.then)){_context.n=1;break}_context.n=1;return _result.then(function(){onSuccess(user)});case 1:return _context.a(2)}},_callee)})),onSubmitted,onSuccess,loginInput.value,loginInput.valid,passwordInput.value,passwordInput.valid,setSent,setSubmitted);var renderStatus=(0,external_react_generic_tools_.useMemorizedValue)((0,external_clientnode_.isFunction)(children)?children:children?function(){return children}:function(_ref5){var sent=_ref5.sent,submitted=_ref5.submitted,pending=_ref5.pending,authenticated=_ref5.authenticated,loginInput=_ref5.loginInput,passwordInput=_ref5.passwordInput;return pending?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,children:"authenticating..."}):submitted&&!authenticated&&(sent||loginInput.invalid||passwordInput.invalid)?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,role:"alert",children:loginInput.invalid?"Please type valid login.":passwordInput.invalid?"Please type valid password.":"Invalid credentials!"}):""},children);var setSentToFalse=(0,external_react_generic_tools_.useMemorizedValue)(function(){setSent(false)},setSent);return/*#__PURE__*/(0,jsx_runtime_.jsxs)("form",{className:CSS_CLASS_NAMES.login,children:[renderStatus({sent:sent,submitted:submitted,pending:Boolean(user.session.authenticating),authenticated:Boolean(user.session.authenticated),loginInput:loginInput,passwordInput:passwordInput}),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginName,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"username"}),name:"login",onChange:setLoginInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"account_circle"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(loginProperties||{},inputProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginPassword,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"current-password"}),name:"password",onChange:setPasswordInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"password_preset"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(passwordProperties||{},passwordProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__,_objectSpread({children:"Log in",className:CSS_CLASS_NAMES.loginButton,onClick:(0,external_react_generic_tools_.useMemorizedValue)(function(event){void login(event)},login),trailingIcon:"input"},(0,external_react_generic_tools_.useMemorizedValue)(buttonProperties||{},buttonProperties)))]})}}};/* harmony default export */ var components = (componentFactory);
92
+
93
+ /***/ }),
32
94
  /* 6 */,
33
- /* 7 */
95
+ /* 7 */,
96
+ /* 8 */
34
97
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
35
98
 
36
99
  var x = function(y) {
@@ -40,7 +103,7 @@ var y = function(x) { return function() { return x; }; }
40
103
  module.exports = x({ ["isFunction"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isFunction; } });
41
104
 
42
105
  /***/ }),
43
- /* 8 */
106
+ /* 9 */
44
107
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
45
108
 
46
109
  var x = function(y) {
@@ -91,50 +154,14 @@ module.exports = x({ ["useMemorizedValue"]: function() { return __WEBPACK_EXTERN
91
154
  /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); };
92
155
  /******/
93
156
  /************************************************************************/
94
-
95
- // EXTERNAL MODULE: external "clientnode"
96
- var external_clientnode_ = __webpack_require__(7);
97
- // EXTERNAL MODULE: external "react"
98
- var external_react_ = __webpack_require__(1);
99
- ;// external "react-input-material"
100
-
101
- // EXTERNAL MODULE: external "react-generic-tools"
102
- var external_react_generic_tools_ = __webpack_require__(8);
103
- ;// external "@rmwc/button"
104
-
105
- ;// ./src/style.module.css
106
- // extracted by mini-css-extract-plugin
107
- /* harmony default export */ var style_module = ({"login":"login","loginStatus":"login__status","loginButton":"login__button","loginName":"login__name","loginPassword":"login__password"});
108
- // EXTERNAL MODULE: external "react/jsx-runtime"
109
- var jsx_runtime_ = __webpack_require__(2);
110
- ;// ./src/components.tsx
111
- // #!/usr/bin/env babel-node
112
- // -*- coding: utf-8 -*-
113
- /** @module index *//* !
114
- region header
115
- [Project page](https://tsickert.com/react-generic-user)
116
-
117
- Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
118
- endregion
119
- */// region imports
120
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var r,e,o="function"==typeof Symbol?Symbol:{},n=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(o,n,a,i){var u=n&&n.prototype instanceof Generator?n:Generator,f=Object.create(u.prototype);return _regeneratorDefine2(f,"_invoke",function(t,o,n){var a,i,u,f=0,p=n||[],y=!1,G={p:0,n:0,v:r,a:l,f:l.bind(r,4),d:function d(t,e){return a=t,i=0,u=r,G.n=e,c}};function l(t,o){for(i=t,u=o,e=0;!y&&f&&!n&&e<p.length;e++){var n,a=p[e],l=G.p,F=a[2];t>3?(n=F===o)&&(u=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=r):a[0]<=l&&((n=t<2&&l<a[1])?(i=0,G.v=o,G.n=a[1]):l<F&&(n=t<3||a[0]>o||o>F)&&(a[4]=t,a[5]=o,G.n=F,i=0))}if(n||t>1)return c;throw y=!0,o}return function(n,p,F){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&l(p,F),i=p,u=F;(e=i<2?r:u)||!y;){a||(i?i<3?(i>1&&(G.n=-1),l(i,u)):G.n=u:G.v=u);try{if(f=2,a){if(i||(n="next"),e=a[n]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,i<2&&(i=0)}else 1===i&&(e=a.return)&&e.call(a),i<2&&(u=TypeError("The iterator does not provide a '"+n+"' method"),i=1);a=r}else if((e=(y=G.n<0)?u:t.call(o,G))!==c)break}catch(t){a=r,i=1,u=t}finally{f=1}}return{value:e,done:y}}}(o,a,i),!0),f}var c={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}e=Object.getPrototypeOf;var u=[][n]?e(e([][n]())):(_regeneratorDefine2(e={},n,function(){return this}),e),f=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(u);function p(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,GeneratorFunctionPrototype):(r.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(r,a,"GeneratorFunction")),r.prototype=Object.create(f),r}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(f,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,a,"GeneratorFunction"),_regeneratorDefine2(f),_regeneratorDefine2(f,a,"Generator"),_regeneratorDefine2(f,n,function(){return this}),_regeneratorDefine2(f,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:p}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function _slicedToArray(e,i){return _iterableToArrayLimit(e,i)||_unsupportedIterableToArray(e,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(Array.isArray(r)&&(null==e||e===("undefined"!=typeof Symbol&&[][Symbol.iterator])||e===[]["@@iterator"]))return r;if(null!=e){var l,n,i,a,u=[],o=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t){if(Object(e)!==e)return;o=!1}else for(;!(o=(l=i.call(e)).done)&&(u.push(l.value),u.length!==t);o=!0);}catch(r){f=!0,n=r}finally{try{if(!o&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw n}}return u}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)};// endregion
121
- var CSS_CLASS_NAMES=style_module;/**
122
- * Creates components to protect content and to log in.
123
- * NOTE: User hook should either be a "ContextUserHook" or "ReduxUserHook".
124
- * @param useUser - Hook to retrieve current user.
125
- * @param routing - Integration of the used routing library.
126
- * @param routing.Redirect - Component redirecting to given location.
127
- * @param routing.useLocation - Hook to determine current location.
128
- * @returns Components.
129
- */var componentFactory=function componentFactory(useUser,_ref){var Redirect=_ref.Redirect,useLocation=_ref.useLocation;return{/**
130
- * @param options - Options for given component.
131
- * @param options.children - Content to render when authenticated.
132
- * @param options.fallbackLocation - Location to redirect to when
133
- * authentication was unsuccessful.
134
- * @param options.loadingFallback - String to show when determining
135
- * authentication result.
136
- * @returns An content to be rendered.
137
- * A wrapper for <Route> that redirects to the login screen if you're
138
- * not yet authenticated.
139
- */Authenticated:/*#__PURE__*/(0,external_react_.memo)(function(_ref2){var _fallbackLocation;var children=_ref2.children,fallbackLocation=_ref2.fallbackLocation,_ref2$loadingFallback=_ref2.loadingFallback,loadingFallback=_ref2$loadingFallback===void 0?"loading...":_ref2$loadingFallback;var location=useLocation();var user=useUser();(0,external_react_.useEffect)(function(){if(user.session.authenticated===null)user.authenticate()},[user.session.authenticated]);fallbackLocation=(0,external_react_generic_tools_.useMemorizedValue)(typeof fallbackLocation==="string"?{pathname:fallbackLocation}:fallbackLocation,fallbackLocation);var loginTarget=(0,external_react_generic_tools_.useMemorizedValue)(_objectSpread({},fallbackLocation),fallbackLocation);if(user.session.authenticated){if((0,external_clientnode_.isFunction)(children))return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children({fallbackLocation:fallbackLocation,location:location,user:user})});return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children})}if(user.session.authenticated===null)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:loadingFallback!==null&&loadingFallback!==void 0?loadingFallback:""});if(((_fallbackLocation=fallbackLocation)===null||_fallbackLocation===void 0?void 0:_fallbackLocation.pathname)===location.pathname)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{});return/*#__PURE__*/(0,jsx_runtime_.jsx)(Redirect,{replace:true,state:{from:location},to:loginTarget})}),Login:function Login(_ref3){var buttonProperties=_ref3.buttonProperties,inputProperties=_ref3.inputProperties,loginProperties=_ref3.loginProperties,passwordProperties=_ref3.passwordProperties,children=_ref3.children,onSubmitted=_ref3.onSubmitted,onSuccess=_ref3.onSuccess;var user=useUser();var _useState=(0,external_react_.useState)(_objectSpread(_objectSpread({},loginProperties),{},{invalid:true})),_useState2=_slicedToArray(_useState,2),loginInput=_useState2[0],setLoginInput=_useState2[1];var _useState3=(0,external_react_.useState)(_objectSpread(_objectSpread({},passwordProperties),{},{invalid:true})),_useState4=_slicedToArray(_useState3,2),passwordInput=_useState4[0],setPasswordInput=_useState4[1];var _useState5=(0,external_react_.useState)(false),_useState6=_slicedToArray(_useState5,2),submitted=_useState6[0],setSubmitted=_useState6[1];var _useState7=(0,external_react_.useState)(false),_useState8=_slicedToArray(_useState7,2),sent=_useState8[0],setSent=_useState8[1];(0,external_react_.useEffect)(function(){if(user.session.authenticated&&onSuccess)onSuccess(user)},[user.session.authenticated,onSuccess]);var login=(0,external_react_generic_tools_.useMemorizedValue)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(event){var _loginInput$value,_passwordInput$value;var result,_loginInput$value2,_passwordInput$value2,_result;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:event.preventDefault();result=onSubmitted&&onSubmitted((_loginInput$value=loginInput.value)!==null&&_loginInput$value!==void 0?_loginInput$value:null,(_passwordInput$value=passwordInput.value)!==null&&_passwordInput$value!==void 0?_passwordInput$value:null);if(!(typeof result!=="boolean"||result)){_context.n=1;break}setSubmitted(true);if(!(loginInput.valid&&passwordInput.valid)){_context.n=1;break}_result=user.login({login:(_loginInput$value2=loginInput.value)!==null&&_loginInput$value2!==void 0?_loginInput$value2:null,password:(_passwordInput$value2=passwordInput.value)!==null&&_passwordInput$value2!==void 0?_passwordInput$value2:null});setSent(true);if(!(onSuccess&&_result!==null&&_result!==void 0&&_result.then)){_context.n=1;break}_context.n=1;return _result.then(function(){onSuccess(user)});case 1:return _context.a(2)}},_callee)})),onSubmitted,onSuccess,loginInput.value,loginInput.valid,passwordInput.value,passwordInput.valid,setSent,setSubmitted);var renderStatus=(0,external_react_generic_tools_.useMemorizedValue)((0,external_clientnode_.isFunction)(children)?children:children?function(){return children}:function(_ref5){var sent=_ref5.sent,submitted=_ref5.submitted,pending=_ref5.pending,authenticated=_ref5.authenticated,loginInput=_ref5.loginInput,passwordInput=_ref5.passwordInput;return pending?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,children:"authenticating..."}):submitted&&!authenticated&&(sent||loginInput.invalid||passwordInput.invalid)?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,role:"alert",children:loginInput.invalid?"Please type valid login.":passwordInput.invalid?"Please type valid password.":"Invalid credentials!"}):""},children);var setSentToFalse=(0,external_react_generic_tools_.useMemorizedValue)(function(){setSent(false)},setSent);return/*#__PURE__*/(0,jsx_runtime_.jsxs)("form",{className:CSS_CLASS_NAMES.login,children:[renderStatus({sent:sent,submitted:submitted,pending:Boolean(user.session.authenticating),authenticated:Boolean(user.session.authenticated),loginInput:loginInput,passwordInput:passwordInput}),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_bf884f53_TextInput__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginName,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"username"}),name:"login",onChange:setLoginInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"account_circle"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(loginProperties||{},inputProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_bf884f53_TextInput__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginPassword,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"current-password"}),name:"password",onChange:setPasswordInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"password_preset"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(passwordProperties||{},passwordProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__,_objectSpread({children:"Log in",className:CSS_CLASS_NAMES.loginButton,onClick:(0,external_react_generic_tools_.useMemorizedValue)(function(event){void login(event)},login),trailingIcon:"input"},(0,external_react_generic_tools_.useMemorizedValue)(buttonProperties||{},buttonProperties)))]})}}};/* harmony default export */ var components = (componentFactory);
140
- export { CSS_CLASS_NAMES, componentFactory, components as default };
157
+ /******/
158
+ /******/ // startup
159
+ /******/ // Load entry module and return exports
160
+ /******/ // This entry module is referenced by other modules so it can't be inlined
161
+ /******/ __webpack_require__(2);
162
+ /******/ var __webpack_exports__ = __webpack_require__(5);
163
+ /******/ var __webpack_exports__CSS_CLASS_NAMES = __webpack_exports__.sr;
164
+ /******/ var __webpack_exports__componentFactory = __webpack_exports__.WV;
165
+ /******/ var __webpack_exports__default = __webpack_exports__.Ay;
166
+ /******/ export { __webpack_exports__CSS_CLASS_NAMES as CSS_CLASS_NAMES, __webpack_exports__componentFactory as componentFactory, __webpack_exports__default as default };
167
+ /******/
package/dist/context.js CHANGED
@@ -13,7 +13,8 @@ var y = function(x) { return function() { return x; }; }
13
13
  module.exports = x({ ["createContext"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.createContext; }, ["useContext"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.useContext; }, ["useState"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.useState; } });
14
14
 
15
15
  /***/ }),
16
- /* 2 */
16
+ /* 2 */,
17
+ /* 3 */
17
18
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
18
19
 
19
20
  var x = function(y) {
@@ -23,7 +24,7 @@ var y = function(x) { return function() { return x; }; }
23
24
  module.exports = x({ ["jsx"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsx; } });
24
25
 
25
26
  /***/ }),
26
- /* 3 */
27
+ /* 4 */
27
28
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
28
29
 
29
30
  var x = function(y) {
@@ -75,9 +76,9 @@ module.exports = x({ });
75
76
  /******/
76
77
  /************************************************************************/
77
78
  var __webpack_exports__ = {};
78
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
79
+ /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
79
80
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
80
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
81
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
81
82
  // #!/usr/bin/env babel-node
82
83
  // -*- coding: utf-8 -*-
83
84
  /** @module index *//* !
package/dist/harness.js CHANGED
File without changes
package/dist/index.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /* !/usr/bin/env css
2
- -*- coding: utf-8 -*- */.login{display:grid;grid-gap:20px;grid-gap:var(--w-default-space,20px);gap:20px;gap:var(--w-default-space,20px);grid-template-columns:1fr;margin:0 auto;width:400px}.login .login__status{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#018786;color:var(--mdc-theme-secondary,#018786);font-family:Roboto,sans-serif;font-family:var(--mdc-typography-headline2-font-family,var(--mdc-typography-font-family,Roboto,sans-serif));font-size:3.75rem;font-size:var(--mdc-typography-headline2-font-size,3.75rem);font-weight:300;font-weight:var(--mdc-typography-headline2-font-weight,300);letter-spacing:-.0083333333em;letter-spacing:var(--mdc-typography-headline2-letter-spacing,-.0083333333em);line-height:3.75rem;line-height:var(--mdc-typography-headline2-line-height,3.75rem);text-align:center}.login .login__button,.login .login__name,.login .login__password{visibility:visible}
2
+ -*- coding: utf-8 -*- */.login{display:grid;grid-gap:20px;grid-gap:var(--w-default-space,20px);gap:20px;gap:var(--w-default-space,20px);grid-template-columns:1fr;margin:0 auto;width:400px}.login .login__status{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#018786;color:var(--mdc-theme-secondary,#018786);font-family:Roboto,sans-serif;font-family:var(--mdc-typography-headline2-font-family,var(--mdc-typography-font-family,Roboto,sans-serif));font-size:3.75rem;font-size:var(--mdc-typography-headline2-font-size,3.75rem);font-weight:300;font-weight:var(--mdc-typography-headline2-font-weight,300);letter-spacing:-.0083em;letter-spacing:var(--mdc-typography-headline2-letter-spacing,-.0083em);line-height:3.75rem;line-height:var(--mdc-typography-headline2-line-height,3.75rem);text-align:center}.login .login__button,.login .login__name,.login .login__password{visibility:visible}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import { TextInput as __WEBPACK_EXTERNAL_MODULE_react_input_material_bf884f53_TextInput__ } from "react-input-material";
1
+ if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import { default as __WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__ } from "react-input-material/components/TextInput";
2
2
  import { Button as __WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__ } from "@rmwc/button";
3
3
  import { useDispatch as __WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useDispatch__, useSelector as __WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__ } from "react-redux";
4
4
  import { createAsyncThunk as __WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__, createSlice as __WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createSlice__ } from "@reduxjs/toolkit";
@@ -67,6 +67,13 @@ module.exports = x({ ["createContext"]: function() { return __WEBPACK_EXTERNAL_M
67
67
 
68
68
  /***/ }),
69
69
  /* 2 */
70
+ /***/ (function(__unused_webpack_module, __webpack_exports__) {
71
+
72
+ // extracted by mini-css-extract-plugin
73
+ /* harmony default export */ __webpack_exports__.A = ({"login":"login","loginStatus":"login__status","loginButton":"login__button","loginName":"login__name","loginPassword":"login__password"});
74
+
75
+ /***/ }),
76
+ /* 3 */
70
77
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
71
78
 
72
79
  var x = function(y) {
@@ -76,7 +83,7 @@ var y = function(x) { return function() { return x; }; }
76
83
  module.exports = x({ ["Fragment"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.Fragment; }, ["jsx"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsx; }, ["jsxs"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsxs; } });
77
84
 
78
85
  /***/ }),
79
- /* 3 */
86
+ /* 4 */
80
87
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
81
88
 
82
89
  var x = function(y) {
@@ -86,7 +93,7 @@ var y = function(x) { return function() { return x; }; }
86
93
  module.exports = x({ });
87
94
 
88
95
  /***/ }),
89
- /* 4 */
96
+ /* 5 */
90
97
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
91
98
 
92
99
 
@@ -99,20 +106,19 @@ __webpack_require__.d(__webpack_exports__, {
99
106
  // UNUSED EXPORTS: default
100
107
 
101
108
  // EXTERNAL MODULE: external "clientnode"
102
- var external_clientnode_ = __webpack_require__(7);
109
+ var external_clientnode_ = __webpack_require__(8);
103
110
  // EXTERNAL MODULE: external "react"
104
111
  var external_react_ = __webpack_require__(1);
105
- ;// external "react-input-material"
112
+ ;// external "react-input-material/components/TextInput"
106
113
 
107
114
  // EXTERNAL MODULE: external "react-generic-tools"
108
- var external_react_generic_tools_ = __webpack_require__(8);
115
+ var external_react_generic_tools_ = __webpack_require__(9);
109
116
  ;// external "@rmwc/button"
110
117
 
111
- ;// ./src/style.module.css
112
- // extracted by mini-css-extract-plugin
113
- /* harmony default export */ var style_module = ({"login":"login","loginStatus":"login__status","loginButton":"login__button","loginName":"login__name","loginPassword":"login__password"});
118
+ // EXTERNAL MODULE: ./src/style.module.css
119
+ var style_module = __webpack_require__(2);
114
120
  // EXTERNAL MODULE: external "react/jsx-runtime"
115
- var jsx_runtime_ = __webpack_require__(2);
121
+ var jsx_runtime_ = __webpack_require__(3);
116
122
  ;// ./src/components.tsx
117
123
  // #!/usr/bin/env babel-node
118
124
  // -*- coding: utf-8 -*-
@@ -124,7 +130,7 @@ var jsx_runtime_ = __webpack_require__(2);
124
130
  endregion
125
131
  */// region imports
126
132
  function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var r,e,o="function"==typeof Symbol?Symbol:{},n=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(o,n,a,i){var u=n&&n.prototype instanceof Generator?n:Generator,f=Object.create(u.prototype);return _regeneratorDefine2(f,"_invoke",function(t,o,n){var a,i,u,f=0,p=n||[],y=!1,G={p:0,n:0,v:r,a:l,f:l.bind(r,4),d:function d(t,e){return a=t,i=0,u=r,G.n=e,c}};function l(t,o){for(i=t,u=o,e=0;!y&&f&&!n&&e<p.length;e++){var n,a=p[e],l=G.p,F=a[2];t>3?(n=F===o)&&(u=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=r):a[0]<=l&&((n=t<2&&l<a[1])?(i=0,G.v=o,G.n=a[1]):l<F&&(n=t<3||a[0]>o||o>F)&&(a[4]=t,a[5]=o,G.n=F,i=0))}if(n||t>1)return c;throw y=!0,o}return function(n,p,F){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&l(p,F),i=p,u=F;(e=i<2?r:u)||!y;){a||(i?i<3?(i>1&&(G.n=-1),l(i,u)):G.n=u:G.v=u);try{if(f=2,a){if(i||(n="next"),e=a[n]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,i<2&&(i=0)}else 1===i&&(e=a.return)&&e.call(a),i<2&&(u=TypeError("The iterator does not provide a '"+n+"' method"),i=1);a=r}else if((e=(y=G.n<0)?u:t.call(o,G))!==c)break}catch(t){a=r,i=1,u=t}finally{f=1}}return{value:e,done:y}}}(o,a,i),!0),f}var c={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}e=Object.getPrototypeOf;var u=[][n]?e(e([][n]())):(_regeneratorDefine2(e={},n,function(){return this}),e),f=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(u);function p(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,GeneratorFunctionPrototype):(r.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(r,a,"GeneratorFunction")),r.prototype=Object.create(f),r}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(f,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,a,"GeneratorFunction"),_regeneratorDefine2(f),_regeneratorDefine2(f,a,"Generator"),_regeneratorDefine2(f,n,function(){return this}),_regeneratorDefine2(f,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:p}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function _slicedToArray(e,i){return _iterableToArrayLimit(e,i)||_unsupportedIterableToArray(e,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(Array.isArray(r)&&(null==e||e===("undefined"!=typeof Symbol&&[][Symbol.iterator])||e===[]["@@iterator"]))return r;if(null!=e){var l,n,i,a,u=[],o=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t){if(Object(e)!==e)return;o=!1}else for(;!(o=(l=i.call(e)).done)&&(u.push(l.value),u.length!==t);o=!0);}catch(r){f=!0,n=r}finally{try{if(!o&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw n}}return u}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)};// endregion
127
- var CSS_CLASS_NAMES=style_module;/**
133
+ var CSS_CLASS_NAMES=style_module/* default */.A;/**
128
134
  * Creates components to protect content and to log in.
129
135
  * NOTE: User hook should either be a "ContextUserHook" or "ReduxUserHook".
130
136
  * @param useUser - Hook to retrieve current user.
@@ -142,18 +148,18 @@ var CSS_CLASS_NAMES=style_module;/**
142
148
  * @returns An content to be rendered.
143
149
  * A wrapper for <Route> that redirects to the login screen if you're
144
150
  * not yet authenticated.
145
- */Authenticated:/*#__PURE__*/(0,external_react_.memo)(function(_ref2){var _fallbackLocation;var children=_ref2.children,fallbackLocation=_ref2.fallbackLocation,_ref2$loadingFallback=_ref2.loadingFallback,loadingFallback=_ref2$loadingFallback===void 0?"loading...":_ref2$loadingFallback;var location=useLocation();var user=useUser();(0,external_react_.useEffect)(function(){if(user.session.authenticated===null)user.authenticate()},[user.session.authenticated]);fallbackLocation=(0,external_react_generic_tools_.useMemorizedValue)(typeof fallbackLocation==="string"?{pathname:fallbackLocation}:fallbackLocation,fallbackLocation);var loginTarget=(0,external_react_generic_tools_.useMemorizedValue)(_objectSpread({},fallbackLocation),fallbackLocation);if(user.session.authenticated){if((0,external_clientnode_.isFunction)(children))return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children({fallbackLocation:fallbackLocation,location:location,user:user})});return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children})}if(user.session.authenticated===null)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:loadingFallback!==null&&loadingFallback!==void 0?loadingFallback:""});if(((_fallbackLocation=fallbackLocation)===null||_fallbackLocation===void 0?void 0:_fallbackLocation.pathname)===location.pathname)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{});return/*#__PURE__*/(0,jsx_runtime_.jsx)(Redirect,{replace:true,state:{from:location},to:loginTarget})}),Login:function Login(_ref3){var buttonProperties=_ref3.buttonProperties,inputProperties=_ref3.inputProperties,loginProperties=_ref3.loginProperties,passwordProperties=_ref3.passwordProperties,children=_ref3.children,onSubmitted=_ref3.onSubmitted,onSuccess=_ref3.onSuccess;var user=useUser();var _useState=(0,external_react_.useState)(_objectSpread(_objectSpread({},loginProperties),{},{invalid:true})),_useState2=_slicedToArray(_useState,2),loginInput=_useState2[0],setLoginInput=_useState2[1];var _useState3=(0,external_react_.useState)(_objectSpread(_objectSpread({},passwordProperties),{},{invalid:true})),_useState4=_slicedToArray(_useState3,2),passwordInput=_useState4[0],setPasswordInput=_useState4[1];var _useState5=(0,external_react_.useState)(false),_useState6=_slicedToArray(_useState5,2),submitted=_useState6[0],setSubmitted=_useState6[1];var _useState7=(0,external_react_.useState)(false),_useState8=_slicedToArray(_useState7,2),sent=_useState8[0],setSent=_useState8[1];(0,external_react_.useEffect)(function(){if(user.session.authenticated&&onSuccess)onSuccess(user)},[user.session.authenticated,onSuccess]);var login=(0,external_react_generic_tools_.useMemorizedValue)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(event){var _loginInput$value,_passwordInput$value;var result,_loginInput$value2,_passwordInput$value2,_result;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:event.preventDefault();result=onSubmitted&&onSubmitted((_loginInput$value=loginInput.value)!==null&&_loginInput$value!==void 0?_loginInput$value:null,(_passwordInput$value=passwordInput.value)!==null&&_passwordInput$value!==void 0?_passwordInput$value:null);if(!(typeof result!=="boolean"||result)){_context.n=1;break}setSubmitted(true);if(!(loginInput.valid&&passwordInput.valid)){_context.n=1;break}_result=user.login({login:(_loginInput$value2=loginInput.value)!==null&&_loginInput$value2!==void 0?_loginInput$value2:null,password:(_passwordInput$value2=passwordInput.value)!==null&&_passwordInput$value2!==void 0?_passwordInput$value2:null});setSent(true);if(!(onSuccess&&_result!==null&&_result!==void 0&&_result.then)){_context.n=1;break}_context.n=1;return _result.then(function(){onSuccess(user)});case 1:return _context.a(2)}},_callee)})),onSubmitted,onSuccess,loginInput.value,loginInput.valid,passwordInput.value,passwordInput.valid,setSent,setSubmitted);var renderStatus=(0,external_react_generic_tools_.useMemorizedValue)((0,external_clientnode_.isFunction)(children)?children:children?function(){return children}:function(_ref5){var sent=_ref5.sent,submitted=_ref5.submitted,pending=_ref5.pending,authenticated=_ref5.authenticated,loginInput=_ref5.loginInput,passwordInput=_ref5.passwordInput;return pending?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,children:"authenticating..."}):submitted&&!authenticated&&(sent||loginInput.invalid||passwordInput.invalid)?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,role:"alert",children:loginInput.invalid?"Please type valid login.":passwordInput.invalid?"Please type valid password.":"Invalid credentials!"}):""},children);var setSentToFalse=(0,external_react_generic_tools_.useMemorizedValue)(function(){setSent(false)},setSent);return/*#__PURE__*/(0,jsx_runtime_.jsxs)("form",{className:CSS_CLASS_NAMES.login,children:[renderStatus({sent:sent,submitted:submitted,pending:Boolean(user.session.authenticating),authenticated:Boolean(user.session.authenticated),loginInput:loginInput,passwordInput:passwordInput}),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_bf884f53_TextInput__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginName,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"username"}),name:"login",onChange:setLoginInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"account_circle"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(loginProperties||{},inputProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_bf884f53_TextInput__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginPassword,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"current-password"}),name:"password",onChange:setPasswordInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"password_preset"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(passwordProperties||{},passwordProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__,_objectSpread({children:"Log in",className:CSS_CLASS_NAMES.loginButton,onClick:(0,external_react_generic_tools_.useMemorizedValue)(function(event){void login(event)},login),trailingIcon:"input"},(0,external_react_generic_tools_.useMemorizedValue)(buttonProperties||{},buttonProperties)))]})}}};/* harmony default export */ var components = ((/* unused pure expression or super */ null && (componentFactory)));
151
+ */Authenticated:/*#__PURE__*/(0,external_react_.memo)(function(_ref2){var _fallbackLocation;var children=_ref2.children,fallbackLocation=_ref2.fallbackLocation,_ref2$loadingFallback=_ref2.loadingFallback,loadingFallback=_ref2$loadingFallback===void 0?"loading...":_ref2$loadingFallback;var location=useLocation();var user=useUser();(0,external_react_.useEffect)(function(){if(user.session.authenticated===null)user.authenticate()},[user.session.authenticated]);fallbackLocation=(0,external_react_generic_tools_.useMemorizedValue)(typeof fallbackLocation==="string"?{pathname:fallbackLocation}:fallbackLocation,fallbackLocation);var loginTarget=(0,external_react_generic_tools_.useMemorizedValue)(_objectSpread({},fallbackLocation),fallbackLocation);if(user.session.authenticated){if((0,external_clientnode_.isFunction)(children))return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children({fallbackLocation:fallbackLocation,location:location,user:user})});return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children})}if(user.session.authenticated===null)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:loadingFallback!==null&&loadingFallback!==void 0?loadingFallback:""});if(((_fallbackLocation=fallbackLocation)===null||_fallbackLocation===void 0?void 0:_fallbackLocation.pathname)===location.pathname)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{});return/*#__PURE__*/(0,jsx_runtime_.jsx)(Redirect,{replace:true,state:{from:location},to:loginTarget})}),Login:function Login(_ref3){var buttonProperties=_ref3.buttonProperties,inputProperties=_ref3.inputProperties,loginProperties=_ref3.loginProperties,passwordProperties=_ref3.passwordProperties,children=_ref3.children,onSubmitted=_ref3.onSubmitted,onSuccess=_ref3.onSuccess;var user=useUser();var _useState=(0,external_react_.useState)(_objectSpread(_objectSpread({},loginProperties),{},{invalid:true})),_useState2=_slicedToArray(_useState,2),loginInput=_useState2[0],setLoginInput=_useState2[1];var _useState3=(0,external_react_.useState)(_objectSpread(_objectSpread({},passwordProperties),{},{invalid:true})),_useState4=_slicedToArray(_useState3,2),passwordInput=_useState4[0],setPasswordInput=_useState4[1];var _useState5=(0,external_react_.useState)(false),_useState6=_slicedToArray(_useState5,2),submitted=_useState6[0],setSubmitted=_useState6[1];var _useState7=(0,external_react_.useState)(false),_useState8=_slicedToArray(_useState7,2),sent=_useState8[0],setSent=_useState8[1];(0,external_react_.useEffect)(function(){if(user.session.authenticated&&onSuccess)onSuccess(user)},[user.session.authenticated,onSuccess]);var login=(0,external_react_generic_tools_.useMemorizedValue)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(event){var _loginInput$value,_passwordInput$value;var result,_loginInput$value2,_passwordInput$value2,_result;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:event.preventDefault();result=onSubmitted&&onSubmitted((_loginInput$value=loginInput.value)!==null&&_loginInput$value!==void 0?_loginInput$value:null,(_passwordInput$value=passwordInput.value)!==null&&_passwordInput$value!==void 0?_passwordInput$value:null);if(!(typeof result!=="boolean"||result)){_context.n=1;break}setSubmitted(true);if(!(loginInput.valid&&passwordInput.valid)){_context.n=1;break}_result=user.login({login:(_loginInput$value2=loginInput.value)!==null&&_loginInput$value2!==void 0?_loginInput$value2:null,password:(_passwordInput$value2=passwordInput.value)!==null&&_passwordInput$value2!==void 0?_passwordInput$value2:null});setSent(true);if(!(onSuccess&&_result!==null&&_result!==void 0&&_result.then)){_context.n=1;break}_context.n=1;return _result.then(function(){onSuccess(user)});case 1:return _context.a(2)}},_callee)})),onSubmitted,onSuccess,loginInput.value,loginInput.valid,passwordInput.value,passwordInput.valid,setSent,setSubmitted);var renderStatus=(0,external_react_generic_tools_.useMemorizedValue)((0,external_clientnode_.isFunction)(children)?children:children?function(){return children}:function(_ref5){var sent=_ref5.sent,submitted=_ref5.submitted,pending=_ref5.pending,authenticated=_ref5.authenticated,loginInput=_ref5.loginInput,passwordInput=_ref5.passwordInput;return pending?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,children:"authenticating..."}):submitted&&!authenticated&&(sent||loginInput.invalid||passwordInput.invalid)?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,role:"alert",children:loginInput.invalid?"Please type valid login.":passwordInput.invalid?"Please type valid password.":"Invalid credentials!"}):""},children);var setSentToFalse=(0,external_react_generic_tools_.useMemorizedValue)(function(){setSent(false)},setSent);return/*#__PURE__*/(0,jsx_runtime_.jsxs)("form",{className:CSS_CLASS_NAMES.login,children:[renderStatus({sent:sent,submitted:submitted,pending:Boolean(user.session.authenticating),authenticated:Boolean(user.session.authenticated),loginInput:loginInput,passwordInput:passwordInput}),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginName,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"username"}),name:"login",onChange:setLoginInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"account_circle"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(loginProperties||{},inputProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginPassword,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"current-password"}),name:"password",onChange:setPasswordInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"password_preset"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(passwordProperties||{},passwordProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__,_objectSpread({children:"Log in",className:CSS_CLASS_NAMES.loginButton,onClick:(0,external_react_generic_tools_.useMemorizedValue)(function(event){void login(event)},login),trailingIcon:"input"},(0,external_react_generic_tools_.useMemorizedValue)(buttonProperties||{},buttonProperties)))]})}}};/* harmony default export */ var components = ((/* unused pure expression or super */ null && (componentFactory)));
146
152
 
147
153
  /***/ }),
148
- /* 5 */
154
+ /* 6 */
149
155
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
150
156
 
151
157
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
152
158
  /* harmony export */ t: function() { return /* binding */ sessionFactory; }
153
159
  /* harmony export */ });
154
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
160
+ /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
155
161
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
156
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
162
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
157
163
  // #!/usr/bin/env babel-node
158
164
  // -*- coding: utf-8 -*-
159
165
  /** @module index *//* !
@@ -188,7 +194,7 @@ var sessionFactory=function sessionFactory(_ref){var _authenticate=_ref.authenti
188
194
  */return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{deauthenticating:null})})})})})};return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{deauthenticating:oldUser.session.authenticating?oldUser.session.authenticating.then(deauthenticater,deauthenticater):deauthenticater()})})})}}),_useState2=_slicedToArray(_useState,2),user=_useState2[0],setUser=_useState2[1];return user};return{UserProvider:function UserProvider(_ref2){var children=_ref2.children,options=_ref2.options;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(userContext.Provider,{value:useUserState(options),children:children})},userContext:userContext,useHasRole:useHasRole,useIsAdmin:function useIsAdmin(){return useHasRole("_admin")},useUser:useUser,useUserState:useUserState}};/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (sessionFactory)));
189
195
 
190
196
  /***/ }),
191
- /* 6 */
197
+ /* 7 */
192
198
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
193
199
 
194
200
 
@@ -200,13 +206,13 @@ __webpack_require__.d(__webpack_exports__, {
200
206
  // UNUSED EXPORTS: default
201
207
 
202
208
  // EXTERNAL MODULE: external "core-js/modules/es.array.includes.js"
203
- var es_array_includes_js_ = __webpack_require__(3);
209
+ var es_array_includes_js_ = __webpack_require__(4);
204
210
  // EXTERNAL MODULE: external "clientnode"
205
- var external_clientnode_ = __webpack_require__(7);
211
+ var external_clientnode_ = __webpack_require__(8);
206
212
  // EXTERNAL MODULE: external "react"
207
213
  var external_react_ = __webpack_require__(1);
208
214
  // EXTERNAL MODULE: external "react-generic-tools"
209
- var external_react_generic_tools_ = __webpack_require__(8);
215
+ var external_react_generic_tools_ = __webpack_require__(9);
210
216
  ;// external "react-redux"
211
217
 
212
218
  ;// external "@reduxjs/toolkit"
@@ -237,7 +243,7 @@ var useNoLocation=function useNoLocation(){return null};/**
237
243
  */var authenticateThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/authenticate"),function(){return handler.authenticate.apply(handler,arguments)});var loginThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/login"),function(){return handler.login.apply(handler,arguments)});var logoutThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/logout"),function(){return handler.logout.apply(handler,arguments)});var useHasRole=function useHasRole(role){var session=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__(function(state){return state.user});var userContext=session===null||session===void 0?void 0:session.userContext;var roles=userContext===null||userContext===void 0?void 0:userContext.roles;return Boolean(roles&&[].concat(role).every(function(role){return roles.includes(role)}))};var slice=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createSlice__({name:type/* ACTION_NAME_PREFIX */.u,initialState:{authenticated:null,authenticating:false,deauthenticating:false,initialRequestedLocation:undefined,userContext:undefined},selectors:{selectUser:function selectUser(slice){return slice}},reducers:{deauthenticate:function deauthenticate(state){return _objectSpread(_objectSpread({},state),{},{authenticated:false,userContext:undefined})},setInitialRequestedLocation:function setInitialRequestedLocation(state,_ref2){var payload=_ref2.payload;return _objectSpread(_objectSpread({},state),{},{initialRequestedLocation:payload})}},extraReducers:function extraReducers(builder){builder.addCase(logoutThunk.fulfilled,function(state,action){state.deauthenticating=false;if(action.payload){state.authenticated=false;state.userContext=undefined}}).addCase(logoutThunk.pending,function(state){state.deauthenticating=true}).addCase(logoutThunk.rejected,function(state){state.deauthenticating=false}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/fulfilled"),"".concat(loginThunk.typePrefix,"/fulfilled")].includes(action.type)},function(state,action){state.authenticating=false;if(typeof action.payload==="boolean")state.authenticated=action.payload;else if((0,external_clientnode_.isObject)(action.payload)){state.authenticated=true;state.userContext=action.payload}else state.authenticated=false}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/pending"),"".concat(loginThunk.typePrefix,"/pending")].includes(action.type)},function(state){state.authenticating=true}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/rejected"),"".concat(loginThunk.typePrefix,"/rejected")].includes(action.type)},function(state){state.authenticating=false})}});return{authenticateThunk:authenticateThunk,loginThunk:loginThunk,logoutThunk:logoutThunk,slice:slice,useHasRole:useHasRole,useIsAdmin:function useIsAdmin(){return useHasRole("_admin")},useUser:function useUser(data,isLoginLocation){if(data===void 0){data={}}if(isLoginLocation===void 0){isLoginLocation=function isLoginLocation(location){return location.pathname.endsWith("/login")}}var dispatch=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useDispatch__();var location=useLocation();var session=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__(slice.selectors.selectUser);(0,external_react_.useEffect)(function(){if(location&&!isLoginLocation(location)&&(!session||session.initialRequestedLocation===undefined||session.authenticated&&session.initialRequestedLocation!==null))dispatch(slice.actions.setInitialRequestedLocation(session!==null&&session!==void 0&&session.authenticated?null:location))},[dispatch,location,session===null||session===void 0?void 0:session.authenticated,session===null||session===void 0?void 0:session.initialRequestedLocation]);if(session===null)throw new Error("No user redux state found. Did you register a "+"corresponding redux slice?");var authenticate=(0,external_react_generic_tools_.useMemorizedValue)(function(){dispatch(authenticateThunk(data))},dispatch);var login=(0,external_react_generic_tools_.useMemorizedValue)(function(_ref3){var login=_ref3.login,password=_ref3.password;dispatch(loginThunk(_objectSpread(_objectSpread({},data),{},{login:login,password:password})))},dispatch);var logout=(0,external_react_generic_tools_.useMemorizedValue)(function(){dispatch(logoutThunk(data))},dispatch);return (0,external_react_generic_tools_.useMemorizedValue)({authenticate:authenticate,login:login,logout:logout,session:session},authenticateThunk,dispatch,session)}}};/* harmony default export */ var redux = ((/* unused pure expression or super */ null && (sessionFactory)));
238
244
 
239
245
  /***/ }),
240
- /* 7 */
246
+ /* 8 */
241
247
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
242
248
 
243
249
  var x = function(y) {
@@ -247,7 +253,7 @@ var y = function(x) { return function() { return x; }; }
247
253
  module.exports = x({ ["isFunction"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isFunction; }, ["isObject"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isObject; } });
248
254
 
249
255
  /***/ }),
250
- /* 8 */
256
+ /* 9 */
251
257
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
252
258
 
253
259
  var x = function(y) {
@@ -306,9 +312,9 @@ var __webpack_exports__ = {};
306
312
  /* harmony export */ sr: function() { return /* reexport safe */ _components_js__WEBPACK_IMPORTED_MODULE_0__.sr; },
307
313
  /* harmony export */ uI: function() { return /* reexport safe */ _type_js__WEBPACK_IMPORTED_MODULE_3__.u; }
308
314
  /* harmony export */ });
309
- /* harmony import */ var _components_js__WEBPACK_IMPORTED_MODULE_0__ = /*#__PURE__*/__webpack_require__(4);
310
- /* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_1__ = /*#__PURE__*/__webpack_require__(5);
311
- /* harmony import */ var _redux_js__WEBPACK_IMPORTED_MODULE_2__ = /*#__PURE__*/__webpack_require__(6);
315
+ /* harmony import */ var _components_js__WEBPACK_IMPORTED_MODULE_0__ = /*#__PURE__*/__webpack_require__(5);
316
+ /* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_1__ = /*#__PURE__*/__webpack_require__(6);
317
+ /* harmony import */ var _redux_js__WEBPACK_IMPORTED_MODULE_2__ = /*#__PURE__*/__webpack_require__(7);
312
318
  /* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_3__ = /*#__PURE__*/__webpack_require__(0);
313
319
  // #!/usr/bin/env babel-node
314
320
  // -*- coding: utf-8 -*-
package/dist/redux.js CHANGED
@@ -64,7 +64,8 @@ module.exports = x({ ["useEffect"]: function() { return __WEBPACK_EXTERNAL_MODUL
64
64
 
65
65
  /***/ }),
66
66
  /* 2 */,
67
- /* 3 */
67
+ /* 3 */,
68
+ /* 4 */
68
69
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
69
70
 
70
71
  var x = function(y) {
@@ -74,10 +75,10 @@ var y = function(x) { return function() { return x; }; }
74
75
  module.exports = x({ });
75
76
 
76
77
  /***/ }),
77
- /* 4 */,
78
78
  /* 5 */,
79
79
  /* 6 */,
80
- /* 7 */
80
+ /* 7 */,
81
+ /* 8 */
81
82
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
82
83
 
83
84
  var x = function(y) {
@@ -87,7 +88,7 @@ var y = function(x) { return function() { return x; }; }
87
88
  module.exports = x({ ["isObject"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isObject; } });
88
89
 
89
90
  /***/ }),
90
- /* 8 */
91
+ /* 9 */
91
92
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
92
93
 
93
94
  var x = function(y) {
@@ -140,13 +141,13 @@ module.exports = x({ ["useMemorizedValue"]: function() { return __WEBPACK_EXTERN
140
141
  /************************************************************************/
141
142
 
142
143
  // EXTERNAL MODULE: external "core-js/modules/es.array.includes.js"
143
- var es_array_includes_js_ = __webpack_require__(3);
144
+ var es_array_includes_js_ = __webpack_require__(4);
144
145
  // EXTERNAL MODULE: external "clientnode"
145
- var external_clientnode_ = __webpack_require__(7);
146
+ var external_clientnode_ = __webpack_require__(8);
146
147
  // EXTERNAL MODULE: external "react"
147
148
  var external_react_ = __webpack_require__(1);
148
149
  // EXTERNAL MODULE: external "react-generic-tools"
149
- var external_react_generic_tools_ = __webpack_require__(8);
150
+ var external_react_generic_tools_ = __webpack_require__(9);
150
151
  ;// external "react-redux"
151
152
 
152
153
  ;// external "@reduxjs/toolkit"
package/dist/type.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-generic-user",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Generic user session handling (redux or react context based) and login components.",
5
5
  "keywords": [
6
6
  "authentication",
@@ -81,88 +81,65 @@
81
81
  "devDependencies": {
82
82
  "@babel/eslint-parser": "^8.0.7",
83
83
  "@babel/preset-react": "^8.0.1",
84
- "@codemirror/autocomplete": "^6.20.4",
85
- "@codemirror/commands": "^6.11.1",
86
- "@codemirror/lang-css": "^6.3.1",
87
- "@codemirror/lang-javascript": "^6.2.5",
88
- "@codemirror/language": "^6.13.1",
89
- "@codemirror/lint": "^6.9.7",
90
- "@codemirror/search": "^6.7.2",
91
- "@codemirror/state": "^6.7.6",
92
- "@codemirror/view": "^6.43.15",
93
- "@emotion/react": "^11.14.0",
94
84
  "@eslint/js": "^10.0.1",
95
- "@playwright/test": "^1.64.1",
85
+ "@playwright/test": "^1.65.0",
96
86
  "@reduxjs/toolkit": "^2.14.0",
97
87
  "@rmwc/button": "^14.3.5",
98
- "@rmwc/card": "^14.3.5",
99
- "@rmwc/checkbox": "^14.3.5",
100
88
  "@rmwc/circular-progress": "^14.3.5",
101
- "@rmwc/formfield": "^14.3.5",
102
89
  "@rmwc/icon": "^14.3.5",
103
90
  "@rmwc/icon-button": "^14.3.5",
104
91
  "@rmwc/menu": "^14.3.5",
105
92
  "@rmwc/select": "^14.3.5",
106
- "@rmwc/tabs": "^14.3.5",
107
93
  "@rmwc/textfield": "^14.3.5",
108
94
  "@rmwc/theme": "^14.3.5",
109
- "@rmwc/tooltip": "^14.3.5",
110
95
  "@rmwc/touch-target": "^14.3.5",
111
96
  "@rmwc/typography": "^14.3.5",
112
97
  "@stylistic/eslint-plugin": "^5.10.0",
113
98
  "@teamsupercell/typings-for-css-modules-loader": "^2.5.2",
114
- "@tiptap/core": "^3.32.2",
115
- "@tiptap/extensions": "^3.32.2",
116
- "@tiptap/react": "^3.32.2",
117
- "@tiptap/starter-kit": "^3.32.2",
118
99
  "@types/jsdom": "^30.0.0",
119
100
  "@types/node": "^26.6.6",
120
101
  "@types/prop-types": "^15.7.15",
121
102
  "@types/react": "^18.3.31",
122
103
  "@types/react-dom": "^18.3.7",
123
- "@types/react-transition-group": "^4.4.12",
124
- "@types/spark-md5": "^3.0.5",
125
104
  "@types/webpack-env": "^1.18.8",
126
105
  "@typescript-eslint/eslint-plugin": "^8.72.1",
127
106
  "@typescript-eslint/parser": "^8.72.1",
128
- "blob-util": "^2.0.2",
129
- "clientnode": "^4.0.1530",
107
+ "clientnode": "^4.0.1531",
130
108
  "css-loader": "^7.1.5",
131
109
  "cssnano": "^9.9.0",
132
110
  "eslint": "^10.14.0",
133
111
  "eslint-config-google": "^0.14.0",
134
- "eslint-plugin-jsdoc": "^65.4.2",
112
+ "eslint-plugin-jsdoc": "^65.4.5",
135
113
  "identity-obj-proxy": "^3.0.0",
136
114
  "jest": "^30.5.2",
137
115
  "jsdoc": "^4.0.5",
138
116
  "material-components-web": "^14.0.0",
139
- "material-icons": "^1.13.14",
140
117
  "mini-css-extract-plugin": "^2.10.2",
141
- "playwright-core": "^1.64.1",
118
+ "playwright-core": "^1.65.0",
142
119
  "postcss": "8.5.32",
143
120
  "postcss-import": "^17.0.1",
144
121
  "postcss-loader": "^8.2.1",
145
122
  "postcss-nested": "^9.0.1",
146
123
  "postcss-preset-env": "^11.6.2",
124
+ "postcss-scss": "^4.0.9",
147
125
  "prop-types": "^15.8.1",
148
126
  "react": "^18.3.1",
149
127
  "react-dom": "^18.3.1",
150
128
  "react-generic-animate": "^0.0.141",
151
129
  "react-generic-dummy": "^0.0.141",
152
130
  "react-generic-tools": "^0.0.138",
153
- "react-input-material": "^0.0.854",
131
+ "react-input-material": "^0.0.855",
154
132
  "react-redux": "^9.3.1",
155
133
  "react-transition-group": "^4.4.5",
156
134
  "react-useanimations": "^3.1.1",
157
135
  "redux": "^5.0.1",
158
- "spark-md5": "^3.0.2",
159
136
  "style-loader": "^4.0.0",
160
- "stylelint": "^17.16.0",
161
- "stylelint-config-standard": "^40.0.0",
137
+ "stylelint": "^18.0.0",
138
+ "stylelint-config-standard": "^41.0.0",
162
139
  "tslib": "^2.9.1",
163
140
  "typescript-eslint": "^8.72.1",
164
141
  "typescript-plugin-css-modules": "^5.3.0",
165
- "web-documentation": "^1.0.71",
142
+ "web-documentation": "^1.0.74",
166
143
  "weboptimizer": "^4.0.109",
167
144
  "webpack-dev-server": "^6.1.0"
168
145
  },
@@ -237,7 +214,10 @@
237
214
  },
238
215
  "generic": {
239
216
  "entry": {
240
- "components": "./components",
217
+ "components": [
218
+ "./style.module.css",
219
+ "./components"
220
+ ],
241
221
  "context": "./context",
242
222
  "harness": "./harness",
243
223
  "index": "./index.ts",
@@ -325,4 +305,4 @@
325
305
  }
326
306
  },
327
307
  "packageManager": "yarn@4.18.1+sha512.b2e1e7524f654f2749d32b4ebcb4622473cb5bcbc485df2007e12a154e50162a4d795526768bc5f5b8f81717bfd79deb2472813d86fb5ae2eb551fa9c872b08f"
328
- }
308
+ }