@optionfactory/ful 0.77.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ful.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ful.mjs","sources":["../src/encodings.mjs","../src/http-client.mjs","../src/storage.mjs","../src/oauth-authorization-code.mjs","../src/timing.mjs","../src/deferred.mjs","../src/elements/elements.mjs","../src/elements/form.mjs","../src/elements/input.mjs","../src/elements/select.mjs","../src/elements/radio.mjs","../src/elements/spinner.mjs"],"sourcesContent":["\n\nclass Base64 {\n static encode(arrayBuffer, dialect) {\n const d = dialect || Base64.URL_SAFE;\n const len = arrayBuffer.byteLength;\n const view = new Uint8Array(arrayBuffer);\n let res = '';\n for (let i = 0; i < len; i += 3) {\n const v1 = d[view[i] >> 2];\n const v2 = d[((view[i] & 3) << 4) | (view[i + 1] >> 4)];\n const v3 = d[((view[i + 1] & 15) << 2) | (view[i + 2] >> 6)];\n const v4 = d[view[i + 2] & 63];\n res += v1 + v2 + v3 + v4;\n }\n if (len % 3 === 2) {\n res = res.substring(0, res.length - 1);\n } else if (len % 3 === 1) {\n res = res.substring(0, res.length - 2);\n }\n return res;\n }\n static decode(str, dialect) {\n const d = dialect || Base64.URL_SAFE;\n let nbytes = Math.floor(str.length * 0.75);\n for (let i = 0; i !== str.length; ++i) {\n if (str[str.length - i - 1] !== '=') {\n break;\n }\n --nbytes;\n }\n const view = new Uint8Array(nbytes);\n\n let vi = 0;\n let si = 0;\n while (vi < str.length * 0.75) {\n const v1 = d.indexOf(str.charAt(si++));\n const v2 = d.indexOf(str.charAt(si++));\n const v3 = d.indexOf(str.charAt(si++));\n const v4 = d.indexOf(str.charAt(si++));\n view[vi++] = (v1 << 2) | (v2 >> 4);\n view[vi++] = ((v2 & 15) << 4) | (v3 >> 2);\n view[vi++] = ((v3 & 3) << 6) | v4;\n }\n\n return view.buffer;\n }\n}\n\nBase64.STANDARD = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nBase64.URL_SAFE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n\nclass Hex {\n static decode(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(\"invalid length\");\n }\n const lenInBytes = hex.length / 2;\n return new Uint8Array(lenInBytes).map((e, i) => {\n const offset = i * 2;\n const octet = hex.substring(offset, offset + 2);\n return parseInt(octet, 16);\n });\n }\n static encode(bytes, upper) {\n return Array.from(bytes)\n .map(b => b.toString(16))\n .map(b => upper ? b.toUpperCase() : b)\n .map(o => o.padStart(2, 0))\n .join('');\n }\n}\n\nexport { Base64, Hex };","class ContextInterceptor {\n constructor() {\n const context = document.querySelector(\"meta[name='context']\").getAttribute(\"content\");\n this.context = context.endsWith(\"/\") ? context.substring(0, context.length - 1) : context;\n }\n async intercept(request, chain){\n const separator = request.resource.startsWith(\"/\") ? \"\" : \"/\";\n request.resource = this.context + separator + request.resource;\n return await chain.proceed(request);\n }\n}\n\nclass CsrfTokenInterceptor {\n constructor() {\n this.k = document.querySelector(\"meta[name='_csrf_header']\").getAttribute(\"content\");\n this.v = document.querySelector(\"meta[name='_csrf']\").getAttribute(\"content\");\n }\n async intercept(request, chain){\n const headers = new Headers(request.options.headers);\n headers.set(this.k, this.v);\n request.options.headers = headers;\n return await chain.proceed(request);\n }\n}\n\nclass RedirectOnUnauthorizedInterceptor {\n constructor(redirectUri) {\n this.redirectUri = redirectUri;\n }\n async intercept(request, chain){\n const response = await chain.proceed(request);\n if (response.status !== 401) {\n return response;\n }\n window.location.href = this.redirectUri;\n }\n}\n\nclass Failure extends Error {\n static parseProblems(status, text) {\n const def = [{\n type: \"GENERIC_PROBLEM\",\n context: null,\n reason: `${status}: ${text}`,\n details: null\n }];\n try {\n return text ? JSON.parse(text) : def;\n } catch (e) {\n return def;\n }\n }\n static fromResponse(status, text) {\n return new Failure(status, Failure.parseProblems(status, text));\n }\n constructor(status, problems) {\n super(JSON.stringify(problems));\n this.name = `Failure:${status}`;\n this.status = status;\n this.problems = problems;\n }\n}\n\nclass HttpClientBuilder {\n constructor() {\n this.interceptors = [];\n }\n withContext() {\n this.interceptors.push(new ContextInterceptor());\n return this;\n }\n withCsrfToken() {\n this.interceptors.push(new CsrfTokenInterceptor());\n return this;\n }\n withRedirectOnUnauthorized(redirectUri) {\n this.interceptors.push(new RedirectOnUnauthorizedInterceptor(redirectUri));\n return this;\n }\n withInterceptors(...interceptors) {\n this.interceptors.push(...interceptors);\n return this;\n }\n build() {\n const interceptors = this.interceptors;\n return new HttpClient({interceptors});\n }\n}\n\nclass HttpCall {\n async intercept(request, chain){\n return await fetch(request.resource, request.options);\n } \n}\n\nclass HttpInterceptorChain {\n constructor(interceptors, current){\n this.interceptors = interceptors;\n this.current = current;\n }\n async proceed(request){\n const interceptor = this.interceptors[this.current];\n return await interceptor.intercept(request, new HttpInterceptorChain(this.interceptors, this.current + 1));\n }\n}\n\n\nclass HttpClient {\n static builder() {\n return new HttpClientBuilder();\n }\n constructor({interceptors}){\n this.interceptors = interceptors || [];\n }\n async exchange(resource, options) {\n const opts = options || {};\n const interceptors = [...this.interceptors, ...opts.interceptors || [], new HttpCall()];\n const chain = new HttpInterceptorChain(interceptors, 0);\n return await chain.proceed({resource, options: opts});\n }\n async fetch(resource, options) {\n const response = await this.exchange(resource, options);\n if (!response.ok) {\n const message = await response.text();\n throw Failure.fromResponse(response.status, message);\n } \n return response;\n }\n async json(resource, options) {\n try {\n const response = await this.fetch(resource, options);\n const text = await response.text();\n return text ? JSON.parse(text) : undefined;\n } catch (e) {\n if (e instanceof Failure) {\n throw e;\n }\n throw new Failure(0, [{\n type: \"CONNECTION_PROBLEM\",\n context: null,\n reason: e.message,\n details: null\n }]);\n }\n }\n}\n\nfunction jsonRequest(method, body, headers){\n return {\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n method: method,\n body: JSON.stringify(body) \n }\n}\nfunction jsonPost(body, headers){\n return jsonRequest('POST', body, headers);\n}\nfunction jsonPut(body, headers){\n return jsonRequest('PUT', body, headers);\n}\nfunction jsonPatch(body, headers){\n return jsonRequest('PATCH', body, headers);\n}\n\n\nexport { HttpClient, Failure, jsonRequest, jsonPost, jsonPut, jsonPatch };\n","\nclass Storage {\n constructor(prefix, storage) {\n this.prefix = prefix;\n this.storage = storage;\n }\n save(k, v) {\n this.storage.setItem(`${this.prefix}-${k}`, JSON.stringify(v));\n }\n load(k) {\n const got = this.storage.getItem(`${this.prefix}-${k}`);\n return got === undefined ? undefined : JSON.parse(got);\n }\n remove(k) {\n this.storage.removeItem(`${this.prefix}-${k}`);\n }\n pop(k) {\n const decoded = this.load(k);\n this.remove(k);\n return decoded;\n }\n}\n\nclass LocalStorage extends Storage {\n constructor(prefix) {\n super(prefix, localStorage);\n }\n}\n\nclass SessionStorage extends Storage {\n constructor(prefix) {\n super(prefix, sessionStorage);\n }\n}\n\nclass VersionedStorage {\n constructor(storage, key, dataSupplier){\n this.storage = storage;\n this.key = key;\n this.dataSupplier = dataSupplier;\n this.cache = null;\n \n }\n async load(revision){\n const saved = this.storage.load(this.key);\n if (!!saved && saved.revision === revision) {\n this.cache = saved.value;\n return;\n }\n const freshData = await this.dataSupplier(revision, this.key);\n this.storage.save(this.key, {\n revision: revision,\n value: freshData\n });\n this.cache = freshData;\n }\n data(){\n return this.cache;\n }\n}\n\n\n\nexport {LocalStorage, SessionStorage, VersionedStorage};","import { Base64 } from \"./encodings.mjs\";\nimport { SessionStorage } from \"./storage.mjs\";\n\n\nclass AuthorizationCodeFlow {\n static forKeycloak(clientId, realmBaseUrl, redirectUri){\n const scope = \"openid profile\";\n return new AuthorizationCodeFlow(clientId, scope, {\n auth: new URL(\"protocol/openid-connect/auth\", realmBaseUrl),\n token: new URL(\"protocol/openid-connect/token\", realmBaseUrl),\n logout: new URL(\"protocol/openid-connect/logout\", realmBaseUrl),\n registration: new URL(\"protocol/openid-connect/registrations\", realmBaseUrl),\n redirect: redirectUri\n }); \n }\n constructor(clientId, scope, {auth, token, registration, logout, redirect}) {\n this.storage = new SessionStorage(clientId);\n this.clientId = clientId;\n this.scope = scope;\n this.uri = {auth, token, registration, logout, redirect};\n }\n async action(uri, additionalParams){\n const pkceVerifier = Base64.encode(crypto.getRandomValues(new Uint8Array(32)).buffer);\n const pkceChallenge = Base64.encode(await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(pkceVerifier)));\n const state = this.clientId + Base64.encode(crypto.getRandomValues(new Uint8Array(16)).buffer);\n this.storage.save(AuthorizationCodeFlow.PKCE_AND_STATE_KEY, {\n state: state,\n verifier: pkceVerifier\n });\n const url = new URL(uri);\n url.searchParams.set(\"client_id\", this.clientId);\n url.searchParams.set(\"redirect_uri\", this.uri.redirect);\n url.searchParams.set(\"response_type\", 'code');\n url.searchParams.set(\"scope\", this.scope);\n url.searchParams.set(\"state\", state);\n url.searchParams.set(\"code_challenge\", pkceChallenge);\n url.searchParams.set(\"code_challenge_method\", 'S256');\n Object.entries(additionalParams || {}).forEach(kv => {\n url.searchParams.set(kv[0], kv[1]);\n });\n window.location = url;\n }\n async registration(additionalParams){\n await this.action(this.uri.registration, additionalParams);\n }\n async applicationInitiatedAction(kcAction){\n await this.action(this.uri.auth, {\n kc_action: kcAction\n });\n }\n async _tokenExchange(code, state) {\n window.history.replaceState('', \"\", this.uri.redirect);\n const stateAndVerifier = this.storage.pop(AuthorizationCodeFlow.PKCE_AND_STATE_KEY);\n if (stateAndVerifier.state !== state) {\n throw new Error(\"State mismatch\");\n }\n const response = await fetch(this.uri.token, {\n method: \"POST\",\n headers: {\n \"Content-Type\": 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams([\n [\"client_id\", this.clientId],\n [\"code\", code],\n [\"grant_type\", \"authorization_code\"],\n [\"code_verifier\", stateAndVerifier.verifier],\n [\"state\", stateAndVerifier.state],\n [\"redirect_uri\", this.uri.redirect]\n ])\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(\"Error:\" + response.status + \": \" + text);\n }\n const token = await response.json();\n return new AuthorizationCodeFlowSession(this.clientId, token, this.uri);\n }\n async ensureLoggedIn() {\n const url = new URL(window.location.href);\n const code = url.searchParams.get(\"code\");\n if (code && this.storage.load(AuthorizationCodeFlow.PKCE_AND_STATE_KEY)) {\n //if callback from keycloak and we have our state still stored\n const state = url.searchParams.get(\"state\");\n return await this._tokenExchange(code, state);\n }\n //if not authorized\n await this.action(this.uri.auth, {});\n return null;\n }\n}\nAuthorizationCodeFlow.PKCE_AND_STATE_KEY = \"state-and-verifier\";\n\nclass AuthorizationCodeFlowSession {\n static parseToken(token) {\n const [rawHeader, rawPayload, signature] = token.split(\".\");\n const ut8decoder = new TextDecoder(\"utf-8\");\n return {\n header: JSON.parse(ut8decoder.decode(Base64.decode(rawHeader, Base64.STANDARD))),\n payload: JSON.parse(ut8decoder.decode(Base64.decode(rawPayload, Base64.STANDARD))),\n signature: signature\n };\n } \n constructor(clientId, t, {token, logout, redirect}) {\n this.clientId = clientId;\n this.token = t;\n this.accessToken = AuthorizationCodeFlowSession.parseToken(t.access_token);\n this.refreshToken = AuthorizationCodeFlowSession.parseToken(t.refresh_token);\n this.uri = { token, logout, redirect }\n this.refreshCallback = null;\n }\n onRefresh(callback) {\n this.refreshCallback = callback;\n }\n async refresh() {\n const response = await fetch(this.uri.token, {\n method: \"POST\",\n headers: {\n \"Content-Type\": 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams([\n [\"client_id\", this.clientId],\n [\"grant_type\", \"refresh_token\"],\n [\"refresh_token\", this.token.refresh_token]\n ])\n });\n if (!response.ok) {\n throw new Error(\"Error:\" + response.status + \": \" + response.text());\n }\n const token = await response.json();\n this.token = token;\n this.accessToken = AuthorizationCodeFlowSession.parseToken(token.access_token);\n this.refreshToken = AuthorizationCodeFlowSession.parseToken(token.refresh_token);\n if (this.refreshCallback) {\n this.refreshCallback(this.token, this.accessToken, this.refreshToken);\n }\n }\n shouldBeRefreshed(gracePeriod) {\n const now = new Date().getTime();\n const refreshTokenExpiresAt = this.refreshToken.payload.exp * 1000;\n const expired = now > refreshTokenExpiresAt;\n const shouldRefresh = now - gracePeriod > refreshTokenExpiresAt;\n return !expired && shouldRefresh;\n }\n async refreshIf(gracePeriod) {\n if (!this.shouldBeRefreshed(gracePeriod)) {\n return;\n }\n await this.refresh();\n }\n logout() {\n const url = new URL(this.uri.logout);\n url.searchParams.set(\"post_logout_redirect_uri\", this.uri.redirect);\n url.searchParams.set(\"id_token_hint\", this.token.id_token);\n window.location = url;\n }\n\n bearerToken() {\n return `Bearer ${this.token.access_token}`;\n }\n \n interceptor(gracePeriodBefore, gracePeriodAfter){\n return new AuthorizationCodeFlowInterceptor(this, gracePeriodBefore, gracePeriodAfter); \n }\n}\n\nclass AuthorizationCodeFlowInterceptor {\n constructor(session, gracePeriodBefore, gracePeriodAfter) {\n this.session = session;\n this.gracePeriodBefore = gracePeriodBefore || 2000;\n this.gracePeriodAfter = gracePeriodAfter || 30000;\n }\n async intercept(request, chain) {\n await this.session.refreshIf(this.gracePeriodBefore);\n const headers = new Headers(request.options.headers);\n headers.set(\"Authorization\", this.session.bearerToken());\n request.options.headers = headers;\n const response = await chain.proceed(request);\n await this.session.refreshIf(this.gracePeriodAfter);\n return response;\n }\n}\n\n\nexport {AuthorizationCodeFlow, AuthorizationCodeFlowSession, AuthorizationCodeFlowInterceptor };","\nconst timing = {\n sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n },\n DEBOUNCE_DEFAULT: 0,\n DEBOUNCE_IMMEDIATE: 1,\n debounce(timeoutMs, func, options) {\n let tid = null;\n let args = [];\n let previousTimestamp = 0;\n let opts = options || timing.DEBOUNCE_DEFAULT;\n\n const later = () => {\n const elapsed = new Date().getTime() - previousTimestamp;\n if (timeoutMs > elapsed) {\n tid = setTimeout(later, timeoutMs - elapsed);\n return;\n }\n tid = null;\n if (opts !== timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n // This check is needed because `func` can recursively invoke `debounced`.\n if (tid === null) {\n args = [];\n }\n };\n\n return function () {\n args = arguments;\n previousTimestamp = new Date().getTime();\n if (tid === null) {\n tid = setTimeout(later, timeoutMs);\n if (opts === timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n }\n };\n },\n THROTTLE_DEFAULT: 0,\n THROTTLE_NO_LEADING: 1,\n THROTTLE_NO_TRAILING: 2,\n throttle(timeoutMs, func, options) {\n let tid = null;\n let args = [];\n let previousTimestamp = 0;\n let opts = options || timing.THROTTLE_DEFAULT;\n\n const later = () => {\n previousTimestamp = (opts & timing.THROTTLE_NO_LEADING) ? 0 : new Date().getTime();\n tid = null;\n func(...args);\n if (tid === null) {\n args = [];\n }\n };\n\n return function () {\n const now = new Date().getTime();\n if (!previousTimestamp && (opts & timing.THROTTLE_NO_LEADING)) {\n previousTimestamp = now;\n }\n const remaining = timeoutMs - (now - previousTimestamp);\n args = arguments;\n if (remaining <= 0 || remaining > timeoutMs) {\n if (tid !== null) {\n clearTimeout(tid);\n tid = null;\n }\n previousTimestamp = now;\n func(...args);\n if (tid === null) {\n args = [];\n }\n } else if (tid === null && !(opts & timing.THROTTLE_NO_TRAILING)) {\n tid = setTimeout(later, remaining);\n }\n };\n\n }\n};\n\n\nexport { timing };","class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n\n\nexport { Deferred }","class Fragments {\n /**\n * \n * @param {...string} html \n * @returns \n */\n static fromHtml(...html) {\n const el = document.createElement(\"template\");\n el.innerHTML = html.join(\"\");\n return el.content;\n }\n /**\n * \n * @param {DocumentFragment} fragment \n * @returns \n */\n static toHtml(fragment) {\n var el = document.createElement(\"template\");\n el.content.appendChild(fragment);\n return el.innerHTML;\n }\n /**\n * \n * @param {...Node} nodes \n * @returns \n */\n static from(...nodes) {\n const fragment = new DocumentFragment();\n fragment.append(...nodes);\n return fragment;\n }\n /**\n * \n * @param {HTMLElement} el \n * @returns \n */\n static fromChildNodes(el) {\n const fragment = new DocumentFragment();\n fragment.append(...el.childNodes);\n return fragment;\n }\n}\n\nclass Attributes {\n static id = 0;\n /**\n * \n * @param {string} prefix \n * @returns \n */\n static uid(prefix) {\n return `${prefix}-${++Attributes.id}`;\n }\n /**\n * \n * @param {HTMLElement} el \n * @param {string} k \n * @param {string} v \n * @returns \n */\n static defaultValue(el, k, v) {\n if (!el.hasAttribute(k)) {\n el.setAttribute(k, v);\n }\n return el.getAttribute(k);\n }\n /**\n * \n * @param {string} prefix \n * @param {HTMLElement} from \n * @param {HTMLElement} to \n */\n static forward(prefix, from, to) {\n from.getAttributeNames()\n .filter(a => a.startsWith(prefix))\n .forEach(a => {\n const target = a.substring(prefix.length);\n if (target === 'class') {\n to.classList.add(...from.getAttribute(prefix + \"class\").split(\" \").filter(a => a.length));\n return;\n }\n to.setAttribute(target, from.getAttribute(a))\n });\n }\n /**\n * \n * @param {HTMLElement} el \n * @param {stirng} attr \n * @param {boolean} value \n */\n static toggle(el, attr, value) {\n if (value) {\n el.setAttribute(attr, '');\n } else {\n el.removeAttribute(attr);\n }\n }\n static flip(el, attr) {\n if (el.hasAttribute(attr)) {\n el.removeAttribute(attr);\n } else {\n el.setAttribute(attr, '');\n }\n }\n\n}\n\nclass LightSlots {\n /**\n * \n * @param {HTMLElement} el \n * @returns the slots\n */\n static from(el) {\n const namedSlots = Array.from(el.childNodes)\n .filter(el => el.matches && el.matches('[slot]'))\n .map(el => {\n el.remove();\n const slot = el.getAttribute(\"slot\");\n el.removeAttribute(\"slot\");\n return [slot, el];\n });\n const slots = {};\n slots.default = new DocumentFragment();\n slots.default.append(...el.childNodes);\n for(const [name,el] of namedSlots){\n if(!(name in slots)){\n slots[name] = new DocumentFragment();\n }\n slots[name].append(el);\n }\n return slots;\n }\n}\n\nclass Nodes {\n static isParsed(el) {\n for (var c = el; c; c = c.parentNode) {\n if (c.nextSibling) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass TemplatesRegistry {\n #idToFragment = {};\n #idToTemplate = {};\n #ec;\n put(k, fragment) {\n if (this.#ec) {\n this.#idToTemplate[k] = Template.fromFragment(fragment, ec);\n return;\n }\n this.#idToFragment[k] = fragment;\n }\n get(k) {\n if (!this.#ec) {\n throw new Error(\"TemplatesRegistry is not configured\");\n }\n const tpl = this.#idToTemplate[k];\n if (!tpl) {\n throw new Error(`missing template: '${k}'`);\n }\n return tpl;\n }\n configure(ec) {\n this.#ec = ec;\n for (const [k, fragment] of Object.entries(this.#idToFragment)) {\n delete this.#idToFragment[k];\n this.#idToTemplate[k] = ftl.Template.fromFragment(fragment, ec);\n }\n }\n}\n\n\nclass ElementsRegistry {\n #templates;\n #tagToclass;\n #configured;\n #id = 0;\n constructor() {\n this.#templates = new TemplatesRegistry();\n this.#tagToclass = {};\n }\n defineTemplate(html) {\n if (html === null || html === undefined) {\n return undefined;\n }\n const name = `unnamed-${++this.#id}`;\n this.#templates.put(name, Fragments.fromHtml(html));\n return name;\n }\n template(k) {\n if (k === null || k === undefined) {\n return undefined;\n }\n return this.#templates.get(k);\n }\n define(tag, klass) {\n if (!this.#configured) {\n this.#tagToclass[tag] = klass;\n return this;\n }\n customElements.define(tag, klass);\n return this;\n }\n configure(ec) {\n this.#templates.configure(ec);\n for (const [tag, klass] of Object.entries(this.#tagToclass)) {\n customElements.define(tag, klass);\n delete this.#tagToclass[tag];\n }\n this.#configured = true;\n }\n}\n\nconst elements = new ElementsRegistry();\n\n\nclass UpgradeQueue {\n #q = [];\n constructor() {\n document.addEventListener('DOMContentLoaded', this.dequeue.bind(this));\n }\n enqueue(el) {\n if (!this.#q.length) {\n requestAnimationFrame(this.dequeue.bind(this));\n }\n this.#q.push(el);\n }\n dequeue() {\n this.#q.splice(0).forEach(el => el.upgrade());\n }\n}\n\nconst upgradeQueue = new UpgradeQueue();\n\nconst mappers = {\n 'string': attr => attr,\n 'number': attr => attr === null ? null : Number(attr),\n 'presence': attr => attr !== null,\n 'state': attr => attr !== null,\n 'bool': attr => attr === 'true',\n 'json': attr => JSON.parse(attr)\n};\n\nconst ParsedElement = (conf) => {\n const { observed, template, slots } = conf || {};\n\n const attrsAndTypes = (observed || []).map(a => {\n const [attr, maybeType] = a.split(\":\");\n const type = maybeType?.trim() || 'string';\n if (!(type in mappers)) {\n throw new Error(`unsupported attribute type: ${type}`);\n }\n return [attr.trim(), type];\n });\n\n const attrsAndMappers = attrsAndTypes.map(([attr, type]) => [attr, mappers[type]]);\n\n const attrToMapper = Object.fromEntries(attrsAndMappers);\n\n const templateId = elements.defineTemplate(template);\n\n const k = class extends HTMLElement {\n static get observedAttributes() {\n return Object.keys(attrToMapper);\n }\n #parsed;\n #initialized;\n #reflecting;\n #internals;\n constructor(...args) {\n super(...args);\n this.#internals = this.attachInternals();\n }\n get initialized() {\n return this.#initialized;\n }\n get internals() {\n return this.#internals;\n }\n connectedCallback() {\n if (this.#parsed) {\n return;\n }\n if (this.ownerDocument.readyState === 'complete' || Nodes.isParsed(this)) {\n upgradeQueue.enqueue(this);\n return;\n }\n this.ownerDocument.addEventListener('DOMContentLoaded', () => {\n observer.disconnect();\n upgradeQueue.enqueue(this);\n });\n const observer = new MutationObserver(() => {\n if (!Nodes.isParsed(this)) {\n return;\n }\n observer.disconnect();\n upgradeQueue.enqueue(this);\n });\n observer.observe(this.parentNode, { childList: true, subtree: true });\n }\n attributeChangedCallback(attr, oldValue, newValue) {\n if (!this.#parsed || oldValue === newValue) {\n return;\n }\n if (this.#reflecting) {\n return;\n }\n const mapper = attrToMapper[attr];\n this[attr] = mapper(newValue);\n }\n reflect(fn) {\n this.#reflecting = true;\n try {\n fn();\n } finally {\n this.#reflecting = false;\n }\n }\n async upgrade() {\n if (this.#parsed) {\n return;\n }\n this.#parsed = true;\n await this.render(elements.template(templateId), slots ? LightSlots.from(this) : undefined);\n\n for (const [attr, mapper] of attrsAndMappers) {\n if (this.hasAttribute(attr)) {\n this[attr] = mapper(this.getAttribute(attr));\n }\n }\n this.#initialized = true;\n }\n };\n\n for (const [attr, type] of attrsAndTypes.filter(([a, t]) => t === 'state')) {\n Object.defineProperty(k.prototype, attr, {\n enumerable: true,\n configurable: true,\n get() {\n return this.internals.states.has(`--${attr}`);\n },\n set(value) {\n this.internals.states[value ? 'add' : 'delete'](`--${attr}`);\n this.reflect(() => Attributes.toggle(this, attr, value));\n }\n });\n }\n\n return k;\n}\n\nexport { Fragments, Attributes, LightSlots, Nodes, TemplatesRegistry, ElementsRegistry, elements, ParsedElement };\n","/* global Infinity, CSS */\n\nimport { Failure } from \"../http-client.mjs\";\nimport { ParsedElement } from \"./elements.mjs\"\n\nfunction flatten(obj, prefix) {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + '.' : '';\n if (typeof obj[k] === 'object' && obj[k] !== null) {\n Object.assign(acc, flatten(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {});\n}\n\nfunction providePath(result, path, value) {\n const keys = path.split(\".\").map((k) => k.match(/^[0-9]+$/) ? +k : k);\n let current = result;\n let previous = null;\n for (let i = 0; ; ++i) {\n const ckey = keys[i];\n const pkey = keys[i - 1];\n if (Number.isInteger(ckey) && !Array.isArray(current)) {\n if (previous !== null) {\n previous[pkey] = current = [];\n } else {\n result = current = [];\n }\n }\n if (i === keys.length - 1) {\n //when value is undefined we only want to define the property if it's not defined \n current[ckey] = value !== undefined ? value : (ckey in current ? current[ckey] : null);\n return result;\n }\n if (current[ckey] === undefined) {\n current[ckey] = {};\n }\n previous = current;\n current = current[ckey];\n }\n}\n\nfunction extract(el) {\n if (el.getAttribute('type') === 'radio') {\n if (!el.checked) {\n return undefined;\n }\n return el.dataset['fulBindType'] === 'boolean' ? el.value === 'true' : el.value;\n }\n if (el.getAttribute('type') === 'checkbox') {\n return el.checked;\n }\n if (el.dataset['fulBindType'] === 'boolean') {\n return !el.value ? null : el.value === 'true';\n }\n return el.value === '' || el.value === undefined ? null : el.value;\n}\n\nfunction mutate(el, raw) {\n if (el.getAttribute('type') === 'radio') {\n el.checked = el.getAttribute('value') === raw;\n return;\n }\n if (el.getAttribute('type') === 'checkbox') {\n el.checked = raw;\n return;\n }\n el.value = raw;\n}\n\nclass Form extends ParsedElement() {\n static IGNORED_CHILDREN_SELECTOR = '.d-none, [hidden]';\n static SCROLL_OFFSET = 50;\n render() {\n const form = document.createElement('form');\n form.replaceChildren(...this.childNodes);\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n this.spinning(async () => {\n await this.submitter?.(this.values, this);\n });\n })\n this.replaceChildren(form);\n }\n spinner(spin) {\n this.querySelectorAll('ful-spinner').forEach(el => el.hidden = !spin)\n this.querySelectorAll('[type=submit],[type=reset]').forEach(el => el.disabled = spin)\n }\n async remoting(fn) {\n try {\n await fn();\n } catch (e) {\n if (e instanceof Failure) {\n this.errors = e.problems;\n }\n throw e;\n }\n }\n async spinningUntilError(fn) {\n this.spinner(true)\n try {\n await this.remoting(fn);\n } catch(e) {\n this.spinner(false);\n throw e;\n }\n }\n async spinning(fn) {\n this.spinner(true)\n try {\n await this.remoting(fn);\n } finally {\n this.spinner(false);\n }\n }\n set values(vs) {\n for (const [flattenedKey, value] of Object.entries(flatten(vs, ''))) {\n this.querySelectorAll(`[name='${CSS.escape(flattenedKey)}']`).forEach(el => mutate(el, value));\n }\n }\n get values() {\n return Array.from(this.querySelectorAll('[name]'))\n .filter((el) => {\n if (el.dataset['fulBindInclude'] === 'never') {\n return false;\n }\n return el.dataset['fulBindInclude'] === 'always' || el.closest(Form.IGNORED_CHILDREN_SELECTOR) === null;\n })\n .reduce((result, el) => {\n return providePath(result, el.getAttribute('name'), extract(el));\n }, {});\n }\n set errors(es) {\n const fieldErrors = es.filter((e) => e.type === 'FIELD_ERROR' || e.type === 'INVALID_FORMAT');\n const globalErrors = es.filter((e) => e.type !== 'FIELD_ERROR' && e.type !== 'INVALID_FORMAT');\n this.querySelectorAll('.is-invalid').forEach(el => el.classList.remove('is-invalid'));\n this.querySelectorAll(\"ful-errors\").forEach(el => {\n el.replaceChildren();\n el.setAttribute('hidden', '');\n });\n fieldErrors.forEach((e) => {\n const name = e.context.replace(\"[\", \".\").replace(\"].\", \".\");\n const validationTargetsSelector = `[name='${CSS.escape(name)}'] [ful-validation-target],[name='${CSS.escape(name)}']:not(:has([ful-validation-target]))`;\n this.querySelectorAll(validationTargetsSelector).forEach(input => input.classList.add('is-invalid'));\n const fieldErrorsSelector = `ful-field-error[field='${CSS.escape(name)}']`;\n this.querySelectorAll(fieldErrorsSelector).forEach(el => el.innerText = e.reason);\n });\n this.querySelectorAll(\"ful-errors\").forEach(el => {\n el.innerText = globalErrors.map(e => e.reason).join(\"\\n\");\n if (globalErrors.length !== 0) {\n el.removeAttribute('hidden');\n }\n });\n if (!this.hasAttribute('scroll-on-error')) {\n return;\n }\n const ys = Array.from(this.querySelectorAll('[ful-validated-field]:has(.is-invalid) ful-field-error'))\n .map(el => el.parentElement ? el.parentElement : el)\n .map(el => el.getBoundingClientRect().y + window.scrollY);\n const miny = Math.min(...ys);\n if (miny !== Infinity) {\n window.scroll(window.scrollX, miny > Form.SCROLL_OFFSET ? miny - Form.SCROLL_OFFSET : 0);\n }\n }\n}\n\nexport { Form };\n","import { Attributes, ParsedElement } from \"./elements.mjs\"\n\n\nconst INPUT_TEMPLATE = `\n<div ful-validated-field>\n <label data-tpl-for=\"id\" class=\"form-label\">{{{{ slots.default }}}}</label>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n <div data-tpl-if=\"slots.before\" data-tpl-remove=\"tag\">{{{{ slots.before }}}}</div>\n {{{{ slots.input }}}} \n <div data-tpl-if=\"slots.after\" data-tpl-remove=\"tag\">{{{{ slots.after }}}}</div>\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error data-tpl-if=\"name\" data-tpl-field=\"name\"></ful-field-error>\n</div>\n`;\n\nconst makeInputFragment = (el, template, slots) => {\n const input = el.input = slots.input = slots.input?.firstElementChild || (() => {\n const el = document.createElement(\"input\")\n el.classList.add(\"form-control\");\n return el;\n })();\n input.setAttribute('ful-validation-target', '');\n input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n el.dispatchEvent(new CustomEvent('change', { \n bubbles: true, \n cancelable: false, \n detail: {\n value: el.value\n }\n }));\n });\n const id = input.getAttribute('id') || el.getAttribute('input-id') || Attributes.uid('ful-input');\n Attributes.forward('input-', el, slots.input)\n Attributes.defaultValue(slots.input, \"id\", id);\n Attributes.defaultValue(slots.input, \"type\", \"text\");\n Attributes.defaultValue(slots.input, \"placeholder\", \" \");\n const name = el.getAttribute('name');\n return template.render(el, { id, name, slots });\n}\n\nclass Input extends ParsedElement({\n observed: ['value'],\n slots: true,\n template: INPUT_TEMPLATE\n}){\n render(template, slots) {\n const fragment = makeInputFragment(this, template, slots);\n this.replaceChildren(fragment);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\n\nexport { makeInputFragment, INPUT_TEMPLATE, Input };\n","import { Fragments, Attributes, ParsedElement } from \"./elements.mjs\"\n\n/**\n * <script src=\"tom-select.complete.js\"></script>\n * <link href=\"tom-select.bootstrap5.css\" rel=\"stylesheet\" />\n */\n\nclass Select extends ParsedElement({\n observed: [\"value\"],\n slots: true,\n template: `\n <div ful-validated-field>\n <label data-tpl-for=\"tsId\" class=\"form-label\">{{{{ slots.default }}}}</label>\n {{{{ input }}}}\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n <div data-tpl-if=\"slots.before\" data-tpl-remove=\"tag\">{{{{ slots.before }}}}</div>\n {{{{ slots.input }}}} \n <div data-tpl-if=\"slots.after\" data-tpl-remove=\"tag\">{{{{ slots.after }}}}</div>\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error data-tpl-if=\"name\" data-tpl-field=\"name\"></ful-field-error>\n </div>\n `\n}) {\n constructor(tsConfig) {\n super();\n this.tsConfig = tsConfig;\n }\n render(template, slots) {\n const type = this.getAttribute(\"type\") || 'local';\n const remote = type != 'local';\n const loadOnce = this.getAttribute('load') != 'always';\n const name = this.getAttribute('name');\n const input = slots.input = slots.input?.firstElementChild || (() => {\n return document.createElement(\"select\");\n })();\n input.setAttribute('ful-validation-target', '');\n\n const id = input.getAttribute('id') || this.getAttribute('input-id') || Attributes.uid('ful-select');\n const tsId = `${id}-ts-control`;\n Attributes.forward('input-', this, input)\n Attributes.defaultValue(input, \"id\", id);\n Attributes.defaultValue(input, \"placeholder\", \" \");\n\n //tomselect needs the input to have a parent.\n //se we move the input to a fragment\n slots.input = Fragments.from(input);\n\n this.loaded = !remote;\n\n const tsDefaultConfig = {\n render: {\n loading: () => '<ful-spinner class=\"centered p-2\"></ful-spinner>'\n }\n }\n\n this._remote = remote;\n // we need to await this load in setValue when remote is configured and the option\n // is not loaded yet.\n // tomselect settings.load does not retun a promise as it wraps the configured load function\n // with a debouncer\n this._unwrappedRemoteLoad = async (query, callback) => {\n\n if (!remote || remote && loadOnce && this.loaded) {\n callback();\n return;\n }\n const type = query && query.hasOwnProperty('byId') ? 'id' : 'query';\n const qvalue = type === 'id' ? query.byId : query;\n const data = await (this.#loader ? this.#loader(qvalue, type) : []);\n if (type !== 'id') {\n this.loaded = true;\n }\n callback(data);\n };\n this.ts = new TomSelect(input, Object.assign(remote ? {\n preload: 'focus',\n load: this._unwrappedRemoteLoad,\n shouldLoad: (query) => this.shouldLoad ? this.shouldLoad(query) : true\n } : {}, tsDefaultConfig, this.tsConfig));\n this.ts.on('change', value => {\n this.dispatchEvent(new CustomEvent('change', { \n bubbles: true, \n cancelable: false, \n detail: {\n value: this.value\n }\n }));\n });\n //we remove the input to move it\n input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n });\n input.remove();\n template.renderTo(this, { id, tsId, name, input, slots });\n }\n #loader;\n set loader(l) {\n this.#loader = l;\n // loader can be configured later so we load now\n if (this.hasAttribute('value')) {\n this.value = this.getAttribute(\"value\");\n }\n }\n get value() {\n const v = this.ts.getValue();\n return v === '' ? null : v;\n }\n set value(value) {\n (async () => {\n if (this._remote) {\n await this._unwrappedRemoteLoad({ byId: value }, this.ts.loadCallback.bind(this.ts));\n }\n const silent = true;\n this.ts.setValue(value, silent);\n })();\n }\n}\n\nexport { Select };\n","import { Attributes, Fragments, ParsedElement } from \"./elements.mjs\"\n\nclass RadioGroup extends ParsedElement({\n observed: ['value', 'disabled:state'],\n slots: true,\n template: `\n <fieldset ful-validated-field>\n <legend class=\"form-label\">\n {{{{ slots.default }}}}\n </legend>\n <header data-tpl-if=\"slots.header\">\n {{{{ slots.header }}}}\n </header>\n <section>\n <div class=\"label-wrapper\" data-tpl-each=\"inputsAndLabels\" data-tpl-var=\"ial\">\n <label>\n {{{{ ial[0] }}}}\n {{{{ ial[1] }}}}\n </label>\n </div>\n </section>\n <ful-field-error data-tpl-if=\"name\" data-tpl-field=\"name\"></ful-field-error>\n <footer data-tpl-if=\"slots.footer\">\n {{{{ slots.footer }}}}\n </footer>\n </fieldset>\n `\n}) {\n render(template, slots) {\n const name = this.getAttribute('name') || Attributes.uid('ful-radiogroup');\n const radioEls = Array.from(slots.default.querySelectorAll('ful-radio'));\n const inputsAndLabels = radioEls.map(el => {\n const input = document.createElement('input');\n input.setAttribute('type', 'radio');\n Attributes.forward('input-', this, input);\n Attributes.forward('', el, input);\n input.setAttribute('name', `${name}-ignore`);\n input.setAttribute('ful-validation-target', '');\n input.dataset['fulBindInclude'] = 'never';\n input.addEventListener('change', evt => {\n evt.stopPropagation();\n //change is not cancelable\n this.dispatchEvent(new CustomEvent('change', { \n bubbles: true, \n cancelable: false, \n detail: {\n value: this.value\n }\n })); \n }); \n const label = Fragments.fromChildNodes(el);\n return [input, label];\n });\n\n radioEls.forEach(el => el.remove());\n template.renderTo(this, {name, slots, inputsAndLabels});\n }\n get value() {\n const checked = this.querySelector('input[type=radio]:checked');\n return checked ? checked.value : null;\n }\n set value(value) {\n this.querySelector(`input[type=radio][value=${CSS.escape(value)}]`).checked = true;\n }\n}\n\n\nexport { RadioGroup };","import { ParsedElement } from \"./elements.mjs\"\n\nclass Spinner extends ParsedElement({\n slots: true,\n template: `\n <div class=\"ful-spinner-wrapper\">\n <div class=\"ful-spinner-text\">{{{{ slots.default }}}}</div>\n <div class=\"ful-spinner-icon\"></div>\n </div>\n `\n}) {\n render(template, slots) {\n template.renderTo(this, { slots });\n }\n}\n\nexport { Spinner };"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ful.mjs","sources":["../src/encodings.mjs","../src/http-client.mjs","../src/storage.mjs","../src/oauth-authorization-code.mjs","../src/timing.mjs","../src/deferred.mjs","../src/elements/elements.mjs","../src/elements/form.mjs","../src/elements/input.mjs","../src/elements/select.mjs","../src/elements/radio.mjs","../src/elements/spinner.mjs"],"sourcesContent":["\n\nclass Base64 {\n static encode(arrayBuffer, dialect) {\n const d = dialect || Base64.URL_SAFE;\n const len = arrayBuffer.byteLength;\n const view = new Uint8Array(arrayBuffer);\n let res = '';\n for (let i = 0; i < len; i += 3) {\n const v1 = d[view[i] >> 2];\n const v2 = d[((view[i] & 3) << 4) | (view[i + 1] >> 4)];\n const v3 = d[((view[i + 1] & 15) << 2) | (view[i + 2] >> 6)];\n const v4 = d[view[i + 2] & 63];\n res += v1 + v2 + v3 + v4;\n }\n if (len % 3 === 2) {\n res = res.substring(0, res.length - 1);\n } else if (len % 3 === 1) {\n res = res.substring(0, res.length - 2);\n }\n return res;\n }\n static decode(str, dialect) {\n const d = dialect || Base64.URL_SAFE;\n let nbytes = Math.floor(str.length * 0.75);\n for (let i = 0; i !== str.length; ++i) {\n if (str[str.length - i - 1] !== '=') {\n break;\n }\n --nbytes;\n }\n const view = new Uint8Array(nbytes);\n\n let vi = 0;\n let si = 0;\n while (vi < str.length * 0.75) {\n const v1 = d.indexOf(str.charAt(si++));\n const v2 = d.indexOf(str.charAt(si++));\n const v3 = d.indexOf(str.charAt(si++));\n const v4 = d.indexOf(str.charAt(si++));\n view[vi++] = (v1 << 2) | (v2 >> 4);\n view[vi++] = ((v2 & 15) << 4) | (v3 >> 2);\n view[vi++] = ((v3 & 3) << 6) | v4;\n }\n\n return view.buffer;\n }\n}\n\nBase64.STANDARD = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nBase64.URL_SAFE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n\nclass Hex {\n static decode(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(\"invalid length\");\n }\n const lenInBytes = hex.length / 2;\n return new Uint8Array(lenInBytes).map((e, i) => {\n const offset = i * 2;\n const octet = hex.substring(offset, offset + 2);\n return parseInt(octet, 16);\n });\n }\n static encode(bytes, upper) {\n return Array.from(bytes)\n .map(b => b.toString(16))\n .map(b => upper ? b.toUpperCase() : b)\n .map(o => o.padStart(2, 0))\n .join('');\n }\n}\n\nexport { Base64, Hex };","class ContextInterceptor {\n constructor() {\n const context = document.querySelector(\"meta[name='context']\").getAttribute(\"content\");\n this.context = context.endsWith(\"/\") ? context.substring(0, context.length - 1) : context;\n }\n async intercept(request, chain){\n const separator = request.resource.startsWith(\"/\") ? \"\" : \"/\";\n request.resource = this.context + separator + request.resource;\n return await chain.proceed(request);\n }\n}\n\nclass CsrfTokenInterceptor {\n constructor() {\n this.k = document.querySelector(\"meta[name='_csrf_header']\").getAttribute(\"content\");\n this.v = document.querySelector(\"meta[name='_csrf']\").getAttribute(\"content\");\n }\n async intercept(request, chain){\n const headers = new Headers(request.options.headers);\n headers.set(this.k, this.v);\n request.options.headers = headers;\n return await chain.proceed(request);\n }\n}\n\nclass RedirectOnUnauthorizedInterceptor {\n constructor(redirectUri) {\n this.redirectUri = redirectUri;\n }\n async intercept(request, chain){\n const response = await chain.proceed(request);\n if (response.status !== 401) {\n return response;\n }\n window.location.href = this.redirectUri;\n }\n}\n\nclass Failure extends Error {\n static parseProblems(status, text) {\n const def = [{\n type: \"GENERIC_PROBLEM\",\n context: null,\n reason: `${status}: ${text}`,\n details: null\n }];\n try {\n return text ? JSON.parse(text) : def;\n } catch (e) {\n return def;\n }\n }\n static fromResponse(status, text) {\n return new Failure(status, Failure.parseProblems(status, text));\n }\n constructor(status, problems) {\n super(JSON.stringify(problems));\n this.name = `Failure:${status}`;\n this.status = status;\n this.problems = problems;\n }\n}\n\nclass HttpClientBuilder {\n constructor() {\n this.interceptors = [];\n }\n withContext() {\n this.interceptors.push(new ContextInterceptor());\n return this;\n }\n withCsrfToken() {\n this.interceptors.push(new CsrfTokenInterceptor());\n return this;\n }\n withRedirectOnUnauthorized(redirectUri) {\n this.interceptors.push(new RedirectOnUnauthorizedInterceptor(redirectUri));\n return this;\n }\n withInterceptors(...interceptors) {\n this.interceptors.push(...interceptors);\n return this;\n }\n build() {\n const interceptors = this.interceptors;\n return new HttpClient({interceptors});\n }\n}\n\nclass HttpCall {\n async intercept(request, chain){\n return await fetch(request.resource, request.options);\n } \n}\n\nclass HttpInterceptorChain {\n constructor(interceptors, current){\n this.interceptors = interceptors;\n this.current = current;\n }\n async proceed(request){\n const interceptor = this.interceptors[this.current];\n return await interceptor.intercept(request, new HttpInterceptorChain(this.interceptors, this.current + 1));\n }\n}\n\n\nclass HttpClient {\n static builder() {\n return new HttpClientBuilder();\n }\n constructor({interceptors}){\n this.interceptors = interceptors || [];\n }\n async exchange(resource, options) {\n const opts = options || {};\n const interceptors = [...this.interceptors, ...opts.interceptors || [], new HttpCall()];\n const chain = new HttpInterceptorChain(interceptors, 0);\n return await chain.proceed({resource, options: opts});\n }\n async fetch(resource, options) {\n const response = await this.exchange(resource, options);\n if (!response.ok) {\n const message = await response.text();\n throw Failure.fromResponse(response.status, message);\n } \n return response;\n }\n async json(resource, options) {\n try {\n const response = await this.fetch(resource, options);\n const text = await response.text();\n return text ? JSON.parse(text) : undefined;\n } catch (e) {\n if (e instanceof Failure) {\n throw e;\n }\n throw new Failure(0, [{\n type: \"CONNECTION_PROBLEM\",\n context: null,\n reason: e.message,\n details: null\n }]);\n }\n }\n}\n\nfunction jsonRequest(method, body, headers){\n return {\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n method: method,\n body: JSON.stringify(body) \n }\n}\nfunction jsonPost(body, headers){\n return jsonRequest('POST', body, headers);\n}\nfunction jsonPut(body, headers){\n return jsonRequest('PUT', body, headers);\n}\nfunction jsonPatch(body, headers){\n return jsonRequest('PATCH', body, headers);\n}\n\n\nexport { HttpClient, Failure, jsonRequest, jsonPost, jsonPut, jsonPatch };\n","\nclass Storage {\n constructor(prefix, storage) {\n this.prefix = prefix;\n this.storage = storage;\n }\n save(k, v) {\n this.storage.setItem(`${this.prefix}-${k}`, JSON.stringify(v));\n }\n load(k) {\n const got = this.storage.getItem(`${this.prefix}-${k}`);\n return got === undefined ? undefined : JSON.parse(got);\n }\n remove(k) {\n this.storage.removeItem(`${this.prefix}-${k}`);\n }\n pop(k) {\n const decoded = this.load(k);\n this.remove(k);\n return decoded;\n }\n}\n\nclass LocalStorage extends Storage {\n constructor(prefix) {\n super(prefix, localStorage);\n }\n}\n\nclass SessionStorage extends Storage {\n constructor(prefix) {\n super(prefix, sessionStorage);\n }\n}\n\nclass VersionedStorage {\n constructor(storage, key, dataSupplier){\n this.storage = storage;\n this.key = key;\n this.dataSupplier = dataSupplier;\n this.cache = null;\n \n }\n async load(revision){\n const saved = this.storage.load(this.key);\n if (!!saved && saved.revision === revision) {\n this.cache = saved.value;\n return;\n }\n const freshData = await this.dataSupplier(revision, this.key);\n this.storage.save(this.key, {\n revision: revision,\n value: freshData\n });\n this.cache = freshData;\n }\n data(){\n return this.cache;\n }\n}\n\n\n\nexport {LocalStorage, SessionStorage, VersionedStorage};","import { Base64 } from \"./encodings.mjs\";\nimport { SessionStorage } from \"./storage.mjs\";\n\n\nclass AuthorizationCodeFlow {\n static forKeycloak(clientId, realmBaseUrl, redirectUri){\n const scope = \"openid profile\";\n return new AuthorizationCodeFlow(clientId, scope, {\n auth: new URL(\"protocol/openid-connect/auth\", realmBaseUrl),\n token: new URL(\"protocol/openid-connect/token\", realmBaseUrl),\n logout: new URL(\"protocol/openid-connect/logout\", realmBaseUrl),\n registration: new URL(\"protocol/openid-connect/registrations\", realmBaseUrl),\n redirect: redirectUri\n }); \n }\n constructor(clientId, scope, {auth, token, registration, logout, redirect}) {\n this.storage = new SessionStorage(clientId);\n this.clientId = clientId;\n this.scope = scope;\n this.uri = {auth, token, registration, logout, redirect};\n }\n async action(uri, additionalParams){\n const pkceVerifier = Base64.encode(crypto.getRandomValues(new Uint8Array(32)).buffer);\n const pkceChallenge = Base64.encode(await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(pkceVerifier)));\n const state = this.clientId + Base64.encode(crypto.getRandomValues(new Uint8Array(16)).buffer);\n this.storage.save(AuthorizationCodeFlow.PKCE_AND_STATE_KEY, {\n state: state,\n verifier: pkceVerifier\n });\n const url = new URL(uri);\n url.searchParams.set(\"client_id\", this.clientId);\n url.searchParams.set(\"redirect_uri\", this.uri.redirect);\n url.searchParams.set(\"response_type\", 'code');\n url.searchParams.set(\"scope\", this.scope);\n url.searchParams.set(\"state\", state);\n url.searchParams.set(\"code_challenge\", pkceChallenge);\n url.searchParams.set(\"code_challenge_method\", 'S256');\n Object.entries(additionalParams || {}).forEach(kv => {\n url.searchParams.set(kv[0], kv[1]);\n });\n window.location = url;\n }\n async registration(additionalParams){\n await this.action(this.uri.registration, additionalParams);\n }\n async applicationInitiatedAction(kcAction){\n await this.action(this.uri.auth, {\n kc_action: kcAction\n });\n }\n async _tokenExchange(code, state) {\n window.history.replaceState('', \"\", this.uri.redirect);\n const stateAndVerifier = this.storage.pop(AuthorizationCodeFlow.PKCE_AND_STATE_KEY);\n if (stateAndVerifier.state !== state) {\n throw new Error(\"State mismatch\");\n }\n const response = await fetch(this.uri.token, {\n method: \"POST\",\n headers: {\n \"Content-Type\": 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams([\n [\"client_id\", this.clientId],\n [\"code\", code],\n [\"grant_type\", \"authorization_code\"],\n [\"code_verifier\", stateAndVerifier.verifier],\n [\"state\", stateAndVerifier.state],\n [\"redirect_uri\", this.uri.redirect]\n ])\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(\"Error:\" + response.status + \": \" + text);\n }\n const token = await response.json();\n return new AuthorizationCodeFlowSession(this.clientId, token, this.uri);\n }\n async ensureLoggedIn() {\n const url = new URL(window.location.href);\n const code = url.searchParams.get(\"code\");\n if (code && this.storage.load(AuthorizationCodeFlow.PKCE_AND_STATE_KEY)) {\n //if callback from keycloak and we have our state still stored\n const state = url.searchParams.get(\"state\");\n return await this._tokenExchange(code, state);\n }\n //if not authorized\n await this.action(this.uri.auth, {});\n return null;\n }\n}\nAuthorizationCodeFlow.PKCE_AND_STATE_KEY = \"state-and-verifier\";\n\nclass AuthorizationCodeFlowSession {\n static parseToken(token) {\n const [rawHeader, rawPayload, signature] = token.split(\".\");\n const ut8decoder = new TextDecoder(\"utf-8\");\n return {\n header: JSON.parse(ut8decoder.decode(Base64.decode(rawHeader, Base64.STANDARD))),\n payload: JSON.parse(ut8decoder.decode(Base64.decode(rawPayload, Base64.STANDARD))),\n signature: signature\n };\n } \n constructor(clientId, t, {token, logout, redirect}) {\n this.clientId = clientId;\n this.token = t;\n this.accessToken = AuthorizationCodeFlowSession.parseToken(t.access_token);\n this.refreshToken = AuthorizationCodeFlowSession.parseToken(t.refresh_token);\n this.uri = { token, logout, redirect }\n this.refreshCallback = null;\n }\n onRefresh(callback) {\n this.refreshCallback = callback;\n }\n async refresh() {\n const response = await fetch(this.uri.token, {\n method: \"POST\",\n headers: {\n \"Content-Type\": 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams([\n [\"client_id\", this.clientId],\n [\"grant_type\", \"refresh_token\"],\n [\"refresh_token\", this.token.refresh_token]\n ])\n });\n if (!response.ok) {\n throw new Error(\"Error:\" + response.status + \": \" + response.text());\n }\n const token = await response.json();\n this.token = token;\n this.accessToken = AuthorizationCodeFlowSession.parseToken(token.access_token);\n this.refreshToken = AuthorizationCodeFlowSession.parseToken(token.refresh_token);\n if (this.refreshCallback) {\n this.refreshCallback(this.token, this.accessToken, this.refreshToken);\n }\n }\n shouldBeRefreshed(gracePeriod) {\n const now = new Date().getTime();\n const refreshTokenExpiresAt = this.refreshToken.payload.exp * 1000;\n const expired = now > refreshTokenExpiresAt;\n const shouldRefresh = now - gracePeriod > refreshTokenExpiresAt;\n return !expired && shouldRefresh;\n }\n async refreshIf(gracePeriod) {\n if (!this.shouldBeRefreshed(gracePeriod)) {\n return;\n }\n await this.refresh();\n }\n logout() {\n const url = new URL(this.uri.logout);\n url.searchParams.set(\"post_logout_redirect_uri\", this.uri.redirect);\n url.searchParams.set(\"id_token_hint\", this.token.id_token);\n window.location = url;\n }\n\n bearerToken() {\n return `Bearer ${this.token.access_token}`;\n }\n \n interceptor(gracePeriodBefore, gracePeriodAfter){\n return new AuthorizationCodeFlowInterceptor(this, gracePeriodBefore, gracePeriodAfter); \n }\n}\n\nclass AuthorizationCodeFlowInterceptor {\n constructor(session, gracePeriodBefore, gracePeriodAfter) {\n this.session = session;\n this.gracePeriodBefore = gracePeriodBefore || 2000;\n this.gracePeriodAfter = gracePeriodAfter || 30000;\n }\n async intercept(request, chain) {\n await this.session.refreshIf(this.gracePeriodBefore);\n const headers = new Headers(request.options.headers);\n headers.set(\"Authorization\", this.session.bearerToken());\n request.options.headers = headers;\n const response = await chain.proceed(request);\n await this.session.refreshIf(this.gracePeriodAfter);\n return response;\n }\n}\n\n\nexport {AuthorizationCodeFlow, AuthorizationCodeFlowSession, AuthorizationCodeFlowInterceptor };","\nconst timing = {\n sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n },\n DEBOUNCE_DEFAULT: 0,\n DEBOUNCE_IMMEDIATE: 1,\n debounce(timeoutMs, func, options) {\n let tid = null;\n let args = [];\n let previousTimestamp = 0;\n let opts = options || timing.DEBOUNCE_DEFAULT;\n\n const later = () => {\n const elapsed = new Date().getTime() - previousTimestamp;\n if (timeoutMs > elapsed) {\n tid = setTimeout(later, timeoutMs - elapsed);\n return;\n }\n tid = null;\n if (opts !== timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n // This check is needed because `func` can recursively invoke `debounced`.\n if (tid === null) {\n args = [];\n }\n };\n\n return function () {\n args = arguments;\n previousTimestamp = new Date().getTime();\n if (tid === null) {\n tid = setTimeout(later, timeoutMs);\n if (opts === timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n }\n };\n },\n THROTTLE_DEFAULT: 0,\n THROTTLE_NO_LEADING: 1,\n THROTTLE_NO_TRAILING: 2,\n throttle(timeoutMs, func, options) {\n let tid = null;\n let args = [];\n let previousTimestamp = 0;\n let opts = options || timing.THROTTLE_DEFAULT;\n\n const later = () => {\n previousTimestamp = (opts & timing.THROTTLE_NO_LEADING) ? 0 : new Date().getTime();\n tid = null;\n func(...args);\n if (tid === null) {\n args = [];\n }\n };\n\n return function () {\n const now = new Date().getTime();\n if (!previousTimestamp && (opts & timing.THROTTLE_NO_LEADING)) {\n previousTimestamp = now;\n }\n const remaining = timeoutMs - (now - previousTimestamp);\n args = arguments;\n if (remaining <= 0 || remaining > timeoutMs) {\n if (tid !== null) {\n clearTimeout(tid);\n tid = null;\n }\n previousTimestamp = now;\n func(...args);\n if (tid === null) {\n args = [];\n }\n } else if (tid === null && !(opts & timing.THROTTLE_NO_TRAILING)) {\n tid = setTimeout(later, remaining);\n }\n };\n\n }\n};\n\n\nexport { timing };","class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n\n\nexport { Deferred }","class Fragments {\n /**\n * \n * @param {...string} html \n * @returns \n */\n static fromHtml(...html) {\n const el = document.createElement(\"template\");\n el.innerHTML = html.join(\"\");\n return el.content;\n }\n /**\n * \n * @param {DocumentFragment} fragment \n * @returns \n */\n static toHtml(fragment) {\n var el = document.createElement(\"template\");\n el.content.appendChild(fragment);\n return el.innerHTML;\n }\n /**\n * \n * @param {...Node} nodes \n * @returns \n */\n static from(...nodes) {\n const fragment = new DocumentFragment();\n fragment.append(...nodes);\n return fragment;\n }\n /**\n * \n * @param {HTMLElement} el \n * @returns \n */\n static fromChildNodes(el) {\n const fragment = new DocumentFragment();\n fragment.append(...el.childNodes);\n return fragment;\n }\n}\n\nclass Attributes {\n static id = 0;\n /**\n * \n * @param {string} prefix \n * @returns \n */\n static uid(prefix) {\n return `${prefix}-${++Attributes.id}`;\n }\n /**\n * \n * @param {HTMLElement} el \n * @param {string} k \n * @param {string} v \n * @returns \n */\n static defaultValue(el, k, v) {\n if (!el.hasAttribute(k)) {\n el.setAttribute(k, v);\n }\n return el.getAttribute(k);\n }\n /**\n * \n * @param {string} prefix \n * @param {HTMLElement} from \n * @param {HTMLElement} to \n */\n static forward(prefix, from, to) {\n from.getAttributeNames()\n .filter(a => a.startsWith(prefix))\n .forEach(a => {\n const target = a.substring(prefix.length);\n if (target === 'class') {\n to.classList.add(...from.getAttribute(prefix + \"class\").split(\" \").filter(a => a.length));\n return;\n }\n to.setAttribute(target, from.getAttribute(a))\n });\n }\n /**\n * \n * @param {HTMLElement} el \n * @param {stirng} attr \n * @param {boolean} value \n */\n static toggle(el, attr, value) {\n if (value) {\n el.setAttribute(attr, '');\n } else {\n el.removeAttribute(attr);\n }\n }\n static flip(el, attr) {\n if (el.hasAttribute(attr)) {\n el.removeAttribute(attr);\n } else {\n el.setAttribute(attr, '');\n }\n }\n\n}\n\nclass LightSlots {\n /**\n * \n * @param {HTMLElement} el \n * @returns the slots\n */\n static from(el) {\n const namedSlots = Array.from(el.childNodes)\n .filter(el => el.matches && el.matches('[slot]'))\n .map(el => {\n el.remove();\n const slot = el.getAttribute(\"slot\");\n el.removeAttribute(\"slot\");\n return [slot, el];\n });\n const slots = {};\n slots.default = new DocumentFragment();\n slots.default.append(...el.childNodes);\n for(const [name,el] of namedSlots){\n if(!(name in slots)){\n slots[name] = new DocumentFragment();\n }\n slots[name].append(el);\n }\n return slots;\n }\n}\n\nclass Nodes {\n static isParsed(el) {\n for (var c = el; c; c = c.parentNode) {\n if (c.nextSibling) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass TemplatesRegistry {\n #idToFragment = {};\n #idToTemplate = {};\n #ec;\n put(k, fragment) {\n if (this.#ec) {\n this.#idToTemplate[k] = Template.fromFragment(fragment, ec);\n return;\n }\n this.#idToFragment[k] = fragment;\n }\n get(k) {\n if (!this.#ec) {\n throw new Error(\"TemplatesRegistry is not configured\");\n }\n const tpl = this.#idToTemplate[k];\n if (!tpl) {\n throw new Error(`missing template: '${k}'`);\n }\n return tpl;\n }\n configure(ec, ...data) {\n this.#ec = ec;\n for (const [k, fragment] of Object.entries(this.#idToFragment)) {\n delete this.#idToFragment[k];\n this.#idToTemplate[k] = ftl.Template.fromFragment(fragment, ec, ...data);\n }\n }\n}\n\n\nclass ElementsRegistry {\n #templates;\n #tagToclass;\n #configured;\n #id = 0;\n constructor() {\n this.#templates = new TemplatesRegistry();\n this.#tagToclass = {};\n }\n defineTemplate(html) {\n if (html === null || html === undefined) {\n return undefined;\n }\n const name = `unnamed-${++this.#id}`;\n this.#templates.put(name, Fragments.fromHtml(html));\n return name;\n }\n define(tag, klass) {\n if (!this.#configured) {\n this.#tagToclass[tag] = klass;\n return this;\n }\n customElements.define(tag, klass);\n return this;\n }\n configure(ec, ...data) {\n this.#templates.configure(ec, ...data);\n for (const [tag, klass] of Object.entries(this.#tagToclass)) {\n customElements.define(tag, klass);\n delete this.#tagToclass[tag];\n }\n this.#configured = true;\n }\n template(k) {\n if (k === null || k === undefined) {\n return undefined;\n }\n return this.#templates.get(k);\n }\n}\n\nconst elements = new ElementsRegistry();\n\n\nclass UpgradeQueue {\n #q = [];\n constructor() {\n document.addEventListener('DOMContentLoaded', this.dequeue.bind(this));\n }\n enqueue(el) {\n if (!this.#q.length) {\n requestAnimationFrame(this.dequeue.bind(this));\n }\n this.#q.push(el);\n }\n dequeue() {\n this.#q.splice(0).forEach(el => el.upgrade());\n }\n}\n\nconst upgradeQueue = new UpgradeQueue();\n\nconst mappers = {\n 'string': attr => attr,\n 'number': attr => attr === null ? null : Number(attr),\n 'presence': attr => attr !== null,\n 'state': attr => attr !== null,\n 'bool': attr => attr === 'true',\n 'json': attr => JSON.parse(attr)\n};\n\nconst ParsedElement = (conf) => {\n const { observed, template, slots } = conf ?? {};\n\n const attrsAndTypes = (observed ?? []).map(a => {\n const [attr, maybeType] = a.split(\":\");\n const type = maybeType?.trim() ?? 'string';\n if (!(type in mappers)) {\n throw new Error(`unsupported attribute type: ${type}`);\n }\n return [attr.trim(), type];\n });\n\n const attrsAndMappers = attrsAndTypes.map(([attr, type]) => [attr, mappers[type]]);\n\n const attrToMapper = Object.fromEntries(attrsAndMappers);\n\n const templateId = elements.defineTemplate(template);\n\n const k = class extends HTMLElement {\n static get observedAttributes() {\n return Object.keys(attrToMapper);\n }\n #parsed;\n #initialized;\n #reflecting;\n #internals;\n constructor(...args) {\n super(...args);\n this.#internals = this.attachInternals();\n }\n get initialized() {\n return this.#initialized;\n }\n get internals() {\n return this.#internals;\n }\n connectedCallback() {\n if (this.#parsed) {\n return;\n }\n if (this.ownerDocument.readyState === 'complete' || Nodes.isParsed(this)) {\n upgradeQueue.enqueue(this);\n return;\n }\n this.ownerDocument.addEventListener('DOMContentLoaded', () => {\n observer.disconnect();\n upgradeQueue.enqueue(this);\n });\n const observer = new MutationObserver(() => {\n if (!Nodes.isParsed(this)) {\n return;\n }\n observer.disconnect();\n upgradeQueue.enqueue(this);\n });\n observer.observe(this.parentNode, { childList: true, subtree: true });\n }\n attributeChangedCallback(attr, oldValue, newValue) {\n if (!this.#parsed || oldValue === newValue) {\n return;\n }\n if (this.#reflecting) {\n return;\n }\n const mapper = attrToMapper[attr];\n this[attr] = mapper(newValue);\n }\n reflect(fn) {\n this.#reflecting = true;\n try {\n fn();\n } finally {\n this.#reflecting = false;\n }\n }\n async upgrade() {\n if (this.#parsed) {\n return;\n }\n this.#parsed = true;\n await this.render(elements.template(templateId), slots ? LightSlots.from(this) : undefined);\n\n for (const [attr, mapper] of attrsAndMappers) {\n if (this.hasAttribute(attr)) {\n this[attr] = mapper(this.getAttribute(attr));\n }\n }\n this.#initialized = true;\n }\n };\n\n for (const [attr, type] of attrsAndTypes.filter(([a, t]) => t === 'state')) {\n Object.defineProperty(k.prototype, attr, {\n enumerable: true,\n configurable: true,\n get() {\n return this.internals.states.has(`--${attr}`);\n },\n set(value) {\n this.internals.states[value ? 'add' : 'delete'](`--${attr}`);\n this.reflect(() => Attributes.toggle(this, attr, value));\n }\n });\n }\n\n return k;\n}\n\nexport { Fragments, Attributes, LightSlots, Nodes, TemplatesRegistry, ElementsRegistry, elements, ParsedElement };\n","/* global Infinity, CSS */\n\nimport { Failure } from \"../http-client.mjs\";\nimport { ParsedElement } from \"./elements.mjs\"\n\nfunction flatten(obj, prefix) {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + '.' : '';\n if (typeof obj[k] === 'object' && obj[k] !== null) {\n Object.assign(acc, flatten(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {});\n}\n\nfunction providePath(result, path, value) {\n const keys = path.split(\".\").map((k) => k.match(/^[0-9]+$/) ? +k : k);\n let current = result;\n let previous = null;\n for (let i = 0; ; ++i) {\n const ckey = keys[i];\n const pkey = keys[i - 1];\n if (Number.isInteger(ckey) && !Array.isArray(current)) {\n if (previous !== null) {\n previous[pkey] = current = [];\n } else {\n result = current = [];\n }\n }\n if (i === keys.length - 1) {\n //when value is undefined we only want to define the property if it's not defined \n current[ckey] = value !== undefined ? value : (ckey in current ? current[ckey] : null);\n return result;\n }\n if (current[ckey] === undefined) {\n current[ckey] = {};\n }\n previous = current;\n current = current[ckey];\n }\n}\n\nfunction extract(el) {\n if (el.getAttribute('type') === 'radio') {\n if (!el.checked) {\n return undefined;\n }\n return el.dataset['fulBindType'] === 'boolean' ? el.value === 'true' : el.value;\n }\n if (el.getAttribute('type') === 'checkbox') {\n return el.checked;\n }\n if (el.dataset['fulBindType'] === 'boolean') {\n return !el.value ? null : el.value === 'true';\n }\n if (el.tagName === 'INPUT' || el.tagName === 'SELECT'){\n return el.value === '' || el.value === undefined ? null : el.value; \n }\n return el.value;\n}\n\nfunction mutate(el, raw) {\n if (el.getAttribute('type') === 'radio') {\n el.checked = el.getAttribute('value') === raw;\n return;\n }\n if (el.getAttribute('type') === 'checkbox') {\n el.checked = raw;\n return;\n }\n el.value = raw;\n}\n\nclass Form extends ParsedElement() {\n static IGNORED_CHILDREN_SELECTOR = '.d-none, [hidden]';\n static SCROLL_OFFSET = 50;\n static INVALID_CLASS = 'is-invalid';\n render() {\n const form = document.createElement('form');\n form.replaceChildren(...this.childNodes);\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n this.spinning(async () => {\n await this.submitter?.(this.values, this);\n });\n })\n this.replaceChildren(form);\n }\n spinner(spin) {\n this.querySelectorAll('ful-spinner').forEach(el => el.hidden = !spin)\n this.querySelectorAll('[type=submit],[type=reset]').forEach(el => el.disabled = spin)\n }\n async remoting(fn) {\n try {\n await fn();\n } catch (e) {\n if (e instanceof Failure) {\n this.errors = e.problems;\n }\n throw e;\n }\n }\n async spinningUntilError(fn) {\n this.spinner(true)\n try {\n await this.remoting(fn);\n } catch(e) {\n this.spinner(false);\n throw e;\n }\n }\n async spinning(fn) {\n this.spinner(true)\n try {\n await this.remoting(fn);\n } finally {\n this.spinner(false);\n }\n }\n set values(vs) {\n for (const [flattenedKey, value] of Object.entries(flatten(vs, ''))) {\n this.querySelectorAll(`[name='${CSS.escape(flattenedKey)}']`).forEach(el => mutate(el, value));\n }\n }\n get values() {\n return Array.from(this.querySelectorAll('[name]'))\n .filter((el) => {\n if (el.dataset['fulBindInclude'] === 'never') {\n return false;\n }\n return el.dataset['fulBindInclude'] === 'always' || el.closest(Form.IGNORED_CHILDREN_SELECTOR) === null;\n })\n .reduce((result, el) => {\n return providePath(result, el.getAttribute('name'), extract(el));\n }, {});\n }\n set errors(es) {\n const fieldErrors = es.filter((e) => e.type === 'FIELD_ERROR' || e.type === 'INVALID_FORMAT');\n const globalErrors = es.filter((e) => e.type !== 'FIELD_ERROR' && e.type !== 'INVALID_FORMAT');\n this.querySelectorAll(`.${Form.INVALID_CLASS}`).forEach(el => el.classList.remove(Form.INVALID_CLASS));\n this.querySelectorAll(\"ful-errors\").forEach(el => {\n el.replaceChildren();\n el.setAttribute('hidden', '');\n });\n fieldErrors.forEach((e) => {\n const name = e.context.replace(\"[\", \".\").replace(\"].\", \".\");\n const validationTargetsSelector = `[name='${CSS.escape(name)}'] [ful-validation-target],[name='${CSS.escape(name)}']:not(:has([ful-validation-target]))`;\n this.querySelectorAll(validationTargetsSelector).forEach(input => input.classList.add(Form.INVALID_CLASS));\n const fieldErrorsSelector = `ful-field-error[field='${CSS.escape(name)}']`;\n this.querySelectorAll(fieldErrorsSelector).forEach(el => el.innerText = e.reason);\n });\n this.querySelectorAll(\"ful-errors\").forEach(el => {\n el.innerText = globalErrors.map(e => e.reason).join(\"\\n\");\n if (globalErrors.length !== 0) {\n el.removeAttribute('hidden');\n }\n });\n if (!this.hasAttribute('scroll-on-error')) {\n return;\n }\n const ys = Array.from(this.querySelectorAll(`[ful-validated-field]:has(.${Form.INVALID_CLASS}) ful-field-error`))\n .map(el => el.parentElement ? el.parentElement : el)\n .map(el => el.getBoundingClientRect().y + window.scrollY);\n const miny = Math.min(...ys);\n if (miny !== Infinity) {\n window.scroll(window.scrollX, miny > Form.SCROLL_OFFSET ? miny - Form.SCROLL_OFFSET : 0);\n }\n }\n}\n\nexport { Form };\n","import { Attributes, ParsedElement } from \"./elements.mjs\"\n\n\nconst INPUT_TEMPLATE = `\n<div ful-validated-field>\n <label data-tpl-for=\"id\" class=\"form-label\">{{{{ slots.default }}}}</label>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n <div data-tpl-if=\"slots.before\" data-tpl-remove=\"tag\">{{{{ slots.before }}}}</div>\n {{{{ slots.input }}}} \n <div data-tpl-if=\"slots.after\" data-tpl-remove=\"tag\">{{{{ slots.after }}}}</div>\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error data-tpl-if=\"name\" data-tpl-field=\"name\"></ful-field-error>\n</div>\n`;\n\nconst makeInputFragment = (el, template, slots) => {\n const input = el.input = slots.input = slots.input?.firstElementChild ?? (() => {\n const el = document.createElement(\"input\")\n el.classList.add(\"form-control\");\n return el;\n })();\n input.setAttribute('ful-validation-target', '');\n input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n el.dispatchEvent(new CustomEvent('change', { \n bubbles: true, \n cancelable: false, \n detail: {\n value: el.value\n }\n }));\n });\n const id = input.getAttribute('id') ?? el.getAttribute('input-id') ?? Attributes.uid('ful-input');\n Attributes.forward('input-', el, slots.input)\n Attributes.defaultValue(slots.input, \"id\", id);\n Attributes.defaultValue(slots.input, \"type\", \"text\");\n Attributes.defaultValue(slots.input, \"placeholder\", \" \");\n const name = el.getAttribute('name');\n return template.render(el, { id, name, slots });\n}\n\nclass Input extends ParsedElement({\n observed: ['value'],\n slots: true,\n template: INPUT_TEMPLATE\n}){\n render(template, slots) {\n const fragment = makeInputFragment(this, template, slots);\n this.replaceChildren(fragment);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\n\nexport { makeInputFragment, INPUT_TEMPLATE, Input };\n","import { Fragments, Attributes, ParsedElement } from \"./elements.mjs\"\n\n/**\n * <script src=\"tom-select.complete.js\"></script>\n * <link href=\"tom-select.bootstrap5.css\" rel=\"stylesheet\" />\n */\n\nclass Select extends ParsedElement({\n observed: [\"value\"],\n slots: true,\n template: `\n <div ful-validated-field>\n <label data-tpl-for=\"tsId\" class=\"form-label\">{{{{ slots.default }}}}</label>\n {{{{ input }}}}\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n <div data-tpl-if=\"slots.before\" data-tpl-remove=\"tag\">{{{{ slots.before }}}}</div>\n {{{{ slots.input }}}} \n <div data-tpl-if=\"slots.after\" data-tpl-remove=\"tag\">{{{{ slots.after }}}}</div>\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error data-tpl-if=\"name\" data-tpl-field=\"name\"></ful-field-error>\n </div>\n `\n}) {\n constructor(tsConfig) {\n super();\n this.tsConfig = tsConfig;\n }\n render(template, slots) {\n const type = this.getAttribute(\"type\") ?? 'local';\n const remote = type != 'local';\n const loadOnce = this.getAttribute('load') != 'always';\n const name = this.getAttribute('name');\n const input = slots.input = slots.input?.firstElementChild ?? (() => {\n return document.createElement(\"select\");\n })();\n input.setAttribute('ful-validation-target', '');\n\n const id = input.getAttribute('id') ?? this.getAttribute('input-id') ?? Attributes.uid('ful-select');\n const tsId = `${id}-ts-control`;\n Attributes.forward('input-', this, input)\n Attributes.defaultValue(input, \"id\", id);\n Attributes.defaultValue(input, \"placeholder\", \" \");\n\n //tomselect needs the input to have a parent.\n //se we move the input to a fragment\n slots.input = Fragments.from(input);\n\n this.loaded = !remote;\n\n const tsDefaultConfig = {\n render: {\n loading: () => '<ful-spinner class=\"centered p-2\"></ful-spinner>'\n }\n }\n\n this._remote = remote;\n // we need to await this load in setValue when remote is configured and the option\n // is not loaded yet.\n // tomselect settings.load does not retun a promise as it wraps the configured load function\n // with a debouncer\n this._unwrappedRemoteLoad = async (query, callback) => {\n\n if (!remote || remote && loadOnce && this.loaded) {\n callback();\n return;\n }\n const type = query && query.hasOwnProperty('byId') ? 'id' : 'query';\n const qvalue = type === 'id' ? query.byId : query;\n const data = await (this.#loader ? this.#loader(qvalue, type) : []);\n if (type !== 'id') {\n this.loaded = true;\n }\n callback(data);\n };\n this.ts = new TomSelect(input, Object.assign(remote ? {\n preload: 'focus',\n load: this._unwrappedRemoteLoad,\n shouldLoad: (query) => this.shouldLoad ? this.shouldLoad(query) : true\n } : {}, tsDefaultConfig, this.tsConfig));\n this.ts.on('change', value => {\n this.dispatchEvent(new CustomEvent('change', { \n bubbles: true, \n cancelable: false, \n detail: {\n value: this.value\n }\n }));\n });\n //we remove the input to move it\n input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n });\n input.remove();\n template.renderTo(this, { id, tsId, name, input, slots });\n }\n #loader;\n set loader(l) {\n this.#loader = l;\n // loader can be configured later so we load now\n if (this.hasAttribute('value')) {\n this.value = this.getAttribute(\"value\");\n }\n }\n get value() {\n const v = this.ts.getValue();\n return v === '' ? null : v;\n }\n set value(value) {\n (async () => {\n if (this._remote) {\n await this._unwrappedRemoteLoad({ byId: value }, this.ts.loadCallback.bind(this.ts));\n }\n const silent = true;\n this.ts.setValue(value, silent);\n })();\n }\n}\n\nexport { Select };\n","import { Attributes, Fragments, ParsedElement } from \"./elements.mjs\"\n\nclass RadioGroup extends ParsedElement({\n observed: ['value', 'disabled:state'],\n slots: true,\n template: `\n <fieldset ful-validated-field>\n <legend class=\"form-label\">\n {{{{ slots.default }}}}\n </legend>\n <header data-tpl-if=\"slots.header\">\n {{{{ slots.header }}}}\n </header>\n <section>\n <div class=\"label-wrapper\" data-tpl-each=\"inputsAndLabels\" data-tpl-var=\"ial\">\n <label>\n {{{{ ial[0] }}}}\n {{{{ ial[1] }}}}\n </label>\n </div>\n </section>\n <ful-field-error data-tpl-if=\"name\" data-tpl-field=\"name\"></ful-field-error>\n <footer data-tpl-if=\"slots.footer\">\n {{{{ slots.footer }}}}\n </footer>\n </fieldset>\n `\n}) {\n render(template, slots) {\n const name = this.getAttribute('name') ?? Attributes.uid('ful-radiogroup');\n const radioEls = Array.from(slots.default.querySelectorAll('ful-radio'));\n const inputsAndLabels = radioEls.map(el => {\n const input = document.createElement('input');\n input.setAttribute('type', 'radio');\n Attributes.forward('input-', this, input);\n Attributes.forward('', el, input);\n input.setAttribute('name', `${name}-ignore`);\n input.setAttribute('ful-validation-target', '');\n input.dataset['fulBindInclude'] = 'never';\n input.addEventListener('change', evt => {\n evt.stopPropagation();\n //change is not cancelable\n this.dispatchEvent(new CustomEvent('change', { \n bubbles: true, \n cancelable: false, \n detail: {\n value: this.value\n }\n })); \n }); \n const label = Fragments.fromChildNodes(el);\n return [input, label];\n });\n\n radioEls.forEach(el => el.remove());\n template.renderTo(this, {name, slots, inputsAndLabels});\n }\n get value() {\n const checked = this.querySelector('input[type=radio]:checked');\n return checked ? checked.value : null;\n }\n set value(value) {\n this.querySelector(`input[type=radio][value=${CSS.escape(value)}]`).checked = true;\n }\n}\n\n\nexport { RadioGroup };","import { ParsedElement } from \"./elements.mjs\"\n\nclass Spinner extends ParsedElement({\n slots: true,\n template: `\n <div class=\"ful-spinner-wrapper\">\n <div class=\"ful-spinner-text\">{{{{ slots.default }}}}</div>\n <div class=\"ful-spinner-icon\"></div>\n </div>\n `\n}) {\n render(template, slots) {\n template.renderTo(this, { slots });\n }\n}\n\nexport { Spinner };"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optionfactory/ful",
3
- "version": "0.77.0",
3
+ "version": "0.79.0",
4
4
  "main": "./dist/ful.iife.js",
5
5
  "module": "./dist/ful.mjs",
6
6
  "files": [