UNPKG

@dash-ui/styles

Version:

A tiny, powerful, framework-agnostic CSS-in-JS library.

1 lines 83.8 kB
{"version":3,"file":"dash.js","sources":["../../node_modules/.pnpm/@dash-ui+stylis@1.0.5/node_modules/@dash-ui/stylis/src/index.js","../../src/utils.ts","../../src/create-dash.ts","../../src/create-styles.ts","../../node_modules/.pnpm/@dash-ui+unitless@2.0.0/node_modules/@dash-ui/unitless/src/index.ts"],"sourcesContent":["const WEBKIT = '-webkit-'\nconst MOZ = '-moz-'\nconst MS = '-ms-'\nconst FLEX = 'flex-'\nconst $1 = '$1'\nconst $2 = '$2'\nfunction charCodeAt(s, code) {\n return s.charCodeAt(code)\n}\nfunction replace(s, i, o) {\n return s.replace(i, o)\n}\nfunction indexOf(s, a, b) {\n return s.indexOf(a, b)\n}\nfunction substring(s, a, b) {\n return s.substring(a, b)\n}\nexport default function (Z) {\n function L(d, c, e, h, a) {\n for (\n var m = 0,\n b = 0,\n v = 0,\n n = 0,\n q,\n g,\n w = 0,\n E = 0,\n k,\n u = (k = q = 0),\n l = 0,\n r = 0,\n G = 0,\n t = 0,\n I = e.length,\n H = I - 1,\n x,\n f = '',\n p = '',\n M = '',\n N = '',\n B;\n l < I;\n\n ) {\n g = charCodeAt(e, l)\n l === H &&\n 0 !== b + n + v + m &&\n (0 !== b && (g = 47 === b ? 10 : 47), (n = v = m = 0), I++, H++)\n if (0 === b + n + v + m) {\n if (\n l === H &&\n (0 < r && (f = replace(f, O, '')), 0 < f.trim().length)\n ) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break\n default:\n f += e.charAt(l)\n }\n g = 59\n }\n switch (g) {\n case 123:\n f = f.trim()\n q = charCodeAt(f, 0)\n k = 1\n for (t = ++l; l < I; ) {\n switch ((g = charCodeAt(e, l))) {\n case 123:\n k++\n break\n case 125:\n k--\n break\n case 47:\n switch ((g = charCodeAt(e, l + 1))) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < H; ++u)\n switch (charCodeAt(e, u)) {\n case 47:\n if (\n 42 === g &&\n 42 === charCodeAt(e, u - 1) &&\n l + 2 !== u\n ) {\n l = u + 1\n break a\n }\n break\n case 10:\n if (47 === g) {\n l = u + 1\n break a\n }\n }\n l = u\n }\n }\n break\n case 91:\n g++\n case 40:\n g++\n case 34:\n case 39:\n for (; l++ < H && charCodeAt(e, l) !== g; );\n }\n if (0 === k) break\n l++\n }\n k = substring(e, t, l)\n 0 === q && (q = (f = replace(f, fa, '').trim()).charCodeAt(0))\n switch (q) {\n case 64:\n 0 < r && (f = replace(f, O, ''))\n g = charCodeAt(f, 1)\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c\n break\n default:\n r = P\n }\n k = L(c, r, k, g, a + 1)\n t = k.length\n 0 < A &&\n ((r = aa(P, f, G)),\n (B = F(3, k, r, c, C, z, t, g, a, h)),\n (f = r.join('')),\n void 0 !== B &&\n 0 === (t = (k = B.trim()).length) &&\n ((g = 0), (k = '')))\n if (0 < t)\n switch (g) {\n case 115:\n f = replace(f, ha, ia)\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}'\n break\n case 107:\n f = replace(f, ja, $1 + ' ' + $2)\n k = f + '{' + k + '}'\n k =\n 1 === y || (2 === y && J('@' + k, 3))\n ? '@' + WEBKIT + k + '@' + k\n : '@' + k\n break\n default:\n ;(k = f + k), 112 === h && (k = ((p += k), ''))\n }\n else k = ''\n break\n default:\n k = L(c, aa(c, f, G), k, h, a + 1)\n }\n M += k\n k = G = r = u = q = 0\n f = ''\n g = charCodeAt(e, ++l)\n break\n case 125:\n case 59:\n f = (0 < r ? replace(f, O, '') : f).trim()\n if (1 < (t = f.length))\n switch (\n (0 === u &&\n ((q = charCodeAt(f, 0)), 45 === q || (96 < q && 123 > q)) &&\n (t = (f = replace(f, ' ', ':')).length),\n 0 < A &&\n void 0 !== (B = F(1, f, c, d, C, z, p.length, h, a, h)) &&\n 0 === (t = (f = B.trim()).length) &&\n (f = '\\x00\\x00'),\n (q = charCodeAt(f, 0)),\n (g = charCodeAt(f, 1)),\n q)\n ) {\n case 0:\n break\n case 64:\n if (105 === g || 99 === g) {\n N += f + e.charAt(l)\n break\n }\n default:\n 58 !== charCodeAt(f, t - 1) &&\n (p += Q(f, q, g, charCodeAt(f, 2)))\n }\n G = r = u = q = 0\n f = ''\n g = charCodeAt(e, ++l)\n }\n }\n switch (g) {\n case 13:\n case 10:\n 47 === b\n ? (b = 0)\n : 0 === 1 + q &&\n 107 !== h &&\n 0 < f.length &&\n ((r = 1), (f += '\\x00'))\n 0 < A * ba && F(0, f, c, d, C, z, p.length, h, a, h)\n z = 1\n C++\n break\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++\n break\n }\n default:\n z++\n x = e.charAt(l)\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b)\n switch (w) {\n case 44:\n case 58:\n case 9:\n case 32:\n x = ''\n break\n default:\n 32 !== g && (x = ' ')\n }\n break\n case 0:\n x = '\\\\0'\n break\n case 12:\n x = '\\\\f'\n break\n case 11:\n x = '\\\\v'\n break\n case 38:\n 0 === n + b + m && ((r = G = 1), (x = '\\f' + x))\n break\n case 108:\n if (0 === n + b + m + D && 0 < u)\n switch (l - u) {\n case 2:\n 112 === w && 58 === charCodeAt(e, l - 3) && (D = w)\n case 8:\n 111 === E && (D = E)\n }\n break\n case 58:\n 0 === n + b + m && (u = l)\n break\n case 44:\n 0 === b + v + n + m && ((r = 1), (x += '\\r'))\n break\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n)\n break\n case 91:\n 0 === n + b + v && m++\n break\n case 93:\n 0 === n + b + v && m--\n break\n case 41:\n 0 === n + b + m && v--\n break\n case 40:\n if (0 === n + b + m) {\n if (0 === q)\n switch (2 * w + 3 * E) {\n case 533:\n break\n default:\n q = 1\n }\n v++\n }\n break\n case 64:\n 0 === b + v + n + m + u + k && (k = 1)\n break\n case 42:\n case 47:\n if (!(0 < n + m + v))\n switch (b) {\n case 0:\n switch (2 * g + 3 * charCodeAt(e, l + 1)) {\n case 235:\n b = 47\n break\n case 220:\n ;(t = l), (b = 42)\n }\n break\n case 42:\n 47 === g &&\n 42 === w &&\n t + 2 !== l &&\n (33 === charCodeAt(e, t + 2) &&\n (p += substring(e, t, l + 1)),\n (x = ''),\n (b = 0))\n }\n }\n 0 === b && (f += x)\n }\n E = w\n w = g\n l++\n }\n t = p.length\n if (0 < t) {\n r = c\n if (\n 0 < A &&\n ((B = F(2, p, r, d, C, z, t, h, a, h)),\n void 0 !== B && 0 === (p = B).length)\n )\n return N + p + M\n p = r.join(',') + '{' + p + '}'\n if (0 !== y * D) {\n 2 !== y || J(p, 2) || (D = 0)\n switch (D) {\n case 111:\n p = replace(p, ka, ':' + MOZ + $1) + p\n break\n case 112:\n p =\n replace(p, R, '::' + WEBKIT + 'input-$1') +\n replace(p, R, '::' + MOZ + $1) +\n replace(p, R, ':' + MS + 'input-$1') +\n p\n }\n D = 0\n }\n }\n return N + p + M\n }\n function aa(d, c, e) {\n var h = c.trim().split(la)\n c = h\n var a = h.length,\n m = d.length\n switch (m) {\n case 0:\n case 1:\n var b = 0\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b)\n c[b] = ca(d, c[b], e, m).trim()\n break\n default:\n var v = (b = 0)\n for (c = []; b < a; ++b)\n for (var n = 0; n < m; ++n) c[v++] = ca(d[n] + ' ', h[b], e, m).trim()\n }\n return c\n }\n function ca(d, c, e) {\n var h = charCodeAt(c, 0)\n 33 > h && (h = (c = c.trim()).charCodeAt(0))\n switch (h) {\n case 38:\n return c.replace(S, $1 + d.trim())\n case 58:\n return d.trim() + c.replace(S, $1 + d.trim())\n default:\n if (0 < 1 * e && 0 < indexOf(c, '\\f'))\n return c.replace(S, (58 === charCodeAt(d, 0) ? '' : $1) + d.trim())\n }\n return d + c\n }\n function Q(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h\n if (944 === m) {\n d = indexOf(a, ':', 9) + 1\n var b = substring(a, d, a.length - 1).trim()\n b = substring(a, 0, d).trim() + b + ';'\n return 1 === y || (2 === y && J(b, 1)) ? WEBKIT + b + b : b\n }\n if (0 === y || (2 === y && !J(a, 1))) return a\n switch (m) {\n case 1015:\n return 97 === charCodeAt(a, 10) ? WEBKIT + a + a : a\n case 951:\n return 116 === charCodeAt(a, 3) ? WEBKIT + a + a : a\n case 963:\n return 110 === charCodeAt(a, 5) ? WEBKIT + a + a : a\n case 1009:\n if (100 !== charCodeAt(a, 4)) break\n case 969:\n case 942:\n return WEBKIT + a + a\n case 978:\n return WEBKIT + a + MOZ + a + a\n case 1019:\n case 983:\n return WEBKIT + a + MOZ + a + MS + a + a\n case 883:\n if (45 === charCodeAt(a, 8)) return WEBKIT + a + a\n if (0 < indexOf(a, 'image-set(', 11))\n return replace(a, ma, $1 + WEBKIT + $2) + a\n break\n case 932:\n if (45 === charCodeAt(a, 4))\n switch (charCodeAt(a, 5)) {\n case 103:\n return (\n WEBKIT +\n 'box-' +\n replace(a, '-grow', '') +\n WEBKIT +\n a +\n MS +\n replace(a, 'grow', 'positive') +\n a\n )\n case 115:\n return WEBKIT + a + MS + replace(a, 'shrink', 'negative') + a\n case 98:\n return WEBKIT + a + MS + replace(a, 'basis', 'preferred-size') + a\n }\n return WEBKIT + a + MS + a + a\n case 964:\n return WEBKIT + a + MS + FLEX + a + a\n case 1023:\n if (99 !== charCodeAt(a, 8)) break\n b = substring(a, indexOf(a, ':', 15))\n .replace(FLEX, '')\n .replace('space-between', 'justify')\n return WEBKIT + 'box-pack' + b + WEBKIT + a + MS + FLEX + 'pack' + b + a\n case 1005:\n return na.test(a)\n ? replace(a, da, ':' + WEBKIT) + replace(a, da, ':' + MOZ) + a\n : a\n case 1e3:\n b = substring(a, 13).trim()\n c = indexOf(b, '-') + 1\n switch (charCodeAt(b, 0) + charCodeAt(b, c)) {\n case 226:\n b = replace(a, T, 'tb')\n break\n case 232:\n b = replace(a, T, 'tb-rl')\n break\n case 220:\n b = replace(a, T, 'lr')\n break\n default:\n return a\n }\n return WEBKIT + a + MS + b + a\n case 1017:\n if (-1 === indexOf(a, 'sticky', 9)) break\n case 975:\n c = (a = d).length - 10\n b = (33 === charCodeAt(a, c) ? substring(a, 0, c) : a)\n .substring(indexOf(d, ':', 7) + 1)\n .trim()\n switch ((m = charCodeAt(b, 0) + (charCodeAt(b, 7) | 0))) {\n case 203:\n if (111 > charCodeAt(b, 8)) break\n case 115:\n a = replace(a, b, WEBKIT + b) + ';' + a\n break\n case 207:\n case 102:\n a =\n a.replace(b, WEBKIT + (102 < m ? 'inline-' : '') + 'box') +\n ';' +\n replace(a, b, WEBKIT + b) +\n ';' +\n replace(a, b, MS + b + 'box') +\n ';' +\n a\n }\n return a + ';'\n case 938:\n if (45 === charCodeAt(a, 5))\n switch (charCodeAt(a, 6)) {\n case 105:\n return (\n (b = replace(a, '-items', '')),\n WEBKIT + a + WEBKIT + 'box-' + b + MS + FLEX + b + a\n )\n case 115:\n return WEBKIT + a + MS + FLEX + 'item-' + replace(a, ea, '') + a\n default:\n return (\n WEBKIT +\n a +\n MS +\n FLEX +\n 'line-pack' +\n replace(a, 'align-content', '').replace(ea, '') +\n a\n )\n }\n break\n case 973:\n case 989:\n if (45 !== charCodeAt(a, 3) || 122 === charCodeAt(a, 4)) break\n case 931:\n case 953:\n if (!0 === oa.test(d))\n return 115 === (b = substring(d, indexOf(d, ':') + 1)).charCodeAt(0)\n ? Q(replace(d, 'stretch', 'fill-available'), c, e, h).replace(\n ':fill-available',\n ':stretch'\n )\n : replace(a, b, WEBKIT + b) +\n a.replace(b, MOZ + replace(b, 'fill-', '')) +\n a\n break\n case 962:\n if (\n ((a = WEBKIT + a + (102 === charCodeAt(a, 5) ? MS + a : '') + a),\n 211 === e + h &&\n 105 === charCodeAt(a, 13) &&\n 0 < indexOf(a, 'transform', 10))\n )\n return (\n substring(a, 0, indexOf(a, ';', 27) + 1).replace(\n pa,\n $1 + WEBKIT + $2\n ) + a\n )\n }\n return a\n }\n function J(d, c) {\n var e = indexOf(d, 1 === c ? ':' : '{'),\n h = substring(d, 0, 3 !== c ? e : 10)\n e = substring(d, e + 1, d.length - 1)\n return U(2 !== c ? h : replace(h, qa, $1), e, c)\n }\n function ia(d, c) {\n var e = Q(c, charCodeAt(c, 0), charCodeAt(c, 1), charCodeAt(c, 2))\n return e !== c + ';'\n ? e.replace(ra, ' or ($1)').substring(4)\n : '(' + c + ')'\n }\n function F(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, w = c, E; g < A; ++g)\n switch ((E = V[g].call(K, d, w, e, h, a, m, b, v, n, q))) {\n case void 0:\n case !1:\n case !0:\n case null:\n break\n default:\n w = E\n }\n if (w !== c) return w\n }\n function W(d) {\n switch (d) {\n case void 0:\n case null:\n A = V.length = 0\n break\n default:\n if ('function' === typeof d) V[A++] = d\n else if ('object' === typeof d)\n for (var c = 0, e = d.length; c < e; ++c) W(d[c])\n else ba = !!d | 0\n }\n return W\n }\n function X(d) {\n d = d.prefix\n void 0 !== d &&\n ((U = null),\n d ? ('function' !== typeof d ? (y = 1) : ((y = 2), (U = d))) : (y = 0))\n return X\n }\n function K(d, c) {\n var e = d\n 33 > charCodeAt(e, 0) && (e = e.trim())\n Y = e\n e = [Y]\n if (0 < A) {\n var h = F(-1, c, e, e, C, z, 0, 0, 0, 0)\n void 0 !== h && 'string' === typeof h && (c = h)\n }\n var a = L(P, e, c, 0, 0)\n 0 < A &&\n ((h = F(-2, a, e, e, C, z, a.length, 0, 0, 0)), void 0 !== h && (a = h))\n Y = ''\n D = 0\n z = C = 1\n return a\n }\n var fa = /^\\0+/g,\n O = /[\\0\\r\\f]/g,\n da = /: */g,\n na = /zoo|gra/,\n pa = /([,: ])(transform)/g,\n la = /,\\r+?/g,\n S = /([\\t\\r\\n ])*\\f?&/g,\n ja = /@(k\\w+)\\s*(\\S*)\\s*/,\n R = /::(place)/g,\n ka = /:(read-only)/g,\n T = /[svh]\\w+-[tblr]{2}/,\n ha = /\\(\\s*(.*)\\s*\\)/g,\n ra = /([\\s\\S]*?);/g,\n ea = /-self|' + FLEX + '/g,\n qa = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n oa = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ma = /([^-])(image-set\\()/,\n z = 1,\n C = 1,\n D = 0,\n y = 1,\n P = [],\n V = [],\n A = 0,\n U = null,\n ba = 0,\n Y = ''\n K.use = W\n K.set = X\n void 0 !== Z && X(Z)\n return K\n}\n","/**\n * An FNV-1a hashing algorithm with a 32-bit offset basis. FNV-1a hashes are designed\n * to be fast while maintaining a low collision rate. The high dispersion rate makes\n * them well-suited for hashing nearly identical strings.\n *\n * @param string - A string you want to hash\n */\nexport function hash(string: string): string {\n // 32-bit offset basis\n let out = 2166136261;\n let i = 0;\n let len = string.length;\n\n for (; i < len; ++i)\n out =\n (out ^= string.charCodeAt(i)) +\n (out << 1) +\n (out << 4) +\n (out << 7) +\n (out << 8) +\n (out << 24);\n\n return (out >>> 0).toString(36);\n}\n\nconst minL = /(^|[:;,{}\\s])\\s+|$/g;\nconst minR = / +{/g;\n\nexport function safeHash(\n key: string,\n hashFn: typeof hash\n): (string: string) => string {\n const hashCache: Record<string, string> = {};\n let value: string | undefined;\n return (string: string): string => {\n if ((value = hashCache[string])) return value;\n value = hashFn(string.replace(minL, \"$1\").replace(minR, \"{\"));\n // allows class names to start with numbers\n return (hashCache[string] = value =\n !key && !isNaN(value[0] as any) ? \"_\" + value : value);\n };\n}\n\nexport function noop(): void {}\n","import Stylis from \"@dash-ui/stylis\";\nimport type { Context, Plugable, Plugin } from \"@dash-ui/stylis\";\nimport { noop } from \"./utils\";\n\n/**\n * Dash is a tiny, performant CSS-in-JS style rule sheet manager similar to Emotion.\n *\n * @param options - Configuration options\n */\nexport function createDash(options: CreateDashOptions = {}): Dash {\n let {\n key = \"ui\",\n nonce,\n stylisPlugins,\n prefix = true,\n batchInserts,\n speedy,\n container = typeof document !== \"undefined\" ? document.head : void 0,\n } = options;\n const stylis = new Stylis({ prefix });\n const inserted: Dash[\"inserted\"] = new Set<string>();\n const cache: Dash[\"cache\"] = new Map();\n const sheetsCache = new Map<string, DashSheet>();\n const sheet = styleSheet({\n key,\n container,\n nonce,\n speedy,\n batchInserts,\n });\n\n if (typeof document !== \"undefined\") {\n let nodes = document.querySelectorAll('style[data-cache=\"' + key + '\"]');\n let i = 0;\n let attr;\n let node;\n const insert = inserted.add.bind(inserted);\n\n for (; i < nodes.length; i++) {\n /* istanbul ignore next */\n if ((attr = (node = nodes[i]).getAttribute(`data-dash`)) === null)\n continue;\n attr.split(\" \").forEach(insert);\n\n container && node.parentNode !== container && container.appendChild(node);\n }\n\n stylis.use(stylisPlugins)(ruleSheet as Plugin);\n }\n\n /* istanbul ignore next */\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n const commentStart = /\\/\\*/g;\n const commentEnd = /\\*\\//g;\n\n stylis.use((context, content) => {\n if (context === -1) {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n /* istanbul ignore next */\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error(\n 'Your styles have an unterminated comment (\"/*\" without ' +\n 'corresponding \"*/\").'\n );\n }\n\n commentStart.lastIndex = 0;\n }\n });\n }\n\n let insert: Dash[\"insert\"] = function (key, selector, styles, styleSheet) {\n if (inserted.has(key)) return;\n inserted.add(key);\n Sheet.x = styleSheet === void 0 ? sheet : styleSheet;\n stylis(selector, styles);\n };\n\n if (typeof document === \"undefined\") {\n insert = function (key, selector, styles, styleSheet) {\n if (inserted.has(key)) return;\n inserted.add(key);\n Sheet.x = styleSheet === void 0 ? sheet : styleSheet;\n cache.set(key, stylis(selector, styles));\n };\n }\n\n return {\n key,\n sheet,\n sheets: {\n add(name) {\n const sheetRef = sheetsCache.get(name) || {\n n: 0,\n s: styleSheet(sheet),\n };\n sheetsCache.set(name, sheetRef);\n sheetRef.n++;\n return sheetRef.s;\n },\n delete(name) {\n const sheetRef = sheetsCache.get(name);\n if (!sheetRef) return -1;\n if (sheetRef.n === 1) {\n sheetsCache.delete(name);\n sheetRef.s.flush();\n }\n return --sheetRef.n;\n },\n keys: sheetsCache.keys.bind(sheetsCache),\n },\n stylis,\n insert,\n inserted,\n cache,\n };\n}\n\nexport interface CreateDashOptions {\n /**\n * Keys in sheets used to associate `<style>` tags with this\n * specific `dash` instances via the `dash-cache` property.\n *\n * @default \"ui\"\n */\n readonly key?: string;\n /**\n * For security policies. A nonce is an arbitrary number that can be used just\n * once in a cryptographic communication.\n */\n readonly nonce?: string;\n /**\n * An array of stylis plugins\n * See: https://www.npmjs.com/package/stylis\n */\n readonly stylisPlugins?: Plugable[];\n /**\n * Turns on/off vendor prefixing. When a boolean, all prefixes will be\n * turned on/off. Use a function to define your own prefixes for a given key/value.\n *\n * @default true\n */\n readonly prefix?:\n | boolean\n | ((key: string, value: any, context: any) => boolean);\n /**\n * This is the container that `<style>` tags will be injected into\n * when style rules are inserted.\n *\n * @default document.head\n */\n readonly container?: HTMLElement;\n /**\n * Batch `insertRule` calls to improve performance by reducing the number of\n * style recalculations.\n */\n readonly batchInserts?: boolean;\n /**\n * Does nothing now.\n *\n * @deprecated\n */\n readonly speedy?: boolean;\n}\n\nexport type Dash = {\n /**\n * The sheet key\n */\n readonly key: string;\n /**\n * The default style sheet used by this instance of Dash\n */\n readonly sheet: DashStyleSheet;\n /**\n * Used for tracking external sheets. You can safely add/delete new\n * custom sheets using this. Those sheets can be used in the `insert()`\n * method. The primary reason you'd want to use this is so that you can\n * create independently flushable styles/sheets.\n */\n readonly sheets: DashSheets;\n /**\n * The instance of Stylis used by this Dash instance\n */\n readonly stylis: Stylis;\n /**\n * A cache of Stylis rules saved by their keys. This is only used\n * on the server for generating CSS files and strings from the keys\n * used in the cache.\n */\n readonly cache: Map<string, string>;\n /**\n * A function for inserting style rules into the document and cache.\n *\n * @param key - The unique key of the rule. This is used for caching.\n * @param selector - The CSS selector to insert the rule under. Omit this\n * when inserting a global style.\n * @param styles - The rules string you'd like to insert into the document or cache.\n * @param styleSheet - The style sheet to insert a rule into, for example `dash.sheet`.\n */\n insert(\n key: string,\n selector: string,\n styles: string,\n styleSheet?: DashStyleSheet\n ): void;\n /**\n * An insertion cache. This tracks which keys have already been inserted into\n * the DOM to prevent duplicates.\n */\n readonly inserted: Set<string>;\n};\n\n/**\n * A stylesheet cache that tracks references to the keys in it.\n * When there are no more references to a sheet, it will be flushed\n * from the DOM.\n */\nexport interface DashSheets {\n /**\n * Creates a new stylesheet if it doesn't exist and returns it.\n *\n * @param key - The unique key of the style sheet\n */\n add(key: string): DashStyleSheet;\n /**\n * Deletes the stylesheet from the sheets cache and flushes the\n * `<style>` tag from the DOM if this is is the last reference to\n * the key.\n *\n * @param key - The key to the sheet\n */\n delete(key: string): number;\n /**\n * Returns an iterator containing all of the keys in the cache.\n */\n keys(): ReturnType<Map<string, DashSheet>[\"keys\"]>;\n}\n\ninterface DashSheet {\n /**\n * The number of references to the sheet\n */\n n: number;\n /**\n * A dash style sheet.\n */\n s: DashStyleSheet;\n}\n\n//\n// Stylesheet\nexport function styleSheet(options: DashStyleSheetOptions): DashStyleSheet {\n // Based off emotion and glamor's StyleSheet\n const { key, container, nonce, batchInserts, speedy } = options;\n let tag: HTMLStyleElement | null = null;\n let sheet: CSSStyleSheet | null = null;\n let supportsConstructableStylesheets = false;\n\n if (typeof document !== \"undefined\") {\n supportsConstructableStylesheets =\n \"CSSStyleSheet\" in window &&\n \"replace\" in CSSStyleSheet.prototype &&\n \"adoptedStyleSheets\" in Document.prototype;\n\n if (!supportsConstructableStylesheets) {\n tag = document.createElement(\"style\");\n tag.setAttribute(`data-dash`, key);\n\n if (nonce) {\n tag.setAttribute(\"nonce\", nonce);\n }\n\n container?.appendChild(tag);\n sheet = tag.sheet;\n\n /* istanbul ignore next */\n if (!sheet) {\n // this weirdness brought to you by firefox\n const { styleSheets } = document;\n for (let i = 0; i < styleSheets.length; i++)\n if (styleSheets[i].ownerNode === tag) {\n sheet = styleSheets[i];\n break;\n }\n }\n } else {\n sheet = new CSSStyleSheet();\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n }\n }\n\n return {\n key,\n nonce,\n container,\n speedy,\n insert(rule) {\n /* istanbul ignore next */\n const insertRule = (): void => {\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet!.insertRule(rule, sheet!.cssRules.length);\n } catch (e) {\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n 'There was a problem inserting the following rule: \"' +\n rule +\n '\"',\n e\n );\n }\n }\n };\n\n if (batchInserts) {\n tasks.push(insertRule);\n scheduleFlush();\n } else {\n insertRule();\n }\n },\n flush() {\n if (tag && tag.parentNode) {\n tag.parentNode.removeChild(tag);\n } else if (supportsConstructableStylesheets) {\n document.adoptedStyleSheets = document.adoptedStyleSheets.filter(\n (s) => s !== sheet\n );\n }\n },\n };\n}\n\nlet scheduled = false;\nconst tasks: Task[] = [];\n\nfunction scheduleFlush(): void {\n if (!scheduled) {\n scheduled = true;\n\n requestAnimationFrame(() => {\n let task: Task | undefined;\n while ((task = tasks.shift())) task();\n scheduled = false;\n\n if (tasks.length) {\n scheduleFlush();\n }\n });\n }\n}\n\ntype Task = () => void;\n\nexport interface DashStyleSheetOptions {\n /**\n * Keys in sheets used to associate style sheets with\n * specific `dash` instances\n */\n readonly key: string;\n /**\n * The element to insert `<style>` tags into. For example,\n * `document.head`.\n */\n readonly container?: HTMLElement;\n /**\n * For security policies. A nonce is an arbitrary number that can be used just\n * once in a cryptographic communication.\n */\n readonly nonce?: string;\n /**\n * Batch `insertRule` calls to improve performance by reducing the number of\n * style recalculations.\n */\n readonly batchInserts?: boolean;\n /**\n * Does nothing now.\n *\n * @deprecated\n */\n readonly speedy?: boolean;\n}\n\nexport interface DashStyleSheet {\n /**\n * The sheet key\n */\n readonly key: string;\n /**\n * The sheet nonce\n */\n readonly nonce?: string;\n /**\n * The sheet container\n */\n readonly container?: HTMLElement;\n /**\n * Does nothing now.\n *\n * @deprecated\n */\n readonly speedy?: boolean;\n /**\n * Inserts a style rule into your sheet\n *\n * @param rule - A style rule to insert into the sheet\n */\n insert(rule: string): void;\n /**\n * Removes all style rules from the sheet.\n */\n flush(): void;\n}\n\n//\n// Stylis plugins\nconst RULE_DELIMITER = \"/*|*/\";\nconst RULE_NEEDLE = RULE_DELIMITER + \"}\";\n\nfunction ruleSheet(\n // https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n context: Context,\n content: any,\n selectors: string[],\n parents: string[],\n line: number,\n column: number,\n length: number,\n ns: number,\n depth: number,\n at: number\n): string | undefined {\n // selector\n if (context === 2) {\n if (ns === 0) return content + RULE_DELIMITER;\n }\n // at-rule\n else if (context === 3) {\n // @font-face, @page\n if (ns === 102 || ns === 112) {\n Sheet.x.insert(selectors[0] + content);\n return \"\";\n } else {\n /* istanbul ignore next */\n return content + (at === 0 ? RULE_DELIMITER : \"\");\n }\n } else if (context === -2) {\n content.split(RULE_NEEDLE).forEach((block: string) => {\n block && Sheet.x.insert(block + \"}\");\n });\n }\n}\n\nconst Sheet: {\n x: {\n insert(rule: string): void;\n };\n} = {\n x: {\n insert: noop,\n },\n};\n","import unitless from \"@dash-ui/unitless\";\nimport type {\n HtmlAttributes as CSSHTMLAttributes,\n PropertiesFallback as CSSProperties,\n Pseudos as CSSPseudos,\n SvgAttributes as CSSSvgAttributes,\n} from \"csstype\";\nimport type { JsonValue, PartialDeep, Primitive, ValueOf } from \"type-fest\";\nimport { createDash } from \"./create-dash\";\nimport type { Dash } from \"./create-dash\";\nimport { hash as fnv1aHash, noop, safeHash } from \"./utils\";\n\n/**\n * A factory function that returns a new `styles` instance with\n * your custom configuration options.\n *\n * @param options - Configuration options\n */\nexport function createStyles<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n>(options: CreateStylesOptions<Tokens, Themes> = {}): Styles<Tokens, Themes> {\n const dash = options.dash || createDash();\n const { key, insert, sheets } = dash;\n const themes = {} as Themes;\n const tokens = {} as TokensUnion<Tokens, Themes>;\n const hash = safeHash(key, options.hash || fnv1aHash);\n\n let label: (args: any[]) => string;\n // explicit here on purpose so it's not in every test\n /* istanbul ignore next */\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV === \"development\"\n ) {\n label = function (args) {\n // add helpful labels to the name in development\n return [...args]\n .reduce((curr, arg) => {\n if (typeof arg === \"string\") {\n curr += \"-\" + arg;\n } else if (typeof arg === \"object\") {\n const keys = Object.keys(arg).filter(\n (k) => typeof arg[k] === \"number\" || arg[k]\n );\n\n if (keys.length) {\n curr += \"-\" + keys.join(\"-\");\n }\n }\n\n return curr;\n }, \"\")\n .replace(/[^\\w-]/g, \"-\");\n };\n }\n\n const styles: Styles<Tokens, Themes> = {\n variants<Variants extends string | number>(\n styleMap: StyleMap<Variants, Tokens, Themes>\n ): Style<Variants, Tokens, Themes> {\n const compiledStyleMap: Record<string | number, string> = {};\n let styleKey: keyof typeof styleMap;\n /* istanbul ignore next */\n for (styleKey in styleMap)\n compiledStyleMap[styleKey] = compileStyles(styleMap[styleKey], tokens);\n\n const defaultStyles = compiledStyleMap.default || \"\";\n\n // style('text', {})\n function style(): string {\n // eslint-disable-next-line prefer-spread\n const css_ = css.apply(null, arguments as any);\n if (!css_) return \"\";\n let name = hash(css_);\n /* istanbul ignore next */\n if (label) name += label(arguments as any);\n const className = key + \"-\" + name;\n insert(name, \".\" + className, css_);\n return className;\n }\n\n function css(): string {\n const args = arguments as unknown as StyleArguments<Variants>;\n const numArgs = args.length;\n\n if (numArgs === 1 && typeof args[0] !== \"object\") {\n return defaultStyles + (compiledStyleMap[args[0] as any] || \"\");\n } else if (numArgs > 0) {\n let nextStyles = defaultStyles;\n\n for (let i = 0; i < numArgs; i++) {\n let arg = args[i];\n if (typeof arg !== \"object\") {\n nextStyles += compiledStyleMap[arg as any] || \"\";\n } else if (arg !== null) {\n for (const key in arg)\n if (arg[key]) nextStyles += compiledStyleMap[key] || \"\";\n }\n }\n\n return nextStyles;\n }\n\n return defaultStyles;\n }\n\n style.styles = styleMap;\n style.css = css;\n return style;\n },\n one() {\n const one = compileStyles<Tokens, Themes>(\n compileLiterals(arguments),\n tokens\n );\n const name = hash(one);\n const className = key + \"-\" + name;\n const callback: StylesOne = function (createClassName) {\n if (!createClassName && createClassName !== void 0) return \"\";\n insert(name, \".\" + className, one);\n return className;\n };\n callback.css = function (createCss) {\n return !createCss && createCss !== void 0 ? \"\" : one;\n };\n return callback;\n },\n cls() {\n const css = compileStyles<Tokens, Themes>(\n compileLiterals(arguments),\n tokens\n );\n const name = hash(css);\n const className = key + \"-\" + name;\n insert(name, \".\" + className, css);\n return className;\n },\n lazy<Value extends LazyValue>(\n lazyFn: (\n value: Value\n ) => string | StyleCallback<Tokens, Themes> | StyleObject\n ): StylesLazy<Value> {\n const cache = new Map<string | Value, string>();\n\n function css(value?: Value): string {\n if (value === void 0) return \"\";\n const key = typeof value === \"object\" ? JSON.stringify(value) : value;\n let css = cache.get(key);\n\n if (css === void 0) {\n css = compileStyles<Tokens, Themes>(lazyFn(value), tokens);\n cache.set(key, css);\n }\n\n return css;\n }\n\n const lazyStyle: StylesLazy<Value> = function (value?: Value) {\n const css_ = css(value);\n if (!css_) return \"\";\n const name = hash(css_);\n const className = key + \"-\" + name;\n insert(name, \".\" + className, css_);\n return className;\n };\n lazyStyle.css = css;\n return lazyStyle;\n },\n join() {\n const css = \"\".concat(...Array.prototype.slice.call(arguments));\n const name = hash(css);\n const className = key + \"-\" + name;\n insert(name, \".\" + className, css);\n return className;\n },\n keyframes() {\n const css = compileStyles<Tokens, Themes>(\n compileLiterals(arguments),\n tokens\n );\n const name = hash(css);\n const animationName = key + \"-\" + name;\n // Adding to a cached sheet here rather than the default sheet because\n // we want this to persist between `clearCache()` calls.\n insert(\n name,\n \"\",\n \"@keyframes \" + animationName + \"{\" + css + \"}\",\n sheets.add(name)\n );\n return animationName;\n },\n insertGlobal() {\n const css = compileStyles<Tokens, Themes>(\n compileLiterals(arguments),\n tokens\n );\n\n if (!css) return noop;\n const name = hash(css);\n insert(name, \"\", css, sheets.add(name));\n return function () {\n !sheets.delete(name) && dash.inserted.delete(name);\n };\n },\n insertTokens(nextTokens, selector = \":root\") {\n const { css, vars } = serializeTokens(nextTokens, options.mangleTokens);\n if (!css) return noop;\n mergeTokens<Tokens, Themes>(tokens, vars);\n return styles.insertGlobal(selector + \"{\" + css + \"}\");\n },\n insertThemes(nextThemes) {\n const flush: (() => void)[] = [];\n\n for (const name in nextThemes) {\n flush.push(\n styles.insertTokens(\n // God the types here are f'ing stupid. Someone should feel free to fix this.\n // @ts-expect-error\n (themes[name] =\n themes[name] === void 0\n ? // @ts-expect-error\n nextThemes[name]\n : mergeTokens<any>(themes[name], nextThemes[name] as any)),\n \".\" + styles.theme(name as Extract<keyof Themes, string>)\n )\n );\n }\n\n return function () {\n flush.forEach((e) => e());\n };\n },\n theme(theme) {\n return key + \"-\" + theme + \"-theme\";\n },\n dash,\n hash,\n tokens,\n };\n\n Object.defineProperty(styles, \"tokens\", {\n get() {\n return tokens;\n },\n configurable: false,\n });\n styles.insertTokens(options.tokens || emptyObj);\n styles.insertThemes(options.themes || emptyObj);\n return typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n ? Object.freeze(styles)\n : styles;\n}\n\nconst emptyObj: any = {};\n\nexport interface CreateStylesOptions<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> {\n /**\n * An instance of dash created by the `createDash()` factory\n *\n * @default createDash()\n */\n dash?: Dash;\n /**\n * Inserts CSS tokens into the DOM and makes them available for use in\n * style callbacks. The name of the CSS tokens is automatically generated\n * based upon the depth of the mapping i.e. `foo.bar.baz` -> `--foo-bar-baz`.\n *\n * @example\n * const styles = createStyles({\n * tokens: {\n * color: {\n * // var(--color-light-red)\n * lightRed: '#c17'\n * }\n * }\n * })\n *\n * const bgRed = styles.one(({color}) => ({\n * backgroundColor: color.lightRed\n * }))\n *\n * const Component = () => <div className={bgRed()} />\n */\n readonly tokens?: Tokens;\n /**\n * A mapping of theme name/CSS variable pairs.\n *\n * This Creates a CSS variable-based theme by defining tokens within a\n * class name selector matching the theme name. Apart from that it works\n * the same way `tokens` does.\n *\n * @example\n * const styles = createStyles({\n * themes: {\n * // .ui-light\n * light: {\n * // var(--background-color)\n * backgroundColor: '#fff'\n * },\n * // .ui-dark\n * dark: {\n * // var(--background-color)\n * backgroundColor: '#000'\n * }\n * }\n * })\n *\n * // CSS tokens in the 'dark' theme take precedence in this component\n * const App = () => <div className={styles.theme('dark)}/>\n */\n readonly themes?: Themes;\n /**\n * When `true` this will mangle CSS variable names. You can also\n * provide an object with `{key: boolean}` pairs of reserved keys\n * which will not be mangled.\n *\n * @example\n * const styles = createStyles({\n * // All CSS tokens will be mangled in production\n * mangleTokens: process.env.NODE_ENV === 'production'\n * })\n * @example\n * const styles = createStyles({\n * mangleTokens: {\n * // --vh will not be mangled\n * vh: true\n * }\n * })\n */\n readonly mangleTokens?: boolean | Record<string, boolean>;\n /**\n * Use your own hash function for creating selector names. By default\n * Dash uses an fnv1a hashing algorithm.\n */\n readonly hash?: typeof fnv1aHash;\n}\n\n/**\n * Utility methods that accomplish everything you need to scale an application\n * using CSS-in-JS.\n */\nexport interface Styles<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> {\n /**\n * `styles.variants()` is a function for composing styles in a\n * deterministic way. It returns a function which when called will insert\n * your styles into the DOM and create a unique class name.\n *\n * @param styleMap - A style name/value mapping\n * @example\n * const bg = styles({\n * // Define styles using an object\n * blue: {\n * backgroundColor: 'blue'\n * },\n * // Access stored CSS tokens when a callback is provided as\n * // the value\n * red: ({colors}) => `\n * background-color: ${colors.red};\n * `,\n * // Define styles using a string\n * green: `\n * background-color: green;\n * `\n * })\n *\n * // This component will have a \"red\" background\n * const Component = () => <div className={bg('blue', 'red')}/>\n *\n * // This component will have a \"blue\" background\n * const Component = () => <div className={bg('red', 'blue')}/>\n *\n * // This component will have a \"green\" background\n * const Component = () => <div className={bg({red: true, green: true})}/>\n */\n variants<Variants extends string | number>(\n styleMap: StyleMap<Variants, Tokens, Themes>\n ): Style<Variants, Tokens, Themes>;\n /**\n * A function that accepts a tagged template literal, style object, or style callback,\n * and returns a function. That function inserts the style into a `<style>` tag and\n * returns a class name when called.\n *\n * @example\n * const row = styles.one`\n * display: flex;\n * flex-wrap: nowrap;\n * `\n * const Row = props => <div {...props} className={row()}/>>\n * // This will not insert the styles if `isRow` is `false`\n * const RowSometimes = ({isRow = false}) => <div className={row(isRow)}/>>\n */\n one(\n literals:\n | TemplateStringsArray\n | string\n | StyleObject\n | StyleCallback<Tokens, Themes>,\n ...placeholders: string[]\n ): StylesOne;\n /**\n * A function that accepts a tagged template literal, style object, or style callback.\n * Calling this will immediately insert the CSS into the DOM and return a unique\n * class name for the styles. This is a shortcut for `styles.one('display: flex;')()`.\n *\n * @example\n * const Component = () => <div className={styles.cls`display: flex;`}/>\n */\n cls(\n literals:\n | TemplateStringsArray\n | string\n | StyleObject\n | StyleCallback<Tokens, Themes>,\n ...placeholders: string[]\n ): string;\n /**\n * A function that uses lazy evalution to create styles with indeterminate values.\n * Calling this will immediately insert the CSS into the DOM and return a unique\n * class name for the styles.\n *\n * @example\n * const lazyWidth = styles.lazy((width) => ({\n * width\n * }))\n * const Component = ({width = 200}) => <div className={lazyWidth(width)}/>>\n */\n lazy<Value extends LazyValue>(\n lazyFn: (\n value: Value\n ) => string | StyleCallback<Tokens, Themes> | StyleObject\n ): StylesLazy<Value>;\n /**\n * A function that joins CSS strings, inserts them into the DOM right away, and returns a class name.\n *\n * @example\n * const Component = () => <div\n * className={styles.join(\n * button.css('primary'),\n * transition.css('fade'),\n * 'display: block;'\n * )}\n * />\n */\n join(...css: string[]): string;\n /**\n * A function that accepts a tagged template literal, style object, or style callback.\n * Using this will immediately insert a global `@keyframes` defintion into the DOM and\n * return the name of the keyframes instance.\n *\n * @example\n * const fadeIn = styles.keyframes`\n * from {\n * opacity: 0;\n * }\n *\n * to {\n * opactity: 1\n * }\n * `\n */\n keyframes(\n literals:\n | TemplateStringsArray\n | string\n | StyleCallback<Tokens, Themes>\n | StyleObject,\n ...placeholders: string[]\n ): string;\n /**\n * A function that returns the generated class name for a given theme when\n * using `insertThemes()` to create CSS variable-based themes.\n *\n * @param name - The name of the theme\n * @example\n * styles.insertThemes({\n * dark: {\n * color: {\n * background: '#000'\n * }\n * }\n * })\n *\n * const Component = () => <div className={styles.theme('dark')}/>\n */\n theme(name: Extract<keyof Themes, string>): string;\n /**\n * Inserts CSS tokens into the DOM and makes them available for use in\n * style callbacks. The name of the CSS tokens is automatically generated\n * based upon the depth of the mapping i.e. `foo.bar.baz` -> `--foo-bar-baz`.\n * This function returns a function that will flush the styles inserted by\n * `insertTokens()` when it is called.\n *\n * @param tokens - A map of CSS variable name/value pairs\n * @param selector - Including a selector will only make these CSS variable\n * definitions take effect within the selector, e.g. a class name or ID. By\n * default the selector is `\":root\"`.\n * @example\n * // Inserts CSS tokens into the document `:root`\n * styles.insertTokens({\n * color: {\n * // var(--color-indigo)\n * indigo: '#5c6ac4',\n * // var(--color-blue)\n * blue: '#007ace',\n * // var(--color-red)\n * red: '#de3618',\n * }\n * })\n *\n * // Overrides the above when they are used within a `.dark` selector\n * const flushTokens = styles.insertTokens(\n * {\n * color: {\n * // var(--color-indigo)\n * indigo: '#5c6ac4',\n * // var(--color-blue)\n * blue: '#007ace',\n * // var(--color-red)\n * red: '#de3618',\n * }\n * },\n * '.dark'\n * )\n */\n insertTokens(tokens: PartialDeep<Tokens>, selector?: string): () => void;\n /**\n * Creates a CSS variable-based theme by defining tokens within a\n * class name selector matching the theme name. Apart from that it works\n * the same way `insertTokens()` does. This function returns a function\n * that will flush the styles inserted by `insertTokens()` when it is called.\n *\n * @param themes - A mapping of theme name/CSS variable pairs.\n * @example\n * const flushThemes = styles.insertThemes({\n * // .ui-light\n * light: {\n * // var(--background-color)\n * backgroundColor: '#fff'\n * },\n * // .ui-dark\n * dark: {\n * // var(--background-color)\n * backgroundColor: '#000'\n * }\n * })\n *\n * // \"dark\" css tokens will take precedence within this component\n * const Component = () => <div className={styles.theme('dark)}/>\n */\n insertThemes(\n themes: PartialDeep<{\n [Name in keyof Themes]: Themes[Name];\n }>\n ): () => void;\n /**\n * A function that accepts a tagged template literal, style object, or style callback.\n * Using this will immediately insert styles into the DOM relative to the root document.\n * This function returns a function that will flush the styles inserted by\n * `insertGlobal()` when it is called.\n *\n * @example\n * const flushGlobal = styles.insertGlobal(({color}) => `\n * body {\n * background-color: ${color.primaryBg};\n * }\n * `)\n */\n insertGlobal(\n literals:\n | TemplateStringsArray\n | string\n | StyleCallback<Tokens, Themes>\n | StyleObject,\n ...placeholders: string[]\n ): () => void;\n /**\n * The CSS tokens currently defined in the instance\n */\n tokens: TokensUnion<Tokens, Themes>;\n /**\n * A hashing function for creating unique selector names\n *\n * @param string - The string you'd like to hash\n */\n hash(string: string): string;\n /**\n * The instance of underlying the Dash cache used by this instance. This was\n * automatically created by `createDash()` when `createStyles()` was called.\n * Dash controls the caching, style sheets, auto-prefixing, and DOM insertion\n * that happens in the `styles` instance.\n */\n dash: Dash;\n}\n\n/**\n * A function that inserts styles from the style map into the DOM when called\n * with those style names selected.\n *\n * @param args - A series of style names or style name/boolean maps which\n * select the styles from the style map you want to compose into a singular\n * deterministic style and class name.\n * @example\n * const style = styles.variants({\n * block: 'display: block',\n * w100: 'width: 100px;',\n * h100: 'height: 100px',\n * })\n *\n * // display: block; height: 100px; width: 100px;\n * const Component = () => <div className={style('block', 'h100', 'w100')}/>\n */\nexport type Style<\n Variants extends string | number,\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> = {\n (...args: StyleArguments<Variants>): string;\n /**\n * A function that returns the raw, CSS string for a given\n * name in the style map.\n *\n * @param names - A series of style names or style name/boolean maps which\n * select the styles from the style map you want to compose into a singular\n * CSS string.\n * @example\n * const style = styles.variants({\n * block: 'display: block',\n * w100: 'width: 100px;',\n * h100: 'height: 100px',\n * })\n *\n * const someOtherStyle = styles.variants({\n * // display: block; height: 100px; width: 100px;\n * default: style.css('block', 'h100', 'w100')\n * })\n */\n css(...names: StyleArguments<Variants>): string;\n /**\n * The style map that this `style()` instance was instantiated with.\n */\n styles: StyleMap<Variants, Tokens, Themes>;\n};\n\n/**\n * A function that inserts styles into the DOM when called without\n * a falsy value. If the first argument is falsy, the styles will\n * not be inserted and a class name will not be returned.\n */\nexport type StylesOne = {\n (createClassName?: boolean | number | string | null): string;\n /**\n * A method that returns a CSS string if the first argument is not falsy.\n */\n css(createCss?: boolean | number | string | null): string;\n};\n\nexport type StyleMap<\n Variants extends string | number,\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> = {\n [Name in Variants | \"default\"]?: StyleValue<Tokens, Themes>;\n};\n\nexport type StyleArguments<Variants extends string | number> = (\n | Variants\n | {\n [Name in Variants]?: boolean | null | undefined | string | number;\n }\n | Exclude<Falsy, 0 | \"\">\n)[];\n\nexport type StyleValue<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> = string | StyleCallback<Tokens, Themes> | StyleObject;\n\ntype KnownStyles = {\n [property in keyof CSSProperties]?:\n | CSSProperties[property]\n // eslint-disable-next-line @typescript-eslint/ban-types\n | (string & {})\n // eslint-disable-next-line @typescript-eslint/ban-types\n | (number & {});\n};\n\ntype PseudoStyles = {\n [property in CSSPseudos | CSSHTMLAttributes | CSSSvgAttributes]?: StyleObject;\n};\n\ntype SelectorStyles = {\n [property: string]:\n | string\n | number\n | KnownStyles\n | PseudoStyles\n | SelectorStyles;\n};\n\nexport type StyleObject = KnownStyles & PseudoStyles & SelectorStyles;\n\nexport type StyleCallback<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> = (tokens: TokensUnion<Tokens, Themes>) => StyleObject | string;\n\nexport type LazyValue = JsonValue;\n\n/**\n * A function that inserts indeterminate styles based on the value\n * into the DOM when called.\n *\n * @param value - A JSON serializable value to create indeterminate\n * styles from\n */\nexport type StylesLazy<Value extends LazyValue> = {\n (value?: Value): string;\n /**\n * A method that returns indeterminate CSS strings based on the value\n * when called.\n *\n * @param value - A JSON serializable value to create indeterminate\n * styles from\n */\n css(value?: Value): string;\n};\n\n//\n// Utils\nexport type Falsy = false | null | undefined | \"\" | 0;\n\n/**\n * A utility function that will compile style objects and callbacks into CSS strings.\n *\n * @param styles - A style callback, object, or string\n * @param tokens - A map of CSS tokens for style callbacks\n */\nexport function compileStyles<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n>(\n styles: StyleValue<Tokens, Themes> | Falsy,\n tokens: TokensUnion<Tokens, Themes>\n): string {\n const value = typeof styles === \"function\" ? styles(tokens) : styles;\n return typeof value === \"object\" && value !== null\n ? stringifyStyleObject(value)\n : // TypeScript w/o \"strict\": true throws here\n ((value || \"\") as string);\n}\n\nfunction stringifyStyleObject(object: StyleObject): string {\n let string = \"\";\n\n for (const key in object) {\n const value = object[key];\n\n if (typeof value !== \"object\") {\n const isCustom = key.charCodeAt(1) === 45;\n string +=\n (isCustom ? key : cssCase(key)) +\n \":\" +\n (typeof value !== \"number\" ||\n unitless[key as keyof typeof unitless] ||\n value === 0 ||\n isCustom\n ? value\n : value + \"px\") +\n \";\";\n } else {\n string += key + \"{\" + stringifyStyleObject(value as StyleObject) + \"}\";\n }\n }\n\n return string;\n}\n\nfunction compileLiterals(args: IArguments): string {\n const literals = args[0];\n return Array.isArray(literals)\n ? literals.reduce((curr, next, i) => curr + next + (args[i + 1] || \"\"), \"\")\n : literals;\n}\n\n//\n// Variable and theme serialization\nconst cssCaseRe = /[A-Z]|^ms/g;\nconst cssDisallowedRe = /[^\\w-]/g;\n// We cache the case transformations below because the cache\n// will grow to a predictable size and the regex is slowwwww\nconst caseCache: Record<string, string> = {};\nfunction cssCase(string: string): string {\n return (\n caseCache[string] ??\n (caseCache[string] = string.replace(cssCaseRe, \"-$&\").toLowerCase())\n );\n}\n\nfunction serializeTokens(\n tokens: Record<string, any>,\n mangle?: CreateStylesOptions[\"mangleTokens\"],\n names: string[] = []\n): SerializedTokens {\n const vars: Record<string, any> = {};\n let css = \"\";\n\n for (let key in tokens) {\n const value = tokens[key];\n\n if (typeof value === \"object\") {\n const result = serializeTokens(value, mangle, names.concat(key));\n vars[key] = result.vars;\n css += result.css;\n } else {\n let name = cssCase(\n names.length > 0 ? names.join(\"-\") + \"-\" + key : key\n ).replace(cssDisallowedRe, \"-\");\n vars[key] =\n \"var(\" +\n (name =\n \"--\" +\n (mangle === true || (mangle && !mangle[name])\n ? mangled(name)\n : name)) +\n \")\";\n css += name + \":\" + value + \";\";\n }\n }\n\n return { vars, css };\n}\n\nconst mangled = safeHash(\"\", fnv1aHash);\n\ntype SerializedTokens = {\n readonly vars: Record<string, Record<string, any> | string | number>;\n readonly css: string;\n};\n\nfunction mergeTokens<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n>(\n target: Record<string, any>,\n source: Record<string, any>\n): TokensUnion<Tokens, Themes> {\n for (const key in source) {\n const value = source[key];\n target[key] =\n typeof value === \"object\" ? mergeTokens(target[key] || {}, value) : value;\n }\n\n return target as TokensUnion<Tokens, Themes>;\n}\n\n/**\n * A utility function that will convert a camel-cased, dot-notation string\n * into a dash-cased CSS property variable.\n *\n * @param path - A dot-notation string that represents the path to a value\n */\nexport function pathToToken<\n Tokens extends Record<string, unknown> = TokensUnion<DashTokens, DashThemes>\n>(path: KeysUnion<Tokens>): string {\n return (\n \"var(--\" +\n path.replace(/\\./g, \"-\").replace(cssCaseRe, \"-$&\").toLowerCase() +\n \")\"\n );\n}\n\ntype Concat<Fst, Scd> = Fst extends string\n ? Scd extends string | number\n ? Fst extends \"\"\n ? `${Scd}`\n : `${Fst}.${Scd}`\n : never\n : never;\n\ntype KeysUnion<T, Cache extends string = \"\"> = T extends Primitive\n ? Cache\n : {\n [P in keyof T]: Concat<Cache, P> | KeysUnion<T[P], Concat<Cache, P>>;\n }[keyof T];\n\nexport type TokensUnion<\n Tokens extends DashTokens = DashTokens,\n Themes extends DashThemes = DashThemes\n> = Tokens & ValueOf<Themes>;\n\n//\n// Creates and exports default `styles` instance\nexport const styles: Styles<DashTokens, DashThemes> = createStyles();\n\n/**\n * These are CSS variable type definitions that tell functions like\n * style callbacks which tokens are available. They can be defined\n * globally in your application like so:\n *\n * @example\n * declare module '@dash-ui/styles' {\n * export interface DashTokens {\n * color: {\n * red: string\n * }\n * }\n * }\n *\n * They can also be created automatically when you use a `createStyles()` factory.\n * @example\n * const styles = createStyles({\n * tokens: {\n * foo: 'bar',\n * bar: 'baz'\n * }\n * })\n *\n * // \"foo\" | \"bar\"\n * type Level1VariableNames = keyof DashTokens\n */\nexport interface DashTokens extends Record<string, unknown> {}\n\n/**\n * These are CSS variable theme type definitions that tell functions like\n * style callbacks which tokens are available and which themes are available in\n * `styles.theme()`. They can be defined globally in your application like so:\n *\n * @example\n * declare module '@dash-ui/styles' {\n * export interface DashThemes {\n * light: {\n * color: {\n * red: string;\n * }\n * }\n * dark: {\n * color: {\n * red: string;\n * }\n * }\n * }\n * }\n */\nexport interface DashThemes extends Record<string, Record<string, unknown>> {}\n\n/**\n * The names of the themes defined in the `DashThemes` type\n */\nexport type DashThemeNames = Extract<keyof DashThemes, string>;\n","const unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1,\n} as const\n\nexport default unitlessKeys\n"],"names":["charCodeAt","s","code","replace","i","o","indexOf","a","b","substring","Z","aa","d","c","e","h","trim","split","la","length","m","ca","v","n","S","$1","Q","y","J","WEBKIT","MOZ","MS","ma","FLEX","na","test","da","T","ea","oa","pa","U","qa","ia","ra","F","q","E","g","w","A","V","call","K","X","prefix","C","z","L","k","x","B","u","l","r","G","t","I","H","f","p","M","N","O","charAt","fa","P","join","ha","ja","ba","D","ka","R","use","W","set","hash","string","out","len","toString","safeHash","key","hashFn","value","hashCache","minL","minR","isNaN","noop","createDash","options","nonce","stylisPlugins","batchInserts","speedy","container","document","head","stylis","Stylis","inserted","Set","cache","Map","sheetsCache","sheet","styleSheet","attr","node","nodes","querySelectorAll","insert","add","bind","getAttribute","forEach","parentNode","appendChild","ruleSheet","selector","styles","has","Sheet","sheets","name","sheetRef","get","delete","flush","keys","tag","supportsConstructableStylesheets","window","CSSStyleSheet","prototype","Document","adoptedStyleSheets","createElement","setAttribute","styleSheets","ownerNode","rule","insertRule","cssRules","tasks","push","scheduleFlush","removeChild","filter","task","shift","scheduled","requestAnimationFrame","block","context","content","selectors","parents","line","column","ns","depth","at","RULE_DELIMITER","createStyles","dash","themes","tokens","fnv1aHash","variants","styleMap","style","css_","css","apply","arguments","className","args","numArgs","defaultStyles","compiledStyleMap","nextStyles","arg","styleKey","compileStyles","default","one","compileLiterals","callback","createClassName","createCss","cls","lazy","lazyFn","JSON","stringify","lazyStyle","concat","Array","slice","keyframes","animationName","insertGlobal","insertTokens","nextTokens","serializeTokens","mangle","names","vars","result","cssCase","cssDisallowedRe","mangled","mangleTokens","mergeTokens","insertThemes","nextThemes","theme","Object","defineProperty","configurable","emptyObj","stringifyStyleObject","object","isCustom","unitless","literals","isArray","reduce","curr","next","caseCache","cssCaseRe","toLowerCase","target","source","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","path"],"mappings":"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"}