@optionfactory/ful 0.20.0 → 0.21.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.iife.js CHANGED
@@ -227,9 +227,10 @@ var ful = (function (exports) {
227
227
  this.interceptors = interceptors || [];
228
228
  }
229
229
  async fetch(resource, options) {
230
- const interceptors = [...this.interceptors, ...options.interceptors || [], new HttpCall()];
230
+ const opts = options || {};
231
+ const interceptors = [...this.interceptors, ...opts.interceptors || [], new HttpCall()];
231
232
  const chain = new HttpInterceptorChain(interceptors, 0);
232
- return await chain.proceed({resource, options});
233
+ return await chain.proceed({resource, opts});
233
234
  }
234
235
  async json(resource, options) {
235
236
  try {
@@ -254,6 +255,17 @@ var ful = (function (exports) {
254
255
  }
255
256
  }
256
257
 
258
+ function jsonRequest(method, body, headers){
259
+ return {
260
+ headers: {
261
+ "Content-Type": "application/json",
262
+ ...headers
263
+ },
264
+ method: method,
265
+ body: JSON.stringify(body)
266
+ }
267
+ }
268
+
257
269
  /* global Infinity, CSS */
258
270
 
259
271
  class CustomElements {
@@ -1149,6 +1161,7 @@ var ful = (function (exports) {
1149
1161
  exports.Spinner = Spinner;
1150
1162
  exports.VersionedStorage = VersionedStorage;
1151
1163
  exports.Wizard = Wizard;
1164
+ exports.jsonRequest = jsonRequest;
1152
1165
  exports.timing = timing;
1153
1166
 
1154
1167
  Object.defineProperty(exports, '__esModule', { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"ful.iife.js","sources":["../src/encodings.mjs","../src/observable.mjs","../src/http-client.mjs","../src/forms.mjs","../src/storage.mjs","../src/oauth-authorization-code.mjs","../src/timing.mjs","../src/wizard.mjs","../src/app.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 };","\nclass Observable {\n constructor() {\n this.listeners = {};\n }\n fireSync(event, data, initialAcc) {\n const listeners = this.listeners[event] || [];\n let acc = initialAcc;\n for (const l of listeners) {\n acc = l(data, this, acc);\n }\n return acc;\n }\n async fire(event, data, initialAcc) {\n const listeners = this.listeners[event] || [];\n let acc = initialAcc;\n for (const l of listeners) {\n acc = await l(data, this, acc);\n }\n return acc;\n }\n on(event, listener) {\n this.listeners[event] = this.listeners[event] || [];\n this.listeners[event].push(listener);\n }\n un(event, listener) {\n const listeners = this.listeners[event] || [];\n const idx = listeners.indexOf(listener);\n return idx === -1 ? [] : listeners.splice(idx, 1);\n }\n static mixin(self) {\n self.listeners = {}\n self.fireSync = Observable.prototype.fireSync;\n self.fire = Observable.prototype.fire;\n self.on = Observable.prototype.on;\n self.un = Observable.prototype.un;\n }\n\n}\n\n\nexport { Observable };","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 = 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 fetch(resource, options) {\n const interceptors = [...this.interceptors, ...options.interceptors || [], new HttpCall()];\n const chain = new HttpInterceptorChain(interceptors, 0);\n return await chain.proceed({resource, options});\n }\n async json(resource, options) {\n try {\n const response = await this.fetch(resource, options);\n if (!response.ok) {\n const message = await response.text();\n throw Failure.fromResponse(response.status, message);\n }\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\n\n\nexport { HttpClient, Failure };\n","/* global Infinity, CSS */\n\nimport { Failure } from \"./http-client.mjs\";\nimport { Observable } from \"./observable.mjs\";\n\nclass CustomElements {\n static id = 0;\n static uid(prefix) {\n return `${prefix}-${++CustomElements.id}`;\n }\n static forwardAttributes(from, to, except) {\n const ans = from.getAttributeNames().filter(a => except.indexOf(a) === -1)\n .filter(a => a[0] === '@')\n .forEach(a => {\n if (a === '@class') {\n to.classList.add(...from.getAttribute(\"@class\").split(\" \").filter(a => a.length));\n return;\n }\n to.setAttribute(a.substring(1), from.getAttribute(a))\n });\n }\n static extractSlots(el) {\n const slotted = Object.fromEntries([...el.querySelectorAll(\"[slot]\")].map(el => {\n el.parentElement.removeChild(el);\n const slot = el.getAttribute(\"slot\");\n el.removeAttribute(\"slot\");\n return [slot, el];\n }));\n slotted.default = new DocumentFragment();\n slotted.default.append(...el.childNodes);\n return slotted;\n }\n static labelAndInputGroup(id, name, isFloating, slotted) {\n if (isFloating) {\n /**\n * <div class=\"input-group has-validation\">\n * <span data-tpl-if=\"slotted.before\" class=\"input-group-text\">{{{{ slotted.before }}}}</span>\n * <div class=\"form-floating\">\n * {{{{ slotted.input }}}} \n * <label data-tpl-for=\"name\" class=\"form-label\">{{{{ slotted.default }}}}</label>\n * </div>\n * <span data-tpl-if=\"slotted.after\" class=\"input-group-text\">{{{{ slotted.after }}}}</span>\n * <ful-field-error data-tpl-field=\"name\"></ful-field-error> \n * </div> \n */\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", id);\n label.classList.add('form-label');\n label.append(slotted.default);\n\n const ff = document.createElement('div');\n ff.classList.add(\"form-floating\");\n ff.append(slotted.input, label);\n\n const ffe = document.createElement('ful-field-error');\n ffe.setAttribute(\"field\", name);\n\n const ig = document.createElement(\"div\");\n ig.classList.add('input-group', 'has-validtion');\n\n if (slotted.before) {\n ig.append(slotted.before);\n } else if (slotted.ibefore) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.ibefore)\n ig.append(igt);\n }\n ig.append(ff);\n if (slotted.after) {\n ig.append(slotted.after);\n } else if (slotted.iafter) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.iafter)\n ig.append(igt);\n }\n ig.append(ffe);\n return ig;\n }\n /**\n <label data-tpl-for=\"name\" class=\"form-label\">{{{{ slotted.default }}}}</label>\n <div class=\"input-group has-validation\">\n <span data-tpl-if=\"slotted.before\" class=\"input-group-text\">{{{{ slotted.before }}}}</span>\n {{{{ slotted.input }}}} \n <span data-tpl-if=\"slotted.after\" class=\"input-group-text\">{{{{ slotted.after }}}}</span>\n <ful-field-error data-tpl-field=\"name\"></ful-field-error> \n </div> \n */\n\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", name);\n label.classList.add('form-label');\n label.append(slotted.default);\n\n const ffe = document.createElement('ful-field-error');\n ffe.setAttribute(\"field\", name);\n\n const ig = document.createElement(\"div\");\n ig.classList.add('input-group', 'has-validation');\n\n if (slotted.before) {\n ig.append(slotted.before);\n } else if (slotted.ibefore) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.ibefore)\n ig.append(igt);\n }\n ig.append(slotted.input);\n if (slotted.after) {\n ig.append(slotted.after);\n } else if (slotted.iafter) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.iafter)\n ig.append(igt);\n }\n ig.append(ffe);\n\n const fragment = new DocumentFragment();\n fragment.append(label, ig)\n return fragment;\n }\n\n}\n\n\nclass FieldError extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.classList.add('invalid-feedback');\n }\n static configure() {\n customElements.define('ful-field-error', FieldError);\n }\n}\n\nclass Errors extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.classList.add('alert', 'alert-danger', 'd-none');\n }\n static configure() {\n customElements.define('ful-errors', Errors);\n }\n\n}\n\nclass Spinner extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.classList.add('spinner-border', 'spinner-border-sm', 'd-none');\n this.setAttribute(\"aria-hidden\", \"true\");\n }\n show() {\n this.classList.remove(\"d-none\");\n }\n hide() {\n this.classList.add(\"d-none\");\n }\n static configure() {\n customElements.define('ful-spinner', Spinner);\n }\n}\n\n\n\nclass Input extends HTMLElement {\n constructor() {\n super();\n const id = CustomElements.uid('ful-input');\n const name = this.getAttribute('@name');\n const floating = this.hasAttribute('@floating');\n const slotted = CustomElements.extractSlots(this);\n slotted.input = slotted.input || (() => {\n const el = document.createElement(\"input\")\n el.classList.add(\"form-control\");\n return el;\n })();\n CustomElements.forwardAttributes(this, slotted.input, ['@floating'])\n const attrIfMissing = (el, k, v) => !el.hasAttribute(k) && el.setAttribute(k, v);\n attrIfMissing(slotted.input, \"name\", id);\n attrIfMissing(slotted.input, \"id\", id);\n attrIfMissing(slotted.input, \"type\", \"text\");\n attrIfMissing(slotted.input, \"placeholder\", \" \");\n this.innerHTML = '';\n this.append(CustomElements.labelAndInputGroup(id, name || id, floating, slotted));\n }\n static configure() {\n customElements.define('ful-input', Input);\n }\n}\n\n\n\n/**\n * <script src=\"tom-select.complete.js\"></script>\n * <link href=\"tom-select.bootstrap5.css\" rel=\"stylesheet\" />\n */\nclass Select extends HTMLElement {\n constructor(tsConfig) {\n super();\n Observable.mixin(this);\n const id = CustomElements.uid('ful-select');\n const name = this.getAttribute('@name');\n const floating = this.hasAttribute('@floating');\n const remote = this.hasAttribute('@remote');\n const slotted = CustomElements.extractSlots(this);\n slotted.input = slotted.input || (() => {\n return document.createElement(\"select\");\n })();\n CustomElements.forwardAttributes(this, slotted.input, ['@floating', '@remote'])\n const attrIfMissing = (el, k, v) => !el.hasAttribute(k) && el.setAttribute(k, v);\n attrIfMissing(slotted.input, \"name\", id);\n attrIfMissing(slotted.input, \"id\", id);\n attrIfMissing(slotted.input, \"placeholder\", \" \");\n this.innerHTML = '';\n this.append(CustomElements.labelAndInputGroup(id, name || id, floating, slotted));\n this.loaded = !remote;\n this.ts = new TomSelect(slotted.input, Object.assign(remote ? {\n preload: 'focus',\n load: async (query, callback) => {\n if (this.loaded) {\n callback();\n return;\n }\n const data = await this.fire('load', query, [])\n this.loaded = true;\n callback(data); \n } \n } : {}, tsConfig));\n slotted.input.setValue = this.setValue.bind(this);\n slotted.input.getValue = this.getValue.bind(this);\n }\n async setValue(v){\n if(!this.loaded){\n await this.ts.load();\n }\n this.ts.setValue(v);\n }\n getValue(){\n const v = this.ts.getValue();\n return v === '' ? null : v;\n }\n static custom(tagName, configuration) {\n customElements.define(tagName, class extends Select {\n constructor() {\n super(configuration);\n }\n });\n }\n static configure() {\n return Select.custom('ful-select');\n }\n\n}\n\nclass Form extends HTMLElement {\n constructor({ mutators, extractors, valueHoldersSelector, ignoredChildrenSelector }) {\n super();\n Observable.mixin(this);\n this.mutators = mutators || {}\n this.extractors = extractors || {}\n this.valueHoldersSelector = valueHoldersSelector || '[name]';\n this.ignoredChildrenSelector = ignoredChildrenSelector || '.d-none';\n\n const form = document.createElement('form');\n form.append(...this.childNodes);\n this.appendChild(form);\n\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n this.spinner(true);\n try {\n await this.fire('submit', this.getValues(), this);\n } catch (e) {\n if (e instanceof Failure) {\n this.setErrors(e.problems);\n return;\n }\n throw e;\n } finally {\n this.spinner(false)\n }\n })\n }\n spinner(spin) {\n this.querySelectorAll('ful-spinner').forEach(el => {\n el[spin ? 'show' : 'hide']();\n })\n this.querySelectorAll('[type=submit],[type=reset]').forEach(el => {\n el.disabled = spin;\n })\n }\n setValues(values) {\n for (let k in values) {\n if (!values.hasOwnProperty(k)) {\n continue;\n }\n Array.from(this.querySelectorAll(`[name='${CSS.escape(k)}']`)).forEach((el) => {\n Form.mutate(this.mutators, el, values[k], k, values);\n });\n }\n }\n getValues() {\n return Array.from(this.querySelectorAll(this.valueHoldersSelector))\n .filter((el) => {\n if (el.dataset['fulBindInclude'] === 'never') {\n return false;\n }\n return el.dataset['fulBindInclude'] === 'always' || el.closest(this.ignoredChildrenSelector) === null;\n })\n .reduce((result, el) => {\n return Form.providePath(result, el.getAttribute('name'), Form.extract(this.extractors, el));\n }, {});\n }\n setErrors(errors, scroll) {\n this.clearErrors();\n errors\n .filter((e) => e.type === 'FIELD_ERROR' || e.type === 'INVALID_FORMAT')\n .forEach((e) => {\n const name = e.context.replace(\"[\", \".\").replace(\"].\", \".\");\n this.querySelectorAll(`[name='${CSS.escape(name)}']`)\n .forEach(input => {\n input.classList.add('is-invalid')\n if (input.parentElement.classList.contains(\"form-floating\")) {\n input.parentElement.classList.add('is-invalid')\n }\n });\n this.querySelectorAll(`ful-field-error[field='${CSS.escape(name)}']`)\n .forEach(el => el.innerText = e.reason);\n });\n this.querySelectorAll(\"ful-errors\")\n .forEach(el => {\n const globalErrors = errors.filter((e) => e.type !== 'FIELD_ERROR' && e.type !== 'INVALID_FORMAT');\n el.innerHTML = globalErrors.map(e => e.reason).join(\"\\n\");\n if (globalErrors.length !== 0) {\n el.classList.remove('d-none');\n }\n })\n\n if (!scroll) {\n return;\n }\n const ys = Array.from(this.querySelectorAll('ful-field-error:not(.d-none)'))\n .map(el => el.getBoundingClientRect().y + window.scrollY)\n const miny = Math.min(...ys);\n if (miny !== Infinity) {\n window.scroll(window.scrollX, miny > 100 ? miny - 100 : 0);\n }\n }\n clearErrors() {\n this.querySelectorAll('[name].is-invalid, .form-floating.is-invalid')\n .forEach(el => el.classList.remove('is-invalid'));\n this.querySelectorAll(\"ful-errors\")\n .forEach(el => {\n el.innerHTML = '';\n el.classList.add('d-none');\n });\n }\n static extract(extractors, el) {\n const maybeExtractor = extractors[el.dataset['fulBindExtractor']] || extractors[el.dataset['fulBindProvide']];\n if (maybeExtractor) {\n return maybeExtractor(el);\n }\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.getValue) {\n return el.getValue();\n }\n return el.value || null;\n }\n static mutate(mutators, el, raw, key, values) {\n const maybeMutator = mutators[el.dataset['fulBindMutator']] || mutators[el.dataset['fulBindProvide']];\n if (maybeMutator) {\n maybeMutator(el, raw, key, values);\n return;\n }\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 if (el.setValue) {\n el.setValue(raw);\n return;\n }\n el.value = raw;\n }\n\n static 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 static custom(tagName, configuration) {\n customElements.define(tagName, class extends Form {\n constructor() {\n super(configuration);\n }\n });\n }\n static configure(configuration) {\n FieldError.configure();\n Errors.configure();\n Spinner.configure();\n Input.configure();\n Select.configure();\n Form.custom('ful-form', configuration || {});\n }\n}\n\n\n\n\nexport { CustomElements, FieldError, Errors, Spinner, Input, Select, Form };\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 = this._parseToken(token.access_token);\n this.refreshToken = this._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 Wizard extends HTMLElement {\n constructor() {\n super();\n this.progress = [...this.children].filter(e => e.matches(\"header,ol,ul\"));\n\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n if (current === undefined && children.length > 0) {\n children[0].classList.add('active');\n }\n });\n if (this.querySelector('section.current') === null) {\n const firstSection = this.querySelector('section:first-of-type');\n if (firstSection !== null) {\n firstSection.classList.add('current');\n }\n }\n }\n next() {\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n current?.classList.remove('active');\n current?.nextElementSibling?.classList.add('active');\n });\n const currentSection = this.querySelector('section.current');\n currentSection.classList.remove(\"current\");\n currentSection.nextElementSibling.classList.add('current');\n\n this.dispatchEvent(new CustomEvent('wizard:activate', {\n bubbles: true,\n cancelable: true\n }));\n\n }\n prev() {\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n current?.classList.remove('active');\n current?.previousElementSibling?.classList.add('active');\n });\n const currentSection = this.querySelector('section.current');\n currentSection.classList.remove(\"current\");\n currentSection.previousElementSibling.classList.add('current');\n this.dispatchEvent(new CustomEvent('wizard:activate', {\n bubbles: true,\n cancelable: true\n }));\n }\n moveTo = function (n) {\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n current?.classList.remove('active');\n p.children[+n]?.classList.add('active');\n });\n const currentSection = this.querySelector('section.current');\n currentSection?.classList.remove(\"current\");\n const nthSection = this.querySelector(`section:nth-child(${+n})`);\n nthSection.classList.add('current');\n this.dispatchEvent(new CustomEvent('wizard:activate', {\n bubbles: true,\n cancelable: true\n }));\n }\n static custom(tagName, configuration) {\n customElements.define(tagName, class extends Wizard {\n constructor() {\n super(configuration);\n }\n });\n }\n static configure() {\n return Wizard.custom('ful-wizard');\n }\n}\n\n\n\n\nexport { Wizard };\n","class App {\n constructor() {\n this.configurers = [];\n this.initializers = [];\n this.handlers = [];\n this.running = false;\n document.addEventListener(\"DOMContentLoaded\", async () => {\n await Promise.all(this.configurers);\n await Promise.all(this.initializers.map(h => Promise.resolve(h())));\n await Promise.all(this.handlers.map(h => Promise.resolve(h())));\n });\n }\n configure(cb) {\n this.configurers.push(Promise.resolve(cb()));\n return this;\n }\n initialize(cb) {\n this.initializers.push(cb);\n return this;\n }\n ready(cb) {\n this.handlers.push(cb);\n return this;\n }\n}\n\nexport { App };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ful.iife.js","sources":["../src/encodings.mjs","../src/observable.mjs","../src/http-client.mjs","../src/forms.mjs","../src/storage.mjs","../src/oauth-authorization-code.mjs","../src/timing.mjs","../src/wizard.mjs","../src/app.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 };","\nclass Observable {\n constructor() {\n this.listeners = {};\n }\n fireSync(event, data, initialAcc) {\n const listeners = this.listeners[event] || [];\n let acc = initialAcc;\n for (const l of listeners) {\n acc = l(data, this, acc);\n }\n return acc;\n }\n async fire(event, data, initialAcc) {\n const listeners = this.listeners[event] || [];\n let acc = initialAcc;\n for (const l of listeners) {\n acc = await l(data, this, acc);\n }\n return acc;\n }\n on(event, listener) {\n this.listeners[event] = this.listeners[event] || [];\n this.listeners[event].push(listener);\n }\n un(event, listener) {\n const listeners = this.listeners[event] || [];\n const idx = listeners.indexOf(listener);\n return idx === -1 ? [] : listeners.splice(idx, 1);\n }\n static mixin(self) {\n self.listeners = {}\n self.fireSync = Observable.prototype.fireSync;\n self.fire = Observable.prototype.fire;\n self.on = Observable.prototype.on;\n self.un = Observable.prototype.un;\n }\n\n}\n\n\nexport { Observable };","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 = 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 fetch(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, opts});\n }\n async json(resource, options) {\n try {\n const response = await this.fetch(resource, options);\n if (!response.ok) {\n const message = await response.text();\n throw Failure.fromResponse(response.status, message);\n }\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}\n\n\nexport { HttpClient, Failure, jsonRequest };\n","/* global Infinity, CSS */\n\nimport { Failure } from \"./http-client.mjs\";\nimport { Observable } from \"./observable.mjs\";\n\nclass CustomElements {\n static id = 0;\n static uid(prefix) {\n return `${prefix}-${++CustomElements.id}`;\n }\n static forwardAttributes(from, to, except) {\n const ans = from.getAttributeNames().filter(a => except.indexOf(a) === -1)\n .filter(a => a[0] === '@')\n .forEach(a => {\n if (a === '@class') {\n to.classList.add(...from.getAttribute(\"@class\").split(\" \").filter(a => a.length));\n return;\n }\n to.setAttribute(a.substring(1), from.getAttribute(a))\n });\n }\n static extractSlots(el) {\n const slotted = Object.fromEntries([...el.querySelectorAll(\"[slot]\")].map(el => {\n el.parentElement.removeChild(el);\n const slot = el.getAttribute(\"slot\");\n el.removeAttribute(\"slot\");\n return [slot, el];\n }));\n slotted.default = new DocumentFragment();\n slotted.default.append(...el.childNodes);\n return slotted;\n }\n static labelAndInputGroup(id, name, isFloating, slotted) {\n if (isFloating) {\n /**\n * <div class=\"input-group has-validation\">\n * <span data-tpl-if=\"slotted.before\" class=\"input-group-text\">{{{{ slotted.before }}}}</span>\n * <div class=\"form-floating\">\n * {{{{ slotted.input }}}} \n * <label data-tpl-for=\"name\" class=\"form-label\">{{{{ slotted.default }}}}</label>\n * </div>\n * <span data-tpl-if=\"slotted.after\" class=\"input-group-text\">{{{{ slotted.after }}}}</span>\n * <ful-field-error data-tpl-field=\"name\"></ful-field-error> \n * </div> \n */\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", id);\n label.classList.add('form-label');\n label.append(slotted.default);\n\n const ff = document.createElement('div');\n ff.classList.add(\"form-floating\");\n ff.append(slotted.input, label);\n\n const ffe = document.createElement('ful-field-error');\n ffe.setAttribute(\"field\", name);\n\n const ig = document.createElement(\"div\");\n ig.classList.add('input-group', 'has-validtion');\n\n if (slotted.before) {\n ig.append(slotted.before);\n } else if (slotted.ibefore) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.ibefore)\n ig.append(igt);\n }\n ig.append(ff);\n if (slotted.after) {\n ig.append(slotted.after);\n } else if (slotted.iafter) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.iafter)\n ig.append(igt);\n }\n ig.append(ffe);\n return ig;\n }\n /**\n <label data-tpl-for=\"name\" class=\"form-label\">{{{{ slotted.default }}}}</label>\n <div class=\"input-group has-validation\">\n <span data-tpl-if=\"slotted.before\" class=\"input-group-text\">{{{{ slotted.before }}}}</span>\n {{{{ slotted.input }}}} \n <span data-tpl-if=\"slotted.after\" class=\"input-group-text\">{{{{ slotted.after }}}}</span>\n <ful-field-error data-tpl-field=\"name\"></ful-field-error> \n </div> \n */\n\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", name);\n label.classList.add('form-label');\n label.append(slotted.default);\n\n const ffe = document.createElement('ful-field-error');\n ffe.setAttribute(\"field\", name);\n\n const ig = document.createElement(\"div\");\n ig.classList.add('input-group', 'has-validation');\n\n if (slotted.before) {\n ig.append(slotted.before);\n } else if (slotted.ibefore) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.ibefore)\n ig.append(igt);\n }\n ig.append(slotted.input);\n if (slotted.after) {\n ig.append(slotted.after);\n } else if (slotted.iafter) {\n const igt = document.createElement('div');\n igt.classList.add('input-group-text')\n igt.append(slotted.iafter)\n ig.append(igt);\n }\n ig.append(ffe);\n\n const fragment = new DocumentFragment();\n fragment.append(label, ig)\n return fragment;\n }\n\n}\n\n\nclass FieldError extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.classList.add('invalid-feedback');\n }\n static configure() {\n customElements.define('ful-field-error', FieldError);\n }\n}\n\nclass Errors extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.classList.add('alert', 'alert-danger', 'd-none');\n }\n static configure() {\n customElements.define('ful-errors', Errors);\n }\n\n}\n\nclass Spinner extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.classList.add('spinner-border', 'spinner-border-sm', 'd-none');\n this.setAttribute(\"aria-hidden\", \"true\");\n }\n show() {\n this.classList.remove(\"d-none\");\n }\n hide() {\n this.classList.add(\"d-none\");\n }\n static configure() {\n customElements.define('ful-spinner', Spinner);\n }\n}\n\n\n\nclass Input extends HTMLElement {\n constructor() {\n super();\n const id = CustomElements.uid('ful-input');\n const name = this.getAttribute('@name');\n const floating = this.hasAttribute('@floating');\n const slotted = CustomElements.extractSlots(this);\n slotted.input = slotted.input || (() => {\n const el = document.createElement(\"input\")\n el.classList.add(\"form-control\");\n return el;\n })();\n CustomElements.forwardAttributes(this, slotted.input, ['@floating'])\n const attrIfMissing = (el, k, v) => !el.hasAttribute(k) && el.setAttribute(k, v);\n attrIfMissing(slotted.input, \"name\", id);\n attrIfMissing(slotted.input, \"id\", id);\n attrIfMissing(slotted.input, \"type\", \"text\");\n attrIfMissing(slotted.input, \"placeholder\", \" \");\n this.innerHTML = '';\n this.append(CustomElements.labelAndInputGroup(id, name || id, floating, slotted));\n }\n static configure() {\n customElements.define('ful-input', Input);\n }\n}\n\n\n\n/**\n * <script src=\"tom-select.complete.js\"></script>\n * <link href=\"tom-select.bootstrap5.css\" rel=\"stylesheet\" />\n */\nclass Select extends HTMLElement {\n constructor(tsConfig) {\n super();\n Observable.mixin(this);\n const id = CustomElements.uid('ful-select');\n const name = this.getAttribute('@name');\n const floating = this.hasAttribute('@floating');\n const remote = this.hasAttribute('@remote');\n const slotted = CustomElements.extractSlots(this);\n slotted.input = slotted.input || (() => {\n return document.createElement(\"select\");\n })();\n CustomElements.forwardAttributes(this, slotted.input, ['@floating', '@remote'])\n const attrIfMissing = (el, k, v) => !el.hasAttribute(k) && el.setAttribute(k, v);\n attrIfMissing(slotted.input, \"name\", id);\n attrIfMissing(slotted.input, \"id\", id);\n attrIfMissing(slotted.input, \"placeholder\", \" \");\n this.innerHTML = '';\n this.append(CustomElements.labelAndInputGroup(id, name || id, floating, slotted));\n this.loaded = !remote;\n this.ts = new TomSelect(slotted.input, Object.assign(remote ? {\n preload: 'focus',\n load: async (query, callback) => {\n if (this.loaded) {\n callback();\n return;\n }\n const data = await this.fire('load', query, [])\n this.loaded = true;\n callback(data); \n } \n } : {}, tsConfig));\n slotted.input.setValue = this.setValue.bind(this);\n slotted.input.getValue = this.getValue.bind(this);\n }\n async setValue(v){\n if(!this.loaded){\n await this.ts.load();\n }\n this.ts.setValue(v);\n }\n getValue(){\n const v = this.ts.getValue();\n return v === '' ? null : v;\n }\n static custom(tagName, configuration) {\n customElements.define(tagName, class extends Select {\n constructor() {\n super(configuration);\n }\n });\n }\n static configure() {\n return Select.custom('ful-select');\n }\n\n}\n\nclass Form extends HTMLElement {\n constructor({ mutators, extractors, valueHoldersSelector, ignoredChildrenSelector }) {\n super();\n Observable.mixin(this);\n this.mutators = mutators || {}\n this.extractors = extractors || {}\n this.valueHoldersSelector = valueHoldersSelector || '[name]';\n this.ignoredChildrenSelector = ignoredChildrenSelector || '.d-none';\n\n const form = document.createElement('form');\n form.append(...this.childNodes);\n this.appendChild(form);\n\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n this.spinner(true);\n try {\n await this.fire('submit', this.getValues(), this);\n } catch (e) {\n if (e instanceof Failure) {\n this.setErrors(e.problems);\n return;\n }\n throw e;\n } finally {\n this.spinner(false)\n }\n })\n }\n spinner(spin) {\n this.querySelectorAll('ful-spinner').forEach(el => {\n el[spin ? 'show' : 'hide']();\n })\n this.querySelectorAll('[type=submit],[type=reset]').forEach(el => {\n el.disabled = spin;\n })\n }\n setValues(values) {\n for (let k in values) {\n if (!values.hasOwnProperty(k)) {\n continue;\n }\n Array.from(this.querySelectorAll(`[name='${CSS.escape(k)}']`)).forEach((el) => {\n Form.mutate(this.mutators, el, values[k], k, values);\n });\n }\n }\n getValues() {\n return Array.from(this.querySelectorAll(this.valueHoldersSelector))\n .filter((el) => {\n if (el.dataset['fulBindInclude'] === 'never') {\n return false;\n }\n return el.dataset['fulBindInclude'] === 'always' || el.closest(this.ignoredChildrenSelector) === null;\n })\n .reduce((result, el) => {\n return Form.providePath(result, el.getAttribute('name'), Form.extract(this.extractors, el));\n }, {});\n }\n setErrors(errors, scroll) {\n this.clearErrors();\n errors\n .filter((e) => e.type === 'FIELD_ERROR' || e.type === 'INVALID_FORMAT')\n .forEach((e) => {\n const name = e.context.replace(\"[\", \".\").replace(\"].\", \".\");\n this.querySelectorAll(`[name='${CSS.escape(name)}']`)\n .forEach(input => {\n input.classList.add('is-invalid')\n if (input.parentElement.classList.contains(\"form-floating\")) {\n input.parentElement.classList.add('is-invalid')\n }\n });\n this.querySelectorAll(`ful-field-error[field='${CSS.escape(name)}']`)\n .forEach(el => el.innerText = e.reason);\n });\n this.querySelectorAll(\"ful-errors\")\n .forEach(el => {\n const globalErrors = errors.filter((e) => e.type !== 'FIELD_ERROR' && e.type !== 'INVALID_FORMAT');\n el.innerHTML = globalErrors.map(e => e.reason).join(\"\\n\");\n if (globalErrors.length !== 0) {\n el.classList.remove('d-none');\n }\n })\n\n if (!scroll) {\n return;\n }\n const ys = Array.from(this.querySelectorAll('ful-field-error:not(.d-none)'))\n .map(el => el.getBoundingClientRect().y + window.scrollY)\n const miny = Math.min(...ys);\n if (miny !== Infinity) {\n window.scroll(window.scrollX, miny > 100 ? miny - 100 : 0);\n }\n }\n clearErrors() {\n this.querySelectorAll('[name].is-invalid, .form-floating.is-invalid')\n .forEach(el => el.classList.remove('is-invalid'));\n this.querySelectorAll(\"ful-errors\")\n .forEach(el => {\n el.innerHTML = '';\n el.classList.add('d-none');\n });\n }\n static extract(extractors, el) {\n const maybeExtractor = extractors[el.dataset['fulBindExtractor']] || extractors[el.dataset['fulBindProvide']];\n if (maybeExtractor) {\n return maybeExtractor(el);\n }\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.getValue) {\n return el.getValue();\n }\n return el.value || null;\n }\n static mutate(mutators, el, raw, key, values) {\n const maybeMutator = mutators[el.dataset['fulBindMutator']] || mutators[el.dataset['fulBindProvide']];\n if (maybeMutator) {\n maybeMutator(el, raw, key, values);\n return;\n }\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 if (el.setValue) {\n el.setValue(raw);\n return;\n }\n el.value = raw;\n }\n\n static 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 static custom(tagName, configuration) {\n customElements.define(tagName, class extends Form {\n constructor() {\n super(configuration);\n }\n });\n }\n static configure(configuration) {\n FieldError.configure();\n Errors.configure();\n Spinner.configure();\n Input.configure();\n Select.configure();\n Form.custom('ful-form', configuration || {});\n }\n}\n\n\n\n\nexport { CustomElements, FieldError, Errors, Spinner, Input, Select, Form };\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 = this._parseToken(token.access_token);\n this.refreshToken = this._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 Wizard extends HTMLElement {\n constructor() {\n super();\n this.progress = [...this.children].filter(e => e.matches(\"header,ol,ul\"));\n\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n if (current === undefined && children.length > 0) {\n children[0].classList.add('active');\n }\n });\n if (this.querySelector('section.current') === null) {\n const firstSection = this.querySelector('section:first-of-type');\n if (firstSection !== null) {\n firstSection.classList.add('current');\n }\n }\n }\n next() {\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n current?.classList.remove('active');\n current?.nextElementSibling?.classList.add('active');\n });\n const currentSection = this.querySelector('section.current');\n currentSection.classList.remove(\"current\");\n currentSection.nextElementSibling.classList.add('current');\n\n this.dispatchEvent(new CustomEvent('wizard:activate', {\n bubbles: true,\n cancelable: true\n }));\n\n }\n prev() {\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n current?.classList.remove('active');\n current?.previousElementSibling?.classList.add('active');\n });\n const currentSection = this.querySelector('section.current');\n currentSection.classList.remove(\"current\");\n currentSection.previousElementSibling.classList.add('current');\n this.dispatchEvent(new CustomEvent('wizard:activate', {\n bubbles: true,\n cancelable: true\n }));\n }\n moveTo = function (n) {\n this.progress.forEach(p => {\n const children = [...p.children];\n const current = children.filter(e => e.matches(\".active\"))[0];\n current?.classList.remove('active');\n p.children[+n]?.classList.add('active');\n });\n const currentSection = this.querySelector('section.current');\n currentSection?.classList.remove(\"current\");\n const nthSection = this.querySelector(`section:nth-child(${+n})`);\n nthSection.classList.add('current');\n this.dispatchEvent(new CustomEvent('wizard:activate', {\n bubbles: true,\n cancelable: true\n }));\n }\n static custom(tagName, configuration) {\n customElements.define(tagName, class extends Wizard {\n constructor() {\n super(configuration);\n }\n });\n }\n static configure() {\n return Wizard.custom('ful-wizard');\n }\n}\n\n\n\n\nexport { Wizard };\n","class App {\n constructor() {\n this.configurers = [];\n this.initializers = [];\n this.handlers = [];\n this.running = false;\n document.addEventListener(\"DOMContentLoaded\", async () => {\n await Promise.all(this.configurers);\n await Promise.all(this.initializers.map(h => Promise.resolve(h())));\n await Promise.all(this.handlers.map(h => Promise.resolve(h())));\n });\n }\n configure(cb) {\n this.configurers.push(Promise.resolve(cb()));\n return this;\n }\n initialize(cb) {\n this.initializers.push(cb);\n return this;\n }\n ready(cb) {\n this.handlers.push(cb);\n return this;\n }\n}\n\nexport { App };\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var ful=function(e){"use strict";class t{static encode(e,s){const r=s||t.URL_SAFE,i=e.byteLength,n=new Uint8Array(e);let o="";for(let e=0;e<i;e+=3){o+=r[n[e]>>2]+r[(3&n[e])<<4|n[e+1]>>4]+r[(15&n[e+1])<<2|n[e+2]>>6]+r[63&n[e+2]]}return i%3==2?o=o.substring(0,o.length-1):i%3==1&&(o=o.substring(0,o.length-2)),o}static decode(e,s){const r=s||t.URL_SAFE;let i=Math.floor(.75*e.length);for(let t=0;t!==e.length&&"="===e[e.length-t-1];++t)--i;const n=new Uint8Array(i);let o=0,a=0;for(;o<.75*e.length;){const t=r.indexOf(e.charAt(a++)),s=r.indexOf(e.charAt(a++)),i=r.indexOf(e.charAt(a++)),c=r.indexOf(e.charAt(a++));n[o++]=t<<2|s>>4,n[o++]=(15&s)<<4|i>>2,n[o++]=(3&i)<<6|c}return n.buffer}}t.STANDARD="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t.URL_SAFE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";class s{constructor(){this.listeners={}}fireSync(e,t,s){const r=this.listeners[e]||[];let i=s;for(const e of r)i=e(t,this,i);return i}async fire(e,t,s){const r=this.listeners[e]||[];let i=s;for(const e of r)i=await e(t,this,i);return i}on(e,t){this.listeners[e]=this.listeners[e]||[],this.listeners[e].push(t)}un(e,t){const s=this.listeners[e]||[],r=s.indexOf(t);return-1===r?[]:s.splice(r,1)}static mixin(e){e.listeners={},e.fireSync=s.prototype.fireSync,e.fire=s.prototype.fire,e.on=s.prototype.on,e.un=s.prototype.un}}class r{constructor(){const e=document.querySelector("meta[name='context']").getAttribute("content");this.context=e.endsWith("/")?e.substring(0,e.length-1):e}async intercept(e,t){const s=e.resource.startsWith("/")?"":"/";return e.resource=this.context+s+e.resource,await t.proceed(e)}}class i{constructor(){this.k=document.querySelector("meta[name='_csrf_header']").getAttribute("content"),this.v=document.querySelector("meta[name='_csrf']").getAttribute("content")}async intercept(e,t){const s=new Headers(e.options.headers);return s.set(this.k,this.v),e.options.headers=s,await t.proceed(e)}}class n{constructor(e){this.redirectUri=e}async intercept(e,t){const s=await t.proceed(e);if(401!==s.status)return s;window.location.href=redirectUri}}class o extends Error{static parseProblems(e,t){const s=[{type:"GENERIC_PROBLEM",context:null,reason:`${e}: ${t}`,details:null}];try{return t?JSON.parse(t):s}catch(e){return s}}static fromResponse(e,t){return new o(e,o.parseProblems(e,t))}constructor(e,t){super(JSON.stringify(t)),this.name=`Failure:${e}`,this.status=e,this.problems=t}}class a{constructor(){this.interceptors=[]}withContext(){return this.interceptors.push(new r),this}withCsrfToken(){return this.interceptors.push(new i),this}withRedirectOnUnauthorized(e){return this.interceptors.push(new n(e)),this}withInterceptors(...e){return this.interceptors.push(...e),this}build(){const e=this.interceptors;return new u({interceptors:e})}}class c{async intercept(e,t){return await fetch(e.resource,e.options)}}class l{constructor(e,t){this.interceptors=e,this.current=t}async proceed(e){const t=this.interceptors[this.current];return await t.intercept(e,new l(this.interceptors,this.current+1))}}class u{static builder(){return new a}constructor({interceptors:e}){this.interceptors=e||[]}async fetch(e,t){const s=[...this.interceptors,...t.interceptors||[],new c],r=new l(s,0);return await r.proceed({resource:e,options:t})}async json(e,t){try{const s=await this.fetch(e,t);if(!s.ok){const e=await s.text();throw o.fromResponse(s.status,e)}const r=await s.text();return r?JSON.parse(r):void 0}catch(e){if(e instanceof o)throw e;throw new o(0,[{type:"CONNECTION_PROBLEM",context:null,reason:e.message,details:null}])}}}class d{static id=0;static uid(e){return`${e}-${++d.id}`}static forwardAttributes(e,t,s){e.getAttributeNames().filter((e=>-1===s.indexOf(e))).filter((e=>"@"===e[0])).forEach((s=>{"@class"!==s?t.setAttribute(s.substring(1),e.getAttribute(s)):t.classList.add(...e.getAttribute("@class").split(" ").filter((e=>e.length)))}))}static extractSlots(e){const t=Object.fromEntries([...e.querySelectorAll("[slot]")].map((e=>{e.parentElement.removeChild(e);const t=e.getAttribute("slot");return e.removeAttribute("slot"),[t,e]})));return t.default=new DocumentFragment,t.default.append(...e.childNodes),t}static labelAndInputGroup(e,t,s,r){if(s){const s=document.createElement("label");s.setAttribute("for",e),s.classList.add("form-label"),s.append(r.default);const i=document.createElement("div");i.classList.add("form-floating"),i.append(r.input,s);const n=document.createElement("ful-field-error");n.setAttribute("field",t);const o=document.createElement("div");if(o.classList.add("input-group","has-validtion"),r.before)o.append(r.before);else if(r.ibefore){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.ibefore),o.append(e)}if(o.append(i),r.after)o.append(r.after);else if(r.iafter){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.iafter),o.append(e)}return o.append(n),o}const i=document.createElement("label");i.setAttribute("for",t),i.classList.add("form-label"),i.append(r.default);const n=document.createElement("ful-field-error");n.setAttribute("field",t);const o=document.createElement("div");if(o.classList.add("input-group","has-validation"),r.before)o.append(r.before);else if(r.ibefore){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.ibefore),o.append(e)}if(o.append(r.input),r.after)o.append(r.after);else if(r.iafter){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.iafter),o.append(e)}o.append(n);const a=new DocumentFragment;return a.append(i,o),a}}class h extends HTMLElement{constructor(){super()}connectedCallback(){this.classList.add("invalid-feedback")}static configure(){customElements.define("ful-field-error",h)}}class p extends HTMLElement{constructor(){super()}connectedCallback(){this.classList.add("alert","alert-danger","d-none")}static configure(){customElements.define("ful-errors",p)}}class f extends HTMLElement{constructor(){super()}connectedCallback(){this.classList.add("spinner-border","spinner-border-sm","d-none"),this.setAttribute("aria-hidden","true")}show(){this.classList.remove("d-none")}hide(){this.classList.add("d-none")}static configure(){customElements.define("ful-spinner",f)}}class m extends HTMLElement{constructor(){super();const e=d.uid("ful-input"),t=this.getAttribute("@name"),s=this.hasAttribute("@floating"),r=d.extractSlots(this);r.input=r.input||(()=>{const e=document.createElement("input");return e.classList.add("form-control"),e})(),d.forwardAttributes(this,r.input,["@floating"]);const i=(e,t,s)=>!e.hasAttribute(t)&&e.setAttribute(t,s);i(r.input,"name",e),i(r.input,"id",e),i(r.input,"type","text"),i(r.input,"placeholder"," "),this.innerHTML="",this.append(d.labelAndInputGroup(e,t||e,s,r))}static configure(){customElements.define("ful-input",m)}}class g extends HTMLElement{constructor(e){super(),s.mixin(this);const t=d.uid("ful-select"),r=this.getAttribute("@name"),i=this.hasAttribute("@floating"),n=this.hasAttribute("@remote"),o=d.extractSlots(this);o.input=o.input||document.createElement("select"),d.forwardAttributes(this,o.input,["@floating","@remote"]);const a=(e,t,s)=>!e.hasAttribute(t)&&e.setAttribute(t,s);a(o.input,"name",t),a(o.input,"id",t),a(o.input,"placeholder"," "),this.innerHTML="",this.append(d.labelAndInputGroup(t,r||t,i,o)),this.loaded=!n,this.ts=new TomSelect(o.input,Object.assign(n?{preload:"focus",load:async(e,t)=>{if(this.loaded)return void t();const s=await this.fire("load",e,[]);this.loaded=!0,t(s)}}:{},e)),o.input.setValue=this.setValue.bind(this),o.input.getValue=this.getValue.bind(this)}async setValue(e){this.loaded||await this.ts.load(),this.ts.setValue(e)}getValue(){const e=this.ts.getValue();return""===e?null:e}static custom(e,t){customElements.define(e,class extends g{constructor(){super(t)}})}static configure(){return g.custom("ful-select")}}class E extends HTMLElement{constructor({mutators:e,extractors:t,valueHoldersSelector:r,ignoredChildrenSelector:i}){super(),s.mixin(this),this.mutators=e||{},this.extractors=t||{},this.valueHoldersSelector=r||"[name]",this.ignoredChildrenSelector=i||".d-none";const n=document.createElement("form");n.append(...this.childNodes),this.appendChild(n),n.addEventListener("submit",(async e=>{e.preventDefault(),this.spinner(!0);try{await this.fire("submit",this.getValues(),this)}catch(e){if(e instanceof o)return void this.setErrors(e.problems);throw e}finally{this.spinner(!1)}}))}spinner(e){this.querySelectorAll("ful-spinner").forEach((t=>{t[e?"show":"hide"]()})),this.querySelectorAll("[type=submit],[type=reset]").forEach((t=>{t.disabled=e}))}setValues(e){for(let t in e)e.hasOwnProperty(t)&&Array.from(this.querySelectorAll(`[name='${CSS.escape(t)}']`)).forEach((s=>{E.mutate(this.mutators,s,e[t],t,e)}))}getValues(){return Array.from(this.querySelectorAll(this.valueHoldersSelector)).filter((e=>"never"!==e.dataset.fulBindInclude&&("always"===e.dataset.fulBindInclude||null===e.closest(this.ignoredChildrenSelector)))).reduce(((e,t)=>E.providePath(e,t.getAttribute("name"),E.extract(this.extractors,t))),{})}setErrors(e,t){if(this.clearErrors(),e.filter((e=>"FIELD_ERROR"===e.type||"INVALID_FORMAT"===e.type)).forEach((e=>{const t=e.context.replace("[",".").replace("].",".");this.querySelectorAll(`[name='${CSS.escape(t)}']`).forEach((e=>{e.classList.add("is-invalid"),e.parentElement.classList.contains("form-floating")&&e.parentElement.classList.add("is-invalid")})),this.querySelectorAll(`ful-field-error[field='${CSS.escape(t)}']`).forEach((t=>t.innerText=e.reason))})),this.querySelectorAll("ful-errors").forEach((t=>{const s=e.filter((e=>"FIELD_ERROR"!==e.type&&"INVALID_FORMAT"!==e.type));t.innerHTML=s.map((e=>e.reason)).join("\n"),0!==s.length&&t.classList.remove("d-none")})),!t)return;const s=Array.from(this.querySelectorAll("ful-field-error:not(.d-none)")).map((e=>e.getBoundingClientRect().y+window.scrollY)),r=Math.min(...s);r!==1/0&&window.scroll(window.scrollX,r>100?r-100:0)}clearErrors(){this.querySelectorAll("[name].is-invalid, .form-floating.is-invalid").forEach((e=>e.classList.remove("is-invalid"))),this.querySelectorAll("ful-errors").forEach((e=>{e.innerHTML="",e.classList.add("d-none")}))}static extract(e,t){const s=e[t.dataset.fulBindExtractor]||e[t.dataset.fulBindProvide];if(s)return s(t);if("radio"===t.getAttribute("type")){if(!t.checked)return;return"boolean"===t.dataset.fulBindType?"true"===t.value:t.value}return"checkbox"===t.getAttribute("type")?t.checked:"boolean"===t.dataset.fulBindType?t.value?"true"===t.value:null:t.getValue?t.getValue():t.value||null}static mutate(e,t,s,r,i){const n=e[t.dataset.fulBindMutator]||e[t.dataset.fulBindProvide];n?n(t,s,r,i):"radio"!==t.getAttribute("type")?"checkbox"!==t.getAttribute("type")?t.setValue?t.setValue(s):t.value=s:t.checked=s:t.checked=t.getAttribute("value")===s}static providePath(e,t,s){const r=t.split(".").map((e=>e.match(/^[0-9]+$/)?+e:e));let i=e,n=null;for(let t=0;;++t){const o=r[t],a=r[t-1];if(Number.isInteger(o)&&!Array.isArray(i)&&(null!==n?n[a]=i=[]:e=i=[]),t===r.length-1)return i[o]=void 0!==s?s:o in i?i[o]:null,e;void 0===i[o]&&(i[o]={}),n=i,i=i[o]}}static custom(e,t){customElements.define(e,class extends E{constructor(){super(t)}})}static configure(e){h.configure(),p.configure(),f.configure(),m.configure(),g.configure(),E.custom("ful-form",e||{})}}class w{constructor(e,t){this.prefix=e,this.storage=t}save(e,t){this.storage.setItem(`${this.prefix}-${e}`,JSON.stringify(t))}load(e){const t=this.storage.getItem(`${this.prefix}-${e}`);return void 0===t?void 0:JSON.parse(t)}remove(e){this.storage.removeItem(`${this.prefix}-${e}`)}pop(e){const t=this.load(e);return this.remove(e),t}}class b extends w{constructor(e){super(e,sessionStorage)}}class y{static forKeycloak(e,t,s){return new y(e,"openid profile",{auth:new URL("protocol/openid-connect/auth",t),token:new URL("protocol/openid-connect/token",t),logout:new URL("protocol/openid-connect/logout",t),registration:new URL("protocol/openid-connect/registrations",t),redirect:s})}constructor(e,t,{auth:s,token:r,registration:i,logout:n,redirect:o}){this.storage=new b(e),this.clientId=e,this.scope=t,this.uri={auth:s,token:r,registration:i,logout:n,redirect:o}}async action(e,s){const r=t.encode(crypto.getRandomValues(new Uint8Array(32)).buffer),i=t.encode(await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(r))),n=this.clientId+t.encode(crypto.getRandomValues(new Uint8Array(16)).buffer);this.storage.save(y.PKCE_AND_STATE_KEY,{state:n,verifier:r});const o=new URL(e);o.searchParams.set("client_id",this.clientId),o.searchParams.set("redirect_uri",this.uri.redirect),o.searchParams.set("response_type","code"),o.searchParams.set("scope",this.scope),o.searchParams.set("state",n),o.searchParams.set("code_challenge",i),o.searchParams.set("code_challenge_method","S256"),Object.entries(s||{}).forEach((e=>{o.searchParams.set(e[0],e[1])})),window.location=o}async registration(e){await this.action(this.uri.registration,e)}async applicationInitiatedAction(e){await this.action(this.uri.auth,{kc_action:e})}async _tokenExchange(e,t){window.history.replaceState("","",this.uri.redirect);const s=this.storage.pop(y.PKCE_AND_STATE_KEY);if(s.state!==t)throw new Error("State mismatch");const r=await fetch(this.uri.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams([["client_id",this.clientId],["code",e],["grant_type","authorization_code"],["code_verifier",s.verifier],["state",s.state],["redirect_uri",this.uri.redirect]])});if(!r.ok){const e=await r.text();throw new Error("Error:"+r.status+": "+e)}const i=await r.json();return new A(this.clientId,i,this.uri)}async ensureLoggedIn(){const e=new URL(window.location.href),t=e.searchParams.get("code");if(t&&this.storage.load(y.PKCE_AND_STATE_KEY)){const s=e.searchParams.get("state");return await this._tokenExchange(t,s)}return await this.action(this.uri.auth,{}),null}}y.PKCE_AND_STATE_KEY="state-and-verifier";class A{static parseToken(e){const[s,r,i]=e.split("."),n=new TextDecoder("utf-8");return{header:JSON.parse(n.decode(t.decode(s,t.STANDARD))),payload:JSON.parse(n.decode(t.decode(r,t.STANDARD))),signature:i}}constructor(e,t,{token:s,logout:r,redirect:i}){this.clientId=e,this.token=t,this.accessToken=A.parseToken(t.access_token),this.refreshToken=A.parseToken(t.refresh_token),this.uri={token:s,logout:r,redirect:i},this.refreshCallback=null}onRefresh(e){this.refreshCallback=e}async refresh(){const e=await fetch(this.uri.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams([["client_id",this.clientId],["grant_type","refresh_token"],["refresh_token",this.token.refresh_token]])});if(!e.ok)throw new Error("Error:"+e.status+": "+e.text());const t=await e.json();this.token=t,this.accessToken=this._parseToken(t.access_token),this.refreshToken=this._parseToken(t.refresh_token),this.refreshCallback&&this.refreshCallback(this.token,this.accessToken,this.refreshToken)}shouldBeRefreshed(e){const t=(new Date).getTime(),s=1e3*this.refreshToken.payload.exp;return!(t>s)&&t-e>s}async refreshIf(e){this.shouldBeRefreshed(e)&&await this.refresh()}logout(){const e=new URL(this.uri.logout);e.searchParams.set("post_logout_redirect_uri",this.uri.redirect),e.searchParams.set("id_token_hint",this.token.id_token),window.location=e}bearerToken(){return`Bearer ${this.token.access_token}`}interceptor(e,t){return new v(this,e,t)}}class v{constructor(e,t,s){this.session=e,this.gracePeriodBefore=t||2e3,this.gracePeriodAfter=s||3e4}async intercept(e,t){await this.session.refreshIf(this.gracePeriodBefore);const s=new Headers(e.options.headers);s.set("Authorization",this.session.bearerToken()),e.options.headers=s;const r=await t.proceed(e);return await this.session.refreshIf(this.gracePeriodAfter),r}}const T={sleep:e=>new Promise((t=>setTimeout(t,e))),DEBOUNCE_DEFAULT:0,DEBOUNCE_IMMEDIATE:1,debounce(e,t,s){let r=null,i=[],n=0,o=s||T.DEBOUNCE_DEFAULT;const a=()=>{const s=(new Date).getTime()-n;e>s?r=setTimeout(a,e-s):(r=null,o!==T.DEBOUNCE_IMMEDIATE&&t(...i),null===r&&(i=[]))};return function(){i=arguments,n=(new Date).getTime(),null===r&&(r=setTimeout(a,e),o===T.DEBOUNCE_IMMEDIATE&&t(...i))}},THROTTLE_DEFAULT:0,THROTTLE_NO_LEADING:1,THROTTLE_NO_TRAILING:2,throttle(e,t,s){let r=null,i=[],n=0,o=s||T.THROTTLE_DEFAULT;const a=()=>{n=o&T.THROTTLE_NO_LEADING?0:(new Date).getTime(),r=null,t(...i),null===r&&(i=[])};return function(){const s=(new Date).getTime();!n&&o&T.THROTTLE_NO_LEADING&&(n=s);const c=e-(s-n);i=arguments,c<=0||c>e?(null!==r&&(clearTimeout(r),r=null),n=s,t(...i),null===r&&(i=[])):null!==r||o&T.THROTTLE_NO_TRAILING||(r=setTimeout(a,c))}}};class L extends HTMLElement{constructor(){if(super(),this.progress=[...this.children].filter((e=>e.matches("header,ol,ul"))),this.progress.forEach((e=>{const t=[...e.children];void 0===t.filter((e=>e.matches(".active")))[0]&&t.length>0&&t[0].classList.add("active")})),null===this.querySelector("section.current")){const e=this.querySelector("section:first-of-type");null!==e&&e.classList.add("current")}}next(){this.progress.forEach((e=>{const t=[...e.children].filter((e=>e.matches(".active")))[0];t?.classList.remove("active"),t?.nextElementSibling?.classList.add("active")}));const e=this.querySelector("section.current");e.classList.remove("current"),e.nextElementSibling.classList.add("current"),this.dispatchEvent(new CustomEvent("wizard:activate",{bubbles:!0,cancelable:!0}))}prev(){this.progress.forEach((e=>{const t=[...e.children].filter((e=>e.matches(".active")))[0];t?.classList.remove("active"),t?.previousElementSibling?.classList.add("active")}));const e=this.querySelector("section.current");e.classList.remove("current"),e.previousElementSibling.classList.add("current"),this.dispatchEvent(new CustomEvent("wizard:activate",{bubbles:!0,cancelable:!0}))}moveTo=function(e){this.progress.forEach((t=>{const s=[...t.children].filter((e=>e.matches(".active")))[0];s?.classList.remove("active"),t.children[+e]?.classList.add("active")}));const t=this.querySelector("section.current");t?.classList.remove("current");this.querySelector(`section:nth-child(${+e})`).classList.add("current"),this.dispatchEvent(new CustomEvent("wizard:activate",{bubbles:!0,cancelable:!0}))};static custom(e,t){customElements.define(e,class extends L{constructor(){super(t)}})}static configure(){return L.custom("ful-wizard")}}return e.App=class{constructor(){this.configurers=[],this.initializers=[],this.handlers=[],this.running=!1,document.addEventListener("DOMContentLoaded",(async()=>{await Promise.all(this.configurers),await Promise.all(this.initializers.map((e=>Promise.resolve(e())))),await Promise.all(this.handlers.map((e=>Promise.resolve(e()))))}))}configure(e){return this.configurers.push(Promise.resolve(e())),this}initialize(e){return this.initializers.push(e),this}ready(e){return this.handlers.push(e),this}},e.AuthorizationCodeFlow=y,e.AuthorizationCodeFlowInterceptor=v,e.AuthorizationCodeFlowSession=A,e.Base64=t,e.CustomElements=d,e.Errors=p,e.Failure=o,e.FieldError=h,e.Form=E,e.Hex=class{static decode(e){if(e.length%2!=0)throw new Error("invalid length");const t=e.length/2;return new Uint8Array(t).map(((t,s)=>{const r=2*s,i=e.substring(r,r+2);return parseInt(i,16)}))}static encode(e,t){return Array.from(e).map((e=>e.toString(16))).map((e=>t?e.toUpperCase():e)).map((e=>e.padStart(2,0))).join("")}},e.HttpClient=u,e.Input=m,e.LocalStorage=class extends w{constructor(e){super(e,localStorage)}},e.Observable=s,e.Select=g,e.SessionStorage=b,e.Spinner=f,e.VersionedStorage=class{constructor(e,t,s){this.storage=e,this.key=t,this.dataSupplier=s,this.cache=null}async load(e){const t=this.storage.load(this.key);if(t&&t.revision===e)return void(this.cache=t.value);const s=await this.dataSupplier(e,this.key);this.storage.save(this.key,{revision:e,value:s}),this.cache=s}data(){return this.cache}},e.Wizard=L,e.timing=T,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
1
+ var ful=function(e){"use strict";class t{static encode(e,s){const r=s||t.URL_SAFE,i=e.byteLength,n=new Uint8Array(e);let o="";for(let e=0;e<i;e+=3){o+=r[n[e]>>2]+r[(3&n[e])<<4|n[e+1]>>4]+r[(15&n[e+1])<<2|n[e+2]>>6]+r[63&n[e+2]]}return i%3==2?o=o.substring(0,o.length-1):i%3==1&&(o=o.substring(0,o.length-2)),o}static decode(e,s){const r=s||t.URL_SAFE;let i=Math.floor(.75*e.length);for(let t=0;t!==e.length&&"="===e[e.length-t-1];++t)--i;const n=new Uint8Array(i);let o=0,a=0;for(;o<.75*e.length;){const t=r.indexOf(e.charAt(a++)),s=r.indexOf(e.charAt(a++)),i=r.indexOf(e.charAt(a++)),c=r.indexOf(e.charAt(a++));n[o++]=t<<2|s>>4,n[o++]=(15&s)<<4|i>>2,n[o++]=(3&i)<<6|c}return n.buffer}}t.STANDARD="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t.URL_SAFE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";class s{constructor(){this.listeners={}}fireSync(e,t,s){const r=this.listeners[e]||[];let i=s;for(const e of r)i=e(t,this,i);return i}async fire(e,t,s){const r=this.listeners[e]||[];let i=s;for(const e of r)i=await e(t,this,i);return i}on(e,t){this.listeners[e]=this.listeners[e]||[],this.listeners[e].push(t)}un(e,t){const s=this.listeners[e]||[],r=s.indexOf(t);return-1===r?[]:s.splice(r,1)}static mixin(e){e.listeners={},e.fireSync=s.prototype.fireSync,e.fire=s.prototype.fire,e.on=s.prototype.on,e.un=s.prototype.un}}class r{constructor(){const e=document.querySelector("meta[name='context']").getAttribute("content");this.context=e.endsWith("/")?e.substring(0,e.length-1):e}async intercept(e,t){const s=e.resource.startsWith("/")?"":"/";return e.resource=this.context+s+e.resource,await t.proceed(e)}}class i{constructor(){this.k=document.querySelector("meta[name='_csrf_header']").getAttribute("content"),this.v=document.querySelector("meta[name='_csrf']").getAttribute("content")}async intercept(e,t){const s=new Headers(e.options.headers);return s.set(this.k,this.v),e.options.headers=s,await t.proceed(e)}}class n{constructor(e){this.redirectUri=e}async intercept(e,t){const s=await t.proceed(e);if(401!==s.status)return s;window.location.href=redirectUri}}class o extends Error{static parseProblems(e,t){const s=[{type:"GENERIC_PROBLEM",context:null,reason:`${e}: ${t}`,details:null}];try{return t?JSON.parse(t):s}catch(e){return s}}static fromResponse(e,t){return new o(e,o.parseProblems(e,t))}constructor(e,t){super(JSON.stringify(t)),this.name=`Failure:${e}`,this.status=e,this.problems=t}}class a{constructor(){this.interceptors=[]}withContext(){return this.interceptors.push(new r),this}withCsrfToken(){return this.interceptors.push(new i),this}withRedirectOnUnauthorized(e){return this.interceptors.push(new n(e)),this}withInterceptors(...e){return this.interceptors.push(...e),this}build(){const e=this.interceptors;return new u({interceptors:e})}}class c{async intercept(e,t){return await fetch(e.resource,e.options)}}class l{constructor(e,t){this.interceptors=e,this.current=t}async proceed(e){const t=this.interceptors[this.current];return await t.intercept(e,new l(this.interceptors,this.current+1))}}class u{static builder(){return new a}constructor({interceptors:e}){this.interceptors=e||[]}async fetch(e,t){const s=t||{},r=[...this.interceptors,...s.interceptors||[],new c],i=new l(r,0);return await i.proceed({resource:e,opts:s})}async json(e,t){try{const s=await this.fetch(e,t);if(!s.ok){const e=await s.text();throw o.fromResponse(s.status,e)}const r=await s.text();return r?JSON.parse(r):void 0}catch(e){if(e instanceof o)throw e;throw new o(0,[{type:"CONNECTION_PROBLEM",context:null,reason:e.message,details:null}])}}}class d{static id=0;static uid(e){return`${e}-${++d.id}`}static forwardAttributes(e,t,s){e.getAttributeNames().filter((e=>-1===s.indexOf(e))).filter((e=>"@"===e[0])).forEach((s=>{"@class"!==s?t.setAttribute(s.substring(1),e.getAttribute(s)):t.classList.add(...e.getAttribute("@class").split(" ").filter((e=>e.length)))}))}static extractSlots(e){const t=Object.fromEntries([...e.querySelectorAll("[slot]")].map((e=>{e.parentElement.removeChild(e);const t=e.getAttribute("slot");return e.removeAttribute("slot"),[t,e]})));return t.default=new DocumentFragment,t.default.append(...e.childNodes),t}static labelAndInputGroup(e,t,s,r){if(s){const s=document.createElement("label");s.setAttribute("for",e),s.classList.add("form-label"),s.append(r.default);const i=document.createElement("div");i.classList.add("form-floating"),i.append(r.input,s);const n=document.createElement("ful-field-error");n.setAttribute("field",t);const o=document.createElement("div");if(o.classList.add("input-group","has-validtion"),r.before)o.append(r.before);else if(r.ibefore){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.ibefore),o.append(e)}if(o.append(i),r.after)o.append(r.after);else if(r.iafter){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.iafter),o.append(e)}return o.append(n),o}const i=document.createElement("label");i.setAttribute("for",t),i.classList.add("form-label"),i.append(r.default);const n=document.createElement("ful-field-error");n.setAttribute("field",t);const o=document.createElement("div");if(o.classList.add("input-group","has-validation"),r.before)o.append(r.before);else if(r.ibefore){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.ibefore),o.append(e)}if(o.append(r.input),r.after)o.append(r.after);else if(r.iafter){const e=document.createElement("div");e.classList.add("input-group-text"),e.append(r.iafter),o.append(e)}o.append(n);const a=new DocumentFragment;return a.append(i,o),a}}class h extends HTMLElement{constructor(){super()}connectedCallback(){this.classList.add("invalid-feedback")}static configure(){customElements.define("ful-field-error",h)}}class p extends HTMLElement{constructor(){super()}connectedCallback(){this.classList.add("alert","alert-danger","d-none")}static configure(){customElements.define("ful-errors",p)}}class f extends HTMLElement{constructor(){super()}connectedCallback(){this.classList.add("spinner-border","spinner-border-sm","d-none"),this.setAttribute("aria-hidden","true")}show(){this.classList.remove("d-none")}hide(){this.classList.add("d-none")}static configure(){customElements.define("ful-spinner",f)}}class m extends HTMLElement{constructor(){super();const e=d.uid("ful-input"),t=this.getAttribute("@name"),s=this.hasAttribute("@floating"),r=d.extractSlots(this);r.input=r.input||(()=>{const e=document.createElement("input");return e.classList.add("form-control"),e})(),d.forwardAttributes(this,r.input,["@floating"]);const i=(e,t,s)=>!e.hasAttribute(t)&&e.setAttribute(t,s);i(r.input,"name",e),i(r.input,"id",e),i(r.input,"type","text"),i(r.input,"placeholder"," "),this.innerHTML="",this.append(d.labelAndInputGroup(e,t||e,s,r))}static configure(){customElements.define("ful-input",m)}}class g extends HTMLElement{constructor(e){super(),s.mixin(this);const t=d.uid("ful-select"),r=this.getAttribute("@name"),i=this.hasAttribute("@floating"),n=this.hasAttribute("@remote"),o=d.extractSlots(this);o.input=o.input||document.createElement("select"),d.forwardAttributes(this,o.input,["@floating","@remote"]);const a=(e,t,s)=>!e.hasAttribute(t)&&e.setAttribute(t,s);a(o.input,"name",t),a(o.input,"id",t),a(o.input,"placeholder"," "),this.innerHTML="",this.append(d.labelAndInputGroup(t,r||t,i,o)),this.loaded=!n,this.ts=new TomSelect(o.input,Object.assign(n?{preload:"focus",load:async(e,t)=>{if(this.loaded)return void t();const s=await this.fire("load",e,[]);this.loaded=!0,t(s)}}:{},e)),o.input.setValue=this.setValue.bind(this),o.input.getValue=this.getValue.bind(this)}async setValue(e){this.loaded||await this.ts.load(),this.ts.setValue(e)}getValue(){const e=this.ts.getValue();return""===e?null:e}static custom(e,t){customElements.define(e,class extends g{constructor(){super(t)}})}static configure(){return g.custom("ful-select")}}class E extends HTMLElement{constructor({mutators:e,extractors:t,valueHoldersSelector:r,ignoredChildrenSelector:i}){super(),s.mixin(this),this.mutators=e||{},this.extractors=t||{},this.valueHoldersSelector=r||"[name]",this.ignoredChildrenSelector=i||".d-none";const n=document.createElement("form");n.append(...this.childNodes),this.appendChild(n),n.addEventListener("submit",(async e=>{e.preventDefault(),this.spinner(!0);try{await this.fire("submit",this.getValues(),this)}catch(e){if(e instanceof o)return void this.setErrors(e.problems);throw e}finally{this.spinner(!1)}}))}spinner(e){this.querySelectorAll("ful-spinner").forEach((t=>{t[e?"show":"hide"]()})),this.querySelectorAll("[type=submit],[type=reset]").forEach((t=>{t.disabled=e}))}setValues(e){for(let t in e)e.hasOwnProperty(t)&&Array.from(this.querySelectorAll(`[name='${CSS.escape(t)}']`)).forEach((s=>{E.mutate(this.mutators,s,e[t],t,e)}))}getValues(){return Array.from(this.querySelectorAll(this.valueHoldersSelector)).filter((e=>"never"!==e.dataset.fulBindInclude&&("always"===e.dataset.fulBindInclude||null===e.closest(this.ignoredChildrenSelector)))).reduce(((e,t)=>E.providePath(e,t.getAttribute("name"),E.extract(this.extractors,t))),{})}setErrors(e,t){if(this.clearErrors(),e.filter((e=>"FIELD_ERROR"===e.type||"INVALID_FORMAT"===e.type)).forEach((e=>{const t=e.context.replace("[",".").replace("].",".");this.querySelectorAll(`[name='${CSS.escape(t)}']`).forEach((e=>{e.classList.add("is-invalid"),e.parentElement.classList.contains("form-floating")&&e.parentElement.classList.add("is-invalid")})),this.querySelectorAll(`ful-field-error[field='${CSS.escape(t)}']`).forEach((t=>t.innerText=e.reason))})),this.querySelectorAll("ful-errors").forEach((t=>{const s=e.filter((e=>"FIELD_ERROR"!==e.type&&"INVALID_FORMAT"!==e.type));t.innerHTML=s.map((e=>e.reason)).join("\n"),0!==s.length&&t.classList.remove("d-none")})),!t)return;const s=Array.from(this.querySelectorAll("ful-field-error:not(.d-none)")).map((e=>e.getBoundingClientRect().y+window.scrollY)),r=Math.min(...s);r!==1/0&&window.scroll(window.scrollX,r>100?r-100:0)}clearErrors(){this.querySelectorAll("[name].is-invalid, .form-floating.is-invalid").forEach((e=>e.classList.remove("is-invalid"))),this.querySelectorAll("ful-errors").forEach((e=>{e.innerHTML="",e.classList.add("d-none")}))}static extract(e,t){const s=e[t.dataset.fulBindExtractor]||e[t.dataset.fulBindProvide];if(s)return s(t);if("radio"===t.getAttribute("type")){if(!t.checked)return;return"boolean"===t.dataset.fulBindType?"true"===t.value:t.value}return"checkbox"===t.getAttribute("type")?t.checked:"boolean"===t.dataset.fulBindType?t.value?"true"===t.value:null:t.getValue?t.getValue():t.value||null}static mutate(e,t,s,r,i){const n=e[t.dataset.fulBindMutator]||e[t.dataset.fulBindProvide];n?n(t,s,r,i):"radio"!==t.getAttribute("type")?"checkbox"!==t.getAttribute("type")?t.setValue?t.setValue(s):t.value=s:t.checked=s:t.checked=t.getAttribute("value")===s}static providePath(e,t,s){const r=t.split(".").map((e=>e.match(/^[0-9]+$/)?+e:e));let i=e,n=null;for(let t=0;;++t){const o=r[t],a=r[t-1];if(Number.isInteger(o)&&!Array.isArray(i)&&(null!==n?n[a]=i=[]:e=i=[]),t===r.length-1)return i[o]=void 0!==s?s:o in i?i[o]:null,e;void 0===i[o]&&(i[o]={}),n=i,i=i[o]}}static custom(e,t){customElements.define(e,class extends E{constructor(){super(t)}})}static configure(e){h.configure(),p.configure(),f.configure(),m.configure(),g.configure(),E.custom("ful-form",e||{})}}class w{constructor(e,t){this.prefix=e,this.storage=t}save(e,t){this.storage.setItem(`${this.prefix}-${e}`,JSON.stringify(t))}load(e){const t=this.storage.getItem(`${this.prefix}-${e}`);return void 0===t?void 0:JSON.parse(t)}remove(e){this.storage.removeItem(`${this.prefix}-${e}`)}pop(e){const t=this.load(e);return this.remove(e),t}}class b extends w{constructor(e){super(e,sessionStorage)}}class y{static forKeycloak(e,t,s){return new y(e,"openid profile",{auth:new URL("protocol/openid-connect/auth",t),token:new URL("protocol/openid-connect/token",t),logout:new URL("protocol/openid-connect/logout",t),registration:new URL("protocol/openid-connect/registrations",t),redirect:s})}constructor(e,t,{auth:s,token:r,registration:i,logout:n,redirect:o}){this.storage=new b(e),this.clientId=e,this.scope=t,this.uri={auth:s,token:r,registration:i,logout:n,redirect:o}}async action(e,s){const r=t.encode(crypto.getRandomValues(new Uint8Array(32)).buffer),i=t.encode(await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(r))),n=this.clientId+t.encode(crypto.getRandomValues(new Uint8Array(16)).buffer);this.storage.save(y.PKCE_AND_STATE_KEY,{state:n,verifier:r});const o=new URL(e);o.searchParams.set("client_id",this.clientId),o.searchParams.set("redirect_uri",this.uri.redirect),o.searchParams.set("response_type","code"),o.searchParams.set("scope",this.scope),o.searchParams.set("state",n),o.searchParams.set("code_challenge",i),o.searchParams.set("code_challenge_method","S256"),Object.entries(s||{}).forEach((e=>{o.searchParams.set(e[0],e[1])})),window.location=o}async registration(e){await this.action(this.uri.registration,e)}async applicationInitiatedAction(e){await this.action(this.uri.auth,{kc_action:e})}async _tokenExchange(e,t){window.history.replaceState("","",this.uri.redirect);const s=this.storage.pop(y.PKCE_AND_STATE_KEY);if(s.state!==t)throw new Error("State mismatch");const r=await fetch(this.uri.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams([["client_id",this.clientId],["code",e],["grant_type","authorization_code"],["code_verifier",s.verifier],["state",s.state],["redirect_uri",this.uri.redirect]])});if(!r.ok){const e=await r.text();throw new Error("Error:"+r.status+": "+e)}const i=await r.json();return new A(this.clientId,i,this.uri)}async ensureLoggedIn(){const e=new URL(window.location.href),t=e.searchParams.get("code");if(t&&this.storage.load(y.PKCE_AND_STATE_KEY)){const s=e.searchParams.get("state");return await this._tokenExchange(t,s)}return await this.action(this.uri.auth,{}),null}}y.PKCE_AND_STATE_KEY="state-and-verifier";class A{static parseToken(e){const[s,r,i]=e.split("."),n=new TextDecoder("utf-8");return{header:JSON.parse(n.decode(t.decode(s,t.STANDARD))),payload:JSON.parse(n.decode(t.decode(r,t.STANDARD))),signature:i}}constructor(e,t,{token:s,logout:r,redirect:i}){this.clientId=e,this.token=t,this.accessToken=A.parseToken(t.access_token),this.refreshToken=A.parseToken(t.refresh_token),this.uri={token:s,logout:r,redirect:i},this.refreshCallback=null}onRefresh(e){this.refreshCallback=e}async refresh(){const e=await fetch(this.uri.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams([["client_id",this.clientId],["grant_type","refresh_token"],["refresh_token",this.token.refresh_token]])});if(!e.ok)throw new Error("Error:"+e.status+": "+e.text());const t=await e.json();this.token=t,this.accessToken=this._parseToken(t.access_token),this.refreshToken=this._parseToken(t.refresh_token),this.refreshCallback&&this.refreshCallback(this.token,this.accessToken,this.refreshToken)}shouldBeRefreshed(e){const t=(new Date).getTime(),s=1e3*this.refreshToken.payload.exp;return!(t>s)&&t-e>s}async refreshIf(e){this.shouldBeRefreshed(e)&&await this.refresh()}logout(){const e=new URL(this.uri.logout);e.searchParams.set("post_logout_redirect_uri",this.uri.redirect),e.searchParams.set("id_token_hint",this.token.id_token),window.location=e}bearerToken(){return`Bearer ${this.token.access_token}`}interceptor(e,t){return new v(this,e,t)}}class v{constructor(e,t,s){this.session=e,this.gracePeriodBefore=t||2e3,this.gracePeriodAfter=s||3e4}async intercept(e,t){await this.session.refreshIf(this.gracePeriodBefore);const s=new Headers(e.options.headers);s.set("Authorization",this.session.bearerToken()),e.options.headers=s;const r=await t.proceed(e);return await this.session.refreshIf(this.gracePeriodAfter),r}}const T={sleep:e=>new Promise((t=>setTimeout(t,e))),DEBOUNCE_DEFAULT:0,DEBOUNCE_IMMEDIATE:1,debounce(e,t,s){let r=null,i=[],n=0,o=s||T.DEBOUNCE_DEFAULT;const a=()=>{const s=(new Date).getTime()-n;e>s?r=setTimeout(a,e-s):(r=null,o!==T.DEBOUNCE_IMMEDIATE&&t(...i),null===r&&(i=[]))};return function(){i=arguments,n=(new Date).getTime(),null===r&&(r=setTimeout(a,e),o===T.DEBOUNCE_IMMEDIATE&&t(...i))}},THROTTLE_DEFAULT:0,THROTTLE_NO_LEADING:1,THROTTLE_NO_TRAILING:2,throttle(e,t,s){let r=null,i=[],n=0,o=s||T.THROTTLE_DEFAULT;const a=()=>{n=o&T.THROTTLE_NO_LEADING?0:(new Date).getTime(),r=null,t(...i),null===r&&(i=[])};return function(){const s=(new Date).getTime();!n&&o&T.THROTTLE_NO_LEADING&&(n=s);const c=e-(s-n);i=arguments,c<=0||c>e?(null!==r&&(clearTimeout(r),r=null),n=s,t(...i),null===r&&(i=[])):null!==r||o&T.THROTTLE_NO_TRAILING||(r=setTimeout(a,c))}}};class L extends HTMLElement{constructor(){if(super(),this.progress=[...this.children].filter((e=>e.matches("header,ol,ul"))),this.progress.forEach((e=>{const t=[...e.children];void 0===t.filter((e=>e.matches(".active")))[0]&&t.length>0&&t[0].classList.add("active")})),null===this.querySelector("section.current")){const e=this.querySelector("section:first-of-type");null!==e&&e.classList.add("current")}}next(){this.progress.forEach((e=>{const t=[...e.children].filter((e=>e.matches(".active")))[0];t?.classList.remove("active"),t?.nextElementSibling?.classList.add("active")}));const e=this.querySelector("section.current");e.classList.remove("current"),e.nextElementSibling.classList.add("current"),this.dispatchEvent(new CustomEvent("wizard:activate",{bubbles:!0,cancelable:!0}))}prev(){this.progress.forEach((e=>{const t=[...e.children].filter((e=>e.matches(".active")))[0];t?.classList.remove("active"),t?.previousElementSibling?.classList.add("active")}));const e=this.querySelector("section.current");e.classList.remove("current"),e.previousElementSibling.classList.add("current"),this.dispatchEvent(new CustomEvent("wizard:activate",{bubbles:!0,cancelable:!0}))}moveTo=function(e){this.progress.forEach((t=>{const s=[...t.children].filter((e=>e.matches(".active")))[0];s?.classList.remove("active"),t.children[+e]?.classList.add("active")}));const t=this.querySelector("section.current");t?.classList.remove("current");this.querySelector(`section:nth-child(${+e})`).classList.add("current"),this.dispatchEvent(new CustomEvent("wizard:activate",{bubbles:!0,cancelable:!0}))};static custom(e,t){customElements.define(e,class extends L{constructor(){super(t)}})}static configure(){return L.custom("ful-wizard")}}return e.App=class{constructor(){this.configurers=[],this.initializers=[],this.handlers=[],this.running=!1,document.addEventListener("DOMContentLoaded",(async()=>{await Promise.all(this.configurers),await Promise.all(this.initializers.map((e=>Promise.resolve(e())))),await Promise.all(this.handlers.map((e=>Promise.resolve(e()))))}))}configure(e){return this.configurers.push(Promise.resolve(e())),this}initialize(e){return this.initializers.push(e),this}ready(e){return this.handlers.push(e),this}},e.AuthorizationCodeFlow=y,e.AuthorizationCodeFlowInterceptor=v,e.AuthorizationCodeFlowSession=A,e.Base64=t,e.CustomElements=d,e.Errors=p,e.Failure=o,e.FieldError=h,e.Form=E,e.Hex=class{static decode(e){if(e.length%2!=0)throw new Error("invalid length");const t=e.length/2;return new Uint8Array(t).map(((t,s)=>{const r=2*s,i=e.substring(r,r+2);return parseInt(i,16)}))}static encode(e,t){return Array.from(e).map((e=>e.toString(16))).map((e=>t?e.toUpperCase():e)).map((e=>e.padStart(2,0))).join("")}},e.HttpClient=u,e.Input=m,e.LocalStorage=class extends w{constructor(e){super(e,localStorage)}},e.Observable=s,e.Select=g,e.SessionStorage=b,e.Spinner=f,e.VersionedStorage=class{constructor(e,t,s){this.storage=e,this.key=t,this.dataSupplier=s,this.cache=null}async load(e){const t=this.storage.load(this.key);if(t&&t.revision===e)return void(this.cache=t.value);const s=await this.dataSupplier(e,this.key);this.storage.save(this.key,{revision:e,value:s}),this.cache=s}data(){return this.cache}},e.Wizard=L,e.jsonRequest=function(e,t,s){return{headers:{"Content-Type":"application/json",...s},method:e,body:JSON.stringify(t)}},e.timing=T,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
2
2
  //# sourceMappingURL=ful.iife.min.js.map