@joystick.js/ui-canary 0.0.0-canary.28 → 0.0.0-canary.281

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.
Files changed (231) hide show
  1. package/build.js +15 -0
  2. package/dist/index.js +20 -20
  3. package/increment_version.js +3 -0
  4. package/index.html +7 -0
  5. package/package.json +9 -13
  6. package/src/accounts/authenticated.js +8 -0
  7. package/src/accounts/index.js +21 -0
  8. package/src/accounts/login.js +7 -0
  9. package/src/accounts/logout.js +8 -0
  10. package/src/accounts/recover_password.js +7 -0
  11. package/src/accounts/request.js +70 -0
  12. package/src/accounts/reset_password.js +7 -0
  13. package/src/accounts/signup.js +7 -0
  14. package/src/accounts/user.js +8 -0
  15. package/src/api/get.js +73 -0
  16. package/src/api/index.js +10 -0
  17. package/src/api/set.js +83 -0
  18. package/src/attach_joystick_to_window.js +31 -0
  19. package/src/cache/class.js +98 -0
  20. package/src/cache/index.js +5 -0
  21. package/src/component/class.js +365 -0
  22. package/src/component/css/compile.js +108 -0
  23. package/src/component/data/compile.js +44 -0
  24. package/src/component/data/fetch.js +12 -0
  25. package/src/component/data/load_data_from_window.js +14 -0
  26. package/src/component/dom/is_valid_attribute_name.js +11 -0
  27. package/src/component/events/attach_event_listener_for_element.js +32 -0
  28. package/src/component/events/serialize.js +12 -0
  29. package/src/component/index.js +17 -0
  30. package/src/component/methods/compile.js +28 -0
  31. package/src/component/props/compile.js +21 -0
  32. package/src/component/props/compile_default.js +21 -0
  33. package/src/component/register_component_options.js +44 -0
  34. package/src/component/render_methods/component.js +53 -0
  35. package/src/component/render_methods/component_ssr.js +22 -0
  36. package/src/component/render_methods/each.js +19 -0
  37. package/src/component/render_methods/i18n.js +50 -0
  38. package/src/component/render_methods/index.js +19 -0
  39. package/src/component/render_methods/when.js +20 -0
  40. package/src/component/state/compile.js +21 -0
  41. package/src/component/url/compile.js +39 -0
  42. package/src/component/validate_component_options/has_required_options.js +9 -0
  43. package/src/component/validate_component_options/index.js +16 -0
  44. package/src/component/validate_component_options/required_options.js +5 -0
  45. package/src/component/virtual_dom/diff.js +61 -0
  46. package/src/component/virtual_dom/diff_attributes.js +37 -0
  47. package/src/component/virtual_dom/diff_children.js +74 -0
  48. package/src/component/virtual_dom/element_patch_functions.js +31 -0
  49. package/src/component/virtual_dom/map_patch_functions_to_nodes.js +14 -0
  50. package/src/component/virtual_dom/render_virtual_dom_to_dom.js +37 -0
  51. package/src/external/get.js +9 -0
  52. package/src/external/track.js +10 -0
  53. package/src/forms/validate.js +306 -0
  54. package/src/forms/validators/credit_card.js +19 -0
  55. package/src/forms/validators/custom.js +5 -0
  56. package/src/forms/validators/email.js +12 -0
  57. package/src/forms/validators/equals.js +5 -0
  58. package/src/forms/validators/index.js +43 -0
  59. package/src/forms/validators/matches.js +5 -0
  60. package/src/forms/validators/max_length.js +5 -0
  61. package/src/forms/validators/min_length.js +5 -0
  62. package/src/forms/validators/phone.js +14 -0
  63. package/src/forms/validators/postal_code.js +204 -0
  64. package/src/forms/validators/regex.js +5 -0
  65. package/src/forms/validators/required.js +13 -0
  66. package/src/forms/validators/semver.js +14 -0
  67. package/src/forms/validators/slug.js +12 -0
  68. package/src/forms/validators/strong_password.js +12 -0
  69. package/src/forms/validators/url.js +12 -0
  70. package/src/forms/validators/vat.js +54 -0
  71. package/src/index.js +55 -0
  72. package/src/lib/constants.js +13 -0
  73. package/src/lib/debounce.js +9 -0
  74. package/src/lib/generate_cookie_header.js +7 -0
  75. package/src/lib/generate_id.js +15 -0
  76. package/src/lib/get_joystick_environment.js +13 -0
  77. package/src/lib/log_request_errors.js +15 -0
  78. package/src/lib/nested_object_diff.js +164 -0
  79. package/src/lib/parse_json.js +12 -0
  80. package/src/lib/throw_framework_error.js +5 -0
  81. package/src/lib/types.js +59 -0
  82. package/src/mount/index.js +45 -0
  83. package/src/test/create_file.js +10 -0
  84. package/src/test/index.js +13 -0
  85. package/src/test/track_function_call.js +16 -0
  86. package/src/tree/add_node_to_tree.js +6 -0
  87. package/src/tree/clean_up.js +11 -0
  88. package/src/tree/get_child_instance_ids.js +7 -0
  89. package/src/tree/get_children_from_tree.js +25 -0
  90. package/src/tree/get_css_from_tree.js +43 -0
  91. package/src/tree/get_event_listeners_for_nodes.js +15 -0
  92. package/src/tree/get_node_from_tree.js +7 -0
  93. package/src/tree/get_parent_from_tree.js +8 -0
  94. package/src/tree/jobs/index.js +201 -0
  95. package/src/tree/jobs/run.js +11 -0
  96. package/src/tree/replace_child_in_vdom.js +18 -0
  97. package/src/upload/index.js +72 -0
  98. package/src/websockets/client.js +125 -0
  99. package/src/websockets/register_on_component.js +27 -0
  100. package/test.js +145 -0
  101. package/README.md +0 -8
  102. package/_package.json +0 -26
  103. package/canary.js +0 -12
  104. package/dist/accounts/authenticated.js +0 -1
  105. package/dist/accounts/index.js +0 -1
  106. package/dist/accounts/login.js +0 -1
  107. package/dist/accounts/logout.js +0 -1
  108. package/dist/accounts/recoverPassword.js +0 -1
  109. package/dist/accounts/request.js +0 -1
  110. package/dist/accounts/resetPassword.js +0 -1
  111. package/dist/accounts/signup.js +0 -1
  112. package/dist/accounts/user.js +0 -1
  113. package/dist/api/get.js +0 -1
  114. package/dist/api/index.js +0 -1
  115. package/dist/api/set.js +0 -1
  116. package/dist/attachJoystickToWindow.js +0 -1
  117. package/dist/cache/class.js +0 -1
  118. package/dist/cache/index.js +0 -1
  119. package/dist/component/class/css/compile.js +0 -21
  120. package/dist/component/class/css/prefix.js +0 -1
  121. package/dist/component/class/data/compile.js +0 -1
  122. package/dist/component/class/data/fetch.js +0 -1
  123. package/dist/component/class/data/findComponentDataFromSSR.js +0 -1
  124. package/dist/component/class/data/loadDataFromWindow.js +0 -1
  125. package/dist/component/class/events/_registerListeners.js +0 -1
  126. package/dist/component/class/events/_unregisterListeners.js +0 -1
  127. package/dist/component/class/events/registerListeners.js +0 -1
  128. package/dist/component/class/events/serialize.js +0 -1
  129. package/dist/component/class/events/unregisterListeners.js +0 -1
  130. package/dist/component/class/index.js +0 -21
  131. package/dist/component/class/lifecycle/compile.js +0 -1
  132. package/dist/component/class/methods/compile.js +0 -1
  133. package/dist/component/class/options/allowedComponentOptions.js +0 -1
  134. package/dist/component/class/options/allowedDOMEvents.js +0 -1
  135. package/dist/component/class/options/allowedLifecycleMethods.js +0 -1
  136. package/dist/component/class/options/defaultLifecycleMethods.js +0 -1
  137. package/dist/component/class/options/hasAllRequiredOptions.js +0 -1
  138. package/dist/component/class/options/registerOptions.js +0 -21
  139. package/dist/component/class/options/requiredOptions.js +0 -1
  140. package/dist/component/class/options/validateOptions.js +0 -1
  141. package/dist/component/class/options/validators/css.js +0 -1
  142. package/dist/component/class/options/validators/events.js +0 -1
  143. package/dist/component/class/options/validators/index.js +0 -1
  144. package/dist/component/class/options/validators/lifecycle.js +0 -1
  145. package/dist/component/class/options/validators/methods.js +0 -1
  146. package/dist/component/class/options/validators/name.js +0 -1
  147. package/dist/component/class/options/validators/render.js +0 -1
  148. package/dist/component/class/options/validators/websockets.js +0 -1
  149. package/dist/component/class/options/validators/wrapper.js +0 -1
  150. package/dist/component/class/props/compile.js +0 -1
  151. package/dist/component/class/props/compileDefault.js +0 -1
  152. package/dist/component/class/render/clearTimersOnChildren.js +0 -1
  153. package/dist/component/class/render/forMount.js +0 -1
  154. package/dist/component/class/render/getExistingPropsMap.js +0 -1
  155. package/dist/component/class/render/getExistingStateMap.js +0 -1
  156. package/dist/component/class/render/getUpdatedDOM.js +0 -1
  157. package/dist/component/class/render/sanitizeHTML.js +0 -1
  158. package/dist/component/class/render/toHTML.js +0 -1
  159. package/dist/component/class/render/wrapHTML.js +0 -1
  160. package/dist/component/class/renderMethods/compile.js +0 -1
  161. package/dist/component/class/renderMethods/component.js +0 -1
  162. package/dist/component/class/renderMethods/dragDrop/attachEventListeners.js +0 -1
  163. package/dist/component/class/renderMethods/dragDrop/concept.js +0 -0
  164. package/dist/component/class/renderMethods/dragDrop/draggable.js +0 -1
  165. package/dist/component/class/renderMethods/dragDrop/droppable.js +0 -1
  166. package/dist/component/class/renderMethods/dragDrop/index.js +0 -1
  167. package/dist/component/class/renderMethods/dragDrop/isBefore.js +0 -1
  168. package/dist/component/class/renderMethods/each.js +0 -1
  169. package/dist/component/class/renderMethods/i18n.js +0 -1
  170. package/dist/component/class/renderMethods/index.js +0 -1
  171. package/dist/component/class/renderMethods/when.js +0 -1
  172. package/dist/component/class/state/compile.js +0 -1
  173. package/dist/component/class/url/compile.js +0 -1
  174. package/dist/component/class/virtualDOM/build.js +0 -1
  175. package/dist/component/class/virtualDOM/buildTree.js +0 -1
  176. package/dist/component/class/virtualDOM/diff/attributes.js +0 -1
  177. package/dist/component/class/virtualDOM/diff/children.js +0 -1
  178. package/dist/component/class/virtualDOM/diff/elementPatchFunctions.js +0 -1
  179. package/dist/component/class/virtualDOM/diff/index.js +0 -1
  180. package/dist/component/class/virtualDOM/diff/mapPatchFunctionsToNodes.js +0 -1
  181. package/dist/component/class/virtualDOM/renderTreeToDOM.js +0 -1
  182. package/dist/component/index.js +0 -21
  183. package/dist/component/renderComponentToHTML.js +0 -1
  184. package/dist/component/tree/addChildToParent.js +0 -1
  185. package/dist/component/tree/clearChildrenOnParent.js +0 -1
  186. package/dist/component/tree/findComponentInTreeByField.js +0 -1
  187. package/dist/component/tree/replaceChildInVDOMTree.js +0 -1
  188. package/dist/component/tree/updateParentInstanceInTree.js +0 -1
  189. package/dist/css/getCSSFromTree.js +0 -21
  190. package/dist/css/update.js +0 -21
  191. package/dist/forms/validate.js +0 -1
  192. package/dist/forms/validators/creditCard.js +0 -1
  193. package/dist/forms/validators/email.js +0 -1
  194. package/dist/forms/validators/equals.js +0 -1
  195. package/dist/forms/validators/index.js +0 -1
  196. package/dist/forms/validators/matches.js +0 -1
  197. package/dist/forms/validators/maxLength.js +0 -1
  198. package/dist/forms/validators/minLength.js +0 -1
  199. package/dist/forms/validators/phone.js +0 -1
  200. package/dist/forms/validators/postalCode.js +0 -1
  201. package/dist/forms/validators/required.js +0 -1
  202. package/dist/forms/validators/semVer.js +0 -1
  203. package/dist/forms/validators/slug.js +0 -1
  204. package/dist/forms/validators/strongPassword.js +0 -1
  205. package/dist/forms/validators/types.js +0 -1
  206. package/dist/forms/validators/url.js +0 -1
  207. package/dist/forms/validators/vat.js +0 -1
  208. package/dist/html/index.js +0 -1
  209. package/dist/lib/addToQueue.js +0 -1
  210. package/dist/lib/assignOptionsToInstance.js +0 -1
  211. package/dist/lib/constants.js +0 -1
  212. package/dist/lib/debounce.js +0 -1
  213. package/dist/lib/generateId.js +0 -1
  214. package/dist/lib/isNode.js +0 -1
  215. package/dist/lib/isValidAttributeName.js +0 -1
  216. package/dist/lib/logRequestErrors.js +0 -1
  217. package/dist/lib/parseJSON.js +0 -1
  218. package/dist/lib/processQueue.js +0 -1
  219. package/dist/lib/queueArray.js +0 -1
  220. package/dist/lib/serializeEvents.js +0 -1
  221. package/dist/lib/stringContainsHTML.js +0 -1
  222. package/dist/lib/throttle.js +0 -1
  223. package/dist/lib/throwFrameworkError.js +0 -1
  224. package/dist/lib/types.js +0 -1
  225. package/dist/lib/windowIsUndefined.js +0 -1
  226. package/dist/mount/appendToTarget.js +0 -1
  227. package/dist/mount/index.js +0 -1
  228. package/dist/mount/initializeJoystickComponentTree.js +0 -1
  229. package/dist/overrideTimers.js +0 -1
  230. package/dist/upload/index.js +0 -1
  231. package/dist/websockets/client.js +0 -1
package/build.js ADDED
@@ -0,0 +1,15 @@
1
+ import esbuild from "esbuild";
2
+
3
+ esbuild.build({
4
+ entryPoints: [`src/index.js`],
5
+ bundle: true,
6
+ outfile: `./dist/index.js`,
7
+ platform: "browser",
8
+ format: "esm",
9
+ minify: true,
10
+ plugins: [],
11
+ external: [],
12
+ })
13
+ .catch((error) => {
14
+ console.log(error);
15
+ });
package/dist/index.js CHANGED
@@ -1,21 +1,21 @@
1
- var Fr=Object.create;var de=Object.defineProperty;var kr=Object.getOwnPropertyDescriptor;var Mr=Object.getOwnPropertyNames;var Sr=Object.getPrototypeOf,Tr=Object.prototype.hasOwnProperty;var Or=t=>de(t,"__esModule",{value:!0});var vr=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Cr=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Mr(e))!Tr.call(t,o)&&o!=="default"&&de(t,o,{get:()=>e[o],enumerable:!(r=kr(e,o))||r.enumerable});return t},Rr=t=>Cr(Or(de(t!=null?Fr(Sr(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var _t=vr(oe=>{(function(t,e){if(typeof define=="function"&&define.amd)define(["exports"],e);else if(typeof oe!="undefined")e(oe);else{var r={exports:{}};e(r.exports),t.index=r.exports}})(oe,function(t){"use strict";function e(p){return e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(d){return typeof d}:function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},e(p)}function r(p,d){return d&&(e(d)==="object"||typeof d=="function")?d:o(p)}function o(p){if(p===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return p}function n(p){return n=Object.setPrototypeOf?Object.getPrototypeOf:function(d){return d.__proto__||Object.getPrototypeOf(d)},n(p)}function s(p,d){if(typeof d!="function"&&d!==null)throw new TypeError("Super expression must either be null or a function");p.prototype=Object.create(d&&d.prototype,{constructor:{value:p,writable:!0,configurable:!0}}),d&&c(p,d)}function c(p,d){return c=Object.setPrototypeOf||function(x,v){return x.__proto__=v,x},c(p,d)}function a(p,d){if(!(p instanceof d))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.diff=void 0;var l=function p(d,x){a(this,p),this.type=d,this.path=x?x.toString():""},F=function(p){function d(x,v,h){var j;return a(this,d),j=r(this,n(d).call(this,"E",x)),j.lhs=v,j.rhs=h,j}return s(d,p),d}(l),y=function(p){function d(x,v,h,j){var b;return a(this,d),b=r(this,n(d).call(this,"M",x)),b.item=v,b.lhsIndex=h,b.rhsIndex=j,b}return s(d,p),d}(l),w=function(p){function d(x,v){var h;return a(this,d),h=r(this,n(d).call(this,"D",x)),h.lhs=v,h}return s(d,p),d}(l),R=function(p){function d(x,v){var h;return a(this,d),h=r(this,n(d).call(this,"A",x)),h.rhs=v,h}return s(d,p),d}(l),f=function(p,d){return p?"".concat(p,".").concat(d):d};t.diff=function(d,x){var v=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},h=[],j=v.matchKey,b=v.types||["E","A","D","M"],Er=function($,g,k,P){$.forEach(function(L,M){var C=g.findIndex(function(S){return S[P]===L[P]});-1<C?(-1<b.indexOf("M")&&M!==C&&h.push(new y(k,L,M,C)),K(L,g[C],f(k,C))):-1<b.indexOf("D")&&h.push(new w(k,L))}),g.forEach(function(L,M){var C=$.findIndex(function(S){return L[P]===S[P]});-1<b.indexOf("A")&&C===-1&&h.push(new R(f(k,M),L))})},K=function($,g,k){var P=Object.prototype.toString.call($),L=Object.prototype.toString.call(g);if(-1<b.indexOf("E")&&P!==L)return h.push(new F(k,$,g)),!1;if(P==="[object Object]")Object.getOwnPropertyNames($).forEach(function(S){Object.prototype.hasOwnProperty.call(g,S)?K($[S],g[S],f(k,S)):-1<b.indexOf("D")&&h.push(new w(f(k,S),$[S]))}),Object.getOwnPropertyNames(g).forEach(function(S){-1<b.indexOf("A")&&!Object.prototype.hasOwnProperty.call($,S)&&h.push(new R(f(k,S),g[S]))});else if(P!=="[object Array]")-1<b.indexOf("E")&&$!==g&&h.push(new F(k,$,g));else if(j)Er($,g,k,j);else{var M=$.length-1,C=g.length-1;if(-1<b.indexOf("D"))for(;M>C;)h.push(new w(f(k,M),$[M--]));if(-1<b.indexOf("A"))for(;C>M;)h.push(new R(f(k,C),g[C--]));for(;0<=M;--M)K($[M],g[M],f(k,M))}};return K(d,x),h}})});var V=(t="{}")=>{try{return JSON.parse(t)}catch{return t}};var i=(t="",e={})=>{throw new Error(`[joystick${t?`.${t}`:""}] ${e.message||e.reason||e}`)};var A=(t="",e=[])=>{try{console.error(`${t} failed with the following errors:`),e.forEach(r=>{console.log(r.message),r.stack&&console.log(r.stack)})}catch(r){i(t,r)}};var Ar=async(t={})=>{try{let e=await t.text();return V(e)}catch(e){i("accounts.request.handleParseResponse",e)}},Dr=(t="GET",e={})=>{try{return["POST"].includes(t)?JSON.stringify({...e,origin:window?.location?.origin}):null}catch(r){i("accounts.request.getBody",r)}},jr=(t=null)=>{try{switch(t){case"authenticated":case"user":return"GET";default:return"POST"}}catch(e){i("accounts.request.getHTTPMethod",e)}},T=(t="",e={})=>{try{if(typeof window.fetch!="undefined")return new Promise((r,o)=>{let n=`${window.location.origin}/api/_accounts/${t}`,s=jr(t),c=Dr(s,e);return fetch(n,{method:s,mode:"cors",headers:{"Content-Type":"application/json"},body:c,credentials:"include"}).then(async a=>{let l=await Ar(a);return l?.errors?(A(`accounts.${t}`,l.errors),o(l)):r(l)}).catch(a=>(A(`accounts.${t}`,[a]),o({errors:[a]})))})}catch(r){i(`accounts.request.${t}`,r)}};var ge=async(t={})=>{try{let e=await T("authenticated",t);return e?.status===200&&e?.authenticated}catch(e){i("accounts.authenticated",e)}};var xe=(t={})=>{try{return T("login",t)}catch(e){i("accounts.login",e)}};var be=()=>{try{return T("logout")}catch(t){i("accounts.logout",t)}};var $e=(t={})=>{try{return T("recover-password",t)}catch(e){i("accounts.recoverPassword",e)}};var Ee=(t={})=>{try{return T("reset-password",t)}catch(e){i("accounts.resetPassword",e)}};var Fe=(t={})=>{try{return T("signup",t)}catch(e){i("accounts.signup",e)}};var ke=async(t={})=>{try{let e=await T("user",t);return e?.status===200&&e?.user}catch(e){i("accounts.user",e)}};var Me={authenticated:ge,login:xe,logout:be,recoverPassword:$e,resetPassword:Ee,signup:Fe,user:ke};var Se=t=>{try{return typeof t=="undefined"}catch(e){i("types.isUndefined",e)}},Te=t=>{try{return t===null}catch(e){i("types.isNull",e)}},Oe=t=>{try{return!0}catch(e){i("types.isDOM",e)}},I=t=>{try{return!!Array.isArray(t)}catch(e){i("types.isArray",e)}};var u=t=>{try{return typeof t=="function"}catch(e){i("types.isFunction",e)}};var m=t=>{try{return!!(t&&typeof t=="object"&&!Array.isArray(t))}catch(e){i("types.isObject",e)}};var O=t=>{try{return typeof t=="string"}catch(e){i("types.isString",e)}};var ve=class{constructor(e="",r={}){this.name=e,this.value=r||{},this.listeners={change:[],set:[],unset:[]}}_getValueAtPath(e=""){return e?.split(".").reduce((r=null,o="")=>(r[o]&&(r=r[o]),r),this.value)}get(e=""){return e?.trim()===""?{...this.value||{}}:this._getValueAtPath(e)}set(e=null,r=""){if(!e||!u(e))throw new Error("First argument passed to set() must be a function.");let o=e(this.value);if(!m(o))throw new Error("Value to set must be an object representing the current cache state.");this.value=o,this._handleEvent(r,"set"),this._handleEvent(r,"change")}unset(e="",r=""){e?.trim()===""&&(this.value={});let o=e?.split("."),n=o?.length-1;o.reduce((s,c,a)=>(a===n&&delete s[c],s[c]),this.value),this._handleEvent(r,"unset"),this._handleEvent(r,"change")}on(e="",r=null){if(!["change","set","unset"].includes(e))throw new Error(`Event to listen for must be change, set, or unset. ${e} is not supported.`);if(!r||!u(r))throw new Error("Second argument passed to on("<e>") must be a function.");this.listeners={[e]:[...this.listeners[e]||[],r]}}_handleEvent(e="",r=""){let o=this.listeners[r]||[];for(let n=0;n<o?.length;n+=1){let s=o[n];u(s)&&s(this.value,e,r)}}},Ce=ve;var Re=(t="",e={})=>{try{if(!t||t&&!O(t))throw new Error("Must pass a cache name as a string.");if(e&&!m(e))throw new Error("Default value for cache must be an object.");return new Ce(t,e)}catch(r){i("cache",r)}};var Ae=(t="")=>t;var E=()=>typeof window=="undefined";var De=(t={},e={})=>{let r=t({props:e}),o=r.renderToHTML();return E()||r.appendCSSToHead(),o?.wrapped};var je="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890".split(""),_=(t=16)=>{let e="",r=0;for(;r<t;)e+=je[Math.floor(Math.random()*(je.length-1))],r+=1;return e};var U=null,J=0,Le=(t={},e=null)=>{try{let r=t?.url;t?.query&&(r=`${r}?${new URLSearchParams(t.query).toString()}`);let o=new WebSocket(r);U&&(clearInterval(U),U=null);let n={client:o,send:(s={})=>o.send(JSON.stringify(s))};return o.addEventListener("open",()=>{t?.options?.logging&&console.log(`[joystick.websockets] Connected to ${t?.url}`),t?.events?.onOpen&&t.events.onOpen(n),J=0}),o.addEventListener("message",s=>{s?.data&&t?.events?.onMessage&&t.events.onMessage(JSON.parse(s.data||{}),n)}),o.addEventListener("close",s=>{t?.options?.logging&&console.log(`[joystick.websockets] Disconnected from ${t?.url}`),t?.events?.onClose&&t.events.onClose(s?.code,s?.reason,n),o=null;let c=[1e3,1001].includes(s?.code);t?.options?.autoReconnect&&!U&&!c&&(U=setInterval(()=>{o=null,J<(t?.options?.reconnectAttempts||12)?(Le(t,e),t?.options?.logging&&console.log(`[joystick.websockets] Attempting to reconnect (${J+1}/12)...`),J+=1):clearInterval(U)},t?.options?.reconnectDelayInSeconds*1e3||5e3))}),e&&e(n),n}catch(r){i("websockets.client",r)}},Q=Le;var _e=(t="",e={})=>{try{return new Promise((r,o)=>{let n=_(),s=0;Q({url:`${window?.process?.env.NODE_ENV==="development"?"ws":"wss"}://${location.host}/api/_websockets/uploaders`,options:{logging:!1,autoReconnect:!0,reconnectAttempts:12,reconnectDelayInSeconds:5},query:{id:n},events:{onMessage:(c={})=>{c?.type==="PROGRESS"&&e?.onProgress&&s<100&&s!==c?.progress&&(s=c?.progress,e.onProgress(c?.progress,c?.provider))}}},()=>{let c;e?.files?.length>0&&(c=new FormData,Array.from(e?.files).forEach(a=>{c.append("files",a,a.name)})),fetch(`${window.location.origin}/api/_uploaders/${t}`,{method:"POST",headers:{"x-joystick-upload-id":n,"x-joystick-upload-input":JSON.stringify(e?.input||{})},body:c}).then(async a=>{let l=await a.json();console.log(l),l&&l.errors?(A("upload",l.errors),o({errors:l.errors})):r(l?.uploads)})})})}catch(r){i("upload",r)}};var Pe=(t={})=>{try{let e=null;typeof window!="undefined"&&(e=window),typeof global!="undefined"&&(e=global),e&&(e.joystick={...e?.joystick||{},settings:e?.__joystick_settings__,...t})}catch(e){i("attachJoystickToWindow",e)}};var Lr=async(t={})=>{try{let e=await t.text();return V(e)}catch(e){i("api.get.handleParseResponse",e)}},Ie=(t="",e={})=>{try{return typeof window.fetch!="undefined"&&!e?.skip?new Promise((r,o)=>{let n=e.input?JSON.stringify(e.input):null,s=e.output?JSON.stringify(e.output):null,c=`${window.location.origin}/api/_getters/${t}?input=${n}&output=${s}`,a=document.querySelector('[name="csrf"]')?.getAttribute("content");return fetch(c,{method:"GET",mode:"cors",headers:{...e?.headers||{},"x-joystick-csrf":a},credentials:"include"}).then(async l=>{let F=await Lr(l);return F?.errors?(A("get request",F.errors),o(F)):r(F)}).catch(l=>(A("get request",[l]),o({errors:[l]})))}):Promise.resolve()}catch(r){i("get request",r)}};var _r=async(t={})=>{try{let e=await t.text();return V(e)}catch(e){i("api.set.handleParseResponse",e)}},Pr=(t={})=>{try{return JSON.stringify(t)}catch(e){i("api.set.getBody",e)}},qe=(t="",e={})=>{try{return typeof window.fetch!="undefined"?new Promise((r,o)=>{let n=`${window.location.origin}/api/_setters/${t}`,s=Pr(e),c=document.querySelector('[name="csrf"]')?.getAttribute("content");return fetch(n,{method:"POST",mode:"cors",headers:{...e?.headers||{},"Content-Type":"application/json","x-joystick-csrf":c},body:s,credentials:"include"}).then(async a=>{let l=await _r(a);return l?.errors?(A("set request",l.errors),o(l)):r(l)}).catch(a=>(A("set request",[a]),o({errors:[a]})))}):Promise.resolve()}catch(r){i("set request",r)}};var Z={get:Ie,set:qe};var Ne=["render"];var Ve=(t={})=>{try{return Ne.every(e=>Object.keys(t).includes(e))}catch(e){i("component.hasAllRequiredOptions",e)}};var Ue=["_componentId","_ssrId","api","dataFromSSR","existingProps","existingState","instanceId","parent","req","css","data","defaultProps","events","id","lifecycle","methods","name","props","render","state","translations","url","websockets","wrapper"];var He=(t=null)=>{try{!O(t)&&!u(t)&&!m(t)&&i("component.optionValidators.css","options.css must be a string, function returning a string, or an object returning breakpoints.")}catch(e){i("component.optionValidators.css",e)}};var ze=["readystatechange","pointerlockchange","pointerlockerror","beforecopy","beforecut","beforepaste","freeze","resume","search","securitypolicyviolation","visibilitychange","fullscreenchange","fullscreenerror","webkitfullscreenchange","webkitfullscreenerror","beforexrselect","abort","blur","cancel","canplay","canplaythrough","change","click","close","contextmenu","cuechange","dblclick","drag","dragend","dragenter","dragleave","dragover","dragstart","drop","durationchange","emptied","ended","error","focus","formdata","input","invalid","keydown","keypress","keyup","load","loadeddata","loadedmetadata","loadstart","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","pause","play","playing","progress","ratechange","reset","resize","scroll","seeked","seeking","select","stalled","submit","suspend","timeupdate","toggle","volumechange","waiting","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend","wheel","auxclick","gotpointercapture","lostpointercapture","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","selectstart","selectionchange","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitionend","transitioncancel","copy","cut","paste","pointerrawupdate"];var Be=(t=null)=>{try{m(t)||i("component.optionValidators.events","options.events must be an object.");for(let e of Object.keys(t)){let[r]=e.split(" ");ze.includes(r)||i("component.optionValidators.events",`${r} is not a supported JavaScript event type.`)}for(let[e,r]of Object.entries(t))u(r)||i("component.optionValidators.events",`options.events.${e} must be assigned a function.`)}catch(e){i("component.optionValidators.events",e)}};var Ze=["onBeforeMount","onMount","onUpdateProps","onBeforeUnmount","onRefetchData"];var Ge=(t=null)=>{try{m(t)||i("component.optionValidators.lifecycle","options.lifecycle must be an object.");for(let[e,r]of Object.entries(t))Ze.includes(e)||i("component.optionValidators.lifecycle",`options.lifecycle.${e} is not supported.`),u(r)||i("component.optionValidators.lifecycle",`options.lifecycle.${e} must be assigned a function.`)}catch(e){i("component.optionValidators.lifecycle",e)}};var We=(t=null)=>{try{m(t)||i("component.optionValidators.methods","options.methods must be an object.");for(let[e,r]of Object.entries(t))u(r)||i("component.optionValidators.methods",`options.methods.${e} must be assigned a function.`)}catch(e){i("component.optionValidators.methods",e)}};var Ke=(t=null)=>{typeof t!="string"&&i("component.optionValidators.name","options.name must be a string.")};var Je=(t=null)=>{try{u(t)||i("component.optionValidators.render","options.render must be a function returning a string.")}catch(e){i("component.optionValidators.render",e)}};var Qe=(t=null)=>{try{u(t)||i("component.optionValidators.websockets","options.websockets must be a function returning an object.")}catch(e){i("component.optionValidators.websockets",e)}};var Ye=(t=null)=>{try{m(t)||i("component.optionValidators.wrapper","options.wrapper must be an object.");for(let[e,r]of Object.entries(t))e==="id"&&!O(r)&&i("component.optionValidators.wrapper",`options.wrapper.${e} must be assigned a string.`),e==="classList"&&!I(r)&&i("component.optionValidators.wrapper",`options.wrapper.${e} must be assigned an array of strings.`)}catch(e){i("component.optionValidators.wrapper",e)}};var Xe={css:He,events:Be,lifecycle:Ge,methods:We,name:Ke,render:Je,websockets:Qe,wrapper:Ye};var et=(t={})=>{try{Ve(t)||i("component.validateOptions",`component options must include ${required.options.join(",")}.`);for(let[e,r]of Object.entries(t)){Ue.includes(e)||i("component.validateOptions",`${e} is not supported by joystick.component.`);let o=Xe[e];o&&u(o)&&o(r)}}catch(e){i("component.validateOptions",e)}};var Y=(t=[],e="")=>{try{return(I(t)&&t.find(o=>o?.componentId===e))?.data||{}}catch(r){i("findComponentDataFromSSR",r)}};var tt=(()=>{let t=0;return(e,r)=>{clearTimeout(t),t=setTimeout(e,r)}})();var H=t=>!!(t&&typeof t=="object"&&!Array.isArray(t));var rt=t=>typeof t=="string";var ot=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/,nt=(t,e="")=>{if(!e)return!0;if(e&&!rt(e))return!1;let r=e?e.replace(/[- ]+/g,""):"";return t===!0?r.match(new RegExp(ot)):!r.match(new RegExp(ot))};var it=/^((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))$/,st=(t,e="")=>t===!0?!!e.match(it):!e.match(it);var at=(t,e="")=>t===e;var ct=(t,e="")=>t===e;var dt=(t,e="")=>e.length<=t;var lt=(t,e="")=>e.length>=t;var ut=/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/,mt=(t,e="")=>t===!0?!!e.match(ut):!e.match(ut);var pt={AF:/^\d{4}$/,AX:/^\d{5}$/,AL:/^\d{4}$/,DZ:/^\d{5}$/,AS:/^\d{5}(-{1}\d{4,6})$/,AD:/^[Aa][Dd]\d{3}$/,AI:/^[Aa][I][-][2][6][4][0]$/,AR:/^\d{4}|[A-Za-z]\d{4}[a-zA-Z]{3}$/,AM:/^\d{4}$/,AC:/^[Aa][Ss][Cc][Nn]\s{0,1}[1][Zz][Zz]$/,AU:/^\d{4}$/,AT:/^\d{4}$/,AZ:/^[Aa][Zz]\d{4}$/,BH:/^\d{3,4}$/,BD:/^\d{4}$/,BB:/^[Aa][Zz]\d{5}$/,BY:/^\d{6}$/,BE:/^\d{4}$/,BM:/^[A-Za-z]{2}\s([A-Za-z]{2}|\d{2})$/,BT:/^\d{5}$/,BO:/^\d{4}$/,BA:/^\d{5}$/,BR:/^\d{5}-\d{3}$/,"":/^[Bb][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$/,IO:/^[Bb]{2}[Nn][Dd]\s{0,1}[1][Zz]{2}$/,VG:/^[Vv][Gg]\d{4}$/,BN:/^[A-Za-z]{2}\d{4}$/,BG:/^\d{4}$/,KH:/^\d{5}$/,CA:/^(?=[^DdFfIiOoQqUu\d\s])[A-Za-z]\d(?=[^DdFfIiOoQqUu\d\s])[A-Za-z]\s{0,1}\d(?=[^DdFfIiOoQqUu\d\s])[A-Za-z]\d$/,CV:/^\d{4}$/,KY:/^[Kk][Yy]\d[-\s]{0,1}\d{4}$/,TD:/^\d{5}$/,CL:/^\d{7}\s\(\d{3}-\d{4}\)$/,CN:/^\d{6}$/,CX:/^\d{4}$/,CC:/^\d{4}$/,CO:/^\d{6}$/,CD:/^[Cc][Dd]$/,CR:/^\d{4,5}$/,HR:/^\d{5}$/,CU:/^\d{5}$/,CY:/^\d{4}$/,CZ:/^\d{5}\s\(\d{3}\s\d{2}\)$/,DK:/^\d{4}$/,DO:/^\d{5}$/,EC:/^\d{6}$/,SV:/^1101$/,EG:/^\d{5}$/,EE:/^\d{5}$/,ET:/^\d{4}$/,FK:/^[Ff][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$/,FO:/^\d{3}$/,FI:/^\d{5}$/,FR:/^\d{5}$/,GF:/^973\d{2}$/,PF:/^987\d{2}$/,GA:/^\d{2}\s[a-zA-Z-_ ]\s\d{2}$/,GE:/^\d{4}$/,DE:/^\d{2}$/,GI:/^[Gg][Xx][1]{2}\s{0,1}[1][Aa]{2}$/,GR:/^\d{3}\s{0,1}\d{2}$/,GL:/^\d{4}$/,GP:/^971\d{2}$/,GU:/^\d{5}$/,GT:/^\d{5}$/,GG:/^[A-Za-z]{2}\d\s{0,1}\d[A-Za-z]{2}$/,GW:/^\d{4}$/,HT:/^\d{4}$/,HM:/^\d{4}$/,HN:/^\d{5}$/,HU:/^\d{4}$/,IS:/^\d{3}$/,IN:/^\d{6}$/,ID:/^\d{5}$/,IR:/^\d{5}-\d{5}$/,IQ:/^\d{5}$/,IM:/^[Ii[Mm]\d{1,2}\s\d\[A-Z]{2}$/,IL:/^\b\d{5}(\d{2})?$/,IT:/^\d{5}$/,JM:/^\d{2}$/,JP:/^\d{7}\s\(\d{3}-\d{4}\)$/,JE:/^[Jj][Ee]\d\s{0,1}\d[A-Za-z]{2}$/,JO:/^\d{5}$/,KZ:/^\d{6}$/,KE:/^\d{5}$/,KR:/^\d{6}\s\(\d{3}-\d{3}\)$/,XK:/^\d{5}$/,KW:/^\d{5}$/,KG:/^\d{6}$/,LV:/^[Ll][Vv][- ]{0,1}\d{4}$/,LA:/^\d{5}$/,LB:/^\d{4}\s{0,1}\d{4}$/,LS:/^\d{3}$/,LR:/^\d{4}$/,LY:/^\d{5}$/,LI:/^\d{4}$/,LT:/^[Ll][Tt][- ]{0,1}\d{5}$/,LU:/^\d{4}$/,MK:/^\d{4}$/,MG:/^\d{3}$/,MV:/^\d{4,5}$/,MY:/^\d{5}$/,MT:/^[A-Za-z]{3}\s{0,1}\d{4}$/,MH:/^\d{5}$/,MQ:/^972\d{2}$/,YT:/^976\d{2}$/,FM:/^\d{5}(-{1}\d{4})$/,MX:/^\d{5}$/,MD:/^[Mm][Dd][- ]{0,1}\d{4}$/,MC:/^980\d{2}$/,MN:/^\d{5}$/,ME:/^\d{5}$/,MS:/^[Mm][Ss][Rr]\s{0,1}\d{4}$/,MA:/^\d{5}$/,MZ:/^\d{4}$/,MM:/^\d{5}$/,NA:/^\d{5}$/,NP:/^\d{5}$/,NL:/^\d{4}\s{0,1}[A-Za-z]{2}$/,NC:/^988\d{2}$/,NZ:/^\d{4}$/,NI:/^\d{5}$/,NE:/^\d{4}$/,NG:/^\d{6}$/,NF:/^\d{4}$/,MP:/^\d{5}$/,NO:/^\d{4}$/,OM:/^\d{3}$/,PK:/^\d{5}$/,PW:/^\d{5}$/,PA:/^\d{6}$/,PG:/^\d{3}$/,PY:/^\d{4}$/,PE:/^\d{5}$/,PH:/^\d{4}$/,PN:/^[Pp][Cc][Rr][Nn]\s{0,1}[1][Zz]{2}$/,PL:/^\d{2}[- ]{0,1}\d{3}$/,PT:/^\d{4}$/,PR:/^\d{5}$/,RE:/^974\d{2}$/,RO:/^\d{6}$/,RU:/^\d{6}$/,BL:/^97133$/,SH:/^[Ss][Tt][Hh][Ll]\s{0,1}[1][Zz]{2}$/,MF:/^97150$/,PM:/^97500$/,VC:/^[Vv][Cc]\d{4}$/,SM:/^4789\d$/,SA:/^\d{5}(-{1}\d{4})?$/,SN:/^\d{5}$/,RS:/^\d{5}$/,SG:/^\d{2}$/,SK:/^\d{5}\s\(\d{3}\s\d{2}\)$/,SI:/^([Ss][Ii][- ]{0,1}){0,1}\d{4}$/,ZA:/^\d{4}$/,GS:/^[Ss][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$/,ES:/^\d{5}$/,LK:/^\d{5}$/,SD:/^\d{5}$/,SZ:/^[A-Za-z]\d{3}$/,SE:/^\d{3}\s*\d{2}$/,CH:/^\d{4}$/,SJ:/^\d{4}$/,TW:/^\d{5}$/,TJ:/^\d{6}$/,TH:/^\d{5}$/,TT:/^\d{6}$/,TN:/^\d{4}$/,TR:/^\d{5}$/,TM:/^\d{6}$/,TC:/^[Tt][Kk][Cc][Aa]\s{0,1}[1][Zz]{2}$/,UA:/^\d{5}$/,GB:/^[A-Z]{1,2}[0-9R][0-9A-Z]?\s*[0-9][A-Z-[CIKMOV]]{2}/,US:/^\b\d{5}\b(?:[- ]{1}\d{4})?$/,UY:/^\d{5}$/,VI:/^\d{5}$/,UZ:/^\d{3} \d{3}$/,VA:/^120$/,VE:/^\d{4}(\s[a-zA-Z]{1})?$/,VN:/^\d{6}$/,WF:/^986\d{2}$/,ZM:/^\d{5}$/},ft=(t,e="")=>{let r=H(t)&&t.iso?pt[t.iso||"US"]:pt.US;return H(t)?t.rule===!0?!!e.match(r):!e.match(r):t===!0?!!e.match(r):!e.match(r)};var ht=(t,e="",r={isChecked:!1})=>{if(!r.isChecked)return t===!0?e&&e.trim()!=="":e&&e.trim()==="";if(r.isChecked)return t===!0?e:!e};var wt=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,yt=(t,e="")=>t===!0?!!e.match(wt):!e.match(wt);var gt=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,xt=(t,e="")=>t===!0?!!e.match(gt):!e.match(gt);var bt=/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/,$t=(t,e="")=>t===!0?!!e.match(bt):!e.match(bt);var Et=/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/,Ft=(t,e="")=>t===!0?!!e.match(Et):!e.match(Et);var kt={AT:/^(AT)(U\d{8}$)/i,BE:/^(BE)(\d{10}$)/i,BG:/^(BG)(\d{9,10}$)/i,CY:/^(CY)([0-5|9]\d{7}[A-Z]$)/i,CZ:/^(CZ)(\d{8,10})?$/i,DE:/^(DE)([1-9]\d{8}$)/i,DK:/^(DK)(\d{8}$)/i,EE:/^(EE)(10\d{7}$)/i,EL:/^(EL)(\d{9}$)/i,ES:/^(ES)([0-9A-Z][0-9]{7}[0-9A-Z]$)/i,EU:/^(EU)(\d{9}$)/i,FI:/^(FI)(\d{8}$)/i,FR:/^(FR)([0-9A-Z]{2}[0-9]{9}$)/i,GB:/^(GB)((?:[0-9]{12}|[0-9]{9}|(?:GD|HA)[0-9]{3})$)/i,GR:/^(GR)(\d{8,9}$)/i,HR:/^(HR)(\d{11}$)/i,HU:/^(HU)(\d{8}$)/i,IE:/^(IE)([0-9A-Z\*\+]{7}[A-Z]{1,2}$)/i,IT:/^(IT)(\d{11}$)/i,LV:/^(LV)(\d{11}$)/i,LT:/^(LT)(\d{9}$|\d{12}$)/i,LU:/^(LU)(\d{8}$)/i,MT:/^(MT)([1-9]\d{7}$)/i,NL:/^(NL)(\d{9}B\d{2}$)/i,NO:/^(NO)(\d{9}$)/i,PL:/^(PL)(\d{10}$)/i,PT:/^(PT)(\d{9}$)/i,RO:/^(RO)([1-9]\d{1,9}$)/i,RU:/^(RU)(\d{10}$|\d{12}$)/i,RS:/^(RS)(\d{9}$)/i,SI:/^(SI)([1-9]\d{7}$)/i,SK:/^(SK)([1-9]\d[(2-4)|(6-9)]\d{7}$)/i,SE:/^(SE)(\d{10}01$)/i},Mt=(t,e="")=>{let r=H(t)&&t.iso?kt[t.iso||"EU"]:kt.EU;return H(t)?t.rule===!0?!!e.match(r):!e.match(r):t===!0?!!e.match(r):!e.match(r)};var St={creditCard:nt,email:st,equals:at,matches:ct,maxLength:dt,minLength:lt,phone:mt,postalCode:ft,required:ht,semVer:yt,slug:xt,strongPassword:$t,url:Ft,vat:Mt};var Tt=class{constructor(e,r={}){this.fieldsToListenToForChanges=["checkbox","color","date","datetime-local","email","file","hidden","month","number","password","radio","range","search","tel","text","time","url","week"],this.defaultValidationErrors={required:()=>"This field is required.",email:()=>"Must be a valid email.",creditCard:()=>"Must be a valid credit card number.",equals:o=>`Value must equal ${o}.`,matches:o=>`Field must match ${o}.`,maxLength:o=>`Field value can be no greater than ${o}.`,minLength:o=>`Field value can be no less than ${o}.`,phone:()=>"Field value must be a valid telephone number.",postalCode:()=>"Field value must be a valid postal code.",semVer:()=>"Field value must be a valid semantic version.",slug:()=>"Field value must be a valid URL slug.",strongPassword:()=>"Field value must be a valid password.",url:()=>"Field value must be a valid URL.",vat:()=>"Field value must be a valid VAT code."},e||console.warn("[validateForm] Must pass an HTML <form></form> element to validate."),this.form=e,this.setOptions(r),this.attachEventListeners()}setOptions(e={}){this.rules=e.rules||{},this.messages=e.messages||{},this.onSubmit=e.onSubmit,this.fields=this.serialize()}updateOptions(e={}){this.setOptions(e)}serialize(){if(this.form)return Object.keys(this.rules).map(r=>{let o=this.form.querySelector(`[name="${r}"]`),n=o?.type;return{listenForChanges:this.fieldsToListenToForChanges.includes(n),type:n,name:r,element:o,validations:Object.entries(this.rules[r]).map(([c,a])=>({name:c,rule:a,valid:!1})).sort((c,a)=>c.name>a.name?1:-1),errorMessages:this.messages[r]?Object.keys(this.messages[r]):{}}})}attachEventListeners(){if(this.form){let e=r=>{r.stopPropagation(),r.preventDefault(),this.validate()&&this.onSubmit&&this.onSubmit()};if(this.form.listeners?.length>0)for(let r=0;r<this.form.listeners.length;r+=1){let o=this.form.listeners[r];this.form.removeEventListener("submit",o)}this.form.addEventListener("submit",e),this.form.listeners=[...this.form.listeners||[],e]}this.fields.forEach(e=>{if(e?.element&&e?.listenForChanges){let r=()=>{tt(()=>{this.validate(e.name)},100)};e.element.removeEventListener("input",r),e.element.addEventListener("input",r),e.element.removeEventListener("change",r),e.element.addEventListener("change",r)}})}validate(e=null){if(e){this.clearExistingErrors();let r=this.fields.find(o=>o.name===e);return this.validateField(r),this.checkIfValid()}else return this.clearExistingErrors(),this.fields.forEach(r=>{this.validateField(r)}),this.checkIfValid()}checkIfValid(){return!this.fields.map(r=>r.validations.some(o=>!o.valid)).includes(!0)}validateField(e){let r=this.form.querySelector(`[name="${e.name}"]`),o=["checkbox","radio"].includes(e.type),n=o?null:e?.element?.value?.trim(),s=o?e?.element?.checked:null;e.validations.forEach(a=>{if(this.isValidValue(o,o?s:n,a))this.markValidationAsValid(e,a.name);else{let l=this.messages[e.name]&&this.messages[e.name][a.name];this.markValidationAsInvalid(e,a.name),this.renderError(e.element,l||this.defaultValidationErrors[a.name](a.rule,n))}});let c=e.validations.some(a=>!a.valid);return c&&(r.classList.add("error"),r.focus()),c||(r.classList.remove("error"),this.clearExistingError(e.name)),!c}markValidationAsInvalid(e,r){let n=[...e.validations].find(s=>s.name===r);n.valid=!1}markValidationAsValid(e,r){let n=[...e.validations].find(s=>s.name===r);n.valid=!0}isValidValue(e,r,o){let n=St[o.name];return n?n(o.rule,r,{isChecked:e}):!0}clearExistingErrors(){this.form&&this.form.querySelectorAll(".input-hint.error").forEach(e=>e.remove())}clearExistingError(e=""){let r=document.getElementById(`error-${e}`);r&&r.remove()}renderError(e,r=""){if(e){this.clearExistingError(e.name);let o=document.createElement("p");o.classList.add("input-hint"),o.classList.add("error"),o.setAttribute("id",`error-${e.name}`),o.innerText=r,e.after(o)}}},Ir=(t,e)=>new Promise((r,o)=>{try{new Tt(t,e).validate()?r():o()}catch(n){console.warn(n)}}),Ot=Ir;var vt=(t={},e={})=>{try{return[...Object.keys(e),...Object.keys(t)].filter((o,n,s)=>s.indexOf(o)===n).reduce((o,n)=>{let s=e[n],c=t[n]||null,a=!Se(s)&&!Te(s);return o[n]=a?s:c,o},{})}catch(r){i("component.props.compile",r)}};var X=(t="",e={})=>{try{let r="";if(t&&O(t))return r=t,r;if(t&&u(t))return r=t(e),r;if(t&&m(t)){let o=t?.print&&(O(t?.print)||u(t?.print)),n=t?.min&&m(t?.min),s=t?.min?.width&&m(t?.min?.width),c=t?.min?.height&&m(t?.min?.height),a=t?.max&&m(t?.max),l=t?.max?.width&&m(t?.max?.width),F=t?.max?.height&&m(t?.max?.height);if(o&&(r+=`
2
- @media print {
3
- ${typeof t?.print=="function"?t?.print(e):t.print}
1
+ var Rt=(t="",e=[])=>{console.error(`${t} failed with the following errors:`);for(let r=0;r<e?.length;r+=1){let n=e[r];console.error(n.message),n.stack&&console.error(n.stack)}},y=Rt;var Tt=(t="{}")=>{try{return JSON.parse(t)}catch{return t}},j=Tt;var Lt=async(t={})=>{let e=await t.text();return j(e)},Nt=(t="GET",e={})=>["POST"].includes(t)?JSON.stringify({...e,origin:window?.location?.origin}):null,Pt=(t=null)=>{switch(t){case"authenticated":return"GET";case"user":default:return"POST"}},Zt=(t="",e={})=>{if(typeof window.fetch<"u")return new Promise((r,n)=>{let o=`${window.location.origin}/api/_accounts/${t}`,i=Pt(t),c=Nt(i,e);return fetch(o,{method:i,mode:"cors",headers:{"Content-Type":"application/json"},body:c,credentials:"include"}).then(async a=>{let d=await Lt(a);return d?.errors?(y(`accounts.${t}`,d.errors),n(d)):r(d)}).catch(a=>(y(`accounts.${t}`,[a]),n({errors:[a]})))})},g=Zt;var zt=async(t={})=>{let e=await g("authenticated",t);return e?.status===200&&e?.authenticated},pe=zt;var It=(t={})=>g("login",t),we=It;var qt=()=>g("logout"),$e=qt;var Gt=(t={})=>g("recover-password",t),H=Gt;var Ut=(t={})=>g("reset-password",t),V=Ut;var Bt=(t={})=>g("signup",t),ge=Bt;var Dt=async(t={})=>{let e=await g("user",t);return e?.status===200&&e?.user},ye=Dt;var Ft={authenticated:pe,login:we,logout:$e,recoverPassword:H,recover_password:H,resetPassword:V,reset_password:V,signup:ge,user:ye},xe=Ft;var Ht=t=>!!t,Vt=t=>!!Array.isArray(t),Kt=t=>t===!0||t===!1,Jt=t=>Number(t)===t&&t%1!==0,Yt=t=>typeof t=="function",Xt=t=>Number(t)===t&&t%1===0,Wt=t=>t===null,Qt=t=>Number(t)===t,er=t=>!!(t&&typeof t=="object"&&!Array.isArray(t)),tr=t=>typeof t=="string",rr=t=>typeof t>"u",nr={is_any:Ht,is_array:Vt,is_boolean:Kt,is_float:Jt,is_function:Yt,is_integer:Xt,is_null:Wt,is_number:Qt,is_object:er,is_string:tr,is_undefined:rr},s=nr;var K=class{constructor(e="",r={}){this.name=e,this.value=r||{},this.listeners={change:[],set:[],unset:[]}}_get_value_at_path(e=""){return e?.split(".").reduce((r=null,n="")=>(r[n]&&(r=r[n]),r),this.value)}get(e=""){return e?.trim()===""?{...this.value||{}}:this._get_value_at_path(e)}set(e=null,r=""){if(!e||!s.is_function(e))throw new Error("First argument passed to set() must be a function.");let n=e(this.value);if(!s.is_object(n))throw new Error("Value to set must be an object representing the current cache state.");this.value=n,this._handle_event("set",r),this._handle_event("change",r)}unset(e="",r=""){e?.trim()===""&&(this.value={});let n=e?.split("."),o=n?.length-1;n.reduce((i,c,a)=>(a===o&&delete i[c],i[c]),this.value),this._handle_event("unset",r),this._handle_event("change",r)}on(e="",r=null){if(!["change","set","unset"].includes(e))throw new Error(`Event to listen for must be change, set, or unset. ${e} is not supported.`);if(!r||!s.is_function(r))throw new Error("Second argument passed to on("<e>") must be a function.");this.listeners={[e]:[...this.listeners[e]||[],r]}}_handle_event(e="",r=""){let n=this.listeners[e]||[];for(let o=0;o<n?.length;o+=1){let i=n[o];s.is_function(i)&&i(this.value,e,r)}}},be=K;var J=(t="",e={})=>new be(t,e);var or=(t="")=>joystick._external[t]?joystick._external[t]:null,ve=or;var ir=(t=128,e="test.txt",r="text/plain")=>{let n=t instanceof Blob;return new File(n?t:new Blob(new Uint8Array(t||128),{type:r}),e,{type:r})},Y=ir;var sr=(t="",e=[])=>{typeof window<"u"&&window.__joystick_test__&&(window.test={...window.test||{},function_calls:{...window?.test?.function_calls||{},[t]:[...window?.test?.function_calls&&window?.test?.function_calls[t]||[],{called_at:new Date().toISOString(),args:e}]}})},u=sr;var dr={utils:{createFile:Y,create_file:Y,trackFunctionCall:u,track_function_call:u}},je=dr;var cr=(t="",e={})=>{typeof window<"u"&&(joystick._external[t]={...joystick._external[t]||{},...e})},ke=cr;var Ee="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890".split(""),ar=(t=16)=>{let e="",r=0;for(;r<t;)e+=Ee[Math.floor(Math.random()*(Ee.length-1))],r+=1;return e},m=ar;var k=null,T=0,Se=(t={},e=null)=>{if(window?.__joystick_test__)return e();let r=t?.url;t?.query&&(r=`${r}?${new URLSearchParams(t.query).toString()}`);let n=new WebSocket(r);k&&(clearInterval(k),k=null);let o={_id:m(8),client:n,send:(i={})=>(u(`ui.${t?.test?.name||m(16)}.websockets.send`,[i]),n.send(JSON.stringify(i)))};return n.addEventListener("open",()=>{t?.options?.logging&&console.log(`[joystick.websockets] Connected to ${t?.url}`),(t?.events?.onOpen||t?.events?.on_open)&&((t.events.onOpen||t.events.on_open)(o),u(`ui.websockets.${t?.test?.name||m()}.on_open`,[o])),T=0}),n.addEventListener("message",i=>{i?.data&&(t?.events?.onMessage||t?.events?.on_message)&&((t.events.onMessage||t.events.on_message)(JSON.parse(i.data||{}),o),u(`ui.websockets.${t?.test?.name||m()}.on_message`,[i.data||{},o]))}),n.addEventListener("close",i=>{t?.options?.logging&&console.log(`[joystick.websockets] Disconnected from ${t?.url}`),(t?.events?.onClose||t?.events?.on_close)&&((t.events.onClose||t.events.on_close)(i?.code,i?.reason,o),u(`ui.websockets.${t?.test?.name||m()}.on_close`,[i.data||{},o])),n=null;let c=[1e3,1001].includes(i?.code);window.joystick._internal.websockets&&(window.joystick._internal.websockets=window.joystick._internal.websockets?.filter(a=>a?._id!==o?._id)),(t?.options?.autoReconnect||t?.options?.auto_reconnect)&&!k&&!c&&(k=setInterval(()=>{n=null,T<(t?.options?.reconnectAttempts||t?.options?.reconnect_attempts||12)?(Se(t,e),t?.options?.logging&&console.log(`[joystick.websockets] Attempting to reconnect (${T+1}/12)...`),T+=1):clearInterval(k)},(t?.options?.reconnectDelayInSeconds||t?.options?.reconnect_delay_in_seconds)*1e3||5e3))}),e&&e(o),window.joystick?._internal&&(window.joystick._internal.websockets=[...window.joystick._internal.websockets||[],o]),o},L=Se;var Ae=(t="",e={})=>{if(window?.__joystick_test__){u(`ui.upload.${t}`,[t,e]);return}return new Promise((r,n)=>{let o=m(16),i=0;L({url:`${window?.process?.env.NODE_ENV==="development"?"ws":"wss"}://${location.host}/api/_websockets/uploaders`,options:{logging:!1,autoReconnect:!0,reconnectAttempts:12,reconnectDelayInSeconds:5},query:{id:o},events:{on_message:(c={})=>{c?.type==="PROGRESS"&&(e?.onProgress||e?.on_progress)&&i<100&&i!==c?.progress&&(i=c?.progress,(e.onProgress||e?.on_progress)(c?.progress,c?.provider))}}},()=>{let c;if(e?.files?.length>0){c=new FormData;let a=Array.from(e?.files);for(let d=0;d<a?.length;d+=1){let _=a[d];c.append("files",_,_.name)}}fetch(`${window.location.origin}/api/_uploaders/${t}`,{method:"POST",headers:{"x-joystick-upload-id":o,"x-joystick-upload-input":JSON.stringify(e?.input||{})},body:c}).then(async a=>{let d=await a.json();d&&d.errors?(y("upload",d.errors),n({errors:d.errors})):r(d?.uploads)})})})};var lr=(t={})=>Object.entries(t).map(([e,r])=>`${e}=${r}`)?.join("; "),N=lr;var _r=async(t={})=>{let e=await t.text();return j(e)},fr=(t="",e={})=>typeof window.fetch<"u"&&!e?.skip?new Promise((r,n)=>{let o=e.input?JSON.stringify(e.input):null,i=e.output?JSON.stringify(e.output):null,c=`${window.location.origin}/api/_getters/${t}?input=${encodeURIComponent(o)}&output=${encodeURIComponent(i)}`,a=document.querySelector('[name="csrf"]')?.getAttribute("content"),d={...e?.headers||{},"x-joystick-csrf":a};return window?.__joystick_test__&&(d.Cookie=N({joystick_login_token:window.__joystick_test_login_token__,joystick_login_token_expires_at:window.__joystick_test_login_token_expires_at__})),e?.loader?.instance&&e?.loader?.instance?.setState({[e?.loader?.state||`${t}_loading`]:!0}),fetch(c,{method:"GET",mode:"cors",headers:d,credentials:"include"}).then(async _=>{let f=await _r(_);return e?.loader?.instance&&e?.loader?.instance?.setState({[e?.loader?.state||`${t}_loading`]:!1}),f?.errors?(y("Get request",f.errors),n(f)):r(f)}).catch(_=>(y("Get request",[_]),e?.loader?.instance&&e?.loader?.instance?.setState({[e?.loader?.state||`${t}_loading`]:!1}),n({errors:[_]})))}):Promise.resolve(),Oe=fr;var ur=async(t={})=>{let e=await t.text();return j(e)},mr=(t={})=>{let e={...t};return e?.loader&&delete e.loader,JSON.stringify(e)},hr=(t="",e={})=>typeof window.fetch<"u"?new Promise((r,n)=>{let o=`${window.location.origin}/api/_setters/${t}`,i=mr(e),c=document.querySelector('[name="csrf"]')?.getAttribute("content"),a={...e?.headers||{},"Content-Type":"application/json","x-joystick-csrf":c};return window?.__joystick_test__&&(a.Cookie=N({joystick_login_token:window?.__joystick_test_login_token__,joystick_login_token_expires_at:window.__joystick_test_login_token_expires_at__})),e?.loader?.instance&&e?.loader?.instance?.setState({[e?.loader?.state||`${t}_loading`]:!0}),fetch(o,{method:"POST",mode:"cors",headers:a,body:i,credentials:"include"}).then(async d=>{let _=await ur(d);return e?.loader?.instance&&e?.loader?.instance?.setState({[e?.loader?.state||`${t}_loading`]:!1}),_?.errors?(y("Set request",_.errors),n(_)):r(_)}).catch(d=>(y("Set request",[d]),e?.loader?.instance&&e?.loader?.instance?.setState({[e?.loader?.state||`${t}_loading`]:!1}),n({errors:[d]})))}):Promise.resolve(),Me=hr;var pr={fetch:typeof window<"u"?window.fetch.bind(window):null,get:Oe,set:Me},O=pr;var wr=(t="",e=new Error)=>{throw new Error(`[joystick${t?`.${t}`:""}] ${e.message||e}`)},Ce=wr;var $r=(t={})=>{let e=null;typeof window<"u"&&(e=window),typeof global<"u"&&(e=global),e&&(e.joystick={...e?.joystick||{},settings:e?.__joystick_settings__,...t})},Re=$r;var gr=(t={})=>Object.values(t)?.flatMap((e=[])=>e),E=gr;var yr=()=>{joystick._internal.tree=joystick?._internal?.tree?.filter(t=>!!document.querySelector(`[js-i="${t?.instance_id}"]`))},Te=yr;var xr=(t={},e=null)=>{let r=e(t);return r&&s.is_object(r)&&!s.is_array(r)?Object.assign({},r):{}},br=(t={},e={})=>s.is_function(e)?xr(t,e):Object.assign({},e),P=br;var vr=new RegExp(/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g),jr=new RegExp(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g),kr=new RegExp(/\<\!\-\-(?:.|\n|\r)*?-->/g),Er=new RegExp("<when>|</when>","g"),Sr={CSS_COMMENT_REGEX:vr,CSS_SELECTOR_REGEX:jr,JOYSTICK_COMMENT_REGEX:kr,WHEN_TAG_REGEX:Er},M=Sr;var Ar=(()=>{let t=0;return(e,r)=>{clearTimeout(t),t=setTimeout(e,r)}})(),Le=Ar;var Or=(t="")=>{try{return document.createElement("div").setAttribute(t,"Test"),!0}catch{return!1}},Z=Or;var Mr=(t={},e={})=>{let r=[];for(let[n,o]of Object.entries(e))r.push(i=>(i&&i.setAttribute&&Z(n)&&i.setAttribute(n,o),i));for(let n in t)n in e||r.push(o=>(o&&o.removeAttribute&&o.removeAttribute(n),o));return n=>{for(let o of r)o&&typeof o=="function"&&o(n)}},z=Mr;var Cr=(t=[],e=[])=>{let r=[],n=Math.max(t.length,e.length);for(let o=0;o<n;o+=1){let i=t[o],c=e[o];r.push([i,c])}return r},Ne=Cr;var Rr=(t={})=>{let e=document.createElement(t.tag_name),r=Object.entries(t.attributes);for(let n=0;n<r.length;n+=1){let[o,i]=r[n];Z(o)&&e.setAttribute(o,i)}for(let n=0;n<t?.children?.length;n+=1){let o=t?.children[n];if(o){let i=Pe(o);e.appendChild(i)}}return e},Pe=(t=null)=>s.is_string(t)?document.createTextNode(t):Rr(t),I=Pe;var Tr=(t=[],e)=>{for(let r=0;r<t?.length;r+=1){let n=t[r];n&&typeof n=="function"&&n(e)}},Lr=(t=[])=>{for(let e=0;e<t?.length;e+=1){let[r,n]=t[e];r&&typeof r=="function"&&r(n)}},Nr=(t=[],e=[])=>{let r=[],n=e.slice(t.length);for(let o=0;o<n?.length;o+=1){let i=n[o],c=a=>{let d=I(i);return a.appendChild(d),a};r.push(c)}return r},Pr=(t=[],e=[])=>{let r=[];for(let n=0;n<t?.length;n+=1){let o=t[n],i=G(o,e[n]);r.push(i)}return r},Zr=(t=[],e=[])=>{let r=Pr(t,e),n=Nr(t,e);return o=>{if(o){let i=Ne(r,o.childNodes);Lr(i),Tr(n,o)}return o}},q=Zr;var zr={select:(t,e)=>r=>{let n=r.value;r.replaceChildren(),z(t.attributes,e.attributes)(r),q([],e.children)(r);let o=r.querySelector(`option[value="${n}"]`);if(o&&(r.value=n),!o){let i=r.querySelector("option");r.value=i?.value||""}return r}},Ze=zr;var X=t=>e=>{let r=t?I(t):null;return e&&e.replaceWith(r),r},Ir=()=>t=>{t&&t.remove()},qr=(t=void 0,e=void 0)=>t===void 0||e===void 0?Ir():typeof t=="string"||typeof e=="string"?X(e,t):t.tag_name!==e.tag_name?X(e):e.tag_name==="select"?Ze.select(t,e):["pre","code"].includes(e.tag_name)?X(e,t):o=>(z(t.attributes,e.attributes)(o),q(t.children,e.children)(o),o),G=qr;var ze=(t=[],e=[])=>{let r=e||[],n=window?.joystick?._internal?.tree?.filter(o=>t?.includes(o?.instance_id));for(let o=0;o<n?.length;o+=1){let i=n[o];r.push(i);let c=E(i.children);c?.length>0&&ze(c,r)}return r},U=ze;var Gr=(t={},e={})=>{let r=e(t);return r&&s.is_object(r)&&!s.is_array(r)?Object.assign({},r):{}},Ur=(t={},e={})=>s.is_function(e)?Gr(t,e):Object.assign({},e),W=Ur;var Br=(t={},e={})=>Object.entries(e).reduce((r={},[n,o])=>(r[n]=(...i)=>(u(`ui.${t?.options?.test?.name||m()}.methods.${n}`,[...i,{...t,set_state:t.setState.bind(t),setState:t.setState.bind(t),...t.compile_render_methods({},{},typeof window>"u"?[]:null)||{}}]),o(...i,{...t,set_state:t.setState.bind(t),setState:t.setState.bind(t),...t.compile_render_methods({},{},typeof window>"u"?[]:null)||{}})),r),{}),Ie=Br;var Dr=(t={},e={})=>[...Object.keys(e),...Object.keys(t)].filter((n,o,i)=>i.indexOf(n)===o).reduce((n,o)=>{let i=e[o],c=t[o]||null,a=!s.is_undefined(i)&&!s.is_null(i);return n[o]=a?i:c,n},{}),qe=Dr;var Ge=(t="",e={})=>s.is_string(t)&&e?.route!=="*"?t===(typeof location<"u"?location.pathname:e.path):!1,Fr=(t={})=>({...t,query:{...t?.query||{},set:(e="",r="")=>{if(typeof window<"u"){let n=new URL(window.location);n.searchParams.append(e,r),window.history.pushState({},"",n)}},unset:(e="")=>{if(typeof window<"u"){let r=new URL(window.location);r.searchParams.delete(e),window.history.pushState({},"",r)}}},is_active:(e="")=>Ge(e,t),isActive:(e="")=>Ge(e,t)}),Q=Fr;var Hr=async(t={},e={},r={},n={})=>{if(n?.options?.data&&s.is_function(n.options.data)){let o=await n.options.data(t,e,r,n);return Promise.resolve(o)}return Promise.resolve()},Ue=Hr;var Vr=(t={},e={},r={})=>{let n=function(i){t.handler(i,{...t?.instance||{},set_state:t?.instance?.setState.bind(t?.instance),setState:t?.instance?.setState.bind(t?.instance),...r||{}}),u(`ui.${t?.instance?.options?.test?.name||m()}.events.${t.type}.selector_${t?.selector}`,[i,{...t?.instance||{},set_state:t?.instance?.setState.bind(t?.instance),setState:t?.instance?.setState.bind(t?.instance),...r||{}}])};e.addEventListener(t?.type,n),t.instance._event_listeners=[...t?.instance?._event_listeners||[],{selector:t?.selector,type:t?.type,element:e,handler:n}]},Be=Vr;var Kr=(t="",e={})=>{let r="";if(t&&s.is_string(t))return r=t,r;if(t&&s.is_function(t))return r=t(e),r;if(t&&s.is_object(t)){let n=t?.print&&(s.is_string(t?.print)||s.is_function(t?.print)),o=t?.min&&s.is_object(t?.min),i=t?.min?.width&&s.is_object(t?.min?.width),c=t?.min?.height&&s.is_object(t?.min?.height),a=t?.max&&s.is_object(t?.max),d=t?.max?.width&&s.is_object(t?.max?.width),_=t?.max?.height&&s.is_object(t?.max?.height);if(n&&(r+=`
2
+ @media print {
3
+ ${typeof t?.print=="function"?t?.print(e):t.print}
4
+ }
5
+ `),o&&i){let f=Object.entries(t?.min?.width);for(let h=0;h<f.length;h+=1){let[p,l]=f[h];r+=`
6
+ @media screen and (min-width: ${p}px) {
7
+ ${typeof l=="function"?l(e):l}
4
8
  }
5
- `),n&&s){let y=Object.entries(t?.min?.width);for(let w=0;w<y.length;w+=1){let[R,f]=y[w];r+=`
6
- @media screen and (min-width: ${R}px) {
7
- ${typeof f=="function"?f(e):f}
8
- }
9
- `}}if(n&&c){let y=Object.entries(t?.min?.height);for(let w=0;w<y.length;w+=1){let[R,f]=y[w];r+=`
10
- @media screen and (min-height: ${R}px) {
11
- ${typeof f=="function"?f(e):f}
12
- }
13
- `}}if(a&&l){let y=Object.entries(t?.max?.width);for(let w=0;w<y.length;w+=1){let[R,f]=y[w];r+=`
14
- @media screen and (max-width: ${R}px) {
15
- ${typeof f=="function"?f(e):f}
16
- }
17
- `}}if(a&&F){let y=Object.entries(t?.max?.height);for(let w=0;w<y.length;w+=1){let[R,f]=y[w];r+=`
18
- @media screen and (max-height: ${R}px) {
19
- ${typeof f=="function"?f(e):f}
20
- }
21
- `}}return r}return""}catch(r){i("component.css.compileCSS",r)}};var qr=(t={},e=null)=>{try{let r=e(t);return r&&m(r)&&!I(r)?Object.assign({},r):{}}catch(r){i("component.state.compile.compileState",r)}},ee=(t={},e={})=>{try{return u(e)?qr(t,e):Object.assign({},e)}catch(r){i("component.state.compile",r)}};var le={onBeforeMount:()=>null,onMount:()=>null,onBeforeUnmount:()=>null,onUpdateProps:()=>null,onRefetchData:()=>null};var Ct=(t={},e={})=>{try{return e?Object.entries({...le,...e||{}}).reduce((r={},[o,n])=>(r[o]=()=>n({...t,setState:t.setState.bind(t),...t.renderMethods||{}}),r),{}):le}catch(r){i("component.lifecycle.compile",r)}};var te=(t={},e={})=>{try{return Object.entries(e).reduce((r={},[o,n])=>(r[o]=(...s)=>n(...s,{...t,setState:t.setState.bind(t),...t.renderMethods||{}}),r),{})}catch{i("component.methods.compile")}};var ue=(t={})=>{try{return{...t,query:{...t?.query||{},set:(e="",r="")=>{if(typeof window!="undefined"){let o=new URL(window.location);o.searchParams.append(e,r),window.history.pushState({},"",o)}},unset:(e="")=>{if(typeof window!="undefined"){let r=new URL(window.location);r.searchParams.delete(e),window.history.pushState({},"",r)}}},isActive:(e="")=>O(e)&&t?.route!=="*"?e===(typeof location!="undefined"?location.pathname:t.path):!1}}catch(e){i("component.url.compile",e)}};var Nr=(t={},e=null)=>{try{let r=e(t);return r&&m(r)&&!I(r)?Object.assign({},r):{}}catch(r){i("component.props.compileDefaultProps.compile",r)}},Rt=(t={},e={})=>{try{return u(e)?Nr(t,e):Object.assign({},e)}catch(r){i("component.props.compileDefaultProps",r)}};var At=(t={},e={})=>{try{t.options=e||{},t.id=e?._componentId||null,t.instanceId=_(8),t.ssrId=e?._ssrId||null,t.css=X(),t.data=Y(e?.dataFromSSR,e?._componentId),t.defaultProps=Rt(t,e?.defaultProps),t.props=vt(t?.defaultProps,e?.props),t.state=ee(t,e?.state),t.events=e?.events||{},t.lifecycle=Ct(t,e?.lifecycle),t.methods=te(t,e?.methods),t.wrapper=e?.wrapper||{},t.translations=e?.translations||{},t.validateForm=Ot,t.DOMNode=null,t.dom={},t.dom.virtual={},t.dom.actual={};let r=!E();if(r||(t.url=ue(e?.url)),r&&window.__joystick_url__&&(t.url=ue(window.__joystick_url__)),r&&e?.websockets&&u(e?.websockets)){let o=e.websockets(t),n=m(o)&&Object.entries(o);for(let s=0;s<n?.length;s+=1){let[c,a]=n[s];Q({url:`${window?.process?.env.NODE_ENV==="development"?"ws":"wss"}://${location.host}/api/_websockets/${c}`,options:a?.options||{},query:a?.query||{},events:a?.events||{}},(l={})=>{t.websockets={...t.websockets||{},[c]:l}})}}}catch(r){i("component.registerOptions",r)}};var Vr=(t="")=>{try{let[e,r]=t?.split(".");return r?window?.joystick?._internal?.queues[e][r]:window?.joystick?._internal?.queues[e]}catch(e){i("addToQueue.getQueue",e)}},G=(t="",e=null)=>{try{E()||(Vr(t)||{}).array.push({callback:e})}catch(r){i("addToQueue",r)}};var re=async(t={},e={},r={},o={})=>{try{if(o?.options?.data&&u(o.options.data)){let n=await o.options.data(t,e,r,o);return Promise.resolve(n)}return Promise.resolve()}catch(n){i("component.data.fetch",n)}};var Dt=(t={},e={},r={})=>{try{return{...t,refetch:async(o={})=>{let n=await re(Z,e,o,r);return r.data=Dt(n,e,r),window.__joystick_data__[r?.id]=n,r.render({afterRefetchDataRender:()=>{r?.lifecycle?.onRefetchData&&r?.lifecycle?.onRefetchData(r)}}),n}}}catch(o){i("component.data.compile",o)}},jt=Dt;var Lt=(t={})=>{try{if(!E()){let e=window.__joystick_data__&&window.__joystick_data__[t?.id]||{},r=window.__joystick_req__||{};return jt(e,r,t)}return t?.data||{}}catch(e){i("component.loadDataFromWindow",e)}};var qt=Rr(_t());var Pt=(t={},e="",r="id")=>{try{let o=t&&t.id;if(m(t)&&o){let n=Object.keys(t);for(let s=0;s<n.length;s+=1){let c=n[s],a=t[c];if(c===r&&a===e)return t;if(c==="children"&&Array.isArray(a))for(let l=0;l<a.length;l+=1){let F=a[l],y=Pt(F,e,r);if(y!==null)return y}}}return null}catch(o){i("component.findComponentInTreeByField",o)}},D=Pt;var It=(t="",e={},r=null)=>{let o=D(r||window.joystick._internal.tree,t,"instanceId");o&&(o.children=[...o.children||[],e])};var Ur=(t={},e={},r=null)=>{try{let o=z(t,{includeActual:!0,existingChildren:r});return t.dom=o,t.setDOMNodeOnInstance(),e.renderedComponent=t,o.html.wrapped}catch(o){i("component.renderMethods.component.renderForClient",o)}},Hr=(t={})=>{try{return t.renderToHTML({ssrTree:t.parent.ssrTree,translations:t.parent.translations,walkingTreeForSSR:t?.parent?.walkingTreeForSSR,dataFromSSR:t.parent?.dataFromSSR}).wrapped}catch(e){i("component.renderMethods.component.renderToHTMLForSSR",e)}},zr=(t={})=>{try{return t.parent.ssrTree.dataFunctions.push(async()=>{try{let e=await t.options.data(t.parent.options.api,t.parent.options.req);return t.data=e||{},{componentId:t.id,ssrId:t.ssrId,data:e}}catch(e){return{componentId:t.id,ssrId:t.ssrId,data:null,error:e}}}),t.renderToHTML({ssrTree:t?.parent?.ssrTree,translations:t?.parent?.translations,walkingTreeForSSR:t?.parent?.walkingTreeForSSR,dataFromSSR:t?.parent?.dataFromSSR})}catch(e){i("component.renderMethods.component.collectDataFunctionsForSSR",e)}},Br=(t={})=>{try{let e={id:t.id,instanceId:t.instanceId,instance:t,children:[]};It(t.parent.instanceId,e,t.parent&&t.parent.ssrTree||null)}catch(e){i("component.renderMethods.component.handleAddComponentToParent",e)}},Zr=(t={},e={})=>{try{!t.renderedComponent&&e.options&&e.options.lifecycle&&(e.options.lifecycle.onBeforeMount&&G("lifecycle.onBeforeMount",()=>{e.options.lifecycle.onBeforeMount(e)}),!t.renderedComponent&&e.options.lifecycle.onMount&&G("lifecycle.onMount",()=>{e.options.lifecycle.onMount(e)}))}catch(r){i("component.renderMethods.component.handleLifecycle",r)}},Gr=(t={},e={},r={})=>{try{!e.walkingTreeForSSR&&t?.options?.lifecycle?.onUpdateProps&&(0,qt.diff)(e?.existingPropsMap,r)?.length>0&&G("lifecycle.onUpdateProps",()=>{let n=e?.existingPropsMap&&e?.existingPropsMap[t.id];t.options.lifecycle.onUpdateProps(n||{},r,t)})}catch(o){i("component.renderMethods.component.handleOnChangeProps",o)}},Wr=function(){return function(e=null,r={},o={}){let n=e({props:r,url:o.url,translations:o.translations,api:o.options.api,req:o.options.req,dataFromSSR:o?.dataFromSSR,parent:o}),s=o?.existingStateMap[n.id]||{},c=o.children[n.id]||[],a=s[c?.length];return n.state=a?.state||n.state,o.children[n.id]=[...o.children[n.id]||[],n],n.parent=o,Gr(n,o,r),G("lifecycle.onMount",()=>{n.setDOMNodeOnInstance()}),Zr(this,n),n.parent&&Br(n),n.options.data&&n.parent.walkingTreeForSSR&&n.parent.ssrTree.dataFunctions?zr(n):n.parent&&n.parent.ssrTree?Hr(n):Ur(n,this,a?.children)}},Kr=function(e,r){try{let o=this;return new Wr().bind({})(e,r,o)}catch(o){i("component.renderMethods.component",o)}},me=Kr;var Jr=function(e=[],r=null){try{return u(r)&&e&&Array.isArray(e)?e.map((o,n)=>r(o,n)).join(""):""}catch(o){i("component.renderMethods.each",o)}},pe=Jr;var Qr=function(e="",r={}){try{let o=E()?this.translations:window.__joystick_i18n__;if(!o||!o[e])return"";let n=Object.entries(r);return n.length>0?n.reduce((s,[c,a])=>s.replace(`{{${c}}}`,a),o[e]):o[e]}catch(o){i("component.renderMethods.i18n",o)}},fe=Qr;var Yr=function(e=!1,r=""){try{return this?.renderingHTMLWithDataForSSR||e?`<when>${r.trim()}</when>`:"<when> </when>"}catch(o){i("component.renderMethods.when",o)}},he=Yr;var Nt={c:me,component:me,e:pe,each:pe,i:fe,i18n:fe,w:he,when:he};var Vt=(t={},e={})=>{try{return Object.entries(Nt).reduce((r,[o,n])=>(r[o]=n.bind({...t,...e}),r),{})}catch(r){i("component.renderMethods.compile",r)}};var Ut=(t={})=>{try{return Object.entries(t)?.reduce((e={},[r,o]={})=>(e[r]=o?.map((n={})=>({state:n?.state,children:Ut(n?.children)})),e),{})}catch(e){i("component.render.getExistingStateMap.buildMapForChildren",e)}},Ht=(t={})=>{try{return Ut(t)}catch(e){i("component.render.getExistingStateMap",e)}};var zt=new RegExp(/\<\!\-\-(?:.|\n|\r)*?-->/g),Xr=new RegExp(/\n/g);var eo=(t="")=>{try{return(t.match(zt)||[]).forEach(r=>{t=t.replace(r,"")}),t}catch(e){i("component.render.sanitizeHTML.removeCommentedCode",e)}},Bt=(t="")=>{try{let e=`${t}`;return e=eo(e),e}catch(e){i("component.render.sanitizeHTML",e)}};var Zt=(t={},e="")=>{try{let{wrapper:r=null,ssrId:o=null,id:n=null,instanceId:s=null}=t;return`<div ${r?.id?`id="${r.id}" `:""}${r?.classList?`class="${r.classList?.join(" ")}" `:""}js-ssrId="${o}" js-c="${n}" js-i="${s}">${e}</div>`}catch(r){i("component.render.wrapHTML",r)}};var Gt=(t={},e=[])=>{try{let r=[...e],o=Object.entries(t);for(let n=0;n<o?.length;n+=1){let[s,c]=o[n];for(let a=0;a<c?.length;a+=1){let l=c[a];Object.entries(l?.timers)?.length>0&&r.push(...Object.values(l?.timers)),Object.entries(l?.children)?.length>0&&Gt(l?.children,r)}}if(r?.length>0)for(let n=0;n<r?.length;n+=1)clearTimeout(r[n])}catch(r){i("component.render.clearTimersOnChildren",r)}},Wt=Gt;var ne=(t={},e={})=>{try{e?.dataFromSSR&&(t.data=Y(e.dataFromSSR,t.id)||{}),Wt(t?.children);let r=Ht(e?.existingChildren||t?.children)||{};t.children={},t.renderMethods=Vt({...t,existingStateMap:r,translations:e?.translations||t.translations||{},ssrTree:e?.ssrTree,walkingTreeForSSR:e?.walkingTreeForSSR,renderingHTMLWithDataForSSR:e?.renderingHTMLWithDataForSSR,dataFromSSR:e?.dataFromSSR}),t.methods=te(t,t.options.methods);let o=t.options.render({...t||{},setState:t.setState.bind(t),...t.renderMethods||{}}),n=Bt(o),s=Zt(t,n);return{unwrapped:n,wrapped:s}}catch(r){i("component.render.toHTML",r)}};var to=(t={})=>{try{return Object.values(t).reduce((e={},r)=>(e[r.name]=r.value,e),{})}catch(e){i("component.virtualDOM.build.parseAttributeMap",e)}},Kt=(t={})=>{try{return t.tagName==="WHEN"?[].flatMap.call(t?.childNodes,e=>e?.tagName==="WHEN"?Kt(e):we(e)):we(t)}catch(e){i("component.virtualDOM.build.flattenWhenTags",e)}},we=(t={})=>{try{let e=t&&t.tagName&&t.tagName.toLowerCase()||"text",r={tagName:e,attributes:to(t.attributes),children:[].flatMap.call(t.childNodes,o=>Kt(o))};return e==="text"&&(r=t.textContent),r}catch(e){i("component.virtualDOM.build",e)}},W=we;var ro=(t="")=>{try{let e=document.createElement("div");return e.innerHTML=t,e?.childNodes[0]}catch(e){i("component.virtualDOM.build.convertHTMLToDOM",e)}},Jt=(t="")=>{try{let e=ro(t);return W(e)}catch(e){i("component.virtualDOM.build",e)}};var Qt=(t="")=>{try{return document.createElement("div").setAttribute(t,"Test"),!0}catch{return!1}};var oo=(t={})=>{try{let e=document.createElement(t.tagName),r=Object.entries(t.attributes);for(let o=0;o<r.length;o+=1){let[n,s]=r[o];Qt(n)&&e.setAttribute(n,s)}for(let o=0;o<t?.children?.length;o+=1){let n=t?.children[o];if(n){let s=Yt(n);e.appendChild(s)}}return e}catch(e){i("component.virtualDOM.renderTreeToDOM.renderElement",e)}},Yt=(t=null)=>{try{return O(t)?document.createTextNode(t):oo(t)}catch(e){i("component.virtualDOM.renderTreeToDOM",e)}},B=Yt;var z=(t={},e={})=>{try{let r=ne(t,{existingChildren:e?.existingChildren}),o=Jt(r.wrapped,t),n=e.includeActual&&o?B(o):null;return{html:r,virtual:o,actual:n}}catch(r){i("component.render.getUpdatedDOM",r)}};var Xt=(t={},e={})=>{try{let r=z(t,{includeActual:!0,existingChildren:e?.existingChildren});return t.dom=r,r.actual}catch(r){i("component.render.forMount",r)}};var no=(t={},e={})=>{let r=[];for(let[o,n]of Object.entries(e))r.push(s=>(s&&s.setAttribute&&s.setAttribute(o,n),s));for(let o in t)o in e||r.push(n=>(n&&n.removeAttribute&&n.removeAttribute(o),n));return o=>{for(let n of r)n&&typeof n=="function"&&n(o)}},ie=no;var io=(t=[],e=[])=>{let r=[],o=Math.max(t.length,e.length);for(let n=0;n<o;n+=1){let s=t[n],c=e[n];r.push([s,c])}return r},er=io;var so=(t=[],e)=>{t.forEach(r=>{r&&typeof r=="function"&&r(e)})},ao=(t=[])=>{t.forEach(([e,r])=>{e&&typeof e=="function"&&e(r)})},co=(t=[],e=[])=>{let r=[];return e.slice(t.length).forEach(n=>{let s=c=>{let a=B(n);return c.appendChild(a),c};r.push(s)}),r},lo=(t=[],e=[])=>{let r=[];return t.forEach((o,n)=>{let s=ae(o,e[n]);r.push(s)}),r},uo=(t=[],e=[])=>{let r=lo(t,e),o=co(t,e);return n=>{if(n){let s=er(r,n.childNodes);ao(s),so(o,n)}return n}},se=uo;var tr={select:(t,e)=>r=>{let o=r.value;r.replaceChildren(),ie(t.attributes,e.attributes)(r),se([],e.children)(r);let n=r.querySelector(`option[value="${o}"]`);if(n&&(r.value=o),!n){let s=r.querySelector("option");r.value=s?.value||""}return r}};var ye=(t,e)=>r=>{let o=t?B(t):null;return r&&r.replaceWith(o),o},mo=()=>t=>{t&&t.remove()},po=(t=void 0,e=void 0)=>t===void 0||e===void 0?mo():typeof t=="string"||typeof e=="string"?ye(e,t):t.tagName!==e.tagName?ye(e):e.tagName==="select"?tr.select(t,e):["pre","code"].includes(e.tagName)?ye(e,t):n=>(ie(t.attributes,e.attributes)(n),se(t.children,e.children)(n),n),ae=po;var fo=(t="")=>{try{let[e,r]=t?.split(".");return r?window?.joystick?._internal?.queues[e][r]:window?.joystick?._internal?.queues[e]}catch(e){i("processQueue.getQueue",e)}},q=(t="",e=null)=>{try{E()||(fo(t)||{}).process(e)}catch(r){i("processQueue",r)}};var rr=(t="",e=null)=>{let r=D(e||window.joystick._internal.tree,t,"instanceId");r&&(r.children=[])};var or=(t="",e={},r=null)=>{let o=D(r||window.joystick._internal.tree,t,"instanceId");o&&(o.instanceId=e?.instanceId,o.instance=e)};var nr=(t={},e="",r={})=>{for(let o=0;o<t?.children?.length;o+=1){let n=t?.children[o];if(m(n)&&n.attributes&&n.attributes["js-i"]&&n.attributes["js-i"]===e){t.children[o]=r;break}m(n)&&nr(n,e,r)}},ir=nr;var sr=(t={})=>{try{return Object.entries(t).map(([e,r])=>{let[o,...n]=e.split(" ");return{type:o.toLowerCase(),selector:n.join(" "),handler:r}})}catch(e){i("component.events.serialize",e)}};var ar=(t={},e={},r=[])=>{try{let o=Object.keys(t?.events||{})?.length>0?sr(t?.events):[];for(let n=0;n<o?.length;n+=1){let s=o[n];r.push({...s,instance:t,elements:document.querySelectorAll(`body [js-i="${t.instanceId}"] ${s?.selector}`),handler:function(a){s.handler(a,{...t||{},setState:t?.setState.bind(t),...e||{}})}})}if(t?.children){let n=Object.entries(t?.children)?.flatMap(([s,c])=>c);for(let s=0;s<n?.length;s+=1){let c=n[s];ar(c,e,r)}}return r}catch(o){i("component.eve!nts.registerListenersFix.getListeners",o)}},ho=(t={},e={})=>{try{let o=ar(t,e,[])?.flatMap((n={})=>[].flatMap.call(n?.elements||[],s=>{let{elements:c=[],...a}=n||{};return{...a,element:s}}));for(let n=0;n<o?.length;n+=1){let{instance:s,element:c,elementSelector:a,type:l,handler:F}=o[n];c.addEventListener(l,F),s._eventListeners=[...s?._eventListeners||[],{instance:s,element:c,elementSelector:a,type:l,handler:F}]}}catch(r){i("component.events.registerListenersFix",r)}},ce=ho;var cr=(t={})=>{try{let e=t?._eventListeners||[];if(t?.children){let o=(Object.values(t?.children||{})?.reduce((n=[],s=[])=>[...n,...s],[])).flatMap((n={})=>cr(n));e=[...e,...o]}return e}catch(e){i("component.events.unregisterListenersFix.getListeners",e)}},wo=(t={})=>{try{let e=cr(t);for(let r=0;r<e?.length;r+=1){let{instance:o,element:n,type:s,handler:c}=e[r];n.removeEventListener(s,c),o._eventListeners=o._eventListeners?.splice(r,1)}}catch(e){i("component.events.unregisterListenersFix",e)}},dr=wo;var lr=class{constructor(e={}){this.parent=e?.parent||null,this.onUpdateChildComponent=this.handleUpdateChildComponentInVDOM,this.updateVirtualDOM=this.handleUpdateVirtualDOM,this.timers={},this.children={},et(e),At(this,e),this.data=Lt(this),this?.data?.refetch&&this.data.refetch()}setDOMNodeOnInstance(){this.DOMNode=document.querySelector(`body [js-i="${this.instanceId}"]`)}async handleFetchData(e={},r={},o={},n=this){let s=await re(e,r,o,n);return this.data=s,s}handleGetInstance(){return this}handleUpdateVirtualDOM(){if(this.DOMNode){let r=W(this.DOMNode);this.dom.virtual=r}let e=this.parent?D(window.joystick._internal.tree,this.parent?.instanceId,"instanceId"):null;e?.instance&&e.instance.updateVirtualDOM()}onBeforeRender(){if(!E())return{instanceId:this.instanceId}}render(e={}){if(e?.mounting)return Xt(this,e);let r=this.onBeforeRender();dr(this),rr(this.instanceId);let o=z(this,{}),n=ae(this.dom.virtual,o.virtual);n&&u(n)&&q("lifecycle.onBeforeMount",()=>{let s=n(this.DOMNode);this.dom.actual=s,this.dom.virtual=o.virtual,ce(this,this.renderMethods),this.setDOMNodeOnInstance(),q("domNodes",()=>{q("lifecycle.onMount",()=>{this.onAfterRender(r,e)})})})}renderToHTML(e={}){return ne(this,e)}onAfterRender(e={},r={}){E()||(or(e.instanceId,this),window.joystick._internal.css.update(),q("lifecycle.onUpdateProps"),r?.afterSetStateRender&&u(r.afterSetStateRender)&&r.afterSetStateRender(),r?.afterRefetchDataRender&&u(r.afterRefetchDataRender)&&r.afterRefetchDataRender(),this.parent&&this.parent.onUpdateChildComponent(this.id,this.instanceId))}setState(e={},r=null){this.state=ee(this,{...this.state||{},...e}),this.render({afterSetStateRender:()=>{r&&u(r)&&r()}})}setTimeout(e=null,r=0){e&&(this.timers[_()]=window.setTimeout(e,r))}setInterval(e=null,r=0){e&&(this.timers[_()]=window.setInterval(e,r))}handleUpdateChildComponentInVDOM(e="",r=""){let o=D(window.joystick._internal.tree,this.instanceId,"instanceId"),n=D(window.joystick._internal.tree,r,"instanceId");if(n?.instance?.DOMNode){let s=W(n?.instance?.DOMNode);ir(o?.instance?.dom?.virtual,n?.instanceId,s)}}},ur=lr;var mr=(t={})=>{try{return(e={})=>new ur({...t,props:e?.props,url:e?.url,translations:e?.translations,api:e?.api,req:e?.req,parent:e?.parent})}catch(e){i("component",e)}};var pr=(t={})=>{try{window.joystick._internal.tree={id:t?.id||null,instanceId:t?.instanceId||null,instance:t,children:[]}}catch(e){i("mount.initializeJoystickComponentTree",e)}};var fr=(t={},e=null)=>{try{return t.innerHTML="",t.appendChild(e),e}catch(r){i("mount.appendToDOM",r)}};var hr=(t=null,e={},r=null)=>{try{u(t)||i("mount","Component to mount must be a function."),m(e)||i("mount","props must be an object."),Oe(r)||i("mount","target must be a DOM node.");let o=t({props:e});pr(o);let n=o.render({mounting:!0,existingChildren:window.__joystick_childrenBeforeHMRUpdate__||null});return n&&(n.setAttribute("js-ssrId",o.ssrId),n.setAttribute("js-c",o.id),n.setAttribute("js-i",o.instanceId)),o.lifecycle.onBeforeMount(),q("lifecycle.onBeforeMount"),fr(r,n),o.setDOMNodeOnInstance(),window.joystick._internal.css.update(),ce(o,o.renderMethods),o.lifecycle.onMount(),q("lifecycle.onMount"),o}catch(o){i("mount",o)}};var wr=class{constructor(e=[]){this.array=[...e],this.array.push=function(){Array.prototype.push.apply(this,arguments)}}async process(e=null){if(this.array.length>0){let r=this.array.shift();r&&r.callback&&(await r.callback(),this.process(e))}else e&&e()}},N=wr;var yo=new RegExp(/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g),go=new RegExp(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g),xo=(t,e)=>(e||"").replace(yo,()=>"").replace(go,r=>["@",": "].some(o=>r?.includes(o))?r:`[js-c="${t}"] ${r.trim()}`)?.trim(),yr=(t={},e=[])=>{if(t.instance&&t.instance.options&&t.instance.options.css){let r=t.instance.id,o=t.instance.options.css,n=X(o,t.instance),s=xo(r,n);e.push(s)}if(t.children&&t.children.length>0){let r=t?.children?.length||0;for(;r--;)yr(t.children[r],e)}return e},gr=yr;var xr=()=>{try{let t=document.head.querySelector("style[js-styles]"),r=gr(window.joystick?._internal?.tree).reverse().join("").trim();if(t?.innerText===r)return;if(t&&(t.innerHTML=r),!t){let o=document.createElement("style");o.setAttribute("js-styles",""),o.innerHTML=r,document.head.appendChild(o)}}catch(t){i("css.update",t)}};var bo=Me,$o=Re,Eo=Z.get,Fo=Ae,ko=De,Mo=Z.set,So=_e,br=()=>typeof window!="undefined"?window.__joystick_env__:typeof process!="undefined"?"production":null,$r={_external:{},_internal:{css:{update:xr},queues:{domNodes:new N([]),eventListeners:new N([]),lifecycle:{onBeforeMount:new N([]),onMount:new N([]),onUpdateProps:new N([])},render:new N([])},tree:{},eventListeners:[]},accounts:bo,cache:$o,component:mr,env:{development:br()==="development",test:br()==="test"},get:Eo,html:Fo,id:_,mount:hr,renderComponentToHTML:ko,set:Mo,upload:So,timers:{}};Pe($r);var ml=$r;export{bo as accounts,$o as cache,ml as default,Eo as get,Fo as html,ko as renderComponentToHTML,Mo as set,So as upload};
9
+ `}}if(o&&c){let f=Object.entries(t?.min?.height);for(let h=0;h<f.length;h+=1){let[p,l]=f[h];r+=`
10
+ @media screen and (min-height: ${p}px) {
11
+ ${typeof l=="function"?l(e):l}
12
+ }
13
+ `}}if(a&&d){let f=Object.entries(t?.max?.width);for(let h=0;h<f.length;h+=1){let[p,l]=f[h];r+=`
14
+ @media screen and (max-width: ${p}px) {
15
+ ${typeof l=="function"?l(e):l}
16
+ }
17
+ `}}if(a&&_){let f=Object.entries(t?.max?.height);for(let h=0;h<f.length;h+=1){let[p,l]=f[h];r+=`
18
+ @media screen and (max-height: ${p}px) {
19
+ ${typeof l=="function"?l(e):l}
20
+ }
21
+ `}}return r}return""},De=Kr;var Jr=(t,e)=>(e||"").replace(M.CSS_COMMENT_REGEX,()=>"").replace(M.CSS_SELECTOR_REGEX,r=>["@",": "].some(n=>r?.includes(n))?r:`[js-c="${t}"] ${r.trim()}`).replace(/@wrapper/g,`[js-c="${t}"]`)?.trim(),Yr=(t=[],e=[],r=!1)=>{for(let n=0;n<t?.length;n+=1){let o=t[n];if(o?.css){let i=o?.id,c=o.options.css,a=De(c,o),d=r?null:Jr(i,a);r?e.push(a):e.push(d)}}return e},Fe=Yr;var Xr=(t={})=>Object.entries(t).map(([e,r])=>{let[n,...o]=e.split(" ");return{type:n.toLowerCase(),selector:o.join(" "),handler:r}}),He=Xr;var Wr=(t=[])=>t?.flatMap(e=>He(e?.events)?.flatMap(n=>({instance:e,...n}))),Ve=Wr;var Qr=(t="")=>window?.joystick?._internal?.tree?.find(e=>e?.instance_id===t),B=Qr;var x=(t="")=>{let e=B(t),r=E(e?.children),n=U(r);return[e,...n||[]]},Ke=(t=null,e=null)=>{let n=(t&&!e?x(t):e||[])?.flatMap(o=>o?.timers?Object.values(o?.timers):[]);for(let o=0;o<n?.length;o+=1){let i=n[o];clearTimeout(i),clearInterval(i)}},Je=()=>{let t=window.__joystick_hmr_previous_websockets__;for(let e=0;e<t?.length;e+=1){let r=t[e];r?.client?.close&&s.is_function(r?.client?.close)&&r.client.close(1e3)}},en={attach_event_listeners:({root_instance_id:t})=>{let e=window?.joystick?._internal?.tree,r=Ve(e);for(let n=0;n<r?.length;n+=1){let o=r[n],i=document.querySelectorAll(`[js-i="${o?.instance?.instance_id}"] ${o?.selector}`),c=o?.instance?.compile_render_methods();for(let a=0;a<i?.length;a+=1){let d=i[a];Be(o,d,c)}}return r},clear_timers:({root_instance_id:t=null})=>{Ke(t)},clear_websockets:({root_instance_id:t=null})=>{Je()},css:({is_mount:t=!1,is_email:e=!1,ssr_tree:r=null})=>{let n=typeof window<"u"?document.head.querySelector("style[js-css]"):null,o=Fe(r||window.joystick?._internal?.tree,[],e),i=t?o?.reverse().join("").trim():o?.join("").trim();if(!(typeof window<"u"&&n?.innerText===i)){if(typeof window<"u"&&n&&(n.innerHTML=i),typeof window<"u"&&!n){let c=document.createElement("style");c.setAttribute("js-styles",""),c.innerHTML=i,document.head.appendChild(c)}return i}},detach_event_listeners:({root_instance_id:t})=>{let e=window?.joystick?._internal?.tree,r=e?.filter(n=>!!n?._event_listeners).flatMap(n=>n?._event_listeners);for(let n=0;n<r?.length;n+=1){let o=r[n];o.element.removeEventListener(o?.type,o?.handler)}for(let n=0;n<e?.length;n+=1){let o=e[n];o._event_listeners=[]}},"lifecycle.onBeforeMount":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onBeforeMount)||s.is_function(n?.lifecycle?.on_before_mount))&&((n.lifecycle.onBeforeMount||n.lifecycle.on_before_mount)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_before_mount`,[n]))}},"lifecycle.onMount":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onMount)||s.is_function(n?.lifecycle?.on_mount))&&((n.lifecycle.onMount||n.lifecycle.on_mount)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_mount`,[n]))}},"lifecycle.onBeforeRender":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onBeforeRender)||s.is_function(n?.lifecycle?.on_before_render))&&((n.lifecycle.onBeforeRender||n.lifecycle.on_before_render)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_before_render`,[n]))}},"lifecycle.onRender":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onRender)||s.is_function(n?.lifecycle?.on_render))&&((n.lifecycle.onRender||n.lifecycle.on_render)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_render`,[n]))}},"lifecycle.onUpdateProps":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onUpdateProps)||s.is_function(n?.lifecycle?.on_update_props))&&((n.lifecycle.onUpdateProps||n.lifecycle.on_update_props)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_update_props`,[n]))}},"lifecycle.onRefetchData":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onRefetchData)||s.is_function(n?.lifecycle?.on_refetch_data))&&((n.lifecycle.onRefetchData||n.lifecycle.on_refetch_data)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_refetch_data`,[n]))}},"lifecycle.onBeforeUnmount":({root_instance_id:t})=>{let e=x(t);for(let r=0;r<e?.length;r+=1){let n=e[r];(s.is_function(n?.lifecycle?.onBeforeUnmount)||s.is_function(n?.lifecycle?.on_before_unmount))&&((n.lifecycle.onBeforeUnmount||n.lifecycle.on_before_unmount)(n),u(`ui.${n?.options?.test?.name||m()}.lifecycle.on_before_unmount`,[n]))}},reset_tree_for_hmr:()=>{Ke(null,window.__joystick_hmr_previous_tree__),Je(),window.__joystick_hmr_previous_tree__=[],window.__joystick_hmr_previous_websockets__=[]}},Ye=en;var tn=(t="",e={})=>{let r=Ye[t];if(typeof r=="function")return r(e)},$=tn;var Xe=(t={},e={},r={})=>({...t,refetch:async(n={})=>{u(`ui.${r?.options?.test?.name||m()}.data.refetch`,[n]);let o=await Ue(O,e,n,r);return r.data=Xe(o,e,r),window.__joystick_data__[r?.id]&&(window.__joystick_data__[r?.id]=atob(o)),window?.__joystick_test__||r.rerender({after_refetch_data_rerender:()=>{$("lifecycle.onRefetchData",{root_instance_id:r?.instance_id})}}),r.data}}),We=Xe;var rn=(t={})=>{if(typeof window<"u"){let e=window.__joystick_data__?JSON.parse(atob(window.__joystick_data__)):{},r=e&&e[t?.id]||null,n=window.__joystick_request__||{};return We(r,n,t)}return t?.data||{}},Qe=rn;var et=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/,nn=(t,e="")=>{if(!e)return!0;if(e&&!s.is_string(e))return!1;let r=e?e.replace(/[- ]+/g,""):"";return t===!0?r.match(new RegExp(et)):!r.match(new RegExp(et))},ee=nn;var on=(t="",e="")=>t(e),tt=on;var rt=/^((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))$/,sn=(t,e="")=>t===!0?!!e.match(rt):!e.match(rt),nt=sn;var dn=(t,e="")=>t===e,ot=dn;var cn=(t,e="")=>t===e,it=cn;var an=(t,e="")=>e.length<=t,te=an;var ln=(t,e="")=>e.length>=t,re=ln;var st=/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/,_n=(t,e="")=>t===!0?!!e.match(st):!e.match(st),dt=_n;var ct={AF:/^\d{4}$/,AX:/^\d{5}$/,AL:/^\d{4}$/,DZ:/^\d{5}$/,AS:/^\d{5}(-{1}\d{4,6})$/,AD:/^[Aa][Dd]\d{3}$/,AI:/^[Aa][I][-][2][6][4][0]$/,AR:/^\d{4}|[A-Za-z]\d{4}[a-zA-Z]{3}$/,AM:/^\d{4}$/,AC:/^[Aa][Ss][Cc][Nn]\s{0,1}[1][Zz][Zz]$/,AU:/^\d{4}$/,AT:/^\d{4}$/,AZ:/^[Aa][Zz]\d{4}$/,BH:/^\d{3,4}$/,BD:/^\d{4}$/,BB:/^[Aa][Zz]\d{5}$/,BY:/^\d{6}$/,BE:/^\d{4}$/,BM:/^[A-Za-z]{2}\s([A-Za-z]{2}|\d{2})$/,BT:/^\d{5}$/,BO:/^\d{4}$/,BA:/^\d{5}$/,BR:/^\d{5}-\d{3}$/,"":/^[Bb][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$/,IO:/^[Bb]{2}[Nn][Dd]\s{0,1}[1][Zz]{2}$/,VG:/^[Vv][Gg]\d{4}$/,BN:/^[A-Za-z]{2}\d{4}$/,BG:/^\d{4}$/,KH:/^\d{5}$/,CA:/^(?=[^DdFfIiOoQqUu\d\s])[A-Za-z]\d(?=[^DdFfIiOoQqUu\d\s])[A-Za-z]\s{0,1}\d(?=[^DdFfIiOoQqUu\d\s])[A-Za-z]\d$/,CV:/^\d{4}$/,KY:/^[Kk][Yy]\d[-\s]{0,1}\d{4}$/,TD:/^\d{5}$/,CL:/^\d{7}\s\(\d{3}-\d{4}\)$/,CN:/^\d{6}$/,CX:/^\d{4}$/,CC:/^\d{4}$/,CO:/^\d{6}$/,CD:/^[Cc][Dd]$/,CR:/^\d{4,5}$/,HR:/^\d{5}$/,CU:/^\d{5}$/,CY:/^\d{4}$/,CZ:/^\d{5}\s\(\d{3}\s\d{2}\)$/,DK:/^\d{4}$/,DO:/^\d{5}$/,EC:/^\d{6}$/,SV:/^1101$/,EG:/^\d{5}$/,EE:/^\d{5}$/,ET:/^\d{4}$/,FK:/^[Ff][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$/,FO:/^\d{3}$/,FI:/^\d{5}$/,FR:/^\d{5}$/,GF:/^973\d{2}$/,PF:/^987\d{2}$/,GA:/^\d{2}\s[a-zA-Z-_ ]\s\d{2}$/,GE:/^\d{4}$/,DE:/^\d{2}$/,GI:/^[Gg][Xx][1]{2}\s{0,1}[1][Aa]{2}$/,GR:/^\d{3}\s{0,1}\d{2}$/,GL:/^\d{4}$/,GP:/^971\d{2}$/,GU:/^\d{5}$/,GT:/^\d{5}$/,GG:/^[A-Za-z]{2}\d\s{0,1}\d[A-Za-z]{2}$/,GW:/^\d{4}$/,HT:/^\d{4}$/,HM:/^\d{4}$/,HN:/^\d{5}$/,HU:/^\d{4}$/,IS:/^\d{3}$/,IN:/^\d{6}$/,ID:/^\d{5}$/,IR:/^\d{5}-\d{5}$/,IQ:/^\d{5}$/,IM:/^[Ii[Mm]\d{1,2}\s\d\[A-Z]{2}$/,IL:/^\b\d{5}(\d{2})?$/,IT:/^\d{5}$/,JM:/^\d{2}$/,JP:/^\d{7}\s\(\d{3}-\d{4}\)$/,JE:/^[Jj][Ee]\d\s{0,1}\d[A-Za-z]{2}$/,JO:/^\d{5}$/,KZ:/^\d{6}$/,KE:/^\d{5}$/,KR:/^\d{6}\s\(\d{3}-\d{3}\)$/,XK:/^\d{5}$/,KW:/^\d{5}$/,KG:/^\d{6}$/,LV:/^[Ll][Vv][- ]{0,1}\d{4}$/,LA:/^\d{5}$/,LB:/^\d{4}\s{0,1}\d{4}$/,LS:/^\d{3}$/,LR:/^\d{4}$/,LY:/^\d{5}$/,LI:/^\d{4}$/,LT:/^[Ll][Tt][- ]{0,1}\d{5}$/,LU:/^\d{4}$/,MK:/^\d{4}$/,MG:/^\d{3}$/,MV:/^\d{4,5}$/,MY:/^\d{5}$/,MT:/^[A-Za-z]{3}\s{0,1}\d{4}$/,MH:/^\d{5}$/,MQ:/^972\d{2}$/,YT:/^976\d{2}$/,FM:/^\d{5}(-{1}\d{4})$/,MX:/^\d{5}$/,MD:/^[Mm][Dd][- ]{0,1}\d{4}$/,MC:/^980\d{2}$/,MN:/^\d{5}$/,ME:/^\d{5}$/,MS:/^[Mm][Ss][Rr]\s{0,1}\d{4}$/,MA:/^\d{5}$/,MZ:/^\d{4}$/,MM:/^\d{5}$/,NA:/^\d{5}$/,NP:/^\d{5}$/,NL:/^\d{4}\s{0,1}[A-Za-z]{2}$/,NC:/^988\d{2}$/,NZ:/^\d{4}$/,NI:/^\d{5}$/,NE:/^\d{4}$/,NG:/^\d{6}$/,NF:/^\d{4}$/,MP:/^\d{5}$/,NO:/^\d{4}$/,OM:/^\d{3}$/,PK:/^\d{5}$/,PW:/^\d{5}$/,PA:/^\d{6}$/,PG:/^\d{3}$/,PY:/^\d{4}$/,PE:/^\d{5}$/,PH:/^\d{4}$/,PN:/^[Pp][Cc][Rr][Nn]\s{0,1}[1][Zz]{2}$/,PL:/^\d{2}[- ]{0,1}\d{3}$/,PT:/^\d{4}$/,PR:/^\d{5}$/,RE:/^974\d{2}$/,RO:/^\d{6}$/,RU:/^\d{6}$/,BL:/^97133$/,SH:/^[Ss][Tt][Hh][Ll]\s{0,1}[1][Zz]{2}$/,MF:/^97150$/,PM:/^97500$/,VC:/^[Vv][Cc]\d{4}$/,SM:/^4789\d$/,SA:/^\d{5}(-{1}\d{4})?$/,SN:/^\d{5}$/,RS:/^\d{5}$/,SG:/^\d{2}$/,SK:/^\d{5}\s\(\d{3}\s\d{2}\)$/,SI:/^([Ss][Ii][- ]{0,1}){0,1}\d{4}$/,ZA:/^\d{4}$/,GS:/^[Ss][Ii][Qq]{2}\s{0,1}[1][Zz]{2}$/,ES:/^\d{5}$/,LK:/^\d{5}$/,SD:/^\d{5}$/,SZ:/^[A-Za-z]\d{3}$/,SE:/^\d{3}\s*\d{2}$/,CH:/^\d{4}$/,SJ:/^\d{4}$/,TW:/^\d{5}$/,TJ:/^\d{6}$/,TH:/^\d{5}$/,TT:/^\d{6}$/,TN:/^\d{4}$/,TR:/^\d{5}$/,TM:/^\d{6}$/,TC:/^[Tt][Kk][Cc][Aa]\s{0,1}[1][Zz]{2}$/,UA:/^\d{5}$/,GB:/^[A-Z]{1,2}[0-9R][0-9A-Z]?\s*[0-9][A-Z-[CIKMOV]]{2}/,US:/^\b\d{5}\b(?:[- ]{1}\d{4})?$/,UY:/^\d{5}$/,VI:/^\d{5}$/,UZ:/^\d{3} \d{3}$/,VA:/^120$/,VE:/^\d{4}(\s[a-zA-Z]{1})?$/,VN:/^\d{6}$/,WF:/^986\d{2}$/,ZM:/^\d{5}$/},fn=(t,e="")=>{let r=s.is_object(t)&&t.iso?ct[t.iso||"US"]:ct.US;return s.is_object(t)?t.rule===!0?!!e.match(r):!e.match(r):t===!0?!!e.match(r):!e.match(r)},ne=fn;var un=(t="",e="")=>(e?.match(t)||[])?.length>0,at=un;var mn=(t,e="",r={isChecked:!1})=>{if(!r.isChecked)return t===!0?e&&e.trim()!=="":e&&e.trim()==="";if(r.isChecked)return t===!0?e:!e},lt=mn;var _t=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,hn=(t,e="")=>t===!0?!!e.match(_t):!e.match(_t),oe=hn;var ft=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,pn=(t,e="")=>t===!0?!!e.match(ft):!e.match(ft),ut=pn;var mt=/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/,wn=(t,e="")=>t===!0?!!e.match(mt):!e.match(mt),ie=wn;var ht=/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/,$n=(t,e="")=>t===!0?!!e.match(ht):!e.match(ht),pt=$n;var wt={AT:/^(AT)(U\d{8}$)/i,BE:/^(BE)(\d{10}$)/i,BG:/^(BG)(\d{9,10}$)/i,CY:/^(CY)([0-5|9]\d{7}[A-Z]$)/i,CZ:/^(CZ)(\d{8,10})?$/i,DE:/^(DE)([1-9]\d{8}$)/i,DK:/^(DK)(\d{8}$)/i,EE:/^(EE)(10\d{7}$)/i,EL:/^(EL)(\d{9}$)/i,ES:/^(ES)([0-9A-Z][0-9]{7}[0-9A-Z]$)/i,EU:/^(EU)(\d{9}$)/i,FI:/^(FI)(\d{8}$)/i,FR:/^(FR)([0-9A-Z]{2}[0-9]{9}$)/i,GB:/^(GB)((?:[0-9]{12}|[0-9]{9}|(?:GD|HA)[0-9]{3})$)/i,GR:/^(GR)(\d{8,9}$)/i,HR:/^(HR)(\d{11}$)/i,HU:/^(HU)(\d{8}$)/i,IE:/^(IE)([0-9A-Z\*\+]{7}[A-Z]{1,2}$)/i,IT:/^(IT)(\d{11}$)/i,LV:/^(LV)(\d{11}$)/i,LT:/^(LT)(\d{9}$|\d{12}$)/i,LU:/^(LU)(\d{8}$)/i,MT:/^(MT)([1-9]\d{7}$)/i,NL:/^(NL)(\d{9}B\d{2}$)/i,NO:/^(NO)(\d{9}$)/i,PL:/^(PL)(\d{10}$)/i,PT:/^(PT)(\d{9}$)/i,RO:/^(RO)([1-9]\d{1,9}$)/i,RU:/^(RU)(\d{10}$|\d{12}$)/i,RS:/^(RS)(\d{9}$)/i,SI:/^(SI)([1-9]\d{7}$)/i,SK:/^(SK)([1-9]\d[(2-4)|(6-9)]\d{7}$)/i,SE:/^(SE)(\d{10}01$)/i},gn=(t,e="")=>{let r=s.is_object(t)&&t.iso?wt[t.iso||"EU"]:wt.EU;return s.is_object(t)?t.rule===!0?!!e.match(r):!e.match(r):t===!0?!!e.match(r):!e.match(r)},$t=gn;var yn={creditCard:ee,credit_card:ee,custom:tt,email:nt,equals:ot,matches:it,maxLength:te,max_length:te,minLength:re,min_length:re,phone:dt,postalCode:ne,postal_code:ne,regex:at,required:lt,semVer:oe,semver:oe,slug:ut,strongPassword:ie,strong_password:ie,url:pt,vat:$t},gt=yn;var se=class{constructor(e,r={}){this.fields_to_listen_to_for_changes=["checkbox","color","date","datetime-local","email","file","hidden","month","number","password","radio","range","search","tel","text","time","url","week"],this.default_validation_errors={credit_card:()=>"Must be a valid credit card number.",creditCard:()=>"Must be a valid credit card number.",custom:()=>"Must return true.",email:()=>"Must be a valid email.",equals:n=>`Value must equal ${n}.`,matches:n=>`Field must match ${n}.`,max_length:n=>`Field value can be no greater than ${n}.`,maxLength:n=>`Field value can be no greater than ${n}.`,min_length:n=>`Field value can be no less than ${n}.`,minLength:n=>`Field value can be no less than ${n}.`,phone:()=>"Field value must be a valid telephone number.",postal_code:()=>"Field value must be a valid postal code.",postalCode:()=>"Field value must be a valid postal code.",regex:()=>"Must match regex.",required:()=>"This field is required.",semver:()=>"Field value must be a valid semantic version.",semVer:()=>"Field value must be a valid semantic version.",slug:()=>"Field value must be a valid URL slug.",strong_password:()=>"Field value must be a valid password.",strongPassword:()=>"Field value must be a valid password.",url:()=>"Field value must be a valid URL.",vat:()=>"Field value must be a valid VAT code."},e||console.warn("[validate_form] Must pass an HTML <form></form> element to validate."),this.form=e,this.set_options(r),this.attach_event_listeners()}set_options(e={}){this.rules=e.rules||{},this.messages=e.messages||{},this.onSubmit=e.onSubmit,this.on_render_error=e.on_render_error||e.onRenderError,this.fields=this.serialize()}update_options(e={}){this.set_options(e)}serialize(){if(this.form)return Object.keys(this.rules).map(r=>{let n=this.form.querySelector(`[name="${r}"]`),o=n?.type;return{listen_for_changes:this.fields_to_listen_to_for_changes.includes(o),type:o,name:r,element:n,validations:Object.entries(this.rules[r]).map(([c,a])=>({name:c,rule:a,valid:!1})).sort((c,a)=>c.name>a.name?1:-1),errorMessages:this.messages[r]?Object.keys(this.messages[r]):{}}})?.filter(r=>!!r?.element)}attach_event_listeners(){if(this.form){let e=r=>{r.stopPropagation(),r.preventDefault(),this.validate()&&this.onSubmit&&this.onSubmit()};if(this.form.listeners?.length>0)for(let r=0;r<this.form.listeners.length;r+=1){let n=this.form.listeners[r];this.form.removeEventListener("submit",n)}this.form.addEventListener("submit",e),this.form.listeners=[...this.form.listeners||[],e]}for(let e=0;e<this?.fields?.length;e+=1){let r=this?.fields[e];if(r?.element&&r?.listen_for_changes){let n=()=>{Le(()=>{this.validate(r.name)},100)};r.element.removeEventListener("input",n),r.element.addEventListener("input",n),r.element.removeEventListener("change",n),r.element.addEventListener("change",n)}}}validate(e=null){if(e){let r=this.fields.find(n=>n.name===e);return this.clear_existing_error(e),this.validate_field(r),this.check_if_valid()}else{this.clear_existing_errors();for(let r=0;r<this.fields.length;r+=1){let n=this.fields[r];this.validate_field(n)}return this.check_if_valid()}}check_if_valid(){return!this.fields.map(r=>r.validations.some(n=>!n.valid)).includes(!0)}validate_field(e){let r=this.form.querySelector(`[name="${e.name}"]`),n=["checkbox","radio"].includes(e.type),o=n?null:e?.element?.value?.trim(),i=n?e?.element?.checked:null;for(let a=0;a<e.validations.length;a+=1){let d=e.validations[a];if(this.is_valid_value(n,n?i:o,d))this.mark_validation_as_valid(e,d.name);else{let _=this.messages[e.name]&&this.messages[e.name][d.name];this.mark_validation_as_invalid(e,d.name),this.render_error(e.element,_||this.default_validation_errors[d.name](d.rule,o))}}let c=e.validations.some(a=>!a.valid);return c&&(r.classList.add("error"),r.focus()),c||(r.classList.remove("error"),this.clear_existing_error(e.name)),!c}mark_validation_as_invalid(e,r){let o=[...e.validations].find(i=>i.name===r);o.valid=!1}mark_validation_as_valid(e,r){let o=[...e.validations].find(i=>i.name===r);o.valid=!0}is_valid_value(e,r,n){let o=gt[n.name];return o?o(n.rule,r,{is_checked:e}):!0}clear_existing_errors(){if(this.form){let e=this.form.querySelectorAll(".input-hint.error");for(let r=0;r<e?.length;r+=1){let n=e[r];n.parentNode.removeChild(n)}}}clear_existing_error(e=""){let r=document.getElementById(`error-${e}`);r&&r.parentNode.removeChild(r)}render_error(e,r=""){if(e){if(this.clear_existing_error(e.name),typeof this.on_render_error=="function")return this.on_render_error(e,r);let n=document.createElement("p");n.classList.add("input-hint"),n.classList.add("error"),n.setAttribute("id",`error-${e.name}`),n.innerText=r,e.after(n)}}},xn=(t,e)=>new Promise((r,n)=>{try{new se(t,e).validate()?r():n()}catch(o){console.warn(o)}}),de=xn;var bn=(t={},e={})=>{let r=s.is_function(t.websockets)&&t.websockets(e),n=s.is_object(r)&&Object.entries(r);for(let o=0;o<n?.length;o+=1){let[i,c]=n[o];L({component_instance:e,test:e?.test,url:`${window?.process?.env.NODE_ENV==="development"?"ws":"wss"}://${location.host}/api/_websockets/${i}`,options:c?.options||{},query:c?.query||{},events:c?.events||{}},(a={})=>{e.websockets={...e.websockets||{},[i]:a}})}},yt=bn;var vn=(t={},e={})=>{t.id=e?._componentId||null,t.css=e?.css,t.data=typeof window<"u"?Qe(t):{},t.defaultProps=W(t,e?.defaultProps||{}),t.default_props=W(t,e?.default_props||{}),t.dom={},t.DOMNode=null,t.events=e?.events,t.instance_id=m(8),t.lifecycle=e?.lifecycle||{},t.methods=Ie(t,e?.methods||{}),t.options=e,t.props=qe(e?.defaultProps||e?.default_props,e?.props||{}),t.state=P(t,e?.state||{}),t.test=e?.test,t.timers=[],t.translations=e?.translations||{},t.url=typeof window<"u"?Q(window.__joystick_url__):Q(e?.url),t.user=typeof window<"u"?window.__joystick_user__:e?.user,t.validateForm=de,t.validate_form=de,t.virtual_dom={},t.wrapper={},typeof window<"u"&&e?.websockets&&s.is_function(e?.websockets)&&yt(e,t)},xt=vn;var jn=(t={},e=null)=>{let r=typeof window<"u"?window.joystick._internal.tree:[];(e||r).push(t)},S=jn;var A=class{constructor(e,r){this.type=e,this.path=r?r.toString():""}},D=class extends A{constructor(e,r,n){super("E",e),this.original=r,this.current=n}},ce=class extends A{constructor(e,r,n,o){super("M",e),this.item=r,this.original_index=n,this.current_index=o}},C=class extends A{constructor(e,r){super("D",e),this.original=r}},R=class extends A{constructor(e,r){super("A",e),this.current=r}},b=(t,e)=>t?`${t}.${e}`:e,kn=(t,e,r={})=>{let n=[],o=r.match_key,i=r.types||["E","A","D","M"],c=(d,_,f,h)=>{d.forEach((p,l)=>{let w=_.findIndex(v=>v[h]===p[h]);w>-1?(i.indexOf("M")>-1&&l!==w&&n.push(new ce(f,p,l,w)),a(p,_[w],b(f,w))):i.indexOf("D")>-1&&n.push(new C(f,p))}),_.forEach((p,l)=>{let w=d.findIndex(v=>p[h]===v[h]);i.indexOf("A")>-1&&w===-1&&n.push(new R(b(f,l),p))})},a=(d,_,f)=>{let h=Object.prototype.toString.call(d),p=Object.prototype.toString.call(_);if(i.indexOf("E")>-1&&h!==p)return n.push(new D(f,d,_)),!1;if(h==="[object Object]")Object.getOwnPropertyNames(d).forEach(l=>{Object.prototype.hasOwnProperty.call(_,l)?a(d[l],_[l],b(f,l)):i.indexOf("D")>-1&&n.push(new C(b(f,l),d[l]))}),Object.getOwnPropertyNames(_).forEach(l=>{i.indexOf("A")>-1&&!Object.prototype.hasOwnProperty.call(d,l)&&n.push(new R(b(f,l),_[l]))});else if(h==="[object Array]")if(o)c(d,_,f,o);else{let l=d.length-1,w=_.length-1;if(i.indexOf("D")>-1)for(;l>w;)n.push(new C(b(f,l),d[l--]));if(i.indexOf("A")>-1)for(;w>l;)n.push(new R(b(f,w),_[w--]));for(;l>=0;--l)a(d[l],_[l],b(f,l))}else i.indexOf("E")>-1&&d!==_&&n.push(new D(f,d,_))};return a(t,e),n},bt=kn;var En=function(e={},r={}){let n=this,o=e({parent:n,props:r,translations:n?.translations,url:n?.url});o.parent=n;let i=n?.existing_children[o?.id],c=n?.new_children[o?.id],a=i&&i[c?.length||0],d=B(a);d?.state&&(o.state=d?.state),(s.is_function(o?.lifecycle?.onUpdateProps)||s.is_function(o?.lifecycle?.on_update_props))&&bt(d?.props,r)&&(o.lifecycle.onUpdateProps||o.lifecycle.on_update_props)(d?.props,r,o);let _={},f={},h=o.render_to_html(_,f),p=o.replace_when_tags(h),l=o.render_html_to_dom(p),w=o.render_dom_to_virtual_dom(l);return o.dom=l,o.DOMNode=l,o.virtual_dom=w,o.children=_,S(o),n.track_child(o),p},ae=En;var Sn=function(e={},r={}){let n=this,o=e({parent:n,props:r,translations:n?.translations,url:n?.url});return o.parent=n,S(o,this.ssr_tree),`{{${o.id}:${o.instance_id}}}`},vt=Sn;var An=function(e=[],r=null){return s.is_function(r)&&e&&s.is_array(e)?e.map((n,o)=>r(n,o)).join(""):""},le=An;var On=(t="",e=[])=>e.reduce((r,[n,o])=>r.replace(`{{${n}}}`,o),t),_e=(t="",e=[])=>{let r=typeof t=="string",n=Array.isArray(t),o=typeof t=="object"&&!n;if(r)return On(t,e);if(n)return t?.map(i=>_e(i,e));if(o)return Object.entries(t)?.reduce((i={},[c,a])=>(i[c]=_e(a,e),i),{})},Mn=(t="",e={})=>t?.split(".").reduce((r,n)=>r&&r[n]||"",e),Cn=function(t="",e={}){let r=typeof window<"u"?window.__joystick_i18n__:this.translations,o=t?.includes(".")?Mn(t,r):r[t];if(!r||!o)return"";let i=Object.entries(e);return _e(o,i)},fe=Cn;var Rn=function(e=!1,r=""){return s.is_function(r)?e?r():"<when> </when>":e?r.trim():"<when> </when>"},ue=Rn;var Tn={c:ae,component:ae,component_ssr:vt,e:le,each:le,i:fe,i18n:fe,w:ue,when:ue},me=Tn;var jt=(t={},e="",r={})=>{for(let n=0;n<t?.children?.length;n+=1){let o=t?.children[n];if(s.is_object(o)&&o.attributes&&o.attributes["js-i"]&&o.attributes["js-i"]===e){t.children[n]=r;break}s.is_object(o)&&jt(o,e,r)}},kt=jt;var he=class{constructor(e={}){this.set_interval=this.set_interval.bind(this),this.setInterval=this.setInterval.bind(this),this.set_timeout=this.set_timeout.bind(this),this.setTimeout=this.setTimeout.bind(this),xt(this,e)}cleanup_html(e="",r=null){let n=(typeof document>"u"?r:document).createElement("div");return n.innerHTML=e,n.innerHTML}compile_render_methods(e={},r={},n=null){return Object.entries(me).reduce((o,[i,c])=>{let a={...this||{}};if(i==="component"&&(a={...this||{},new_children:e,existing_children:r,ssr_tree:n?{push:d=>{n.push(d)}}:null,track_child:n?null:(d={})=>{let _=e[d?.id];_?_.push(d?.instance_id):e[d?.id]=[d?.instance_id]}}),i!=="component_ssr"){let d=i==="component"&&n?me.component_ssr:c;o[i]=d.bind(a)}return o},{})}async fetch_data(e={},r={},n={},o=this){if(o?.options?.data&&s.is_function(o.options.data)){let i=await o.options.data(e,r,n,o);return o.data=i,i}return null}render_child_dom_node_to_virtual_dom(e={}){return e.tagName==="WHEN"?[].flatMap.call(e?.childNodes||[],r=>r?.tagName==="WHEN"?this.render_child_dom_node_to_virtual_dom(r):this.render_dom_to_virtual_dom(r)):this.render_dom_to_virtual_dom(e)}parse_attributes(e={}){return Object.values(e).reduce((r={},n)=>(r[n.name]=n.value,r),{})}render_for_mount(){u(`ui.${this?.options?.test?.name||m()}.render_for_mount`,[]);let e={},r={},n=this.render_to_html(e,r),o=this.replace_when_tags(n),i=this.render_html_to_dom(o),c=this.render_dom_to_virtual_dom(i);return this.dom=i,this.DOMNode=i,this.virtual_dom=c,this.children=e,this.sync_children_to_parent(this.children,this.dom,this.virtual_dom),i}async render_for_ssr(e={},r={},n=[],o={}){return new Promise(async i=>{let c=await this.fetch_data(e,r,{},this),a={},d={},_=this.render_to_html(a,d,n,o?.linkedom_document),f={};for(let l=0;l<n?.length;l+=1){let w=n[l],v=await this.fetch_data(e,r,{},w),Ct=w.render_to_html(a,d,n,o?.linkedom_document);_=_.replace(`{{${w.id}:${w.instance_id}}}`,Ct),f[w?.id]=v}n.push(this);let h=this.replace_when_tags(_),p=$("css",{ssr_tree:n,is_email:o?.is_email||!1});i({html:h,css:p,data:{[this.id]:c,...f||{}}})})}render_html_to_dom(e=""){let r=document.createElement("template");return r.innerHTML=e,r?.content?.firstChild}replace_when_tags(e=""){return e}render_to_html(e={},r={},n=null,o={}){let i=this.compile_render_methods(e,r,n),c=this.options.render({...this||{},...i}),a=this.cleanup_html(c,o),d=this.sanitize_html(a);return this.wrap_html(d)}render_dom_to_virtual_dom(e={}){let r=e&&e.tagName&&e.tagName.toLowerCase()||"text";if(r==="text")return e.textContent;let n={tag_name:r,attributes:this.parse_attributes(e?.attributes),children:[].flatMap.call(e?.childNodes||[],c=>this.render_child_dom_node_to_virtual_dom(c))},o=e?.getAttribute("js-c"),i=e?.getAttribute("js-i");return o&&(n.component_id=o),i&&(n.instance_id=i),n}rerender(e={}){u(`ui.${this?.options?.test?.name||m()}.rerender`,[e]),$("lifecycle.onBeforeRender",{root_instance_id:this?.instance_id});let r={},n={...this.children||{}};this.children={},$("detach_event_listeners",{root_instance_id:this?.instance_id});let o=this.render_to_html(r,n),i=this.replace_when_tags(o),c=this.render_html_to_dom(i),a=this.render_dom_to_virtual_dom(c),d=G(this.virtual_dom,a);if(s.is_function(d)){let _=d(this.dom);this.dom=_,this.virtual_dom=a,this.children=r,this.sync_children_to_parent(this.children,this.dom,this.virtual_dom),this.DOMNode=_}$("attach_event_listeners",{root_instance_id:this?.instance_id}),$("lifecycle.onRender",{root_instance_id:this?.instance_id}),s.is_function(e?.after_set_state_rerender)&&e.after_set_state_rerender(),s.is_function(e?.after_refetch_data_rerender)&&e.after_refetch_data_rerender(),Te(),$("css")}sanitize_html(e=""){let r=e.match(M.JOYSTICK_COMMENT_REGEX)||[];for(let n=0;n<r?.length;n+=1)e=e.replace(r[n],"");return e}set_interval(e=null,r=0){return this.setInterval(e,r)}setInterval(e=null,r=0){u(`ui.${this?.options?.test?.name||m()}.set_interval`,[e,r]),e&&this.timers.push(window.setInterval(e,r))}set_state(e={},r=null){return this.setState(e,r)}setState(e={},r=null){u(`ui.${this?.options?.test?.name||m()}.set_state`,[e,r]),this.state=P(this,{...this.state||{},...e}),this.rerender({after_set_state_rerender:()=>{r&&s.is_function(r)&&r()}})}set_timeout(e=null,r=0){return this.setTimeout(e,r)}setTimeout(e=null,r=0){u(`ui.${this?.options?.test?.name||m()}.set_timeout`,[e,r]),e&&this.timers.push(window.setTimeout(e,r))}sync_children_to_parent(e={},r={},n={}){if(r){let o=E(e),i=U(o);for(let c=0;c<i?.length;c+=1){let a=i[c],d=r.querySelector(`[js-i="${a?.instance_id}"]`);a.dom=d,a.DOMNode=d,kt(n,a?.instance_id,a?.virtual_dom)}}}wrap_html(e=""){let r=(this.options?.wrapper?.tagName||this.options?.wrapper?.tag_name)?.toLowerCase()||"div",n=this.options?.wrapper?.id||null,o=(this.options?.wrapper?.classList||this.options?.wrapper?.class_list)?.join(" ")||"";return`<${r} ${n?`id="${n}"`:""} ${o?`class="${o}"`:""} js-c="${this.id}" js-i="${this.instance_id}">${e}</${r}>`}},Et=he;var Ln=(t={})=>{try{return(e={})=>new Et({...t,...e})}catch(e){Ce("component",e)}},St=Ln;var Nn=()=>typeof window<"u"?window.__joystick_environment__:typeof process<"u"?"production":null,At=Nn;var Pn=(t={},e={})=>{e.replaceChildren(),e.appendChild(t)},Zn=(t,e={},r={})=>{u("ui.mount",[t,e,r]),$("reset_tree_for_hmr");let n=t({props:e}),o=n.render_for_mount();return S(n),$("lifecycle.onBeforeMount",{root_instance_id:n?.instance_id}),$("lifecycle.onBeforeRender",{root_instance_id:n?.instance_id}),$("css",{is_mount:!0}),Pn(o,r),$("attach_event_listeners",{root_instance_id:n?.instance_id}),$("lifecycle.onMount",{root_instance_id:n?.instance_id}),$("lifecycle.onRender",{root_instance_id:n?.instance_id}),window.addEventListener("beforeunload",()=>{$("lifecycle.onBeforeUnmount",{root_instance_id:n?.instance_id})}),n},Ot=Zn;var F=At(),zn=xe,In=J,qn={get:ve,track:ke},Gn=O.get,Un=J("app",{}),Bn=O.set,Dn=je,Fn=Ae,Mt={_external:{},_internal:{tree:[]},accounts:zn,cache:In,component:St,env:{development:F==="development",staging:F==="staging",production:F==="production",test:F==="test"},external:qn,get:Gn,global_state:Un,id:m,mount:Ot,set:Bn,test:Dn,upload:Fn};Re(Mt);var jc=Mt;export{zn as accounts,In as cache,jc as default,qn as external,Gn as get,Un as global_state,Bn as set,Dn as test,Fn as upload};
@@ -0,0 +1,3 @@
1
+ import child_process from 'child_process';
2
+
3
+ child_process.execSync(`npm version prerelease --preid=canary`);
package/index.html ADDED
@@ -0,0 +1,7 @@
1
+ <html>
2
+ <body>
3
+ <div id="app"></div>
4
+ <script type="module" src="dist/index.js"></script>
5
+ <script type="module" src="test.js"></script>
6
+ </body>
7
+ </html>
package/package.json CHANGED
@@ -1,25 +1,21 @@
1
1
  {
2
2
  "name": "@joystick.js/ui-canary",
3
3
  "type": "module",
4
- "version": "0.0.0-canary.28",
5
- "description": "A JavaScript framework for building user interfaces.",
4
+ "version": "0.0.0-canary.281",
5
+ "description": "The UI framework for Joystick.",
6
6
  "main": "./dist/index.js",
7
7
  "scripts": {
8
- "build": "node .build/index.js",
9
- "canary:release": "export NODE_ENV=development && npm run build && node canary.js",
10
- "production:release": "export NODE_ENV=production && npm run build && node release.js",
11
- "win:development:release": "SET NODE_ENV=development&& npm run build && node release.js",
8
+ "build": "node build.js",
9
+ "release": "node increment_version.js && npm run build && npm publish",
12
10
  "test": "echo \"Error: no test specified\" && exit 1"
13
11
  },
14
12
  "keywords": [],
15
13
  "author": "",
16
- "license": "SAUCR",
17
- "dependencies": {
18
- "lodash": "^4.17.21",
19
- "nested-object-diff": "^1.1.0"
20
- },
14
+ "license": "ISC",
21
15
  "devDependencies": {
22
- "esbuild": "^0.13.15",
23
- "semver": "^7.3.5"
16
+ "esbuild": "^0.19.8"
17
+ },
18
+ "dependencies": {
19
+ "linkedom": "^0.16.6"
24
20
  }
25
21
  }
@@ -0,0 +1,8 @@
1
+ import request from "./request.js";
2
+
3
+ const authenticated = async (options = {}) => {
4
+ const response = await request("authenticated", options);
5
+ return response?.status === 200 && response?.authenticated;
6
+ };
7
+
8
+ export default authenticated;
@@ -0,0 +1,21 @@
1
+ import authenticated from './authenticated.js';
2
+ import login from "./login.js";
3
+ import logout from "./logout.js";
4
+ import recover_password from "./recover_password.js";
5
+ import reset_password from "./reset_password.js";
6
+ import signup from "./signup.js";
7
+ import user from './user.js';
8
+
9
+ const accounts = {
10
+ authenticated,
11
+ login,
12
+ logout,
13
+ recoverPassword: recover_password,
14
+ recover_password,
15
+ resetPassword: reset_password,
16
+ reset_password,
17
+ signup,
18
+ user,
19
+ };
20
+
21
+ export default accounts;
@@ -0,0 +1,7 @@
1
+ import request from "./request.js";
2
+
3
+ const login = (options = {}) => {
4
+ return request("login", options);
5
+ };
6
+
7
+ export default login;
@@ -0,0 +1,8 @@
1
+ import request from "./request.js";
2
+
3
+ const logout = () => {
4
+ return request("logout");
5
+ };
6
+
7
+ export default logout;
8
+
@@ -0,0 +1,7 @@
1
+ import request from "./request.js";
2
+
3
+ const recover_password = (options = {}) => {
4
+ return request("recover-password", options);
5
+ };
6
+
7
+ export default recover_password;
@@ -0,0 +1,70 @@
1
+ import log_request_errors from "../lib/log_request_errors.js";
2
+ import parse_json from "../lib/parse_json.js";
3
+
4
+ const handle_parse_response = async (response = {}) => {
5
+ // NOTE: Parse as text and then pass to parse_json so Joystick can explicitly handle
6
+ // invalid JSON errors.
7
+ const response_as_text = await response.text();
8
+ const data_from_response = parse_json(response_as_text);
9
+ return data_from_response;
10
+ };
11
+
12
+ const get_body = (http_method = 'GET', endpoint_options = {}) => {
13
+ const requests_with_body = ['POST'];
14
+
15
+ if (requests_with_body.includes(http_method)) {
16
+ return JSON.stringify({
17
+ ...endpoint_options,
18
+ origin: window?.location?.origin,
19
+ });
20
+ }
21
+
22
+ return null;
23
+ };
24
+
25
+ const get_http_method = (endpoint = null) => {
26
+ switch(endpoint) {
27
+ case 'authenticated':
28
+ return 'GET';
29
+ case 'user':
30
+ default:
31
+ return 'POST';
32
+ }
33
+ };
34
+
35
+ const request = (endpoint = "", endpoint_options = {}) => {
36
+ if (typeof window.fetch !== 'undefined') {
37
+ // NOTE: Wrap fetch() with another Promise so we can control routing of errors
38
+ // received in the response (by default they don't go to catch() which is where
39
+ // accounts methods should return errors).
40
+ return new Promise((resolve, reject) => {
41
+ const url = `${window.location.origin}/api/_accounts/${endpoint}`;
42
+ const http_method = get_http_method(endpoint);
43
+ const body = get_body(http_method, endpoint_options);
44
+
45
+ return fetch(url, {
46
+ method: http_method,
47
+ mode: "cors",
48
+ headers: {
49
+ "Content-Type": "application/json",
50
+ },
51
+ body,
52
+ credentials: "include",
53
+ }).then(async (response) => {
54
+ const data_from_response = await handle_parse_response(response);
55
+
56
+ if (data_from_response?.errors) {
57
+ log_request_errors(`accounts.${endpoint}`, data_from_response.errors);
58
+ return reject(data_from_response);
59
+ }
60
+
61
+ return resolve(data_from_response);
62
+ }).catch((error) => {
63
+ log_request_errors(`accounts.${endpoint}`, [error]);
64
+ return reject({ errors: [error] });
65
+ });
66
+ });
67
+ }
68
+ };
69
+
70
+ export default request;
@@ -0,0 +1,7 @@
1
+ import request from "./request.js";
2
+
3
+ const reset_password = (options = {}) => {
4
+ return request("reset-password", options);
5
+ };
6
+
7
+ export default reset_password;
@@ -0,0 +1,7 @@
1
+ import request from "./request.js";
2
+
3
+ const signup = (options = {}) => {
4
+ return request("signup", options);
5
+ };
6
+
7
+ export default signup;
@@ -0,0 +1,8 @@
1
+ import request from "./request.js";
2
+
3
+ const user = async (options = {}) => {
4
+ const response = await request("user", options);
5
+ return response?.status === 200 && response?.user;
6
+ };
7
+
8
+ export default user;
package/src/api/get.js ADDED
@@ -0,0 +1,73 @@
1
+ import generate_cookie_header from "../lib/generate_cookie_header.js";
2
+ import log_request_errors from "../lib/log_request_errors.js";
3
+ import parse_json from "../lib/parse_json.js";
4
+
5
+ const handle_parse_response = async (response = {}) => {
6
+ // NOTE: Parse as text and then pass to parse_json so Joystick can explicitly handle
7
+ // invalid JSON errors.
8
+ const response_as_text = await response.text();
9
+ const data_from_response = parse_json(response_as_text);
10
+ return data_from_response;
11
+ };
12
+
13
+ const get = (getter_name = "", getter_options = {}) => {
14
+ if (typeof window.fetch !== 'undefined' && !getter_options?.skip) {
15
+ // NOTE: Wrap fetch() with another Promise so we can control routing of errors
16
+ // received in the response (by default they don't go to catch() which is where
17
+ // get() should return errors).
18
+ return new Promise((resolve, reject) => {
19
+ const input = getter_options.input ? JSON.stringify(getter_options.input) : null;
20
+ const output = getter_options.output ? JSON.stringify(getter_options.output) : null;
21
+ const url = `${window.location.origin}/api/_getters/${getter_name}?input=${encodeURIComponent(input)}&output=${encodeURIComponent(output)}`;
22
+ const csrf = document.querySelector('[name="csrf"]')?.getAttribute('content');
23
+
24
+ const headers = {
25
+ ...(getter_options?.headers || {}),
26
+ 'x-joystick-csrf': csrf,
27
+ };
28
+
29
+ if (window?.__joystick_test__) {
30
+ headers.Cookie = generate_cookie_header({
31
+ joystick_login_token: window.__joystick_test_login_token__,
32
+ joystick_login_token_expires_at: window.__joystick_test_login_token_expires_at__,
33
+ });
34
+ }
35
+
36
+ if (getter_options?.loader?.instance) {
37
+ getter_options?.loader?.instance?.setState({ [getter_options?.loader?.state || `${getter_name}_loading`]: true });
38
+ }
39
+
40
+ return fetch(url, {
41
+ method: 'GET',
42
+ mode: "cors",
43
+ headers,
44
+ credentials: "include",
45
+ }).then(async (response) => {
46
+ const data_from_response = await handle_parse_response(response);
47
+
48
+ if (getter_options?.loader?.instance) {
49
+ getter_options?.loader?.instance?.setState({ [getter_options?.loader?.state || `${getter_name}_loading`]: false });
50
+ }
51
+
52
+ if (data_from_response?.errors) {
53
+ log_request_errors(`Get request`, data_from_response.errors);
54
+ return reject(data_from_response);
55
+ }
56
+
57
+ return resolve(data_from_response);
58
+ }).catch((error) => {
59
+ log_request_errors(`Get request`, [error]);
60
+
61
+ if (getter_options?.loader?.instance) {
62
+ getter_options?.loader?.instance?.setState({ [getter_options?.loader?.state || `${getter_name}_loading`]: false });
63
+ }
64
+
65
+ return reject({ errors: [error] });
66
+ });
67
+ });
68
+ }
69
+
70
+ return Promise.resolve();
71
+ };
72
+
73
+ export default get;
@@ -0,0 +1,10 @@
1
+ import get from "./get.js";
2
+ import set from "./set.js";
3
+
4
+ const api = {
5
+ fetch: typeof window !== 'undefined' ? window.fetch.bind(window) : null,
6
+ get,
7
+ set,
8
+ };
9
+
10
+ export default api;