openstack-uicore-foundation 4.0.5 → 4.0.6
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.
- package/lib/components/forms/rsvp-form.js +1 -1
- package/lib/components/google-map.js +1 -1
- package/lib/components/inputs/access-levels-input.js +1 -1
- package/lib/components/inputs/action-dropdown.js +1 -1
- package/lib/components/inputs/company-input.js +1 -1
- package/lib/components/inputs/country-dropdown.js +1 -1
- package/lib/components/inputs/country-input.js +1 -1
- package/lib/components/inputs/dropdown.js +1 -1
- package/lib/components/inputs/free-multi-text-input.js +1 -1
- package/lib/components/inputs/group-input.js +1 -1
- package/lib/components/inputs/language-input.js +1 -1
- package/lib/components/inputs/member-input.js +1 -1
- package/lib/components/inputs/organization-input.js +1 -1
- package/lib/components/inputs/speaker-input.js +1 -1
- package/lib/components/inputs/sponsor-input.js +1 -1
- package/lib/components/inputs/summit-input.js +1 -1
- package/lib/components/inputs/tag-input.js +1 -1
- package/lib/components/inputs/upload-input.js +1 -1
- package/lib/components/summit-dropdown.js +1 -1
- package/lib/components/table-sortable.js +1 -1
- package/lib/security/abstract-auth-callback-route.js +1 -1
- package/lib/security/actions.js +1 -1
- package/lib/security/methods.js +1 -1
- package/lib/security/session-checker.js +1 -1
- package/lib/utils/actions.js +1 -1
- package/package.json +3 -2
- package/lib/crypto.js +0 -1
- package/lib/react-dnd.js +0 -1
- package/lib/react-dropzone.js +0 -1
- package/lib/react-google-maps.js +0 -1
- package/lib/react-select.js +0 -1
- package/lib/runtime.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(A,C){"object"==typeof exports&&"object"==typeof module?module.exports=C():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],C):"object"==typeof exports?exports["openstack-uicore-foundation"]=C():A["openstack-uicore-foundation"]=C()}(this,(function(){return(()=>{var A={id:9740,ids:[9740]};A.modules={9612:(A,C,g)=>{g.r(C),g.d(C,{default:()=>H});var B=g(6689),Q=g.n(B),e=g(6358),s=g.n(e),t=g(4656),E=g.n(t);const r=["value","file","handleRemove","handleUpload","handleError","fileName","error"];function I(){return I=Object.assign||function(A){for(var C=1;C<arguments.length;C++){var g=arguments[C];for(var B in g)Object.prototype.hasOwnProperty.call(g,B)&&(A[B]=g[B])}return A},I.apply(this,arguments)}function w(A,C){if(null==A)return{};var g,B,Q=function(A,C){if(null==A)return{};var g,B,Q={},e=Object.keys(A);for(B=0;B<e.length;B++)g=e[B],C.indexOf(g)>=0||(Q[g]=A[g]);return Q}(A,C);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(A);for(B=0;B<e.length;B++)g=e[B],C.indexOf(g)>=0||Object.prototype.propertyIsEnumerable.call(A,g)&&(Q[g]=A[g])}return Q}function o(A,C){var g=Object.keys(A);if(Object.getOwnPropertySymbols){var B=Object.getOwnPropertySymbols(A);C&&(B=B.filter((function(C){return Object.getOwnPropertyDescriptor(A,C).enumerable}))),g.push.apply(g,B)}return g}function n(A){for(var C=1;C<arguments.length;C++){var g=null!=arguments[C]?arguments[C]:{};C%2?o(Object(g),!0).forEach((function(C){D(A,C,g[C])})):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(g)):o(Object(g)).forEach((function(C){Object.defineProperty(A,C,Object.getOwnPropertyDescriptor(g,C))}))}return A}function D(A,C,g){return C in A?Object.defineProperty(A,C,{value:g,enumerable:!0,configurable:!0,writable:!0}):A[C]=g,A}class H extends Q().Component{constructor(A){super(A),this.state={show_remove:!1,logo_preview:{preview:null,name:""}},this.fileHasPreview=this.fileHasPreview.bind(this)}onDrop(A,C,g){if(A.length>0){let C=A[0];this.props.handleUpload(C,this.props),this.setState(n(n({},this.state),{},{logo_preview:{preview:C.preview,name:C.name}}))}C.length>0&&this.props.hasOwnProperty("handleError")&&this.props.handleError(C,this.props)}onRemove(A){this.props.handleRemove(A,this.props)}showVeil(){this.setState(n(n({},this.state),{},{show_remove:!0}))}hideVeil(){this.setState(n(n({},this.state),{},{show_remove:!1}))}fileHasPreview(A){if(!A)return!1;return/(.*)\.(gif|bmp|svg|jpe?g|png)/g.test(A)}render(){let A=this.props,{value:C,file:g,handleRemove:B,handleUpload:e,handleError:t,fileName:o,error:n}=A,D=w(A,r),{logo_preview:H,show_remove:G}=this.state,k=this.props.hasOwnProperty("error")&&""!==n,i="data:image/png;base64,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KCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgCAdgdGDxhBAIxzz5LHHTXpCoDddMwKx9492YoZEwDjfHLJ406ZdAXAbjp1hWPvmGzFjAmAcW5b8rinTLoCYDetct/5L5OtmDEBMM4/LHnceUmOn3IIwA561pLH3Zfk5imHzJUAGOevljzumCTfNOUQgB1zcpLnLHnsh5N8esItsyUAxnnfCsd+/2QrAHbP/iz/IsD3TjkE/i/HJbkzi7efLPP1gjEzAbbKI5N8LMvft14yZibtbszyP6S3JfnCMTMBtsZvZfn71c8kOWHMTNp9c5b/QT2Q5I+SHDtkKcD8vTSr3af++piZkOxN8o9Z7Qf2XUn2jRgLMGM/lNXuSw8kOX/IUrjflVn9h/Zv4voAAMniIfw3ZvX70XcP2Aqf48gkf5vVf3j/K8nPZbWrXQHsiqOTfFeSf87q95/3Jnn65ifD53tWVv8BfnAI/F6S70lyTrygBdhNRyd5fJLnJbkuyb/l0O83f2HD22dpz+gBfNarkrxkTee6L4sfcoBdsXdN5/lQkqdl+c9j2VkCYD6OSfLHSb509BCAHfXpJF+R5K9HD5kDVwKcj7uyuOTvLaOHAOyge5NcFr/8P0sAzMttSb4myT+NHgKwQ+7L4gWDN44eMicCYH4+nOQZST44egjADrgzi8v9vnHwjtkRAPP0kSRfnuSmwTsAttmtSZ6Z5K2jh8zRul5VyfrdmeTNSW5PckEWb4EBYDnXJ3lukptHD5krjwDM33VJzkrya1k8jwXAQ/vLJM9OcnmSjw/eMmveBrhdzkzyg0lemOT4wVsA5uJAkj9M8sosnjp1HZQlCIDttC/JxUm+MclXJ3nU0DUAm/epJH+a5A+yeI7fW6hXJAB2w6OyeJrg9CSPSPKweH0HsDsOZHGtlE9kce3/DyX5+yze2w8AAAAAAAAAAAAAAAAAAAAAALB9/ht8xmXxSgNe+QAAAABJRU5ErkJggg==";return C&&(o||(o=C.slice(C.lastIndexOf("/")+1))),g&&g.hasOwnProperty("name")&&g.name&&(o=g.name),i=o&&o.endsWith("pdf")?"data:image/png;base64,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":i,i=o&&o.endsWith("mov")?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAzeAAAM3gETUBB6AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAwBQTFRF////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAP90Uk5TAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+6wjZNQAAJjBJREFUeNrtnXeA1UTXxrPcZZe2iyxt6UuVRRBWBF5AWBAEVIq+IlL1U6qIKB1UVESKIqKg1BdBAQUUlF5UqgpIVYogSJW6dLa3fHT2JuckM8nk3tzkPH/unTkzyfltMjlzZkaSLFBYm6nLd53LlF2nSztnxkpul6fTsmTZxdrd0N3+b7lXdrnSe7vY/VEbZZI8zrX+j40j79/QQJf6v3sq+f6mMp9zpf/bk+fvKLmeC/1fPZEcf1cXK7rO/4WOk9uz6HBhtwEwk5zupa253eX/qhnkc28t8bgKgFXkcaUmusn/Ncnf7g4HjCZ3A+GAtu4B4C9yNxQOqO8W/1cgZ7s7HNCBfA3riEvCAQPI1e4OB4wjT7s7HDCXHI1qkhsAWAFcePdId6iKHgGDXADASuC63fIRHEnhAALA9eEAAsDl4QACwOXhAAJAR9tyEwCuBkBe6iEAXA2Aw8MBBIC+BhEA7gYgsx0B4GoAHB0OIACYsgOiCQBXAyAfiSQAXA2Ac8MBBACjnBoOIABYNZkAcDcA8mACwN0AODMcQACwKyWWAHA1AI4MBxAAPDoaSQC4GgAHhgMIAD4t8xAArgbAceEAAoBXgwkAdwOQ2Z4AcDUADgsHEAD8uhRNALgaAEeFAwgAI9qemwBwNQAOCgcQAMY0hQBwNwDyEALA3QA4JRxAABhVSgMCwNUAyJcqEQCuBsAZ4QACwIS25yEAXA2AE8IBBIApTSEA3A2A/AYB4G4AMjsQAK4GIODDAQSAWQV4OIAAMK1jRQgAVwMg78hDALgaAHl5MAHgagDkqQSAuwEI4HAAASBEgRsOIADEKKUhAeBqAORLDxAArgYgUMMBBIAwBWY4gAAQp4AMBxAAAjWVAHA3APKbBIC7AZA7EgDuBiDwwgEEgFhdfoAAcDUAARcOIABEK8DCAQSAcK0IJgBcDYA8jQBwNwABFQ4gAKxQRwLA3QAEUDiAALBEgRMOIACs0bGiBICrAZB35iEAXA1AoIQDCADLNI0AcDcA8lsEgLsBkDsRAO4GIPVRAsDVAMiXKxMArgZAPl6UAHA1APLOMALA1QDIK4MJAFcDIP+PAHA3ADYPBwQmAJ68xaOji+f1BAQA9g4HBBAAweWe7DN56fodB88k3OlpwpmDO9YvndznyXLBNgbA1uGAgAAgpE7XMYv2p2re5P2LxnStE2JLAGwdDrA9AJ5ag1cnsN7phNWDa3nsB4CdwwG2BiCoWp8lV3hv9pUlfaoF2QwAG4cDbAxA7YlxRu933MTa9gLAvuEAuwIQNfRvc3f876FRdgLAtuEAWwKQt8uGTPO3PHNDl7z2AUAeSgAwKubrJFE3PenrGNsAID9PADC9+ZeJve3LatsFgNRGBICuGq0Rf+PXNLIHAPYMB9gKgOabrLnzm5rbAgBbhgNsBEDTXdbd+l1N7QCAvCuMAMBU/Ftr7/23xW0AgLwqmACAJ3r6X7P63l/rH+x/AOTpBACkers572PCljXLF875bk8KT6Xd9fwPgNyNAFCp0Jd8/8rLBv0n+50nx/1PTbjIXvXLQn4H4HwEAaBQ20s8N/Bkf+VAKke7n5jjhpfa+hsAeSIB4KXQSTx3b/9L4JR/NHv4YFKonwHIiCAAsqjcTp7o/kdoxsfz55hnZsv5FwA5lgC4p+eucty50000LEV8w2rm6nP+BeAVAuDu438iz437uaCmsaBP2V/Dt14DhWUaBPgVgLI7eO7bhlx69oYz29pR9iYyV/wCwA8EwC3V4Er42Raub3Ege8pQzRvl1/gFgJUEwE014Yr97c3PYnMWs734ZteLjyYA/AdAu1Sem5ZSkclo2D/ss/MdJaklAeA3AF7jy/kaxmj2P2ns35T9paC1BICfABjJd8/2h7IaHsZh9aOgqGsEgD8A8Ey3LHaSl2dkPyt7VwLADwAEzea8Zes5jH/IY3h+ttZxBIDPARjHe8te4DBelGuG+DOp0EICwMcADOJO5cjNY/4LLttvSVKFdh+t3W+RTgJNrnA5AC9anEXTgs94F0svti09AVT+SeMGoAlXA/kyuIyntyIAfAlA3UT+l2ZhviY4k4sTHyEAfAfAAxf5/X+es43xnPYvPkAA+AqA8EMGRs3rORvpyNvAoXACwEcAzPfF/HkL7hbmEwC+AaCnoe9m3m3WGvE30ZMA8AUAMcmGAHifs5k6/E0kxxAA1gMQftBY5OxjznaqGWjjYDgBYDkAcw2GTifzPmiMNDKXALAagB5GY+dfcjbUzlArPQgAawGINrzvy1rOlt431EpSNAFgKQDGEzAT+fb/lL73DWcEAJfam5g/rcvXlNH95ToQANYBEH7aBABvcDVVNMNgM2fyEgCWAfCpCf/Lq7maesNwO58RAFYBUC3dDAAZZTmaCjpkvJ3qBIA1AASZ3P1rEkdbDUy083s2AsASALqYzKJLKsTe1jdmGnqZALACgLDzZvMo2acDHjG1yfDFcALAAgAGmvW/HH8/Y1PZ95hraAgBIB6AnGfMp1JvZwwGDTHZzrlcBIBwAF4VkUz/EVu8OdFsO68RAKIByH5cBACZTRmaKnXCdDsnQggAwQB0FrOeJqGZbkuRBwW005UAEAuA56AYAORUvW5F7BbRzCEPASAUgPayKGVof6XX+kdMM+0JAKEA7JbFaX4k2ky2N9MENbKbABAJQF1ZpC51RU4ErLBOXCN1CQCB9qfIYrWhOfCOrvldhsAmphAA4sznuCSL1qlR5b2ayN96rdgGLuUgAITpWdkK/THnzf9WzF+s7APVn/t8d6Zw888SAMK0RA5ALSEARKlQWiACkFaIABCk1+WA1OsEgCDtCEwAdhAAYlRJDlBVIgCEqE+gAtCHABCixdqx/T9WLpwz7bOlRzJtB8BiAkDIROBlfHp/y4fN77tTLneN7hvtBcBlDwEgQDXQmd2Zqn2ZKnxwxk4E1CAABAjZEjRhbHGodHCfa/YBYBABYJHt699YaIZviR9sA8BKAsC8ssdDL/+xWkl3rS7ZBID47ASAaUGpAFd1cjurnbUJAXUJANMaqracWF+v0v0nLPNp6tkje7f+coyt8FACwLTUO3WkPq5fq9RhK5x/ZeWbsTlvNRBW66Xx+rsVfE8AmNY+pd301izVqqcKd//OdsGKL47mC3Ra2UcAmA4DqW4x44Z/AwS7/2dwu/mCn2imkaV6CACTKq80ezwPW8Wgn0S6/8JTWDsPax5cXp4AMKnmSrPMJzMUuSrO/2uKaTyj+mucL9ScADCpfgqrHGcmjxXl/swh2nt+NE1Aq/YjAExqmvHwenH9cWDaaZaNJ1/Ra+kR9JjBaQSASW1QZPLy1J2h6dYzU5sXuf6fnb/ehzrrDhm2e3gIOzdwAwFgUoqYXm+eulqpRJmf3ztFLtsArR3oR7E01RD5GDhLAJhTmLfN5Aiu2vi/9vHG3qhsQ0syns83AqkeRgCYUglvm0v5av8P8+oc5Xaewe8iJRNLszUVjOxhV4IAMCXFU3wkX+3nEa9uDVaXRY4KHczaVul46xJDXQxALW+bnDsxR8FOTYZOeAsH96DZwz6hC59lXIsAMKXG3jarcVaP4/ivbgxllbZmb6sEuH6pMQFgSk97ZwDzrrg9AvnkdyRAP1FdNI5ns6evoMaeJgBMyfstHsdbfR/kk+fYXxhcJ01Vhhp7ngAwpVe8U6x4q0OLylLC2EvzHQe710gUkQDQ1GDvVwBv9d+Afq1DS49WZQDwtTbJzFcEAcASX+EdA/wO9Gs2WrqXsuh0vtagg8ZGEACm9JG3zQjO6tCMML5dbGtl0b58rRXjao0AYNEwb5ucZ7OWkM0B0JSzt0AoYRgBYEr9vW1ybsLcTDb3CijO2VsgOag/AWBK3b1tLuCr3Q8CAD/Zb5Qy/ZS3t7+qW+tOAJiSYovYuCCu2uDC8iQ0qVA1Jcib0vmjurX2BIAptVAYrcxTuTC8uRS2f1tJ03O5i9SNtSAATEl5ehfXoXz94bmg35AMP/WphLz7fC1UN9aAADCl6srp+QImI3N4pmasejIoirO3wJbW1QkAU6pg4rPqESwdJAlaWp4HWExWm6+zwUB+eAUCwJSKqFZo5Gat6sF3l9sEvAQmA+UG8HU2GjBRhAAwpVBVsuWnpr4Bb2uG8kvAAx4UxpmB1lptISOUADAn9QEeT7BVLBWvlep9pKFX4YqbwVKX+A6BBVai/CMRAOa0XJ1pXZjpBbBKZ7XPhCxp4f2w5SFcoedgYIOq5QSASQGZdqsY4jNBM3TX+5yZ2CT/9ZJhNUf+jZYZz9PVVoCBcQSASfUALC8MNcINpJRTCZq/J+Q3FwaSexAAJtUQ8suPep8C74haF/oOe0+LQnHHhgSA6O/AW99xmokBYV8JWxcex34K8GzZqq9Ad28RA6/yP/kMXkPU0X98GT1NodpXJQLArLYinlmMLLrKNVTo+SIZsWzdzAVmoG8lAExrFuaaa8NKqksXGHZeFqsT+Yx+rVzXLALAtHpq/HeufNZr4UboIxMSZOFiSkJ5Ga7bkwAwrWhN71z8eXz3RwoXKVulZrP31iXJlmiifhZKW2R7gGgCwLxOyf7WrGCdLj6ObEZzSiIAzGuO3wGQv9eOPHVPxLYhIAAEqLP/AZC3aUwKRCxEq3UmAASojA0AkNM/woKPjf7Fa5UhAEToqB0IkI+0hd4Dj2sdOH9UIgBE6AvZHrowQfEiCOv4p2aFLwgAIeoo20Z/TurV8EaqcHB4ydafbk/XKd2RABCiAqmyrXT5MluHUgsQAGK0SA5ILZIIADF6JjABeIYAEKTQi4Ho/4uhBIAoTRbunWsnD/65ecsVKwGYJBEAolRHqGdOft2j0u35neJN+36fZhEAdQgAcTooLqQ3T3niQOEBf1nh/4MSASBObwvySvx4cO/n2J3iAXibABBov0ymEKdswPbu9vSNF+z/zDIEgMgGFot4+r+tsaKkxDKxACyWCACRDdQSMPbTPsg321ShANQiAIQCIJk+BTBONz3rI4H+/0kiAMQC0MCkR64wbNXxtjgAGhAAggGAtmDjkP6B4zc0Q5T/f5UIANEAPGHKI2zJWbkPCALgCQJAOADSDhMOWcvYRkyKEP/vkAgA8QCYmBNMYt6qqZ/N5gEJgCzfabsMO+RN5kZCTgrw/65sBIAFAEh1jIYDL3BMzPYXEASsIxEAVgAgTTfoEZ6NXsIumwZgukQAWANAgQvGPMJ12Nwo08nDBQgAiwCQuhnyyHauNqqaBaCbRABYBUDQZiMe6cM31jT5DtgcRABYBoAUk27AJbF8bSw3N+UYIxEA1gEgTTDgE85N398wBcAEiQCwEoC8/AsFz3M20dCM/4/mJQAsBUCqxb1MaCNnC2ZGgam1JALAWgD4g7WzORsobwKAfhIBYDUA3Nlh8zjtF7NJHhgBgCjiGJ9XeJfo5TPs/2MRBIAPAJBq8y3lWMVpPtyo/9NqSwSALwCQBnD5ZT2n9YeMAjBAIgB8A0DQEh6/HOC03smg/5cEEQA+AkDKs83CQNBoY/7flkciAHwFgFTwb+vyc5YY8v/fBSUCwHcASFEc+4d+ymU522kj/j8VJREAvgRAepB90m4nl+FmRvx/+UGJAPAtAFJ99q2hq/LYnWck6bS+RAD4GgDpKeapYZ4teyOSDUwBPyURAL4HQOqcwRqhKcVutDe//zM6SwSAPwCQ2rAu42DPCo04y+3/lDYSAeAfAKRGVxlXBjIf3MCfeHy1kUQA+AsAKeYMm5f+YFwZEMu99OBMjEQA+A8AqewhkS+BnPt5/X+orEQA+BMAqdB2Nk+1YLAVsoI747yQRAD4FwAp7EcmV8U31rXk+ZbX/z+GSQSAvwGQPCOZXtzJrXTsMBw4rlgDOMIjEQD+B0CSmsUxRQM6aBrJ9x2n/8818dkFEgA6KraRKWAzXuOJXf84p//XFZUIALsAIHlGMb0GTmCvgZD3M/jcnzHcIxEA9gFAkh5neg3IC6HP9vCBvNtCnH3MpxdHADCoOONWnzt75/euWGY093LQRUUkAsBuAEjS04z54inLR3WMyXm9Qo58VV/55l/u4O+RFr6+MgKATblHs68byzgfnyEbUcqInBIBYE8AJCl6rWyxfq7oh8siANjV4bSV7j/d3i8XRQBwKO8wy46Yujgsr0QA2B0ASQobdNYK958dHOavKyIAOJWz9wnR7j/RO6f/rocA4FZI10Mi3X+oa4g/r4YAMBIdbrM8XYz305e38fj3WggAY4rsK+A0sJ19I/1+IQSAYVUZY2r355NjqtjhKggAM6+CJtOPGvP+0elNPPa4BgLApEp3nnOKz/mn5nQubZ/+EwACVLHnd+cYU32+61nRXn0nAASpYL0uYxYfQLcYSjuweEyXegXt128CQKiyV2zVa8jICTMXrN6059ixPZtWL5g5YeSQXq0qZrdrjwkAl4sAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAH4DukSRB6h6QAJAsFQFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAeCtjMMrpn38br9uHTq/9tYHn8/ddoUAcA0AKRvfe7pSqPKiIut1/fI4ASAMgCPaJnqyXfdCTSPVDNzJ3SMa58Itlus2L4HFSjvMwBiOZ1ABxMYERwCwU9tEKbab1FHTSBle758dF6N7ceFdftE39C1WuyF7Z35FTGQ75QgA1urY2MNyj1Lv07RRgM/9G5sHs11f+bGJOqbicyBVs19l7s4QxESsM14BC3VsjBbw5gvhcn9jjiuM/CRJ21orrOZC5g5VQSx87gwAvtCxUY/lHnXTMZLMfLd3NOa8xqKTMrTsfYnV68Lao6OIAc8ZZwDwsY4Nz0WGYVJhHSPnGG920qBg/qusu1/D4kXMYDFWAD7jGkUEHgBD9Yx8o29jg56NQ2z3em15Q5eZ48N03OZjWK1djAA0Q+pPcggAr+oZ6ahv43U9GztY7nR6/yCjF1rnNGp1ElZnFJv/40ORJ+M5hwDQSc9I/gxdGyX1bKxj6EjcoyautDiK2OlsZgY3svw9Ur2xUwJBzXWt/KpnYpuuicX6/dha0tSl5pqPGa6L1Ai+xARAZ6T6VKcA8IiulTf0TLyha2K2/odkDpPXGvQpYnksVmM+i/8zIxF8zjsFgMq6Vqrqmbhf18REy/2PfZdrxLr/jwWA35HKTRwzF1BM38wJbQt79S2M9oH/paApsHEsqhyZyXB73kYq/88xAOTWNzNF28JwyexbZF0OIZcb9A1f/7Yz3J6HkEjyBacAkMpgpqW2Cf15G6mXpoFzRQRdb9hhrifUcP3b8y9S9XHHTAefYxlhJ5mYT76p5zXHWc2EXXCddJ4xSm392zMFqTrDMQD8zWJnhZaFsQwGntIy8KFu9ZAyDV/4v9iSHv2G3uOZzst2Xvf2tEA6dMkxAPzOYkfzCV6XwcCjGvW3ZNesmvOFn07eDkWl/rOiY6h2Q8FboBADVvprvbuTiOSkPOmcjKBVLHZKaxhAI21Z9TBe/3JprYpVJij+186PKafZUvl4jkilbpR7KVLxS+cAMI/J0D6ZP9aeVRXw+s9qVCu0DBoyLCqk1VRXoMprSNmCelHuHnC90MvOAQAa5agfs2M4Ztug78pI7lHWzRfHKbjOSc3o5Q/qCuuxslt07k5x7s+igANgNFBtoOovsezz7UWgMV0urPqJnGjnPcPR/8+0ARrzhsVS1fkK2DPjHWP5krMdBMBgoNpy9dgKfebNVL1XP4F6koZU74MP55ZpdXuBRuLILPaMpRqGQlw5rjoIAOgtd0gdmJmH1W+pGh99DvUESSu6mIc3sq+Xp3NdMexuCdJOVarF/1EbcAA8B1Q73Yo5kqPOuj05DerJEbj6e2jXX9XreE/8stXZB6l5kaJfaSanB/F/PQYcAE2BalffZx4vz1cWjFa/FG7oD/gzuyDW82bpeh1Pa8wTusbWLbQ1kC+b85qTAICechlAcGAzXF11BFVv+WuoJxvB2hOwjpdgWAF4qQxWO9vfzMnvEVqg/Reu81/ZSQBUAMY48gX1H98CayeHKcsthhfjgCO6tCjJyJNZz6nQerYEbJmZRrpTCjJAmecoAIAPpPyyXJZlZAVFyoKvyj9APQEnamdj/X6IZaZeluugs1cXWf+bpTe5g6S54h0FQIi6VinwcMGTUO2XVNNxsrwc6gmYUoAtuZF+ZsvX/BW98FHMsMVw50s/KzsJgASgViVwtcg0KJE7PxBZ+RHqCRRKXId1+0nGjH35acxCTfWUQwjyIXgKtY5MUnzrKABOwtGRjWwfv2ugwR7o16FA7TexbrMu2ZAPYBNRweqBOpZ08AVnplvuREcBAF1lg+sPBvXUex5gfV8vVaFUWf4N6slrHK/wB2VmxWJXvkpVdCpSsjVPkPy6npMdBcAvyBO4Css9VSeUNsdm319UV76GRXNHsgMwEbtydRLiWeRpkTeNL19+gbMAgCa820CjO0kaoKr8p6rMJ9f/+gfUk2fUTS/Hen2YHYBzWJJQXXXZ+kjR9bDp87DpPEnOAmA28t8KzPJXV1VWDxVv7CaxD+rJY+qm+yOdriVzqAliJET9pv4EKToItjwLLt1edhYAUCzuRgLYdiC+psqDe0JZpMiNvx5k9Gp1pNOf8AAwHbv0Naqix5CSVdgnSSQw2yCgARiO/Eukhupfe6oqUtYJvdHR6onAbObfANetYIkBwEz/w0hRcN1LGrzpTXiywwDoB9R6D5kjUI7k1d+KN1PlTkE9UW/HgK26zSdzCcsQbKAuOhIpCi7zRLZO0s0iDDQAgMGeNBb8wlM/K9+Bo4VxUE/CWONsGslHoNpg0WB10f1IUXB6vy9cdrHTAIBC5JNv/ADsrRMUp5MPXunmn6+AATfVdDKy5gqMGHCmtN0UkLVTCS4ZlsI2SXbjmzHFaQBAmzLcTKmCFox4r6e+qvqO739rkh/simp+F1sONoMPADStHUhBeYt96gFZL/OC7DQAoHV9C7GE2Je9qi6B4sA3JgjYRlrYcpAdfADEYde+VV12B1K0n7oostxpmeMAKI2GUYGtYypqJ9vfyRoCB+Z7lekcWBQ/hQ8AdHn7SvbpncpsT8brA9RUxwGQD6h1awfWGcAvXjNnD2DhXnDebRPbM/ZWKIFH2MfdbMZvnruDV69UR3ju8EXZaQBkQh/jO9G4yZwsVU+hcYI8LLMz2Fx+NC8AjRBDn3IkEKjGHUvgciscB8BlqNbtjDog5a6zVqg0Z4LGU0U1i/4D0uXavAA8gxiCJqAzkZFnO91pzpuKSHMcAEcl/EHfRf1L1l2/X1D+2FIjy0y9pco0pMvNeAF4CTEE7nP/Mly2YCZTeIlld9kAA2CnxhcblN17VGPwNf3OL+CCuo8Zw3JteQFAIjY35zRV+hEprNgs5h+41GrnAQAGPG9nSp/WfFn+pZorOqs51n5X0TK2JqwHLwDDEEOPgRH+fHBhRQ4huLhJKpDmPACggHzonR+j1b89j08j3puBB3dk6atoGVupMZgXgDE8AV71i+uWFBs/twQLdZOdBwC09iXizo+vqH8rfremavXYh3d/qszy/mwhCgBsHzf4hb0ILhwSrz3NeVM/ORAAaK/4End+/E5jEJCuWmy3XzO6qHoldxT1CsA2f4DzPJKQxR5L9WcCC6U7EADo3+duvO88ENK7sypmk/KH++8ZrcUyun9d1CAQeahje1ogG5L0zlpmkAk0AwwAaE72XupXNfWPfbBEkoE62ZR1FC2/j3T5cV4AsDNhkHTvb+DSXlHuamCRtU4EANorvr7WSL0Olo+dZY1dQ5Z4+yRRgSAsMxyZub+KbDOW5STC0+BkRmSGEwFoofk/CAREc9yaDklQxsoLZ7k90IpzqaSi5W9FhYKrIYZ+Q8o/CRfPEqiCjxl6RXYiAPWASvdWSlwBMqNvzbKu0AoSgycQ3MeWciUV5QUA2cdJOsCXRpplkNoeLLDekQBAX2xZkh5qqn+dAE+rLdbJMpI8ipZ3I13OzjkdfBm7dmw35zg43z/i7iMMPii0SIYjASiuHUQHdpC6lRVZVfHXXIm6CdWKRdWnsT5v4wMAO68qG+qwhnCFuzvGwfuKvio7EgDoqzjLCqDV6l/L3fj7uSCtsBv8ia9YhYvuUj6FD4DxiBn8sFJkW5L3tTLlsS1OAh2ANJ2ofRKwi9+NDZbnKv84U39+Tnm4XzjS5+58AGBH+lRGa/wLLyVoovmEKJbpSADi9CIowIB+GTBT7PHadrs72JffFW3XRvr8MB8A2PqiTngVePO3vLffGWngZjKvy44EAFzFNUk7VPz29T9HKf4WyzDRp4ykY3u4h6by+D8NO2tkPF7nA7jG7lu/buH6qAxwAMC94rNutLkHfFQeUv5tnJdVeOOHhax3ajsPAL9gVjZxYn938AHmA5fIdCYAq6FK32vn3N6XKU9W/s17Od8IsC8zFW2j2wO8wQMANhWUXWsV94NglduHiIHbzvSVnQnAfKjSjzoDur/k1oq/KLb0GMf2TEb2YZWiMtn9n4klhT+kVetdsEoFjYS2zQ4FYIruw3Ou+vcZGRHAsEDP6r3PrDsaiPX6F3YANmI2BmrV+hOuc3MkewD6pZTsUAA+0BgM3dIFdd54D9VJsYrFPLPYXLIM6zVHSkBvYxDBOZ9L0EjxAKcCAI7Ej3gVUUeDq43WmedZwObWK9j2LvmZvwMyiiImdI4CGYgPPl6EftnqVADAE1G81wCrF1QG5dSJkq4A+6LeWwVb06O9F2tWzcEs6JwKuxmsdHNLgfLAD2VkpwLQFqqUxPaWvSfl4lr4gJYnZeZBQFnGCaGUKMzCQiNjx9xpsnwW+mGQYwGANk8MVkRawvUayafMloZPk6+n/h5Hzxsbw3az0RMLI3S28kJW/mxHXl/bHQsA9CWWV1HmKb1GVLumgNuEQWeQo6bznmO515cisPr99aquAatNgKOY5WTHAgBl8BdjzN26q++UVo+CxUqzT+UyzggNwGpn+0evanoBZJhSw2xkKrAAKAzUqagoc1injRyqbXnh44jzA+3XwIx6Nujf6jXoiaNP6FcGZyyj5HgoPLnLuQCEsMzGaZ/UCQzu4uHgLND+XNRqxF96d3p/PrTycn0/wUeCnvoZjxA6EYBE9GMoq17RbkO9jXwGXBAYmKWXQs1Gndbu+3mcy/8w+El91MkNLYAWGr7lXADAHf2aK0st1mwi2xm1XXiK9izQg49xww9d0/wCrI/XZErfBL+A+z0G/PFP5wIA7oivWppzTfN07zqAXXh0fhAoeVXjI7PBGbznZxvzvJOY58FyBeuPiZwEALhjinpRZaxWEx8yZ2qDX9NDNUwXXISO/yI1Hkls/7HxORjv4dsOBgCcjlEnP43UagJKv4c3WVwLPspjtIx3Bc9nynhH68R6xgUcyBJwtfY6GADwICX1mGebRgvgQh7YqfD/876cWhdQbpJqi/LELx/WqlE2ntFTM9lu4QOygwEAz98drY6cF8RbGALZrQsWnQV3YqJOmKHd6qwze3t659Mek25g9dTFYKZbOMzJAIArdD9Tl2uPt7AFsvsYWBQ7Dbq53lUUbdZtxOwN2xZ+3LtlJb2yfdhd1ZjpFv7lZADAfRNn8jwti4LpW/CK7VHYiL6wuAuumcTuqoksBqvITgagM1NoH4kX3BScvNOO/W2hmRrEraizHK46HcRgcbijAXiGtc6DfA105hye9xJ0ufft4/JVXQaTBxwNALgjMpRNh53vFA5nbsBnQeBrdZKbCLnakJ/5fDVW32Q12dEAgGc2QHNf2P6KyCGK8B47rTQmJR4VcLE5V3L66rC+zZHOBqAMVOcQ9C+KHL7+DWwX3ruxoUZPEmJNX2v4Bm5nxegaPeRsAMBP6jOsuWOSlP0ybBfeu7G6VleumX0L5N/G7StkIXjWCSnZ0QCAe8VLYCQNXuzThOsDq7x2js5rpq405iC/r7DjobWCYo4CAD7dCfyyh9P8JnJFWQvr3LppIcYvtEeybET365g97GwAjkJV8sBlS0Cs/Msz1Srl0Lt3v5YzeJlhc2VjGqJtt4bsbAB2QVUi2WNGNfjyrSTdBT+J/T1GrrLdSYP+R7YDuqsxDgdgHTj/xv5PPYIv6Vo6r3/7fq/CfY2V18nGVVLT9FGHA/A9R+gDOul3D2Z4s/E3avpXfO+BMpPSTPhf1hx51pIdDgB0LhiwgOeWarE+K2R0+TVbenXaF6WZr6/6vHTZlNZrWR/rdADAbztss+bJDZQahxo+BPeGNVKTtugZlg+CqJfXyGaVUQi3H3Tc6QCARy08K5sXMnu4lN3Chc/rauZrhDYeu08Woa54G7VlpwPw22RAawTc1eTJoP7hMnJ1yWuVsX/9xfGyIO2fjGqz4wGwvy5v/XpYxzqVStznkYIiomPb9Bo+5Yffjtq6ywSANUpMDZCOriAA3C16AhAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABIF4ryCG+lr2ygueSQ3ytubYCYBw5xNcaZysABpBDfK0BtgKgAznE1+pgKwAqkEN8rQq2AoB7s3OSSf1lL/8b2eiOZEajbQZATXKJb1XTZgBIq8gnvtQqu/lfqppBXvGdMqraDgDoBBiSVZppP/9LhY6TX3yl44VsCIBUPZE84xslVpdsqfbkGt+ovWRTdU8l51iv1O6SbRUbR/6xWnGxko0VtZE8ZK02Rkn2Vsu95CTrtLelZHt5Oi1LJk9ZoeRlnTxSQCiszdTlu85lkstEKfPcruVT24RZ4av/BwRNdQiyablxAAAAAElFTkSuQmCC":i,i=o&&o.endsWith("mp4")?"data:image/png;base64,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":i,this.fileHasPreview(o)&&C&&(i=C),H.preview&&H.name&&(i=H.preview,o=H.name),Q().createElement("div",{className:"file-upload"},Q().createElement(s(),I({onDrop:this.onDrop.bind(this)},D),Q().createElement("div",null,E().translate("general.drop_files"))),Q().createElement("div",{className:"selected-files-box col-md-6"},Q().createElement("p",null,"Selected Files"),Q().createElement("div",{className:"selected-files"},C&&Q().createElement("div",{className:"file-box",onMouseEnter:this.showVeil.bind(this),onMouseLeave:this.hideVeil.bind(this)},Q().createElement("img",{src:i}),Q().createElement("a",{href:C,target:"_blank"},o),G&&Q().createElement("div",{className:"remove",onClick:this.onRemove.bind(this)},Q().createElement("i",{className:"fa fa-times"}))),k&&Q().createElement("p",{className:"error-label"},n))))}}},4656:A=>{A.exports=require("i18n-react/dist/i18n-react")},6689:A=>{A.exports=require("react")}};var C=require("../../runtime.js");C.C(A);C.X(0,[9488],(()=>(A=>C(C.s=A))(9612)))})()}));
|
|
1
|
+
!function(A,C){"object"==typeof exports&&"object"==typeof module?module.exports=C():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],C):"object"==typeof exports?exports["openstack-uicore-foundation"]=C():A["openstack-uicore-foundation"]=C()}(this,(function(){return(()=>{"use strict";var A={};(()=>{A.n=C=>{var g=C&&C.__esModule?()=>C.default:()=>C;return A.d(g,{a:g}),g}})(),(()=>{A.d=(C,g)=>{for(var B in g)A.o(g,B)&&!A.o(C,B)&&Object.defineProperty(C,B,{enumerable:!0,get:g[B]})}})(),(()=>{A.o=(A,C)=>Object.prototype.hasOwnProperty.call(A,C)})(),(()=>{A.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})}})();var C={};A.r(C),A.d(C,{default:()=>D});const g=require("react");var B=A.n(g);const e=require("react-dropzone");var Q=A.n(e);const t=require("i18n-react/dist/i18n-react");var s=A.n(t);const r=["value","file","handleRemove","handleUpload","handleError","fileName","error"];function E(){return E=Object.assign||function(A){for(var C=1;C<arguments.length;C++){var g=arguments[C];for(var B in g)Object.prototype.hasOwnProperty.call(g,B)&&(A[B]=g[B])}return A},E.apply(this,arguments)}function o(A,C){if(null==A)return{};var g,B,e=function(A,C){if(null==A)return{};var g,B,e={},Q=Object.keys(A);for(B=0;B<Q.length;B++)g=Q[B],C.indexOf(g)>=0||(e[g]=A[g]);return e}(A,C);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(A);for(B=0;B<Q.length;B++)g=Q[B],C.indexOf(g)>=0||Object.prototype.propertyIsEnumerable.call(A,g)&&(e[g]=A[g])}return e}function I(A,C){var g=Object.keys(A);if(Object.getOwnPropertySymbols){var B=Object.getOwnPropertySymbols(A);C&&(B=B.filter((function(C){return Object.getOwnPropertyDescriptor(A,C).enumerable}))),g.push.apply(g,B)}return g}function w(A){for(var C=1;C<arguments.length;C++){var g=null!=arguments[C]?arguments[C]:{};C%2?I(Object(g),!0).forEach((function(C){n(A,C,g[C])})):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(g)):I(Object(g)).forEach((function(C){Object.defineProperty(A,C,Object.getOwnPropertyDescriptor(g,C))}))}return A}function n(A,C,g){return C in A?Object.defineProperty(A,C,{value:g,enumerable:!0,configurable:!0,writable:!0}):A[C]=g,A}class D extends B().Component{constructor(A){super(A),this.state={show_remove:!1,logo_preview:{preview:null,name:""}},this.fileHasPreview=this.fileHasPreview.bind(this)}onDrop(A,C,g){if(A.length>0){let C=A[0];this.props.handleUpload(C,this.props),this.setState(w(w({},this.state),{},{logo_preview:{preview:C.preview,name:C.name}}))}C.length>0&&this.props.hasOwnProperty("handleError")&&this.props.handleError(C,this.props)}onRemove(A){this.props.handleRemove(A,this.props)}showVeil(){this.setState(w(w({},this.state),{},{show_remove:!0}))}hideVeil(){this.setState(w(w({},this.state),{},{show_remove:!1}))}fileHasPreview(A){if(!A)return!1;return/(.*)\.(gif|bmp|svg|jpe?g|png)/g.test(A)}render(){let A=this.props,{value:C,file:g,handleRemove:e,handleUpload:t,handleError:I,fileName:w,error:n}=A,D=o(A,r),{logo_preview:H,show_remove:G}=this.state,i=this.props.hasOwnProperty("error")&&""!==n,k="data:image/png;base64,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KCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgAACgkAACgkAACgkAAAgEICAAAKCQAAKCQAAKCQAACAQgIAAAoJAAAoJAAAoJAAAIBCAgCAdgdGDxhBAIxzz5LHHTXpCoDddMwKx9492YoZEwDjfHLJ406ZdAXAbjp1hWPvmGzFjAmAcW5b8rinTLoCYDetct/5L5OtmDEBMM4/LHnceUmOn3IIwA561pLH3Zfk5imHzJUAGOevljzumCTfNOUQgB1zcpLnLHnsh5N8esItsyUAxnnfCsd+/2QrAHbP/iz/IsD3TjkE/i/HJbkzi7efLPP1gjEzAbbKI5N8LMvft14yZibtbszyP6S3JfnCMTMBtsZvZfn71c8kOWHMTNp9c5b/QT2Q5I+SHDtkKcD8vTSr3af++piZkOxN8o9Z7Qf2XUn2jRgLMGM/lNXuSw8kOX/IUrjflVn9h/Zv4voAAMniIfw3ZvX70XcP2Aqf48gkf5vVf3j/K8nPZbWrXQHsiqOTfFeSf87q95/3Jnn65ifD53tWVv8BfnAI/F6S70lyTrygBdhNRyd5fJLnJbkuyb/l0O83f2HD22dpz+gBfNarkrxkTee6L4sfcoBdsXdN5/lQkqdl+c9j2VkCYD6OSfLHSb509BCAHfXpJF+R5K9HD5kDVwKcj7uyuOTvLaOHAOyge5NcFr/8P0sAzMttSb4myT+NHgKwQ+7L4gWDN44eMicCYH4+nOQZST44egjADrgzi8v9vnHwjtkRAPP0kSRfnuSmwTsAttmtSZ6Z5K2jh8zRul5VyfrdmeTNSW5PckEWb4EBYDnXJ3lukptHD5krjwDM33VJzkrya1k8jwXAQ/vLJM9OcnmSjw/eMmveBrhdzkzyg0lemOT4wVsA5uJAkj9M8sosnjp1HZQlCIDttC/JxUm+MclXJ3nU0DUAm/epJH+a5A+yeI7fW6hXJAB2w6OyeJrg9CSPSPKweH0HsDsOZHGtlE9kce3/DyX5+yze2w8AAAAAAAAAAAAAAAAAAAAAALB9/ht8xmXxSgNe+QAAAABJRU5ErkJggg==";return C&&(w||(w=C.slice(C.lastIndexOf("/")+1))),g&&g.hasOwnProperty("name")&&g.name&&(w=g.name),k=w&&w.endsWith("pdf")?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAADAFBMVEUAAAD/AAD/AAD/AAD/AD//MzP/Kir+JCTfHx/iHBzlGRnnFy7pFSrrEyfsJCTuIiLvHx/wHh7wHCrxGijyGSbyGCTnFyLoISHpHx/qHijrHSfsHCXsGyTtGiPuGSLuGCDvHyfvHibwHiXwHSTpHCPqGyLqGiHrGifrGSbsHyXsHiTtHSPtHCLtHCHuGyHuGyXvGiXvGiTqGSPrHiPrHSLrHCHsHCXsGyXsGyTtGiPtGiPtGSLuHSLuHSXuHCXuHCTrGyPrGyPrGyLrGiLsGiXsHSTsHSTtHCPtHCPtGyLtGyLtGyXuGiTuGiTrHSPrHSPrHCPsHCLsGyXsGyTsGyTtGyTtGiPtHSPtHCLtHCXtHCTuHCTuGyTrGyPsGyPsGiLsHSXsHCTsHCTsHCTtHCPtGyPtGyPtGyXtGiTtHSTuHCTrHCPsHCPsHCPsGyXsGyTsGyTsGyTtHSPtHCPtHCPtHCXtHCTtGyTuGyTsGyPsGyPsHSPsHCXsHCTsHCTsHCTtGyPtGyPtGyPtGyPtGyTtHCTtHCTsHCPsHCPsGyPsGyPsGyTsGyTrGyTtHCLtHCPtHCPtHCPtGiTtGyTtGyTsGyLsGyPsHCPsHCPsHCTsHCTrGiTtGyLtGyPtGyPtGyPtHCTtHCTtHCTsHCLsGiPsGiPsGyPsGyTrGyTrHCTtHCTtHCLtHCPtHCPtGiTtGyTtGyTtGyTsHCLsHCPsHCPsHCTrHCTrGiTrGiTtGyLtGyPtHCPtHCTtHCTtHCTtHCTsGiLsGiLsGyPrGyTrHCTrHCTrHCTtHCLtHCLtGiPtGiTtGiTtGyTtHCTsHCLsHCLrHCPrHCTrGiTrGiTrGiTtGyLtGyLtHCPtHCPtHCTtHCTtGiTsGiLsGiLrGyLrGyPrHCTrHCTrHCTtHCLtGiLtGiLtGiPtGiTtGyTtHCTsHCLrHCLrHCLrGiPrGiTrGiTrGiTtGyLtHCLtHCLtHCLtHCTtGiTtGiTsGiLrGiLrGiLrHCLrHCTrHCTrHCTtHCTCzHG9AAAA/3RSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7rCNk1AAAU/UlEQVR42u3dd5wUZZ7H8WfywBCGHIa4YEQBA+bEKiiKhD0ziLqLiiK6ouiJB4IJ5Fw8XVEExMCKsIqgIihhRRBYEBUUEEHJOQ7DDAOT6mB377a6q56e6apunqfr+Xz/7tdTv+f5vWe6KwtBCCGEEEIIIScu9X/b99XPFqxYv/eoFagULBvSkO5GTsoFg+YdsIKbw4/QY3lq3TslyM3/Z95IotGuSe44+ahlQsYn02xn6g7ZZJmSdxAQntojCiyD8pcUWm5PzecPWWZlUipd//d3/wMHLePyAQL+L6cvskzMR2m0/njShx61zMzH6XRfiBYrLGMzPYP+X3vAMjgzMw1vf9LgUsvozKpkdP8rf2yZnrmVDe5/1fkWmZdlbP9rLKH9x7KgiqH9r7Oc5v8jC6uZ+fe/skKrU7h7a6JmR0UF/L26iYd/vipnVTZPfuqmM2sm8sGyRuFTyt0gmevSbPMA/CVS84um9zs18afoALC1ya+SCX9b07T+D43Q/tWP1A3EHJ0ARON1kjl/X8us/veQt39++6BM0gWAyPlZMu0VdUzqf0vpyf9FVwVnlm4ARIOfJDNfWdec/qfKDgDs/32QpukKQNRbJfvmq28MgGdkl0gEawncAYi6P0qmv8aUGwYuLnGd/5E/BGyeEgCituwE+LpGZhwBcP8lvLmdMASAqPWdRMCvTUwA8Jjr3JcE71ewFICosUwiYEOz4Pe/Xp7rzl9VYRAAkb1UImDjbwIP4E23ec8J4lnxCABE9cWyI+AtA97/c9wuAfp7IK+LiQRAVF0oEbD15GADmOky5/XBPAYSEYCoIrsaZvupQe7/mW6HfwI648gARNY8iYCdpwcYwDsuE+4ijAQgKs+VCNh9ZmD7n1PknO5oYSgAUWmWRMCeNkFdkxEuB0ArGwtAZH4uEbDvrGAuSYbLXSAXCXMBiIzPZKfFzg3kknR3zvQ9YTIAkf6JREDu+UFckr865lnQyGwAIm2qRMDBC4O3IlUPO6Y5RBgOQKR9KBGQd0ngVqSnY5KHahgPQKROlgjIvzxoKzLdMceXBQBEykSJgILfBmtB0hxPgSppBoDjAiZIBBzuEKgFucAxwakCAMeT/Lbsvqirg7QgzitBbgTAvwSMkwg4cm2AFsRx0COvEgD+laQ3JAKOXh+Y9UjODZ/cBAGA/xfwmuw2uW5BWY8zHHO7GQC2vCIRUHxDQNbjBsfU6gPAnpdkAgLyh/JE+MTWCgCE5EWJgJLbArEe48PnNRYAYRkuEVDaKwjrsSB8WvcBIDzPygTcFYD12Bk+q6sA4IjsuQllvRN+OTIck2oKAGcGywTcm+jLUcdxkCsZAC4ZKBPQN8GXo7njbgABALc8Jnt4xkOJvRyOOwJ+AIB7+ssE9E/o5bjQ8TQYAEjykEzAY4m8HB0dD8oGgCx9yyQCBibwcnQNn8w0AEjTRyZgcOIuRzcAVByAuFsm4GkAGAFA3CV7k8ZzADACgOglE/ACAIwAIHqUSAT8CQBGABC3yAS8DAAjAIgbiyUCRiUBwAQA4ndFEgGjkwBgAgDRVfZS1XHJADABgOh8RCLgrWQAmABAdJIJmJACAM2TEwsAomOhRMDEFADonXrhM97laZirDksETE4FgNbJDp/xAW/jtC+QCJiSBgCdU8lxfb/HH26Xyd6wMy0dADrHsQ/n9eVwl+RJBHyaAQCNsz18ymd4HemigxIBMzIBoG9+CJ+y91u9z8+VCPgiEwDaxvFk9Ee8j9XugETAnEoA0DWvh0/5XR+Dnb1PIuBvWQDQNI4r/Ff6Ga3tXomAr6oAQM90cdzdk+1nuNa7JQK+rgoALeO4Gcry98CfVrskAhZXA4COSXLsvL3mb8DTdkgELMkGgI5xvBJks88BT9kmEbCsBgA0jPMlyX4fAX7SVomA72oBQL9c4+jTq36HbLFZImBFbQBolyzH1RwHfB+2ab5RIuDHugDQLrMdbfL/ivSm6yUCVtUDgG5x3uq/yv/1vE1+lQj4qQEAtD8SYHXzP2qjdRIBP+cAQLM43xL+Qwwu5234s0TAL40BoPt3gHVHDIatv1oiYH1TAGiVus57e7bH4sh9vZUSARubA0CrfBCnezvr/CARsKkFAHTKlS7Pfb04FgPXXi4RsOUkAOgUlz79GpOTdzW/kwjYdgoANEovlxa9H5ORayyTCNhxGgD0SZrbgbuHYzJ09hKJgF2tAKBP7nJ7BUSnmAxdbZFEwO7WANAmKWvdXgsbm9fDV/1aImBvWwDoO/N/dOjMmIxdZb5EwP5zAKBN5rp+T7eJydhZX0oEHGgHAF1yhuujfg7E5HCAqDxHIiD3AgDoEvdXARXeEpPBK82SCMi7GACaJGON+0tAXojJQz4yZ0oEHLoUAJqkneSJf/MaxcTXdImA/CsAoEmelP1U6xmL0dM/lgxfcCUA9Eiy7Kea9UXLGAyfNlUy+uGOANAjdWSXc1tH/1TT//CpH0hGL+wEAE1+Bsge92ZZB5/xf01/6iTJ4Ec6A0CP3FAmFWAdHu37sFDKe7L/MF0BoEcetSJl2cM+L+hMeVcyctHvAKBHhkUUYJV9P6yDn+sFk9+SDFzcHQB65M9WeSldNWnQ7ZeeWifLy1NAk8bK9gZPBoAWSXrZUpNPAaBJnlcDoKw5ADTJg6VKBDwAAF3SpUAFgDEA0Catf1EA4CMA6JPsT088gGkA0Cn9CgFgNADR6hsAGA1ApPQvAIAwOk0mAcDwXLIIAIbn2mUAMDxXzgSA4TnlxT0AMDvp3d7PB4DZqdR51HoAGJ7Gt766MA8AZiepWYd7nh//yaIfft6wZauP7AWA2ekGAAAAAAAAAAAAAAAAAAAAANQEAGoCADUBgJoAQE0AoCYAUBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsNgAYLEBwGIDgMUGAIsNABYbACw2AAAAAAAAAAAAAAAAAAAAANAnABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAACoCQDUBABqAgA1AYCaAEBNAKAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCxAcBiA4DFBgCLDQAWGwAsNgBYbAAAAAAAAAAAAAAAAAAAAACgTwAgACAAIIFZ7E59pHk9vKblfRI29/6+xw0dz2qUBoDwTLdMSunG2aPuOTsNAKYC+GeOLBh6eToAzAVwPAcn3lAZAAYDOJa8cRcDwGQAx7Lq7kwAmJ3dg6oBwOzsG1gFAGZn+51JADA7S88FgNkpebESAMzOugsAYHaKn0wGgNn5Wx0AmJ1NZwPA7BTeBACzU9YfAIZnJAAMz+gkAJid8ckAMPx/AAAMzzAAGJ7+ADA7pV0BYHbyzwKA2dlYEwBmZ0YSAMzOfwHA7BSfBwCzs7YyAMzOqwAwO2UXAcDsrEwDgNl5AgBm51B9AJid8QAw/KxQGwA4s793pNzTb+DISUvzyh9mqGyEu+8fMPzteTsqXlDvKBPFXD8GgDNbKzBuUoueb+2KPEzbcoao3Wn49xUrKNpJRzPZcwHgCcDxJF/1frEPAMfTbOA6xQCmA8AzgGNpMqbEF4Bj/0quW6gUgNUKAD4ACNF6qT8Ax3LtGpUA3gKALwAidbhfACJ9SJE6AEcbAsAXACF6FPkEIES79coAWIMB4BOA6FLkF4CoMVsZgM0pAPAJQPT0DUCkvasKgNUZAH4BiBG+AYiksaoAfAiACAC6DAnLkw90P8VxQWXq0sgATrWPMPjRO6+o7XJY4f2KAOgyrvxEOd/CagCQA3BdzT1vXRK+N1gSEUA35wVZr1zo2BlYUAEAQ+JwRuAOAEQJ4Fjmnhy6oTFRAjiWb7uEFVtvhxoAMwAQPQAr//qQDTUtjhqAZc3MCa22Y5kSAEeyABA9AKv4mpAtfeABgLXnstByxyoBYHUHgAcAVm4z+wc7ewFgHQndB6u1XwmA8QDwAsCaaf9gRr4XANaRS0PqHaAEwGYAeAJgXWH/5AxPAKzdjeyDVN6jAoDVAgCeAIQcQhnkDYA1N+SowtNKAPQGgCcAhfZncHf3CMC60769RqUqALwLAE8ArPa2T7bxCmB7yKPc56gA8BMAvAHoZz+M4xWA9aB9g/epAFBaFQCeALxg+2SmZwBr7RtspgJA6M9ZAFQYwCj76TzPAKyQF/xtVAHgQQB4AvCK/YygdwD/bd/iJBUAXgOAJwBP2T6Z7R3AcvsWH1cB4EsAeALQ0/bJFt4BlNpf7ddVBYAdAPAEwH5OuL13AJb9jU6tVQAoywCABwC/2D/ZxweA2+0nhFQAiPfB4IACeDLSJ6MB8J/2vYlSFQCuAED0APbXsH9yrQ8AI+wDHVQB4DYARA/gHvsHW1o+AIQ8sGu3CgAPACBqAH8N2dKTfgC8bh9ppwoAgwAQLYDPQ87hpKz3A2B0hQGc3DlS/ugZwEgARAegZHhqyIZutU4MgMg51zOAsQCIBkDR5DNCt5O+LsEBvAOACgLI3zh/1G2Op+0PshIcwPsAcAdQsbQrSnQAUwDgA0D9zVaiA/gQAN4B1FhuJTyAiQDwDKC+a/8TDMDbAPAK4LwtVgAAvAEAbwDSBske8JRYAEYAwBOAzqulw8TnUPDlER8NMc0zgCcAED2AjNuWRRjG88mgPZEA9InTuYA+AIgSQNXrx+6POEw0AIbbR85XAeBGALgDSE4NS2Z2k3O6PDzuu+LyhokGwGP200qWCgAXAcDLNYGxAmC/HKO+EgCNAaASwHkRf8mfAAAlKQBQCKDE/g7Hm1UA2CgAoBDAt/YtPq0CwEwAqAQQshPwmQoALwFAJYDz7bsd+1UAuAcACgH8VM7R3BMA4DwAKARwv32DQ1QAKMoAgDoAWzLtG1ytAsC3AgDqANhvMRbtLBUAXgOAOgBfhBT8jhIANwNAGYCdDeyba1ykBEA9AKgCcDj0LMwYSwWAVQIAigAUXh1SbusSJQBGAkARgF0hzwcTye5vEY07gPYAUAPg4wah1T5qKQGQmwoAFQCWdgor9vwiNQAmCgCccACrR7YLrzVnm6UGQBcAxBtAyGvjBvXvdVlNZ6nZKyw1APanAyDeACqQ6ostRQDGCgCoB9Dge0sVgAsAoB7A2ZstVQBWCAAoB3B/oaUMwP0AUA3gN7MijxRXALlVAaAWQPawQkshgBcEAFQCyHk+t9yR4gngaEMAqANQvcenxRUYKZ4AxgkAKAGQ3Lzrc18XV2ykOAIoagoARwrsd9yv8by2H8lu4n9zwtSv1hZG81dqy9exBfC6AIDJKcgBgNEZKgBgcrZlAcDo9BQAMDmzBQBMzuEWADA6AwQATM5XyQAwOQebCgCYnFsEAEzOnwUATM7idACYnC31BQAMTn5bAQCDU3y9AIDBKbtdAMDk9BMAMDl/FAAw+f//fQIABqeolwCAwcnrIABgcDa1FQAwOF/WEQAw+OffyFQBAHOz8xohAGBuptUTADA3u24SAgDGpuS1WgIA5mbumUIAwNgsulIIABibOdcIAQBTUzC+tRAAMPW4z8LeVYUAgJndPzq3b47QKQA4gf/4F464urLQLAA4ATm8acl7Q3q0ShEaRhmA5m2ledhxsqxtwqbNac0bVhEaRxmABKspsAEAAAAAAAAAAAAAAAAAAAAAagIANQGAmgBATQCgJgAoSFcAKAQwVX1N14XXNJ0+xS03hS/2ZPU1dQivaRZ9iltuD1/sCepruiy8pqX0KW7pF77Y49TX1Dq8pl/oU9zyVPhiv6i+phzHJVX0KW4ZE77YA9XXlOm4qK4OjYpXvghf63s1KGpveFEX06h4ZUP4Wl+rQVHf6qgymMkqC1/rVhpUNSW8qDfoVJxyiePrVodrmJ8NL2oFnYpTHg1f6i06VHVreFWlNWlVfOK4P+dzHapq5fi/dCOtikvSDml4GECI5Lzwst6lV3FJB03/1OaGl7U/jWbFI687ADTWoq6nHXV1pVnx+AZwHHHZrEdhjtNBOpylDmAcFwNY43X9bVLcmHbFPrMdAG7TpLKpjsqG0a4TsLdVostZl16O0g5m07BY5z3HKs/TpbTsIkdtQ2hYjHNKiWORH9SmuE8ctR2qR8tim2nOb4AG2hTX3fmknTdpWUzT3rnEMzTaQ93tfL4eVwXEMumrnQBu1qi+55zlrcmkbbHLs84F3q7T8dacYmeB/0PbYpbznb8ArcGa76NYVhcaF6vdrA0ujzOsq9dRijJniQdOpnUxSfIMlz+vlzUr8kOXGtdwZUhM8qLbY4xzNCvy9BK3tyxUonv+85DbA21f0q7MsW5lzmJXwHfudvl2tXJraVdngzw3AbOr0EF/6evWf2uAhpU+7Prs7aV16aGPJD3juqqrdLzmKmW5a62b2tBGz6k02f2R9u21rPasIvfn7/emkR5z6o/u/df11punJK9gmMLtop7+/T9Q4L6eG3T9YZW6SCJgzx+S6Ge0OWO+7A2ml2pbc5N9svewfNOejkaV+qOLZWs5UOOyryuVvornyw50tcJp/PJh6ULO0Pq/6eMR3sa0+iF2CSv0TXrd1BL5Kv5UXe/q34n0Qq7iWf1a0uCIqd7tzd2RlnDfSZpPIO3zct7Ktu3DQf/Rtk4yrQ5PtZYd+479rrSctxleqP08shZX5OV8pYf27iT/zq7coxVZtqLOifBPbIlF4pOi7onxNbaYVsXnVcbdE+TbLGsmzYpD8q5MmN8zaW/Trphn2zmJ9JN2QCkdi22+aZhYOzVX76FnscybCXd1Xc58uhaz5PdKwAMbyQOO0LnYZH6LxDy2dfoCeheDHHwwYY+bJt25i/75zcQGIoFTdWg+LfSTeecl+jmOei/k0Uav+apjEE5z1Xh8A630cuR/cmCesZDc+YNCGhpdVg1sIIKU6ndMOURXK5rvn2kbwCseMi4fPOcAzS0nJSvH9MgRwU3zro+Mmr5k/b78EnptS1lh7rYVcyYM7dWO22kJIYQQQgghsc7/AnxPa+m32jLOAAAAAElFTkSuQmCC":k,k=w&&w.endsWith("mov")?"data:image/png;base64,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":k,k=w&&w.endsWith("mp4")?"data:image/png;base64,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":k,this.fileHasPreview(w)&&C&&(k=C),H.preview&&H.name&&(k=H.preview,w=H.name),B().createElement("div",{className:"file-upload"},B().createElement(Q(),E({onDrop:this.onDrop.bind(this)},D),B().createElement("div",null,s().translate("general.drop_files"))),B().createElement("div",{className:"selected-files-box col-md-6"},B().createElement("p",null,"Selected Files"),B().createElement("div",{className:"selected-files"},C&&B().createElement("div",{className:"file-box",onMouseEnter:this.showVeil.bind(this),onMouseLeave:this.hideVeil.bind(this)},B().createElement("img",{src:k}),B().createElement("a",{href:C,target:"_blank"},w),G&&B().createElement("div",{className:"remove",onClick:this.onRemove.bind(this)},B().createElement("i",{className:"fa fa-times"}))),i&&B().createElement("p",{className:"error-label"},n))))}}return C})()}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={};(()=>{e.n=t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a}})(),(()=>{e.d=(t,a)=>{for(var n in a)e.o(a,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:a[n]})}})(),(()=>{e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var t={};e.r(t),e.d(t,{default:()=>l});const a=require("react");var n=e.n(a);const s=require("react-select");var r=e.n(s);const o=require("i18n-react/dist/i18n-react");var i=e.n(o);class l extends n().Component{constructor(e){super(e),this.state={summitValue:null},this.handleChange=this.handleChange.bind(this),this.handleClick=this.handleClick.bind(this)}handleChange(e){this.setState({summitValue:e})}handleClick(e){e.preventDefault(),this.props.onClick(this.state.summitValue.value)}render(){let{summits:e,actionLabel:t,actionClass:a}=this.props,s=e.sort(((e,t)=>e.start_date<t.start_date?1:e.start_date>t.start_date?-1:0)).map((e=>({label:e.name,value:e.id}))),o=this.props.hasOwnProperty("big")?"big":"";return n().createElement("div",{className:"summit-dropdown btn-group "+o},n().createElement(r(),{id:"summit-select",value:this.state.summitValue,onChange:this.handleChange,options:s,placeholder:i().translate("general.select_summit"),className:"btn-group summit-select text-left",isClearable:!1}),n().createElement("button",{type:"button",className:`btn btn-default ${a}`,onClick:this.handleClick},t))}}return t})()}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={9732:(e,t,r)=>{r.d(t,{shallowEqual:()=>n});require("moment-timezone");r(6530),r(6113);const n=(e,t)=>{const r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let n of r)if(e[n]!==t[n])return!1;return!0}},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}(()=>{r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t}})(),(()=>{r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}})(),(()=>{r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var n={};return(()=>{r.r(n),r.d(n,{default:()=>C});const e=require("react");var t=r.n(e);const o=require("prop-types");var i=r.n(o);const a=require("immutability-helper");var s=r.n(a);const c=require("react-dnd"),d=require("react-dnd-html5-backend");var l=r.n(d);class p extends t().Component{constructor(e){super(e)}render(){return t().createElement("th",{width:this.props.width},this.props.children)}}const u=p,h=e=>t().createElement("td",e,e.children);class m extends t().Component{constructor(e){super(e),this.handleAction=this.handleAction.bind(this)}shouldDisplayAction(e){let{id:t}=this.props;return!e.hasOwnProperty("display")||e.display(t)}handleAction(e,t,r){r.stopPropagation(),r.preventDefault(),e(t)}render(){let{actions:e,id:r}=this.props;return t().createElement("td",{className:"actions",key:"actions"},e.hasOwnProperty("edit")&&this.shouldDisplayAction(e.edit)&&t().createElement("a",{href:"","data-tip":"edit",onClick:this.handleAction.bind(this,e.edit.onClick,r)},t().createElement("i",{className:"fa fa-pencil-square-o"})),e.hasOwnProperty("delete")&&this.shouldDisplayAction(e.delete)&&t().createElement("a",{href:"","data-tip":"delete",onClick:this.handleAction.bind(this,e.delete.onClick,r)},t().createElement("i",{className:"fa fa-trash-o delete-icon"})),"custom"in e&&e.custom.map((e=>this.shouldDisplayAction(e,r)&&t().createElement("a",{href:"","data-tip":e.tooltip,key:"custom_"+e.name,onClick:this.handleAction.bind(this,e.onClick,r)},e.icon))))}}const y=require("react-dom");function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?g(Object(r),!0).forEach((function(t){b(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const v={border:"1px dashed gray",padding:"0.5rem 1rem",marginBottom:".5rem",backgroundColor:"white",cursor:"move"},w={beginDrag:e=>({id:e.id,index:e.index}),endDrag(e,t){t.didDrop()&&e.dropCard(e.id,e.index)}},O={hover(e,t,r){const n=t.getItem().index,o=e.index;if(n===o)return;const i=(0,y.findDOMNode)(r).getBoundingClientRect(),a=(i.bottom-i.top)/2,s=t.getClientOffset().y-i.top;n<o&&s<a||n>o&&s>a||(e.moveCard(n,o),t.getItem().index=o)}};class D extends t().Component{render(){const{text:e,isDragging:r,connectDragSource:n,connectDropTarget:o,children:i,even:a,id:s}=this.props,c=r?0:1;return n(o(t().createElement("tr",{id:s,role:"row",className:a?"even":"odd",style:f(f({},v),{},{opacity:c})},i)))}}D.propTypes={connectDragSource:i().func.isRequired,connectDropTarget:i().func.isRequired,index:i().number.isRequired,isDragging:i().bool.isRequired,id:i().any.isRequired,moveCard:i().func.isRequired};const q=(0,c.DragSource)("card",w,((e,t)=>({connectDragSource:e.dragSource(),isDragging:t.isDragging()})))((0,c.DropTarget)("card",O,(e=>({connectDropTarget:e.dropTarget()})))(D)),x=require("i18n-react/dist/i18n-react");var E=r.n(x),j=r(9732);const k="";class R extends t().Component{constructor(e){super(e),this.moveRow=this.moveRow.bind(this),this.dropRow=this.dropRow.bind(this),this.state={rows:e.data}}componentDidUpdate(e,t,r){(0,j.shallowEqual)(this.props.data,e.data)||this.setState({rows:this.props.data})}moveRow(e,t){const{rows:r}=this.state,n=r[e];this.setState(s()(this.state,{rows:{$splice:[[e,1],[t,0,n]]}}))}dropRow(e,t){let{orderField:r}=this.props,n=t+1,o=[...this.state.rows];for(var i in o)o[i][r]=parseInt(i)+1;this.setState(s()(this.state,{rows:{$set:o}})),this.props.dropCallback(o,e,n)}render(){let{options:e,columns:r}=this.props,n=e.hasOwnProperty("className")?e.className:"";return t().createElement("div",{className:"sortable-table-box"},t().createElement("i",null,E().translate("general.drag_and_drop")),t().createElement("table",{className:"table table-striped table-hover sortableTable "+n},t().createElement("thead",null,t().createElement("tr",null,r.map(((e,r)=>{let n=e.width?e.width:k;return t().createElement(u,{width:n,key:r},e.value)})),e.actions&&t().createElement(u,{key:"actions"},"Actions"))),t().createElement("tbody",null,r.length>0&&this.state.rows.map(((n,o)=>Array.isArray(n)&&n.length!==r.length?(console.warn(`Data at row ${o} is ${n.length}. It should be ${r.length}.`),t().createElement("tr",null)):t().createElement(q,{even:o%2==0,key:n.id,index:o,id:n.id,moveCard:this.moveRow,dropCard:this.dropRow},((e,r,n)=>{var o=r.map(((r,n)=>t().createElement(h,{key:n},e[r.columnKey])));return n&&o.push(t().createElement(m,{key:"actions",id:e.id,actions:n})),o})(n,r,e.actions)))))))}}R.propTypes={data:i().array.isRequired,options:i().shape({className:i().string,actions:i().object}).isRequired,columns:i().arrayOf(i().shape({columnKey:i().string.isRequired,value:i().any.isRequired})).isRequired,orderField:i().string.isRequired,dropCallback:i().func.isRequired};const C=(0,c.DragDropContext)(l())(R)})(),n})()}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o(4656),o(3605),o(9732),o(886)},886:(e,t,o)=>{o.d(t,{RESPONSE_TYPE_CODE:()=>p,RESPONSE_TYPE_IMPLICIT:()=>u,doLogin:()=>w,emitAccessToken:()=>k,getOAuth2Flow:()=>m,validateIdToken:()=>S});var r=o(9732),n=(o(4824),o(6113));const i=require("browser-tabs-lock");var a=o.n(i),s=o(6530),c=o.n(s),d=o(3856),l=o.n(d);o(4341);new(a());const u="token id_token",p="code",_="nonce",f="pkce",h=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let r=0;r<e;r++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},w=(e=null,t=null,o=null)=>{let n=((e=null,t=null,o=null,n=null)=>{let i=y(),a=(0,r.getAuthCallback)(),s=O(),d=b(),l=m();null!=e&&(a+=`?BackUrl=${encodeURI(e)}`);let u=h(16);(0,r.putOnLocalStorage)(_,u);let w=c()(`${s}/oauth2/auth`),k={response_type:encodeURI(l),scope:encodeURI(d),nonce:u,response_mode:"fragment",client_id:encodeURI(i),redirect_uri:encodeURI(a)};if(l===p){const e=g();(0,r.putOnLocalStorage)(f,JSON.stringify(e)),k.code_challenge=e.codeChallenge,k.code_challenge_method="S256",k.approval_prompt="force"}return t&&(k.prompt=t),o&&(k.id_token_hint=o),n&&(k.provider=n),w=w.query(k),w})(e,o,null,t);(0,r.getCurrentLocation)().replace(n.toString())},g=()=>{const e=(0,r.base64URLEncode)((0,n.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,r.base64URLEncode)((0,r.sha256)(Buffer.from(e))),createdAt:new Date}},k=async(e,t=null)=>{let o=O(),n=y(),i=(0,r.getAuthCallback)(),a=JSON.parse((0,r.getFromLocalStorage)(f,!0));null!=t&&(i+=`?BackUrl=${encodeURI(t)}`);const s={code:e,grant_type:"authorization_code",code_verifier:a.codeVerifier,client_id:encodeURI(n),redirect_uri:encodeURI(i)};try{const e=await fetch(`${o}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)}).catch((function(e){console.log("Request failed:",e.message)})),t=await e.json();let{access_token:r,refresh_token:n,id_token:i,expires_in:a,error:c,error_description:d}=t;return{access_token:r,refresh_token:n,id_token:i,expires_in:a,error:c,error_description:d}}catch(e){console.log(e)}},y=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,m=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",O=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,b=()=>"undefined"!=typeof window?window.SCOPES:null,S=(e,t,o)=>{let n=new(l())({issuer:t,audience:o}),i=(0,r.getFromLocalStorage)(_,!0),a=n.decode(e),s=(a.header.alg,a.header.kid,a.payload.aud),c=a.payload.iss;a.payload.exp,a.payload.nbf;return(a.payload.nonce||null)==i&&s==o&&c==t}},3605:(e,t,o)=>{o(4824),o(6530);require("sweetalert2");o(4656),o(9732),o(4341),o(886);const r=e=>t=>({type:e,payload:t});r("RESET_LOADING"),r("START_LOADING"),r("STOP_LOADING")},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>u,getAuthCallback:()=>n,getCurrentHref:()=>s,getCurrentLocation:()=>i,getCurrentPathName:()=>a,getFromLocalStorage:()=>d,putOnLocalStorage:()=>c,sha256:()=>p});require("moment-timezone");o(6530);var r=o(6113);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,i=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},a=()=>"undefined"!=typeof window?window.location.pathname:null,s=()=>"undefined"!=typeof window?window.location.href:null,c=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},d=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),l(e)),o}return null},l=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},u=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),p=e=>(0,r.createHash)("sha256").update(e).digest()},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,o),i.exports}(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var r={};return(()=>{o.r(r),o.d(r,{default:()=>p});const e=require("react");var t=o.n(e),n=o(6530),i=o.n(n),a=o(886),s=o(9732);function c(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function d(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?c(Object(o),!0).forEach((function(t){l(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):c(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function l(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}class u extends t().Component{constructor(e,t,o){super(o),this.state={id_token_is_valid:!0,error:null,error_description:null,issuer:e,audience:t,accessToken:null,flow:(0,a.getOAuth2Flow)()}}_implicitFlow(){const{access_token:e,id_token:t,session_state:o,error:r,error_description:n,expires_in:i}=this.extractHashParams();if(r)return void this.setState(d(d({},this.state),{},{error:r,error_description:n}));if(!e)return void(0,a.doLogin)((0,s.getCurrentPathName)());const c=!!t&&(0,a.validateIdToken)(t,this.state.issuer,this.state.audience);this.setState(d(d({},this.state),{},{id_token_is_valid:c,error:c?null:"Invalid Token",error_description:c?null:"Invalid Token",accessToken:e})),e&&c&&(this.props.onUserAuth(e,t,o,i),"undefined"!=typeof window&&window.location!==window.parent.location&&(console.log("AbstractAuthorizationCallbackRoute::_implicitFlow running inside iframe, sending auth state to parent"),window.parent.postMessage(JSON.stringify({action:"SET_AUTH_INFO_SILENTLY",access_token:e,id_token:t,session_state:o,expires_in:i}),window.location.origin)))}_codeFlow(){const{code:e,session_state:t,error:o,error_description:r}=this.extractHashParams();if(o)return void this.setState(d(d({},this.state),{},{error:o,error_description:r}));if(!e)return void(0,a.doLogin)((0,s.getCurrentPathName)());let n=i()((0,s.getCurrentHref)()).search(!0),c=n.hasOwnProperty("BackUrl")?n.BackUrl:null;(0,a.emitAccessToken)(e,c).then((e=>{let{id_token:n,access_token:i,refresh_token:s,expires_in:c,error:l,error_description:u}=e;if(l)return void this.setState(d(d({},this.state),{},{error:l,error_description:u}));const p=!!n&&(0,a.validateIdToken)(n,this.state.issuer,this.state.audience);this.setState(d(d({},this.state),{},{id_token_is_valid:p,accessToken:i,error:p?o:"Invalid Token",error_description:p?r:"Invalid Token"})),i&&p&&(this.props.onUserAuth(i,n,t,c,s),"undefined"!=typeof window&&window.location!==window.parent.location&&(console.log("AbstractAuthorizationCallbackRoute::_codeFlow running inside iframe, sending auth state to parent"),window.parent.postMessage(JSON.stringify({action:"SET_AUTH_INFO_SILENTLY",access_token:i,id_token:n,session_state:t,expires_in:c,refresh_token:s}),window.location.origin)))}))}componentDidMount(){let{flow:e}=this.state;e!==a.RESPONSE_TYPE_IMPLICIT?e===a.RESPONSE_TYPE_CODE&&this._codeFlow():this._implicitFlow()}extractHashParams(){return i().parseQuery(this.props.location.hash.substr(1))}shouldComponentUpdate(e,t,o){return t.accessToken!==this.state.accessToken||(t.error!==this.state.error||t.id_token_is_valid!==this.state.id_token_is_valid)}componentDidUpdate(e,t,o){if(t.accessToken!==this.state.accessToken){let e=i()((0,s.getCurrentHref)()),t=e.search(!0),o=i().parseQuery(e.fragment());delete o.code,delete o.access_token,delete o.expires_in,delete o.token_type,delete o.scope,delete o.id_token,delete o.session_state;let r=t.hasOwnProperty("BackUrl")?t.BackUrl:"/app";o.lenght>0&&(r+=`#${i().buildQuery(o)}`),this._callback(r)}}_callback(e){}_redirect2Error(e){}render(){let{id_token_is_valid:e,error:t,error_description:o}=this.state;return null!=t?this._redirect2Error(`${t} - ${o}.`):e?null:this._redirect2Error("Token Validation Error - Token is invalid.")}}const p=u})(),r})()}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o(4656),o(3605),o(9732),o(886)},886:(e,t,o)=>{o.d(t,{RESPONSE_TYPE_CODE:()=>p,RESPONSE_TYPE_IMPLICIT:()=>u,doLogin:()=>w,emitAccessToken:()=>k,getOAuth2Flow:()=>m,validateIdToken:()=>S});var r=o(9732),n=(o(4824),o(6113));const i=require("browser-tabs-lock");var a=o.n(i),s=o(6530),c=o.n(s),d=o(3856),l=o.n(d);o(4341);new(a());const u="token id_token",p="code",_="nonce",f="pkce",h=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let r=0;r<e;r++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},w=(e=null,t=null,o=null)=>{let n=((e=null,t=null,o=null,n=null)=>{let i=y(),a=(0,r.getAuthCallback)(),s=O(),d=b(),l=m();null!=e&&(a+=`?BackUrl=${encodeURI(e)}`);let u=h(16);(0,r.putOnLocalStorage)(_,u);let w=c()(`${s}/oauth2/auth`),k={response_type:encodeURI(l),scope:encodeURI(d),nonce:u,response_mode:"fragment",client_id:encodeURI(i),redirect_uri:encodeURI(a)};if(l===p){const e=g();(0,r.putOnLocalStorage)(f,JSON.stringify(e)),k.code_challenge=e.codeChallenge,k.code_challenge_method="S256",k.approval_prompt="force"}return t&&(k.prompt=t),d&&d.includes("offline_access")&&(k.prompt="consent"),o&&(k.id_token_hint=o),n&&(k.provider=n),w=w.query(k),w})(e,o,null,t);(0,r.getCurrentLocation)().replace(n.toString())},g=()=>{const e=(0,r.base64URLEncode)((0,n.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,r.base64URLEncode)((0,r.sha256)(Buffer.from(e))),createdAt:new Date}},k=async(e,t=null)=>{let o=O(),n=y(),i=(0,r.getAuthCallback)(),a=JSON.parse((0,r.getFromLocalStorage)(f,!0));null!=t&&(i+=`?BackUrl=${encodeURI(t)}`);const s={code:e,grant_type:"authorization_code",code_verifier:a.codeVerifier,client_id:encodeURI(n),redirect_uri:encodeURI(i)};try{const e=await fetch(`${o}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s)}).catch((function(e){console.log("Request failed:",e.message)})),t=await e.json();let{access_token:r,refresh_token:n,id_token:i,expires_in:a,error:c,error_description:d}=t;return{access_token:r,refresh_token:n,id_token:i,expires_in:a,error:c,error_description:d}}catch(e){console.log(e)}},y=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,m=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",O=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,b=()=>"undefined"!=typeof window?window.SCOPES:null,S=(e,t,o)=>{let n=new(l())({issuer:t,audience:o}),i=(0,r.getFromLocalStorage)(_,!0),a=n.decode(e),s=(a.header.alg,a.header.kid,a.payload.aud),c=a.payload.iss;a.payload.exp,a.payload.nbf;return(a.payload.nonce||null)==i&&s==o&&c==t}},3605:(e,t,o)=>{o(4824),o(6530);require("sweetalert2");o(4656),o(9732),o(4341),o(886);const r=e=>t=>({type:e,payload:t});r("RESET_LOADING"),r("START_LOADING"),r("STOP_LOADING")},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>u,getAuthCallback:()=>n,getCurrentHref:()=>s,getCurrentLocation:()=>i,getCurrentPathName:()=>a,getFromLocalStorage:()=>d,putOnLocalStorage:()=>c,sha256:()=>p});require("moment-timezone");o(6530);var r=o(6113);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,i=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},a=()=>"undefined"!=typeof window?window.location.pathname:null,s=()=>"undefined"!=typeof window?window.location.href:null,c=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},d=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),l(e)),o}return null},l=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},u=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),p=e=>(0,r.createHash)("sha256").update(e).digest()},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,o),i.exports}(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var r={};return(()=>{o.r(r),o.d(r,{default:()=>p});const e=require("react");var t=o.n(e),n=o(6530),i=o.n(n),a=o(886),s=o(9732);function c(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function d(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?c(Object(o),!0).forEach((function(t){l(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):c(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function l(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}class u extends t().Component{constructor(e,t,o){super(o),this.state={id_token_is_valid:!0,error:null,error_description:null,issuer:e,audience:t,accessToken:null,flow:(0,a.getOAuth2Flow)()}}_implicitFlow(){const{access_token:e,id_token:t,session_state:o,error:r,error_description:n,expires_in:i}=this.extractHashParams();if(r)return void this.setState(d(d({},this.state),{},{error:r,error_description:n}));if(!e)return void(0,a.doLogin)((0,s.getCurrentPathName)());const c=!!t&&(0,a.validateIdToken)(t,this.state.issuer,this.state.audience);this.setState(d(d({},this.state),{},{id_token_is_valid:c,error:c?null:"Invalid Token",error_description:c?null:"Invalid Token",accessToken:e})),e&&c&&(this.props.onUserAuth(e,t,o,i),"undefined"!=typeof window&&window.location!==window.parent.location&&(console.log("AbstractAuthorizationCallbackRoute::_implicitFlow running inside iframe, sending auth state to parent"),window.parent.postMessage(JSON.stringify({action:"SET_AUTH_INFO_SILENTLY",access_token:e,id_token:t,session_state:o,expires_in:i}),window.location.origin)))}_codeFlow(){const{code:e,session_state:t,error:o,error_description:r}=this.extractHashParams();if(o)return void this.setState(d(d({},this.state),{},{error:o,error_description:r}));if(!e)return void(0,a.doLogin)((0,s.getCurrentPathName)());let n=i()((0,s.getCurrentHref)()).search(!0),c=n.hasOwnProperty("BackUrl")?n.BackUrl:null;(0,a.emitAccessToken)(e,c).then((e=>{let{id_token:n,access_token:i,refresh_token:s,expires_in:c,error:l,error_description:u}=e;if(l)return void this.setState(d(d({},this.state),{},{error:l,error_description:u}));const p=!!n&&(0,a.validateIdToken)(n,this.state.issuer,this.state.audience);this.setState(d(d({},this.state),{},{id_token_is_valid:p,accessToken:i,error:p?o:"Invalid Token",error_description:p?r:"Invalid Token"})),i&&p&&(this.props.onUserAuth(i,n,t,c,s),"undefined"!=typeof window&&window.location!==window.parent.location&&(console.log("AbstractAuthorizationCallbackRoute::_codeFlow running inside iframe, sending auth state to parent"),window.parent.postMessage(JSON.stringify({action:"SET_AUTH_INFO_SILENTLY",access_token:i,id_token:n,session_state:t,expires_in:c,refresh_token:s}),window.location.origin)))}))}componentDidMount(){let{flow:e}=this.state;e!==a.RESPONSE_TYPE_IMPLICIT?e===a.RESPONSE_TYPE_CODE&&this._codeFlow():this._implicitFlow()}extractHashParams(){return i().parseQuery(this.props.location.hash.substr(1))}shouldComponentUpdate(e,t,o){return t.accessToken!==this.state.accessToken||(t.error!==this.state.error||t.id_token_is_valid!==this.state.id_token_is_valid)}componentDidUpdate(e,t,o){if(t.accessToken!==this.state.accessToken){let e=i()((0,s.getCurrentHref)()),t=e.search(!0),o=i().parseQuery(e.fragment());delete o.code,delete o.access_token,delete o.expires_in,delete o.token_type,delete o.scope,delete o.id_token,delete o.session_state;let r=t.hasOwnProperty("BackUrl")?t.BackUrl:"/app";o.lenght>0&&(r+=`#${i().buildQuery(o)}`),this._callback(r)}}_callback(e){}_redirect2Error(e){}render(){let{id_token_is_valid:e,error:t,error_description:o}=this.state;return null!=t?this._redirect2Error(`${t} - ${o}.`):e?null:this._redirect2Error("Token Validation Error - Token is invalid.")}}const p=u})(),r})()}));
|
package/lib/security/actions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o.r(t),o.d(t,{CLEAR_SESSION_STATE:()=>S,LOGOUT_USER:()=>p,RECEIVE_USER_INFO:()=>g,REQUEST_USER_INFO:()=>f,SESSION_STATE_STATUS_CHANGED:()=>y,SESSION_STATE_STATUS_ERROR:()=>h,SESSION_STATE_STATUS_UNCHANGED:()=>_,SET_LOGGED_USER:()=>d,UPDATE_SESSION_STATE_STATUS:()=>w,UPDATE_USER_INFO:()=>E,doLogout:()=>m,getUserInfo:()=>T,onUserAuth:()=>O,updateSessionStateStatus:()=>A,updateUserInfo:()=>b});var r=o(4656),n=o.n(r),s=o(3605),a=o(9732),i=o(886);function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function u(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){c(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function c(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}const d="SET_LOGGED_USER",p="LOGOUT_USER",f="REQUEST_USER_INFO",g="RECEIVE_USER_INFO",S="CLEAR_SESSION_STATE",w="UPDATE_SESSION_STATE_STATUS",_="unchanged",y="changed",h="error",E="UPDATE_USER_INFO",O=(e,t,o,r=0,n=null)=>s=>{(0,i.storeAuthInfo)(e,r,n,t),s({type:d,payload:{sessionState:o}})},m=e=>(t,o)=>{t({type:p,payload:{backUrl:e}})},T=(e="groups",t="",o=null,r=null,l=null)=>async(u,c)=>{let d=(0,a.getAllowedUserGroups)();d=""!==d?d.split(" "):[];let{loggedUserState:p}=c(),{member:S}=p,w=await(0,i.getAccessToken)();if(null!=S)return null!=r&&null!=o&&r.push(o),Promise.resolve();null==l&&(l=s.authErrorHandler),u((0,s.startLoading)());let _={access_token:w,expand:e};return t&&(_.fields=t),(0,s.getRequest)((0,s.createAction)(f),(0,s.createAction)(g),(0,a.buildAPIBaseUrl)("/api/v1/members/me"),l)(_)(u,c).then((()=>{u((0,s.stopLoading)());let{member:e}=c().loggedUserState;if(null==e){let e={title:"ERROR",html:n().translate("errors.user_not_set"),type:"error"};u((0,s.showMessage)(e,i.initLogOut))}if(d.length>0){if(0===e.groups.filter(((e,t)=>d.includes(e.code))).length){let e={title:"ERROR",html:n().translate("errors.user_not_authz"),type:"error"};return void u((0,s.showMessage)(e,i.initLogOut))}}null!=r&&null!=o&&r.push(o)}))},b=e=>(t,o)=>{let{loggedUserState:r}=o(),{member:n}=r;if(null==n)throw Error("Member is not set.");if(e.id!=n.id)throw Error("Member is not the same.");t({type:E,payload:u({},e)})},A=e=>(t,o)=>{t({type:w,payload:{sessionStateStatus:e}})}},886:(e,t,o)=>{o.d(t,{doLogin:()=>w,getAccessToken:()=>y,initLogOut:()=>R,storeAuthInfo:()=>E});var r=o(9732),n=(o(4824),o(6113));const s=require("browser-tabs-lock");var a=o.n(s),i=o(6530),l=o.n(i);o(3856),o(4341);const u=new(a()),c="openstackuicore.lock.getTokenSilently",d="code",p="authInfo",f="nonce",g="pkce",S=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let r=0;r<e;r++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},w=(e=null,t=null,o=null)=>{let n=((e=null,t=null,o=null,n=null)=>{let s=T(),a=(0,r.getAuthCallback)(),i=U(),u=k(),c=b();null!=e&&(a+=`?BackUrl=${encodeURI(e)}`);let p=S(16);(0,r.putOnLocalStorage)(f,p);let w=l()(`${i}/oauth2/auth`),y={response_type:encodeURI(c),scope:encodeURI(u),nonce:p,response_mode:"fragment",client_id:encodeURI(s),redirect_uri:encodeURI(a)};if(c===d){const e=_();(0,r.putOnLocalStorage)(g,JSON.stringify(e)),y.code_challenge=e.codeChallenge,y.code_challenge_method="S256",y.approval_prompt="force"}return t&&(y.prompt=t),o&&(y.id_token_hint=o),n&&(y.provider=n),w=w.query(y),w})(e,o,null,t);(0,r.getCurrentLocation)().replace(n.toString())},_=()=>{const e=(0,r.base64URLEncode)((0,n.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,r.base64URLEncode)((0,r.sha256)(Buffer.from(e))),createdAt:new Date}},y=async()=>{if(await(0,r.retryPromise)((()=>u.acquireLock(c,5e3)),10))try{let e=O();if(!e)throw Error("Missing Auth info.");let{accessToken:t,expiresIn:o,accessTokenUpdatedAt:r,refreshToken:n}=e,s=b(),a=Math.floor(Date.now()/1e3);if(o-=20,a-r>o||null==t){if(console.log("getAccessToken access token expired"),s===d&&A()){if(!n)throw m(),Error("missing Refresh Token");let e=await h(n),{access_token:t,expires_in:o,refresh_token:r}=e;return void 0===r&&(r=null),E(t,o,r),t}throw m(),Error("Access Token Expired.")}return t}finally{await u.releaseLock(c)}throw Error("Lock acquire error.")},h=async e=>{let t=U(),o=T();const n={grant_type:"refresh_token",client_id:encodeURI(o),refresh_token:e};try{const e=await fetch(`${t}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n)}).then((e=>{if(400===e.status){(0,r.getCurrentPathName)();throw(0,r.setSessionClearingState)(!0),Error(`${e.status} - ${e.statusText}`)}return e})).catch((function(e){throw Error(`Request failed: ${e.message}`)})),o=await e.json();let{access_token:s,refresh_token:a,expires_in:i}=o;return{access_token:s,refresh_token:a,expires_in:i}}catch(e){throw console.log(e),e}},E=(e,t,o=null,n=null)=>{let s=O(),a={accessToken:e,expiresIn:t,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null===o&&s&&(o=s.refreshToken),null===n&&s&&(n=s.idToken),o&&(a.refreshToken=o),n&&(a.idToken=n),(0,r.putOnLocalStorage)(p,JSON.stringify(a))},O=()=>{let e=(0,r.getFromLocalStorage)(p,!1);return null===e?null:JSON.parse(e)},m=()=>{if("undefined"!=typeof window)return(0,r.removeFromLocalStorage)(p),(0,r.removeFromLocalStorage)(f),void(0,r.removeFromLocalStorage)(g)},T=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,b=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",A=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),U=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,k=()=>"undefined"!=typeof window?window.SCOPES:null,R=()=>{(0,r.getCurrentLocation)().replace((e=>{let t=U(),o=T(),n=l()(`${t}/oauth2/end-session`),s=S(16),a=(0,r.getOrigin)()+"/auth/logout";return(0,r.putOnLocalStorage)("post_logout_state",s),n.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(a),client_id:encodeURI(o),state:s})})((()=>{if("undefined"!=typeof window){const e=O();return e?e.idToken:null}return null})()).toString())}},3605:(e,t,o)=>{o.d(t,{authErrorHandler:()=>E,createAction:()=>S,getRequest:()=>O,showMessage:()=>b,startLoading:()=>w,stopLoading:()=>_});var r=o(4824),n=o.n(r),s=o(6530),a=o.n(s);const i=require("sweetalert2");var l=o.n(i),u=o(4656),c=o.n(u),d=o(9732),p=o(4341),f=o(886);let g=n();const S=e=>t=>({type:e,payload:t}),w=(S("RESET_LOADING"),S("START_LOADING")),_=S("STOP_LOADING"),y={},h=e=>0===Object.keys(e).length&&e.constructor===Object,E=(e,t)=>(t,o)=>{let r=e.status,n="";switch(t(_()),r){case 403:let o={title:"ERROR",html:c().translate("errors.user_not_authz"),type:"error"};t(b(o,f.initLogOut));break;case 401:let r=(0,d.getCurrentPathName)(),i=(0,d.isClearingSessionState)();t({type:p.CLEAR_SESSION_STATE,payload:{}}),i||((0,d.setSessionClearingState)(!0),console.log("authErrorHandler 401 - re login"),(0,f.doLogin)(r));break;case 404:n="",n=e.response.body&&e.response.body.message?e.response.body.message:e.response.error&&e.response.error.message?e.response.error.message:e.message,l().fire("Not Found",n,"warning");break;case 412:for(var[s,a]of Object.entries(e.response.body.errors))isNaN(s)&&(n+=s+": "),n+=a+"<br>";l().fire("Validation error",n,"warning"),t({type:"VALIDATE",payload:{errors:e.response.body.errors}});break;default:l().fire("ERROR",c().translate("errors.server_error"),"error")}},O=(e,t,o,r=m,n={})=>(s={})=>(i,l)=>{let u=a()(o);h(s)||(u=u.query(s));let c=u.toString();return e&&"function"==typeof e&&i(e(n)),(e=>{y[e]&&(y[e].abort(),console.log(`aborted request ${e}`),delete y[e])})(c),new Promise(((e,o)=>{let n=g.get(u.toString()).timeout({response:6e4,deadline:6e4}).end(T(i,l,t,r,e,o));((e,t)=>{y[e]=t})(c,n)}))},m=(e,t)=>e=>{let o=t.body,r="";o instanceof Object&&o.hasOwnProperty("message")&&(r=o.message),l().fire(t.statusText,r,"error")},T=(e,t,o,r,n,s)=>(a,i)=>{if(a||!i.ok)return r&&r(a,i)(e,t),s({err:a,res:i,dispatch:e,state:t});let l=i.body;return"function"==typeof o?(e(o({response:l})),n({response:l})):(e(o),n({response:l}))},b=(e,t={})=>o=>{o(_()),l().fire(e).then((e=>{e.value&&"function"==typeof t&&t()}))}},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>S,buildAPIBaseUrl:()=>u,getAllowedUserGroups:()=>l,getAuthCallback:()=>n,getCurrentLocation:()=>s,getCurrentPathName:()=>i,getFromLocalStorage:()=>d,getOrigin:()=>a,isClearingSessionState:()=>f,putOnLocalStorage:()=>c,removeFromLocalStorage:()=>p,retryPromise:()=>_,setSessionClearingState:()=>g,sha256:()=>w});require("moment-timezone");o(6530);var r=o(6113);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,s=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},a=()=>"undefined"!=typeof window?window.location.origin:null,i=()=>"undefined"!=typeof window?window.location.pathname:null,l=()=>"undefined"!=typeof window?window.ALLOWED_USER_GROUPS||"":null,u=e=>"undefined"!=typeof window?`${window.API_BASE_URL}${e}`:null``,c=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},d=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),p(e)),o}return null},p=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},f=()=>"undefined"!=typeof window&&window.clearing_session_state,g=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},S=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),w=e=>(0,r.createHash)("sha256").update(e).digest(),_=async(e,t=3)=>{for(let o=0;o<t;o++)if(await e())return!0;return!1}},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,o),s.exports}return(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),o(4341)})()}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o.r(t),o.d(t,{CLEAR_SESSION_STATE:()=>S,LOGOUT_USER:()=>p,RECEIVE_USER_INFO:()=>g,REQUEST_USER_INFO:()=>f,SESSION_STATE_STATUS_CHANGED:()=>y,SESSION_STATE_STATUS_ERROR:()=>h,SESSION_STATE_STATUS_UNCHANGED:()=>_,SET_LOGGED_USER:()=>d,UPDATE_SESSION_STATE_STATUS:()=>w,UPDATE_USER_INFO:()=>E,doLogout:()=>m,getUserInfo:()=>T,onUserAuth:()=>O,updateSessionStateStatus:()=>A,updateUserInfo:()=>b});var r=o(4656),n=o.n(r),s=o(3605),a=o(9732),i=o(886);function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function u(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){c(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function c(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}const d="SET_LOGGED_USER",p="LOGOUT_USER",f="REQUEST_USER_INFO",g="RECEIVE_USER_INFO",S="CLEAR_SESSION_STATE",w="UPDATE_SESSION_STATE_STATUS",_="unchanged",y="changed",h="error",E="UPDATE_USER_INFO",O=(e,t,o,r=0,n=null)=>s=>{(0,i.storeAuthInfo)(e,r,n,t),s({type:d,payload:{sessionState:o}})},m=e=>(t,o)=>{t({type:p,payload:{backUrl:e}})},T=(e="groups",t="",o=null,r=null,l=null)=>async(u,c)=>{let d=(0,a.getAllowedUserGroups)();d=""!==d?d.split(" "):[];let{loggedUserState:p}=c(),{member:S}=p,w=await(0,i.getAccessToken)();if(null!=S)return null!=r&&null!=o&&r.push(o),Promise.resolve();null==l&&(l=s.authErrorHandler),u((0,s.startLoading)());let _={access_token:w,expand:e};return t&&(_.fields=t),(0,s.getRequest)((0,s.createAction)(f),(0,s.createAction)(g),(0,a.buildAPIBaseUrl)("/api/v1/members/me"),l)(_)(u,c).then((()=>{u((0,s.stopLoading)());let{member:e}=c().loggedUserState;if(null==e){let e={title:"ERROR",html:n().translate("errors.user_not_set"),type:"error"};u((0,s.showMessage)(e,i.initLogOut))}if(d.length>0){if(0===e.groups.filter(((e,t)=>d.includes(e.code))).length){let e={title:"ERROR",html:n().translate("errors.user_not_authz"),type:"error"};return void u((0,s.showMessage)(e,i.initLogOut))}}null!=r&&null!=o&&r.push(o)}))},b=e=>(t,o)=>{let{loggedUserState:r}=o(),{member:n}=r;if(null==n)throw Error("Member is not set.");if(e.id!=n.id)throw Error("Member is not the same.");t({type:E,payload:u({},e)})},A=e=>(t,o)=>{t({type:w,payload:{sessionStateStatus:e}})}},886:(e,t,o)=>{o.d(t,{doLogin:()=>w,getAccessToken:()=>y,initLogOut:()=>R,storeAuthInfo:()=>E});var r=o(9732),n=(o(4824),o(6113));const s=require("browser-tabs-lock");var a=o.n(s),i=o(6530),l=o.n(i);o(3856),o(4341);const u=new(a()),c="openstackuicore.lock.getTokenSilently",d="code",p="authInfo",f="nonce",g="pkce",S=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let r=0;r<e;r++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},w=(e=null,t=null,o=null)=>{let n=((e=null,t=null,o=null,n=null)=>{let s=T(),a=(0,r.getAuthCallback)(),i=U(),u=k(),c=b();null!=e&&(a+=`?BackUrl=${encodeURI(e)}`);let p=S(16);(0,r.putOnLocalStorage)(f,p);let w=l()(`${i}/oauth2/auth`),y={response_type:encodeURI(c),scope:encodeURI(u),nonce:p,response_mode:"fragment",client_id:encodeURI(s),redirect_uri:encodeURI(a)};if(c===d){const e=_();(0,r.putOnLocalStorage)(g,JSON.stringify(e)),y.code_challenge=e.codeChallenge,y.code_challenge_method="S256",y.approval_prompt="force"}return t&&(y.prompt=t),u&&u.includes("offline_access")&&(y.prompt="consent"),o&&(y.id_token_hint=o),n&&(y.provider=n),w=w.query(y),w})(e,o,null,t);(0,r.getCurrentLocation)().replace(n.toString())},_=()=>{const e=(0,r.base64URLEncode)((0,n.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,r.base64URLEncode)((0,r.sha256)(Buffer.from(e))),createdAt:new Date}},y=async()=>{if(await(0,r.retryPromise)((()=>u.acquireLock(c,5e3)),10))try{let e=O();if(!e)throw Error("Missing Auth info.");let{accessToken:t,expiresIn:o,accessTokenUpdatedAt:r,refreshToken:n}=e,s=b(),a=Math.floor(Date.now()/1e3);if(o-=20,a-r>o||null==t){if(console.log("getAccessToken access token expired"),s===d&&A()){if(!n)throw m(),Error("missing Refresh Token");let e=await h(n),{access_token:t,expires_in:o,refresh_token:r}=e;return void 0===r&&(r=null),E(t,o,r),t}throw m(),Error("Access Token Expired.")}return t}finally{await u.releaseLock(c)}throw Error("Lock acquire error.")},h=async e=>{let t=U(),o=T();const n={grant_type:"refresh_token",client_id:encodeURI(o),refresh_token:e};try{const e=await fetch(`${t}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n)}).then((e=>{if(400===e.status){(0,r.getCurrentPathName)();throw(0,r.setSessionClearingState)(!0),Error(`${e.status} - ${e.statusText}`)}return e})).catch((function(e){throw Error(`Request failed: ${e.message}`)})),o=await e.json();let{access_token:s,refresh_token:a,expires_in:i}=o;return{access_token:s,refresh_token:a,expires_in:i}}catch(e){throw console.log(e),e}},E=(e,t,o=null,n=null)=>{let s=O(),a={accessToken:e,expiresIn:t,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null===o&&s&&(o=s.refreshToken),null===n&&s&&(n=s.idToken),o&&(a.refreshToken=o),n&&(a.idToken=n),(0,r.putOnLocalStorage)(p,JSON.stringify(a))},O=()=>{let e=(0,r.getFromLocalStorage)(p,!1);return null===e?null:JSON.parse(e)},m=()=>{if("undefined"!=typeof window)return(0,r.removeFromLocalStorage)(p),(0,r.removeFromLocalStorage)(f),void(0,r.removeFromLocalStorage)(g)},T=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,b=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",A=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),U=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,k=()=>"undefined"!=typeof window?window.SCOPES:null,R=()=>{(0,r.getCurrentLocation)().replace((e=>{let t=U(),o=T(),n=l()(`${t}/oauth2/end-session`),s=S(16),a=(0,r.getOrigin)()+"/auth/logout";return(0,r.putOnLocalStorage)("post_logout_state",s),n.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(a),client_id:encodeURI(o),state:s})})((()=>{if("undefined"!=typeof window){const e=O();return e?e.idToken:null}return null})()).toString())}},3605:(e,t,o)=>{o.d(t,{authErrorHandler:()=>E,createAction:()=>S,getRequest:()=>O,showMessage:()=>b,startLoading:()=>w,stopLoading:()=>_});var r=o(4824),n=o.n(r),s=o(6530),a=o.n(s);const i=require("sweetalert2");var l=o.n(i),u=o(4656),c=o.n(u),d=o(9732),p=o(4341),f=o(886);let g=n();const S=e=>t=>({type:e,payload:t}),w=(S("RESET_LOADING"),S("START_LOADING")),_=S("STOP_LOADING"),y={},h=e=>0===Object.keys(e).length&&e.constructor===Object,E=(e,t)=>(t,o)=>{let r=e.status,n="";switch(t(_()),r){case 403:let o={title:"ERROR",html:c().translate("errors.user_not_authz"),type:"error"};t(b(o,f.initLogOut));break;case 401:let r=(0,d.getCurrentPathName)(),i=(0,d.isClearingSessionState)();t({type:p.CLEAR_SESSION_STATE,payload:{}}),i||((0,d.setSessionClearingState)(!0),console.log("authErrorHandler 401 - re login"),(0,f.doLogin)(r));break;case 404:n="",n=e.response.body&&e.response.body.message?e.response.body.message:e.response.error&&e.response.error.message?e.response.error.message:e.message,l().fire("Not Found",n,"warning");break;case 412:for(var[s,a]of Object.entries(e.response.body.errors))isNaN(s)&&(n+=s+": "),n+=a+"<br>";l().fire("Validation error",n,"warning"),t({type:"VALIDATE",payload:{errors:e.response.body.errors}});break;default:l().fire("ERROR",c().translate("errors.server_error"),"error")}},O=(e,t,o,r=m,n={})=>(s={})=>(i,l)=>{let u=a()(o);h(s)||(u=u.query(s));let c=u.toString();return e&&"function"==typeof e&&i(e(n)),(e=>{y[e]&&(y[e].abort(),console.log(`aborted request ${e}`),delete y[e])})(c),new Promise(((e,o)=>{let n=g.get(u.toString()).timeout({response:6e4,deadline:6e4}).end(T(i,l,t,r,e,o));((e,t)=>{y[e]=t})(c,n)}))},m=(e,t)=>e=>{let o=t.body,r="";o instanceof Object&&o.hasOwnProperty("message")&&(r=o.message),l().fire(t.statusText,r,"error")},T=(e,t,o,r,n,s)=>(a,i)=>{if(a||!i.ok)return r&&r(a,i)(e,t),s({err:a,res:i,dispatch:e,state:t});let l=i.body;return"function"==typeof o?(e(o({response:l})),n({response:l})):(e(o),n({response:l}))},b=(e,t={})=>o=>{o(_()),l().fire(e).then((e=>{e.value&&"function"==typeof t&&t()}))}},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>S,buildAPIBaseUrl:()=>u,getAllowedUserGroups:()=>l,getAuthCallback:()=>n,getCurrentLocation:()=>s,getCurrentPathName:()=>i,getFromLocalStorage:()=>d,getOrigin:()=>a,isClearingSessionState:()=>f,putOnLocalStorage:()=>c,removeFromLocalStorage:()=>p,retryPromise:()=>_,setSessionClearingState:()=>g,sha256:()=>w});require("moment-timezone");o(6530);var r=o(6113);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,s=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},a=()=>"undefined"!=typeof window?window.location.origin:null,i=()=>"undefined"!=typeof window?window.location.pathname:null,l=()=>"undefined"!=typeof window?window.ALLOWED_USER_GROUPS||"":null,u=e=>"undefined"!=typeof window?`${window.API_BASE_URL}${e}`:null``,c=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},d=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),p(e)),o}return null},p=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},f=()=>"undefined"!=typeof window&&window.clearing_session_state,g=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},S=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),w=e=>(0,r.createHash)("sha256").update(e).digest(),_=async(e,t=3)=>{for(let o=0;o<t;o++)if(await e())return!0;return!1}},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,o),s.exports}return(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),o(4341)})()}));
|
package/lib/security/methods.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],o):"object"==typeof exports?exports["openstack-uicore-foundation"]=o():e["openstack-uicore-foundation"]=o()}(this,(function(){return(()=>{"use strict";var e={4341:(e,o,t)=>{t.d(o,{SET_LOGGED_USER:()=>n});t(4656),t(3605),t(9732),t(886);const n="SET_LOGGED_USER"},886:(e,o,t)=>{t.r(o),t.d(o,{ACCESS_TOKEN_SKEW_TIME:()=>_,RESPONSE_TYPE_CODE:()=>m,RESPONSE_TYPE_IMPLICIT:()=>y,clearAccessToken:()=>b,clearAuthInfo:()=>j,doLogin:()=>L,doLoginBasicLogin:()=>U,emitAccessToken:()=>R,getAccessToken:()=>P,getAuthInfo:()=>C,getAuthUrl:()=>T,getIdToken:()=>N,getLogoutUrl:()=>I,getOAuth2ClientId:()=>q,getOAuth2Flow:()=>D,getOAuth2IDPBaseUrl:()=>$,getOAuth2Scopes:()=>M,initLogOut:()=>G,passwordlessLogin:()=>H,passwordlessStart:()=>J,refreshAccessToken:()=>v,storeAuthInfo:()=>x,useOAuth2RefreshToken:()=>F,validateIdToken:()=>B});var n=t(9732),r=t(4824),i=t.n(r),a=t(6113);const l=require("browser-tabs-lock");var s=t.n(l),c=t(6530),d=t.n(c),u=t(3856),p=t.n(u),f=t(4341);let g=i();const h=new(s()),w="openstackuicore.lock.getTokenSilently",_=20,y="token id_token",m="code",k="authInfo",S="nonce",O="pkce",T=(e=null,o=null,t=null,r=null)=>{let i=q(),a=(0,n.getAuthCallback)(),l=$(),s=M(),c=D();null!=e&&(a+=`?BackUrl=${encodeURI(e)}`);let u=E(16);(0,n.putOnLocalStorage)(S,u);let p=d()(`${l}/oauth2/auth`),f={response_type:encodeURI(c),scope:encodeURI(s),nonce:u,response_mode:"fragment",client_id:encodeURI(i),redirect_uri:encodeURI(a)};if(c===m){const e=A();(0,n.putOnLocalStorage)(O,JSON.stringify(e)),f.code_challenge=e.codeChallenge,f.code_challenge_method="S256",f.approval_prompt="force"}return o&&(f.prompt=o),s&&s.includes("offline_access")&&(f.prompt="consent"),t&&(f.id_token_hint=t),r&&(f.provider=r),p=p.query(f),p},I=e=>{let o=$(),t=q(),r=d()(`${o}/oauth2/end-session`),i=E(16),a=(0,n.getOrigin)()+"/auth/logout";return(0,n.putOnLocalStorage)("post_logout_state",i),r.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(a),client_id:encodeURI(t),state:i})},E=e=>{let o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let n=0;n<e;n++)t+=o.charAt(Math.floor(Math.random()*o.length));return t},L=(e=null,o=null,t=null)=>{let r=T(e,t,null,o);(0,n.getCurrentLocation)().replace(r.toString())},U=(e=null)=>{L(e,null,null)},A=()=>{const e=(0,n.base64URLEncode)((0,a.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,n.base64URLEncode)((0,n.sha256)(Buffer.from(e))),createdAt:new Date}},R=async(e,o=null)=>{let t=$(),r=q(),i=(0,n.getAuthCallback)(),a=JSON.parse((0,n.getFromLocalStorage)(O,!0));null!=o&&(i+=`?BackUrl=${encodeURI(o)}`);const l={code:e,grant_type:"authorization_code",code_verifier:a.codeVerifier,client_id:encodeURI(r),redirect_uri:encodeURI(i)};try{const e=await fetch(`${t}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(l)}).catch((function(e){console.log("Request failed:",e.message)})),o=await e.json();let{access_token:n,refresh_token:r,id_token:i,expires_in:a,error:s,error_description:c}=o;return{access_token:n,refresh_token:r,id_token:i,expires_in:a,error:s,error_description:c}}catch(e){console.log(e)}},b=async()=>{if(await(0,n.retryPromise)((()=>h.acquireLock(w,5e3)),10))try{let e=C();if(!e)throw Error("Missing Auth info.");let{accessToken:o,expiresIn:t,accessTokenUpdatedAt:n,refreshToken:r}=e;x(null,0,r)}finally{await h.releaseLock(w)}},P=async()=>{if(await(0,n.retryPromise)((()=>h.acquireLock(w,5e3)),10))try{let e=C();if(!e)throw Error("Missing Auth info.");let{accessToken:o,expiresIn:t,accessTokenUpdatedAt:n,refreshToken:r}=e,i=D(),a=Math.floor(Date.now()/1e3);if(t-=_,a-n>t||null==o){if(console.log("getAccessToken access token expired"),i===m&&F()){if(!r)throw j(),Error("missing Refresh Token");let e=await v(r),{access_token:o,expires_in:t,refresh_token:n}=e;return void 0===n&&(n=null),x(o,t,n),o}throw j(),Error("Access Token Expired.")}return o}finally{await h.releaseLock(w)}throw Error("Lock acquire error.")},v=async e=>{let o=$(),t=q();const r={grant_type:"refresh_token",client_id:encodeURI(t),refresh_token:e};try{const e=await fetch(`${o}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r)}).then((e=>{if(400===e.status){(0,n.getCurrentPathName)();throw(0,n.setSessionClearingState)(!0),Error(`${e.status} - ${e.statusText}`)}return e})).catch((function(e){throw Error(`Request failed: ${e.message}`)})),t=await e.json();let{access_token:i,refresh_token:a,expires_in:l}=t;return{access_token:i,refresh_token:a,expires_in:l}}catch(e){throw console.log(e),e}},x=(e,o,t=null,r=null)=>{let i=C(),a={accessToken:e,expiresIn:o,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null===t&&i&&(t=i.refreshToken),null===r&&i&&(r=i.idToken),t&&(a.refreshToken=t),r&&(a.idToken=r),(0,n.putOnLocalStorage)(k,JSON.stringify(a))},C=()=>{let e=(0,n.getFromLocalStorage)(k,!1);return null===e?null:JSON.parse(e)},j=()=>{if("undefined"!=typeof window)return(0,n.removeFromLocalStorage)(k),(0,n.removeFromLocalStorage)(S),void(0,n.removeFromLocalStorage)(O)},N=()=>{if("undefined"!=typeof window){const e=C();return e?e.idToken:null}return null},q=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,D=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",F=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),$=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,M=()=>"undefined"!=typeof window?window.SCOPES:null,G=()=>{(0,n.getCurrentLocation)().replace(I(N()).toString())},B=(e,o,t)=>{let r=new(p())({issuer:o,audience:t}),i=(0,n.getFromLocalStorage)(S,!0),a=r.decode(e),l=(a.header.alg,a.header.kid,a.payload.aud),s=a.payload.iss;a.payload.exp,a.payload.nbf;return(a.payload.nonce||null)==i&&l==t&&s==o},J=e=>{let o=q(),t=M(),r=E(16);(0,n.putOnLocalStorage)(S,r);let i=$(),a=d()(`${i}/oauth2/auth`),l={response_type:"otp",scope:encodeURI(t),nonce:r,client_id:encodeURI(o),connection:e.connection||"email",send:e.send||"code"};return e.hasOwnProperty("email")&&(l.email=encodeURIComponent(e.email)),e.hasOwnProperty("phone_number")&&(l.phone_number=encodeURIComponent(e.phone_number)),g.post(a.toString()).send(l).then((e=>{let o=e.body;return Promise.resolve({response:o})})).catch((e=>Promise.reject(e)))},H=e=>o=>{let t=q(),n=M(),r=$(),i=d()(`${r}/oauth2/token`);if(!e.hasOwnProperty("otp"))throw Error("otp param is mandatory.");let a={grant_type:"passwordless",connection:e.connection||"email",scope:encodeURI(n),client_id:encodeURI(t),otp:e.otp};return e.hasOwnProperty("email")&&(a.email=encodeURIComponent(e.email)),e.hasOwnProperty("phone_number")&&(a.phone_number=encodeURIComponent(e.phone_number)),g.post(i.toString()).send(a).then((e=>{try{let n=e.body,{access_token:i,expires_in:a,refresh_token:l,id_token:s}=n;if(void 0===l&&(l=null),void 0===s&&(s=null),s&&!B(s,r,t))throw Error("id token is not valid.");return x(i,a,l,s),o&&o({type:f.SET_LOGGED_USER,payload:{sessionState:null}}),Promise.resolve({response:n})}catch(e){return console.log(e),Promise.reject(e)}})).catch((e=>Promise.reject(e)))}},3605:(e,o,t)=>{t(4824),t(6530);require("sweetalert2");t(4656),t(9732),t(4341),t(886);const n=e=>o=>({type:e,payload:o});n("RESET_LOADING"),n("START_LOADING"),n("STOP_LOADING")},9732:(e,o,t)=>{t.d(o,{base64URLEncode:()=>p,getAuthCallback:()=>r,getCurrentLocation:()=>i,getCurrentPathName:()=>l,getFromLocalStorage:()=>c,getOrigin:()=>a,putOnLocalStorage:()=>s,removeFromLocalStorage:()=>d,retryPromise:()=>g,setSessionClearingState:()=>u,sha256:()=>f});require("moment-timezone");t(6530);var n=t(6113);const r=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,i=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},a=()=>"undefined"!=typeof window?window.location.origin:null,l=()=>"undefined"!=typeof window?window.location.pathname:null,s=(e,o)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,o)},c=(e,o)=>{if("undefined"!=typeof window){let t=window.localStorage.getItem(e);return o&&(console.log(`getFromLocalStorage removing key ${e}`),d(e)),t}return null},d=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},u=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},p=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),f=e=>(0,n.createHash)("sha256").update(e).digest(),g=async(e,o=3)=>{for(let t=0;t<o;t++)if(await e())return!0;return!1}},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},o={};function t(n){var r=o[n];if(void 0!==r)return r.exports;var i=o[n]={exports:{}};return e[n](i,i.exports,t),i.exports}return(()=>{t.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return t.d(o,{a:o}),o}})(),(()=>{t.d=(e,o)=>{for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})}})(),(()=>{t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o)})(),(()=>{t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),t(886)})()}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o.d(t,{SESSION_STATE_STATUS_CHANGED:()=>r,SESSION_STATE_STATUS_UNCHANGED:()=>n,doLogout:()=>a,onUserAuth:()=>i,updateSessionStateStatus:()=>c});o(4656),o(3605),o(9732);var s=o(886);const n="unchanged",r="changed",i=(e,t,o,n=0,r=null)=>i=>{(0,s.storeAuthInfo)(e,n,r,t),i({type:"SET_LOGGED_USER",payload:{sessionState:o}})},a=e=>(t,o)=>{t({type:"LOGOUT_USER",payload:{backUrl:e}})},c=e=>(t,o)=>{t({type:"UPDATE_SESSION_STATE_STATUS",payload:{sessionStateStatus:e}})}},886:(e,t,o)=>{o.d(t,{getAuthUrl:()=>S,initLogOut:()=>y,storeAuthInfo:()=>f});var s=o(9732),n=(o(4824),o(6113));const r=require("browser-tabs-lock");var i=o.n(r),a=o(6530),c=o.n(a);o(3856),o(4341);new(i());const l="code",d="authInfo",p="nonce",u="pkce",S=(e=null,t=null,o=null,n=null)=>{let r=m(),i=(0,s.getAuthCallback)(),a=O(),d=v(),S=_();null!=e&&(i+=`?BackUrl=${encodeURI(e)}`);let f=h(16);(0,s.putOnLocalStorage)(p,f);let w=c()(`${a}/oauth2/auth`),y={response_type:encodeURI(S),scope:encodeURI(d),nonce:f,response_mode:"fragment",client_id:encodeURI(r),redirect_uri:encodeURI(i)};if(S===l){const e=g();(0,s.putOnLocalStorage)(u,JSON.stringify(e)),y.code_challenge=e.codeChallenge,y.code_challenge_method="S256",y.approval_prompt="force"}return t&&(y.prompt=t),o&&(y.id_token_hint=o),n&&(y.provider=n),w=w.query(y),w},h=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let s=0;s<e;s++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},g=()=>{const e=(0,s.base64URLEncode)((0,n.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,s.base64URLEncode)((0,s.sha256)(Buffer.from(e))),createdAt:new Date}},f=(e,t,o=null,n=null)=>{let r=w(),i={accessToken:e,expiresIn:t,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null===o&&r&&(o=r.refreshToken),null===n&&r&&(n=r.idToken),o&&(i.refreshToken=o),n&&(i.idToken=n),(0,s.putOnLocalStorage)(d,JSON.stringify(i))},w=()=>{let e=(0,s.getFromLocalStorage)(d,!1);return null===e?null:JSON.parse(e)},m=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,_=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",O=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,v=()=>"undefined"!=typeof window?window.SCOPES:null,y=()=>{(0,s.getCurrentLocation)().replace((e=>{let t=O(),o=m(),n=c()(`${t}/oauth2/end-session`),r=h(16),i=(0,s.getOrigin)()+"/auth/logout";return(0,s.putOnLocalStorage)("post_logout_state",r),n.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(i),client_id:encodeURI(o),state:r})})((()=>{if("undefined"!=typeof window){const e=w();return e?e.idToken:null}return null})()).toString())}},3605:(e,t,o)=>{o(4824),o(6530);require("sweetalert2");o(4656),o(9732),o(4341),o(886);const s=e=>t=>({type:e,payload:t});s("RESET_LOADING"),s("START_LOADING"),s("STOP_LOADING")},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>d,getAuthCallback:()=>n,getCurrentLocation:()=>r,getFromLocalStorage:()=>c,getOrigin:()=>i,putOnLocalStorage:()=>a,sha256:()=>p});require("moment-timezone");o(6530);var s=o(6113);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,r=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},i=()=>"undefined"!=typeof window?window.location.origin:null,a=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},c=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),l(e)),o}return null},l=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},d=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),p=e=>(0,s.createHash)("sha256").update(e).digest()},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(s){var n=t[s];if(void 0!==n)return n.exports;var r=t[s]={exports:{}};return e[s](r,r.exports,o),r.exports}(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var s in t)o.o(t,s)&&!o.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var s={};return(()=>{o.r(s),o.d(s,{default:()=>h});const e=require("react");var t=o.n(e);const n=require("react-redux");var r=o(4341),i=o(886),a=o(6530),c=o.n(a);function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,s)}return o}function d(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){p(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function p(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}const u=18e5;class S extends t().Component{constructor(e){super(e),this.state={opFrame_src:"",rpCheckSessionStateFrame_src:""},this.receiveMessage=this.receiveMessage.bind(this),this.receiveMessageFromChild=this.receiveMessageFromChild.bind(this),this.setTimer=this.setTimer.bind(this),this.checkSession=this.checkSession.bind(this),this.onSetupCheckSessionRP=this.onSetupCheckSessionRP.bind(this),this.rpCheckSessionStateFrameOnLoad=this.rpCheckSessionStateFrameOnLoad.bind(this),this.opFrame=null,this.rpCheckSessionStateFrame=null,this.setOPFrameRef=e=>{this.opFrame=e},this.setCheckSessionStateFrameRef=e=>{this.rpCheckSessionStateFrame=e},this.interval=null}componentWillUnmount(){try{this.interval&&(window.clearInterval(this.interval),this.interval=null),window.removeEventListener("message",this.receiveMessageFromChild,!1),window.removeEventListener("message",this.receiveMessage,!1)}catch(e){console.log(e)}}componentDidMount(){if(this.props.isLoggedUser&&"undefined"!=typeof window){if(window.location!==window.parent.location)return;this.onSetupCheckSessionRP()}}rpCheckSessionStateFrameOnLoad(e){let t=e.target;if(""==this.state.rpCheckSessionStateFrame_src)return;if(!t.contentDocument)return;window.removeEventListener("message",this.receiveMessageFromChild,!1);let o=new(c())(t.contentDocument.URL);console.log("OPSessionChecker::rpCheckSessionStateFrameOnLoad - resultUrl "+o);let s=o.search(!0),n=c().parseQuery(o.fragment()),a=null;if(s.hasOwnProperty("error")&&(a=s.error),n.hasOwnProperty("error")&&(a=n.error),a)return console.log("OPSessionChecker::rpCheckSessionStateFrameOnLoad - error "+a),void(0,i.initLogOut)();this.props.updateSessionStateStatus(r.SESSION_STATE_STATUS_UNCHANGED)}componentDidUpdate(e){if(this.props.sessionStateStatus!==e.sessionStateStatus){if(this.props.sessionStateStatus===r.SESSION_STATE_STATUS_CHANGED){let e=(0,i.getAuthUrl)(null,"none");return void(""==this.state.rpCheckSessionStateFrame_src&&this.setState(d(d({},this.state),{},{opFrame_src:"",rpCheckSessionStateFrame_src:e.toString()})))}if(this.props.sessionStateStatus===r.SESSION_STATE_STATUS_UNCHANGED)return void this.onSetupCheckSessionRP()}this.props.sessionState!==e.sessionState&&(console.log(`OPSessionChecker::componentDidUpdate updated session state ${this.props.sessionState}`),this.onSetupCheckSessionRP())}checkSession(){let e=new Date;if(console.log(`OPSessionChecker::checkSession now ${e.toLocaleString()}`),null==this.opFrame)return;if(null==this.props.sessionState)return;if(null==this.props.clientId)return;let t=this.props.idpBaseUrl,o=this.opFrame.contentWindow,s=this.props.clientId+" "+this.props.sessionState;o.postMessage(s,t)}setTimer(e){e.target;""!=this.state.opFrame_src&&this.props.isLoggedUser&&this.props.sessionStateStatus===r.SESSION_STATE_STATUS_UNCHANGED&&"undefined"!=typeof window&&(console.log("OPSessionChecker::setTimer setting interval 1800000"),this.interval=window.setInterval(this.checkSession,u))}onSetupCheckSessionRP(){if(null==this.opFrame)return;window.addEventListener("message",this.receiveMessage,!1);const e=`${this.props.idpBaseUrl}/oauth2/check-session`;""==this.state.opFrame_src&&this.setState(d(d({},this.state),{},{opFrame_src:e,rpCheckSessionStateFrame_src:""}))}receiveMessageFromChild(e){if("string"==typeof e.data||e.data instanceof String)try{let t=JSON.parse(e.data);t.hasOwnProperty("action")&&"SET_AUTH_INFO_SILENTLY"==t.action&&(window.removeEventListener("message",this.receiveMessageFromChild,!1),this.props.onUserAuth(t.access_token,t.id_token,t.session_state,t.expires_in,t.hasOwnProperty("refresh_token")?t.refresh_token:null))}catch(e){console.log(e)}}receiveMessage(e){if(e.origin!==this.props.idpBaseUrl)return;let t=e.data;return this.props.sessionStateStatus===r.SESSION_STATE_STATUS_UNCHANGED&&this.props.isLoggedUser&&t===r.SESSION_STATE_STATUS_CHANGED?(console.log("OPSessionChecker::receiveMessage - session state has changed on OP"),"undefined"!=typeof window&&window.clearInterval(this.interval),this.interval=null,window.addEventListener("message",this.receiveMessageFromChild,!1),window.removeEventListener("message",this.receiveMessage,!1),void this.props.updateSessionStateStatus(r.SESSION_STATE_STATUS_CHANGED)):void 0}render(){return this.props.isLoggedUser&&this.props.sessionState?"undefined"!=typeof window&&window.location!==window.parent.location?null:t().createElement("div",{style:{height:"0px"}},t().createElement("iframe",{ref:this.setOPFrameRef,id:"OPFrame",onLoad:this.setTimer,src:this.state.opFrame_src,style:{visibility:"hidden",position:"absolute",left:0,top:0,border:"none",width:0,height:0}},">"),t().createElement("iframe",{ref:this.setCheckSessionStateFrameRef,id:"RPCHeckSessionStateFrame",src:this.state.rpCheckSessionStateFrame_src,onLoad:this.rpCheckSessionStateFrameOnLoad,style:{visibility:"hidden",position:"absolute",left:0,top:0,border:"none",width:0,height:0}},">")):null}}const h=(0,n.connect)((({loggedUserState:e})=>({sessionState:e.sessionState,isLoggedUser:e.isLoggedUser,sessionStateStatus:e.sessionStateStatus})),{doLogout:r.doLogout,updateSessionStateStatus:r.updateSessionStateStatus,onUserAuth:r.onUserAuth})(S)})(),s})()}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o.d(t,{SESSION_STATE_STATUS_CHANGED:()=>r,SESSION_STATE_STATUS_UNCHANGED:()=>n,doLogout:()=>a,onUserAuth:()=>i,updateSessionStateStatus:()=>c});o(4656),o(3605),o(9732);var s=o(886);const n="unchanged",r="changed",i=(e,t,o,n=0,r=null)=>i=>{(0,s.storeAuthInfo)(e,n,r,t),i({type:"SET_LOGGED_USER",payload:{sessionState:o}})},a=e=>(t,o)=>{t({type:"LOGOUT_USER",payload:{backUrl:e}})},c=e=>(t,o)=>{t({type:"UPDATE_SESSION_STATE_STATUS",payload:{sessionStateStatus:e}})}},886:(e,t,o)=>{o.d(t,{getAuthUrl:()=>S,initLogOut:()=>y,storeAuthInfo:()=>f});var s=o(9732),n=(o(4824),o(6113));const r=require("browser-tabs-lock");var i=o.n(r),a=o(6530),c=o.n(a);o(3856),o(4341);new(i());const l="code",d="authInfo",p="nonce",u="pkce",S=(e=null,t=null,o=null,n=null)=>{let r=m(),i=(0,s.getAuthCallback)(),a=O(),d=v(),S=_();null!=e&&(i+=`?BackUrl=${encodeURI(e)}`);let f=h(16);(0,s.putOnLocalStorage)(p,f);let w=c()(`${a}/oauth2/auth`),y={response_type:encodeURI(S),scope:encodeURI(d),nonce:f,response_mode:"fragment",client_id:encodeURI(r),redirect_uri:encodeURI(i)};if(S===l){const e=g();(0,s.putOnLocalStorage)(u,JSON.stringify(e)),y.code_challenge=e.codeChallenge,y.code_challenge_method="S256",y.approval_prompt="force"}return t&&(y.prompt=t),d&&d.includes("offline_access")&&(y.prompt="consent"),o&&(y.id_token_hint=o),n&&(y.provider=n),w=w.query(y),w},h=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let s=0;s<e;s++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},g=()=>{const e=(0,s.base64URLEncode)((0,n.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,s.base64URLEncode)((0,s.sha256)(Buffer.from(e))),createdAt:new Date}},f=(e,t,o=null,n=null)=>{let r=w(),i={accessToken:e,expiresIn:t,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null===o&&r&&(o=r.refreshToken),null===n&&r&&(n=r.idToken),o&&(i.refreshToken=o),n&&(i.idToken=n),(0,s.putOnLocalStorage)(d,JSON.stringify(i))},w=()=>{let e=(0,s.getFromLocalStorage)(d,!1);return null===e?null:JSON.parse(e)},m=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,_=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",O=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,v=()=>"undefined"!=typeof window?window.SCOPES:null,y=()=>{(0,s.getCurrentLocation)().replace((e=>{let t=O(),o=m(),n=c()(`${t}/oauth2/end-session`),r=h(16),i=(0,s.getOrigin)()+"/auth/logout";return(0,s.putOnLocalStorage)("post_logout_state",r),n.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(i),client_id:encodeURI(o),state:r})})((()=>{if("undefined"!=typeof window){const e=w();return e?e.idToken:null}return null})()).toString())}},3605:(e,t,o)=>{o(4824),o(6530);require("sweetalert2");o(4656),o(9732),o(4341),o(886);const s=e=>t=>({type:e,payload:t});s("RESET_LOADING"),s("START_LOADING"),s("STOP_LOADING")},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>d,getAuthCallback:()=>n,getCurrentLocation:()=>r,getFromLocalStorage:()=>c,getOrigin:()=>i,putOnLocalStorage:()=>a,sha256:()=>p});require("moment-timezone");o(6530);var s=o(6113);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,r=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},i=()=>"undefined"!=typeof window?window.location.origin:null,a=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},c=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),l(e)),o}return null},l=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},d=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),p=e=>(0,s.createHash)("sha256").update(e).digest()},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(s){var n=t[s];if(void 0!==n)return n.exports;var r=t[s]={exports:{}};return e[s](r,r.exports,o),r.exports}(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var s in t)o.o(t,s)&&!o.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var s={};return(()=>{o.r(s),o.d(s,{default:()=>h});const e=require("react");var t=o.n(e);const n=require("react-redux");var r=o(4341),i=o(886),a=o(6530),c=o.n(a);function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,s)}return o}function d(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){p(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function p(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}const u=18e5;class S extends t().Component{constructor(e){super(e),this.state={opFrame_src:"",rpCheckSessionStateFrame_src:""},this.receiveMessage=this.receiveMessage.bind(this),this.receiveMessageFromChild=this.receiveMessageFromChild.bind(this),this.setTimer=this.setTimer.bind(this),this.checkSession=this.checkSession.bind(this),this.onSetupCheckSessionRP=this.onSetupCheckSessionRP.bind(this),this.rpCheckSessionStateFrameOnLoad=this.rpCheckSessionStateFrameOnLoad.bind(this),this.opFrame=null,this.rpCheckSessionStateFrame=null,this.setOPFrameRef=e=>{this.opFrame=e},this.setCheckSessionStateFrameRef=e=>{this.rpCheckSessionStateFrame=e},this.interval=null}componentWillUnmount(){try{this.interval&&(window.clearInterval(this.interval),this.interval=null),window.removeEventListener("message",this.receiveMessageFromChild,!1),window.removeEventListener("message",this.receiveMessage,!1)}catch(e){console.log(e)}}componentDidMount(){if(this.props.isLoggedUser&&"undefined"!=typeof window){if(window.location!==window.parent.location)return;this.onSetupCheckSessionRP()}}rpCheckSessionStateFrameOnLoad(e){let t=e.target;if(""==this.state.rpCheckSessionStateFrame_src)return;if(!t.contentDocument)return;window.removeEventListener("message",this.receiveMessageFromChild,!1);let o=new(c())(t.contentDocument.URL);console.log("OPSessionChecker::rpCheckSessionStateFrameOnLoad - resultUrl "+o);let s=o.search(!0),n=c().parseQuery(o.fragment()),a=null;if(s.hasOwnProperty("error")&&(a=s.error),n.hasOwnProperty("error")&&(a=n.error),a)return console.log("OPSessionChecker::rpCheckSessionStateFrameOnLoad - error "+a),void(0,i.initLogOut)();this.props.updateSessionStateStatus(r.SESSION_STATE_STATUS_UNCHANGED)}componentDidUpdate(e){if(this.props.sessionStateStatus!==e.sessionStateStatus){if(this.props.sessionStateStatus===r.SESSION_STATE_STATUS_CHANGED){let e=(0,i.getAuthUrl)(null,"none");return void(""==this.state.rpCheckSessionStateFrame_src&&this.setState(d(d({},this.state),{},{opFrame_src:"",rpCheckSessionStateFrame_src:e.toString()})))}if(this.props.sessionStateStatus===r.SESSION_STATE_STATUS_UNCHANGED)return void this.onSetupCheckSessionRP()}this.props.sessionState!==e.sessionState&&(console.log(`OPSessionChecker::componentDidUpdate updated session state ${this.props.sessionState}`),this.onSetupCheckSessionRP())}checkSession(){let e=new Date;if(console.log(`OPSessionChecker::checkSession now ${e.toLocaleString()}`),null==this.opFrame)return;if(null==this.props.sessionState)return;if(null==this.props.clientId)return;let t=this.props.idpBaseUrl,o=this.opFrame.contentWindow,s=this.props.clientId+" "+this.props.sessionState;o.postMessage(s,t)}setTimer(e){e.target;""!=this.state.opFrame_src&&this.props.isLoggedUser&&this.props.sessionStateStatus===r.SESSION_STATE_STATUS_UNCHANGED&&"undefined"!=typeof window&&(console.log("OPSessionChecker::setTimer setting interval 1800000"),this.interval=window.setInterval(this.checkSession,u))}onSetupCheckSessionRP(){if(null==this.opFrame)return;window.addEventListener("message",this.receiveMessage,!1);const e=`${this.props.idpBaseUrl}/oauth2/check-session`;""==this.state.opFrame_src&&this.setState(d(d({},this.state),{},{opFrame_src:e,rpCheckSessionStateFrame_src:""}))}receiveMessageFromChild(e){if("string"==typeof e.data||e.data instanceof String)try{let t=JSON.parse(e.data);t.hasOwnProperty("action")&&"SET_AUTH_INFO_SILENTLY"==t.action&&(window.removeEventListener("message",this.receiveMessageFromChild,!1),this.props.onUserAuth(t.access_token,t.id_token,t.session_state,t.expires_in,t.hasOwnProperty("refresh_token")?t.refresh_token:null))}catch(e){console.log(e)}}receiveMessage(e){if(e.origin!==this.props.idpBaseUrl)return;let t=e.data;return this.props.sessionStateStatus===r.SESSION_STATE_STATUS_UNCHANGED&&this.props.isLoggedUser&&t===r.SESSION_STATE_STATUS_CHANGED?(console.log("OPSessionChecker::receiveMessage - session state has changed on OP"),"undefined"!=typeof window&&window.clearInterval(this.interval),this.interval=null,window.addEventListener("message",this.receiveMessageFromChild,!1),window.removeEventListener("message",this.receiveMessage,!1),void this.props.updateSessionStateStatus(r.SESSION_STATE_STATUS_CHANGED)):void 0}render(){return this.props.isLoggedUser&&this.props.sessionState?"undefined"!=typeof window&&window.location!==window.parent.location?null:t().createElement("div",{style:{height:"0px"}},t().createElement("iframe",{ref:this.setOPFrameRef,id:"OPFrame",onLoad:this.setTimer,src:this.state.opFrame_src,style:{visibility:"hidden",position:"absolute",left:0,top:0,border:"none",width:0,height:0}},">"),t().createElement("iframe",{ref:this.setCheckSessionStateFrameRef,id:"RPCHeckSessionStateFrame",src:this.state.rpCheckSessionStateFrame_src,onLoad:this.rpCheckSessionStateFrameOnLoad,style:{visibility:"hidden",position:"absolute",left:0,top:0,border:"none",width:0,height:0}},">")):null}}const h=(0,n.connect)((({loggedUserState:e})=>({sessionState:e.sessionState,isLoggedUser:e.isLoggedUser,sessionStateStatus:e.sessionStateStatus})),{doLogout:r.doLogout,updateSessionStateStatus:r.updateSessionStateStatus,onUserAuth:r.onUserAuth})(S)})(),s})()}));
|
package/lib/utils/actions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o.d(t,{CLEAR_SESSION_STATE:()=>n});o(4656),o(3605),o(9732),o(886);const n="CLEAR_SESSION_STATE"},886:(e,t,o)=>{o.d(t,{doLogin:()=>g,initLogOut:()=>R});var n=o(9732),r=(o(4824),o(6113));const a=require("browser-tabs-lock");var i=o.n(a),s=o(6530),l=o.n(s);o(3856),o(4341);new(i());const d="code",u="authInfo",c="nonce",p="pkce",f=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let n=0;n<e;n++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},g=(e=null,t=null,o=null)=>{let r=((e=null,t=null,o=null,r=null)=>{let a=S(),i=(0,n.getAuthCallback)(),s=_(),u=m(),g=h();null!=e&&(i+=`?BackUrl=${encodeURI(e)}`);let y=f(16);(0,n.putOnLocalStorage)(c,y);let R=l()(`${s}/oauth2/auth`),b={response_type:encodeURI(g),scope:encodeURI(u),nonce:y,response_mode:"fragment",client_id:encodeURI(a),redirect_uri:encodeURI(i)};if(g===d){const e=w();(0,n.putOnLocalStorage)(p,JSON.stringify(e)),b.code_challenge=e.codeChallenge,b.code_challenge_method="S256",b.approval_prompt="force"}return t&&(b.prompt=t),o&&(b.id_token_hint=o),r&&(b.provider=r),R=R.query(b),R})(e,o,null,t);(0,n.getCurrentLocation)().replace(r.toString())},w=()=>{const e=(0,n.base64URLEncode)((0,r.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,n.base64URLEncode)((0,n.sha256)(Buffer.from(e))),createdAt:new Date}},y=()=>{let e=(0,n.getFromLocalStorage)(u,!1);return null===e?null:JSON.parse(e)},S=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,h=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",_=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,m=()=>"undefined"!=typeof window?window.SCOPES:null,R=()=>{(0,n.getCurrentLocation)().replace((e=>{let t=_(),o=S(),r=l()(`${t}/oauth2/end-session`),a=f(16),i=(0,n.getOrigin)()+"/auth/logout";return(0,n.putOnLocalStorage)("post_logout_state",a),r.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(i),client_id:encodeURI(o),state:a})})((()=>{if("undefined"!=typeof window){const e=y();return e?e.idToken:null}return null})()).toString())}},3605:(e,t,o)=>{o.r(t),o.d(t,{CLEAR_MESSAGE:()=>m,GENERIC_ERROR:()=>w,RESET_LOADING:()=>y,SHOW_MESSAGE:()=>R,START_LOADING:()=>S,STOP_LOADING:()=>h,VALIDATE:()=>_,authErrorHandler:()=>C,createAction:()=>b,defaultErrorHandler:()=>P,deleteRequest:()=>T,downloadFileByContent:()=>M,escapeFilterValue:()=>$,fetchErrorHandler:()=>U,fetchResponseHandler:()=>D,getCSV:()=>F,getRawCSV:()=>V,getRequest:()=>I,postFile:()=>x,postRequest:()=>q,putFile:()=>N,putRequest:()=>v,resetLoading:()=>E,responseHandler:()=>j,showMessage:()=>G,showSuccessMessage:()=>H,startLoading:()=>O,stopLoading:()=>L});var n=o(4824),r=o.n(n),a=o(6530),i=o.n(a);const s=require("sweetalert2");var l=o.n(s),d=o(4656),u=o.n(d),c=o(9732),p=o(4341),f=o(886);let g=r();const w="Yikes. Something seems to be broken. Our web team has been notified, and we apologize for the inconvenience.",y="RESET_LOADING",S="START_LOADING",h="STOP_LOADING",_="VALIDATE",m="CLEAR_MESSAGE",R="SHOW_MESSAGE",b=e=>t=>({type:e,payload:t}),E=b(y),O=b(S),L=b(h),k={},A=e=>0===Object.keys(e).length&&e.constructor===Object,C=(e,t)=>(t,o)=>{let n=e.status,r="";switch(t(L()),n){case 403:let o={title:"ERROR",html:u().translate("errors.user_not_authz"),type:"error"};t(G(o,f.initLogOut));break;case 401:let n=(0,c.getCurrentPathName)(),s=(0,c.isClearingSessionState)();t({type:p.CLEAR_SESSION_STATE,payload:{}}),s||((0,c.setSessionClearingState)(!0),console.log("authErrorHandler 401 - re login"),(0,f.doLogin)(n));break;case 404:r="",r=e.response.body&&e.response.body.message?e.response.body.message:e.response.error&&e.response.error.message?e.response.error.message:e.message,l().fire("Not Found",r,"warning");break;case 412:for(var[a,i]of Object.entries(e.response.body.errors))isNaN(a)&&(r+=a+": "),r+=i+"<br>";l().fire("Validation error",r,"warning"),t({type:_,payload:{errors:e.response.body.errors}});break;default:l().fire("ERROR",u().translate("errors.server_error"),"error")}},I=(e,t,o,n=P,r={})=>(a={})=>(s,l)=>{let d=i()(o);A(a)||(d=d.query(a));let u=d.toString();return e&&"function"==typeof e&&s(e(r)),(e=>{k[e]&&(k[e].abort(),console.log(`aborted request ${e}`),delete k[e])})(u),new Promise(((e,o)=>{let r=g.get(d.toString()).timeout({response:6e4,deadline:6e4}).end(j(s,l,t,n,e,o));((e,t)=>{k[e]=t})(u,r)}))},v=(e,t,o,n,r=P,a={})=>(s={})=>(l,d)=>{let u=i()(o);return A(s)||(u=u.query(s)),e&&"function"==typeof e&&l(e(a)),new Promise(((e,o)=>{null==n&&(n={}),g.put(u.toString()).send(n).end(j(l,d,t,r,e,o))}))},T=(e,t,o,n,r=P,a={})=>s=>(l,d)=>{let u=i()(o);return A(s)||(u=u.query(s)),e&&"function"==typeof e&&l(e(a)),new Promise(((e,o)=>{null==n&&(n={}),g.delete(u).send(n).end(j(l,d,t,r,e,o))}))},q=(e,t,o,n,r=P,a={})=>(s={})=>(l,d)=>{let u=i()(o);return A(s)||(u=u.query(s)),e&&"function"==typeof e&&l(e(a)),new Promise(((e,o)=>{let a=g.post(u);null!=n?a.send(n):a.set("Content-Type","text/plain"),a.end(j(l,d,t,r,e,o))}))},x=(e,t,o,n,r={},a=P,s={})=>(l={})=>(d,u)=>{let c=i()(o);return A(l)||(c=c.query(l)),e&&"function"==typeof e&&d(e(s)),new Promise(((e,o)=>{const i=g.post(c).attach("file",n);A(r)||Object.keys(r).forEach((function(e){let t=r[e];i.field(e,t)})),i.end(j(d,u,t,a,e,o))}))},N=(e,t,o,n=null,r={},a=P,s={})=>(l={})=>(d,u)=>{let c=i()(o);return A(l)||(c=c.query(l)),e&&"function"==typeof e&&d(e(s)),new Promise(((e,o)=>{const i=g.put(c);null!=n&&i.attach("file",n),A(r)||Object.keys(r).forEach((function(e){let t=r[e];i.field(e,t)})),i.end(j(d,u,t,a,e,o))}))},P=(e,t)=>e=>{let o=t.body,n="";o instanceof Object&&o.hasOwnProperty("message")&&(n=o.message),l().fire(t.statusText,n,"error")},j=(e,t,o,n,r,a)=>(i,s)=>{if(i||!s.ok)return n&&n(i,s)(e,t),a({err:i,res:s,dispatch:e,state:t});let l=s.body;return"function"==typeof o?(e(o({response:l})),r({response:l})):(e(o),r({response:l}))},U=e=>{let t=e.status,o=e.statusText;switch(t){case 403:l().fire("ERROR",u().translate("errors.user_not_authz"),"warning");break;case 401:l().fire("ERROR",u().translate("errors.session_expired"),"error");break;case 412:l().fire("ERROR",o,"warning");case 500:l().fire("ERROR",u().translate("errors.server_error"),"error")}},D=e=>{if(e.ok)return e.json();throw e},G=(e,t={})=>o=>{o(L()),l().fire(e).then((e=>{e.value&&"function"==typeof t&&t()}))},H=e=>t=>{t(L()),l().fire({title:u().translate("general.done"),html:e,type:"success"})},M=(e,t,o)=>{let n=document.createElement("a");n.textContent="download",n.download=e,n.href=`data:${o},${encodeURIComponent(t)}`,document.body.appendChild(n),n.click(),document.body.removeChild(n)},F=(e,t,o,n=null)=>r=>{let a=i()(e);return A(t)||(a=a.query(t)),r(O()),fetch(a.toString()).then((e=>{if(e.ok)return e.text();throw e})).then((e=>{r(L()),n&&(e=n+"\r\r"+e),M(o,e,"text/csv;charset=utf-8")})).catch(U)},V=(e,t,o=null)=>{let n=i()(e);return A(t)||(n=n.query(t)),fetch(n.toString()).then((e=>{if(e.ok)return e.text();throw e})).then((e=>(o&&(e=o+"\r\r"+e),e))).catch(U)},$=e=>e=(e=e.replace(/,/g,"\\,")).replace(/;/g,"\\;")},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>f,getAuthCallback:()=>r,getCurrentLocation:()=>a,getCurrentPathName:()=>s,getFromLocalStorage:()=>d,getOrigin:()=>i,isClearingSessionState:()=>c,putOnLocalStorage:()=>l,setSessionClearingState:()=>p,sha256:()=>g});require("moment-timezone");o(6530);var n=o(6113);const r=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,a=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},i=()=>"undefined"!=typeof window?window.location.origin:null,s=()=>"undefined"!=typeof window?window.location.pathname:null,l=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},d=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),u(e)),o}return null},u=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},c=()=>"undefined"!=typeof window&&window.clearing_session_state,p=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},f=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),g=e=>(0,n.createHash)("sha256").update(e).digest()},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,o),a.exports}return(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),o(3605)})()}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(function(){return(()=>{"use strict";var e={4341:(e,t,o)=>{o.d(t,{CLEAR_SESSION_STATE:()=>n});o(4656),o(3605),o(9732),o(886);const n="CLEAR_SESSION_STATE"},886:(e,t,o)=>{o.d(t,{doLogin:()=>g,initLogOut:()=>R});var n=o(9732),r=(o(4824),o(6113));const a=require("browser-tabs-lock");var i=o.n(a),s=o(6530),l=o.n(s);o(3856),o(4341);new(i());const d="code",u="authInfo",c="nonce",p="pkce",f=e=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",o="";for(let n=0;n<e;n++)o+=t.charAt(Math.floor(Math.random()*t.length));return o},g=(e=null,t=null,o=null)=>{let r=((e=null,t=null,o=null,r=null)=>{let a=S(),i=(0,n.getAuthCallback)(),s=_(),u=m(),g=h();null!=e&&(i+=`?BackUrl=${encodeURI(e)}`);let y=f(16);(0,n.putOnLocalStorage)(c,y);let R=l()(`${s}/oauth2/auth`),b={response_type:encodeURI(g),scope:encodeURI(u),nonce:y,response_mode:"fragment",client_id:encodeURI(a),redirect_uri:encodeURI(i)};if(g===d){const e=w();(0,n.putOnLocalStorage)(p,JSON.stringify(e)),b.code_challenge=e.codeChallenge,b.code_challenge_method="S256",b.approval_prompt="force"}return t&&(b.prompt=t),u&&u.includes("offline_access")&&(b.prompt="consent"),o&&(b.id_token_hint=o),r&&(b.provider=r),R=R.query(b),R})(e,o,null,t);(0,n.getCurrentLocation)().replace(r.toString())},w=()=>{const e=(0,n.base64URLEncode)((0,r.randomBytes)(64));return{codeVerifier:e,codeChallenge:(0,n.base64URLEncode)((0,n.sha256)(Buffer.from(e))),createdAt:new Date}},y=()=>{let e=(0,n.getFromLocalStorage)(u,!1);return null===e?null:JSON.parse(e)},S=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,h=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",_=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,m=()=>"undefined"!=typeof window?window.SCOPES:null,R=()=>{(0,n.getCurrentLocation)().replace((e=>{let t=_(),o=S(),r=l()(`${t}/oauth2/end-session`),a=f(16),i=(0,n.getOrigin)()+"/auth/logout";return(0,n.putOnLocalStorage)("post_logout_state",a),r.query({id_token_hint:e,post_logout_redirect_uri:encodeURI(i),client_id:encodeURI(o),state:a})})((()=>{if("undefined"!=typeof window){const e=y();return e?e.idToken:null}return null})()).toString())}},3605:(e,t,o)=>{o.r(t),o.d(t,{CLEAR_MESSAGE:()=>m,GENERIC_ERROR:()=>w,RESET_LOADING:()=>y,SHOW_MESSAGE:()=>R,START_LOADING:()=>S,STOP_LOADING:()=>h,VALIDATE:()=>_,authErrorHandler:()=>C,createAction:()=>b,defaultErrorHandler:()=>P,deleteRequest:()=>T,downloadFileByContent:()=>M,escapeFilterValue:()=>$,fetchErrorHandler:()=>U,fetchResponseHandler:()=>D,getCSV:()=>F,getRawCSV:()=>V,getRequest:()=>I,postFile:()=>x,postRequest:()=>q,putFile:()=>N,putRequest:()=>v,resetLoading:()=>E,responseHandler:()=>j,showMessage:()=>G,showSuccessMessage:()=>H,startLoading:()=>O,stopLoading:()=>L});var n=o(4824),r=o.n(n),a=o(6530),i=o.n(a);const s=require("sweetalert2");var l=o.n(s),d=o(4656),u=o.n(d),c=o(9732),p=o(4341),f=o(886);let g=r();const w="Yikes. Something seems to be broken. Our web team has been notified, and we apologize for the inconvenience.",y="RESET_LOADING",S="START_LOADING",h="STOP_LOADING",_="VALIDATE",m="CLEAR_MESSAGE",R="SHOW_MESSAGE",b=e=>t=>({type:e,payload:t}),E=b(y),O=b(S),L=b(h),k={},A=e=>0===Object.keys(e).length&&e.constructor===Object,C=(e,t)=>(t,o)=>{let n=e.status,r="";switch(t(L()),n){case 403:let o={title:"ERROR",html:u().translate("errors.user_not_authz"),type:"error"};t(G(o,f.initLogOut));break;case 401:let n=(0,c.getCurrentPathName)(),s=(0,c.isClearingSessionState)();t({type:p.CLEAR_SESSION_STATE,payload:{}}),s||((0,c.setSessionClearingState)(!0),console.log("authErrorHandler 401 - re login"),(0,f.doLogin)(n));break;case 404:r="",r=e.response.body&&e.response.body.message?e.response.body.message:e.response.error&&e.response.error.message?e.response.error.message:e.message,l().fire("Not Found",r,"warning");break;case 412:for(var[a,i]of Object.entries(e.response.body.errors))isNaN(a)&&(r+=a+": "),r+=i+"<br>";l().fire("Validation error",r,"warning"),t({type:_,payload:{errors:e.response.body.errors}});break;default:l().fire("ERROR",u().translate("errors.server_error"),"error")}},I=(e,t,o,n=P,r={})=>(a={})=>(s,l)=>{let d=i()(o);A(a)||(d=d.query(a));let u=d.toString();return e&&"function"==typeof e&&s(e(r)),(e=>{k[e]&&(k[e].abort(),console.log(`aborted request ${e}`),delete k[e])})(u),new Promise(((e,o)=>{let r=g.get(d.toString()).timeout({response:6e4,deadline:6e4}).end(j(s,l,t,n,e,o));((e,t)=>{k[e]=t})(u,r)}))},v=(e,t,o,n,r=P,a={})=>(s={})=>(l,d)=>{let u=i()(o);return A(s)||(u=u.query(s)),e&&"function"==typeof e&&l(e(a)),new Promise(((e,o)=>{null==n&&(n={}),g.put(u.toString()).send(n).end(j(l,d,t,r,e,o))}))},T=(e,t,o,n,r=P,a={})=>s=>(l,d)=>{let u=i()(o);return A(s)||(u=u.query(s)),e&&"function"==typeof e&&l(e(a)),new Promise(((e,o)=>{null==n&&(n={}),g.delete(u).send(n).end(j(l,d,t,r,e,o))}))},q=(e,t,o,n,r=P,a={})=>(s={})=>(l,d)=>{let u=i()(o);return A(s)||(u=u.query(s)),e&&"function"==typeof e&&l(e(a)),new Promise(((e,o)=>{let a=g.post(u);null!=n?a.send(n):a.set("Content-Type","text/plain"),a.end(j(l,d,t,r,e,o))}))},x=(e,t,o,n,r={},a=P,s={})=>(l={})=>(d,u)=>{let c=i()(o);return A(l)||(c=c.query(l)),e&&"function"==typeof e&&d(e(s)),new Promise(((e,o)=>{const i=g.post(c).attach("file",n);A(r)||Object.keys(r).forEach((function(e){let t=r[e];i.field(e,t)})),i.end(j(d,u,t,a,e,o))}))},N=(e,t,o,n=null,r={},a=P,s={})=>(l={})=>(d,u)=>{let c=i()(o);return A(l)||(c=c.query(l)),e&&"function"==typeof e&&d(e(s)),new Promise(((e,o)=>{const i=g.put(c);null!=n&&i.attach("file",n),A(r)||Object.keys(r).forEach((function(e){let t=r[e];i.field(e,t)})),i.end(j(d,u,t,a,e,o))}))},P=(e,t)=>e=>{let o=t.body,n="";o instanceof Object&&o.hasOwnProperty("message")&&(n=o.message),l().fire(t.statusText,n,"error")},j=(e,t,o,n,r,a)=>(i,s)=>{if(i||!s.ok)return n&&n(i,s)(e,t),a({err:i,res:s,dispatch:e,state:t});let l=s.body;return"function"==typeof o?(e(o({response:l})),r({response:l})):(e(o),r({response:l}))},U=e=>{let t=e.status,o=e.statusText;switch(t){case 403:l().fire("ERROR",u().translate("errors.user_not_authz"),"warning");break;case 401:l().fire("ERROR",u().translate("errors.session_expired"),"error");break;case 412:l().fire("ERROR",o,"warning");case 500:l().fire("ERROR",u().translate("errors.server_error"),"error")}},D=e=>{if(e.ok)return e.json();throw e},G=(e,t={})=>o=>{o(L()),l().fire(e).then((e=>{e.value&&"function"==typeof t&&t()}))},H=e=>t=>{t(L()),l().fire({title:u().translate("general.done"),html:e,type:"success"})},M=(e,t,o)=>{let n=document.createElement("a");n.textContent="download",n.download=e,n.href=`data:${o},${encodeURIComponent(t)}`,document.body.appendChild(n),n.click(),document.body.removeChild(n)},F=(e,t,o,n=null)=>r=>{let a=i()(e);return A(t)||(a=a.query(t)),r(O()),fetch(a.toString()).then((e=>{if(e.ok)return e.text();throw e})).then((e=>{r(L()),n&&(e=n+"\r\r"+e),M(o,e,"text/csv;charset=utf-8")})).catch(U)},V=(e,t,o=null)=>{let n=i()(e);return A(t)||(n=n.query(t)),fetch(n.toString()).then((e=>{if(e.ok)return e.text();throw e})).then((e=>(o&&(e=o+"\r\r"+e),e))).catch(U)},$=e=>e=(e=e.replace(/,/g,"\\,")).replace(/;/g,"\\;")},9732:(e,t,o)=>{o.d(t,{base64URLEncode:()=>f,getAuthCallback:()=>r,getCurrentLocation:()=>a,getCurrentPathName:()=>s,getFromLocalStorage:()=>d,getOrigin:()=>i,isClearingSessionState:()=>c,putOnLocalStorage:()=>l,setSessionClearingState:()=>p,sha256:()=>g});require("moment-timezone");o(6530);var n=o(6113);const r=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,a=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},i=()=>"undefined"!=typeof window?window.location.origin:null,s=()=>"undefined"!=typeof window?window.location.pathname:null,l=(e,t)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,t)},d=(e,t)=>{if("undefined"!=typeof window){let o=window.localStorage.getItem(e);return t&&(console.log(`getFromLocalStorage removing key ${e}`),u(e)),o}return null},u=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},c=()=>"undefined"!=typeof window&&window.clearing_session_state,p=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},f=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),g=e=>(0,n.createHash)("sha256").update(e).digest()},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},3856:e=>{e.exports=require("idtoken-verifier")},4824:e=>{e.exports=require("superagent")},6530:e=>{e.exports=require("urijs")},6113:e=>{e.exports=require("crypto")}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,o),a.exports}return(()=>{o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t}})(),(()=>{o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}})(),(()=>{o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),o(3605)})()}));
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openstack-uicore-foundation",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6",
|
|
4
4
|
"description": "ui reactjs components for openstack marketing site",
|
|
5
5
|
"main": "lib/openstack-uicore-foundation.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build-dev": "./node_modules/.bin/webpack --config webpack.dev.js",
|
|
8
|
-
"build": "./node_modules/.bin/webpack --config webpack.prod.js"
|
|
8
|
+
"build": "./node_modules/.bin/webpack --config webpack.prod.js",
|
|
9
|
+
"clean": "cd ./lib && rm -R *"
|
|
9
10
|
},
|
|
10
11
|
"author": "smarcet@gmail.com",
|
|
11
12
|
"license": "APACHE 2.0",
|