{"version":3,"sources":["node_modules/@stencil/store/dist/index.mjs","src/components/sy-site-auth/store/store.ts"],"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","clearTimeout","setTimeout","isConnected","maybeElement","cleanupElements","key","keys","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","unwrap","val","createObservableMap","defaultState","shouldUpdate","a","b","unwrappedState","states","Object","entries","handlers","_a","cb","oldValue","state","Proxy","[object Object]","_","Array","from","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","length","createStore","authStore","error","isAuthenticated","isLoading","window","user","reducer","_state","action","type","dispatch","getAuthState"],"mappings":"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","sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n var _a;\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(unwrappedState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n // We need to unwrap the defaultState because it might be a function.\n // Otherwise we might not be sending the right reset value.\n const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { createStore } from \"@stencil/store\";\nimport { Getter } from \"@stencil/store/dist/types\";\n\nexport type User = {\n photo?: {\n _id: string,\n name: string\n },\n code: string,\n _class: { _id: string }\n login: string,\n name: string,\n token: string,\n exp: number,\n} | null;\nexport interface IAuthState {\n error?: Error;\n isAuthenticated: boolean;\n isLoading: boolean;\n user?: User;\n};\n\nconst authStore = createStore({\n error: null,\n isAuthenticated: false,\n isLoading: typeof window !== 'undefined',\n user: null\n});\n\nexport const reducer = (_state: IAuthState, action: { type: string, [k: string]: any }): void => {\n switch (action.type) {\n case \"INITIALISED\": {\n authStore.state.isLoading = true;\n authStore.state.isAuthenticated = false;\n break;\n };\n\n case \"COMPLETE\": {\n authStore.state.isLoading = false;\n authStore.state.isAuthenticated = !!(action.user);\n authStore.state.user = action.user;\n break;\n };\n\n case \"ERROR\": {\n authStore.state.isLoading = false;\n authStore.state.isAuthenticated = false;\n authStore.state.error = action.error;\n break;\n };\n\n case \"LOGOUT\": {\n authStore.state.isLoading = false;\n authStore.state.isAuthenticated = false;\n authStore.state.user = null;\n authStore.state.error = null;\n break;\n };\n }\n};\n\nexport const dispatch = (action: {\n type: string\n} & Partial) => {\n reducer(authStore.state, action);;\n};\n\nexport const getAuthState: Getter = authStore.get;\n\n"]}