oncss
Version:
A CSS framework for modern web development.
1 lines • 24.1 kB
Source Map (JSON)
{"version":3,"file":"core.cjs","sources":["../src/core.ts"],"sourcesContent":["import { CSSOptionProps, CSSFactoryType, CSSProps } from './types';\nimport youid from 'youid';\n// const _global: any = typeof window !== 'undefined' ? window : global;\n// _global.Factory = _global.Factory || new Map<string, CSSFactoryType>();\n// export const CSSFactory = _global.Factory as Map<string, CSSFactoryType>\n\nconst caches = new Map<string, Map<string, CSSFactoryType>>()\n\nexport const ONCSS_CACHE = {\n set(cacheId: string, cachekey: string, value: CSSFactoryType) {\n let cache = caches.get(cacheId)\n if (!cache) {\n cache = new Map()\n caches.set(cacheId, cache)\n }\n cache.set(cachekey, value)\n },\n get(cacheId: string, cachekey: string) {\n let cache = caches.get(cacheId)\n if (cache) {\n return cache.get(cachekey)\n }\n },\n has(cacheId: string, cachekey: string) {\n let cache = caches.get(cacheId)\n if (cache) {\n return cache.has(cachekey)\n }\n return false\n },\n delete(cacheId: string, cachekey: string,) {\n let cache = caches.get(cacheId)\n if (cache) {\n cache.delete(cachekey)\n }\n },\n caches() {\n return caches\n }\n}\n\n\n\nconst number_val_props = [\n \"fontWeight\",\n \"font-weight\",\n \"lineHeight\",\n \"line-height\",\n \"opacity\",\n \"zIndex\",\n \"z-index\",\n \"flex\",\n \"order\",\n \"flexGrow\",\n \"flex-grow\",\n \"flexShrink\",\n \"flex-shrink\",\n \"flexBasis\",\n \"flex-basis\",\n \"columns\",\n \"perspective\",\n \"stroke-dashoffset\"\n]\n\nexport const formatCSSProp = (prop: string) => prop.split(/(?=[A-Z])/).join(\"-\").toLowerCase();\nexport const formatCSSValue = (prop: string, val: any) => typeof val === 'number' && !number_val_props.includes(prop) ? `${val}px` : val\n\nconst PREFIXES = ['webkit', 'moz', 'ms', 'o'];\nlet _declaration: CSSStyleDeclaration;\nconst PREFIXCACHE = new Map();\n\nexport const cssPrefix = (prop: string, value: string): { prop: string, value: string } => {\n value = formatCSSValue(prop, value);\n prop = formatCSSProp(prop);\n\n if (typeof window === 'undefined') {\n return { prop, value };\n }\n\n const declaration = _declaration || (_declaration = document.createElement(\"div\").style);\n value = value?.toString();\n\n // Check if the property and value work as is\n if (declaration.setProperty(prop, value), declaration.getPropertyValue(prop) === value) {\n return { prop, value };\n }\n\n // Check cached property and value prefix\n const cached = PREFIXCACHE.get(prop);\n if (cached) {\n return { prop: cached._prop, value: `${cached._vprefix}${value}` };\n }\n\n let _prop = prop;\n let _value = value;\n let _vprefix = '';\n\n // Try property prefixes\n const camelCaseProp = prop.includes('-') ? prop.replace(/-([a-z])/g, (_, c) => c.toUpperCase()) : prop;\n for (const prefix of PREFIXES) {\n if (declaration[`${prefix}${camelCaseProp}` as any] !== undefined) {\n _prop = `-${prefix}-${prop}`;\n break;\n }\n }\n\n // Check if prefixed property works with the value\n declaration.setProperty(_prop, value);\n if (!declaration.getPropertyValue(_prop)) {\n for (const prefix of PREFIXES) {\n const prefixedValue = `-${prefix}-${value}`;\n if (declaration.setProperty(_prop, prefixedValue), declaration.getPropertyValue(_prop) === prefixedValue) {\n _value = prefixedValue;\n _vprefix = `-${prefix}-`;\n break;\n }\n }\n }\n\n PREFIXCACHE.set(prop, { _prop, _vprefix });\n return { prop: _prop, value: _value };\n};\n\n\nconst resolveStyleContainer = (input?: Document | HTMLElement): { document?: Document; container?: HTMLElement } => {\n if (typeof window === 'undefined') {\n return {\n document: undefined,\n container: undefined\n }\n }\n // Default → current document\n if (!input) {\n return {\n document,\n container: document.head,\n };\n }\n\n // If input is a Document (works across iframes)\n if (\"nodeType\" in input && input.nodeType === 9) {\n return {\n document: input as Document,\n container: (input as Document).head || input.getElementsByTagName(\"head\")[0],\n };\n }\n\n // If input is an HTMLElement → use its owner document\n if (\"ownerDocument\" in input && input instanceof HTMLElement) {\n return {\n document: input.ownerDocument,\n container: input,\n };\n }\n\n throw new Error(\"Invalid input: must be Document or HTMLElement\");\n}\n\nexport const style = <Aliases, BreakpointKeys extends string>(_css: CSSProps<Aliases, BreakpointKeys>, cls?: string, opt?: CSSOptionProps<Aliases, BreakpointKeys>, dept = 1) => {\n let cachekey\n let classname = cls\n const cacheId = opt?.cacheId || \"global\"\n\n if (!cls) {\n cachekey = (opt?.selector ?? \"\") + JSON.stringify(_css, (_key, value) => typeof value === \"function\" ? value.toString() : value);\n const has = ONCSS_CACHE.get(cacheId, cachekey)\n if (has) {\n has.cache = true\n return has\n }\n classname = `${opt?.classPrefix || \"\"}x${youid(cachekey)}`\n } else if (typeof cls !== 'string') {\n throw new Error(`Invalid class name: ${cls}`)\n }\n\n let stack: any = [`${classname}{`]\n let medias: any = {}\n let skiped: any = {}\n for (let prop in _css) {\n let val = (_css as any)[prop]\n let firstChar = prop.charAt(0)\n if (firstChar === '&') {\n let ncls = prop.replace(/&/g, classname as string)\n const r: any = style(val, ncls, opt, dept + 1)\n if (opt?.skipProps) {\n skiped = {\n ...skiped,\n ...r.skiped\n }\n }\n stack.push(r.stack)\n } else if (firstChar === '@') {\n if (prop.startsWith(\"@global\") || prop.startsWith(\"@keyframes\")) {\n let _css = ''\n for (let selector in val) {\n let r: any = style(val[selector], selector, opt, dept + 1)\n _css += r.stack\n if (opt?.skipProps) {\n skiped = {\n ...skiped,\n ...r.skiped\n }\n }\n }\n if (prop.startsWith(\"@keyframes\")) {\n stack.push(`${prop}{${_css}}`)\n } else {\n stack.push(_css)\n }\n } else {\n let r: any = style(val, classname, opt, dept + 1)\n const atcss = prop + \"{\" + r.stack + \"}\"\n stack.push(atcss)\n if (opt?.skipProps) {\n skiped = {\n ...skiped,\n ...r.skiped\n }\n }\n }\n } else {\n if (opt?.skipProps && opt.skipProps(prop, val, dept)) {\n if (!((classname as any) in skiped)) skiped[classname as string] = []\n skiped[classname as string].push(prop)\n continue\n }\n if (typeof val === 'function' || Array.isArray(val)) {\n continue\n }\n if (typeof val === 'object') {\n for (let media in val) {\n if (typeof val[media] === 'object' || typeof val[media] === 'function' || Array.isArray(val[media])) {\n throw new Error(`Invalid css value: ${val[media]}`);\n }\n let breakpoint = media\n let isNumber = !isNaN(parseInt(breakpoint))\n if (!isNumber) {\n if (opt?.breakpoints && !isNaN(parseInt((opt.breakpoints as any)[media]))) {\n breakpoint = opt.breakpoints[media as BreakpointKeys].toString()\n } else {\n throw new Error(`Invalid breakpoint prop: ${media}`);\n }\n }\n let _css = { [prop]: val[media] }\n let r: any = style(_css, classname, opt, dept)\n let _style = r.stack\n let mediakey = `@media (min-width: ${breakpoint}px)`\n medias[mediakey] = medias[mediakey] ? medias[mediakey] + _style : _style\n if (opt?.skipProps) {\n skiped = {\n ...skiped,\n ...r.skiped\n }\n }\n }\n } else {\n if (opt?.getProps) {\n let _props: any = opt.getProps(prop, val, _css, dept)\n if (_props) {\n let r: any = style(_props, classname, {\n ...opt,\n getProps: undefined\n })\n if (opt?.skipProps) {\n skiped = {\n ...skiped,\n ...r.skiped\n }\n }\n stack.push(r.stack)\n continue;\n }\n }\n if (opt?.aliases && (opt.aliases as any)[prop]) {\n let _props = (opt.aliases as any)[prop](val)\n if (_props) {\n let r: any = style(_props, classname, {\n ...opt,\n aliases: undefined\n }, dept)\n r.stack = r.stack.replace(`${classname}{`, '').replace(`}`, '')\n stack[0] += r.stack\n continue;\n }\n }\n if (opt?.getValue) {\n val = opt.getValue(prop, val, _css, dept)\n }\n let p = cssPrefix(prop, val)\n stack[0] += `${p.prop}:${p.value};`\n }\n }\n }\n stack[0] += \"}\"\n if (stack[0] === `${classname}{}`) {\n stack[0] = \"\"\n }\n stack = stack.join('')\n for (let media in medias) {\n stack += `${media}{${medias[media].replace(new RegExp(`}\\\\${classname}\\\\{`, 'g'), '')}}`\n }\n\n if (cachekey) {\n const d = resolveStyleContainer(opt?.container);\n\n const selector = opt?.selector ?? \".\"\n stack = stack.replace(new RegExp(classname as string, 'g'), `${selector}${classname}`)\n const r = {\n cache: false,\n cachekey,\n selector,\n classname: classname as string,\n css: stack,\n cssraw: _css,\n skiped,\n cacheId,\n getStyleTag: () => d.container?.querySelector(`style[data-href=\"${classname}\"]`) as HTMLStyleElement | null,\n deleteStyle: () => {\n const tag = r.getStyleTag()\n tag && tag.remove()\n },\n inject: () => {\n const tag = r.getStyleTag() || d.document?.createElement(\"style\");\n if (tag && !tag?.innerHTML) {\n tag.innerHTML = r.css\n tag.setAttribute(`data-href`, classname as string)\n d.container?.appendChild(tag);\n }\n return tag as HTMLStyleElement\n },\n refresh: () => {\n r.deleteStyle()\n return r.inject()\n }\n }\n\n ONCSS_CACHE.set(cacheId, cachekey, r)\n\n let inject = opt?.injectStyle ?? true\n if (inject && d.document) {\n r.inject()\n }\n return r\n }\n return { stack, skiped }\n}"],"names":[],"mappings":"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"}