wj-elements 0.3.4 → 0.3.5

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"router-links-DU0wTw84.js","sources":["../packages/utils/router-links.js"],"sourcesContent":["const routerLinksData = Symbol('routerLinksData');\nconst linkContainers = new Set();\nlet router;\n\nconst delegate = function (el, eventName, selector, listener, context) {\n const handler = function (e) {\n let node = e.target;\n for (; node && node !== el; node = node.parentNode) {\n if (node.matches && node.matches(selector)) {\n e.selectorTarget = node;\n listener.call(context, e);\n }\n }\n };\n\n handler.eventName = eventName;\n el.addEventListener(eventName, handler, false);\n return handler;\n};\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst undelegate = function (el, handler) {\n const eventName = handler.eventName;\n el.removeEventListener(eventName, handler, false);\n};\n\nconst camelize = (str) => {\n if (str.indexOf('-') === -1) return str;\n const words = str.split('-');\n let result = '';\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n result += i ? word.charAt(0).toUpperCase() + word.slice(1) : word;\n }\n return result;\n};\n\nfunction mutationHandler(mutations, observer) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'attributes') {\n const attr = mutation.attributeName;\n if (attr.indexOf('param-') === 0 || attr.indexOf('query-') === 0) {\n updateLink(mutation.target, observer.rootEl);\n }\n } else {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeType === 1) {\n if (node.getAttribute('route')) updateLink(node, observer.rootEl);\n createLinks(observer.rootEl);\n }\n });\n }\n });\n}\n\nconst elementsObserverConfig = { childList: true, subtree: true, attributes: true };\n\nfunction getAttributeValues(el, prefix, result) {\n if (!el) return result;\n const attributes = el.attributes;\n\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n if (attr.name.indexOf(prefix) === 0) {\n const paramName = camelize(attr.name.slice(prefix.length));\n result[paramName] = attr.value;\n }\n }\n return result;\n}\n\nfunction getDefaults(rootEl, routeName, propName, routeEl, options) {\n let result = options[propName];\n if (typeof result === 'function') result = result.call(rootEl, routeName, routeEl);\n return result || {};\n}\n\nfunction getRouteProp(rootEl, routeName, routeEl, propName, attrPrefix) {\n if (!rootEl || !routeEl || !rootEl[routerLinksData]) return {};\n const options = rootEl[routerLinksData].options;\n const defaults = getDefaults(rootEl, routeName, propName, routeEl, options);\n getAttributeValues(rootEl, attrPrefix, defaults);\n return getAttributeValues(routeEl, attrPrefix, defaults);\n}\n\nfunction updateActiveClass(el, routeName, params, query) {\n const activeClass = el.hasAttribute('active-class') ? el.getAttribute('active-class') : 'active';\n if (activeClass) {\n const isActive = router.isActive(routeName, params, query, el.hasAttribute('exact'));\n el.classList.toggle(activeClass, isActive);\n }\n}\n\nfunction updateLink(el, rootEl) {\n if (!el || !rootEl) return;\n const routeName = el.getAttribute('route');\n if (!routeName) return;\n const params = getRouteProp(rootEl, routeName, el, 'params', 'param-');\n const query = getRouteProp(rootEl, routeName, el, 'query', 'query-');\n try {\n const href = router.generate(routeName, params, query);\n const anchorEl = el.tagName === 'A' ? el : el.querySelector('a');\n if (anchorEl) anchorEl.setAttribute('href', href);\n if (!router.state.activeTransition) {\n updateActiveClass(el, routeName, params, query);\n }\n } catch (error) {\n console.warn(`Error generating link for \"${routeName}\": ${error}`);\n }\n}\n\nfunction createLinks(rootEl) {\n if (!rootEl) return;\n const routeEls = rootEl.querySelectorAll('[route]');\n\n routeEls.forEach((el) => {\n updateLink(el, rootEl);\n });\n}\n\nfunction linkClickHandler(e) {\n if (e.type === 'click' && (e.button !== 0 || isModifiedEvent(e))) return;\n e.preventDefault();\n const el = e.selectorTarget;\n if (!el) return;\n const routeName = el.getAttribute('route');\n if (!routeName) return;\n const params = getRouteProp(this, routeName, el, 'params', 'param-');\n const query = getRouteProp(this, routeName, el, 'query', 'query-');\n const method = el.hasAttribute('replace') ? 'replaceWith' : 'transitionTo';\n router[method](routeName, params, query);\n}\n\nexport function bindRouterLinks(rootEl, options = {}) {\n if (!rootEl) return () => {};\n const observer = new MutationObserver(mutationHandler);\n\n observer.rootEl = rootEl;\n rootEl[routerLinksData] = { options, observer };\n\n const eventHandler = delegate(rootEl, options.event || 'click', '[route]', linkClickHandler, rootEl);\n createLinks(rootEl);\n observer.observe(rootEl, elementsObserverConfig);\n\n linkContainers.add(rootEl);\n\n return function () {\n linkContainers.delete(rootEl);\n observer.disconnect();\n undelegate(rootEl, eventHandler);\n };\n}\n\nfunction create(instance) {\n router = instance;\n}\n\nfunction done() {\n linkContainers.forEach((rootEl) => {\n if (!rootEl || typeof rootEl.querySelectorAll !== 'function' || !rootEl[routerLinksData]) {\n linkContainers.delete(rootEl);\n return;\n }\n rootEl.querySelectorAll('[route]').forEach((el) => {\n const routeName = el.getAttribute('route');\n if (!routeName) return;\n const params = getRouteProp(rootEl, routeName, el, 'params', 'param-');\n const query = getRouteProp(rootEl, routeName, el, 'query', 'query-');\n updateActiveClass(el, routeName, params, query);\n });\n });\n}\n\nexport const routerLinks = {\n create,\n done,\n};\n"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,OAAO,iBAAiB;AAChD,MAAM,iBAAiB,oBAAI,IAAG;AAC9B,IAAI;AAEJ,MAAM,WAAW,SAAU,IAAI,WAAW,UAAU,UAAU,SAAS;AACnE,QAAM,UAAU,SAAU,GAAG;AACzB,QAAI,OAAO,EAAE;AACb,WAAO,QAAQ,SAAS,IAAI,OAAO,KAAK,YAAY;AAChD,UAAI,KAAK,WAAW,KAAK,QAAQ,QAAQ,GAAG;AACxC,UAAE,iBAAiB;AACnB,iBAAS,KAAK,SAAS,CAAC;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AAEA,UAAQ,YAAY;AACpB,KAAG,iBAAiB,WAAW,SAAS,KAAK;AAC7C,SAAO;AACX;AAEA,SAAS,gBAAgB,OAAO;AAC5B,SAAO,CAAC,EAAE,MAAM,WAAW,MAAM,UAAU,MAAM,WAAW,MAAM;AACtE;AAEA,MAAM,aAAa,SAAU,IAAI,SAAS;AACtC,QAAM,YAAY,QAAQ;AAC1B,KAAG,oBAAoB,WAAW,SAAS,KAAK;AACpD;AAEA,MAAM,WAAW,CAAC,QAAQ;AACtB,MAAI,IAAI,QAAQ,GAAG,MAAM,GAAI,QAAO;AACpC,QAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,OAAO,MAAM,CAAC;AACpB,cAAU,IAAI,KAAK,OAAO,CAAC,EAAE,YAAW,IAAK,KAAK,MAAM,CAAC,IAAI;AAAA,EACjE;AACA,SAAO;AACX;AAEA,SAAS,gBAAgB,WAAW,UAAU;AAC1C,YAAU,QAAQ,SAAU,UAAU;AAClC,QAAI,SAAS,SAAS,cAAc;AAChC,YAAM,OAAO,SAAS;AACtB,UAAI,KAAK,QAAQ,QAAQ,MAAM,KAAK,KAAK,QAAQ,QAAQ,MAAM,GAAG;AAC9D,mBAAW,SAAS,QAAQ,SAAS,MAAM;AAAA,MAC/C;AAAA,IACJ,OAAO;AACH,eAAS,WAAW,QAAQ,CAAC,SAAS;AAClC,YAAI,KAAK,aAAa,GAAG;AACrB,cAAI,KAAK,aAAa,OAAO,EAAG,YAAW,MAAM,SAAS,MAAM;AAChE,sBAAY,SAAS,MAAM;AAAA,QAC/B;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ,CAAC;AACL;AAEA,MAAM,yBAAyB,EAAE,WAAW,MAAM,SAAS,MAAM,YAAY,KAAI;AAEjF,SAAS,mBAAmB,IAAI,QAAQ,QAAQ;AAC5C,MAAI,CAAC,GAAI,QAAO;AAChB,QAAM,aAAa,GAAG;AAEtB,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACxC,UAAM,OAAO,WAAW,CAAC;AACzB,QAAI,KAAK,KAAK,QAAQ,MAAM,MAAM,GAAG;AACjC,YAAM,YAAY,SAAS,KAAK,KAAK,MAAM,OAAO,MAAM,CAAC;AACzD,aAAO,SAAS,IAAI,KAAK;AAAA,IAC7B;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,YAAY,QAAQ,WAAW,UAAU,SAAS,SAAS;AAChE,MAAI,SAAS,QAAQ,QAAQ;AAC7B,MAAI,OAAO,WAAW,WAAY,UAAS,OAAO,KAAK,QAAQ,WAAW,OAAO;AACjF,SAAO,UAAU,CAAA;AACrB;AAEA,SAAS,aAAa,QAAQ,WAAW,SAAS,UAAU,YAAY;AACpE,MAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,eAAe,EAAG,QAAO,CAAA;AAC5D,QAAM,UAAU,OAAO,eAAe,EAAE;AACxC,QAAM,WAAW,YAAY,QAAQ,WAAW,UAAU,SAAS,OAAO;AAC1E,qBAAmB,QAAQ,YAAY,QAAQ;AAC/C,SAAO,mBAAmB,SAAS,YAAY,QAAQ;AAC3D;AAEA,SAAS,kBAAkB,IAAI,WAAW,QAAQ,OAAO;AACrD,QAAM,cAAc,GAAG,aAAa,cAAc,IAAI,GAAG,aAAa,cAAc,IAAI;AACxF,MAAI,aAAa;AACb,UAAM,WAAW,OAAO,SAAS,WAAW,QAAQ,OAAO,GAAG,aAAa,OAAO,CAAC;AACnF,OAAG,UAAU,OAAO,aAAa,QAAQ;AAAA,EAC7C;AACJ;AAEA,SAAS,WAAW,IAAI,QAAQ;AAC5B,MAAI,CAAC,MAAM,CAAC,OAAQ;AACpB,QAAM,YAAY,GAAG,aAAa,OAAO;AACzC,MAAI,CAAC,UAAW;AAChB,QAAM,SAAS,aAAa,QAAQ,WAAW,IAAI,UAAU,QAAQ;AACrE,QAAM,QAAQ,aAAa,QAAQ,WAAW,IAAI,SAAS,QAAQ;AACnE,MAAI;AACA,UAAM,OAAO,OAAO,SAAS,WAAW,QAAQ,KAAK;AACrD,UAAM,WAAW,GAAG,YAAY,MAAM,KAAK,GAAG,cAAc,GAAG;AAC/D,QAAI,SAAU,UAAS,aAAa,QAAQ,IAAI;AAChD,QAAI,CAAC,OAAO,MAAM,kBAAkB;AAChC,wBAAkB,IAAI,WAAW,QAAQ,KAAK;AAAA,IAClD;AAAA,EACJ,SAAS,OAAO;AACZ,YAAQ,KAAK,8BAA8B,SAAS,MAAM,KAAK,EAAE;AAAA,EACrE;AACJ;AAEA,SAAS,YAAY,QAAQ;AACzB,MAAI,CAAC,OAAQ;AACb,QAAM,WAAW,OAAO,iBAAiB,SAAS;AAElD,WAAS,QAAQ,CAAC,OAAO;AACrB,eAAW,IAAI,MAAM;AAAA,EACzB,CAAC;AACL;AAEA,SAAS,iBAAiB,GAAG;AACzB,MAAI,EAAE,SAAS,YAAY,EAAE,WAAW,KAAK,gBAAgB,CAAC,GAAI;AAClE,IAAE,eAAc;AAChB,QAAM,KAAK,EAAE;AACb,MAAI,CAAC,GAAI;AACT,QAAM,YAAY,GAAG,aAAa,OAAO;AACzC,MAAI,CAAC,UAAW;AAChB,QAAM,SAAS,aAAa,MAAM,WAAW,IAAI,UAAU,QAAQ;AACnE,QAAM,QAAQ,aAAa,MAAM,WAAW,IAAI,SAAS,QAAQ;AACjE,QAAM,SAAS,GAAG,aAAa,SAAS,IAAI,gBAAgB;AAC5D,SAAO,MAAM,EAAE,WAAW,QAAQ,KAAK;AAC3C;AAEO,SAAS,gBAAgB,QAAQ,UAAU,IAAI;AAClD,MAAI,CAAC,OAAQ,QAAO,MAAM;AAAA,EAAC;AAC3B,QAAM,WAAW,IAAI,iBAAiB,eAAe;AAErD,WAAS,SAAS;AAClB,SAAO,eAAe,IAAI,EAAE,SAAS,SAAQ;AAE7C,QAAM,eAAe,SAAS,QAAQ,QAAQ,SAAS,SAAS,WAAW,kBAAkB,MAAM;AACnG,cAAY,MAAM;AAClB,WAAS,QAAQ,QAAQ,sBAAsB;AAE/C,iBAAe,IAAI,MAAM;AAEzB,SAAO,WAAY;AACf,mBAAe,OAAO,MAAM;AAC5B,aAAS,WAAU;AACnB,eAAW,QAAQ,YAAY;AAAA,EACnC;AACJ;AAEA,SAAS,OAAO,UAAU;AACtB,WAAS;AACb;AAEA,SAAS,OAAO;AACZ,iBAAe,QAAQ,CAAC,WAAW;AAC/B,QAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,cAAc,CAAC,OAAO,eAAe,GAAG;AACtF,qBAAe,OAAO,MAAM;AAC5B;AAAA,IACJ;AACA,WAAO,iBAAiB,SAAS,EAAE,QAAQ,CAAC,OAAO;AAC/C,YAAM,YAAY,GAAG,aAAa,OAAO;AACzC,UAAI,CAAC,UAAW;AAChB,YAAM,SAAS,aAAa,QAAQ,WAAW,IAAI,UAAU,QAAQ;AACrE,YAAM,QAAQ,aAAa,QAAQ,WAAW,IAAI,SAAS,QAAQ;AACnE,wBAAkB,IAAI,WAAW,QAAQ,KAAK;AAAA,IAClD,CAAC;AAAA,EACL,CAAC;AACL;AAEY,MAAC,cAAc;AAAA,EACvB;AAAA,EACA;AACJ;"}