diff --git a/.gitignore b/.gitignore index c93d5bf..9ae6931 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ /target node_modules uploads -dist +client/dist +client/dist/app.js.map +client/dist/app.js diff --git a/client/dist/app.js.map b/client/dist/app.js.map deleted file mode 100644 index 30842ed..0000000 --- a/client/dist/app.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["/home/eraden/code/eraden/oswilno-light/client/src/shared.js","/home/eraden/code/eraden/oswilno-light/client/src/form-navigation.js","/home/eraden/code/eraden/oswilno-light/client/src/local-businesses/local-business-item.js","/home/eraden/code/eraden/oswilno-light/client/src/local-businesses/local-business.js","/home/eraden/code/eraden/oswilno-light/client/src/local-businesses.js","/home/eraden/code/eraden/oswilno-light/client/src/login-form.js","/home/eraden/code/eraden/oswilno-light/client/src/ow-account.js","/home/eraden/code/eraden/oswilno-light/client/src/nav/ow-nav.js","/home/eraden/code/eraden/oswilno-light/client/src/nav/ow-path.js","/home/eraden/code/eraden/oswilno-light/client/src/price/price-view.js","/home/eraden/code/eraden/oswilno-light/client/src/price/price-input.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-basic-form.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-item-form-row.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-items-form.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-business-form.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-submit-form.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-user-type.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form/register-user-form.js","/home/eraden/code/eraden/oswilno-light/client/src/register-form.js","/home/eraden/code/eraden/oswilno-light/client/src/shared/image-input.js","/home/eraden/code/eraden/oswilno-light/client/src/business-items/business-item.js","/home/eraden/code/eraden/oswilno-light/client/src/business-items.js","/home/eraden/code/eraden/oswilno-light/client/src/app.js"],"sourcesContent":["export const S = Symbol();\n\nexport const BUTTON_STYLE = `\ninput[type=\"button\"], input[type=\"submit\"] {\n padding: 12px 16px;\n cursor: pointer;\n border: none;\n border-width: 1px;\n border-radius: 5px;\n font-size: 14px;\n font-weight: 400;\n box-shadow: 0 10px 20px -6px rgba(0,0,0,.12);\n position: relative;\n margin-bottom: 20px;\n transition: .3s;\n \n background: #46b5d1;\n color: #fff;\n \n display: inline-block;\n font-weight: 400;\n text-align: center;\n vertical-align: middle;\n user-select: none;\n padding: .375rem .75rem;\n font-size: 1rem;\n line-height: 1.5;\n transition: color .15s ease-in-out,\n background-color .15s ease-in-out,\n border-color .15s ease-in-out,\n box-shadow .15s ease-in-out,\n width: auto;\n height: calc(1.5em + 0.75rem + 2px);\n padding: .375rem .75rem;\n \n border: 1px solid #495057;\n color: #495057;\n background: white;\n}\n`;\n\nexport const FORM_STYLE = `\nform {\n display: block;\n}\nform legend {\n margin: 16px 0;\n font-weight: bold;\n font-size: 20px;\n}\nform.inline div {\n display: flex;\n}\nform > div {\n display: block;\n margin-bottom: 1rem;\n}\ninput, textarea {\n font-size: 16px;\n\n border: none;\n border-bottom-style: none;\n border-bottom-width: medium;\n border-bottom: 1px solid rgba(0,0,0,.1);\n border-radius: 2px;\n padding: 0;\n \n height: 36px;\n background: #fff;\n color: rgba(0,0,0,.8);\n font-size: 14px;\n \n box-shadow: none !important;\n\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-clip: padding-box;\n transition: border-color .15s ease-in-out , -webkit-box-shadow .15s ease-in-out;\n transition: border-color .15s ease-in-out , box-shadow .15s ease-in-out;\n transition: border-color .15s ease-in-out , box-shadow .15s ease-in-out , -webkit-box-shadow .15s ease-in-out;\n}\ninput[type=\"text\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"password\"],\ntextarea {\n width: calc(100% - 1.5rem - 2px);\n}\nlabel {\n color: #000;\n text-transform: uppercase;\n font-size: 12px;\n font-weight: 600;\n \n display: inline-block;\n margin-bottom: .5rem;\n}\n${BUTTON_STYLE}\n`;\n\nexport class PseudoForm extends HTMLElement {\n reportValidity() {\n return this[S].querySelector('form').reportValidity();\n }\n\n checkValidity() {\n return this[S].querySelector('form').checkValidity();\n }\n\n get elements() {\n return this[S].querySelector('form').elements;\n }\n}\n\nexport const fireFbReady = () => {\n fbReady = true;\n for (const fn of fbQueue) fn();\n};\nexport const runFbReady = (fn) => {\n if (!fbReady) fbQueue.push(fn);\n else fn();\n};\nconst fbQueue = [];\nlet fbReady = false;\n","import { FORM_STYLE } from \"./shared\";\n\ncustomElements.define('form-navigation', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['next', 'prev']\n }\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n shadow.innerHTML = `\n \n
\n
\n \n \n
\n
\n `;\n shadow.querySelector('#prev').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n this.prev();\n });\n shadow.querySelector('#next').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n this.next();\n });\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'next': {\n this.#form.querySelector('#next').className = newV === 'hidden' ? 'hidden' : '';\n break;\n }\n case 'prev': {\n this.#form.querySelector('#prev').className = newV === 'hidden' ? 'hidden' : '';\n break;\n }\n }\n }\n\n next() {\n this.dispatchEvent(new CustomEvent('form:next', {\n bubbles: true,\n composed: true,\n detail: this.parentElement\n }));\n }\n\n prev() {\n this.dispatchEvent(new CustomEvent('form:prev', {\n bubbles: true,\n composed: true,\n detail: this.parentElement\n }));\n }\n});\n","customElements.define('local-business-item', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['name', 'price']\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n

\n \n
\n `;\n }\n\n connectedCallback() {\n this.#form.querySelector('#name').textContent = this.getAttribute('name');\n this.#form.querySelector('#price').value = this.price();\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'name':\n return this.#form.querySelector('#name').textContent = newV;\n case 'price':\n return this.#form.querySelector('#price').value = newV;\n }\n }\n\n price(s) {\n const n = parseInt(s || this.getAttribute('price'));\n return isNaN(n) ? 0 : n;\n }\n});\n","import { S } from \"../shared\";\n\ncustomElements.define('local-business', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['name', 'service-id', 'state']\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n

\n \n
\n \n
\n `;\n }\n\n connectedCallback() {\n this.#form.querySelector('#name').textContent = this.getAttribute('name');\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'name':\n return this.#form.querySelector('#name').textContent = newV;\n }\n }\n\n get name() {\n return this.getAttribute('name') || ''\n }\n});\n","import \"./local-businesses/local-business-item\";\nimport \"./local-businesses/local-business\";\n\ncustomElements.define('local-businesses', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['filter']\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n \n
\n
\n \n
\n `;\n {\n const filter = shadow.querySelector('#filter');\n let t = null;\n filter.addEventListener('change', ev => {\n ev.stopPropagation();\n this.filter = ev.target.value;\n });\n filter.addEventListener('keyup', ev => {\n ev.stopPropagation();\n const value = ev.target.value;\n\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n this.filter = value;\n t = null;\n }, 1000 / 3);\n });\n }\n }\n\n connectedCallback() {\n this.filter = this.getAttribute('filter');\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'filter':\n return this.filter = newV;\n }\n }\n\n get filter() {\n return this.getAttribute('filter');\n }\n\n set filter(value) {\n if (!value || value === '') {\n this.removeAttribute('filter');\n for (const el of this.querySelectorAll('local-service')) {\n el.removeAttribute('local-services-visible');\n }\n } else {\n this.setAttribute('filter', value);\n for (const el of this.querySelectorAll('local-service')) {\n if (!el.name) continue;\n if (el.name.includes(value)) {\n el.setAttribute('local-services-visible', 'visible');\n } else {\n el.setAttribute('local-services-visible', 'invisible');\n }\n }\n }\n }\n});\n","import { FORM_STYLE, S } from \"./shared\";\n\ncustomElements.define('login-form', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return []\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n `;\n }\n\n connectedCallback() {\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n }\n }\n});\n","import { FORM_STYLE } from \"./shared\";\n\ncustomElements.define('ow-account', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['mode', \"id\", \"name\", 'email', \"facebook-id\"]\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n \n \n
\n Nie masz konta? Utwórz nowe\n
\n
\n Masz konta? Zaloguj się\n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n `;\n shadow.querySelector('#switch-login > a').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n this.mode = 'login';\n });\n shadow.querySelector('#switch-register > a').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n this.mode = 'register';\n });\n }\n\n connectedCallback() {\n if (this.mode === '') this.mode = 'login';\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'mode': {\n this.mode = newV;\n break;\n }\n case 'id': {\n this.id = newV;\n break;\n }\n case 'name': {\n this.name = newV;\n break;\n }\n case 'email': {\n this.email = newV;\n break;\n }\n case 'facebook-id': {\n this.facebook_id = newV;\n break;\n }\n }\n }\n\n get mode() {\n return this.getAttribute('mode') || '';\n }\n\n set mode(value) {\n value = ['login', 'register', 'display'].includes(value) ? value : 'login';\n this.setAttribute('mode', value);\n }\n\n get name() {\n return this.getAttribute('name') || '';\n }\n\n set name(v) {\n this.setAttribute('name', v);\n this.#form.querySelector('#display #name').value = v;\n }\n\n get email() {\n return this.getAttribute('email') || '';\n }\n\n set email(v) {\n this.setAttribute('email', v);\n this.#form.querySelector('#display #email').value = v;\n }\n\n get facebook_id() {\n return this.getAttribute('facebook-id');\n }\n\n set facebook_id(v) {\n this.setAttribute('facebook-id', v);\n this.#form.querySelector('#display #facebook_id').value = v;\n }\n});\n","customElements.define('ow-nav', class extends HTMLElement {\n #form;\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n \n
\n `;\n }\n});\n","customElements.define('ow-path', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['selected', 'path'];\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n \n `;\n }\n\n connectedCallback() {\n this.selected = this.getAttribute('selected');\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'selected':\n return this.selected = newV;\n case 'path':\n return this.path = newV;\n }\n }\n\n get selected() {\n return this.getAttribute('selected') === 'selected';\n }\n\n set selected(value) {\n if (value === 'selected') this.setAttribute('selected', 'selected');\n else this.removeAttribute('selected');\n }\n\n get path() {\n return this.getAttribute('path') || ''\n }\n\n set path(value) {\n if (!value || value === '') {\n this.removeAttribute('path');\n return;\n }\n this.setAttribute('path', value);\n this.#form.querySelector('a').setAttribute('href', value);\n }\n});\n","customElements.define('price-view', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['value', 'currency']\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n \n `;\n }\n\n connectedCallback() {\n this.#form.querySelector('#price').textContent = this.formatted;\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'price': {\n this.value = newV;\n break;\n }\n }\n }\n\n get formatted() {\n let v = this.value;\n let major = Math.ceil(v / 100);\n let minor = v % 100;\n let formatted = `${ major },${ minor < 10 ? `0${ minor }` : minor }`;\n return `${ formatted }${ this.currency }`\n }\n\n get value() {\n const n = parseInt(this.getAttribute('value'));\n return isNaN(n) ? 0 : n;\n }\n\n set value(v) {\n this.setAttribute('value', v);\n this.#form.querySelector('#price').textContent = this.formatted;\n }\n\n get currency() {\n return this.getAttribute('currency') || 'PLN';\n }\n});\n","import { FORM_STYLE } from \"../shared\";\n\ncustomElements.define('price-input', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['value', 'currency', 'required', 'name']\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n \n \n
\n `;\n\n const price = shadow.querySelector('#price');\n price.addEventListener('change', ev => {\n ev.stopPropagation();\n this.value = price.value;\n });\n }\n\n connectedCallback() {\n this.#form.querySelector('#currency').textContent = this.currency;\n this.#form.querySelector('#price').value = this.value;\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n const price = this.#form.querySelector('#price');\n switch (name) {\n case 'price': {\n this.value = newV;\n break;\n }\n case 'currency': {\n this.currency = newV;\n break;\n }\n case 'required': {\n newV\n ? price.setAttribute('required', 'required')\n : price.removeAttribute('required');\n break;\n }\n case 'readonly': {\n newV\n ? price.setAttribute('readonly', 'readonly')\n : price.removeAttribute('readonly');\n break;\n }\n case 'name': {\n this.setAttribute('name', newV);\n break;\n }\n }\n }\n\n get value() {\n return Math.floor(parseFloat(this.#form.querySelector('#price').value) * 100);\n }\n\n set value(v) {\n this.setAttribute('value', v);\n this.#form.querySelector('#price').value = v;\n }\n\n get currency() {\n return this.getAttribute('currency') || 'PLN';\n }\n\n set currency(value) {\n this.setAttribute('currency', value);\n this.#form.querySelector('#currency').textContent = this.currency;\n }\n\n reportValidity() {\n return this.#form.querySelector('input').reportValidity();\n }\n\n get name() {\n return this.getAttribute('name');\n }\n\n set name(value) {\n this.setAttribute('name', value);\n }\n});\n","import { FORM_STYLE, PseudoForm } from \"../shared\";\n\ncustomElements.define('register-basic-form', class extends PseudoForm {\n #form;\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n `;\n\n const form = shadow.querySelector('form');\n form.addEventListener('submit', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n shadow.querySelector('form-navigation').next();\n })\n }\n});\n","import { FORM_STYLE, PseudoForm } from \"../shared\";\n\ncustomElements.define('register-item-form-row', class extends PseudoForm {\n #form;\n\n static get observedAttributes() {\n return ['idx', 'name']\n }\n\n constructor() {\n super();\n this.#form = this.attachShadow({ mode: 'closed' });\n\n this.addEventListener('item:removed', () => {\n this.setAttribute('removed', 'removed');\n const parent = this.parentElement;\n this.remove();\n parent.dispatchEvent(new CustomEvent('item:removed', { bubbles: true, composed: true }));\n });\n }\n\n connectedCallback() {\n const idx = this.idx;\n\n this.#form.innerHTML = `\n \n
\n
\n \n \n
\n \n \n
\n
\n \n \n \n
\n
\n
\n
\n `;\n const imageInput = this.#form.querySelector('image-input');\n\n this.addEventListener('image-input:uploaded', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n this.picture_url = imageInput.url;\n });\n this.#form.querySelector('form').addEventListener('submit', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n this.reportValidity();\n });\n this.#form.querySelector('.remove').addEventListener('click', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n this.dispatchEvent(new CustomEvent('item:removed', { bubbles: true, composed: false }));\n });\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'idx':return this.updateNames();\n case 'picture-url': return this.picture_url = newV;\n }\n }\n\n get inputs() {\n return [\n extract(this.#form.querySelector('.item-name')),\n extract(this.#form.querySelector('.item-price')),\n ];\n }\n\n updateNames() {\n const idx = this.getAttribute('idx');\n for (const el of this.#form.querySelectorAll('.field')) {\n const id = el.id;\n el.querySelector('input, price-input').setAttribute('name', `items[${ idx }][${ id }]`);\n }\n }\n\n get idx() {\n return this.getAttribute('idx');\n }\n\n set idx(idx) {\n this.setAttribute('idx', idx);\n }\n\n get picture_url() {\n return this.getAttribute('picture-url');\n }\n\n set picture_url(v) {\n this.setAttribute('picture-url', v);\n this.#form.querySelector('image-input').url = v;\n this.#form.querySelector('#picture_url').value = v;\n }\n\n reportValidity() {\n return super.reportValidity() && this.#form.querySelector('price-input').reportValidity();\n }\n});\n\nconst extract = ({ name, value }) => ({ name, value })\n","import { FORM_STYLE, PseudoForm } from \"../shared\";\n\nimport \"./register-item-form-row\"\n\nconst updateItems = (form) => {\n let idx = 0;\n for (const el of form.querySelectorAll('register-item-form-row')) {\n el.idx = idx++;\n }\n return idx;\n}\n\ncustomElements.define('register-items-form', class extends PseudoForm {\n #form;\n\n static get observedAttributes() {\n return []\n }\n\n constructor() {\n super();\n const shadow = this.#form = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n
\n \n
\n
\n \n
\n \n
\n `;\n this.addEventListener('item:removed', ev => {\n ev.stopPropagation();\n updateItems(this)\n });\n this.addEventListener('form:next', ev => {\n for (const el of this.querySelectorAll('item-form-row')) {\n if (!el.reportValidity()) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n }\n });\n shadow.querySelector('#add-item').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n this.appendChild(document.createElement('register-item-form-row'));\n updateItems(this)\n });\n }\n\n get inputs() {\n return [...this.querySelectorAll(\"register-item-form-row\")].map(form => form.inputs)\n }\n});\n","import { FORM_STYLE, PseudoForm } from \"../shared\";\n\ncustomElements.define('register-business-form', class extends PseudoForm {\n #form;\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({mode: \"closed\"});\n\n shadow.innerHTML = `\n \n
\n
\n \n
\n
\n \n \n
\n \n
\n `;\n\n shadow.querySelector('form').addEventListener('submit', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n shadow.querySelector('form-navigation').next();\n });\n }\n})\n","import { FORM_STYLE, PseudoForm } from \"../shared\";\n\ncustomElements.define('register-submit-form', class extends PseudoForm {\n #form;\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n
\n
\n \n \n \n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n \n
\n \n \n
\n
\n `;\n }\n\n updateField(name, value) {\n this.#form.querySelector(`[id=\"hidden-${ name }\"]`).value = value;\n this.#form.querySelector(`[id=\"preview-${ name }\"]`).value = value;\n }\n\n setItems(items) {\n const host = this.#form.querySelector('#items');\n host.innerHTML = ``;\n for (const row of items) {\n const el = host.appendChild(document.createElement('div'));\n el.className = 'item-view';\n const [name, price] = row;\n\n el.innerHTML = `\n \n \n \n `;\n }\n }\n\n set accountType(v) {\n this.#form.querySelector('#account_type').value = v;\n }\n});\n","customElements.define('register-user-type', class extends HTMLElement {\n #form;\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n
\n \n
\n `;\n\n const user = shadow.querySelector('#user');\n user.addEventListener('click', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n this.dispatchEvent(new CustomEvent('account:type:user', { bubbles: true, composed: true }));\n });\n const service = shadow.querySelector('#local-service');\n service.addEventListener('click', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n this.dispatchEvent(new CustomEvent('account:type:local-service', { bubbles: true, composed: true }));\n });\n }\n});\n","import { FORM_STYLE } from \"../shared\";\n\ncustomElements.define('register-user-form', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['mode']\n }\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n
\n
\n \n \n \n \n
\n \n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n `;\n\n const form = shadow.querySelector('form');\n\n shadow.querySelector('#fb-icon').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n this.mode = 'facebook';\n FB.login((res) => {\n if (res.status === 'connected') {\n FB.api(\"/me?fields=id,name,email\", ({ id, name, email, ...rest }) => {\n console.log(id, name, email, rest);\n form.querySelector('#email').value = email;\n form.querySelector('#login').value = name;\n form.querySelector('#password').value = crypto.randomUUID();\n form.querySelector('#facebook_id').value = id;\n form.submit();\n });\n }\n }, { scope: 'public_profile,email', return_scopes: true });\n });\n\n shadow.querySelector('#email-icon').addEventListener('click', ev => {\n ev.stopPropagation();\n ev.preventDefault();\n\n this.mode = 'email';\n });\n }\n\n connectedCallback() {\n this.mode = '';\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'mode': {\n if (newV !== 'email' && newV !== 'facebook' && newV !== '')\n return;\n this.mode = newV;\n break;\n }\n }\n }\n\n get mode() {\n return this.getAttribute('mode') || ''\n }\n\n set mode(v) {\n this.setAttribute('mode', v);\n }\n});\n","import { S, FORM_STYLE } from \"./shared\";\n\nimport \"./register-form/register-basic-form\";\nimport \"./register-form/register-item-form-row.js\";\nimport \"./register-form/register-items-form.js\";\nimport \"./register-form/register-business-form\";\nimport \"./register-form/register-submit-form\";\nimport \"./register-form/register-user-type\";\nimport \"./register-form/register-user-form\";\n\ncustomElements.define('register-form', class extends HTMLElement {\n static get observedAttributes() {\n return ['step']\n }\n\n constructor() {\n super();\n const shadow = this[S] = this.attachShadow({ mode: 'closed' });\n shadow.innerHTML = `\n \n
\n
\n
\n \n \n \n \n \n \n
\n `;\n\n const finalForm = shadow.querySelector('#step-4');\n this[S].addEventListener('account:type:user', ev => {\n ev.stopPropagation();\n finalForm.accountType = 'User';\n this.step = 40;\n });\n this[S].addEventListener('account:type:local-service', ev => {\n ev.stopPropagation();\n finalForm.accountType = 'Business';\n this.step = 1;\n });\n this[S].addEventListener('form:next', ev => {\n ev.stopPropagation();\n const form = shadow.querySelector(`#step-${ this.step }`);\n if (this.#copyForm(form, finalForm)) {\n this.step = this.step + 1;\n }\n });\n this[S].addEventListener('form:prev', ev => {\n ev.stopPropagation();\n this.step = this.step - 1;\n });\n finalForm.addEventListener('submit', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n });\n }\n\n connectedCallback() {\n this.step = 0;\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n }\n }\n\n get step() {\n const step = parseInt(this.getAttribute('step'));\n return isNaN(step) ? 1 : step;\n }\n\n set step(n) {\n if (n < 0) return;\n this.setAttribute('step', n);\n }\n\n #copyForm(form, finalForm) {\n form.reportValidity();\n\n for (const el of form.elements) {\n if (el.name === '') continue;\n if (!el.reportValidity()) {\n return false;\n }\n }\n const inputs = form.inputs;\n if (inputs)\n finalForm.setItems(inputs);\n else\n for (const el of form.elements) {\n if (el.name === '') continue;\n finalForm.updateField(el.name, el.value);\n }\n return true;\n }\n});\n","import { BUTTON_STYLE, S } from \"../shared.js\";\n\ncustomElements.define('image-input', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['width', 'height', \"account-id\", \"url\"]\n }\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n
\n
\n \n \"\"\n
\n
\n \n
\n
\n \n
\n
\n `;\n\n shadow.querySelector('#save').addEventListener('click', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n const c = document.createElement('canvas');\n c.width = this.width;\n c.height = this.height;\n c.getContext('2d').putImageData(ctx.getImageData(0, 0, this.width, this.height), 0, 0);\n\n const blobBin = atob(c.toDataURL(\"image/webp\", 1.0).split(',')[1]);\n const array = [];\n for (let i = 0; i < blobBin.length; i++) {\n array.push(blobBin.charCodeAt(i));\n }\n const file = new Blob([new Uint8Array(array)], { type: 'image/webp' });\n const form = new FormData;\n form.append(`${ crypto.randomUUID() }.webp`, file);\n fetch(\"/upload\", {\n method: \"POST\",\n body: form,\n }).then(res => res.json()).then(({ path }) => {\n this.url = path;\n this.dispatchEvent(new CustomEvent('image-input:uploaded', { bubbles: true, composed: true }));\n });\n });\n\n const f = new FileReader();\n const input = shadow.querySelector('#file');\n const view = shadow.querySelector('#view');\n const img = shadow.querySelector('img');\n const canvas = shadow.querySelector('canvas');\n const ctx = canvas.getContext('2d');\n\n img.addEventListener('load', () => {\n let width, height;\n if (img.width > img.height) {\n width = 200;\n height = (img.height * 200) / img.width;\n } else {\n width = (img.width * 200) / img.height;\n height = 200;\n }\n this.setAttribute('width', width);\n this.setAttribute('height', height);\n\n img.width = width;\n img.height = height;\n ctx.clearRect(0, 0, 200, 200);\n ctx.drawImage(img, 0, 0, width, height);\n });\n input.addEventListener('change', ev => {\n ev.stopPropagation();\n\n f.addEventListener('loadend', (readerEvent) => {\n if (readerEvent.total !== readerEvent.loaded)\n return;\n img.src = readerEvent.target.result || '';\n });\n f.readAsDataURL(ev.target.files[0]);\n });\n\n view.addEventListener('click', ev => {\n ev.stopPropagation();\n input.click();\n });\n }\n\n connectedCallback() {\n this.account_id = this.account_id;\n this.url = this.url;\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'account-id':\n return this.account_id = newV;\n case 'url':\n return this.url = newV;\n }\n }\n\n get account_id() {\n return this.getAttribute('account-id');\n }\n\n set account_id(v) {\n this.setAttribute('account-id', v);\n }\n\n get width() {\n const v = parseInt(this.getAttribute('width'));\n return isNaN(v) ? 0 : v;\n }\n\n get height() {\n const v = parseInt(this.getAttribute('height'));\n return isNaN(v) ? 0 : v;\n }\n\n get url() {\n return this.getAttribute('url');\n }\n\n set url(v) {\n this.setAttribute('url', v);\n this.#form.querySelector('img').src = v;\n }\n});\n","import \"../shared/image-input\";\n\ncustomElements.define('business-item', class extends HTMLElement {\n #form;\n\n static get observedAttributes() {\n return ['item-id', 'name', 'price', 'picture-url', 'item-order']\n }\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n
\n \n
\n \n
\n
\n
\n \n \n \n \n \n
\n
\n `;\n\n const imageInput = shadow.querySelector('image-input');\n\n this.addEventListener('image-input:uploaded', ev => {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.picture_url = imageInput.url;\n\n const form = shadow.querySelector('form');\n form.querySelector('#id').value = this.item_id;\n form.querySelector('#name').value = this.name;\n form.querySelector('#price').value = this.price;\n form.querySelector('#picture_url').value = this.picture_url;\n form.querySelector('#item_order').value = this.item_order;\n form.submit();\n });\n }\n\n connectedCallback() {\n this.item_id = this.item_id;\n this.name = this.name;\n this.price = this.price;\n this.picture_url = this.picture_url;\n }\n\n attributeChangedCallback(name, oldV, newV) {\n if (oldV === newV) return;\n switch (name) {\n case 'item-id': return this.item_id = newV;\n case 'name': return this.name = newV;\n case 'price': return this.price = newV / 100.0;\n case 'picture-url': return this.picture_url = newV;\n }\n }\n\n get item_id() {\n return this.getAttribute('item-id');\n }\n\n set item_id(v) {\n this.setAttribute('item-id', v);\n }\n\n get item_order() {\n return this.getAttribute('item-order');\n }\n\n set item_order(v) {\n this.setAttribute('item-order', v);\n }\n\n get name() {\n return this.getAttribute('name');\n }\n\n set name(v) {\n this.setAttribute('name', v);\n this.#form.querySelector('#name').textContent = v;\n }\n\n get price() {\n return this.#form.querySelector('price-input').value;\n }\n\n set price(v) {\n this.setAttribute('price', v);\n this.#form.querySelector('price-input').value = v;\n }\n\n get picture_url() {\n return this.getAttribute('picture-url');\n }\n\n set picture_url(v) {\n this.setAttribute('picture-url', v);\n this.#form.querySelector('image-input').url = v;\n }\n});\n","import \"./business-items/business-item\";\n\ncustomElements.define('business-items', class extends HTMLElement {\n #form;\n\n constructor() {\n super();\n\n const shadow = this.#form = this.attachShadow({ mode: \"closed\" });\n\n shadow.innerHTML = `\n \n \n `;\n }\n});\n","import \"./form-navigation.js\";\nimport \"./local-businesses.js\";\nimport \"./login-form.js\";\nimport \"./ow-account.js\";\nimport \"./nav/ow-nav.js\";\nimport \"./nav/ow-path.js\";\nimport \"./price/price-view\";\nimport \"./price/price-input\";\nimport \"./register-form.js\";\nimport \"./business-items\";\n\nimport { fireFbReady } from \"./shared.js\";\n\nif (!document.querySelector('#facebook-jssdk')) {\n window.fbAsyncInit = () => {\n FB.init({\n appId: '1293538251053124',\n cookie: true,\n xfbml: true,\n version: 'v14.0'\n });\n FB.AppEvents.logPageView();\n fireFbReady();\n };\n\n const js = document.createElement('script');\n js.id = 'facebook-jssdk';\n js.src = \"https://connect.facebook.net/en_US/sdk.js\";\n document.head.appendChild(js);\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file