perlite
Version:
[]()
1 lines • 21.2 kB
Source Map (JSON)
{"version":3,"file":"index.min.mjs","sources":["../src/utils.ts","../src/directives/each.ts","../src/directives/ref.ts","../src/directives/decorator.ts","../src/directives/bind.ts","../src/directives/call.ts","../src/directives/capture.ts","../src/directives/once.ts","../src/directives/passive.ts","../src/directives/prevent.ts","../src/directives/stop.ts","../src/directives/self.ts","../src/index.ts"],"sourcesContent":["import { render, nothing } from 'lit-html';\n\nexport const unrender = (target: Element | DocumentFragment) => render(nothing, target);\n\nexport const noop = (...args: any[]) => { };\n\nexport const tick = (fn: (() => any) = noop): Promise<undefined> => new Promise((resolve) => setTimeout(resolve)).then(fn);\n\nexport const memo = (fn: (...args: any[]) => any, invalidate?: (...args: any[]) => any) => {\n const cache = new Map();\n return (...args: any[]) => {\n let key;\n if (typeof invalidate === 'function') {\n const validOrKey = invalidate.apply(fn, args);\n if (validOrKey === false) { // invalidate the cache\n key = JSON.stringify(args);\n cache.delete(key);\n } else if (validOrKey !== true) { // set custom cache key\n key = validOrKey;\n }\n }\n\n if (key === undefined) {\n key = JSON.stringify(args);\n }\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n const result = fn.apply(fn, args);\n cache.set(key, result);\n\n return result;\n };\n};\n\nexport function attrToVal(str: string): any {\n if (str === 'true' || str === 'false') {\n return str === 'true';\n } else if (str === 'null') {\n return null;\n } else if (str === 'undefined') {\n return undefined;\n } else if (str !== '' && !isNaN(Number(str))) {\n return Number(str);\n } else {\n try {\n return JSON.parse(str);\n } catch (e) { }\n }\n return str;\n}\n\nexport function camelCase(str: string, pascal: boolean = false): string {\n const camel = str.replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n return pascal ? camel.replace(/^\\w/, s => s.toUpperCase()) : camel;\n}\n\nexport function kebabCase(str: string): string {\n return str.replace(/[A-Z]/g, '-$&').toLowerCase();\n}","import { repeat } from 'lit-html/directives/repeat';\n\nexport const each = (items, template, keyFn = (item) => item) =>\n repeat(items, keyFn, template);\n","import { directive } from 'lit-html';\n\nexport const ref = directive((fn) => (part) => fn(part.element));","import { directive } from 'lit-html';\n\nconst decorators = new WeakMap();\n\nexport const decorator = directive((handler, ...state) => {\n const self = (part) => {\n const el = part.element;\n\n if (decorators.has(part)) {\n const [decorator, prevHandler] = decorators.get(part);\n if (prevHandler !== handler) {\n decorator.destroy();\n decorators.delete(part);\n self(part);\n } else {\n decorator.update(...state);\n }\n } else {\n const decorator = handler(el, ...state);\n decorators.set(part, [decorator, handler]);\n // decorator.destroy() + decorators.delete(part) ???\n // https://github.com/Polymer/lit-html/issues/283\n // wait till lit-html 2 ?\n }\n };\n return self;\n});\n","import { directive, EventPart } from 'lit-html';\n\n// check this later: https://codesandbox.io/s/hyperactiv-tests-works-u47wt?file=/src/bind.js\n\ntype HTMLConrolElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | HTMLButtonElement;\n\nexport const bind = directive((handleEvent) => (part) => {\n if (!(part instanceof EventPart)) {\n throw new Error('\"bind\" directive can only be used in event listeners');\n }\n\n const el: any = part.element as HTMLConrolElement;\n const isInput = el instanceof HTMLInputElement;\n const isSelect = el instanceof HTMLSelectElement;\n const isTextarea = el instanceof HTMLTextAreaElement;\n const isButton = el instanceof HTMLButtonElement;\n\n if (!isInput && !isSelect && !isTextarea && !isButton) {\n throw new Error(\n '\"bind\" directive can only be applied to input/select/textarea/button elements.'\n );\n }\n\n part.setValue(function (...args) {\n let value: string | boolean | any = el.defaultValue;\n if (isSelect && el.options.length > 0) {\n const i = el.selectedIndex >= 0 ? el.selectedIndex : 0;\n value = el.options[i].value;\n } else if (isInput) {\n switch (el.type) {\n case 'number':\n case 'range':\n value = el.valueAsNumber;\n break;\n case 'checkbox':\n case 'radio':\n value = !!el.checked;\n break;\n case 'time':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n value = el.valueAsDate;\n break;\n default:\n value = el.value;\n }\n } else {\n value = el.value;\n }\n\n handleEvent.call(this, value, ...args);\n });\n});\n","export const call = (handleEvent, ...args) => function (...argv) {\n handleEvent.call(this, ...argv, ...args);\n};","import { directive, EventPart } from 'lit-html';\n\nexport const capture = directive((handleEvent) => (part) => {\n\n if (!(part instanceof EventPart)) {\n throw new Error('\"capture\" directive can only be used in event listeners');\n }\n\n part.setValue(typeof handleEvent === 'object' ?\n { ...handleEvent, capture: true } :\n { handleEvent, capture: true }\n );\n});","import { directive, EventPart } from 'lit-html';\n\nexport const once = directive((handleEvent) => (part) => {\n\n if (!(part instanceof EventPart)) {\n throw new Error('\"once\" directive can only be used in event listeners');\n }\n\n part.setValue(typeof handleEvent === 'object' ?\n { ...handleEvent, once: true } :\n { handleEvent, once: true }\n );\n});","import { directive, EventPart } from 'lit-html';\n\nexport const passive = directive((handleEvent) => (part) => {\n\n if (!(part instanceof EventPart)) {\n throw new Error('\"passive\" directive can only be used in event listeners');\n }\n\n part.setValue(typeof handleEvent === 'object' ?\n { ...handleEvent, passive: true } :\n { handleEvent, passive: true }\n );\n});","import { directive, EventPart } from 'lit-html';\n\nexport const prevent = directive((handler) => (part) => {\n\n if (!(part instanceof EventPart)) {\n throw new Error('\"prevent\" directive can only be used in event listeners');\n }\n\n const { handleEvent, ...options } = handler;\n\n part.setValue({\n handleEvent: function (event) {\n event.preventDefault();\n (handleEvent || handler).call(this, event);\n },\n ...options\n });\n});","import { directive, EventPart } from 'lit-html';\n\nexport const stop = directive((handler, immediate = false) => (part) => {\n\n if (!(part instanceof EventPart)) {\n throw new Error('\"stop\" directive can only be used in event listeners');\n }\n\n const { handleEvent, ...options } = handler;\n\n part.setValue({\n handleEvent: function (event) {\n immediate ? event.stopImmediatePropagation() : event.stopPropagation();\n (handleEvent || handler).call(this, event);\n },\n ...options\n });\n});","import { directive, EventPart } from 'lit-html';\n\nexport const self = directive((handler) => (part) => {\n\n if (!(part instanceof EventPart)) {\n throw new Error('\"self\" directive can only be used in event listeners');\n }\n\n const { handleEvent, ...options } = handler;\n\n part.setValue({\n handleEvent: function (event) {\n (event.target === event.currentTarget)\n && (handleEvent || handler).call(this, event);\n },\n ...options\n });\n});","import hr from 'hyperactiv';\nimport { render, nothing } from 'lit-html';\n\nimport { attrToVal, camelCase, kebabCase, noop, unrender } from './utils';\n\nimport type * as Type from './types';\n\nconst { observe, computed, dispose } = hr;\n\nexport * from './utils';\nexport * from './types';\nexport * from './directives';\nexport * from 'lit-html';\n\nexport { observe, computed, dispose };\n\nexport const $ = (\n {\n render: template = () => nothing,\n state: data = {},\n target = document.body,\n ...options\n }: Type.Config,\n ...context\n): Type.Widget => {\n const model: {} = (typeof data === 'function') ? data(...context) : data;\n\n Object.entries(target.dataset).forEach(([key, value]) => {\n if (key in model) model[key] = attrToVal(value);\n });\n\n const state: ProxyConstructor = observe(model, {\n batch: true,\n deep: true,\n bind: true,\n ...options\n });\n\n const emit = (type: string, detail: object, { bubbles = false, cancelable = true } = {}) => {\n target.dispatchEvent(\n new CustomEvent(type, { detail, bubbles, cancelable })\n );\n };\n\n let mounted = false;\n const rerender = () => {\n render(template(state, emit, ...context), target);\n if (!mounted) {\n emit('mount', model);\n mounted = true;\n }\n emit('update', model);\n };\n const renderer = computed(({ computeAsync }) => {\n if (mounted && !document.contains(target)) return destroy();\n emit('state', model);\n return Promise.resolve()\n .then(() => computeAsync(rerender))\n .catch(err => emit('error', err));\n });\n\n const events = new Set();\n const on = (type: string, fn: (e: CustomEvent) => void, opts?: object | boolean) => {\n target.addEventListener(type, fn, opts);\n const off = () => {\n target.removeEventListener(type, fn, opts);\n return events.delete(off);\n };\n events.add(off);\n return off;\n };\n\n const effects = new Set();\n const effect = (fn: () => void, opts?: object) => {\n const handle = computed(fn, opts);\n const cancel = () => {\n dispose(handle);\n return effects.delete(cancel);\n };\n effects.add(cancel);\n return cancel;\n };\n\n const observer = new MutationObserver((mutations: MutationRecord[]) => {\n mutations.forEach((mutation) => {\n if (mutation.type !== 'attributes') return;\n\n const el: Element = mutation.target as Element;\n const key = camelCase(mutation.attributeName.replace('data-', ''));\n\n if (!(key in state)) return;\n\n const value = el.getAttribute(mutation.attributeName);\n if (value !== mutation.oldValue) {\n const val = attrToVal(value);\n if (state[key] !== val) state[key] = val;\n }\n });\n });\n\n observer.observe(target, {\n attributeFilter: Object.entries(model).reduce((attrs, [key, val]) => {\n if (typeof val !== 'function') {\n attrs.push(`data-${kebabCase(key)}`);\n }\n return attrs;\n }, []),\n attributeOldValue: true,\n characterData: false,\n childList: false,\n subtree: false\n });\n\n const destroy = (cb = noop) => {\n observer.disconnect();\n dispose(renderer);\n effects.forEach((cancel: () => void) => cancel());\n effects.clear();\n emit('destroy', model);\n events.forEach((off: () => void) => off());\n events.clear();\n unrender(target);\n cb(model);\n };\n\n const ctx = (fn: (...ctx: any[]) => any) => fn(...context);\n\n return {\n on,\n ctx,\n model, // plain state (object)\n state, // reactive state (proxy)\n effect,\n target,\n destroy,\n render: rerender,\n };\n};\n\nexport const $$ = ({ target, ...config }: Type.Configs, ...context): Type.Widgets => {\n if (!(target as NodeList | Node[]).length) {\n target = [target] as Node[];\n }\n\n const widgets = Array.prototype.map.call(target, (target: HTMLElement) => {\n return $({ ...config, target } as Type.Config, ...context);\n });\n\n return {\n ...widgets,\n effect: (fn, opts): () => void => {\n const cancels = widgets.map((widget: Type.Widget) => widget.effect(fn(widget.state), opts));\n return () => cancels.forEach(cancel => cancel());\n },\n on: (...args): () => void => {\n const offs = widgets.map((widget: Type.Widget) => widget.on(...args));\n return () => offs.forEach(off => off());\n },\n destroy: (cb): void => widgets.forEach((widget: Type.Widget) => widget.destroy(cb)),\n render: (): void => widgets.forEach((widget: Type.Widget) => widget.render()),\n state: (fn: (state: ProxyConstructor) => void): void => {\n widgets.forEach((widget: Type.Widget) => fn(widget.state))\n },\n ctx: (fn: (...ctx: any[]) => any) => fn(...context),\n forEach: Array.prototype.forEach.bind(widgets),\n target,\n };\n};"],"names":["unrender","target","render","nothing","noop","args","tick","fn","Promise","resolve","setTimeout","then","memo","invalidate","cache","Map","key","validOrKey","apply","JSON","stringify","delete","undefined","has","get","result","set","attrToVal","str","isNaN","Number","parse","e","camelCase","pascal","camel","replace","_","w","toUpperCase","s","kebabCase","toLowerCase","each","items","template","keyFn","item","repeat","ref","directive","part","element","decorators","WeakMap","decorator","handler","state","self","el","prevHandler","destroy","update","bind","handleEvent","EventPart","Error","isInput","HTMLInputElement","isSelect","HTMLSelectElement","isTextarea","HTMLTextAreaElement","isButton","HTMLButtonElement","setValue","value","defaultValue","options","length","i","selectedIndex","type","valueAsNumber","checked","valueAsDate","call","this","argv","capture","once","passive","prevent","event","preventDefault","stop","immediate","stopImmediatePropagation","stopPropagation","currentTarget","observe","computed","dispose","hr","$","data","document","body","context","model","Object","entries","dataset","forEach","batch","deep","emit","detail","bubbles","cancelable","dispatchEvent","CustomEvent","mounted","rerender","renderer","computeAsync","contains","catch","err","events","Set","effects","observer","MutationObserver","mutations","mutation","attributeName","getAttribute","oldValue","val","attributeFilter","reduce","attrs","push","attributeOldValue","characterData","childList","subtree","cb","disconnect","cancel","clear","off","on","opts","addEventListener","removeEventListener","add","ctx","effect","handle","$$","config","widgets","Array","prototype","map","cancels","widget","offs"],"mappings":"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"}